Name: series-workflow25h9k Phase: Failed StartedAt: 2026-07-13 19:08:20 +0000 UTC FinishedAt: 2026-07-13 19:34:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25h9k[0] Phase: Succeeded StartedAt: 2026-07-13 19:08:20 +0000 UTC FinishedAt: 2026-07-13 19:33:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25h9k[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 19:08:20 +0000 UTC FinishedAt: 2026-07-13 19:33:41 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRldl93YXJuIGFuZCBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbW9kaWZ5IGFueSBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZGU4Nzg4YTQxMzAyN2EyMjdhNzQyNDZiMDY5NWE4ODQ1OGQ5MjE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTk6MzI6NDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXG5pbmRleCA5MWI1OTQ3ZGFlMDYwMC4uYjIxN2MxYzE5ODEwYWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY1xuQEAgLTczMCw2ICYjNDM7NzMwLDkgQEAgc3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxuIFx0XHRcdCpmZWF0dXJlcyBcdTAwMjY9IH5CSVRfVUxMKE5QQ19PVVRFUl9WSUQpO1xuIFxuIFx0LyogQWxsb3cgZXh0cmFjdGluZyBTUEkgZmllbGQgZnJvbSBBSCBhbmQgRVNQIGhlYWRlcnMgYXQgc2FtZSBvZmZzZXQgKi9cbiYjNDM7XHRpZiAobnBjX2NoZWNrX292ZXJsYXAocnZ1LCBibGthZGRyLCBOUENfSVBTRUNfU1BJLCAwLCBpbnRmKSlcbiYjNDM7XHRcdGRldl93YXJuKHJ2dS1cdTAwM2VkZXYsIFwmIzM0O092ZXJsYXAgZGV0ZWN0ZWQgdGhlIGZpZWxkIE5QQ19JUFNFQ19TUElcXG5cJiMzNDspO1xuJiM0MztcdC8qIFNldCBTUEkgZmxhZyBvbmx5IGlmIEFIL0VTUCBhbmQgSVBTRUNfU1BJIGFyZSBpbiB0aGUga2V5ICovXG4gXHRpZiAobnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCBOUENfSVBTRUNfU1BJLCBpbnRmKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAoKmZlYXR1cmVzIFx1MDAyNiAoQklUX1VMTChOUENfSVBQUk9UT19FU1ApIHwgQklUX1VMTChOUENfSVBQUk9UT19BSCkpKSlcbiBcdFx0KmZlYXR1cmVzIHw9IEJJVF9VTEwoTlBDX0lQU0VDX1NQSSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGV2X3dhcm4gYW5kIGEgY29tbWVudC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBtb2RpZnkgYW55IHN0YXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGRlODc4OGE0MTMwMjdhMjI3YTc0MjQ2YjA2OTVhODg0NThkOTIxOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDE5OjMyOjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jCmluZGV4IDkxYjU5NDdkYWUwNjAwLi5iMjE3YzFjMTk4MTBhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYwpAQCAtNzMwLDYgJiM0Mzs3MzAsOSBAQCBzdGF0aWMgdm9pZCBucGNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHU4IGludGYpCiAJCQkqZmVhdHVyZXMgJmFtcDs9IH5CSVRfVUxMKE5QQ19PVVRFUl9WSUQpOwogCiAJLyogQWxsb3cgZXh0cmFjdGluZyBTUEkgZmllbGQgZnJvbSBBSCBhbmQgRVNQIGhlYWRlcnMgYXQgc2FtZSBvZmZzZXQgKi8KJiM0MzsJaWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpCiYjNDM7CQlkZXZfd2FybihydnUtJmd0O2RldiwgJiMzNDtPdmVybGFwIGRldGVjdGVkIHRoZSBmaWVsZCBOUENfSVBTRUNfU1BJXG4mIzM0Oyk7CiYjNDM7CS8qIFNldCBTUEkgZmxhZyBvbmx5IGlmIEFIL0VTUCBhbmQgSVBTRUNfU1BJIGFyZSBpbiB0aGUga2V5ICovCiAJaWYgKG5wY19pc19maWVsZF9wcmVzZW50KHJ2dSwgTlBDX0lQU0VDX1NQSSwgaW50ZikgJmFtcDsmYW1wOwogCSAgICAoKmZlYXR1cmVzICZhbXA7IChCSVRfVUxMKE5QQ19JUFBST1RPX0VTUCkgfCBCSVRfVUxMKE5QQ19JUFBST1RPX0FIKSkpKQogCQkqZmVhdHVyZXMgfD0gQklUX1VMTChOUENfSVBTRUNfU1BJKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byBydnVfbnBjX2ZzLmMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNgLiBJdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBpbnRyb2R1Y2VzIGEgYGRldl93YXJuYCBjYWxsIHdpdGhpbiBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBub3cgY2hlY2tzIGZvciBhbiBvdmVybGFwIGludm9sdmluZyBgTlBDX0lQU0VDX1NQSWAgdXNpbmcgdGhlIGBucGNfY2hlY2tfb3ZlcmxhcGAgZnVuY3Rpb24uIElmIG92ZXJsYXAgaXMgZGV0ZWN0ZWQsIGl0IHRyaWdnZXJzIGEgd2FybmluZyBtZXNzYWdlOiAmIzM0O092ZXJsYXAgZGV0ZWN0ZWQgdGhlIGZpZWxkIE5QQ19JUFNFQ19TUEkmIzM0Oy4gVGhlIGNvZGUgYWxzbyBhZGRzIGEgY29tbWVudCBleHBsYWluaW5nIHRoZSBwdXJwb3NlIG9mIHNldHRpbmcgdGhlIFNQSSBmbGFnLgoKQWxyaWdodCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgc25pcHBldCBhZ2Fpbi4gWWVwLCBJJiMzOTttIHJlYWRpbmcgaXQgY29ycmVjdGx5LiBXZSYjMzk7cmUganVzdCBhZGRpbmcgYSB3YXJuaW5nIGlmIGBucGNfY2hlY2tfb3ZlcmxhcGAgcmV0dXJucyB0cnVlLCBtZWFuaW5nIGl0JiMzOTtzIGRldGVjdGVkIGFuIG92ZXJsYXAgYmV0d2VlbiBgTlBDX0lQU0VDX1NQSWAgYW5kIGFub3RoZXIgZmllbGQuIEFuZCB0aGVuLCByZWdhcmRsZXNzLCBpdCBzZXRzIHRoZSBTUEkgZmxhZyBpZiBgTlBDX0lQU0VDX1NQSWAgaXMgcHJlc2VudCBBTkQgQUgvRVNQIGFyZSBwcmVzZW50IGFzIGZlYXR1cmVzLgoKTXkgbWFpbiBjb25jZXJuIGhlcmUgaXMgYWx3YXlzIHNpZGUgZWZmZWN0cywgdGhvdWdoLiBTbywgaXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byBtYWtlIHN1cmUgdGhlIGZ1bmN0aW9uIGBucGNfY2hlY2tfb3ZlcmxhcGAgaXMgc2FmZSB0byBjYWxsIGFuZCBkb2VzbiYjMzk7dCBkbyBhbnl0aGluZyBlbHNlIHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMuIEkmIzM5O2xsIG5lZWQgdG8gcmV2aWV3IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbnBjX2NoZWNrX292ZXJsYXBgIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25wY19jaGVja19vdmVybGFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz0xNjc9c3RhdGljIHZvaWQgbnBjX3NldF9sYXllcl9tZGF0YShzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODY6c3RhdGljIGJvb2wgbnBjX2NoZWNrX292ZXJsYXBfZmllbGRzKHN0cnVjdCBucGNfa2V5X2ZpZWxkICppbnB1dDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMTg3LVx0XHRcdFx0ICAgICBzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy0yMTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjEyOnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMjEzLVx0XHRcdCAgICAgIGVudW0ga2V5X2ZpZWxkcyB0eXBlLCB1OCBzdGFydF9saWQsIHU4IGludGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI1OC1cdFx0XHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI1OTpcdFx0XHRcdGlmIChucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoZHVtbXksIGlucHV0LCBrd3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI2MC1cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI5MC1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTE6XHRcdFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMjkyLVx0XHRcdFx0XHRcdCAgICAgTlBDX0tXU19JTl9LRVlfU1pfOCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jPTMwMD1zdGF0aWMgYm9vbCBucGNfY2hlY2tfZmllbGQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgZW51bSBrZXlfZmllbGRzIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTMwMy1cdGlmICghbnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCB0eXBlLCBpbnRmKSB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwNDpcdCAgICBucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIHR5cGUsIDAsIGludGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTMwNS1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz00NDE9c3RhdGljIHZvaWQgbnBjX2hhbmRsZV9tdWx0aV9sYXllcl9maWVsZHMoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgdTggaW50Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtNTMxLVx0c3RhcnRfbGlkID0ga2V5X2ZpZWxkc1tOUENfRVRZUEVdLmxheWVyX21kYXRhLmxpZCAmIzQzOyAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUzMjpcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19FVFlQRSwgc3RhcnRfbGlkLCBpbnRmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTUzMy1cdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcJiMzNDtta2V4OiBFdGhlcnR5cGUgaXMgb3ZlcndyaXR0ZW4gYnkgaGlnaGVyIGxheWVycy5cXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy01NjEtXHRzdGFydF9saWQgPSBrZXlfZmllbGRzW05QQ19PVVRFUl9WSURdLmxheWVyX21kYXRhLmxpZCAmIzQzOyAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjU2MjpcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19PVVRFUl9WSUQsIHN0YXJ0X2xpZCwgaW50ZikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy01NjMtXHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7bWtleDogT3V0ZXIgdmxhbiB0Y2kgaXMgb3ZlcndyaXR0ZW4gYnkgaGlnaGVyIGxheWVycy5cXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz02ODM9c3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy03MzItXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjczMzpcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19JUFNFQ19TUEksIDAsIGludGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczNC1cdFx0ZGV2X3dhcm4ocnZ1LVx1MDAzZWRldiwgXCYjMzQ7T3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jPTgzNj1zdGF0aWMgaW50IG5wY19zY2FuX3ZlcmlmeV9rZXgoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtODUzLVx0LyogY2hlY2sgdGhhdCBub25lIG9mIHRoZSBmaWVsZHMgb3ZlcndyaXRlIGNoYW5uZWwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4NTQ6XHRpZiAobnBjX2NoZWNrX292ZXJsYXAocnZ1LCBibGthZGRyLCBOUENfQ0hBTiwgMCwgTklYX0lOVEZfUlgpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtODU1LVx0XHRkZXZfZXJyKHJ2dS1cdTAwM2VkZXYsIFwmIzM0O0NoYW5uZWwgY2Fubm90IGJlIG92ZXJ3cml0dGVuXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDMzCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbnBjX2NoZWNrX292ZXJsYXBgKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbnBjX2NoZWNrX292ZXJsYXBgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gZXhhY3RseSBob3cgdGhpcyByb3V0aW5lIGhhbmRsZXMgY29sbGlzaW9uIGRldGVjdGlvbiBmb3Igbm9uLXBsYXllciBjaGFyYWN0ZXJzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBudWFuY2VzIG9mIGl0cyBib3VuZGluZyBib3ggaGFuZGxpbmcgYW5kIGFueSBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyBlbXBsb3llZC4gVGhpbmtpbmcgYmFjaywgSSBzZWVtIHRvIHJlbWVtYmVyIHdlIGhhZCBzb21lIGlzc3VlcyB3aXRoIGNlcnRhaW4gZWRnZSBjYXNlcyB3aXRoIHZlcnkgbGFyZ2Ugb3Igb2RkbHktc2hhcGVkIE5QQ3MsIHNvIEkgd2FudCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSBsb2dpYyBjYXJlZnVsbHksIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB3aGVyZSBmdXJ0aGVyIHJlZmluZW1lbnQgbWlnaHQgeWllbGQgcGVyZm9ybWFuY2UgZ2FpbnMuIFNwZWNpZmljIHF1ZXN0aW9ucyBJIGhhdmUgYXJlIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIHRoZSBmdW5jdGlvbiwgdXNlIG9mIHNwYXRpYWwgaW5kZXhpbmcgKGlmIGFueSksIGFuZCBob3cgaXQgZGVhbHMgd2l0aCBkeW5hbWljIG9iamVjdHMgdmVyc3VzIHN0YXRpYyB3b3JsZCBnZW9tZXRyeS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY2xldmVyIHRyaWNrcywgYW55IHVzZSBvZiBTSU1EIGluc3RydWN0aW9ucywgYW5kIHdoZXRoZXIgaXQmIzM5O3MgdXNpbmcgYSBicm9hZC1waGFzZS9uYXJyb3ctcGhhc2UgY29sbGlzaW9uIGRldGVjdGlvbiBhcHByb2FjaC4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgY29kZSBjb21tZW50cyBhcmUgaGVscGZ1bCDigJMgZ29vZCBjb21tZW50cyBhcmUgd29ydGggdGhlaXIgd2VpZ2h0IGluIGdvbGQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIxMDpcdCAqIG5lZWRzIHRvIGJlIGNoZWNrZWQuXG4gMjExOlx0ICovXG4gMjEyOlx0c3RhdGljIGJvb2wgbnBjX2NoZWNrX292ZXJsYXAoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcixcbiAyMTM6XHRcdFx0XHQgICAgICBlbnVtIGtleV9maWVsZHMgdHlwZSwgdTggc3RhcnRfbGlkLCB1OCBpbnRmKVxuIDIxNDpcdHtcbiAyMTU6XHRcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFx1MDAyNnJ2dS1cdTAwM2Vody1cdTAwM2VtY2FtO1xuIDIxNjpcdFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmR1bW15LCAqaW5wdXQ7XG4gMjE3Olx0XHRpbnQgc3RhcnRfa3dpLCBvZmZzZXQ7XG4gMjE4Olx0XHR1OCBucl9iaXRzLCBsaWQsIGx0LCBsZDtcbiAyMTk6XHRcdGludCBleHRyLCBrd3M7XG4gMjIwOlx0XHR1NjQgY2ZnO1xuIDIyMTpcdFxuIDIyMjpcdFx0ZHVtbXkgPSBcdTAwMjZtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbTlBDX1VOS05PV05dO1xuIDIyMzpcdFx0aW5wdXQgPSBcdTAwMjZtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XG4gMjI0Olx0XG4gMjI1Olx0XHRpZiAoaXNfbnBjX2ludGZfdHgoaW50ZikpIHtcbiAyMjY6XHRcdFx0ZHVtbXkgPSBcdTAwMjZtY2FtLVx1MDAzZXR4X2tleV9maWVsZHNbTlBDX1VOS05PV05dO1xuIDIyNzpcdFx0XHRpbnB1dCA9IFx1MDAyNm1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcbiAyMjg6XHRcdH1cbiAyMjk6XHRcbiAyMzA6XHRcdGt3cyA9IE5QQ19LV1NfSU5fS0VZX1NaXzc7XG4gMjMxOlx0XG4gMjMyOlx0XHRpZiAoaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKVxuIDIzMzpcdFx0XHRnb3RvIHNraXBfY24xMGtfY29uZmlnO1xuIDIzNDpcdFxuIDIzNTpcdFx0Zm9yIChsaWQgPSBzdGFydF9saWQ7IGxpZCBcdTAwM2MgTlBDX01BWF9MSUQ7IGxpZCYjNDM7JiM0MzspIHtcbiAyMzY6XHRcdFx0Zm9yIChsdCA9IDA7IGx0IFx1MDAzYyBOUENfTUFYX0xUOyBsdCYjNDM7JiM0MzspIHtcbiAyMzc6XHRcdFx0XHRmb3IgKGxkID0gMDsgbGQgXHUwMDNjIE5QQ19NQVhfTEQ7IGxkJiM0MzsmIzQzOykge1xuIDIzODpcdFx0XHRcdFx0Y2ZnID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4gMjM5Olx0XHRcdFx0XHRcdFx0IE5QQ19BRl9JTlRGWF9MSURYX0xUWF9MRFhfQ0ZHXG4gMjQwOlx0XHRcdFx0XHRcdFx0IChpbnRmLCBsaWQsIGx0LCBsZCkpO1xuIDI0MTpcdFx0XHRcdFx0aWYgKCFGSUVMRF9HRVQoTlBDX0xEQVRBX0VOLCBjZmcpKVxuIDI0MjpcdFx0XHRcdFx0XHRjb250aW51ZTtcbiAyNDM6XHRcdFx0XHRcdG1lbXNldChkdW1teSwgMCwgc2l6ZW9mKHN0cnVjdCBucGNfa2V5X2ZpZWxkKSk7XG4gMjQ0Olx0XHRcdFx0XHRucGNfc2V0X2xheWVyX21kYXRhKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sXG4gMjQ1Olx0XHRcdFx0XHRcdFx0ICAgIGNmZywgbGlkLCBsdCwgaW50Zik7XG4gMjQ2Olx0XHRcdFx0XHQvKiBleGNsdWRlIGlucHV0ICovXG4gMjQ3Olx0XHRcdFx0XHRpZiAobnBjX2lzX3NhbWUoaW5wdXQsIGR1bW15KSlcbiAyNDg6XHRcdFx0XHRcdFx0Y29udGludWU7XG4gMjQ5Olx0XHRcdFx0XHRzdGFydF9rd2kgPSBkdW1teS1cdTAwM2VsYXllcl9tZGF0YS5rZXkgLyA4O1xuIDI1MDpcdFx0XHRcdFx0b2Zmc2V0ID0gKGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmtleSAqIDgpICUgNjQ7XG4gMjUxOlx0XHRcdFx0XHRucl9iaXRzID0gZHVtbXktXHUwMDNlbGF5ZXJfbWRhdGEubGVuICogODtcbiAyNTI6XHRcdFx0XHRcdC8qIGZvcm0gS1cgbWFza3MgKi9cbiAyNTM6XHRcdFx0XHRcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCBOUENfVU5LTk9XTixcbiAyNTQ6XHRcdFx0XHRcdFx0XHQgbnJfYml0cywgc3RhcnRfa3dpLFxuIDI1NTpcdFx0XHRcdFx0XHRcdCBvZmZzZXQsIGludGYpO1xuIDI1NjpcdFx0XHRcdFx0LyogY2hlY2sgYW55IGlucHV0IGZpZWxkIGJpdHMgZmFsbHMgaW4gYW55XG4gMjU3Olx0XHRcdFx0XHQgKiBvdGhlciBmaWVsZCBiaXRzLlxuIDI1ODpcdFx0XHRcdFx0ICovXG4gMjU5Olx0XHRcdFx0XHRpZiAobnBjX2NoZWNrX292ZXJsYXBfZmllbGRzKGR1bW15LCBpbnB1dCwga3dzKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjMyCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIE5ldHdvcmsgUHJvY2Vzc29yIENoZWNrKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kLCBpbml0aWFsbHksIEkgc2VlIHRoYXQgYG5wY19jaGVja19vdmVybGFwYCBhcHBlYXJzIHRvIGJlIGEgcHVyZSByZWFkIG9wZXJhdGlvbi4gSXQgbG9va3MgYXQgc29tZSByZWdpc3RlcnMsIGNoZWNrcyBmb3IgYW4gb3ZlcmxhcCwgYW5kIHNwaXRzIGJhY2sgYSBib29sZWFuLiBUaGUgcGF0Y2ggaXRzZWxmIGp1c3QgKmFkZHMqIGEgd2FybmluZyBiYXNlZCBvbiB0aGUgcmV0dXJuIG9mIHRoaXMgZnVuY3Rpb246IGBkZXZfd2FybmAuIE5vIGNoYW5nZXMgdG8gdGhlIHByb2dyYW0gZmxvdywgbm8gc3RhdGUgbW9kaWZpY2F0aW9ucyBkaXJlY3RseS4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGp1c3QgYW4gZXh0cmEgZGVidWdnaW5nIHRvb2wsIGFsZXJ0aW5nIHVzIHRvIGEgcG90ZW50aWFsIG92ZXJsYXAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIG5ldHdvcmsgcHJvY2Vzc29yLgoKSG93ZXZlci4uLiBJIG5lZWQgdG8gYmUgKnN1cmUqLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIG5vdCB0byB0cnVzdCBhbnl0aGluZyBpbXBsaWNpdGx5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhhcmR3YXJlLWxldmVsIGludGVyYWN0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCBgbnBjX3NldF9sYXllcl9tZGF0YWAgYW5kIGBucGNfc2V0X2t3X21hc2tzYC4gVGhleSBzZWVtIHJlbGV2YW50IGdpdmVuIHRoZSBjb250ZXh0IG9mIHNldHRpbmcgdXAgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIEl04oCZcyBwb3NzaWJsZSB0aG9zZSBmdW5jdGlvbnMsIHdoaWNoICpkbyogd3JpdGUsIG1pZ2h0IGNhbGwgYG5wY19jaGVja19vdmVybGFwYCBpbnRlcm5hbGx5LCBjcmVhdGluZyBhIGhpZGRlbiBzaWRlIGVmZmVjdCBvciBkZXBlbmRlbmNlLiBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoZSBjb2RlICphcyBwcmVzZW50ZWQqIGhhcyBubyBzaWRlIGVmZmVjdHMsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdHJ1ZSBpbiB0aGUgZW50aXJlIHByb2dyYW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NzpcdHN0YXRpYyB2b2lkIG5wY19zZXRfbGF5ZXJfbWRhdGEoc3RydWN0IHJ2dSAqcnZ1LFxuIDE2ODpcdFx0XHRcdFx0c3RydWN0IG5wY19tY2FtICptY2FtLCBlbnVtIGtleV9maWVsZHMgdHlwZSxcbiAxNjk6XHRcdFx0XHRcdHU2NCBjZmcsIHU4IGxpZCwgdTggbHQsIHU4IGludGYpXG4gMTcwOlx0e1xuIDE3MTpcdFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0ID0gXHUwMDI2bWNhbS1cdTAwM2VyeF9rZXlfZmllbGRzW3R5cGVdO1xuIDE3MjpcdFxuIDE3MzpcdFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxuIDE3NDpcdFx0XHRpbnB1dCA9IFx1MDAyNm1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcbiAxNzU6XHRcbiAxNzY6XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmhkciA9IEZJRUxEX0dFVChOUENfSERSX09GRlNFVCwgY2ZnKTtcbiAxNzc6XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmtleSA9IEZJRUxEX0dFVChOUENfS0VZX09GRlNFVCwgY2ZnKTtcbiAxNzg6XHRcdGlmIChpc19jbjIwayhydnUtXHUwMDNlcGRldikpXG4gMTc5Olx0XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmxlbiA9IEZJRUxEX0dFVChOUENfQ04yMEtfQllURVNNLCBjZmcpICYjNDM7IDE7XG4gMTgwOlx0XHRlbHNlXG4gMTgxOlx0XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmxlbiA9IEZJRUxEX0dFVChOUENfQllURVNNLCBjZmcpICYjNDM7IDE7XG4gMTgyOlx0XHRpbnB1dC1cdTAwM2VsYXllcl9tZGF0YS5sdHlwZSA9IGx0O1xuIDE4MzpcdFx0aW5wdXQtXHUwMDNlbGF5ZXJfbWRhdGEubGlkID0gbGlkO1xuIDE4NDpcdH1cbiAxODU6XHRcbiAxODY6XHRzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MSxcbiAxODc6XHRcdFx0XHRcdCAgICAgc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MixcbiAxODg6XHRcdFx0XHRcdCAgICAgaW50IG1heF9rdylcbiAxODk6XHR7XG4gMTkwOlx0XHRpbnQga3dpO1xuIDE5MTpcdFxuIDE5MjpcdFx0LyogRmllbGRzIHdpdGggc2FtZSBsYXllciBpZCBhbmQgZGlmZmVyZW50IGx0eXBlcyBhcmUgbXV0dWFsbHlcbiAxOTM6XHRcdCAqIGV4Y2x1c2l2ZSBoZW5jZSB0aGV5IGNhbiBiZSBvdmVybGFwcGVkXG4gMTk0Olx0XHQgKi9cbiAxOTU6XHRcdGlmIChpbnB1dDEtXHUwMDNlbGF5ZXJfbWRhdGEubGlkID09IGlucHV0Mi1cdTAwM2VsYXllcl9tZGF0YS5saWQgXHUwMDI2XHUwMDI2XG4gMTk2Olx0XHQgICAgaW5wdXQxLVx1MDAzZWxheWVyX21kYXRhLmx0eXBlICE9IGlucHV0Mi1cdTAwM2VsYXllcl9tZGF0YS5sdHlwZSlcbiAxOTc6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDE5ODpcdFxuIDE5OTpcdFx0Zm9yIChrd2kgPSAwOyBrd2kgXHUwMDNjIG1heF9rdzsga3dpJiM0MzsmIzQzOykge1xuIDIwMDpcdFx0XHRpZiAoaW5wdXQxLVx1MDAzZWt3X21hc2tba3dpXSBcdTAwMjYgaW5wdXQyLVx1MDAzZWt3X21hc2tba3dpXSlcbiAyMDE6XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcbiAyMDI6XHRcdH1cbiAyMDM6XHRcbiAyMDQ6XHRcdHJldHVybiBmYWxzZTtcbiAyMDU6XHR9XG4gMjA2Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg1MAoJCQkJCQkJb3V0cHV0OiA3MgoJCQkJCQkJdGhvdWdodHM6IDE5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgYG5wY19zZXRfbGF5ZXJfbWRhdGFgIGlzIG1vZGlmeWluZyBgaW5wdXRgLCBhbmQgdGhhdCBgaW5wdXRgIGlzIGFjdHVhbGx5IGEgcG9pbnRlciB0byBgbWNhbS0mZ3Q7cnhfa2V5X2ZpZWxkc1t0eXBlXWAuIFRoZW4gSSBzZWUgaW4gYG5wY19jaGVja19vdmVybGFwYCwgdGhhdCBgdHlwZWAgaXMgc2V0IHRvIGBOUENfVU5LTk9XTmAgZm9yIHRoZSBgZHVtbXlgIHZhcmlhYmxlLiBBaCwgcmlnaHQsIGBOUENfVU5LTk9XTmAgaXMgdGhhdCB0ZW1wb3JhcnkgY2FsY3VsYXRpb24gZmllbGQsIGl0JiMzOTtzIGp1c3QgYSBzY3JhdGNocGFkLgoKU28sIGluIGVmZmVjdCwgdGhpcyBtZWFucyBgbnBjX2NoZWNrX292ZXJsYXBgIGlzIG1vZGlmeWluZyBgbWNhbS0mZ3Q7cnhfa2V5X2ZpZWxkc1tOUENfVU5LTk9XTl1gLiBJdCYjMzk7cyBub3QgbW9kaWZ5aW5nIGFueSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMgb3IgZGlyZWN0bHkgaW5mbHVlbmNpbmcgdGhlIGRyaXZlciYjMzk7cyBleGVjdXRpb24gcGF0aCBvciB0aGUgaGFyZHdhcmUgc3RhdGUuIFRoaXMgYGR1bW15YCBmaWVsZCBpcyBqdXN0IGZvciB0ZW1wb3JhcnkgY2FsY3VsYXRpb25zIGR1cmluZyBvdmVybGFwIGNoZWNraW5nLCBhbmQgdGhlIGNvZGUgb25seSB1c2VzIGl0IGludGVybmFsbHkuCgpHb3QgaXQhIFRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgaXMgbWluaW1hbCwgaXQmIzM5O3MgcmVhbGx5IGp1c3QgYWRkaW5nIGEgYGRldl93YXJuYC4gR29vZCwgSSYjMzk7bGwgY29uZmlybSB0aGF0IHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgYmV5b25kIHRoYXQgd2FybmluZy4gTm8gd29ycmllcyBoZXJlLCB0aGlzIGxvb2tzIGZpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25wY19jaGVja19vdmVybGFwXFwocnZ1LCBibGthZGRyLCBOUENfSVBTRUNfU1BJLCAwLCBpbnRmXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz02ODM9c3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy03MzItXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjczMzpcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19JUFNFQ19TUEksIDAsIGludGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczNC1cdFx0ZGV2X3dhcm4ocnZ1LVx1MDAzZWRldiwgXCYjMzQ7T3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1OTIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipQYXRjaCBBc3Nlc3NtZW50IGFuZCBGdXp6aW5nIERlY2lzaW9uKioKCkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpbiBxdWVzdGlvbiAqb25seSogaW50cm9kdWNlcyBhIHdhcm5pbmcuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGEgaGVhZHMtdXAsIGEgcG90ZW50aWFsIGhlYWRzLXVwIGF0IHJ1bnRpbWUuIENydWNpYWxseSwgaXQgZG9lc24mIzM5O3QgYWN0dWFsbHkgKmNoYW5nZSogaG93IHRoZSBjb2RlIGV4ZWN1dGVzLiBObyBicmFuY2ggaW5zdHJ1Y3Rpb25zLCBubyBkYXRhIG1hbmlwdWxhdGlvbiwgbm90aGluZyB0aGF0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBwcm9ncmFtJiMzOTtzIGJlaGF2aW9yLiBHaXZlbiB0aGF0LCB0aGUgaW1tZWRpYXRlIGFzc2Vzc21lbnQgaXMgV29ydGhGdXp6aW5nID0gZmFsc2UuIEl0JiMzOTtzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IG9mIGF0dGVtcHRpbmcgdG8gZnV6eiwgYXMgYSB3YXJuaW5nIGlzIHVubGlrZWx5IHRvIGdlbmVyYXRlIHRoZSB0eXBlIG9mIHN0YXRlIGNoYW5nZXMgb3IgZXhwbG9pdGFibGUgY29uZGl0aW9ucyB0aGF0IGZ1enppbmcgaXMgZGVzaWduZWQgdG8gdW5jb3Zlci4KCkhvd2V2ZXIsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzbmVha3kgc2lkZSBlZmZlY3RzIG9yIG1pbm9yIGNoYW5nZXMgdGhhdCBhcmUgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMuIEkmIzM5O2xsIG5lZWQgdG8gZ28gYmFjayBvdmVyIHRoZSBwYXRjaCB3aXRoIGEgZmluZS10b290aGVkIGNvbWIgdG8gZW5zdXJlIHRoYXQgbm90aGluZyBlbHNlIHdhcyBhbHRlcmVkIG9yIGluY2x1ZGVkIGJ5IGFjY2lkZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsuKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI1OSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE6Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOi8qIE1hcnZlbGwgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM6ICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OiAqIENvcHlyaWdodCAoQykgMjAyMCBNYXJ2ZWxsLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjU6ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjk6I2luY2x1ZGUgXCYjMzQ7cnZ1X3N0cnVjdC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA6I2luY2x1ZGUgXCYjMzQ7cnZ1X3JlZy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE6I2luY2x1ZGUgXCYjMzQ7cnZ1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjojaW5jbHVkZSBcJiMzNDtucGMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEzOiNpbmNsdWRlIFwmIzM0O3J2dV9ucGNfZnMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0OiNpbmNsdWRlIFwmIzM0O3J2dV9ucGNfaGFzaC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU6I2luY2x1ZGUgXCYjMzQ7Y24yMGsvcmVnLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjojaW5jbHVkZSBcJiMzNDtjbjIway9ucGMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4OnN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbnBjX2Zsb3dfbmFtZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTpcdFtOUENfRE1BQ11cdD0gXCYjMzQ7ZG1hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDpcdFtOUENfU01BQ11cdD0gXCYjMzQ7c21hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTpcdFtOUENfRVRZUEVdXHQ9IFwmIzM0O2V0aGVyIHR5cGVcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI6XHRbTlBDX1ZMQU5fRVRZUEVfQ1RBR10gPSBcJiMzNDt2bGFuIGV0aGVyIHR5cGUgY3RhZ1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzpcdFtOUENfVkxBTl9FVFlQRV9TVEFHXSA9IFwmIzM0O3ZsYW4gZXRoZXIgdHlwZSBzdGFnXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0Olx0W05QQ19PVVRFUl9WSURdXHQ9IFwmIzM0O291dGVyIHZsYW4gaWRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU6XHRbTlBDX0lOTkVSX1ZJRF1cdD0gXCYjMzQ7aW5uZXIgdmxhbiBpZFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjpcdFtOUENfVE9TXVx0PSBcJiMzNDt0b3NcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc6XHRbTlBDX0lQRlJBR19JUFY0XSA9IFwmIzM0O2ZyYWdtZW50ZWQgSVB2NCBoZWFkZXIgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4Olx0W05QQ19TSVBfSVBWNF1cdD0gXCYjMzQ7aXB2NCBzb3VyY2UgaXBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk6XHRbTlBDX0RJUF9JUFY0XVx0PSBcJiMzNDtpcHY0IGRlc3RpbmF0aW9uIGlwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwOlx0W05QQ19JUEZSQUdfSVBWNl0gPSBcJiMzNDtmcmFnbWVudGVkIElQdjYgaGVhZGVyIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTpcdFtOUENfU0lQX0lQVjZdXHQ9IFwmIzM0O2lwdjYgc291cmNlIGlwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyOlx0W05QQ19ESVBfSVBWNl1cdD0gXCYjMzQ7aXB2NiBkZXN0aW5hdGlvbiBpcFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzpcdFtOUENfSVBQUk9UT19UQ1BdID0gXCYjMzQ7aXAgcHJvdG8gdGNwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0Olx0W05QQ19JUFBST1RPX1VEUF0gPSBcJiMzNDtpcCBwcm90byB1ZHBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU6XHRbTlBDX0lQUFJPVE9fU0NUUF0gPSBcJiMzNDtpcCBwcm90byBzY3RwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2Olx0W05QQ19JUFBST1RPX0lDTVBdID0gXCYjMzQ7aXAgcHJvdG8gaWNtcFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzpcdFtOUENfSVBQUk9UT19JQ01QNl0gPSBcJiMzNDtpcCBwcm90byBpY21wNlwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODpcdFtOUENfSVBQUk9UT19BSF0gPSBcJiMzNDtpcCBwcm90byBBSFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTpcdFtOUENfSVBQUk9UT19FU1BdID0gXCYjMzQ7aXAgcHJvdG8gRVNQXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwOlx0W05QQ19TUE9SVF9UQ1BdXHQ9IFwmIzM0O3RjcCBzb3VyY2UgcG9ydFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTpcdFtOUENfRFBPUlRfVENQXVx0PSBcJiMzNDt0Y3AgZGVzdGluYXRpb24gcG9ydFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjpcdFtOUENfU1BPUlRfVURQXVx0PSBcJiMzNDt1ZHAgc291cmNlIHBvcnRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDM6XHRbTlBDX0RQT1JUX1VEUF1cdD0gXCYjMzQ7dWRwIGRlc3RpbmF0aW9uIHBvcnRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ6XHRbTlBDX1NQT1JUX1NDVFBdID0gXCYjMzQ7c2N0cCBzb3VyY2UgcG9ydFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTpcdFtOUENfRFBPUlRfU0NUUF0gPSBcJiMzNDtzY3RwIGRlc3RpbmF0aW9uIHBvcnRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY6XHRbTlBDX0xYTUJdXHQ9IFwmIzM0O01jYXN0L0JjYXN0IGhlYWRlciBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc6XHRbTlBDX0lQU0VDX1NQSV0gPSBcJiMzNDtTUEkgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4Olx0W05QQ19NUExTMV9MQlRDQk9TXSA9IFwmIzM0O2xzZSBkZXB0aCAxIGxhYmVsIHRjIGJvc1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTpcdFtOUENfTVBMUzFfVFRMXSAgICAgPSBcJiMzNDtsc2UgZGVwdGggMSB0dGxcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTA6XHRbTlBDX01QTFMyX0xCVENCT1NdID0gXCYjMzQ7bHNlIGRlcHRoIDIgbGFiZWwgdGMgYm9zXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUxOlx0W05QQ19NUExTMl9UVExdICAgICA9IFwmIzM0O2xzZSBkZXB0aCAyIHR0bFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1MjpcdFtOUENfTVBMUzNfTEJUQ0JPU10gPSBcJiMzNDtsc2UgZGVwdGggMyBsYWJlbCB0YyBib3NcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTM6XHRbTlBDX01QTFMzX1RUTF0gICAgID0gXCYjMzQ7bHNlIGRlcHRoIDMgdHRsXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjU0Olx0W05QQ19NUExTNF9MQlRDQk9TXSA9IFwmIzM0O2xzZSBkZXB0aCA0IGxhYmVsIHRjIGJvc1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NTpcdFtOUENfTVBMUzRfVFRMXSAgICAgPSBcJiMzNDtsc2UgZGVwdGggNFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NjpcdFtOUENfVFlQRV9JQ01QXSA9IFwmIzM0O2ljbXAgdHlwZVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NzpcdFtOUENfQ09ERV9JQ01QXSA9IFwmIzM0O2ljbXAgY29kZVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1ODpcdFtOUENfVENQX0ZMQUdTXSA9IFwmIzM0O3RjcCBmbGFnc1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1OTpcdFtOUENfVU5LTk9XTl1cdD0gXCYjMzQ7dW5rbm93blwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2MDp9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjYxOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjYyOmJvb2wgbnBjX2lzX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgdTY0IGZlYXR1cmVzLCB1OCBpbnRmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjYzOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2NDpcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFx1MDAyNnJ2dS1cdTAwM2Vody1cdTAwM2VtY2FtO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjY1Olx0dTY0IG1jYW1fZmVhdHVyZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NjY6XHR1NjQgdW5zdXBwb3J0ZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Njc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Njg6XHRtY2FtX2ZlYXR1cmVzID0gaXNfbnBjX2ludGZfdHgoaW50ZikgPyBtY2FtLVx1MDAzZXR4X2ZlYXR1cmVzIDogbWNhbS1cdTAwM2VyeF9mZWF0dXJlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2OTpcdHVuc3VwcG9ydGVkID0gKG1jYW1fZmVhdHVyZXMgXiBmZWF0dXJlcykgXHUwMDI2IH5tY2FtX2ZlYXR1cmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcxOlx0LyogUmV0dXJuIGZhbHNlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgaW5wdXQgZmxvd3MgaXMgbm90IGV4dHJhY3RlZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcyOlx0cmV0dXJuICF1bnN1cHBvcnRlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3Mzp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NzQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NzU6Y29uc3QgY2hhciAqbnBjX2dldF9maWVsZF9uYW1lKHU4IGhkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3Njp7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzc6XHRpZiAoaGRyIFx1MDAzZT0gQVJSQVlfU0laRShucGNfZmxvd19uYW1lcykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzg6XHRcdHJldHVybiBucGNfZmxvd19uYW1lc1tOUENfVU5LTk9XTl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODA6XHRyZXR1cm4gbnBjX2Zsb3dfbmFtZXNbaGRyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4MTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODM6LyogQ29tcHV0ZSBrZXl3b3JkIG1hc2tzIGFuZCBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2Yga2V5d29yZHMgYSBmaWVsZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg0OiAqIHNwYW5zIGluIHRoZSBrZXkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODU6ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODY6c3RhdGljIHZvaWQgbnBjX3NldF9rd19tYXNrcyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwgdTggdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4NzpcdFx0XHQgICAgIHU4IG5yX2JpdHMsIGludCBzdGFydF9rd2ksIGludCBvZmZzZXQsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODg6e1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg5Olx0c3RydWN0IG5wY19rZXlfZmllbGQgKmZpZWxkID0gXHUwMDI2bWNhbS1cdTAwM2VyeF9rZXlfZmllbGRzW3R5cGVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkwOlx0dTggYml0c19pbl9rdztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5MTpcdGludCBtYXhfa3dpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkzOlx0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjk0Olx0XHRpZiAobWNhbS1cdTAwM2ViYW5rc19wZXJfZW50cnkgPT0gMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5NTpcdFx0XHRtYXhfa3dpID0gMzsgLyogTlBDX01DQU1fS0VZX1gyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTY6XHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5NzpcdFx0XHRtYXhfa3dpID0gNzsgLyogTlBDX01DQU1fS0VZX1g0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTg6XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjk5Olx0XHRpZiAobWNhbS1cdTAwM2ViYW5rc19wZXJfZW50cnkgPT0gMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDA6XHRcdFx0bWF4X2t3aSA9IDE7IC8qIE5QQ19NQ0FNX0tFWV9YMSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwMTpcdFx0ZWxzZSBpZiAobWNhbS1cdTAwM2ViYW5rc19wZXJfZW50cnkgPT0gMilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDI6XHRcdFx0bWF4X2t3aSA9IDM7IC8qIE5QQ19NQ0FNX0tFWV9YMiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwMzpcdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwNDpcdFx0XHRtYXhfa3dpID0gNjsgLyogTlBDX01DQU1fS0VZX1g0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA1Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDc6XHRpZiAoaXNfbnBjX2ludGZfdHgoaW50ZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA4Olx0XHRmaWVsZCA9IFx1MDAyNm1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTEwOlx0aWYgKG9mZnNldCAmIzQzOyBucl9iaXRzIFx1MDAzYz0gNjQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMTE6XHRcdC8qIG9uZSBLVyBvbmx5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTEyOlx0XHRpZiAoc3RhcnRfa3dpIFx1MDAzZSBtYXhfa3dpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExMzpcdFx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE0Olx0XHRmaWVsZC1cdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aV0gfD0gR0VOTUFTS19VTEwobnJfYml0cyAtIDEsIDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE1Olx0XHRcdFx0XHQgICAgIFx1MDAzY1x1MDAzYyBvZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE2Olx0XHRmaWVsZC1cdTAwM2Vucl9rd3MgPSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExNzpcdH0gZWxzZSBpZiAob2Zmc2V0ICYjNDM7IG5yX2JpdHMgXHUwMDNlIDY0IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExODpcdFx0ICAgb2Zmc2V0ICYjNDM7IG5yX2JpdHMgXHUwMDNjPSAxMjgpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMTk6XHRcdC8qIHR3byBLV3MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjA6XHRcdGlmIChzdGFydF9rd2kgJiM0MzsgMSBcdTAwM2UgbWF4X2t3aSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjE6XHRcdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMjpcdFx0LyogZmlyc3QgS1cgbWFzayAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMzpcdFx0Yml0c19pbl9rdyA9IDY0IC0gb2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNDpcdFx0ZmllbGQtXHUwMDNla3dfbWFza1tzdGFydF9rd2ldIHw9IEdFTk1BU0tfVUxMKGJpdHNfaW5fa3cgLSAxLCAwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNTpcdFx0XHRcdFx0ICAgICBcdTAwM2NcdTAwM2Mgb2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNjpcdFx0Lyogc2Vjb25kIEtXIG1hc2sgaS5lLiBtYXNrIGZvciByZXN0IG9mIGJpdHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjc6XHRcdGJpdHNfaW5fa3cgPSBucl9iaXRzICYjNDM7IG9mZnNldCAtIDY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyODpcdFx0ZmllbGQtXHUwMDNla3dfbWFza1tzdGFydF9rd2kgJiM0MzsgMV0gfD0gR0VOTUFTS19VTEwoYml0c19pbl9rdyAtIDEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyOTpcdFx0ZmllbGQtXHUwMDNlbnJfa3dzID0gMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzA6XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEzMTpcdFx0LyogdGhyZWUgS1dzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTMyOlx0XHRpZiAoc3RhcnRfa3dpICYjNDM7IDIgXHUwMDNlIG1heF9rd2kpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTMzOlx0XHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzQ6XHRcdC8qIGZpcnN0IEtXIG1hc2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzU6XHRcdGJpdHNfaW5fa3cgPSA2NCAtIG9mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzY6XHRcdGZpZWxkLVx1MDAzZWt3X21hc2tbc3RhcnRfa3dpXSB8PSBHRU5NQVNLX1VMTChiaXRzX2luX2t3IC0gMSwgMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzc6XHRcdFx0XHRcdCAgICAgXHUwMDNjXHUwMDNjIG9mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzg6XHRcdC8qIHNlY29uZCBLVyBtYXNrICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTM5Olx0XHRmaWVsZC1cdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aSAmIzQzOyAxXSA9IH4wVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MDpcdFx0LyogdGhpcmQgS1cgbWFzayBpLmUuIG1hc2sgZm9yIHJlc3Qgb2YgYml0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MTpcdFx0Yml0c19pbl9rdyA9IG5yX2JpdHMgJiM0Mzsgb2Zmc2V0IC0gMTI4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MjpcdFx0ZmllbGQtXHUwMDNla3dfbWFza1tzdGFydF9rd2kgJiM0MzsgMl0gfD0gR0VOTUFTS19VTEwoYml0c19pbl9rdyAtIDEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MzpcdFx0ZmllbGQtXHUwMDNlbnJfa3dzID0gMztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDQ6XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTQ1On1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTQ3Oi8qIEhlbHBlciBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IHdoZXRoZXIgZmllbGQgZXhpc3RzIGluIHRoZSBrZXkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDg6c3RhdGljIGJvb2wgbnBjX2lzX2ZpZWxkX3ByZXNlbnQoc3RydWN0IHJ2dSAqcnZ1LCBlbnVtIGtleV9maWVsZHMgdHlwZSwgdTggaW50ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDk6e1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1MDpcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFx1MDAyNnJ2dS1cdTAwM2Vody1cdTAwM2VtY2FtO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1MTpcdHN0cnVjdCBucGNfa2V5X2ZpZWxkICppbnB1dDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTUzOlx0aW5wdXQgID0gXHUwMDI2bWNhbS1cdTAwM2VyeF9rZXlfZmllbGRzW3R5cGVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1NDpcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTU6XHRcdGlucHV0ICA9IFx1MDAyNm1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU3Olx0cmV0dXJuIGlucHV0LVx1MDAzZW5yX2t3cyBcdTAwM2UgMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTg6fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1OTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjA6c3RhdGljIGJvb2wgbnBjX2lzX3NhbWUoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2MTpcdFx0XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqZmllbGQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTYyOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjM6XHRyZXR1cm4gbWVtY21wKFx1MDAyNmlucHV0LVx1MDAzZWxheWVyX21kYXRhLCBcdTAwMjZmaWVsZC1cdTAwM2VsYXllcl9tZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjQ6XHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBucGNfbGF5ZXJfbWRhdGEpKSA9PSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2NTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTY2OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2NzpzdGF0aWMgdm9pZCBucGNfc2V0X2xheWVyX21kYXRhKHN0cnVjdCBydnUgKnJ2dSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjg6XHRcdFx0XHRzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIGVudW0ga2V5X2ZpZWxkcyB0eXBlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2OTpcdFx0XHRcdHU2NCBjZmcsIHU4IGxpZCwgdTggbHQsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTcwOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzE6XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQgPSBcdTAwMjZtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTcyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3MzpcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzQ6XHRcdGlucHV0ID0gXHUwMDI2bWNhbS1cdTAwM2V0eF9rZXlfZmllbGRzW3R5cGVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3NTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzY6XHRpbnB1dC1cdTAwM2VsYXllcl9tZGF0YS5oZHIgPSBGSUVMRF9HRVQoTlBDX0hEUl9PRkZTRVQsIGNmZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc3Olx0aW5wdXQtXHUwMDNlbGF5ZXJfbWRhdGEua2V5ID0gRklFTERfR0VUKE5QQ19LRVlfT0ZGU0VULCBjZmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3ODpcdGlmIChpc19jbjIwayhydnUtXHUwMDNlcGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc5Olx0XHRpbnB1dC1cdTAwM2VsYXllcl9tZGF0YS5sZW4gPSBGSUVMRF9HRVQoTlBDX0NOMjBLX0JZVEVTTSwgY2ZnKSAmIzQzOyAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4MDpcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODE6XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmxlbiA9IEZJRUxEX0dFVChOUENfQllURVNNLCBjZmcpICYjNDM7IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTgyOlx0aW5wdXQtXHUwMDNlbGF5ZXJfbWRhdGEubHR5cGUgPSBsdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODM6XHRpbnB1dC1cdTAwM2VsYXllcl9tZGF0YS5saWQgPSBsaWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg0On1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg2OnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4NzpcdFx0XHRcdCAgICAgc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODg6XHRcdFx0XHQgICAgIGludCBtYXhfa3cpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg5OntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTA6XHRpbnQga3dpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5MTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTI6XHQvKiBGaWVsZHMgd2l0aCBzYW1lIGxheWVyIGlkIGFuZCBkaWZmZXJlbnQgbHR5cGVzIGFyZSBtdXR1YWxseVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5MzpcdCAqIGV4Y2x1c2l2ZSBoZW5jZSB0aGV5IGNhbiBiZSBvdmVybGFwcGVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk0Olx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk1Olx0aWYgKGlucHV0MS1cdTAwM2VsYXllcl9tZGF0YS5saWQgPT0gaW5wdXQyLVx1MDAzZWxheWVyX21kYXRhLmxpZCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTY6XHQgICAgaW5wdXQxLVx1MDAzZWxheWVyX21kYXRhLmx0eXBlICE9IGlucHV0Mi1cdTAwM2VsYXllcl9tZGF0YS5sdHlwZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTc6XHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk5Olx0Zm9yIChrd2kgPSAwOyBrd2kgXHUwMDNjIG1heF9rdzsga3dpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwMDpcdFx0aWYgKGlucHV0MS1cdTAwM2Vrd19tYXNrW2t3aV0gXHUwMDI2IGlucHV0Mi1cdTAwM2Vrd19tYXNrW2t3aV0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjAxOlx0XHRcdHJldHVybiB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwMjpcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDM6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjA0Olx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwNTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjA2OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwNzovKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciBnaXZlbiBmaWVsZCBvdmVybGFwcyB3aXRoIGFueSBvdGhlciBmaWVsZHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDg6ICogaW4gdGhlIGtleS4gRHVlIHRvIGxpbWl0YXRpb25zIG9uIGtleSBzaXplIGFuZCB0aGUga2V5IGV4dHJhY3Rpb24gcHJvZmlsZSBpblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwOTogKiB1c2UgaGlnaGVyIGxheWVycyBjYW4gb3ZlcndyaXRlIGxvd2VyIGxheWVyJiMzOTtzIGhlYWRlciBmaWVsZHMuIEhlbmNlIG92ZXJsYXBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTA6ICogbmVlZHMgdG8gYmUgY2hlY2tlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTE6ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjEyOnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjEzOlx0XHRcdCAgICAgIGVudW0ga2V5X2ZpZWxkcyB0eXBlLCB1OCBzdGFydF9saWQsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE0OntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTU6XHRzdHJ1Y3QgbnBjX21jYW0gKm1jYW0gPSBcdTAwMjZydnUtXHUwMDNlaHctXHUwMDNlbWNhbTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTY6XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqZHVtbXksICppbnB1dDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTc6XHRpbnQgc3RhcnRfa3dpLCBvZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE4Olx0dTggbnJfYml0cywgbGlkLCBsdCwgbGQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE5Olx0aW50IGV4dHIsIGt3cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjA6XHR1NjQgY2ZnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyMTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjI6XHRkdW1teSA9IFx1MDAyNm1jYW0tXHUwMDNlcnhfa2V5X2ZpZWxkc1tOUENfVU5LTk9XTl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjIzOlx0aW5wdXQgPSBcdTAwMjZtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNTpcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNjpcdFx0ZHVtbXkgPSBcdTAwMjZtY2FtLVx1MDAzZXR4X2tleV9maWVsZHNbTlBDX1VOS05PV05dO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNzpcdFx0aW5wdXQgPSBcdTAwMjZtY2FtLVx1MDAzZXR4X2tleV9maWVsZHNbdHlwZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI4Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyOTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzA6XHRrd3MgPSBOUENfS1dTX0lOX0tFWV9TWl83O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzMTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzI6XHRpZiAoaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzMzpcdFx0Z290byBza2lwX2NuMTBrX2NvbmZpZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM1Olx0Zm9yIChsaWQgPSBzdGFydF9saWQ7IGxpZCBcdTAwM2MgTlBDX01BWF9MSUQ7IGxpZCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzY6XHRcdGZvciAobHQgPSAwOyBsdCBcdTAwM2MgTlBDX01BWF9MVDsgbHQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM3Olx0XHRcdGZvciAobGQgPSAwOyBsZCBcdTAwM2MgTlBDX01BWF9MRDsgbGQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM4Olx0XHRcdFx0Y2ZnID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM5Olx0XHRcdFx0XHRcdCBOUENfQUZfSU5URlhfTElEWF9MVFhfTERYX0NGR1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MDpcdFx0XHRcdFx0XHQgKGludGYsIGxpZCwgbHQsIGxkKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQxOlx0XHRcdFx0aWYgKCFGSUVMRF9HRVQoTlBDX0xEQVRBX0VOLCBjZmcpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MjpcdFx0XHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQzOlx0XHRcdFx0bWVtc2V0KGR1bW15LCAwLCBzaXplb2Yoc3RydWN0IG5wY19rZXlfZmllbGQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNDQ6XHRcdFx0XHRucGNfc2V0X2xheWVyX21kYXRhKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQ1Olx0XHRcdFx0XHRcdCAgICBjZmcsIGxpZCwgbHQsIGludGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0NjpcdFx0XHRcdC8qIGV4Y2x1ZGUgaW5wdXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNDc6XHRcdFx0XHRpZiAobnBjX2lzX3NhbWUoaW5wdXQsIGR1bW15KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNDg6XHRcdFx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0OTpcdFx0XHRcdHN0YXJ0X2t3aSA9IGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmtleSAvIDg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUwOlx0XHRcdFx0b2Zmc2V0ID0gKGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmtleSAqIDgpICUgNjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUxOlx0XHRcdFx0bnJfYml0cyA9IGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmxlbiAqIDg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUyOlx0XHRcdFx0LyogZm9ybSBLVyBtYXNrcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI1MzpcdFx0XHRcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCBOUENfVU5LTk9XTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTQ6XHRcdFx0XHRcdFx0IG5yX2JpdHMsIHN0YXJ0X2t3aSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTU6XHRcdFx0XHRcdFx0IG9mZnNldCwgaW50Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU2Olx0XHRcdFx0LyogY2hlY2sgYW55IGlucHV0IGZpZWxkIGJpdHMgZmFsbHMgaW4gYW55XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU3Olx0XHRcdFx0ICogb3RoZXIgZmllbGQgYml0cy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTg6XHRcdFx0XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTk6XHRcdFx0XHRpZiAobnBjX2NoZWNrX292ZXJsYXBfZmllbGRzKGR1bW15LCBpbnB1dCwga3dzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjA6XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2MTpcdFx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYyOlx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYzOlx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2NDpcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjY2OnNraXBfY24xMGtfY29uZmlnOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2NzpcdGZvciAoZXh0ciA9IDAgOyBleHRyIFx1MDAzYyBydnUtXHUwMDNlaHctXHUwMDNlbnBjX2tleF9leHRyOyBleHRyJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2ODpcdFx0bGlkID0gQ04yMEtfR0VUX0VYVFJfTElEKGludGYsIGV4dHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2OTpcdFx0aWYgKGxpZCBcdTAwM2Mgc3RhcnRfbGlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3MDpcdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzE6XHRcdGZvciAobHQgPSAwOyBsdCBcdTAwM2MgTlBDX01BWF9MVDsgbHQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjcyOlx0XHRcdGNmZyA9IENOMjBLX0dFVF9FWFRSX0xUKGludGYsIGV4dHIsIGx0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzM6XHRcdFx0aWYgKCFGSUVMRF9HRVQoTlBDX0xEQVRBX0VOLCBjZmcpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3NDpcdFx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3NTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzY6XHRcdFx0bWVtc2V0KGR1bW15LCAwLCBzaXplb2Yoc3RydWN0IG5wY19rZXlfZmllbGQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzc6XHRcdFx0bnBjX3NldF9sYXllcl9tZGF0YShydnUsIG1jYW0sIE5QQ19VTktOT1dOLCBjZmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc4Olx0XHRcdFx0XHQgICAgbGlkLCBsdCwgaW50Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc5Olx0XHRcdC8qIGV4Y2x1ZGUgaW5wdXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODA6XHRcdFx0aWYgKG5wY19pc19zYW1lKGlucHV0LCBkdW1teSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjgxOlx0XHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjgyOlx0XHRcdHN0YXJ0X2t3aSA9IGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmtleSAvIDg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjgzOlx0XHRcdG9mZnNldCA9IChkdW1teS1cdTAwM2VsYXllcl9tZGF0YS5rZXkgKiA4KSAlIDY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4NDpcdFx0XHRucl9iaXRzID0gZHVtbXktXHUwMDNlbGF5ZXJfbWRhdGEubGVuICogODtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODU6XHRcdFx0LyogZm9ybSBLVyBtYXNrcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4NjpcdFx0XHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sIG5yX2JpdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjg3Olx0XHRcdFx0XHQgc3RhcnRfa3dpLCBvZmZzZXQsIGludGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4ODpcdFx0XHQvKiBjaGVjayBhbnkgaW5wdXQgZmllbGQgYml0cyBmYWxscyBpbiBhbnkgb3RoZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODk6XHRcdFx0ICogZmllbGQgYml0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI5MDpcdFx0XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTE6XHRcdFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjkyOlx0XHRcdFx0XHRcdCAgICAgTlBDX0tXU19JTl9LRVlfU1pfOCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjkzOlx0XHRcdFx0cmV0dXJuIHRydWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk0Olx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk1Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI5NjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTc6XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk4On1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzAwOnN0YXRpYyBib29sIG5wY19jaGVja19maWVsZChzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCBlbnVtIGtleV9maWVsZHMgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDE6XHRcdFx0ICAgIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzAyOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDM6XHRpZiAoIW5wY19pc19maWVsZF9wcmVzZW50KHJ2dSwgdHlwZSwgaW50ZikgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDQ6XHQgICAgbnBjX2NoZWNrX292ZXJsYXAocnZ1LCBibGthZGRyLCB0eXBlLCAwLCBpbnRmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDU6XHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDY6XHRyZXR1cm4gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDc6fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwODpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDk6c3RhdGljIHZvaWQgbnBjX3NjYW5fZXhhY3RfcmVzdWx0KHN0cnVjdCBydnUgKnJ2dSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTA6XHRcdFx0XHQgIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwgdTggYml0X251bWJlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTE6XHRcdFx0XHQgIHU4IGtleV9uaWJibGUsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzEyOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTM6XHR1OCBvZmZzZXQgPSAoa2V5X25pYmJsZSAqIDQpICUgNjQ7IC8qIG9mZnNldCB3aXRoaW4ga2V5IHdvcmQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTQ6XHR1OCBrd2kgPSAoa2V5X25pYmJsZSAqIDQpIC8gNjQ7IC8qIHdoaWNoIHdvcmQgaW4ga2V5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzE1Olx0dTggbnJfYml0cyA9IDQ7IC8qIGJpdHMgaW4gYSBuaWJibGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTY6XHR1OCB0eXBlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxNzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTg6XHRzd2l0Y2ggKGJpdF9udW1iZXIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTk6XHRjYXNlIDQwIC4uLiA0MzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjA6XHRcdHR5cGUgPSBOUENfRVhBQ1RfUkVTVUxUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyMTpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzIyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyMzpcdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzI0Olx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzI1Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyNjpcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCB0eXBlLCBucl9iaXRzLCBrd2ksIG9mZnNldCwgaW50Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzI3On1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzI5OnN0YXRpYyB2b2lkIG5wY19jbjIwa19zY2FuX3BhcnNlX3Jlc3VsdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzA6XHRcdFx0XHRcdHU4IGJpdF9udW1iZXIsIHU4IGtleV9uaWJibGUsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzMxOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzI6XHR1OCBvZmZzZXQgPSAoa2V5X25pYmJsZSAqIDQpICUgNjQ7IC8qIG9mZnNldCB3aXRoaW4ga2V5IHdvcmQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzM6XHR1OCBrd2kgPSAoa2V5X25pYmJsZSAqIDQpIC8gNjQ7IC8qIHdoaWNoIHdvcmQgaW4ga2V5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzM0Olx0dTggbnJfYml0cyA9IDQ7IC8qIGJpdHMgaW4gYSBuaWJibGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzU6XHR1OCB0eXBlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzc6XHRzd2l0Y2ggKGJpdF9udW1iZXIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzg6XHRjYXNlIDAgLi4uIDI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzM5Olx0XHR0eXBlID0gTlBDX0NIQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQwOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDE6XHRjYXNlIDM6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQyOlx0XHR0eXBlID0gTlBDX0VSUkxFVjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDM6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NDpcdGNhc2UgNCAuLi4gNTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDU6XHRcdHR5cGUgPSBOUENfRVJSQ09ERTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDY6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NzpcdGNhc2UgNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDg6XHRcdHR5cGUgPSBOUENfTFhNQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDk6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1MDpcdGNhc2UgODpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTE6XHRcdHR5cGUgPSBOUENfTEE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzUyOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTM6XHRjYXNlIDEwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1NDpcdFx0dHlwZSA9IE5QQ19MQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTU6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1NjpcdGNhc2UgMTI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU3Olx0XHR0eXBlID0gTlBDX0xDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1ODpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU5Olx0Y2FzZSAxNDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjA6XHRcdHR5cGUgPSBOUENfTEQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzYxOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjI6XHRjYXNlIDE2OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2MzpcdFx0dHlwZSA9IE5QQ19MRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjQ6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2NTpcdGNhc2UgMTg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzY2Olx0XHR0eXBlID0gTlBDX0xGO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2NzpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzY4Olx0Y2FzZSAyMDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjk6XHRcdHR5cGUgPSBOUENfTEc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzcwOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzE6XHRjYXNlIDIyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3MjpcdFx0dHlwZSA9IE5QQ19MSDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzM6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NDpcdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc1Olx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc2Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzg6XHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgdHlwZSwgbnJfYml0cywga3dpLCBvZmZzZXQsIGludGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3OTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzgwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MTpzdGF0aWMgdm9pZCBucGNfc2Nhbl9wYXJzZV9yZXN1bHQoc3RydWN0IHJ2dSAqcnZ1LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MjpcdFx0XHRcdCAgc3RydWN0IG5wY19tY2FtICptY2FtLCB1OCBiaXRfbnVtYmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MzpcdFx0XHRcdCAgdTgga2V5X25pYmJsZSwgdTggaW50ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODQ6e1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4NTpcdHU4IG9mZnNldCA9IChrZXlfbmliYmxlICogNCkgJSA2NDsgLyogb2Zmc2V0IHdpdGhpbiBrZXkgd29yZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4NjpcdHU4IGt3aSA9IChrZXlfbmliYmxlICogNCkgLyA2NDsgLyogd2hpY2ggd29yZCBpbiBrZXkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODc6XHR1OCBucl9iaXRzID0gNDsgLyogYml0cyBpbiBhIG5pYmJsZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4ODpcdHU4IHR5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzg5OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM5MDpcdGlmIChpc19jbjIwayhydnUtXHUwMDNlcGRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTE6XHRcdG5wY19jbjIwa19zY2FuX3BhcnNlX3Jlc3VsdChydnUsIG1jYW0sIGJpdF9udW1iZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzkyOlx0XHRcdFx0XHQgICAga2V5X25pYmJsZSwgaW50Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzkzOlx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk0Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM5NTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTY6XHRzd2l0Y2ggKGJpdF9udW1iZXIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTc6XHRjYXNlIDAgLi4uIDI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk4Olx0XHR0eXBlID0gTlBDX0NIQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk5Olx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDA6XHRjYXNlIDM6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDAxOlx0XHR0eXBlID0gTlBDX0VSUkxFVjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDI6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwMzpcdGNhc2UgNCAuLi4gNTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDQ6XHRcdHR5cGUgPSBOUENfRVJSQ09ERTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDU6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwNjpcdGNhc2UgNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDc6XHRcdHR5cGUgPSBOUENfTFhNQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDg6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwOTpcdC8qIGNoZWNrIGZvciBMVFlQRSBvbmx5IGFzIG9mIG5vdyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxMDpcdGNhc2UgOTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTE6XHRcdHR5cGUgPSBOUENfTEE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDEyOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTM6XHRjYXNlIDEyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxNDpcdFx0dHlwZSA9IE5QQ19MQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTU6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxNjpcdGNhc2UgMTU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDE3Olx0XHR0eXBlID0gTlBDX0xDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxODpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDE5Olx0Y2FzZSAxODpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjA6XHRcdHR5cGUgPSBOUENfTEQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDIxOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjI6XHRjYXNlIDIxOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyMzpcdFx0dHlwZSA9IE5QQ19MRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjQ6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyNTpcdGNhc2UgMjQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDI2Olx0XHR0eXBlID0gTlBDX0xGO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyNzpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDI4Olx0Y2FzZSAyNzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mjk6XHRcdHR5cGUgPSBOUENfTEc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDMwOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzE6XHRjYXNlIDMwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzMjpcdFx0dHlwZSA9IE5QQ19MSDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzM6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzNDpcdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDM1Olx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDM2Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzNzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mzg6XHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgdHlwZSwgbnJfYml0cywga3dpLCBvZmZzZXQsIGludGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzOTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0MTpzdGF0aWMgdm9pZCBucGNfaGFuZGxlX211bHRpX2xheWVyX2ZpZWxkcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0Mjp7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQzOlx0c3RydWN0IG5wY19tY2FtICptY2FtID0gXHUwMDI2cnZ1LVx1MDAzZWh3LVx1MDAzZW1jYW07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ0Olx0c3RydWN0IG5wY19rZXlfZmllbGQgKmtleV9maWVsZHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ1Olx0LyogRXRoZXIgdHlwZSBjYW4gY29tZSBmcm9tIHRocmVlIGxheWVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0NjpcdCAqIChldGhlcm5ldCwgc2luZ2xlIHRhZ2dlZCwgZG91YmxlIHRhZ2dlZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDc6XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDg6XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqZXR5cGVfZXRoZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ5Olx0c3RydWN0IG5wY19rZXlfZmllbGQgKmV0eXBlX3RhZzE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUwOlx0c3RydWN0IG5wY19rZXlfZmllbGQgKmV0eXBlX3RhZzI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUxOlx0LyogT3V0ZXIgVkxBTiBUQ0kgY2FuIGNvbWUgZnJvbSB0d28gbGF5ZXJzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUyOlx0ICogKHNpbmdsZSB0YWdnZWQsIGRvdWJsZSB0YWdnZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUzOlx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU0Olx0c3RydWN0IG5wY19rZXlfZmllbGQgKnZsYW5fdGFnMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTU6XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqdmxhbl90YWcyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1NjpcdC8qIElubmVyIFZMQU4gVENJIGZvciBkb3VibGUgdGFnZ2VkIGZyYW1lcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1NzpcdHN0cnVjdCBucGNfa2V5X2ZpZWxkICp2bGFuX3RhZzM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU4Olx0dTY0ICpmZWF0dXJlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTk6XHRpbnQgaSwgbWF4X2t3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2MDpcdHU4IHN0YXJ0X2xpZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjE6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDYyOlx0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjM6XHRcdG1heF9rdyA9IE5QQ19LV1NfSU5fS0VZX1NaXzg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY0Olx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2NTpcdFx0bWF4X2t3ID0gTlBDX0tXU19JTl9LRVlfU1pfNztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY3Olx0a2V5X2ZpZWxkcyA9IG1jYW0tXHUwMDNlcnhfa2V5X2ZpZWxkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Njg6XHRmZWF0dXJlcyA9IFx1MDAyNm1jYW0tXHUwMDNlcnhfZmVhdHVyZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY5OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3MDpcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3MTpcdFx0a2V5X2ZpZWxkcyA9IG1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzI6XHRcdGZlYXR1cmVzID0gXHUwMDI2bWNhbS1cdTAwM2V0eF9mZWF0dXJlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzM6XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3NTpcdC8qIEhhbmRsZSBoZWFkZXIgZmllbGRzIHdoaWNoIGNhbiBjb21lIGZyb20gbXVsdGlwbGUgbGF5ZXJzIGxpa2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzY6XHQgKiBldHlwZSwgb3V0ZXIgdmxhbiB0Y2kuIFRoZXNlIGZpZWxkcyBzaG91bGQgaGF2ZSBzYW1lIHBvc2l0aW9uIGluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc3Olx0ICogdGhlIGtleSBvdGhlcndpc2UgdG8gaW5zdGFsbCBhIG1jYW0gcnVsZSBtb3JlIHRoYW4gb25lIGVudHJ5IGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc4Olx0ICogbmVlZGVkIHdoaWNoIGNvbXBsaWNhdGVzIG1jYW0gc3BhY2UgbWFuYWdlbWVudC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Nzk6XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODA6XHRldHlwZV9ldGhlciA9IFx1MDAyNmtleV9maWVsZHNbTlBDX0VUWVBFX0VUSEVSXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODE6XHRldHlwZV90YWcxID0gXHUwMDI2a2V5X2ZpZWxkc1tOUENfRVRZUEVfVEFHMV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDgyOlx0ZXR5cGVfdGFnMiA9IFx1MDAyNmtleV9maWVsZHNbTlBDX0VUWVBFX1RBRzJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4MzpcdHZsYW5fdGFnMSA9IFx1MDAyNmtleV9maWVsZHNbTlBDX1ZMQU5fVEFHMV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg0Olx0dmxhbl90YWcyID0gXHUwMDI2a2V5X2ZpZWxkc1tOUENfVkxBTl9UQUcyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODU6XHR2bGFuX3RhZzMgPSBcdTAwMjZrZXlfZmllbGRzW05QQ19WTEFOX1RBRzNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4NjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODc6XHQvKiBpZiBrZXkgcHJvZmlsZSBwcm9ncmFtbWVkIGRvZXMgbm90IGV4dHJhY3QgRXRoZXJ0eXBlIGF0IGFsbCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4ODpcdGlmICghZXR5cGVfZXRoZXItXHUwMDNlbnJfa3dzIFx1MDAyNlx1MDAyNiAhZXR5cGVfdGFnMS1cdTAwM2Vucl9rd3MgXHUwMDI2XHUwMDI2ICFldHlwZV90YWcyLVx1MDAzZW5yX2t3cykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4OTpcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcJiMzNDtta2V4OiBFdGhlcnR5cGUgaXMgbm90IGV4dHJhY3RlZC5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ5MDpcdFx0Z290byB2bGFuX3RjaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTE6XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDkyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ5MzpcdC8qIGlmIGtleSBwcm9maWxlIHByb2dyYW1tZWQgZXh0cmFjdHMgRXRoZXJ0eXBlIGZyb20gb25lIGxheWVyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk0Olx0aWYgKGV0eXBlX2V0aGVyLVx1MDAzZW5yX2t3cyBcdTAwMjZcdTAwMjYgIWV0eXBlX3RhZzEtXHUwMDNlbnJfa3dzIFx1MDAyNlx1MDAyNiAhZXR5cGVfdGFnMi1cdTAwM2Vucl9rd3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk1Olx0XHRrZXlfZmllbGRzW05QQ19FVFlQRV0gPSAqZXR5cGVfZXRoZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk2Olx0aWYgKCFldHlwZV9ldGhlci1cdTAwM2Vucl9rd3MgXHUwMDI2XHUwMDI2IGV0eXBlX3RhZzEtXHUwMDNlbnJfa3dzIFx1MDAyNlx1MDAyNiAhZXR5cGVfdGFnMi1cdTAwM2Vucl9rd3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk3Olx0XHRrZXlfZmllbGRzW05QQ19FVFlQRV0gPSAqZXR5cGVfdGFnMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTg6XHRpZiAoIWV0eXBlX2V0aGVyLVx1MDAzZW5yX2t3cyBcdTAwMjZcdTAwMjYgIWV0eXBlX3RhZzEtXHUwMDNlbnJfa3dzIFx1MDAyNlx1MDAyNiBldHlwZV90YWcyLVx1MDAzZW5yX2t3cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTk6XHRcdGtleV9maWVsZHNbTlBDX0VUWVBFXSA9ICpldHlwZV90YWcyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUwMDpcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTAxNQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgc28gSSYjMzk7dmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIGEgc2ltcGxlIGFkZGl0aW9uLCByZWFsbHkuIFRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIGBkZXZfd2FybigpYCBjYWxsIHdpdGhpbiBhbiBgaWZgIHN0YXRlbWVudC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBjaGVja2luZyBmb3IgYW4gb3ZlcmxhcCByZWxhdGVkIHRvIHRoZSBgTlBDX0lQU0VDX1NQSWAgZmllbGQuIFRoZSBgbnBjX2NoZWNrX292ZXJsYXAoKWAgZnVuY3Rpb24gaXMgaW52b2tlZCwgYW5kIGlmIGl0IGRldGVjdHMgYW4gb3ZlcmxhcCwgYSB3YXJuaW5nIGlzIGxvZ2dlZC4gQ3J1Y2lhbGx5LCB0aGUgY29kZSAqZG9lc24mIzM5O3QqIGFsdGVyIHRoZSBwcm9ncmFtJiMzOTtzIGZsb3cgYmFzZWQgb24gdGhpcyBvdmVybGFwIGRldGVjdGlvbi4gSXQganVzdCBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZS4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBmdW5kYW1lbnRhbGx5IGFsdGVyIHRoZSB3YXkgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzLiBCZWNhdXNlIG9mIHRoaXMgbGFjayBvZiBmdW5jdGlvbmFsIGNoYW5nZXMsIEkmIzM5O2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQmIzM5O3MgYSB1c2VmdWwgYWRkaXRpb24gZm9yIGRlYnVnZ2luZyBvciBlYXJseSBkZXRlY3Rpb24gb2YgY29uZmlndXJhdGlvbiBpc3N1ZXMgYnV0IGRvZXNuJiMzOTt0IHdhcnJhbnQgZnV6emluZyBhdHRlbnRpb24gYXQgdGhpcyB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRldl93YXJuIGFuZCBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbW9kaWZ5IGFueSBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRldl93YXJuIGFuZCBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbW9kaWZ5IGFueSBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMjo0Mi4zNzgzMTAzMTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTczNzY2NTI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGV2X3dhcm4gYW5kIGEgY29tbWVudC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBtb2RpZnkgYW55IHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6MzI6NDIuMzc4MzE2Mjg3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI5OTAwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ZGU4Nzg4YTQxMzAyN2EyMjdhNzQyNDZiMDY5NWE4ODQ1OGQ5MjE4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDE5OjMyOjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY1xcbmluZGV4IDkxYjU5NDdkYWUwNjAwLi5iMjE3YzFjMTk4MTBhYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcXG5AQCAtNzMwLDYgKzczMCw5IEBAIHN0YXRpYyB2b2lkIG5wY19zZXRfZmVhdHVyZXMoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgdTggaW50ZilcXG4gXFx0XFx0XFx0KmZlYXR1cmVzIFxcdTAwMjY9IH5CSVRfVUxMKE5QQ19PVVRFUl9WSUQpO1xcbiBcXG4gXFx0LyogQWxsb3cgZXh0cmFjdGluZyBTUEkgZmllbGQgZnJvbSBBSCBhbmQgRVNQIGhlYWRlcnMgYXQgc2FtZSBvZmZzZXQgKi9cXG4rXFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpXFxuK1xcdFxcdGRldl93YXJuKHJ2dS1cXHUwMDNlZGV2LCBcXFwiT3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVxcXFxuXFxcIik7XFxuK1xcdC8qIFNldCBTUEkgZmxhZyBvbmx5IGlmIEFIL0VTUCBhbmQgSVBTRUNfU1BJIGFyZSBpbiB0aGUga2V5ICovXFxuIFxcdGlmIChucGNfaXNfZmllbGRfcHJlc2VudChydnUsIE5QQ19JUFNFQ19TUEksIGludGYpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAoKmZlYXR1cmVzIFxcdTAwMjYgKEJJVF9VTEwoTlBDX0lQUFJPVE9fRVNQKSB8IEJJVF9VTEwoTlBDX0lQUFJPVE9fQUgpKSkpXFxuIFxcdFxcdCpmZWF0dXJlcyB8PSBCSVRfVUxMKE5QQ19JUFNFQ19TUEkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMjo0Mi44MjIwNDgxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyOTM5MjA2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRldl93YXJuIGFuZCBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbW9kaWZ5IGFueSBzdGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGRlODc4OGE0MTMwMjdhMjI3YTc0MjQ2YjA2OTVhODg0NThkOTIxOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDE5OjMyOjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXG5pbmRleCA5MWI1OTQ3ZGFlMDYwMC4uYjIxN2MxYzE5ODEwYWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY1xuQEAgLTczMCw2ICs3MzAsOSBAQCBzdGF0aWMgdm9pZCBucGNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHU4IGludGYpXG4gXHRcdFx0KmZlYXR1cmVzIFx1MDAyNj0gfkJJVF9VTEwoTlBDX09VVEVSX1ZJRCk7XG4gXG4gXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xuK1x0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpXG4rXHRcdGRldl93YXJuKHJ2dS1cdTAwM2VkZXYsIFwiT3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVxcblwiKTtcbitcdC8qIFNldCBTUEkgZmxhZyBvbmx5IGlmIEFIL0VTUCBhbmQgSVBTRUNfU1BJIGFyZSBpbiB0aGUga2V5ICovXG4gXHRpZiAobnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCBOUENfSVBTRUNfU1BJLCBpbnRmKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAoKmZlYXR1cmVzIFx1MDAyNiAoQklUX1VMTChOUENfSVBQUk9UT19FU1ApIHwgQklUX1VMTChOUENfSVBQUk9UT19BSCkpKSlcbiBcdFx0KmZlYXR1cmVzIHw9IEJJVF9VTEwoTlBDX0lQU0VDX1NQSSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMjo0Mi44MjIwNDkyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjg5NTc2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gcnZ1X25wY19mcy5jKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY2AuIEl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEl0IGludHJvZHVjZXMgYSBgZGV2X3dhcm5gIGNhbGwgd2l0aGluIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50LiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIG5vdyBjaGVja3MgZm9yIGFuIG92ZXJsYXAgaW52b2x2aW5nIGBOUENfSVBTRUNfU1BJYCB1c2luZyB0aGUgYG5wY19jaGVja19vdmVybGFwYCBmdW5jdGlvbi4gSWYgb3ZlcmxhcCBpcyBkZXRlY3RlZCwgaXQgdHJpZ2dlcnMgYSB3YXJuaW5nIG1lc3NhZ2U6IFwiT3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVwiLiBUaGUgY29kZSBhbHNvIGFkZHMgYSBjb21tZW50IGV4cGxhaW5pbmcgdGhlIHB1cnBvc2Ugb2Ygc2V0dGluZyB0aGUgU1BJIGZsYWcuXG5cbkFscmlnaHQsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHNuaXBwZXQgYWdhaW4uIFllcCwgSSdtIHJlYWRpbmcgaXQgY29ycmVjdGx5LiBXZSdyZSBqdXN0IGFkZGluZyBhIHdhcm5pbmcgaWYgYG5wY19jaGVja19vdmVybGFwYCByZXR1cm5zIHRydWUsIG1lYW5pbmcgaXQncyBkZXRlY3RlZCBhbiBvdmVybGFwIGJldHdlZW4gYE5QQ19JUFNFQ19TUElgIGFuZCBhbm90aGVyIGZpZWxkLiBBbmQgdGhlbiwgcmVnYXJkbGVzcywgaXQgc2V0cyB0aGUgU1BJIGZsYWcgaWYgYE5QQ19JUFNFQ19TUElgIGlzIHByZXNlbnQgQU5EIEFIL0VTUCBhcmUgcHJlc2VudCBhcyBmZWF0dXJlcy5cblxuTXkgbWFpbiBjb25jZXJuIGhlcmUgaXMgYWx3YXlzIHNpZGUgZWZmZWN0cywgdGhvdWdoLiBTbywgaXQncyBnb29kIHByYWN0aWNlIHRvIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gYG5wY19jaGVja19vdmVybGFwYCBpcyBzYWZlIHRvIGNhbGwgYW5kIGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZSB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGljLiBJJ2xsIG5lZWQgdG8gcmV2aWV3IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbnBjX2NoZWNrX292ZXJsYXBgIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6MzI6NDguODUxMDA4NDgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzE2NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5wY19jaGVja19vdmVybGFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM9MTY3PXN0YXRpYyB2b2lkIG5wY19zZXRfbGF5ZXJfbWRhdGEoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg2OnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy0xODctXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTIxMS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjEyOnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTIxMy1cXHRcXHRcXHQgICAgICBlbnVtIGtleV9maWVsZHMgdHlwZSwgdTggc3RhcnRfbGlkLCB1OCBpbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI1OC1cXHRcXHRcXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU5OlxcdFxcdFxcdFxcdGlmIChucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoZHVtbXksIGlucHV0LCBrd3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy0yNjAtXFx0XFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMjkwLVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTE6XFx0XFx0XFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI5Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5QQ19LV1NfSU5fS0VZX1NaXzgpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jPTMwMD1zdGF0aWMgYm9vbCBucGNfY2hlY2tfZmllbGQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgZW51bSBrZXlfZmllbGRzIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMzAzLVxcdGlmICghbnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCB0eXBlLCBpbnRmKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDQ6XFx0ICAgIG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgdHlwZSwgMCwgaW50ZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTMwNS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM9NDQxPXN0YXRpYyB2b2lkIG5wY19oYW5kbGVfbXVsdGlfbGF5ZXJfZmllbGRzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHU4IGludGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtNTMxLVxcdHN0YXJ0X2xpZCA9IGtleV9maWVsZHNbTlBDX0VUWVBFXS5sYXllcl9tZGF0YS5saWQgKyAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1MzI6XFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0VUWVBFLCBzdGFydF9saWQsIGludGYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTUzMy1cXHRcXHRkZXZfZXJyKHJ2dS1cXHUwMDNlZGV2LCBcXFwibWtleDogRXRoZXJ0eXBlIGlzIG92ZXJ3cml0dGVuIGJ5IGhpZ2hlciBsYXllcnMuXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy01NjEtXFx0c3RhcnRfbGlkID0ga2V5X2ZpZWxkc1tOUENfT1VURVJfVklEXS5sYXllcl9tZGF0YS5saWQgKyAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NjI6XFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX09VVEVSX1ZJRCwgc3RhcnRfbGlkLCBpbnRmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy01NjMtXFx0XFx0ZGV2X2VycihydnUtXFx1MDAzZWRldiwgXFxcIm1rZXg6IE91dGVyIHZsYW4gdGNpIGlzIG92ZXJ3cml0dGVuIGJ5IGhpZ2hlciBsYXllcnMuXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz02ODM9c3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczMi1cXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3MzM6XFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczNC1cXHRcXHRkZXZfd2FybihydnUtXFx1MDAzZWRldiwgXFxcIk92ZXJsYXAgZGV0ZWN0ZWQgdGhlIGZpZWxkIE5QQ19JUFNFQ19TUElcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jPTgzNj1zdGF0aWMgaW50IG5wY19zY2FuX3ZlcmlmeV9rZXgoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy04NTMtXFx0LyogY2hlY2sgdGhhdCBub25lIG9mIHRoZSBmaWVsZHMgb3ZlcndyaXRlIGNoYW5uZWwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODU0OlxcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19DSEFOLCAwLCBOSVhfSU5URl9SWCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtODU1LVxcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJDaGFubmVsIGNhbm5vdCBiZSBvdmVyd3JpdHRlblxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMyOjQ4LjkxMTMzMTI0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDE2MzQzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYG5wY19jaGVja19vdmVybGFwYCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBucGNfY2hlY2tfb3ZlcmxhcGAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBleGFjdGx5IGhvdyB0aGlzIHJvdXRpbmUgaGFuZGxlcyBjb2xsaXNpb24gZGV0ZWN0aW9uIGZvciBub24tcGxheWVyIGNoYXJhY3RlcnMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgbnVhbmNlcyBvZiBpdHMgYm91bmRpbmcgYm94IGhhbmRsaW5nIGFuZCBhbnkgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMgZW1wbG95ZWQuIFRoaW5raW5nIGJhY2ssIEkgc2VlbSB0byByZW1lbWJlciB3ZSBoYWQgc29tZSBpc3N1ZXMgd2l0aCBjZXJ0YWluIGVkZ2UgY2FzZXMgd2l0aCB2ZXJ5IGxhcmdlIG9yIG9kZGx5LXNoYXBlZCBOUENzLCBzbyBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byB0aGF0LiBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSBsb2dpYyBjYXJlZnVsbHksIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB3aGVyZSBmdXJ0aGVyIHJlZmluZW1lbnQgbWlnaHQgeWllbGQgcGVyZm9ybWFuY2UgZ2FpbnMuIFNwZWNpZmljIHF1ZXN0aW9ucyBJIGhhdmUgYXJlIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIHRoZSBmdW5jdGlvbiwgdXNlIG9mIHNwYXRpYWwgaW5kZXhpbmcgKGlmIGFueSksIGFuZCBob3cgaXQgZGVhbHMgd2l0aCBkeW5hbWljIG9iamVjdHMgdmVyc3VzIHN0YXRpYyB3b3JsZCBnZW9tZXRyeS4gSSdsbCBiZSBsb29raW5nIGZvciBjbGV2ZXIgdHJpY2tzLCBhbnkgdXNlIG9mIFNJTUQgaW5zdHJ1Y3Rpb25zLCBhbmQgd2hldGhlciBpdCdzIHVzaW5nIGEgYnJvYWQtcGhhc2UvbmFycm93LXBoYXNlIGNvbGxpc2lvbiBkZXRlY3Rpb24gYXBwcm9hY2guIExldCdzIHNlZSBpZiB0aGUgY29kZSBjb21tZW50cyBhcmUgaGVscGZ1bCDigJMgZ29vZCBjb21tZW50cyBhcmUgd29ydGggdGhlaXIgd2VpZ2h0IGluIGdvbGQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzMsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMjo1My45MTI5Njg0NjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIxMDpcXHQgKiBuZWVkcyB0byBiZSBjaGVja2VkLlxcbiAyMTE6XFx0ICovXFxuIDIxMjpcXHRzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcChzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLFxcbiAyMTM6XFx0XFx0XFx0XFx0ICAgICAgZW51bSBrZXlfZmllbGRzIHR5cGUsIHU4IHN0YXJ0X2xpZCwgdTggaW50ZilcXG4gMjE0OlxcdHtcXG4gMjE1OlxcdFxcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFxcdTAwMjZydnUtXFx1MDAzZWh3LVxcdTAwM2VtY2FtO1xcbiAyMTY6XFx0XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmR1bW15LCAqaW5wdXQ7XFxuIDIxNzpcXHRcXHRpbnQgc3RhcnRfa3dpLCBvZmZzZXQ7XFxuIDIxODpcXHRcXHR1OCBucl9iaXRzLCBsaWQsIGx0LCBsZDtcXG4gMjE5OlxcdFxcdGludCBleHRyLCBrd3M7XFxuIDIyMDpcXHRcXHR1NjQgY2ZnO1xcbiAyMjE6XFx0XFxuIDIyMjpcXHRcXHRkdW1teSA9IFxcdTAwMjZtY2FtLVxcdTAwM2VyeF9rZXlfZmllbGRzW05QQ19VTktOT1dOXTtcXG4gMjIzOlxcdFxcdGlucHV0ID0gXFx1MDAyNm1jYW0tXFx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XFxuIDIyNDpcXHRcXG4gMjI1OlxcdFxcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xcbiAyMjY6XFx0XFx0XFx0ZHVtbXkgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1tOUENfVU5LTk9XTl07XFxuIDIyNzpcXHRcXHRcXHRpbnB1dCA9IFxcdTAwMjZtY2FtLVxcdTAwM2V0eF9rZXlfZmllbGRzW3R5cGVdO1xcbiAyMjg6XFx0XFx0fVxcbiAyMjk6XFx0XFxuIDIzMDpcXHRcXHRrd3MgPSBOUENfS1dTX0lOX0tFWV9TWl83O1xcbiAyMzE6XFx0XFxuIDIzMjpcXHRcXHRpZiAoaXNfY24yMGsocnZ1LVxcdTAwM2VwZGV2KSlcXG4gMjMzOlxcdFxcdFxcdGdvdG8gc2tpcF9jbjEwa19jb25maWc7XFxuIDIzNDpcXHRcXG4gMjM1OlxcdFxcdGZvciAobGlkID0gc3RhcnRfbGlkOyBsaWQgXFx1MDAzYyBOUENfTUFYX0xJRDsgbGlkKyspIHtcXG4gMjM2OlxcdFxcdFxcdGZvciAobHQgPSAwOyBsdCBcXHUwMDNjIE5QQ19NQVhfTFQ7IGx0KyspIHtcXG4gMjM3OlxcdFxcdFxcdFxcdGZvciAobGQgPSAwOyBsZCBcXHUwMDNjIE5QQ19NQVhfTEQ7IGxkKyspIHtcXG4gMjM4OlxcdFxcdFxcdFxcdFxcdGNmZyA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbiAyMzk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IE5QQ19BRl9JTlRGWF9MSURYX0xUWF9MRFhfQ0ZHXFxuIDI0MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgKGludGYsIGxpZCwgbHQsIGxkKSk7XFxuIDI0MTpcXHRcXHRcXHRcXHRcXHRpZiAoIUZJRUxEX0dFVChOUENfTERBVEFfRU4sIGNmZykpXFxuIDI0MjpcXHRcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMjQzOlxcdFxcdFxcdFxcdFxcdG1lbXNldChkdW1teSwgMCwgc2l6ZW9mKHN0cnVjdCBucGNfa2V5X2ZpZWxkKSk7XFxuIDI0NDpcXHRcXHRcXHRcXHRcXHRucGNfc2V0X2xheWVyX21kYXRhKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sXFxuIDI0NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgY2ZnLCBsaWQsIGx0LCBpbnRmKTtcXG4gMjQ2OlxcdFxcdFxcdFxcdFxcdC8qIGV4Y2x1ZGUgaW5wdXQgKi9cXG4gMjQ3OlxcdFxcdFxcdFxcdFxcdGlmIChucGNfaXNfc2FtZShpbnB1dCwgZHVtbXkpKVxcbiAyNDg6XFx0XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDI0OTpcXHRcXHRcXHRcXHRcXHRzdGFydF9rd2kgPSBkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEua2V5IC8gODtcXG4gMjUwOlxcdFxcdFxcdFxcdFxcdG9mZnNldCA9IChkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEua2V5ICogOCkgJSA2NDtcXG4gMjUxOlxcdFxcdFxcdFxcdFxcdG5yX2JpdHMgPSBkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEubGVuICogODtcXG4gMjUyOlxcdFxcdFxcdFxcdFxcdC8qIGZvcm0gS1cgbWFza3MgKi9cXG4gMjUzOlxcdFxcdFxcdFxcdFxcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCBOUENfVU5LTk9XTixcXG4gMjU0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBucl9iaXRzLCBzdGFydF9rd2ksXFxuIDI1NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgb2Zmc2V0LCBpbnRmKTtcXG4gMjU2OlxcdFxcdFxcdFxcdFxcdC8qIGNoZWNrIGFueSBpbnB1dCBmaWVsZCBiaXRzIGZhbGxzIGluIGFueVxcbiAyNTc6XFx0XFx0XFx0XFx0XFx0ICogb3RoZXIgZmllbGQgYml0cy5cXG4gMjU4OlxcdFxcdFxcdFxcdFxcdCAqL1xcbiAyNTk6XFx0XFx0XFx0XFx0XFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsIGt3cykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMyOjUzLjkxMzExNTM2M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTAwNjcwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgTmV0d29yayBQcm9jZXNzb3IgQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kLCBpbml0aWFsbHksIEkgc2VlIHRoYXQgYG5wY19jaGVja19vdmVybGFwYCBhcHBlYXJzIHRvIGJlIGEgcHVyZSByZWFkIG9wZXJhdGlvbi4gSXQgbG9va3MgYXQgc29tZSByZWdpc3RlcnMsIGNoZWNrcyBmb3IgYW4gb3ZlcmxhcCwgYW5kIHNwaXRzIGJhY2sgYSBib29sZWFuLiBUaGUgcGF0Y2ggaXRzZWxmIGp1c3QgKmFkZHMqIGEgd2FybmluZyBiYXNlZCBvbiB0aGUgcmV0dXJuIG9mIHRoaXMgZnVuY3Rpb246IGBkZXZfd2FybmAuIE5vIGNoYW5nZXMgdG8gdGhlIHByb2dyYW0gZmxvdywgbm8gc3RhdGUgbW9kaWZpY2F0aW9ucyBkaXJlY3RseS4gRXNzZW50aWFsbHksIGl0J3MganVzdCBhbiBleHRyYSBkZWJ1Z2dpbmcgdG9vbCwgYWxlcnRpbmcgdXMgdG8gYSBwb3RlbnRpYWwgb3ZlcmxhcCBpbiB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgbmV0d29yayBwcm9jZXNzb3IuXG5cbkhvd2V2ZXIuLi4gSSBuZWVkIHRvIGJlICpzdXJlKi4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSBub3QgdG8gdHJ1c3QgYW55dGhpbmcgaW1wbGljaXRseSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1sZXZlbCBpbnRlcmFjdGlvbnMuIEknbSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCBgbnBjX3NldF9sYXllcl9tZGF0YWAgYW5kIGBucGNfc2V0X2t3X21hc2tzYC4gVGhleSBzZWVtIHJlbGV2YW50IGdpdmVuIHRoZSBjb250ZXh0IG9mIHNldHRpbmcgdXAgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIEl04oCZcyBwb3NzaWJsZSB0aG9zZSBmdW5jdGlvbnMsIHdoaWNoICpkbyogd3JpdGUsIG1pZ2h0IGNhbGwgYG5wY19jaGVja19vdmVybGFwYCBpbnRlcm5hbGx5LCBjcmVhdGluZyBhIGhpZGRlbiBzaWRlIGVmZmVjdCBvciBkZXBlbmRlbmNlLiBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGNvZGUgKmFzIHByZXNlbnRlZCogaGFzIG5vIHNpZGUgZWZmZWN0cywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0cnVlIGluIHRoZSBlbnRpcmUgcHJvZ3JhbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYzMiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMyOjU5LjE2MzE4NDU4M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTY3LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY3OlxcdHN0YXRpYyB2b2lkIG5wY19zZXRfbGF5ZXJfbWRhdGEoc3RydWN0IHJ2dSAqcnZ1LFxcbiAxNjg6XFx0XFx0XFx0XFx0XFx0c3RydWN0IG5wY19tY2FtICptY2FtLCBlbnVtIGtleV9maWVsZHMgdHlwZSxcXG4gMTY5OlxcdFxcdFxcdFxcdFxcdHU2NCBjZmcsIHU4IGxpZCwgdTggbHQsIHU4IGludGYpXFxuIDE3MDpcXHR7XFxuIDE3MTpcXHRcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQgPSBcXHUwMDI2bWNhbS1cXHUwMDNlcnhfa2V5X2ZpZWxkc1t0eXBlXTtcXG4gMTcyOlxcdFxcbiAxNzM6XFx0XFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxcbiAxNzQ6XFx0XFx0XFx0aW5wdXQgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcXG4gMTc1OlxcdFxcbiAxNzY6XFx0XFx0aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLmhkciA9IEZJRUxEX0dFVChOUENfSERSX09GRlNFVCwgY2ZnKTtcXG4gMTc3OlxcdFxcdGlucHV0LVxcdTAwM2VsYXllcl9tZGF0YS5rZXkgPSBGSUVMRF9HRVQoTlBDX0tFWV9PRkZTRVQsIGNmZyk7XFxuIDE3ODpcXHRcXHRpZiAoaXNfY24yMGsocnZ1LVxcdTAwM2VwZGV2KSlcXG4gMTc5OlxcdFxcdFxcdGlucHV0LVxcdTAwM2VsYXllcl9tZGF0YS5sZW4gPSBGSUVMRF9HRVQoTlBDX0NOMjBLX0JZVEVTTSwgY2ZnKSArIDE7XFxuIDE4MDpcXHRcXHRlbHNlXFxuIDE4MTpcXHRcXHRcXHRpbnB1dC1cXHUwMDNlbGF5ZXJfbWRhdGEubGVuID0gRklFTERfR0VUKE5QQ19CWVRFU00sIGNmZykgKyAxO1xcbiAxODI6XFx0XFx0aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLmx0eXBlID0gbHQ7XFxuIDE4MzpcXHRcXHRpbnB1dC1cXHUwMDNlbGF5ZXJfbWRhdGEubGlkID0gbGlkO1xcbiAxODQ6XFx0fVxcbiAxODU6XFx0XFxuIDE4NjpcXHRzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MSxcXG4gMTg3OlxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MixcXG4gMTg4OlxcdFxcdFxcdFxcdFxcdCAgICAgaW50IG1heF9rdylcXG4gMTg5OlxcdHtcXG4gMTkwOlxcdFxcdGludCBrd2k7XFxuIDE5MTpcXHRcXG4gMTkyOlxcdFxcdC8qIEZpZWxkcyB3aXRoIHNhbWUgbGF5ZXIgaWQgYW5kIGRpZmZlcmVudCBsdHlwZXMgYXJlIG11dHVhbGx5XFxuIDE5MzpcXHRcXHQgKiBleGNsdXNpdmUgaGVuY2UgdGhleSBjYW4gYmUgb3ZlcmxhcHBlZFxcbiAxOTQ6XFx0XFx0ICovXFxuIDE5NTpcXHRcXHRpZiAoaW5wdXQxLVxcdTAwM2VsYXllcl9tZGF0YS5saWQgPT0gaW5wdXQyLVxcdTAwM2VsYXllcl9tZGF0YS5saWQgXFx1MDAyNlxcdTAwMjZcXG4gMTk2OlxcdFxcdCAgICBpbnB1dDEtXFx1MDAzZWxheWVyX21kYXRhLmx0eXBlICE9IGlucHV0Mi1cXHUwMDNlbGF5ZXJfbWRhdGEubHR5cGUpXFxuIDE5NzpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDE5ODpcXHRcXG4gMTk5OlxcdFxcdGZvciAoa3dpID0gMDsga3dpIFxcdTAwM2MgbWF4X2t3OyBrd2krKykge1xcbiAyMDA6XFx0XFx0XFx0aWYgKGlucHV0MS1cXHUwMDNla3dfbWFza1trd2ldIFxcdTAwMjYgaW5wdXQyLVxcdTAwM2Vrd19tYXNrW2t3aV0pXFxuIDIwMTpcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gMjAyOlxcdFxcdH1cXG4gMjAzOlxcdFxcbiAyMDQ6XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAyMDU6XFx0fVxcbiAyMDY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMyOjU5LjE2MzMyODAzM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODgxODcyNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBgbnBjX3NldF9sYXllcl9tZGF0YWAgaXMgbW9kaWZ5aW5nIGBpbnB1dGAsIGFuZCB0aGF0IGBpbnB1dGAgaXMgYWN0dWFsbHkgYSBwb2ludGVyIHRvIGBtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV1gLiBUaGVuIEkgc2VlIGluIGBucGNfY2hlY2tfb3ZlcmxhcGAsIHRoYXQgYHR5cGVgIGlzIHNldCB0byBgTlBDX1VOS05PV05gIGZvciB0aGUgYGR1bW15YCB2YXJpYWJsZS4gQWgsIHJpZ2h0LCBgTlBDX1VOS05PV05gIGlzIHRoYXQgdGVtcG9yYXJ5IGNhbGN1bGF0aW9uIGZpZWxkLCBpdCdzIGp1c3QgYSBzY3JhdGNocGFkLlxuXG5TbywgaW4gZWZmZWN0LCB0aGlzIG1lYW5zIGBucGNfY2hlY2tfb3ZlcmxhcGAgaXMgbW9kaWZ5aW5nIGBtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbTlBDX1VOS05PV05dYC4gSXQncyBub3QgbW9kaWZ5aW5nIGFueSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMgb3IgZGlyZWN0bHkgaW5mbHVlbmNpbmcgdGhlIGRyaXZlcidzIGV4ZWN1dGlvbiBwYXRoIG9yIHRoZSBoYXJkd2FyZSBzdGF0ZS4gVGhpcyBgZHVtbXlgIGZpZWxkIGlzIGp1c3QgZm9yIHRlbXBvcmFyeSBjYWxjdWxhdGlvbnMgZHVyaW5nIG92ZXJsYXAgY2hlY2tpbmcsIGFuZCB0aGUgY29kZSBvbmx5IHVzZXMgaXQgaW50ZXJuYWxseS5cblxuR290IGl0ISBUaGUgcGF0Y2gncyBpbXBhY3QgaXMgbWluaW1hbCwgaXQncyByZWFsbHkganVzdCBhZGRpbmcgYSBgZGV2X3dhcm5gLiBHb29kLCBJJ2xsIGNvbmZpcm0gdGhhdCB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgYmV5b25kIHRoYXQgd2FybmluZy4gTm8gd29ycmllcyBoZXJlLCB0aGlzIGxvb2tzIGZpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTAsIk91dHB1dFRva2VucyI6NzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMzowNC40NTE1MTcwOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDE4ODA5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJucGNfY2hlY2tfb3ZlcmxhcFxcXFwocnZ1LCBibGthZGRyLCBOUENfSVBTRUNfU1BJLCAwLCBpbnRmXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz02ODM9c3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczMi1cXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3MzM6XFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczNC1cXHRcXHRkZXZfd2FybihydnUtXFx1MDAzZWRldiwgXFxcIk92ZXJsYXAgZGV0ZWN0ZWQgdGhlIGZpZWxkIE5QQ19JUFNFQ19TUElcXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMzowNS43MjU3MTg1MzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NjA0MjM5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqUGF0Y2ggQXNzZXNzbWVudCBhbmQgRnV6emluZyBEZWNpc2lvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpbiBxdWVzdGlvbiAqb25seSogaW50cm9kdWNlcyBhIHdhcm5pbmcuIEl0J3MgZXNzZW50aWFsbHkgYSBoZWFkcy11cCwgYSBwb3RlbnRpYWwgaGVhZHMtdXAgYXQgcnVudGltZS4gQ3J1Y2lhbGx5LCBpdCBkb2Vzbid0IGFjdHVhbGx5ICpjaGFuZ2UqIGhvdyB0aGUgY29kZSBleGVjdXRlcy4gTm8gYnJhbmNoIGluc3RydWN0aW9ucywgbm8gZGF0YSBtYW5pcHVsYXRpb24sIG5vdGhpbmcgdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgcHJvZ3JhbSdzIGJlaGF2aW9yLiBHaXZlbiB0aGF0LCB0aGUgaW1tZWRpYXRlIGFzc2Vzc21lbnQgaXMgV29ydGhGdXp6aW5nID0gZmFsc2UuIEl0J3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQgb2YgYXR0ZW1wdGluZyB0byBmdXp6LCBhcyBhIHdhcm5pbmcgaXMgdW5saWtlbHkgdG8gZ2VuZXJhdGUgdGhlIHR5cGUgb2Ygc3RhdGUgY2hhbmdlcyBvciBleHBsb2l0YWJsZSBjb25kaXRpb25zIHRoYXQgZnV6emluZyBpcyBkZXNpZ25lZCB0byB1bmNvdmVyLlxuXG5Ib3dldmVyLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBzaWRlIGVmZmVjdHMgb3IgbWlub3IgY2hhbmdlcyB0aGF0IGFyZSBub3QgaW1tZWRpYXRlbHkgb2J2aW91cy4gSSdsbCBuZWVkIHRvIGdvIGJhY2sgb3ZlciB0aGUgcGF0Y2ggd2l0aCBhIGZpbmUtdG9vdGhlZCBjb21iIHRvIGVuc3VyZSB0aGF0IG5vdGhpbmcgZWxzZSB3YXMgYWx0ZXJlZCBvciBpbmNsdWRlZCBieSBhY2NpZGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU5MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMzOjA5LjQ3MTc2Mjg3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM0Nzc5OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI1OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE6Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjovKiBNYXJ2ZWxsIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzogKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OiAqIENvcHlyaWdodCAoQykgMjAyMCBNYXJ2ZWxsLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1OiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5OiNpbmNsdWRlIFxcXCJydnVfc3RydWN0LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwOiNpbmNsdWRlIFxcXCJydnVfcmVnLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExOiNpbmNsdWRlIFxcXCJydnUuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTI6I2luY2x1ZGUgXFxcIm5wYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzojaW5jbHVkZSBcXFwicnZ1X25wY19mcy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDojaW5jbHVkZSBcXFwicnZ1X25wY19oYXNoLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1OiNpbmNsdWRlIFxcXCJjbjIway9yZWcuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTY6I2luY2x1ZGUgXFxcImNuMjBrL25wYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg6c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBucGNfZmxvd19uYW1lc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTpcXHRbTlBDX0RNQUNdXFx0PSBcXFwiZG1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwOlxcdFtOUENfU01BQ11cXHQ9IFxcXCJzbWFjXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE6XFx0W05QQ19FVFlQRV1cXHQ9IFxcXCJldGhlciB0eXBlXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI6XFx0W05QQ19WTEFOX0VUWVBFX0NUQUddID0gXFxcInZsYW4gZXRoZXIgdHlwZSBjdGFnXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM6XFx0W05QQ19WTEFOX0VUWVBFX1NUQUddID0gXFxcInZsYW4gZXRoZXIgdHlwZSBzdGFnXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQ6XFx0W05QQ19PVVRFUl9WSURdXFx0PSBcXFwib3V0ZXIgdmxhbiBpZFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI1OlxcdFtOUENfSU5ORVJfVklEXVxcdD0gXFxcImlubmVyIHZsYW4gaWRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjpcXHRbTlBDX1RPU11cXHQ9IFxcXCJ0b3NcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzpcXHRbTlBDX0lQRlJBR19JUFY0XSA9IFxcXCJmcmFnbWVudGVkIElQdjQgaGVhZGVyIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4OlxcdFtOUENfU0lQX0lQVjRdXFx0PSBcXFwiaXB2NCBzb3VyY2UgaXBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTpcXHRbTlBDX0RJUF9JUFY0XVxcdD0gXFxcImlwdjQgZGVzdGluYXRpb24gaXBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDpcXHRbTlBDX0lQRlJBR19JUFY2XSA9IFxcXCJmcmFnbWVudGVkIElQdjYgaGVhZGVyIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxOlxcdFtOUENfU0lQX0lQVjZdXFx0PSBcXFwiaXB2NiBzb3VyY2UgaXBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjpcXHRbTlBDX0RJUF9JUFY2XVxcdD0gXFxcImlwdjYgZGVzdGluYXRpb24gaXBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzpcXHRbTlBDX0lQUFJPVE9fVENQXSA9IFxcXCJpcCBwcm90byB0Y3BcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDpcXHRbTlBDX0lQUFJPVE9fVURQXSA9IFxcXCJpcCBwcm90byB1ZHBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTpcXHRbTlBDX0lQUFJPVE9fU0NUUF0gPSBcXFwiaXAgcHJvdG8gc2N0cFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2OlxcdFtOUENfSVBQUk9UT19JQ01QXSA9IFxcXCJpcCBwcm90byBpY21wXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc6XFx0W05QQ19JUFBST1RPX0lDTVA2XSA9IFxcXCJpcCBwcm90byBpY21wNlxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4OlxcdFtOUENfSVBQUk9UT19BSF0gPSBcXFwiaXAgcHJvdG8gQUhcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTpcXHRbTlBDX0lQUFJPVE9fRVNQXSA9IFxcXCJpcCBwcm90byBFU1BcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDpcXHRbTlBDX1NQT1JUX1RDUF1cXHQ9IFxcXCJ0Y3Agc291cmNlIHBvcnRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTpcXHRbTlBDX0RQT1JUX1RDUF1cXHQ9IFxcXCJ0Y3AgZGVzdGluYXRpb24gcG9ydFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyOlxcdFtOUENfU1BPUlRfVURQXVxcdD0gXFxcInVkcCBzb3VyY2UgcG9ydFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzOlxcdFtOUENfRFBPUlRfVURQXVxcdD0gXFxcInVkcCBkZXN0aW5hdGlvbiBwb3J0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ6XFx0W05QQ19TUE9SVF9TQ1RQXSA9IFxcXCJzY3RwIHNvdXJjZSBwb3J0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU6XFx0W05QQ19EUE9SVF9TQ1RQXSA9IFxcXCJzY3RwIGRlc3RpbmF0aW9uIHBvcnRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjpcXHRbTlBDX0xYTUJdXFx0PSBcXFwiTWNhc3QvQmNhc3QgaGVhZGVyIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3OlxcdFtOUENfSVBTRUNfU1BJXSA9IFxcXCJTUEkgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg6XFx0W05QQ19NUExTMV9MQlRDQk9TXSA9IFxcXCJsc2UgZGVwdGggMSBsYWJlbCB0YyBib3NcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTpcXHRbTlBDX01QTFMxX1RUTF0gICAgID0gXFxcImxzZSBkZXB0aCAxIHR0bFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUwOlxcdFtOUENfTVBMUzJfTEJUQ0JPU10gPSBcXFwibHNlIGRlcHRoIDIgbGFiZWwgdGMgYm9zXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTE6XFx0W05QQ19NUExTMl9UVExdICAgICA9IFxcXCJsc2UgZGVwdGggMiB0dGxcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1MjpcXHRbTlBDX01QTFMzX0xCVENCT1NdID0gXFxcImxzZSBkZXB0aCAzIGxhYmVsIHRjIGJvc1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUzOlxcdFtOUENfTVBMUzNfVFRMXSAgICAgPSBcXFwibHNlIGRlcHRoIDMgdHRsXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTQ6XFx0W05QQ19NUExTNF9MQlRDQk9TXSA9IFxcXCJsc2UgZGVwdGggNCBsYWJlbCB0YyBib3NcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NTpcXHRbTlBDX01QTFM0X1RUTF0gICAgID0gXFxcImxzZSBkZXB0aCA0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTY6XFx0W05QQ19UWVBFX0lDTVBdID0gXFxcImljbXAgdHlwZVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjU3OlxcdFtOUENfQ09ERV9JQ01QXSA9IFxcXCJpY21wIGNvZGVcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1ODpcXHRbTlBDX1RDUF9GTEFHU10gPSBcXFwidGNwIGZsYWdzXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTk6XFx0W05QQ19VTktOT1dOXVxcdD0gXFxcInVua25vd25cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2MDp9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2MTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NjI6Ym9vbCBucGNfaXNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1NjQgZmVhdHVyZXMsIHU4IGludGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjYzOntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NjQ6XFx0c3RydWN0IG5wY19tY2FtICptY2FtID0gXFx1MDAyNnJ2dS1cXHUwMDNlaHctXFx1MDAzZW1jYW07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjY1OlxcdHU2NCBtY2FtX2ZlYXR1cmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2NjpcXHR1NjQgdW5zdXBwb3J0ZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjY3OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2ODpcXHRtY2FtX2ZlYXR1cmVzID0gaXNfbnBjX2ludGZfdHgoaW50ZikgPyBtY2FtLVxcdTAwM2V0eF9mZWF0dXJlcyA6IG1jYW0tXFx1MDAzZXJ4X2ZlYXR1cmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2OTpcXHR1bnN1cHBvcnRlZCA9IChtY2FtX2ZlYXR1cmVzIF4gZmVhdHVyZXMpIFxcdTAwMjYgfm1jYW1fZmVhdHVyZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3MTpcXHQvKiBSZXR1cm4gZmFsc2UgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBpbnB1dCBmbG93cyBpcyBub3QgZXh0cmFjdGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcyOlxcdHJldHVybiAhdW5zdXBwb3J0ZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjczOn1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NzQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjc1OmNvbnN0IGNoYXIgKm5wY19nZXRfZmllbGRfbmFtZSh1OCBoZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjc2OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzc6XFx0aWYgKGhkciBcXHUwMDNlPSBBUlJBWV9TSVpFKG5wY19mbG93X25hbWVzKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzg6XFx0XFx0cmV0dXJuIG5wY19mbG93X25hbWVzW05QQ19VTktOT1dOXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjgwOlxcdHJldHVybiBucGNfZmxvd19uYW1lc1toZHJdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4MTp9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjgyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4MzovKiBDb21wdXRlIGtleXdvcmQgbWFza3MgYW5kIGZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZiBrZXl3b3JkcyBhIGZpZWxkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg0OiAqIHNwYW5zIGluIHRoZSBrZXkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg1OiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4NjpzdGF0aWMgdm9pZCBucGNfc2V0X2t3X21hc2tzKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLCB1OCB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4NzpcXHRcXHRcXHQgICAgIHU4IG5yX2JpdHMsIGludCBzdGFydF9rd2ksIGludCBvZmZzZXQsIHU4IGludGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg4OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODk6XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmZpZWxkID0gXFx1MDAyNm1jYW0tXFx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkwOlxcdHU4IGJpdHNfaW5fa3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkxOlxcdGludCBtYXhfa3dpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5MjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTM6XFx0aWYgKGlzX2NuMjBrKHJ2dS1cXHUwMDNlcGRldikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTQ6XFx0XFx0aWYgKG1jYW0tXFx1MDAzZWJhbmtzX3Blcl9lbnRyeSA9PSAxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5NTpcXHRcXHRcXHRtYXhfa3dpID0gMzsgLyogTlBDX01DQU1fS0VZX1gyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjk2OlxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTc6XFx0XFx0XFx0bWF4X2t3aSA9IDc7IC8qIE5QQ19NQ0FNX0tFWV9YNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5ODpcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5OTpcXHRcXHRpZiAobWNhbS1cXHUwMDNlYmFua3NfcGVyX2VudHJ5ID09IDEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwMDpcXHRcXHRcXHRtYXhfa3dpID0gMTsgLyogTlBDX01DQU1fS0VZX1gxICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwMTpcXHRcXHRlbHNlIGlmIChtY2FtLVxcdTAwM2ViYW5rc19wZXJfZW50cnkgPT0gMilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTAyOlxcdFxcdFxcdG1heF9rd2kgPSAzOyAvKiBOUENfTUNBTV9LRVlfWDIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTAzOlxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA0OlxcdFxcdFxcdG1heF9rd2kgPSA2OyAvKiBOUENfTUNBTV9LRVlfWDQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA1OlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDc6XFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDg6XFx0XFx0ZmllbGQgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA5OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMTA6XFx0aWYgKG9mZnNldCArIG5yX2JpdHMgXFx1MDAzYz0gNjQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTExOlxcdFxcdC8qIG9uZSBLVyBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExMjpcXHRcXHRpZiAoc3RhcnRfa3dpIFxcdTAwM2UgbWF4X2t3aSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTEzOlxcdFxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE0OlxcdFxcdGZpZWxkLVxcdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aV0gfD0gR0VOTUFTS19VTEwobnJfYml0cyAtIDEsIDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExNTpcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwM2NcXHUwMDNjIG9mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE2OlxcdFxcdGZpZWxkLVxcdTAwM2Vucl9rd3MgPSAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMTc6XFx0fSBlbHNlIGlmIChvZmZzZXQgKyBucl9iaXRzIFxcdTAwM2UgNjQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE4OlxcdFxcdCAgIG9mZnNldCArIG5yX2JpdHMgXFx1MDAzYz0gMTI4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExOTpcXHRcXHQvKiB0d28gS1dzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMDpcXHRcXHRpZiAoc3RhcnRfa3dpICsgMSBcXHUwMDNlIG1heF9rd2kpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMTpcXHRcXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMjpcXHRcXHQvKiBmaXJzdCBLVyBtYXNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMzpcXHRcXHRiaXRzX2luX2t3ID0gNjQgLSBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNDpcXHRcXHRmaWVsZC1cXHUwMDNla3dfbWFza1tzdGFydF9rd2ldIHw9IEdFTk1BU0tfVUxMKGJpdHNfaW5fa3cgLSAxLCAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjU6XFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDNjXFx1MDAzYyBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNjpcXHRcXHQvKiBzZWNvbmQgS1cgbWFzayBpLmUuIG1hc2sgZm9yIHJlc3Qgb2YgYml0cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjc6XFx0XFx0Yml0c19pbl9rdyA9IG5yX2JpdHMgKyBvZmZzZXQgLSA2NDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTI4OlxcdFxcdGZpZWxkLVxcdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aSArIDFdIHw9IEdFTk1BU0tfVUxMKGJpdHNfaW5fa3cgLSAxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTI5OlxcdFxcdGZpZWxkLVxcdTAwM2Vucl9rd3MgPSAyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzA6XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTMxOlxcdFxcdC8qIHRocmVlIEtXcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzI6XFx0XFx0aWYgKHN0YXJ0X2t3aSArIDIgXFx1MDAzZSBtYXhfa3dpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzM6XFx0XFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzQ6XFx0XFx0LyogZmlyc3QgS1cgbWFzayAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzU6XFx0XFx0Yml0c19pbl9rdyA9IDY0IC0gb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzY6XFx0XFx0ZmllbGQtXFx1MDAzZWt3X21hc2tbc3RhcnRfa3dpXSB8PSBHRU5NQVNLX1VMTChiaXRzX2luX2t3IC0gMSwgMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTM3OlxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAzY1xcdTAwM2Mgb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzg6XFx0XFx0Lyogc2Vjb25kIEtXIG1hc2sgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTM5OlxcdFxcdGZpZWxkLVxcdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aSArIDFdID0gfjBVTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MDpcXHRcXHQvKiB0aGlyZCBLVyBtYXNrIGkuZS4gbWFzayBmb3IgcmVzdCBvZiBiaXRzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MTpcXHRcXHRiaXRzX2luX2t3ID0gbnJfYml0cyArIG9mZnNldCAtIDEyODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTQyOlxcdFxcdGZpZWxkLVxcdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aSArIDJdIHw9IEdFTk1BU0tfVUxMKGJpdHNfaW5fa3cgLSAxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTQzOlxcdFxcdGZpZWxkLVxcdTAwM2Vucl9rd3MgPSAzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDQ6XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDU6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDY6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0NzovKiBIZWxwZXIgZnVuY3Rpb24gdG8gZmlndXJlIG91dCB3aGV0aGVyIGZpZWxkIGV4aXN0cyBpbiB0aGUga2V5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0ODpzdGF0aWMgYm9vbCBucGNfaXNfZmllbGRfcHJlc2VudChzdHJ1Y3QgcnZ1ICpydnUsIGVudW0ga2V5X2ZpZWxkcyB0eXBlLCB1OCBpbnRmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDk6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTA6XFx0c3RydWN0IG5wY19tY2FtICptY2FtID0gXFx1MDAyNnJ2dS1cXHUwMDNlaHctXFx1MDAzZW1jYW07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1MTpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1MjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTUzOlxcdGlucHV0ICA9IFxcdTAwMjZtY2FtLVxcdTAwM2VyeF9rZXlfZmllbGRzW3R5cGVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTQ6XFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTU6XFx0XFx0aW5wdXQgID0gXFx1MDAyNm1jYW0tXFx1MDAzZXR4X2tleV9maWVsZHNbdHlwZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1NjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU3OlxcdHJldHVybiBpbnB1dC1cXHUwMDNlbnJfa3dzIFxcdTAwM2UgMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU4On1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU5OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjA6c3RhdGljIGJvb2wgbnBjX2lzX3NhbWUoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjE6XFx0XFx0XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmZpZWxkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjI6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjM6XFx0cmV0dXJuIG1lbWNtcChcXHUwMDI2aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLCBcXHUwMDI2ZmllbGQtXFx1MDAzZWxheWVyX21kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjQ6XFx0XFx0ICAgICBzaXplb2Yoc3RydWN0IG5wY19sYXllcl9tZGF0YSkpID09IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2NTp9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2NjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTY3OnN0YXRpYyB2b2lkIG5wY19zZXRfbGF5ZXJfbWRhdGEoc3RydWN0IHJ2dSAqcnZ1LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjg6XFx0XFx0XFx0XFx0c3RydWN0IG5wY19tY2FtICptY2FtLCBlbnVtIGtleV9maWVsZHMgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTY5OlxcdFxcdFxcdFxcdHU2NCBjZmcsIHU4IGxpZCwgdTggbHQsIHU4IGludGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3MDp7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3MTpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQgPSBcXHUwMDI2bWNhbS1cXHUwMDNlcnhfa2V5X2ZpZWxkc1t0eXBlXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTcyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzM6XFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzQ6XFx0XFx0aW5wdXQgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc1OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzY6XFx0aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLmhkciA9IEZJRUxEX0dFVChOUENfSERSX09GRlNFVCwgY2ZnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc3OlxcdGlucHV0LVxcdTAwM2VsYXllcl9tZGF0YS5rZXkgPSBGSUVMRF9HRVQoTlBDX0tFWV9PRkZTRVQsIGNmZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3ODpcXHRpZiAoaXNfY24yMGsocnZ1LVxcdTAwM2VwZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc5OlxcdFxcdGlucHV0LVxcdTAwM2VsYXllcl9tZGF0YS5sZW4gPSBGSUVMRF9HRVQoTlBDX0NOMjBLX0JZVEVTTSwgY2ZnKSArIDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4MDpcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4MTpcXHRcXHRpbnB1dC1cXHUwMDNlbGF5ZXJfbWRhdGEubGVuID0gRklFTERfR0VUKE5QQ19CWVRFU00sIGNmZykgKyAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODI6XFx0aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLmx0eXBlID0gbHQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4MzpcXHRpbnB1dC1cXHUwMDNlbGF5ZXJfbWRhdGEubGlkID0gbGlkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODQ6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4NjpzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg3OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg4OlxcdFxcdFxcdFxcdCAgICAgaW50IG1heF9rdylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg5OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTkwOlxcdGludCBrd2k7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5MTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTkyOlxcdC8qIEZpZWxkcyB3aXRoIHNhbWUgbGF5ZXIgaWQgYW5kIGRpZmZlcmVudCBsdHlwZXMgYXJlIG11dHVhbGx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5MzpcXHQgKiBleGNsdXNpdmUgaGVuY2UgdGhleSBjYW4gYmUgb3ZlcmxhcHBlZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTQ6XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5NTpcXHRpZiAoaW5wdXQxLVxcdTAwM2VsYXllcl9tZGF0YS5saWQgPT0gaW5wdXQyLVxcdTAwM2VsYXllcl9tZGF0YS5saWQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk2OlxcdCAgICBpbnB1dDEtXFx1MDAzZWxheWVyX21kYXRhLmx0eXBlICE9IGlucHV0Mi1cXHUwMDNlbGF5ZXJfbWRhdGEubHR5cGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5NzpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5ODpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk5OlxcdGZvciAoa3dpID0gMDsga3dpIFxcdTAwM2MgbWF4X2t3OyBrd2krKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDA6XFx0XFx0aWYgKGlucHV0MS1cXHUwMDNla3dfbWFza1trd2ldIFxcdTAwMjYgaW5wdXQyLVxcdTAwM2Vrd19tYXNrW2t3aV0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwMTpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjAyOlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjAzOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDQ6XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDU6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDY6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwNzovKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciBnaXZlbiBmaWVsZCBvdmVybGFwcyB3aXRoIGFueSBvdGhlciBmaWVsZHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjA4OiAqIGluIHRoZSBrZXkuIER1ZSB0byBsaW1pdGF0aW9ucyBvbiBrZXkgc2l6ZSBhbmQgdGhlIGtleSBleHRyYWN0aW9uIHByb2ZpbGUgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjA5OiAqIHVzZSBoaWdoZXIgbGF5ZXJzIGNhbiBvdmVyd3JpdGUgbG93ZXIgbGF5ZXIncyBoZWFkZXIgZmllbGRzLiBIZW5jZSBvdmVybGFwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIxMDogKiBuZWVkcyB0byBiZSBjaGVja2VkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTE6ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIxMjpzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcChzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTM6XFx0XFx0XFx0ICAgICAgZW51bSBrZXlfZmllbGRzIHR5cGUsIHU4IHN0YXJ0X2xpZCwgdTggaW50ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE0OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE1OlxcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFxcdTAwMjZydnUtXFx1MDAzZWh3LVxcdTAwM2VtY2FtO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTY6XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmR1bW15LCAqaW5wdXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIxNzpcXHRpbnQgc3RhcnRfa3dpLCBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIxODpcXHR1OCBucl9iaXRzLCBsaWQsIGx0LCBsZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE5OlxcdGludCBleHRyLCBrd3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyMDpcXHR1NjQgY2ZnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyMjpcXHRkdW1teSA9IFxcdTAwMjZtY2FtLVxcdTAwM2VyeF9rZXlfZmllbGRzW05QQ19VTktOT1dOXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjIzOlxcdGlucHV0ID0gXFx1MDAyNm1jYW0tXFx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI1OlxcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjY6XFx0XFx0ZHVtbXkgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1tOUENfVU5LTk9XTl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNzpcXHRcXHRpbnB1dCA9IFxcdTAwMjZtY2FtLVxcdTAwM2V0eF9rZXlfZmllbGRzW3R5cGVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjg6XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzMDpcXHRrd3MgPSBOUENfS1dTX0lOX0tFWV9TWl83O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzMjpcXHRpZiAoaXNfY24yMGsocnZ1LVxcdTAwM2VwZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjMzOlxcdFxcdGdvdG8gc2tpcF9jbjEwa19jb25maWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzNDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM1OlxcdGZvciAobGlkID0gc3RhcnRfbGlkOyBsaWQgXFx1MDAzYyBOUENfTUFYX0xJRDsgbGlkKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM2OlxcdFxcdGZvciAobHQgPSAwOyBsdCBcXHUwMDNjIE5QQ19NQVhfTFQ7IGx0KyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM3OlxcdFxcdFxcdGZvciAobGQgPSAwOyBsZCBcXHUwMDNjIE5QQ19NQVhfTEQ7IGxkKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM4OlxcdFxcdFxcdFxcdGNmZyA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzk6XFx0XFx0XFx0XFx0XFx0XFx0IE5QQ19BRl9JTlRGWF9MSURYX0xUWF9MRFhfQ0ZHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MDpcXHRcXHRcXHRcXHRcXHRcXHQgKGludGYsIGxpZCwgbHQsIGxkKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MTpcXHRcXHRcXHRcXHRpZiAoIUZJRUxEX0dFVChOUENfTERBVEFfRU4sIGNmZykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MjpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQzOlxcdFxcdFxcdFxcdG1lbXNldChkdW1teSwgMCwgc2l6ZW9mKHN0cnVjdCBucGNfa2V5X2ZpZWxkKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0NDpcXHRcXHRcXHRcXHRucGNfc2V0X2xheWVyX21kYXRhKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgY2ZnLCBsaWQsIGx0LCBpbnRmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQ2OlxcdFxcdFxcdFxcdC8qIGV4Y2x1ZGUgaW5wdXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQ3OlxcdFxcdFxcdFxcdGlmIChucGNfaXNfc2FtZShpbnB1dCwgZHVtbXkpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNDg6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0OTpcXHRcXHRcXHRcXHRzdGFydF9rd2kgPSBkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEua2V5IC8gODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUwOlxcdFxcdFxcdFxcdG9mZnNldCA9IChkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEua2V5ICogOCkgJSA2NDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUxOlxcdFxcdFxcdFxcdG5yX2JpdHMgPSBkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEubGVuICogODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUyOlxcdFxcdFxcdFxcdC8qIGZvcm0gS1cgbWFza3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUzOlxcdFxcdFxcdFxcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCBOUENfVU5LTk9XTixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU0OlxcdFxcdFxcdFxcdFxcdFxcdCBucl9iaXRzLCBzdGFydF9rd2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI1NTpcXHRcXHRcXHRcXHRcXHRcXHQgb2Zmc2V0LCBpbnRmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU2OlxcdFxcdFxcdFxcdC8qIGNoZWNrIGFueSBpbnB1dCBmaWVsZCBiaXRzIGZhbGxzIGluIGFueVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTc6XFx0XFx0XFx0XFx0ICogb3RoZXIgZmllbGQgYml0cy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU4OlxcdFxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTk6XFx0XFx0XFx0XFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsIGt3cykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2MDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYxOlxcdFxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYyOlxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYzOlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjY0OlxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjY1OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjY6c2tpcF9jbjEwa19jb25maWc6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2NzpcXHRmb3IgKGV4dHIgPSAwIDsgZXh0ciBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZW5wY19rZXhfZXh0cjsgZXh0cisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2ODpcXHRcXHRsaWQgPSBDTjIwS19HRVRfRVhUUl9MSUQoaW50ZiwgZXh0cik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2OTpcXHRcXHRpZiAobGlkIFxcdTAwM2Mgc3RhcnRfbGlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzA6XFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3MTpcXHRcXHRmb3IgKGx0ID0gMDsgbHQgXFx1MDAzYyBOUENfTUFYX0xUOyBsdCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3MjpcXHRcXHRcXHRjZmcgPSBDTjIwS19HRVRfRVhUUl9MVChpbnRmLCBleHRyLCBsdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3MzpcXHRcXHRcXHRpZiAoIUZJRUxEX0dFVChOUENfTERBVEFfRU4sIGNmZykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3NDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc1OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzY6XFx0XFx0XFx0bWVtc2V0KGR1bW15LCAwLCBzaXplb2Yoc3RydWN0IG5wY19rZXlfZmllbGQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc3OlxcdFxcdFxcdG5wY19zZXRfbGF5ZXJfbWRhdGEocnZ1LCBtY2FtLCBOUENfVU5LTk9XTiwgY2ZnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzg6XFx0XFx0XFx0XFx0XFx0ICAgIGxpZCwgbHQsIGludGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzk6XFx0XFx0XFx0LyogZXhjbHVkZSBpbnB1dCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODA6XFx0XFx0XFx0aWYgKG5wY19pc19zYW1lKGlucHV0LCBkdW1teSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjgyOlxcdFxcdFxcdHN0YXJ0X2t3aSA9IGR1bW15LVxcdTAwM2VsYXllcl9tZGF0YS5rZXkgLyA4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODM6XFx0XFx0XFx0b2Zmc2V0ID0gKGR1bW15LVxcdTAwM2VsYXllcl9tZGF0YS5rZXkgKiA4KSAlIDY0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODQ6XFx0XFx0XFx0bnJfYml0cyA9IGR1bW15LVxcdTAwM2VsYXllcl9tZGF0YS5sZW4gKiA4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODU6XFx0XFx0XFx0LyogZm9ybSBLVyBtYXNrcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODY6XFx0XFx0XFx0bnBjX3NldF9rd19tYXNrcyhydnUsIG1jYW0sIE5QQ19VTktOT1dOLCBucl9iaXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODc6XFx0XFx0XFx0XFx0XFx0IHN0YXJ0X2t3aSwgb2Zmc2V0LCBpbnRmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjg4OlxcdFxcdFxcdC8qIGNoZWNrIGFueSBpbnB1dCBmaWVsZCBiaXRzIGZhbGxzIGluIGFueSBvdGhlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODk6XFx0XFx0XFx0ICogZmllbGQgYml0c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTA6XFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI5MTpcXHRcXHRcXHRpZiAobnBjX2NoZWNrX292ZXJsYXBfZmllbGRzKGR1bW15LCBpbnB1dCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjkyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTlBDX0tXU19JTl9LRVlfU1pfOCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI5MzpcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk0OlxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk1OlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTc6XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTg6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwMDpzdGF0aWMgYm9vbCBucGNfY2hlY2tfZmllbGQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgZW51bSBrZXlfZmllbGRzIHR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwMTpcXHRcXHRcXHQgICAgdTggaW50ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzAyOntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzAzOlxcdGlmICghbnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCB0eXBlLCBpbnRmKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDQ6XFx0ICAgIG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgdHlwZSwgMCwgaW50ZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwNTpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwNjpcXHRyZXR1cm4gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzA3On1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzA4OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDk6c3RhdGljIHZvaWQgbnBjX3NjYW5fZXhhY3RfcmVzdWx0KHN0cnVjdCBydnUgKnJ2dSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzEwOlxcdFxcdFxcdFxcdCAgc3RydWN0IG5wY19tY2FtICptY2FtLCB1OCBiaXRfbnVtYmVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTE6XFx0XFx0XFx0XFx0ICB1OCBrZXlfbmliYmxlLCB1OCBpbnRmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTI6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTM6XFx0dTggb2Zmc2V0ID0gKGtleV9uaWJibGUgKiA0KSAlIDY0OyAvKiBvZmZzZXQgd2l0aGluIGtleSB3b3JkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxNDpcXHR1OCBrd2kgPSAoa2V5X25pYmJsZSAqIDQpIC8gNjQ7IC8qIHdoaWNoIHdvcmQgaW4ga2V5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxNTpcXHR1OCBucl9iaXRzID0gNDsgLyogYml0cyBpbiBhIG5pYmJsZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTY6XFx0dTggdHlwZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzE3OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTg6XFx0c3dpdGNoIChiaXRfbnVtYmVyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxOTpcXHRjYXNlIDQwIC4uLiA0MzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzIwOlxcdFxcdHR5cGUgPSBOUENfRVhBQ1RfUkVTVUxUO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjE6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyMjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzIzOlxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyNDpcXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyNTpcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyNjpcXHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgdHlwZSwgbnJfYml0cywga3dpLCBvZmZzZXQsIGludGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjc6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjg6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyOTpzdGF0aWMgdm9pZCBucGNfY24yMGtfc2Nhbl9wYXJzZV9yZXN1bHQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzMDpcXHRcXHRcXHRcXHRcXHR1OCBiaXRfbnVtYmVyLCB1OCBrZXlfbmliYmxlLCB1OCBpbnRmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzE6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzI6XFx0dTggb2Zmc2V0ID0gKGtleV9uaWJibGUgKiA0KSAlIDY0OyAvKiBvZmZzZXQgd2l0aGluIGtleSB3b3JkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzMzpcXHR1OCBrd2kgPSAoa2V5X25pYmJsZSAqIDQpIC8gNjQ7IC8qIHdoaWNoIHdvcmQgaW4ga2V5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzNDpcXHR1OCBucl9iaXRzID0gNDsgLyogYml0cyBpbiBhIG5pYmJsZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzU6XFx0dTggdHlwZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzM2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzc6XFx0c3dpdGNoIChiaXRfbnVtYmVyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzODpcXHRjYXNlIDAgLi4uIDI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzOTpcXHRcXHR0eXBlID0gTlBDX0NIQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0MDpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQxOlxcdGNhc2UgMzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQyOlxcdFxcdHR5cGUgPSBOUENfRVJSTEVWO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDM6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NDpcXHRjYXNlIDQgLi4uIDU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NTpcXHRcXHR0eXBlID0gTlBDX0VSUkNPREU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NjpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQ3OlxcdGNhc2UgNjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQ4OlxcdFxcdHR5cGUgPSBOUENfTFhNQjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQ5OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTA6XFx0Y2FzZSA4OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTE6XFx0XFx0dHlwZSA9IE5QQ19MQTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzUyOlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTM6XFx0Y2FzZSAxMDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU0OlxcdFxcdHR5cGUgPSBOUENfTEI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1NTpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU2OlxcdGNhc2UgMTI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1NzpcXHRcXHR0eXBlID0gTlBDX0xDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTg6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1OTpcXHRjYXNlIDE0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjA6XFx0XFx0dHlwZSA9IE5QQ19MRDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzYxOlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjI6XFx0Y2FzZSAxNjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzYzOlxcdFxcdHR5cGUgPSBOUENfTEU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2NDpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzY1OlxcdGNhc2UgMTg6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2NjpcXHRcXHR0eXBlID0gTlBDX0xGO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjc6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2ODpcXHRjYXNlIDIwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjk6XFx0XFx0dHlwZSA9IE5QQ19MRztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzcwOlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzE6XFx0Y2FzZSAyMjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzcyOlxcdFxcdHR5cGUgPSBOUENfTEg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3MzpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc0OlxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NTpcXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NjpcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc4OlxcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCB0eXBlLCBucl9iaXRzLCBrd2ksIG9mZnNldCwgaW50Zik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3OTp9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzgxOnN0YXRpYyB2b2lkIG5wY19zY2FuX3BhcnNlX3Jlc3VsdChzdHJ1Y3QgcnZ1ICpydnUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MjpcXHRcXHRcXHRcXHQgIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwgdTggYml0X251bWJlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzgzOlxcdFxcdFxcdFxcdCAgdTgga2V5X25pYmJsZSwgdTggaW50ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzg0OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzg1OlxcdHU4IG9mZnNldCA9IChrZXlfbmliYmxlICogNCkgJSA2NDsgLyogb2Zmc2V0IHdpdGhpbiBrZXkgd29yZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODY6XFx0dTgga3dpID0gKGtleV9uaWJibGUgKiA0KSAvIDY0OyAvKiB3aGljaCB3b3JkIGluIGtleSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODc6XFx0dTggbnJfYml0cyA9IDQ7IC8qIGJpdHMgaW4gYSBuaWJibGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzg4OlxcdHU4IHR5cGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4OTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzkwOlxcdGlmIChpc19jbjIwayhydnUtXFx1MDAzZXBkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM5MTpcXHRcXHRucGNfY24yMGtfc2Nhbl9wYXJzZV9yZXN1bHQocnZ1LCBtY2FtLCBiaXRfbnVtYmVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTI6XFx0XFx0XFx0XFx0XFx0ICAgIGtleV9uaWJibGUsIGludGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTM6XFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTQ6XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM5NjpcXHRzd2l0Y2ggKGJpdF9udW1iZXIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk3OlxcdGNhc2UgMCAuLi4gMjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk4OlxcdFxcdHR5cGUgPSBOUENfQ0hBTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk5OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDA6XFx0Y2FzZSAzOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDE6XFx0XFx0dHlwZSA9IE5QQ19FUlJMRVY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwMjpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDAzOlxcdGNhc2UgNCAuLi4gNTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDA0OlxcdFxcdHR5cGUgPSBOUENfRVJSQ09ERTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDA1OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDY6XFx0Y2FzZSA2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDc6XFx0XFx0dHlwZSA9IE5QQ19MWE1CO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDg6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwOTpcXHQvKiBjaGVjayBmb3IgTFRZUEUgb25seSBhcyBvZiBub3cgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDEwOlxcdGNhc2UgOTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDExOlxcdFxcdHR5cGUgPSBOUENfTEE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxMjpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDEzOlxcdGNhc2UgMTI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxNDpcXHRcXHR0eXBlID0gTlBDX0xCO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTU6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxNjpcXHRjYXNlIDE1OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTc6XFx0XFx0dHlwZSA9IE5QQ19MQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDE4OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTk6XFx0Y2FzZSAxODpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDIwOlxcdFxcdHR5cGUgPSBOUENfTEQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyMTpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDIyOlxcdGNhc2UgMjE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyMzpcXHRcXHR0eXBlID0gTlBDX0xFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjQ6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyNTpcXHRjYXNlIDI0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjY6XFx0XFx0dHlwZSA9IE5QQ19MRjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDI3OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mjg6XFx0Y2FzZSAyNzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDI5OlxcdFxcdHR5cGUgPSBOUENfTEc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzMDpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDMxOlxcdGNhc2UgMzA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzMjpcXHRcXHR0eXBlID0gTlBDX0xIO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzM6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzNDpcXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzU6XFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzY6XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mzc6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzODpcXHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgdHlwZSwgbnJfYml0cywga3dpLCBvZmZzZXQsIGludGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mzk6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0MTpzdGF0aWMgdm9pZCBucGNfaGFuZGxlX211bHRpX2xheWVyX2ZpZWxkcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDI6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDM6XFx0c3RydWN0IG5wY19tY2FtICptY2FtID0gXFx1MDAyNnJ2dS1cXHUwMDNlaHctXFx1MDAzZW1jYW07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0NDpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqa2V5X2ZpZWxkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ1OlxcdC8qIEV0aGVyIHR5cGUgY2FuIGNvbWUgZnJvbSB0aHJlZSBsYXllcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ2OlxcdCAqIChldGhlcm5ldCwgc2luZ2xlIHRhZ2dlZCwgZG91YmxlIHRhZ2dlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ3OlxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDg6XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmV0eXBlX2V0aGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDk6XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmV0eXBlX3RhZzE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1MDpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqZXR5cGVfdGFnMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUxOlxcdC8qIE91dGVyIFZMQU4gVENJIGNhbiBjb21lIGZyb20gdHdvIGxheWVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTI6XFx0ICogKHNpbmdsZSB0YWdnZWQsIGRvdWJsZSB0YWdnZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1MzpcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU0OlxcdHN0cnVjdCBucGNfa2V5X2ZpZWxkICp2bGFuX3RhZzE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1NTpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqdmxhbl90YWcyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTY6XFx0LyogSW5uZXIgVkxBTiBUQ0kgZm9yIGRvdWJsZSB0YWdnZWQgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1NzpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqdmxhbl90YWczO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTg6XFx0dTY0ICpmZWF0dXJlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU5OlxcdGludCBpLCBtYXhfa3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2MDpcXHR1OCBzdGFydF9saWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2MTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDYyOlxcdGlmIChpc19jbjIwayhydnUtXFx1MDAzZXBkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjM6XFx0XFx0bWF4X2t3ID0gTlBDX0tXU19JTl9LRVlfU1pfODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY0OlxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY1OlxcdFxcdG1heF9rdyA9IE5QQ19LV1NfSU5fS0VZX1NaXzc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2NjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY3OlxcdGtleV9maWVsZHMgPSBtY2FtLVxcdTAwM2VyeF9rZXlfZmllbGRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Njg6XFx0ZmVhdHVyZXMgPSBcXHUwMDI2bWNhbS1cXHUwMDNlcnhfZmVhdHVyZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2OTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDcwOlxcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzE6XFx0XFx0a2V5X2ZpZWxkcyA9IG1jYW0tXFx1MDAzZXR4X2tleV9maWVsZHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3MjpcXHRcXHRmZWF0dXJlcyA9IFxcdTAwMjZtY2FtLVxcdTAwM2V0eF9mZWF0dXJlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDczOlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzU6XFx0LyogSGFuZGxlIGhlYWRlciBmaWVsZHMgd2hpY2ggY2FuIGNvbWUgZnJvbSBtdWx0aXBsZSBsYXllcnMgbGlrZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzY6XFx0ICogZXR5cGUsIG91dGVyIHZsYW4gdGNpLiBUaGVzZSBmaWVsZHMgc2hvdWxkIGhhdmUgc2FtZSBwb3NpdGlvbiBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Nzc6XFx0ICogdGhlIGtleSBvdGhlcndpc2UgdG8gaW5zdGFsbCBhIG1jYW0gcnVsZSBtb3JlIHRoYW4gb25lIGVudHJ5IGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3ODpcXHQgKiBuZWVkZWQgd2hpY2ggY29tcGxpY2F0ZXMgbWNhbSBzcGFjZSBtYW5hZ2VtZW50LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Nzk6XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4MDpcXHRldHlwZV9ldGhlciA9IFxcdTAwMjZrZXlfZmllbGRzW05QQ19FVFlQRV9FVEhFUl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4MTpcXHRldHlwZV90YWcxID0gXFx1MDAyNmtleV9maWVsZHNbTlBDX0VUWVBFX1RBRzFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODI6XFx0ZXR5cGVfdGFnMiA9IFxcdTAwMjZrZXlfZmllbGRzW05QQ19FVFlQRV9UQUcyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDgzOlxcdHZsYW5fdGFnMSA9IFxcdTAwMjZrZXlfZmllbGRzW05QQ19WTEFOX1RBRzFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODQ6XFx0dmxhbl90YWcyID0gXFx1MDAyNmtleV9maWVsZHNbTlBDX1ZMQU5fVEFHMl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4NTpcXHR2bGFuX3RhZzMgPSBcXHUwMDI2a2V5X2ZpZWxkc1tOUENfVkxBTl9UQUczXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODc6XFx0LyogaWYga2V5IHByb2ZpbGUgcHJvZ3JhbW1lZCBkb2VzIG5vdCBleHRyYWN0IEV0aGVydHlwZSBhdCBhbGwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg4OlxcdGlmICghZXR5cGVfZXRoZXItXFx1MDAzZW5yX2t3cyBcXHUwMDI2XFx1MDAyNiAhZXR5cGVfdGFnMS1cXHUwMDNlbnJfa3dzIFxcdTAwMjZcXHUwMDI2ICFldHlwZV90YWcyLVxcdTAwM2Vucl9rd3MpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg5OlxcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJta2V4OiBFdGhlcnR5cGUgaXMgbm90IGV4dHJhY3RlZC5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTA6XFx0XFx0Z290byB2bGFuX3RjaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDkxOlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDkyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTM6XFx0LyogaWYga2V5IHByb2ZpbGUgcHJvZ3JhbW1lZCBleHRyYWN0cyBFdGhlcnR5cGUgZnJvbSBvbmUgbGF5ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk0OlxcdGlmIChldHlwZV9ldGhlci1cXHUwMDNlbnJfa3dzIFxcdTAwMjZcXHUwMDI2ICFldHlwZV90YWcxLVxcdTAwM2Vucl9rd3MgXFx1MDAyNlxcdTAwMjYgIWV0eXBlX3RhZzItXFx1MDAzZW5yX2t3cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk1OlxcdFxcdGtleV9maWVsZHNbTlBDX0VUWVBFXSA9ICpldHlwZV9ldGhlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk2OlxcdGlmICghZXR5cGVfZXRoZXItXFx1MDAzZW5yX2t3cyBcXHUwMDI2XFx1MDAyNiBldHlwZV90YWcxLVxcdTAwM2Vucl9rd3MgXFx1MDAyNlxcdTAwMjYgIWV0eXBlX3RhZzItXFx1MDAzZW5yX2t3cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk3OlxcdFxcdGtleV9maWVsZHNbTlBDX0VUWVBFXSA9ICpldHlwZV90YWcxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTg6XFx0aWYgKCFldHlwZV9ldGhlci1cXHUwMDNlbnJfa3dzIFxcdTAwMjZcXHUwMDI2ICFldHlwZV90YWcxLVxcdTAwM2Vucl9rd3MgXFx1MDAyNlxcdTAwMjYgZXR5cGVfdGFnMi1cXHUwMDNlbnJfa3dzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTk6XFx0XFx0a2V5X2ZpZWxkc1tOUENfRVRZUEVdID0gKmV0eXBlX3RhZzI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUwMDpcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6MzM6MDkuNTM1MjQ3MzA5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODA2ODg5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBJdCdzIGEgc2ltcGxlIGFkZGl0aW9uLCByZWFsbHkuIFRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIGBkZXZfd2FybigpYCBjYWxsIHdpdGhpbiBhbiBgaWZgIHN0YXRlbWVudC4gU3BlY2lmaWNhbGx5LCBpdCdzIGNoZWNraW5nIGZvciBhbiBvdmVybGFwIHJlbGF0ZWQgdG8gdGhlIGBOUENfSVBTRUNfU1BJYCBmaWVsZC4gVGhlIGBucGNfY2hlY2tfb3ZlcmxhcCgpYCBmdW5jdGlvbiBpcyBpbnZva2VkLCBhbmQgaWYgaXQgZGV0ZWN0cyBhbiBvdmVybGFwLCBhIHdhcm5pbmcgaXMgbG9nZ2VkLiBDcnVjaWFsbHksIHRoZSBjb2RlICpkb2Vzbid0KiBhbHRlciB0aGUgcHJvZ3JhbSdzIGZsb3cgYmFzZWQgb24gdGhpcyBvdmVybGFwIGRldGVjdGlvbi4gSXQganVzdCBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZS4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgY2hhbmdlcyB0aGF0IHdvdWxkIGZ1bmRhbWVudGFsbHkgYWx0ZXIgdGhlIHdheSB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMuIEJlY2F1c2Ugb2YgdGhpcyBsYWNrIG9mIGZ1bmN0aW9uYWwgY2hhbmdlcywgSSdsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3MgYSB1c2VmdWwgYWRkaXRpb24gZm9yIGRlYnVnZ2luZyBvciBlYXJseSBkZXRlY3Rpb24gb2YgY29uZmlndXJhdGlvbiBpc3N1ZXMgYnV0IGRvZXNuJ3Qgd2FycmFudCBmdXp6aW5nIGF0dGVudGlvbiBhdCB0aGlzIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDE1LCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMzOjE0LjExNTkzODYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGV2X3dhcm4gYW5kIGEgY29tbWVudC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBtb2RpZnkgYW55IHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGV2X3dhcm4gYW5kIGEgY29tbWVudC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBtb2RpZnkgYW55IHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow25h9k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 19:08:20 +0000 UTC FinishedAt: 2026-07-13 19:33:15 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRldl93YXJuIGFuZCBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbW9kaWZ5IGFueSBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZGU4Nzg4YTQxMzAyN2EyMjdhNzQyNDZiMDY5NWE4ODQ1OGQ5MjE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTk6MzI6NDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXG5pbmRleCA5MWI1OTQ3ZGFlMDYwMC4uYjIxN2MxYzE5ODEwYWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY1xuQEAgLTczMCw2ICYjNDM7NzMwLDkgQEAgc3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxuIFx0XHRcdCpmZWF0dXJlcyBcdTAwMjY9IH5CSVRfVUxMKE5QQ19PVVRFUl9WSUQpO1xuIFxuIFx0LyogQWxsb3cgZXh0cmFjdGluZyBTUEkgZmllbGQgZnJvbSBBSCBhbmQgRVNQIGhlYWRlcnMgYXQgc2FtZSBvZmZzZXQgKi9cbiYjNDM7XHRpZiAobnBjX2NoZWNrX292ZXJsYXAocnZ1LCBibGthZGRyLCBOUENfSVBTRUNfU1BJLCAwLCBpbnRmKSlcbiYjNDM7XHRcdGRldl93YXJuKHJ2dS1cdTAwM2VkZXYsIFwmIzM0O092ZXJsYXAgZGV0ZWN0ZWQgdGhlIGZpZWxkIE5QQ19JUFNFQ19TUElcXG5cJiMzNDspO1xuJiM0MztcdC8qIFNldCBTUEkgZmxhZyBvbmx5IGlmIEFIL0VTUCBhbmQgSVBTRUNfU1BJIGFyZSBpbiB0aGUga2V5ICovXG4gXHRpZiAobnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCBOUENfSVBTRUNfU1BJLCBpbnRmKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAoKmZlYXR1cmVzIFx1MDAyNiAoQklUX1VMTChOUENfSVBQUk9UT19FU1ApIHwgQklUX1VMTChOUENfSVBQUk9UT19BSCkpKSlcbiBcdFx0KmZlYXR1cmVzIHw9IEJJVF9VTEwoTlBDX0lQU0VDX1NQSSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGV2X3dhcm4gYW5kIGEgY29tbWVudC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBtb2RpZnkgYW55IHN0YXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGRlODc4OGE0MTMwMjdhMjI3YTc0MjQ2YjA2OTVhODg0NThkOTIxOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDE5OjMyOjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jCmluZGV4IDkxYjU5NDdkYWUwNjAwLi5iMjE3YzFjMTk4MTBhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYwpAQCAtNzMwLDYgJiM0Mzs3MzAsOSBAQCBzdGF0aWMgdm9pZCBucGNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHU4IGludGYpCiAJCQkqZmVhdHVyZXMgJmFtcDs9IH5CSVRfVUxMKE5QQ19PVVRFUl9WSUQpOwogCiAJLyogQWxsb3cgZXh0cmFjdGluZyBTUEkgZmllbGQgZnJvbSBBSCBhbmQgRVNQIGhlYWRlcnMgYXQgc2FtZSBvZmZzZXQgKi8KJiM0MzsJaWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpCiYjNDM7CQlkZXZfd2FybihydnUtJmd0O2RldiwgJiMzNDtPdmVybGFwIGRldGVjdGVkIHRoZSBmaWVsZCBOUENfSVBTRUNfU1BJXG4mIzM0Oyk7CiYjNDM7CS8qIFNldCBTUEkgZmxhZyBvbmx5IGlmIEFIL0VTUCBhbmQgSVBTRUNfU1BJIGFyZSBpbiB0aGUga2V5ICovCiAJaWYgKG5wY19pc19maWVsZF9wcmVzZW50KHJ2dSwgTlBDX0lQU0VDX1NQSSwgaW50ZikgJmFtcDsmYW1wOwogCSAgICAoKmZlYXR1cmVzICZhbXA7IChCSVRfVUxMKE5QQ19JUFBST1RPX0VTUCkgfCBCSVRfVUxMKE5QQ19JUFBST1RPX0FIKSkpKQogCQkqZmVhdHVyZXMgfD0gQklUX1VMTChOUENfSVBTRUNfU1BJKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byBydnVfbnBjX2ZzLmMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNgLiBJdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBpbnRyb2R1Y2VzIGEgYGRldl93YXJuYCBjYWxsIHdpdGhpbiBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudC4gU3BlY2lmaWNhbGx5LCB0aGUgY29kZSBub3cgY2hlY2tzIGZvciBhbiBvdmVybGFwIGludm9sdmluZyBgTlBDX0lQU0VDX1NQSWAgdXNpbmcgdGhlIGBucGNfY2hlY2tfb3ZlcmxhcGAgZnVuY3Rpb24uIElmIG92ZXJsYXAgaXMgZGV0ZWN0ZWQsIGl0IHRyaWdnZXJzIGEgd2FybmluZyBtZXNzYWdlOiAmIzM0O092ZXJsYXAgZGV0ZWN0ZWQgdGhlIGZpZWxkIE5QQ19JUFNFQ19TUEkmIzM0Oy4gVGhlIGNvZGUgYWxzbyBhZGRzIGEgY29tbWVudCBleHBsYWluaW5nIHRoZSBwdXJwb3NlIG9mIHNldHRpbmcgdGhlIFNQSSBmbGFnLgoKQWxyaWdodCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgc25pcHBldCBhZ2Fpbi4gWWVwLCBJJiMzOTttIHJlYWRpbmcgaXQgY29ycmVjdGx5LiBXZSYjMzk7cmUganVzdCBhZGRpbmcgYSB3YXJuaW5nIGlmIGBucGNfY2hlY2tfb3ZlcmxhcGAgcmV0dXJucyB0cnVlLCBtZWFuaW5nIGl0JiMzOTtzIGRldGVjdGVkIGFuIG92ZXJsYXAgYmV0d2VlbiBgTlBDX0lQU0VDX1NQSWAgYW5kIGFub3RoZXIgZmllbGQuIEFuZCB0aGVuLCByZWdhcmRsZXNzLCBpdCBzZXRzIHRoZSBTUEkgZmxhZyBpZiBgTlBDX0lQU0VDX1NQSWAgaXMgcHJlc2VudCBBTkQgQUgvRVNQIGFyZSBwcmVzZW50IGFzIGZlYXR1cmVzLgoKTXkgbWFpbiBjb25jZXJuIGhlcmUgaXMgYWx3YXlzIHNpZGUgZWZmZWN0cywgdGhvdWdoLiBTbywgaXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byBtYWtlIHN1cmUgdGhlIGZ1bmN0aW9uIGBucGNfY2hlY2tfb3ZlcmxhcGAgaXMgc2FmZSB0byBjYWxsIGFuZCBkb2VzbiYjMzk7dCBkbyBhbnl0aGluZyBlbHNlIHRoYXQgY291bGQgYmUgcHJvYmxlbWF0aWMuIEkmIzM5O2xsIG5lZWQgdG8gcmV2aWV3IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbnBjX2NoZWNrX292ZXJsYXBgIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25wY19jaGVja19vdmVybGFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz0xNjc9c3RhdGljIHZvaWQgbnBjX3NldF9sYXllcl9tZGF0YShzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODY6c3RhdGljIGJvb2wgbnBjX2NoZWNrX292ZXJsYXBfZmllbGRzKHN0cnVjdCBucGNfa2V5X2ZpZWxkICppbnB1dDEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMTg3LVx0XHRcdFx0ICAgICBzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy0yMTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjEyOnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMjEzLVx0XHRcdCAgICAgIGVudW0ga2V5X2ZpZWxkcyB0eXBlLCB1OCBzdGFydF9saWQsIHU4IGludGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI1OC1cdFx0XHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI1OTpcdFx0XHRcdGlmIChucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoZHVtbXksIGlucHV0LCBrd3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI2MC1cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI5MC1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTE6XHRcdFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMjkyLVx0XHRcdFx0XHRcdCAgICAgTlBDX0tXU19JTl9LRVlfU1pfOCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jPTMwMD1zdGF0aWMgYm9vbCBucGNfY2hlY2tfZmllbGQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgZW51bSBrZXlfZmllbGRzIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTMwMy1cdGlmICghbnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCB0eXBlLCBpbnRmKSB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwNDpcdCAgICBucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIHR5cGUsIDAsIGludGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTMwNS1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz00NDE9c3RhdGljIHZvaWQgbnBjX2hhbmRsZV9tdWx0aV9sYXllcl9maWVsZHMoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgdTggaW50Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtNTMxLVx0c3RhcnRfbGlkID0ga2V5X2ZpZWxkc1tOUENfRVRZUEVdLmxheWVyX21kYXRhLmxpZCAmIzQzOyAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUzMjpcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19FVFlQRSwgc3RhcnRfbGlkLCBpbnRmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTUzMy1cdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcJiMzNDtta2V4OiBFdGhlcnR5cGUgaXMgb3ZlcndyaXR0ZW4gYnkgaGlnaGVyIGxheWVycy5cXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy01NjEtXHRzdGFydF9saWQgPSBrZXlfZmllbGRzW05QQ19PVVRFUl9WSURdLmxheWVyX21kYXRhLmxpZCAmIzQzOyAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjU2MjpcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19PVVRFUl9WSUQsIHN0YXJ0X2xpZCwgaW50ZikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy01NjMtXHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7bWtleDogT3V0ZXIgdmxhbiB0Y2kgaXMgb3ZlcndyaXR0ZW4gYnkgaGlnaGVyIGxheWVycy5cXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz02ODM9c3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy03MzItXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjczMzpcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19JUFNFQ19TUEksIDAsIGludGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczNC1cdFx0ZGV2X3dhcm4ocnZ1LVx1MDAzZWRldiwgXCYjMzQ7T3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jPTgzNj1zdGF0aWMgaW50IG5wY19zY2FuX3ZlcmlmeV9rZXgoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtODUzLVx0LyogY2hlY2sgdGhhdCBub25lIG9mIHRoZSBmaWVsZHMgb3ZlcndyaXRlIGNoYW5uZWwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4NTQ6XHRpZiAobnBjX2NoZWNrX292ZXJsYXAocnZ1LCBibGthZGRyLCBOUENfQ0hBTiwgMCwgTklYX0lOVEZfUlgpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtODU1LVx0XHRkZXZfZXJyKHJ2dS1cdTAwM2VkZXYsIFwmIzM0O0NoYW5uZWwgY2Fubm90IGJlIG92ZXJ3cml0dGVuXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDMzCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgbnBjX2NoZWNrX292ZXJsYXBgKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbnBjX2NoZWNrX292ZXJsYXBgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gZXhhY3RseSBob3cgdGhpcyByb3V0aW5lIGhhbmRsZXMgY29sbGlzaW9uIGRldGVjdGlvbiBmb3Igbm9uLXBsYXllciBjaGFyYWN0ZXJzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBudWFuY2VzIG9mIGl0cyBib3VuZGluZyBib3ggaGFuZGxpbmcgYW5kIGFueSBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcyBlbXBsb3llZC4gVGhpbmtpbmcgYmFjaywgSSBzZWVtIHRvIHJlbWVtYmVyIHdlIGhhZCBzb21lIGlzc3VlcyB3aXRoIGNlcnRhaW4gZWRnZSBjYXNlcyB3aXRoIHZlcnkgbGFyZ2Ugb3Igb2RkbHktc2hhcGVkIE5QQ3MsIHNvIEkgd2FudCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSBsb2dpYyBjYXJlZnVsbHksIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB3aGVyZSBmdXJ0aGVyIHJlZmluZW1lbnQgbWlnaHQgeWllbGQgcGVyZm9ybWFuY2UgZ2FpbnMuIFNwZWNpZmljIHF1ZXN0aW9ucyBJIGhhdmUgYXJlIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIHRoZSBmdW5jdGlvbiwgdXNlIG9mIHNwYXRpYWwgaW5kZXhpbmcgKGlmIGFueSksIGFuZCBob3cgaXQgZGVhbHMgd2l0aCBkeW5hbWljIG9iamVjdHMgdmVyc3VzIHN0YXRpYyB3b3JsZCBnZW9tZXRyeS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY2xldmVyIHRyaWNrcywgYW55IHVzZSBvZiBTSU1EIGluc3RydWN0aW9ucywgYW5kIHdoZXRoZXIgaXQmIzM5O3MgdXNpbmcgYSBicm9hZC1waGFzZS9uYXJyb3ctcGhhc2UgY29sbGlzaW9uIGRldGVjdGlvbiBhcHByb2FjaC4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgY29kZSBjb21tZW50cyBhcmUgaGVscGZ1bCDigJMgZ29vZCBjb21tZW50cyBhcmUgd29ydGggdGhlaXIgd2VpZ2h0IGluIGdvbGQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIxMDpcdCAqIG5lZWRzIHRvIGJlIGNoZWNrZWQuXG4gMjExOlx0ICovXG4gMjEyOlx0c3RhdGljIGJvb2wgbnBjX2NoZWNrX292ZXJsYXAoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcixcbiAyMTM6XHRcdFx0XHQgICAgICBlbnVtIGtleV9maWVsZHMgdHlwZSwgdTggc3RhcnRfbGlkLCB1OCBpbnRmKVxuIDIxNDpcdHtcbiAyMTU6XHRcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFx1MDAyNnJ2dS1cdTAwM2Vody1cdTAwM2VtY2FtO1xuIDIxNjpcdFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmR1bW15LCAqaW5wdXQ7XG4gMjE3Olx0XHRpbnQgc3RhcnRfa3dpLCBvZmZzZXQ7XG4gMjE4Olx0XHR1OCBucl9iaXRzLCBsaWQsIGx0LCBsZDtcbiAyMTk6XHRcdGludCBleHRyLCBrd3M7XG4gMjIwOlx0XHR1NjQgY2ZnO1xuIDIyMTpcdFxuIDIyMjpcdFx0ZHVtbXkgPSBcdTAwMjZtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbTlBDX1VOS05PV05dO1xuIDIyMzpcdFx0aW5wdXQgPSBcdTAwMjZtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XG4gMjI0Olx0XG4gMjI1Olx0XHRpZiAoaXNfbnBjX2ludGZfdHgoaW50ZikpIHtcbiAyMjY6XHRcdFx0ZHVtbXkgPSBcdTAwMjZtY2FtLVx1MDAzZXR4X2tleV9maWVsZHNbTlBDX1VOS05PV05dO1xuIDIyNzpcdFx0XHRpbnB1dCA9IFx1MDAyNm1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcbiAyMjg6XHRcdH1cbiAyMjk6XHRcbiAyMzA6XHRcdGt3cyA9IE5QQ19LV1NfSU5fS0VZX1NaXzc7XG4gMjMxOlx0XG4gMjMyOlx0XHRpZiAoaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKVxuIDIzMzpcdFx0XHRnb3RvIHNraXBfY24xMGtfY29uZmlnO1xuIDIzNDpcdFxuIDIzNTpcdFx0Zm9yIChsaWQgPSBzdGFydF9saWQ7IGxpZCBcdTAwM2MgTlBDX01BWF9MSUQ7IGxpZCYjNDM7JiM0MzspIHtcbiAyMzY6XHRcdFx0Zm9yIChsdCA9IDA7IGx0IFx1MDAzYyBOUENfTUFYX0xUOyBsdCYjNDM7JiM0MzspIHtcbiAyMzc6XHRcdFx0XHRmb3IgKGxkID0gMDsgbGQgXHUwMDNjIE5QQ19NQVhfTEQ7IGxkJiM0MzsmIzQzOykge1xuIDIzODpcdFx0XHRcdFx0Y2ZnID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4gMjM5Olx0XHRcdFx0XHRcdFx0IE5QQ19BRl9JTlRGWF9MSURYX0xUWF9MRFhfQ0ZHXG4gMjQwOlx0XHRcdFx0XHRcdFx0IChpbnRmLCBsaWQsIGx0LCBsZCkpO1xuIDI0MTpcdFx0XHRcdFx0aWYgKCFGSUVMRF9HRVQoTlBDX0xEQVRBX0VOLCBjZmcpKVxuIDI0MjpcdFx0XHRcdFx0XHRjb250aW51ZTtcbiAyNDM6XHRcdFx0XHRcdG1lbXNldChkdW1teSwgMCwgc2l6ZW9mKHN0cnVjdCBucGNfa2V5X2ZpZWxkKSk7XG4gMjQ0Olx0XHRcdFx0XHRucGNfc2V0X2xheWVyX21kYXRhKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sXG4gMjQ1Olx0XHRcdFx0XHRcdFx0ICAgIGNmZywgbGlkLCBsdCwgaW50Zik7XG4gMjQ2Olx0XHRcdFx0XHQvKiBleGNsdWRlIGlucHV0ICovXG4gMjQ3Olx0XHRcdFx0XHRpZiAobnBjX2lzX3NhbWUoaW5wdXQsIGR1bW15KSlcbiAyNDg6XHRcdFx0XHRcdFx0Y29udGludWU7XG4gMjQ5Olx0XHRcdFx0XHRzdGFydF9rd2kgPSBkdW1teS1cdTAwM2VsYXllcl9tZGF0YS5rZXkgLyA4O1xuIDI1MDpcdFx0XHRcdFx0b2Zmc2V0ID0gKGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmtleSAqIDgpICUgNjQ7XG4gMjUxOlx0XHRcdFx0XHRucl9iaXRzID0gZHVtbXktXHUwMDNlbGF5ZXJfbWRhdGEubGVuICogODtcbiAyNTI6XHRcdFx0XHRcdC8qIGZvcm0gS1cgbWFza3MgKi9cbiAyNTM6XHRcdFx0XHRcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCBOUENfVU5LTk9XTixcbiAyNTQ6XHRcdFx0XHRcdFx0XHQgbnJfYml0cywgc3RhcnRfa3dpLFxuIDI1NTpcdFx0XHRcdFx0XHRcdCBvZmZzZXQsIGludGYpO1xuIDI1NjpcdFx0XHRcdFx0LyogY2hlY2sgYW55IGlucHV0IGZpZWxkIGJpdHMgZmFsbHMgaW4gYW55XG4gMjU3Olx0XHRcdFx0XHQgKiBvdGhlciBmaWVsZCBiaXRzLlxuIDI1ODpcdFx0XHRcdFx0ICovXG4gMjU5Olx0XHRcdFx0XHRpZiAobnBjX2NoZWNrX292ZXJsYXBfZmllbGRzKGR1bW15LCBpbnB1dCwga3dzKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjMyCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIE5ldHdvcmsgUHJvY2Vzc29yIENoZWNrKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kLCBpbml0aWFsbHksIEkgc2VlIHRoYXQgYG5wY19jaGVja19vdmVybGFwYCBhcHBlYXJzIHRvIGJlIGEgcHVyZSByZWFkIG9wZXJhdGlvbi4gSXQgbG9va3MgYXQgc29tZSByZWdpc3RlcnMsIGNoZWNrcyBmb3IgYW4gb3ZlcmxhcCwgYW5kIHNwaXRzIGJhY2sgYSBib29sZWFuLiBUaGUgcGF0Y2ggaXRzZWxmIGp1c3QgKmFkZHMqIGEgd2FybmluZyBiYXNlZCBvbiB0aGUgcmV0dXJuIG9mIHRoaXMgZnVuY3Rpb246IGBkZXZfd2FybmAuIE5vIGNoYW5nZXMgdG8gdGhlIHByb2dyYW0gZmxvdywgbm8gc3RhdGUgbW9kaWZpY2F0aW9ucyBkaXJlY3RseS4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGp1c3QgYW4gZXh0cmEgZGVidWdnaW5nIHRvb2wsIGFsZXJ0aW5nIHVzIHRvIGEgcG90ZW50aWFsIG92ZXJsYXAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIG5ldHdvcmsgcHJvY2Vzc29yLgoKSG93ZXZlci4uLiBJIG5lZWQgdG8gYmUgKnN1cmUqLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIG5vdCB0byB0cnVzdCBhbnl0aGluZyBpbXBsaWNpdGx5LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhhcmR3YXJlLWxldmVsIGludGVyYWN0aW9ucy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCBgbnBjX3NldF9sYXllcl9tZGF0YWAgYW5kIGBucGNfc2V0X2t3X21hc2tzYC4gVGhleSBzZWVtIHJlbGV2YW50IGdpdmVuIHRoZSBjb250ZXh0IG9mIHNldHRpbmcgdXAgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIEl04oCZcyBwb3NzaWJsZSB0aG9zZSBmdW5jdGlvbnMsIHdoaWNoICpkbyogd3JpdGUsIG1pZ2h0IGNhbGwgYG5wY19jaGVja19vdmVybGFwYCBpbnRlcm5hbGx5LCBjcmVhdGluZyBhIGhpZGRlbiBzaWRlIGVmZmVjdCBvciBkZXBlbmRlbmNlLiBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoZSBjb2RlICphcyBwcmVzZW50ZWQqIGhhcyBubyBzaWRlIGVmZmVjdHMsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdHJ1ZSBpbiB0aGUgZW50aXJlIHByb2dyYW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NzpcdHN0YXRpYyB2b2lkIG5wY19zZXRfbGF5ZXJfbWRhdGEoc3RydWN0IHJ2dSAqcnZ1LFxuIDE2ODpcdFx0XHRcdFx0c3RydWN0IG5wY19tY2FtICptY2FtLCBlbnVtIGtleV9maWVsZHMgdHlwZSxcbiAxNjk6XHRcdFx0XHRcdHU2NCBjZmcsIHU4IGxpZCwgdTggbHQsIHU4IGludGYpXG4gMTcwOlx0e1xuIDE3MTpcdFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0ID0gXHUwMDI2bWNhbS1cdTAwM2VyeF9rZXlfZmllbGRzW3R5cGVdO1xuIDE3MjpcdFxuIDE3MzpcdFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxuIDE3NDpcdFx0XHRpbnB1dCA9IFx1MDAyNm1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcbiAxNzU6XHRcbiAxNzY6XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmhkciA9IEZJRUxEX0dFVChOUENfSERSX09GRlNFVCwgY2ZnKTtcbiAxNzc6XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmtleSA9IEZJRUxEX0dFVChOUENfS0VZX09GRlNFVCwgY2ZnKTtcbiAxNzg6XHRcdGlmIChpc19jbjIwayhydnUtXHUwMDNlcGRldikpXG4gMTc5Olx0XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmxlbiA9IEZJRUxEX0dFVChOUENfQ04yMEtfQllURVNNLCBjZmcpICYjNDM7IDE7XG4gMTgwOlx0XHRlbHNlXG4gMTgxOlx0XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmxlbiA9IEZJRUxEX0dFVChOUENfQllURVNNLCBjZmcpICYjNDM7IDE7XG4gMTgyOlx0XHRpbnB1dC1cdTAwM2VsYXllcl9tZGF0YS5sdHlwZSA9IGx0O1xuIDE4MzpcdFx0aW5wdXQtXHUwMDNlbGF5ZXJfbWRhdGEubGlkID0gbGlkO1xuIDE4NDpcdH1cbiAxODU6XHRcbiAxODY6XHRzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MSxcbiAxODc6XHRcdFx0XHRcdCAgICAgc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MixcbiAxODg6XHRcdFx0XHRcdCAgICAgaW50IG1heF9rdylcbiAxODk6XHR7XG4gMTkwOlx0XHRpbnQga3dpO1xuIDE5MTpcdFxuIDE5MjpcdFx0LyogRmllbGRzIHdpdGggc2FtZSBsYXllciBpZCBhbmQgZGlmZmVyZW50IGx0eXBlcyBhcmUgbXV0dWFsbHlcbiAxOTM6XHRcdCAqIGV4Y2x1c2l2ZSBoZW5jZSB0aGV5IGNhbiBiZSBvdmVybGFwcGVkXG4gMTk0Olx0XHQgKi9cbiAxOTU6XHRcdGlmIChpbnB1dDEtXHUwMDNlbGF5ZXJfbWRhdGEubGlkID09IGlucHV0Mi1cdTAwM2VsYXllcl9tZGF0YS5saWQgXHUwMDI2XHUwMDI2XG4gMTk2Olx0XHQgICAgaW5wdXQxLVx1MDAzZWxheWVyX21kYXRhLmx0eXBlICE9IGlucHV0Mi1cdTAwM2VsYXllcl9tZGF0YS5sdHlwZSlcbiAxOTc6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDE5ODpcdFxuIDE5OTpcdFx0Zm9yIChrd2kgPSAwOyBrd2kgXHUwMDNjIG1heF9rdzsga3dpJiM0MzsmIzQzOykge1xuIDIwMDpcdFx0XHRpZiAoaW5wdXQxLVx1MDAzZWt3X21hc2tba3dpXSBcdTAwMjYgaW5wdXQyLVx1MDAzZWt3X21hc2tba3dpXSlcbiAyMDE6XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcbiAyMDI6XHRcdH1cbiAyMDM6XHRcbiAyMDQ6XHRcdHJldHVybiBmYWxzZTtcbiAyMDU6XHR9XG4gMjA2Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg1MAoJCQkJCQkJb3V0cHV0OiA3MgoJCQkJCQkJdGhvdWdodHM6IDE5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgYG5wY19zZXRfbGF5ZXJfbWRhdGFgIGlzIG1vZGlmeWluZyBgaW5wdXRgLCBhbmQgdGhhdCBgaW5wdXRgIGlzIGFjdHVhbGx5IGEgcG9pbnRlciB0byBgbWNhbS0mZ3Q7cnhfa2V5X2ZpZWxkc1t0eXBlXWAuIFRoZW4gSSBzZWUgaW4gYG5wY19jaGVja19vdmVybGFwYCwgdGhhdCBgdHlwZWAgaXMgc2V0IHRvIGBOUENfVU5LTk9XTmAgZm9yIHRoZSBgZHVtbXlgIHZhcmlhYmxlLiBBaCwgcmlnaHQsIGBOUENfVU5LTk9XTmAgaXMgdGhhdCB0ZW1wb3JhcnkgY2FsY3VsYXRpb24gZmllbGQsIGl0JiMzOTtzIGp1c3QgYSBzY3JhdGNocGFkLgoKU28sIGluIGVmZmVjdCwgdGhpcyBtZWFucyBgbnBjX2NoZWNrX292ZXJsYXBgIGlzIG1vZGlmeWluZyBgbWNhbS0mZ3Q7cnhfa2V5X2ZpZWxkc1tOUENfVU5LTk9XTl1gLiBJdCYjMzk7cyBub3QgbW9kaWZ5aW5nIGFueSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMgb3IgZGlyZWN0bHkgaW5mbHVlbmNpbmcgdGhlIGRyaXZlciYjMzk7cyBleGVjdXRpb24gcGF0aCBvciB0aGUgaGFyZHdhcmUgc3RhdGUuIFRoaXMgYGR1bW15YCBmaWVsZCBpcyBqdXN0IGZvciB0ZW1wb3JhcnkgY2FsY3VsYXRpb25zIGR1cmluZyBvdmVybGFwIGNoZWNraW5nLCBhbmQgdGhlIGNvZGUgb25seSB1c2VzIGl0IGludGVybmFsbHkuCgpHb3QgaXQhIFRoZSBwYXRjaCYjMzk7cyBpbXBhY3QgaXMgbWluaW1hbCwgaXQmIzM5O3MgcmVhbGx5IGp1c3QgYWRkaW5nIGEgYGRldl93YXJuYC4gR29vZCwgSSYjMzk7bGwgY29uZmlybSB0aGF0IHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgYmV5b25kIHRoYXQgd2FybmluZy4gTm8gd29ycmllcyBoZXJlLCB0aGlzIGxvb2tzIGZpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25wY19jaGVja19vdmVybGFwXFwocnZ1LCBibGthZGRyLCBOUENfSVBTRUNfU1BJLCAwLCBpbnRmXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz02ODM9c3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy03MzItXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjczMzpcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19JUFNFQ19TUEksIDAsIGludGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczNC1cdFx0ZGV2X3dhcm4ocnZ1LVx1MDAzZWRldiwgXCYjMzQ7T3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1OTIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipQYXRjaCBBc3Nlc3NtZW50IGFuZCBGdXp6aW5nIERlY2lzaW9uKioKCkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpbiBxdWVzdGlvbiAqb25seSogaW50cm9kdWNlcyBhIHdhcm5pbmcuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGEgaGVhZHMtdXAsIGEgcG90ZW50aWFsIGhlYWRzLXVwIGF0IHJ1bnRpbWUuIENydWNpYWxseSwgaXQgZG9lc24mIzM5O3QgYWN0dWFsbHkgKmNoYW5nZSogaG93IHRoZSBjb2RlIGV4ZWN1dGVzLiBObyBicmFuY2ggaW5zdHJ1Y3Rpb25zLCBubyBkYXRhIG1hbmlwdWxhdGlvbiwgbm90aGluZyB0aGF0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIHRoZSBwcm9ncmFtJiMzOTtzIGJlaGF2aW9yLiBHaXZlbiB0aGF0LCB0aGUgaW1tZWRpYXRlIGFzc2Vzc21lbnQgaXMgV29ydGhGdXp6aW5nID0gZmFsc2UuIEl0JiMzOTtzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IG9mIGF0dGVtcHRpbmcgdG8gZnV6eiwgYXMgYSB3YXJuaW5nIGlzIHVubGlrZWx5IHRvIGdlbmVyYXRlIHRoZSB0eXBlIG9mIHN0YXRlIGNoYW5nZXMgb3IgZXhwbG9pdGFibGUgY29uZGl0aW9ucyB0aGF0IGZ1enppbmcgaXMgZGVzaWduZWQgdG8gdW5jb3Zlci4KCkhvd2V2ZXIsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzbmVha3kgc2lkZSBlZmZlY3RzIG9yIG1pbm9yIGNoYW5nZXMgdGhhdCBhcmUgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMuIEkmIzM5O2xsIG5lZWQgdG8gZ28gYmFjayBvdmVyIHRoZSBwYXRjaCB3aXRoIGEgZmluZS10b290aGVkIGNvbWIgdG8gZW5zdXJlIHRoYXQgbm90aGluZyBlbHNlIHdhcyBhbHRlcmVkIG9yIGluY2x1ZGVkIGJ5IGFjY2lkZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsuKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI1OSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE6Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOi8qIE1hcnZlbGwgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM6ICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OiAqIENvcHlyaWdodCAoQykgMjAyMCBNYXJ2ZWxsLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjU6ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjk6I2luY2x1ZGUgXCYjMzQ7cnZ1X3N0cnVjdC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA6I2luY2x1ZGUgXCYjMzQ7cnZ1X3JlZy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE6I2luY2x1ZGUgXCYjMzQ7cnZ1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjojaW5jbHVkZSBcJiMzNDtucGMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEzOiNpbmNsdWRlIFwmIzM0O3J2dV9ucGNfZnMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0OiNpbmNsdWRlIFwmIzM0O3J2dV9ucGNfaGFzaC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU6I2luY2x1ZGUgXCYjMzQ7Y24yMGsvcmVnLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjojaW5jbHVkZSBcJiMzNDtjbjIway9ucGMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4OnN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbnBjX2Zsb3dfbmFtZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTpcdFtOUENfRE1BQ11cdD0gXCYjMzQ7ZG1hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDpcdFtOUENfU01BQ11cdD0gXCYjMzQ7c21hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTpcdFtOUENfRVRZUEVdXHQ9IFwmIzM0O2V0aGVyIHR5cGVcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI6XHRbTlBDX1ZMQU5fRVRZUEVfQ1RBR10gPSBcJiMzNDt2bGFuIGV0aGVyIHR5cGUgY3RhZ1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzpcdFtOUENfVkxBTl9FVFlQRV9TVEFHXSA9IFwmIzM0O3ZsYW4gZXRoZXIgdHlwZSBzdGFnXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0Olx0W05QQ19PVVRFUl9WSURdXHQ9IFwmIzM0O291dGVyIHZsYW4gaWRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU6XHRbTlBDX0lOTkVSX1ZJRF1cdD0gXCYjMzQ7aW5uZXIgdmxhbiBpZFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjpcdFtOUENfVE9TXVx0PSBcJiMzNDt0b3NcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc6XHRbTlBDX0lQRlJBR19JUFY0XSA9IFwmIzM0O2ZyYWdtZW50ZWQgSVB2NCBoZWFkZXIgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4Olx0W05QQ19TSVBfSVBWNF1cdD0gXCYjMzQ7aXB2NCBzb3VyY2UgaXBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk6XHRbTlBDX0RJUF9JUFY0XVx0PSBcJiMzNDtpcHY0IGRlc3RpbmF0aW9uIGlwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwOlx0W05QQ19JUEZSQUdfSVBWNl0gPSBcJiMzNDtmcmFnbWVudGVkIElQdjYgaGVhZGVyIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTpcdFtOUENfU0lQX0lQVjZdXHQ9IFwmIzM0O2lwdjYgc291cmNlIGlwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyOlx0W05QQ19ESVBfSVBWNl1cdD0gXCYjMzQ7aXB2NiBkZXN0aW5hdGlvbiBpcFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzpcdFtOUENfSVBQUk9UT19UQ1BdID0gXCYjMzQ7aXAgcHJvdG8gdGNwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0Olx0W05QQ19JUFBST1RPX1VEUF0gPSBcJiMzNDtpcCBwcm90byB1ZHBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU6XHRbTlBDX0lQUFJPVE9fU0NUUF0gPSBcJiMzNDtpcCBwcm90byBzY3RwXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2Olx0W05QQ19JUFBST1RPX0lDTVBdID0gXCYjMzQ7aXAgcHJvdG8gaWNtcFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzpcdFtOUENfSVBQUk9UT19JQ01QNl0gPSBcJiMzNDtpcCBwcm90byBpY21wNlwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODpcdFtOUENfSVBQUk9UT19BSF0gPSBcJiMzNDtpcCBwcm90byBBSFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTpcdFtOUENfSVBQUk9UT19FU1BdID0gXCYjMzQ7aXAgcHJvdG8gRVNQXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwOlx0W05QQ19TUE9SVF9UQ1BdXHQ9IFwmIzM0O3RjcCBzb3VyY2UgcG9ydFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTpcdFtOUENfRFBPUlRfVENQXVx0PSBcJiMzNDt0Y3AgZGVzdGluYXRpb24gcG9ydFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjpcdFtOUENfU1BPUlRfVURQXVx0PSBcJiMzNDt1ZHAgc291cmNlIHBvcnRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDM6XHRbTlBDX0RQT1JUX1VEUF1cdD0gXCYjMzQ7dWRwIGRlc3RpbmF0aW9uIHBvcnRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ6XHRbTlBDX1NQT1JUX1NDVFBdID0gXCYjMzQ7c2N0cCBzb3VyY2UgcG9ydFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTpcdFtOUENfRFBPUlRfU0NUUF0gPSBcJiMzNDtzY3RwIGRlc3RpbmF0aW9uIHBvcnRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY6XHRbTlBDX0xYTUJdXHQ9IFwmIzM0O01jYXN0L0JjYXN0IGhlYWRlciBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc6XHRbTlBDX0lQU0VDX1NQSV0gPSBcJiMzNDtTUEkgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4Olx0W05QQ19NUExTMV9MQlRDQk9TXSA9IFwmIzM0O2xzZSBkZXB0aCAxIGxhYmVsIHRjIGJvc1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTpcdFtOUENfTVBMUzFfVFRMXSAgICAgPSBcJiMzNDtsc2UgZGVwdGggMSB0dGxcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTA6XHRbTlBDX01QTFMyX0xCVENCT1NdID0gXCYjMzQ7bHNlIGRlcHRoIDIgbGFiZWwgdGMgYm9zXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUxOlx0W05QQ19NUExTMl9UVExdICAgICA9IFwmIzM0O2xzZSBkZXB0aCAyIHR0bFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1MjpcdFtOUENfTVBMUzNfTEJUQ0JPU10gPSBcJiMzNDtsc2UgZGVwdGggMyBsYWJlbCB0YyBib3NcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTM6XHRbTlBDX01QTFMzX1RUTF0gICAgID0gXCYjMzQ7bHNlIGRlcHRoIDMgdHRsXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjU0Olx0W05QQ19NUExTNF9MQlRDQk9TXSA9IFwmIzM0O2xzZSBkZXB0aCA0IGxhYmVsIHRjIGJvc1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NTpcdFtOUENfTVBMUzRfVFRMXSAgICAgPSBcJiMzNDtsc2UgZGVwdGggNFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NjpcdFtOUENfVFlQRV9JQ01QXSA9IFwmIzM0O2ljbXAgdHlwZVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NzpcdFtOUENfQ09ERV9JQ01QXSA9IFwmIzM0O2ljbXAgY29kZVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1ODpcdFtOUENfVENQX0ZMQUdTXSA9IFwmIzM0O3RjcCBmbGFnc1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1OTpcdFtOUENfVU5LTk9XTl1cdD0gXCYjMzQ7dW5rbm93blwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2MDp9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjYxOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjYyOmJvb2wgbnBjX2lzX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgdTY0IGZlYXR1cmVzLCB1OCBpbnRmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjYzOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2NDpcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFx1MDAyNnJ2dS1cdTAwM2Vody1cdTAwM2VtY2FtO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjY1Olx0dTY0IG1jYW1fZmVhdHVyZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NjY6XHR1NjQgdW5zdXBwb3J0ZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Njc6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Njg6XHRtY2FtX2ZlYXR1cmVzID0gaXNfbnBjX2ludGZfdHgoaW50ZikgPyBtY2FtLVx1MDAzZXR4X2ZlYXR1cmVzIDogbWNhbS1cdTAwM2VyeF9mZWF0dXJlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2OTpcdHVuc3VwcG9ydGVkID0gKG1jYW1fZmVhdHVyZXMgXiBmZWF0dXJlcykgXHUwMDI2IH5tY2FtX2ZlYXR1cmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcxOlx0LyogUmV0dXJuIGZhbHNlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgaW5wdXQgZmxvd3MgaXMgbm90IGV4dHJhY3RlZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcyOlx0cmV0dXJuICF1bnN1cHBvcnRlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3Mzp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NzQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NzU6Y29uc3QgY2hhciAqbnBjX2dldF9maWVsZF9uYW1lKHU4IGhkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3Njp7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzc6XHRpZiAoaGRyIFx1MDAzZT0gQVJSQVlfU0laRShucGNfZmxvd19uYW1lcykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzg6XHRcdHJldHVybiBucGNfZmxvd19uYW1lc1tOUENfVU5LTk9XTl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODA6XHRyZXR1cm4gbnBjX2Zsb3dfbmFtZXNbaGRyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4MTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODM6LyogQ29tcHV0ZSBrZXl3b3JkIG1hc2tzIGFuZCBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2Yga2V5d29yZHMgYSBmaWVsZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg0OiAqIHNwYW5zIGluIHRoZSBrZXkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODU6ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODY6c3RhdGljIHZvaWQgbnBjX3NldF9rd19tYXNrcyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwgdTggdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4NzpcdFx0XHQgICAgIHU4IG5yX2JpdHMsIGludCBzdGFydF9rd2ksIGludCBvZmZzZXQsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODg6e1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg5Olx0c3RydWN0IG5wY19rZXlfZmllbGQgKmZpZWxkID0gXHUwMDI2bWNhbS1cdTAwM2VyeF9rZXlfZmllbGRzW3R5cGVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkwOlx0dTggYml0c19pbl9rdztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5MTpcdGludCBtYXhfa3dpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkzOlx0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjk0Olx0XHRpZiAobWNhbS1cdTAwM2ViYW5rc19wZXJfZW50cnkgPT0gMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5NTpcdFx0XHRtYXhfa3dpID0gMzsgLyogTlBDX01DQU1fS0VZX1gyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTY6XHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5NzpcdFx0XHRtYXhfa3dpID0gNzsgLyogTlBDX01DQU1fS0VZX1g0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTg6XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjk5Olx0XHRpZiAobWNhbS1cdTAwM2ViYW5rc19wZXJfZW50cnkgPT0gMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDA6XHRcdFx0bWF4X2t3aSA9IDE7IC8qIE5QQ19NQ0FNX0tFWV9YMSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwMTpcdFx0ZWxzZSBpZiAobWNhbS1cdTAwM2ViYW5rc19wZXJfZW50cnkgPT0gMilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDI6XHRcdFx0bWF4X2t3aSA9IDM7IC8qIE5QQ19NQ0FNX0tFWV9YMiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwMzpcdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwNDpcdFx0XHRtYXhfa3dpID0gNjsgLyogTlBDX01DQU1fS0VZX1g0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA1Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDc6XHRpZiAoaXNfbnBjX2ludGZfdHgoaW50ZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA4Olx0XHRmaWVsZCA9IFx1MDAyNm1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTEwOlx0aWYgKG9mZnNldCAmIzQzOyBucl9iaXRzIFx1MDAzYz0gNjQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMTE6XHRcdC8qIG9uZSBLVyBvbmx5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTEyOlx0XHRpZiAoc3RhcnRfa3dpIFx1MDAzZSBtYXhfa3dpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExMzpcdFx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE0Olx0XHRmaWVsZC1cdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aV0gfD0gR0VOTUFTS19VTEwobnJfYml0cyAtIDEsIDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE1Olx0XHRcdFx0XHQgICAgIFx1MDAzY1x1MDAzYyBvZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE2Olx0XHRmaWVsZC1cdTAwM2Vucl9rd3MgPSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExNzpcdH0gZWxzZSBpZiAob2Zmc2V0ICYjNDM7IG5yX2JpdHMgXHUwMDNlIDY0IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExODpcdFx0ICAgb2Zmc2V0ICYjNDM7IG5yX2JpdHMgXHUwMDNjPSAxMjgpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMTk6XHRcdC8qIHR3byBLV3MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjA6XHRcdGlmIChzdGFydF9rd2kgJiM0MzsgMSBcdTAwM2UgbWF4X2t3aSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjE6XHRcdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMjpcdFx0LyogZmlyc3QgS1cgbWFzayAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMzpcdFx0Yml0c19pbl9rdyA9IDY0IC0gb2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNDpcdFx0ZmllbGQtXHUwMDNla3dfbWFza1tzdGFydF9rd2ldIHw9IEdFTk1BU0tfVUxMKGJpdHNfaW5fa3cgLSAxLCAwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNTpcdFx0XHRcdFx0ICAgICBcdTAwM2NcdTAwM2Mgb2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNjpcdFx0Lyogc2Vjb25kIEtXIG1hc2sgaS5lLiBtYXNrIGZvciByZXN0IG9mIGJpdHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjc6XHRcdGJpdHNfaW5fa3cgPSBucl9iaXRzICYjNDM7IG9mZnNldCAtIDY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyODpcdFx0ZmllbGQtXHUwMDNla3dfbWFza1tzdGFydF9rd2kgJiM0MzsgMV0gfD0gR0VOTUFTS19VTEwoYml0c19pbl9rdyAtIDEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyOTpcdFx0ZmllbGQtXHUwMDNlbnJfa3dzID0gMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzA6XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEzMTpcdFx0LyogdGhyZWUgS1dzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTMyOlx0XHRpZiAoc3RhcnRfa3dpICYjNDM7IDIgXHUwMDNlIG1heF9rd2kpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTMzOlx0XHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzQ6XHRcdC8qIGZpcnN0IEtXIG1hc2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzU6XHRcdGJpdHNfaW5fa3cgPSA2NCAtIG9mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzY6XHRcdGZpZWxkLVx1MDAzZWt3X21hc2tbc3RhcnRfa3dpXSB8PSBHRU5NQVNLX1VMTChiaXRzX2luX2t3IC0gMSwgMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzc6XHRcdFx0XHRcdCAgICAgXHUwMDNjXHUwMDNjIG9mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzg6XHRcdC8qIHNlY29uZCBLVyBtYXNrICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTM5Olx0XHRmaWVsZC1cdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aSAmIzQzOyAxXSA9IH4wVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MDpcdFx0LyogdGhpcmQgS1cgbWFzayBpLmUuIG1hc2sgZm9yIHJlc3Qgb2YgYml0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MTpcdFx0Yml0c19pbl9rdyA9IG5yX2JpdHMgJiM0Mzsgb2Zmc2V0IC0gMTI4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MjpcdFx0ZmllbGQtXHUwMDNla3dfbWFza1tzdGFydF9rd2kgJiM0MzsgMl0gfD0gR0VOTUFTS19VTEwoYml0c19pbl9rdyAtIDEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MzpcdFx0ZmllbGQtXHUwMDNlbnJfa3dzID0gMztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDQ6XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTQ1On1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTQ3Oi8qIEhlbHBlciBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IHdoZXRoZXIgZmllbGQgZXhpc3RzIGluIHRoZSBrZXkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDg6c3RhdGljIGJvb2wgbnBjX2lzX2ZpZWxkX3ByZXNlbnQoc3RydWN0IHJ2dSAqcnZ1LCBlbnVtIGtleV9maWVsZHMgdHlwZSwgdTggaW50ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDk6e1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1MDpcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFx1MDAyNnJ2dS1cdTAwM2Vody1cdTAwM2VtY2FtO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1MTpcdHN0cnVjdCBucGNfa2V5X2ZpZWxkICppbnB1dDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTUzOlx0aW5wdXQgID0gXHUwMDI2bWNhbS1cdTAwM2VyeF9rZXlfZmllbGRzW3R5cGVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1NDpcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTU6XHRcdGlucHV0ICA9IFx1MDAyNm1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU3Olx0cmV0dXJuIGlucHV0LVx1MDAzZW5yX2t3cyBcdTAwM2UgMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTg6fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1OTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjA6c3RhdGljIGJvb2wgbnBjX2lzX3NhbWUoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2MTpcdFx0XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqZmllbGQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTYyOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjM6XHRyZXR1cm4gbWVtY21wKFx1MDAyNmlucHV0LVx1MDAzZWxheWVyX21kYXRhLCBcdTAwMjZmaWVsZC1cdTAwM2VsYXllcl9tZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjQ6XHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBucGNfbGF5ZXJfbWRhdGEpKSA9PSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2NTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTY2OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2NzpzdGF0aWMgdm9pZCBucGNfc2V0X2xheWVyX21kYXRhKHN0cnVjdCBydnUgKnJ2dSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjg6XHRcdFx0XHRzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIGVudW0ga2V5X2ZpZWxkcyB0eXBlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2OTpcdFx0XHRcdHU2NCBjZmcsIHU4IGxpZCwgdTggbHQsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTcwOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzE6XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQgPSBcdTAwMjZtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTcyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3MzpcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzQ6XHRcdGlucHV0ID0gXHUwMDI2bWNhbS1cdTAwM2V0eF9rZXlfZmllbGRzW3R5cGVdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3NTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzY6XHRpbnB1dC1cdTAwM2VsYXllcl9tZGF0YS5oZHIgPSBGSUVMRF9HRVQoTlBDX0hEUl9PRkZTRVQsIGNmZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc3Olx0aW5wdXQtXHUwMDNlbGF5ZXJfbWRhdGEua2V5ID0gRklFTERfR0VUKE5QQ19LRVlfT0ZGU0VULCBjZmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3ODpcdGlmIChpc19jbjIwayhydnUtXHUwMDNlcGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc5Olx0XHRpbnB1dC1cdTAwM2VsYXllcl9tZGF0YS5sZW4gPSBGSUVMRF9HRVQoTlBDX0NOMjBLX0JZVEVTTSwgY2ZnKSAmIzQzOyAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4MDpcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODE6XHRcdGlucHV0LVx1MDAzZWxheWVyX21kYXRhLmxlbiA9IEZJRUxEX0dFVChOUENfQllURVNNLCBjZmcpICYjNDM7IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTgyOlx0aW5wdXQtXHUwMDNlbGF5ZXJfbWRhdGEubHR5cGUgPSBsdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODM6XHRpbnB1dC1cdTAwM2VsYXllcl9tZGF0YS5saWQgPSBsaWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg0On1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg2OnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4NzpcdFx0XHRcdCAgICAgc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODg6XHRcdFx0XHQgICAgIGludCBtYXhfa3cpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg5OntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTA6XHRpbnQga3dpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5MTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTI6XHQvKiBGaWVsZHMgd2l0aCBzYW1lIGxheWVyIGlkIGFuZCBkaWZmZXJlbnQgbHR5cGVzIGFyZSBtdXR1YWxseVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5MzpcdCAqIGV4Y2x1c2l2ZSBoZW5jZSB0aGV5IGNhbiBiZSBvdmVybGFwcGVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk0Olx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk1Olx0aWYgKGlucHV0MS1cdTAwM2VsYXllcl9tZGF0YS5saWQgPT0gaW5wdXQyLVx1MDAzZWxheWVyX21kYXRhLmxpZCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTY6XHQgICAgaW5wdXQxLVx1MDAzZWxheWVyX21kYXRhLmx0eXBlICE9IGlucHV0Mi1cdTAwM2VsYXllcl9tZGF0YS5sdHlwZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTc6XHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk5Olx0Zm9yIChrd2kgPSAwOyBrd2kgXHUwMDNjIG1heF9rdzsga3dpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwMDpcdFx0aWYgKGlucHV0MS1cdTAwM2Vrd19tYXNrW2t3aV0gXHUwMDI2IGlucHV0Mi1cdTAwM2Vrd19tYXNrW2t3aV0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjAxOlx0XHRcdHJldHVybiB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwMjpcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDM6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjA0Olx0cmV0dXJuIGZhbHNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwNTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjA2OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwNzovKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciBnaXZlbiBmaWVsZCBvdmVybGFwcyB3aXRoIGFueSBvdGhlciBmaWVsZHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDg6ICogaW4gdGhlIGtleS4gRHVlIHRvIGxpbWl0YXRpb25zIG9uIGtleSBzaXplIGFuZCB0aGUga2V5IGV4dHJhY3Rpb24gcHJvZmlsZSBpblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwOTogKiB1c2UgaGlnaGVyIGxheWVycyBjYW4gb3ZlcndyaXRlIGxvd2VyIGxheWVyJiMzOTtzIGhlYWRlciBmaWVsZHMuIEhlbmNlIG92ZXJsYXBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTA6ICogbmVlZHMgdG8gYmUgY2hlY2tlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTE6ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjEyOnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjEzOlx0XHRcdCAgICAgIGVudW0ga2V5X2ZpZWxkcyB0eXBlLCB1OCBzdGFydF9saWQsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE0OntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTU6XHRzdHJ1Y3QgbnBjX21jYW0gKm1jYW0gPSBcdTAwMjZydnUtXHUwMDNlaHctXHUwMDNlbWNhbTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTY6XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqZHVtbXksICppbnB1dDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTc6XHRpbnQgc3RhcnRfa3dpLCBvZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE4Olx0dTggbnJfYml0cywgbGlkLCBsdCwgbGQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE5Olx0aW50IGV4dHIsIGt3cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjA6XHR1NjQgY2ZnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyMTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjI6XHRkdW1teSA9IFx1MDAyNm1jYW0tXHUwMDNlcnhfa2V5X2ZpZWxkc1tOUENfVU5LTk9XTl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjIzOlx0aW5wdXQgPSBcdTAwMjZtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNTpcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNjpcdFx0ZHVtbXkgPSBcdTAwMjZtY2FtLVx1MDAzZXR4X2tleV9maWVsZHNbTlBDX1VOS05PV05dO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNzpcdFx0aW5wdXQgPSBcdTAwMjZtY2FtLVx1MDAzZXR4X2tleV9maWVsZHNbdHlwZV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI4Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyOTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzA6XHRrd3MgPSBOUENfS1dTX0lOX0tFWV9TWl83O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzMTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzI6XHRpZiAoaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzMzpcdFx0Z290byBza2lwX2NuMTBrX2NvbmZpZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM1Olx0Zm9yIChsaWQgPSBzdGFydF9saWQ7IGxpZCBcdTAwM2MgTlBDX01BWF9MSUQ7IGxpZCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzY6XHRcdGZvciAobHQgPSAwOyBsdCBcdTAwM2MgTlBDX01BWF9MVDsgbHQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM3Olx0XHRcdGZvciAobGQgPSAwOyBsZCBcdTAwM2MgTlBDX01BWF9MRDsgbGQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM4Olx0XHRcdFx0Y2ZnID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM5Olx0XHRcdFx0XHRcdCBOUENfQUZfSU5URlhfTElEWF9MVFhfTERYX0NGR1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MDpcdFx0XHRcdFx0XHQgKGludGYsIGxpZCwgbHQsIGxkKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQxOlx0XHRcdFx0aWYgKCFGSUVMRF9HRVQoTlBDX0xEQVRBX0VOLCBjZmcpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MjpcdFx0XHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQzOlx0XHRcdFx0bWVtc2V0KGR1bW15LCAwLCBzaXplb2Yoc3RydWN0IG5wY19rZXlfZmllbGQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNDQ6XHRcdFx0XHRucGNfc2V0X2xheWVyX21kYXRhKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQ1Olx0XHRcdFx0XHRcdCAgICBjZmcsIGxpZCwgbHQsIGludGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0NjpcdFx0XHRcdC8qIGV4Y2x1ZGUgaW5wdXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNDc6XHRcdFx0XHRpZiAobnBjX2lzX3NhbWUoaW5wdXQsIGR1bW15KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNDg6XHRcdFx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0OTpcdFx0XHRcdHN0YXJ0X2t3aSA9IGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmtleSAvIDg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUwOlx0XHRcdFx0b2Zmc2V0ID0gKGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmtleSAqIDgpICUgNjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUxOlx0XHRcdFx0bnJfYml0cyA9IGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmxlbiAqIDg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUyOlx0XHRcdFx0LyogZm9ybSBLVyBtYXNrcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI1MzpcdFx0XHRcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCBOUENfVU5LTk9XTixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTQ6XHRcdFx0XHRcdFx0IG5yX2JpdHMsIHN0YXJ0X2t3aSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTU6XHRcdFx0XHRcdFx0IG9mZnNldCwgaW50Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU2Olx0XHRcdFx0LyogY2hlY2sgYW55IGlucHV0IGZpZWxkIGJpdHMgZmFsbHMgaW4gYW55XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU3Olx0XHRcdFx0ICogb3RoZXIgZmllbGQgYml0cy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTg6XHRcdFx0XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTk6XHRcdFx0XHRpZiAobnBjX2NoZWNrX292ZXJsYXBfZmllbGRzKGR1bW15LCBpbnB1dCwga3dzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjA6XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2MTpcdFx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYyOlx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYzOlx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2NDpcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjY2OnNraXBfY24xMGtfY29uZmlnOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2NzpcdGZvciAoZXh0ciA9IDAgOyBleHRyIFx1MDAzYyBydnUtXHUwMDNlaHctXHUwMDNlbnBjX2tleF9leHRyOyBleHRyJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2ODpcdFx0bGlkID0gQ04yMEtfR0VUX0VYVFJfTElEKGludGYsIGV4dHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2OTpcdFx0aWYgKGxpZCBcdTAwM2Mgc3RhcnRfbGlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3MDpcdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzE6XHRcdGZvciAobHQgPSAwOyBsdCBcdTAwM2MgTlBDX01BWF9MVDsgbHQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjcyOlx0XHRcdGNmZyA9IENOMjBLX0dFVF9FWFRSX0xUKGludGYsIGV4dHIsIGx0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzM6XHRcdFx0aWYgKCFGSUVMRF9HRVQoTlBDX0xEQVRBX0VOLCBjZmcpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3NDpcdFx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3NTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzY6XHRcdFx0bWVtc2V0KGR1bW15LCAwLCBzaXplb2Yoc3RydWN0IG5wY19rZXlfZmllbGQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzc6XHRcdFx0bnBjX3NldF9sYXllcl9tZGF0YShydnUsIG1jYW0sIE5QQ19VTktOT1dOLCBjZmcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc4Olx0XHRcdFx0XHQgICAgbGlkLCBsdCwgaW50Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc5Olx0XHRcdC8qIGV4Y2x1ZGUgaW5wdXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODA6XHRcdFx0aWYgKG5wY19pc19zYW1lKGlucHV0LCBkdW1teSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjgxOlx0XHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjgyOlx0XHRcdHN0YXJ0X2t3aSA9IGR1bW15LVx1MDAzZWxheWVyX21kYXRhLmtleSAvIDg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjgzOlx0XHRcdG9mZnNldCA9IChkdW1teS1cdTAwM2VsYXllcl9tZGF0YS5rZXkgKiA4KSAlIDY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4NDpcdFx0XHRucl9iaXRzID0gZHVtbXktXHUwMDNlbGF5ZXJfbWRhdGEubGVuICogODtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODU6XHRcdFx0LyogZm9ybSBLVyBtYXNrcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4NjpcdFx0XHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sIG5yX2JpdHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjg3Olx0XHRcdFx0XHQgc3RhcnRfa3dpLCBvZmZzZXQsIGludGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4ODpcdFx0XHQvKiBjaGVjayBhbnkgaW5wdXQgZmllbGQgYml0cyBmYWxscyBpbiBhbnkgb3RoZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODk6XHRcdFx0ICogZmllbGQgYml0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI5MDpcdFx0XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTE6XHRcdFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjkyOlx0XHRcdFx0XHRcdCAgICAgTlBDX0tXU19JTl9LRVlfU1pfOCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjkzOlx0XHRcdFx0cmV0dXJuIHRydWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk0Olx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk1Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI5NjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTc6XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk4On1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzAwOnN0YXRpYyBib29sIG5wY19jaGVja19maWVsZChzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCBlbnVtIGtleV9maWVsZHMgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDE6XHRcdFx0ICAgIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzAyOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDM6XHRpZiAoIW5wY19pc19maWVsZF9wcmVzZW50KHJ2dSwgdHlwZSwgaW50ZikgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDQ6XHQgICAgbnBjX2NoZWNrX292ZXJsYXAocnZ1LCBibGthZGRyLCB0eXBlLCAwLCBpbnRmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDU6XHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDY6XHRyZXR1cm4gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDc6fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwODpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDk6c3RhdGljIHZvaWQgbnBjX3NjYW5fZXhhY3RfcmVzdWx0KHN0cnVjdCBydnUgKnJ2dSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTA6XHRcdFx0XHQgIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwgdTggYml0X251bWJlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTE6XHRcdFx0XHQgIHU4IGtleV9uaWJibGUsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzEyOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTM6XHR1OCBvZmZzZXQgPSAoa2V5X25pYmJsZSAqIDQpICUgNjQ7IC8qIG9mZnNldCB3aXRoaW4ga2V5IHdvcmQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTQ6XHR1OCBrd2kgPSAoa2V5X25pYmJsZSAqIDQpIC8gNjQ7IC8qIHdoaWNoIHdvcmQgaW4ga2V5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzE1Olx0dTggbnJfYml0cyA9IDQ7IC8qIGJpdHMgaW4gYSBuaWJibGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTY6XHR1OCB0eXBlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxNzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTg6XHRzd2l0Y2ggKGJpdF9udW1iZXIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTk6XHRjYXNlIDQwIC4uLiA0MzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjA6XHRcdHR5cGUgPSBOUENfRVhBQ1RfUkVTVUxUO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyMTpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzIyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyMzpcdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzI0Olx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzI1Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyNjpcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCB0eXBlLCBucl9iaXRzLCBrd2ksIG9mZnNldCwgaW50Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzI3On1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzI5OnN0YXRpYyB2b2lkIG5wY19jbjIwa19zY2FuX3BhcnNlX3Jlc3VsdChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzA6XHRcdFx0XHRcdHU4IGJpdF9udW1iZXIsIHU4IGtleV9uaWJibGUsIHU4IGludGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzMxOntcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzI6XHR1OCBvZmZzZXQgPSAoa2V5X25pYmJsZSAqIDQpICUgNjQ7IC8qIG9mZnNldCB3aXRoaW4ga2V5IHdvcmQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzM6XHR1OCBrd2kgPSAoa2V5X25pYmJsZSAqIDQpIC8gNjQ7IC8qIHdoaWNoIHdvcmQgaW4ga2V5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzM0Olx0dTggbnJfYml0cyA9IDQ7IC8qIGJpdHMgaW4gYSBuaWJibGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzU6XHR1OCB0eXBlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzc6XHRzd2l0Y2ggKGJpdF9udW1iZXIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzg6XHRjYXNlIDAgLi4uIDI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzM5Olx0XHR0eXBlID0gTlBDX0NIQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQwOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDE6XHRjYXNlIDM6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQyOlx0XHR0eXBlID0gTlBDX0VSUkxFVjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDM6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NDpcdGNhc2UgNCAuLi4gNTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDU6XHRcdHR5cGUgPSBOUENfRVJSQ09ERTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDY6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NzpcdGNhc2UgNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDg6XHRcdHR5cGUgPSBOUENfTFhNQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDk6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1MDpcdGNhc2UgODpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTE6XHRcdHR5cGUgPSBOUENfTEE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzUyOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTM6XHRjYXNlIDEwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1NDpcdFx0dHlwZSA9IE5QQ19MQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTU6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1NjpcdGNhc2UgMTI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU3Olx0XHR0eXBlID0gTlBDX0xDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1ODpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU5Olx0Y2FzZSAxNDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjA6XHRcdHR5cGUgPSBOUENfTEQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzYxOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjI6XHRjYXNlIDE2OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2MzpcdFx0dHlwZSA9IE5QQ19MRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjQ6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2NTpcdGNhc2UgMTg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzY2Olx0XHR0eXBlID0gTlBDX0xGO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2NzpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzY4Olx0Y2FzZSAyMDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjk6XHRcdHR5cGUgPSBOUENfTEc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzcwOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzE6XHRjYXNlIDIyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3MjpcdFx0dHlwZSA9IE5QQ19MSDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzM6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NDpcdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc1Olx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc2Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzg6XHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgdHlwZSwgbnJfYml0cywga3dpLCBvZmZzZXQsIGludGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3OTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzgwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MTpzdGF0aWMgdm9pZCBucGNfc2Nhbl9wYXJzZV9yZXN1bHQoc3RydWN0IHJ2dSAqcnZ1LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MjpcdFx0XHRcdCAgc3RydWN0IG5wY19tY2FtICptY2FtLCB1OCBiaXRfbnVtYmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MzpcdFx0XHRcdCAgdTgga2V5X25pYmJsZSwgdTggaW50ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODQ6e1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4NTpcdHU4IG9mZnNldCA9IChrZXlfbmliYmxlICogNCkgJSA2NDsgLyogb2Zmc2V0IHdpdGhpbiBrZXkgd29yZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4NjpcdHU4IGt3aSA9IChrZXlfbmliYmxlICogNCkgLyA2NDsgLyogd2hpY2ggd29yZCBpbiBrZXkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODc6XHR1OCBucl9iaXRzID0gNDsgLyogYml0cyBpbiBhIG5pYmJsZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4ODpcdHU4IHR5cGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzg5OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM5MDpcdGlmIChpc19jbjIwayhydnUtXHUwMDNlcGRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTE6XHRcdG5wY19jbjIwa19zY2FuX3BhcnNlX3Jlc3VsdChydnUsIG1jYW0sIGJpdF9udW1iZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzkyOlx0XHRcdFx0XHQgICAga2V5X25pYmJsZSwgaW50Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzkzOlx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk0Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM5NTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTY6XHRzd2l0Y2ggKGJpdF9udW1iZXIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTc6XHRjYXNlIDAgLi4uIDI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk4Olx0XHR0eXBlID0gTlBDX0NIQU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk5Olx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDA6XHRjYXNlIDM6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDAxOlx0XHR0eXBlID0gTlBDX0VSUkxFVjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDI6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwMzpcdGNhc2UgNCAuLi4gNTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDQ6XHRcdHR5cGUgPSBOUENfRVJSQ09ERTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDU6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwNjpcdGNhc2UgNjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDc6XHRcdHR5cGUgPSBOUENfTFhNQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDg6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwOTpcdC8qIGNoZWNrIGZvciBMVFlQRSBvbmx5IGFzIG9mIG5vdyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxMDpcdGNhc2UgOTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTE6XHRcdHR5cGUgPSBOUENfTEE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDEyOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTM6XHRjYXNlIDEyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxNDpcdFx0dHlwZSA9IE5QQ19MQjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTU6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxNjpcdGNhc2UgMTU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDE3Olx0XHR0eXBlID0gTlBDX0xDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxODpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDE5Olx0Y2FzZSAxODpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjA6XHRcdHR5cGUgPSBOUENfTEQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDIxOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjI6XHRjYXNlIDIxOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyMzpcdFx0dHlwZSA9IE5QQ19MRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjQ6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyNTpcdGNhc2UgMjQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDI2Olx0XHR0eXBlID0gTlBDX0xGO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyNzpcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDI4Olx0Y2FzZSAyNzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mjk6XHRcdHR5cGUgPSBOUENfTEc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDMwOlx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzE6XHRjYXNlIDMwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzMjpcdFx0dHlwZSA9IE5QQ19MSDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzM6XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzNDpcdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDM1Olx0XHRyZXR1cm47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDM2Olx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzNzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mzg6XHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgdHlwZSwgbnJfYml0cywga3dpLCBvZmZzZXQsIGludGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzOTp9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0MTpzdGF0aWMgdm9pZCBucGNfaGFuZGxlX211bHRpX2xheWVyX2ZpZWxkcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0Mjp7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQzOlx0c3RydWN0IG5wY19tY2FtICptY2FtID0gXHUwMDI2cnZ1LVx1MDAzZWh3LVx1MDAzZW1jYW07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ0Olx0c3RydWN0IG5wY19rZXlfZmllbGQgKmtleV9maWVsZHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ1Olx0LyogRXRoZXIgdHlwZSBjYW4gY29tZSBmcm9tIHRocmVlIGxheWVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0NjpcdCAqIChldGhlcm5ldCwgc2luZ2xlIHRhZ2dlZCwgZG91YmxlIHRhZ2dlZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDc6XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDg6XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqZXR5cGVfZXRoZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ5Olx0c3RydWN0IG5wY19rZXlfZmllbGQgKmV0eXBlX3RhZzE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUwOlx0c3RydWN0IG5wY19rZXlfZmllbGQgKmV0eXBlX3RhZzI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUxOlx0LyogT3V0ZXIgVkxBTiBUQ0kgY2FuIGNvbWUgZnJvbSB0d28gbGF5ZXJzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUyOlx0ICogKHNpbmdsZSB0YWdnZWQsIGRvdWJsZSB0YWdnZWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUzOlx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU0Olx0c3RydWN0IG5wY19rZXlfZmllbGQgKnZsYW5fdGFnMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTU6XHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqdmxhbl90YWcyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1NjpcdC8qIElubmVyIFZMQU4gVENJIGZvciBkb3VibGUgdGFnZ2VkIGZyYW1lcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1NzpcdHN0cnVjdCBucGNfa2V5X2ZpZWxkICp2bGFuX3RhZzM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU4Olx0dTY0ICpmZWF0dXJlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTk6XHRpbnQgaSwgbWF4X2t3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2MDpcdHU4IHN0YXJ0X2xpZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjE6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDYyOlx0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjM6XHRcdG1heF9rdyA9IE5QQ19LV1NfSU5fS0VZX1NaXzg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY0Olx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2NTpcdFx0bWF4X2t3ID0gTlBDX0tXU19JTl9LRVlfU1pfNztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY3Olx0a2V5X2ZpZWxkcyA9IG1jYW0tXHUwMDNlcnhfa2V5X2ZpZWxkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Njg6XHRmZWF0dXJlcyA9IFx1MDAyNm1jYW0tXHUwMDNlcnhfZmVhdHVyZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY5OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3MDpcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3MTpcdFx0a2V5X2ZpZWxkcyA9IG1jYW0tXHUwMDNldHhfa2V5X2ZpZWxkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzI6XHRcdGZlYXR1cmVzID0gXHUwMDI2bWNhbS1cdTAwM2V0eF9mZWF0dXJlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzM6XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3NTpcdC8qIEhhbmRsZSBoZWFkZXIgZmllbGRzIHdoaWNoIGNhbiBjb21lIGZyb20gbXVsdGlwbGUgbGF5ZXJzIGxpa2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzY6XHQgKiBldHlwZSwgb3V0ZXIgdmxhbiB0Y2kuIFRoZXNlIGZpZWxkcyBzaG91bGQgaGF2ZSBzYW1lIHBvc2l0aW9uIGluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc3Olx0ICogdGhlIGtleSBvdGhlcndpc2UgdG8gaW5zdGFsbCBhIG1jYW0gcnVsZSBtb3JlIHRoYW4gb25lIGVudHJ5IGlzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc4Olx0ICogbmVlZGVkIHdoaWNoIGNvbXBsaWNhdGVzIG1jYW0gc3BhY2UgbWFuYWdlbWVudC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Nzk6XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODA6XHRldHlwZV9ldGhlciA9IFx1MDAyNmtleV9maWVsZHNbTlBDX0VUWVBFX0VUSEVSXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODE6XHRldHlwZV90YWcxID0gXHUwMDI2a2V5X2ZpZWxkc1tOUENfRVRZUEVfVEFHMV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDgyOlx0ZXR5cGVfdGFnMiA9IFx1MDAyNmtleV9maWVsZHNbTlBDX0VUWVBFX1RBRzJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4MzpcdHZsYW5fdGFnMSA9IFx1MDAyNmtleV9maWVsZHNbTlBDX1ZMQU5fVEFHMV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg0Olx0dmxhbl90YWcyID0gXHUwMDI2a2V5X2ZpZWxkc1tOUENfVkxBTl9UQUcyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODU6XHR2bGFuX3RhZzMgPSBcdTAwMjZrZXlfZmllbGRzW05QQ19WTEFOX1RBRzNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4NjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODc6XHQvKiBpZiBrZXkgcHJvZmlsZSBwcm9ncmFtbWVkIGRvZXMgbm90IGV4dHJhY3QgRXRoZXJ0eXBlIGF0IGFsbCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4ODpcdGlmICghZXR5cGVfZXRoZXItXHUwMDNlbnJfa3dzIFx1MDAyNlx1MDAyNiAhZXR5cGVfdGFnMS1cdTAwM2Vucl9rd3MgXHUwMDI2XHUwMDI2ICFldHlwZV90YWcyLVx1MDAzZW5yX2t3cykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4OTpcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcJiMzNDtta2V4OiBFdGhlcnR5cGUgaXMgbm90IGV4dHJhY3RlZC5cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ5MDpcdFx0Z290byB2bGFuX3RjaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTE6XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDkyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ5MzpcdC8qIGlmIGtleSBwcm9maWxlIHByb2dyYW1tZWQgZXh0cmFjdHMgRXRoZXJ0eXBlIGZyb20gb25lIGxheWVyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk0Olx0aWYgKGV0eXBlX2V0aGVyLVx1MDAzZW5yX2t3cyBcdTAwMjZcdTAwMjYgIWV0eXBlX3RhZzEtXHUwMDNlbnJfa3dzIFx1MDAyNlx1MDAyNiAhZXR5cGVfdGFnMi1cdTAwM2Vucl9rd3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk1Olx0XHRrZXlfZmllbGRzW05QQ19FVFlQRV0gPSAqZXR5cGVfZXRoZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk2Olx0aWYgKCFldHlwZV9ldGhlci1cdTAwM2Vucl9rd3MgXHUwMDI2XHUwMDI2IGV0eXBlX3RhZzEtXHUwMDNlbnJfa3dzIFx1MDAyNlx1MDAyNiAhZXR5cGVfdGFnMi1cdTAwM2Vucl9rd3MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk3Olx0XHRrZXlfZmllbGRzW05QQ19FVFlQRV0gPSAqZXR5cGVfdGFnMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTg6XHRpZiAoIWV0eXBlX2V0aGVyLVx1MDAzZW5yX2t3cyBcdTAwMjZcdTAwMjYgIWV0eXBlX3RhZzEtXHUwMDNlbnJfa3dzIFx1MDAyNlx1MDAyNiBldHlwZV90YWcyLVx1MDAzZW5yX2t3cylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTk6XHRcdGtleV9maWVsZHNbTlBDX0VUWVBFXSA9ICpldHlwZV90YWcyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUwMDpcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTAxNQoJCQkJCQkJb3V0cHV0OiA1NgoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgc28gSSYjMzk7dmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIGEgc2ltcGxlIGFkZGl0aW9uLCByZWFsbHkuIFRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIGBkZXZfd2FybigpYCBjYWxsIHdpdGhpbiBhbiBgaWZgIHN0YXRlbWVudC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBjaGVja2luZyBmb3IgYW4gb3ZlcmxhcCByZWxhdGVkIHRvIHRoZSBgTlBDX0lQU0VDX1NQSWAgZmllbGQuIFRoZSBgbnBjX2NoZWNrX292ZXJsYXAoKWAgZnVuY3Rpb24gaXMgaW52b2tlZCwgYW5kIGlmIGl0IGRldGVjdHMgYW4gb3ZlcmxhcCwgYSB3YXJuaW5nIGlzIGxvZ2dlZC4gQ3J1Y2lhbGx5LCB0aGUgY29kZSAqZG9lc24mIzM5O3QqIGFsdGVyIHRoZSBwcm9ncmFtJiMzOTtzIGZsb3cgYmFzZWQgb24gdGhpcyBvdmVybGFwIGRldGVjdGlvbi4gSXQganVzdCBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZS4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGNoYW5nZXMgdGhhdCB3b3VsZCBmdW5kYW1lbnRhbGx5IGFsdGVyIHRoZSB3YXkgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzLiBCZWNhdXNlIG9mIHRoaXMgbGFjayBvZiBmdW5jdGlvbmFsIGNoYW5nZXMsIEkmIzM5O2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQmIzM5O3MgYSB1c2VmdWwgYWRkaXRpb24gZm9yIGRlYnVnZ2luZyBvciBlYXJseSBkZXRlY3Rpb24gb2YgY29uZmlndXJhdGlvbiBpc3N1ZXMgYnV0IGRvZXNuJiMzOTt0IHdhcnJhbnQgZnV6emluZyBhdHRlbnRpb24gYXQgdGhpcyB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRldl93YXJuIGFuZCBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbW9kaWZ5IGFueSBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRldl93YXJuIGFuZCBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbW9kaWZ5IGFueSBzdGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMjo0Mi4zNzgzMTAzMTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTczNzY2NTI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGV2X3dhcm4gYW5kIGEgY29tbWVudC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBtb2RpZnkgYW55IHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6MzI6NDIuMzc4MzE2Mjg3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI5OTAwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ZGU4Nzg4YTQxMzAyN2EyMjdhNzQyNDZiMDY5NWE4ODQ1OGQ5MjE4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDE5OjMyOjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY1xcbmluZGV4IDkxYjU5NDdkYWUwNjAwLi5iMjE3YzFjMTk4MTBhYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcXG5AQCAtNzMwLDYgKzczMCw5IEBAIHN0YXRpYyB2b2lkIG5wY19zZXRfZmVhdHVyZXMoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgdTggaW50ZilcXG4gXFx0XFx0XFx0KmZlYXR1cmVzIFxcdTAwMjY9IH5CSVRfVUxMKE5QQ19PVVRFUl9WSUQpO1xcbiBcXG4gXFx0LyogQWxsb3cgZXh0cmFjdGluZyBTUEkgZmllbGQgZnJvbSBBSCBhbmQgRVNQIGhlYWRlcnMgYXQgc2FtZSBvZmZzZXQgKi9cXG4rXFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpXFxuK1xcdFxcdGRldl93YXJuKHJ2dS1cXHUwMDNlZGV2LCBcXFwiT3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVxcXFxuXFxcIik7XFxuK1xcdC8qIFNldCBTUEkgZmxhZyBvbmx5IGlmIEFIL0VTUCBhbmQgSVBTRUNfU1BJIGFyZSBpbiB0aGUga2V5ICovXFxuIFxcdGlmIChucGNfaXNfZmllbGRfcHJlc2VudChydnUsIE5QQ19JUFNFQ19TUEksIGludGYpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAoKmZlYXR1cmVzIFxcdTAwMjYgKEJJVF9VTEwoTlBDX0lQUFJPVE9fRVNQKSB8IEJJVF9VTEwoTlBDX0lQUFJPVE9fQUgpKSkpXFxuIFxcdFxcdCpmZWF0dXJlcyB8PSBCSVRfVUxMKE5QQ19JUFNFQ19TUEkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMjo0Mi44MjIwNDgxMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyOTM5MjA2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGRldl93YXJuIGFuZCBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbW9kaWZ5IGFueSBzdGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGRlODc4OGE0MTMwMjdhMjI3YTc0MjQ2YjA2OTVhODg0NThkOTIxOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDE5OjMyOjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXG5pbmRleCA5MWI1OTQ3ZGFlMDYwMC4uYjIxN2MxYzE5ODEwYWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY1xuQEAgLTczMCw2ICs3MzAsOSBAQCBzdGF0aWMgdm9pZCBucGNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHU4IGludGYpXG4gXHRcdFx0KmZlYXR1cmVzIFx1MDAyNj0gfkJJVF9VTEwoTlBDX09VVEVSX1ZJRCk7XG4gXG4gXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xuK1x0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpXG4rXHRcdGRldl93YXJuKHJ2dS1cdTAwM2VkZXYsIFwiT3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVxcblwiKTtcbitcdC8qIFNldCBTUEkgZmxhZyBvbmx5IGlmIEFIL0VTUCBhbmQgSVBTRUNfU1BJIGFyZSBpbiB0aGUga2V5ICovXG4gXHRpZiAobnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCBOUENfSVBTRUNfU1BJLCBpbnRmKSBcdTAwMjZcdTAwMjZcbiBcdCAgICAoKmZlYXR1cmVzIFx1MDAyNiAoQklUX1VMTChOUENfSVBQUk9UT19FU1ApIHwgQklUX1VMTChOUENfSVBQUk9UT19BSCkpKSlcbiBcdFx0KmZlYXR1cmVzIHw9IEJJVF9VTEwoTlBDX0lQU0VDX1NQSSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMjo0Mi44MjIwNDkyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjg5NTc2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gcnZ1X25wY19mcy5jKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY2AuIEl0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEl0IGludHJvZHVjZXMgYSBgZGV2X3dhcm5gIGNhbGwgd2l0aGluIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50LiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIG5vdyBjaGVja3MgZm9yIGFuIG92ZXJsYXAgaW52b2x2aW5nIGBOUENfSVBTRUNfU1BJYCB1c2luZyB0aGUgYG5wY19jaGVja19vdmVybGFwYCBmdW5jdGlvbi4gSWYgb3ZlcmxhcCBpcyBkZXRlY3RlZCwgaXQgdHJpZ2dlcnMgYSB3YXJuaW5nIG1lc3NhZ2U6IFwiT3ZlcmxhcCBkZXRlY3RlZCB0aGUgZmllbGQgTlBDX0lQU0VDX1NQSVwiLiBUaGUgY29kZSBhbHNvIGFkZHMgYSBjb21tZW50IGV4cGxhaW5pbmcgdGhlIHB1cnBvc2Ugb2Ygc2V0dGluZyB0aGUgU1BJIGZsYWcuXG5cbkFscmlnaHQsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHNuaXBwZXQgYWdhaW4uIFllcCwgSSdtIHJlYWRpbmcgaXQgY29ycmVjdGx5LiBXZSdyZSBqdXN0IGFkZGluZyBhIHdhcm5pbmcgaWYgYG5wY19jaGVja19vdmVybGFwYCByZXR1cm5zIHRydWUsIG1lYW5pbmcgaXQncyBkZXRlY3RlZCBhbiBvdmVybGFwIGJldHdlZW4gYE5QQ19JUFNFQ19TUElgIGFuZCBhbm90aGVyIGZpZWxkLiBBbmQgdGhlbiwgcmVnYXJkbGVzcywgaXQgc2V0cyB0aGUgU1BJIGZsYWcgaWYgYE5QQ19JUFNFQ19TUElgIGlzIHByZXNlbnQgQU5EIEFIL0VTUCBhcmUgcHJlc2VudCBhcyBmZWF0dXJlcy5cblxuTXkgbWFpbiBjb25jZXJuIGhlcmUgaXMgYWx3YXlzIHNpZGUgZWZmZWN0cywgdGhvdWdoLiBTbywgaXQncyBnb29kIHByYWN0aWNlIHRvIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gYG5wY19jaGVja19vdmVybGFwYCBpcyBzYWZlIHRvIGNhbGwgYW5kIGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZSB0aGF0IGNvdWxkIGJlIHByb2JsZW1hdGljLiBJJ2xsIG5lZWQgdG8gcmV2aWV3IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbnBjX2NoZWNrX292ZXJsYXBgIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE1LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6MzI6NDguODUxMDA4NDgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzE2NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5wY19jaGVja19vdmVybGFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM9MTY3PXN0YXRpYyB2b2lkIG5wY19zZXRfbGF5ZXJfbWRhdGEoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTE4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg2OnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy0xODctXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTIxMS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjEyOnN0YXRpYyBib29sIG5wY19jaGVja19vdmVybGFwKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTIxMy1cXHRcXHRcXHQgICAgICBlbnVtIGtleV9maWVsZHMgdHlwZSwgdTggc3RhcnRfbGlkLCB1OCBpbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI1OC1cXHRcXHRcXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU5OlxcdFxcdFxcdFxcdGlmIChucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoZHVtbXksIGlucHV0LCBrd3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy0yNjAtXFx0XFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMjkwLVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTE6XFx0XFx0XFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTI5Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5QQ19LV1NfSU5fS0VZX1NaXzgpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jPTMwMD1zdGF0aWMgYm9vbCBucGNfY2hlY2tfZmllbGQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgZW51bSBrZXlfZmllbGRzIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtMzAzLVxcdGlmICghbnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCB0eXBlLCBpbnRmKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDQ6XFx0ICAgIG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgdHlwZSwgMCwgaW50ZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTMwNS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM9NDQxPXN0YXRpYyB2b2lkIG5wY19oYW5kbGVfbXVsdGlfbGF5ZXJfZmllbGRzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHU4IGludGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtNTMxLVxcdHN0YXJ0X2xpZCA9IGtleV9maWVsZHNbTlBDX0VUWVBFXS5sYXllcl9tZGF0YS5saWQgKyAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1MzI6XFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0VUWVBFLCBzdGFydF9saWQsIGludGYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTUzMy1cXHRcXHRkZXZfZXJyKHJ2dS1cXHUwMDNlZGV2LCBcXFwibWtleDogRXRoZXJ0eXBlIGlzIG92ZXJ3cml0dGVuIGJ5IGhpZ2hlciBsYXllcnMuXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy01NjEtXFx0c3RhcnRfbGlkID0ga2V5X2ZpZWxkc1tOUENfT1VURVJfVklEXS5sYXllcl9tZGF0YS5saWQgKyAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NjI6XFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX09VVEVSX1ZJRCwgc3RhcnRfbGlkLCBpbnRmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy01NjMtXFx0XFx0ZGV2X2VycihydnUtXFx1MDAzZWRldiwgXFxcIm1rZXg6IE91dGVyIHZsYW4gdGNpIGlzIG92ZXJ3cml0dGVuIGJ5IGhpZ2hlciBsYXllcnMuXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz02ODM9c3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczMi1cXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3MzM6XFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczNC1cXHRcXHRkZXZfd2FybihydnUtXFx1MDAzZWRldiwgXFxcIk92ZXJsYXAgZGV0ZWN0ZWQgdGhlIGZpZWxkIE5QQ19JUFNFQ19TUElcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jPTgzNj1zdGF0aWMgaW50IG5wY19zY2FuX3ZlcmlmeV9rZXgoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYy04NTMtXFx0LyogY2hlY2sgdGhhdCBub25lIG9mIHRoZSBmaWVsZHMgb3ZlcndyaXRlIGNoYW5uZWwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODU0OlxcdGlmIChucGNfY2hlY2tfb3ZlcmxhcChydnUsIGJsa2FkZHIsIE5QQ19DSEFOLCAwLCBOSVhfSU5URl9SWCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmMtODU1LVxcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJDaGFubmVsIGNhbm5vdCBiZSBvdmVyd3JpdHRlblxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMyOjQ4LjkxMTMzMTI0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDE2MzQzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYG5wY19jaGVja19vdmVybGFwYCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBucGNfY2hlY2tfb3ZlcmxhcGAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBleGFjdGx5IGhvdyB0aGlzIHJvdXRpbmUgaGFuZGxlcyBjb2xsaXNpb24gZGV0ZWN0aW9uIGZvciBub24tcGxheWVyIGNoYXJhY3RlcnMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyB0aGUgbnVhbmNlcyBvZiBpdHMgYm91bmRpbmcgYm94IGhhbmRsaW5nIGFuZCBhbnkgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMgZW1wbG95ZWQuIFRoaW5raW5nIGJhY2ssIEkgc2VlbSB0byByZW1lbWJlciB3ZSBoYWQgc29tZSBpc3N1ZXMgd2l0aCBjZXJ0YWluIGVkZ2UgY2FzZXMgd2l0aCB2ZXJ5IGxhcmdlIG9yIG9kZGx5LXNoYXBlZCBOUENzLCBzbyBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byB0aGF0LiBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSB0aGUgY29kZSBsb2dpYyBjYXJlZnVsbHksIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB3aGVyZSBmdXJ0aGVyIHJlZmluZW1lbnQgbWlnaHQgeWllbGQgcGVyZm9ybWFuY2UgZ2FpbnMuIFNwZWNpZmljIHF1ZXN0aW9ucyBJIGhhdmUgYXJlIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIHRoZSBmdW5jdGlvbiwgdXNlIG9mIHNwYXRpYWwgaW5kZXhpbmcgKGlmIGFueSksIGFuZCBob3cgaXQgZGVhbHMgd2l0aCBkeW5hbWljIG9iamVjdHMgdmVyc3VzIHN0YXRpYyB3b3JsZCBnZW9tZXRyeS4gSSdsbCBiZSBsb29raW5nIGZvciBjbGV2ZXIgdHJpY2tzLCBhbnkgdXNlIG9mIFNJTUQgaW5zdHJ1Y3Rpb25zLCBhbmQgd2hldGhlciBpdCdzIHVzaW5nIGEgYnJvYWQtcGhhc2UvbmFycm93LXBoYXNlIGNvbGxpc2lvbiBkZXRlY3Rpb24gYXBwcm9hY2guIExldCdzIHNlZSBpZiB0aGUgY29kZSBjb21tZW50cyBhcmUgaGVscGZ1bCDigJMgZ29vZCBjb21tZW50cyBhcmUgd29ydGggdGhlaXIgd2VpZ2h0IGluIGdvbGQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MzMsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMjo1My45MTI5Njg0NjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIxMDpcXHQgKiBuZWVkcyB0byBiZSBjaGVja2VkLlxcbiAyMTE6XFx0ICovXFxuIDIxMjpcXHRzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcChzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLFxcbiAyMTM6XFx0XFx0XFx0XFx0ICAgICAgZW51bSBrZXlfZmllbGRzIHR5cGUsIHU4IHN0YXJ0X2xpZCwgdTggaW50ZilcXG4gMjE0OlxcdHtcXG4gMjE1OlxcdFxcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFxcdTAwMjZydnUtXFx1MDAzZWh3LVxcdTAwM2VtY2FtO1xcbiAyMTY6XFx0XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmR1bW15LCAqaW5wdXQ7XFxuIDIxNzpcXHRcXHRpbnQgc3RhcnRfa3dpLCBvZmZzZXQ7XFxuIDIxODpcXHRcXHR1OCBucl9iaXRzLCBsaWQsIGx0LCBsZDtcXG4gMjE5OlxcdFxcdGludCBleHRyLCBrd3M7XFxuIDIyMDpcXHRcXHR1NjQgY2ZnO1xcbiAyMjE6XFx0XFxuIDIyMjpcXHRcXHRkdW1teSA9IFxcdTAwMjZtY2FtLVxcdTAwM2VyeF9rZXlfZmllbGRzW05QQ19VTktOT1dOXTtcXG4gMjIzOlxcdFxcdGlucHV0ID0gXFx1MDAyNm1jYW0tXFx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XFxuIDIyNDpcXHRcXG4gMjI1OlxcdFxcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xcbiAyMjY6XFx0XFx0XFx0ZHVtbXkgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1tOUENfVU5LTk9XTl07XFxuIDIyNzpcXHRcXHRcXHRpbnB1dCA9IFxcdTAwMjZtY2FtLVxcdTAwM2V0eF9rZXlfZmllbGRzW3R5cGVdO1xcbiAyMjg6XFx0XFx0fVxcbiAyMjk6XFx0XFxuIDIzMDpcXHRcXHRrd3MgPSBOUENfS1dTX0lOX0tFWV9TWl83O1xcbiAyMzE6XFx0XFxuIDIzMjpcXHRcXHRpZiAoaXNfY24yMGsocnZ1LVxcdTAwM2VwZGV2KSlcXG4gMjMzOlxcdFxcdFxcdGdvdG8gc2tpcF9jbjEwa19jb25maWc7XFxuIDIzNDpcXHRcXG4gMjM1OlxcdFxcdGZvciAobGlkID0gc3RhcnRfbGlkOyBsaWQgXFx1MDAzYyBOUENfTUFYX0xJRDsgbGlkKyspIHtcXG4gMjM2OlxcdFxcdFxcdGZvciAobHQgPSAwOyBsdCBcXHUwMDNjIE5QQ19NQVhfTFQ7IGx0KyspIHtcXG4gMjM3OlxcdFxcdFxcdFxcdGZvciAobGQgPSAwOyBsZCBcXHUwMDNjIE5QQ19NQVhfTEQ7IGxkKyspIHtcXG4gMjM4OlxcdFxcdFxcdFxcdFxcdGNmZyA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbiAyMzk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IE5QQ19BRl9JTlRGWF9MSURYX0xUWF9MRFhfQ0ZHXFxuIDI0MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgKGludGYsIGxpZCwgbHQsIGxkKSk7XFxuIDI0MTpcXHRcXHRcXHRcXHRcXHRpZiAoIUZJRUxEX0dFVChOUENfTERBVEFfRU4sIGNmZykpXFxuIDI0MjpcXHRcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMjQzOlxcdFxcdFxcdFxcdFxcdG1lbXNldChkdW1teSwgMCwgc2l6ZW9mKHN0cnVjdCBucGNfa2V5X2ZpZWxkKSk7XFxuIDI0NDpcXHRcXHRcXHRcXHRcXHRucGNfc2V0X2xheWVyX21kYXRhKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sXFxuIDI0NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgY2ZnLCBsaWQsIGx0LCBpbnRmKTtcXG4gMjQ2OlxcdFxcdFxcdFxcdFxcdC8qIGV4Y2x1ZGUgaW5wdXQgKi9cXG4gMjQ3OlxcdFxcdFxcdFxcdFxcdGlmIChucGNfaXNfc2FtZShpbnB1dCwgZHVtbXkpKVxcbiAyNDg6XFx0XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDI0OTpcXHRcXHRcXHRcXHRcXHRzdGFydF9rd2kgPSBkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEua2V5IC8gODtcXG4gMjUwOlxcdFxcdFxcdFxcdFxcdG9mZnNldCA9IChkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEua2V5ICogOCkgJSA2NDtcXG4gMjUxOlxcdFxcdFxcdFxcdFxcdG5yX2JpdHMgPSBkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEubGVuICogODtcXG4gMjUyOlxcdFxcdFxcdFxcdFxcdC8qIGZvcm0gS1cgbWFza3MgKi9cXG4gMjUzOlxcdFxcdFxcdFxcdFxcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCBOUENfVU5LTk9XTixcXG4gMjU0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBucl9iaXRzLCBzdGFydF9rd2ksXFxuIDI1NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgb2Zmc2V0LCBpbnRmKTtcXG4gMjU2OlxcdFxcdFxcdFxcdFxcdC8qIGNoZWNrIGFueSBpbnB1dCBmaWVsZCBiaXRzIGZhbGxzIGluIGFueVxcbiAyNTc6XFx0XFx0XFx0XFx0XFx0ICogb3RoZXIgZmllbGQgYml0cy5cXG4gMjU4OlxcdFxcdFxcdFxcdFxcdCAqL1xcbiAyNTk6XFx0XFx0XFx0XFx0XFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsIGt3cykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMyOjUzLjkxMzExNTM2M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTAwNjcwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgTmV0d29yayBQcm9jZXNzb3IgQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kLCBpbml0aWFsbHksIEkgc2VlIHRoYXQgYG5wY19jaGVja19vdmVybGFwYCBhcHBlYXJzIHRvIGJlIGEgcHVyZSByZWFkIG9wZXJhdGlvbi4gSXQgbG9va3MgYXQgc29tZSByZWdpc3RlcnMsIGNoZWNrcyBmb3IgYW4gb3ZlcmxhcCwgYW5kIHNwaXRzIGJhY2sgYSBib29sZWFuLiBUaGUgcGF0Y2ggaXRzZWxmIGp1c3QgKmFkZHMqIGEgd2FybmluZyBiYXNlZCBvbiB0aGUgcmV0dXJuIG9mIHRoaXMgZnVuY3Rpb246IGBkZXZfd2FybmAuIE5vIGNoYW5nZXMgdG8gdGhlIHByb2dyYW0gZmxvdywgbm8gc3RhdGUgbW9kaWZpY2F0aW9ucyBkaXJlY3RseS4gRXNzZW50aWFsbHksIGl0J3MganVzdCBhbiBleHRyYSBkZWJ1Z2dpbmcgdG9vbCwgYWxlcnRpbmcgdXMgdG8gYSBwb3RlbnRpYWwgb3ZlcmxhcCBpbiB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgbmV0d29yayBwcm9jZXNzb3IuXG5cbkhvd2V2ZXIuLi4gSSBuZWVkIHRvIGJlICpzdXJlKi4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSBub3QgdG8gdHJ1c3QgYW55dGhpbmcgaW1wbGljaXRseSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1sZXZlbCBpbnRlcmFjdGlvbnMuIEknbSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCBgbnBjX3NldF9sYXllcl9tZGF0YWAgYW5kIGBucGNfc2V0X2t3X21hc2tzYC4gVGhleSBzZWVtIHJlbGV2YW50IGdpdmVuIHRoZSBjb250ZXh0IG9mIHNldHRpbmcgdXAgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIEl04oCZcyBwb3NzaWJsZSB0aG9zZSBmdW5jdGlvbnMsIHdoaWNoICpkbyogd3JpdGUsIG1pZ2h0IGNhbGwgYG5wY19jaGVja19vdmVybGFwYCBpbnRlcm5hbGx5LCBjcmVhdGluZyBhIGhpZGRlbiBzaWRlIGVmZmVjdCBvciBkZXBlbmRlbmNlLiBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGNvZGUgKmFzIHByZXNlbnRlZCogaGFzIG5vIHNpZGUgZWZmZWN0cywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0cnVlIGluIHRoZSBlbnRpcmUgcHJvZ3JhbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYzMiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMyOjU5LjE2MzE4NDU4M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTY3LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY3OlxcdHN0YXRpYyB2b2lkIG5wY19zZXRfbGF5ZXJfbWRhdGEoc3RydWN0IHJ2dSAqcnZ1LFxcbiAxNjg6XFx0XFx0XFx0XFx0XFx0c3RydWN0IG5wY19tY2FtICptY2FtLCBlbnVtIGtleV9maWVsZHMgdHlwZSxcXG4gMTY5OlxcdFxcdFxcdFxcdFxcdHU2NCBjZmcsIHU4IGxpZCwgdTggbHQsIHU4IGludGYpXFxuIDE3MDpcXHR7XFxuIDE3MTpcXHRcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQgPSBcXHUwMDI2bWNhbS1cXHUwMDNlcnhfa2V5X2ZpZWxkc1t0eXBlXTtcXG4gMTcyOlxcdFxcbiAxNzM6XFx0XFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxcbiAxNzQ6XFx0XFx0XFx0aW5wdXQgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcXG4gMTc1OlxcdFxcbiAxNzY6XFx0XFx0aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLmhkciA9IEZJRUxEX0dFVChOUENfSERSX09GRlNFVCwgY2ZnKTtcXG4gMTc3OlxcdFxcdGlucHV0LVxcdTAwM2VsYXllcl9tZGF0YS5rZXkgPSBGSUVMRF9HRVQoTlBDX0tFWV9PRkZTRVQsIGNmZyk7XFxuIDE3ODpcXHRcXHRpZiAoaXNfY24yMGsocnZ1LVxcdTAwM2VwZGV2KSlcXG4gMTc5OlxcdFxcdFxcdGlucHV0LVxcdTAwM2VsYXllcl9tZGF0YS5sZW4gPSBGSUVMRF9HRVQoTlBDX0NOMjBLX0JZVEVTTSwgY2ZnKSArIDE7XFxuIDE4MDpcXHRcXHRlbHNlXFxuIDE4MTpcXHRcXHRcXHRpbnB1dC1cXHUwMDNlbGF5ZXJfbWRhdGEubGVuID0gRklFTERfR0VUKE5QQ19CWVRFU00sIGNmZykgKyAxO1xcbiAxODI6XFx0XFx0aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLmx0eXBlID0gbHQ7XFxuIDE4MzpcXHRcXHRpbnB1dC1cXHUwMDNlbGF5ZXJfbWRhdGEubGlkID0gbGlkO1xcbiAxODQ6XFx0fVxcbiAxODU6XFx0XFxuIDE4NjpcXHRzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MSxcXG4gMTg3OlxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MixcXG4gMTg4OlxcdFxcdFxcdFxcdFxcdCAgICAgaW50IG1heF9rdylcXG4gMTg5OlxcdHtcXG4gMTkwOlxcdFxcdGludCBrd2k7XFxuIDE5MTpcXHRcXG4gMTkyOlxcdFxcdC8qIEZpZWxkcyB3aXRoIHNhbWUgbGF5ZXIgaWQgYW5kIGRpZmZlcmVudCBsdHlwZXMgYXJlIG11dHVhbGx5XFxuIDE5MzpcXHRcXHQgKiBleGNsdXNpdmUgaGVuY2UgdGhleSBjYW4gYmUgb3ZlcmxhcHBlZFxcbiAxOTQ6XFx0XFx0ICovXFxuIDE5NTpcXHRcXHRpZiAoaW5wdXQxLVxcdTAwM2VsYXllcl9tZGF0YS5saWQgPT0gaW5wdXQyLVxcdTAwM2VsYXllcl9tZGF0YS5saWQgXFx1MDAyNlxcdTAwMjZcXG4gMTk2OlxcdFxcdCAgICBpbnB1dDEtXFx1MDAzZWxheWVyX21kYXRhLmx0eXBlICE9IGlucHV0Mi1cXHUwMDNlbGF5ZXJfbWRhdGEubHR5cGUpXFxuIDE5NzpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDE5ODpcXHRcXG4gMTk5OlxcdFxcdGZvciAoa3dpID0gMDsga3dpIFxcdTAwM2MgbWF4X2t3OyBrd2krKykge1xcbiAyMDA6XFx0XFx0XFx0aWYgKGlucHV0MS1cXHUwMDNla3dfbWFza1trd2ldIFxcdTAwMjYgaW5wdXQyLVxcdTAwM2Vrd19tYXNrW2t3aV0pXFxuIDIwMTpcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gMjAyOlxcdFxcdH1cXG4gMjAzOlxcdFxcbiAyMDQ6XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAyMDU6XFx0fVxcbiAyMDY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMyOjU5LjE2MzMyODAzM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyODgxODcyNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBgbnBjX3NldF9sYXllcl9tZGF0YWAgaXMgbW9kaWZ5aW5nIGBpbnB1dGAsIGFuZCB0aGF0IGBpbnB1dGAgaXMgYWN0dWFsbHkgYSBwb2ludGVyIHRvIGBtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV1gLiBUaGVuIEkgc2VlIGluIGBucGNfY2hlY2tfb3ZlcmxhcGAsIHRoYXQgYHR5cGVgIGlzIHNldCB0byBgTlBDX1VOS05PV05gIGZvciB0aGUgYGR1bW15YCB2YXJpYWJsZS4gQWgsIHJpZ2h0LCBgTlBDX1VOS05PV05gIGlzIHRoYXQgdGVtcG9yYXJ5IGNhbGN1bGF0aW9uIGZpZWxkLCBpdCdzIGp1c3QgYSBzY3JhdGNocGFkLlxuXG5TbywgaW4gZWZmZWN0LCB0aGlzIG1lYW5zIGBucGNfY2hlY2tfb3ZlcmxhcGAgaXMgbW9kaWZ5aW5nIGBtY2FtLVx1MDAzZXJ4X2tleV9maWVsZHNbTlBDX1VOS05PV05dYC4gSXQncyBub3QgbW9kaWZ5aW5nIGFueSBjcml0aWNhbCBkYXRhIHN0cnVjdHVyZXMgb3IgZGlyZWN0bHkgaW5mbHVlbmNpbmcgdGhlIGRyaXZlcidzIGV4ZWN1dGlvbiBwYXRoIG9yIHRoZSBoYXJkd2FyZSBzdGF0ZS4gVGhpcyBgZHVtbXlgIGZpZWxkIGlzIGp1c3QgZm9yIHRlbXBvcmFyeSBjYWxjdWxhdGlvbnMgZHVyaW5nIG92ZXJsYXAgY2hlY2tpbmcsIGFuZCB0aGUgY29kZSBvbmx5IHVzZXMgaXQgaW50ZXJuYWxseS5cblxuR290IGl0ISBUaGUgcGF0Y2gncyBpbXBhY3QgaXMgbWluaW1hbCwgaXQncyByZWFsbHkganVzdCBhZGRpbmcgYSBgZGV2X3dhcm5gLiBHb29kLCBJJ2xsIGNvbmZpcm0gdGhhdCB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgYmV5b25kIHRoYXQgd2FybmluZy4gTm8gd29ycmllcyBoZXJlLCB0aGlzIGxvb2tzIGZpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTAsIk91dHB1dFRva2VucyI6NzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMzowNC40NTE1MTcwOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDE4ODA5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJucGNfY2hlY2tfb3ZlcmxhcFxcXFwocnZ1LCBibGthZGRyLCBOUENfSVBTRUNfU1BJLCAwLCBpbnRmXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYz02ODM9c3RhdGljIHZvaWQgbnBjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczMi1cXHQvKiBBbGxvdyBleHRyYWN0aW5nIFNQSSBmaWVsZCBmcm9tIEFIIGFuZCBFU1AgaGVhZGVycyBhdCBzYW1lIG9mZnNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3MzM6XFx0aWYgKG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgTlBDX0lQU0VDX1NQSSwgMCwgaW50ZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jLTczNC1cXHRcXHRkZXZfd2FybihydnUtXFx1MDAzZWRldiwgXFxcIk92ZXJsYXAgZGV0ZWN0ZWQgdGhlIGZpZWxkIE5QQ19JUFNFQ19TUElcXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTozMzowNS43MjU3MTg1MzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NjA0MjM5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqUGF0Y2ggQXNzZXNzbWVudCBhbmQgRnV6emluZyBEZWNpc2lvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBwYXRjaCBpbiBxdWVzdGlvbiAqb25seSogaW50cm9kdWNlcyBhIHdhcm5pbmcuIEl0J3MgZXNzZW50aWFsbHkgYSBoZWFkcy11cCwgYSBwb3RlbnRpYWwgaGVhZHMtdXAgYXQgcnVudGltZS4gQ3J1Y2lhbGx5LCBpdCBkb2Vzbid0IGFjdHVhbGx5ICpjaGFuZ2UqIGhvdyB0aGUgY29kZSBleGVjdXRlcy4gTm8gYnJhbmNoIGluc3RydWN0aW9ucywgbm8gZGF0YSBtYW5pcHVsYXRpb24sIG5vdGhpbmcgdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgcHJvZ3JhbSdzIGJlaGF2aW9yLiBHaXZlbiB0aGF0LCB0aGUgaW1tZWRpYXRlIGFzc2Vzc21lbnQgaXMgV29ydGhGdXp6aW5nID0gZmFsc2UuIEl0J3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQgb2YgYXR0ZW1wdGluZyB0byBmdXp6LCBhcyBhIHdhcm5pbmcgaXMgdW5saWtlbHkgdG8gZ2VuZXJhdGUgdGhlIHR5cGUgb2Ygc3RhdGUgY2hhbmdlcyBvciBleHBsb2l0YWJsZSBjb25kaXRpb25zIHRoYXQgZnV6emluZyBpcyBkZXNpZ25lZCB0byB1bmNvdmVyLlxuXG5Ib3dldmVyLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBzaWRlIGVmZmVjdHMgb3IgbWlub3IgY2hhbmdlcyB0aGF0IGFyZSBub3QgaW1tZWRpYXRlbHkgb2J2aW91cy4gSSdsbCBuZWVkIHRvIGdvIGJhY2sgb3ZlciB0aGUgcGF0Y2ggd2l0aCBhIGZpbmUtdG9vdGhlZCBjb21iIHRvIGVuc3VyZSB0aGF0IG5vdGhpbmcgZWxzZSB3YXMgYWx0ZXJlZCBvciBpbmNsdWRlZCBieSBhY2NpZGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU5MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMzOjA5LjQ3MTc2Mjg3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM0Nzc5OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI1OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE6Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjovKiBNYXJ2ZWxsIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzogKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OiAqIENvcHlyaWdodCAoQykgMjAyMCBNYXJ2ZWxsLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1OiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5OiNpbmNsdWRlIFxcXCJydnVfc3RydWN0LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwOiNpbmNsdWRlIFxcXCJydnVfcmVnLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExOiNpbmNsdWRlIFxcXCJydnUuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTI6I2luY2x1ZGUgXFxcIm5wYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzojaW5jbHVkZSBcXFwicnZ1X25wY19mcy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDojaW5jbHVkZSBcXFwicnZ1X25wY19oYXNoLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1OiNpbmNsdWRlIFxcXCJjbjIway9yZWcuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTY6I2luY2x1ZGUgXFxcImNuMjBrL25wYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg6c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBucGNfZmxvd19uYW1lc1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTpcXHRbTlBDX0RNQUNdXFx0PSBcXFwiZG1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwOlxcdFtOUENfU01BQ11cXHQ9IFxcXCJzbWFjXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE6XFx0W05QQ19FVFlQRV1cXHQ9IFxcXCJldGhlciB0eXBlXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI6XFx0W05QQ19WTEFOX0VUWVBFX0NUQUddID0gXFxcInZsYW4gZXRoZXIgdHlwZSBjdGFnXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM6XFx0W05QQ19WTEFOX0VUWVBFX1NUQUddID0gXFxcInZsYW4gZXRoZXIgdHlwZSBzdGFnXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQ6XFx0W05QQ19PVVRFUl9WSURdXFx0PSBcXFwib3V0ZXIgdmxhbiBpZFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI1OlxcdFtOUENfSU5ORVJfVklEXVxcdD0gXFxcImlubmVyIHZsYW4gaWRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjpcXHRbTlBDX1RPU11cXHQ9IFxcXCJ0b3NcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzpcXHRbTlBDX0lQRlJBR19JUFY0XSA9IFxcXCJmcmFnbWVudGVkIElQdjQgaGVhZGVyIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4OlxcdFtOUENfU0lQX0lQVjRdXFx0PSBcXFwiaXB2NCBzb3VyY2UgaXBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTpcXHRbTlBDX0RJUF9JUFY0XVxcdD0gXFxcImlwdjQgZGVzdGluYXRpb24gaXBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDpcXHRbTlBDX0lQRlJBR19JUFY2XSA9IFxcXCJmcmFnbWVudGVkIElQdjYgaGVhZGVyIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxOlxcdFtOUENfU0lQX0lQVjZdXFx0PSBcXFwiaXB2NiBzb3VyY2UgaXBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjpcXHRbTlBDX0RJUF9JUFY2XVxcdD0gXFxcImlwdjYgZGVzdGluYXRpb24gaXBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzpcXHRbTlBDX0lQUFJPVE9fVENQXSA9IFxcXCJpcCBwcm90byB0Y3BcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDpcXHRbTlBDX0lQUFJPVE9fVURQXSA9IFxcXCJpcCBwcm90byB1ZHBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTpcXHRbTlBDX0lQUFJPVE9fU0NUUF0gPSBcXFwiaXAgcHJvdG8gc2N0cFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2OlxcdFtOUENfSVBQUk9UT19JQ01QXSA9IFxcXCJpcCBwcm90byBpY21wXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc6XFx0W05QQ19JUFBST1RPX0lDTVA2XSA9IFxcXCJpcCBwcm90byBpY21wNlxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4OlxcdFtOUENfSVBQUk9UT19BSF0gPSBcXFwiaXAgcHJvdG8gQUhcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTpcXHRbTlBDX0lQUFJPVE9fRVNQXSA9IFxcXCJpcCBwcm90byBFU1BcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDpcXHRbTlBDX1NQT1JUX1RDUF1cXHQ9IFxcXCJ0Y3Agc291cmNlIHBvcnRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTpcXHRbTlBDX0RQT1JUX1RDUF1cXHQ9IFxcXCJ0Y3AgZGVzdGluYXRpb24gcG9ydFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyOlxcdFtOUENfU1BPUlRfVURQXVxcdD0gXFxcInVkcCBzb3VyY2UgcG9ydFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzOlxcdFtOUENfRFBPUlRfVURQXVxcdD0gXFxcInVkcCBkZXN0aW5hdGlvbiBwb3J0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ6XFx0W05QQ19TUE9SVF9TQ1RQXSA9IFxcXCJzY3RwIHNvdXJjZSBwb3J0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU6XFx0W05QQ19EUE9SVF9TQ1RQXSA9IFxcXCJzY3RwIGRlc3RpbmF0aW9uIHBvcnRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjpcXHRbTlBDX0xYTUJdXFx0PSBcXFwiTWNhc3QvQmNhc3QgaGVhZGVyIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3OlxcdFtOUENfSVBTRUNfU1BJXSA9IFxcXCJTUEkgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg6XFx0W05QQ19NUExTMV9MQlRDQk9TXSA9IFxcXCJsc2UgZGVwdGggMSBsYWJlbCB0YyBib3NcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTpcXHRbTlBDX01QTFMxX1RUTF0gICAgID0gXFxcImxzZSBkZXB0aCAxIHR0bFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUwOlxcdFtOUENfTVBMUzJfTEJUQ0JPU10gPSBcXFwibHNlIGRlcHRoIDIgbGFiZWwgdGMgYm9zXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTE6XFx0W05QQ19NUExTMl9UVExdICAgICA9IFxcXCJsc2UgZGVwdGggMiB0dGxcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1MjpcXHRbTlBDX01QTFMzX0xCVENCT1NdID0gXFxcImxzZSBkZXB0aCAzIGxhYmVsIHRjIGJvc1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUzOlxcdFtOUENfTVBMUzNfVFRMXSAgICAgPSBcXFwibHNlIGRlcHRoIDMgdHRsXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTQ6XFx0W05QQ19NUExTNF9MQlRDQk9TXSA9IFxcXCJsc2UgZGVwdGggNCBsYWJlbCB0YyBib3NcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1NTpcXHRbTlBDX01QTFM0X1RUTF0gICAgID0gXFxcImxzZSBkZXB0aCA0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTY6XFx0W05QQ19UWVBFX0lDTVBdID0gXFxcImljbXAgdHlwZVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjU3OlxcdFtOUENfQ09ERV9JQ01QXSA9IFxcXCJpY21wIGNvZGVcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo1ODpcXHRbTlBDX1RDUF9GTEFHU10gPSBcXFwidGNwIGZsYWdzXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NTk6XFx0W05QQ19VTktOT1dOXVxcdD0gXFxcInVua25vd25cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2MDp9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2MTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NjI6Ym9vbCBucGNfaXNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1NjQgZmVhdHVyZXMsIHU4IGludGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjYzOntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NjQ6XFx0c3RydWN0IG5wY19tY2FtICptY2FtID0gXFx1MDAyNnJ2dS1cXHUwMDNlaHctXFx1MDAzZW1jYW07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjY1OlxcdHU2NCBtY2FtX2ZlYXR1cmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2NjpcXHR1NjQgdW5zdXBwb3J0ZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjY3OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2ODpcXHRtY2FtX2ZlYXR1cmVzID0gaXNfbnBjX2ludGZfdHgoaW50ZikgPyBtY2FtLVxcdTAwM2V0eF9mZWF0dXJlcyA6IG1jYW0tXFx1MDAzZXJ4X2ZlYXR1cmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo2OTpcXHR1bnN1cHBvcnRlZCA9IChtY2FtX2ZlYXR1cmVzIF4gZmVhdHVyZXMpIFxcdTAwMjYgfm1jYW1fZmVhdHVyZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo3MTpcXHQvKiBSZXR1cm4gZmFsc2UgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBpbnB1dCBmbG93cyBpcyBub3QgZXh0cmFjdGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjcyOlxcdHJldHVybiAhdW5zdXBwb3J0ZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjczOn1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NzQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjc1OmNvbnN0IGNoYXIgKm5wY19nZXRfZmllbGRfbmFtZSh1OCBoZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjc2OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzc6XFx0aWYgKGhkciBcXHUwMDNlPSBBUlJBWV9TSVpFKG5wY19mbG93X25hbWVzKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzg6XFx0XFx0cmV0dXJuIG5wY19mbG93X25hbWVzW05QQ19VTktOT1dOXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Nzk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjgwOlxcdHJldHVybiBucGNfZmxvd19uYW1lc1toZHJdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4MTp9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjgyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4MzovKiBDb21wdXRlIGtleXdvcmQgbWFza3MgYW5kIGZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZiBrZXl3b3JkcyBhIGZpZWxkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg0OiAqIHNwYW5zIGluIHRoZSBrZXkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg1OiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4NjpzdGF0aWMgdm9pZCBucGNfc2V0X2t3X21hc2tzKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLCB1OCB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo4NzpcXHRcXHRcXHQgICAgIHU4IG5yX2JpdHMsIGludCBzdGFydF9rd2ksIGludCBvZmZzZXQsIHU4IGludGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjg4OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6ODk6XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmZpZWxkID0gXFx1MDAyNm1jYW0tXFx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkwOlxcdHU4IGJpdHNfaW5fa3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjkxOlxcdGludCBtYXhfa3dpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5MjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTM6XFx0aWYgKGlzX2NuMjBrKHJ2dS1cXHUwMDNlcGRldikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTQ6XFx0XFx0aWYgKG1jYW0tXFx1MDAzZWJhbmtzX3Blcl9lbnRyeSA9PSAxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5NTpcXHRcXHRcXHRtYXhfa3dpID0gMzsgLyogTlBDX01DQU1fS0VZX1gyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjk2OlxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6OTc6XFx0XFx0XFx0bWF4X2t3aSA9IDc7IC8qIE5QQ19NQ0FNX0tFWV9YNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5ODpcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo5OTpcXHRcXHRpZiAobWNhbS1cXHUwMDNlYmFua3NfcGVyX2VudHJ5ID09IDEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwMDpcXHRcXHRcXHRtYXhfa3dpID0gMTsgLyogTlBDX01DQU1fS0VZX1gxICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEwMTpcXHRcXHRlbHNlIGlmIChtY2FtLVxcdTAwM2ViYW5rc19wZXJfZW50cnkgPT0gMilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTAyOlxcdFxcdFxcdG1heF9rd2kgPSAzOyAvKiBOUENfTUNBTV9LRVlfWDIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTAzOlxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA0OlxcdFxcdFxcdG1heF9rd2kgPSA2OyAvKiBOUENfTUNBTV9LRVlfWDQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA1OlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDc6XFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMDg6XFx0XFx0ZmllbGQgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTA5OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMTA6XFx0aWYgKG9mZnNldCArIG5yX2JpdHMgXFx1MDAzYz0gNjQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTExOlxcdFxcdC8qIG9uZSBLVyBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExMjpcXHRcXHRpZiAoc3RhcnRfa3dpIFxcdTAwM2UgbWF4X2t3aSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTEzOlxcdFxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE0OlxcdFxcdGZpZWxkLVxcdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aV0gfD0gR0VOTUFTS19VTEwobnJfYml0cyAtIDEsIDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExNTpcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwM2NcXHUwMDNjIG9mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE2OlxcdFxcdGZpZWxkLVxcdTAwM2Vucl9rd3MgPSAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMTc6XFx0fSBlbHNlIGlmIChvZmZzZXQgKyBucl9iaXRzIFxcdTAwM2UgNjQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTE4OlxcdFxcdCAgIG9mZnNldCArIG5yX2JpdHMgXFx1MDAzYz0gMTI4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjExOTpcXHRcXHQvKiB0d28gS1dzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMDpcXHRcXHRpZiAoc3RhcnRfa3dpICsgMSBcXHUwMDNlIG1heF9rd2kpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMTpcXHRcXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMjpcXHRcXHQvKiBmaXJzdCBLVyBtYXNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyMzpcXHRcXHRiaXRzX2luX2t3ID0gNjQgLSBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNDpcXHRcXHRmaWVsZC1cXHUwMDNla3dfbWFza1tzdGFydF9rd2ldIHw9IEdFTk1BU0tfVUxMKGJpdHNfaW5fa3cgLSAxLCAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjU6XFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDNjXFx1MDAzYyBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjEyNjpcXHRcXHQvKiBzZWNvbmQgS1cgbWFzayBpLmUuIG1hc2sgZm9yIHJlc3Qgb2YgYml0cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMjc6XFx0XFx0Yml0c19pbl9rdyA9IG5yX2JpdHMgKyBvZmZzZXQgLSA2NDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTI4OlxcdFxcdGZpZWxkLVxcdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aSArIDFdIHw9IEdFTk1BU0tfVUxMKGJpdHNfaW5fa3cgLSAxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTI5OlxcdFxcdGZpZWxkLVxcdTAwM2Vucl9rd3MgPSAyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzA6XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTMxOlxcdFxcdC8qIHRocmVlIEtXcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzI6XFx0XFx0aWYgKHN0YXJ0X2t3aSArIDIgXFx1MDAzZSBtYXhfa3dpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzM6XFx0XFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzQ6XFx0XFx0LyogZmlyc3QgS1cgbWFzayAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzU6XFx0XFx0Yml0c19pbl9rdyA9IDY0IC0gb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzY6XFx0XFx0ZmllbGQtXFx1MDAzZWt3X21hc2tbc3RhcnRfa3dpXSB8PSBHRU5NQVNLX1VMTChiaXRzX2luX2t3IC0gMSwgMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTM3OlxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAzY1xcdTAwM2Mgb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxMzg6XFx0XFx0Lyogc2Vjb25kIEtXIG1hc2sgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTM5OlxcdFxcdGZpZWxkLVxcdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aSArIDFdID0gfjBVTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MDpcXHRcXHQvKiB0aGlyZCBLVyBtYXNrIGkuZS4gbWFzayBmb3IgcmVzdCBvZiBiaXRzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0MTpcXHRcXHRiaXRzX2luX2t3ID0gbnJfYml0cyArIG9mZnNldCAtIDEyODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTQyOlxcdFxcdGZpZWxkLVxcdTAwM2Vrd19tYXNrW3N0YXJ0X2t3aSArIDJdIHw9IEdFTk1BU0tfVUxMKGJpdHNfaW5fa3cgLSAxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTQzOlxcdFxcdGZpZWxkLVxcdTAwM2Vucl9rd3MgPSAzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDQ6XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDU6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDY6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0NzovKiBIZWxwZXIgZnVuY3Rpb24gdG8gZmlndXJlIG91dCB3aGV0aGVyIGZpZWxkIGV4aXN0cyBpbiB0aGUga2V5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE0ODpzdGF0aWMgYm9vbCBucGNfaXNfZmllbGRfcHJlc2VudChzdHJ1Y3QgcnZ1ICpydnUsIGVudW0ga2V5X2ZpZWxkcyB0eXBlLCB1OCBpbnRmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNDk6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTA6XFx0c3RydWN0IG5wY19tY2FtICptY2FtID0gXFx1MDAyNnJ2dS1cXHUwMDNlaHctXFx1MDAzZW1jYW07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1MTpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1MjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTUzOlxcdGlucHV0ICA9IFxcdTAwMjZtY2FtLVxcdTAwM2VyeF9rZXlfZmllbGRzW3R5cGVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTQ6XFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNTU6XFx0XFx0aW5wdXQgID0gXFx1MDAyNm1jYW0tXFx1MDAzZXR4X2tleV9maWVsZHNbdHlwZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE1NjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU3OlxcdHJldHVybiBpbnB1dC1cXHUwMDNlbnJfa3dzIFxcdTAwM2UgMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU4On1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTU5OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjA6c3RhdGljIGJvb2wgbnBjX2lzX3NhbWUoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjE6XFx0XFx0XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmZpZWxkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjI6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjM6XFx0cmV0dXJuIG1lbWNtcChcXHUwMDI2aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLCBcXHUwMDI2ZmllbGQtXFx1MDAzZWxheWVyX21kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjQ6XFx0XFx0ICAgICBzaXplb2Yoc3RydWN0IG5wY19sYXllcl9tZGF0YSkpID09IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2NTp9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE2NjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTY3OnN0YXRpYyB2b2lkIG5wY19zZXRfbGF5ZXJfbWRhdGEoc3RydWN0IHJ2dSAqcnZ1LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNjg6XFx0XFx0XFx0XFx0c3RydWN0IG5wY19tY2FtICptY2FtLCBlbnVtIGtleV9maWVsZHMgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTY5OlxcdFxcdFxcdFxcdHU2NCBjZmcsIHU4IGxpZCwgdTggbHQsIHU4IGludGYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3MDp7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3MTpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqaW5wdXQgPSBcXHUwMDI2bWNhbS1cXHUwMDNlcnhfa2V5X2ZpZWxkc1t0eXBlXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTcyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzM6XFx0aWYgKGlzX25wY19pbnRmX3R4KGludGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzQ6XFx0XFx0aW5wdXQgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1t0eXBlXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc1OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxNzY6XFx0aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLmhkciA9IEZJRUxEX0dFVChOUENfSERSX09GRlNFVCwgY2ZnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc3OlxcdGlucHV0LVxcdTAwM2VsYXllcl9tZGF0YS5rZXkgPSBGSUVMRF9HRVQoTlBDX0tFWV9PRkZTRVQsIGNmZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE3ODpcXHRpZiAoaXNfY24yMGsocnZ1LVxcdTAwM2VwZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTc5OlxcdFxcdGlucHV0LVxcdTAwM2VsYXllcl9tZGF0YS5sZW4gPSBGSUVMRF9HRVQoTlBDX0NOMjBLX0JZVEVTTSwgY2ZnKSArIDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4MDpcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4MTpcXHRcXHRpbnB1dC1cXHUwMDNlbGF5ZXJfbWRhdGEubGVuID0gRklFTERfR0VUKE5QQ19CWVRFU00sIGNmZykgKyAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODI6XFx0aW5wdXQtXFx1MDAzZWxheWVyX21kYXRhLmx0eXBlID0gbHQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4MzpcXHRpbnB1dC1cXHUwMDNlbGF5ZXJfbWRhdGEubGlkID0gbGlkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODQ6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxODU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE4NjpzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcF9maWVsZHMoc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg3OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5wY19rZXlfZmllbGQgKmlucHV0MixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg4OlxcdFxcdFxcdFxcdCAgICAgaW50IG1heF9rdylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTg5OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTkwOlxcdGludCBrd2k7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5MTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTkyOlxcdC8qIEZpZWxkcyB3aXRoIHNhbWUgbGF5ZXIgaWQgYW5kIGRpZmZlcmVudCBsdHlwZXMgYXJlIG11dHVhbGx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5MzpcXHQgKiBleGNsdXNpdmUgaGVuY2UgdGhleSBjYW4gYmUgb3ZlcmxhcHBlZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoxOTQ6XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5NTpcXHRpZiAoaW5wdXQxLVxcdTAwM2VsYXllcl9tZGF0YS5saWQgPT0gaW5wdXQyLVxcdTAwM2VsYXllcl9tZGF0YS5saWQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk2OlxcdCAgICBpbnB1dDEtXFx1MDAzZWxheWVyX21kYXRhLmx0eXBlICE9IGlucHV0Mi1cXHUwMDNlbGF5ZXJfbWRhdGEubHR5cGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5NzpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjE5ODpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MTk5OlxcdGZvciAoa3dpID0gMDsga3dpIFxcdTAwM2MgbWF4X2t3OyBrd2krKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDA6XFx0XFx0aWYgKGlucHV0MS1cXHUwMDNla3dfbWFza1trd2ldIFxcdTAwMjYgaW5wdXQyLVxcdTAwM2Vrd19tYXNrW2t3aV0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwMTpcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjAyOlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjAzOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDQ6XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDU6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMDY6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIwNzovKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciBnaXZlbiBmaWVsZCBvdmVybGFwcyB3aXRoIGFueSBvdGhlciBmaWVsZHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjA4OiAqIGluIHRoZSBrZXkuIER1ZSB0byBsaW1pdGF0aW9ucyBvbiBrZXkgc2l6ZSBhbmQgdGhlIGtleSBleHRyYWN0aW9uIHByb2ZpbGUgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjA5OiAqIHVzZSBoaWdoZXIgbGF5ZXJzIGNhbiBvdmVyd3JpdGUgbG93ZXIgbGF5ZXIncyBoZWFkZXIgZmllbGRzLiBIZW5jZSBvdmVybGFwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIxMDogKiBuZWVkcyB0byBiZSBjaGVja2VkLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTE6ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIxMjpzdGF0aWMgYm9vbCBucGNfY2hlY2tfb3ZlcmxhcChzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTM6XFx0XFx0XFx0ICAgICAgZW51bSBrZXlfZmllbGRzIHR5cGUsIHU4IHN0YXJ0X2xpZCwgdTggaW50ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE0OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE1OlxcdHN0cnVjdCBucGNfbWNhbSAqbWNhbSA9IFxcdTAwMjZydnUtXFx1MDAzZWh3LVxcdTAwM2VtY2FtO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMTY6XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmR1bW15LCAqaW5wdXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIxNzpcXHRpbnQgc3RhcnRfa3dpLCBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIxODpcXHR1OCBucl9iaXRzLCBsaWQsIGx0LCBsZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjE5OlxcdGludCBleHRyLCBrd3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyMDpcXHR1NjQgY2ZnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyMjpcXHRkdW1teSA9IFxcdTAwMjZtY2FtLVxcdTAwM2VyeF9rZXlfZmllbGRzW05QQ19VTktOT1dOXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjIzOlxcdGlucHV0ID0gXFx1MDAyNm1jYW0tXFx1MDAzZXJ4X2tleV9maWVsZHNbdHlwZV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjI1OlxcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjY6XFx0XFx0ZHVtbXkgPSBcXHUwMDI2bWNhbS1cXHUwMDNldHhfa2V5X2ZpZWxkc1tOUENfVU5LTk9XTl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIyNzpcXHRcXHRpbnB1dCA9IFxcdTAwMjZtY2FtLVxcdTAwM2V0eF9rZXlfZmllbGRzW3R5cGVdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjg6XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMjk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzMDpcXHRrd3MgPSBOUENfS1dTX0lOX0tFWV9TWl83O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzMjpcXHRpZiAoaXNfY24yMGsocnZ1LVxcdTAwM2VwZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjMzOlxcdFxcdGdvdG8gc2tpcF9jbjEwa19jb25maWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjIzNDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM1OlxcdGZvciAobGlkID0gc3RhcnRfbGlkOyBsaWQgXFx1MDAzYyBOUENfTUFYX0xJRDsgbGlkKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM2OlxcdFxcdGZvciAobHQgPSAwOyBsdCBcXHUwMDNjIE5QQ19NQVhfTFQ7IGx0KyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM3OlxcdFxcdFxcdGZvciAobGQgPSAwOyBsZCBcXHUwMDNjIE5QQ19NQVhfTEQ7IGxkKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjM4OlxcdFxcdFxcdFxcdGNmZyA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyMzk6XFx0XFx0XFx0XFx0XFx0XFx0IE5QQ19BRl9JTlRGWF9MSURYX0xUWF9MRFhfQ0ZHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MDpcXHRcXHRcXHRcXHRcXHRcXHQgKGludGYsIGxpZCwgbHQsIGxkKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MTpcXHRcXHRcXHRcXHRpZiAoIUZJRUxEX0dFVChOUENfTERBVEFfRU4sIGNmZykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0MjpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQzOlxcdFxcdFxcdFxcdG1lbXNldChkdW1teSwgMCwgc2l6ZW9mKHN0cnVjdCBucGNfa2V5X2ZpZWxkKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0NDpcXHRcXHRcXHRcXHRucGNfc2V0X2xheWVyX21kYXRhKHJ2dSwgbWNhbSwgTlBDX1VOS05PV04sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgY2ZnLCBsaWQsIGx0LCBpbnRmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQ2OlxcdFxcdFxcdFxcdC8qIGV4Y2x1ZGUgaW5wdXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjQ3OlxcdFxcdFxcdFxcdGlmIChucGNfaXNfc2FtZShpbnB1dCwgZHVtbXkpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNDg6XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI0OTpcXHRcXHRcXHRcXHRzdGFydF9rd2kgPSBkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEua2V5IC8gODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUwOlxcdFxcdFxcdFxcdG9mZnNldCA9IChkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEua2V5ICogOCkgJSA2NDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUxOlxcdFxcdFxcdFxcdG5yX2JpdHMgPSBkdW1teS1cXHUwMDNlbGF5ZXJfbWRhdGEubGVuICogODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUyOlxcdFxcdFxcdFxcdC8qIGZvcm0gS1cgbWFza3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjUzOlxcdFxcdFxcdFxcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCBOUENfVU5LTk9XTixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU0OlxcdFxcdFxcdFxcdFxcdFxcdCBucl9iaXRzLCBzdGFydF9rd2ksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI1NTpcXHRcXHRcXHRcXHRcXHRcXHQgb2Zmc2V0LCBpbnRmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU2OlxcdFxcdFxcdFxcdC8qIGNoZWNrIGFueSBpbnB1dCBmaWVsZCBiaXRzIGZhbGxzIGluIGFueVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTc6XFx0XFx0XFx0XFx0ICogb3RoZXIgZmllbGQgYml0cy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjU4OlxcdFxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNTk6XFx0XFx0XFx0XFx0aWYgKG5wY19jaGVja19vdmVybGFwX2ZpZWxkcyhkdW1teSwgaW5wdXQsIGt3cykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2MDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYxOlxcdFxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYyOlxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjYzOlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjY0OlxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjY1OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNjY6c2tpcF9jbjEwa19jb25maWc6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2NzpcXHRmb3IgKGV4dHIgPSAwIDsgZXh0ciBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZW5wY19rZXhfZXh0cjsgZXh0cisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2ODpcXHRcXHRsaWQgPSBDTjIwS19HRVRfRVhUUl9MSUQoaW50ZiwgZXh0cik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI2OTpcXHRcXHRpZiAobGlkIFxcdTAwM2Mgc3RhcnRfbGlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzA6XFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3MTpcXHRcXHRmb3IgKGx0ID0gMDsgbHQgXFx1MDAzYyBOUENfTUFYX0xUOyBsdCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3MjpcXHRcXHRcXHRjZmcgPSBDTjIwS19HRVRfRVhUUl9MVChpbnRmLCBleHRyLCBsdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3MzpcXHRcXHRcXHRpZiAoIUZJRUxEX0dFVChOUENfTERBVEFfRU4sIGNmZykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI3NDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc1OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzY6XFx0XFx0XFx0bWVtc2V0KGR1bW15LCAwLCBzaXplb2Yoc3RydWN0IG5wY19rZXlfZmllbGQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjc3OlxcdFxcdFxcdG5wY19zZXRfbGF5ZXJfbWRhdGEocnZ1LCBtY2FtLCBOUENfVU5LTk9XTiwgY2ZnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzg6XFx0XFx0XFx0XFx0XFx0ICAgIGxpZCwgbHQsIGludGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyNzk6XFx0XFx0XFx0LyogZXhjbHVkZSBpbnB1dCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODA6XFx0XFx0XFx0aWYgKG5wY19pc19zYW1lKGlucHV0LCBkdW1teSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI4MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjgyOlxcdFxcdFxcdHN0YXJ0X2t3aSA9IGR1bW15LVxcdTAwM2VsYXllcl9tZGF0YS5rZXkgLyA4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODM6XFx0XFx0XFx0b2Zmc2V0ID0gKGR1bW15LVxcdTAwM2VsYXllcl9tZGF0YS5rZXkgKiA4KSAlIDY0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODQ6XFx0XFx0XFx0bnJfYml0cyA9IGR1bW15LVxcdTAwM2VsYXllcl9tZGF0YS5sZW4gKiA4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODU6XFx0XFx0XFx0LyogZm9ybSBLVyBtYXNrcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODY6XFx0XFx0XFx0bnBjX3NldF9rd19tYXNrcyhydnUsIG1jYW0sIE5QQ19VTktOT1dOLCBucl9iaXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODc6XFx0XFx0XFx0XFx0XFx0IHN0YXJ0X2t3aSwgb2Zmc2V0LCBpbnRmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjg4OlxcdFxcdFxcdC8qIGNoZWNrIGFueSBpbnB1dCBmaWVsZCBiaXRzIGZhbGxzIGluIGFueSBvdGhlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyODk6XFx0XFx0XFx0ICogZmllbGQgYml0c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTA6XFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI5MTpcXHRcXHRcXHRpZiAobnBjX2NoZWNrX292ZXJsYXBfZmllbGRzKGR1bW15LCBpbnB1dCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MjkyOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTlBDX0tXU19JTl9LRVlfU1pfOCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjI5MzpcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk0OlxcdFxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk1OlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mjk2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTc6XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTg6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzoyOTk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwMDpzdGF0aWMgYm9vbCBucGNfY2hlY2tfZmllbGQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgZW51bSBrZXlfZmllbGRzIHR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwMTpcXHRcXHRcXHQgICAgdTggaW50ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzAyOntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzAzOlxcdGlmICghbnBjX2lzX2ZpZWxkX3ByZXNlbnQocnZ1LCB0eXBlLCBpbnRmKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDQ6XFx0ICAgIG5wY19jaGVja19vdmVybGFwKHJ2dSwgYmxrYWRkciwgdHlwZSwgMCwgaW50ZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwNTpcXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMwNjpcXHRyZXR1cm4gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzA3On1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzA4OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMDk6c3RhdGljIHZvaWQgbnBjX3NjYW5fZXhhY3RfcmVzdWx0KHN0cnVjdCBydnUgKnJ2dSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzEwOlxcdFxcdFxcdFxcdCAgc3RydWN0IG5wY19tY2FtICptY2FtLCB1OCBiaXRfbnVtYmVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTE6XFx0XFx0XFx0XFx0ICB1OCBrZXlfbmliYmxlLCB1OCBpbnRmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTI6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTM6XFx0dTggb2Zmc2V0ID0gKGtleV9uaWJibGUgKiA0KSAlIDY0OyAvKiBvZmZzZXQgd2l0aGluIGtleSB3b3JkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxNDpcXHR1OCBrd2kgPSAoa2V5X25pYmJsZSAqIDQpIC8gNjQ7IC8qIHdoaWNoIHdvcmQgaW4ga2V5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxNTpcXHR1OCBucl9iaXRzID0gNDsgLyogYml0cyBpbiBhIG5pYmJsZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTY6XFx0dTggdHlwZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzE3OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMTg6XFx0c3dpdGNoIChiaXRfbnVtYmVyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMxOTpcXHRjYXNlIDQwIC4uLiA0MzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzIwOlxcdFxcdHR5cGUgPSBOUENfRVhBQ1RfUkVTVUxUO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjE6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyMjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzIzOlxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyNDpcXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyNTpcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyNjpcXHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgdHlwZSwgbnJfYml0cywga3dpLCBvZmZzZXQsIGludGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjc6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMjg6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMyOTpzdGF0aWMgdm9pZCBucGNfY24yMGtfc2Nhbl9wYXJzZV9yZXN1bHQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzMDpcXHRcXHRcXHRcXHRcXHR1OCBiaXRfbnVtYmVyLCB1OCBrZXlfbmliYmxlLCB1OCBpbnRmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzE6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzI6XFx0dTggb2Zmc2V0ID0gKGtleV9uaWJibGUgKiA0KSAlIDY0OyAvKiBvZmZzZXQgd2l0aGluIGtleSB3b3JkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzMzpcXHR1OCBrd2kgPSAoa2V5X25pYmJsZSAqIDQpIC8gNjQ7IC8qIHdoaWNoIHdvcmQgaW4ga2V5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzNDpcXHR1OCBucl9iaXRzID0gNDsgLyogYml0cyBpbiBhIG5pYmJsZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzU6XFx0dTggdHlwZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzM2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozMzc6XFx0c3dpdGNoIChiaXRfbnVtYmVyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzODpcXHRjYXNlIDAgLi4uIDI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjMzOTpcXHRcXHR0eXBlID0gTlBDX0NIQU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0MDpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQxOlxcdGNhc2UgMzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQyOlxcdFxcdHR5cGUgPSBOUENfRVJSTEVWO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNDM6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NDpcXHRjYXNlIDQgLi4uIDU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NTpcXHRcXHR0eXBlID0gTlBDX0VSUkNPREU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM0NjpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQ3OlxcdGNhc2UgNjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQ4OlxcdFxcdHR5cGUgPSBOUENfTFhNQjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzQ5OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTA6XFx0Y2FzZSA4OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTE6XFx0XFx0dHlwZSA9IE5QQ19MQTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzUyOlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTM6XFx0Y2FzZSAxMDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU0OlxcdFxcdHR5cGUgPSBOUENfTEI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1NTpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzU2OlxcdGNhc2UgMTI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1NzpcXHRcXHR0eXBlID0gTlBDX0xDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNTg6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM1OTpcXHRjYXNlIDE0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjA6XFx0XFx0dHlwZSA9IE5QQ19MRDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzYxOlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjI6XFx0Y2FzZSAxNjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzYzOlxcdFxcdHR5cGUgPSBOUENfTEU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2NDpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzY1OlxcdGNhc2UgMTg6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2NjpcXHRcXHR0eXBlID0gTlBDX0xGO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjc6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM2ODpcXHRjYXNlIDIwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNjk6XFx0XFx0dHlwZSA9IE5QQ19MRztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzcwOlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozNzE6XFx0Y2FzZSAyMjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzcyOlxcdFxcdHR5cGUgPSBOUENfTEg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3MzpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc0OlxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NTpcXHRcXHRyZXR1cm47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NjpcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3NzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzc4OlxcdG5wY19zZXRfa3dfbWFza3MocnZ1LCBtY2FtLCB0eXBlLCBucl9iaXRzLCBrd2ksIG9mZnNldCwgaW50Zik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM3OTp9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzgxOnN0YXRpYyB2b2lkIG5wY19zY2FuX3BhcnNlX3Jlc3VsdChzdHJ1Y3QgcnZ1ICpydnUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4MjpcXHRcXHRcXHRcXHQgIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwgdTggYml0X251bWJlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzgzOlxcdFxcdFxcdFxcdCAgdTgga2V5X25pYmJsZSwgdTggaW50ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzg0OntcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzg1OlxcdHU4IG9mZnNldCA9IChrZXlfbmliYmxlICogNCkgJSA2NDsgLyogb2Zmc2V0IHdpdGhpbiBrZXkgd29yZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODY6XFx0dTgga3dpID0gKGtleV9uaWJibGUgKiA0KSAvIDY0OyAvKiB3aGljaCB3b3JkIGluIGtleSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozODc6XFx0dTggbnJfYml0cyA9IDQ7IC8qIGJpdHMgaW4gYSBuaWJibGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzg4OlxcdHU4IHR5cGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM4OTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6MzkwOlxcdGlmIChpc19jbjIwayhydnUtXFx1MDAzZXBkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM5MTpcXHRcXHRucGNfY24yMGtfc2Nhbl9wYXJzZV9yZXN1bHQocnZ1LCBtY2FtLCBiaXRfbnVtYmVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTI6XFx0XFx0XFx0XFx0XFx0ICAgIGtleV9uaWJibGUsIGludGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTM6XFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTQ6XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzozOTU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjM5NjpcXHRzd2l0Y2ggKGJpdF9udW1iZXIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk3OlxcdGNhc2UgMCAuLi4gMjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk4OlxcdFxcdHR5cGUgPSBOUENfQ0hBTjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6Mzk5OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDA6XFx0Y2FzZSAzOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDE6XFx0XFx0dHlwZSA9IE5QQ19FUlJMRVY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwMjpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDAzOlxcdGNhc2UgNCAuLi4gNTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDA0OlxcdFxcdHR5cGUgPSBOUENfRVJSQ09ERTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDA1OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDY6XFx0Y2FzZSA2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDc6XFx0XFx0dHlwZSA9IE5QQ19MWE1CO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MDg6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQwOTpcXHQvKiBjaGVjayBmb3IgTFRZUEUgb25seSBhcyBvZiBub3cgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDEwOlxcdGNhc2UgOTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDExOlxcdFxcdHR5cGUgPSBOUENfTEE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxMjpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDEzOlxcdGNhc2UgMTI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxNDpcXHRcXHR0eXBlID0gTlBDX0xCO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTU6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQxNjpcXHRjYXNlIDE1OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTc6XFx0XFx0dHlwZSA9IE5QQ19MQztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDE4OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MTk6XFx0Y2FzZSAxODpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDIwOlxcdFxcdHR5cGUgPSBOUENfTEQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyMTpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDIyOlxcdGNhc2UgMjE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyMzpcXHRcXHR0eXBlID0gTlBDX0xFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjQ6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQyNTpcXHRjYXNlIDI0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MjY6XFx0XFx0dHlwZSA9IE5QQ19MRjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDI3OlxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mjg6XFx0Y2FzZSAyNzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDI5OlxcdFxcdHR5cGUgPSBOUENfTEc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzMDpcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDMxOlxcdGNhc2UgMzA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzMjpcXHRcXHR0eXBlID0gTlBDX0xIO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzM6XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzNDpcXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzU6XFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0MzY6XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mzc6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQzODpcXHRucGNfc2V0X2t3X21hc2tzKHJ2dSwgbWNhbSwgdHlwZSwgbnJfYml0cywga3dpLCBvZmZzZXQsIGludGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Mzk6fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0MTpzdGF0aWMgdm9pZCBucGNfaGFuZGxlX211bHRpX2xheWVyX2ZpZWxkcyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1OCBpbnRmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDI6e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDM6XFx0c3RydWN0IG5wY19tY2FtICptY2FtID0gXFx1MDAyNnJ2dS1cXHUwMDNlaHctXFx1MDAzZW1jYW07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ0NDpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqa2V5X2ZpZWxkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ1OlxcdC8qIEV0aGVyIHR5cGUgY2FuIGNvbWUgZnJvbSB0aHJlZSBsYXllcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ2OlxcdCAqIChldGhlcm5ldCwgc2luZ2xlIHRhZ2dlZCwgZG91YmxlIHRhZ2dlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDQ3OlxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDg6XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmV0eXBlX2V0aGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NDk6XFx0c3RydWN0IG5wY19rZXlfZmllbGQgKmV0eXBlX3RhZzE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1MDpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqZXR5cGVfdGFnMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDUxOlxcdC8qIE91dGVyIFZMQU4gVENJIGNhbiBjb21lIGZyb20gdHdvIGxheWVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTI6XFx0ICogKHNpbmdsZSB0YWdnZWQsIGRvdWJsZSB0YWdnZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1MzpcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU0OlxcdHN0cnVjdCBucGNfa2V5X2ZpZWxkICp2bGFuX3RhZzE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1NTpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqdmxhbl90YWcyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTY6XFx0LyogSW5uZXIgVkxBTiBUQ0kgZm9yIGRvdWJsZSB0YWdnZWQgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ1NzpcXHRzdHJ1Y3QgbnBjX2tleV9maWVsZCAqdmxhbl90YWczO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NTg6XFx0dTY0ICpmZWF0dXJlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDU5OlxcdGludCBpLCBtYXhfa3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2MDpcXHR1OCBzdGFydF9saWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2MTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDYyOlxcdGlmIChpc19jbjIwayhydnUtXFx1MDAzZXBkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NjM6XFx0XFx0bWF4X2t3ID0gTlBDX0tXU19JTl9LRVlfU1pfODtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY0OlxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY1OlxcdFxcdG1heF9rdyA9IE5QQ19LV1NfSU5fS0VZX1NaXzc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2NjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDY3OlxcdGtleV9maWVsZHMgPSBtY2FtLVxcdTAwM2VyeF9rZXlfZmllbGRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Njg6XFx0ZmVhdHVyZXMgPSBcXHUwMDI2bWNhbS1cXHUwMDNlcnhfZmVhdHVyZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ2OTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDcwOlxcdGlmIChpc19ucGNfaW50Zl90eChpbnRmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzE6XFx0XFx0a2V5X2ZpZWxkcyA9IG1jYW0tXFx1MDAzZXR4X2tleV9maWVsZHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3MjpcXHRcXHRmZWF0dXJlcyA9IFxcdTAwMjZtY2FtLVxcdTAwM2V0eF9mZWF0dXJlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDczOlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDc0OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzU6XFx0LyogSGFuZGxlIGhlYWRlciBmaWVsZHMgd2hpY2ggY2FuIGNvbWUgZnJvbSBtdWx0aXBsZSBsYXllcnMgbGlrZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0NzY6XFx0ICogZXR5cGUsIG91dGVyIHZsYW4gdGNpLiBUaGVzZSBmaWVsZHMgc2hvdWxkIGhhdmUgc2FtZSBwb3NpdGlvbiBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Nzc6XFx0ICogdGhlIGtleSBvdGhlcndpc2UgdG8gaW5zdGFsbCBhIG1jYW0gcnVsZSBtb3JlIHRoYW4gb25lIGVudHJ5IGlzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ3ODpcXHQgKiBuZWVkZWQgd2hpY2ggY29tcGxpY2F0ZXMgbWNhbSBzcGFjZSBtYW5hZ2VtZW50LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0Nzk6XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4MDpcXHRldHlwZV9ldGhlciA9IFxcdTAwMjZrZXlfZmllbGRzW05QQ19FVFlQRV9FVEhFUl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4MTpcXHRldHlwZV90YWcxID0gXFx1MDAyNmtleV9maWVsZHNbTlBDX0VUWVBFX1RBRzFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODI6XFx0ZXR5cGVfdGFnMiA9IFxcdTAwMjZrZXlfZmllbGRzW05QQ19FVFlQRV9UQUcyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDgzOlxcdHZsYW5fdGFnMSA9IFxcdTAwMjZrZXlfZmllbGRzW05QQ19WTEFOX1RBRzFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODQ6XFx0dmxhbl90YWcyID0gXFx1MDAyNmtleV9maWVsZHNbTlBDX1ZMQU5fVEFHMl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjQ4NTpcXHR2bGFuX3RhZzMgPSBcXHUwMDI2a2V5X2ZpZWxkc1tOUENfVkxBTl9UQUczXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg2OlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0ODc6XFx0LyogaWYga2V5IHByb2ZpbGUgcHJvZ3JhbW1lZCBkb2VzIG5vdCBleHRyYWN0IEV0aGVydHlwZSBhdCBhbGwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg4OlxcdGlmICghZXR5cGVfZXRoZXItXFx1MDAzZW5yX2t3cyBcXHUwMDI2XFx1MDAyNiAhZXR5cGVfdGFnMS1cXHUwMDNlbnJfa3dzIFxcdTAwMjZcXHUwMDI2ICFldHlwZV90YWcyLVxcdTAwM2Vucl9rd3MpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDg5OlxcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJta2V4OiBFdGhlcnR5cGUgaXMgbm90IGV4dHJhY3RlZC5cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTA6XFx0XFx0Z290byB2bGFuX3RjaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDkxOlxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDkyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTM6XFx0LyogaWYga2V5IHByb2ZpbGUgcHJvZ3JhbW1lZCBleHRyYWN0cyBFdGhlcnR5cGUgZnJvbSBvbmUgbGF5ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk0OlxcdGlmIChldHlwZV9ldGhlci1cXHUwMDNlbnJfa3dzIFxcdTAwMjZcXHUwMDI2ICFldHlwZV90YWcxLVxcdTAwM2Vucl9rd3MgXFx1MDAyNlxcdTAwMjYgIWV0eXBlX3RhZzItXFx1MDAzZW5yX2t3cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk1OlxcdFxcdGtleV9maWVsZHNbTlBDX0VUWVBFXSA9ICpldHlwZV9ldGhlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk2OlxcdGlmICghZXR5cGVfZXRoZXItXFx1MDAzZW5yX2t3cyBcXHUwMDI2XFx1MDAyNiBldHlwZV90YWcxLVxcdTAwM2Vucl9rd3MgXFx1MDAyNlxcdTAwMjYgIWV0eXBlX3RhZzItXFx1MDAzZW5yX2t3cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjX2ZzLmM6NDk3OlxcdFxcdGtleV9maWVsZHNbTlBDX0VUWVBFXSA9ICpldHlwZV90YWcxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTg6XFx0aWYgKCFldHlwZV9ldGhlci1cXHUwMDNlbnJfa3dzIFxcdTAwMjZcXHUwMDI2ICFldHlwZV90YWcxLVxcdTAwM2Vucl9rd3MgXFx1MDAyNlxcdTAwMjYgZXR5cGVfdGFnMi1cXHUwMDNlbnJfa3dzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGNfZnMuYzo0OTk6XFx0XFx0a2V5X2ZpZWxkc1tOUENfRVRZUEVdID0gKmV0eXBlX3RhZzI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wY19mcy5jOjUwMDpcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6MzM6MDkuNTM1MjQ3MzA5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODA2ODg5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBJdCdzIGEgc2ltcGxlIGFkZGl0aW9uLCByZWFsbHkuIFRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIGBkZXZfd2FybigpYCBjYWxsIHdpdGhpbiBhbiBgaWZgIHN0YXRlbWVudC4gU3BlY2lmaWNhbGx5LCBpdCdzIGNoZWNraW5nIGZvciBhbiBvdmVybGFwIHJlbGF0ZWQgdG8gdGhlIGBOUENfSVBTRUNfU1BJYCBmaWVsZC4gVGhlIGBucGNfY2hlY2tfb3ZlcmxhcCgpYCBmdW5jdGlvbiBpcyBpbnZva2VkLCBhbmQgaWYgaXQgZGV0ZWN0cyBhbiBvdmVybGFwLCBhIHdhcm5pbmcgaXMgbG9nZ2VkLiBDcnVjaWFsbHksIHRoZSBjb2RlICpkb2Vzbid0KiBhbHRlciB0aGUgcHJvZ3JhbSdzIGZsb3cgYmFzZWQgb24gdGhpcyBvdmVybGFwIGRldGVjdGlvbi4gSXQganVzdCBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZS4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgY2hhbmdlcyB0aGF0IHdvdWxkIGZ1bmRhbWVudGFsbHkgYWx0ZXIgdGhlIHdheSB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMuIEJlY2F1c2Ugb2YgdGhpcyBsYWNrIG9mIGZ1bmN0aW9uYWwgY2hhbmdlcywgSSdsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0J3MgYSB1c2VmdWwgYWRkaXRpb24gZm9yIGRlYnVnZ2luZyBvciBlYXJseSBkZXRlY3Rpb24gb2YgY29uZmlndXJhdGlvbiBpc3N1ZXMgYnV0IGRvZXNuJ3Qgd2FycmFudCBmdXp6aW5nIGF0dGVudGlvbiBhdCB0aGlzIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDE1LCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjMzOjE0LjExNTkzODYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGV2X3dhcm4gYW5kIGEgY29tbWVudC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBtb2RpZnkgYW55IHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgZGV2X3dhcm4gYW5kIGEgY29tbWVudC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBtb2RpZnkgYW55IHN0YXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow25h9k[1] Phase: Running StartedAt: 2026-07-13 19:33:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow25h9k[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-13 19:33:41 +0000 UTC FinishedAt: 2026-07-13 19:33:54 +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,}