Name: series-workflowgkfwc Phase: Failed StartedAt: 2026-07-30 14:39:52 +0000 UTC FinishedAt: 2026-07-30 15:01:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgkfwc[0] Phase: Succeeded StartedAt: 2026-07-30 14:39:52 +0000 UTC FinishedAt: 2026-07-30 15:01:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgkfwc[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 14:39:52 +0000 UTC FinishedAt: 2026-07-30 15:01:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIE5YUCBJVzYxeCBjaGlwc2V0cy4gVGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBTRElPIGJ1cyAodmlhIGBDT05GSUdfTlhQV0lGSV9TRElPYCkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgU0RJTyBXaUZpIGRldmljZXMgaW4gc3RhbmRhcmQgUUVNVSBvciBzeXprYWxsZXIgKHVubGlrZSBVU0IgdmlhIGR1bW15X2hjZCBvciBtYWM4MDIxMSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZjE1NWRhN2Q0NThjOTk5NTliN2NlMjAxMDAzMmE5ZmY1NzNiNmVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMTQ6NTY6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuY1xuaW5kZXggZWQ4ZTI0YWU5YzBhNy4uOWY3MTdhM2Q3ZWM1ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuY1xuQEAgLTEwNywxMSAmIzQzOzEwNywyOSBAQCBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2Moc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbiBcdFx0XHRsZW4gPSBFVEhfQUxFTjtcbiBcbiBcdFx0aWYgKGxlbiAhPSAtMSkge1xuJiM0MztcdFx0XHR1MTYgZXZ0X2xlbiA9IGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbik7XG4mIzQzO1xuIFx0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXMgPSBcdTAwMjZldmVudC1cdTAwM2VkYXRhW2xlbl07XG4gXHRcdFx0bGVuID0gKHU4ICopc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyAtXG4gXHRcdFx0ICAgICAgKHU4ICopXHUwMDI2ZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbDtcbi1cdFx0XHRzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9XG4tXHRcdFx0XHRsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIC0gKHUxNilsZW47XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBldmVudC1cdTAwM2VsZW4gaXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZVxuJiM0MztcdFx0XHQgKiBhbmQgaXMgbm90IG90aGVyd2lzZSB2YWxpZGF0ZWQuIFJlamVjdCBhIGxlbmd0aFxuJiM0MztcdFx0XHQgKiB0aGF0IHVuZGVyZmxvd3MgdGhlIGhlYWRlciBvciB0aGF0IHdvdWxkIHBsYWNlXG4mIzQzO1x0XHRcdCAqIHRoZSBhc3NvY2lhdGlvbiByZXF1ZXN0IElFcyBvdXRzaWRlIHRoZSBmaXhlZFxuJiM0MztcdFx0XHQgKiBldmVudF9ib2R5W10gYnVmZmVyLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKGV2dF9sZW4gXHUwMDNjIGxlbiB8fFxuJiM0MztcdFx0XHQgICAgKHU4ICopXHUwMDI2ZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbCAmIzQzOyBldnRfbGVuIFx1MDAzZVxuJiM0MztcdFx0XHQgICAgYWRhcHRlci1cdTAwM2VldmVudF9ib2R5ICYjNDM7IE1BWF9FVkVOVF9TSVpFKSB7XG4mIzQzO1x0XHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG4mIzQzO1x0XHRcdFx0XHQgICAgXCYjMzQ7aW52YWxpZCBTVEEgYXNzb2MgZXZlbnQgbGVuZ3RoXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRrZnJlZShzaW5mbyk7XG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXNfbGVuID0gZXZ0X2xlbiAtICh1MTYpbGVuO1xuIFx0XHR9XG4gXHR9XG4gXHRjZmc4MDIxMV9uZXdfc3RhKHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZWllZWU4MDIxMV9wdHIsIGV2ZW50LVx1MDAzZXN0YV9hZGRyLCBzaW5mbyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBueHB3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgTlhQIElXNjF4IGNoaXBzZXRzLiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIFNESU8gYnVzICh2aWEgYENPTkZJR19OWFBXSUZJX1NESU9gKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBTRElPIFdpRmkgZGV2aWNlcyBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciAodW5saWtlIFVTQiB2aWEgZHVtbXlfaGNkIG9yIG1hYzgwMjExIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJmMTU1ZGE3ZDQ1OGM5OTk1OWI3Y2UyMDEwMDMyYTlmZjU3M2I2ZWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAxNDo1NjoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMKaW5kZXggZWQ4ZTI0YWU5YzBhNy4uOWY3MTdhM2Q3ZWM1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMKQEAgLTEwNywxMSAmIzQzOzEwNywyOSBAQCBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2Moc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdikKIAkJCWxlbiA9IEVUSF9BTEVOOwogCiAJCWlmIChsZW4gIT0gLTEpIHsKJiM0MzsJCQl1MTYgZXZ0X2xlbiA9IGxlMTZfdG9fY3B1KGV2ZW50LSZndDtsZW4pOwomIzQzOwogCQkJc2luZm8tJmd0O2Fzc29jX3JlcV9pZXMgPSAmYW1wO2V2ZW50LSZndDtkYXRhW2xlbl07CiAJCQlsZW4gPSAodTggKilzaW5mby0mZ3Q7YXNzb2NfcmVxX2llcyAtCiAJCQkgICAgICAodTggKikmYW1wO2V2ZW50LSZndDtmcmFtZV9jb250cm9sOwotCQkJc2luZm8tJmd0O2Fzc29jX3JlcV9pZXNfbGVuID0KLQkJCQlsZTE2X3RvX2NwdShldmVudC0mZ3Q7bGVuKSAtICh1MTYpbGVuOwomIzQzOwomIzQzOwkJCS8qCiYjNDM7CQkJICogZXZlbnQtJmd0O2xlbiBpcyByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlCiYjNDM7CQkJICogYW5kIGlzIG5vdCBvdGhlcndpc2UgdmFsaWRhdGVkLiBSZWplY3QgYSBsZW5ndGgKJiM0MzsJCQkgKiB0aGF0IHVuZGVyZmxvd3MgdGhlIGhlYWRlciBvciB0aGF0IHdvdWxkIHBsYWNlCiYjNDM7CQkJICogdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzIG91dHNpZGUgdGhlIGZpeGVkCiYjNDM7CQkJICogZXZlbnRfYm9keVtdIGJ1ZmZlci4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAoZXZ0X2xlbiAmbHQ7IGxlbiB8fAomIzQzOwkJCSAgICAodTggKikmYW1wO2V2ZW50LSZndDtmcmFtZV9jb250cm9sICYjNDM7IGV2dF9sZW4gJmd0OwomIzQzOwkJCSAgICBhZGFwdGVyLSZndDtldmVudF9ib2R5ICYjNDM7IE1BWF9FVkVOVF9TSVpFKSB7CiYjNDM7CQkJCW54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLAomIzQzOwkJCQkJICAgICYjMzQ7aW52YWxpZCBTVEEgYXNzb2MgZXZlbnQgbGVuZ3RoXG4mIzM0Oyk7CiYjNDM7CQkJCWtmcmVlKHNpbmZvKTsKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCXNpbmZvLSZndDthc3NvY19yZXFfaWVzX2xlbiA9IGV2dF9sZW4gLSAodTE2KWxlbjsKIAkJfQogCX0KIAljZmc4MDIxMV9uZXdfc3RhKHByaXYtJmd0O25ldGRldi0mZ3Q7aWVlZTgwMjExX3B0ciwgZXZlbnQtJmd0O3N0YV9hZGRyLCBzaW5mbywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNgLiBMb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBhIGxlbmd0aCBjaGVjayBpbiBgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXMgdGhpcyBhIGRyaXZlciBmb3Igc29tZXRoaW5nIHRoYXQgY2FuIGJlIGVhc2lseSBlbXVsYXRlZCwgb3IgYW0gSSBkZWFsaW5nIHdpdGggYSBwaHlzaWNhbCBkZXZpY2UgdGhhdCB3aWxsIHJlcXVpcmUgbW9yZSBjb21wbGV4IHNldHVwIGZvciB0ZXN0aW5nPyBMZXQgbWUgc2VlLi4uICYjMzQ7bnhwd2lmaSYjMzQ7Li4uIGFoLCByaWdodCwgaXQmIzM5O3MgYW4gTlhQIFdpLUZpIGRyaXZlci4gVGhhdCBjbGFyaWZpZXMgdGhpbmdzLiBJIGtub3cgTlhQLCBzbyBJIGhhdmUgYSBiYXNpYyB1bmRlcnN0YW5kaW5nIG9mIHRoZWlyIHdpcmVsZXNzIG9mZmVyaW5ncy4KCk5vdywgSSBuZWVkIG1vcmUgc3BlY2lmaWNzLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9gIGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgZmVlbC4gTXkgbmV4dCBzdGVwIGlzIHRvIHVzZSBgZ3JlcHBlcmAgdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmx5aW5nIGJ1cyBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIGJ1cyDigJMgaXMgaXQgU0RJTywgUENJZSwgVVNCLCBldGMuIOKAkyB3aWxsIHNpZ25pZmljYW50bHkgaW5mb3JtIG15IGRlYnVnZ2luZyBhbmQgdGVzdGluZyBzdHJhdGVneSBkb3duIHRoZSByb2FkLiBUaGlzIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGJlc3Qgd2F5IHRvIGdldCB0aGlzIHBhdGNoIHRlc3RlZCBhbmQgaW50ZWdyYXRlZCBpbnRvIG91ciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNTE2MCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTItLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozOiAqIG54cHdpZmkgODAyLjExYWMgaGVscGVyc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQtICogQ29weXJpZ2h0IDIwMTEtMjAyNCBOWFBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM3Om54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTM4LVx0XHRcdFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00Mi1cdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo0MzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6ODA6bnhwd2lmaV9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTgxLVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgzOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk0Om54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk1LVx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6OTc6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk4LVx0dTE2IG1jc19tYXBfdXNlciwgbWNzX21hcF9yZXNwLCBtY3NfbWFwX3Jlc3VsdDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAxLVx0LyogRmlsbCBWSFQgY2FwYWJpbGl0eSBpbmZvLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcdG54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEyNDpcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyNS1cdHZodF9jYXAtXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XHR0bXAgPSBueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDctXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUwOmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTE6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTItXHRcdFx0XHR1OCAqKmJ1ZmZlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodGNhcCAqdmh0X2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19vcGVyX21vZGVfbnRmICpvcGVyX250ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTYtXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodF9vcGVyICp2aHRfb3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXHR1OCBzdXBwX2Nod2Rfc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XHRcdHZodF9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXHRcdG1lbXNldCh2aHRfY2FwLCAwLCBzaXplb2YoKnZodF9jYXApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc0LVx0XHRcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzU6XHRcdG1lbWNweSgodTggKil2aHRfY2FwICYjNDM7IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3Ni1cdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl92aHRfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc5Olx0XHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXHUwMDI2dmh0X2NhcC1cdTAwM2V2aHRfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cdFx0XHRcdFx0IGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg3LVx0XHRpZiAocHJpdi1cdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4Olx0XHRcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg5LVx0XHRcdG1lbXNldCh2aHRfb3AsIDAsIHNpemVvZigqdmh0X29wKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cdFx0XHR2aHRfb3AtXHUwMDNlaGVhZGVyLmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YoKnZodF9vcCkgLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5MzpcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTQtXHRcdFx0bWVtY3B5KCh1OCAqKXZodF9vcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5NTpcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cdFx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ1OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0Ni1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3Olx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI2NTp2b2lkIG54cHdpZmlfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjM6ICogbnhwd2lmaTogODAyLjExYWMgKFZIVCkgZGVmaW5pdGlvbnNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC00LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oPTE0PWVudW0gdmh0X2NmZ19taXNjX2NvbmZpZyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI1OmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNjpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI3LVx0XHRcdFx0dTggKipidWZmZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI4OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI5LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMDpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFhY192aHRfY2ZnICpjZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMxOnZvaWQgbnhwd2lmaV9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMzItXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOi8qIG54cHdpZmk6IDgwMi4xMWF4IChIRSkgc3VwcG9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMtICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjQgTlhQXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExOnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMi1cdFx0XHQgICAgIHN0cnVjdCBod19zcGVjX2V4dGVuc2lvbiAqaHdfaGVfY2FwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDpcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzpcdHU4IGhlYWRlcl9sZW4gPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xOC1cdHUxNiBkYXRhX2xlbiA9IGxlMTZfdG9fY3B1KGh3X2hlX2NhcC1cdTAwM2VoZWFkZXIubGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjItXHRpZiAoKGRhdGFfbGVuICYjNDM7IGhlYWRlcl9sZW4pIFx1MDAzZSBzaXplb2YoYWRhcHRlci1cdTAwM2Vod19oZV9jYXApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjM6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0LVx0XHRcdCAgICBcJiMzNDtod19oZV9jYXAgdG9vIGJpZywgbGVuPSVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTpcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM3LVx0XHRoZV9jYXBfMmcgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4Olx0XHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcJiMzNDsyLjRHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzktXHRcdFx0XHQgYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1LVx0XHRhZGFwdGVyLVx1MDAzZWZ3X2JhbmRzIHw9IEJBTkRfQUFYO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2Olx0XHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcJiMzNDs1RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3LVx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Ny1cdFx0XHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTg6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTktXHRcdFx0XHRwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02My1cdFx0XHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NjQ6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjUtXHRcdFx0XHRwcml2LVx1MDAzZXVzZXJfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo3OTpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo4MDpcdFx0XHRcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NTppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NjpcdFx0XHQgICAgc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTctXHRcdFx0ICAgIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTk6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwMDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDEtXHR1MTYgcnhfbnNzLCB0eF9uc3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwOC1cdFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cdTAwM2V1c2VyX2hlX2NhcCwgcHJpdi1cdTAwM2V1c2VyX2hlX2NhcF9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwOTpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMC1cdFx0cmV0X2xlbiA9IHByaXYtXHUwMDNldXNlcl9oZV9jYXBfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTItXHRcdG1lbWNweShoZV9jYXAsIHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXAsIHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTM6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTQtXHRcdHJldF9sZW4gPSBwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI1LVx0Zm9yIChuc3MgPSAxOyBuc3MgXHUwMDNjPSA4OyBuc3MmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI2Olx0XHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI3Olx0XHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjgtXHRcdGlmIChyeF9uc3MgIT0gMCBcdTAwMjZcdTAwMjYgbnNzIFx1MDAzZSByeF9uc3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMC1cdFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzE6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMyLVx0XHRcdFx0XHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMy1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzNDpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzUtXHRcdFx0XHRcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzgtXHRmb3IgKG5zcyA9IDE7IG5zcyBcdTAwM2M9IDg7IG5zcyYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzk6XHRcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDA6XHRcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0MS1cdFx0aWYgKHR4X25zcyAhPSAwIFx1MDAyNlx1MDAyNiBuc3MgXHUwMDNlIHR4X25zcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQzLVx0XHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NDpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDUtXHRcdFx0XHRcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ2LVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ3Olx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0OC1cdFx0XHRcdFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTQ6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NTpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ni1cdFx0XHRcdHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU4Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1OS1cdGludCByZXRfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY0Olx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY1Olx0cmV0X2xlbiA9IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHByaXYsIGhlX2NhcCwgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2Ni1cdCpidWZmZXIgJiM0Mzs9IHJldF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzE6aW50IG54cHdpZmlfY21kXzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc2LVx0dTE2IGNtZF9zaXplO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg2LVx0ICAgIGF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnLmV4dF9pZCA9PSBXTEFOX0VJRF9FWFRfSEVfQ0FQQUJJTElUWSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE4NzpcdFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cdTAwM2V0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg4LVx0XHRoZWFkZXItXHUwMDNldHlwZSA9IGNwdV90b19sZTE2KGF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnLmlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNS1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NmZyAqaGVfY2ZnID0gXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuYXhfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwNjpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNy1cdHUxNiBsZWZ0X2xlbiwgdGx2X3R5cGUsIHRsdl9sZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA4LVx0dTggZXh0X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwOTpcdHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2FwX2NmZyAqaGVfY2FwID0gXHUwMDI2YXhfY2ZnLVx1MDAzZWhlX2NhcF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMS1cdGxlZnRfbGVuID0gbGUxNl90b19jcHUocmVzcC1cdTAwM2VzaXplKSAtIHNpemVvZigqaGVfY2ZnKSAtIFNfRFNfR0VOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIxMjpcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXHUwMDNldGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQyLVx0XHRsZWZ0X2xlbiAtPSAoc2l6ZW9mKCpoZWFkZXIpICYjNDM7IHRsdl9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI0MzpcdFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKSgodTggKiloZWFkZXIgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDQtXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCpoZWFkZXIpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTE6aW50IG54cHdpZmlfY21kXzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU1Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTYtXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFx1MDAyNmNtZC1cdTAwM2VwYXJhbXMuYXhfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ny1cdHUxNiBjbWRfc2l6ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTg6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqc3JfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1OTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjA6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICpiZWFtX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjE6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKmh0Y19jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYyOlx0c3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKnR4bW9pX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjM6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICp0b2x0aW1lX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjQ6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICp0eG9wX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjU6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqc2V0X2JzcnBfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NjpcdHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKmxsZGVfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc1LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc2Olx0XHRzcl9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3ODpcdFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3OS1cdFx0dGx2LVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoc3JfY21kLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODUtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9CRUFNX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI4NjpcdFx0YmVhbV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5MS1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0hUQ19TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTI6XHRcdGh0Y19jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk3LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPTUlfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk4Olx0XHR0eG1vaV9jbWQgPVx0KHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAzLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfT0JTU19UT0xUSU1FX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMwNDpcdFx0dG9sdGltZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMC1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT1BSVFNfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzExOlx0XHR0eG9wX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE3LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU0VUX0JTUlBfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzE4Olx0XHRzZXRfYnNycF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjMtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9MTERFX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMyNDpcdFx0bGxkZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyOS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzMwOlx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMzEtXHRcdFx0ICAgIFwmIzM0OyVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDU6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Ni1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuYXhfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1Mi1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM1MzpcdFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1NC1cdFx0bWVtY3B5KGF4X2NtZC1cdTAwM2VwYXJhbS5zcl9jZmcucGFyYW0ub2Jzc19wZF9vZmZzZXQub2Zmc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODMtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4NDpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzg1LVx0XHRcdCAgICBcJiMzNDslczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozOTM6c3RhdGljIHU4IG54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTA6Ym9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMTpcdFx0XHRcdCAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEzOlx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE2Olx0aWYgKGJzc19kZXNjIFx1MDAyNlx1MDAyNiAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTc6XHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cdFx0XHQgICAgXCYjMzQ7QVAgZG9uJiMzOTt0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjItXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQgXHUwMDI2IEJBTkRfQSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMzpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNC1cdFx0XHRwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNTpcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI2LVx0XHRcdHByaXYtXHUwMDNldXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mjg6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjktXHRcdFx0cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MzA6XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzMS1cdFx0XHRwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzQtXHRpZiAoIShod19oZV9jYXAtXHUwMDNlaGVfbWFjX2NhcFswXSBcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDM1Olx0XHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzYtXHRcdFx0ICAgIFwmIzM0O0ZXIGRvbiYjMzk7dCBzdXBwb3J0IFRXVFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0MC1cdGlmICghKHVzZXJfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0MTpcdFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQyLVx0XHRcdCAgICBcJiMzNDtVU0VSIEhFX01BQ19DQVAgZG9uJiMzOTt0IHN1cHBvcnQgVFdUXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0OTp1OCBueHB3aWZpX2lzX3N0YV8xMWF4X3R3dF9yZXFfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTE6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1Mi1cdHU4IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1Ni1cdFx0aWYgKHByaXYtXHUwMDNlY29uZmlnX2JhbmRzIFx1MDAyNiBCQU5EX0FBWClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTc6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cdTAwM2V1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTgtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTk6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjAtXHRcdHJldCA9IHVzZXJfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY2OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDY3LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2ODpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcwOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzEtXHRzdHJ1Y3QgaG9zdF9jbWRfdHd0X2NmZyAqdHd0X2NmZ19jbWQgPSBcdTAwMjZjbWQtXHUwMDNlcGFyYW1zLnR3dF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcyOlx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDczOlx0c3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICp0d3RfdGVhcmRvd247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc0Olx0c3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqdHd0X3JlcG9ydDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzU6XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzY6XHRzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqYnR3dF9hcF9jb25maWc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc3LVx0dTggaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDg3LVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1NFVFVQX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ4ODpcdFx0dHd0X3NldHVwID0gKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ4OS1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5MTpcdFx0bWVtc2V0KHR3dF9zZXR1cCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5Mi1cdFx0dHd0X3NldHVwLVx1MDAzZWltcGxpY2l0ID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNC1cdFx0dHd0X3NldHVwLVx1MDAzZWJjbl9taXNzX3RocmVzaG9sZCA9IHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MDU6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDYtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNy1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9URUFSRE9XTl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MDg6XHRcdHR3dF90ZWFyZG93biA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDktXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMC1cdFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTE6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEyLVx0XHR0d3RfdGVhcmRvd24tXHUwMDNlZmxvd19pZGVudGlmaWVyID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTE3LVx0XHRcdHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3RlYXJkb3duLnRlYXJkb3duX2FsbF90d3Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTE4Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTE5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjAtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyMTpcdFx0dHd0X3JlcG9ydCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIyLVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjM6XHRcdG1lbXNldCh0d3RfcmVwb3J0LCAweDAwLCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNC1cdFx0dHd0X3JlcG9ydC1cdTAwM2V0eXBlID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI1Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX0lORk9STUFUSU9OX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyODpcdFx0dHd0X2luZm9ybWF0aW9uID0gKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbiAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyOS1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMwLVx0XHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzMTpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzItXHRcdHR3dF9pbmZvcm1hdGlvbi1cdTAwM2VmbG93X2lkZW50aWZpZXIgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzUtXHRcdFx0dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfaW5mb3JtYXRpb24uc3VzcGVuZF9kdXJhdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzY6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzctXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzOC1cdGNhc2UgTlhQV0lGSV8xMUFYX0JUV1RfQVBfQ09ORklHX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcdFx0YnR3dF9hcF9jb25maWcgPSAoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDAtXHRcdFx0XHQgdHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MS1cdFx0bWVtc2V0KGJ0d3RfYXBfY29uZmlnLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0My1cdFx0YnR3dF9hcF9jb25maWctXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2MjpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTYzLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjQtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2NTpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY2LVx0XHRcdCAgICBcJiMzNDtVbmtub3duIHN1YiBpZDogJWRcXG5cJiMzNDssIHR3dF9jZmctXHUwMDNlc3ViX2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3NTppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3Ni1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Nzc6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Nzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODYtXHQgICAgdHd0X2NmZy1cdTAwM2VzdWJfaWQgPT0gTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODc6XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4ODpcdFx0XHQoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqKXR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkwOlx0XHRtZW1jcHkoXHUwMDI2dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5MS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM6ICogbnhwd2lmaTogODAyLjExYXggc3VwcG9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MTc9c3RhdGljIGlubGluZSB1MTZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTE5LVx0cmV0dXJuICgobGUxNl90b19jcHUobWNzX21hcF9zZXQpIFx1MDAzZVx1MDAzZSAoMiAqIChuc3MgLSAxKSkpIFx1MDAyNiAweDMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0yMj1zdGF0aWMgaW5saW5lIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoyMzpueHB3aWZpX3NldF9oZV9uc3NfbWNzKF9fbGUxNiAqbWNzX21hcF9zZXQsIGludCBuc3MsIGludCB2YWx1ZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVx0dTE2IHRlbXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMxOmJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMjpcdFx0XHRcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzQ6dm9pZCBueHB3aWZpX3VwZGF0ZV8xMWF4X2NhcChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVx0XHRcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM3OmJvb2wgbnhwd2lmaV8xMWF4X2JhbmRjb25maWdfYWxsb3dlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4Olx0XHRcdFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQxOlx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDU6XHRcdFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQ2LVx0XHRcdCAgICB1MTYgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQ4LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0OTpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTE6aW50IG54cHdpZmlfcmV0XzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1NTppbnQgbnhwd2lmaV9jbWRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTc6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02MC1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjE6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MzppbnQgbnhwd2lmaV9jbWRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1Olx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY3OmludCBueHB3aWZpX3JldF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njk6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzozOiAqIG54cHdpZmk6IDgwMi4xMWggaGVscGVyc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTM6dm9pZCBueHB3aWZpX2luaXRfMTFoX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTk6aW50IG54cHdpZmlfaXNfMTFoX2FjdGl2ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jPTI1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyNjpueHB3aWZpXzExaF9wcm9jZXNzX2luZnJhX2pvaW4oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyNzpcdFx0XHQgICAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyOTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaWVfaGVhZGVyO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNDEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgbnhwd2lmaSBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgbnhwd2lmaWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHN1cHBvcnRlZCBidXMgdHlwZXMuIFRvIGRvIHRoYXQsIHRoZSBtb3N0IGxvZ2ljYWwgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGFuZCBidWlsZCBmaWxlcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgYW5kIHRoZSBgTWFrZWZpbGVgIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGluIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlYC4gVGhlIGBLY29uZmlnYCBmaWxlIHdpbGwgbGlrZWx5IGRlZmluZSB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCByZXZlYWxpbmcgdGhlIGJ1cyBpbnRlcmZhY2VzIGl0JiMzOTtzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCwgd2hpbGUgdGhlIGBNYWtlZmlsZWAgd2lsbCBsaWtlbHkgaW5jbHVkZSB0aGUgc291cmNlIGZpbGVzIGFuZCBsaWJyYXJpZXMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBkcml2ZXIgaXMgYXJjaGl0ZWN0ZWQuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgaW50ZXJmYWNlIGFuZCBtYWtlIHRoZSBuZWNlc3NhcnkgYWRqdXN0bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5YUFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBOWFBXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZzoxMjpjb25maWcgTlhQV0lGSV9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjI1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbWFwIG91dCB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgZm9yIHRoZXNlIGNvbXBvbmVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgTlhQV0lGSV9TRElPYCBhbmQgYE5YUFdJRklgLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQ6CgoqICAgKipEaXJlY3QgRGVwZW5kZW5jaWVzOioqIFdoYXQgZXhhY3RseSBkb2VzIGBOWFBXSUZJX1NESU9gICpuZWVkKiBmcm9tIGBOWFBXSUZJYD8gSXMgaXQgYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSBkZXBlbmRlbmN5LCBhIGRyaXZlciwgYW4gQVBJIGNhbGwsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoZSBzcGVjaWZpYyBuYXR1cmUgb2YgdGhpcyBjb25uZWN0aW9uIGlzIGNyaXRpY2FsLgoqICAgKipJbmRpcmVjdCBEZXBlbmRlbmNpZXM6KiogQmV5b25kIHRoZSBkaXJlY3QgbGluaywgYXJlIHRoZXJlIGFueSBvdGhlciBjb21wb25lbnRzLCBsaWJyYXJpZXMsIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgKmJvdGgqIGRlcGVuZCBvbj8gVGhpcyBjb3VsZCByZXZlYWwgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4gRm9yIGV4YW1wbGUsIGFyZSB0aGVyZSBzaGFyZWQgbWVtb3J5IHJlZ2lvbnMsIGludGVycnVwdCBhc3NpZ25tZW50cywgb3Igc2hhcmVkIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW52b2x2ZWQ/CiogICAqKkltcGxpZWQgRGVwZW5kZW5jaWVzOioqIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBhbnkgaW1wbGllZCBkZXBlbmRlbmNpZXMuIE9mdGVuLCB0aGUgbmFtZXMgdGhlbXNlbHZlcyBwcm92aWRlIGNsdWVzLiBJcyBgU0RJT2Agc3VnZ2VzdGluZyBhbiBTRElPIGludGVyZmFjZSBkZXBlbmRlbmN5PyBEb2VzIHRoYXQgdGhlbiByZWx5IG9uIGxvd2VyLWxldmVsIGhhcmR3YXJlIHByaW1pdGl2ZXMsIG9yIGEgc3BlY2lmaWMgYnVzIGRyaXZlcj8gQW5kIGhvdyBkb2VzIHRoYXQgaW50ZXJhY3Rpb24gd29yayB3aXRoIHRoZSBgTlhQV0lGSWAgY29tcG9uZW50IGluIHRoaXMgY29udGV4dD8gQXJlIHdlIGRlYWxpbmcgd2l0aCBzaGFyZWQgcmVzb3VyY2VzPwoqICAgKipDb250ZXh0dWFsIERlcGVuZGVuY2llczoqKiBIb3cgZG9lcyB0aGUgYnVpbGQgc3lzdGVtIGFuZCBjb25maWd1cmF0aW9uIGNvbWUgaW50byBwbGF5PyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MsIG9yIHNwZWNpZmljIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGluZmx1ZW5jZSB0aGUgYmVoYXZpb3VyLCBpbnRlcmFjdGlvbnMgb3IgYXZhaWxhYmlsaXR5IG9mIGBOWFBXSUZJYCB0aGF0IHRoZW4gaW1wYWN0cyBgTlhQV0lGSV9TRElPYD8gSSB3YW50IHRvIHNlZSB0aGUgY29uZmlndXJhdGlvbi4KKiAgICoqUG90ZW50aWFsIEJvdHRsZW5lY2tzOioqIFdoYXQgYXJlIHRoZSBwb3NzaWJsZSByaXNrcyBoZXJlPyBDb3VsZCBhIGNoYW5nZSBpbiBgTlhQV0lGSWAgaW5hZHZlcnRlbnRseSBicmVhayBgTlhQV0lGSV9TRElPYD8gQXJlIHRoZXJlIHZlcnNpb25pbmcgY29uc3RyYWludHM/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3M/CiogICAqKk1haW50YWluYWJpbGl0eSBhbmQgU2NhbGFiaWxpdHk6KiogSSYjMzk7bSBhbHNvIHRoaW5raW5nIGFoZWFkIHRvIHRoZSBtYWludGVuYW5jZSBpbXBsaWNhdGlvbnMuIElzIHRoaXMgZGVwZW5kZW5jeSBjbGVhbiwgd2VsbC1kZWZpbmVkLCBhbmQgZWFzaWx5IHVuZGVyc3Rvb2Q/IFdpbGwgaXQgc2NhbGUgd2VsbCBpZiB3ZSBuZWVkIHRvIGFkZCBtb3JlIGZlYXR1cmVzIG9yIHN1cHBvcnQgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucz8KKiAgICoqRGVidWdnaW5nIEFwcHJvYWNoOioqIEFzIGFuIGV4cGVydCwgSSYjMzk7ZCB0aGVuIG1hcCBvdXQgaG93IEkgd291bGQgYmVnaW4gZGVidWdnaW5nIGFueSBpc3N1ZXMgZm91bmQgYnkgYXNraW5nIHF1ZXN0aW9ucy4KClNvLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSB0aGUgY29kZSBhbmQgbG9vayBhdCBob3cgdGhlc2UgY29tcG9uZW50cyBpbnRlcmFjdC4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgaW5jbHVkZXMsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLCBhbmQgYW55IGRvY3VtZW50YXRpb24gYXZhaWxhYmxlLiBUaGlzIGRlcGVuZGVuY3kgbWFwcGluZyB3aWxsIGJlIHRoZSBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgc3lzdGVtIGFuZCBhbnkgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMgb3Igb3B0aW1pemF0aW9ucyB3ZSBtaWdodCBuZWVkIHRvIG1ha2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5YUFdJRklcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG54cHdpZmkuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE5YUFdJRklfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFwmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBOWFBXSUZJIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gIDE5Olx0XHQgIElXNjF4IGludGVyZmFjZS5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMjI6XHRcdCAgbnhwd2lmaV9zZGlvLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTE0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG54cHdpZmlgIERyaXZlciBhbmQgU3l6a2FsbGVyJiMzOTtzIFJvbGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG54cHdpZmlgIGRyaXZlciwgYW5kIGl0JiMzOTtzIGFuIFNESU8gaW1wbGVtZW50YXRpb24sIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7QWgsIGNvb2wsIHdlIGNhbiBwcm9iYWJseSBmdXp6IHRoaXMgdXNpbmcgc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYC4mIzM0OyBCdXQgdGhlbiBJIHJlbWVtYmVyLCB0aGlzIGlzIGEgKmZ1bGxtYWMqIGRyaXZlci4gSXQgaGFzIGl0cyBvd24gZmlybXdhcmUsIGFuZCB0aGUgZGV2aWNlIGZpcm13YXJlIGl0c2VsZiBpcyByZXBvcnRpbmcgdGhlIGxlbmd0aCB2aWEgYGV2ZW50LSZndDtsZW5gLiBUaGF0IGNoYW5nZXMgdGhpbmdzLgoKV2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgU0RJTyBkZXZpY2VzIGFzIGZhciBhcyBJIGtub3cuIEl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBnZW5lcmF0aW5nIFNESU8gdHJhbnNhY3Rpb25zIGRpcmVjdGx5LiBCdXQsIGhhbmcgb24sIGNvdWxkIGl0IHN0aWxsIGJlIGluamVjdGluZyBzb21ldGhpbmc/IExpa2UsIHNvbWUgZm9ybSBvZiBwYWNrZXRzIG9yIGV2ZW50cyBpZiB0aGVyZSBpcyBhbiBleHBsb2l0PyBJIG5lZWQgdG8gY2hlY2suCgpPa2F5LCBsZXQgbWUgcmVwaHJhc2UgdGhhdC4gRG9lcyBzeXprYWxsZXIgZG8gKmFueSogU0RJTyBmdXp6aW5nIGF0IGFsbD8gTm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBTeXprYWxsZXIgZG9lc24mIzM5O3QgZW11bGF0ZSBTRElPIGhhcmR3YXJlLgoKQnV0IHdhaXQsIEkgYW0gZ2V0dGluZyBjb25mdXNlZCBoZXJlLCBJIHJlbWVtYmVyIGBtYWM4MDIxMV9od3NpbWAgZG9lcyBleGlzdCBmb3IgYG1hYzgwMjExYCBkcml2ZXJzLCBidXQgYG54cHdpZmlgIGlzIG5vdCBhIGBtYWM4MDIxMWAgZHJpdmVyLCBpdCYjMzk7cyBhIGBjZmc4MDIxMWAgZHJpdmVyLiBTbyBgbWFjODAyMTFfaHdzaW1gIGlzIG91dCBvZiB0aGUgcXVlc3Rpb24uCgpSaWdodC4gTm93IEkmIzM5O20gcmVhbGx5IGN1cmlvdXMsICpob3cqIGRpZCBzeXprYWxsZXIgZmluZCB0aGlzIGJ1ZyB0aGVuPyBXaGF0JiMzOTtzIGdvaW5nIG9uIGhlcmU/CgpBaGEhIE1heWJlIHN5emthbGxlciBpcyBpbmplY3RpbmcgZXZlbnRzIGluIHNvbWUgb3RoZXIgd2F5LiBPci4uLiBjb3VsZCB0aGlzIGJlIGEgVVNCIGRyaXZlcj8gT3IgYSBQQ0llIGRyaXZlcj8gUGVyaGFwcyB0aGVyZSYjMzk7cyBhIGRpZmZlcmVudCB1bmRlcmx5aW5nIHRyYW5zcG9ydCBtZWNoYW5pc20gdGhhdCBzeXprYWxsZXIgKmlzKiB0YXJnZXRpbmcuIExldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhIFVTQiBvciBQQ0llIHZlcnNpb24gb2Ygbnhwd2lmaS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlhQV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnOjI6Y29uZmlnIE5YUFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnOjEyOmNvbmZpZyBOWFBXSUZJX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzYzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZW1iZWRkZWQgc3lzdGVtcyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKSG1tLCBzb21ldGhpbmcgc2VlbXMgb2ZmLiBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGEgd2lkZXIgcmFuZ2Ugb2YgTlhQIFdpRmkgZHJpdmVyIG9wdGlvbnMsIGJ1dCBJJiMzOTttIG9ubHkgcGlja2luZyB1cCBgTlhQV0lGSWAgYW5kIGBOWFBXSUZJX1NESU9gIGluIHRoZSBjdXJyZW50IHZpZXcuIFRoYXQgZmVlbHPigKZsaW1pdGVkLiBJIGRlZmluaXRlbHkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgTlhQIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdgLiBUaGVyZSBoYXMgdG8gYmUgbW9yZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiwgcGVyaGFwcyB3aXRoIHNvbWUgY29uZGl0aW9uYWxzIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBUaW1lIHRvIGRpdmUgYmFjayBpbnRvIHRoZSBzb3VyY2UgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhIGtleSBkZXBlbmRlbmN5IG9yIGNvbnRleHQuIE1heWJlIHNvbWV0aGluZyYjMzk7cyBnYXRlZCB0aGF0IEkmIzM5O20gbm90IHNlZWluZyB5ZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTlhQV0lGSVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcbiAgIDc6XHRcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTA6XHRcdCAgbnhwd2lmaS5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTlhQV0lGSV9TRElPXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIE5YUFdJRkkgXHUwMDI2XHUwMDI2IE1NQ1xuICAxNTpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAxNjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcbiAgMTk6XHRcdCAgSVc2MXggaW50ZXJmYWNlLlxuICAyMDpcdFxuICAyMTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAyMjpcdFx0ICBueHB3aWZpX3NkaW8uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIE5YUCBXaUZpIEJ1ZyBSZXBvcnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgc3l6a2FsbGVyIHJlcG9ydCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCBoaXQgYSBidWcgaW4gYG54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY2AuIE15IGZpcnN0IHRob3VnaHQgaXMsIGhhbmcgb24sIHN5emthbGxlciAqZG9lcyogaGF2ZSB2aXJ0dWFsIHdpZmkgZGV2aWNlIGluamVjdGlvbiwgcmlnaHQ/IExpa2UsIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCBvciBldmVuIGB2aXJ0aW8td2lmaWAsIGJ1dCB0aGF0JiMzOTtzIGZvciBnZW5lcmljIHRlc3RpbmcuIFRoZSBgbnhwd2lmaWAgbW9kdWxlIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgY2hpcC4gSG93IGNvdWxkIGl0IHBvc3NpYmx5IGhhdmUgZm91bmQgYSBidWcgdGhlcmU/IAoKUmlnaHQsIHJpZ2h0LiBMZXQgbWUgYmFja3RyYWNrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUuIElzIHRoZXJlIGEgVVNCIG9yIFBDSWUgdmVyc2lvbiBvZiB0aGlzIHRoaW5nPyBJJiMzOTtsbCBjaGVjayBxdWlja2x5IOKAkyBubywgaXQmIzM5O3MgU0RJTyBvbmx5LiBUaGUgbmV4dCB0aGluZyBJJiMzOTttIGFza2luZyBpczogZG9lcyBzeXprYWxsZXIgZW11bGF0ZSBTRElPPyBJIHNob3VsZCBrbm93IHRoaXMsIGJ1dCBJJiMzOTttIGRyYXdpbmcgYSBibGFuay4gTm9wZSwgaXQgZG9lc24mIzM5O3QuIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGFuIFNESU8gZW11bGF0b3IgdGhhdCBJIGtub3cgb2YuCgpBbHJpZ2h0LCBtYXliZSBpdCB3YXMgcmVwb3J0ZWQgdmlhIFBDST8gVGltZSB0byBsb29rIGluIHRoYXQgZGlyZWN0b3J5IHRvIGNoZWNrLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGEgUENJZSBkcml2ZXIgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3BjaWUuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB3b3JrIGZyb20gdGhlcmUuIFRoaXMgaXMgZ2V0dGluZyBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7MTFhYy5jJiMzNDssCiAgICAmIzM0OzExYWMuaCYjMzQ7LAogICAgJiMzNDsxMWF4LmMmIzM0OywKICAgICYjMzQ7MTFheC5oJiMzNDssCiAgICAmIzM0OzExaC5jJiMzNDssCiAgICAmIzM0OzExbi5jJiMzNDssCiAgICAmIzM0OzExbi5oJiMzNDssCiAgICAmIzM0OzExbl9hZ2dyLmMmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuaCYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmMmIzM0OywKICAgICYjMzQ7MTFuX3J4cmVvcmRlci5oJiMzNDssCiAgICAmIzM0O2NmZy5oJiMzNDssCiAgICAmIzM0O2NmZzgwMjExLmMmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuaCYjMzQ7LAogICAgJiMzNDtjZnAuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZXRodG9vbC5jJiMzNDssCiAgICAmIzM0O2Z3LmgmIzM0OywKICAgICYjMzQ7aWUuYyYjMzQ7LAogICAgJiMzNDtpbml0LmMmIzM0OywKICAgICYjMzQ7am9pbi5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttYWluLmgmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c3RhX2NmZy5jJiMzNDssCiAgICAmIzM0O3N0YV9jbWQuYyYjMzQ7LAogICAgJiMzNDtzdGFfZXZlbnQuYyYjMzQ7LAogICAgJiMzNDtzdGFfcnguYyYjMzQ7LAogICAgJiMzNDtzdGFfdHguYyYjMzQ7LAogICAgJiMzNDt0eHJ4LmMmIzM0OywKICAgICYjMzQ7dWFwX2NtZC5jJiMzNDssCiAgICAmIzM0O3VhcF9ldmVudC5jJiMzNDssCiAgICAmIzM0O3VhcF90eHJ4LmMmIzM0OywKICAgICYjMzQ7dXRpbC5jJiMzNDssCiAgICAmIzM0O3V0aWwuaCYjMzQ7LAogICAgJiMzNDt3bW0uYyYjMzQ7LAogICAgJiMzNDt3bW0uaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzM5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQnVnIFRyaWdnZXJlZCBieSBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGBzZGlvLmNgIG9wZW4uIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQgaGFuZyBvbiwgdGhpcyBzZWVtcyBsaWtlIGl0JiMzOTtzIGNvbm5lY3RlZCB0byBgbnhwd2lmaWAsIHdoaWNoIGlzIGEgYGNmZzgwMjExYCBkcml2ZXIsIG5vdCB0aGUgYG1hYzgwMjExYCBmcmFtZXdvcmsuIFN5emthbGxlciB1c3VhbGx5IGxldmVyYWdlcyBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaSBmdXp6aW5nLCByaWdodD8gU28sIHdoeSBhbSBJIGxvb2tpbmcgYXQgU0RJTyBhbmQgYG54cHdpZmlgIGhlcmU/CgpUaGlzIGRvZXNuJiMzOTt0IHF1aXRlIGFkZCB1cC4gSG93IGNvdWxkIHN5emthbGxlciBiZSByZXNwb25zaWJsZSBmb3IgdHJpZ2dlcmluZyBzb21ldGhpbmcgaGVyZT8gSSBzdXBwb3NlIGl0IGlzIHBvc3NpYmxlIHRoYXQgc3l6a2FsbGVyIGlzIGFibGUgdG8gaW5qZWN0IFNESU8gcGFja2V0cyBidXQgaXQgZG9lcyBub3QgZW11bGF0ZSBTRElPLgoKV2FpdCBhIG1pbnV0ZS4uLiBNYXliZSBpdCYjMzk7cyBub3QgYSBkaXJlY3QgU0RJTyB0cmlnZ2VyLCBidXQgc29tZXRoaW5nICplbHNlKiB0aGF0JiMzOTtzIGhhcHBlbmluZyB3aGljaCB0aGVuIGNhdXNlcyBhbiBpbnRlcmFjdGlvbiB3aXRoIGBueHB3aWZpYCBhbmQgKnRoYXQqIHRoZW4gaW50ZXJhY3RzIHdpdGggU0RJTz8gT2theSwgdGhhdCYjMzk7cyBwbGF1c2libGUuIExldCYjMzk7cyBzZWUuLi4gSSBzaG91bGQgY2hlY2sgb3V0IGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgLiBUaGF0IGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9ODI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6ODM6bnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy04NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9ldnRfZW50cnkgZXZ0X3RhYmxlX3VhcFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ0MS1cdHsuZXZlbnRfY2F1c2UgPSBFVkVOVF9VQVBfU1RBX0FTU09DLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6NDQyOlx0IC5ldmVudF9oYW5kbGVyID0gbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ0My1cdHsuZXZlbnRfY2F1c2UgPSBFVkVOVF9VQVBfQlNTX1NUQVJULFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ0OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgaW4gdGhlIGtub3c6CgoqKkRlbHZpbmcgaW50byB0aGUgVUFQIEFzc29jaWF0aW9uIEV2ZW50KioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYW4gZXZlbnQgaGFuZGxlciBoZXJlLCBzcGVjaWZpY2FsbHkgZm9yIGBFVkVOVF9VQVBfU1RBX0FTU09DYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgdGhhdCYjMzk7cyB0aGUgU1RBIGFzc29jaWF0aW9uIGV2ZW50IGluIGEgVUFQIGNvbnRleHQuIEJ1dCBob3cgZXhhY3RseSBkb2VzIHRoaXMgdGhpbmcgKnRyaWdnZXIqPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYXVzYWwgY2hhaW4uIFdoZXJlIGRvZXMgdGhlIHNpZ25hbCB0aGF0IGtpY2tzIHRoaXMgaGFuZGxlciBpbnRvIGFjdGlvbiBvcmlnaW5hdGU/CgpUaGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGFzIGFsd2F5cyBpbiB0aGlzIHNpdHVhdGlvbiwgaXMgdG8gZGlnIGludG8gdGhlIGV2ZW50IHRhYmxlLCBgZXZ0X3RhYmxlX3VhcGAuIFRoYXQgdGFibGUgaXMgd2hlcmUgdGhlIGV2ZW50JiMzOTtzIHNlY3JldHMgYXJlIGhlbGQuIEl0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZXZlbnQmIzM5O3MgcmVnaXN0cmF0aW9uLCB0aGUgYXNzb2NpYXRlZCB0cmlnZ2VycywgYW5kIHRoZSBhY3R1YWwgd29ya2luZ3Mgb2YgdGhpcyBwcm9jZXNzLiBJdCBuZWVkcyB0byB0ZWxsIG1lIHRoZSAqd2hlbiogYW5kICp3aHkqIHRoaXMgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldnRfdGFibGVfdWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jPTQyNz1ueHB3aWZpX3VhcF9ldmVudF92ZGxsX2luZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQzNDpzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfZXZ0X2VudHJ5IGV2dF90YWJsZV91YXBbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQzNS1cdHsuZXZlbnRfY2F1c2UgPSBFVkVOVF9QU19BV0FLRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYz00ODI9aW50IG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0ODg6XHRmb3IgKGV2dCA9IDA7IGV2dCBcdTAwM2MgQVJSQVlfU0laRShldnRfdGFibGVfdWFwKTsgZXZ0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6NDg5Olx0XHRpZiAoZXZlbnRjYXVzZSA9PSBldnRfdGFibGVfdWFwW2V2dF0uZXZlbnRfY2F1c2UpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ5MDpcdFx0XHRpZiAoZXZ0X3RhYmxlX3VhcFtldnRdLmV2ZW50X2hhbmRsZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0OTE6XHRcdFx0XHRyZXQgPSBldnRfdGFibGVfdWFwW2V2dF0uZXZlbnRfaGFuZGxlcihwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ5Mi1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0OTY6XHRpZiAoZXZ0ID09IEFSUkFZX1NJWkUoZXZ0X3RhYmxlX3VhcCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTctXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVWRU5ULFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI4MgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gVUFQIEV2ZW50IFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBueHB3aWZpX3Byb2Nlc3NfdWFwX2V2ZW50YC4gSW1tZWRpYXRlbHksIG15IG1pbmQgemVyb2VzIGluIG9uIHRoZSB0cmlnZ2VyOiBpdCYjMzk7cyBpbnZva2VkIHdoZW5ldmVyIGEgbmV0d29yayBldmVudCBpcyByZWNlaXZlZC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIFRoZSByZWFsIHF1ZXN0aW9uLCB0aGUgb25lIHRoYXQgaW1tZWRpYXRlbHkgbmVlZHMgYW4gYW5zd2VyLCBpcyAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlciBpcyBhYnNvbHV0ZWx5IGNydWNpYWwuIFdpdGhvdXQga25vd2luZyB0aGUgaW5pdGlhdGluZyBjb250ZXh0LCBJJiMzOTttIGZseWluZyBibGluZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2sgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCBhIGhpZ2hlciBsZXZlbCwgd2hhdCB0aGUgaW5pdGlhdGluZyBzdGF0ZSBpcywgYW5kIHdoYXQgcG9zc2libGUgZXZlbnQgdHJpZ2dlcnMgYXJlLiBJIG5lZWQgdG8gbWFwIHRoZSBlbnRyeSBwb2ludHMuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBldmVudCBoYW5kbGluZyBmbG93IGFuZCB1bHRpbWF0ZWx5IGhlbHAgbWUgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIG9wdGltaXphdGlvbiBvciBidWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX3Byb2Nlc3NfdWFwX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jPTM2Mz1pbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmMtNDEzLVx0aWYgKHByaXYtXHUwMDNlYnNzX3JvbGUgPT0gTlhQV0lGSV9CU1NfUk9MRV9VQVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYzo0MTQ6XHRcdHJldCA9IG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnQocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYy00MTUtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0Lmg9ODQ9aW50IG54cHdpZmlfcHJvY2Vzc19zdGFfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaDo4NTppbnQgbnhwd2lmaV9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oLTg2LXZvaWQgbnhwd2lmaV9yZXNldF9jb25uZWN0X3N0YXRlKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHUxNiByZWFzb24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9ldnRfZW50cnkgZXZ0X3RhYmxlX3VhcFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ4MS0vKiBIYW5kbGUgQVDigJFpbnRlcmZhY2UgZXZlbnRzIGJ5IGRpc3BhdGNoaW5nIHRoZW0gdG8gZXZlbnTigJFzcGVjaWZpYyByb3V0aW5lcy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ4MjppbnQgbnhwd2lmaV9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMtNDgzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwMDAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBxdWVzdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVyIG9mIGBueHB3aWZpX3Byb2Nlc3NfZXZlbnRgKioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBpcywgKndobyogaXMgY2FsbGluZyBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YD8gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIGV2ZW50LWRyaXZlbiBzeXN0ZW0sIGxpa2VseSB3aXRoaW4gYW4gTlhQIFdpLUZpIGRyaXZlciBvciByZWxhdGVkIGNvbXBvbmVudC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UgaW4gZW1iZWRkZWQgc3lzdGVtcyBhbmQgZHJpdmVyIGRldmVsb3BtZW50LCBpcyB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB0eXBpY2FsIGV2ZW50IGZsb3cgd2l0aGluIHRoaXMga2luZCBvZiBzeXN0ZW0uCgpJJiMzOTtkIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIHRoZSBlbnRyeSBwb2ludHMgdG8gdGhlIFdpLUZpIHN0YWNrLiBXaGVyZSBkb2VzIHRoZSBkcml2ZXIgcmVnaXN0ZXIgaXRzZWxmLCBvciBob3cgZG9lcyBpdCBnZXQgaW5pdGlhbGl6ZWQgd2l0aGluIHRoZSBzeXN0ZW0mIzM5O3Mgb3ZlcmFsbCBmcmFtZXdvcms/IElzIHRoZXJlIGEgY29tbW9uIGV2ZW50IGhhbmRsaW5nIGxheWVyLCBwZXJoYXBzIHVzaW5nIGEgbWVzc2FnZSBxdWV1ZSBvciBpbnRlcnJ1cHQgaGFuZGxlcnM/IEtub3dpbmcgdGhlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgaW52b2x2ZWQgaXMga2V5LgoKVGhlbiwgSSYjMzk7ZCB3YW50IHRvIHVzZSBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgaWYgYXZhaWxhYmxlLiBBIHNpbXBsZSBncmVwLCBvciBldmVuIGJldHRlciwgYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoIHdpdGhpbiB0aGUgc291cmNlIGNvZGUgd291bGQgYmUgbXkgZ28tdG8uIEkmIzM5O20gbG9va2luZyBmb3IgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIHRvIGBueHB3aWZpX3Byb2Nlc3NfZXZlbnRgLCBvYnZpb3VzbHkuIEJ1dCwgSSYjMzk7bSBhbHNvIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGluZGlyZWN0IGNhbGxlcnMg4oCTIGZ1bmN0aW9ucyB0aGF0ICpjb3VsZCogY2FsbCBpdCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zLiBBcmUgdGhlcmUgZnVuY3Rpb24gcG9pbnRlcnMsIGNhbGxiYWNrIG1lY2hhbmlzbXMsIG9yIHN0YXRlIG1hY2hpbmVzIGF0IHBsYXk/IEkgY2FuJiMzOTt0IGp1c3QgYmUgc2F0aXNmaWVkIHdpdGggdGhlIG9idmlvdXMuCgpJZiB0aGUgY29kZWJhc2UgaXMgc3RydWN0dXJlZCB3ZWxsLCB0aGVyZSYjMzk7cyBsaWtlbHkgc29tZSBraW5kIG9mIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMgdGhhdCBoaW50IGF0IHRoZSBldmVudCBwcm9jZXNzaW5nIG1vZGVsLiBJJiMzOTtkIGNvbWIgdGhyb3VnaCB0aG9zZSB0byBzZWUgaWYgdGhleSBzaGVkIGFueSBsaWdodCBvbiBob3cgZXZlbnRzIGFyZSBnZW5lcmF0ZWQgYW5kIGRpc3BhdGNoZWQuIE1heWJlIGEgcXVpY2sgc2VhcmNoIGZvciByZWxhdGVkIGtleXdvcmRzLCBsaWtlICYjMzQ7ZXZlbnQsJiMzNDsgJiMzNDtpbnRlcnJ1cHQsJiMzNDsgJiMzNDtxdWV1ZSwmIzM0OyBvciAmIzM0O2NhbGxiYWNrLCYjMzQ7IHdpbGwgZ2l2ZSBtZSBtb3JlIGNvbnRleHQuCgpGaW5hbGx5LCBpZiBzdGF0aWMgYW5hbHlzaXMgaXMgaW5zdWZmaWNpZW50LCBJJiMzOTtsbCBuZWVkIHRvIHJlc29ydCB0byBkeW5hbWljIGFuYWx5c2lzLiBUaGlzIG1lYW5zIGRlYnVnZ2luZy4gSSYjMzk7ZCBzZXQgYSBicmVha3BvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2YgYG54cHdpZmlfcHJvY2Vzc19ldmVudGAgYW5kIHN0ZXAgdGhyb3VnaCB0aGUgY2FsbCBzdGFjay4gVGhpcyB3b3VsZCBnaXZlIG1lIHRoZSBleGFjdCBjYWxsIHBhdGgsIHJldmVhbGluZyB0aGUgZGlyZWN0IGNhbGxlci4gQnV0IEkgY2FuJiMzOTt0IHN0b3AgdGhlcmUuIEkgd291bGQgaW52ZXN0aWdhdGUgdGhlIGNhbGxlciYjMzk7cyBwdXJwb3NlLCBzbyBJJiMzOTtsbCBhbHNvIGxvb2sgYXQgdGhlIHZhcmlhYmxlcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGV2ZW50LgoKVGhlIGdvYWwgaXMgdG8gbm90IGp1c3QgaWRlbnRpZnkgdGhlIGltbWVkaWF0ZSBjYWxsZXIsIGJ1dCB0byBkZWVwbHkgdW5kZXJzdGFuZCB0aGUgKndoeSogYW5kICpob3cqIG9mIHRoZSBldmVudCBwcm9jZXNzaW5nLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcgb2YgaG93IGV2ZW50cyB0cmlnZ2VyIGFuZCBhcmUgbWFuYWdlZCB3aXRoaW4gdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmlfcHJvY2Vzc19ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYz0zMjU9dm9pZCBueHB3aWZpX2ZyZWVfY21kX2J1ZmZlcihzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jLTM2Mi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jOjM2MzppbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYy0zNjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oPTgxPWludCBueHB3aWZpX2NvbmZpZ19zdGFydF91YXAoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oLTgyLVx0XHRcdCAgICAgc3RydWN0IG54cHdpZmlfdWFwX2Jzc19wYXJhbSAqYnNzX2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaDo4MzppbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmgtODQtaW50IG54cHdpZmlfcHJvY2Vzc19zdGFfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTI2NT1zdGF0aWMgYm9vbCBueHB3aWZpX2hhbmRsZV9ldmVudHMoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMjY4LVx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3JlY2VpdmVkID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MjY5Olx0XHRueHB3aWZpX3Byb2Nlc3NfZXZlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMjcwLVx0XHRyZXR1cm4gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwMjcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqV2hlcmUgRG9lcyBgbnhwd2lmaV9oYW5kbGVfZXZlbnRzYCBPcmlnaW5hdGU/KioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBiZWZvcmUgbWUgaXMgZXNzZW50aWFsbHkgYWJvdXQgY2FsbCB0cmFjaW5nLiBXaGVyZSBpcyB0aGUgZnVuY3Rpb24gYG54cHdpZmlfaGFuZGxlX2V2ZW50c2AgYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgdW5kZXJzdGFuZGluZyBjb250cm9sIGZsb3csIGRlYnVnZ2luZywgYW5kIHBvdGVudGlhbGx5IG1vZGlmeWluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIFdpRmkgZHJpdmVyIG9yIGFzc29jaWF0ZWQgc3lzdGVtIGNvbXBvbmVudHMuCgpJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IHRoZSBlbnRyeSBwb2ludHMgdGhhdCBsZWFkIHRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIElzIGl0IHRyaWdnZXJlZCBieSBhbiBpbnRlcnJ1cHQsIGEgdGltZXIsIG9yIHNvbWUga2luZCBvZiBoaWdoZXItbGV2ZWwgQVBJIGNhbGw/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGdpdmUgbWUgY2x1ZXMgYWJvdXQgdGhlIHNjZW5hcmlvcyB0aGF0IGNhbiB0cmlnZ2VyIGV2ZW50IHByb2Nlc3NpbmcuIEtub3dpbmcgdGhlIGNhbGwgaGllcmFyY2h5IGlzIHZpdGFsIHdoZW4gZGlhZ25vc2luZyBpc3N1ZXM7IHBpbnBvaW50aW5nIHdoYXQgY2FsbHMgdGhlIGV2ZW50IGhhbmRsZXIgaXMgbGlrZSBidWlsZGluZyBhIGZhbWlseSB0cmVlLCBhbmQgdGhhdCBoZWxwcyB0byBkZXRlcm1pbmUgaG93IHRoaW5ncyBhcmUgY29ubmVjdGVkIGFuZCB3aGVyZSBhIHByb2JsZW0gbWlnaHQgc3RlbSBmcm9tLgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcmVmZXJlbmNlcyB0byB0aGlzIGZ1bmN0aW9uIGluIHRoZSBjb2RlIGJhc2UsIGlkZWFsbHkgd2l0aCBhIGNvZGUgc2VhcmNoIHRvb2wuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCB0aGUgaW5jbHVkZSBmaWxlcyBhbmQgdGhlIG1haW4gZHJpdmVyIGZpbGVzLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIGRyaXZlciBmaWxlcyBhcyB0aGUgZmlyc3QgdGhpbmcgdG8gY2hlY2suIEJhc2VkIG9uIHRoZSBuYW1lIEkgbWlnaHQgYXNzdW1lIGl04oCZcyBhIHN0YW5kYXJkIGV2ZW50IGhhbmRsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmlfaGFuZGxlX2V2ZW50cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MjUzPXN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2NtZF9yZXNwb25zZShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MjY1OnN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2V2ZW50cyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTI2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTM3Nj12b2lkIG54cHdpZmlfbWFpbl9wcm9jZXNzKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTQ0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzo0NDU6XHRcdGRpZF93b3JrIHw9IG54cHdpZmlfaGFuZGxlX2V2ZW50cyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy00NDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTk5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgbnhwd2lmaV9tYWluX3Byb2Nlc3NgIFdvcmtmbG93KioKCk9rYXksIHNvIGBueHB3aWZpX21haW5fcHJvY2Vzc2AgaXMgdGhlICpoZWFydCogb2YgdGhlIG1hdHRlci4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgd29ya2VyLCB0aGUgbWFpbiB0aHJlYWQgb2YgZXhlY3V0aW9uIGZvciB3aGF0ZXZlciB0aGlzIGBueHB3aWZpYCBzeXN0ZW0gaXMuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRoZSBhYnNvbHV0ZWx5IGNydWNpYWwgb25lLCBpczogKldobyoga2lja3MgdGhpcyB0aGluZyBvZmY/IFdoZXJlIGRvZXMgdGhlIGV4ZWN1dGlvbiBmbG93ICpiZWdpbio/IFdpdGhvdXQga25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbiBvciBwcm9jZXNzLCBJJiMzOTttIGVzc2VudGlhbGx5IG9wZXJhdGluZyBpbiBhIGJsYWNrIGJveC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIHdpbGwgcHJvdmlkZSBhIHdlYWx0aCBvZiBpbmZvcm1hdGlvbi4gSXMgaXQgdHJpZ2dlcmVkIGJ5IGFuIGludGVycnVwdCwgYSB0aW1lciwgYSB1c2VyIGNvbW1hbmQsIGFub3RoZXIgcHJvY2VzcyBhbHRvZ2V0aGVyPyBUaGUgYW5zd2VycyB0byB0aG9zZSBxdWVzdGlvbnMgd2lsbCBndWlkZSBldmVyeXRoaW5nIGVsc2UuIE15IGltbWVkaWF0ZSBuZWVkIGlzIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2sgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIHRyaWdnZXJzIG9mIGBueHB3aWZpX21haW5fcHJvY2Vzc2AuIFRoYXTigJlzIHRoZSBjcml0aWNhbCBwaWVjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnhwd2lmaV9tYWluX3Byb2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTM2NT1zdGF0aWMgYm9vbCBueHB3aWZpX3B1bXBfY29tbWFuZChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0zNzUtLyogTWFpbiBsb29wOiBJUlEvUlgvQ01EL0VWRU5UOyB3YWtlIGNhcmQ7IFRYOyBQUyBudWxsOyBleGl0IGlmIGlkbGUuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6Mzc2OnZvaWQgbnhwd2lmaV9tYWluX3Byb2Nlc3Moc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0zNzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xMzAyPXN0YXRpYyB2b2lkIG54cHdpZmlfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTEzMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTMxMjovKiBNYWluIHdvcms6IHJ1biBueHB3aWZpX21haW5fcHJvY2VzcygpLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTEzMTMtc3RhdGljIHZvaWQgbnhwd2lmaV9tYWluX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xMzE5LVx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTMyMDpcdG54cHdpZmlfbWFpbl9wcm9jZXNzKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTEzMjEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaD0xMzE3PWludCBueHB3aWZpX3NldF90eF9wb3dlcihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xMzE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oOjEzMjA6dm9pZCBueHB3aWZpX21haW5fcHJvY2VzcyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xMzIxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM4NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBTeXprYWxsZXIgSW50ZXJhY3Rpb24gd2l0aCB0aGUgbnhwd2lmaSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbnhwd2lmaSBkcml2ZXIgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHN5emthbGxlci4gVGhlIGNvcmUgaWRlYSBpcyB0aGF0IHRoZSBkcml2ZXIgcmVsaWVzIG9uIGEgd29ya3F1ZXVlIGZvciBoYW5kbGluZyBoYXJkd2FyZSBldmVudHMsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlLiBIb3dldmVyLCB0aGUgZHJpdmVyJiMzOTtzIGFzc29jaWF0aW9uIHdpdGggU0RJTyBpbW1lZGlhdGVseSByYWlzZXMgYSBjcml0aWNhbCBxdWVzdGlvbjogaG93ICpwcmVjaXNlbHkqIGRvZXMgc3l6a2FsbGVyIHRyaWdnZXIgdGhpcz8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IFNESU8gZHJpdmVycyBjYW4gYmUgdHJpY2t5IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBvZnRlbiByZXF1aXJpbmcgc3BlY2lmaWMgZW11bGF0aW9uIG9yIGFsdGVybmF0aXZlIGludGVyZmFjZXMuCgpUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHRoZSBwcmVzZW5jZSBvZiBhbiBTRElPIGVtdWxhdG9yIHdpdGhpbiBzeXprYWxsZXImIzM5O3MgY2FwYWJpbGl0aWVzLiBPciBtYXliZSB0aGlzIGlzbiYjMzk7dCBleGNsdXNpdmVseSBhbiBTRElPIGRyaXZlcj8gQ291bGQgdGhlcmUgYmUgVVNCIG9yIFBDSWUgdmFyaWFudHMgb2YgdGhlIG54cHdpZmkgZHJpdmVyIGFzIHdlbGw/CgpXYWl0IGEgbWludXRlLCBJIG5lZWQgdG8gZ2V0IGJhY2sgaW4gZm9jdXMuIEkgb25seSByZW1lbWJlciBzZWVpbmcgYE5YUFdJRklfU0RJT2AgaW4gdGhlIEtjb25maWcgZmlsZSwgc28gSSBwcm9iYWJseSBuZWVkIHRvIHJlLWV4YW1pbmUgdGhlIGZpbGUgcGF0aHMuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdCBVU0Igb3IgUENJZSB2ZXJzaW9ucyBvZiB0aGlzIGRyaXZlciBldmVuICpleGlzdCogd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2Njc6bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY2OC1tb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5NDkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgbnhwd2lmaV9pbml0X21vZHVsZWAqKgoKT2theSwgc28gYG54cHdpZmlfaW5pdF9tb2R1bGVgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gYG1haW4uY2AuIFRoYXQmIzM5O3MgYSBiaXQgdW5leHBlY3RlZDsgSSB1c3VhbGx5IGV4cGVjdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gdG8gYmUgbW9yZSBtb2R1bGFyLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJcyBpdCBqdXN0IHJlZ2lzdGVyaW5nIGEgZHJpdmVyLCBvciBpcyBpdCBzZXR0aW5nIHVwIGhhcmR3YXJlLCBpbml0aWFsaXppbmcgZGF0YSBzdHJ1Y3R1cmVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gR2l2ZW4gaXRzIG5hbWUsIEkmIzM5O2QgKmd1ZXNzKiBpdCYjMzk7cyBXaUZpLXJlbGF0ZWQsIGJ1dCBJIHNob3VsZG4mIzM5O3QganVtcCB0byBhbnkgY29uY2x1c2lvbnMuIExldCBtZSBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGNhbGxzIHRvIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGJlIHVzZWZ1bCB0byBrbm93LiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IHN0ZXBzIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN0YXJ0dXAgcHJvY2Vzcy4gVW5kZXJzdGFuZGluZyB0aGF0IHdpbGwgYmUga2V5IHRvIHdvcmtpbmcgd2l0aCB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjUwOlx0bnhwd2lmaV9pbml0X21vZHVsZSh2b2lkKVxuMTY1MTpcdHtcbjE2NTI6XHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG4xNjUzOlx0XHRueHB3aWZpX2RlYnVnZnNfaW5pdCgpO1xuMTY1NDpcdCNlbmRpZlxuMTY1NTpcdFx0cmV0dXJuIDA7XG4xNjU2Olx0fVxuMTY1NzpcdFxuMTY1ODpcdC8qIE1vZHVsZSBleGl0OiByZW1vdmUgZGVidWdmcyBpZiBlbmFibGVkLiAqL1xuMTY1OTpcdHN0YXRpYyB2b2lkXG4xNjYwOlx0bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuMTY2MTpcdHtcbjE2NjI6XHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG4xNjYzOlx0XHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XG4xNjY0Olx0I2VuZGlmXG4xNjY1Olx0fVxuMTY2NjpcdFxuMTY2NzpcdG1vZHVsZV9pbml0KG54cHdpZmlfaW5pdF9tb2R1bGUpO1xuMTY2ODpcdG1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xuMTY2OTpcdFxuMTY3MDpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7TlhQIEludGVybmF0aW9uYWwgTHRkLlwmIzM0Oyk7XG4xNjcxOlx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O05YUCBXaUZpIERyaXZlciB2ZXJzaW9uIFwmIzM0OyBWRVJTSU9OKTtcbjE2NzI6XHRNT0RVTEVfVkVSU0lPTihWRVJTSU9OKTtcbjE2NzM6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODU0MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgU0RJTyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gYG1haW4uY2AgaXMganVzdCBzZXR0aW5nIHVwIGRlYnVnZnMsIHdoaWNoIGlzIGV4cGVjdGVkLiBCdXQgd2hlcmUmIzM5O3MgdGhlIGFjdHVhbCBidXMgZHJpdmVyIGZvciB0aGUgU0RJTyBpbnRlcmZhY2U/IEkgbmVlZCB0byBmaW5kIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBpcyBgc2Rpby5jYC4gSG9wZWZ1bGx5LCBpdCYjMzk7cyB0aGVyZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIFNESU8gZnVuY3Rpb25hbGl0eSByZXNpZGVzLiBUaW1lIHRvIGRpdmUgaW4gYW5kIHNlZSB3aGF0IGBzZGlvLmNgIGhhcyB0byBvZmZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzUxCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgU0RJTyBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IFNESU8gZHJpdmVyIHJlZ2lzdHJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgcGxhY2UgSSBhbHdheXMgc3RhcnQsIGlzIHRoZSBjb3JlIG9mIHRoZSBkcml2ZXI6IGBzZGlvLmNgLiBUaGF0IGZpbGUgaXMgdGhlIGNlbnRyYWwgaHViIGZvciB0aGUgU0RJTyBzdWJzeXN0ZW0uIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgbG9jYXRlIHRoZSBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgIGZ1bmN0aW9uLCBhcyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyJiMzOTtzIGludGVyZmFjZSB0byB0aGUgY29yZSBmcmFtZXdvcmsgbGllcy4gS25vd2luZyB0aGlzIGZ1bmN0aW9uIHdpbGwgdGVsbCBtZSBob3cgdGhlIGRldmljZSBkcml2ZXIgaXMgZ29pbmcgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgU0RJTyBzdWJzeXN0ZW0gYXQgYSBmdW5kYW1lbnRhbCBsZXZlbC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgYm91bmQgdG8gdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQgaW4gdGhhdCBwcm9jZXNzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwMDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIHRoZSBTRElPIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgU0RJTyBkcml2ZXIgaXMgZ2V0dGluZyByZWdpc3RlcmVkIGluIHRoZSBzeXN0ZW0uIFRoZSBmbG93IGlzbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLiBMZXQgbWUgcXVpY2tseSB6ZXJvIGluIG9uIHdoZXJlIHRoZSBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIGBueHB3aWZpYCBkaXJlY3RvcnkuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGEgZ3JlcCBvciBmaW5kIGNvbW1hbmQgdG8gc2VhcmNoIHRoZSBzb3VyY2UgdHJlZSBhbmQgcGlucG9pbnQgdGhlIGV4YWN0IGZpbGUgYW5kIGxpbmUgd2hlcmUgdGhhdCBkcml2ZXIgcmVnaXN0cmF0aW9uIGhhcHBlbnMuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyMTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBTRElPIERyaXZlciBSZWdpc3RyYXRpb24qKgoKSG1tLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgKmhvdyogdGhpcyBTRElPIGRyaXZlciBpcyBiZWluZyByZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbC4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBmaXJzdCBzdGVwIHdoZW4gZGVidWdnaW5nIHNvbWV0aGluZyBsaWtlIHRoaXMuIExldCYjMzk7cyBzZWUuLi4gdGhlIHF1aWNrZXN0IHJvdXRlIGlzIHByb2JhYmx5IHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgc291cmNlIGNvZGUuIFdoZXJlIGRvIHdlIGZpbmQgdGhhdCByZWdpc3RyYXRpb24gbWFnaWM/IE15IGluc3RpbmN0IHNheXMgaXQmIzM5O2xsIGJlIGluIHRoZSBtYWluIGBzZGlvLmNgIGZpbGUsIHdoZXJlIHRoZSBjb3JlIFNESU8gZnVuY3Rpb25hbGl0eSByZXNpZGVzLiBOb3csIGxldCYjMzk7cyBsb29rIGZvciB0aGUgc3RhbmRhcmQgcmVnaXN0cmF0aW9uIG1hY3JvcywgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IGJlaW5nIGVtcGxveWVkIGhlcmUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyB3ZSB3YW50IHRvIGxvb2sgZm9yIGVpdGhlciBgbW9kdWxlX2luaXRgIOKAkyB0aGF0JiMzOTtzIG9mdGVuIHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgZHJpdmVyIHJlZ2lzdHJhdGlvbiDigJMgb3IgcGVyaGFwcyBkaXJlY3RseSBmb3Igc29tZXRoaW5nIGxpa2UgYHNkaW9fZHJpdmVyYCBpdHNlbGYsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIGl0LiBUaGF0IHdvdWxkIGJlIHRoZSBkcml2ZXIgc3RydWN0dXJlIGRlY2xhcmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCBpbiBgc2Rpby5jYCBmb3IgdGhvc2UsIHNoYWxsIHdlPyBUaGF0JiMzOTtsbCBnaXZlIHVzIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGUgd2hvbGUgdGhpbmcgaXMgc2V0IHVwLCBhbmQgd2hlcmUgdGhlIGVudHJ5IHBvaW50cyBtaWdodCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2Rpb19kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTQ2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgbnhwd2lmaV9zZGlvX3BtX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jOjQ3MTpzdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIG54cHdpZmlfc2RpbyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy00NzItXHQubmFtZSA9IFwmIzM0O254cHdpZmlfc2Rpb1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9MjI5Mz1zdGF0aWMgc3RydWN0IG54cHdpZmlfaWZfb3BzIHNkaW9fb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jOjIzMjE6bW9kdWxlX3NkaW9fZHJpdmVyKG54cHdpZmlfc2Rpbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMjMyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MTAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0NzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGFuIFNESU8gRHJpdmVyJiMzOTtzIFJlYWNoYWJpbGl0eSBpbiBhIEZ1enppbmcgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG1vZHVsZV9zZGlvX2RyaXZlcihueHB3aWZpX3NkaW8pO2AsIHdoaWNoIHRlbGxzIG1lIHRoaXMgaXMgYW4gU0RJTyBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgZG9lcyBTeXprYWxsZXIgZXZlbiBoYXZlIGFuIFNESU8gZW11bGF0b3I/IEJlY2F1c2UgaWYgbm90LCBob3cgZGlkIGl0IHRyaWdnZXIgdGhpcyBjb25kaXRpb24/IFN5emthbGxlciYjMzk7cyBzdHJlbmd0aHMgYXJlIGluIGVtdWxhdGluZyBoYXJkd2FyZSwgYnV0IEkmIzM5O20gZHJhd2luZyBhIGJsYW5rIG9uIFNESU8uCgpJdCBjYW4mIzM5O3QgYmUgVVNCIOKAkyB0aGVyZSYjMzk7cyBubyBgdXNiLmNgIGhlcmUuIEFuZCBhIFBDSWUgZHJpdmVyIGlzIG91dCB0b28uIFdhaXQsIHRoZXJlJiMzOTtzIGBtYWM4MDIxMV9od3NpbWAgZm9yIG1hYzgwMjExLCBidXQgdGhpcyBpcyBhIGNmZzgwMjExIGRyaXZlciBzbyBJIGRvdWJ0IGl0LiBDb3VsZCB0aGVyZSBiZSBzb21lIHNvcnQgb2YgdmlydHVhbCBTRElPIGhvc3QgY29udHJvbGxlciBJJiMzOTttIG1pc3NpbmcgaW4gdGhlIGtlcm5lbD8gVGltZSB0byBsb29rIGludG8gdGhhdC4uLiBvciBjb3VsZCBTeXprYWxsZXIgYmUgbGV2ZXJhZ2luZyBgbWFjODAyMTFfaHdzaW1gIHRvIHNvbWVob3cgdHJpZ2dlciBjZmc4MDIxMSBldmVudHM/IE5vLCB0aGlzIGlzIGEgZGVkaWNhdGVkIGhhcmR3YXJlIGRyaXZlciwgYG54cHdpZmlgLgoKT2theSwgaWYgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNESU8gZHJpdmVyLCBhbmQgdGhlcmUmIzM5O3Mgbm8gU0RJTyBlbXVsYXRpb24sIHRoZW4gdGhpcyBjb2RlIHBhdGggaXMgc2ltcGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0aGUgc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnQgdGhhdCBTeXprYWxsZXIgdXRpbGl6ZXMuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhvdWdoLiBMZXQgbWUgZG91YmxlLWNoZWNrOiBpcyB0aGVyZSBhbnkgdmlydHVhbCBTRElPIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGtlcm5lbCwgb3Igc29tZSBvdGhlciBTeXprYWxsZXIgbWVjaGFuaXNtIGZvciBTRElPIGluamVjdGlvbj8gTm9wZSwgSSYjMzk7bSBwcmV0dHkgc3VyZSBTeXprYWxsZXImIzM5O3MgYnJlYWQgYW5kIGJ1dHRlciBpcyBVU0IgKHRocm91Z2ggYGR1bW15X2hjZGApLCBQQ0kgKHZpYSBRRU1VKSwgYW5kIG90aGVycy4uLiBidXQgbm90IFNESU8sIGF0IGxlYXN0IGluIGEgZGlyZWN0IHNlbnNlLgoKV2FpdCBhIHNlY29uZC4uLiBjb3VsZCB0aGlzIGJlIGEgcGF0Y2ggdGhhdCBTeXprYWxsZXIgaXMgKnRlc3RpbmcqIHJhdGhlciB0aGFuICpmaW5kaW5nKj8gVGhhdCYjMzk7cyBpdCEgVGhlIHByb21wdCBtZW50aW9ucyAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7LiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoaXMgbWVhbnMgdGhpcyBwYXRjaCB3YXMgc2VudCB0byB0aGUgbWFpbGluZyBsaXN0LCBhbmQgc3l6Ym90IGlzIGp1c3QgYmVpbmcgdXNlZCB0byB2YWxpZGF0ZSBpdCwgbm90IHRvIGFjdHVhbGx5IGZpbmQgdGhlIGJ1Zy4gU28sIHRoZSBjb2RlICppcyogaGFyZHdhcmUtc3BlY2lmaWMuIEFuZCwgc2luY2Ugbm8gU0RJTyBlbXVsYXRpb24gZXhpc3RzLCBTeXprYWxsZXIgd29uJiMzOTt0IGJlIGFibGUgdG8gcmVhY2ggdGhpcyBidWcuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgaXMgYGR1bW15X3NkaW9gIG9yIGBzZGlvX2R1bW15YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jPTU3PXN0YXRpYyBpbnQgdGh1bmRlcl9tbWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYy0xMzQtXHRcdCAqIG1tY19vZl9wYXJzZSBhbmQgZGV2bSogcmVxdWlyZSBvbmUgZGV2aWNlIHBlciBzbG90LlxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYzoxMzU6XHRcdCAqIENyZWF0ZSBhIGR1bW15IGRldmljZSBwZXIgc2xvdCBhbmQgc2V0IHRoZSBub2RlIHBvaW50ZXIgdG9cbmRyaXZlcnMvbW1jL2hvc3QvY2F2aXVtLXRodW5kZXJ4LmMtMTM2LVx0XHQgKiB0aGUgc2xvdC4gVGhlIGVhc2llc3Qgd2F5IHRvIGdldCB0aGlzIGlzIHVzaW5nXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYz00NTA9c3RhdGljIHZvaWQgbGl0ZXhfbW1jX3NldF9pb3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYy00NTUtXHQgKiBUaGUgU0Qgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyBhdCBsZWFzdCA3NCBpZGxlIGNsb2NrcyBiZWZvcmUgQ01EMC5cbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmM6NDU2Olx0ICogVGhlc2UgZHVtbXkgY3ljbGVzIGlzIGdlbmVyYXRlZCBieSB3cml0aW5nIExJVEVYX1BIWV9JTklUSUFMSVpFLlxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYy00NTctXHQgKi9cbi0tXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYz0yMDE9c3RhdGljIHZvaWQgbW1jX29tYXBfc2VsZWN0X3Nsb3Qoc3RydWN0IG1tY19vbWFwX3Nsb3QgKnNsb3QsIGludCBjbGFpbWVkKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jLTIzNS1cbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jOjIzNjpcdFx0LyogRG9pbmcgdGhlIGR1bW15IHJlYWQgaGVyZSBzZWVtcyB0byB3b3JrIGFyb3VuZCBzb21lIGJ1Z1xuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmMtMjM3LVx0XHQgKiBhdCBsZWFzdCBpbiBPTUFQMjR4eCBzaWxpY29uIHdoZXJlIHRoZSBjb21tYW5kIHdvdWxkIG5vdFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYz0yMDg9c3RhdGljIHZvaWQgc2Rfc2VuZF9jbWRfZ2V0X3JzcChzdHJ1Y3QgcmVhbHRla19wY2lfc2RtbWMgKmhvc3QsXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jLTMwMS1cdFx0ICogVGhlIGNvbnRyb2xsZXIgb2ZmbG9hZHMgdGhlIGxhc3QgYnl0ZSB7Q1JDLTcsIGVuZCBiaXQgMSYjMzk7YjF9XG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmM6MzAyOlx0XHQgKiBvZiByZXNwb25zZSB0eXBlIFIyLiBBc3NpZ24gZHVtbXkgQ1JDLCAwLCBhbmQgZW5kIGJpdCB0byB0aGVcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYy0zMDMtXHRcdCAqIGJ5dGUocHRyWzE2XSwgZ29lcyBpbnRvIHRoZSBMU0Igb2YgcmVzcFszXSBsYXRlcikuXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jPTI4NT1zdGF0aWMgdm9pZCBzZF9zZW5kX2NtZF9nZXRfcnNwKHN0cnVjdCBydHN4X3VzYl9zZG1tYyAqaG9zdCxcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmMtNDI1LVx0XHQgKiBUaGUgY29udHJvbGxlciBvZmZsb2FkcyB0aGUgbGFzdCBieXRlIHtDUkMtNywgZW5kIGJpdCAxJiMzOTtiMX1cbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYzo0MjY6XHRcdCAqIG9mIHJlc3BvbnNlIHR5cGUgUjIuIEFzc2lnbiBkdW1teSBDUkMsIDAsIGFuZCBlbmQgYml0IHRvIHRoZVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jLTQyNy1cdFx0ICogYnl0ZShwdHJbMTZdLCBnb2VzIGludG8gdGhlIExTQiBvZiByZXNwWzNdIGxhdGVyKS5cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jLTIxNC1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmM6MjE1Oi8qIHRoZSBjb250cm9sbGVyIGhhcyBkdW1teSBwYWQgZm9yIGNsb2NrIGxvb3BiYWNrICovXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jLTIxNi0jZGVmaW5lIEVTREhDX0ZMQUdfRFVNTVlfUEFEXHRcdEJJVCgxOSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM9MTAxPXN0YXRpYyB1MzIgcHhhdjFfaXJxKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCB1MzIgaW50bWFzaylcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTA2LVx0aWYgKHB4YXYyX2hvc3QtXHUwMDNlc2Rpb19tcnEgXHUwMDI2XHUwMDI2IChpbnRtYXNrIFx1MDAyNiBTREhDSV9JTlRfQ01EX01BU0spKSB7XG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM6MTA3Olx0XHQvKiBUaGUgZHVtbXkgQ01EMCBmb3IgdGhlIFNESU8gd29ya2Fyb3VuZCBqdXN0IGNvbXBsZXRlZCAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEwOC1cdFx0c2RoY2lfd3JpdGVsKGhvc3QsIGludG1hc2sgXHUwMDI2IFNESENJX0lOVF9DTURfTUFTSywgU0RIQ0lfSU5UX1NUQVRVUyk7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jPTEyMz1zdGF0aWMgdm9pZCBweGF2MV9yZXF1ZXN0X2RvbmUoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMzYtXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM6MTM3Olx0XHQvKiBDbG9jayBpcyBub3cgc3RvcHBlZCwgc28gcmVzdGFydCBpdCBieSBzZW5kaW5nIGEgZHVtbXkgQ01EMCAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEzOC1cdFx0cHhhdjJfaG9zdCA9IHNkaGNpX3BsdGZtX3ByaXYoc2RoY2lfcHJpdihob3N0KSk7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTE0OS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYzoxNTA6XHRcdC8qIERvbiYjMzk7dCBmaW5pc2ggdGhpcyByZXF1ZXN0IHVudGlsIHRoZSBkdW1teSBDTUQwIGZpbmlzaGVzICovXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTUxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jPTY1Mz1zdGF0aWMgaW50IHNkaGNpX3ByZV9kbWFfdHJhbnNmZXIoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jLTY4OS1cdFx0XHRcdFx0ICAgbW1jX2dldF9kbWFfZGlyKGRhdGEpKTtcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYzo2OTA6XHRcdC8qIEp1c3QgYSBkdW1teSB2YWx1ZSAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jLTY5MS1cdFx0c2dfY291bnQgPSAxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI3MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBueHB3aWZpYCBUcmlnZ2VyKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGRlZmluaXRlbHkgbm8gc2lnbiBvZiBhIGBkdW1teV9zZGlvYCBtb2R1bGUsIG9yIGFueXRoaW5nIGV4cGxpY2l0bHkgbmFtZWQgdGhhdCB3YXkuIFRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gTm93LCBJIG5lZWQgdG8gcmV0aGluayB0aGlzIGFwcHJvYWNoLiBJIGhhdmUgdG8gZmlndXJlIG91dCB3aGF0IGFjdHVhbGx5ICpkb2VzKiB0cmlnZ2VyIHRoZSBgbnhwd2lmaWAgZHJpdmVyLiBJcyB0aGVyZSBhbm90aGVyIHBhdGgsIHNvbWUgb3RoZXIgbWVjaGFuaXNtLCBJJiMzOTttIG92ZXJsb29raW5nPyBUaW1lIHRvIGNpcmNsZSBiYWNrLiBJ4oCZbGwgZ28gc3RyYWlnaHQgYmFjayB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ2AuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBob2xkcyBhbnkgY2x1ZXMgYWJvdXQgd2hhdCBhY3RpdmF0ZXMgdGhpcyB0aGluZy4gR290dGEgZXhhbWluZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyBjYXJlZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOWFBXSUZJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6Mjpjb25maWcgTlhQV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6MTI6Y29uZmlnIE5YUFdJRklfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2ODQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBOWFAgV2ktRmkgRHJpdmVyIEFyY2hpdGVjdHVyZSoqCgpBbHJpZ2h0LCBzbyBgTlhQV0lGSWAuLi4gdGhhdCYjMzk7cyB0aGUgY29yZSBtb2R1bGUsIHRoZSBoZWFydCBvZiB0aGUgTlhQIFdpLUZpIGltcGxlbWVudGF0aW9uLiBBbmQgYE5YUFdJRklfU0RJT2AsIHRoYXQmIzM5O3MgdGhlIFNESU8gZHJpdmVyIHNwZWNpZmljYWxseS4gSG1tLCB0aGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEJ1dCBpcyBTRElPIHRoZSAqb25seSogaW50ZXJmYWNlIHN1cHBvcnRlZD8gSSBuZWVkIHRvIGJlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSYjMzk7dmUgZ290IHRvIGNvbnNpZGVyIGFsbCB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLgoKVG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSwgSSBzaG91bGQgcmVhbGx5IGRpZyBpbnRvIHRoZSBkcml2ZXIgZGlyZWN0b3J5OiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL2AuIFRoYXQgZGlyZWN0b3J5IHNob3VsZCBob2xkIHRoZSBjb21wbGV0ZSBzZXQgb2YgZHJpdmVycyBidWlsdCBvbiB0aGF0IGBueHB3aWZpYCBjb3JlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3BlY2lmaWMgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9ucy4gTWF5YmUgdGhlcmUmIzM5O3MgYSBVU0IgZHJpdmVyLCBhIFBDSWUgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSB0aGF0IGlzbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLiBBIHF1aWNrIHNjYW4gb2YgdGhhdCBhcmVhIHdpbGwgZWl0aGVyIGNvbmZpcm0gbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIG9yIHJldmVhbCBvdGhlciBhcmNoaXRlY3R1cmVzIEkgbmVlZCB0byBhY2NvdW50IGZvci4gR29vZCwgbGV0JiMzOTtzIGdvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IG51bGwsCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7bnhwd2lmaSYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDE0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBueHB3aWZpYCBEcml2ZXIgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzb21ldGhpbmcganVtcHMgb3V0LiBJdCBzZWVtcyBgbnhwd2lmaWAgaXMgdGhlIG9ubHkgc3ViZGlyZWN0b3J5IGluIGBueHAvYC4gQnV0IEkgYWxzbyBrbm93IHRoZXJlJiMzOTtzIGEgYG13aWZpZXhgIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvYC4gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBkcml2ZXIgYWx0b2dldGhlciwgdGhvdWdoLiBUaGUgcmVhbCBpc3N1ZSBpcyBgbnhwd2lmaWAg4oCTIGl0JiMzOTtzIGFuIFNESU8gZHJpdmVyLCBhbmQgc2VlbXMgc3BlY2lmaWMgdG8gdGhlIElXNjF4IGhhcmR3YXJlLiBUaGUgYmlnIHByb2JsZW0gaGVyZSBpcyB0aGF0IHRoZXJlJiMzOTtzIG5vIFNESU8gZW11bGF0b3IgYXZhaWxhYmxlIGluIFFFTVUgb3Igc3l6a2FsbGVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIHNvIEkmIzM5O20gdGhpbmtpbmcsIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgdGhhdCBjb2RlJiMzOTtzIGJhc2ljYWxseSB1bnJlYWNoYWJsZS4KCkJ1dCBJJiMzOTttIG5vdCBnb2luZyB0byBnaXZlIHVwIHRoYXQgZWFzaWx5LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIE15IG5leHQgdGhvdWdodCBpczogY2FuIHRoaXMgZHJpdmVyIHNvbWVob3cgYmUgbG9hZGVkIGFuZCBpbml0aWFsaXplZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZT8gTWF5YmUgdGhlcmUmIzM5O3MgYSB3YXkuIExldCYjMzk7cyBkaWcgaW50byBgc2Rpby5jYCBhbmQgc3BlY2lmaWNhbGx5IGNoZWNrIHRoZSBgbnhwd2lmaV9zZGlvX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCB0byBmaWd1cmluZyBvdXQgYSB3b3JrYXJvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX3NkaW9fcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTEyMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6MTIzOm54cHdpZmlfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTEyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTQ3MT1zdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIG54cHdpZmlfc2RpbyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDczLVx0LmlkX3RhYmxlID0gbnhwd2lmaV9pZHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6NDc0Olx0LnByb2JlID0gbnhwd2lmaV9zZGlvX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTQ3NS1cdC5yZW1vdmUgPSBueHB3aWZpX3NkaW9fcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzcxNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYG54cHdpZmlgIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyB0aGUgU0RJTyBjb3JlIGNhbGxzIGBueHB3aWZpX3NkaW9fcHJvYmVgIHdoZW4gaXQgZGV0ZWN0cyBhIGNvbXBhdGlibGUgU0RJTyBkZXZpY2UuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBCdXQgdGhlIHByb2JsZW0gaXMsIGlmIHRoZXJlJiMzOTtzIG5vIHZpcnR1YWwgU0RJTyBob3N0IGNvbnRyb2xsZXIgb3IgYSBtZXRob2QgdG8gc2ltdWxhdGUgdGhlIHByZXNlbmNlIG9mIGFuIFNESU8gZGV2aWNlLCB0aGlzIHByb2JlIGZ1bmN0aW9uIHdpbGwgKm5ldmVyKiBiZSBjYWxsZWQuIENvbnNlcXVlbnRseSwgdGhlIHdob2xlIGRyaXZlciBpbml0aWFsaXphdGlvbiBpcyBibG9ja2VkLiBUaGF0IG1lYW5zIGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgLCB0aGUgZnVuY3Rpb24gSSYjMzk7bSB0cnlpbmcgdG8gcmVhY2gsIHdpbGwgcmVtYWluIHVucmVhY2hhYmxlLiBEYW1uLgoKV2FpdCBhIHNlY29uZOKApiBpcyB0aGlzIHRoZSBvbmx5IGVudHJ5IHBvaW50PyBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZSBpbnRvIHRoZSBkcml2ZXI/IENvdWxkIGBueHB3aWZpYCBhY3R1YWxseSBiZSBhIG1hYzgwMjExIGRyaXZlcj8gVGhhdCYjMzk7cyB1bmxpa2VseS4gSXQgbG9va3MgbGlrZSBpdCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIGFuZCBJJiMzOTttIHNlZWluZyBjYWxscyBsaWtlIGBjZmc4MDIxMV9uZXdfc3RhYCwgc28gcHJvYmFibHkgbm90LgoKQWxyaWdodCwgbGV0JiMzOTtzIHN0ZXAgYmFjay4gQ2FuIHN5emthbGxlciBzb21laG93IGluamVjdCBldmVudHMsIG9yIHRyaWdnZXIgc29tZXRoaW5nIHZpYSBhIGRlYnVnZnMgaW50ZXJmYWNlLCBwZXJoYXBzPyBUaGF0JiMzOTtzIGEgY2xhc3NpYyBieXBhc3MsIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBUaW1lIHRvIGNoZWNrIGBkZWJ1Z2ZzLmNgIHdpdGhpbiB0aGUgYG54cHdpZmlgIHNvdXJjZS4gTWF5YmUgSSBjYW4gZmluZCBhIHdheSBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZT0zMj1ueHB3aWZpLXkgJiM0Mzs9IDExaC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZTozMzpueHB3aWZpLSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gZGVidWdmcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZS0zNC1vYmotJChDT05GSUdfTlhQV0lGSSkgJiM0Mzs9IG54cHdpZmkub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM9MjM1MD1zdHJ1Y3Qgd2lyZWxlc3NfZGV2ICpueHB3aWZpX2FkZF92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jLTI1MTEtI2lmZGVmIENPTkZJR19ERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYzoyNTEyOlx0bnhwd2lmaV9kZXZfZGVidWdmc19pbml0KHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYy0yNTEzLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM9MjUzMz1pbnQgbnhwd2lmaV9kZWxfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYy0yNTM5LSNpZmRlZiBDT05GSUdfREVCVUdfRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM6MjU0MDpcdG54cHdpZmlfZGV2X2RlYnVnZnNfcmVtb3ZlKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYy0yNTQxLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MzogKiBueHB3aWZpOiBkZWJ1Z2ZzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjg6I2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9MTY9c3RhdGljIGNoYXIgKmJzc19tb2Rlc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0zMC0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjMxOiAqIGRlYnVnZnMgXCYjMzQ7aW5mb1wmIzM0OyByZWFkIGhhbmRsZXI6IGR1bXAgZHJpdmVyIG5hbWUvdmVyc2lvbiwgaW50ZXJmYWNlLCBCU1MgbW9kZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0zMi0gKiBsaW5rIHN0YXRlLCBNQUMsIGNvdW50ZXJzOyBTVEEgYWRkcyBTU0lEL0JTU0lEL2NoYW5uZWwvY291bnRyeS9yZWdpb24gYW5kXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTM2PW54cHdpZmlfaW5mb19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTE5LS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTIwOiAqIGRlYnVnZnMgXCYjMzQ7Z2V0bG9nXCYjMzQ7IHJlYWQgaGFuZGxlcjogZHVtcCBmaXJtd2FyZS84MDIuMTEgY291bnRlcnMgKHJldHJ5LCBSVFMvQUNLLCBkdXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTIxLSAqIGZyYWcsIG1jYXN0LCBGQ1MsIGJlYWNvbiBzdGF0cykuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTEyND1ueHB3aWZpX2dldGxvZ19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTg4LS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTg5OiAqIGRlYnVnZnMgXCYjMzQ7aGlzdG9ncmFtXCYjMzQ7IHJlYWQgaGFuZGxlcjogcmVwb3J0IHNhbXBsZSBjb3VudCBhbmQgcGVyLXJhdGUvU05SL25vaXNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTkwLSAqIGZsb29yL3NpZ25hbCBzdHJlbmd0aCBoaXN0b2dyYW1zLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz0yODI9c3RhdGljIHN0cnVjdCBueHB3aWZpX2RlYnVnX2luZm8gaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0yODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6Mjg0Oi8qIGRlYnVnZnMgXCYjMzQ7ZGVidWdcJiMzNDsgcmVhZCBoYW5kbGVyOiBkdW1wIGFkYXB0ZXIgZGVidWcgaW5mbyBhbmQgQkEvcmVvcmRlciB0YWJsZXMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMjg1LXN0YXRpYyBzc2l6ZV90XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTMxMj1zdGF0aWMgdTMyIHNhdmVkX3JlZ190eXBlLCBzYXZlZF9yZWdfb2Zmc2V0LCBzYXZlZF9yZWdfdmFsdWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTMxNC0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjMxNTogKiBkZWJ1Z2ZzIFwmIzM0O3JlZ3Jkd3JcJiMzNDsgd3JpdGUgaGFuZGxlcjogcGFyc2UgXHUwMDNjdHlwZSBvZmZzZXQgdmFsdWVcdTAwM2UgYW5kIHN0b3JlIGZvclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTMxNi0gKiByZWFkYmFjay9JTy5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9MzE5PW54cHdpZmlfcmVncmR3cl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzUyLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MzUzOiAqIGRlYnVnZnMgXCYjMzQ7cmVncmR3clwmIzM0OyByZWFkIGhhbmRsZXI6IHBlcmZvcm0gcGVuZGluZyByZWdpc3RlciByZWFkL3dyaXRlIGFuZCByZXR1cm5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0zNTQtICogXHUwMDNjdHlwZSBvZmZzZXQgdmFsdWVcdTAwM2UuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTM1Nz1ueHB3aWZpX3JlZ3Jkd3JfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo0MDY6LyogZGVidWdmcyBcJiMzNDtkZWJ1Z19tYXNrXCYjMzQ7IHJlYWQgaGFuZGxlcjogc2hvdyBkcml2ZXIgZGVidWcgbWFzay4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00MDctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQwOT1ueHB3aWZpX2RlYnVnX21hc2tfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo0MzA6LyogZGVidWdmcyBcJiMzNDtkZWJ1Z19tYXNrXCYjMzQ7IHdyaXRlIGhhbmRsZXI6IHNldCBkcml2ZXIgZGVidWcgbWFzay4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00MzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQzMz1ueHB3aWZpX2RlYnVnX21hc2tfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NDU3Oi8qIGRlYnVnZnMgXCYjMzQ7dmVyZXh0XCYjMzQ7IHdyaXRlIGhhbmRsZXI6IHNlbGVjdCBleHRlbmRlZCB2ZXJzaW9uIHN0cmluZy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NTgtc3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz00NTk9bnhwd2lmaV92ZXJleHRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NDc1Oi8qIGRlYnVnZnMgXCYjMzQ7dmVyZXh0XCYjMzQ7IHJlYWQgaGFuZGxlcjogc2hvdyBleHRlbmRlZCB2ZXJzaW9uIHN0cmluZy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NzYtc3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz00Nzc9bnhwd2lmaV92ZXJleHRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQ5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo0OTI6LyogZGVidWdmcyBcJiMzNDttZW1yd1wmIzM0OyB3cml0ZSBoYW5kbGVyOiByZWFkL3dyaXRlIGZpcm13YXJlIG1lbW9yeSAoYWRkciwgdmFsdWUpLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQ5My1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQ5ND1ueHB3aWZpX21lbXJ3X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy01MzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NTM1Oi8qIGRlYnVnZnMgXCYjMzQ7bWVtcndcJiMzNDsgcmVhZCBoYW5kbGVyOiBzaG93IGxhc3QgbWVtb3J5IGFjY2VzcyByZXN1bHQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTM2LXN0YXRpYyBzc2l6ZV90XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTU1Nj1zdGF0aWMgdTMyIHNhdmVkX29mZnNldCA9IC0xLCBzYXZlZF9ieXRlcyA9IC0xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTU1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo1NTg6LyogZGVidWdmcyBcJiMzNDtyZGVlcHJvbVwmIzM0OyB3cml0ZSBoYW5kbGVyOiBzZXQgRUVQUk9NIG9mZnNldC9sZW5ndGggdG8gcmVhZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy01NTktc3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz01NjA9bnhwd2lmaV9yZGVlcHJvbV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjU5MjovKiBkZWJ1Z2ZzIFwmIzM0O3JkZWVwcm9tXCYjMzQ7IHJlYWQgaGFuZGxlcjogZHVtcCBFRVBST00gYnl0ZXMgZnJvbSBzYXZlZCBvZmZzZXQvbGVuZ3RoLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTU5My1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTU5ND1ueHB3aWZpX3JkZWVwcm9tX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1YnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02MzMtLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo2MzQ6ICogZGVidWdmcyBcJiMzNDtoc2NmZ1wmIzM0OyB3cml0ZSBoYW5kbGVyOiBjb25maWd1cmUgaG9zdC1zbGVlcCAoY29uZGl0aW9ucy9ncGlvL2dhcCkgb3JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02MzUtICogY2FuY2VsLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz02Mzg9bnhwd2lmaV9oc2NmZ193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTY5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo2OTI6LyogZGVidWdmcyBcJiMzNDtoc2NmZ1wmIzM0OyByZWFkIGhhbmRsZXI6IHNob3cgY3VycmVudCBob3N0LXNsZWVwIGNvbmZpZ3VyYXRpb24uICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNjkzLXN0YXRpYyBzc2l6ZV90XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTk3MD1ueHB3aWZpX3R3dF9pbmZvcm1hdGlvbl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTk5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo5OTg6I2RlZmluZSBOWFBXSUZJX0RGU19BRERfRklMRShuYW1lKSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCNuYW1lLCAwNjQ0LCAgICAgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy05OTktXHRcdFx0XHQgICBwcml2LVx1MDAzZWRmc19kZXZfZGlyLCBwcml2LCAgICAgICAgICAgICBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz0xMDM4PU5YUFdJRklfREZTX0ZJTEVfV1JJVEVfT1BTKHR3dF9pbmZvcm1hdGlvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTAzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDQwOi8qIENyZWF0ZSBwZXItbmV0ZGV2IGRlYnVnZnMgZGlyZWN0b3J5IGFuZCBmaWxlcy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDQxLXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDQyOm54cHdpZmlfZGV2X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNDc6XHRwcml2LVx1MDAzZWRmc19kZXZfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA0OC1cdFx0XHRcdFx0ICAgICAgIG54cHdpZmlfZGZzX2Rpcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA3MTovKiBSZW1vdmUgcGVyLW5ldGRldiBkZWJ1Z2ZzIGRpcmVjdG9yeSBhbmQgZmlsZXMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA3Mi12b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA3MzpueHB3aWZpX2Rldl9kZWJ1Z2ZzX3JlbW92ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNzg6XHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUocHJpdi1cdTAwM2VkZnNfZGV2X2Rpcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA3OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDgxOi8qIENyZWF0ZSB0b3AtbGV2ZWwgZGVidWdmcyBkaXJlY3RvcnkuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4Mi12b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA4MzpueHB3aWZpX2RlYnVnZnNfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwODUtXHRpZiAoIW54cHdpZmlfZGZzX2RpcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDg2Olx0XHRueHB3aWZpX2Rmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoXCYjMzQ7bnhwd2lmaVwmIzM0OywgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDg5Oi8qIFJlbW92ZSB0b3AtbGV2ZWwgZGVidWdmcyBkaXJlY3RvcnkuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA5MC12b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA5MTpueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA5MzpcdGRlYnVnZnNfcmVtb3ZlKG54cHdpZmlfZGZzX2Rpcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA5NC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NDY9RVhQT1JUX1NZTUJPTF9HUEwoX254cHdpZmlfZGJnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2NDg6LyogTW9kdWxlIGluaXQ6IGluaXQgZGVidWdmcyBpZiBlbmFibGVkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NDktc3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NTA9bnhwd2lmaV9pbml0X21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjUyLSNpZmRlZiBDT05GSUdfREVCVUdfRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjUzOlx0bnhwd2lmaV9kZWJ1Z2ZzX2luaXQoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjU0LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2NTg6LyogTW9kdWxlIGV4aXQ6IHJlbW92ZSBkZWJ1Z2ZzIGlmIGVuYWJsZWQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY1OS1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjYyLSNpZmRlZiBDT05GSUdfREVCVUdfRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjYzOlx0bnhwd2lmaV9kZWJ1Z2ZzX3JlbW92ZSgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjQtI2VuZGlmXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oPTE0MTc9dm9pZCBueHB3aWZpX2RldmR1bXBfdG1vX2Z1bmModW5zaWduZWQgbG9uZyBmdW5jdGlvbl9jb250ZXh0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmgtMTQxOS0jaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyMDp2b2lkIG54cHdpZmlfZGVidWdmc19pbml0KHZvaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oOjE0MjE6dm9pZCBueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKHZvaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oLTE0MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyMzp2b2lkIG54cHdpZmlfZGV2X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaDoxNDI0OnZvaWQgbnhwd2lmaV9kZXZfZGVidWdmc19yZW1vdmUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmgtMTQyNS0jZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5MTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVHJvdWJsZXNob290aW5nIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gdGVzdCB0aGlzIFNESU8gZHJpdmVyLCBhbmQgSSYjMzk7bSBoaXR0aW5nIGEgd2FsbC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byB1c2UgdGhlIGRlYnVnZnMgaW50ZXJmYWNlLCBidXQgdGhhdCBvbmx5IGFsbG93cyBmb3IgYmFzaWMgcmVnaXN0ZXIgYW5kIG1lbW9yeSBtYW5pcHVsYXRpb24g4oCTIG5vdCBkaXJlY3QgZXZlbnQgaW5qZWN0aW9uLCB3aGljaCBJIG5lZWQgZm9yIHByb3BlciB0ZXN0aW5nLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcm9hZGJsb2NrLgoKVGhlbiBpdCBoaXQgbWU6IHRoaXMgaXMgYW4gU0RJTyBkcml2ZXIsIGFuZCBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgU0RJTyBlbXVsYXRvcnMgcmVhZGlseSBhdmFpbGFibGUuIElmIEkmIzM5O20gd29ya2luZyB3aXRoaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gZW11bGF0ZSB0aGUgU0RJTyBidXMsIHRoZW4gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cy4gVGhhdCYjMzk7cyBhIHNlcmlvdXMgcHJvYmxlbSBmb3IgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZS4KClNvLCBmaXJzdCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBNYXliZSBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLiBJcyB0aGVyZSBzb21lIHNvcnQgb2YgdmlydHVhbCBTRElPIGltcGxlbWVudGF0aW9uIEkgaGF2ZW4mIzM5O3QgY29tZSBhY3Jvc3M/IE9yIGRvZXMgU3l6a2FsbGVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIG9mZmVyIGEgYmFja2Rvb3IgbWV0aG9kIGZvciBTRElPIGluamVjdGlvbiB0aGF0IEkgaGF2ZW4mIzM5O3QgdXNlZCB5ZXQ/CgpOb3BlLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhbiBTRElPIGVtdWxhdG9yLiBJdCYjMzk7cyBnb3QgVVNCIHZpYSBkdW1teV9oY2QsIFBDSSB2aWEgUUVNVSwgYW5kIG90aGVyIGVtdWxhdGVkIGJ1c2VzLCBidXQgbm90IFNESU8uIERhbW4uIFRoaXMgaXMgYSBjcnVjaWFsIGdhcCBpbiBvdXIgdGVzdCBpbmZyYXN0cnVjdHVyZS4KCkFscmlnaHQsIHdoYXQgYWJvdXQgYSBoYXJkd2FyZSBzaW11bGF0aW9uPyBJJiMzOTttIHRyeWluZyB0byBmaW5kIGFuIGVxdWl2YWxlbnQgdG8gYG1hYzgwMjExX2h3c2ltYCBmb3IgU0RJTy4gSXMgdGhlcmUgYSBzaW1pbGFyIGRyaXZlciB0aGF0IHNpbXVsYXRlcyBTRElPIGhhcmR3YXJlPyBUaGUgYW5zd2VyIGlzIG5vLiBUaGlzIGlzIGdvaW5nIHRvIG1ha2UgdGVzdGluZyBxdWl0ZSBkaWZmaWN1bHQuCgpNYXliZSBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgdGhlIHdyb25nIHdheS4gT2theSwgbGV0JiMzOTtzIGJhY2sgdXAgYW5kIGNoZWNrIGRyaXZlcnMgZm9yIGFsdGVybmF0ZSBidXNlcy4gSSYjMzk7bGwgZ28gdGhyb3VnaCB0aGUgd2lyZWxlc3MgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkgYWdhaW4uIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgc2VlIGlmIEkgY2FuIGZpbmQgYW4gYWx0ZXJuYXRlIHNvbHV0aW9uIEkmIzM5O3ZlIG1pc3NlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7MTFhYy5jJiMzNDssCiAgICAmIzM0OzExYWMuaCYjMzQ7LAogICAgJiMzNDsxMWF4LmMmIzM0OywKICAgICYjMzQ7MTFheC5oJiMzNDssCiAgICAmIzM0OzExaC5jJiMzNDssCiAgICAmIzM0OzExbi5jJiMzNDssCiAgICAmIzM0OzExbi5oJiMzNDssCiAgICAmIzM0OzExbl9hZ2dyLmMmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuaCYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmMmIzM0OywKICAgICYjMzQ7MTFuX3J4cmVvcmRlci5oJiMzNDssCiAgICAmIzM0O2NmZy5oJiMzNDssCiAgICAmIzM0O2NmZzgwMjExLmMmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuaCYjMzQ7LAogICAgJiMzNDtjZnAuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZXRodG9vbC5jJiMzNDssCiAgICAmIzM0O2Z3LmgmIzM0OywKICAgICYjMzQ7aWUuYyYjMzQ7LAogICAgJiMzNDtpbml0LmMmIzM0OywKICAgICYjMzQ7am9pbi5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttYWluLmgmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c3RhX2NmZy5jJiMzNDssCiAgICAmIzM0O3N0YV9jbWQuYyYjMzQ7LAogICAgJiMzNDtzdGFfZXZlbnQuYyYjMzQ7LAogICAgJiMzNDtzdGFfcnguYyYjMzQ7LAogICAgJiMzNDtzdGFfdHguYyYjMzQ7LAogICAgJiMzNDt0eHJ4LmMmIzM0OywKICAgICYjMzQ7dWFwX2NtZC5jJiMzNDssCiAgICAmIzM0O3VhcF9ldmVudC5jJiMzNDssCiAgICAmIzM0O3VhcF90eHJ4LmMmIzM0OywKICAgICYjMzQ7dXRpbC5jJiMzNDssCiAgICAmIzM0O3V0aWwuaCYjMzQ7LAogICAgJiMzNDt3bW0uYyYjMzQ7LAogICAgJiMzNDt3bW0uaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODU0CgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDY5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IE5YUCBJVzYxeCBTRElPIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYW5kIHRoZSBrZXkgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCYjMzk7cyBhbGwgYWJvdXQgYHNkaW8uY2AuIE5vIG1lbnRpb25zIG9mIFVTQiBvciBQQ0llLCBwdXJlbHkgU0RJTy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZyBpbiBteSBtaW5kIGJlY2F1c2Ugc3l6a2FsbGVyJiMzOTtzIHByZXR0eSBsaW1pdGVkIHdoZW4gaXQgY29tZXMgdG8gZW11bGF0aW5nIHNwZWNpYWxpemVkIGhhcmR3YXJlLiBJbiBmYWN0LCBJJiMzOTttIHByZXR0eSBzdXJlIHN5emthbGxlciAqY2FuJiMzOTt0KiBlbXVsYXRlIFNESU8gZGV2aWNlcyBhdCBhbGwuIFNvLCBpZiB0aGlzIGlzIHB1cmVseSBhbiBTRElPIGRyaXZlciwgdGhlIGNvZGUmIzM5O3MgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgYW5kIHRoYXQmIzM5O3MgdXN1YWxseSBhICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgc2NlbmFyaW8uCgpCdXQgd2FpdCwgaG9sZCBvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gTGV0IG1lIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBDb3VsZCB0aGlzIHBhdGNoIGJlIHRlc3Rpbmcgc29tZXRoaW5nIHRoYXQgd2FzIHN1Ym1pdHRlZCBhcyBhIHBhdGNoLCBpbnRlbmRlZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmU/IFRoYXQgaGFwcGVucyBvZnRlbi4gVGhlIGluc3RydWN0aW9ucyBzdGF0ZSBjbGVhcmx5OiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFNwZWNpZmljYWxseSwgdGhlIGluc3RydWN0aW9ucyBjYWxsIG91dCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgbGlrZSBQQ0llIGNhcmRzLiBUaGF0JiMzOTtzIGEgZ29vZCBjb21wYXJpc29uLgoKVGhpcyBkcml2ZXIsIGBueHB3aWZpYCwgaXMgdmVuZG9yLXNwZWNpZmljIHRvIHRoZSBOWFAgSVc2MXggY2hpcHNldC4gQW5kIGl0JiMzOTtzIFNESU8tYmFzZWQuIEkga25vdyB0aGVyZSYjMzk7cyBubyBTRElPIGVtdWxhdGlvbiBpbiBRRU1VLiBRRU1VIGRvZXMgaGF2ZSBgc2RoY2ktcGNpYCwgd2hpY2ggaXMgYW4gU0QgaG9zdCBjb250cm9sbGVyLCBidXQgdGhhdCYjMzk7cyBmb3IgU0QgY2FyZHMgKGJsb2NrIGRldmljZXMpLCBub3QgU0RJTyBkZXZpY2VzIGxpa2UgV2ktRmkgY2FyZHMuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IG5vIGRpY2UhIFFFTVUganVzdCBkb2VzbiYjMzk7dCBzdXBwb3J0IHBsdWdnaW5nIGluIGEgdmlydHVhbCBTRElPIFdpLUZpIGNhcmQgdG8gYSB2aXJ0dWFsIGhvc3QgY29udHJvbGxlci4gRXZlbiBpZiBpdCBkaWQsIHRoZXJlJiMzOTtzIG5vIHdheSBmb3Igc3l6a2FsbGVyIHRvIGluamVjdCBTRElPIHBhY2tldHMgb3IgZW11bGF0ZSB0aGUgV2ktRmkgY2FyZCBpdHNlbGYuIEl0JiMzOTtzIGEgZGVhZCBlbmQuCgpJJiMzOTttIHN0YXJ0aW5nIHRvIGJ1aWxkIGEgc29saWQgY2FzZSwgbGV0IG1lIG1ha2UgaXQgd2F0ZXItdGlnaHQuIEkmIzM5O20gbW9kaWZ5aW5nIGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgIGluIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhICp2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyKiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBOWFAgSVc2MXguIEl0IGlzIGJhc2VkIG9uIHRoZSBTRElPIGJ1cyBiZWNhdXNlIHRoZXJlJiMzOTtzIGBzZGlvLmNgIGludm9sdmVkLiBTaW5jZSB0aGVyZSYjMzk7cyBubyB3YXkgdG8gZW11bGF0ZSBTRElPIFdpLUZpIGRldmljZXMgaW4gUUVNVSBvciBzeXprYWxsZXIsIHRoaXMgY29kZSBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGFueSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQgaXMgbm90IHdvcnRoIGZ1enppbmcuCgpMZXQgbWUgZG91YmxlIGNoZWNrIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYSBjaGFpbjogYG54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY2AgaXMgY2FsbGVkIGZyb20gYG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYG54cHdpZmlfaGFuZGxlX2V2ZW50c2AsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBueHB3aWZpX21haW5fcHJvY2Vzc2AsIHdoaWNoIHJ1bnMgaW4gYSB3b3JrcXVldWUuIFRoaXMgd29ya3F1ZXVlIGlzIHNjaGVkdWxlZCB3aGVuIGFuIGludGVycnVwdCBpcyByZWNlaXZlZCBmcm9tIHRoZSAqU0RJTyBkZXZpY2UqLiBXaXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgU0RJTyBkZXZpY2UsIHRoZSBkcml2ZXIgZG9lc24mIzM5O3QgZXZlbiBwcm9iZSwgdGhlIHdvcmtxdWV1ZSBpcyBuZXZlciBzZXQgdXAsIGFuZCB0aGlzIGVudGlyZSBwYXRoIGlzIG5ldmVyIGV4ZWN1dGVkLiBJdCYjMzk7cyBhbGwgZGVwZW5kZW50IG9uIHRoZSBTRElPIGJ1cy4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50LiBUaGlzIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwLiBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBueHB3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgTlhQIElXNjF4IGNoaXBzZXRzLiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIFNESU8gYnVzICh2aWEgYENPTkZJR19OWFBXSUZJX1NESU9gKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBTRElPIFdpRmkgZGV2aWNlcyBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciAodW5saWtlIFVTQiB2aWEgZHVtbXlfaGNkIG9yIG1hYzgwMjExIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBueHB3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgTlhQIElXNjF4IGNoaXBzZXRzLiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIFNESU8gYnVzICh2aWEgYENPTkZJR19OWFBXSUZJX1NESU9gKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBTRElPIFdpRmkgZGV2aWNlcyBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciAodW5saWtlIFVTQiB2aWEgZHVtbXlfaGNkIG9yIG1hYzgwMjExIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjE3LjAwNjg1NDUzOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4OTY2NDA1ODEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBueHB3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgTlhQIElXNjF4IGNoaXBzZXRzLiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIFNESU8gYnVzICh2aWEgYENPTkZJR19OWFBXSUZJX1NESU9gKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBTRElPIFdpRmkgZGV2aWNlcyBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciAodW5saWtlIFVTQiB2aWEgZHVtbXlfaGNkIG9yIG1hYzgwMjExIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTY6MTcuMDA2ODY1ODI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI1MDkyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZjE1NWRhN2Q0NThjOTk5NTliN2NlMjAxMDAzMmE5ZmY1NzNiNmVmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDMwIDE0OjU2OjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNcXG5pbmRleCBlZDhlMjRhZTljMGE3Li45ZjcxN2EzZDdlYzVkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNcXG5AQCAtMTA3LDExICsxMDcsMjkgQEAgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuIFxcdFxcdFxcdGxlbiA9IEVUSF9BTEVOO1xcbiBcXG4gXFx0XFx0aWYgKGxlbiAhPSAtMSkge1xcbitcXHRcXHRcXHR1MTYgZXZ0X2xlbiA9IGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pO1xcbitcXG4gXFx0XFx0XFx0c2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXMgPSBcXHUwMDI2ZXZlbnQtXFx1MDAzZWRhdGFbbGVuXTtcXG4gXFx0XFx0XFx0bGVuID0gKHU4ICopc2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXMgLVxcbiBcXHRcXHRcXHQgICAgICAodTggKilcXHUwMDI2ZXZlbnQtXFx1MDAzZWZyYW1lX2NvbnRyb2w7XFxuLVxcdFxcdFxcdHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9XFxuLVxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pIC0gKHUxNilsZW47XFxuK1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBldmVudC1cXHUwMDNlbGVuIGlzIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmVcXG4rXFx0XFx0XFx0ICogYW5kIGlzIG5vdCBvdGhlcndpc2UgdmFsaWRhdGVkLiBSZWplY3QgYSBsZW5ndGhcXG4rXFx0XFx0XFx0ICogdGhhdCB1bmRlcmZsb3dzIHRoZSBoZWFkZXIgb3IgdGhhdCB3b3VsZCBwbGFjZVxcbitcXHRcXHRcXHQgKiB0aGUgYXNzb2NpYXRpb24gcmVxdWVzdCBJRXMgb3V0c2lkZSB0aGUgZml4ZWRcXG4rXFx0XFx0XFx0ICogZXZlbnRfYm9keVtdIGJ1ZmZlci5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdGlmIChldnRfbGVuIFxcdTAwM2MgbGVuIHx8XFxuK1xcdFxcdFxcdCAgICAodTggKilcXHUwMDI2ZXZlbnQtXFx1MDAzZWZyYW1lX2NvbnRyb2wgKyBldnRfbGVuIFxcdTAwM2VcXG4rXFx0XFx0XFx0ICAgIGFkYXB0ZXItXFx1MDAzZWV2ZW50X2JvZHkgKyBNQVhfRVZFTlRfU0laRSkge1xcbitcXHRcXHRcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJpbnZhbGlkIFNUQSBhc3NvYyBldmVudCBsZW5ndGhcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRrZnJlZShzaW5mbyk7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llc19sZW4gPSBldnRfbGVuIC0gKHUxNilsZW47XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRjZmc4MDIxMV9uZXdfc3RhKHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ciwgZXZlbnQtXFx1MDAzZXN0YV9hZGRyLCBzaW5mbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTY6MTcuNDM5OTYwODMxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjg5MjMwOTQyNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYG54cHdpZmlgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIGZvciBOWFAgSVc2MXggY2hpcHNldHMuIFRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgU0RJTyBidXMgKHZpYSBgQ09ORklHX05YUFdJRklfU0RJT2ApLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIFNESU8gV2lGaSBkZXZpY2VzIGluIHN0YW5kYXJkIFFFTVUgb3Igc3l6a2FsbGVyICh1bmxpa2UgVVNCIHZpYSBkdW1teV9oY2Qgb3IgbWFjODAyMTEgdmlhIG1hYzgwMjExX2h3c2ltKSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiZjE1NWRhN2Q0NThjOTk5NTliN2NlMjAxMDAzMmE5ZmY1NzNiNmVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMTQ6NTY6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jXG5pbmRleCBlZDhlMjRhZTljMGE3Li45ZjcxN2EzZDdlYzVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jXG5AQCAtMTA3LDExICsxMDcsMjkgQEAgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG4gXHRcdFx0bGVuID0gRVRIX0FMRU47XG4gXG4gXHRcdGlmIChsZW4gIT0gLTEpIHtcbitcdFx0XHR1MTYgZXZ0X2xlbiA9IGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbik7XG4rXG4gXHRcdFx0c2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyA9IFx1MDAyNmV2ZW50LVx1MDAzZWRhdGFbbGVuXTtcbiBcdFx0XHRsZW4gPSAodTggKilzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzIC1cbiBcdFx0XHQgICAgICAodTggKilcdTAwMjZldmVudC1cdTAwM2VmcmFtZV9jb250cm9sO1xuLVx0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXNfbGVuID1cbi1cdFx0XHRcdGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgLSAodTE2KWxlbjtcbitcbitcdFx0XHQvKlxuK1x0XHRcdCAqIGV2ZW50LVx1MDAzZWxlbiBpcyByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlXG4rXHRcdFx0ICogYW5kIGlzIG5vdCBvdGhlcndpc2UgdmFsaWRhdGVkLiBSZWplY3QgYSBsZW5ndGhcbitcdFx0XHQgKiB0aGF0IHVuZGVyZmxvd3MgdGhlIGhlYWRlciBvciB0aGF0IHdvdWxkIHBsYWNlXG4rXHRcdFx0ICogdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzIG91dHNpZGUgdGhlIGZpeGVkXG4rXHRcdFx0ICogZXZlbnRfYm9keVtdIGJ1ZmZlci5cbitcdFx0XHQgKi9cbitcdFx0XHRpZiAoZXZ0X2xlbiBcdTAwM2MgbGVuIHx8XG4rXHRcdFx0ICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2wgKyBldnRfbGVuIFx1MDAzZVxuK1x0XHRcdCAgICBhZGFwdGVyLVx1MDAzZWV2ZW50X2JvZHkgKyBNQVhfRVZFTlRfU0laRSkge1xuK1x0XHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG4rXHRcdFx0XHRcdCAgICBcImludmFsaWQgU1RBIGFzc29jIGV2ZW50IGxlbmd0aFxcblwiKTtcbitcdFx0XHRcdGtmcmVlKHNpbmZvKTtcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdH1cbitcbitcdFx0XHRzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9IGV2dF9sZW4gLSAodTE2KWxlbjtcbiBcdFx0fVxuIFx0fVxuIFx0Y2ZnODAyMTFfbmV3X3N0YShwcml2LVx1MDAzZW5ldGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLCBldmVudC1cdTAwM2VzdGFfYWRkciwgc2luZm8sXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NjoxNy40Mzk5NjE3NjFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzEzOTMyMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNgLiBMb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGluIGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJcyB0aGlzIGEgZHJpdmVyIGZvciBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZWFzaWx5IGVtdWxhdGVkLCBvciBhbSBJIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGRldmljZSB0aGF0IHdpbGwgcmVxdWlyZSBtb3JlIGNvbXBsZXggc2V0dXAgZm9yIHRlc3Rpbmc/IExldCBtZSBzZWUuLi4gXCJueHB3aWZpXCIuLi4gYWgsIHJpZ2h0LCBpdCdzIGFuIE5YUCBXaS1GaSBkcml2ZXIuIFRoYXQgY2xhcmlmaWVzIHRoaW5ncy4gSSBrbm93IE5YUCwgc28gSSBoYXZlIGEgYmFzaWMgdW5kZXJzdGFuZGluZyBvZiB0aGVpciB3aXJlbGVzcyBvZmZlcmluZ3MuXG5cbk5vdywgSSBuZWVkIG1vcmUgc3BlY2lmaWNzLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5IHRvIGdldCBhIGJldHRlciBmZWVsLiBNeSBuZXh0IHN0ZXAgaXMgdG8gdXNlIGBncmVwcGVyYCB0byBkZXRlcm1pbmUgdGhlIHVuZGVybHlpbmcgYnVzIGFyY2hpdGVjdHVyZS4gS25vd2luZyB0aGUgYnVzIOKAkyBpcyBpdCBTRElPLCBQQ0llLCBVU0IsIGV0Yy4g4oCTIHdpbGwgc2lnbmlmaWNhbnRseSBpbmZvcm0gbXkgZGVidWdnaW5nIGFuZCB0ZXN0aW5nIHN0cmF0ZWd5IGRvd24gdGhlIHJvYWQuIFRoaXMgd2lsbCBoZWxwIG1lIGRldGVybWluZSB0aGUgYmVzdCB3YXkgdG8gZ2V0IHRoaXMgcGF0Y2ggdGVzdGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gb3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzc0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTY6MjIuMTUzODk2Njc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTgzNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTUxNjAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM6ICogbnhwd2lmaSA4MDIuMTFhYyBoZWxwZXJzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQtICogQ29weXJpZ2h0IDIwMTEtMjAyNCBOWFBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz0zNj1zdGF0aWMgdTE2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM3Om54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0zOC1cXHRcXHRcXHRcXHQgIHUxNiBiYW5kcywgdTE2IG1jc19tYXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDItXFx0dTMyIHVzcl92aHRfY2FwX2luZm8gPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo0MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9Nzk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6ODA6bnhwd2lmaV9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04MS1cXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgzOlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz05Mz12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk0Om54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05NS1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6OTc6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk4LVxcdHUxNiBtY3NfbWFwX3VzZXIsIG1jc19tYXBfcmVzcCwgbWNzX21hcF9yZXN1bHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAxLVxcdC8qIEZpbGwgVkhUIGNhcGFiaWxpdHkgaW5mby4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTAyOlxcdG54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxMjQ6XFx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyNS1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy5yeF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE0NjpcXHR0bXAgPSBueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ3LVxcdHZodF9jYXAtXFx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUwOmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUxOlxcdFxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NDpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKnZodF9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19vcGVyX21vZGVfbnRmICpvcGVyX250ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTU2LVxcdHN0cnVjdCBpZWVlX3R5cGVzX29wZXJfbW9kZV9udGYgKmllZWVfb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqdmh0X29wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTg6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1OS1cXHR1OCBzdXBwX2Nod2Rfc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE2OS1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfY2FwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3MDpcXHRcXHR2aHRfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodGNhcCAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3MS1cXHRcXHRtZW1zZXQodmh0X2NhcCwgMCwgc2l6ZW9mKCp2aHRfY2FwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc0LVxcdFxcdFxcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc1OlxcdFxcdG1lbWNweSgodTggKil2aHRfY2FwICsgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3Ni1cXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc5OlxcdFxcdG54cHdpZmlfZmlsbF92aHRfY2FwX3Rsdihwcml2LCBcXHUwMDI2dmh0X2NhcC1cXHUwMDNldmh0X2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTgwLVxcdFxcdFxcdFxcdFxcdCBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4Ny1cXHRcXHRpZiAocHJpdi1cXHUwMDNlYnNzX21vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxODg6XFx0XFx0XFx0dmh0X29wID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodF9vcGVyICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg5LVxcdFxcdFxcdG1lbXNldCh2aHRfb3AsIDAsIHNpemVvZigqdmh0X29wKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTkyLVxcdFxcdFxcdHZodF9vcC1cXHUwMDNlaGVhZGVyLmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YoKnZodF9vcCkgLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTM6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTQtXFx0XFx0XFx0bWVtY3B5KCh1OCAqKXZodF9vcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5NTpcXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk2LVxcdFxcdFxcdCAgICAgICAodTggKilic3NfZGVzYy1cXHUwMDNlYmNuX3ZodF9vcGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ1OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDYtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNDc6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYWNfdmh0X2NmZyAqY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI2NC0vKiBJbml0aWFsaXplIEJsb2NrQWNrIHBhcmFtZXRlcnMgZm9yIDExYWMuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI2NTp2b2lkIG54cHdpZmlfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozOiAqIG54cHdpZmk6IDgwMi4xMWFjIChWSFQpIGRlZmluaXRpb25zXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaD0xND1lbnVtIHZodF9jZmdfbWlzY19jb25maWcge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNTppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI2OlxcdFxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNy1cXHRcXHRcXHRcXHR1OCAqKmJ1ZmZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI4OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yOS1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMwOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMxOnZvaWQgbnhwd2lmaV9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTMyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjovKiBueHB3aWZpOiA4MDIuMTFheCAoSEUpIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMy0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyNCBOWFBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTE6dm9pZCBueHB3aWZpX3VwZGF0ZV8xMWF4X2NhcChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMi1cXHRcXHRcXHQgICAgIHN0cnVjdCBod19zcGVjX2V4dGVuc2lvbiAqaHdfaGVfY2FwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0OlxcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3OlxcdHU4IGhlYWRlcl9sZW4gPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTgtXFx0dTE2IGRhdGFfbGVuID0gbGUxNl90b19jcHUoaHdfaGVfY2FwLVxcdTAwM2VoZWFkZXIubGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMi1cXHRpZiAoKGRhdGFfbGVuICsgaGVhZGVyX2xlbikgXFx1MDAzZSBzaXplb2YoYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMzpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQtXFx0XFx0XFx0ICAgIFxcXCJod19oZV9jYXAgdG9vIGJpZywgbGVuPSVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTpcXHRoZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopaHdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNy1cXHRcXHRoZV9jYXBfMmcgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozODpcXHRcXHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcXFwiMi40RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzktXFx0XFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NS1cXHRcXHRhZGFwdGVyLVxcdTAwM2Vmd19iYW5kcyB8PSBCQU5EX0FBWDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY6XFx0XFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXFxcIjVHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00Ny1cXHRcXHRcXHRcXHQgYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3LVxcdFxcdFxcdCAgICAgICBzaXplb2YoYWRhcHRlci1cXHUwMDNlaHdfMmdfaGVfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4OlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OS1cXHRcXHRcXHRcXHRwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02My1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo2NDpcXHRcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjUtXFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl9oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjc5OmJvb2wgbnhwd2lmaV8xMWF4X2JhbmRjb25maWdfYWxsb3dlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo4MDpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy04MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk1OmludCBueHB3aWZpX2ZpbGxfaGVfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NjpcXHRcXHRcXHQgICAgc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk3LVxcdFxcdFxcdCAgICB1MTYgYmFuZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTk6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwMDpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwMS1cXHR1MTYgcnhfbnNzLCB0eF9uc3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTA4LVxcdFxcdG1lbWNweShoZV9jYXAsIHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyX2hlX2NhcF9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDk6XFx0XFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTEwLVxcdFxcdHJldF9sZW4gPSBwcml2LVxcdTAwM2V1c2VyX2hlX2NhcF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTEyLVxcdFxcdG1lbWNweShoZV9jYXAsIHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcF9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTM6XFx0XFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTE0LVxcdFxcdHJldF9sZW4gPSBwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI1LVxcdGZvciAobnNzID0gMTsgbnNzIFxcdTAwM2M9IDg7IG5zcysrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEyNjpcXHRcXHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjc6XFx0XFx0aHdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGh3X2hlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjgtXFx0XFx0aWYgKHJ4X25zcyAhPSAwIFxcdTAwMjZcXHUwMDI2IG5zcyBcXHUwMDNlIHJ4X25zcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzAtXFx0XFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTMxOlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMi1cXHRcXHRcXHRcXHRcXHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzMtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzQ6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2VyeF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTM1LVxcdFxcdFxcdFxcdFxcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzOC1cXHRmb3IgKG5zcyA9IDE7IG5zcyBcXHUwMDNjPSA4OyBuc3MrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzk6XFx0XFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQwOlxcdFxcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQxLVxcdFxcdGlmICh0eF9uc3MgIT0gMCBcXHUwMDI2XFx1MDAyNiBuc3MgXFx1MDAzZSB0eF9uc3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQzLVxcdFxcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NDpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ2LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ3OlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNldHhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0OC1cXHRcXHRcXHRcXHRcXHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYXhfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU2LVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTg6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTktXFx0aW50IHJldF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjQ6XFx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2NTpcXHRyZXRfbGVuID0gbnhwd2lmaV9maWxsX2hlX2NhcF90bHYocHJpdiwgaGVfY2FwLCBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjYtXFx0KmJ1ZmZlciArPSByZXRfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTcxOmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc2LVxcdHUxNiBjbWRfc2l6ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTc3OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg2LVxcdCAgICBheF9jZmctXFx1MDAzZWhlX2NhcF9jZmcuZXh0X2lkID09IFdMQU5fRUlEX0VYVF9IRV9DQVBBQklMSVRZKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE4NzpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopaGVfY2ZnLVxcdTAwM2V0bHY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4OC1cXHRcXHRoZWFkZXItXFx1MDAzZXR5cGUgPSBjcHVfdG9fbGUxNihheF9jZmctXFx1MDAzZWhlX2NhcF9jZmcuaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNS1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jZmcgKmhlX2NmZyA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuYXhfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDY6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICpoZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNy1cXHR1MTYgbGVmdF9sZW4sIHRsdl90eXBlLCB0bHZfbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDgtXFx0dTggZXh0X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDk6XFx0c3RydWN0IG54cHdpZmlfMTFheF9oZV9jYXBfY2ZnICpoZV9jYXAgPSBcXHUwMDI2YXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMS1cXHRsZWZ0X2xlbiA9IGxlMTZfdG9fY3B1KHJlc3AtXFx1MDAzZXNpemUpIC0gc2l6ZW9mKCpoZV9jZmcpIC0gU19EU19HRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIxMjpcXHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopaGVfY2ZnLVxcdTAwM2V0bHY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDItXFx0XFx0bGVmdF9sZW4gLT0gKHNpemVvZigqaGVhZGVyKSArIHRsdl9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNDM6XFx0XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKSgodTggKiloZWFkZXIgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNpemVvZigqaGVhZGVyKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTE6aW50IG54cHdpZmlfY21kXzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1MzpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1NTpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU2LVxcdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXFx1MDAyNmNtZC1cXHUwMDNlcGFyYW1zLmF4X2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU3LVxcdHUxNiBjbWRfc2l6ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU4OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfc3JfY21kICpzcl9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1OTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICp0bHY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MDpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICpiZWFtX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYxOlxcdHN0cnVjdCBueHB3aWZpXzExYXhfaHRjX2NtZCAqaHRjX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYyOlxcdHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICp0eG1vaV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MzpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICp0b2x0aW1lX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY0OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfdHhvcF9jbWQgKnR4b3BfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjU6XFx0c3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKnNldF9ic3JwX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY2OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKmxsZGVfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc1LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNzY6XFx0XFx0c3JfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfc3JfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc4OlxcdFxcdHRsdiA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICopaGVfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3OS1cXHRcXHR0bHYtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoc3JfY21kLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODUtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfQkVBTV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjg2OlxcdFxcdGJlYW1fY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfYmVhbV9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5MS1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9IVENfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5MjpcXHRcXHRodGNfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfaHRjX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk3LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT01JX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTg6XFx0XFx0dHhtb2lfY21kID1cXHQoc3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwMy1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9PQlNTX1RPTFRJTUVfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMwNDpcXHRcXHR0b2x0aW1lX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTAtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPUFJUU19TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzExOlxcdFxcdHR4b3BfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfdHhvcF9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxNy1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TRVRfQlNSUF9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzE4OlxcdFxcdHNldF9ic3JwX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzIzLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0xMREVfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMyNDpcXHRcXHRsbGRlX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjktXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzMwOlxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMzEtXFx0XFx0XFx0ICAgIFxcXCIlczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDE6aW50IG54cHdpZmlfcmV0XzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MzpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NTpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ2LVxcdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXFx1MDAyNnJlc3AtXFx1MDAzZXBhcmFtcy5heF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICp0bHY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNTItXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM1MzpcXHRcXHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNTQtXFx0XFx0bWVtY3B5KGF4X2NtZC1cXHUwMDNlcGFyYW0uc3JfY2ZnLnBhcmFtLm9ic3NfcGRfb2Zmc2V0Lm9mZnNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODMtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg0OlxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODUtXFx0XFx0XFx0ICAgIFxcXCIlczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozOTM6c3RhdGljIHU4IG54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEwOmJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDExOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTM6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE0OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNjpcXHRpZiAoYnNzX2Rlc2MgXFx1MDAyNlxcdTAwMjYgKCFueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChic3NfZGVzYykpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNzpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cXHRcXHRcXHQgICAgXFxcIkFQIGRvbid0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyMi1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kIFxcdTAwMjYgQkFORF9BKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMzpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNC1cXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNTpcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI2LVxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjctXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDI4OlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI5LVxcdFxcdFxcdHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMwOlxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzEtXFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM0LVxcdGlmICghKGh3X2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MzU6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzYtXFx0XFx0XFx0ICAgIFxcXCJGVyBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQwLVxcdGlmICghKHVzZXJfaGVfY2FwLVxcdTAwM2VoZV9tYWNfY2FwWzBdIFxcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0MTpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0Mi1cXHRcXHRcXHQgICAgXFxcIlVTRVIgSEVfTUFDX0NBUCBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NDk6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTE6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUyLVxcdHU4IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU2LVxcdFxcdGlmIChwcml2LVxcdTAwM2Vjb25maWdfYmFuZHMgXFx1MDAyNiBCQU5EX0FBWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDU3OlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTgtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTk6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2MC1cXHRcXHRyZXQgPSB1c2VyX2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY2OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2Ny1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY4OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MDpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDcxLVxcdHN0cnVjdCBob3N0X2NtZF90d3RfY2ZnICp0d3RfY2ZnX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy50d3RfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzI6XFx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MzpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKnR3dF90ZWFyZG93bjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc0OlxcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NTpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc2OlxcdHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICpidHd0X2FwX2NvbmZpZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc3LVxcdHU4IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDg3LVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9TRVRVUF9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDg4OlxcdFxcdHR3dF9zZXR1cCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDg5LVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDkxOlxcdFxcdG1lbXNldCh0d3Rfc2V0dXAsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkyLVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlaW1wbGljaXQgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA0LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlYmNuX21pc3NfdGhyZXNob2xkID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTA1OlxcdFxcdGNtZF9zaXplICs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNy1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfVEVBUkRPV05fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUwODpcXHRcXHR0d3RfdGVhcmRvd24gPSAoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwOS1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTAtXFx0XFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTExOlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMi1cXHRcXHR0d3RfdGVhcmRvd24tXFx1MDAzZWZsb3dfaWRlbnRpZmllciA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTE3LVxcdFxcdFxcdHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF90ZWFyZG93bi50ZWFyZG93bl9hbGxfdHd0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTg6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyMTpcXHRcXHR0d3RfcmVwb3J0ID0gKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyMzpcXHRcXHRtZW1zZXQodHd0X3JlcG9ydCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI0LVxcdFxcdHR3dF9yZXBvcnQtXFx1MDAzZXR5cGUgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9JTkZPUk1BVElPTl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI4OlxcdFxcdHR3dF9pbmZvcm1hdGlvbiA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI5LVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMC1cXHRcXHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzE6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMyLVxcdFxcdHR3dF9pbmZvcm1hdGlvbi1cXHUwMDNlZmxvd19pZGVudGlmaWVyID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzUtXFx0XFx0XFx0dHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X2luZm9ybWF0aW9uLnN1c3BlbmRfZHVyYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzNjpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM3LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzgtXFx0Y2FzZSBOWFBXSUZJXzExQVhfQlRXVF9BUF9DT05GSUdfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcXHRcXHRidHd0X2FwX2NvbmZpZyA9IChzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDAtXFx0XFx0XFx0XFx0IHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MS1cXHRcXHRtZW1zZXQoYnR3dF9hcF9jb25maWcsIDB4MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0My1cXHRcXHRidHd0X2FwX2NvbmZpZy1cXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2MjpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2NC1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NjU6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ni1cXHRcXHRcXHQgICAgXFxcIlVua25vd24gc3ViIGlkOiAlZFxcXFxuXFxcIiwgdHd0X2NmZy1cXHUwMDNlc3ViX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3NTppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzYtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3NzpcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4Ni1cXHQgICAgdHd0X2NmZy1cXHUwMDNlc3ViX2lkID09IE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4NzpcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTg4OlxcdFxcdFxcdChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopdHd0X2NmZ19jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTA6XFx0XFx0bWVtY3B5KFxcdTAwMjZ0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzogKiBueHB3aWZpOiA4MDIuMTFheCBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXFx1MDAzZVxcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcXHUwMDI2IDB4Myk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVxcdHUxNiB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXFx0XFx0XFx0ICAgIHUxNiBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzogKiBueHB3aWZpOiA4MDIuMTFoIGhlbHBlcnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoxMzp2b2lkIG54cHdpZmlfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTk6aW50IG54cHdpZmlfaXNfMTFoX2FjdGl2ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jPTI1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MjY6bnhwd2lmaV8xMWhfcHJvY2Vzc19pbmZyYV9qb2luKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjI3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6Mjk6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICppZV9oZWFkZXI7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjIyLjI0OTQ4NDM5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTc5MDM3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIG54cHdpZmkgRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgbnhwd2lmaWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHN1cHBvcnRlZCBidXMgdHlwZXMuIFRvIGRvIHRoYXQsIHRoZSBtb3N0IGxvZ2ljYWwgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gYW5kIGJ1aWxkIGZpbGVzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgYE1ha2VmaWxlYCB3aXRoaW4gdGhlIGRyaXZlcidzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGluIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlYC4gVGhlIGBLY29uZmlnYCBmaWxlIHdpbGwgbGlrZWx5IGRlZmluZSB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCByZXZlYWxpbmcgdGhlIGJ1cyBpbnRlcmZhY2VzIGl0J3MgZGVzaWduZWQgdG8gd29yayB3aXRoLCB3aGlsZSB0aGUgYE1ha2VmaWxlYCB3aWxsIGxpa2VseSBpbmNsdWRlIHRoZSBzb3VyY2UgZmlsZXMgYW5kIGxpYnJhcmllcy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBhcmNoaXRlY3RlZC4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBpbnRlcmZhY2UgYW5kIG1ha2UgdGhlIG5lY2Vzc2FyeSBhZGp1c3RtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NjoyNi4zNDczOTEzNzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNTU2ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOWFBXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBOWFBXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6MTI6Y29uZmlnIE5YUFdJRklfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk5YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjI2LjQ0ODk1NDUwM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNzg3ODg4NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZSBmb3IgdGhlc2UgY29tcG9uZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBOWFBXSUZJX1NESU9gIGFuZCBgTlhQV0lGSWAuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0OlxuXG4qICAgKipEaXJlY3QgRGVwZW5kZW5jaWVzOioqIFdoYXQgZXhhY3RseSBkb2VzIGBOWFBXSUZJX1NESU9gICpuZWVkKiBmcm9tIGBOWFBXSUZJYD8gSXMgaXQgYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSBkZXBlbmRlbmN5LCBhIGRyaXZlciwgYW4gQVBJIGNhbGwsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoZSBzcGVjaWZpYyBuYXR1cmUgb2YgdGhpcyBjb25uZWN0aW9uIGlzIGNyaXRpY2FsLlxuKiAgICoqSW5kaXJlY3QgRGVwZW5kZW5jaWVzOioqIEJleW9uZCB0aGUgZGlyZWN0IGxpbmssIGFyZSB0aGVyZSBhbnkgb3RoZXIgY29tcG9uZW50cywgbGlicmFyaWVzLCBvciBjb25maWd1cmF0aW9ucyB0aGF0ICpib3RoKiBkZXBlbmQgb24/IFRoaXMgY291bGQgcmV2ZWFsIHBvdGVudGlhbCBjb25mbGljdHMgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIEZvciBleGFtcGxlLCBhcmUgdGhlcmUgc2hhcmVkIG1lbW9yeSByZWdpb25zLCBpbnRlcnJ1cHQgYXNzaWdubWVudHMsIG9yIHNoYXJlZCBjb25maWd1cmF0aW9uIGZpbGVzIGludm9sdmVkP1xuKiAgICoqSW1wbGllZCBEZXBlbmRlbmNpZXM6KiogSSdtIGFsc28gY29uc2lkZXJpbmcgYW55IGltcGxpZWQgZGVwZW5kZW5jaWVzLiBPZnRlbiwgdGhlIG5hbWVzIHRoZW1zZWx2ZXMgcHJvdmlkZSBjbHVlcy4gSXMgYFNESU9gIHN1Z2dlc3RpbmcgYW4gU0RJTyBpbnRlcmZhY2UgZGVwZW5kZW5jeT8gRG9lcyB0aGF0IHRoZW4gcmVseSBvbiBsb3dlci1sZXZlbCBoYXJkd2FyZSBwcmltaXRpdmVzLCBvciBhIHNwZWNpZmljIGJ1cyBkcml2ZXI/IEFuZCBob3cgZG9lcyB0aGF0IGludGVyYWN0aW9uIHdvcmsgd2l0aCB0aGUgYE5YUFdJRklgIGNvbXBvbmVudCBpbiB0aGlzIGNvbnRleHQ/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc2hhcmVkIHJlc291cmNlcz9cbiogICAqKkNvbnRleHR1YWwgRGVwZW5kZW5jaWVzOioqIEhvdyBkb2VzIHRoZSBidWlsZCBzeXN0ZW0gYW5kIGNvbmZpZ3VyYXRpb24gY29tZSBpbnRvIHBsYXk/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncywgb3Igc3BlY2lmaWMgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvdXIsIGludGVyYWN0aW9ucyBvciBhdmFpbGFiaWxpdHkgb2YgYE5YUFdJRklgIHRoYXQgdGhlbiBpbXBhY3RzIGBOWFBXSUZJX1NESU9gPyBJIHdhbnQgdG8gc2VlIHRoZSBjb25maWd1cmF0aW9uLlxuKiAgICoqUG90ZW50aWFsIEJvdHRsZW5lY2tzOioqIFdoYXQgYXJlIHRoZSBwb3NzaWJsZSByaXNrcyBoZXJlPyBDb3VsZCBhIGNoYW5nZSBpbiBgTlhQV0lGSWAgaW5hZHZlcnRlbnRseSBicmVhayBgTlhQV0lGSV9TRElPYD8gQXJlIHRoZXJlIHZlcnNpb25pbmcgY29uc3RyYWludHM/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3M/XG4qICAgKipNYWludGFpbmFiaWxpdHkgYW5kIFNjYWxhYmlsaXR5OioqIEknbSBhbHNvIHRoaW5raW5nIGFoZWFkIHRvIHRoZSBtYWludGVuYW5jZSBpbXBsaWNhdGlvbnMuIElzIHRoaXMgZGVwZW5kZW5jeSBjbGVhbiwgd2VsbC1kZWZpbmVkLCBhbmQgZWFzaWx5IHVuZGVyc3Rvb2Q/IFdpbGwgaXQgc2NhbGUgd2VsbCBpZiB3ZSBuZWVkIHRvIGFkZCBtb3JlIGZlYXR1cmVzIG9yIHN1cHBvcnQgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucz9cbiogICAqKkRlYnVnZ2luZyBBcHByb2FjaDoqKiBBcyBhbiBleHBlcnQsIEknZCB0aGVuIG1hcCBvdXQgaG93IEkgd291bGQgYmVnaW4gZGVidWdnaW5nIGFueSBpc3N1ZXMgZm91bmQgYnkgYXNraW5nIHF1ZXN0aW9ucy5cblxuU28sIHRoZSBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjb2RlIGFuZCBsb29rIGF0IGhvdyB0aGVzZSBjb21wb25lbnRzIGludGVyYWN0LiBMZXQncyBzdGFydCBkaWdnaW5nIGludG8gdGhlIGluY2x1ZGVzLCBidWlsZCBjb25maWd1cmF0aW9ucywgYW5kIGFueSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZS4gVGhpcyBkZXBlbmRlbmN5IG1hcHBpbmcgd2lsbCBiZSB0aGUgZm91bmRhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIHN5c3RlbSBhbmQgYW55IHBvdGVudGlhbCBtb2RpZmljYXRpb25zIG9yIG9wdGltaXphdGlvbnMgd2UgbWlnaHQgbmVlZCB0byBtYWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTYyNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjMxLjUyNzc0ODMyOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOWFBXSUZJXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXFxuICAgNzpcXHRcXHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXFxuICAgODpcXHRcXG4gICA5OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDEwOlxcdFxcdCAgbnhwd2lmaS5cXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE5YUFdJRklfU0RJT1xcbiAgMTM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE5YUFdJRkkgXFx1MDAyNlxcdTAwMjYgTU1DXFxuICAxNTpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAxNjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgMTk6XFx0XFx0ICBJVzYxeCBpbnRlcmZhY2UuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIyOlxcdFxcdCAgbnhwd2lmaV9zZGlvLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NjozMS41Mjc4MzY1OTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5NzkxMzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG54cHdpZmlgIERyaXZlciBhbmQgU3l6a2FsbGVyJ3MgUm9sZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG54cHdpZmlgIGRyaXZlciwgYW5kIGl0J3MgYW4gU0RJTyBpbXBsZW1lbnRhdGlvbiwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJBaCwgY29vbCwgd2UgY2FuIHByb2JhYmx5IGZ1enogdGhpcyB1c2luZyBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLlwiIEJ1dCB0aGVuIEkgcmVtZW1iZXIsIHRoaXMgaXMgYSAqZnVsbG1hYyogZHJpdmVyLiBJdCBoYXMgaXRzIG93biBmaXJtd2FyZSwgYW5kIHRoZSBkZXZpY2UgZmlybXdhcmUgaXRzZWxmIGlzIHJlcG9ydGluZyB0aGUgbGVuZ3RoIHZpYSBgZXZlbnQtXHUwMDNlbGVuYC4gVGhhdCBjaGFuZ2VzIHRoaW5ncy5cblxuV2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSBTRElPIGRldmljZXMgYXMgZmFyIGFzIEkga25vdy4gSXQncyBub3QgZ29pbmcgdG8gYmUgZ2VuZXJhdGluZyBTRElPIHRyYW5zYWN0aW9ucyBkaXJlY3RseS4gQnV0LCBoYW5nIG9uLCBjb3VsZCBpdCBzdGlsbCBiZSBpbmplY3Rpbmcgc29tZXRoaW5nPyBMaWtlLCBzb21lIGZvcm0gb2YgcGFja2V0cyBvciBldmVudHMgaWYgdGhlcmUgaXMgYW4gZXhwbG9pdD8gSSBuZWVkIHRvIGNoZWNrLlxuXG5Pa2F5LCBsZXQgbWUgcmVwaHJhc2UgdGhhdC4gRG9lcyBzeXprYWxsZXIgZG8gKmFueSogU0RJTyBmdXp6aW5nIGF0IGFsbD8gTm8sIHRoYXQncyBub3QgcmlnaHQuIFN5emthbGxlciBkb2Vzbid0IGVtdWxhdGUgU0RJTyBoYXJkd2FyZS5cblxuQnV0IHdhaXQsIEkgYW0gZ2V0dGluZyBjb25mdXNlZCBoZXJlLCBJIHJlbWVtYmVyIGBtYWM4MDIxMV9od3NpbWAgZG9lcyBleGlzdCBmb3IgYG1hYzgwMjExYCBkcml2ZXJzLCBidXQgYG54cHdpZmlgIGlzIG5vdCBhIGBtYWM4MDIxMWAgZHJpdmVyLCBpdCdzIGEgYGNmZzgwMjExYCBkcml2ZXIuIFNvIGBtYWM4MDIxMV9od3NpbWAgaXMgb3V0IG9mIHRoZSBxdWVzdGlvbi5cblxuUmlnaHQuIE5vdyBJJ20gcmVhbGx5IGN1cmlvdXMsICpob3cqIGRpZCBzeXprYWxsZXIgZmluZCB0aGlzIGJ1ZyB0aGVuPyBXaGF0J3MgZ29pbmcgb24gaGVyZT9cblxuQWhhISBNYXliZSBzeXprYWxsZXIgaXMgaW5qZWN0aW5nIGV2ZW50cyBpbiBzb21lIG90aGVyIHdheS4gT3IuLi4gY291bGQgdGhpcyBiZSBhIFVTQiBkcml2ZXI/IE9yIGEgUENJZSBkcml2ZXI/IFBlcmhhcHMgdGhlcmUncyBhIGRpZmZlcmVudCB1bmRlcmx5aW5nIHRyYW5zcG9ydCBtZWNoYW5pc20gdGhhdCBzeXprYWxsZXIgKmlzKiB0YXJnZXRpbmcuIExldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhIFVTQiBvciBQQ0llIHZlcnNpb24gb2Ygbnhwd2lmaS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTE0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTY6MzYuOTQ3NjMwODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5Njc0NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOWFBXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBOWFBXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6MTI6Y29uZmlnIE5YUFdJRklfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk5YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjM3LjA0NzMxMTYyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzg1NTk5NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBlbWJlZGRlZCBzeXN0ZW1zIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuSG1tLCBzb21ldGhpbmcgc2VlbXMgb2ZmLiBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGEgd2lkZXIgcmFuZ2Ugb2YgTlhQIFdpRmkgZHJpdmVyIG9wdGlvbnMsIGJ1dCBJJ20gb25seSBwaWNraW5nIHVwIGBOWFBXSUZJYCBhbmQgYE5YUFdJRklfU0RJT2AgaW4gdGhlIGN1cnJlbnQgdmlldy4gVGhhdCBmZWVsc+KApmxpbWl0ZWQuIEkgZGVmaW5pdGVseSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBOWFAgV2lGaSBkcml2ZXIsIHNwZWNpZmljYWxseSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ2AuIFRoZXJlIGhhcyB0byBiZSBtb3JlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uLCBwZXJoYXBzIHdpdGggc29tZSBjb25kaXRpb25hbHMgdGhhdCBJJ20gbWlzc2luZy4gVGltZSB0byBkaXZlIGJhY2sgaW50byB0aGUgc291cmNlIGFuZCBtYWtlIHN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhIGtleSBkZXBlbmRlbmN5IG9yIGNvbnRleHQuIE1heWJlIHNvbWV0aGluZydzIGdhdGVkIHRoYXQgSSdtIG5vdCBzZWVpbmcgeWV0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM2MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjQzLjQzMjkxNDc5M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5YUFdJRklcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcXG4gICA3OlxcdFxcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgMTA6XFx0XFx0ICBueHB3aWZpLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTlhQV0lGSV9TRElPXFxuICAxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFxcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTlhQV0lGSSBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXFxuICAxOTpcXHRcXHQgIElXNjF4IGludGVyZmFjZS5cXG4gIDIwOlxcdFxcbiAgMjE6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgMjI6XFx0XFx0ICBueHB3aWZpX3NkaW8uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjQzLjQzMjk4NDE2M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDYzMjU4NjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIE5YUCBXaUZpIEJ1ZyBSZXBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHN5emthbGxlciByZXBvcnQsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQgaGl0IGEgYnVnIGluIGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBoYW5nIG9uLCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgdmlydHVhbCB3aWZpIGRldmljZSBpbmplY3Rpb24sIHJpZ2h0PyBMaWtlLCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAgb3IgZXZlbiBgdmlydGlvLXdpZmlgLCBidXQgdGhhdCdzIGZvciBnZW5lcmljIHRlc3RpbmcuIFRoZSBgbnhwd2lmaWAgbW9kdWxlIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgY2hpcC4gSG93IGNvdWxkIGl0IHBvc3NpYmx5IGhhdmUgZm91bmQgYSBidWcgdGhlcmU/IFxuXG5SaWdodCwgcmlnaHQuIExldCBtZSBiYWNrdHJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZS4gSXMgdGhlcmUgYSBVU0Igb3IgUENJZSB2ZXJzaW9uIG9mIHRoaXMgdGhpbmc/IEknbGwgY2hlY2sgcXVpY2tseSDigJMgbm8sIGl0J3MgU0RJTyBvbmx5LiBUaGUgbmV4dCB0aGluZyBJJ20gYXNraW5nIGlzOiBkb2VzIHN5emthbGxlciBlbXVsYXRlIFNESU8/IEkgc2hvdWxkIGtub3cgdGhpcywgYnV0IEknbSBkcmF3aW5nIGEgYmxhbmsuIE5vcGUsIGl0IGRvZXNuJ3QuIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYW4gU0RJTyBlbXVsYXRvciB0aGF0IEkga25vdyBvZi5cblxuQWxyaWdodCwgbWF5YmUgaXQgd2FzIHJlcG9ydGVkIHZpYSBQQ0k/IFRpbWUgdG8gbG9vayBpbiB0aGF0IGRpcmVjdG9yeSB0byBjaGVjay4gTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYSBQQ0llIGRyaXZlciBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvcGNpZS5jYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHdvcmsgZnJvbSB0aGVyZS4gVGhpcyBpcyBnZXR0aW5nIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkyMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjQ3Ljg5NjI0NTczOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCIxMWFjLmNcIixcbiAgICBcIjExYWMuaFwiLFxuICAgIFwiMTFheC5jXCIsXG4gICAgXCIxMWF4LmhcIixcbiAgICBcIjExaC5jXCIsXG4gICAgXCIxMW4uY1wiLFxuICAgIFwiMTFuLmhcIixcbiAgICBcIjExbl9hZ2dyLmNcIixcbiAgICBcIjExbl9hZ2dyLmhcIixcbiAgICBcIjExbl9yeHJlb3JkZXIuY1wiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5oXCIsXG4gICAgXCJjZmcuaFwiLFxuICAgIFwiY2ZnODAyMTEuY1wiLFxuICAgIFwiY2ZnODAyMTEuaFwiLFxuICAgIFwiY2ZwLmNcIixcbiAgICBcImNtZGV2dC5jXCIsXG4gICAgXCJjbWRldnQuaFwiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJldGh0b29sLmNcIixcbiAgICBcImZ3LmhcIixcbiAgICBcImllLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwiam9pbi5jXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1haW4uaFwiLFxuICAgIFwic2Nhbi5jXCIsXG4gICAgXCJzZGlvLmNcIixcbiAgICBcInNkaW8uaFwiLFxuICAgIFwic3RhX2NmZy5jXCIsXG4gICAgXCJzdGFfY21kLmNcIixcbiAgICBcInN0YV9ldmVudC5jXCIsXG4gICAgXCJzdGFfcnguY1wiLFxuICAgIFwic3RhX3R4LmNcIixcbiAgICBcInR4cnguY1wiLFxuICAgIFwidWFwX2NtZC5jXCIsXG4gICAgXCJ1YXBfZXZlbnQuY1wiLFxuICAgIFwidWFwX3R4cnguY1wiLFxuICAgIFwidXRpbC5jXCIsXG4gICAgXCJ1dGlsLmhcIixcbiAgICBcIndtbS5jXCIsXG4gICAgXCJ3bW0uaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Njo0Ny44OTYzOTkzOTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MjczNDk4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIEJ1ZyBUcmlnZ2VyZWQgYnkgU3l6a2FsbGVyKipcblxuT2theSwgc28gSSd2ZSBnb3QgYHNkaW8uY2Agb3Blbi4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQnV0IGhhbmcgb24sIHRoaXMgc2VlbXMgbGlrZSBpdCdzIGNvbm5lY3RlZCB0byBgbnhwd2lmaWAsIHdoaWNoIGlzIGEgYGNmZzgwMjExYCBkcml2ZXIsIG5vdCB0aGUgYG1hYzgwMjExYCBmcmFtZXdvcmsuIFN5emthbGxlciB1c3VhbGx5IGxldmVyYWdlcyBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaSBmdXp6aW5nLCByaWdodD8gU28sIHdoeSBhbSBJIGxvb2tpbmcgYXQgU0RJTyBhbmQgYG54cHdpZmlgIGhlcmU/XG5cblRoaXMgZG9lc24ndCBxdWl0ZSBhZGQgdXAuIEhvdyBjb3VsZCBzeXprYWxsZXIgYmUgcmVzcG9uc2libGUgZm9yIHRyaWdnZXJpbmcgc29tZXRoaW5nIGhlcmU/IEkgc3VwcG9zZSBpdCBpcyBwb3NzaWJsZSB0aGF0IHN5emthbGxlciBpcyBhYmxlIHRvIGluamVjdCBTRElPIHBhY2tldHMgYnV0IGl0IGRvZXMgbm90IGVtdWxhdGUgU0RJTy5cblxuV2FpdCBhIG1pbnV0ZS4uLiBNYXliZSBpdCdzIG5vdCBhIGRpcmVjdCBTRElPIHRyaWdnZXIsIGJ1dCBzb21ldGhpbmcgKmVsc2UqIHRoYXQncyBoYXBwZW5pbmcgd2hpY2ggdGhlbiBjYXVzZXMgYW4gaW50ZXJhY3Rpb24gd2l0aCBgbnhwd2lmaWAgYW5kICp0aGF0KiB0aGVuIGludGVyYWN0cyB3aXRoIFNESU8/IE9rYXksIHRoYXQncyBwbGF1c2libGUuIExldCdzIHNlZS4uLiBJIHNob3VsZCBjaGVjayBvdXQgYG54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY2AuIFRoYXQgZnVuY3Rpb24gc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNzM5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Njo1Mi4wNDkxMzY0ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyOTg3MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9ODI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjgzOm54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvYyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jPTQzND1zdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfZXZ0X2VudHJ5IGV2dF90YWJsZV91YXBbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ0MS1cXHR7LmV2ZW50X2NhdXNlID0gRVZFTlRfVUFQX1NUQV9BU1NPQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0NDI6XFx0IC5ldmVudF9oYW5kbGVyID0gbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00NDMtXFx0ey5ldmVudF9jYXVzZSA9IEVWRU5UX1VBUF9CU1NfU1RBUlQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjUyLjEzMjEyOTkwOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTMxMzE4NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBpbiB0aGUga25vdzpcblxuKipEZWx2aW5nIGludG8gdGhlIFVBUCBBc3NvY2lhdGlvbiBFdmVudCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhbiBldmVudCBoYW5kbGVyIGhlcmUsIHNwZWNpZmljYWxseSBmb3IgYEVWRU5UX1VBUF9TVEFfQVNTT0NgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCB0aGF0J3MgdGhlIFNUQSBhc3NvY2lhdGlvbiBldmVudCBpbiBhIFVBUCBjb250ZXh0LiBCdXQgaG93IGV4YWN0bHkgZG9lcyB0aGlzIHRoaW5nICp0cmlnZ2VyKj9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2F1c2FsIGNoYWluLiBXaGVyZSBkb2VzIHRoZSBzaWduYWwgdGhhdCBraWNrcyB0aGlzIGhhbmRsZXIgaW50byBhY3Rpb24gb3JpZ2luYXRlP1xuXG5UaGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGFzIGFsd2F5cyBpbiB0aGlzIHNpdHVhdGlvbiwgaXMgdG8gZGlnIGludG8gdGhlIGV2ZW50IHRhYmxlLCBgZXZ0X3RhYmxlX3VhcGAuIFRoYXQgdGFibGUgaXMgd2hlcmUgdGhlIGV2ZW50J3Mgc2VjcmV0cyBhcmUgaGVsZC4gSXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGV2ZW50J3MgcmVnaXN0cmF0aW9uLCB0aGUgYXNzb2NpYXRlZCB0cmlnZ2VycywgYW5kIHRoZSBhY3R1YWwgd29ya2luZ3Mgb2YgdGhpcyBwcm9jZXNzLiBJdCBuZWVkcyB0byB0ZWxsIG1lIHRoZSAqd2hlbiogYW5kICp3aHkqIHRoaXMgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ0OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjU3LjA2MzQ1MTIyOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM5NDM2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXZ0X3RhYmxlX3VhcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9NDI3PW54cHdpZmlfdWFwX2V2ZW50X3ZkbGxfaW5kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6NDM0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9ldnRfZW50cnkgZXZ0X3RhYmxlX3VhcFtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQzNS1cXHR7LmV2ZW50X2NhdXNlID0gRVZFTlRfUFNfQVdBS0UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYz00ODI9aW50IG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0ODg6XFx0Zm9yIChldnQgPSAwOyBldnQgXFx1MDAzYyBBUlJBWV9TSVpFKGV2dF90YWJsZV91YXApOyBldnQrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ4OTpcXHRcXHRpZiAoZXZlbnRjYXVzZSA9PSBldnRfdGFibGVfdWFwW2V2dF0uZXZlbnRfY2F1c2UpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0OTA6XFx0XFx0XFx0aWYgKGV2dF90YWJsZV91YXBbZXZ0XS5ldmVudF9oYW5kbGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ5MTpcXHRcXHRcXHRcXHRyZXQgPSBldnRfdGFibGVfdWFwW2V2dF0uZXZlbnRfaGFuZGxlcihwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTItXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6NDk2OlxcdGlmIChldnQgPT0gQVJSQVlfU0laRShldnRfdGFibGVfdWFwKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTctXFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVZFTlQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjU3LjE0NzQwMzUwNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM4ODQzNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFVBUCBFdmVudCBQcm9jZXNzaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnRgLiBJbW1lZGlhdGVseSwgbXkgbWluZCB6ZXJvZXMgaW4gb24gdGhlIHRyaWdnZXI6IGl0J3MgaW52b2tlZCB3aGVuZXZlciBhIG5ldHdvcmsgZXZlbnQgaXMgcmVjZWl2ZWQuIFRoYXQncyB0aGUgYmFzZWxpbmUuIFRoZSByZWFsIHF1ZXN0aW9uLCB0aGUgb25lIHRoYXQgaW1tZWRpYXRlbHkgbmVlZHMgYW4gYW5zd2VyLCBpcyAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlciBpcyBhYnNvbHV0ZWx5IGNydWNpYWwuIFdpdGhvdXQga25vd2luZyB0aGUgaW5pdGlhdGluZyBjb250ZXh0LCBJJ20gZmx5aW5nIGJsaW5kLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgY2FsbCBzdGFjayB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgYSBoaWdoZXIgbGV2ZWwsIHdoYXQgdGhlIGluaXRpYXRpbmcgc3RhdGUgaXMsIGFuZCB3aGF0IHBvc3NpYmxlIGV2ZW50IHRyaWdnZXJzIGFyZS4gSSBuZWVkIHRvIG1hcCB0aGUgZW50cnkgcG9pbnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXJzIHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gZXZlbnQgaGFuZGxpbmcgZmxvdyBhbmQgdWx0aW1hdGVseSBoZWxwIG1lIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBvcHRpbWl6YXRpb24gb3IgYnVncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyODIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NzowMS41ODYyNDk4MzNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTYyMzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jPTM2Mz1pbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYy00MTMtXFx0aWYgKHByaXYtXFx1MDAzZWJzc19yb2xlID09IE5YUFdJRklfQlNTX1JPTEVfVUFQKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jOjQxNDpcXHRcXHRyZXQgPSBueHB3aWZpX3Byb2Nlc3NfdWFwX2V2ZW50KHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jLTQxNS1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaD04ND1pbnQgbnhwd2lmaV9wcm9jZXNzX3N0YV9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaDo4NTppbnQgbnhwd2lmaV9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaC04Ni12b2lkIG54cHdpZmlfcmVzZXRfY29ubmVjdF9zdGF0ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LCB1MTYgcmVhc29uLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9ldnRfZW50cnkgZXZ0X3RhYmxlX3VhcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMtNDgxLS8qIEhhbmRsZSBBUOKAkWludGVyZmFjZSBldmVudHMgYnkgZGlzcGF0Y2hpbmcgdGhlbSB0byBldmVudOKAkXNwZWNpZmljIHJvdXRpbmVzLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ4MjppbnQgbnhwd2lmaV9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ4My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjAxLjY0OTgxODgzMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODk4OTkyOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgcXVlc3Rpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVyIG9mIGBueHB3aWZpX3Byb2Nlc3NfZXZlbnRgKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGlzLCAqd2hvKiBpcyBjYWxsaW5nIGBueHB3aWZpX3Byb2Nlc3NfZXZlbnRgPyBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBldmVudC1kcml2ZW4gc3lzdGVtLCBsaWtlbHkgd2l0aGluIGFuIE5YUCBXaS1GaSBkcml2ZXIgb3IgcmVsYXRlZCBjb21wb25lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlIGluIGVtYmVkZGVkIHN5c3RlbXMgYW5kIGRyaXZlciBkZXZlbG9wbWVudCwgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHlwaWNhbCBldmVudCBmbG93IHdpdGhpbiB0aGlzIGtpbmQgb2Ygc3lzdGVtLlxuXG5JJ2Qgc3RhcnQgYnkgbG9va2luZyBmb3IgdGhlIGVudHJ5IHBvaW50cyB0byB0aGUgV2ktRmkgc3RhY2suIFdoZXJlIGRvZXMgdGhlIGRyaXZlciByZWdpc3RlciBpdHNlbGYsIG9yIGhvdyBkb2VzIGl0IGdldCBpbml0aWFsaXplZCB3aXRoaW4gdGhlIHN5c3RlbSdzIG92ZXJhbGwgZnJhbWV3b3JrPyBJcyB0aGVyZSBhIGNvbW1vbiBldmVudCBoYW5kbGluZyBsYXllciwgcGVyaGFwcyB1c2luZyBhIG1lc3NhZ2UgcXVldWUgb3IgaW50ZXJydXB0IGhhbmRsZXJzPyBLbm93aW5nIHRoZSBoaWdoZXItbGV2ZWwgZnVuY3Rpb25zIGludm9sdmVkIGlzIGtleS5cblxuVGhlbiwgSSdkIHdhbnQgdG8gdXNlIHN0YXRpYyBhbmFseXNpcyB0b29scyBpZiBhdmFpbGFibGUuIEEgc2ltcGxlIGdyZXAsIG9yIGV2ZW4gYmV0dGVyLCBhIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2ggd2l0aGluIHRoZSBzb3VyY2UgY29kZSB3b3VsZCBiZSBteSBnby10by4gSSdtIGxvb2tpbmcgZm9yIGRpcmVjdCBmdW5jdGlvbiBjYWxscyB0byBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YCwgb2J2aW91c2x5LiBCdXQsIEknbSBhbHNvIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGluZGlyZWN0IGNhbGxlcnMg4oCTIGZ1bmN0aW9ucyB0aGF0ICpjb3VsZCogY2FsbCBpdCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zLiBBcmUgdGhlcmUgZnVuY3Rpb24gcG9pbnRlcnMsIGNhbGxiYWNrIG1lY2hhbmlzbXMsIG9yIHN0YXRlIG1hY2hpbmVzIGF0IHBsYXk/IEkgY2FuJ3QganVzdCBiZSBzYXRpc2ZpZWQgd2l0aCB0aGUgb2J2aW91cy5cblxuSWYgdGhlIGNvZGViYXNlIGlzIHN0cnVjdHVyZWQgd2VsbCwgdGhlcmUncyBsaWtlbHkgc29tZSBraW5kIG9mIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMgdGhhdCBoaW50IGF0IHRoZSBldmVudCBwcm9jZXNzaW5nIG1vZGVsLiBJJ2QgY29tYiB0aHJvdWdoIHRob3NlIHRvIHNlZSBpZiB0aGV5IHNoZWQgYW55IGxpZ2h0IG9uIGhvdyBldmVudHMgYXJlIGdlbmVyYXRlZCBhbmQgZGlzcGF0Y2hlZC4gTWF5YmUgYSBxdWljayBzZWFyY2ggZm9yIHJlbGF0ZWQga2V5d29yZHMsIGxpa2UgXCJldmVudCxcIiBcImludGVycnVwdCxcIiBcInF1ZXVlLFwiIG9yIFwiY2FsbGJhY2ssXCIgd2lsbCBnaXZlIG1lIG1vcmUgY29udGV4dC5cblxuRmluYWxseSwgaWYgc3RhdGljIGFuYWx5c2lzIGlzIGluc3VmZmljaWVudCwgSSdsbCBuZWVkIHRvIHJlc29ydCB0byBkeW5hbWljIGFuYWx5c2lzLiBUaGlzIG1lYW5zIGRlYnVnZ2luZy4gSSdkIHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZiBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YCBhbmQgc3RlcCB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrLiBUaGlzIHdvdWxkIGdpdmUgbWUgdGhlIGV4YWN0IGNhbGwgcGF0aCwgcmV2ZWFsaW5nIHRoZSBkaXJlY3QgY2FsbGVyLiBCdXQgSSBjYW4ndCBzdG9wIHRoZXJlLiBJIHdvdWxkIGludmVzdGlnYXRlIHRoZSBjYWxsZXIncyBwdXJwb3NlLCBzbyBJJ2xsIGFsc28gbG9vayBhdCB0aGUgdmFyaWFibGVzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgZXZlbnQuXG5cblRoZSBnb2FsIGlzIHRvIG5vdCBqdXN0IGlkZW50aWZ5IHRoZSBpbW1lZGlhdGUgY2FsbGVyLCBidXQgdG8gZGVlcGx5IHVuZGVyc3RhbmQgdGhlICp3aHkqIGFuZCAqaG93KiBvZiB0aGUgZXZlbnQgcHJvY2Vzc2luZy4gVWx0aW1hdGVseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBldmVudHMgdHJpZ2dlciBhbmQgYXJlIG1hbmFnZWQgd2l0aGluIHRoZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTAwMCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjA2LjU0ODgxNDEwMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY2NTk2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnhwd2lmaV9wcm9jZXNzX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYz0zMjU9dm9pZCBueHB3aWZpX2ZyZWVfY21kX2J1ZmZlcihzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmMtMzYyLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jOjM2MzppbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oPTgxPWludCBueHB3aWZpX2NvbmZpZ19zdGFydF91YXAoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaC04Mi1cXHRcXHRcXHQgICAgIHN0cnVjdCBueHB3aWZpX3VhcF9ic3NfcGFyYW0gKmJzc19jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oOjgzOmludCBueHB3aWZpX3Byb2Nlc3NfZXZlbnQoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmgtODQtaW50IG54cHdpZmlfcHJvY2Vzc19zdGFfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MjY1PXN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2V2ZW50cyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTI2OC1cXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoyNjk6XFx0XFx0bnhwd2lmaV9wcm9jZXNzX2V2ZW50KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0yNzAtXFx0XFx0cmV0dXJuIHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjA2LjY0NTQ3ODc4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMjcwMzg0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipXaGVyZSBEb2VzIGBueHB3aWZpX2hhbmRsZV9ldmVudHNgIE9yaWdpbmF0ZT8qKlxuXG5Pa2F5LCBzbyB0aGUgcXVlc3Rpb24gYmVmb3JlIG1lIGlzIGVzc2VudGlhbGx5IGFib3V0IGNhbGwgdHJhY2luZy4gV2hlcmUgaXMgdGhlIGZ1bmN0aW9uIGBueHB3aWZpX2hhbmRsZV9ldmVudHNgIGFjdHVhbGx5ICpjYWxsZWQqIGZyb20/IFRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIHVuZGVyc3RhbmRpbmcgY29udHJvbCBmbG93LCBkZWJ1Z2dpbmcsIGFuZCBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBXaUZpIGRyaXZlciBvciBhc3NvY2lhdGVkIHN5c3RlbSBjb21wb25lbnRzLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IHRoZSBlbnRyeSBwb2ludHMgdGhhdCBsZWFkIHRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIElzIGl0IHRyaWdnZXJlZCBieSBhbiBpbnRlcnJ1cHQsIGEgdGltZXIsIG9yIHNvbWUga2luZCBvZiBoaWdoZXItbGV2ZWwgQVBJIGNhbGw/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGdpdmUgbWUgY2x1ZXMgYWJvdXQgdGhlIHNjZW5hcmlvcyB0aGF0IGNhbiB0cmlnZ2VyIGV2ZW50IHByb2Nlc3NpbmcuIEtub3dpbmcgdGhlIGNhbGwgaGllcmFyY2h5IGlzIHZpdGFsIHdoZW4gZGlhZ25vc2luZyBpc3N1ZXM7IHBpbnBvaW50aW5nIHdoYXQgY2FsbHMgdGhlIGV2ZW50IGhhbmRsZXIgaXMgbGlrZSBidWlsZGluZyBhIGZhbWlseSB0cmVlLCBhbmQgdGhhdCBoZWxwcyB0byBkZXRlcm1pbmUgaG93IHRoaW5ncyBhcmUgY29ubmVjdGVkIGFuZCB3aGVyZSBhIHByb2JsZW0gbWlnaHQgc3RlbSBmcm9tLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIHJlZmVyZW5jZXMgdG8gdGhpcyBmdW5jdGlvbiBpbiB0aGUgY29kZSBiYXNlLCBpZGVhbGx5IHdpdGggYSBjb2RlIHNlYXJjaCB0b29sLiBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGUgaW5jbHVkZSBmaWxlcyBhbmQgdGhlIG1haW4gZHJpdmVyIGZpbGVzLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIHRoZSBkcml2ZXIgZmlsZXMgYXMgdGhlIGZpcnN0IHRoaW5nIHRvIGNoZWNrLiBCYXNlZCBvbiB0aGUgbmFtZSBJIG1pZ2h0IGFzc3VtZSBpdOKAmXMgYSBzdGFuZGFyZCBldmVudCBoYW5kbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjAyNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjEyLjk3MjUyMDcxNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYyMzc1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnhwd2lmaV9oYW5kbGVfZXZlbnRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MjUzPXN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2NtZF9yZXNwb25zZShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTI2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MjY1OnN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2V2ZW50cyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTM3Nj12b2lkIG54cHdpZmlfbWFpbl9wcm9jZXNzKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtNDQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzo0NDU6XFx0XFx0ZGlkX3dvcmsgfD0gbnhwd2lmaV9oYW5kbGVfZXZlbnRzKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy00NDYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjEzLjA0ODc2NDE3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTIzODU0ODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBueHB3aWZpX21haW5fcHJvY2Vzc2AgV29ya2Zsb3cqKlxuXG5Pa2F5LCBzbyBgbnhwd2lmaV9tYWluX3Byb2Nlc3NgIGlzIHRoZSAqaGVhcnQqIG9mIHRoZSBtYXR0ZXIuIEl0J3MgdGhlIGNlbnRyYWwgd29ya2VyLCB0aGUgbWFpbiB0aHJlYWQgb2YgZXhlY3V0aW9uIGZvciB3aGF0ZXZlciB0aGlzIGBueHB3aWZpYCBzeXN0ZW0gaXMuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRoZSBhYnNvbHV0ZWx5IGNydWNpYWwgb25lLCBpczogKldobyoga2lja3MgdGhpcyB0aGluZyBvZmY/IFdoZXJlIGRvZXMgdGhlIGV4ZWN1dGlvbiBmbG93ICpiZWdpbio/IFdpdGhvdXQga25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbiBvciBwcm9jZXNzLCBJJ20gZXNzZW50aWFsbHkgb3BlcmF0aW5nIGluIGEgYmxhY2sgYm94LiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXIgd2lsbCBwcm92aWRlIGEgd2VhbHRoIG9mIGluZm9ybWF0aW9uLiBJcyBpdCB0cmlnZ2VyZWQgYnkgYW4gaW50ZXJydXB0LCBhIHRpbWVyLCBhIHVzZXIgY29tbWFuZCwgYW5vdGhlciBwcm9jZXNzIGFsdG9nZXRoZXI/IFRoZSBhbnN3ZXJzIHRvIHRob3NlIHF1ZXN0aW9ucyB3aWxsIGd1aWRlIGV2ZXJ5dGhpbmcgZWxzZS4gTXkgaW1tZWRpYXRlIG5lZWQgaXMgdG8gdHJhY2UgYmFjayB0aGUgY2FsbCBzdGFjayB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgdHJpZ2dlcnMgb2YgYG54cHdpZmlfbWFpbl9wcm9jZXNzYC4gVGhhdOKAmXMgdGhlIGNyaXRpY2FsIHBpZWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU5OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjE3LjU3MjYyMzA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDg1NzU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpX21haW5fcHJvY2Vzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTM2NT1zdGF0aWMgYm9vbCBueHB3aWZpX3B1bXBfY29tbWFuZChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTM3NS0vKiBNYWluIGxvb3A6IElSUS9SWC9DTUQvRVZFTlQ7IHdha2UgY2FyZDsgVFg7IFBTIG51bGw7IGV4aXQgaWYgaWRsZS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6Mzc2OnZvaWQgbnhwd2lmaV9tYWluX3Byb2Nlc3Moc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMzc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xMzAyPXN0YXRpYyB2b2lkIG54cHdpZmlfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTMxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTMxMjovKiBNYWluIHdvcms6IHJ1biBueHB3aWZpX21haW5fcHJvY2VzcygpLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xMzEzLXN0YXRpYyB2b2lkIG54cHdpZmlfbWFpbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xMzE5LVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTMyMDpcXHRueHB3aWZpX21haW5fcHJvY2VzcyhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTMyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg9MTMxNz1pbnQgbnhwd2lmaV9zZXRfdHhfcG93ZXIoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xMzE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaDoxMzIwOnZvaWQgbnhwd2lmaV9tYWluX3Byb2Nlc3Moc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oLTEzMjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjE3LjYzNzQ4NTk3OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQ4MDE2MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIFN5emthbGxlciBJbnRlcmFjdGlvbiB3aXRoIHRoZSBueHB3aWZpIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbnhwd2lmaSBkcml2ZXIgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHN5emthbGxlci4gVGhlIGNvcmUgaWRlYSBpcyB0aGF0IHRoZSBkcml2ZXIgcmVsaWVzIG9uIGEgd29ya3F1ZXVlIGZvciBoYW5kbGluZyBoYXJkd2FyZSBldmVudHMsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlLiBIb3dldmVyLCB0aGUgZHJpdmVyJ3MgYXNzb2NpYXRpb24gd2l0aCBTRElPIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGNyaXRpY2FsIHF1ZXN0aW9uOiBob3cgKnByZWNpc2VseSogZG9lcyBzeXprYWxsZXIgdHJpZ2dlciB0aGlzPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgU0RJTyBkcml2ZXJzIGNhbiBiZSB0cmlja3kgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIG9mdGVuIHJlcXVpcmluZyBzcGVjaWZpYyBlbXVsYXRpb24gb3IgYWx0ZXJuYXRpdmUgaW50ZXJmYWNlcy5cblxuVGhlcmVmb3JlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGUgcHJlc2VuY2Ugb2YgYW4gU0RJTyBlbXVsYXRvciB3aXRoaW4gc3l6a2FsbGVyJ3MgY2FwYWJpbGl0aWVzLiBPciBtYXliZSB0aGlzIGlzbid0IGV4Y2x1c2l2ZWx5IGFuIFNESU8gZHJpdmVyPyBDb3VsZCB0aGVyZSBiZSBVU0Igb3IgUENJZSB2YXJpYW50cyBvZiB0aGUgbnhwd2lmaSBkcml2ZXIgYXMgd2VsbD9cblxuV2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGdldCBiYWNrIGluIGZvY3VzLiBJIG9ubHkgcmVtZW1iZXIgc2VlaW5nIGBOWFBXSUZJX1NESU9gIGluIHRoZSBLY29uZmlnIGZpbGUsIHNvIEkgcHJvYmFibHkgbmVlZCB0byByZS1leGFtaW5lIHRoZSBmaWxlIHBhdGhzLiBJIGhhdmUgdG8gdmVyaWZ5IHRoYXQgVVNCIG9yIFBDSWUgdmVyc2lvbnMgb2YgdGhpcyBkcml2ZXIgZXZlbiAqZXhpc3QqIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczODcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6MjIuMTg1NTA1Nzc0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM2Njk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2Njc6bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjgtbW9kdWxlX2V4aXQobnhwd2lmaV9jbGVhbnVwX21vZHVsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjIyLjI0ODg3OTY0M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc5NDg1NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbnhwd2lmaV9pbml0X21vZHVsZWAqKlxuXG5Pa2F5LCBzbyBgbnhwd2lmaV9pbml0X21vZHVsZWAgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiBgbWFpbi5jYC4gVGhhdCdzIGEgYml0IHVuZXhwZWN0ZWQ7IEkgdXN1YWxseSBleHBlY3QgbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGJlIG1vcmUgbW9kdWxhci4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCdzIGdvaW5nIG9uIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIElzIGl0IGp1c3QgcmVnaXN0ZXJpbmcgYSBkcml2ZXIsIG9yIGlzIGl0IHNldHRpbmcgdXAgaGFyZHdhcmUsIGluaXRpYWxpemluZyBkYXRhIHN0cnVjdHVyZXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBHaXZlbiBpdHMgbmFtZSwgSSdkICpndWVzcyogaXQncyBXaUZpLXJlbGF0ZWQsIGJ1dCBJIHNob3VsZG4ndCBqdW1wIHRvIGFueSBjb25jbHVzaW9ucy4gTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY2FsbHMgdG8gcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgdXNlZnVsIHRvIGtub3cuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgc3RlcHMgdGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3RhcnR1cCBwcm9jZXNzLiBVbmRlcnN0YW5kaW5nIHRoYXQgd2lsbCBiZSBrZXkgdG8gd29ya2luZyB3aXRoIHRoaXMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5NDksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NzoyNS45MjgzNjcyNzNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjUwOlxcdG54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcXG4xNjUxOlxcdHtcXG4xNjUyOlxcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG4xNjUzOlxcdFxcdG54cHdpZmlfZGVidWdmc19pbml0KCk7XFxuMTY1NDpcXHQjZW5kaWZcXG4xNjU1OlxcdFxcdHJldHVybiAwO1xcbjE2NTY6XFx0fVxcbjE2NTc6XFx0XFxuMTY1ODpcXHQvKiBNb2R1bGUgZXhpdDogcmVtb3ZlIGRlYnVnZnMgaWYgZW5hYmxlZC4gKi9cXG4xNjU5OlxcdHN0YXRpYyB2b2lkXFxuMTY2MDpcXHRueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuMTY2MTpcXHR7XFxuMTY2MjpcXHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuMTY2MzpcXHRcXHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XFxuMTY2NDpcXHQjZW5kaWZcXG4xNjY1OlxcdH1cXG4xNjY2OlxcdFxcbjE2Njc6XFx0bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuMTY2ODpcXHRtb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcXG4xNjY5OlxcdFxcbjE2NzA6XFx0TU9EVUxFX0FVVEhPUihcXFwiTlhQIEludGVybmF0aW9uYWwgTHRkLlxcXCIpO1xcbjE2NzE6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJOWFAgV2lGaSBEcml2ZXIgdmVyc2lvbiBcXFwiIFZFUlNJT04pO1xcbjE2NzI6XFx0TU9EVUxFX1ZFUlNJT04oVkVSU0lPTik7XFxuMTY3MzpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjI1LjkyODQ3MjQ5M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU5NzgxMjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gdGhlIFNESU8gRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYG1haW4uY2AgaXMganVzdCBzZXR0aW5nIHVwIGRlYnVnZnMsIHdoaWNoIGlzIGV4cGVjdGVkLiBCdXQgd2hlcmUncyB0aGUgYWN0dWFsIGJ1cyBkcml2ZXIgZm9yIHRoZSBTRElPIGludGVyZmFjZT8gSSBuZWVkIHRvIGZpbmQgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24uIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgaXMgYHNkaW8uY2AuIEhvcGVmdWxseSwgaXQncyB0aGVyZS4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGNvcmUgU0RJTyBmdW5jdGlvbmFsaXR5IHJlc2lkZXMuIFRpbWUgdG8gZGl2ZSBpbiBhbmQgc2VlIHdoYXQgYHNkaW8uY2AgaGFzIHRvIG9mZmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODU0MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6MjkuMDg4MjU3MTcxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzQ5NjQwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NzoyOS4xNTE3NjMyMloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM3MTEzNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTRElPIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IFNESU8gZHJpdmVyIHJlZ2lzdHJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgcGxhY2UgSSBhbHdheXMgc3RhcnQsIGlzIHRoZSBjb3JlIG9mIHRoZSBkcml2ZXI6IGBzZGlvLmNgLiBUaGF0IGZpbGUgaXMgdGhlIGNlbnRyYWwgaHViIGZvciB0aGUgU0RJTyBzdWJzeXN0ZW0uIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgbG9jYXRlIHRoZSBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgIGZ1bmN0aW9uLCBhcyB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXIncyBpbnRlcmZhY2UgdG8gdGhlIGNvcmUgZnJhbWV3b3JrIGxpZXMuIEtub3dpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIHRlbGwgbWUgaG93IHRoZSBkZXZpY2UgZHJpdmVyIGlzIGdvaW5nIHRvIGludGVyYWN0IHdpdGggdGhlIFNESU8gc3Vic3lzdGVtIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEknbGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgYm91bmQgdG8gdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQgaW4gdGhhdCBwcm9jZXNzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODc1MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjMyLjI4ODg4MDQzOVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NDAwNDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9fcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6MzIuMzQ1MzI5Mzk3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDA1MDI1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWJ1Z2dpbmcgdGhlIFNESU8gRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIFNESU8gZHJpdmVyIGlzIGdldHRpbmcgcmVnaXN0ZXJlZCBpbiB0aGUgc3lzdGVtLiBUaGUgZmxvdyBpc24ndCBpbW1lZGlhdGVseSBvYnZpb3VzLiBMZXQgbWUgcXVpY2tseSB6ZXJvIGluIG9uIHdoZXJlIHRoZSBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIGBueHB3aWZpYCBkaXJlY3RvcnkuIEknbGwgbmVlZCB0byB1c2UgYSBncmVwIG9yIGZpbmQgY29tbWFuZCB0byBzZWFyY2ggdGhlIHNvdXJjZSB0cmVlIGFuZCBwaW5wb2ludCB0aGUgZXhhY3QgZmlsZSBhbmQgbGluZSB3aGVyZSB0aGF0IGRyaXZlciByZWdpc3RyYXRpb24gaGFwcGVucy4gVGhhdCdzIHRoZSBmaXJzdCBjcml0aWNhbCBzdGVwIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkwMDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NzozNi41NDU4MzQwNjhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4OTg3OTg5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZGlvX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjM2LjYzNDgzMjM1N1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTkyNjIyOTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFNESU8gRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cbkhtbSwgc28gd2UgbmVlZCB0byBmaWd1cmUgb3V0ICpob3cqIHRoaXMgU0RJTyBkcml2ZXIgaXMgYmVpbmcgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwuIFRoYXQncyB1c3VhbGx5IHRoZSBmaXJzdCBzdGVwIHdoZW4gZGVidWdnaW5nIHNvbWV0aGluZyBsaWtlIHRoaXMuIExldCdzIHNlZS4uLiB0aGUgcXVpY2tlc3Qgcm91dGUgaXMgcHJvYmFibHkgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZS4gV2hlcmUgZG8gd2UgZmluZCB0aGF0IHJlZ2lzdHJhdGlvbiBtYWdpYz8gTXkgaW5zdGluY3Qgc2F5cyBpdCdsbCBiZSBpbiB0aGUgbWFpbiBgc2Rpby5jYCBmaWxlLCB3aGVyZSB0aGUgY29yZSBTRElPIGZ1bmN0aW9uYWxpdHkgcmVzaWRlcy4gTm93LCBsZXQncyBsb29rIGZvciB0aGUgc3RhbmRhcmQgcmVnaXN0cmF0aW9uIG1hY3JvcywgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IGJlaW5nIGVtcGxveWVkIGhlcmUuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIHdlIHdhbnQgdG8gbG9vayBmb3IgZWl0aGVyIGBtb2R1bGVfaW5pdGAg4oCTIHRoYXQncyBvZnRlbiB1c2VkIGZvciBpbml0aWFsaXphdGlvbiwgaW5jbHVkaW5nIGRyaXZlciByZWdpc3RyYXRpb24g4oCTIG9yIHBlcmhhcHMgZGlyZWN0bHkgZm9yIHNvbWV0aGluZyBsaWtlIGBzZGlvX2RyaXZlcmAgaXRzZWxmLCBvciBzb21ldGhpbmcgc2ltaWxhciB0byBpdC4gVGhhdCB3b3VsZCBiZSB0aGUgZHJpdmVyIHN0cnVjdHVyZSBkZWNsYXJhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCBpbiBgc2Rpby5jYCBmb3IgdGhvc2UsIHNoYWxsIHdlPyBUaGF0J2xsIGdpdmUgdXMgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSB3aG9sZSB0aGluZyBpcyBzZXQgdXAsIGFuZCB3aGVyZSB0aGUgZW50cnkgcG9pbnRzIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIxOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjQwLjYyNzQ1ODI3MVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYwMTgxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Rpb19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz00NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG54cHdpZmlfc2Rpb19wbV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzo0NzE6c3RhdGljIHN0cnVjdCBzZGlvX2RyaXZlciBueHB3aWZpX3NkaW8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTQ3Mi1cXHQubmFtZSA9IFxcXCJueHB3aWZpX3NkaW9cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTIyOTM9c3RhdGljIHN0cnVjdCBueHB3aWZpX2lmX29wcyBzZGlvX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzoyMzIxOm1vZHVsZV9zZGlvX2RyaXZlcihueHB3aWZpX3NkaW8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzIyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Nzo0MC43MTM0ODIyOFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA4MTg1OTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhbiBTRElPIERyaXZlcidzIFJlYWNoYWJpbGl0eSBpbiBhIEZ1enppbmcgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtb2R1bGVfc2Rpb19kcml2ZXIobnhwd2lmaV9zZGlvKTtgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGFuIFNESU8gZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGRvZXMgU3l6a2FsbGVyIGV2ZW4gaGF2ZSBhbiBTRElPIGVtdWxhdG9yPyBCZWNhdXNlIGlmIG5vdCwgaG93IGRpZCBpdCB0cmlnZ2VyIHRoaXMgY29uZGl0aW9uPyBTeXprYWxsZXIncyBzdHJlbmd0aHMgYXJlIGluIGVtdWxhdGluZyBoYXJkd2FyZSwgYnV0IEknbSBkcmF3aW5nIGEgYmxhbmsgb24gU0RJTy5cblxuSXQgY2FuJ3QgYmUgVVNCIOKAkyB0aGVyZSdzIG5vIGB1c2IuY2AgaGVyZS4gQW5kIGEgUENJZSBkcml2ZXIgaXMgb3V0IHRvby4gV2FpdCwgdGhlcmUncyBgbWFjODAyMTFfaHdzaW1gIGZvciBtYWM4MDIxMSwgYnV0IHRoaXMgaXMgYSBjZmc4MDIxMSBkcml2ZXIgc28gSSBkb3VidCBpdC4gQ291bGQgdGhlcmUgYmUgc29tZSBzb3J0IG9mIHZpcnR1YWwgU0RJTyBob3N0IGNvbnRyb2xsZXIgSSdtIG1pc3NpbmcgaW4gdGhlIGtlcm5lbD8gVGltZSB0byBsb29rIGludG8gdGhhdC4uLiBvciBjb3VsZCBTeXprYWxsZXIgYmUgbGV2ZXJhZ2luZyBgbWFjODAyMTFfaHdzaW1gIHRvIHNvbWVob3cgdHJpZ2dlciBjZmc4MDIxMSBldmVudHM/IE5vLCB0aGlzIGlzIGEgZGVkaWNhdGVkIGhhcmR3YXJlIGRyaXZlciwgYG54cHdpZmlgLlxuXG5Pa2F5LCBpZiB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU0RJTyBkcml2ZXIsIGFuZCB0aGVyZSdzIG5vIFNESU8gZW11bGF0aW9uLCB0aGVuIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSB1bnJlYWNoYWJsZSB3aXRoaW4gdGhlIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50IHRoYXQgU3l6a2FsbGVyIHV0aWxpemVzLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRob3VnaC4gTGV0IG1lIGRvdWJsZS1jaGVjazogaXMgdGhlcmUgYW55IHZpcnR1YWwgU0RJTyBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWwsIG9yIHNvbWUgb3RoZXIgU3l6a2FsbGVyIG1lY2hhbmlzbSBmb3IgU0RJTyBpbmplY3Rpb24/IE5vcGUsIEknbSBwcmV0dHkgc3VyZSBTeXprYWxsZXIncyBicmVhZCBhbmQgYnV0dGVyIGlzIFVTQiAodGhyb3VnaCBgZHVtbXlfaGNkYCksIFBDSSAodmlhIFFFTVUpLCBhbmQgb3RoZXJzLi4uIGJ1dCBub3QgU0RJTywgYXQgbGVhc3QgaW4gYSBkaXJlY3Qgc2Vuc2UuXG5cbldhaXQgYSBzZWNvbmQuLi4gY291bGQgdGhpcyBiZSBhIHBhdGNoIHRoYXQgU3l6a2FsbGVyIGlzICp0ZXN0aW5nKiByYXRoZXIgdGhhbiAqZmluZGluZyo/IFRoYXQncyBpdCEgVGhlIHByb21wdCBtZW50aW9ucyBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBUaGF0J3MgdGhlIGtleS4gVGhpcyBtZWFucyB0aGlzIHBhdGNoIHdhcyBzZW50IHRvIHRoZSBtYWlsaW5nIGxpc3QsIGFuZCBzeXpib3QgaXMganVzdCBiZWluZyB1c2VkIHRvIHZhbGlkYXRlIGl0LCBub3QgdG8gYWN0dWFsbHkgZmluZCB0aGUgYnVnLiBTbywgdGhlIGNvZGUgKmlzKiBoYXJkd2FyZS1zcGVjaWZpYy4gQW5kLCBzaW5jZSBubyBTRElPIGVtdWxhdGlvbiBleGlzdHMsIFN5emthbGxlciB3b24ndCBiZSBhYmxlIHRvIHJlYWNoIHRoaXMgYnVnLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGlzIGBkdW1teV9zZGlvYCBvciBgc2Rpb19kdW1teWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODEwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjQ4LjAyMTY3MTA2OVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk3ODgzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHVtbXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYz01Nz1zdGF0aWMgaW50IHRodW5kZXJfbW1jX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYy0xMzQtXFx0XFx0ICogbW1jX29mX3BhcnNlIGFuZCBkZXZtKiByZXF1aXJlIG9uZSBkZXZpY2UgcGVyIHNsb3QuXFxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYzoxMzU6XFx0XFx0ICogQ3JlYXRlIGEgZHVtbXkgZGV2aWNlIHBlciBzbG90IGFuZCBzZXQgdGhlIG5vZGUgcG9pbnRlciB0b1xcbmRyaXZlcnMvbW1jL2hvc3QvY2F2aXVtLXRodW5kZXJ4LmMtMTM2LVxcdFxcdCAqIHRoZSBzbG90LiBUaGUgZWFzaWVzdCB3YXkgdG8gZ2V0IHRoaXMgaXMgdXNpbmdcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmM9NDUwPXN0YXRpYyB2b2lkIGxpdGV4X21tY19zZXRfaW9zKHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX2lvcyAqaW9zKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYy00NTUtXFx0ICogVGhlIFNEIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgYXQgbGVhc3QgNzQgaWRsZSBjbG9ja3MgYmVmb3JlIENNRDAuXFxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYzo0NTY6XFx0ICogVGhlc2UgZHVtbXkgY3ljbGVzIGlzIGdlbmVyYXRlZCBieSB3cml0aW5nIExJVEVYX1BIWV9JTklUSUFMSVpFLlxcbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmMtNDU3LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmM9MjAxPXN0YXRpYyB2b2lkIG1tY19vbWFwX3NlbGVjdF9zbG90KHN0cnVjdCBtbWNfb21hcF9zbG90ICpzbG90LCBpbnQgY2xhaW1lZClcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jLTIzNS1cXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYzoyMzY6XFx0XFx0LyogRG9pbmcgdGhlIGR1bW15IHJlYWQgaGVyZSBzZWVtcyB0byB3b3JrIGFyb3VuZCBzb21lIGJ1Z1xcbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jLTIzNy1cXHRcXHQgKiBhdCBsZWFzdCBpbiBPTUFQMjR4eCBzaWxpY29uIHdoZXJlIHRoZSBjb21tYW5kIHdvdWxkIG5vdFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jPTIwOD1zdGF0aWMgdm9pZCBzZF9zZW5kX2NtZF9nZXRfcnNwKHN0cnVjdCByZWFsdGVrX3BjaV9zZG1tYyAqaG9zdCxcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYy0zMDEtXFx0XFx0ICogVGhlIGNvbnRyb2xsZXIgb2ZmbG9hZHMgdGhlIGxhc3QgYnl0ZSB7Q1JDLTcsIGVuZCBiaXQgMSdiMX1cXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmM6MzAyOlxcdFxcdCAqIG9mIHJlc3BvbnNlIHR5cGUgUjIuIEFzc2lnbiBkdW1teSBDUkMsIDAsIGFuZCBlbmQgYml0IHRvIHRoZVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYy0zMDMtXFx0XFx0ICogYnl0ZShwdHJbMTZdLCBnb2VzIGludG8gdGhlIExTQiBvZiByZXNwWzNdIGxhdGVyKS5cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYz0yODU9c3RhdGljIHZvaWQgc2Rfc2VuZF9jbWRfZ2V0X3JzcChzdHJ1Y3QgcnRzeF91c2Jfc2RtbWMgKmhvc3QsXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmMtNDI1LVxcdFxcdCAqIFRoZSBjb250cm9sbGVyIG9mZmxvYWRzIHRoZSBsYXN0IGJ5dGUge0NSQy03LCBlbmQgYml0IDEnYjF9XFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jOjQyNjpcXHRcXHQgKiBvZiByZXNwb25zZSB0eXBlIFIyLiBBc3NpZ24gZHVtbXkgQ1JDLCAwLCBhbmQgZW5kIGJpdCB0byB0aGVcXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmMtNDI3LVxcdFxcdCAqIGJ5dGUocHRyWzE2XSwgZ29lcyBpbnRvIHRoZSBMU0Igb2YgcmVzcFszXSBsYXRlcikuXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jLTIxNC1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jOjIxNTovKiB0aGUgY29udHJvbGxlciBoYXMgZHVtbXkgcGFkIGZvciBjbG9jayBsb29wYmFjayAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmMtMjE2LSNkZWZpbmUgRVNESENfRkxBR19EVU1NWV9QQURcXHRcXHRCSVQoMTkpXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM9MTAxPXN0YXRpYyB1MzIgcHhhdjFfaXJxKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCB1MzIgaW50bWFzaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMDYtXFx0aWYgKHB4YXYyX2hvc3QtXFx1MDAzZXNkaW9fbXJxIFxcdTAwMjZcXHUwMDI2IChpbnRtYXNrIFxcdTAwMjYgU0RIQ0lfSU5UX0NNRF9NQVNLKSkge1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYzoxMDc6XFx0XFx0LyogVGhlIGR1bW15IENNRDAgZm9yIHRoZSBTRElPIHdvcmthcm91bmQganVzdCBjb21wbGV0ZWQgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTA4LVxcdFxcdHNkaGNpX3dyaXRlbChob3N0LCBpbnRtYXNrIFxcdTAwMjYgU0RIQ0lfSU5UX0NNRF9NQVNLLCBTREhDSV9JTlRfU1RBVFVTKTtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYz0xMjM9c3RhdGljIHZvaWQgcHhhdjFfcmVxdWVzdF9kb25lKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMzYtXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjEzNzpcXHRcXHQvKiBDbG9jayBpcyBub3cgc3RvcHBlZCwgc28gcmVzdGFydCBpdCBieSBzZW5kaW5nIGEgZHVtbXkgQ01EMCAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMzgtXFx0XFx0cHhhdjJfaG9zdCA9IHNkaGNpX3BsdGZtX3ByaXYoc2RoY2lfcHJpdihob3N0KSk7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTQ5LVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYzoxNTA6XFx0XFx0LyogRG9uJ3QgZmluaXNoIHRoaXMgcmVxdWVzdCB1bnRpbCB0aGUgZHVtbXkgQ01EMCBmaW5pc2hlcyAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xNTEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jPTY1Mz1zdGF0aWMgaW50IHNkaGNpX3ByZV9kbWFfdHJhbnNmZXIoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMtNjg5LVxcdFxcdFxcdFxcdFxcdCAgIG1tY19nZXRfZG1hX2RpcihkYXRhKSk7XFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jOjY5MDpcXHRcXHQvKiBKdXN0IGEgZHVtbXkgdmFsdWUgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMtNjkxLVxcdFxcdHNnX2NvdW50ID0gMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6NDguMTExNDY0OTc4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NTkxMjgyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYG54cHdpZmlgIFRyaWdnZXIqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGRlZmluaXRlbHkgbm8gc2lnbiBvZiBhIGBkdW1teV9zZGlvYCBtb2R1bGUsIG9yIGFueXRoaW5nIGV4cGxpY2l0bHkgbmFtZWQgdGhhdCB3YXkuIFRoYXQncyBhIGRlYWQgZW5kLiBOb3csIEkgbmVlZCB0byByZXRoaW5rIHRoaXMgYXBwcm9hY2guIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgYWN0dWFsbHkgKmRvZXMqIHRyaWdnZXIgdGhlIGBueHB3aWZpYCBkcml2ZXIuIElzIHRoZXJlIGFub3RoZXIgcGF0aCwgc29tZSBvdGhlciBtZWNoYW5pc20sIEknbSBvdmVybG9va2luZz8gVGltZSB0byBjaXJjbGUgYmFjay4gSeKAmWxsIGdvIHN0cmFpZ2h0IGJhY2sgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdgLiBMZXQncyBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBob2xkcyBhbnkgY2x1ZXMgYWJvdXQgd2hhdCBhY3RpdmF0ZXMgdGhpcyB0aGluZy4gR290dGEgZXhhbWluZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyBjYXJlZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjcwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6NTMuMDcwNTk3NzE2WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjM4NzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlhQV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6Mjpjb25maWcgTlhQV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnOjEyOmNvbmZpZyBOWFBXSUZJX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Nzo1My4xNDY5OTE2NDVaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MzI4Mzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgdGhlIE5YUCBXaS1GaSBEcml2ZXIgQXJjaGl0ZWN0dXJlKipcblxuQWxyaWdodCwgc28gYE5YUFdJRklgLi4uIHRoYXQncyB0aGUgY29yZSBtb2R1bGUsIHRoZSBoZWFydCBvZiB0aGUgTlhQIFdpLUZpIGltcGxlbWVudGF0aW9uLiBBbmQgYE5YUFdJRklfU0RJT2AsIHRoYXQncyB0aGUgU0RJTyBkcml2ZXIgc3BlY2lmaWNhbGx5LiBIbW0sIHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0IGlzIFNESU8gdGhlICpvbmx5KiBpbnRlcmZhY2Ugc3VwcG9ydGVkPyBJIG5lZWQgdG8gYmUgc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkndmUgZ290IHRvIGNvbnNpZGVyIGFsbCB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLlxuXG5UbyBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLCBJIHNob3VsZCByZWFsbHkgZGlnIGludG8gdGhlIGRyaXZlciBkaXJlY3Rvcnk6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvYC4gVGhhdCBkaXJlY3Rvcnkgc2hvdWxkIGhvbGQgdGhlIGNvbXBsZXRlIHNldCBvZiBkcml2ZXJzIGJ1aWx0IG9uIHRoYXQgYG54cHdpZmlgIGNvcmUuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNwZWNpZmljIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuIE1heWJlIHRoZXJlJ3MgYSBVU0IgZHJpdmVyLCBhIFBDSWUgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSB0aGF0IGlzbid0IGltbWVkaWF0ZWx5IG9idmlvdXMuIEEgcXVpY2sgc2NhbiBvZiB0aGF0IGFyZWEgd2lsbCBlaXRoZXIgY29uZmlybSBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgb3IgcmV2ZWFsIG90aGVyIGFyY2hpdGVjdHVyZXMgSSBuZWVkIHRvIGFjY291bnQgZm9yLiBHb29kLCBsZXQncyBnbyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2ODQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Nzo1Ni43OTAyNzk1MDVaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IG51bGwsXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJueHB3aWZpXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6NTYuNzkwMzg3NjY1WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjU4MzQ3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG54cHdpZmlgIERyaXZlciBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzb21ldGhpbmcganVtcHMgb3V0LiBJdCBzZWVtcyBgbnhwd2lmaWAgaXMgdGhlIG9ubHkgc3ViZGlyZWN0b3J5IGluIGBueHAvYC4gQnV0IEkgYWxzbyBrbm93IHRoZXJlJ3MgYSBgbXdpZmlleGAgZGlyZWN0b3J5LCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9gLiBUaGF0J3MgYSBkaWZmZXJlbnQgZHJpdmVyIGFsdG9nZXRoZXIsIHRob3VnaC4gVGhlIHJlYWwgaXNzdWUgaXMgYG54cHdpZmlgIOKAkyBpdCdzIGFuIFNESU8gZHJpdmVyLCBhbmQgc2VlbXMgc3BlY2lmaWMgdG8gdGhlIElXNjF4IGhhcmR3YXJlLiBUaGUgYmlnIHByb2JsZW0gaGVyZSBpcyB0aGF0IHRoZXJlJ3Mgbm8gU0RJTyBlbXVsYXRvciBhdmFpbGFibGUgaW4gUUVNVSBvciBzeXprYWxsZXIsIHdoaWNoIEknbSBmYW1pbGlhciB3aXRoLCBzbyBJJ20gdGhpbmtpbmcsIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgdGhhdCBjb2RlJ3MgYmFzaWNhbGx5IHVucmVhY2hhYmxlLlxuXG5CdXQgSSdtIG5vdCBnb2luZyB0byBnaXZlIHVwIHRoYXQgZWFzaWx5LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIE15IG5leHQgdGhvdWdodCBpczogY2FuIHRoaXMgZHJpdmVyIHNvbWVob3cgYmUgbG9hZGVkIGFuZCBpbml0aWFsaXplZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZT8gTWF5YmUgdGhlcmUncyBhIHdheS4gTGV0J3MgZGlnIGludG8gYHNkaW8uY2AgYW5kIHNwZWNpZmljYWxseSBjaGVjayB0aGUgYG54cHdpZmlfc2Rpb19wcm9iZWAgZnVuY3Rpb24uIFRoYXQncyB0aGUgZmlyc3Qgc3RlcCB0byBmaWd1cmluZyBvdXQgYSB3b3JrYXJvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzAxNCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTg6MDEuMDU2MjI0MzU0WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODM2MDg4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpX3NkaW9fcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz0xMjI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzoxMjM6bnhwd2lmaV9zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTEyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9NDcxPXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgbnhwd2lmaV9zZGlvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTQ3My1cXHQuaWRfdGFibGUgPSBueHB3aWZpX2lkcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6NDc0OlxcdC5wcm9iZSA9IG54cHdpZmlfc2Rpb19wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDc1LVxcdC5yZW1vdmUgPSBueHB3aWZpX3NkaW9fcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1ODowMS4xNDQ1OTAzMjNaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MTM0NTk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYG54cHdpZmlgIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIHRoZSBTRElPIGNvcmUgY2FsbHMgYG54cHdpZmlfc2Rpb19wcm9iZWAgd2hlbiBpdCBkZXRlY3RzIGEgY29tcGF0aWJsZSBTRElPIGRldmljZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIEJ1dCB0aGUgcHJvYmxlbSBpcywgaWYgdGhlcmUncyBubyB2aXJ0dWFsIFNESU8gaG9zdCBjb250cm9sbGVyIG9yIGEgbWV0aG9kIHRvIHNpbXVsYXRlIHRoZSBwcmVzZW5jZSBvZiBhbiBTRElPIGRldmljZSwgdGhpcyBwcm9iZSBmdW5jdGlvbiB3aWxsICpuZXZlciogYmUgY2FsbGVkLiBDb25zZXF1ZW50bHksIHRoZSB3aG9sZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaXMgYmxvY2tlZC4gVGhhdCBtZWFucyBgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jYCwgdGhlIGZ1bmN0aW9uIEknbSB0cnlpbmcgdG8gcmVhY2gsIHdpbGwgcmVtYWluIHVucmVhY2hhYmxlLiBEYW1uLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGlzIHRoaXMgdGhlIG9ubHkgZW50cnkgcG9pbnQ/IElzIHRoZXJlICphbnkqIG90aGVyIHJvdXRlIGludG8gdGhlIGRyaXZlcj8gQ291bGQgYG54cHdpZmlgIGFjdHVhbGx5IGJlIGEgbWFjODAyMTEgZHJpdmVyPyBUaGF0J3MgdW5saWtlbHkuIEl0IGxvb2tzIGxpa2UgaXQgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCBhbmQgSSdtIHNlZWluZyBjYWxscyBsaWtlIGBjZmc4MDIxMV9uZXdfc3RhYCwgc28gcHJvYmFibHkgbm90LlxuXG5BbHJpZ2h0LCBsZXQncyBzdGVwIGJhY2suIENhbiBzeXprYWxsZXIgc29tZWhvdyBpbmplY3QgZXZlbnRzLCBvciB0cmlnZ2VyIHNvbWV0aGluZyB2aWEgYSBkZWJ1Z2ZzIGludGVyZmFjZSwgcGVyaGFwcz8gVGhhdCdzIGEgY2xhc3NpYyBieXBhc3MsIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBUaW1lIHRvIGNoZWNrIGBkZWJ1Z2ZzLmNgIHdpdGhpbiB0aGUgYG54cHdpZmlgIHNvdXJjZS4gTWF5YmUgSSBjYW4gZmluZCBhIHdheSBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3MTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTg6MDUuNjI1OTM4OTk5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ2NDY0MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVidWdmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGU9MzI9bnhwd2lmaS15ICs9IDExaC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGU6MzM6bnhwd2lmaS0kKENPTkZJR19ERUJVR19GUykgKz0gZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGUtMzQtb2JqLSQoQ09ORklHX05YUFdJRkkpICs9IG54cHdpZmkub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYz0yMzUwPXN0cnVjdCB3aXJlbGVzc19kZXYgKm54cHdpZmlfYWRkX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYy0yNTExLSNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jOjI1MTI6XFx0bnhwd2lmaV9kZXZfZGVidWdmc19pbml0KHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMtMjUxMy0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM9MjUzMz1pbnQgbnhwd2lmaV9kZWxfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jLTI1MzktI2lmZGVmIENPTkZJR19ERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM6MjU0MDpcXHRueHB3aWZpX2Rldl9kZWJ1Z2ZzX3JlbW92ZShwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jLTI1NDEtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzozOiAqIG54cHdpZmk6IGRlYnVnZnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlYnVnZnMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz0xNj1zdGF0aWMgY2hhciAqYnNzX21vZGVzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzAtLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MzE6ICogZGVidWdmcyBcXFwiaW5mb1xcXCIgcmVhZCBoYW5kbGVyOiBkdW1wIGRyaXZlciBuYW1lL3ZlcnNpb24sIGludGVyZmFjZSwgQlNTIG1vZGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTMyLSAqIGxpbmsgc3RhdGUsIE1BQywgY291bnRlcnM7IFNUQSBhZGRzIFNTSUQvQlNTSUQvY2hhbm5lbC9jb3VudHJ5L3JlZ2lvbiBhbmRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz0zNj1ueHB3aWZpX2luZm9fcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTE5LS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEyMDogKiBkZWJ1Z2ZzIFxcXCJnZXRsb2dcXFwiIHJlYWQgaGFuZGxlcjogZHVtcCBmaXJtd2FyZS84MDIuMTEgY291bnRlcnMgKHJldHJ5LCBSVFMvQUNLLCBkdXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEyMS0gKiBmcmFnLCBtY2FzdCwgRkNTLCBiZWFjb24gc3RhdHMpLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTEyND1ueHB3aWZpX2dldGxvZ19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xODgtLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTg5OiAqIGRlYnVnZnMgXFxcImhpc3RvZ3JhbVxcXCIgcmVhZCBoYW5kbGVyOiByZXBvcnQgc2FtcGxlIGNvdW50IGFuZCBwZXItcmF0ZS9TTlIvbm9pc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTkwLSAqIGZsb29yL3NpZ25hbCBzdHJlbmd0aCBoaXN0b2dyYW1zLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTI4Mj1zdGF0aWMgc3RydWN0IG54cHdpZmlfZGVidWdfaW5mbyBpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjI4NDovKiBkZWJ1Z2ZzIFxcXCJkZWJ1Z1xcXCIgcmVhZCBoYW5kbGVyOiBkdW1wIGFkYXB0ZXIgZGVidWcgaW5mbyBhbmQgQkEvcmVvcmRlciB0YWJsZXMuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTI4NS1zdGF0aWMgc3NpemVfdFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTMxMj1zdGF0aWMgdTMyIHNhdmVkX3JlZ190eXBlLCBzYXZlZF9yZWdfb2Zmc2V0LCBzYXZlZF9yZWdfdmFsdWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzE0LS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjMxNTogKiBkZWJ1Z2ZzIFxcXCJyZWdyZHdyXFxcIiB3cml0ZSBoYW5kbGVyOiBwYXJzZSBcXHUwMDNjdHlwZSBvZmZzZXQgdmFsdWVcXHUwMDNlIGFuZCBzdG9yZSBmb3JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzE2LSAqIHJlYWRiYWNrL0lPLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTMxOT1ueHB3aWZpX3JlZ3Jkd3Jfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzUyLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjM1MzogKiBkZWJ1Z2ZzIFxcXCJyZWdyZHdyXFxcIiByZWFkIGhhbmRsZXI6IHBlcmZvcm0gcGVuZGluZyByZWdpc3RlciByZWFkL3dyaXRlIGFuZCByZXR1cm5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzU0LSAqIFxcdTAwM2N0eXBlIG9mZnNldCB2YWx1ZVxcdTAwM2UuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9MzU3PW54cHdpZmlfcmVncmR3cl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjQwNjovKiBkZWJ1Z2ZzIFxcXCJkZWJ1Z19tYXNrXFxcIiByZWFkIGhhbmRsZXI6IHNob3cgZHJpdmVyIGRlYnVnIG1hc2suICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz00MDk9bnhwd2lmaV9kZWJ1Z19tYXNrX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NDMwOi8qIGRlYnVnZnMgXFxcImRlYnVnX21hc2tcXFwiIHdyaXRlIGhhbmRsZXI6IHNldCBkcml2ZXIgZGVidWcgbWFzay4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNDMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQzMz1ueHB3aWZpX2RlYnVnX21hc2tfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQ1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NDU3Oi8qIGRlYnVnZnMgXFxcInZlcmV4dFxcXCIgd3JpdGUgaGFuZGxlcjogc2VsZWN0IGV4dGVuZGVkIHZlcnNpb24gc3RyaW5nLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NTgtc3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9NDU5PW54cHdpZmlfdmVyZXh0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjQ3NTovKiBkZWJ1Z2ZzIFxcXCJ2ZXJleHRcXFwiIHJlYWQgaGFuZGxlcjogc2hvdyBleHRlbmRlZCB2ZXJzaW9uIHN0cmluZy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNDc2LXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQ3Nz1ueHB3aWZpX3ZlcmV4dF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjQ5MjovKiBkZWJ1Z2ZzIFxcXCJtZW1yd1xcXCIgd3JpdGUgaGFuZGxlcjogcmVhZC93cml0ZSBmaXJtd2FyZSBtZW1vcnkgKGFkZHIsIHZhbHVlKS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNDkzLXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQ5ND1ueHB3aWZpX21lbXJ3X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGNvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTUzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NTM1Oi8qIGRlYnVnZnMgXFxcIm1lbXJ3XFxcIiByZWFkIGhhbmRsZXI6IHNob3cgbGFzdCBtZW1vcnkgYWNjZXNzIHJlc3VsdC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTM2LXN0YXRpYyBzc2l6ZV90XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9NTU2PXN0YXRpYyB1MzIgc2F2ZWRfb2Zmc2V0ID0gLTEsIHNhdmVkX2J5dGVzID0gLTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NTU4Oi8qIGRlYnVnZnMgXFxcInJkZWVwcm9tXFxcIiB3cml0ZSBoYW5kbGVyOiBzZXQgRUVQUk9NIG9mZnNldC9sZW5ndGggdG8gcmVhZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTU5LXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTU2MD1ueHB3aWZpX3JkZWVwcm9tX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTU5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NTkyOi8qIGRlYnVnZnMgXFxcInJkZWVwcm9tXFxcIiByZWFkIGhhbmRsZXI6IGR1bXAgRUVQUk9NIGJ5dGVzIGZyb20gc2F2ZWQgb2Zmc2V0L2xlbmd0aC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTkzLXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTU5ND1ueHB3aWZpX3JkZWVwcm9tX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTYzMy0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo2MzQ6ICogZGVidWdmcyBcXFwiaHNjZmdcXFwiIHdyaXRlIGhhbmRsZXI6IGNvbmZpZ3VyZSBob3N0LXNsZWVwIChjb25kaXRpb25zL2dwaW8vZ2FwKSBvclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02MzUtICogY2FuY2VsLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTYzOD1ueHB3aWZpX2hzY2ZnX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjY5MjovKiBkZWJ1Z2ZzIFxcXCJoc2NmZ1xcXCIgcmVhZCBoYW5kbGVyOiBzaG93IGN1cnJlbnQgaG9zdC1zbGVlcCBjb25maWd1cmF0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02OTMtc3RhdGljIHNzaXplX3RcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz05NzA9bnhwd2lmaV90d3RfaW5mb3JtYXRpb25fd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTk5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6OTk4OiNkZWZpbmUgTlhQV0lGSV9ERlNfQUREX0ZJTEUobmFtZSkgZGVidWdmc19jcmVhdGVfZmlsZSgjbmFtZSwgMDY0NCwgICAgIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtOTk5LVxcdFxcdFxcdFxcdCAgIHByaXYtXFx1MDAzZWRmc19kZXZfZGlyLCBwcml2LCAgICAgICAgICAgICBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9MTAzOD1OWFBXSUZJX0RGU19GSUxFX1dSSVRFX09QUyh0d3RfaW5mb3JtYXRpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDQwOi8qIENyZWF0ZSBwZXItbmV0ZGV2IGRlYnVnZnMgZGlyZWN0b3J5IGFuZCBmaWxlcy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA0MS12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNDI6bnhwd2lmaV9kZXZfZGVidWdmc19pbml0KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNDc6XFx0cHJpdi1cXHUwMDNlZGZzX2Rldl9kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIocHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VuYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDQ4LVxcdFxcdFxcdFxcdFxcdCAgICAgICBueHB3aWZpX2Rmc19kaXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNzE6LyogUmVtb3ZlIHBlci1uZXRkZXYgZGVidWdmcyBkaXJlY3RvcnkgYW5kIGZpbGVzLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDcyLXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA3MzpueHB3aWZpX2Rldl9kZWJ1Z2ZzX3JlbW92ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDc4OlxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShwcml2LVxcdTAwM2VkZnNfZGV2X2Rpcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNzktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDgxOi8qIENyZWF0ZSB0b3AtbGV2ZWwgZGVidWdmcyBkaXJlY3RvcnkuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwODItdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDgzOm54cHdpZmlfZGVidWdmc19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwODQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDg1LVxcdGlmICghbnhwd2lmaV9kZnNfZGlyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDg2OlxcdFxcdG54cHdpZmlfZGZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihcXFwibnhwd2lmaVxcXCIsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDg3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA4OTovKiBSZW1vdmUgdG9wLWxldmVsIGRlYnVnZnMgZGlyZWN0b3J5LiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDkwLXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA5MTpueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwOTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDkzOlxcdGRlYnVnZnNfcmVtb3ZlKG54cHdpZmlfZGZzX2Rpcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwOTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NDY9RVhQT1JUX1NZTUJPTF9HUEwoX254cHdpZmlfZGJnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY0ODovKiBNb2R1bGUgaW5pdDogaW5pdCBkZWJ1Z2ZzIGlmIGVuYWJsZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NDktc3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjUwPW54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjUyLSNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY1MzpcXHRueHB3aWZpX2RlYnVnZnNfaW5pdCgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjU0LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2NTg6LyogTW9kdWxlIGV4aXQ6IHJlbW92ZSBkZWJ1Z2ZzIGlmIGVuYWJsZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NTktc3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MTY2MD1ueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY2Mi0jaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2NjM6XFx0bnhwd2lmaV9kZWJ1Z2ZzX3JlbW92ZSgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY0LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oPTE0MTc9dm9pZCBueHB3aWZpX2RldmR1bXBfdG1vX2Z1bmModW5zaWduZWQgbG9uZyBmdW5jdGlvbl9jb250ZXh0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xNDE5LSNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyMDp2b2lkIG54cHdpZmlfZGVidWdmc19pbml0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaDoxNDIxOnZvaWQgbnhwd2lmaV9kZWJ1Z2ZzX3JlbW92ZSh2b2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmgtMTQyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyMzp2b2lkIG54cHdpZmlfZGV2X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyNDp2b2lkIG54cHdpZmlfZGV2X2RlYnVnZnNfcmVtb3ZlKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xNDI1LSNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1ODowNS43NDA1ODk5MTdaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcxNTA2OTA1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBUcm91Ymxlc2hvb3RpbmcgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gdGVzdCB0aGlzIFNESU8gZHJpdmVyLCBhbmQgSSdtIGhpdHRpbmcgYSB3YWxsLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHVzZSB0aGUgZGVidWdmcyBpbnRlcmZhY2UsIGJ1dCB0aGF0IG9ubHkgYWxsb3dzIGZvciBiYXNpYyByZWdpc3RlciBhbmQgbWVtb3J5IG1hbmlwdWxhdGlvbiDigJMgbm90IGRpcmVjdCBldmVudCBpbmplY3Rpb24sIHdoaWNoIEkgbmVlZCBmb3IgcHJvcGVyIHRlc3RpbmcuIFRoYXQncyBhIGRlZmluaXRlIHJvYWRibG9jay5cblxuVGhlbiBpdCBoaXQgbWU6IHRoaXMgaXMgYW4gU0RJTyBkcml2ZXIsIGFuZCBJIGNhbid0IHRoaW5rIG9mIGFueSBTRElPIGVtdWxhdG9ycyByZWFkaWx5IGF2YWlsYWJsZS4gSWYgSSdtIHdvcmtpbmcgd2l0aGluIFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUncyBubyB3YXkgdG8gZW11bGF0ZSB0aGUgU0RJTyBidXMsIHRoZW4gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cy4gVGhhdCdzIGEgc2VyaW91cyBwcm9ibGVtIGZvciBjb21wcmVoZW5zaXZlIGNvdmVyYWdlLlxuXG5TbywgZmlyc3QgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucy4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLiBJcyB0aGVyZSBzb21lIHNvcnQgb2YgdmlydHVhbCBTRElPIGltcGxlbWVudGF0aW9uIEkgaGF2ZW4ndCBjb21lIGFjcm9zcz8gT3IgZG9lcyBTeXprYWxsZXIsIHdoaWNoIEknbSBmYW1pbGlhciB3aXRoLCBvZmZlciBhIGJhY2tkb29yIG1ldGhvZCBmb3IgU0RJTyBpbmplY3Rpb24gdGhhdCBJIGhhdmVuJ3QgdXNlZCB5ZXQ/XG5cbk5vcGUuIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYW4gU0RJTyBlbXVsYXRvci4gSXQncyBnb3QgVVNCIHZpYSBkdW1teV9oY2QsIFBDSSB2aWEgUUVNVSwgYW5kIG90aGVyIGVtdWxhdGVkIGJ1c2VzLCBidXQgbm90IFNESU8uIERhbW4uIFRoaXMgaXMgYSBjcnVjaWFsIGdhcCBpbiBvdXIgdGVzdCBpbmZyYXN0cnVjdHVyZS5cblxuQWxyaWdodCwgd2hhdCBhYm91dCBhIGhhcmR3YXJlIHNpbXVsYXRpb24/IEknbSB0cnlpbmcgdG8gZmluZCBhbiBlcXVpdmFsZW50IHRvIGBtYWM4MDIxMV9od3NpbWAgZm9yIFNESU8uIElzIHRoZXJlIGEgc2ltaWxhciBkcml2ZXIgdGhhdCBzaW11bGF0ZXMgU0RJTyBoYXJkd2FyZT8gVGhlIGFuc3dlciBpcyBuby4gVGhpcyBpcyBnb2luZyB0byBtYWtlIHRlc3RpbmcgcXVpdGUgZGlmZmljdWx0LlxuXG5NYXliZSBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpcyB0aGUgd3Jvbmcgd2F5LiBPa2F5LCBsZXQncyBiYWNrIHVwIGFuZCBjaGVjayBkcml2ZXJzIGZvciBhbHRlcm5hdGUgYnVzZXMuIEknbGwgZ28gdGhyb3VnaCB0aGUgd2lyZWxlc3MgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkgYWdhaW4uIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSdsbCBzZWUgaWYgSSBjYW4gZmluZCBhbiBhbHRlcm5hdGUgc29sdXRpb24gSSd2ZSBtaXNzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4OTExLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU4OjEzLjQ1NTY2MTU2WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIjExYWMuY1wiLFxuICAgIFwiMTFhYy5oXCIsXG4gICAgXCIxMWF4LmNcIixcbiAgICBcIjExYXguaFwiLFxuICAgIFwiMTFoLmNcIixcbiAgICBcIjExbi5jXCIsXG4gICAgXCIxMW4uaFwiLFxuICAgIFwiMTFuX2FnZ3IuY1wiLFxuICAgIFwiMTFuX2FnZ3IuaFwiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5jXCIsXG4gICAgXCIxMW5fcnhyZW9yZGVyLmhcIixcbiAgICBcImNmZy5oXCIsXG4gICAgXCJjZmc4MDIxMS5jXCIsXG4gICAgXCJjZmc4MDIxMS5oXCIsXG4gICAgXCJjZnAuY1wiLFxuICAgIFwiY21kZXZ0LmNcIixcbiAgICBcImNtZGV2dC5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaWUuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJqb2luLmNcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWFpbi5oXCIsXG4gICAgXCJzY2FuLmNcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpby5oXCIsXG4gICAgXCJzdGFfY2ZnLmNcIixcbiAgICBcInN0YV9jbWQuY1wiLFxuICAgIFwic3RhX2V2ZW50LmNcIixcbiAgICBcInN0YV9yeC5jXCIsXG4gICAgXCJzdGFfdHguY1wiLFxuICAgIFwidHhyeC5jXCIsXG4gICAgXCJ1YXBfY21kLmNcIixcbiAgICBcInVhcF9ldmVudC5jXCIsXG4gICAgXCJ1YXBfdHhyeC5jXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid21tLmNcIixcbiAgICBcIndtbS5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU4OjEzLjQ1NTc2NTA3WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MzIxNTA4OTE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IE5YUCBJVzYxeCBTRElPIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGFuZCB0aGUga2V5IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBhbGwgYWJvdXQgYHNkaW8uY2AuIE5vIG1lbnRpb25zIG9mIFVTQiBvciBQQ0llLCBwdXJlbHkgU0RJTy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZyBpbiBteSBtaW5kIGJlY2F1c2Ugc3l6a2FsbGVyJ3MgcHJldHR5IGxpbWl0ZWQgd2hlbiBpdCBjb21lcyB0byBlbXVsYXRpbmcgc3BlY2lhbGl6ZWQgaGFyZHdhcmUuIEluIGZhY3QsIEknbSBwcmV0dHkgc3VyZSBzeXprYWxsZXIgKmNhbid0KiBlbXVsYXRlIFNESU8gZGV2aWNlcyBhdCBhbGwuIFNvLCBpZiB0aGlzIGlzIHB1cmVseSBhbiBTRElPIGRyaXZlciwgdGhlIGNvZGUncyBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyBhbmQgdGhhdCdzIHVzdWFsbHkgYSBcIldvcnRoRnV6emluZz1mYWxzZVwiIHNjZW5hcmlvLlxuXG5CdXQgd2FpdCwgaG9sZCBvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gTGV0IG1lIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBDb3VsZCB0aGlzIHBhdGNoIGJlIHRlc3Rpbmcgc29tZXRoaW5nIHRoYXQgd2FzIHN1Ym1pdHRlZCBhcyBhIHBhdGNoLCBpbnRlbmRlZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmU/IFRoYXQgaGFwcGVucyBvZnRlbi4gVGhlIGluc3RydWN0aW9ucyBzdGF0ZSBjbGVhcmx5OiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIFNwZWNpZmljYWxseSwgdGhlIGluc3RydWN0aW9ucyBjYWxsIG91dCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgbGlrZSBQQ0llIGNhcmRzLiBUaGF0J3MgYSBnb29kIGNvbXBhcmlzb24uXG5cblRoaXMgZHJpdmVyLCBgbnhwd2lmaWAsIGlzIHZlbmRvci1zcGVjaWZpYyB0byB0aGUgTlhQIElXNjF4IGNoaXBzZXQuIEFuZCBpdCdzIFNESU8tYmFzZWQuIEkga25vdyB0aGVyZSdzIG5vIFNESU8gZW11bGF0aW9uIGluIFFFTVUuIFFFTVUgZG9lcyBoYXZlIGBzZGhjaS1wY2lgLCB3aGljaCBpcyBhbiBTRCBob3N0IGNvbnRyb2xsZXIsIGJ1dCB0aGF0J3MgZm9yIFNEIGNhcmRzIChibG9jayBkZXZpY2VzKSwgbm90IFNESU8gZGV2aWNlcyBsaWtlIFdpLUZpIGNhcmRzLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSBubyBkaWNlISBRRU1VIGp1c3QgZG9lc24ndCBzdXBwb3J0IHBsdWdnaW5nIGluIGEgdmlydHVhbCBTRElPIFdpLUZpIGNhcmQgdG8gYSB2aXJ0dWFsIGhvc3QgY29udHJvbGxlci4gRXZlbiBpZiBpdCBkaWQsIHRoZXJlJ3Mgbm8gd2F5IGZvciBzeXprYWxsZXIgdG8gaW5qZWN0IFNESU8gcGFja2V0cyBvciBlbXVsYXRlIHRoZSBXaS1GaSBjYXJkIGl0c2VsZi4gSXQncyBhIGRlYWQgZW5kLlxuXG5JJ20gc3RhcnRpbmcgdG8gYnVpbGQgYSBzb2xpZCBjYXNlLCBsZXQgbWUgbWFrZSBpdCB3YXRlci10aWdodC4gSSdtIG1vZGlmeWluZyBgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jYCBpbiB0aGUgYG54cHdpZmlgIGRyaXZlciwgd2hpY2ggaXMgYSAqdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciogc3BlY2lmaWNhbGx5IGZvciB0aGUgTlhQIElXNjF4LiBJdCBpcyBiYXNlZCBvbiB0aGUgU0RJTyBidXMgYmVjYXVzZSB0aGVyZSdzIGBzZGlvLmNgIGludm9sdmVkLiBTaW5jZSB0aGVyZSdzIG5vIHdheSB0byBlbXVsYXRlIFNESU8gV2ktRmkgZGV2aWNlcyBpbiBRRU1VIG9yIHN5emthbGxlciwgdGhpcyBjb2RlIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYW55IHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCBpcyBub3Qgd29ydGggZnV6emluZy5cblxuTGV0IG1lIGRvdWJsZSBjaGVjayBob3cgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIEl0J3MgY2FsbGVkIGZyb20gYSBjaGFpbjogYG54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY2AgaXMgY2FsbGVkIGZyb20gYG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYG54cHdpZmlfaGFuZGxlX2V2ZW50c2AsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBueHB3aWZpX21haW5fcHJvY2Vzc2AsIHdoaWNoIHJ1bnMgaW4gYSB3b3JrcXVldWUuIFRoaXMgd29ya3F1ZXVlIGlzIHNjaGVkdWxlZCB3aGVuIGFuIGludGVycnVwdCBpcyByZWNlaXZlZCBmcm9tIHRoZSAqU0RJTyBkZXZpY2UqLiBXaXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgU0RJTyBkZXZpY2UsIHRoZSBkcml2ZXIgZG9lc24ndCBldmVuIHByb2JlLCB0aGUgd29ya3F1ZXVlIGlzIG5ldmVyIHNldCB1cCwgYW5kIHRoaXMgZW50aXJlIHBhdGggaXMgbmV2ZXIgZXhlY3V0ZWQuIEl0J3MgYWxsIGRlcGVuZGVudCBvbiB0aGUgU0RJTyBidXMuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQuIFRoaXMgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAuIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTg1NCwiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE1OjAxOjA2LjY3MDg1NzgxMloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIE5YUCBJVzYxeCBjaGlwc2V0cy4gVGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBTRElPIGJ1cyAodmlhIGBDT05GSUdfTlhQV0lGSV9TRElPYCkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgU0RJTyBXaUZpIGRldmljZXMgaW4gc3RhbmRhcmQgUUVNVSBvciBzeXprYWxsZXIgKHVubGlrZSBVU0IgdmlhIGR1bW15X2hjZCBvciBtYWM4MDIxMSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIE5YUCBJVzYxeCBjaGlwc2V0cy4gVGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBTRElPIGJ1cyAodmlhIGBDT05GSUdfTlhQV0lGSV9TRElPYCkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgU0RJTyBXaUZpIGRldmljZXMgaW4gc3RhbmRhcmQgUUVNVSBvciBzeXprYWxsZXIgKHVubGlrZSBVU0IgdmlhIGR1bW15X2hjZCBvciBtYWM4MDIxMSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgkfwc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 14:39:52 +0000 UTC FinishedAt: 2026-07-30 15:01:08 +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+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIE5YUCBJVzYxeCBjaGlwc2V0cy4gVGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBTRElPIGJ1cyAodmlhIGBDT05GSUdfTlhQV0lGSV9TRElPYCkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgU0RJTyBXaUZpIGRldmljZXMgaW4gc3RhbmRhcmQgUUVNVSBvciBzeXprYWxsZXIgKHVubGlrZSBVU0IgdmlhIGR1bW15X2hjZCBvciBtYWM4MDIxMSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZjE1NWRhN2Q0NThjOTk5NTliN2NlMjAxMDAzMmE5ZmY1NzNiNmVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMTQ6NTY6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuY1xuaW5kZXggZWQ4ZTI0YWU5YzBhNy4uOWY3MTdhM2Q3ZWM1ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuY1xuQEAgLTEwNywxMSAmIzQzOzEwNywyOSBAQCBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2Moc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbiBcdFx0XHRsZW4gPSBFVEhfQUxFTjtcbiBcbiBcdFx0aWYgKGxlbiAhPSAtMSkge1xuJiM0MztcdFx0XHR1MTYgZXZ0X2xlbiA9IGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbik7XG4mIzQzO1xuIFx0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXMgPSBcdTAwMjZldmVudC1cdTAwM2VkYXRhW2xlbl07XG4gXHRcdFx0bGVuID0gKHU4ICopc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyAtXG4gXHRcdFx0ICAgICAgKHU4ICopXHUwMDI2ZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbDtcbi1cdFx0XHRzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9XG4tXHRcdFx0XHRsZTE2X3RvX2NwdShldmVudC1cdTAwM2VsZW4pIC0gKHUxNilsZW47XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBldmVudC1cdTAwM2VsZW4gaXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBmaXJtd2FyZVxuJiM0MztcdFx0XHQgKiBhbmQgaXMgbm90IG90aGVyd2lzZSB2YWxpZGF0ZWQuIFJlamVjdCBhIGxlbmd0aFxuJiM0MztcdFx0XHQgKiB0aGF0IHVuZGVyZmxvd3MgdGhlIGhlYWRlciBvciB0aGF0IHdvdWxkIHBsYWNlXG4mIzQzO1x0XHRcdCAqIHRoZSBhc3NvY2lhdGlvbiByZXF1ZXN0IElFcyBvdXRzaWRlIHRoZSBmaXhlZFxuJiM0MztcdFx0XHQgKiBldmVudF9ib2R5W10gYnVmZmVyLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKGV2dF9sZW4gXHUwMDNjIGxlbiB8fFxuJiM0MztcdFx0XHQgICAgKHU4ICopXHUwMDI2ZXZlbnQtXHUwMDNlZnJhbWVfY29udHJvbCAmIzQzOyBldnRfbGVuIFx1MDAzZVxuJiM0MztcdFx0XHQgICAgYWRhcHRlci1cdTAwM2VldmVudF9ib2R5ICYjNDM7IE1BWF9FVkVOVF9TSVpFKSB7XG4mIzQzO1x0XHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG4mIzQzO1x0XHRcdFx0XHQgICAgXCYjMzQ7aW52YWxpZCBTVEEgYXNzb2MgZXZlbnQgbGVuZ3RoXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRrZnJlZShzaW5mbyk7XG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXNfbGVuID0gZXZ0X2xlbiAtICh1MTYpbGVuO1xuIFx0XHR9XG4gXHR9XG4gXHRjZmc4MDIxMV9uZXdfc3RhKHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZWllZWU4MDIxMV9wdHIsIGV2ZW50LVx1MDAzZXN0YV9hZGRyLCBzaW5mbyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBueHB3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgTlhQIElXNjF4IGNoaXBzZXRzLiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIFNESU8gYnVzICh2aWEgYENPTkZJR19OWFBXSUZJX1NESU9gKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBTRElPIFdpRmkgZGV2aWNlcyBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciAodW5saWtlIFVTQiB2aWEgZHVtbXlfaGNkIG9yIG1hYzgwMjExIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJmMTU1ZGE3ZDQ1OGM5OTk1OWI3Y2UyMDEwMDMyYTlmZjU3M2I2ZWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAxNDo1NjoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMKaW5kZXggZWQ4ZTI0YWU5YzBhNy4uOWY3MTdhM2Q3ZWM1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMKQEAgLTEwNywxMSAmIzQzOzEwNywyOSBAQCBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2Moc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdikKIAkJCWxlbiA9IEVUSF9BTEVOOwogCiAJCWlmIChsZW4gIT0gLTEpIHsKJiM0MzsJCQl1MTYgZXZ0X2xlbiA9IGxlMTZfdG9fY3B1KGV2ZW50LSZndDtsZW4pOwomIzQzOwogCQkJc2luZm8tJmd0O2Fzc29jX3JlcV9pZXMgPSAmYW1wO2V2ZW50LSZndDtkYXRhW2xlbl07CiAJCQlsZW4gPSAodTggKilzaW5mby0mZ3Q7YXNzb2NfcmVxX2llcyAtCiAJCQkgICAgICAodTggKikmYW1wO2V2ZW50LSZndDtmcmFtZV9jb250cm9sOwotCQkJc2luZm8tJmd0O2Fzc29jX3JlcV9pZXNfbGVuID0KLQkJCQlsZTE2X3RvX2NwdShldmVudC0mZ3Q7bGVuKSAtICh1MTYpbGVuOwomIzQzOwomIzQzOwkJCS8qCiYjNDM7CQkJICogZXZlbnQtJmd0O2xlbiBpcyByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlCiYjNDM7CQkJICogYW5kIGlzIG5vdCBvdGhlcndpc2UgdmFsaWRhdGVkLiBSZWplY3QgYSBsZW5ndGgKJiM0MzsJCQkgKiB0aGF0IHVuZGVyZmxvd3MgdGhlIGhlYWRlciBvciB0aGF0IHdvdWxkIHBsYWNlCiYjNDM7CQkJICogdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzIG91dHNpZGUgdGhlIGZpeGVkCiYjNDM7CQkJICogZXZlbnRfYm9keVtdIGJ1ZmZlci4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAoZXZ0X2xlbiAmbHQ7IGxlbiB8fAomIzQzOwkJCSAgICAodTggKikmYW1wO2V2ZW50LSZndDtmcmFtZV9jb250cm9sICYjNDM7IGV2dF9sZW4gJmd0OwomIzQzOwkJCSAgICBhZGFwdGVyLSZndDtldmVudF9ib2R5ICYjNDM7IE1BWF9FVkVOVF9TSVpFKSB7CiYjNDM7CQkJCW54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLAomIzQzOwkJCQkJICAgICYjMzQ7aW52YWxpZCBTVEEgYXNzb2MgZXZlbnQgbGVuZ3RoXG4mIzM0Oyk7CiYjNDM7CQkJCWtmcmVlKHNpbmZvKTsKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCXNpbmZvLSZndDthc3NvY19yZXFfaWVzX2xlbiA9IGV2dF9sZW4gLSAodTE2KWxlbjsKIAkJfQogCX0KIAljZmc4MDIxMV9uZXdfc3RhKHByaXYtJmd0O25ldGRldi0mZ3Q7aWVlZTgwMjExX3B0ciwgZXZlbnQtJmd0O3N0YV9hZGRyLCBzaW5mbywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNgLiBMb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBhIGxlbmd0aCBjaGVjayBpbiBgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXMgdGhpcyBhIGRyaXZlciBmb3Igc29tZXRoaW5nIHRoYXQgY2FuIGJlIGVhc2lseSBlbXVsYXRlZCwgb3IgYW0gSSBkZWFsaW5nIHdpdGggYSBwaHlzaWNhbCBkZXZpY2UgdGhhdCB3aWxsIHJlcXVpcmUgbW9yZSBjb21wbGV4IHNldHVwIGZvciB0ZXN0aW5nPyBMZXQgbWUgc2VlLi4uICYjMzQ7bnhwd2lmaSYjMzQ7Li4uIGFoLCByaWdodCwgaXQmIzM5O3MgYW4gTlhQIFdpLUZpIGRyaXZlci4gVGhhdCBjbGFyaWZpZXMgdGhpbmdzLiBJIGtub3cgTlhQLCBzbyBJIGhhdmUgYSBiYXNpYyB1bmRlcnN0YW5kaW5nIG9mIHRoZWlyIHdpcmVsZXNzIG9mZmVyaW5ncy4KCk5vdywgSSBuZWVkIG1vcmUgc3BlY2lmaWNzLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9gIGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgZmVlbC4gTXkgbmV4dCBzdGVwIGlzIHRvIHVzZSBgZ3JlcHBlcmAgdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmx5aW5nIGJ1cyBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIGJ1cyDigJMgaXMgaXQgU0RJTywgUENJZSwgVVNCLCBldGMuIOKAkyB3aWxsIHNpZ25pZmljYW50bHkgaW5mb3JtIG15IGRlYnVnZ2luZyBhbmQgdGVzdGluZyBzdHJhdGVneSBkb3duIHRoZSByb2FkLiBUaGlzIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGJlc3Qgd2F5IHRvIGdldCB0aGlzIHBhdGNoIHRlc3RlZCBhbmQgaW50ZWdyYXRlZCBpbnRvIG91ciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNTE2MCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTItLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozOiAqIG54cHdpZmkgODAyLjExYWMgaGVscGVyc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQtICogQ29weXJpZ2h0IDIwMTEtMjAyNCBOWFBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM3Om54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTM4LVx0XHRcdFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00Mi1cdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo0MzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6ODA6bnhwd2lmaV9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTgxLVx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgzOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk0Om54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk1LVx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6OTc6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk4LVx0dTE2IG1jc19tYXBfdXNlciwgbWNzX21hcF9yZXNwLCBtY3NfbWFwX3Jlc3VsdDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAxLVx0LyogRmlsbCBWSFQgY2FwYWJpbGl0eSBpbmZvLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcdG54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEyNDpcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyNS1cdHZodF9jYXAtXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XHR0bXAgPSBueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDctXHR2aHRfY2FwLVx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUwOmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTE6XHRcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTItXHRcdFx0XHR1OCAqKmJ1ZmZlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodGNhcCAqdmh0X2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19vcGVyX21vZGVfbnRmICpvcGVyX250ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTYtXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodF9vcGVyICp2aHRfb3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXHR1OCBzdXBwX2Nod2Rfc2V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XHRcdHZodF9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXHRcdG1lbXNldCh2aHRfY2FwLCAwLCBzaXplb2YoKnZodF9jYXApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc0LVx0XHRcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzU6XHRcdG1lbWNweSgodTggKil2aHRfY2FwICYjNDM7IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3Ni1cdFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl92aHRfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc5Olx0XHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXHUwMDI2dmh0X2NhcC1cdTAwM2V2aHRfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cdFx0XHRcdFx0IGJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg3LVx0XHRpZiAocHJpdi1cdTAwM2Vic3NfbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4Olx0XHRcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg5LVx0XHRcdG1lbXNldCh2aHRfb3AsIDAsIHNpemVvZigqdmh0X29wKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cdFx0XHR2aHRfb3AtXHUwMDNlaGVhZGVyLmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YoKnZodF9vcCkgLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5MzpcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTQtXHRcdFx0bWVtY3B5KCh1OCAqKXZodF9vcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5NTpcdFx0XHRcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cdFx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ1OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0Ni1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3Olx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI2NTp2b2lkIG54cHdpZmlfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjM6ICogbnhwd2lmaTogODAyLjExYWMgKFZIVCkgZGVmaW5pdGlvbnNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC00LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oPTE0PWVudW0gdmh0X2NmZ19taXNjX2NvbmZpZyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI1OmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNjpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI3LVx0XHRcdFx0dTggKipidWZmZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI4OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI5LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMDpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFhY192aHRfY2ZnICpjZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMxOnZvaWQgbnhwd2lmaV9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMzItXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOi8qIG54cHdpZmk6IDgwMi4xMWF4IChIRSkgc3VwcG9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMtICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjQgTlhQXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExOnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMi1cdFx0XHQgICAgIHN0cnVjdCBod19zcGVjX2V4dGVuc2lvbiAqaHdfaGVfY2FwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDpcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzpcdHU4IGhlYWRlcl9sZW4gPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xOC1cdHUxNiBkYXRhX2xlbiA9IGxlMTZfdG9fY3B1KGh3X2hlX2NhcC1cdTAwM2VoZWFkZXIubGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjItXHRpZiAoKGRhdGFfbGVuICYjNDM7IGhlYWRlcl9sZW4pIFx1MDAzZSBzaXplb2YoYWRhcHRlci1cdTAwM2Vod19oZV9jYXApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjM6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0LVx0XHRcdCAgICBcJiMzNDtod19oZV9jYXAgdG9vIGJpZywgbGVuPSVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTpcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM3LVx0XHRoZV9jYXBfMmcgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4Olx0XHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcJiMzNDsyLjRHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzktXHRcdFx0XHQgYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1LVx0XHRhZGFwdGVyLVx1MDAzZWZ3X2JhbmRzIHw9IEJBTkRfQUFYO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2Olx0XHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcJiMzNDs1RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3LVx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Ny1cdFx0XHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTg6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTktXHRcdFx0XHRwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02My1cdFx0XHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NjQ6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjUtXHRcdFx0XHRwcml2LVx1MDAzZXVzZXJfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo3OTpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo4MDpcdFx0XHRcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NTppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NjpcdFx0XHQgICAgc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTctXHRcdFx0ICAgIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTk6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwMDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDEtXHR1MTYgcnhfbnNzLCB0eF9uc3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwOC1cdFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cdTAwM2V1c2VyX2hlX2NhcCwgcHJpdi1cdTAwM2V1c2VyX2hlX2NhcF9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwOTpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMC1cdFx0cmV0X2xlbiA9IHByaXYtXHUwMDNldXNlcl9oZV9jYXBfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTItXHRcdG1lbWNweShoZV9jYXAsIHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXAsIHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTM6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMTQtXHRcdHJldF9sZW4gPSBwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI1LVx0Zm9yIChuc3MgPSAxOyBuc3MgXHUwMDNjPSA4OyBuc3MmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI2Olx0XHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI3Olx0XHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjgtXHRcdGlmIChyeF9uc3MgIT0gMCBcdTAwMjZcdTAwMjYgbnNzIFx1MDAzZSByeF9uc3MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMC1cdFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzE6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMyLVx0XHRcdFx0XHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMy1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzNDpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzUtXHRcdFx0XHRcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzgtXHRmb3IgKG5zcyA9IDE7IG5zcyBcdTAwM2M9IDg7IG5zcyYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzk6XHRcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDA6XHRcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0MS1cdFx0aWYgKHR4X25zcyAhPSAwIFx1MDAyNlx1MDAyNiBuc3MgXHUwMDNlIHR4X25zcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQzLVx0XHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NDpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDUtXHRcdFx0XHRcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ2LVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ3Olx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0OC1cdFx0XHRcdFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTQ6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NTpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ni1cdFx0XHRcdHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU4Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1OS1cdGludCByZXRfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY0Olx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKSpidWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY1Olx0cmV0X2xlbiA9IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHByaXYsIGhlX2NhcCwgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2Ni1cdCpidWZmZXIgJiM0Mzs9IHJldF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzE6aW50IG54cHdpZmlfY21kXzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc2LVx0dTE2IGNtZF9zaXplO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg2LVx0ICAgIGF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnLmV4dF9pZCA9PSBXTEFOX0VJRF9FWFRfSEVfQ0FQQUJJTElUWSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE4NzpcdFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cdTAwM2V0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg4LVx0XHRoZWFkZXItXHUwMDNldHlwZSA9IGNwdV90b19sZTE2KGF4X2NmZy1cdTAwM2VoZV9jYXBfY2ZnLmlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNS1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NmZyAqaGVfY2ZnID0gXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuYXhfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwNjpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNy1cdHUxNiBsZWZ0X2xlbiwgdGx2X3R5cGUsIHRsdl9sZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA4LVx0dTggZXh0X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwOTpcdHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2FwX2NmZyAqaGVfY2FwID0gXHUwMDI2YXhfY2ZnLVx1MDAzZWhlX2NhcF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMS1cdGxlZnRfbGVuID0gbGUxNl90b19jcHUocmVzcC1cdTAwM2VzaXplKSAtIHNpemVvZigqaGVfY2ZnKSAtIFNfRFNfR0VOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIxMjpcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKiloZV9jZmctXHUwMDNldGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQyLVx0XHRsZWZ0X2xlbiAtPSAoc2l6ZW9mKCpoZWFkZXIpICYjNDM7IHRsdl9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI0MzpcdFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKSgodTggKiloZWFkZXIgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDQtXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCpoZWFkZXIpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTE6aW50IG54cHdpZmlfY21kXzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTM6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU1Olx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTYtXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFx1MDAyNmNtZC1cdTAwM2VwYXJhbXMuYXhfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ny1cdHUxNiBjbWRfc2l6ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTg6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqc3JfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1OTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjA6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICpiZWFtX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjE6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKmh0Y19jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYyOlx0c3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKnR4bW9pX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjM6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICp0b2x0aW1lX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjQ6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICp0eG9wX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjU6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqc2V0X2JzcnBfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NjpcdHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKmxsZGVfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI2Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc1LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc2Olx0XHRzcl9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zcl9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3ODpcdFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3OS1cdFx0dGx2LVx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoc3JfY21kLVx1MDAzZXR5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODUtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9CRUFNX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI4NjpcdFx0YmVhbV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5MS1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0hUQ19TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTI6XHRcdGh0Y19jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9odGNfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk3LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPTUlfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk4Olx0XHR0eG1vaV9jbWQgPVx0KHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAzLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfT0JTU19UT0xUSU1FX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMwNDpcdFx0dG9sdGltZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMC1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT1BSVFNfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzExOlx0XHR0eG9wX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE3LVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU0VUX0JTUlBfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzE4Olx0XHRzZXRfYnNycF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjMtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9MTERFX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMyNDpcdFx0bGxkZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyOS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzMwOlx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMzEtXHRcdFx0ICAgIFwmIzM0OyVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDU6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Ni1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXHUwMDI2cmVzcC1cdTAwM2VwYXJhbXMuYXhfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NzpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKnRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1Mi1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM1MzpcdFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM1NC1cdFx0bWVtY3B5KGF4X2NtZC1cdTAwM2VwYXJhbS5zcl9jZmcucGFyYW0ub2Jzc19wZF9vZmZzZXQub2Zmc2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODMtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4NDpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzg1LVx0XHRcdCAgICBcJiMzNDslczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozOTM6c3RhdGljIHU4IG54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTA6Ym9vbCBueHB3aWZpX2lzXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMTpcdFx0XHRcdCAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEzOlx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTQ6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE2Olx0aWYgKGJzc19kZXNjIFx1MDAyNlx1MDAyNiAoIW54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKGJzc19kZXNjKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTc6XHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cdFx0XHQgICAgXCYjMzQ7QVAgZG9uJiMzOTt0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjItXHRpZiAoYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQgXHUwMDI2IEJBTkRfQSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMzpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNC1cdFx0XHRwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNTpcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI2LVx0XHRcdHByaXYtXHUwMDNldXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mjg6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjktXHRcdFx0cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MzA6XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzMS1cdFx0XHRwcml2LVx1MDAzZXVzZXJfMmdfaGVfY2FwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzQtXHRpZiAoIShod19oZV9jYXAtXHUwMDNlaGVfbWFjX2NhcFswXSBcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDM1Olx0XHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzYtXHRcdFx0ICAgIFwmIzM0O0ZXIGRvbiYjMzk7dCBzdXBwb3J0IFRXVFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0MC1cdGlmICghKHVzZXJfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0MTpcdFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQyLVx0XHRcdCAgICBcJiMzNDtVU0VSIEhFX01BQ19DQVAgZG9uJiMzOTt0IHN1cHBvcnQgVFdUXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0OTp1OCBueHB3aWZpX2lzX3N0YV8xMWF4X3R3dF9yZXFfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTE6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1Mi1cdHU4IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1Ni1cdFx0aWYgKHByaXYtXHUwMDNlY29uZmlnX2JhbmRzIFx1MDAyNiBCQU5EX0FBWClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTc6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cdTAwM2V1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTgtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTk6XHRcdFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjAtXHRcdHJldCA9IHVzZXJfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY2OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDY3LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2ODpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcwOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzEtXHRzdHJ1Y3QgaG9zdF9jbWRfdHd0X2NmZyAqdHd0X2NmZ19jbWQgPSBcdTAwMjZjbWQtXHUwMDNlcGFyYW1zLnR3dF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcyOlx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDczOlx0c3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICp0d3RfdGVhcmRvd247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc0Olx0c3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqdHd0X3JlcG9ydDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzU6XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzY6XHRzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqYnR3dF9hcF9jb25maWc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc3LVx0dTggaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDg3LVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1NFVFVQX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ4ODpcdFx0dHd0X3NldHVwID0gKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ4OS1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ5MTpcdFx0bWVtc2V0KHR3dF9zZXR1cCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5Mi1cdFx0dHd0X3NldHVwLVx1MDAzZWltcGxpY2l0ID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNC1cdFx0dHd0X3NldHVwLVx1MDAzZWJjbl9taXNzX3RocmVzaG9sZCA9IHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MDU6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDYtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNy1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9URUFSRE9XTl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MDg6XHRcdHR3dF90ZWFyZG93biA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDktXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMC1cdFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTE6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEyLVx0XHR0d3RfdGVhcmRvd24tXHUwMDNlZmxvd19pZGVudGlmaWVyID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTE3LVx0XHRcdHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3RlYXJkb3duLnRlYXJkb3duX2FsbF90d3Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTE4Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTE5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjAtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyMTpcdFx0dHd0X3JlcG9ydCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIyLVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjM6XHRcdG1lbXNldCh0d3RfcmVwb3J0LCAweDAwLCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNC1cdFx0dHd0X3JlcG9ydC1cdTAwM2V0eXBlID0gdHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI1Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX0lORk9STUFUSU9OX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyODpcdFx0dHd0X2luZm9ybWF0aW9uID0gKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbiAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyOS1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMwLVx0XHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzMTpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzItXHRcdHR3dF9pbmZvcm1hdGlvbi1cdTAwM2VmbG93X2lkZW50aWZpZXIgPVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzUtXHRcdFx0dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfaW5mb3JtYXRpb24uc3VzcGVuZF9kdXJhdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzY6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzctXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzOC1cdGNhc2UgTlhQV0lGSV8xMUFYX0JUV1RfQVBfQ09ORklHX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcdFx0YnR3dF9hcF9jb25maWcgPSAoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDAtXHRcdFx0XHQgdHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MS1cdFx0bWVtc2V0KGJ0d3RfYXBfY29uZmlnLCAweDAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0My1cdFx0YnR3dF9hcF9jb25maWctXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2MjpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTYzLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjQtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2NTpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY2LVx0XHRcdCAgICBcJiMzNDtVbmtub3duIHN1YiBpZDogJWRcXG5cJiMzNDssIHR3dF9jZmctXHUwMDNlc3ViX2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3NTppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3Ni1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Nzc6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Nzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODYtXHQgICAgdHd0X2NmZy1cdTAwM2VzdWJfaWQgPT0gTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODc6XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4ODpcdFx0XHQoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqKXR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkwOlx0XHRtZW1jcHkoXHUwMDI2dHd0X2NmZy1cdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU5MS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM6ICogbnhwd2lmaTogODAyLjExYXggc3VwcG9ydFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MTc9c3RhdGljIGlubGluZSB1MTZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTE5LVx0cmV0dXJuICgobGUxNl90b19jcHUobWNzX21hcF9zZXQpIFx1MDAzZVx1MDAzZSAoMiAqIChuc3MgLSAxKSkpIFx1MDAyNiAweDMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0yMj1zdGF0aWMgaW5saW5lIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoyMzpueHB3aWZpX3NldF9oZV9uc3NfbWNzKF9fbGUxNiAqbWNzX21hcF9zZXQsIGludCBuc3MsIGludCB2YWx1ZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVx0dTE2IHRlbXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMxOmJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMjpcdFx0XHRcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzQ6dm9pZCBueHB3aWZpX3VwZGF0ZV8xMWF4X2NhcChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVx0XHRcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM3OmJvb2wgbnhwd2lmaV8xMWF4X2JhbmRjb25maWdfYWxsb3dlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4Olx0XHRcdFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQxOlx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDU6XHRcdFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQ2LVx0XHRcdCAgICB1MTYgYmFuZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQ4LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0OTpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTE6aW50IG54cHdpZmlfcmV0XzExYXhfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1NTppbnQgbnhwd2lmaV9jbWRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTc6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02MC1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjE6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MzppbnQgbnhwd2lmaV9jbWRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY0LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1Olx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY3OmludCBueHB3aWZpX3JldF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njk6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzozOiAqIG54cHdpZmk6IDgwMi4xMWggaGVscGVyc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTM6dm9pZCBueHB3aWZpX2luaXRfMTFoX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTk6aW50IG54cHdpZmlfaXNfMTFoX2FjdGl2ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jPTI1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyNjpueHB3aWZpXzExaF9wcm9jZXNzX2luZnJhX2pvaW4oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwgdTggKipidWZmZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyNzpcdFx0XHQgICAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoyOTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaWVfaGVhZGVyO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNDEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgbnhwd2lmaSBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgbnhwd2lmaWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHN1cHBvcnRlZCBidXMgdHlwZXMuIFRvIGRvIHRoYXQsIHRoZSBtb3N0IGxvZ2ljYWwgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGFuZCBidWlsZCBmaWxlcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgYW5kIHRoZSBgTWFrZWZpbGVgIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGluIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlYC4gVGhlIGBLY29uZmlnYCBmaWxlIHdpbGwgbGlrZWx5IGRlZmluZSB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCByZXZlYWxpbmcgdGhlIGJ1cyBpbnRlcmZhY2VzIGl0JiMzOTtzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCwgd2hpbGUgdGhlIGBNYWtlZmlsZWAgd2lsbCBsaWtlbHkgaW5jbHVkZSB0aGUgc291cmNlIGZpbGVzIGFuZCBsaWJyYXJpZXMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBkcml2ZXIgaXMgYXJjaGl0ZWN0ZWQuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgaW50ZXJmYWNlIGFuZCBtYWtlIHRoZSBuZWNlc3NhcnkgYWRqdXN0bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5YUFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBOWFBXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZzoxMjpjb25maWcgTlhQV0lGSV9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjI1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbWFwIG91dCB0aGUgZGVwZW5kZW5jeSBzdHJ1Y3R1cmUgZm9yIHRoZXNlIGNvbXBvbmVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgTlhQV0lGSV9TRElPYCBhbmQgYE5YUFdJRklgLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQ6CgoqICAgKipEaXJlY3QgRGVwZW5kZW5jaWVzOioqIFdoYXQgZXhhY3RseSBkb2VzIGBOWFBXSUZJX1NESU9gICpuZWVkKiBmcm9tIGBOWFBXSUZJYD8gSXMgaXQgYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSBkZXBlbmRlbmN5LCBhIGRyaXZlciwgYW4gQVBJIGNhbGwsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoZSBzcGVjaWZpYyBuYXR1cmUgb2YgdGhpcyBjb25uZWN0aW9uIGlzIGNyaXRpY2FsLgoqICAgKipJbmRpcmVjdCBEZXBlbmRlbmNpZXM6KiogQmV5b25kIHRoZSBkaXJlY3QgbGluaywgYXJlIHRoZXJlIGFueSBvdGhlciBjb21wb25lbnRzLCBsaWJyYXJpZXMsIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgKmJvdGgqIGRlcGVuZCBvbj8gVGhpcyBjb3VsZCByZXZlYWwgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcy4gRm9yIGV4YW1wbGUsIGFyZSB0aGVyZSBzaGFyZWQgbWVtb3J5IHJlZ2lvbnMsIGludGVycnVwdCBhc3NpZ25tZW50cywgb3Igc2hhcmVkIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW52b2x2ZWQ/CiogICAqKkltcGxpZWQgRGVwZW5kZW5jaWVzOioqIEkmIzM5O20gYWxzbyBjb25zaWRlcmluZyBhbnkgaW1wbGllZCBkZXBlbmRlbmNpZXMuIE9mdGVuLCB0aGUgbmFtZXMgdGhlbXNlbHZlcyBwcm92aWRlIGNsdWVzLiBJcyBgU0RJT2Agc3VnZ2VzdGluZyBhbiBTRElPIGludGVyZmFjZSBkZXBlbmRlbmN5PyBEb2VzIHRoYXQgdGhlbiByZWx5IG9uIGxvd2VyLWxldmVsIGhhcmR3YXJlIHByaW1pdGl2ZXMsIG9yIGEgc3BlY2lmaWMgYnVzIGRyaXZlcj8gQW5kIGhvdyBkb2VzIHRoYXQgaW50ZXJhY3Rpb24gd29yayB3aXRoIHRoZSBgTlhQV0lGSWAgY29tcG9uZW50IGluIHRoaXMgY29udGV4dD8gQXJlIHdlIGRlYWxpbmcgd2l0aCBzaGFyZWQgcmVzb3VyY2VzPwoqICAgKipDb250ZXh0dWFsIERlcGVuZGVuY2llczoqKiBIb3cgZG9lcyB0aGUgYnVpbGQgc3lzdGVtIGFuZCBjb25maWd1cmF0aW9uIGNvbWUgaW50byBwbGF5PyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MsIG9yIHNwZWNpZmljIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGluZmx1ZW5jZSB0aGUgYmVoYXZpb3VyLCBpbnRlcmFjdGlvbnMgb3IgYXZhaWxhYmlsaXR5IG9mIGBOWFBXSUZJYCB0aGF0IHRoZW4gaW1wYWN0cyBgTlhQV0lGSV9TRElPYD8gSSB3YW50IHRvIHNlZSB0aGUgY29uZmlndXJhdGlvbi4KKiAgICoqUG90ZW50aWFsIEJvdHRsZW5lY2tzOioqIFdoYXQgYXJlIHRoZSBwb3NzaWJsZSByaXNrcyBoZXJlPyBDb3VsZCBhIGNoYW5nZSBpbiBgTlhQV0lGSWAgaW5hZHZlcnRlbnRseSBicmVhayBgTlhQV0lGSV9TRElPYD8gQXJlIHRoZXJlIHZlcnNpb25pbmcgY29uc3RyYWludHM/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3M/CiogICAqKk1haW50YWluYWJpbGl0eSBhbmQgU2NhbGFiaWxpdHk6KiogSSYjMzk7bSBhbHNvIHRoaW5raW5nIGFoZWFkIHRvIHRoZSBtYWludGVuYW5jZSBpbXBsaWNhdGlvbnMuIElzIHRoaXMgZGVwZW5kZW5jeSBjbGVhbiwgd2VsbC1kZWZpbmVkLCBhbmQgZWFzaWx5IHVuZGVyc3Rvb2Q/IFdpbGwgaXQgc2NhbGUgd2VsbCBpZiB3ZSBuZWVkIHRvIGFkZCBtb3JlIGZlYXR1cmVzIG9yIHN1cHBvcnQgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucz8KKiAgICoqRGVidWdnaW5nIEFwcHJvYWNoOioqIEFzIGFuIGV4cGVydCwgSSYjMzk7ZCB0aGVuIG1hcCBvdXQgaG93IEkgd291bGQgYmVnaW4gZGVidWdnaW5nIGFueSBpc3N1ZXMgZm91bmQgYnkgYXNraW5nIHF1ZXN0aW9ucy4KClNvLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byB0cmFjZSB0aGUgY29kZSBhbmQgbG9vayBhdCBob3cgdGhlc2UgY29tcG9uZW50cyBpbnRlcmFjdC4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgaW5jbHVkZXMsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLCBhbmQgYW55IGRvY3VtZW50YXRpb24gYXZhaWxhYmxlLiBUaGlzIGRlcGVuZGVuY3kgbWFwcGluZyB3aWxsIGJlIHRoZSBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgc3lzdGVtIGFuZCBhbnkgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMgb3Igb3B0aW1pemF0aW9ucyB3ZSBtaWdodCBuZWVkIHRvIG1ha2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5YUFdJRklcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG54cHdpZmkuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE5YUFdJRklfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFwmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBOWFBXSUZJIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gIDE5Olx0XHQgIElXNjF4IGludGVyZmFjZS5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMjI6XHRcdCAgbnhwd2lmaV9zZGlvLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTE0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG54cHdpZmlgIERyaXZlciBhbmQgU3l6a2FsbGVyJiMzOTtzIFJvbGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG54cHdpZmlgIGRyaXZlciwgYW5kIGl0JiMzOTtzIGFuIFNESU8gaW1wbGVtZW50YXRpb24sIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7QWgsIGNvb2wsIHdlIGNhbiBwcm9iYWJseSBmdXp6IHRoaXMgdXNpbmcgc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYC4mIzM0OyBCdXQgdGhlbiBJIHJlbWVtYmVyLCB0aGlzIGlzIGEgKmZ1bGxtYWMqIGRyaXZlci4gSXQgaGFzIGl0cyBvd24gZmlybXdhcmUsIGFuZCB0aGUgZGV2aWNlIGZpcm13YXJlIGl0c2VsZiBpcyByZXBvcnRpbmcgdGhlIGxlbmd0aCB2aWEgYGV2ZW50LSZndDtsZW5gLiBUaGF0IGNoYW5nZXMgdGhpbmdzLgoKV2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgU0RJTyBkZXZpY2VzIGFzIGZhciBhcyBJIGtub3cuIEl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBnZW5lcmF0aW5nIFNESU8gdHJhbnNhY3Rpb25zIGRpcmVjdGx5LiBCdXQsIGhhbmcgb24sIGNvdWxkIGl0IHN0aWxsIGJlIGluamVjdGluZyBzb21ldGhpbmc/IExpa2UsIHNvbWUgZm9ybSBvZiBwYWNrZXRzIG9yIGV2ZW50cyBpZiB0aGVyZSBpcyBhbiBleHBsb2l0PyBJIG5lZWQgdG8gY2hlY2suCgpPa2F5LCBsZXQgbWUgcmVwaHJhc2UgdGhhdC4gRG9lcyBzeXprYWxsZXIgZG8gKmFueSogU0RJTyBmdXp6aW5nIGF0IGFsbD8gTm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBTeXprYWxsZXIgZG9lc24mIzM5O3QgZW11bGF0ZSBTRElPIGhhcmR3YXJlLgoKQnV0IHdhaXQsIEkgYW0gZ2V0dGluZyBjb25mdXNlZCBoZXJlLCBJIHJlbWVtYmVyIGBtYWM4MDIxMV9od3NpbWAgZG9lcyBleGlzdCBmb3IgYG1hYzgwMjExYCBkcml2ZXJzLCBidXQgYG54cHdpZmlgIGlzIG5vdCBhIGBtYWM4MDIxMWAgZHJpdmVyLCBpdCYjMzk7cyBhIGBjZmc4MDIxMWAgZHJpdmVyLiBTbyBgbWFjODAyMTFfaHdzaW1gIGlzIG91dCBvZiB0aGUgcXVlc3Rpb24uCgpSaWdodC4gTm93IEkmIzM5O20gcmVhbGx5IGN1cmlvdXMsICpob3cqIGRpZCBzeXprYWxsZXIgZmluZCB0aGlzIGJ1ZyB0aGVuPyBXaGF0JiMzOTtzIGdvaW5nIG9uIGhlcmU/CgpBaGEhIE1heWJlIHN5emthbGxlciBpcyBpbmplY3RpbmcgZXZlbnRzIGluIHNvbWUgb3RoZXIgd2F5LiBPci4uLiBjb3VsZCB0aGlzIGJlIGEgVVNCIGRyaXZlcj8gT3IgYSBQQ0llIGRyaXZlcj8gUGVyaGFwcyB0aGVyZSYjMzk7cyBhIGRpZmZlcmVudCB1bmRlcmx5aW5nIHRyYW5zcG9ydCBtZWNoYW5pc20gdGhhdCBzeXprYWxsZXIgKmlzKiB0YXJnZXRpbmcuIExldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhIFVTQiBvciBQQ0llIHZlcnNpb24gb2Ygbnhwd2lmaS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlhQV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnOjI6Y29uZmlnIE5YUFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnOjEyOmNvbmZpZyBOWFBXSUZJX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzYzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZW1iZWRkZWQgc3lzdGVtcyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKSG1tLCBzb21ldGhpbmcgc2VlbXMgb2ZmLiBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGEgd2lkZXIgcmFuZ2Ugb2YgTlhQIFdpRmkgZHJpdmVyIG9wdGlvbnMsIGJ1dCBJJiMzOTttIG9ubHkgcGlja2luZyB1cCBgTlhQV0lGSWAgYW5kIGBOWFBXSUZJX1NESU9gIGluIHRoZSBjdXJyZW50IHZpZXcuIFRoYXQgZmVlbHPigKZsaW1pdGVkLiBJIGRlZmluaXRlbHkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgTlhQIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdgLiBUaGVyZSBoYXMgdG8gYmUgbW9yZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiwgcGVyaGFwcyB3aXRoIHNvbWUgY29uZGl0aW9uYWxzIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBUaW1lIHRvIGRpdmUgYmFjayBpbnRvIHRoZSBzb3VyY2UgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhIGtleSBkZXBlbmRlbmN5IG9yIGNvbnRleHQuIE1heWJlIHNvbWV0aGluZyYjMzk7cyBnYXRlZCB0aGF0IEkmIzM5O20gbm90IHNlZWluZyB5ZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTlhQV0lGSVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcbiAgIDc6XHRcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTA6XHRcdCAgbnhwd2lmaS5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTlhQV0lGSV9TRElPXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XCYjMzQ7XG4gIDE0Olx0XHRkZXBlbmRzIG9uIE5YUFdJRkkgXHUwMDI2XHUwMDI2IE1NQ1xuICAxNTpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAxNjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcbiAgMTk6XHRcdCAgSVc2MXggaW50ZXJmYWNlLlxuICAyMDpcdFxuICAyMTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAyMjpcdFx0ICBueHB3aWZpX3NkaW8uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIE5YUCBXaUZpIEJ1ZyBSZXBvcnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgc3l6a2FsbGVyIHJlcG9ydCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCBoaXQgYSBidWcgaW4gYG54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY2AuIE15IGZpcnN0IHRob3VnaHQgaXMsIGhhbmcgb24sIHN5emthbGxlciAqZG9lcyogaGF2ZSB2aXJ0dWFsIHdpZmkgZGV2aWNlIGluamVjdGlvbiwgcmlnaHQ/IExpa2UsIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCBvciBldmVuIGB2aXJ0aW8td2lmaWAsIGJ1dCB0aGF0JiMzOTtzIGZvciBnZW5lcmljIHRlc3RpbmcuIFRoZSBgbnhwd2lmaWAgbW9kdWxlIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgY2hpcC4gSG93IGNvdWxkIGl0IHBvc3NpYmx5IGhhdmUgZm91bmQgYSBidWcgdGhlcmU/IAoKUmlnaHQsIHJpZ2h0LiBMZXQgbWUgYmFja3RyYWNrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUuIElzIHRoZXJlIGEgVVNCIG9yIFBDSWUgdmVyc2lvbiBvZiB0aGlzIHRoaW5nPyBJJiMzOTtsbCBjaGVjayBxdWlja2x5IOKAkyBubywgaXQmIzM5O3MgU0RJTyBvbmx5LiBUaGUgbmV4dCB0aGluZyBJJiMzOTttIGFza2luZyBpczogZG9lcyBzeXprYWxsZXIgZW11bGF0ZSBTRElPPyBJIHNob3VsZCBrbm93IHRoaXMsIGJ1dCBJJiMzOTttIGRyYXdpbmcgYSBibGFuay4gTm9wZSwgaXQgZG9lc24mIzM5O3QuIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGFuIFNESU8gZW11bGF0b3IgdGhhdCBJIGtub3cgb2YuCgpBbHJpZ2h0LCBtYXliZSBpdCB3YXMgcmVwb3J0ZWQgdmlhIFBDST8gVGltZSB0byBsb29rIGluIHRoYXQgZGlyZWN0b3J5IHRvIGNoZWNrLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGEgUENJZSBkcml2ZXIgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3BjaWUuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB3b3JrIGZyb20gdGhlcmUuIFRoaXMgaXMgZ2V0dGluZyBpbnRlcmVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7MTFhYy5jJiMzNDssCiAgICAmIzM0OzExYWMuaCYjMzQ7LAogICAgJiMzNDsxMWF4LmMmIzM0OywKICAgICYjMzQ7MTFheC5oJiMzNDssCiAgICAmIzM0OzExaC5jJiMzNDssCiAgICAmIzM0OzExbi5jJiMzNDssCiAgICAmIzM0OzExbi5oJiMzNDssCiAgICAmIzM0OzExbl9hZ2dyLmMmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuaCYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmMmIzM0OywKICAgICYjMzQ7MTFuX3J4cmVvcmRlci5oJiMzNDssCiAgICAmIzM0O2NmZy5oJiMzNDssCiAgICAmIzM0O2NmZzgwMjExLmMmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuaCYjMzQ7LAogICAgJiMzNDtjZnAuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZXRodG9vbC5jJiMzNDssCiAgICAmIzM0O2Z3LmgmIzM0OywKICAgICYjMzQ7aWUuYyYjMzQ7LAogICAgJiMzNDtpbml0LmMmIzM0OywKICAgICYjMzQ7am9pbi5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttYWluLmgmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c3RhX2NmZy5jJiMzNDssCiAgICAmIzM0O3N0YV9jbWQuYyYjMzQ7LAogICAgJiMzNDtzdGFfZXZlbnQuYyYjMzQ7LAogICAgJiMzNDtzdGFfcnguYyYjMzQ7LAogICAgJiMzNDtzdGFfdHguYyYjMzQ7LAogICAgJiMzNDt0eHJ4LmMmIzM0OywKICAgICYjMzQ7dWFwX2NtZC5jJiMzNDssCiAgICAmIzM0O3VhcF9ldmVudC5jJiMzNDssCiAgICAmIzM0O3VhcF90eHJ4LmMmIzM0OywKICAgICYjMzQ7dXRpbC5jJiMzNDssCiAgICAmIzM0O3V0aWwuaCYjMzQ7LAogICAgJiMzNDt3bW0uYyYjMzQ7LAogICAgJiMzNDt3bW0uaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzM5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgQnVnIFRyaWdnZXJlZCBieSBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGBzZGlvLmNgIG9wZW4uIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQgaGFuZyBvbiwgdGhpcyBzZWVtcyBsaWtlIGl0JiMzOTtzIGNvbm5lY3RlZCB0byBgbnhwd2lmaWAsIHdoaWNoIGlzIGEgYGNmZzgwMjExYCBkcml2ZXIsIG5vdCB0aGUgYG1hYzgwMjExYCBmcmFtZXdvcmsuIFN5emthbGxlciB1c3VhbGx5IGxldmVyYWdlcyBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaSBmdXp6aW5nLCByaWdodD8gU28sIHdoeSBhbSBJIGxvb2tpbmcgYXQgU0RJTyBhbmQgYG54cHdpZmlgIGhlcmU/CgpUaGlzIGRvZXNuJiMzOTt0IHF1aXRlIGFkZCB1cC4gSG93IGNvdWxkIHN5emthbGxlciBiZSByZXNwb25zaWJsZSBmb3IgdHJpZ2dlcmluZyBzb21ldGhpbmcgaGVyZT8gSSBzdXBwb3NlIGl0IGlzIHBvc3NpYmxlIHRoYXQgc3l6a2FsbGVyIGlzIGFibGUgdG8gaW5qZWN0IFNESU8gcGFja2V0cyBidXQgaXQgZG9lcyBub3QgZW11bGF0ZSBTRElPLgoKV2FpdCBhIG1pbnV0ZS4uLiBNYXliZSBpdCYjMzk7cyBub3QgYSBkaXJlY3QgU0RJTyB0cmlnZ2VyLCBidXQgc29tZXRoaW5nICplbHNlKiB0aGF0JiMzOTtzIGhhcHBlbmluZyB3aGljaCB0aGVuIGNhdXNlcyBhbiBpbnRlcmFjdGlvbiB3aXRoIGBueHB3aWZpYCBhbmQgKnRoYXQqIHRoZW4gaW50ZXJhY3RzIHdpdGggU0RJTz8gT2theSwgdGhhdCYjMzk7cyBwbGF1c2libGUuIExldCYjMzk7cyBzZWUuLi4gSSBzaG91bGQgY2hlY2sgb3V0IGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgLiBUaGF0IGZ1bmN0aW9uIHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9ODI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6ODM6bnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy04NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9ldnRfZW50cnkgZXZ0X3RhYmxlX3VhcFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ0MS1cdHsuZXZlbnRfY2F1c2UgPSBFVkVOVF9VQVBfU1RBX0FTU09DLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6NDQyOlx0IC5ldmVudF9oYW5kbGVyID0gbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ0My1cdHsuZXZlbnRfY2F1c2UgPSBFVkVOVF9VQVBfQlNTX1NUQVJULFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ0OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgaW4gdGhlIGtub3c6CgoqKkRlbHZpbmcgaW50byB0aGUgVUFQIEFzc29jaWF0aW9uIEV2ZW50KioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYW4gZXZlbnQgaGFuZGxlciBoZXJlLCBzcGVjaWZpY2FsbHkgZm9yIGBFVkVOVF9VQVBfU1RBX0FTU09DYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgdGhhdCYjMzk7cyB0aGUgU1RBIGFzc29jaWF0aW9uIGV2ZW50IGluIGEgVUFQIGNvbnRleHQuIEJ1dCBob3cgZXhhY3RseSBkb2VzIHRoaXMgdGhpbmcgKnRyaWdnZXIqPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYXVzYWwgY2hhaW4uIFdoZXJlIGRvZXMgdGhlIHNpZ25hbCB0aGF0IGtpY2tzIHRoaXMgaGFuZGxlciBpbnRvIGFjdGlvbiBvcmlnaW5hdGU/CgpUaGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGFzIGFsd2F5cyBpbiB0aGlzIHNpdHVhdGlvbiwgaXMgdG8gZGlnIGludG8gdGhlIGV2ZW50IHRhYmxlLCBgZXZ0X3RhYmxlX3VhcGAuIFRoYXQgdGFibGUgaXMgd2hlcmUgdGhlIGV2ZW50JiMzOTtzIHNlY3JldHMgYXJlIGhlbGQuIEl0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZXZlbnQmIzM5O3MgcmVnaXN0cmF0aW9uLCB0aGUgYXNzb2NpYXRlZCB0cmlnZ2VycywgYW5kIHRoZSBhY3R1YWwgd29ya2luZ3Mgb2YgdGhpcyBwcm9jZXNzLiBJdCBuZWVkcyB0byB0ZWxsIG1lIHRoZSAqd2hlbiogYW5kICp3aHkqIHRoaXMgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldnRfdGFibGVfdWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jPTQyNz1ueHB3aWZpX3VhcF9ldmVudF92ZGxsX2luZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQzNDpzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfZXZ0X2VudHJ5IGV2dF90YWJsZV91YXBbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQzNS1cdHsuZXZlbnRfY2F1c2UgPSBFVkVOVF9QU19BV0FLRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYz00ODI9aW50IG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0ODg6XHRmb3IgKGV2dCA9IDA7IGV2dCBcdTAwM2MgQVJSQVlfU0laRShldnRfdGFibGVfdWFwKTsgZXZ0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6NDg5Olx0XHRpZiAoZXZlbnRjYXVzZSA9PSBldnRfdGFibGVfdWFwW2V2dF0uZXZlbnRfY2F1c2UpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ5MDpcdFx0XHRpZiAoZXZ0X3RhYmxlX3VhcFtldnRdLmV2ZW50X2hhbmRsZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0OTE6XHRcdFx0XHRyZXQgPSBldnRfdGFibGVfdWFwW2V2dF0uZXZlbnRfaGFuZGxlcihwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ5Mi1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0OTY6XHRpZiAoZXZ0ID09IEFSUkFZX1NJWkUoZXZ0X3RhYmxlX3VhcCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTctXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVWRU5ULFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI4MgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgYnJlYWtkb3duIG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gVUFQIEV2ZW50IFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBueHB3aWZpX3Byb2Nlc3NfdWFwX2V2ZW50YC4gSW1tZWRpYXRlbHksIG15IG1pbmQgemVyb2VzIGluIG9uIHRoZSB0cmlnZ2VyOiBpdCYjMzk7cyBpbnZva2VkIHdoZW5ldmVyIGEgbmV0d29yayBldmVudCBpcyByZWNlaXZlZC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIFRoZSByZWFsIHF1ZXN0aW9uLCB0aGUgb25lIHRoYXQgaW1tZWRpYXRlbHkgbmVlZHMgYW4gYW5zd2VyLCBpcyAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlciBpcyBhYnNvbHV0ZWx5IGNydWNpYWwuIFdpdGhvdXQga25vd2luZyB0aGUgaW5pdGlhdGluZyBjb250ZXh0LCBJJiMzOTttIGZseWluZyBibGluZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2sgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCBhIGhpZ2hlciBsZXZlbCwgd2hhdCB0aGUgaW5pdGlhdGluZyBzdGF0ZSBpcywgYW5kIHdoYXQgcG9zc2libGUgZXZlbnQgdHJpZ2dlcnMgYXJlLiBJIG5lZWQgdG8gbWFwIHRoZSBlbnRyeSBwb2ludHMuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBldmVudCBoYW5kbGluZyBmbG93IGFuZCB1bHRpbWF0ZWx5IGhlbHAgbWUgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIG9wdGltaXphdGlvbiBvciBidWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX3Byb2Nlc3NfdWFwX2V2ZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jPTM2Mz1pbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmMtNDEzLVx0aWYgKHByaXYtXHUwMDNlYnNzX3JvbGUgPT0gTlhQV0lGSV9CU1NfUk9MRV9VQVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYzo0MTQ6XHRcdHJldCA9IG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnQocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYy00MTUtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0Lmg9ODQ9aW50IG54cHdpZmlfcHJvY2Vzc19zdGFfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaDo4NTppbnQgbnhwd2lmaV9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oLTg2LXZvaWQgbnhwd2lmaV9yZXNldF9jb25uZWN0X3N0YXRlKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHUxNiByZWFzb24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9ldnRfZW50cnkgZXZ0X3RhYmxlX3VhcFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ4MS0vKiBIYW5kbGUgQVDigJFpbnRlcmZhY2UgZXZlbnRzIGJ5IGRpc3BhdGNoaW5nIHRoZW0gdG8gZXZlbnTigJFzcGVjaWZpYyByb3V0aW5lcy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ4MjppbnQgbnhwd2lmaV9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMtNDgzLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwMDAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBxdWVzdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVyIG9mIGBueHB3aWZpX3Byb2Nlc3NfZXZlbnRgKioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBpcywgKndobyogaXMgY2FsbGluZyBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YD8gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIGV2ZW50LWRyaXZlbiBzeXN0ZW0sIGxpa2VseSB3aXRoaW4gYW4gTlhQIFdpLUZpIGRyaXZlciBvciByZWxhdGVkIGNvbXBvbmVudC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2UgaW4gZW1iZWRkZWQgc3lzdGVtcyBhbmQgZHJpdmVyIGRldmVsb3BtZW50LCBpcyB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB0eXBpY2FsIGV2ZW50IGZsb3cgd2l0aGluIHRoaXMga2luZCBvZiBzeXN0ZW0uCgpJJiMzOTtkIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIHRoZSBlbnRyeSBwb2ludHMgdG8gdGhlIFdpLUZpIHN0YWNrLiBXaGVyZSBkb2VzIHRoZSBkcml2ZXIgcmVnaXN0ZXIgaXRzZWxmLCBvciBob3cgZG9lcyBpdCBnZXQgaW5pdGlhbGl6ZWQgd2l0aGluIHRoZSBzeXN0ZW0mIzM5O3Mgb3ZlcmFsbCBmcmFtZXdvcms/IElzIHRoZXJlIGEgY29tbW9uIGV2ZW50IGhhbmRsaW5nIGxheWVyLCBwZXJoYXBzIHVzaW5nIGEgbWVzc2FnZSBxdWV1ZSBvciBpbnRlcnJ1cHQgaGFuZGxlcnM/IEtub3dpbmcgdGhlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgaW52b2x2ZWQgaXMga2V5LgoKVGhlbiwgSSYjMzk7ZCB3YW50IHRvIHVzZSBzdGF0aWMgYW5hbHlzaXMgdG9vbHMgaWYgYXZhaWxhYmxlLiBBIHNpbXBsZSBncmVwLCBvciBldmVuIGJldHRlciwgYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoIHdpdGhpbiB0aGUgc291cmNlIGNvZGUgd291bGQgYmUgbXkgZ28tdG8uIEkmIzM5O20gbG9va2luZyBmb3IgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIHRvIGBueHB3aWZpX3Byb2Nlc3NfZXZlbnRgLCBvYnZpb3VzbHkuIEJ1dCwgSSYjMzk7bSBhbHNvIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGluZGlyZWN0IGNhbGxlcnMg4oCTIGZ1bmN0aW9ucyB0aGF0ICpjb3VsZCogY2FsbCBpdCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zLiBBcmUgdGhlcmUgZnVuY3Rpb24gcG9pbnRlcnMsIGNhbGxiYWNrIG1lY2hhbmlzbXMsIG9yIHN0YXRlIG1hY2hpbmVzIGF0IHBsYXk/IEkgY2FuJiMzOTt0IGp1c3QgYmUgc2F0aXNmaWVkIHdpdGggdGhlIG9idmlvdXMuCgpJZiB0aGUgY29kZWJhc2UgaXMgc3RydWN0dXJlZCB3ZWxsLCB0aGVyZSYjMzk7cyBsaWtlbHkgc29tZSBraW5kIG9mIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMgdGhhdCBoaW50IGF0IHRoZSBldmVudCBwcm9jZXNzaW5nIG1vZGVsLiBJJiMzOTtkIGNvbWIgdGhyb3VnaCB0aG9zZSB0byBzZWUgaWYgdGhleSBzaGVkIGFueSBsaWdodCBvbiBob3cgZXZlbnRzIGFyZSBnZW5lcmF0ZWQgYW5kIGRpc3BhdGNoZWQuIE1heWJlIGEgcXVpY2sgc2VhcmNoIGZvciByZWxhdGVkIGtleXdvcmRzLCBsaWtlICYjMzQ7ZXZlbnQsJiMzNDsgJiMzNDtpbnRlcnJ1cHQsJiMzNDsgJiMzNDtxdWV1ZSwmIzM0OyBvciAmIzM0O2NhbGxiYWNrLCYjMzQ7IHdpbGwgZ2l2ZSBtZSBtb3JlIGNvbnRleHQuCgpGaW5hbGx5LCBpZiBzdGF0aWMgYW5hbHlzaXMgaXMgaW5zdWZmaWNpZW50LCBJJiMzOTtsbCBuZWVkIHRvIHJlc29ydCB0byBkeW5hbWljIGFuYWx5c2lzLiBUaGlzIG1lYW5zIGRlYnVnZ2luZy4gSSYjMzk7ZCBzZXQgYSBicmVha3BvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2YgYG54cHdpZmlfcHJvY2Vzc19ldmVudGAgYW5kIHN0ZXAgdGhyb3VnaCB0aGUgY2FsbCBzdGFjay4gVGhpcyB3b3VsZCBnaXZlIG1lIHRoZSBleGFjdCBjYWxsIHBhdGgsIHJldmVhbGluZyB0aGUgZGlyZWN0IGNhbGxlci4gQnV0IEkgY2FuJiMzOTt0IHN0b3AgdGhlcmUuIEkgd291bGQgaW52ZXN0aWdhdGUgdGhlIGNhbGxlciYjMzk7cyBwdXJwb3NlLCBzbyBJJiMzOTtsbCBhbHNvIGxvb2sgYXQgdGhlIHZhcmlhYmxlcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGV2ZW50LgoKVGhlIGdvYWwgaXMgdG8gbm90IGp1c3QgaWRlbnRpZnkgdGhlIGltbWVkaWF0ZSBjYWxsZXIsIGJ1dCB0byBkZWVwbHkgdW5kZXJzdGFuZCB0aGUgKndoeSogYW5kICpob3cqIG9mIHRoZSBldmVudCBwcm9jZXNzaW5nLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcgb2YgaG93IGV2ZW50cyB0cmlnZ2VyIGFuZCBhcmUgbWFuYWdlZCB3aXRoaW4gdGhlIHN5c3RlbSBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmlfcHJvY2Vzc19ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYz0zMjU9dm9pZCBueHB3aWZpX2ZyZWVfY21kX2J1ZmZlcihzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jLTM2Mi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jOjM2MzppbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYy0zNjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oPTgxPWludCBueHB3aWZpX2NvbmZpZ19zdGFydF91YXAoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oLTgyLVx0XHRcdCAgICAgc3RydWN0IG54cHdpZmlfdWFwX2Jzc19wYXJhbSAqYnNzX2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaDo4MzppbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmgtODQtaW50IG54cHdpZmlfcHJvY2Vzc19zdGFfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTI2NT1zdGF0aWMgYm9vbCBueHB3aWZpX2hhbmRsZV9ldmVudHMoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMjY4LVx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3JlY2VpdmVkID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MjY5Olx0XHRueHB3aWZpX3Byb2Nlc3NfZXZlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMjcwLVx0XHRyZXR1cm4gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwMjcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqV2hlcmUgRG9lcyBgbnhwd2lmaV9oYW5kbGVfZXZlbnRzYCBPcmlnaW5hdGU/KioKCk9rYXksIHNvIHRoZSBxdWVzdGlvbiBiZWZvcmUgbWUgaXMgZXNzZW50aWFsbHkgYWJvdXQgY2FsbCB0cmFjaW5nLiBXaGVyZSBpcyB0aGUgZnVuY3Rpb24gYG54cHdpZmlfaGFuZGxlX2V2ZW50c2AgYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgdW5kZXJzdGFuZGluZyBjb250cm9sIGZsb3csIGRlYnVnZ2luZywgYW5kIHBvdGVudGlhbGx5IG1vZGlmeWluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIFdpRmkgZHJpdmVyIG9yIGFzc29jaWF0ZWQgc3lzdGVtIGNvbXBvbmVudHMuCgpJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IHRoZSBlbnRyeSBwb2ludHMgdGhhdCBsZWFkIHRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIElzIGl0IHRyaWdnZXJlZCBieSBhbiBpbnRlcnJ1cHQsIGEgdGltZXIsIG9yIHNvbWUga2luZCBvZiBoaWdoZXItbGV2ZWwgQVBJIGNhbGw/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGdpdmUgbWUgY2x1ZXMgYWJvdXQgdGhlIHNjZW5hcmlvcyB0aGF0IGNhbiB0cmlnZ2VyIGV2ZW50IHByb2Nlc3NpbmcuIEtub3dpbmcgdGhlIGNhbGwgaGllcmFyY2h5IGlzIHZpdGFsIHdoZW4gZGlhZ25vc2luZyBpc3N1ZXM7IHBpbnBvaW50aW5nIHdoYXQgY2FsbHMgdGhlIGV2ZW50IGhhbmRsZXIgaXMgbGlrZSBidWlsZGluZyBhIGZhbWlseSB0cmVlLCBhbmQgdGhhdCBoZWxwcyB0byBkZXRlcm1pbmUgaG93IHRoaW5ncyBhcmUgY29ubmVjdGVkIGFuZCB3aGVyZSBhIHByb2JsZW0gbWlnaHQgc3RlbSBmcm9tLgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcmVmZXJlbmNlcyB0byB0aGlzIGZ1bmN0aW9uIGluIHRoZSBjb2RlIGJhc2UsIGlkZWFsbHkgd2l0aCBhIGNvZGUgc2VhcmNoIHRvb2wuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCB0aGUgaW5jbHVkZSBmaWxlcyBhbmQgdGhlIG1haW4gZHJpdmVyIGZpbGVzLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhlIGRyaXZlciBmaWxlcyBhcyB0aGUgZmlyc3QgdGhpbmcgdG8gY2hlY2suIEJhc2VkIG9uIHRoZSBuYW1lIEkgbWlnaHQgYXNzdW1lIGl04oCZcyBhIHN0YW5kYXJkIGV2ZW50IGhhbmRsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmlfaGFuZGxlX2V2ZW50cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MjUzPXN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2NtZF9yZXNwb25zZShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0yNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MjY1OnN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2V2ZW50cyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTI2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTM3Nj12b2lkIG54cHdpZmlfbWFpbl9wcm9jZXNzKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTQ0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzo0NDU6XHRcdGRpZF93b3JrIHw9IG54cHdpZmlfaGFuZGxlX2V2ZW50cyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy00NDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTk5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgbnhwd2lmaV9tYWluX3Byb2Nlc3NgIFdvcmtmbG93KioKCk9rYXksIHNvIGBueHB3aWZpX21haW5fcHJvY2Vzc2AgaXMgdGhlICpoZWFydCogb2YgdGhlIG1hdHRlci4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgd29ya2VyLCB0aGUgbWFpbiB0aHJlYWQgb2YgZXhlY3V0aW9uIGZvciB3aGF0ZXZlciB0aGlzIGBueHB3aWZpYCBzeXN0ZW0gaXMuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRoZSBhYnNvbHV0ZWx5IGNydWNpYWwgb25lLCBpczogKldobyoga2lja3MgdGhpcyB0aGluZyBvZmY/IFdoZXJlIGRvZXMgdGhlIGV4ZWN1dGlvbiBmbG93ICpiZWdpbio/IFdpdGhvdXQga25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbiBvciBwcm9jZXNzLCBJJiMzOTttIGVzc2VudGlhbGx5IG9wZXJhdGluZyBpbiBhIGJsYWNrIGJveC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIHdpbGwgcHJvdmlkZSBhIHdlYWx0aCBvZiBpbmZvcm1hdGlvbi4gSXMgaXQgdHJpZ2dlcmVkIGJ5IGFuIGludGVycnVwdCwgYSB0aW1lciwgYSB1c2VyIGNvbW1hbmQsIGFub3RoZXIgcHJvY2VzcyBhbHRvZ2V0aGVyPyBUaGUgYW5zd2VycyB0byB0aG9zZSBxdWVzdGlvbnMgd2lsbCBndWlkZSBldmVyeXRoaW5nIGVsc2UuIE15IGltbWVkaWF0ZSBuZWVkIGlzIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2sgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgdGhlIHRyaWdnZXJzIG9mIGBueHB3aWZpX21haW5fcHJvY2Vzc2AuIFRoYXTigJlzIHRoZSBjcml0aWNhbCBwaWVjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnhwd2lmaV9tYWluX3Byb2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTM2NT1zdGF0aWMgYm9vbCBueHB3aWZpX3B1bXBfY29tbWFuZChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0zNzUtLyogTWFpbiBsb29wOiBJUlEvUlgvQ01EL0VWRU5UOyB3YWtlIGNhcmQ7IFRYOyBQUyBudWxsOyBleGl0IGlmIGlkbGUuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6Mzc2OnZvaWQgbnhwd2lmaV9tYWluX3Byb2Nlc3Moc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0zNzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xMzAyPXN0YXRpYyB2b2lkIG54cHdpZmlfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTEzMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTMxMjovKiBNYWluIHdvcms6IHJ1biBueHB3aWZpX21haW5fcHJvY2VzcygpLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTEzMTMtc3RhdGljIHZvaWQgbnhwd2lmaV9tYWluX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xMzE5LVx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTMyMDpcdG54cHdpZmlfbWFpbl9wcm9jZXNzKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTEzMjEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaD0xMzE3PWludCBueHB3aWZpX3NldF90eF9wb3dlcihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xMzE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oOjEzMjA6dm9pZCBueHB3aWZpX21haW5fcHJvY2VzcyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xMzIxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM4NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBTeXprYWxsZXIgSW50ZXJhY3Rpb24gd2l0aCB0aGUgbnhwd2lmaSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbnhwd2lmaSBkcml2ZXIgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHN5emthbGxlci4gVGhlIGNvcmUgaWRlYSBpcyB0aGF0IHRoZSBkcml2ZXIgcmVsaWVzIG9uIGEgd29ya3F1ZXVlIGZvciBoYW5kbGluZyBoYXJkd2FyZSBldmVudHMsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlLiBIb3dldmVyLCB0aGUgZHJpdmVyJiMzOTtzIGFzc29jaWF0aW9uIHdpdGggU0RJTyBpbW1lZGlhdGVseSByYWlzZXMgYSBjcml0aWNhbCBxdWVzdGlvbjogaG93ICpwcmVjaXNlbHkqIGRvZXMgc3l6a2FsbGVyIHRyaWdnZXIgdGhpcz8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IFNESU8gZHJpdmVycyBjYW4gYmUgdHJpY2t5IGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBvZnRlbiByZXF1aXJpbmcgc3BlY2lmaWMgZW11bGF0aW9uIG9yIGFsdGVybmF0aXZlIGludGVyZmFjZXMuCgpUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHRoZSBwcmVzZW5jZSBvZiBhbiBTRElPIGVtdWxhdG9yIHdpdGhpbiBzeXprYWxsZXImIzM5O3MgY2FwYWJpbGl0aWVzLiBPciBtYXliZSB0aGlzIGlzbiYjMzk7dCBleGNsdXNpdmVseSBhbiBTRElPIGRyaXZlcj8gQ291bGQgdGhlcmUgYmUgVVNCIG9yIFBDSWUgdmFyaWFudHMgb2YgdGhlIG54cHdpZmkgZHJpdmVyIGFzIHdlbGw/CgpXYWl0IGEgbWludXRlLCBJIG5lZWQgdG8gZ2V0IGJhY2sgaW4gZm9jdXMuIEkgb25seSByZW1lbWJlciBzZWVpbmcgYE5YUFdJRklfU0RJT2AgaW4gdGhlIEtjb25maWcgZmlsZSwgc28gSSBwcm9iYWJseSBuZWVkIHRvIHJlLWV4YW1pbmUgdGhlIGZpbGUgcGF0aHMuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdCBVU0Igb3IgUENJZSB2ZXJzaW9ucyBvZiB0aGlzIGRyaXZlciBldmVuICpleGlzdCogd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2Njc6bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY2OC1tb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5NDkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgbnhwd2lmaV9pbml0X21vZHVsZWAqKgoKT2theSwgc28gYG54cHdpZmlfaW5pdF9tb2R1bGVgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gYG1haW4uY2AuIFRoYXQmIzM5O3MgYSBiaXQgdW5leHBlY3RlZDsgSSB1c3VhbGx5IGV4cGVjdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gdG8gYmUgbW9yZSBtb2R1bGFyLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJcyBpdCBqdXN0IHJlZ2lzdGVyaW5nIGEgZHJpdmVyLCBvciBpcyBpdCBzZXR0aW5nIHVwIGhhcmR3YXJlLCBpbml0aWFsaXppbmcgZGF0YSBzdHJ1Y3R1cmVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gR2l2ZW4gaXRzIG5hbWUsIEkmIzM5O2QgKmd1ZXNzKiBpdCYjMzk7cyBXaUZpLXJlbGF0ZWQsIGJ1dCBJIHNob3VsZG4mIzM5O3QganVtcCB0byBhbnkgY29uY2x1c2lvbnMuIExldCBtZSBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGNhbGxzIHRvIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGJlIHVzZWZ1bCB0byBrbm93LiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUga2V5IHN0ZXBzIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN0YXJ0dXAgcHJvY2Vzcy4gVW5kZXJzdGFuZGluZyB0aGF0IHdpbGwgYmUga2V5IHRvIHdvcmtpbmcgd2l0aCB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjUwOlx0bnhwd2lmaV9pbml0X21vZHVsZSh2b2lkKVxuMTY1MTpcdHtcbjE2NTI6XHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG4xNjUzOlx0XHRueHB3aWZpX2RlYnVnZnNfaW5pdCgpO1xuMTY1NDpcdCNlbmRpZlxuMTY1NTpcdFx0cmV0dXJuIDA7XG4xNjU2Olx0fVxuMTY1NzpcdFxuMTY1ODpcdC8qIE1vZHVsZSBleGl0OiByZW1vdmUgZGVidWdmcyBpZiBlbmFibGVkLiAqL1xuMTY1OTpcdHN0YXRpYyB2b2lkXG4xNjYwOlx0bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuMTY2MTpcdHtcbjE2NjI6XHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG4xNjYzOlx0XHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XG4xNjY0Olx0I2VuZGlmXG4xNjY1Olx0fVxuMTY2NjpcdFxuMTY2NzpcdG1vZHVsZV9pbml0KG54cHdpZmlfaW5pdF9tb2R1bGUpO1xuMTY2ODpcdG1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xuMTY2OTpcdFxuMTY3MDpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7TlhQIEludGVybmF0aW9uYWwgTHRkLlwmIzM0Oyk7XG4xNjcxOlx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O05YUCBXaUZpIERyaXZlciB2ZXJzaW9uIFwmIzM0OyBWRVJTSU9OKTtcbjE2NzI6XHRNT0RVTEVfVkVSU0lPTihWRVJTSU9OKTtcbjE2NzM6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODU0MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgU0RJTyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gYG1haW4uY2AgaXMganVzdCBzZXR0aW5nIHVwIGRlYnVnZnMsIHdoaWNoIGlzIGV4cGVjdGVkLiBCdXQgd2hlcmUmIzM5O3MgdGhlIGFjdHVhbCBidXMgZHJpdmVyIGZvciB0aGUgU0RJTyBpbnRlcmZhY2U/IEkgbmVlZCB0byBmaW5kIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBpcyBgc2Rpby5jYC4gSG9wZWZ1bGx5LCBpdCYjMzk7cyB0aGVyZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIFNESU8gZnVuY3Rpb25hbGl0eSByZXNpZGVzLiBUaW1lIHRvIGRpdmUgaW4gYW5kIHNlZSB3aGF0IGBzZGlvLmNgIGhhcyB0byBvZmZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzUxCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgU0RJTyBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IFNESU8gZHJpdmVyIHJlZ2lzdHJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgcGxhY2UgSSBhbHdheXMgc3RhcnQsIGlzIHRoZSBjb3JlIG9mIHRoZSBkcml2ZXI6IGBzZGlvLmNgLiBUaGF0IGZpbGUgaXMgdGhlIGNlbnRyYWwgaHViIGZvciB0aGUgU0RJTyBzdWJzeXN0ZW0uIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgbG9jYXRlIHRoZSBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgIGZ1bmN0aW9uLCBhcyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyJiMzOTtzIGludGVyZmFjZSB0byB0aGUgY29yZSBmcmFtZXdvcmsgbGllcy4gS25vd2luZyB0aGlzIGZ1bmN0aW9uIHdpbGwgdGVsbCBtZSBob3cgdGhlIGRldmljZSBkcml2ZXIgaXMgZ29pbmcgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgU0RJTyBzdWJzeXN0ZW0gYXQgYSBmdW5kYW1lbnRhbCBsZXZlbC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgYm91bmQgdG8gdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQgaW4gdGhhdCBwcm9jZXNzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwMDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIHRoZSBTRElPIERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgU0RJTyBkcml2ZXIgaXMgZ2V0dGluZyByZWdpc3RlcmVkIGluIHRoZSBzeXN0ZW0uIFRoZSBmbG93IGlzbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLiBMZXQgbWUgcXVpY2tseSB6ZXJvIGluIG9uIHdoZXJlIHRoZSBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIGBueHB3aWZpYCBkaXJlY3RvcnkuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGEgZ3JlcCBvciBmaW5kIGNvbW1hbmQgdG8gc2VhcmNoIHRoZSBzb3VyY2UgdHJlZSBhbmQgcGlucG9pbnQgdGhlIGV4YWN0IGZpbGUgYW5kIGxpbmUgd2hlcmUgdGhhdCBkcml2ZXIgcmVnaXN0cmF0aW9uIGhhcHBlbnMuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyMTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBTRElPIERyaXZlciBSZWdpc3RyYXRpb24qKgoKSG1tLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgKmhvdyogdGhpcyBTRElPIGRyaXZlciBpcyBiZWluZyByZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbC4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBmaXJzdCBzdGVwIHdoZW4gZGVidWdnaW5nIHNvbWV0aGluZyBsaWtlIHRoaXMuIExldCYjMzk7cyBzZWUuLi4gdGhlIHF1aWNrZXN0IHJvdXRlIGlzIHByb2JhYmx5IHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgc291cmNlIGNvZGUuIFdoZXJlIGRvIHdlIGZpbmQgdGhhdCByZWdpc3RyYXRpb24gbWFnaWM/IE15IGluc3RpbmN0IHNheXMgaXQmIzM5O2xsIGJlIGluIHRoZSBtYWluIGBzZGlvLmNgIGZpbGUsIHdoZXJlIHRoZSBjb3JlIFNESU8gZnVuY3Rpb25hbGl0eSByZXNpZGVzLiBOb3csIGxldCYjMzk7cyBsb29rIGZvciB0aGUgc3RhbmRhcmQgcmVnaXN0cmF0aW9uIG1hY3JvcywgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IGJlaW5nIGVtcGxveWVkIGhlcmUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyB3ZSB3YW50IHRvIGxvb2sgZm9yIGVpdGhlciBgbW9kdWxlX2luaXRgIOKAkyB0aGF0JiMzOTtzIG9mdGVuIHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgZHJpdmVyIHJlZ2lzdHJhdGlvbiDigJMgb3IgcGVyaGFwcyBkaXJlY3RseSBmb3Igc29tZXRoaW5nIGxpa2UgYHNkaW9fZHJpdmVyYCBpdHNlbGYsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIGl0LiBUaGF0IHdvdWxkIGJlIHRoZSBkcml2ZXIgc3RydWN0dXJlIGRlY2xhcmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCBpbiBgc2Rpby5jYCBmb3IgdGhvc2UsIHNoYWxsIHdlPyBUaGF0JiMzOTtsbCBnaXZlIHVzIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGUgd2hvbGUgdGhpbmcgaXMgc2V0IHVwLCBhbmQgd2hlcmUgdGhlIGVudHJ5IHBvaW50cyBtaWdodCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2Rpb19kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTQ2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgbnhwd2lmaV9zZGlvX3BtX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jOjQ3MTpzdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIG54cHdpZmlfc2RpbyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy00NzItXHQubmFtZSA9IFwmIzM0O254cHdpZmlfc2Rpb1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9MjI5Mz1zdGF0aWMgc3RydWN0IG54cHdpZmlfaWZfb3BzIHNkaW9fb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jOjIzMjE6bW9kdWxlX3NkaW9fZHJpdmVyKG54cHdpZmlfc2Rpbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMjMyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MTAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0NzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGFuIFNESU8gRHJpdmVyJiMzOTtzIFJlYWNoYWJpbGl0eSBpbiBhIEZ1enppbmcgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG1vZHVsZV9zZGlvX2RyaXZlcihueHB3aWZpX3NkaW8pO2AsIHdoaWNoIHRlbGxzIG1lIHRoaXMgaXMgYW4gU0RJTyBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgZG9lcyBTeXprYWxsZXIgZXZlbiBoYXZlIGFuIFNESU8gZW11bGF0b3I/IEJlY2F1c2UgaWYgbm90LCBob3cgZGlkIGl0IHRyaWdnZXIgdGhpcyBjb25kaXRpb24/IFN5emthbGxlciYjMzk7cyBzdHJlbmd0aHMgYXJlIGluIGVtdWxhdGluZyBoYXJkd2FyZSwgYnV0IEkmIzM5O20gZHJhd2luZyBhIGJsYW5rIG9uIFNESU8uCgpJdCBjYW4mIzM5O3QgYmUgVVNCIOKAkyB0aGVyZSYjMzk7cyBubyBgdXNiLmNgIGhlcmUuIEFuZCBhIFBDSWUgZHJpdmVyIGlzIG91dCB0b28uIFdhaXQsIHRoZXJlJiMzOTtzIGBtYWM4MDIxMV9od3NpbWAgZm9yIG1hYzgwMjExLCBidXQgdGhpcyBpcyBhIGNmZzgwMjExIGRyaXZlciBzbyBJIGRvdWJ0IGl0LiBDb3VsZCB0aGVyZSBiZSBzb21lIHNvcnQgb2YgdmlydHVhbCBTRElPIGhvc3QgY29udHJvbGxlciBJJiMzOTttIG1pc3NpbmcgaW4gdGhlIGtlcm5lbD8gVGltZSB0byBsb29rIGludG8gdGhhdC4uLiBvciBjb3VsZCBTeXprYWxsZXIgYmUgbGV2ZXJhZ2luZyBgbWFjODAyMTFfaHdzaW1gIHRvIHNvbWVob3cgdHJpZ2dlciBjZmc4MDIxMSBldmVudHM/IE5vLCB0aGlzIGlzIGEgZGVkaWNhdGVkIGhhcmR3YXJlIGRyaXZlciwgYG54cHdpZmlgLgoKT2theSwgaWYgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNESU8gZHJpdmVyLCBhbmQgdGhlcmUmIzM5O3Mgbm8gU0RJTyBlbXVsYXRpb24sIHRoZW4gdGhpcyBjb2RlIHBhdGggaXMgc2ltcGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0aGUgc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnQgdGhhdCBTeXprYWxsZXIgdXRpbGl6ZXMuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhvdWdoLiBMZXQgbWUgZG91YmxlLWNoZWNrOiBpcyB0aGVyZSBhbnkgdmlydHVhbCBTRElPIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGtlcm5lbCwgb3Igc29tZSBvdGhlciBTeXprYWxsZXIgbWVjaGFuaXNtIGZvciBTRElPIGluamVjdGlvbj8gTm9wZSwgSSYjMzk7bSBwcmV0dHkgc3VyZSBTeXprYWxsZXImIzM5O3MgYnJlYWQgYW5kIGJ1dHRlciBpcyBVU0IgKHRocm91Z2ggYGR1bW15X2hjZGApLCBQQ0kgKHZpYSBRRU1VKSwgYW5kIG90aGVycy4uLiBidXQgbm90IFNESU8sIGF0IGxlYXN0IGluIGEgZGlyZWN0IHNlbnNlLgoKV2FpdCBhIHNlY29uZC4uLiBjb3VsZCB0aGlzIGJlIGEgcGF0Y2ggdGhhdCBTeXprYWxsZXIgaXMgKnRlc3RpbmcqIHJhdGhlciB0aGFuICpmaW5kaW5nKj8gVGhhdCYjMzk7cyBpdCEgVGhlIHByb21wdCBtZW50aW9ucyAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7LiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoaXMgbWVhbnMgdGhpcyBwYXRjaCB3YXMgc2VudCB0byB0aGUgbWFpbGluZyBsaXN0LCBhbmQgc3l6Ym90IGlzIGp1c3QgYmVpbmcgdXNlZCB0byB2YWxpZGF0ZSBpdCwgbm90IHRvIGFjdHVhbGx5IGZpbmQgdGhlIGJ1Zy4gU28sIHRoZSBjb2RlICppcyogaGFyZHdhcmUtc3BlY2lmaWMuIEFuZCwgc2luY2Ugbm8gU0RJTyBlbXVsYXRpb24gZXhpc3RzLCBTeXprYWxsZXIgd29uJiMzOTt0IGJlIGFibGUgdG8gcmVhY2ggdGhpcyBidWcuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgaXMgYGR1bW15X3NkaW9gIG9yIGBzZGlvX2R1bW15YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L2Nhdml1bS10aHVuZGVyeC5jPTU3PXN0YXRpYyBpbnQgdGh1bmRlcl9tbWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYy0xMzQtXHRcdCAqIG1tY19vZl9wYXJzZSBhbmQgZGV2bSogcmVxdWlyZSBvbmUgZGV2aWNlIHBlciBzbG90LlxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYzoxMzU6XHRcdCAqIENyZWF0ZSBhIGR1bW15IGRldmljZSBwZXIgc2xvdCBhbmQgc2V0IHRoZSBub2RlIHBvaW50ZXIgdG9cbmRyaXZlcnMvbW1jL2hvc3QvY2F2aXVtLXRodW5kZXJ4LmMtMTM2LVx0XHQgKiB0aGUgc2xvdC4gVGhlIGVhc2llc3Qgd2F5IHRvIGdldCB0aGlzIGlzIHVzaW5nXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYz00NTA9c3RhdGljIHZvaWQgbGl0ZXhfbW1jX3NldF9pb3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYy00NTUtXHQgKiBUaGUgU0Qgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyBhdCBsZWFzdCA3NCBpZGxlIGNsb2NrcyBiZWZvcmUgQ01EMC5cbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmM6NDU2Olx0ICogVGhlc2UgZHVtbXkgY3ljbGVzIGlzIGdlbmVyYXRlZCBieSB3cml0aW5nIExJVEVYX1BIWV9JTklUSUFMSVpFLlxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYy00NTctXHQgKi9cbi0tXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYz0yMDE9c3RhdGljIHZvaWQgbW1jX29tYXBfc2VsZWN0X3Nsb3Qoc3RydWN0IG1tY19vbWFwX3Nsb3QgKnNsb3QsIGludCBjbGFpbWVkKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jLTIzNS1cbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jOjIzNjpcdFx0LyogRG9pbmcgdGhlIGR1bW15IHJlYWQgaGVyZSBzZWVtcyB0byB3b3JrIGFyb3VuZCBzb21lIGJ1Z1xuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmMtMjM3LVx0XHQgKiBhdCBsZWFzdCBpbiBPTUFQMjR4eCBzaWxpY29uIHdoZXJlIHRoZSBjb21tYW5kIHdvdWxkIG5vdFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYz0yMDg9c3RhdGljIHZvaWQgc2Rfc2VuZF9jbWRfZ2V0X3JzcChzdHJ1Y3QgcmVhbHRla19wY2lfc2RtbWMgKmhvc3QsXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jLTMwMS1cdFx0ICogVGhlIGNvbnRyb2xsZXIgb2ZmbG9hZHMgdGhlIGxhc3QgYnl0ZSB7Q1JDLTcsIGVuZCBiaXQgMSYjMzk7YjF9XG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmM6MzAyOlx0XHQgKiBvZiByZXNwb25zZSB0eXBlIFIyLiBBc3NpZ24gZHVtbXkgQ1JDLCAwLCBhbmQgZW5kIGJpdCB0byB0aGVcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYy0zMDMtXHRcdCAqIGJ5dGUocHRyWzE2XSwgZ29lcyBpbnRvIHRoZSBMU0Igb2YgcmVzcFszXSBsYXRlcikuXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jPTI4NT1zdGF0aWMgdm9pZCBzZF9zZW5kX2NtZF9nZXRfcnNwKHN0cnVjdCBydHN4X3VzYl9zZG1tYyAqaG9zdCxcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmMtNDI1LVx0XHQgKiBUaGUgY29udHJvbGxlciBvZmZsb2FkcyB0aGUgbGFzdCBieXRlIHtDUkMtNywgZW5kIGJpdCAxJiMzOTtiMX1cbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYzo0MjY6XHRcdCAqIG9mIHJlc3BvbnNlIHR5cGUgUjIuIEFzc2lnbiBkdW1teSBDUkMsIDAsIGFuZCBlbmQgYml0IHRvIHRoZVxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jLTQyNy1cdFx0ICogYnl0ZShwdHJbMTZdLCBnb2VzIGludG8gdGhlIExTQiBvZiByZXNwWzNdIGxhdGVyKS5cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jLTIxNC1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmM6MjE1Oi8qIHRoZSBjb250cm9sbGVyIGhhcyBkdW1teSBwYWQgZm9yIGNsb2NrIGxvb3BiYWNrICovXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jLTIxNi0jZGVmaW5lIEVTREhDX0ZMQUdfRFVNTVlfUEFEXHRcdEJJVCgxOSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM9MTAxPXN0YXRpYyB1MzIgcHhhdjFfaXJxKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCB1MzIgaW50bWFzaylcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTA2LVx0aWYgKHB4YXYyX2hvc3QtXHUwMDNlc2Rpb19tcnEgXHUwMDI2XHUwMDI2IChpbnRtYXNrIFx1MDAyNiBTREhDSV9JTlRfQ01EX01BU0spKSB7XG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM6MTA3Olx0XHQvKiBUaGUgZHVtbXkgQ01EMCBmb3IgdGhlIFNESU8gd29ya2Fyb3VuZCBqdXN0IGNvbXBsZXRlZCAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEwOC1cdFx0c2RoY2lfd3JpdGVsKGhvc3QsIGludG1hc2sgXHUwMDI2IFNESENJX0lOVF9DTURfTUFTSywgU0RIQ0lfSU5UX1NUQVRVUyk7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jPTEyMz1zdGF0aWMgdm9pZCBweGF2MV9yZXF1ZXN0X2RvbmUoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMzYtXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM6MTM3Olx0XHQvKiBDbG9jayBpcyBub3cgc3RvcHBlZCwgc28gcmVzdGFydCBpdCBieSBzZW5kaW5nIGEgZHVtbXkgQ01EMCAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTEzOC1cdFx0cHhhdjJfaG9zdCA9IHNkaGNpX3BsdGZtX3ByaXYoc2RoY2lfcHJpdihob3N0KSk7XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jLTE0OS1cbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYzoxNTA6XHRcdC8qIERvbiYjMzk7dCBmaW5pc2ggdGhpcyByZXF1ZXN0IHVudGlsIHRoZSBkdW1teSBDTUQwIGZpbmlzaGVzICovXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTUxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jPTY1Mz1zdGF0aWMgaW50IHNkaGNpX3ByZV9kbWFfdHJhbnNmZXIoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jLTY4OS1cdFx0XHRcdFx0ICAgbW1jX2dldF9kbWFfZGlyKGRhdGEpKTtcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2kuYzo2OTA6XHRcdC8qIEp1c3QgYSBkdW1teSB2YWx1ZSAqL1xuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jLTY5MS1cdFx0c2dfY291bnQgPSAxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI3MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBueHB3aWZpYCBUcmlnZ2VyKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGRlZmluaXRlbHkgbm8gc2lnbiBvZiBhIGBkdW1teV9zZGlvYCBtb2R1bGUsIG9yIGFueXRoaW5nIGV4cGxpY2l0bHkgbmFtZWQgdGhhdCB3YXkuIFRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gTm93LCBJIG5lZWQgdG8gcmV0aGluayB0aGlzIGFwcHJvYWNoLiBJIGhhdmUgdG8gZmlndXJlIG91dCB3aGF0IGFjdHVhbGx5ICpkb2VzKiB0cmlnZ2VyIHRoZSBgbnhwd2lmaWAgZHJpdmVyLiBJcyB0aGVyZSBhbm90aGVyIHBhdGgsIHNvbWUgb3RoZXIgbWVjaGFuaXNtLCBJJiMzOTttIG92ZXJsb29raW5nPyBUaW1lIHRvIGNpcmNsZSBiYWNrLiBJ4oCZbGwgZ28gc3RyYWlnaHQgYmFjayB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ2AuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBob2xkcyBhbnkgY2x1ZXMgYWJvdXQgd2hhdCBhY3RpdmF0ZXMgdGhpcyB0aGluZy4gR290dGEgZXhhbWluZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyBjYXJlZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOWFBXSUZJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6Mjpjb25maWcgTlhQV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6MTI6Y29uZmlnIE5YUFdJRklfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O05YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2ODQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBOWFAgV2ktRmkgRHJpdmVyIEFyY2hpdGVjdHVyZSoqCgpBbHJpZ2h0LCBzbyBgTlhQV0lGSWAuLi4gdGhhdCYjMzk7cyB0aGUgY29yZSBtb2R1bGUsIHRoZSBoZWFydCBvZiB0aGUgTlhQIFdpLUZpIGltcGxlbWVudGF0aW9uLiBBbmQgYE5YUFdJRklfU0RJT2AsIHRoYXQmIzM5O3MgdGhlIFNESU8gZHJpdmVyIHNwZWNpZmljYWxseS4gSG1tLCB0aGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEJ1dCBpcyBTRElPIHRoZSAqb25seSogaW50ZXJmYWNlIHN1cHBvcnRlZD8gSSBuZWVkIHRvIGJlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSYjMzk7dmUgZ290IHRvIGNvbnNpZGVyIGFsbCB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLgoKVG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSwgSSBzaG91bGQgcmVhbGx5IGRpZyBpbnRvIHRoZSBkcml2ZXIgZGlyZWN0b3J5OiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL2AuIFRoYXQgZGlyZWN0b3J5IHNob3VsZCBob2xkIHRoZSBjb21wbGV0ZSBzZXQgb2YgZHJpdmVycyBidWlsdCBvbiB0aGF0IGBueHB3aWZpYCBjb3JlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3BlY2lmaWMgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9ucy4gTWF5YmUgdGhlcmUmIzM5O3MgYSBVU0IgZHJpdmVyLCBhIFBDSWUgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSB0aGF0IGlzbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLiBBIHF1aWNrIHNjYW4gb2YgdGhhdCBhcmVhIHdpbGwgZWl0aGVyIGNvbmZpcm0gbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIG9yIHJldmVhbCBvdGhlciBhcmNoaXRlY3R1cmVzIEkgbmVlZCB0byBhY2NvdW50IGZvci4gR29vZCwgbGV0JiMzOTtzIGdvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IG51bGwsCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7bnhwd2lmaSYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDE0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBueHB3aWZpYCBEcml2ZXIgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzb21ldGhpbmcganVtcHMgb3V0LiBJdCBzZWVtcyBgbnhwd2lmaWAgaXMgdGhlIG9ubHkgc3ViZGlyZWN0b3J5IGluIGBueHAvYC4gQnV0IEkgYWxzbyBrbm93IHRoZXJlJiMzOTtzIGEgYG13aWZpZXhgIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvYC4gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBkcml2ZXIgYWx0b2dldGhlciwgdGhvdWdoLiBUaGUgcmVhbCBpc3N1ZSBpcyBgbnhwd2lmaWAg4oCTIGl0JiMzOTtzIGFuIFNESU8gZHJpdmVyLCBhbmQgc2VlbXMgc3BlY2lmaWMgdG8gdGhlIElXNjF4IGhhcmR3YXJlLiBUaGUgYmlnIHByb2JsZW0gaGVyZSBpcyB0aGF0IHRoZXJlJiMzOTtzIG5vIFNESU8gZW11bGF0b3IgYXZhaWxhYmxlIGluIFFFTVUgb3Igc3l6a2FsbGVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIHNvIEkmIzM5O20gdGhpbmtpbmcsIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgdGhhdCBjb2RlJiMzOTtzIGJhc2ljYWxseSB1bnJlYWNoYWJsZS4KCkJ1dCBJJiMzOTttIG5vdCBnb2luZyB0byBnaXZlIHVwIHRoYXQgZWFzaWx5LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIE15IG5leHQgdGhvdWdodCBpczogY2FuIHRoaXMgZHJpdmVyIHNvbWVob3cgYmUgbG9hZGVkIGFuZCBpbml0aWFsaXplZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZT8gTWF5YmUgdGhlcmUmIzM5O3MgYSB3YXkuIExldCYjMzk7cyBkaWcgaW50byBgc2Rpby5jYCBhbmQgc3BlY2lmaWNhbGx5IGNoZWNrIHRoZSBgbnhwd2lmaV9zZGlvX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCB0byBmaWd1cmluZyBvdXQgYSB3b3JrYXJvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX3NkaW9fcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTEyMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6MTIzOm54cHdpZmlfc2Rpb19wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jLCBjb25zdCBzdHJ1Y3Qgc2Rpb19kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTEyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTQ3MT1zdGF0aWMgc3RydWN0IHNkaW9fZHJpdmVyIG54cHdpZmlfc2RpbyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDczLVx0LmlkX3RhYmxlID0gbnhwd2lmaV9pZHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6NDc0Olx0LnByb2JlID0gbnhwd2lmaV9zZGlvX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTQ3NS1cdC5yZW1vdmUgPSBueHB3aWZpX3NkaW9fcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzcxNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYG54cHdpZmlgIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyB0aGUgU0RJTyBjb3JlIGNhbGxzIGBueHB3aWZpX3NkaW9fcHJvYmVgIHdoZW4gaXQgZGV0ZWN0cyBhIGNvbXBhdGlibGUgU0RJTyBkZXZpY2UuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBCdXQgdGhlIHByb2JsZW0gaXMsIGlmIHRoZXJlJiMzOTtzIG5vIHZpcnR1YWwgU0RJTyBob3N0IGNvbnRyb2xsZXIgb3IgYSBtZXRob2QgdG8gc2ltdWxhdGUgdGhlIHByZXNlbmNlIG9mIGFuIFNESU8gZGV2aWNlLCB0aGlzIHByb2JlIGZ1bmN0aW9uIHdpbGwgKm5ldmVyKiBiZSBjYWxsZWQuIENvbnNlcXVlbnRseSwgdGhlIHdob2xlIGRyaXZlciBpbml0aWFsaXphdGlvbiBpcyBibG9ja2VkLiBUaGF0IG1lYW5zIGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgLCB0aGUgZnVuY3Rpb24gSSYjMzk7bSB0cnlpbmcgdG8gcmVhY2gsIHdpbGwgcmVtYWluIHVucmVhY2hhYmxlLiBEYW1uLgoKV2FpdCBhIHNlY29uZOKApiBpcyB0aGlzIHRoZSBvbmx5IGVudHJ5IHBvaW50PyBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZSBpbnRvIHRoZSBkcml2ZXI/IENvdWxkIGBueHB3aWZpYCBhY3R1YWxseSBiZSBhIG1hYzgwMjExIGRyaXZlcj8gVGhhdCYjMzk7cyB1bmxpa2VseS4gSXQgbG9va3MgbGlrZSBpdCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIGFuZCBJJiMzOTttIHNlZWluZyBjYWxscyBsaWtlIGBjZmc4MDIxMV9uZXdfc3RhYCwgc28gcHJvYmFibHkgbm90LgoKQWxyaWdodCwgbGV0JiMzOTtzIHN0ZXAgYmFjay4gQ2FuIHN5emthbGxlciBzb21laG93IGluamVjdCBldmVudHMsIG9yIHRyaWdnZXIgc29tZXRoaW5nIHZpYSBhIGRlYnVnZnMgaW50ZXJmYWNlLCBwZXJoYXBzPyBUaGF0JiMzOTtzIGEgY2xhc3NpYyBieXBhc3MsIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBUaW1lIHRvIGNoZWNrIGBkZWJ1Z2ZzLmNgIHdpdGhpbiB0aGUgYG54cHdpZmlgIHNvdXJjZS4gTWF5YmUgSSBjYW4gZmluZCBhIHdheSBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVidWdmcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZT0zMj1ueHB3aWZpLXkgJiM0Mzs9IDExaC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZTozMzpueHB3aWZpLSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gZGVidWdmcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9NYWtlZmlsZS0zNC1vYmotJChDT05GSUdfTlhQV0lGSSkgJiM0Mzs9IG54cHdpZmkub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM9MjM1MD1zdHJ1Y3Qgd2lyZWxlc3NfZGV2ICpueHB3aWZpX2FkZF92aXJ0dWFsX2ludGYoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jLTI1MTEtI2lmZGVmIENPTkZJR19ERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYzoyNTEyOlx0bnhwd2lmaV9kZXZfZGVidWdmc19pbml0KHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYy0yNTEzLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM9MjUzMz1pbnQgbnhwd2lmaV9kZWxfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYy0yNTM5LSNpZmRlZiBDT05GSUdfREVCVUdfRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM6MjU0MDpcdG54cHdpZmlfZGV2X2RlYnVnZnNfcmVtb3ZlKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYy0yNTQxLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MzogKiBueHB3aWZpOiBkZWJ1Z2ZzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjg6I2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9MTY9c3RhdGljIGNoYXIgKmJzc19tb2Rlc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0zMC0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjMxOiAqIGRlYnVnZnMgXCYjMzQ7aW5mb1wmIzM0OyByZWFkIGhhbmRsZXI6IGR1bXAgZHJpdmVyIG5hbWUvdmVyc2lvbiwgaW50ZXJmYWNlLCBCU1MgbW9kZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0zMi0gKiBsaW5rIHN0YXRlLCBNQUMsIGNvdW50ZXJzOyBTVEEgYWRkcyBTU0lEL0JTU0lEL2NoYW5uZWwvY291bnRyeS9yZWdpb24gYW5kXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTM2PW54cHdpZmlfaW5mb19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTE5LS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTIwOiAqIGRlYnVnZnMgXCYjMzQ7Z2V0bG9nXCYjMzQ7IHJlYWQgaGFuZGxlcjogZHVtcCBmaXJtd2FyZS84MDIuMTEgY291bnRlcnMgKHJldHJ5LCBSVFMvQUNLLCBkdXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTIxLSAqIGZyYWcsIG1jYXN0LCBGQ1MsIGJlYWNvbiBzdGF0cykuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTEyND1ueHB3aWZpX2dldGxvZ19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTg4LS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTg5OiAqIGRlYnVnZnMgXCYjMzQ7aGlzdG9ncmFtXCYjMzQ7IHJlYWQgaGFuZGxlcjogcmVwb3J0IHNhbXBsZSBjb3VudCBhbmQgcGVyLXJhdGUvU05SL25vaXNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTkwLSAqIGZsb29yL3NpZ25hbCBzdHJlbmd0aCBoaXN0b2dyYW1zLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz0yODI9c3RhdGljIHN0cnVjdCBueHB3aWZpX2RlYnVnX2luZm8gaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0yODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6Mjg0Oi8qIGRlYnVnZnMgXCYjMzQ7ZGVidWdcJiMzNDsgcmVhZCBoYW5kbGVyOiBkdW1wIGFkYXB0ZXIgZGVidWcgaW5mbyBhbmQgQkEvcmVvcmRlciB0YWJsZXMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMjg1LXN0YXRpYyBzc2l6ZV90XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTMxMj1zdGF0aWMgdTMyIHNhdmVkX3JlZ190eXBlLCBzYXZlZF9yZWdfb2Zmc2V0LCBzYXZlZF9yZWdfdmFsdWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTMxNC0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjMxNTogKiBkZWJ1Z2ZzIFwmIzM0O3JlZ3Jkd3JcJiMzNDsgd3JpdGUgaGFuZGxlcjogcGFyc2UgXHUwMDNjdHlwZSBvZmZzZXQgdmFsdWVcdTAwM2UgYW5kIHN0b3JlIGZvclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTMxNi0gKiByZWFkYmFjay9JTy5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9MzE5PW54cHdpZmlfcmVncmR3cl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzUyLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MzUzOiAqIGRlYnVnZnMgXCYjMzQ7cmVncmR3clwmIzM0OyByZWFkIGhhbmRsZXI6IHBlcmZvcm0gcGVuZGluZyByZWdpc3RlciByZWFkL3dyaXRlIGFuZCByZXR1cm5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0zNTQtICogXHUwMDNjdHlwZSBvZmZzZXQgdmFsdWVcdTAwM2UuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTM1Nz1ueHB3aWZpX3JlZ3Jkd3JfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo0MDY6LyogZGVidWdmcyBcJiMzNDtkZWJ1Z19tYXNrXCYjMzQ7IHJlYWQgaGFuZGxlcjogc2hvdyBkcml2ZXIgZGVidWcgbWFzay4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00MDctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQwOT1ueHB3aWZpX2RlYnVnX21hc2tfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo0MzA6LyogZGVidWdmcyBcJiMzNDtkZWJ1Z19tYXNrXCYjMzQ7IHdyaXRlIGhhbmRsZXI6IHNldCBkcml2ZXIgZGVidWcgbWFzay4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00MzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQzMz1ueHB3aWZpX2RlYnVnX21hc2tfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NDU3Oi8qIGRlYnVnZnMgXCYjMzQ7dmVyZXh0XCYjMzQ7IHdyaXRlIGhhbmRsZXI6IHNlbGVjdCBleHRlbmRlZCB2ZXJzaW9uIHN0cmluZy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NTgtc3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz00NTk9bnhwd2lmaV92ZXJleHRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NDc1Oi8qIGRlYnVnZnMgXCYjMzQ7dmVyZXh0XCYjMzQ7IHJlYWQgaGFuZGxlcjogc2hvdyBleHRlbmRlZCB2ZXJzaW9uIHN0cmluZy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NzYtc3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz00Nzc9bnhwd2lmaV92ZXJleHRfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQ5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo0OTI6LyogZGVidWdmcyBcJiMzNDttZW1yd1wmIzM0OyB3cml0ZSBoYW5kbGVyOiByZWFkL3dyaXRlIGZpcm13YXJlIG1lbW9yeSAoYWRkciwgdmFsdWUpLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQ5My1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQ5ND1ueHB3aWZpX21lbXJ3X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy01MzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NTM1Oi8qIGRlYnVnZnMgXCYjMzQ7bWVtcndcJiMzNDsgcmVhZCBoYW5kbGVyOiBzaG93IGxhc3QgbWVtb3J5IGFjY2VzcyByZXN1bHQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTM2LXN0YXRpYyBzc2l6ZV90XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTU1Nj1zdGF0aWMgdTMyIHNhdmVkX29mZnNldCA9IC0xLCBzYXZlZF9ieXRlcyA9IC0xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTU1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo1NTg6LyogZGVidWdmcyBcJiMzNDtyZGVlcHJvbVwmIzM0OyB3cml0ZSBoYW5kbGVyOiBzZXQgRUVQUk9NIG9mZnNldC9sZW5ndGggdG8gcmVhZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy01NTktc3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz01NjA9bnhwd2lmaV9yZGVlcHJvbV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjU5MjovKiBkZWJ1Z2ZzIFwmIzM0O3JkZWVwcm9tXCYjMzQ7IHJlYWQgaGFuZGxlcjogZHVtcCBFRVBST00gYnl0ZXMgZnJvbSBzYXZlZCBvZmZzZXQvbGVuZ3RoLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTU5My1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTU5ND1ueHB3aWZpX3JkZWVwcm9tX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1YnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02MzMtLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo2MzQ6ICogZGVidWdmcyBcJiMzNDtoc2NmZ1wmIzM0OyB3cml0ZSBoYW5kbGVyOiBjb25maWd1cmUgaG9zdC1zbGVlcCAoY29uZGl0aW9ucy9ncGlvL2dhcCkgb3JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02MzUtICogY2FuY2VsLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz02Mzg9bnhwd2lmaV9oc2NmZ193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTY5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo2OTI6LyogZGVidWdmcyBcJiMzNDtoc2NmZ1wmIzM0OyByZWFkIGhhbmRsZXI6IHNob3cgY3VycmVudCBob3N0LXNsZWVwIGNvbmZpZ3VyYXRpb24uICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNjkzLXN0YXRpYyBzc2l6ZV90XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTk3MD1ueHB3aWZpX3R3dF9pbmZvcm1hdGlvbl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTk5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo5OTg6I2RlZmluZSBOWFBXSUZJX0RGU19BRERfRklMRShuYW1lKSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCNuYW1lLCAwNjQ0LCAgICAgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy05OTktXHRcdFx0XHQgICBwcml2LVx1MDAzZWRmc19kZXZfZGlyLCBwcml2LCAgICAgICAgICAgICBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz0xMDM4PU5YUFdJRklfREZTX0ZJTEVfV1JJVEVfT1BTKHR3dF9pbmZvcm1hdGlvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTAzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDQwOi8qIENyZWF0ZSBwZXItbmV0ZGV2IGRlYnVnZnMgZGlyZWN0b3J5IGFuZCBmaWxlcy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDQxLXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDQyOm54cHdpZmlfZGV2X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNDc6XHRwcml2LVx1MDAzZWRmc19kZXZfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA0OC1cdFx0XHRcdFx0ICAgICAgIG54cHdpZmlfZGZzX2Rpcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA3MTovKiBSZW1vdmUgcGVyLW5ldGRldiBkZWJ1Z2ZzIGRpcmVjdG9yeSBhbmQgZmlsZXMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA3Mi12b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA3MzpueHB3aWZpX2Rldl9kZWJ1Z2ZzX3JlbW92ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNzg6XHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUocHJpdi1cdTAwM2VkZnNfZGV2X2Rpcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA3OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDgxOi8qIENyZWF0ZSB0b3AtbGV2ZWwgZGVidWdmcyBkaXJlY3RvcnkuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4Mi12b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA4MzpueHB3aWZpX2RlYnVnZnNfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwODUtXHRpZiAoIW54cHdpZmlfZGZzX2RpcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDg2Olx0XHRueHB3aWZpX2Rmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoXCYjMzQ7bnhwd2lmaVwmIzM0OywgTlVMTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDg5Oi8qIFJlbW92ZSB0b3AtbGV2ZWwgZGVidWdmcyBkaXJlY3RvcnkuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA5MC12b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA5MTpueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA5MzpcdGRlYnVnZnNfcmVtb3ZlKG54cHdpZmlfZGZzX2Rpcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA5NC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NDY9RVhQT1JUX1NZTUJPTF9HUEwoX254cHdpZmlfZGJnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2NDg6LyogTW9kdWxlIGluaXQ6IGluaXQgZGVidWdmcyBpZiBlbmFibGVkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NDktc3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NTA9bnhwd2lmaV9pbml0X21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjUyLSNpZmRlZiBDT05GSUdfREVCVUdfRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjUzOlx0bnhwd2lmaV9kZWJ1Z2ZzX2luaXQoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjU0LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2NTg6LyogTW9kdWxlIGV4aXQ6IHJlbW92ZSBkZWJ1Z2ZzIGlmIGVuYWJsZWQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY1OS1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjYyLSNpZmRlZiBDT05GSUdfREVCVUdfRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjYzOlx0bnhwd2lmaV9kZWJ1Z2ZzX3JlbW92ZSgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjQtI2VuZGlmXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oPTE0MTc9dm9pZCBueHB3aWZpX2RldmR1bXBfdG1vX2Z1bmModW5zaWduZWQgbG9uZyBmdW5jdGlvbl9jb250ZXh0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmgtMTQxOS0jaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyMDp2b2lkIG54cHdpZmlfZGVidWdmc19pbml0KHZvaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oOjE0MjE6dm9pZCBueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKHZvaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oLTE0MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyMzp2b2lkIG54cHdpZmlfZGV2X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaDoxNDI0OnZvaWQgbnhwd2lmaV9kZXZfZGVidWdmc19yZW1vdmUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmgtMTQyNS0jZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5MTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVHJvdWJsZXNob290aW5nIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gdGVzdCB0aGlzIFNESU8gZHJpdmVyLCBhbmQgSSYjMzk7bSBoaXR0aW5nIGEgd2FsbC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byB1c2UgdGhlIGRlYnVnZnMgaW50ZXJmYWNlLCBidXQgdGhhdCBvbmx5IGFsbG93cyBmb3IgYmFzaWMgcmVnaXN0ZXIgYW5kIG1lbW9yeSBtYW5pcHVsYXRpb24g4oCTIG5vdCBkaXJlY3QgZXZlbnQgaW5qZWN0aW9uLCB3aGljaCBJIG5lZWQgZm9yIHByb3BlciB0ZXN0aW5nLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcm9hZGJsb2NrLgoKVGhlbiBpdCBoaXQgbWU6IHRoaXMgaXMgYW4gU0RJTyBkcml2ZXIsIGFuZCBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgU0RJTyBlbXVsYXRvcnMgcmVhZGlseSBhdmFpbGFibGUuIElmIEkmIzM5O20gd29ya2luZyB3aXRoaW4gUUVNVSBvciBHQ0UsIGFuZCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gZW11bGF0ZSB0aGUgU0RJTyBidXMsIHRoZW4gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cy4gVGhhdCYjMzk7cyBhIHNlcmlvdXMgcHJvYmxlbSBmb3IgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZS4KClNvLCBmaXJzdCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBNYXliZSBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLiBJcyB0aGVyZSBzb21lIHNvcnQgb2YgdmlydHVhbCBTRElPIGltcGxlbWVudGF0aW9uIEkgaGF2ZW4mIzM5O3QgY29tZSBhY3Jvc3M/IE9yIGRvZXMgU3l6a2FsbGVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIG9mZmVyIGEgYmFja2Rvb3IgbWV0aG9kIGZvciBTRElPIGluamVjdGlvbiB0aGF0IEkgaGF2ZW4mIzM5O3QgdXNlZCB5ZXQ/CgpOb3BlLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhbiBTRElPIGVtdWxhdG9yLiBJdCYjMzk7cyBnb3QgVVNCIHZpYSBkdW1teV9oY2QsIFBDSSB2aWEgUUVNVSwgYW5kIG90aGVyIGVtdWxhdGVkIGJ1c2VzLCBidXQgbm90IFNESU8uIERhbW4uIFRoaXMgaXMgYSBjcnVjaWFsIGdhcCBpbiBvdXIgdGVzdCBpbmZyYXN0cnVjdHVyZS4KCkFscmlnaHQsIHdoYXQgYWJvdXQgYSBoYXJkd2FyZSBzaW11bGF0aW9uPyBJJiMzOTttIHRyeWluZyB0byBmaW5kIGFuIGVxdWl2YWxlbnQgdG8gYG1hYzgwMjExX2h3c2ltYCBmb3IgU0RJTy4gSXMgdGhlcmUgYSBzaW1pbGFyIGRyaXZlciB0aGF0IHNpbXVsYXRlcyBTRElPIGhhcmR3YXJlPyBUaGUgYW5zd2VyIGlzIG5vLiBUaGlzIGlzIGdvaW5nIHRvIG1ha2UgdGVzdGluZyBxdWl0ZSBkaWZmaWN1bHQuCgpNYXliZSBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgdGhlIHdyb25nIHdheS4gT2theSwgbGV0JiMzOTtzIGJhY2sgdXAgYW5kIGNoZWNrIGRyaXZlcnMgZm9yIGFsdGVybmF0ZSBidXNlcy4gSSYjMzk7bGwgZ28gdGhyb3VnaCB0aGUgd2lyZWxlc3MgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkgYWdhaW4uIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgc2VlIGlmIEkgY2FuIGZpbmQgYW4gYWx0ZXJuYXRlIHNvbHV0aW9uIEkmIzM5O3ZlIG1pc3NlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7MTFhYy5jJiMzNDssCiAgICAmIzM0OzExYWMuaCYjMzQ7LAogICAgJiMzNDsxMWF4LmMmIzM0OywKICAgICYjMzQ7MTFheC5oJiMzNDssCiAgICAmIzM0OzExaC5jJiMzNDssCiAgICAmIzM0OzExbi5jJiMzNDssCiAgICAmIzM0OzExbi5oJiMzNDssCiAgICAmIzM0OzExbl9hZ2dyLmMmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuaCYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmMmIzM0OywKICAgICYjMzQ7MTFuX3J4cmVvcmRlci5oJiMzNDssCiAgICAmIzM0O2NmZy5oJiMzNDssCiAgICAmIzM0O2NmZzgwMjExLmMmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuaCYjMzQ7LAogICAgJiMzNDtjZnAuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuYyYjMzQ7LAogICAgJiMzNDtjbWRldnQuaCYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZXRodG9vbC5jJiMzNDssCiAgICAmIzM0O2Z3LmgmIzM0OywKICAgICYjMzQ7aWUuYyYjMzQ7LAogICAgJiMzNDtpbml0LmMmIzM0OywKICAgICYjMzQ7am9pbi5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttYWluLmgmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c3RhX2NmZy5jJiMzNDssCiAgICAmIzM0O3N0YV9jbWQuYyYjMzQ7LAogICAgJiMzNDtzdGFfZXZlbnQuYyYjMzQ7LAogICAgJiMzNDtzdGFfcnguYyYjMzQ7LAogICAgJiMzNDtzdGFfdHguYyYjMzQ7LAogICAgJiMzNDt0eHJ4LmMmIzM0OywKICAgICYjMzQ7dWFwX2NtZC5jJiMzNDssCiAgICAmIzM0O3VhcF9ldmVudC5jJiMzNDssCiAgICAmIzM0O3VhcF90eHJ4LmMmIzM0OywKICAgICYjMzQ7dXRpbC5jJiMzNDssCiAgICAmIzM0O3V0aWwuaCYjMzQ7LAogICAgJiMzNDt3bW0uYyYjMzQ7LAogICAgJiMzNDt3bW0uaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODU0CgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDY5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IE5YUCBJVzYxeCBTRElPIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYW5kIHRoZSBrZXkgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCYjMzk7cyBhbGwgYWJvdXQgYHNkaW8uY2AuIE5vIG1lbnRpb25zIG9mIFVTQiBvciBQQ0llLCBwdXJlbHkgU0RJTy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZyBpbiBteSBtaW5kIGJlY2F1c2Ugc3l6a2FsbGVyJiMzOTtzIHByZXR0eSBsaW1pdGVkIHdoZW4gaXQgY29tZXMgdG8gZW11bGF0aW5nIHNwZWNpYWxpemVkIGhhcmR3YXJlLiBJbiBmYWN0LCBJJiMzOTttIHByZXR0eSBzdXJlIHN5emthbGxlciAqY2FuJiMzOTt0KiBlbXVsYXRlIFNESU8gZGV2aWNlcyBhdCBhbGwuIFNvLCBpZiB0aGlzIGlzIHB1cmVseSBhbiBTRElPIGRyaXZlciwgdGhlIGNvZGUmIzM5O3MgZXNzZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgYW5kIHRoYXQmIzM5O3MgdXN1YWxseSBhICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgc2NlbmFyaW8uCgpCdXQgd2FpdCwgaG9sZCBvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gTGV0IG1lIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBDb3VsZCB0aGlzIHBhdGNoIGJlIHRlc3Rpbmcgc29tZXRoaW5nIHRoYXQgd2FzIHN1Ym1pdHRlZCBhcyBhIHBhdGNoLCBpbnRlbmRlZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmU/IFRoYXQgaGFwcGVucyBvZnRlbi4gVGhlIGluc3RydWN0aW9ucyBzdGF0ZSBjbGVhcmx5OiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFNwZWNpZmljYWxseSwgdGhlIGluc3RydWN0aW9ucyBjYWxsIG91dCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgbGlrZSBQQ0llIGNhcmRzLiBUaGF0JiMzOTtzIGEgZ29vZCBjb21wYXJpc29uLgoKVGhpcyBkcml2ZXIsIGBueHB3aWZpYCwgaXMgdmVuZG9yLXNwZWNpZmljIHRvIHRoZSBOWFAgSVc2MXggY2hpcHNldC4gQW5kIGl0JiMzOTtzIFNESU8tYmFzZWQuIEkga25vdyB0aGVyZSYjMzk7cyBubyBTRElPIGVtdWxhdGlvbiBpbiBRRU1VLiBRRU1VIGRvZXMgaGF2ZSBgc2RoY2ktcGNpYCwgd2hpY2ggaXMgYW4gU0QgaG9zdCBjb250cm9sbGVyLCBidXQgdGhhdCYjMzk7cyBmb3IgU0QgY2FyZHMgKGJsb2NrIGRldmljZXMpLCBub3QgU0RJTyBkZXZpY2VzIGxpa2UgV2ktRmkgY2FyZHMuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IG5vIGRpY2UhIFFFTVUganVzdCBkb2VzbiYjMzk7dCBzdXBwb3J0IHBsdWdnaW5nIGluIGEgdmlydHVhbCBTRElPIFdpLUZpIGNhcmQgdG8gYSB2aXJ0dWFsIGhvc3QgY29udHJvbGxlci4gRXZlbiBpZiBpdCBkaWQsIHRoZXJlJiMzOTtzIG5vIHdheSBmb3Igc3l6a2FsbGVyIHRvIGluamVjdCBTRElPIHBhY2tldHMgb3IgZW11bGF0ZSB0aGUgV2ktRmkgY2FyZCBpdHNlbGYuIEl0JiMzOTtzIGEgZGVhZCBlbmQuCgpJJiMzOTttIHN0YXJ0aW5nIHRvIGJ1aWxkIGEgc29saWQgY2FzZSwgbGV0IG1lIG1ha2UgaXQgd2F0ZXItdGlnaHQuIEkmIzM5O20gbW9kaWZ5aW5nIGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgIGluIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhICp2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyKiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBOWFAgSVc2MXguIEl0IGlzIGJhc2VkIG9uIHRoZSBTRElPIGJ1cyBiZWNhdXNlIHRoZXJlJiMzOTtzIGBzZGlvLmNgIGludm9sdmVkLiBTaW5jZSB0aGVyZSYjMzk7cyBubyB3YXkgdG8gZW11bGF0ZSBTRElPIFdpLUZpIGRldmljZXMgaW4gUUVNVSBvciBzeXprYWxsZXIsIHRoaXMgY29kZSBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGFueSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQgaXMgbm90IHdvcnRoIGZ1enppbmcuCgpMZXQgbWUgZG91YmxlIGNoZWNrIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYSBjaGFpbjogYG54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY2AgaXMgY2FsbGVkIGZyb20gYG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYG54cHdpZmlfaGFuZGxlX2V2ZW50c2AsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBueHB3aWZpX21haW5fcHJvY2Vzc2AsIHdoaWNoIHJ1bnMgaW4gYSB3b3JrcXVldWUuIFRoaXMgd29ya3F1ZXVlIGlzIHNjaGVkdWxlZCB3aGVuIGFuIGludGVycnVwdCBpcyByZWNlaXZlZCBmcm9tIHRoZSAqU0RJTyBkZXZpY2UqLiBXaXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgU0RJTyBkZXZpY2UsIHRoZSBkcml2ZXIgZG9lc24mIzM5O3QgZXZlbiBwcm9iZSwgdGhlIHdvcmtxdWV1ZSBpcyBuZXZlciBzZXQgdXAsIGFuZCB0aGlzIGVudGlyZSBwYXRoIGlzIG5ldmVyIGV4ZWN1dGVkLiBJdCYjMzk7cyBhbGwgZGVwZW5kZW50IG9uIHRoZSBTRElPIGJ1cy4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50LiBUaGlzIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwLiBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBueHB3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgTlhQIElXNjF4IGNoaXBzZXRzLiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIFNESU8gYnVzICh2aWEgYENPTkZJR19OWFBXSUZJX1NESU9gKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBTRElPIFdpRmkgZGV2aWNlcyBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciAodW5saWtlIFVTQiB2aWEgZHVtbXlfaGNkIG9yIG1hYzgwMjExIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBueHB3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgTlhQIElXNjF4IGNoaXBzZXRzLiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIFNESU8gYnVzICh2aWEgYENPTkZJR19OWFBXSUZJX1NESU9gKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBTRElPIFdpRmkgZGV2aWNlcyBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciAodW5saWtlIFVTQiB2aWEgZHVtbXlfaGNkIG9yIG1hYzgwMjExIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjE3LjAwNjg1NDUzOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4OTY2NDA1ODEzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBueHB3aWZpYCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgTlhQIElXNjF4IGNoaXBzZXRzLiBUaGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIFNESU8gYnVzICh2aWEgYENPTkZJR19OWFBXSUZJX1NESU9gKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciBTRElPIFdpRmkgZGV2aWNlcyBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciAodW5saWtlIFVTQiB2aWEgZHVtbXlfaGNkIG9yIG1hYzgwMjExIHZpYSBtYWM4MDIxMV9od3NpbSksIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTY6MTcuMDA2ODY1ODI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI1MDkyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZjE1NWRhN2Q0NThjOTk5NTliN2NlMjAxMDAzMmE5ZmY1NzNiNmVmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDMwIDE0OjU2OjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNcXG5pbmRleCBlZDhlMjRhZTljMGE3Li45ZjcxN2EzZDdlYzVkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNcXG5AQCAtMTA3LDExICsxMDcsMjkgQEAgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuIFxcdFxcdFxcdGxlbiA9IEVUSF9BTEVOO1xcbiBcXG4gXFx0XFx0aWYgKGxlbiAhPSAtMSkge1xcbitcXHRcXHRcXHR1MTYgZXZ0X2xlbiA9IGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pO1xcbitcXG4gXFx0XFx0XFx0c2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXMgPSBcXHUwMDI2ZXZlbnQtXFx1MDAzZWRhdGFbbGVuXTtcXG4gXFx0XFx0XFx0bGVuID0gKHU4ICopc2luZm8tXFx1MDAzZWFzc29jX3JlcV9pZXMgLVxcbiBcXHRcXHRcXHQgICAgICAodTggKilcXHUwMDI2ZXZlbnQtXFx1MDAzZWZyYW1lX2NvbnRyb2w7XFxuLVxcdFxcdFxcdHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9XFxuLVxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KGV2ZW50LVxcdTAwM2VsZW4pIC0gKHUxNilsZW47XFxuK1xcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBldmVudC1cXHUwMDNlbGVuIGlzIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZmlybXdhcmVcXG4rXFx0XFx0XFx0ICogYW5kIGlzIG5vdCBvdGhlcndpc2UgdmFsaWRhdGVkLiBSZWplY3QgYSBsZW5ndGhcXG4rXFx0XFx0XFx0ICogdGhhdCB1bmRlcmZsb3dzIHRoZSBoZWFkZXIgb3IgdGhhdCB3b3VsZCBwbGFjZVxcbitcXHRcXHRcXHQgKiB0aGUgYXNzb2NpYXRpb24gcmVxdWVzdCBJRXMgb3V0c2lkZSB0aGUgZml4ZWRcXG4rXFx0XFx0XFx0ICogZXZlbnRfYm9keVtdIGJ1ZmZlci5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdGlmIChldnRfbGVuIFxcdTAwM2MgbGVuIHx8XFxuK1xcdFxcdFxcdCAgICAodTggKilcXHUwMDI2ZXZlbnQtXFx1MDAzZWZyYW1lX2NvbnRyb2wgKyBldnRfbGVuIFxcdTAwM2VcXG4rXFx0XFx0XFx0ICAgIGFkYXB0ZXItXFx1MDAzZWV2ZW50X2JvZHkgKyBNQVhfRVZFTlRfU0laRSkge1xcbitcXHRcXHRcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJpbnZhbGlkIFNUQSBhc3NvYyBldmVudCBsZW5ndGhcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRrZnJlZShzaW5mbyk7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRzaW5mby1cXHUwMDNlYXNzb2NfcmVxX2llc19sZW4gPSBldnRfbGVuIC0gKHUxNilsZW47XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRjZmc4MDIxMV9uZXdfc3RhKHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNlaWVlZTgwMjExX3B0ciwgZXZlbnQtXFx1MDAzZXN0YV9hZGRyLCBzaW5mbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTY6MTcuNDM5OTYwODMxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjg5MjMwOTQyNzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYG54cHdpZmlgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIGZvciBOWFAgSVc2MXggY2hpcHNldHMuIFRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgU0RJTyBidXMgKHZpYSBgQ09ORklHX05YUFdJRklfU0RJT2ApLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIFNESU8gV2lGaSBkZXZpY2VzIGluIHN0YW5kYXJkIFFFTVUgb3Igc3l6a2FsbGVyICh1bmxpa2UgVVNCIHZpYSBkdW1teV9oY2Qgb3IgbWFjODAyMTEgdmlhIG1hYzgwMjExX2h3c2ltKSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiZjE1NWRhN2Q0NThjOTk5NTliN2NlMjAxMDAzMmE5ZmY1NzNiNmVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMTQ6NTY6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jXG5pbmRleCBlZDhlMjRhZTljMGE3Li45ZjcxN2EzZDdlYzVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jXG5AQCAtMTA3LDExICsxMDcsMjkgQEAgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXG4gXHRcdFx0bGVuID0gRVRIX0FMRU47XG4gXG4gXHRcdGlmIChsZW4gIT0gLTEpIHtcbitcdFx0XHR1MTYgZXZ0X2xlbiA9IGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbik7XG4rXG4gXHRcdFx0c2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyA9IFx1MDAyNmV2ZW50LVx1MDAzZWRhdGFbbGVuXTtcbiBcdFx0XHRsZW4gPSAodTggKilzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzIC1cbiBcdFx0XHQgICAgICAodTggKilcdTAwMjZldmVudC1cdTAwM2VmcmFtZV9jb250cm9sO1xuLVx0XHRcdHNpbmZvLVx1MDAzZWFzc29jX3JlcV9pZXNfbGVuID1cbi1cdFx0XHRcdGxlMTZfdG9fY3B1KGV2ZW50LVx1MDAzZWxlbikgLSAodTE2KWxlbjtcbitcbitcdFx0XHQvKlxuK1x0XHRcdCAqIGV2ZW50LVx1MDAzZWxlbiBpcyByZXBvcnRlZCBieSB0aGUgZGV2aWNlIGZpcm13YXJlXG4rXHRcdFx0ICogYW5kIGlzIG5vdCBvdGhlcndpc2UgdmFsaWRhdGVkLiBSZWplY3QgYSBsZW5ndGhcbitcdFx0XHQgKiB0aGF0IHVuZGVyZmxvd3MgdGhlIGhlYWRlciBvciB0aGF0IHdvdWxkIHBsYWNlXG4rXHRcdFx0ICogdGhlIGFzc29jaWF0aW9uIHJlcXVlc3QgSUVzIG91dHNpZGUgdGhlIGZpeGVkXG4rXHRcdFx0ICogZXZlbnRfYm9keVtdIGJ1ZmZlci5cbitcdFx0XHQgKi9cbitcdFx0XHRpZiAoZXZ0X2xlbiBcdTAwM2MgbGVuIHx8XG4rXHRcdFx0ICAgICh1OCAqKVx1MDAyNmV2ZW50LVx1MDAzZWZyYW1lX2NvbnRyb2wgKyBldnRfbGVuIFx1MDAzZVxuK1x0XHRcdCAgICBhZGFwdGVyLVx1MDAzZWV2ZW50X2JvZHkgKyBNQVhfRVZFTlRfU0laRSkge1xuK1x0XHRcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG4rXHRcdFx0XHRcdCAgICBcImludmFsaWQgU1RBIGFzc29jIGV2ZW50IGxlbmd0aFxcblwiKTtcbitcdFx0XHRcdGtmcmVlKHNpbmZvKTtcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdH1cbitcbitcdFx0XHRzaW5mby1cdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiA9IGV2dF9sZW4gLSAodTE2KWxlbjtcbiBcdFx0fVxuIFx0fVxuIFx0Y2ZnODAyMTFfbmV3X3N0YShwcml2LVx1MDAzZW5ldGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLCBldmVudC1cdTAwM2VzdGFfYWRkciwgc2luZm8sXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NjoxNy40Mzk5NjE3NjFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzEzOTMyMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmNgLiBMb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGluIGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJcyB0aGlzIGEgZHJpdmVyIGZvciBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZWFzaWx5IGVtdWxhdGVkLCBvciBhbSBJIGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGRldmljZSB0aGF0IHdpbGwgcmVxdWlyZSBtb3JlIGNvbXBsZXggc2V0dXAgZm9yIHRlc3Rpbmc/IExldCBtZSBzZWUuLi4gXCJueHB3aWZpXCIuLi4gYWgsIHJpZ2h0LCBpdCdzIGFuIE5YUCBXaS1GaSBkcml2ZXIuIFRoYXQgY2xhcmlmaWVzIHRoaW5ncy4gSSBrbm93IE5YUCwgc28gSSBoYXZlIGEgYmFzaWMgdW5kZXJzdGFuZGluZyBvZiB0aGVpciB3aXJlbGVzcyBvZmZlcmluZ3MuXG5cbk5vdywgSSBuZWVkIG1vcmUgc3BlY2lmaWNzLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5IHRvIGdldCBhIGJldHRlciBmZWVsLiBNeSBuZXh0IHN0ZXAgaXMgdG8gdXNlIGBncmVwcGVyYCB0byBkZXRlcm1pbmUgdGhlIHVuZGVybHlpbmcgYnVzIGFyY2hpdGVjdHVyZS4gS25vd2luZyB0aGUgYnVzIOKAkyBpcyBpdCBTRElPLCBQQ0llLCBVU0IsIGV0Yy4g4oCTIHdpbGwgc2lnbmlmaWNhbnRseSBpbmZvcm0gbXkgZGVidWdnaW5nIGFuZCB0ZXN0aW5nIHN0cmF0ZWd5IGRvd24gdGhlIHJvYWQuIFRoaXMgd2lsbCBoZWxwIG1lIGRldGVybWluZSB0aGUgYmVzdCB3YXkgdG8gZ2V0IHRoaXMgcGF0Y2ggdGVzdGVkIGFuZCBpbnRlZ3JhdGVkIGludG8gb3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzc0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTY6MjIuMTUzODk2Njc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTgzNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTUxNjAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM6ICogbnhwd2lmaSA4MDIuMTFhYyBoZWxwZXJzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQtICogQ29weXJpZ2h0IDIwMTEtMjAyNCBOWFBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz0zNj1zdGF0aWMgdTE2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM3Om54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0zOC1cXHRcXHRcXHRcXHQgIHUxNiBiYW5kcywgdTE2IG1jc19tYXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDItXFx0dTMyIHVzcl92aHRfY2FwX2luZm8gPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo0MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9Nzk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6ODA6bnhwd2lmaV9maWxsX3ZodF9jYXBfaW5mbyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04MS1cXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgzOlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz05Mz12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk0Om54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05NS1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwLCB1MTYgYmFuZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6OTc6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk4LVxcdHUxNiBtY3NfbWFwX3VzZXIsIG1jc19tYXBfcmVzcCwgbWNzX21hcF9yZXN1bHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAxLVxcdC8qIEZpbGwgVkhUIGNhcGFiaWxpdHkgaW5mby4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTAyOlxcdG54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8ocHJpdiwgdmh0X2NhcCwgYmFuZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxMjQ6XFx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyNS1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy5yeF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE0NjpcXHR0bXAgPSBueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUocHJpdiwgYmFuZHMsIG1jc19tYXBfcmVzdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ3LVxcdHZodF9jYXAtXFx1MDAzZXN1cHBfbWNzLnR4X2hpZ2hlc3QgPSBjcHVfdG9fbGUxNih0bXApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUwOmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFhY190bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTUxOlxcdFxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NDpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKnZodF9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19vcGVyX21vZGVfbnRmICpvcGVyX250ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTU2LVxcdHN0cnVjdCBpZWVlX3R5cGVzX29wZXJfbW9kZV9udGYgKmllZWVfb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqdmh0X29wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTg6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1OS1cXHR1OCBzdXBwX2Nod2Rfc2V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE2OS1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfY2FwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3MDpcXHRcXHR2aHRfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodGNhcCAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3MS1cXHRcXHRtZW1zZXQodmh0X2NhcCwgMCwgc2l6ZW9mKCp2aHRfY2FwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc0LVxcdFxcdFxcdGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc1OlxcdFxcdG1lbWNweSgodTggKil2aHRfY2FwICsgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3Ni1cXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTc5OlxcdFxcdG54cHdpZmlfZmlsbF92aHRfY2FwX3Rsdihwcml2LCBcXHUwMDI2dmh0X2NhcC1cXHUwMDNldmh0X2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTgwLVxcdFxcdFxcdFxcdFxcdCBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4Ny1cXHRcXHRpZiAocHJpdi1cXHUwMDNlYnNzX21vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxODg6XFx0XFx0XFx0dmh0X29wID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodF9vcGVyICopKmJ1ZmZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTg5LVxcdFxcdFxcdG1lbXNldCh2aHRfb3AsIDAsIHNpemVvZigqdmh0X29wKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTkyLVxcdFxcdFxcdHZodF9vcC1cXHUwMDNlaGVhZGVyLmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YoKnZodF9vcCkgLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTM6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xOTQtXFx0XFx0XFx0bWVtY3B5KCh1OCAqKXZodF9vcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE5NTpcXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk2LVxcdFxcdFxcdCAgICAgICAodTggKilic3NfZGVzYy1cXHUwMDNlYmNuX3ZodF9vcGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ1OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDYtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNDc6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYWNfdmh0X2NmZyAqY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI2NC0vKiBJbml0aWFsaXplIEJsb2NrQWNrIHBhcmFtZXRlcnMgZm9yIDExYWMuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI2NTp2b2lkIG54cHdpZmlfc2V0XzExYWNfYmFfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozOiAqIG54cHdpZmk6IDgwMi4xMWFjIChWSFQpIGRlZmluaXRpb25zXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaD0xND1lbnVtIHZodF9jZmdfbWlzY19jb25maWcge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNTppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI2OlxcdFxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNy1cXHRcXHRcXHRcXHR1OCAqKmJ1ZmZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI4OmludCBueHB3aWZpX2NtZF8xMWFjX2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yOS1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMwOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMxOnZvaWQgbnhwd2lmaV9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTMyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjovKiBueHB3aWZpOiA4MDIuMTFheCAoSEUpIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMy0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyNCBOWFBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTE6dm9pZCBueHB3aWZpX3VwZGF0ZV8xMWF4X2NhcChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMi1cXHRcXHRcXHQgICAgIHN0cnVjdCBod19zcGVjX2V4dGVuc2lvbiAqaHdfaGVfY2FwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0OlxcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3OlxcdHU4IGhlYWRlcl9sZW4gPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTgtXFx0dTE2IGRhdGFfbGVuID0gbGUxNl90b19jcHUoaHdfaGVfY2FwLVxcdTAwM2VoZWFkZXIubGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMi1cXHRpZiAoKGRhdGFfbGVuICsgaGVhZGVyX2xlbikgXFx1MDAzZSBzaXplb2YoYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMzpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQtXFx0XFx0XFx0ICAgIFxcXCJod19oZV9jYXAgdG9vIGJpZywgbGVuPSVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTpcXHRoZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopaHdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNy1cXHRcXHRoZV9jYXBfMmcgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozODpcXHRcXHRueHB3aWZpX2RiZ19kdW1wKGFkYXB0ZXIsIENNRF9ELCBcXFwiMi40RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzktXFx0XFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NS1cXHRcXHRhZGFwdGVyLVxcdTAwM2Vmd19iYW5kcyB8PSBCQU5EX0FBWDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY6XFx0XFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXFxcIjVHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00Ny1cXHRcXHRcXHRcXHQgYWRhcHRlci1cXHUwMDNlaHdfaGVfY2FwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3LVxcdFxcdFxcdCAgICAgICBzaXplb2YoYWRhcHRlci1cXHUwMDNlaHdfMmdfaGVfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4OlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OS1cXHRcXHRcXHRcXHRwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02My1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo2NDpcXHRcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjUtXFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl9oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjc5OmJvb2wgbnhwd2lmaV8xMWF4X2JhbmRjb25maWdfYWxsb3dlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo4MDpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy04MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk1OmludCBueHB3aWZpX2ZpbGxfaGVfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NjpcXHRcXHRcXHQgICAgc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk3LVxcdFxcdFxcdCAgICB1MTYgYmFuZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTk6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEwMDpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwMS1cXHR1MTYgcnhfbnNzLCB0eF9uc3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTA4LVxcdFxcdG1lbWNweShoZV9jYXAsIHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyX2hlX2NhcF9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDk6XFx0XFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTEwLVxcdFxcdHJldF9sZW4gPSBwcml2LVxcdTAwM2V1c2VyX2hlX2NhcF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTEyLVxcdFxcdG1lbWNweShoZV9jYXAsIHByaXYtXFx1MDAzZXVzZXJfMmdfaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcF9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMTM6XFx0XFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTE0LVxcdFxcdHJldF9sZW4gPSBwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI1LVxcdGZvciAobnNzID0gMTsgbnNzIFxcdTAwM2M9IDg7IG5zcysrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEyNjpcXHRcXHRjZmdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGhlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjc6XFx0XFx0aHdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGh3X2hlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjgtXFx0XFx0aWYgKHJ4X25zcyAhPSAwIFxcdTAwMjZcXHUwMDI2IG5zcyBcXHUwMDNlIHJ4X25zcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzAtXFx0XFx0aWYgKGh3X3ZhbHVlID09IE5PX05TU19TVVBQT1JUIHx8IGNmZ192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTMxOlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzMi1cXHRcXHRcXHRcXHRcXHQgICAgICAgTk9fTlNTX1NVUFBPUlQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzMtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzQ6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2VyeF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTM1LVxcdFxcdFxcdFxcdFxcdCAgICAgICBtaW4oY2ZnX3ZhbHVlLCBod192YWx1ZSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzOC1cXHRmb3IgKG5zcyA9IDE7IG5zcyBcXHUwMDNjPSA4OyBuc3MrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMzk6XFx0XFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQwOlxcdFxcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQxLVxcdFxcdGlmICh0eF9uc3MgIT0gMCBcXHUwMDI2XFx1MDAyNiBuc3MgXFx1MDAzZSB0eF9uc3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQzLVxcdFxcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NDpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ2LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ3OlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNldHhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0OC1cXHRcXHRcXHRcXHRcXHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYXhfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU2LVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTg6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpoZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNTktXFx0aW50IHJldF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjQ6XFx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2NTpcXHRyZXRfbGVuID0gbnhwd2lmaV9maWxsX2hlX2NhcF90bHYocHJpdiwgaGVfY2FwLCBic3NfZGVzYy1cXHUwMDNlYnNzX2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNjYtXFx0KmJ1ZmZlciArPSByZXRfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTcxOmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc2LVxcdHUxNiBjbWRfc2l6ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTc3OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTg2LVxcdCAgICBheF9jZmctXFx1MDAzZWhlX2NhcF9jZmcuZXh0X2lkID09IFdMQU5fRUlEX0VYVF9IRV9DQVBBQklMSVRZKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE4NzpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopaGVfY2ZnLVxcdTAwM2V0bHY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4OC1cXHRcXHRoZWFkZXItXFx1MDAzZXR5cGUgPSBjcHVfdG9fbGUxNihheF9jZmctXFx1MDAzZWhlX2NhcF9jZmcuaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNS1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jZmcgKmhlX2NmZyA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuYXhfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDY6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICpoZWFkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNy1cXHR1MTYgbGVmdF9sZW4sIHRsdl90eXBlLCB0bHZfbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDgtXFx0dTggZXh0X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMDk6XFx0c3RydWN0IG54cHdpZmlfMTFheF9oZV9jYXBfY2ZnICpoZV9jYXAgPSBcXHUwMDI2YXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMS1cXHRsZWZ0X2xlbiA9IGxlMTZfdG9fY3B1KHJlc3AtXFx1MDAzZXNpemUpIC0gc2l6ZW9mKCpoZV9jZmcpIC0gU19EU19HRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIxMjpcXHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopaGVfY2ZnLVxcdTAwM2V0bHY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDItXFx0XFx0bGVmdF9sZW4gLT0gKHNpemVvZigqaGVhZGVyKSArIHRsdl9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNDM6XFx0XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKSgodTggKiloZWFkZXIgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNpemVvZigqaGVhZGVyKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTE6aW50IG54cHdpZmlfY21kXzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1MzpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1NTpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU2LVxcdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXFx1MDAyNmNtZC1cXHUwMDNlcGFyYW1zLmF4X2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU3LVxcdHUxNiBjbWRfc2l6ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU4OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfc3JfY21kICpzcl9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1OTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICp0bHY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MDpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICpiZWFtX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYxOlxcdHN0cnVjdCBueHB3aWZpXzExYXhfaHRjX2NtZCAqaHRjX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjYyOlxcdHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICp0eG1vaV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MzpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICp0b2x0aW1lX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY0OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfdHhvcF9jbWQgKnR4b3BfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjU6XFx0c3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKnNldF9ic3JwX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY2OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfbGxkZV9jbWQgKmxsZGVfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc1LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNzY6XFx0XFx0c3JfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfc3JfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc4OlxcdFxcdHRsdiA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICopaGVfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3OS1cXHRcXHR0bHYtXFx1MDAzZWhlYWRlci50eXBlID0gY3B1X3RvX2xlMTYoc3JfY21kLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yODUtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfQkVBTV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjg2OlxcdFxcdGJlYW1fY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfYmVhbV9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5MS1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9IVENfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5MjpcXHRcXHRodGNfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfaHRjX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk3LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT01JX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTg6XFx0XFx0dHhtb2lfY21kID1cXHQoc3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwMy1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9PQlNTX1RPTFRJTUVfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMwNDpcXHRcXHR0b2x0aW1lX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTAtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPUFJUU19TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzExOlxcdFxcdHR4b3BfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfdHhvcF9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxNy1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TRVRfQlNSUF9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzE4OlxcdFxcdHNldF9ic3JwX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzIzLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0xMREVfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMyNDpcXHRcXHRsbGRlX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjktXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzMwOlxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMzEtXFx0XFx0XFx0ICAgIFxcXCIlczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDE6aW50IG54cHdpZmlfcmV0XzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0MzpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NTpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ2LVxcdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXFx1MDAyNnJlc3AtXFx1MDAzZXBhcmFtcy5heF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19kYXRhICp0bHY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNTItXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM1MzpcXHRcXHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNTQtXFx0XFx0bWVtY3B5KGF4X2NtZC1cXHUwMDNlcGFyYW0uc3JfY2ZnLnBhcmFtLm9ic3NfcGRfb2Zmc2V0Lm9mZnNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODMtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg0OlxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODUtXFx0XFx0XFx0ICAgIFxcXCIlczogVW5rbm93biBzdWIgY29tbWFuZDogJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozOTM6c3RhdGljIHU4IG54cHdpZmlfaXNfYXBfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEwOmJvb2wgbnhwd2lmaV9pc18xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDExOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTM6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE0OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNjpcXHRpZiAoYnNzX2Rlc2MgXFx1MDAyNlxcdTAwMjYgKCFueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChic3NfZGVzYykpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNzpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cXHRcXHRcXHQgICAgXFxcIkFQIGRvbid0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyMi1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kIFxcdTAwMjYgQkFORF9BKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMzpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNC1cXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNTpcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI2LVxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjctXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDI4OlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI5LVxcdFxcdFxcdHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMwOlxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzEtXFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM0LVxcdGlmICghKGh3X2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MzU6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzYtXFx0XFx0XFx0ICAgIFxcXCJGVyBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQwLVxcdGlmICghKHVzZXJfaGVfY2FwLVxcdTAwM2VoZV9tYWNfY2FwWzBdIFxcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0MTpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0Mi1cXHRcXHRcXHQgICAgXFxcIlVTRVIgSEVfTUFDX0NBUCBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NDk6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTE6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUyLVxcdHU4IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU2LVxcdFxcdGlmIChwcml2LVxcdTAwM2Vjb25maWdfYmFuZHMgXFx1MDAyNiBCQU5EX0FBWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDU3OlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTgtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTk6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2MC1cXHRcXHRyZXQgPSB1c2VyX2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY2OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2Ny1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY4OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MDpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDcxLVxcdHN0cnVjdCBob3N0X2NtZF90d3RfY2ZnICp0d3RfY2ZnX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy50d3RfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzI6XFx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MzpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKnR3dF90ZWFyZG93bjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc0OlxcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NTpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc2OlxcdHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICpidHd0X2FwX2NvbmZpZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc3LVxcdHU4IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDg3LVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9TRVRVUF9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDg4OlxcdFxcdHR3dF9zZXR1cCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDg5LVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDkxOlxcdFxcdG1lbXNldCh0d3Rfc2V0dXAsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkyLVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlaW1wbGljaXQgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA0LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlYmNuX21pc3NfdGhyZXNob2xkID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTA1OlxcdFxcdGNtZF9zaXplICs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwNy1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfVEVBUkRPV05fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUwODpcXHRcXHR0d3RfdGVhcmRvd24gPSAoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUwOS1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTAtXFx0XFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTExOlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMi1cXHRcXHR0d3RfdGVhcmRvd24tXFx1MDAzZWZsb3dfaWRlbnRpZmllciA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTE3LVxcdFxcdFxcdHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF90ZWFyZG93bi50ZWFyZG93bl9hbGxfdHd0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MTg6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyMTpcXHRcXHR0d3RfcmVwb3J0ID0gKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyMzpcXHRcXHRtZW1zZXQodHd0X3JlcG9ydCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI0LVxcdFxcdHR3dF9yZXBvcnQtXFx1MDAzZXR5cGUgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9JTkZPUk1BVElPTl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI4OlxcdFxcdHR3dF9pbmZvcm1hdGlvbiA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI5LVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMC1cXHRcXHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzE6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMyLVxcdFxcdHR3dF9pbmZvcm1hdGlvbi1cXHUwMDNlZmxvd19pZGVudGlmaWVyID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzUtXFx0XFx0XFx0dHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X2luZm9ybWF0aW9uLnN1c3BlbmRfZHVyYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzNjpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM3LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzgtXFx0Y2FzZSBOWFBXSUZJXzExQVhfQlRXVF9BUF9DT05GSUdfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcXHRcXHRidHd0X2FwX2NvbmZpZyA9IChzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDAtXFx0XFx0XFx0XFx0IHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0MS1cXHRcXHRtZW1zZXQoYnR3dF9hcF9jb25maWcsIDB4MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0My1cXHRcXHRidHd0X2FwX2NvbmZpZy1cXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2MjpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2NC1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NjU6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ni1cXHRcXHRcXHQgICAgXFxcIlVua25vd24gc3ViIGlkOiAlZFxcXFxuXFxcIiwgdHd0X2NmZy1cXHUwMDNlc3ViX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3NTppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzYtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3NzpcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4Ni1cXHQgICAgdHd0X2NmZy1cXHUwMDNlc3ViX2lkID09IE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4NzpcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTg4OlxcdFxcdFxcdChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopdHd0X2NmZ19jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTA6XFx0XFx0bWVtY3B5KFxcdTAwMjZ0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzogKiBueHB3aWZpOiA4MDIuMTFheCBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXFx1MDAzZVxcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcXHUwMDI2IDB4Myk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVxcdHUxNiB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXFx0XFx0XFx0ICAgIHUxNiBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzogKiBueHB3aWZpOiA4MDIuMTFoIGhlbHBlcnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoxMzp2b2lkIG54cHdpZmlfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MTk6aW50IG54cHdpZmlfaXNfMTFoX2FjdGl2ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jPTI1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MjY6bnhwd2lmaV8xMWhfcHJvY2Vzc19pbmZyYV9qb2luKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsIHU4ICoqYnVmZmVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjI3OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6Mjk6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICppZV9oZWFkZXI7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjIyLjI0OTQ4NDM5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTc5MDM3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIG54cHdpZmkgRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgbnhwd2lmaWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHN1cHBvcnRlZCBidXMgdHlwZXMuIFRvIGRvIHRoYXQsIHRoZSBtb3N0IGxvZ2ljYWwgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gYW5kIGJ1aWxkIGZpbGVzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIGFuZCB0aGUgYE1ha2VmaWxlYCB3aXRoaW4gdGhlIGRyaXZlcidzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGluIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL01ha2VmaWxlYC4gVGhlIGBLY29uZmlnYCBmaWxlIHdpbGwgbGlrZWx5IGRlZmluZSB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCByZXZlYWxpbmcgdGhlIGJ1cyBpbnRlcmZhY2VzIGl0J3MgZGVzaWduZWQgdG8gd29yayB3aXRoLCB3aGlsZSB0aGUgYE1ha2VmaWxlYCB3aWxsIGxpa2VseSBpbmNsdWRlIHRoZSBzb3VyY2UgZmlsZXMgYW5kIGxpYnJhcmllcy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGRyaXZlciBpcyBhcmNoaXRlY3RlZC4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBpbnRlcmZhY2UgYW5kIG1ha2UgdGhlIG5lY2Vzc2FyeSBhZGp1c3RtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NjoyNi4zNDczOTEzNzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNTU2ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOWFBXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBOWFBXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6MTI6Y29uZmlnIE5YUFdJRklfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk5YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjI2LjQ0ODk1NDUwM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNzg3ODg4NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZSBmb3IgdGhlc2UgY29tcG9uZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBOWFBXSUZJX1NESU9gIGFuZCBgTlhQV0lGSWAuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0OlxuXG4qICAgKipEaXJlY3QgRGVwZW5kZW5jaWVzOioqIFdoYXQgZXhhY3RseSBkb2VzIGBOWFBXSUZJX1NESU9gICpuZWVkKiBmcm9tIGBOWFBXSUZJYD8gSXMgaXQgYSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSBkZXBlbmRlbmN5LCBhIGRyaXZlciwgYW4gQVBJIGNhbGwsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBLbm93aW5nIHRoZSBzcGVjaWZpYyBuYXR1cmUgb2YgdGhpcyBjb25uZWN0aW9uIGlzIGNyaXRpY2FsLlxuKiAgICoqSW5kaXJlY3QgRGVwZW5kZW5jaWVzOioqIEJleW9uZCB0aGUgZGlyZWN0IGxpbmssIGFyZSB0aGVyZSBhbnkgb3RoZXIgY29tcG9uZW50cywgbGlicmFyaWVzLCBvciBjb25maWd1cmF0aW9ucyB0aGF0ICpib3RoKiBkZXBlbmQgb24/IFRoaXMgY291bGQgcmV2ZWFsIHBvdGVudGlhbCBjb25mbGljdHMgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIEZvciBleGFtcGxlLCBhcmUgdGhlcmUgc2hhcmVkIG1lbW9yeSByZWdpb25zLCBpbnRlcnJ1cHQgYXNzaWdubWVudHMsIG9yIHNoYXJlZCBjb25maWd1cmF0aW9uIGZpbGVzIGludm9sdmVkP1xuKiAgICoqSW1wbGllZCBEZXBlbmRlbmNpZXM6KiogSSdtIGFsc28gY29uc2lkZXJpbmcgYW55IGltcGxpZWQgZGVwZW5kZW5jaWVzLiBPZnRlbiwgdGhlIG5hbWVzIHRoZW1zZWx2ZXMgcHJvdmlkZSBjbHVlcy4gSXMgYFNESU9gIHN1Z2dlc3RpbmcgYW4gU0RJTyBpbnRlcmZhY2UgZGVwZW5kZW5jeT8gRG9lcyB0aGF0IHRoZW4gcmVseSBvbiBsb3dlci1sZXZlbCBoYXJkd2FyZSBwcmltaXRpdmVzLCBvciBhIHNwZWNpZmljIGJ1cyBkcml2ZXI/IEFuZCBob3cgZG9lcyB0aGF0IGludGVyYWN0aW9uIHdvcmsgd2l0aCB0aGUgYE5YUFdJRklgIGNvbXBvbmVudCBpbiB0aGlzIGNvbnRleHQ/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc2hhcmVkIHJlc291cmNlcz9cbiogICAqKkNvbnRleHR1YWwgRGVwZW5kZW5jaWVzOioqIEhvdyBkb2VzIHRoZSBidWlsZCBzeXN0ZW0gYW5kIGNvbmZpZ3VyYXRpb24gY29tZSBpbnRvIHBsYXk/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncywgb3Igc3BlY2lmaWMgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvdXIsIGludGVyYWN0aW9ucyBvciBhdmFpbGFiaWxpdHkgb2YgYE5YUFdJRklgIHRoYXQgdGhlbiBpbXBhY3RzIGBOWFBXSUZJX1NESU9gPyBJIHdhbnQgdG8gc2VlIHRoZSBjb25maWd1cmF0aW9uLlxuKiAgICoqUG90ZW50aWFsIEJvdHRsZW5lY2tzOioqIFdoYXQgYXJlIHRoZSBwb3NzaWJsZSByaXNrcyBoZXJlPyBDb3VsZCBhIGNoYW5nZSBpbiBgTlhQV0lGSWAgaW5hZHZlcnRlbnRseSBicmVhayBgTlhQV0lGSV9TRElPYD8gQXJlIHRoZXJlIHZlcnNpb25pbmcgY29uc3RyYWludHM/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3M/XG4qICAgKipNYWludGFpbmFiaWxpdHkgYW5kIFNjYWxhYmlsaXR5OioqIEknbSBhbHNvIHRoaW5raW5nIGFoZWFkIHRvIHRoZSBtYWludGVuYW5jZSBpbXBsaWNhdGlvbnMuIElzIHRoaXMgZGVwZW5kZW5jeSBjbGVhbiwgd2VsbC1kZWZpbmVkLCBhbmQgZWFzaWx5IHVuZGVyc3Rvb2Q/IFdpbGwgaXQgc2NhbGUgd2VsbCBpZiB3ZSBuZWVkIHRvIGFkZCBtb3JlIGZlYXR1cmVzIG9yIHN1cHBvcnQgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucz9cbiogICAqKkRlYnVnZ2luZyBBcHByb2FjaDoqKiBBcyBhbiBleHBlcnQsIEknZCB0aGVuIG1hcCBvdXQgaG93IEkgd291bGQgYmVnaW4gZGVidWdnaW5nIGFueSBpc3N1ZXMgZm91bmQgYnkgYXNraW5nIHF1ZXN0aW9ucy5cblxuU28sIHRoZSBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjb2RlIGFuZCBsb29rIGF0IGhvdyB0aGVzZSBjb21wb25lbnRzIGludGVyYWN0LiBMZXQncyBzdGFydCBkaWdnaW5nIGludG8gdGhlIGluY2x1ZGVzLCBidWlsZCBjb25maWd1cmF0aW9ucywgYW5kIGFueSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZS4gVGhpcyBkZXBlbmRlbmN5IG1hcHBpbmcgd2lsbCBiZSB0aGUgZm91bmRhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIHN5c3RlbSBhbmQgYW55IHBvdGVudGlhbCBtb2RpZmljYXRpb25zIG9yIG9wdGltaXphdGlvbnMgd2UgbWlnaHQgbmVlZCB0byBtYWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTYyNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjMxLjUyNzc0ODMyOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOWFBXSUZJXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXFxuICAgNzpcXHRcXHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXFxuICAgODpcXHRcXG4gICA5OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDEwOlxcdFxcdCAgbnhwd2lmaS5cXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE5YUFdJRklfU0RJT1xcbiAgMTM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE5YUFdJRkkgXFx1MDAyNlxcdTAwMjYgTU1DXFxuICAxNTpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAxNjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgMTk6XFx0XFx0ICBJVzYxeCBpbnRlcmZhY2UuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIyOlxcdFxcdCAgbnhwd2lmaV9zZGlvLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NjozMS41Mjc4MzY1OTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5NzkxMzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG54cHdpZmlgIERyaXZlciBhbmQgU3l6a2FsbGVyJ3MgUm9sZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG54cHdpZmlgIGRyaXZlciwgYW5kIGl0J3MgYW4gU0RJTyBpbXBsZW1lbnRhdGlvbiwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJBaCwgY29vbCwgd2UgY2FuIHByb2JhYmx5IGZ1enogdGhpcyB1c2luZyBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLlwiIEJ1dCB0aGVuIEkgcmVtZW1iZXIsIHRoaXMgaXMgYSAqZnVsbG1hYyogZHJpdmVyLiBJdCBoYXMgaXRzIG93biBmaXJtd2FyZSwgYW5kIHRoZSBkZXZpY2UgZmlybXdhcmUgaXRzZWxmIGlzIHJlcG9ydGluZyB0aGUgbGVuZ3RoIHZpYSBgZXZlbnQtXHUwMDNlbGVuYC4gVGhhdCBjaGFuZ2VzIHRoaW5ncy5cblxuV2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyIGRvZXNuJ3QgZGlyZWN0bHkgZW11bGF0ZSBTRElPIGRldmljZXMgYXMgZmFyIGFzIEkga25vdy4gSXQncyBub3QgZ29pbmcgdG8gYmUgZ2VuZXJhdGluZyBTRElPIHRyYW5zYWN0aW9ucyBkaXJlY3RseS4gQnV0LCBoYW5nIG9uLCBjb3VsZCBpdCBzdGlsbCBiZSBpbmplY3Rpbmcgc29tZXRoaW5nPyBMaWtlLCBzb21lIGZvcm0gb2YgcGFja2V0cyBvciBldmVudHMgaWYgdGhlcmUgaXMgYW4gZXhwbG9pdD8gSSBuZWVkIHRvIGNoZWNrLlxuXG5Pa2F5LCBsZXQgbWUgcmVwaHJhc2UgdGhhdC4gRG9lcyBzeXprYWxsZXIgZG8gKmFueSogU0RJTyBmdXp6aW5nIGF0IGFsbD8gTm8sIHRoYXQncyBub3QgcmlnaHQuIFN5emthbGxlciBkb2Vzbid0IGVtdWxhdGUgU0RJTyBoYXJkd2FyZS5cblxuQnV0IHdhaXQsIEkgYW0gZ2V0dGluZyBjb25mdXNlZCBoZXJlLCBJIHJlbWVtYmVyIGBtYWM4MDIxMV9od3NpbWAgZG9lcyBleGlzdCBmb3IgYG1hYzgwMjExYCBkcml2ZXJzLCBidXQgYG54cHdpZmlgIGlzIG5vdCBhIGBtYWM4MDIxMWAgZHJpdmVyLCBpdCdzIGEgYGNmZzgwMjExYCBkcml2ZXIuIFNvIGBtYWM4MDIxMV9od3NpbWAgaXMgb3V0IG9mIHRoZSBxdWVzdGlvbi5cblxuUmlnaHQuIE5vdyBJJ20gcmVhbGx5IGN1cmlvdXMsICpob3cqIGRpZCBzeXprYWxsZXIgZmluZCB0aGlzIGJ1ZyB0aGVuPyBXaGF0J3MgZ29pbmcgb24gaGVyZT9cblxuQWhhISBNYXliZSBzeXprYWxsZXIgaXMgaW5qZWN0aW5nIGV2ZW50cyBpbiBzb21lIG90aGVyIHdheS4gT3IuLi4gY291bGQgdGhpcyBiZSBhIFVTQiBkcml2ZXI/IE9yIGEgUENJZSBkcml2ZXI/IFBlcmhhcHMgdGhlcmUncyBhIGRpZmZlcmVudCB1bmRlcmx5aW5nIHRyYW5zcG9ydCBtZWNoYW5pc20gdGhhdCBzeXprYWxsZXIgKmlzKiB0YXJnZXRpbmcuIExldCBtZSBjaGVjayBpZiB0aGVyZSBpcyBhIFVTQiBvciBQQ0llIHZlcnNpb24gb2Ygbnhwd2lmaS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTE0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTY6MzYuOTQ3NjMwODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5Njc0NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOWFBXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBOWFBXSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6MTI6Y29uZmlnIE5YUFdJRklfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk5YUCBXaUZpIERyaXZlciBmb3IgSVc2MXhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjM3LjA0NzMxMTYyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzg1NTk5NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBlbWJlZGRlZCBzeXN0ZW1zIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuSG1tLCBzb21ldGhpbmcgc2VlbXMgb2ZmLiBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGEgd2lkZXIgcmFuZ2Ugb2YgTlhQIFdpRmkgZHJpdmVyIG9wdGlvbnMsIGJ1dCBJJ20gb25seSBwaWNraW5nIHVwIGBOWFBXSUZJYCBhbmQgYE5YUFdJRklfU0RJT2AgaW4gdGhlIGN1cnJlbnQgdmlldy4gVGhhdCBmZWVsc+KApmxpbWl0ZWQuIEkgZGVmaW5pdGVseSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBOWFAgV2lGaSBkcml2ZXIsIHNwZWNpZmljYWxseSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ2AuIFRoZXJlIGhhcyB0byBiZSBtb3JlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uLCBwZXJoYXBzIHdpdGggc29tZSBjb25kaXRpb25hbHMgdGhhdCBJJ20gbWlzc2luZy4gVGltZSB0byBkaXZlIGJhY2sgaW50byB0aGUgc291cmNlIGFuZCBtYWtlIHN1cmUgSSdtIG5vdCBvdmVybG9va2luZyBhIGtleSBkZXBlbmRlbmN5IG9yIGNvbnRleHQuIE1heWJlIHNvbWV0aGluZydzIGdhdGVkIHRoYXQgSSdtIG5vdCBzZWVpbmcgeWV0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM2MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjQzLjQzMjkxNDc5M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5YUFdJRklcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcXG4gICA3OlxcdFxcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cXG4gICA4OlxcdFxcbiAgIDk6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgMTA6XFx0XFx0ICBueHB3aWZpLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTlhQV0lGSV9TRElPXFxuICAxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFxcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTlhQV0lGSSBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXFxuICAxOTpcXHRcXHQgIElXNjF4IGludGVyZmFjZS5cXG4gIDIwOlxcdFxcbiAgMjE6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgMjI6XFx0XFx0ICBueHB3aWZpX3NkaW8uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjQzLjQzMjk4NDE2M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDYzMjU4NjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIE5YUCBXaUZpIEJ1ZyBSZXBvcnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHN5emthbGxlciByZXBvcnQsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQgaGl0IGEgYnVnIGluIGBueHB3aWZpX3VhcF9ldmVudF9zdGFfYXNzb2NgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBoYW5nIG9uLCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgdmlydHVhbCB3aWZpIGRldmljZSBpbmplY3Rpb24sIHJpZ2h0PyBMaWtlLCB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAgb3IgZXZlbiBgdmlydGlvLXdpZmlgLCBidXQgdGhhdCdzIGZvciBnZW5lcmljIHRlc3RpbmcuIFRoZSBgbnhwd2lmaWAgbW9kdWxlIGlzIGEgKmhhcmR3YXJlKiBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgY2hpcC4gSG93IGNvdWxkIGl0IHBvc3NpYmx5IGhhdmUgZm91bmQgYSBidWcgdGhlcmU/IFxuXG5SaWdodCwgcmlnaHQuIExldCBtZSBiYWNrdHJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZS4gSXMgdGhlcmUgYSBVU0Igb3IgUENJZSB2ZXJzaW9uIG9mIHRoaXMgdGhpbmc/IEknbGwgY2hlY2sgcXVpY2tseSDigJMgbm8sIGl0J3MgU0RJTyBvbmx5LiBUaGUgbmV4dCB0aGluZyBJJ20gYXNraW5nIGlzOiBkb2VzIHN5emthbGxlciBlbXVsYXRlIFNESU8/IEkgc2hvdWxkIGtub3cgdGhpcywgYnV0IEknbSBkcmF3aW5nIGEgYmxhbmsuIE5vcGUsIGl0IGRvZXNuJ3QuIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYW4gU0RJTyBlbXVsYXRvciB0aGF0IEkga25vdyBvZi5cblxuQWxyaWdodCwgbWF5YmUgaXQgd2FzIHJlcG9ydGVkIHZpYSBQQ0k/IFRpbWUgdG8gbG9vayBpbiB0aGF0IGRpcmVjdG9yeSB0byBjaGVjay4gTGV0J3Mgc2VlIGlmIHRoZXJlJ3MgYSBQQ0llIGRyaXZlciBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvcGNpZS5jYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHdvcmsgZnJvbSB0aGVyZS4gVGhpcyBpcyBnZXR0aW5nIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkyMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjQ3Ljg5NjI0NTczOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCIxMWFjLmNcIixcbiAgICBcIjExYWMuaFwiLFxuICAgIFwiMTFheC5jXCIsXG4gICAgXCIxMWF4LmhcIixcbiAgICBcIjExaC5jXCIsXG4gICAgXCIxMW4uY1wiLFxuICAgIFwiMTFuLmhcIixcbiAgICBcIjExbl9hZ2dyLmNcIixcbiAgICBcIjExbl9hZ2dyLmhcIixcbiAgICBcIjExbl9yeHJlb3JkZXIuY1wiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5oXCIsXG4gICAgXCJjZmcuaFwiLFxuICAgIFwiY2ZnODAyMTEuY1wiLFxuICAgIFwiY2ZnODAyMTEuaFwiLFxuICAgIFwiY2ZwLmNcIixcbiAgICBcImNtZGV2dC5jXCIsXG4gICAgXCJjbWRldnQuaFwiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJldGh0b29sLmNcIixcbiAgICBcImZ3LmhcIixcbiAgICBcImllLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwiam9pbi5jXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1haW4uaFwiLFxuICAgIFwic2Nhbi5jXCIsXG4gICAgXCJzZGlvLmNcIixcbiAgICBcInNkaW8uaFwiLFxuICAgIFwic3RhX2NmZy5jXCIsXG4gICAgXCJzdGFfY21kLmNcIixcbiAgICBcInN0YV9ldmVudC5jXCIsXG4gICAgXCJzdGFfcnguY1wiLFxuICAgIFwic3RhX3R4LmNcIixcbiAgICBcInR4cnguY1wiLFxuICAgIFwidWFwX2NtZC5jXCIsXG4gICAgXCJ1YXBfZXZlbnQuY1wiLFxuICAgIFwidWFwX3R4cnguY1wiLFxuICAgIFwidXRpbC5jXCIsXG4gICAgXCJ1dGlsLmhcIixcbiAgICBcIndtbS5jXCIsXG4gICAgXCJ3bW0uaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Njo0Ny44OTYzOTkzOTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MjczNDk4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIEJ1ZyBUcmlnZ2VyZWQgYnkgU3l6a2FsbGVyKipcblxuT2theSwgc28gSSd2ZSBnb3QgYHNkaW8uY2Agb3Blbi4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQnV0IGhhbmcgb24sIHRoaXMgc2VlbXMgbGlrZSBpdCdzIGNvbm5lY3RlZCB0byBgbnhwd2lmaWAsIHdoaWNoIGlzIGEgYGNmZzgwMjExYCBkcml2ZXIsIG5vdCB0aGUgYG1hYzgwMjExYCBmcmFtZXdvcmsuIFN5emthbGxlciB1c3VhbGx5IGxldmVyYWdlcyBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaSBmdXp6aW5nLCByaWdodD8gU28sIHdoeSBhbSBJIGxvb2tpbmcgYXQgU0RJTyBhbmQgYG54cHdpZmlgIGhlcmU/XG5cblRoaXMgZG9lc24ndCBxdWl0ZSBhZGQgdXAuIEhvdyBjb3VsZCBzeXprYWxsZXIgYmUgcmVzcG9uc2libGUgZm9yIHRyaWdnZXJpbmcgc29tZXRoaW5nIGhlcmU/IEkgc3VwcG9zZSBpdCBpcyBwb3NzaWJsZSB0aGF0IHN5emthbGxlciBpcyBhYmxlIHRvIGluamVjdCBTRElPIHBhY2tldHMgYnV0IGl0IGRvZXMgbm90IGVtdWxhdGUgU0RJTy5cblxuV2FpdCBhIG1pbnV0ZS4uLiBNYXliZSBpdCdzIG5vdCBhIGRpcmVjdCBTRElPIHRyaWdnZXIsIGJ1dCBzb21ldGhpbmcgKmVsc2UqIHRoYXQncyBoYXBwZW5pbmcgd2hpY2ggdGhlbiBjYXVzZXMgYW4gaW50ZXJhY3Rpb24gd2l0aCBgbnhwd2lmaWAgYW5kICp0aGF0KiB0aGVuIGludGVyYWN0cyB3aXRoIFNESU8/IE9rYXksIHRoYXQncyBwbGF1c2libGUuIExldCdzIHNlZS4uLiBJIHNob3VsZCBjaGVjayBvdXQgYG54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY2AuIFRoYXQgZnVuY3Rpb24gc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNzM5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Njo1Mi4wNDkxMzY0ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyOTg3MTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9ODI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjgzOm54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvYyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jPTQzND1zdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfZXZ0X2VudHJ5IGV2dF90YWJsZV91YXBbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ0MS1cXHR7LmV2ZW50X2NhdXNlID0gRVZFTlRfVUFQX1NUQV9BU1NPQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0NDI6XFx0IC5ldmVudF9oYW5kbGVyID0gbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00NDMtXFx0ey5ldmVudF9jYXVzZSA9IEVWRU5UX1VBUF9CU1NfU1RBUlQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjUyLjEzMjEyOTkwOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTMxMzE4NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBpbiB0aGUga25vdzpcblxuKipEZWx2aW5nIGludG8gdGhlIFVBUCBBc3NvY2lhdGlvbiBFdmVudCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhbiBldmVudCBoYW5kbGVyIGhlcmUsIHNwZWNpZmljYWxseSBmb3IgYEVWRU5UX1VBUF9TVEFfQVNTT0NgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCB0aGF0J3MgdGhlIFNUQSBhc3NvY2lhdGlvbiBldmVudCBpbiBhIFVBUCBjb250ZXh0LiBCdXQgaG93IGV4YWN0bHkgZG9lcyB0aGlzIHRoaW5nICp0cmlnZ2VyKj9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2F1c2FsIGNoYWluLiBXaGVyZSBkb2VzIHRoZSBzaWduYWwgdGhhdCBraWNrcyB0aGlzIGhhbmRsZXIgaW50byBhY3Rpb24gb3JpZ2luYXRlP1xuXG5UaGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGFzIGFsd2F5cyBpbiB0aGlzIHNpdHVhdGlvbiwgaXMgdG8gZGlnIGludG8gdGhlIGV2ZW50IHRhYmxlLCBgZXZ0X3RhYmxlX3VhcGAuIFRoYXQgdGFibGUgaXMgd2hlcmUgdGhlIGV2ZW50J3Mgc2VjcmV0cyBhcmUgaGVsZC4gSXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGV2ZW50J3MgcmVnaXN0cmF0aW9uLCB0aGUgYXNzb2NpYXRlZCB0cmlnZ2VycywgYW5kIHRoZSBhY3R1YWwgd29ya2luZ3Mgb2YgdGhpcyBwcm9jZXNzLiBJdCBuZWVkcyB0byB0ZWxsIG1lIHRoZSAqd2hlbiogYW5kICp3aHkqIHRoaXMgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzQ0OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjU3LjA2MzQ1MTIyOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM5NDM2NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXZ0X3RhYmxlX3VhcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9NDI3PW54cHdpZmlfdWFwX2V2ZW50X3ZkbGxfaW5kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6NDM0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9ldnRfZW50cnkgZXZ0X3RhYmxlX3VhcFtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQzNS1cXHR7LmV2ZW50X2NhdXNlID0gRVZFTlRfUFNfQVdBS0UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYz00ODI9aW50IG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0ODg6XFx0Zm9yIChldnQgPSAwOyBldnQgXFx1MDAzYyBBUlJBWV9TSVpFKGV2dF90YWJsZV91YXApOyBldnQrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ4OTpcXHRcXHRpZiAoZXZlbnRjYXVzZSA9PSBldnRfdGFibGVfdWFwW2V2dF0uZXZlbnRfY2F1c2UpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYzo0OTA6XFx0XFx0XFx0aWYgKGV2dF90YWJsZV91YXBbZXZ0XS5ldmVudF9oYW5kbGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ5MTpcXHRcXHRcXHRcXHRyZXQgPSBldnRfdGFibGVfdWFwW2V2dF0uZXZlbnRfaGFuZGxlcihwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTItXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM6NDk2OlxcdGlmIChldnQgPT0gQVJSQVlfU0laRShldnRfdGFibGVfdWFwKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS91YXBfZXZlbnQuYy00OTctXFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVZFTlQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU2OjU3LjE0NzQwMzUwNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM4ODQzNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFVBUCBFdmVudCBQcm9jZXNzaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnRgLiBJbW1lZGlhdGVseSwgbXkgbWluZCB6ZXJvZXMgaW4gb24gdGhlIHRyaWdnZXI6IGl0J3MgaW52b2tlZCB3aGVuZXZlciBhIG5ldHdvcmsgZXZlbnQgaXMgcmVjZWl2ZWQuIFRoYXQncyB0aGUgYmFzZWxpbmUuIFRoZSByZWFsIHF1ZXN0aW9uLCB0aGUgb25lIHRoYXQgaW1tZWRpYXRlbHkgbmVlZHMgYW4gYW5zd2VyLCBpcyAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlciBpcyBhYnNvbHV0ZWx5IGNydWNpYWwuIFdpdGhvdXQga25vd2luZyB0aGUgaW5pdGlhdGluZyBjb250ZXh0LCBJJ20gZmx5aW5nIGJsaW5kLiBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgY2FsbCBzdGFjayB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgYSBoaWdoZXIgbGV2ZWwsIHdoYXQgdGhlIGluaXRpYXRpbmcgc3RhdGUgaXMsIGFuZCB3aGF0IHBvc3NpYmxlIGV2ZW50IHRyaWdnZXJzIGFyZS4gSSBuZWVkIHRvIG1hcCB0aGUgZW50cnkgcG9pbnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXJzIHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gZXZlbnQgaGFuZGxpbmcgZmxvdyBhbmQgdWx0aW1hdGVseSBoZWxwIG1lIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBvcHRpbWl6YXRpb24gb3IgYnVncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyODIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NzowMS41ODYyNDk4MzNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTYyMzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jPTM2Mz1pbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYy00MTMtXFx0aWYgKHByaXYtXFx1MDAzZWJzc19yb2xlID09IE5YUFdJRklfQlNTX1JPTEVfVUFQKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jOjQxNDpcXHRcXHRyZXQgPSBueHB3aWZpX3Byb2Nlc3NfdWFwX2V2ZW50KHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jLTQxNS1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaD04ND1pbnQgbnhwd2lmaV9wcm9jZXNzX3N0YV9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaDo4NTppbnQgbnhwd2lmaV9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaC04Ni12b2lkIG54cHdpZmlfcmVzZXRfY29ubmVjdF9zdGF0ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LCB1MTYgcmVhc29uLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmM9NDM0PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9ldnRfZW50cnkgZXZ0X3RhYmxlX3VhcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvdWFwX2V2ZW50LmMtNDgxLS8qIEhhbmRsZSBBUOKAkWludGVyZmFjZSBldmVudHMgYnkgZGlzcGF0Y2hpbmcgdGhlbSB0byBldmVudOKAkXNwZWNpZmljIHJvdXRpbmVzLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jOjQ4MjppbnQgbnhwd2lmaV9wcm9jZXNzX3VhcF9ldmVudChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3VhcF9ldmVudC5jLTQ4My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjAxLjY0OTgxODgzMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODk4OTkyOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgcXVlc3Rpb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbGVyIG9mIGBueHB3aWZpX3Byb2Nlc3NfZXZlbnRgKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGlzLCAqd2hvKiBpcyBjYWxsaW5nIGBueHB3aWZpX3Byb2Nlc3NfZXZlbnRgPyBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBldmVudC1kcml2ZW4gc3lzdGVtLCBsaWtlbHkgd2l0aGluIGFuIE5YUCBXaS1GaSBkcml2ZXIgb3IgcmVsYXRlZCBjb21wb25lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlIGluIGVtYmVkZGVkIHN5c3RlbXMgYW5kIGRyaXZlciBkZXZlbG9wbWVudCwgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHlwaWNhbCBldmVudCBmbG93IHdpdGhpbiB0aGlzIGtpbmQgb2Ygc3lzdGVtLlxuXG5JJ2Qgc3RhcnQgYnkgbG9va2luZyBmb3IgdGhlIGVudHJ5IHBvaW50cyB0byB0aGUgV2ktRmkgc3RhY2suIFdoZXJlIGRvZXMgdGhlIGRyaXZlciByZWdpc3RlciBpdHNlbGYsIG9yIGhvdyBkb2VzIGl0IGdldCBpbml0aWFsaXplZCB3aXRoaW4gdGhlIHN5c3RlbSdzIG92ZXJhbGwgZnJhbWV3b3JrPyBJcyB0aGVyZSBhIGNvbW1vbiBldmVudCBoYW5kbGluZyBsYXllciwgcGVyaGFwcyB1c2luZyBhIG1lc3NhZ2UgcXVldWUgb3IgaW50ZXJydXB0IGhhbmRsZXJzPyBLbm93aW5nIHRoZSBoaWdoZXItbGV2ZWwgZnVuY3Rpb25zIGludm9sdmVkIGlzIGtleS5cblxuVGhlbiwgSSdkIHdhbnQgdG8gdXNlIHN0YXRpYyBhbmFseXNpcyB0b29scyBpZiBhdmFpbGFibGUuIEEgc2ltcGxlIGdyZXAsIG9yIGV2ZW4gYmV0dGVyLCBhIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2ggd2l0aGluIHRoZSBzb3VyY2UgY29kZSB3b3VsZCBiZSBteSBnby10by4gSSdtIGxvb2tpbmcgZm9yIGRpcmVjdCBmdW5jdGlvbiBjYWxscyB0byBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YCwgb2J2aW91c2x5LiBCdXQsIEknbSBhbHNvIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGluZGlyZWN0IGNhbGxlcnMg4oCTIGZ1bmN0aW9ucyB0aGF0ICpjb3VsZCogY2FsbCBpdCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zLiBBcmUgdGhlcmUgZnVuY3Rpb24gcG9pbnRlcnMsIGNhbGxiYWNrIG1lY2hhbmlzbXMsIG9yIHN0YXRlIG1hY2hpbmVzIGF0IHBsYXk/IEkgY2FuJ3QganVzdCBiZSBzYXRpc2ZpZWQgd2l0aCB0aGUgb2J2aW91cy5cblxuSWYgdGhlIGNvZGViYXNlIGlzIHN0cnVjdHVyZWQgd2VsbCwgdGhlcmUncyBsaWtlbHkgc29tZSBraW5kIG9mIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMgdGhhdCBoaW50IGF0IHRoZSBldmVudCBwcm9jZXNzaW5nIG1vZGVsLiBJJ2QgY29tYiB0aHJvdWdoIHRob3NlIHRvIHNlZSBpZiB0aGV5IHNoZWQgYW55IGxpZ2h0IG9uIGhvdyBldmVudHMgYXJlIGdlbmVyYXRlZCBhbmQgZGlzcGF0Y2hlZC4gTWF5YmUgYSBxdWljayBzZWFyY2ggZm9yIHJlbGF0ZWQga2V5d29yZHMsIGxpa2UgXCJldmVudCxcIiBcImludGVycnVwdCxcIiBcInF1ZXVlLFwiIG9yIFwiY2FsbGJhY2ssXCIgd2lsbCBnaXZlIG1lIG1vcmUgY29udGV4dC5cblxuRmluYWxseSwgaWYgc3RhdGljIGFuYWx5c2lzIGlzIGluc3VmZmljaWVudCwgSSdsbCBuZWVkIHRvIHJlc29ydCB0byBkeW5hbWljIGFuYWx5c2lzLiBUaGlzIG1lYW5zIGRlYnVnZ2luZy4gSSdkIHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZiBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YCBhbmQgc3RlcCB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrLiBUaGlzIHdvdWxkIGdpdmUgbWUgdGhlIGV4YWN0IGNhbGwgcGF0aCwgcmV2ZWFsaW5nIHRoZSBkaXJlY3QgY2FsbGVyLiBCdXQgSSBjYW4ndCBzdG9wIHRoZXJlLiBJIHdvdWxkIGludmVzdGlnYXRlIHRoZSBjYWxsZXIncyBwdXJwb3NlLCBzbyBJJ2xsIGFsc28gbG9vayBhdCB0aGUgdmFyaWFibGVzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgZXZlbnQuXG5cblRoZSBnb2FsIGlzIHRvIG5vdCBqdXN0IGlkZW50aWZ5IHRoZSBpbW1lZGlhdGUgY2FsbGVyLCBidXQgdG8gZGVlcGx5IHVuZGVyc3RhbmQgdGhlICp3aHkqIGFuZCAqaG93KiBvZiB0aGUgZXZlbnQgcHJvY2Vzc2luZy4gVWx0aW1hdGVseSwgSSB3YW50IHRvIGZvcm0gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBldmVudHMgdHJpZ2dlciBhbmQgYXJlIG1hbmFnZWQgd2l0aGluIHRoZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTAwMCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjA2LjU0ODgxNDEwMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY2NTk2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnhwd2lmaV9wcm9jZXNzX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuYz0zMjU9dm9pZCBueHB3aWZpX2ZyZWVfY21kX2J1ZmZlcihzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmMtMzYyLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5jOjM2MzppbnQgbnhwd2lmaV9wcm9jZXNzX2V2ZW50KHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmMtMzY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oPTgxPWludCBueHB3aWZpX2NvbmZpZ19zdGFydF91YXAoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jbWRldnQuaC04Mi1cXHRcXHRcXHQgICAgIHN0cnVjdCBueHB3aWZpX3VhcF9ic3NfcGFyYW0gKmJzc19jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NtZGV2dC5oOjgzOmludCBueHB3aWZpX3Byb2Nlc3NfZXZlbnQoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY21kZXZ0LmgtODQtaW50IG54cHdpZmlfcHJvY2Vzc19zdGFfZXZlbnQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MjY1PXN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2V2ZW50cyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTI2OC1cXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoyNjk6XFx0XFx0bnhwd2lmaV9wcm9jZXNzX2V2ZW50KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0yNzAtXFx0XFx0cmV0dXJuIHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjA2LjY0NTQ3ODc4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMjcwMzg0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipXaGVyZSBEb2VzIGBueHB3aWZpX2hhbmRsZV9ldmVudHNgIE9yaWdpbmF0ZT8qKlxuXG5Pa2F5LCBzbyB0aGUgcXVlc3Rpb24gYmVmb3JlIG1lIGlzIGVzc2VudGlhbGx5IGFib3V0IGNhbGwgdHJhY2luZy4gV2hlcmUgaXMgdGhlIGZ1bmN0aW9uIGBueHB3aWZpX2hhbmRsZV9ldmVudHNgIGFjdHVhbGx5ICpjYWxsZWQqIGZyb20/IFRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIHVuZGVyc3RhbmRpbmcgY29udHJvbCBmbG93LCBkZWJ1Z2dpbmcsIGFuZCBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIHRoZSBXaUZpIGRyaXZlciBvciBhc3NvY2lhdGVkIHN5c3RlbSBjb21wb25lbnRzLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IHRoZSBlbnRyeSBwb2ludHMgdGhhdCBsZWFkIHRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIElzIGl0IHRyaWdnZXJlZCBieSBhbiBpbnRlcnJ1cHQsIGEgdGltZXIsIG9yIHNvbWUga2luZCBvZiBoaWdoZXItbGV2ZWwgQVBJIGNhbGw/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGdpdmUgbWUgY2x1ZXMgYWJvdXQgdGhlIHNjZW5hcmlvcyB0aGF0IGNhbiB0cmlnZ2VyIGV2ZW50IHByb2Nlc3NpbmcuIEtub3dpbmcgdGhlIGNhbGwgaGllcmFyY2h5IGlzIHZpdGFsIHdoZW4gZGlhZ25vc2luZyBpc3N1ZXM7IHBpbnBvaW50aW5nIHdoYXQgY2FsbHMgdGhlIGV2ZW50IGhhbmRsZXIgaXMgbGlrZSBidWlsZGluZyBhIGZhbWlseSB0cmVlLCBhbmQgdGhhdCBoZWxwcyB0byBkZXRlcm1pbmUgaG93IHRoaW5ncyBhcmUgY29ubmVjdGVkIGFuZCB3aGVyZSBhIHByb2JsZW0gbWlnaHQgc3RlbSBmcm9tLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIHJlZmVyZW5jZXMgdG8gdGhpcyBmdW5jdGlvbiBpbiB0aGUgY29kZSBiYXNlLCBpZGVhbGx5IHdpdGggYSBjb2RlIHNlYXJjaCB0b29sLiBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGUgaW5jbHVkZSBmaWxlcyBhbmQgdGhlIG1haW4gZHJpdmVyIGZpbGVzLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIHRoZSBkcml2ZXIgZmlsZXMgYXMgdGhlIGZpcnN0IHRoaW5nIHRvIGNoZWNrLiBCYXNlZCBvbiB0aGUgbmFtZSBJIG1pZ2h0IGFzc3VtZSBpdOKAmXMgYSBzdGFuZGFyZCBldmVudCBoYW5kbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjAyNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjEyLjk3MjUyMDcxNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYyMzc1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnhwd2lmaV9oYW5kbGVfZXZlbnRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MjUzPXN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2NtZF9yZXNwb25zZShzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTI2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MjY1OnN0YXRpYyBib29sIG54cHdpZmlfaGFuZGxlX2V2ZW50cyhzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTM3Nj12b2lkIG54cHdpZmlfbWFpbl9wcm9jZXNzKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtNDQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzo0NDU6XFx0XFx0ZGlkX3dvcmsgfD0gbnhwd2lmaV9oYW5kbGVfZXZlbnRzKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy00NDYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjEzLjA0ODc2NDE3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTIzODU0ODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBueHB3aWZpX21haW5fcHJvY2Vzc2AgV29ya2Zsb3cqKlxuXG5Pa2F5LCBzbyBgbnhwd2lmaV9tYWluX3Byb2Nlc3NgIGlzIHRoZSAqaGVhcnQqIG9mIHRoZSBtYXR0ZXIuIEl0J3MgdGhlIGNlbnRyYWwgd29ya2VyLCB0aGUgbWFpbiB0aHJlYWQgb2YgZXhlY3V0aW9uIGZvciB3aGF0ZXZlciB0aGlzIGBueHB3aWZpYCBzeXN0ZW0gaXMuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24sIHRoZSBhYnNvbHV0ZWx5IGNydWNpYWwgb25lLCBpczogKldobyoga2lja3MgdGhpcyB0aGluZyBvZmY/IFdoZXJlIGRvZXMgdGhlIGV4ZWN1dGlvbiBmbG93ICpiZWdpbio/IFdpdGhvdXQga25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbiBvciBwcm9jZXNzLCBJJ20gZXNzZW50aWFsbHkgb3BlcmF0aW5nIGluIGEgYmxhY2sgYm94LiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXIgd2lsbCBwcm92aWRlIGEgd2VhbHRoIG9mIGluZm9ybWF0aW9uLiBJcyBpdCB0cmlnZ2VyZWQgYnkgYW4gaW50ZXJydXB0LCBhIHRpbWVyLCBhIHVzZXIgY29tbWFuZCwgYW5vdGhlciBwcm9jZXNzIGFsdG9nZXRoZXI/IFRoZSBhbnN3ZXJzIHRvIHRob3NlIHF1ZXN0aW9ucyB3aWxsIGd1aWRlIGV2ZXJ5dGhpbmcgZWxzZS4gTXkgaW1tZWRpYXRlIG5lZWQgaXMgdG8gdHJhY2UgYmFjayB0aGUgY2FsbCBzdGFjayB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCB0aGUgdHJpZ2dlcnMgb2YgYG54cHdpZmlfbWFpbl9wcm9jZXNzYC4gVGhhdOKAmXMgdGhlIGNyaXRpY2FsIHBpZWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU5OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjE3LjU3MjYyMzA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDg1NzU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpX21haW5fcHJvY2Vzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTM2NT1zdGF0aWMgYm9vbCBueHB3aWZpX3B1bXBfY29tbWFuZChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTM3NS0vKiBNYWluIGxvb3A6IElSUS9SWC9DTUQvRVZFTlQ7IHdha2UgY2FyZDsgVFg7IFBTIG51bGw7IGV4aXQgaWYgaWRsZS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6Mzc2OnZvaWQgbnhwd2lmaV9tYWluX3Byb2Nlc3Moc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMzc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xMzAyPXN0YXRpYyB2b2lkIG54cHdpZmlfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTMxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTMxMjovKiBNYWluIHdvcms6IHJ1biBueHB3aWZpX21haW5fcHJvY2VzcygpLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xMzEzLXN0YXRpYyB2b2lkIG54cHdpZmlfbWFpbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xMzE5LVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTMyMDpcXHRueHB3aWZpX21haW5fcHJvY2VzcyhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTMyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg9MTMxNz1pbnQgbnhwd2lmaV9zZXRfdHhfcG93ZXIoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xMzE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaDoxMzIwOnZvaWQgbnhwd2lmaV9tYWluX3Byb2Nlc3Moc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oLTEzMjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjE3LjYzNzQ4NTk3OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQ4MDE2MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIFN5emthbGxlciBJbnRlcmFjdGlvbiB3aXRoIHRoZSBueHB3aWZpIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbnhwd2lmaSBkcml2ZXIgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHN5emthbGxlci4gVGhlIGNvcmUgaWRlYSBpcyB0aGF0IHRoZSBkcml2ZXIgcmVsaWVzIG9uIGEgd29ya3F1ZXVlIGZvciBoYW5kbGluZyBoYXJkd2FyZSBldmVudHMsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlLiBIb3dldmVyLCB0aGUgZHJpdmVyJ3MgYXNzb2NpYXRpb24gd2l0aCBTRElPIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGNyaXRpY2FsIHF1ZXN0aW9uOiBob3cgKnByZWNpc2VseSogZG9lcyBzeXprYWxsZXIgdHJpZ2dlciB0aGlzPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgU0RJTyBkcml2ZXJzIGNhbiBiZSB0cmlja3kgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIG9mdGVuIHJlcXVpcmluZyBzcGVjaWZpYyBlbXVsYXRpb24gb3IgYWx0ZXJuYXRpdmUgaW50ZXJmYWNlcy5cblxuVGhlcmVmb3JlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGUgcHJlc2VuY2Ugb2YgYW4gU0RJTyBlbXVsYXRvciB3aXRoaW4gc3l6a2FsbGVyJ3MgY2FwYWJpbGl0aWVzLiBPciBtYXliZSB0aGlzIGlzbid0IGV4Y2x1c2l2ZWx5IGFuIFNESU8gZHJpdmVyPyBDb3VsZCB0aGVyZSBiZSBVU0Igb3IgUENJZSB2YXJpYW50cyBvZiB0aGUgbnhwd2lmaSBkcml2ZXIgYXMgd2VsbD9cblxuV2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGdldCBiYWNrIGluIGZvY3VzLiBJIG9ubHkgcmVtZW1iZXIgc2VlaW5nIGBOWFBXSUZJX1NESU9gIGluIHRoZSBLY29uZmlnIGZpbGUsIHNvIEkgcHJvYmFibHkgbmVlZCB0byByZS1leGFtaW5lIHRoZSBmaWxlIHBhdGhzLiBJIGhhdmUgdG8gdmVyaWZ5IHRoYXQgVVNCIG9yIFBDSWUgdmVyc2lvbnMgb2YgdGhpcyBkcml2ZXIgZXZlbiAqZXhpc3QqIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaG93IHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCB0aGlzIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczODcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6MjIuMTg1NTA1Nzc0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM2Njk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2Njc6bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NjgtbW9kdWxlX2V4aXQobnhwd2lmaV9jbGVhbnVwX21vZHVsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjIyLjI0ODg3OTY0M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjc5NDg1NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgbnhwd2lmaV9pbml0X21vZHVsZWAqKlxuXG5Pa2F5LCBzbyBgbnhwd2lmaV9pbml0X21vZHVsZWAgaXMgYWN0dWFsbHkgZGVmaW5lZCBpbiBgbWFpbi5jYC4gVGhhdCdzIGEgYml0IHVuZXhwZWN0ZWQ7IEkgdXN1YWxseSBleHBlY3QgbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIGJlIG1vcmUgbW9kdWxhci4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCdzIGdvaW5nIG9uIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIElzIGl0IGp1c3QgcmVnaXN0ZXJpbmcgYSBkcml2ZXIsIG9yIGlzIGl0IHNldHRpbmcgdXAgaGFyZHdhcmUsIGluaXRpYWxpemluZyBkYXRhIHN0cnVjdHVyZXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBHaXZlbiBpdHMgbmFtZSwgSSdkICpndWVzcyogaXQncyBXaUZpLXJlbGF0ZWQsIGJ1dCBJIHNob3VsZG4ndCBqdW1wIHRvIGFueSBjb25jbHVzaW9ucy4gTGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY2FsbHMgdG8gcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgY291bGQgYmUgdXNlZnVsIHRvIGtub3cuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgc3RlcHMgdGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3RhcnR1cCBwcm9jZXNzLiBVbmRlcnN0YW5kaW5nIHRoYXQgd2lsbCBiZSBrZXkgdG8gd29ya2luZyB3aXRoIHRoaXMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5NDksIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NzoyNS45MjgzNjcyNzNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjUwOlxcdG54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcXG4xNjUxOlxcdHtcXG4xNjUyOlxcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG4xNjUzOlxcdFxcdG54cHdpZmlfZGVidWdmc19pbml0KCk7XFxuMTY1NDpcXHQjZW5kaWZcXG4xNjU1OlxcdFxcdHJldHVybiAwO1xcbjE2NTY6XFx0fVxcbjE2NTc6XFx0XFxuMTY1ODpcXHQvKiBNb2R1bGUgZXhpdDogcmVtb3ZlIGRlYnVnZnMgaWYgZW5hYmxlZC4gKi9cXG4xNjU5OlxcdHN0YXRpYyB2b2lkXFxuMTY2MDpcXHRueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuMTY2MTpcXHR7XFxuMTY2MjpcXHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuMTY2MzpcXHRcXHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XFxuMTY2NDpcXHQjZW5kaWZcXG4xNjY1OlxcdH1cXG4xNjY2OlxcdFxcbjE2Njc6XFx0bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuMTY2ODpcXHRtb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcXG4xNjY5OlxcdFxcbjE2NzA6XFx0TU9EVUxFX0FVVEhPUihcXFwiTlhQIEludGVybmF0aW9uYWwgTHRkLlxcXCIpO1xcbjE2NzE6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJOWFAgV2lGaSBEcml2ZXIgdmVyc2lvbiBcXFwiIFZFUlNJT04pO1xcbjE2NzI6XFx0TU9EVUxFX1ZFUlNJT04oVkVSU0lPTik7XFxuMTY3MzpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjI1LjkyODQ3MjQ5M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU5NzgxMjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gdGhlIFNESU8gRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYG1haW4uY2AgaXMganVzdCBzZXR0aW5nIHVwIGRlYnVnZnMsIHdoaWNoIGlzIGV4cGVjdGVkLiBCdXQgd2hlcmUncyB0aGUgYWN0dWFsIGJ1cyBkcml2ZXIgZm9yIHRoZSBTRElPIGludGVyZmFjZT8gSSBuZWVkIHRvIGZpbmQgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24uIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgaXMgYHNkaW8uY2AuIEhvcGVmdWxseSwgaXQncyB0aGVyZS4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGNvcmUgU0RJTyBmdW5jdGlvbmFsaXR5IHJlc2lkZXMuIFRpbWUgdG8gZGl2ZSBpbiBhbmQgc2VlIHdoYXQgYHNkaW8uY2AgaGFzIHRvIG9mZmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODU0MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6MjkuMDg4MjU3MTcxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzQ5NjQwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NzoyOS4xNTE3NjMyMloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM3MTEzNTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTRElPIERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IFNESU8gZHJpdmVyIHJlZ2lzdHJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgcGxhY2UgSSBhbHdheXMgc3RhcnQsIGlzIHRoZSBjb3JlIG9mIHRoZSBkcml2ZXI6IGBzZGlvLmNgLiBUaGF0IGZpbGUgaXMgdGhlIGNlbnRyYWwgaHViIGZvciB0aGUgU0RJTyBzdWJzeXN0ZW0uIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgbG9jYXRlIHRoZSBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgIGZ1bmN0aW9uLCBhcyB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXIncyBpbnRlcmZhY2UgdG8gdGhlIGNvcmUgZnJhbWV3b3JrIGxpZXMuIEtub3dpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIHRlbGwgbWUgaG93IHRoZSBkZXZpY2UgZHJpdmVyIGlzIGdvaW5nIHRvIGludGVyYWN0IHdpdGggdGhlIFNESU8gc3Vic3lzdGVtIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEknbGwgYmUgbG9va2luZyBmb3IgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgYm91bmQgdG8gdGhlIFNESU8gaG9zdCBjb250cm9sbGVyIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQgaW4gdGhhdCBwcm9jZXNzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBsYXJnZXIgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODc1MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjMyLjI4ODg4MDQzOVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NDAwNDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNkaW9fcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6MzIuMzQ1MzI5Mzk3WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDA1MDI1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEZWJ1Z2dpbmcgdGhlIFNESU8gRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIFNESU8gZHJpdmVyIGlzIGdldHRpbmcgcmVnaXN0ZXJlZCBpbiB0aGUgc3lzdGVtLiBUaGUgZmxvdyBpc24ndCBpbW1lZGlhdGVseSBvYnZpb3VzLiBMZXQgbWUgcXVpY2tseSB6ZXJvIGluIG9uIHdoZXJlIHRoZSBgc2Rpb19yZWdpc3Rlcl9kcml2ZXJgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIGBueHB3aWZpYCBkaXJlY3RvcnkuIEknbGwgbmVlZCB0byB1c2UgYSBncmVwIG9yIGZpbmQgY29tbWFuZCB0byBzZWFyY2ggdGhlIHNvdXJjZSB0cmVlIGFuZCBwaW5wb2ludCB0aGUgZXhhY3QgZmlsZSBhbmQgbGluZSB3aGVyZSB0aGF0IGRyaXZlciByZWdpc3RyYXRpb24gaGFwcGVucy4gVGhhdCdzIHRoZSBmaXJzdCBjcml0aWNhbCBzdGVwIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkwMDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1NzozNi41NDU4MzQwNjhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4OTg3OTg5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZGlvX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjM2LjYzNDgzMjM1N1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTkyNjIyOTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFNESU8gRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cbkhtbSwgc28gd2UgbmVlZCB0byBmaWd1cmUgb3V0ICpob3cqIHRoaXMgU0RJTyBkcml2ZXIgaXMgYmVpbmcgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwuIFRoYXQncyB1c3VhbGx5IHRoZSBmaXJzdCBzdGVwIHdoZW4gZGVidWdnaW5nIHNvbWV0aGluZyBsaWtlIHRoaXMuIExldCdzIHNlZS4uLiB0aGUgcXVpY2tlc3Qgcm91dGUgaXMgcHJvYmFibHkgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZS4gV2hlcmUgZG8gd2UgZmluZCB0aGF0IHJlZ2lzdHJhdGlvbiBtYWdpYz8gTXkgaW5zdGluY3Qgc2F5cyBpdCdsbCBiZSBpbiB0aGUgbWFpbiBgc2Rpby5jYCBmaWxlLCB3aGVyZSB0aGUgY29yZSBTRElPIGZ1bmN0aW9uYWxpdHkgcmVzaWRlcy4gTm93LCBsZXQncyBsb29rIGZvciB0aGUgc3RhbmRhcmQgcmVnaXN0cmF0aW9uIG1hY3JvcywgdGhlIG9uZXMgdGhhdCBhcmUgbGlrZWx5IGJlaW5nIGVtcGxveWVkIGhlcmUuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIHdlIHdhbnQgdG8gbG9vayBmb3IgZWl0aGVyIGBtb2R1bGVfaW5pdGAg4oCTIHRoYXQncyBvZnRlbiB1c2VkIGZvciBpbml0aWFsaXphdGlvbiwgaW5jbHVkaW5nIGRyaXZlciByZWdpc3RyYXRpb24g4oCTIG9yIHBlcmhhcHMgZGlyZWN0bHkgZm9yIHNvbWV0aGluZyBsaWtlIGBzZGlvX2RyaXZlcmAgaXRzZWxmLCBvciBzb21ldGhpbmcgc2ltaWxhciB0byBpdC4gVGhhdCB3b3VsZCBiZSB0aGUgZHJpdmVyIHN0cnVjdHVyZSBkZWNsYXJhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCBpbiBgc2Rpby5jYCBmb3IgdGhvc2UsIHNoYWxsIHdlPyBUaGF0J2xsIGdpdmUgdXMgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZSB3aG9sZSB0aGluZyBpcyBzZXQgdXAsIGFuZCB3aGVyZSB0aGUgZW50cnkgcG9pbnRzIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIxOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjQwLjYyNzQ1ODI3MVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYwMTgxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Rpb19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz00NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG54cHdpZmlfc2Rpb19wbV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzo0NzE6c3RhdGljIHN0cnVjdCBzZGlvX2RyaXZlciBueHB3aWZpX3NkaW8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTQ3Mi1cXHQubmFtZSA9IFxcXCJueHB3aWZpX3NkaW9cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTIyOTM9c3RhdGljIHN0cnVjdCBueHB3aWZpX2lmX29wcyBzZGlvX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzoyMzIxOm1vZHVsZV9zZGlvX2RyaXZlcihueHB3aWZpX3NkaW8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzIyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Nzo0MC43MTM0ODIyOFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA4MTg1OTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhbiBTRElPIERyaXZlcidzIFJlYWNoYWJpbGl0eSBpbiBhIEZ1enppbmcgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtb2R1bGVfc2Rpb19kcml2ZXIobnhwd2lmaV9zZGlvKTtgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGFuIFNESU8gZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGRvZXMgU3l6a2FsbGVyIGV2ZW4gaGF2ZSBhbiBTRElPIGVtdWxhdG9yPyBCZWNhdXNlIGlmIG5vdCwgaG93IGRpZCBpdCB0cmlnZ2VyIHRoaXMgY29uZGl0aW9uPyBTeXprYWxsZXIncyBzdHJlbmd0aHMgYXJlIGluIGVtdWxhdGluZyBoYXJkd2FyZSwgYnV0IEknbSBkcmF3aW5nIGEgYmxhbmsgb24gU0RJTy5cblxuSXQgY2FuJ3QgYmUgVVNCIOKAkyB0aGVyZSdzIG5vIGB1c2IuY2AgaGVyZS4gQW5kIGEgUENJZSBkcml2ZXIgaXMgb3V0IHRvby4gV2FpdCwgdGhlcmUncyBgbWFjODAyMTFfaHdzaW1gIGZvciBtYWM4MDIxMSwgYnV0IHRoaXMgaXMgYSBjZmc4MDIxMSBkcml2ZXIgc28gSSBkb3VidCBpdC4gQ291bGQgdGhlcmUgYmUgc29tZSBzb3J0IG9mIHZpcnR1YWwgU0RJTyBob3N0IGNvbnRyb2xsZXIgSSdtIG1pc3NpbmcgaW4gdGhlIGtlcm5lbD8gVGltZSB0byBsb29rIGludG8gdGhhdC4uLiBvciBjb3VsZCBTeXprYWxsZXIgYmUgbGV2ZXJhZ2luZyBgbWFjODAyMTFfaHdzaW1gIHRvIHNvbWVob3cgdHJpZ2dlciBjZmc4MDIxMSBldmVudHM/IE5vLCB0aGlzIGlzIGEgZGVkaWNhdGVkIGhhcmR3YXJlIGRyaXZlciwgYG54cHdpZmlgLlxuXG5Pa2F5LCBpZiB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU0RJTyBkcml2ZXIsIGFuZCB0aGVyZSdzIG5vIFNESU8gZW11bGF0aW9uLCB0aGVuIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSB1bnJlYWNoYWJsZSB3aXRoaW4gdGhlIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50IHRoYXQgU3l6a2FsbGVyIHV0aWxpemVzLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRob3VnaC4gTGV0IG1lIGRvdWJsZS1jaGVjazogaXMgdGhlcmUgYW55IHZpcnR1YWwgU0RJTyBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWwsIG9yIHNvbWUgb3RoZXIgU3l6a2FsbGVyIG1lY2hhbmlzbSBmb3IgU0RJTyBpbmplY3Rpb24/IE5vcGUsIEknbSBwcmV0dHkgc3VyZSBTeXprYWxsZXIncyBicmVhZCBhbmQgYnV0dGVyIGlzIFVTQiAodGhyb3VnaCBgZHVtbXlfaGNkYCksIFBDSSAodmlhIFFFTVUpLCBhbmQgb3RoZXJzLi4uIGJ1dCBub3QgU0RJTywgYXQgbGVhc3QgaW4gYSBkaXJlY3Qgc2Vuc2UuXG5cbldhaXQgYSBzZWNvbmQuLi4gY291bGQgdGhpcyBiZSBhIHBhdGNoIHRoYXQgU3l6a2FsbGVyIGlzICp0ZXN0aW5nKiByYXRoZXIgdGhhbiAqZmluZGluZyo/IFRoYXQncyBpdCEgVGhlIHByb21wdCBtZW50aW9ucyBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBUaGF0J3MgdGhlIGtleS4gVGhpcyBtZWFucyB0aGlzIHBhdGNoIHdhcyBzZW50IHRvIHRoZSBtYWlsaW5nIGxpc3QsIGFuZCBzeXpib3QgaXMganVzdCBiZWluZyB1c2VkIHRvIHZhbGlkYXRlIGl0LCBub3QgdG8gYWN0dWFsbHkgZmluZCB0aGUgYnVnLiBTbywgdGhlIGNvZGUgKmlzKiBoYXJkd2FyZS1zcGVjaWZpYy4gQW5kLCBzaW5jZSBubyBTRElPIGVtdWxhdGlvbiBleGlzdHMsIFN5emthbGxlciB3b24ndCBiZSBhYmxlIHRvIHJlYWNoIHRoaXMgYnVnLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGlzIGBkdW1teV9zZGlvYCBvciBgc2Rpb19kdW1teWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODEwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU3OjQ4LjAyMTY3MTA2OVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk3ODgzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHVtbXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYz01Nz1zdGF0aWMgaW50IHRodW5kZXJfbW1jX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYy0xMzQtXFx0XFx0ICogbW1jX29mX3BhcnNlIGFuZCBkZXZtKiByZXF1aXJlIG9uZSBkZXZpY2UgcGVyIHNsb3QuXFxuZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0tdGh1bmRlcnguYzoxMzU6XFx0XFx0ICogQ3JlYXRlIGEgZHVtbXkgZGV2aWNlIHBlciBzbG90IGFuZCBzZXQgdGhlIG5vZGUgcG9pbnRlciB0b1xcbmRyaXZlcnMvbW1jL2hvc3QvY2F2aXVtLXRodW5kZXJ4LmMtMTM2LVxcdFxcdCAqIHRoZSBzbG90LiBUaGUgZWFzaWVzdCB3YXkgdG8gZ2V0IHRoaXMgaXMgdXNpbmdcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmM9NDUwPXN0YXRpYyB2b2lkIGxpdGV4X21tY19zZXRfaW9zKHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX2lvcyAqaW9zKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYy00NTUtXFx0ICogVGhlIFNEIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgYXQgbGVhc3QgNzQgaWRsZSBjbG9ja3MgYmVmb3JlIENNRDAuXFxuZHJpdmVycy9tbWMvaG9zdC9saXRleF9tbWMuYzo0NTY6XFx0ICogVGhlc2UgZHVtbXkgY3ljbGVzIGlzIGdlbmVyYXRlZCBieSB3cml0aW5nIExJVEVYX1BIWV9JTklUSUFMSVpFLlxcbmRyaXZlcnMvbW1jL2hvc3QvbGl0ZXhfbW1jLmMtNDU3LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9vbWFwLmM9MjAxPXN0YXRpYyB2b2lkIG1tY19vbWFwX3NlbGVjdF9zbG90KHN0cnVjdCBtbWNfb21hcF9zbG90ICpzbG90LCBpbnQgY2xhaW1lZClcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jLTIzNS1cXG5kcml2ZXJzL21tYy9ob3N0L29tYXAuYzoyMzY6XFx0XFx0LyogRG9pbmcgdGhlIGR1bW15IHJlYWQgaGVyZSBzZWVtcyB0byB3b3JrIGFyb3VuZCBzb21lIGJ1Z1xcbmRyaXZlcnMvbW1jL2hvc3Qvb21hcC5jLTIzNy1cXHRcXHQgKiBhdCBsZWFzdCBpbiBPTUFQMjR4eCBzaWxpY29uIHdoZXJlIHRoZSBjb21tYW5kIHdvdWxkIG5vdFxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jPTIwOD1zdGF0aWMgdm9pZCBzZF9zZW5kX2NtZF9nZXRfcnNwKHN0cnVjdCByZWFsdGVrX3BjaV9zZG1tYyAqaG9zdCxcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYy0zMDEtXFx0XFx0ICogVGhlIGNvbnRyb2xsZXIgb2ZmbG9hZHMgdGhlIGxhc3QgYnl0ZSB7Q1JDLTcsIGVuZCBiaXQgMSdiMX1cXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmM6MzAyOlxcdFxcdCAqIG9mIHJlc3BvbnNlIHR5cGUgUjIuIEFzc2lnbiBkdW1teSBDUkMsIDAsIGFuZCBlbmQgYml0IHRvIHRoZVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYy0zMDMtXFx0XFx0ICogYnl0ZShwdHJbMTZdLCBnb2VzIGludG8gdGhlIExTQiBvZiByZXNwWzNdIGxhdGVyKS5cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvcnRzeF91c2Jfc2RtbWMuYz0yODU9c3RhdGljIHZvaWQgc2Rfc2VuZF9jbWRfZ2V0X3JzcChzdHJ1Y3QgcnRzeF91c2Jfc2RtbWMgKmhvc3QsXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmMtNDI1LVxcdFxcdCAqIFRoZSBjb250cm9sbGVyIG9mZmxvYWRzIHRoZSBsYXN0IGJ5dGUge0NSQy03LCBlbmQgYml0IDEnYjF9XFxuZHJpdmVycy9tbWMvaG9zdC9ydHN4X3VzYl9zZG1tYy5jOjQyNjpcXHRcXHQgKiBvZiByZXNwb25zZSB0eXBlIFIyLiBBc3NpZ24gZHVtbXkgQ1JDLCAwLCBhbmQgZW5kIGJpdCB0byB0aGVcXG5kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmMtNDI3LVxcdFxcdCAqIGJ5dGUocHRyWzE2XSwgZ29lcyBpbnRvIHRoZSBMU0Igb2YgcmVzcFszXSBsYXRlcikuXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jLTIxNC1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWVzZGhjLWlteC5jOjIxNTovKiB0aGUgY29udHJvbGxlciBoYXMgZHVtbXkgcGFkIGZvciBjbG9jayBsb29wYmFjayAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmMtMjE2LSNkZWZpbmUgRVNESENfRkxBR19EVU1NWV9QQURcXHRcXHRCSVQoMTkpXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmM9MTAxPXN0YXRpYyB1MzIgcHhhdjFfaXJxKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCB1MzIgaW50bWFzaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMDYtXFx0aWYgKHB4YXYyX2hvc3QtXFx1MDAzZXNkaW9fbXJxIFxcdTAwMjZcXHUwMDI2IChpbnRtYXNrIFxcdTAwMjYgU0RIQ0lfSU5UX0NNRF9NQVNLKSkge1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYzoxMDc6XFx0XFx0LyogVGhlIGR1bW15IENNRDAgZm9yIHRoZSBTRElPIHdvcmthcm91bmQganVzdCBjb21wbGV0ZWQgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTA4LVxcdFxcdHNkaGNpX3dyaXRlbChob3N0LCBpbnRtYXNrIFxcdTAwMjYgU0RIQ0lfSU5UX0NNRF9NQVNLLCBTREhDSV9JTlRfU1RBVFVTKTtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYz0xMjM9c3RhdGljIHZvaWQgcHhhdjFfcmVxdWVzdF9kb25lKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSlcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMzYtXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1weGF2Mi5jOjEzNzpcXHRcXHQvKiBDbG9jayBpcyBub3cgc3RvcHBlZCwgc28gcmVzdGFydCBpdCBieSBzZW5kaW5nIGEgZHVtbXkgQ01EMCAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xMzgtXFx0XFx0cHhhdjJfaG9zdCA9IHNkaGNpX3BsdGZtX3ByaXYoc2RoY2lfcHJpdihob3N0KSk7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLXB4YXYyLmMtMTQ5LVxcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYzoxNTA6XFx0XFx0LyogRG9uJ3QgZmluaXNoIHRoaXMgcmVxdWVzdCB1bnRpbCB0aGUgZHVtbXkgQ01EMCBmaW5pc2hlcyAqL1xcbmRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcHhhdjIuYy0xNTEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jPTY1Mz1zdGF0aWMgaW50IHNkaGNpX3ByZV9kbWFfdHJhbnNmZXIoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMtNjg5LVxcdFxcdFxcdFxcdFxcdCAgIG1tY19nZXRfZG1hX2RpcihkYXRhKSk7XFxuZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jOjY5MDpcXHRcXHQvKiBKdXN0IGEgZHVtbXkgdmFsdWUgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMtNjkxLVxcdFxcdHNnX2NvdW50ID0gMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6NDguMTExNDY0OTc4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NTkxMjgyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYG54cHdpZmlgIFRyaWdnZXIqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGRlZmluaXRlbHkgbm8gc2lnbiBvZiBhIGBkdW1teV9zZGlvYCBtb2R1bGUsIG9yIGFueXRoaW5nIGV4cGxpY2l0bHkgbmFtZWQgdGhhdCB3YXkuIFRoYXQncyBhIGRlYWQgZW5kLiBOb3csIEkgbmVlZCB0byByZXRoaW5rIHRoaXMgYXBwcm9hY2guIEkgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgYWN0dWFsbHkgKmRvZXMqIHRyaWdnZXIgdGhlIGBueHB3aWZpYCBkcml2ZXIuIElzIHRoZXJlIGFub3RoZXIgcGF0aCwgc29tZSBvdGhlciBtZWNoYW5pc20sIEknbSBvdmVybG9va2luZz8gVGltZSB0byBjaXJjbGUgYmFjay4gSeKAmWxsIGdvIHN0cmFpZ2h0IGJhY2sgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdgLiBMZXQncyBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBob2xkcyBhbnkgY2x1ZXMgYWJvdXQgd2hhdCBhY3RpdmF0ZXMgdGhpcyB0aGluZy4gR290dGEgZXhhbWluZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyBjYXJlZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjcwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6NTMuMDcwNTk3NzE2WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjM4NzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlhQV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWc6Mjpjb25maWcgTlhQV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnOjEyOmNvbmZpZyBOWFBXSUZJX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnLTEzLVxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Nzo1My4xNDY5OTE2NDVaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MzI4Mzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgdGhlIE5YUCBXaS1GaSBEcml2ZXIgQXJjaGl0ZWN0dXJlKipcblxuQWxyaWdodCwgc28gYE5YUFdJRklgLi4uIHRoYXQncyB0aGUgY29yZSBtb2R1bGUsIHRoZSBoZWFydCBvZiB0aGUgTlhQIFdpLUZpIGltcGxlbWVudGF0aW9uLiBBbmQgYE5YUFdJRklfU0RJT2AsIHRoYXQncyB0aGUgU0RJTyBkcml2ZXIgc3BlY2lmaWNhbGx5LiBIbW0sIHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0IGlzIFNESU8gdGhlICpvbmx5KiBpbnRlcmZhY2Ugc3VwcG9ydGVkPyBJIG5lZWQgdG8gYmUgc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkndmUgZ290IHRvIGNvbnNpZGVyIGFsbCB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLlxuXG5UbyBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLCBJIHNob3VsZCByZWFsbHkgZGlnIGludG8gdGhlIGRyaXZlciBkaXJlY3Rvcnk6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvYC4gVGhhdCBkaXJlY3Rvcnkgc2hvdWxkIGhvbGQgdGhlIGNvbXBsZXRlIHNldCBvZiBkcml2ZXJzIGJ1aWx0IG9uIHRoYXQgYG54cHdpZmlgIGNvcmUuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNwZWNpZmljIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuIE1heWJlIHRoZXJlJ3MgYSBVU0IgZHJpdmVyLCBhIFBDSWUgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSB0aGF0IGlzbid0IGltbWVkaWF0ZWx5IG9idmlvdXMuIEEgcXVpY2sgc2NhbiBvZiB0aGF0IGFyZWEgd2lsbCBlaXRoZXIgY29uZmlybSBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgb3IgcmV2ZWFsIG90aGVyIGFyY2hpdGVjdHVyZXMgSSBuZWVkIHRvIGFjY291bnQgZm9yLiBHb29kLCBsZXQncyBnbyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2ODQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1Nzo1Ni43OTAyNzk1MDVaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IG51bGwsXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJueHB3aWZpXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTc6NTYuNzkwMzg3NjY1WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjU4MzQ3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG54cHdpZmlgIERyaXZlciBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzb21ldGhpbmcganVtcHMgb3V0LiBJdCBzZWVtcyBgbnhwd2lmaWAgaXMgdGhlIG9ubHkgc3ViZGlyZWN0b3J5IGluIGBueHAvYC4gQnV0IEkgYWxzbyBrbm93IHRoZXJlJ3MgYSBgbXdpZmlleGAgZGlyZWN0b3J5LCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9gLiBUaGF0J3MgYSBkaWZmZXJlbnQgZHJpdmVyIGFsdG9nZXRoZXIsIHRob3VnaC4gVGhlIHJlYWwgaXNzdWUgaXMgYG54cHdpZmlgIOKAkyBpdCdzIGFuIFNESU8gZHJpdmVyLCBhbmQgc2VlbXMgc3BlY2lmaWMgdG8gdGhlIElXNjF4IGhhcmR3YXJlLiBUaGUgYmlnIHByb2JsZW0gaGVyZSBpcyB0aGF0IHRoZXJlJ3Mgbm8gU0RJTyBlbXVsYXRvciBhdmFpbGFibGUgaW4gUUVNVSBvciBzeXprYWxsZXIsIHdoaWNoIEknbSBmYW1pbGlhciB3aXRoLCBzbyBJJ20gdGhpbmtpbmcsIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgdGhhdCBjb2RlJ3MgYmFzaWNhbGx5IHVucmVhY2hhYmxlLlxuXG5CdXQgSSdtIG5vdCBnb2luZyB0byBnaXZlIHVwIHRoYXQgZWFzaWx5LiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIE15IG5leHQgdGhvdWdodCBpczogY2FuIHRoaXMgZHJpdmVyIHNvbWVob3cgYmUgbG9hZGVkIGFuZCBpbml0aWFsaXplZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZT8gTWF5YmUgdGhlcmUncyBhIHdheS4gTGV0J3MgZGlnIGludG8gYHNkaW8uY2AgYW5kIHNwZWNpZmljYWxseSBjaGVjayB0aGUgYG54cHdpZmlfc2Rpb19wcm9iZWAgZnVuY3Rpb24uIFRoYXQncyB0aGUgZmlyc3Qgc3RlcCB0byBmaWd1cmluZyBvdXQgYSB3b3JrYXJvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzAxNCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTg6MDEuMDU2MjI0MzU0WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODM2MDg4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpX3NkaW9fcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz0xMjI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzoxMjM6bnhwd2lmaV9zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTEyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9NDcxPXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgbnhwd2lmaV9zZGlvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jLTQ3My1cXHQuaWRfdGFibGUgPSBueHB3aWZpX2lkcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM6NDc0OlxcdC5wcm9iZSA9IG54cHdpZmlfc2Rpb19wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDc1LVxcdC5yZW1vdmUgPSBueHB3aWZpX3NkaW9fcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1ODowMS4xNDQ1OTAzMjNaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MTM0NTk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYG54cHdpZmlgIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIHRoZSBTRElPIGNvcmUgY2FsbHMgYG54cHdpZmlfc2Rpb19wcm9iZWAgd2hlbiBpdCBkZXRlY3RzIGEgY29tcGF0aWJsZSBTRElPIGRldmljZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIEJ1dCB0aGUgcHJvYmxlbSBpcywgaWYgdGhlcmUncyBubyB2aXJ0dWFsIFNESU8gaG9zdCBjb250cm9sbGVyIG9yIGEgbWV0aG9kIHRvIHNpbXVsYXRlIHRoZSBwcmVzZW5jZSBvZiBhbiBTRElPIGRldmljZSwgdGhpcyBwcm9iZSBmdW5jdGlvbiB3aWxsICpuZXZlciogYmUgY2FsbGVkLiBDb25zZXF1ZW50bHksIHRoZSB3aG9sZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaXMgYmxvY2tlZC4gVGhhdCBtZWFucyBgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jYCwgdGhlIGZ1bmN0aW9uIEknbSB0cnlpbmcgdG8gcmVhY2gsIHdpbGwgcmVtYWluIHVucmVhY2hhYmxlLiBEYW1uLlxuXG5XYWl0IGEgc2Vjb25k4oCmIGlzIHRoaXMgdGhlIG9ubHkgZW50cnkgcG9pbnQ/IElzIHRoZXJlICphbnkqIG90aGVyIHJvdXRlIGludG8gdGhlIGRyaXZlcj8gQ291bGQgYG54cHdpZmlgIGFjdHVhbGx5IGJlIGEgbWFjODAyMTEgZHJpdmVyPyBUaGF0J3MgdW5saWtlbHkuIEl0IGxvb2tzIGxpa2UgaXQgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLCBhbmQgSSdtIHNlZWluZyBjYWxscyBsaWtlIGBjZmc4MDIxMV9uZXdfc3RhYCwgc28gcHJvYmFibHkgbm90LlxuXG5BbHJpZ2h0LCBsZXQncyBzdGVwIGJhY2suIENhbiBzeXprYWxsZXIgc29tZWhvdyBpbmplY3QgZXZlbnRzLCBvciB0cmlnZ2VyIHNvbWV0aGluZyB2aWEgYSBkZWJ1Z2ZzIGludGVyZmFjZSwgcGVyaGFwcz8gVGhhdCdzIGEgY2xhc3NpYyBieXBhc3MsIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBUaW1lIHRvIGNoZWNrIGBkZWJ1Z2ZzLmNgIHdpdGhpbiB0aGUgYG54cHdpZmlgIHNvdXJjZS4gTWF5YmUgSSBjYW4gZmluZCBhIHdheSBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM3MTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6NTg6MDUuNjI1OTM4OTk5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ2NDY0MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVidWdmc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGU9MzI9bnhwd2lmaS15ICs9IDExaC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGU6MzM6bnhwd2lmaS0kKENPTkZJR19ERUJVR19GUykgKz0gZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvTWFrZWZpbGUtMzQtb2JqLSQoQ09ORklHX05YUFdJRkkpICs9IG54cHdpZmkub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYz0yMzUwPXN0cnVjdCB3aXJlbGVzc19kZXYgKm54cHdpZmlfYWRkX3ZpcnR1YWxfaW50ZihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYy0yNTExLSNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jOjI1MTI6XFx0bnhwd2lmaV9kZXZfZGVidWdmc19pbml0KHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMtMjUxMy0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM9MjUzMz1pbnQgbnhwd2lmaV9kZWxfdmlydHVhbF9pbnRmKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jLTI1MzktI2lmZGVmIENPTkZJR19ERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmM6MjU0MDpcXHRueHB3aWZpX2Rldl9kZWJ1Z2ZzX3JlbW92ZShwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jLTI1NDEtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzozOiAqIG54cHdpZmk6IGRlYnVnZnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlYnVnZnMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz0xNj1zdGF0aWMgY2hhciAqYnNzX21vZGVzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzAtLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MzE6ICogZGVidWdmcyBcXFwiaW5mb1xcXCIgcmVhZCBoYW5kbGVyOiBkdW1wIGRyaXZlciBuYW1lL3ZlcnNpb24sIGludGVyZmFjZSwgQlNTIG1vZGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTMyLSAqIGxpbmsgc3RhdGUsIE1BQywgY291bnRlcnM7IFNUQSBhZGRzIFNTSUQvQlNTSUQvY2hhbm5lbC9jb3VudHJ5L3JlZ2lvbiBhbmRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz0zNj1ueHB3aWZpX2luZm9fcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVidWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTE5LS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEyMDogKiBkZWJ1Z2ZzIFxcXCJnZXRsb2dcXFwiIHJlYWQgaGFuZGxlcjogZHVtcCBmaXJtd2FyZS84MDIuMTEgY291bnRlcnMgKHJldHJ5LCBSVFMvQUNLLCBkdXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEyMS0gKiBmcmFnLCBtY2FzdCwgRkNTLCBiZWFjb24gc3RhdHMpLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTEyND1ueHB3aWZpX2dldGxvZ19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xODgtLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTg5OiAqIGRlYnVnZnMgXFxcImhpc3RvZ3JhbVxcXCIgcmVhZCBoYW5kbGVyOiByZXBvcnQgc2FtcGxlIGNvdW50IGFuZCBwZXItcmF0ZS9TTlIvbm9pc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTkwLSAqIGZsb29yL3NpZ25hbCBzdHJlbmd0aCBoaXN0b2dyYW1zLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTI4Mj1zdGF0aWMgc3RydWN0IG54cHdpZmlfZGVidWdfaW5mbyBpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjI4NDovKiBkZWJ1Z2ZzIFxcXCJkZWJ1Z1xcXCIgcmVhZCBoYW5kbGVyOiBkdW1wIGFkYXB0ZXIgZGVidWcgaW5mbyBhbmQgQkEvcmVvcmRlciB0YWJsZXMuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTI4NS1zdGF0aWMgc3NpemVfdFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTMxMj1zdGF0aWMgdTMyIHNhdmVkX3JlZ190eXBlLCBzYXZlZF9yZWdfb2Zmc2V0LCBzYXZlZF9yZWdfdmFsdWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzE0LS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjMxNTogKiBkZWJ1Z2ZzIFxcXCJyZWdyZHdyXFxcIiB3cml0ZSBoYW5kbGVyOiBwYXJzZSBcXHUwMDNjdHlwZSBvZmZzZXQgdmFsdWVcXHUwMDNlIGFuZCBzdG9yZSBmb3JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzE2LSAqIHJlYWRiYWNrL0lPLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTMxOT1ueHB3aWZpX3JlZ3Jkd3Jfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzUyLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjM1MzogKiBkZWJ1Z2ZzIFxcXCJyZWdyZHdyXFxcIiByZWFkIGhhbmRsZXI6IHBlcmZvcm0gcGVuZGluZyByZWdpc3RlciByZWFkL3dyaXRlIGFuZCByZXR1cm5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMzU0LSAqIFxcdTAwM2N0eXBlIG9mZnNldCB2YWx1ZVxcdTAwM2UuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9MzU3PW54cHdpZmlfcmVncmR3cl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjQwNjovKiBkZWJ1Z2ZzIFxcXCJkZWJ1Z19tYXNrXFxcIiByZWFkIGhhbmRsZXI6IHNob3cgZHJpdmVyIGRlYnVnIG1hc2suICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz00MDk9bnhwd2lmaV9kZWJ1Z19tYXNrX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NDMwOi8qIGRlYnVnZnMgXFxcImRlYnVnX21hc2tcXFwiIHdyaXRlIGhhbmRsZXI6IHNldCBkcml2ZXIgZGVidWcgbWFzay4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNDMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQzMz1ueHB3aWZpX2RlYnVnX21hc2tfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTQ1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NDU3Oi8qIGRlYnVnZnMgXFxcInZlcmV4dFxcXCIgd3JpdGUgaGFuZGxlcjogc2VsZWN0IGV4dGVuZGVkIHZlcnNpb24gc3RyaW5nLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NTgtc3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9NDU5PW54cHdpZmlfdmVyZXh0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjQ3NTovKiBkZWJ1Z2ZzIFxcXCJ2ZXJleHRcXFwiIHJlYWQgaGFuZGxlcjogc2hvdyBleHRlbmRlZCB2ZXJzaW9uIHN0cmluZy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNDc2LXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQ3Nz1ueHB3aWZpX3ZlcmV4dF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy00OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjQ5MjovKiBkZWJ1Z2ZzIFxcXCJtZW1yd1xcXCIgd3JpdGUgaGFuZGxlcjogcmVhZC93cml0ZSBmaXJtd2FyZSBtZW1vcnkgKGFkZHIsIHZhbHVlKS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNDkzLXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTQ5ND1ueHB3aWZpX21lbXJ3X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGNvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTUzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NTM1Oi8qIGRlYnVnZnMgXFxcIm1lbXJ3XFxcIiByZWFkIGhhbmRsZXI6IHNob3cgbGFzdCBtZW1vcnkgYWNjZXNzIHJlc3VsdC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTM2LXN0YXRpYyBzc2l6ZV90XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9NTU2PXN0YXRpYyB1MzIgc2F2ZWRfb2Zmc2V0ID0gLTEsIHNhdmVkX2J5dGVzID0gLTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTU1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NTU4Oi8qIGRlYnVnZnMgXFxcInJkZWVwcm9tXFxcIiB3cml0ZSBoYW5kbGVyOiBzZXQgRUVQUk9NIG9mZnNldC9sZW5ndGggdG8gcmVhZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTU5LXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTU2MD1ueHB3aWZpX3JkZWVwcm9tX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTU5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6NTkyOi8qIGRlYnVnZnMgXFxcInJkZWVwcm9tXFxcIiByZWFkIGhhbmRsZXI6IGR1bXAgRUVQUk9NIGJ5dGVzIGZyb20gc2F2ZWQgb2Zmc2V0L2xlbmd0aC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtNTkzLXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTU5ND1ueHB3aWZpX3JkZWVwcm9tX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTYzMy0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzo2MzQ6ICogZGVidWdmcyBcXFwiaHNjZmdcXFwiIHdyaXRlIGhhbmRsZXI6IGNvbmZpZ3VyZSBob3N0LXNsZWVwIChjb25kaXRpb25zL2dwaW8vZ2FwKSBvclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02MzUtICogY2FuY2VsLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jPTYzOD1ueHB3aWZpX2hzY2ZnX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjY5MjovKiBkZWJ1Z2ZzIFxcXCJoc2NmZ1xcXCIgcmVhZCBoYW5kbGVyOiBzaG93IGN1cnJlbnQgaG9zdC1zbGVlcCBjb25maWd1cmF0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy02OTMtc3RhdGljIHNzaXplX3RcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYz05NzA9bnhwd2lmaV90d3RfaW5mb3JtYXRpb25fd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTk5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6OTk4OiNkZWZpbmUgTlhQV0lGSV9ERlNfQUREX0ZJTEUobmFtZSkgZGVidWdmc19jcmVhdGVfZmlsZSgjbmFtZSwgMDY0NCwgICAgIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtOTk5LVxcdFxcdFxcdFxcdCAgIHByaXYtXFx1MDAzZWRmc19kZXZfZGlyLCBwcml2LCAgICAgICAgICAgICBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM9MTAzOD1OWFBXSUZJX0RGU19GSUxFX1dSSVRFX09QUyh0d3RfaW5mb3JtYXRpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDQwOi8qIENyZWF0ZSBwZXItbmV0ZGV2IGRlYnVnZnMgZGlyZWN0b3J5IGFuZCBmaWxlcy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA0MS12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNDI6bnhwd2lmaV9kZXZfZGVidWdmc19pbml0KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNDc6XFx0cHJpdi1cXHUwMDNlZGZzX2Rldl9kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIocHJpdi1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VuYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDQ4LVxcdFxcdFxcdFxcdFxcdCAgICAgICBueHB3aWZpX2Rmc19kaXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jOjEwNzE6LyogUmVtb3ZlIHBlci1uZXRkZXYgZGVidWdmcyBkaXJlY3RvcnkgYW5kIGZpbGVzLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDcyLXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA3MzpueHB3aWZpX2Rldl9kZWJ1Z2ZzX3JlbW92ZShzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDc4OlxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShwcml2LVxcdTAwM2VkZnNfZGV2X2Rpcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwNzktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDgxOi8qIENyZWF0ZSB0b3AtbGV2ZWwgZGVidWdmcyBkaXJlY3RvcnkuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwODItdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDgzOm54cHdpZmlfZGVidWdmc19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwODQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDg1LVxcdGlmICghbnhwd2lmaV9kZnNfZGlyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDg2OlxcdFxcdG54cHdpZmlfZGZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihcXFwibnhwd2lmaVxcXCIsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDg3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmMtMTA4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA4OTovKiBSZW1vdmUgdG9wLWxldmVsIGRlYnVnZnMgZGlyZWN0b3J5LiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYy0xMDkwLXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9kZWJ1Z2ZzLmM6MTA5MTpueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwOTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2RlYnVnZnMuYzoxMDkzOlxcdGRlYnVnZnNfcmVtb3ZlKG54cHdpZmlfZGZzX2Rpcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZGVidWdmcy5jLTEwOTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NDY9RVhQT1JUX1NZTUJPTF9HUEwoX254cHdpZmlfZGJnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY0ODovKiBNb2R1bGUgaW5pdDogaW5pdCBkZWJ1Z2ZzIGlmIGVuYWJsZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NDktc3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjUwPW54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjUyLSNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM6MTY1MzpcXHRueHB3aWZpX2RlYnVnZnNfaW5pdCgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjU0LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2NTg6LyogTW9kdWxlIGV4aXQ6IHJlbW92ZSBkZWJ1Z2ZzIGlmIGVuYWJsZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jLTE2NTktc3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmM9MTY2MD1ueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY2Mi0jaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2NjM6XFx0bnhwd2lmaV9kZWJ1Z2ZzX3JlbW92ZSgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY0LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5oPTE0MTc9dm9pZCBueHB3aWZpX2RldmR1bXBfdG1vX2Z1bmModW5zaWduZWQgbG9uZyBmdW5jdGlvbl9jb250ZXh0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xNDE5LSNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyMDp2b2lkIG54cHdpZmlfZGVidWdmc19pbml0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaDoxNDIxOnZvaWQgbnhwd2lmaV9kZWJ1Z2ZzX3JlbW92ZSh2b2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmgtMTQyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyMzp2b2lkIG54cHdpZmlfZGV2X2RlYnVnZnNfaW5pdChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmg6MTQyNDp2b2lkIG54cHdpZmlfZGV2X2RlYnVnZnNfcmVtb3ZlKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uaC0xNDI1LSNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDo1ODowNS43NDA1ODk5MTdaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcxNTA2OTA1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBUcm91Ymxlc2hvb3RpbmcgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gdGVzdCB0aGlzIFNESU8gZHJpdmVyLCBhbmQgSSdtIGhpdHRpbmcgYSB3YWxsLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHVzZSB0aGUgZGVidWdmcyBpbnRlcmZhY2UsIGJ1dCB0aGF0IG9ubHkgYWxsb3dzIGZvciBiYXNpYyByZWdpc3RlciBhbmQgbWVtb3J5IG1hbmlwdWxhdGlvbiDigJMgbm90IGRpcmVjdCBldmVudCBpbmplY3Rpb24sIHdoaWNoIEkgbmVlZCBmb3IgcHJvcGVyIHRlc3RpbmcuIFRoYXQncyBhIGRlZmluaXRlIHJvYWRibG9jay5cblxuVGhlbiBpdCBoaXQgbWU6IHRoaXMgaXMgYW4gU0RJTyBkcml2ZXIsIGFuZCBJIGNhbid0IHRoaW5rIG9mIGFueSBTRElPIGVtdWxhdG9ycyByZWFkaWx5IGF2YWlsYWJsZS4gSWYgSSdtIHdvcmtpbmcgd2l0aGluIFFFTVUgb3IgR0NFLCBhbmQgdGhlcmUncyBubyB3YXkgdG8gZW11bGF0ZSB0aGUgU0RJTyBidXMsIHRoZW4gdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIHRoZXNlIGVudmlyb25tZW50cy4gVGhhdCdzIGEgc2VyaW91cyBwcm9ibGVtIGZvciBjb21wcmVoZW5zaXZlIGNvdmVyYWdlLlxuXG5TbywgZmlyc3QgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucy4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLiBJcyB0aGVyZSBzb21lIHNvcnQgb2YgdmlydHVhbCBTRElPIGltcGxlbWVudGF0aW9uIEkgaGF2ZW4ndCBjb21lIGFjcm9zcz8gT3IgZG9lcyBTeXprYWxsZXIsIHdoaWNoIEknbSBmYW1pbGlhciB3aXRoLCBvZmZlciBhIGJhY2tkb29yIG1ldGhvZCBmb3IgU0RJTyBpbmplY3Rpb24gdGhhdCBJIGhhdmVuJ3QgdXNlZCB5ZXQ/XG5cbk5vcGUuIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYW4gU0RJTyBlbXVsYXRvci4gSXQncyBnb3QgVVNCIHZpYSBkdW1teV9oY2QsIFBDSSB2aWEgUUVNVSwgYW5kIG90aGVyIGVtdWxhdGVkIGJ1c2VzLCBidXQgbm90IFNESU8uIERhbW4uIFRoaXMgaXMgYSBjcnVjaWFsIGdhcCBpbiBvdXIgdGVzdCBpbmZyYXN0cnVjdHVyZS5cblxuQWxyaWdodCwgd2hhdCBhYm91dCBhIGhhcmR3YXJlIHNpbXVsYXRpb24/IEknbSB0cnlpbmcgdG8gZmluZCBhbiBlcXVpdmFsZW50IHRvIGBtYWM4MDIxMV9od3NpbWAgZm9yIFNESU8uIElzIHRoZXJlIGEgc2ltaWxhciBkcml2ZXIgdGhhdCBzaW11bGF0ZXMgU0RJTyBoYXJkd2FyZT8gVGhlIGFuc3dlciBpcyBuby4gVGhpcyBpcyBnb2luZyB0byBtYWtlIHRlc3RpbmcgcXVpdGUgZGlmZmljdWx0LlxuXG5NYXliZSBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpcyB0aGUgd3Jvbmcgd2F5LiBPa2F5LCBsZXQncyBiYWNrIHVwIGFuZCBjaGVjayBkcml2ZXJzIGZvciBhbHRlcm5hdGUgYnVzZXMuIEknbGwgZ28gdGhyb3VnaCB0aGUgd2lyZWxlc3MgZHJpdmVycywgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkgYWdhaW4uIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSdsbCBzZWUgaWYgSSBjYW4gZmluZCBhbiBhbHRlcm5hdGUgc29sdXRpb24gSSd2ZSBtaXNzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4OTExLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU4OjEzLjQ1NTY2MTU2WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIjExYWMuY1wiLFxuICAgIFwiMTFhYy5oXCIsXG4gICAgXCIxMWF4LmNcIixcbiAgICBcIjExYXguaFwiLFxuICAgIFwiMTFoLmNcIixcbiAgICBcIjExbi5jXCIsXG4gICAgXCIxMW4uaFwiLFxuICAgIFwiMTFuX2FnZ3IuY1wiLFxuICAgIFwiMTFuX2FnZ3IuaFwiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5jXCIsXG4gICAgXCIxMW5fcnhyZW9yZGVyLmhcIixcbiAgICBcImNmZy5oXCIsXG4gICAgXCJjZmc4MDIxMS5jXCIsXG4gICAgXCJjZmc4MDIxMS5oXCIsXG4gICAgXCJjZnAuY1wiLFxuICAgIFwiY21kZXZ0LmNcIixcbiAgICBcImNtZGV2dC5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaWUuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJqb2luLmNcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWFpbi5oXCIsXG4gICAgXCJzY2FuLmNcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpby5oXCIsXG4gICAgXCJzdGFfY2ZnLmNcIixcbiAgICBcInN0YV9jbWQuY1wiLFxuICAgIFwic3RhX2V2ZW50LmNcIixcbiAgICBcInN0YV9yeC5jXCIsXG4gICAgXCJzdGFfdHguY1wiLFxuICAgIFwidHhyeC5jXCIsXG4gICAgXCJ1YXBfY21kLmNcIixcbiAgICBcInVhcF9ldmVudC5jXCIsXG4gICAgXCJ1YXBfdHhyeC5jXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid21tLmNcIixcbiAgICBcIndtbS5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjU4OjEzLjQ1NTc2NTA3WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MzIxNTA4OTE5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IE5YUCBJVzYxeCBTRElPIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGFuZCB0aGUga2V5IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBhbGwgYWJvdXQgYHNkaW8uY2AuIE5vIG1lbnRpb25zIG9mIFVTQiBvciBQQ0llLCBwdXJlbHkgU0RJTy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZyBpbiBteSBtaW5kIGJlY2F1c2Ugc3l6a2FsbGVyJ3MgcHJldHR5IGxpbWl0ZWQgd2hlbiBpdCBjb21lcyB0byBlbXVsYXRpbmcgc3BlY2lhbGl6ZWQgaGFyZHdhcmUuIEluIGZhY3QsIEknbSBwcmV0dHkgc3VyZSBzeXprYWxsZXIgKmNhbid0KiBlbXVsYXRlIFNESU8gZGV2aWNlcyBhdCBhbGwuIFNvLCBpZiB0aGlzIGlzIHB1cmVseSBhbiBTRElPIGRyaXZlciwgdGhlIGNvZGUncyBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyBhbmQgdGhhdCdzIHVzdWFsbHkgYSBcIldvcnRoRnV6emluZz1mYWxzZVwiIHNjZW5hcmlvLlxuXG5CdXQgd2FpdCwgaG9sZCBvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gTGV0IG1lIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBDb3VsZCB0aGlzIHBhdGNoIGJlIHRlc3Rpbmcgc29tZXRoaW5nIHRoYXQgd2FzIHN1Ym1pdHRlZCBhcyBhIHBhdGNoLCBpbnRlbmRlZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmU/IFRoYXQgaGFwcGVucyBvZnRlbi4gVGhlIGluc3RydWN0aW9ucyBzdGF0ZSBjbGVhcmx5OiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIFNwZWNpZmljYWxseSwgdGhlIGluc3RydWN0aW9ucyBjYWxsIG91dCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgbGlrZSBQQ0llIGNhcmRzLiBUaGF0J3MgYSBnb29kIGNvbXBhcmlzb24uXG5cblRoaXMgZHJpdmVyLCBgbnhwd2lmaWAsIGlzIHZlbmRvci1zcGVjaWZpYyB0byB0aGUgTlhQIElXNjF4IGNoaXBzZXQuIEFuZCBpdCdzIFNESU8tYmFzZWQuIEkga25vdyB0aGVyZSdzIG5vIFNESU8gZW11bGF0aW9uIGluIFFFTVUuIFFFTVUgZG9lcyBoYXZlIGBzZGhjaS1wY2lgLCB3aGljaCBpcyBhbiBTRCBob3N0IGNvbnRyb2xsZXIsIGJ1dCB0aGF0J3MgZm9yIFNEIGNhcmRzIChibG9jayBkZXZpY2VzKSwgbm90IFNESU8gZGV2aWNlcyBsaWtlIFdpLUZpIGNhcmRzLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSBubyBkaWNlISBRRU1VIGp1c3QgZG9lc24ndCBzdXBwb3J0IHBsdWdnaW5nIGluIGEgdmlydHVhbCBTRElPIFdpLUZpIGNhcmQgdG8gYSB2aXJ0dWFsIGhvc3QgY29udHJvbGxlci4gRXZlbiBpZiBpdCBkaWQsIHRoZXJlJ3Mgbm8gd2F5IGZvciBzeXprYWxsZXIgdG8gaW5qZWN0IFNESU8gcGFja2V0cyBvciBlbXVsYXRlIHRoZSBXaS1GaSBjYXJkIGl0c2VsZi4gSXQncyBhIGRlYWQgZW5kLlxuXG5JJ20gc3RhcnRpbmcgdG8gYnVpbGQgYSBzb2xpZCBjYXNlLCBsZXQgbWUgbWFrZSBpdCB3YXRlci10aWdodC4gSSdtIG1vZGlmeWluZyBgbnhwd2lmaV91YXBfZXZlbnRfc3RhX2Fzc29jYCBpbiB0aGUgYG54cHdpZmlgIGRyaXZlciwgd2hpY2ggaXMgYSAqdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciogc3BlY2lmaWNhbGx5IGZvciB0aGUgTlhQIElXNjF4LiBJdCBpcyBiYXNlZCBvbiB0aGUgU0RJTyBidXMgYmVjYXVzZSB0aGVyZSdzIGBzZGlvLmNgIGludm9sdmVkLiBTaW5jZSB0aGVyZSdzIG5vIHdheSB0byBlbXVsYXRlIFNESU8gV2ktRmkgZGV2aWNlcyBpbiBRRU1VIG9yIHN5emthbGxlciwgdGhpcyBjb2RlIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gYW55IHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCBpcyBub3Qgd29ydGggZnV6emluZy5cblxuTGV0IG1lIGRvdWJsZSBjaGVjayBob3cgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIEl0J3MgY2FsbGVkIGZyb20gYSBjaGFpbjogYG54cHdpZmlfdWFwX2V2ZW50X3N0YV9hc3NvY2AgaXMgY2FsbGVkIGZyb20gYG54cHdpZmlfcHJvY2Vzc191YXBfZXZlbnRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbnhwd2lmaV9wcm9jZXNzX2V2ZW50YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYG54cHdpZmlfaGFuZGxlX2V2ZW50c2AsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBueHB3aWZpX21haW5fcHJvY2Vzc2AsIHdoaWNoIHJ1bnMgaW4gYSB3b3JrcXVldWUuIFRoaXMgd29ya3F1ZXVlIGlzIHNjaGVkdWxlZCB3aGVuIGFuIGludGVycnVwdCBpcyByZWNlaXZlZCBmcm9tIHRoZSAqU0RJTyBkZXZpY2UqLiBXaXRob3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwgU0RJTyBkZXZpY2UsIHRoZSBkcml2ZXIgZG9lc24ndCBldmVuIHByb2JlLCB0aGUgd29ya3F1ZXVlIGlzIG5ldmVyIHNldCB1cCwgYW5kIHRoaXMgZW50aXJlIHBhdGggaXMgbmV2ZXIgZXhlY3V0ZWQuIEl0J3MgYWxsIGRlcGVuZGVudCBvbiB0aGUgU0RJTyBidXMuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQuIFRoaXMgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBzeXprYWxsZXIgc2V0dXAuIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTg1NCwiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE1OjAxOjA2LjY3MDg1NzgxMloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIE5YUCBJVzYxeCBjaGlwc2V0cy4gVGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBTRElPIGJ1cyAodmlhIGBDT05GSUdfTlhQV0lGSV9TRElPYCkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgU0RJTyBXaUZpIGRldmljZXMgaW4gc3RhbmRhcmQgUUVNVSBvciBzeXprYWxsZXIgKHVubGlrZSBVU0IgdmlhIGR1bW15X2hjZCBvciBtYWM4MDIxMSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIE5YUCBJVzYxeCBjaGlwc2V0cy4gVGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBTRElPIGJ1cyAodmlhIGBDT05GSUdfTlhQV0lGSV9TRElPYCkuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgU0RJTyBXaUZpIGRldmljZXMgaW4gc3RhbmRhcmQgUUVNVSBvciBzeXprYWxsZXIgKHVubGlrZSBVU0IgdmlhIGR1bW15X2hjZCBvciBtYWM4MDIxMSB2aWEgbWFjODAyMTFfaHdzaW0pLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgkfwc[1] Phase: Running StartedAt: 2026-07-30 15:01:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgkfwc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-30 15:01:18 +0000 UTC FinishedAt: 2026-07-30 15:01:24 +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,}