Name: series-workflow4hsp2 Phase: Failed StartedAt: 2026-07-15 17:48:12 +0000 UTC FinishedAt: 2026-07-15 18:12:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4hsp2[0] Phase: Succeeded StartedAt: 2026-07-15 17:48:12 +0000 UTC FinishedAt: 2026-07-15 18:12:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4hsp2[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 17:48:12 +0000 UTC FinishedAt: 2026-07-15 18:12: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+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTQ3NGMxNWZiOTc5MDllODBiM2UwNjdkMDc0MjIzYWZkYzE3MGFiNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDE4OjEwOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuaW5kZXggZjM4OWI5N2FjYmRkNWQuLjJlNTk3OGVjMmIwNWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbkBAIC0xMDg3LDYgJiM0MzsxMDg3LDcgQEAgaW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRpZHJfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnR4YnVmX2lkcik7XG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udHhfaWRyX2xvY2spO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS53YWtlX3R4X2xvY2spO1xuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xuIFxuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbmluZGV4IDg0ZjY2ODM5ZjBjNmRlLi42ZDk5NTAxYWEyNjljNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5AQCAtODcsNiAmIzQzOzg3LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0c3RydWN0IGlkciB0eGJ1Zl9pZHI7XG4gXHQvKiBQcm90ZWN0cyB0eGJ1Zl9pZHIgYW5kIG51bV9wZW5kaW5nICovXG4gXHRzcGlubG9ja190IHR4X2lkcl9sb2NrO1xuJiM0MztcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbiYjNDM7XHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkZS4uMDQ2Y2VmZDUzMTc4MjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5AQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDY3IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuJiM0MztcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuJiM0MztcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4mIzQzO1x0fTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqcGVla19za2I7XG4mIzQzO1x0c3RydWN0IGF0aDExayAqYXIgPSBody1cdTAwM2Vwcml2O1xuJiM0MztcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuJiM0MztcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XHR1MzIgcmluZ19zZWxlY3RvcjtcbiYjNDM7XHRpbnQgbnVtX2ZyZWU7XG4mIzQzO1x0dTggcmluZ19pZDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFhcilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKDEpIHtcbiYjNDM7XHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMUtfRkxBR19DUkFTSF9GTFVTSCxcbiYjNDM7XHRcdFx0XHQgICAgICBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdFx0cGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTtcbiYjNDM7XHRcdGlmICghcGVla19za2IpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHJpbmdfc2VsZWN0b3IgPSBhci1cdTAwM2VhYi1cdTAwM2Vod19wYXJhbXMuaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKFxuJiM0MztcdFx0XHRcdFx0KHN0cnVjdCBza19idWZmICopcGVla19za2IpO1xuJiM0MztcdFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJVxuJiM0MztcdFx0XHQgIGFyLVx1MDAzZWFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZW51bV90eF9yaW5ncztcbiYjNDM7XG4mIzQzO1x0XHR0eF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZHAudHhfcmluZ1tyaW5nX2lkXTtcbiYjNDM7XHRcdHRjbF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsLnNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRzcGluX2xvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRudW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItXHUwMDNlYWIsIHRjbF9yaW5nLCB0cnVlKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRcdGlmIChudW1fZnJlZSA9PSAwKSB7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XG4mIzQzO1x0XHRpZiAoIXNrYikge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGF0aDExa19tYWNfb3BfdHgoaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbiYjNDM7XHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG5pbmRleCBhZjVmMTFmYzFkODRhYi4uM2Q0NmNmYmYwYTFjM2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuQEAgLTE1MzksNiAmIzQzOzE1MzksNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0fVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZW1heF90eF9yaW5nOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS53YWtlX3R4X2xvY2spO1xuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xuIFxuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGY4Y2ZjN2JiMjlkZDc4Li42OGQyMDIwYmU5Yjg2OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5AQCAtNTgsNiAmIzQzOzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0dTggdGNsX2RhdGFfcmluZ19pZDtcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xuJiM0MztcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbiYjNDM7XHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX2NvbXBsZXRpb25fcmluZ190eCAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG5pbmRleCBhMTY0NTYzZmZmMjg5Yy4uYzFjNjU2ZTQ1NTBiMjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG5AQCAtMzkwLDYgJiM0MzszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXG4gXHRlbHNlXG4gXHRcdHJldHVybiAoKHNybmctXHUwMDNlcmluZ19zaXplIC0gaHAgJiM0MzsgdHApIC8gc3JuZy1cdTAwM2VlbnRyeV9zaXplKSAtIDE7XG4gfVxuJiM0MztFWFBPUlRfU1lNQk9MKGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUpO1xuIFxuIHZvaWQgKmF0aDEya19oYWxfc3JuZ19zcmNfbmV4dF9wZWVrKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRcdFx0XHQgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuaW5kZXggZDlmZGQyZmM4Mjk4NmEuLjMwNmQ1MWRhM2VhMThjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbkBAIC0xMTAwLDkgJiM0MzsxMTAwLDcyIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtXHUwMDNldmlmKTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZiA9IFx1MDAyNmFodmlmLVx1MDAzZWRlZmxpbms7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XG4mIzQzO1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbiYjNDM7XHR9O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjtcbiYjNDM7XHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcbiYjNDM7XHRzdHJ1Y3QgaGFsX3NybmcgKnRjbF9yaW5nO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0c3RydWN0IGF0aDEyayAqYXI7XG4mIzQzO1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4mIzQzO1x0aW50IG51bV9mcmVlO1xuJiM0MztcdHU4IHJpbmdfaWQ7XG4mIzQzO1xuJiM0MztcdGFyID0gYXJ2aWYtXHUwMDNlYXI7XG4mIzQzO1x0aWYgKCFhcilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZHAgPSBhci1cdTAwM2VhYi1cdTAwM2VkcDtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKDEpIHtcbiYjNDM7XHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCxcbiYjNDM7XHRcdFx0XHQgICAgICBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdFx0cGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTtcbiYjNDM7XHRcdGlmICghcGVla19za2IpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKFxuJiM0MztcdFx0XHRcdFx0KHN0cnVjdCBza19idWZmICopcGVla19za2IpO1xuJiM0MztcdFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlbWF4X3R4X3Jpbmc7XG4mIzQzO1xuJiM0MztcdFx0dHhfcmluZyA9IFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbcmluZ19pZF07XG4mIzQzO1x0XHR0Y2xfcmluZyA9IFx1MDAyNmRwLVx1MDAzZWhhbC1cdTAwM2Vzcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bnVtX2ZyZWUgPSBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xuJiM0MztcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRhdGgxMmtfd2lmaTdfbWFjX29wX3R4KGh3LCBcdTAwMjZjb250cm9sLCBza2IpO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTJrX3dpZmk3X21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4mIzQzO1x0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcbiBcdC5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0YXJ0LFxuIFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RvcCxcbiBcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5pbmRleCA0Zjk1ZGEwMjM3NDZmOS4uOTI4OWI4ZGNhOTcyY2YgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5AQCAtNzc0Miw2ICYjNDM7Nzc0MiwyNiBAQCB2b2lkIGllZWU4MDIxMV91bnJlc2VydmVfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHU4IHRpZCk7XG4gc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGllZWU4MDIxMV90eF9wZWVrIC0gcGVlayBhdCB0aGUgbmV4dCBwYWNrZXQgaW4gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxuJiM0MzsgKlxuJiM0MzsgKiBAaHc6IHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxuJiM0MzsgKiBAdHhxOiBwb2ludGVyIG9idGFpbmVkIGZyb20gc3RhdGlvbiBvciB2aXJ0dWFsIGludGVyZmFjZSwgb3IgZnJvbVxuJiM0MzsgKlx0aWVlZTgwMjExX25leHRfdHhxKClcbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiB0aGUgbmV4dCBza2Igd2l0aG91dCBkZXF1ZXVpbmcgaXQsIG9yICVOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS5cbiYjNDM7ICogVGhlIHJldHVybmVkIHBvaW50ZXIgaXMgY29uc3Qg4oCUIHRoZSBjYWxsZXIgbXVzdCBub3QgbW9kaWZ5IG9yIGZyZWUgdGhlIHNrYi5cbiYjNDM7ICogVGhlIHNrYiByZW1haW5zIHF1ZXVlZCBhbmQgd2lsbCBiZSByZXR1cm5lZCBieSBhIHN1YnNlcXVlbnRcbiYjNDM7ICogaWVlZTgwMjExX3R4X2RlcXVldWUoKSBjYWxsLlxuJiM0MzsgKlxuJiM0MzsgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZHJpdmVycyB0aGF0IG5lZWQgdG8gaW5zcGVjdCB0aGUgbmV4dCBmcmFtZSAoZS5nLiB0b1xuJiM0MzsgKiBkZXRlcm1pbmUgdGhlIHRhcmdldCBUWCByaW5nKSBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciB0byBkZXF1ZXVlLlxuJiM0MzsgKlxuJiM0MzsgKiBNdXN0IGJlIGNhbGxlZCBpbiB0aGUgc2FtZSBjb250ZXh0IGFzIGllZWU4MDIxMV90eF9kZXF1ZXVlKCkuXG4mIzQzOyAqL1xuJiM0Mztjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcbiYjNDM7XG4gLyoqXG4gICogaWVlZTgwMjExX3R4X2RlcXVldWVfbmkgLSBkZXF1ZXVlIGEgcGFja2V0IGZyb20gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxuICAqIChpbiBwcm9jZXNzIGNvbnRleHQpXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggYzEzYjIwOWZhZDQ3YWEuLjkxYmZkOGVmOTQyOGEwIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtMzg1Nyw2ICYjNDM7Mzg1Nyw0NSBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0Mztjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHR4cV9pbmZvICp0eHFpID0gY29udGFpbmVyX29mKHR4cSwgc3RydWN0IHR4cV9pbmZvLCB0eHEpO1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xuJiM0MztcdHN0cnVjdCBmcV90aW4gKnRpbiA9IFx1MDAyNnR4cWktXHUwMDNldGluO1xuJiM0MztcdHN0cnVjdCBmcSAqZnEgPSBcdTAwMjZsb2NhbC1cdTAwM2VmcTtcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgZnFfZmxvdyAqZmxvdztcbiYjNDM7XG4mIzQzO1x0V0FSTl9PTl9PTkNFKHNvZnRpcnFfY291bnQoKSA9PSAwKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZxLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRza2IgPSBza2JfcGVlayhcdTAwMjZ0eHFpLVx1MDAzZWZyYWdzKTtcbiYjNDM7XHRpZiAoc2tiKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkoZmxvdywgXHUwMDI2dGluLVx1MDAzZW5ld19mbG93cywgZmxvd2NoYWluKSB7XG4mIzQzO1x0XHRza2IgPSBza2JfcGVlayhcdTAwMjZmbG93LVx1MDAzZXF1ZXVlKTtcbiYjNDM7XHRcdGlmIChza2IpXG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCBcdTAwMjZ0aW4tXHUwMDNlb2xkX2Zsb3dzLCBmbG93Y2hhaW4pIHtcbiYjNDM7XHRcdHNrYiA9IHNrYl9wZWVrKFx1MDAyNmZsb3ctXHUwMDNlcXVldWUpO1xuJiM0MztcdFx0aWYgKHNrYilcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGlmIChza2IpXG4mIzQzO1x0XHRza2JfZ2V0X2hhc2goc2tiKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZnEtXHUwMDNlbG9jayk7XG4mIzQzO1x0cmV0dXJuIHNrYjtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChpZWVlODAyMTFfdHhfcGVlayk7XG4mIzQzO1xuIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIHdpcmVsZXNzIGRyaXZlcnMgYW5kIGFkZHMgYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGllZWU4MDIxMV90eF9wZWVrIHRvIHRoZSBtYWM4MDIxMSBjb3JlLiBUaGUgbmV3IGhlbHBlciBpcyBleGNsdXNpdmVseSBjYWxsZWQgYnkgdGhlIHdha2VfdHhfcXVldWUgaGFuZGxlcnMgb2YgYXRoMTFrIGFuZCBhdGgxMmsuIEJvdGggb2YgdGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IHRoZSBoYXJkd2FyZSBhbmQgZmlybXdhcmUsIHRoZSBkcml2ZXJzIGZhaWwgdG8gcHJvYmUvaW5pdGlhbGl6ZSwgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW5jbHVkaW5nIHRoZSBuZXcgbWFjODAyMTEgaGVscGVyKSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU0NzRjMTVmYjk3OTA5ZTgwYjNlMDY3ZDA3NDIyM2FmZGMxNzBhYjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAxODoxMDozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwppbmRleCBmMzg5Yjk3YWNiZGQ1ZC4uMmU1OTc4ZWMyYjA1YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKQEAgLTEwODcsNiAmIzQzOzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFiLSZndDtod19wYXJhbXMuaGFsX3BhcmFtcy0mZ3Q7bnVtX3R4X3JpbmdzOyBpJiM0MzsmIzQzOykgewogCQlpZHJfaW5pdCgmYW1wO2RwLSZndDt0eF9yaW5nW2ldLnR4YnVmX2lkcik7CiAJCXNwaW5fbG9ja19pbml0KCZhbXA7ZHAtJmd0O3R4X3JpbmdbaV0udHhfaWRyX2xvY2spOwomIzQzOwkJc3Bpbl9sb2NrX2luaXQoJmFtcDtkcC0mZ3Q7dHhfcmluZ1tpXS53YWtlX3R4X2xvY2spOwogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTsKIAogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKaW5kZXggODRmNjY4MzlmMGM2ZGUuLjZkOTk1MDFhYTI2OWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oCkBAIC04Nyw2ICYjNDM7ODcsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7CiAJc3RydWN0IGlkciB0eGJ1Zl9pZHI7CiAJLyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqLwogCXNwaW5sb2NrX3QgdHhfaWRyX2xvY2s7CiYjNDM7CS8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi8KJiM0MzsJc3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7CiAJc3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7CiAJaW50IHR4X3N0YXR1c19oZWFkOwogCWludCB0eF9zdGF0dXNfdGFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCmluZGV4IDJkNTVjZGM0ZDE2NWRlLi4wNDZjZWZkNTMxNzgyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCkBAIC0xMDA2NSw5ICYjNDM7MTAwNjUsNjcgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAomIzQzOwkJCQkJc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0gewomIzQzOwkJLnN0YSA9IHR4cS0mZ3Q7c3RhLAomIzQzOwl9OwomIzQzOwljb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqcGVla19za2I7CiYjNDM7CXN0cnVjdCBhdGgxMWsgKmFyID0gaHctJmd0O3ByaXY7CiYjNDM7CXN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nOwomIzQzOwlzdHJ1Y3QgaGFsX3NybmcgKnRjbF9yaW5nOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwl1MzIgcmluZ19zZWxlY3RvcjsKJiM0MzsJaW50IG51bV9mcmVlOwomIzQzOwl1OCByaW5nX2lkOwomIzQzOwomIzQzOwlpZiAoIWFyKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwl3aGlsZSAoMSkgewomIzQzOwkJaWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILAomIzQzOwkJCQkgICAgICAmYW1wO2FyLSZndDthYi0mZ3Q7ZGV2X2ZsYWdzKSkpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpOwomIzQzOwkJaWYgKCFwZWVrX3NrYikKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCXJpbmdfc2VsZWN0b3IgPSBhci0mZ3Q7YWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKAomIzQzOwkJCQkJKHN0cnVjdCBza19idWZmICopcGVla19za2IpOwomIzQzOwkJcmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJQomIzQzOwkJCSAgYXItJmd0O2FiLSZndDtod19wYXJhbXMuaGFsX3BhcmFtcy0mZ3Q7bnVtX3R4X3JpbmdzOwomIzQzOwomIzQzOwkJdHhfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtkcC50eF9yaW5nW3JpbmdfaWRdOwomIzQzOwkJdGNsX3JpbmcgPSAmYW1wO2FyLSZndDthYi0mZ3Q7aGFsLnNybmdfbGlzdFt0eF9yaW5nLSZndDt0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsKJiM0MzsJCXNwaW5fbG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsJCW51bV9mcmVlID0gYXRoMTFrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci0mZ3Q7YWIsIHRjbF9yaW5nLCB0cnVlKTsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7dGNsX3JpbmctJmd0O2xvY2spOwomIzQzOwomIzQzOwkJaWYgKG51bV9mcmVlID09IDApIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTsKJiM0MzsJCWlmICghc2tiKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJYXRoMTFrX21hY19vcF90eChodywgJmFtcDtjb250cm9sLCBza2IpOwomIzQzOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7CiAJLnR4CQkJCT0gYXRoMTFrX21hY19vcF90eCwKLQkud2FrZV90eF9xdWV1ZQkJCT0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLAomIzQzOwkud2FrZV90eF9xdWV1ZQkJCT0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLAogCS5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0YXJ0LAogCS5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsCiAJLnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMKaW5kZXggYWY1ZjExZmMxZDg0YWIuLjNkNDZjZmJmMGExYzNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jCkBAIC0xNTM5LDYgJiM0MzsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYikKIAl9CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgYWItJmd0O2h3X3BhcmFtcy0mZ3Q7bWF4X3R4X3Jpbmc7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlzcGluX2xvY2tfaW5pdCgmYW1wO2RwLSZndDt0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7CiAJCWRwLSZndDt0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpOwogCiAJCWRwLSZndDt0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAppbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHsKIAl1OCB0Y2xfZGF0YV9yaW5nX2lkOwogCXN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7CiAJc3RydWN0IGRwX3NybmcgdGNsX2NvbXBfcmluZzsKJiM0MzsJLyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqLwomIzQzOwlzcGlubG9ja190IHdha2VfdHhfbG9jazsKIAlzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1czsKIAlpbnQgdHhfc3RhdHVzX2hlYWQ7CiAJaW50IHR4X3N0YXR1c190YWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMKaW5kZXggYTE2NDU2M2ZmZjI4OWMuLmMxYzY1NmU0NTUwYjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMKQEAgLTM5MCw2ICYjNDM7MzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLAogCWVsc2UKIAkJcmV0dXJuICgoc3JuZy0mZ3Q7cmluZ19zaXplIC0gaHAgJiM0MzsgdHApIC8gc3JuZy0mZ3Q7ZW50cnlfc2l6ZSkgLSAxOwogfQomIzQzO0VYUE9SVF9TWU1CT0woYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7CiAKIHZvaWQgKmF0aDEya19oYWxfc3JuZ19zcmNfbmV4dF9wZWVrKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJCQkJICAgIHN0cnVjdCBoYWxfc3JuZyAqc3JuZykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwppbmRleCBkOWZkZDJmYzgyOTg2YS4uMzA2ZDUxZGEzZWExOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKQEAgLTExMDAsOSAmIzQzOzExMDAsNzIgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiYjNDM7CQkJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtJmd0O3ZpZik7CiYjNDM7CXN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmID0gJmFtcDthaHZpZi0mZ3Q7ZGVmbGluazsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7CiYjNDM7CQkuc3RhID0gdHhxLSZndDtzdGEsCiYjNDM7CX07CiYjNDM7CWNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjsKJiM0MzsJc3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7CiYjNDM7CXN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHAgKmRwOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlzdHJ1Y3QgYXRoMTJrICphcjsKJiM0MzsJdTMyIHJpbmdfc2VsZWN0b3I7CiYjNDM7CWludCBudW1fZnJlZTsKJiM0MzsJdTggcmluZ19pZDsKJiM0MzsKJiM0MzsJYXIgPSBhcnZpZi0mZ3Q7YXI7CiYjNDM7CWlmICghYXIpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWRwID0gYXItJmd0O2FiLSZndDtkcDsKJiM0MzsKJiM0MzsJd2hpbGUgKDEpIHsKJiM0MzsJCWlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwKJiM0MzsJCQkJICAgICAgJmFtcDthci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJcGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTsKJiM0MzsJCWlmICghcGVla19za2IpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlyaW5nX3NlbGVjdG9yID0gZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7aHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3RvcigKJiM0MzsJCQkJCShzdHJ1Y3Qgc2tfYnVmZiAqKXBlZWtfc2tiKTsKJiM0MzsJCXJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7bWF4X3R4X3Jpbmc7CiYjNDM7CiYjNDM7CQl0eF9yaW5nID0gJmFtcDtkcC0mZ3Q7dHhfcmluZ1tyaW5nX2lkXTsKJiM0MzsJCXRjbF9yaW5nID0gJmFtcDtkcC0mZ3Q7aGFsLSZndDtzcm5nX2xpc3RbdHhfcmluZy0mZ3Q7dGNsX2RhdGFfcmluZy5yaW5nX2lkXTsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CQludW1fZnJlZSA9IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItJmd0O2FiLCB0Y2xfcmluZywgdHJ1ZSk7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJCWlmIChudW1fZnJlZSA9PSAwKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7CiYjNDM7CQlpZiAoIXNrYikgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsICZhbXA7Y29udHJvbCwgc2tiKTsKJiM0MzsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMmtfb3BzX3dpZmk3ID0gewogCS50eAkJCQk9IGF0aDEya193aWZpN19tYWNfb3BfdHgsCi0JLndha2VfdHhfcXVldWUJCQk9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSwKJiM0MzsJLndha2VfdHhfcXVldWUJCQk9IGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZSwKIAkuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCwKIAkuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdG9wLAogCS5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKaW5kZXggNGY5NWRhMDIzNzQ2ZjkuLjkyODliOGRjYTk3MmNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKQEAgLTc3NDIsNiAmIzQzOzc3NDIsMjYgQEAgdm9pZCBpZWVlODAyMTFfdW5yZXNlcnZlX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCB1OCB0aWQpOwogc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCSAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSk7CiAKJiM0MzsvKioKJiM0MzsgKiBpZWVlODAyMTFfdHhfcGVlayAtIHBlZWsgYXQgdGhlIG5leHQgcGFja2V0IGluIGEgc29mdHdhcmUgdHggcXVldWUKJiM0MzsgKgomIzQzOyAqIEBodzogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIGllZWU4MDIxMV9hbGxvY19odygpCiYjNDM7ICogQHR4cTogcG9pbnRlciBvYnRhaW5lZCBmcm9tIHN0YXRpb24gb3IgdmlydHVhbCBpbnRlcmZhY2UsIG9yIGZyb20KJiM0MzsgKglpZWVlODAyMTFfbmV4dF90eHEoKQomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiB0aGUgbmV4dCBza2Igd2l0aG91dCBkZXF1ZXVpbmcgaXQsIG9yICVOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KJiM0MzsgKiBUaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBjb25zdCDigJQgdGhlIGNhbGxlciBtdXN0IG5vdCBtb2RpZnkgb3IgZnJlZSB0aGUgc2tiLgomIzQzOyAqIFRoZSBza2IgcmVtYWlucyBxdWV1ZWQgYW5kIHdpbGwgYmUgcmV0dXJuZWQgYnkgYSBzdWJzZXF1ZW50CiYjNDM7ICogaWVlZTgwMjExX3R4X2RlcXVldWUoKSBjYWxsLgomIzQzOyAqCiYjNDM7ICogVGhpcyBpcyB1c2VmdWwgZm9yIGRyaXZlcnMgdGhhdCBuZWVkIHRvIGluc3BlY3QgdGhlIG5leHQgZnJhbWUgKGUuZy4gdG8KJiM0MzsgKiBkZXRlcm1pbmUgdGhlIHRhcmdldCBUWCByaW5nKSBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciB0byBkZXF1ZXVlLgomIzQzOyAqCiYjNDM7ICogTXVzdCBiZSBjYWxsZWQgaW4gdGhlIHNhbWUgY29udGV4dCBhcyBpZWVlODAyMTFfdHhfZGVxdWV1ZSgpLgomIzQzOyAqLwomIzQzO2NvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKJiM0MzsJCQkJCXN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpOwomIzQzOwogLyoqCiAgKiBpZWVlODAyMTFfdHhfZGVxdWV1ZV9uaSAtIGRlcXVldWUgYSBwYWNrZXQgZnJvbSBhIHNvZnR3YXJlIHR4IHF1ZXVlCiAgKiAoaW4gcHJvY2VzcyBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCBjMTNiMjA5ZmFkNDdhYS4uOTFiZmQ4ZWY5NDI4YTAgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jCkBAIC0zODU3LDYgJiM0MzszODU3LDQ1IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJcmV0dXJuIHRydWU7CiB9CiAKJiM0Mztjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiYjNDM7CQkJCQlzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQomIzQzO3sKJiM0MzsJc3RydWN0IHR4cV9pbmZvICp0eHFpID0gY29udGFpbmVyX29mKHR4cSwgc3RydWN0IHR4cV9pbmZvLCB0eHEpOwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTsKJiM0MzsJc3RydWN0IGZxX3RpbiAqdGluID0gJmFtcDt0eHFpLSZndDt0aW47CiYjNDM7CXN0cnVjdCBmcSAqZnEgPSAmYW1wO2xvY2FsLSZndDtmcTsKJiM0MzsJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7CiYjNDM7CXN0cnVjdCBmcV9mbG93ICpmbG93OwomIzQzOwomIzQzOwlXQVJOX09OX09OQ0Uoc29mdGlycV9jb3VudCgpID09IDApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtmcS0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXNrYiA9IHNrYl9wZWVrKCZhbXA7dHhxaS0mZ3Q7ZnJhZ3MpOwomIzQzOwlpZiAoc2tiKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkoZmxvdywgJmFtcDt0aW4tJmd0O25ld19mbG93cywgZmxvd2NoYWluKSB7CiYjNDM7CQlza2IgPSBza2JfcGVlaygmYW1wO2Zsb3ctJmd0O3F1ZXVlKTsKJiM0MzsJCWlmIChza2IpCiYjNDM7CQkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCAmYW1wO3Rpbi0mZ3Q7b2xkX2Zsb3dzLCBmbG93Y2hhaW4pIHsKJiM0MzsJCXNrYiA9IHNrYl9wZWVrKCZhbXA7Zmxvdy0mZ3Q7cXVldWUpOwomIzQzOwkJaWYgKHNrYikKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzO291dDoKJiM0MzsJaWYgKHNrYikKJiM0MzsJCXNrYl9nZXRfaGFzaChza2IpOwomIzQzOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2ZxLSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIHNrYjsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoaWVlZTgwMjExX3R4X3BlZWspOwomIzQzOwogc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCSAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgUmVhY2hhYmlsaXR5IG9mIGEgV2lyZWxlc3MgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBzb21lIGtleSB3aXJlbGVzcyBuZXR3b3JraW5nIGFyZWFzOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLCBhbmQgYG5ldC9tYWM4MDIxMS90eC5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhIG5ldyBmdW5jdGlvbiwgYGllZWU4MDIxMV90eF9wZWVrYCwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGNyZWF0ZSBjdXN0b20gYHdha2VfdHhfcXVldWVgIGhhbmRsZXJzIGluIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCDigJMgc3BlY2lmaWNhbGx5LCBgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlYCBhbmQgYGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZWAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyByaWdodCBpbiB0aGUgaGVhcnQgb2YgdGhlIG5ldHdvcmtpbmcvd2lyZWxlc3Mgc3RhY2suIFRoZSBiaWcgcXVlc3Rpb24gaXM6IGNhbiBJIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBjb2RlIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHVwPwoKYG1hYzgwMjExYCBpdHNlbGYgaXMgZGVmaW5pdGVseSByZWFjaGFibGU7IGBtYWM4MDIxMV9od3NpbWAgb2ZmZXJzIGEgcm91dGUgaW50byB0aGF0IGNvZGUuIEJ1dCB0aGUgY3JpdGljYWwgcGFydCBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIFRoZXNlIGFyZSB0eXBpY2FsbHkgdGllZCB0byBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4L2JlIGhhcmR3YXJlLiBUaGF0IHN1Z2dlc3RzIFBDSS9BSEIgZGVwZW5kZW5jaWVzLiBBcmUgdGhvc2UgZHJpdmVycyBldmVuICphY2Nlc3NpYmxlKiBpbiBhIFZNPyBDb3VsZCB0aGVyZSBiZSBhbnkgc2ltdWxhdGVkIGhhcmR3YXJlLCBvciBpcyB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5IG9mZi1saW1pdHMgZm9yIGZ1enppbmcgb3IgdGVzdGluZyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IEkmIzM5O3ZlIGdvdCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byBhY2Nlc3MgdGhpcyBjb2RlLgoKSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGhhdmUgYW55IHNpbXVsYXRlZCBoYXJkd2FyZSBjb21wb25lbnRzIGluIHRoZSBrZXJuZWwuIExldCBtZSBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGZvciByZWZlcmVuY2VzIHRvIHRoZW0gdG8gc2VlIGlmIHRoZXkgY2FuIGJlIGFjY2Vzc2VkIHZpYSBhIHZpcnR1YWwgYnVzIG9yIFVTQiBvciBpZiB0aGV5IGFyZSBwdXJlbHkgUENJL0FIQi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjY2ODQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZz0yPWNvbmZpZyBBVEgxMUtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTE6XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTFrLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTEzPWNvbmZpZyBBVEgxMUtfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTQ6XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE1LVx0ZGVwZW5kcyBvbiBBVEgxMUtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9MjA9Y29uZmlnIEFUSDExS19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMTpcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjItXHRkZXBlbmRzIG9uIEFUSDExSyBcdTAwMjZcdTAwMjYgUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTMwPWNvbmZpZyBBVEgxMUtfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMTpcdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMi1cdGRlcGVuZHMgb24gQVRIMTFLXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTM4PWNvbmZpZyBBVEgxMUtfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjM5Olx0Ym9vbCBcJiMzNDtRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQwLVx0ZGVwZW5kcyBvbiBBVEgxMUsgXHUwMDI2XHUwMDI2IERFQlVHX0ZTIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDEtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDI6XHQgIEVuYWJsZSBhdGgxMWsgZGVidWdmcyBzdXBwb3J0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTQ2PWNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ3Olx0Ym9vbCBcJiMzNDthdGgxMWsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDgtXHRkZXBlbmRzIG9uIEFUSDExSyBcdTAwMjZcdTAwMjYgRVZFTlRfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ5LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUwOlx0ICBTZWxlY3QgdGhpcyB0byB1c2UgYXRoMTFrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9NTI9Y29uZmlnIEFUSDExS19TUEVDVFJBTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUzOlx0Ym9vbCBcJiMzNDtRQ0EgYXRoMTFrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU0LVx0ZGVwZW5kcyBvbiBBVEgxMUtfREVCVUdGU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01Ni1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1NzpcdCAgRW5hYmxlIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9NjE9Y29uZmlnIEFUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MjpcdGJvb2wgXCYjMzQ7YXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02My1cdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjUtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjY6XHQgIEVuYWJsZSBhdGgxMWsgY2hhbm5lbCBmcmVxdWVuY3kgcmVzcG9uc2UgZHVtcCBzdXBwb3J0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTY3LVx0ICBUaGlzIG9wdGlvbiBleHBvc2VzIGRlYnVnZnMgbm9kZXMgdGhhdCB3aWxsIGFsbG93IHRoZSB1c2VyXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMUspICYjNDM7PSBhdGgxMWsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZTozOmF0aDExay15ICYjNDM7PSBjb3JlLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtNC1cdCAgICBoYWwubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI0OmF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjU6YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI2OmF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjc6YXRoMTFrLSQoQ09ORklHX1RIRVJNQUwpICYjNDM7PSB0aGVybWFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjg6YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgJiM0Mzs9IHNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjk6YXRoMTFrLSQoQ09ORklHX1BNKSAmIzQzOz0gd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzA6YXRoMTFrLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzE6YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICYjNDM7PSBjZnIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FUSDExS19BSEIpICYjNDM7PSBhdGgxMWtfYWhiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzQ6YXRoMTFrX2FoYi15ICYjNDM7PSBhaGIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FUSDExS19QQ0kpICYjNDM7PSBhdGgxMWtfcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mzc6YXRoMTFrX3BjaS15ICYjNDM7PSBtaGkubyBwY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNDpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhdGgxMWtfYWhiX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1LVx0LyogVE9ETzogU2hvdWxkIHdlIGNoYW5nZSB0aGUgY29tcGF0aWJsZSBzdHJpbmcgdG8gc29tZXRoaW5nIHNpbWlsYXJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhdGgxMWtfYWhiX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNDQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNDU6YXRoMTFrX2FoYl9nZXRfbXNpX2lycV93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHVuc2lnbmVkIGludCB2ZWN0b3IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNTA9c3RhdGljIGlubGluZSB1MzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTUxOmF0aDExa19haGJfZ2V0X3dpbmRvd19zdGFydF93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTY3OmF0aDExa19haGJfd2luZG93X3dyaXRlMzJfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0LCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE2OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzEtXHQvKiBXQ042NzUwIHVzZXMgc3RhdGljIHdpbmRvdyBiYXNlZCByZWdpc3RlciBhY2Nlc3MqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNzI6XHR3aW5kb3dfc3RhcnQgPSBhdGgxMWtfYWhiX2dldF93aW5kb3dfc3RhcnRfd2NuNjc1MChhYiwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTczLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNzg6c3RhdGljIHUzMiBhdGgxMWtfYWhiX3dpbmRvd19yZWFkMzJfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTgzLVx0LyogV0NONjc1MCB1c2VzIHN0YXRpYyB3aW5kb3cgYmFzZWQgcmVnaXN0ZXIgYWNjZXNzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE4NDpcdHdpbmRvd19zdGFydCA9IGF0aDExa19haGJfZ2V0X3dpbmRvd19zdGFydF93Y242NzUwKGFiLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5MTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDExa19wY2lfb3BzIGF0aDExa19haGJfcGNpX29wc193Y242NzUwID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xOTItXHQud2FrZXVwID0gTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTkzLVx0LnJlbGVhc2UgPSBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxOTQ6XHQuZ2V0X21zaV9pcnEgPSBhdGgxMWtfYWhiX2dldF9tc2lfaXJxX3djbjY3NTAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5NTpcdC53aW5kb3dfd3JpdGUzMiA9IGF0aDExa19haGJfd2luZG93X3dyaXRlMzJfd2NuNjc1MCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTk2Olx0LndpbmRvd19yZWFkMzIgPSBhdGgxMWtfYWhiX3dpbmRvd19yZWFkMzJfd2NuNjc1MCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTk3LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTk5OnN0YXRpYyBpbmxpbmUgdTMyIGF0aDExa19haGJfcmVhZDMyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIwNDpzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTFrX2FoYl93cml0ZTMyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjA5OnN0YXRpYyB2b2lkIGF0aDExa19haGJfa2lsbF90YXNrbGV0cyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjEzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMTQ6XHRcdHN0cnVjdCBhdGgxMWtfY2VfcGlwZSAqY2VfcGlwZSA9IFx1MDAyNmFiLVx1MDAzZWNlLmNlX3BpcGVbaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjE2Olx0XHRpZiAoYXRoMTFrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjE3LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMjM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9leHRfZ3JwX2Rpc2FibGUoc3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjMxOnN0YXRpYyB2b2lkIF9fYXRoMTFrX2FoYl9leHRfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzNS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMzY6XHRcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMzg6XHRcdGF0aDExa19haGJfZXh0X2dycF9kaXNhYmxlKGlycV9ncnApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI0ODpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9ncnBfZW5hYmxlKHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI1NjpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3NldGJpdDMyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHU4IGJpdCwgdTMyIG9mZnNldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjYwOlx0dmFsID0gYXRoMTFrX2FoYl9yZWFkMzIoYWIsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2MTpcdGF0aDExa19haGJfd3JpdGUzMihhYiwgb2Zmc2V0LCB2YWwgfCBCSVQoYml0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI2Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjY0OnN0YXRpYyB2b2lkIGF0aDExa19haGJfY2xlYXJiaXQzMihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2ODpcdHZhbCA9IGF0aDExa19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNjk6XHRhdGgxMWtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIFx1MDAyNiB+QklUKGJpdCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI3MjpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjgzLVx0aWYgKGNlX2F0dHItXHUwMDNlc3JjX25lbnRyaWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyODQ6XHRcdGF0aDExa19haGJfc2V0Yml0MzIoYWIsIGNlX2lkLCBpZTFfcmVnX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI4Ni1cdGlmIChjZV9hdHRyLVx1MDAzZWRlc3RfbmVudHJpZXMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjg3Olx0XHRhdGgxMWtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjg4Olx0XHRhdGgxMWtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCAmIzQzOyBDRV9IT1NUX0lFXzNfU0hJRlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI4OS1cdFx0XHRcdCAgICBpZTNfcmVnX2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyOTM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMDQtXHRpZiAoY2VfYXR0ci1cdTAwM2VzcmNfbmVudHJpZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMwNTpcdFx0YXRoMTFrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMDctXHRpZiAoY2VfYXR0ci1cdTAwM2VkZXN0X25lbnRyaWVzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMwODpcdFx0YXRoMTFrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzA5Olx0XHRhdGgxMWtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkICYjNDM7IENFX0hPU1RfSUVfM19TSElGVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzEwLVx0XHRcdFx0ICAgICAgaWUzX3JlZ19hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzE0OnN0YXRpYyB2b2lkIGF0aDExa19haGJfc3luY19jZV9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMyMDpcdFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMyMS1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzI4OnN0YXRpYyB2b2lkIGF0aDExa19haGJfc3luY19leHRfaXJxcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMjkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzMzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMzNDpcdFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM0MzpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycXNfZW5hYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNDctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM0ODpcdFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0OS1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzUwOlx0XHRhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoYWIsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTEtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM1NDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycXNfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzU4LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNTk6XHRcdGlmIChhdGgxMWtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNjAtXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM2MTpcdFx0YXRoMTFrX2FoYl9jZV9pcnFfZGlzYWJsZShhYiwgaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM2Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzY1OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9zdGFydChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNjc6XHRhdGgxMWtfYWhiX2NlX2lycXNfZW5hYmxlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzY4Olx0YXRoMTFrX2NlX3J4X3Bvc3RfYnVmKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNzM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9leHRfaXJxX2VuYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM3ODpcdFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zODMtXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mzg0Olx0XHRhdGgxMWtfYWhiX2V4dF9ncnBfZW5hYmxlKGlycV9ncnApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zODUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM4ODpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zODkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozOTA6XHRfX2F0aDExa19haGJfZXh0X2lycV9kaXNhYmxlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzkxOlx0YXRoMTFrX2FoYl9zeW5jX2V4dF9pcnFzKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzkyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozOTQ6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zdG9wKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5Ni1cdGlmICghdGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5NzpcdFx0YXRoMTFrX2FoYl9jZV9pcnFzX2Rpc2FibGUoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozOTg6XHRhdGgxMWtfYWhiX3N5bmNfY2VfaXJxcyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5OTpcdGF0aDExa19haGJfa2lsbF90YXNrbGV0cyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwMC1cdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmFiLVx1MDAzZXJ4X3JlcGxlbmlzaF9yZXRyeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQwMTpcdGF0aDExa19jZV9jbGVhbnVwX3BpcGVzKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDAyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MDQ6c3RhdGljIGludCBhdGgxMWtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQwNjpcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MDctXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDEwLVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDExOlx0XHRhdGgxMWtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gYm9vdCB0aGUgcmVtb3RlIHByb2Nlc3NvciBRNlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDE2OnN0YXRpYyB2b2lkIGF0aDExa19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQxNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQxODpcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQyMzpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2luaXRfcW1pX2NlX2NvbmZpZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MjU6XHRzdHJ1Y3QgYXRoMTFrX3FtaV9jZV9jZmcgKmNmZyA9IFx1MDAyNmFiLVx1MDAzZXFtaS5jZV9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDM0OnN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9leHRfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MzgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDM5Olx0XHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXHUwMDI2YWItXHUwMDNlZXh0X2lycV9ncnBbaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDQ5OnN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ1NC1cdGlmIChhYi1cdTAwM2Vod19wYXJhbXMuaHlicmlkX2J1c190eXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NTU6XHRcdHJldHVybiBhdGgxMWtfcGNpY19mcmVlX2lycShhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDU3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NTg6XHRcdGlmIChhdGgxMWtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTktXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ2NDpcdGF0aDExa19haGJfZnJlZV9leHRfaXJxKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDY1LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0Njc6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDY4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDY5Olx0c3RydWN0IGF0aDExa19jZV9waXBlICpjZV9waXBlID0gZnJvbV90YXNrbGV0KGNlX3BpcGUsIHQsIGludHJfdHEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3MTpcdGF0aDExa19jZV9wZXJfZW5naW5lX3NlcnZpY2UoY2VfcGlwZS1cdTAwM2VhYiwgY2VfcGlwZS1cdTAwM2VwaXBlX251bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDczOlx0YXRoMTFrX2FoYl9jZV9pcnFfZW5hYmxlKGNlX3BpcGUtXHUwMDNlYWIsIGNlX3BpcGUtXHUwMDNlcGlwZV9udW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3NjpzdGF0aWMgaXJxcmV0dXJuX3QgYXRoMTFrX2FoYl9jZV9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3ODpcdHN0cnVjdCBhdGgxMWtfY2VfcGlwZSAqY2VfcGlwZSA9IGFyZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0ODM6XHRhdGgxMWtfYWhiX2NlX2lycV9kaXNhYmxlKGNlX3BpcGUtXHUwMDNlYWIsIGNlX3BpcGUtXHUwMDNlcGlwZV9udW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00ODQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5MDpzdGF0aWMgaW50IGF0aDExa19haGJfZXh0X2dycF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0OTI6XHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gY29udGFpbmVyX29mKG5hcGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5MzpcdFx0XHRcdFx0XHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTQtXHRcdFx0XHRcdFx0bmFwaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5NTpcdHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIgPSBpcnFfZ3JwLVx1MDAzZWFiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTYtXHRpbnQgd29ya19kb25lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5ODpcdHdvcmtfZG9uZSA9IGF0aDExa19kcF9zZXJ2aWNlX3NybmcoYWIsIGlycV9ncnAsIGJ1ZGdldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ5OS1cdGlmICh3b3JrX2RvbmUgXHUwMDNjIGJ1ZGdldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MDAtXHRcdG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCB3b3JrX2RvbmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1MDE6XHRcdGF0aDExa19haGJfZXh0X2dycF9lbmFibGUoaXJxX2dycCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUwMi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTEwOnN0YXRpYyBpcnFyZXR1cm5fdCBhdGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUxMjpcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBhcmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTE3Olx0YXRoMTFrX2FoYl9leHRfZ3JwX2Rpc2FibGUoaXJxX2dycCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTI0OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9jb25maWdfZXh0X2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1MjY6XHRzdHJ1Y3QgYXRoMTFrX2h3X3BhcmFtcyAqaHcgPSBcdTAwMjZhYi1cdTAwM2Vod19wYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUyNy1cdGludCBpLCBqO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTMxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUzMjpcdFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MzMtXHRcdHUzMiBudW1faXJxID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU0Mi1cdFx0bmV0aWZfbmFwaV9hZGQoaXJxX2dycC1cdTAwM2VuYXBpX25kZXYsIFx1MDAyNmlycV9ncnAtXHUwMDNlbmFwaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTQzOlx0XHRcdCAgICAgICBhdGgxMWtfYWhiX2V4dF9ncnBfbmFwaV9wb2xsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTY4LVx0XHRcdFx0XHRcdHJ4ZG1hMmhvc3RfZGVzdGluYXRpb25fcmluZ19tYWMxIC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTY5Olx0XHRcdFx0XHRcdGF0aDExa19od19nZXRfbWFjX2Zyb21fcGRldl9pZChodywgaik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3MC1cdFx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3NC1cdFx0XHRcdFx0XHRob3N0MnJ4ZG1hX2hvc3RfYnVmX3JpbmdfbWFjMSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjU3NTpcdFx0XHRcdFx0XHRhdGgxMWtfaHdfZ2V0X21hY19mcm9tX3BkZXZfaWQoaHcsIGopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NzYtXHRcdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01ODAtXHRcdFx0XHRcdFx0cHBkdV9lbmRfaW50ZXJydXB0c19tYWMxIC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTgxOlx0XHRcdFx0XHRcdGF0aDExa19od19nZXRfbWFjX2Zyb21fcGRldl9pZChodywgaik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4Mi1cdFx0XHRcdFx0aXJxX2dycC1cdTAwM2VpcnFzW251bV9pcnEmIzQzOyYjNDM7XSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4My1cdFx0XHRcdFx0XHRyeGRtYTJob3N0X21vbml0b3Jfc3RhdHVzX3JpbmdfbWFjMSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjU4NDpcdFx0XHRcdFx0XHRhdGgxMWtfaHdfZ2V0X21hY19mcm9tX3BkZXZfaWQoaHcsIGopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01ODUtXHRcdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01OTYtXHRcdFx0aXJxX3NldF9zdGF0dXNfZmxhZ3MoaXJxLCBJUlFfTk9BVVRPRU4gfCBJUlFfRElTQUJMRV9VTkxBWlkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1OTc6XHRcdFx0cmV0ID0gcmVxdWVzdF9pcnEoaXJxLCBhdGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTk4LVx0XHRcdFx0XHQgIElSUUZfVFJJR0dFUl9SSVNJTkcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MDAtXHRcdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2MDE6XHRcdFx0XHRhdGgxMWtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgcmVxdWVzdF9pcnEgZm9yICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MDItXHRcdFx0XHRcdCAgIGlycSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYxMDpzdGF0aWMgaW50IGF0aDExa19haGJfY29uZmlnX2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjE1LVx0aWYgKGFiLVx1MDAzZWh3X3BhcmFtcy5oeWJyaWRfYnVzX3R5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYxNjpcdFx0cmV0dXJuIGF0aDExa19wY2ljX2NvbmZpZ19pcnEoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYyMDpcdFx0c3RydWN0IGF0aDExa19jZV9waXBlICpjZV9waXBlID0gXHUwMDI2YWItXHUwMDNlY2UuY2VfcGlwZVtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2MjI6XHRcdGlmIChhdGgxMWtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MjMtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYyNzpcdFx0dGFza2xldF9zZXR1cChcdTAwMjZjZV9waXBlLVx1MDAzZWludHJfdHEsIGF0aDExa19haGJfY2VfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYyOC1cdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUoYWItXHUwMDNlcGRldiwgaXJxX25hbWVbaXJxX2lkeF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2Mjk6XHRcdHJldCA9IHJlcXVlc3RfaXJxKGlycSwgYXRoMTFrX2FoYl9jZV9pbnRlcnJ1cHRfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjMwLVx0XHRcdFx0ICBJUlFGX1RSSUdHRVJfUklTSU5HLCBpcnFfbmFtZVtpcnFfaWR4XSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYzOC1cdC8qIENvbmZpZ3VyZSBleHRlcm5hbCBpbnRlcnJ1cHRzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYzOTpcdHJldCA9IGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02NDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjY0NDpzdGF0aWMgaW50IGF0aDExa19haGJfbWFwX3NlcnZpY2VfdG9fcGlwZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MTYgc2VydmljZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjQ1LVx0XHRcdFx0XHQgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Njg3OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9oaWZfc3VzcGVuZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02ODgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2ODk6XHRzdHJ1Y3QgYXRoMTFrX2FoYiAqYWJfYWhiID0gYXRoMTFrX2FoYl9wcml2KGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjkwLVx0dTMyIHdha2VfaXJxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzAwLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3MDE6XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBlbmFibGUgd2FrZXVwIGlycSA6JWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcwMi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcxMi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzEzOlx0XHRhdGgxMWtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBzbXAycCBwb3dlciBzYXZlIGVudGVyIGNtZCA6JWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcxNC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzE3Olx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19BSEIsIFwmIzM0O2RldmljZSBzdXNwZW5kZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjcyMjpzdGF0aWMgaW50IGF0aDExa19haGJfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3MjQ6XHRzdHJ1Y3QgYXRoMTFrX2FoYiAqYWJfYWhiID0gYXRoMTFrX2FoYl9wcml2KGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzI1LVx0dTMyIHdha2VfaXJxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzM1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3MzY6XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBkaXNhYmxlIHdha2V1cCBpcnE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MzctXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc1MDpcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgc21wMnAgcG93ZXIgc2F2ZSBlbnRlciBjbWQgOiVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NTEtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NTUtXHRpZiAocmV0ID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzU2Olx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7dGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHdvdyB3YWtldXAgY29tcGxldGlvblxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc1Ny1cdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2MDpcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcJiMzNDtkZXZpY2UgcmVzdW1lZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc2MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzY1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTFrX2hpZl9vcHMgYXRoMTFrX2FoYl9oaWZfb3BzX2lwcTgwNzQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2NjpcdC5zdGFydCA9IGF0aDExa19haGJfc3RhcnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2NzpcdC5zdG9wID0gYXRoMTFrX2FoYl9zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Njg6XHQucmVhZDMyID0gYXRoMTFrX2FoYl9yZWFkMzIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2OTpcdC53cml0ZTMyID0gYXRoMTFrX2FoYl93cml0ZTMyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzAtXHQucmVhZCA9IE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3MTpcdC5pcnFfZW5hYmxlID0gYXRoMTFrX2FoYl9leHRfaXJxX2VuYWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzcyOlx0LmlycV9kaXNhYmxlID0gYXRoMTFrX2FoYl9leHRfaXJxX2Rpc2FibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3MzpcdC5tYXBfc2VydmljZV90b19waXBlID0gYXRoMTFrX2FoYl9tYXBfc2VydmljZV90b19waXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NzQ6XHQucG93ZXJfZG93biA9IGF0aDExa19haGJfcG93ZXJfZG93bixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc1Olx0LnBvd2VyX3VwID0gYXRoMTFrX2FoYl9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzc2LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTFrX2hpZl9vcHMgYXRoMTFrX2FoYl9oaWZfb3BzX3djbjY3NTAgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3OTpcdC5zdGFydCA9IGF0aDExa19wY2ljX3N0YXJ0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODA6XHQuc3RvcCA9IGF0aDExa19wY2ljX3N0b3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4MTpcdC5yZWFkMzIgPSBhdGgxMWtfcGNpY19yZWFkMzIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4MjpcdC53cml0ZTMyID0gYXRoMTFrX3BjaWNfd3JpdGUzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzgzLVx0LnJlYWQgPSBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODQ6XHQuaXJxX2VuYWJsZSA9IGF0aDExa19wY2ljX2V4dF9pcnFfZW5hYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODU6XHQuaXJxX2Rpc2FibGUgPSBhdGgxMWtfcGNpY19leHRfaXJxX2Rpc2FibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4NjpcdC5nZXRfbXNpX2FkZHJlc3MgPSAgYXRoMTFrX3BjaWNfZ2V0X21zaV9hZGRyZXNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODc6XHQuZ2V0X3VzZXJfbXNpX3ZlY3RvciA9IGF0aDExa19wY2ljX2dldF91c2VyX21zaV9hc3NpZ25tZW50LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODg6XHQubWFwX3NlcnZpY2VfdG9fcGlwZSA9IGF0aDExa19wY2ljX21hcF9zZXJ2aWNlX3RvX3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4OTpcdC5wb3dlcl9kb3duID0gYXRoMTFrX2FoYl9wb3dlcl9kb3duLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3OTA6XHQucG93ZXJfdXAgPSBhdGgxMWtfYWhiX3Bvd2VyX3VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3OTE6XHQuc3VzcGVuZCA9IGF0aDExa19haGJfaGlmX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MjpcdC5yZXN1bWUgPSBhdGgxMWtfYWhiX2hpZl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MzpcdC5jZV9pcnFfZW5hYmxlID0gYXRoMTFrX3BjaV9lbmFibGVfY2VfaXJxc19leGNlcHRfd2FrZV9pcnEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5NDpcdC5jZV9pcnFfZGlzYWJsZSA9IGF0aDExa19wY2lfZGlzYWJsZV9jZV9pcnFzX2V4Y2VwdF93YWtlX2lycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzk1LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzk3OnN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfZ2V0X3Jwcm9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5OTpcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MDAtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBhYi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MDQtXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LVx1MDAzZW9mX25vZGUsIFwmIzM0O3Fjb20scnByb2NcJiMzNDssIFx1MDAyNnJwcm9jX3BoYW5kbGUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjgwNTpcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBxNl9ycHJvYyBoYW5kbGVcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MDYtXHRcdHJldHVybiAtRU5PRU5UO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo4MTc6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX21zaV9yZXNvdXJjZXMoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTgyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODI3Olx0cmV0ID0gYXRoMTFrX3BjaWNfaW5pdF9tc2lfY29uZmlnKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODI4LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo4Mjk6XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBpbml0IG1zaSBjb25maWc6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MzAtXHRcdHJldHVybiByZXQ7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE4MzcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgU2ltdWxhdGlvbiBMYW5kc2NhcGUgZm9yIGF0aDExay9hdGgxMmsgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYGF0aDExa2AgZHJpdmVyLCBhbmQgSSBzZWUgaXQmIzM5O3MgZ290IG9wdGlvbnMgZm9yIGJvdGggQUhCIGFuZCBQQ0kgY29uZmlndXJhdGlvbnMsIHJpZ2h0PyBUaGF0IG1ha2VzIHNlbnNlLCBjb3ZlcmluZyB0aGUgZGlmZmVyZW50IGJ1cyBpbnRlcmZhY2VzLiBJIGFsc28gbm90aWNlIHRoaW5ncyBsaWtlIGBERUJVR0ZTYCBhbmQgdHJhY2luZyBzdXBwb3J0LCB3aGljaCBhcmUgcHJldHR5IHN0YW5kYXJkIGZvciBkZWJ1Z2dpbmcgYW5kIGluc3RydW1lbnRhdGlvbi4gTm93LCB3aGF0IEkmIzM5O20gcmVhbGx5IGN1cmlvdXMgYWJvdXQgaXM6IGRvZXMgdGhpcyBkcml2ZXIsIG9yIHRoZSBuZXdlciBgYXRoMTJrYCwgaGF2ZSBhbnkga2luZCBvZiBzaW11bGF0ZWQgaGFyZHdhcmUgZW52aXJvbm1lbnQ/IFNvbWV0aGluZyBsaWtlIGEgYGh3c2ltYCBzZXR1cCwgcGVyaGFwcz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGEgbWVjaGFuaXNtIGF2YWlsYWJsZSB0byBlbXVsYXRlIG9yIHNpbXVsYXRlIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIHdoaWNoIHdvdWxkIGJlIGludmFsdWFibGUgZm9yIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50LCBlc3BlY2lhbGx5IHdoZW4gYWN0dWFsIGhhcmR3YXJlIGlzbiYjMzk7dCByZWFkaWx5IGFjY2Vzc2libGUuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgaXMgc29tZXRoaW5nIGxpa2UgdGhhdCBhdmFpbGFibGUgZm9yIHRoZXNlIHBhcnRpY3VsYXIgZHJpdmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhdGgxMWsgYW5kIGF0aDEyayBEcml2ZXJzKioKCk9rYXksIHNvIGBtYWM4MDIxMV9od3NpbWAgaXMgdGhhdCBnZW5lcmljIG1hYzgwMjExIGRyaXZlciDigJMgcmlnaHQsIGdvdCBpdC4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhlc2UgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCBzaW5jZSB0aGV5IHNlZW0gdG8gZGVwZW5kIG9uIHBoeXNpY2FsIGhhcmR3YXJlIChQQ0kgb3IgQUhCKT8KClRoZSB1c3VhbCBhcHByb2FjaCBmb3IgUENJIGRldmljZXMgaW52b2x2ZXMgZWl0aGVyIGEgdmlydHVhbCBQQ0kgZGV2aWNlIG9yIGxldmVyYWdpbmcgc29tZXRoaW5nIGxpa2UgYHZoY2lgIGZvciBVU0Igb3IgYHZmaW9gIGZvciBQQ0kgd2l0aGluIFN5emthbGxlci4gU3l6a2FsbGVyIGhhcyB0aGUgYHN5el9wY2lfZGV2aWNlYCBjYWxsLCBidXQgdGhhdCAqcmVxdWlyZXMqIHRoZSBkcml2ZXIgdG8gYmluZCB0byBhIFBDSSBkZXZpY2UuIEFuZCwgSSB0aGluayBTeXprYWxsZXIgZG9lcyB1c2UgYHZoY2lgIGZvciBVU0IgaW5qZWN0aW9uLiBCdXQsIGNhbiBpdCBhbHNvIGVtdWxhdGUgUENJIGRldmljZXMsIG9yIGRvZXMgaXQgdXNlIGBzeXpfcGNpX2RldmljZWAgZm9yIHRoYXQ/IFdhaXQsIGRvZXMgU3l6a2FsbGVyICphY3R1YWxseSogc3VwcG9ydCBmdXp6aW5nIFBDSSBkcml2ZXJzPwoKWWVzLCBhZnRlciBhIHF1aWNrIHJlbWluZGVyLCBTeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgZnV6emluZyBQQ0kgZHJpdmVycywgZWl0aGVyIGRpcmVjdGx5IHRocm91Z2ggYHN5el9wY2lfZGV2aWNlYCBvciBzaW1pbGFyIG1lY2hhbmlzbXMsIG9yIHBvdGVudGlhbGx5IGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlLiBCdXQgaGVyZSYjMzk7cyB0aGUga2lja2VyOiB3aXRoIGNvbXBsZXggd2lyZWxlc3MgZHJpdmVycyBsaWtlIGBhdGgxMWtgLCByZWFjaGluZyBhbnkgbWVhbmluZ2Z1bCBjb2RlIGRlcHRoIHdpdGhvdXQgYSBmdWxsIGhhcmR3YXJlIGVtdWxhdG9yIGlzIGluY3JlZGlibHkgZGlmZmljdWx0LiBUaGVzZSBkcml2ZXJzIGFyZSBmaW5pY2t5IOKAkyB0aGV5JiMzOTtyZSBleHBlY3Rpbmcgc3BlY2lmaWMgZmlybXdhcmUgdG8gbG9hZCwgdmVyeSBzcGVjaWZpYyBETUEgcmluZ3MgdG8gYmUgc2V0IHVwIGluIGEgc3BlY2lmaWMgd2F5LCBhbmQgcHJlY2lzZSByZXNwb25zZXMgZnJvbSB0aGUgaGFyZHdhcmUuCgpTbywgdGhlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNoZWNrIGlmIGBhdGgxMWtgIG9yIGBhdGgxMmtgIGNhbiBldmVuIGluaXRpYWxpemUgd2l0aG91dCB0aGF0IGZpcm13YXJlLCBvciBpZiB0aGV5IGp1c3QgZmFpbCBlYXJseS4gVGhhdCB3b3VsZCBiZSB0aGUgZmlyc3QgaHVyZGxlIGluIHNlZWluZyBob3cgdXNlZnVsIHRoaXMgcGF0Y2ggd291bGQgYmUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYzoxMTpzdGF0aWMgaW50IGF0aDExa19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTItXHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYz0xNDc9aW50IGF0aDExa19md19wcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmM6MTUxOlx0cmV0ID0gYXRoMTFrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDExS19GV19BUEkyX0ZJTEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTE1Mi1cdGlmIChyZXQgPT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTg2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpZiB0aGlzIGBhdGgxMWtgIGRyaXZlciBuZWVkcyBmaXJtd2FyZSB0byBydW4sIGl0JiMzOTtzIGdvaW5nIHRvIGJlIGEgZGlzYXN0ZXIgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIGNvcnJlY3QgZmlybXdhcmUgbG9hZGVkIGFuZCB0aGUgaGFyZHdhcmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHBpdGZhbGwuIEJ1dCB3YWl0LCBpdCYjMzk7cyBub3QganVzdCB0aGUgZHJpdmVyIGl0c2VsZi4gVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgbmV0L21hYzgwMjExL3R4LmNgIGFuZCBgaW5jbHVkZS9uZXQvbWFjODAyMTEuaGAuIFRoYXQmIzM5O3MgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIGV4dGVuZGluZyB0aGUgY29yZSBNQUM4MDIxMSBmdW5jdGlvbmFsaXR5LgoKU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGEgbmV3IGZ1bmN0aW9uLCBgaWVlZTgwMjExX3R4X3BlZWtgLCBoYXMgYmVlbiBhZGRlZCB0byBgbmV0L21hYzgwMjExL3R4LmNgIGFuZCBleHBvcnRlZC4gVGhpcyBtYWtlcyBpdCBhIHBhcnQgb2YgdGhlIGNvcmUgbWFjODAyMTEsIG1lYW5pbmcgaXQmIzM5O3MgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGZyb20gbXVsdGlwbGUgZHJpdmVycy4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBuZXcgZnVuY3Rpb24uIENhbiB0aGlzIGBpZWVlODAyMTFfdHhfcGVla2AgYWN0dWFsbHkgYmUgdHJpZ2dlcmVkLCBvciBpcyBpdCBpc29sYXRlZD8KCk9rYXksIGZyb20gdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBmcm9tIGBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWVgIGFuZCBgYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlYC4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGEgYml0LiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIHNob3VsZCBjaGVjayBpZiBhbnkgb3RoZXIgZHJpdmVycywgYmVzaWRlcyB0aG9zZSB0d28sIGFyZSB1dGlsaXppbmcgYGllZWU4MDIxMV90eF9wZWVrYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkgaGF2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMgb2YgaG93IHRoZSBmdXp6aW5nIGlzIHdvcmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV90eF9wZWVrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9MTAwNjg9c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwMDkxOlx0XHRwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDA5Mi1cdFx0aWYgKCFwZWVrX3NrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MTEwMz1zdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MTEzMjpcdFx0cGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTMzLVx0XHRpZiAoIXBlZWtfc2tiKVxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc0Mj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzQ1LS8qKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzQ2OiAqIGllZWU4MDIxMV90eF9wZWVrIC0gcGVlayBhdCB0aGUgbmV4dCBwYWNrZXQgaW4gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzQ3LSAqXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYxLSAqL1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzYyOmNvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc2My1cdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSk7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MzgwOT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTM4NTktXG5uZXQvbWFjODAyMTEvdHguYzozODYwOmNvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbm5ldC9tYWM4MDIxMS90eC5jLTM4NjEtXHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzg5Ni19XG5uZXQvbWFjODAyMTEvdHguYzozODk3OkVYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV90eF9wZWVrKTtcbm5ldC9tYWM4MDIxMS90eC5jLTM4OTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjAwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBpZWVlODAyMTFfdHhfcGVla2AgaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KioKCk9rYXksIHNvIGl0IHNlZW1zIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBhdGgxMWtgIGFuZCBgYXRoMTJrYCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBJZiwgaHlwb3RoZXRpY2FsbHksIEkgY2FuJiMzOTt0IGdldCBgYXRoMTFrYCBvciBgYXRoMTJrYCBpbml0aWFsaXplZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdGhlbiBgaWVlZTgwMjExX3R4X3BlZWtgIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIHRoYXQgc2NlbmFyaW8uIFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZTogY2FuIEkgZ2V0IGVpdGhlciBvZiB0aG9zZSBkcml2ZXJzIHVwIGFuZCBydW5uaW5nIGluIFFFTVU/CgpNeSBleHBlcmllbmNlIHN1Z2dlc3RzIFBDSSBkcml2ZXJzLCBpbiBnZW5lcmFsLCBhcmUgdXN1YWxseSBwcm9iZWFibGUgaWYgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgZXhpc3RzLiBBbmQsIG9mIGNvdXJzZSwgdGhlcmUmIzM5O3MgYWx3YXlzIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGBzeXprYWxsZXJgJiMzOTtzIGBzeXpfcGNpX2RldmljZWAgY291bGQgdHJpZ2dlciB0aGF0IHByb2JlIGZ1bmN0aW9uLiBIb3dldmVyLCBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGV2ZW4gaWYgdGhlIGBhdGgxMWtgIHByb2JlICpkb2VzKiBnZXQgY2FsbGVkLCBpdCYjMzk7bGwgcHJvYmFibHkgZmFpbCBwcmV0dHkgZWFybHkgb24sIHNwZWNpZmljYWxseSB3aGVuIGl0IHRyaWVzIHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIG9yIHdoZW4gaXQmIzM5O3MgdHJ5aW5nIHRvIGxvYWQgdGhlIGZpcm13YXJlLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBzdHVtYmxpbmcgYmxvY2sgaW4gdmlydHVhbGl6YXRpb24uCgpUbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgbGlrZWx5IGZhaWx1cmUgcG9pbnRzLCBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgYXRoMTFrX3BjaV9wcm9iZWAgZnVuY3Rpb24gaXRzZWxmLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG5leHQgbG9naWNhbCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfcGNpX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDA9c3RhdGljIGludCBhdGgxMWtfcGNpX3NldF9pcnFfYWZmaW5pdHlfaGludChzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzo5NDk6c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy05NTAtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTI5Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYXRoMTFrX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVx0LmlkX3RhYmxlID0gYXRoMTFrX3BjaV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTI5OTpcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMDAtXHQucmVtb3ZlID0gYXRoMTFrX3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDY4CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIGBhdGgxMWtfcGNpX3Byb2JlYC4gVGhpcyBpcyB3aGVyZSB0aGUgaW5pdGlhbCBzZXR1cCBhbmQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBQQ0ktYmFzZWQgUXVhbGNvbW0gQXRoZXJvcyBXaS1GaSBkcml2ZXIgaGFwcGVucywgc28gaXQmIzM5O3MgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgc28gSSBjYW4gcXVpY2tseSBhbmQgZWZmaWNpZW50bHkgZGV0ZXJtaW5lIGlmIGFueSBlcnJvcnMgb2NjdXIsIG9yIGlmIHRoZXJlIGlzIHRoZSBuZWVkIHRvIGFkanVzdCB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk0OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDk0OTpcdHN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiA5NTA6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4gOTUxOlx0e1xuIDk1MjpcdFx0c3RydWN0IGF0aDExa19iYXNlICphYjtcbiA5NTM6XHRcdHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2k7XG4gOTU0Olx0XHR1MzIgc29jX2h3X3ZlcnNpb25fbWFqb3IsIHNvY19od192ZXJzaW9uX21pbm9yO1xuIDk1NTpcdFx0aW50IHJldDtcbiA5NTY6XHRcdHUzMiBzdWJfdmVyc2lvbjtcbiA5NTc6XHRcbiA5NTg6XHRcdGFiID0gYXRoMTFrX2NvcmVfYWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqYWJfcGNpKSwgQVRIMTFLX0JVU19QQ0kpO1xuIDk1OTpcdFxuIDk2MDpcdFx0aWYgKCFhYikge1xuIDk2MTpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgYXRoMTFrIGJhc2VcXG5cJiMzNDspO1xuIDk2MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA5NjM6XHRcdH1cbiA5NjQ6XHRcbiA5NjU6XHRcdGFiLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIDk2NjpcdFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIGFiKTtcbiA5Njc6XHRcdGFiX3BjaSA9IGF0aDExa19wY2lfcHJpdihhYik7XG4gOTY4Olx0XHRhYl9wY2ktXHUwMDNlZGV2X2lkID0gcGNpX2Rldi1cdTAwM2VkZXZpY2U7XG4gOTY5Olx0XHRhYl9wY2ktXHUwMDNlYWIgPSBhYjtcbiA5NzA6XHRcdGFiX3BjaS1cdTAwM2VwZGV2ID0gcGRldjtcbiA5NzE6XHRcdGFiLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZhdGgxMWtfcGNpX2hpZl9vcHM7XG4gOTcyOlx0XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTFLX0ZJUk1XQVJFX01PREVfTk9STUFMO1xuIDk3MzpcdFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIGFiKTtcbiA5NzQ6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFiX3BjaS1cdTAwM2V3aW5kb3dfbG9jayk7XG4gOTc1Olx0XG4gOTc2Olx0XHQvKiBTZXQgZml4ZWRfbWVtX3JlZ2lvbiB0byB0cnVlIGZvciBwbGF0Zm9ybXMgc3VwcG9ydCByZXNlcnZlZCBtZW1vcnlcbiA5Nzc6XHRcdCAqIGZyb20gRFQuIElmIG1lbW9yeSBpcyByZXNlcnZlZCBmcm9tIERUIGZvciBGVywgYXRoMTFrIGRyaXZlciBuZWVkIG5vdFxuIDk3ODpcdFx0ICogYWxsb2NhdGUgbWVtb3J5LlxuIDk3OTpcdFx0ICovXG4gOTgwOlx0XHRpZiAob2ZfcHJvcGVydHlfcHJlc2VudChhYi1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7bWVtb3J5LXJlZ2lvblwmIzM0OykpXG4gOTgxOlx0XHRcdHNldF9iaXQoQVRIMTFLX0ZMQUdfRklYRURfTUVNX1JHTiwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKTtcbiA5ODI6XHRcbiA5ODM6XHRcdHJldCA9IGF0aDExa19wY2lfY2xhaW0oYWJfcGNpLCBwZGV2KTtcbiA5ODQ6XHRcdGlmIChyZXQpIHtcbiA5ODU6XHRcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGNsYWltIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG4gOTg2Olx0XHRcdGdvdG8gZXJyX2ZyZWVfY29yZTtcbiA5ODc6XHRcdH1cbiA5ODg6XHRcbiA5ODk6XHRcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQk9PVCwgXCYjMzQ7cGNpIHByb2JlICUwNHg6JTA0eCAlMDR4OiUwNHhcXG5cJiMzNDssXG4gOTkwOlx0XHRcdCAgIHBkZXYtXHUwMDNldmVuZG9yLCBwZGV2LVx1MDAzZWRldmljZSxcbiA5OTE6XHRcdFx0ICAgcGRldi1cdTAwM2VzdWJzeXN0ZW1fdmVuZG9yLCBwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UpO1xuIDk5MjpcdFxuIDk5MzpcdFx0YWItXHUwMDNlaWQudmVuZG9yID0gcGRldi1cdTAwM2V2ZW5kb3I7XG4gOTk0Olx0XHRhYi1cdTAwM2VpZC5kZXZpY2UgPSBwZGV2LVx1MDAzZWRldmljZTtcbiA5OTU6XHRcdGFiLVx1MDAzZWlkLnN1YnN5c3RlbV92ZW5kb3IgPSBwZGV2LVx1MDAzZXN1YnN5c3RlbV92ZW5kb3I7XG4gOTk2Olx0XHRhYi1cdTAwM2VpZC5zdWJzeXN0ZW1fZGV2aWNlID0gcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlO1xuIDk5NzpcdFxuIDk5ODpcdFx0c3dpdGNoIChwY2lfZGV2LVx1MDAzZWRldmljZSkge1xuIDk5OTpcdFx0Y2FzZSBRQ0E2MzkwX0RFVklDRV9JRDpcbjEwMDA6XHRcdFx0cmV0ID0gYXRoMTFrX3BjaWNfcmVnaXN0ZXJfcGNpX29wcyhhYiwgXHUwMDI2YXRoMTFrX3BjaV9vcHNfcWNhNjM5MCk7XG4xMDAxOlx0XHRcdGlmIChyZXQpIHtcbjEwMDI6XHRcdFx0XHRhdGgxMWtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gcmVnaXN0ZXIgUENJIG9wczogJWRcXG5cJiMzNDssIHJldCk7XG4xMDAzOlx0XHRcdFx0Z290byBlcnJfcGNpX2ZyZWVfcmVnaW9uO1xuMTAwNDpcdFx0XHR9XG4xMDA1Olx0XG4xMDA2Olx0XHRcdGF0aDExa19wY2lfcmVhZF9od192ZXJzaW9uKGFiLCBcdTAwMjZzb2NfaHdfdmVyc2lvbl9tYWpvcixcbjEwMDc6XHRcdFx0XHRcdFx0ICAgXHUwMDI2c29jX2h3X3ZlcnNpb25fbWlub3IpO1xuMTAwODpcdFx0XHRzd2l0Y2ggKHNvY19od192ZXJzaW9uX21ham9yKSB7XG4xMDA5Olx0XHRcdGNhc2UgMjpcbjEwMTA6XHRcdFx0XHRhYi1cdTAwM2Vod19yZXYgPSBBVEgxMUtfSFdfUUNBNjM5MF9IVzIwO1xuMTAxMTpcdFx0XHRcdGJyZWFrO1xuMTAxMjpcdFx0XHRkZWZhdWx0OlxuMTAxMzpcdFx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1Vuc3VwcG9ydGVkIFFDQTYzOTAgU09DIGhhcmR3YXJlIHZlcnNpb246ICVkICVkXFxuXCYjMzQ7LFxuMTAxNDpcdFx0XHRcdFx0c29jX2h3X3ZlcnNpb25fbWFqb3IsIHNvY19od192ZXJzaW9uX21pbm9yKTtcbjEwMTU6XHRcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbjEwMTY6XHRcdFx0XHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XG4xMDE3Olx0XHRcdH1cbjEwMTg6XHRcbjEwMTk6XHRcdFx0YnJlYWs7XG4xMDIwOlx0XHRjYXNlIFFDTjkwNzRfREVWSUNFX0lEOlxuMTAyMTpcdFx0XHRyZXQgPSBhdGgxMWtfcGNpY19yZWdpc3Rlcl9wY2lfb3BzKGFiLCBcdTAwMjZhdGgxMWtfcGNpX29wc19xY245MDc0KTtcbjEwMjI6XHRcdFx0aWYgKHJldCkge1xuMTAyMzpcdFx0XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBQQ0kgb3BzOiAlZFxcblwmIzM0OywgcmV0KTtcbjEwMjQ6XHRcdFx0XHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XG4xMDI1Olx0XHRcdH1cbjEwMjY6XHRcdFx0YWItXHUwMDNlaHdfcmV2ID0gQVRIMTFLX0hXX1FDTjkwNzRfSFcxMDtcbjEwMjc6XHRcdFx0YnJlYWs7XG4xMDI4Olx0XHRjYXNlIFdDTjY4NTVfREVWSUNFX0lEOlxuMTAyOTpcdFx0XHRyZXQgPSBhdGgxMWtfcGNpY19yZWdpc3Rlcl9wY2lfb3BzKGFiLCBcdTAwMjZhdGgxMWtfcGNpX29wc19xY2E2MzkwKTtcbjEwMzA6XHRcdFx0aWYgKHJldCkge1xuMTAzMTpcdFx0XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBQQ0kgb3BzOiAlZFxcblwmIzM0OywgcmV0KTtcbjEwMzI6XHRcdFx0XHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XG4xMDMzOlx0XHRcdH1cbjEwMzQ6XHRcdFx0YWItXHUwMDNlaWQuYmRmX3NlYXJjaCA9IEFUSDExS19CREZfU0VBUkNIX0JVU19BTkRfQk9BUkQ7XG4xMDM1Olx0XHRcdGF0aDExa19wY2lfcmVhZF9od192ZXJzaW9uKGFiLCBcdTAwMjZzb2NfaHdfdmVyc2lvbl9tYWpvcixcbjEwMzY6XHRcdFx0XHRcdFx0ICAgXHUwMDI2c29jX2h3X3ZlcnNpb25fbWlub3IpO1xuMTAzNzpcdFx0XHRzd2l0Y2ggKHNvY19od192ZXJzaW9uX21ham9yKSB7XG4xMDM4Olx0XHRcdGNhc2UgMjpcbjEwMzk6XHRcdFx0XHRzd2l0Y2ggKHNvY19od192ZXJzaW9uX21pbm9yKSB7XG4xMDQwOlx0XHRcdFx0Y2FzZSAweDAwOlxuMTA0MTpcdFx0XHRcdGNhc2UgMHgwMTpcbjEwNDI6XHRcdFx0XHRcdGFiLVx1MDAzZWh3X3JldiA9IEFUSDExS19IV19XQ042ODU1X0hXMjA7XG4xMDQzOlx0XHRcdFx0XHRicmVhaztcbjEwNDQ6XHRcdFx0XHRjYXNlIDB4MTA6XG4xMDQ1Olx0XHRcdFx0Y2FzZSAweDExOlxuMTA0NjpcdFx0XHRcdFx0c3ViX3ZlcnNpb24gPSBhdGgxMWtfcGNpY19yZWFkMzIoYWIsIFRDU1JfU09DX0hXX1NVQl9WRVIpO1xuMTA0NzpcdFx0XHRcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19QQ0ksIFwmIzM0O3N1Yl92ZXJzaW9uIDB4JXhcXG5cJiMzNDssXG4xMDQ4Olx0XHRcdFx0XHRcdCAgIHN1Yl92ZXJzaW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVnVsbmVyYWJpbGl0eSBFeHBsb3JhdGlvbiBpbiBhdGgxMWsgRHJpdmVyKioKCk9rYXksIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGluIGBhdGgxMWtgIHJlbGllcyBvbiBgYXRoMTFrX3BjaV9yZWFkX2h3X3ZlcnNpb25gIGFuZCBgYXRoMTFrX3BjaWNfcmVhZDMyYCB0byByZWFkIHRoZSBoYXJkd2FyZSB2ZXJzaW9uLiBNeSBpbml0aWFsIGNvbmNlcm4gaXMgdGhhdCBpZiBhIGZ1enplciwgc3BlY2lmaWNhbGx5IG9uZSBsaWtlIGBzeXpfcGNpX2RldmljZWAsIGlzIG1hbmlwdWxhdGluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCBpdCBjYW4gZWZmZWN0aXZlbHkgc3Bvb2YgdGhlc2UgaGFyZHdhcmUgdmVyc2lvbiByZWFkcy4gVGhpcyBjb3VsZCBhbGxvdyBpdCB0byBieXBhc3MgdGhlIGludGVuZGVkIGNoZWNrcyBhbmQgcG90ZW50aWFsbHkgdHJpZ2dlciBzdWJzZXF1ZW50LCB1bmludGVuZGVkIGNvZGUgcGF0aHMuCgpUaGUga2V5IHF1ZXN0aW9uIHRoZW4gYmVjb21lczogY2FuIHRoZSBmdXp6ZXIgdXNlIHRoYXQgc3Bvb2ZlZCBpbmZvcm1hdGlvbiB0byBieXBhc3MgdGhlIHJlcXVpcmVtZW50IG9mIGZpcm13YXJlIHRvIGJlIGxvYWRlZD8gSSBuZWVkIHRvIGtub3cgaWYgdGhlIGBhdGgxMWtgIGRyaXZlciBoYXMgY2hlY2tzIGZvciBmaXJtd2FyZS4gSWYgaXQgZG9lcywgdGhlbiB0aGUgYWJpbGl0eSB0byBtYW5pcHVsYXRlIHRoZSBoYXJkd2FyZSB2ZXJzaW9uIG1heSBhbGxvdyB0aGUgZnV6emVyIHRvIGJ5cGFzcyBjaGVja3MgcmVsYXRlZCB0byBmaXJtd2FyZSBsb2FkaW5nLgoKSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIGBhdGgxMWtfY29yZV9pbml0YCwgdG8gY29uZmlybSBpZiBmaXJtd2FyZSBsb2FkaW5nIGlzIGluZGVlZCBlc3NlbnRpYWwgYW5kIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGhhcmR3YXJlIHZlcnNpb25zIGFyZSB1dGlsaXplZCBpbiB0aGF0IGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19jb3JlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTExMDg9c3RhdGljIGludCBhdGgxMWtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTk1Olx0cmV0ID0gYXRoMTFrX2NvcmVfaW5pdChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExOTYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjY4ND1FWFBPUlRfU1lNQk9MKGF0aDExa19jb3JlX3BtX25vdGlmaWVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjY4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjI2ODY6aW50IGF0aDExa19jb3JlX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI2ODcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI3MTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjcxODpFWFBPUlRfU1lNQk9MKGF0aDExa19jb3JlX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjcxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaD0xMjcwPWludCBhdGgxMWtfY29yZV9wcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oOjEyNzE6aW50IGF0aDExa19jb3JlX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphdGgxMWspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtMTI3Mi12b2lkIGF0aDExa19jb3JlX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmF0aDExayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDk9c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTE0MDpcdHJldCA9IGF0aDExa19jb3JlX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMTQxLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODYyMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGF0aDExa19jb3JlX2luaXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvcmUgb2YgdGhpcyBkcml2ZXIgaW5pdGlhbGl6ZXMsIHdoYXQgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBhcmUuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgc2V0IHVwLCB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGJlaW5nIGFjY2Vzc2VkLCBhbmQgYW55IGNydWNpYWwgZWFybHkgY2hlY2tzIG9yIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIOKAkyBpdCYjMzk7cyBvZnRlbiB0aGUgc2VxdWVuY2UgdGhhdCByZXZlYWxzIHRoZSBtb3N0IGltcG9ydGFudCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55dGhpbmcgcmVsYXRlZCB0byBwb3dlciBtYW5hZ2VtZW50IG9yIGNsb2NrIHNldHVwLCBhcyB0aG9zZSBhcmUgb2Z0ZW4gY3JpdGljYWwgZm9yIGEgbmV3IGRldmljZSBhbmQgY2FuIGFmZmVjdCBldmVyeXRoaW5nIHRoYXQgZm9sbG93cy4gSSBleHBlY3QgdGhlcmUgdG8gYmUgYSBsb3Qgb2YgaGFyZHdhcmUtc3BlY2lmaWMgZGV0YWlsLCBidXQgSSYjMzk7bGwgZm9jdXMgb24gdGhlIGhpZ2hlci1sZXZlbCBsb2dpYy4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgZHJpdmVyJiMzOTtzIGVudHJ5IHBvaW50IGFuZCBvdmVyYWxsIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2ODYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY4NjpcdGludCBhdGgxMWtfY29yZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4yNjg3Olx0e1xuMjY4ODpcdFx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcbjI2ODk6XHRcdGludCByZXQ7XG4yNjkwOlx0XG4yNjkxOlx0XHRkbWlfaWQgPSBkbWlfZmlyc3RfbWF0Y2goYXRoMTFrX3BtX3F1aXJrX3RhYmxlKTtcbjI2OTI6XHRcdGlmIChkbWlfaWQpXG4yNjkzOlx0XHRcdGFiLVx1MDAzZXBtX3BvbGljeSA9IChrZXJuZWxfdWxvbmdfdClkbWlfaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG4yNjk0Olx0XHRlbHNlXG4yNjk1Olx0XHRcdGFiLVx1MDAzZXBtX3BvbGljeSA9IEFUSDExS19QTV9ERUZBVUxUO1xuMjY5NjpcdFxuMjY5NzpcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19CT09ULCBcJiMzNDtwbSBwb2xpY3kgJXVcXG5cJiMzNDssIGFiLVx1MDAzZXBtX3BvbGljeSk7XG4yNjk4Olx0XG4yNjk5Olx0XHRyZXQgPSBhdGgxMWtfY29yZV9wbV9ub3RpZmllcl9yZWdpc3RlcihhYik7XG4yNzAwOlx0XHRpZiAocmV0KSB7XG4yNzAxOlx0XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBQTSBub3RpZmllcjogJWRcXG5cJiMzNDssIHJldCk7XG4yNzAyOlx0XHRcdHJldHVybiByZXQ7XG4yNzAzOlx0XHR9XG4yNzA0Olx0XG4yNzA1Olx0XHRyZXQgPSBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKGFiKTtcbjI3MDY6XHRcdGlmIChyZXQpIHtcbjI3MDc6XHRcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBzb2MgY29yZTogJWRcXG5cJiMzNDssIHJldCk7XG4yNzA4Olx0XHRcdGdvdG8gZXJyX3VucmVnaXN0ZXJfcG1fbm90aWZpZXI7XG4yNzA5Olx0XHR9XG4yNzEwOlx0XG4yNzExOlx0XHRyZXR1cm4gMDtcbjI3MTI6XHRcbjI3MTM6XHRlcnJfdW5yZWdpc3Rlcl9wbV9ub3RpZmllcjpcbjI3MTQ6XHRcdGF0aDExa19jb3JlX3BtX25vdGlmaWVyX3VucmVnaXN0ZXIoYWIpO1xuMjcxNTpcdFxuMjcxNjpcdFx0cmV0dXJuIHJldDtcbjI3MTc6XHR9XG4yNzE4Olx0RVhQT1JUX1NZTUJPTChhdGgxMWtfY29yZV9pbml0KTtcbjI3MTk6XHRcbjI3MjA6XHR2b2lkIGF0aDExa19jb3JlX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuMjcyMTpcdHtcbjI3MjI6XHRcdG11dGV4X2xvY2soXHUwMDI2YWItXHUwMDNlY29yZV9sb2NrKTtcbjI3MjM6XHRcbjI3MjQ6XHRcdGF0aDExa19jb3JlX3BkZXZfZGVzdHJveShhYik7XG4yNzI1Olx0XHRhdGgxMWtfY29yZV9zdG9wKGFiKTtcbjI3MjY6XHRcbjI3Mjc6XHRcdG11dGV4X3VubG9jayhcdTAwMjZhYi1cdTAwM2Vjb3JlX2xvY2spO1xuMjcyODpcdFxuMjcyOTpcdFx0YXRoMTFrX2hpZl9wb3dlcl9kb3duKGFiLCBmYWxzZSk7XG4yNzMwOlx0XHRhdGgxMWtfbWFjX2Rlc3Ryb3koYWIpO1xuMjczMTpcdFx0YXRoMTFrX2NvcmVfc29jX2Rlc3Ryb3koYWIpO1xuMjczMjpcdFx0YXRoMTFrX2NvcmVfcG1fbm90aWZpZXJfdW5yZWdpc3RlcihhYik7XG4yNzMzOlx0fVxuMjczNDpcdEVYUE9SVF9TWU1CT0woYXRoMTFrX2NvcmVfZGVpbml0KTtcbjI3MzU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk2MzMKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gYXRoMTFrX2NvcmVfc29jX2NyZWF0ZSoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgYGF0aDExa19jb3JlX3NvY19jcmVhdGVgIGlzIG1vcmUgaW52b2x2ZWQgdGhhbiBqdXN0IGEgc2ltcGxlIGluc3RhbnRpYXRpb24sIGl0IGFwcGVhcnMgdG8gaGFuZGxlIHNpZ25pZmljYW50IGluaXRpYWxpemF0aW9uIHN0ZXBzLiBHaXZlbiBpdHMgbmFtaW5nIGNvbnZlbnRpb24sIHRoZSAmIzM0O3NvYyYjMzQ7IHBhcnQgbGlrZWx5IHJlZmVycyB0byBTeXN0ZW0tb24tQ2hpcCwgd2hpY2ggbWVhbnMgaXQgcHJvYmFibHkgZGVhbHMgd2l0aCBjb25maWd1cmluZyBoYXJkd2FyZSByZXNvdXJjZXMgYW5kIHNldHRpbmcgdXAgdGhlIGNvcmUgb3BlcmF0aW5nIGVudmlyb25tZW50IGZvciB0aGUgd2lyZWxlc3MgY2hpcCBvbiB0aGUgYm9hcmQuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIGZ1bmN0aW9uLCBzaW5jZSBpdCBpcyBhbiBpZGVhbCBwb2ludCB0byBmb2N1cyBvbiB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UuIExldCYjMzk7cyBzZWUgZXhhY3RseSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGhpbi4gSXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0IGlzIGdvaW5nIHRvIGJlIGtleSB0byBhbnkgZGVlcGVyIGFuYWx5c2lzIG9mIHRoZSBhdGgxMWsgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfY29yZV9zb2NfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MTk3Mz1zdGF0aWMgdm9pZCBhdGgxMWtfY29yZV9zdG9wKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMTk4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjE5ODU6c3RhdGljIGludCBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0xOTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yNjg2PWludCBhdGgxMWtfY29yZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjcwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjI3MDU6XHRyZXQgPSBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI3MDYtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTczCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYDoKCioqQW5hbHl6aW5nIGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byBgYXRoMTFrX2NvcmVfc29jX2NyZWF0ZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKiBhdCBhIGhpZ2ggbGV2ZWwuIEZyb20gdGhlIG5hbWUsIGl0JiMzOTtzIGNsZWFyIGl0JiMzOTtzIGFib3V0IHRoZSBjcmVhdGlvbiBvZiBzb21ldGhpbmcgY29yZSB0byB0aGUgU09DIChTeXN0ZW0tb24tYS1DaGlwKSBpbnRlcmFjdGlvbiB3aXRoaW4gdGhlIGF0aDExayBkcml2ZXIuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGlzIGludm9sdmVzIGluaXRpYWxpemluZyBkYXRhIHN0cnVjdHVyZXMsIHByb2JhYmx5IGFsbG9jYXRpbmcgbWVtb3J5LCBhbmQgc2V0dGluZyB1cCB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyBuZWVkZWQgYmV0d2VlbiB0aGUgaG9zdCAobGlrZWx5IExpbnV4KSBhbmQgdGhlIGF0aDExayBoYXJkd2FyZS4KCkkgc3VzcGVjdCB0aGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGluIGJyaW5naW5nIHVwIHRoZSB3aXJlbGVzcyBpbnRlcmZhY2UuIEl0JiMzOTtzIGxpa2VseSBzZXR0aW5nIHVwIHRoZSBpbml0aWFsIHN0YXRlIGZvciBwb3dlciBtYW5hZ2VtZW50LCBjbG9jayBjb250cm9sLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBtYXliZSBldmVuIGZpcm13YXJlIGxvYWRpbmcgb3IgdHJpZ2dlcmluZy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIGFyZ3VtZW50cyBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIHNlZSB3aGF0IGRhdGEgaXQgdGFrZXMgYXMgaW5wdXQgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBCYXNlZCBvbiB0aGF0IGluZm9ybWF0aW9uLCBJJiMzOTtsbCBiZSBhYmxlIHRvIGNvbmZpcm0gb3IgYWRqdXN0IG15IGluaXRpYWwgdGhvdWdodHMuIEkmIzM5O20gYWxzbyByZWFkeSB0byBhbmFseXplIHRoZSByZXR1cm4gdmFsdWUgdG8gYXNzZXNzIGhvdyBpdCByZXBvcnRzIGFueSBlcnJvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE5ODU6XHRzdGF0aWMgaW50IGF0aDExa19jb3JlX3NvY19jcmVhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcbjE5ODY6XHR7XG4xOTg3Olx0XHRpbnQgcmV0O1xuMTk4ODpcdFxuMTk4OTpcdFx0aWYgKGF0aDExa19mdG1fbW9kZSkge1xuMTk5MDpcdFx0XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTFLX0ZJUk1XQVJFX01PREVfRlRNO1xuMTk5MTpcdFx0XHRhdGgxMWtfaW5mbyhhYiwgXCYjMzQ7Qm9vdGluZyBpbiBmYWN0b3J5IHRlc3QgbW9kZVxcblwmIzM0Oyk7XG4xOTkyOlx0XHR9XG4xOTkzOlx0XG4xOTk0Olx0XHRyZXQgPSBhdGgxMWtfcW1pX2luaXRfc2VydmljZShhYik7XG4xOTk1Olx0XHRpZiAocmV0KSB7XG4xOTk2Olx0XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBpbml0aWFsaXplIHFtaSA6JWRcXG5cJiMzNDssIHJldCk7XG4xOTk3Olx0XHRcdHJldHVybiByZXQ7XG4xOTk4Olx0XHR9XG4xOTk5Olx0XG4yMDAwOlx0XHRyZXQgPSBhdGgxMWtfZGVidWdmc19zb2NfY3JlYXRlKGFiKTtcbjIwMDE6XHRcdGlmIChyZXQpIHtcbjIwMDI6XHRcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBhdGgxMWsgZGVidWdmc1xcblwmIzM0Oyk7XG4yMDAzOlx0XHRcdGdvdG8gZXJyX3FtaV9kZWluaXQ7XG4yMDA0Olx0XHR9XG4yMDA1Olx0XG4yMDA2Olx0XHRyZXQgPSBhdGgxMWtfaGlmX3Bvd2VyX3VwKGFiKTtcbjIwMDc6XHRcdGlmIChyZXQpIHtcbjIwMDg6XHRcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBvd2VyIHVwIDolZFxcblwmIzM0OywgcmV0KTtcbjIwMDk6XHRcdFx0Z290byBlcnJfZGVidWdmc19yZWc7XG4yMDEwOlx0XHR9XG4yMDExOlx0XG4yMDEyOlx0XHRyZXR1cm4gMDtcbjIwMTM6XHRcbjIwMTQ6XHRlcnJfZGVidWdmc19yZWc6XG4yMDE1Olx0XHRhdGgxMWtfZGVidWdmc19zb2NfZGVzdHJveShhYik7XG4yMDE2Olx0ZXJyX3FtaV9kZWluaXQ6XG4yMDE3Olx0XHRhdGgxMWtfcW1pX2RlaW5pdF9zZXJ2aWNlKGFiKTtcbjIwMTg6XHRcdHJldHVybiByZXQ7XG4yMDE5Olx0fVxuMjAyMDpcdFxuMjAyMTpcdHN0YXRpYyB2b2lkIGF0aDExa19jb3JlX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4yMDIyOlx0e1xuMjAyMzpcdFx0YXRoMTFrX2RlYnVnZnNfc29jX2Rlc3Ryb3koYWIpO1xuMjAyNDpcdFx0YXRoMTFrX2RwX2ZyZWUoYWIpO1xuMjAyNTpcdFx0YXRoMTFrX3JlZ19mcmVlKGFiKTtcbjIwMjY6XHRcdGF0aDExa19xbWlfZGVpbml0X3NlcnZpY2UoYWIpO1xuMjAyNzpcdH1cbjIwMjg6XHRcbjIwMjk6XHRzdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4yMDMwOlx0e1xuMjAzMTpcdFx0aW50IHJldDtcbjIwMzI6XHRcbjIwMzM6XHRcdHJldCA9IGF0aDExa19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKGFiKTtcbjIwMzQ6XHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNzgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgYXRoMTFrIERyaXZlciBTdGFydHVwKioKCk9rYXksIHNvIGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgaGVyZS4gSSBzZWUgaXQgY2FsbHMgYGF0aDExa19xbWlfaW5pdF9zZXJ2aWNlYCBhbmQgYGF0aDExa19oaWZfcG93ZXJfdXBgLiBNYWtlcyBzZW5zZSwgUU1JIGluaXRpYWxpemF0aW9uIGFuZCBnZXR0aW5nIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UgdXAgYW5kIHJ1bm5pbmcuIE5vdywgYGF0aDExa19oaWZfcG93ZXJfdXBgIGxpa2VseSBoYW5kbGVzIHRoZSBsb3ctbGV2ZWwgc3R1ZmYsIGFuZCB5ZXAsIGl0IGNhbGxzIGBhdGgxMWtfcGNpX3Bvd2VyX3VwYCwgaW5kaWNhdGluZyB0aGlzIGlzIGEgUENJLXNwZWNpZmljIGZ1bmN0aW9uIGZvciBwb3dlciBtYW5hZ2VtZW50LCB3aGljaCBzZWVtcyBsb2dpY2FsIGdpdmVuIHRoZSBjb250ZXh0LgoKQnV0LCBoYW5nIG9uIGEgc2Vjb25kLi4uIHdoZXJlIGRvZXMgdGhlIG1hYzgwMjExIGRldmljZSByZWdpc3RyYXRpb24gaGFwcGVuPyBJIGRvbiYjMzk7dCBzZWUgaXQgZXhwbGljaXRseSBjYWxsZWQgb3V0IGhlcmUgaW4gdGhlIHBvd2VyLXVwIHNlcXVlbmNlLiBJdCBtdXN0IGhhcHBlbiAqYWZ0ZXIqIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQsIHRoYXQgd291bGQgYmUgbG9naWNhbC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gTGV0IG1lIGRvIGEgcXVpY2sgc2VhcmNoIGFuZCBmaW5kIHdoZXJlIGBhdGgxMWtfbWFjX3JlZ2lzdGVyYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHByb3ZpZGUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgdGhlIHRpbWluZyBvZiB0aGUgbWFjODAyMTEgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX21hY19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIwMjk9c3RhdGljIGludCBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMDQ1Olx0cmV0ID0gYXRoMTFrX21hY19yZWdpc3RlcihhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDQ2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9MTA0ODI9dm9pZCBhdGgxMWtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNDk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDUwMDpzdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA1MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwNzUxOmludCBhdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNzUyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDc4ODpcdFx0cmV0ID0gX19hdGgxMWtfbWFjX3JlZ2lzdGVyKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3ODktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaD0xNDA9dm9pZCBhdGgxMWtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDExa19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oOjE0MTppbnQgYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmgtMTQyLWludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjMwMgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJbml0aWFsaXphdGlvbiBGbG93IG9mIGF0aDExayoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYXRoMTFrIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi4gVGhlIGNvcmUgb2YgdGhpcywgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBpcyB0aGlzIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgZnVuY3Rpb24uIEkga25vdyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIHBoeXNpY2FsIGRldmljZSwgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoYXJkd2FyZS4gQW5kIGl0LCBpbiB0dXJuLCBjYWxscyBgYXRoMTFrX21hY19yZWdpc3RlcmAuIFNvLCB0aGUgcmVnaXN0cmF0aW9uIHdpdGggdGhlIE1BQyBsYXllciBpcyBkZXBlbmRlbnQgb24gdGhlIHBoeXNpY2FsIGRldmljZSBiZWluZyBjcmVhdGVkLCB3aGljaCBtYWtlcyBsb2dpY2FsIHNlbnNlLgoKTm93LCBteSBrZXkgcXVlc3Rpb24gaXM6IHdoZXJlIGlzIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgYWN0dWFsbHkgY2FsbGVkIGZyb20/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgKnRvKiB0aGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIHRvIGZpZ3VyaW5nIG91dCB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIHRvIGZpbmQgaXRzIHBhcmVudCBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGUgd2hvbGUgcHJvY2Vzcy4gSXMgaXQgY2FsbGVkIGR1cmluZyBwcm9iZSwgb3IgaXMgdGhlcmUgYW5vdGhlciBpbml0aWFsaXphdGlvbiBwYXRoPyBLbm93aW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIHRyaWdnZXJpbmcgZXZlbnQgaXMgYW5kIHRoZSBkZXBlbmRlbmNpZXMgaW52b2x2ZWQuIEkgbmVlZCB0byBmaW5kIHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBhbmQgZGV2aWNlIGludGVyYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfY29yZV9wZGV2X2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIwMjE9c3RhdGljIHZvaWQgYXRoMTFrX2NvcmVfc29jX2Rlc3Ryb3koc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjAyOTpzdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMjYxPWludCBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMzA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjMwNzpcdHJldCA9IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIzMDgtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTU1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgRGVwZW5kZW5jeSBhbmQgRnV6emluZyBTdHJhdGVnaWVzKioKCk9rYXksIHNvIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgaXMgdHJpZ2dlcmVkIGJ5IGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoZSBtYWM4MDIxMSBkZXZpY2UgcmVnaXN0cmF0aW9uICpkZXBlbmRzKiBvbiB0aGUgUU1JIGZpcm13YXJlIGJlaW5nIHJlYWR5LiBSaWdodC4gUU1JLCBRdWFsY29tbSBNZXNzYWdlIEludGVyZmFjZSwgdGFsa2luZyB0byB0aGUgZGV2aWNlIGZpcm13YXJlLiBJZiB0aGF0IGZpcm13YXJlIGlzbiYjMzk7dCB1cCBhbmQgcnVubmluZywgYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgd29uJiMzOTt0IGV2ZW4gaGFwcGVuLgoKU28sIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBhIGZ1enplciAqc2ltdWxhdGUqIHRoYXQgUU1JIGZpcm13YXJlIHJlYWR5IHN0YXRlPyBTeXprYWxsZXIsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LCBkb2VzbiYjMzk7dCBoYXZlIGEgUU1JIGVtdWxhdG9yIHNwZWNpZmljYWxseSBmb3IgYXRoMTFrLiBJIGtub3cgaXQgY2FuIGZ1enogUENJIGRldmljZXMsIGZha2luZyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPLiBCdXQgZmFraW5nICp0aGUgZW50aXJlKiBRTUkgcHJvdG9jb2wgYW5kIHRoZSB3aG9sZSBmaXJtd2FyZSBib290IHByb2Nlc3M/IEhpZ2hseSBpbXByb2JhYmxlIHdpdGgganVzdCByYW5kb20gbXV0YXRpb24uIFRoYXQmIzM5O3MgYSBodWdlIGFzay4KCldhaXQuIERpZG4mIzM5O3QgU3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfZGV2aWNlYD8gUmlnaHQsIEkgcmVtZW1iZXIuIEJ1dCBpdCBvZnRlbiBmYWxscyBzaG9ydCBvbiBjb21wbGV4IGRldmljZXMgdGhhdCByZXF1aXJlIGZpcm13YXJlLCB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mICpzcGVjaWZpYyogZW11bGF0b3IuCgpIYW5nIG9u4oCmIHdoYXQgYWJvdXQgYG1hYzgwMjExX2h3c2ltYD8gQ291bGQgdGhhdCBiZSBhbiBhdmVudWU/IEkgaGF2ZSBhIHBhdGNoIGhlcmUgdGhhdCBtb2RpZmllcyBgbmV0L21hYzgwMjExL3R4LmNgIGFuZCBgaW5jbHVkZS9uZXQvbWFjODAyMTEuaGAuIEFoYSEgSXQgYWRkcyBgaWVlZTgwMjExX3R4X3BlZWtgIHRvIGBtYWM4MDIxMWAuIE5vdywgY2FuIGBpZWVlODAyMTFfdHhfcGVla2AgYmUgcmVhY2hlZCBmcm9tIGBtYWM4MDIxMV9od3NpbWA/CgpOb3BlLCBpdCBsb29rcyBsaWtlIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgb25seSBjYWxsZWQgYnkgdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzLiBJdCYjMzk7cyBkcml2ZXIgc3BlY2lmaWMuCgpPa2F5LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgYGllZWU4MDIxMV90eF9wZWVrYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUgYmFzZS4gR290dGEgYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3R4X3BlZWsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDA2OD1zdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDA5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTAwOTE6XHRcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwMDkyLVx0XHRpZiAoIXBlZWtfc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz0xMTAzPXN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoxMTMyOlx0XHRwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExMzMtXHRcdGlmICghcGVla19za2IpXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03NzQyPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NDUtLyoqXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc3NDY6ICogaWVlZTgwMjExX3R4X3BlZWsgLSBwZWVrIGF0IHRoZSBuZXh0IHBhY2tldCBpbiBhIHNvZnR3YXJlIHR4IHF1ZXVlXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NDctICpcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NjEtICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc3NjI6Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9wZWVrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYzLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zODA5PXN0YXRpYyBib29sIGllZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzg1OS1cbm5ldC9tYWM4MDIxMS90eC5jOjM4NjA6Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9wZWVrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL3R4LmMtMzg2MS1cdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zODk2LX1cbm5ldC9tYWM4MDIxMS90eC5jOjM4OTc6RVhQT1JUX1NZTUJPTF9HUEwoaWVlZTgwMjExX3R4X3BlZWspO1xubmV0L21hYzgwMjExL3R4LmMtMzg5OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ2NTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgVGhpcyBDb2RlKioKCk9rYXksIHNvIHRoaXMgY29kZSBzbmlwcGV0IGlzIG9ubHkgY2FsbGVkIGJ5IGBhdGgxMWtgIGFuZCBgYXRoMTJrYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpZiB0aGVzZSBkcml2ZXJzIGNhbiYjMzk7dCBpbml0aWFsaXplIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGVuIHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSwgcmlnaHQ/IEJ1dCBob2xkIG9uLCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcy4gSXMgdGhlcmUgYW55IHdheSBgYXRoMTFrYCBvciBgYXRoMTJrYCBjb3VsZCBiZSBmdXp6ZWQgaW5kaXJlY3RseT8KCkZvciBpbnN0YW5jZSwgd2hhdCBhYm91dCBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gPyBUaGF0IHNpbXVsYXRlcyBhIG1hYzgwMjExIGRldmljZSwgYnV0IGl0ICpkb2VzbiYjMzk7dCogdXNlIGBhdGgxMWtgIG9yIGBhdGgxMmtgLiBUaGlzIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyICp3aXRoaW4qIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBhbmQgY2hhbmdlcyBpdCB0byB1c2UgYGllZWU4MDIxMV90eF9wZWVrYC4gU2luY2UgdGhvc2UgZHJpdmVycyBkZXBlbmQgb24gYWN0dWFsIGhhcmR3YXJlIGFuZCBzcGVjaWZpYyBmaXJtd2FyZSB0byBldmVuIHJlYWNoIHRoZSBwb2ludCB3aGVyZSB0aGV5IHJlZ2lzdGVyIHdpdGggbWFjODAyMTEg4oCTIGFuZCAqdGhlbiogdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIHdvdWxkIGV2ZW4gYmUgY2FsbGVkIOKAkyB0aGlzIHNlZW1zIHByZXR0eSB1bmxpa2VseSB0byB0cmlnZ2VyIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFIHVubGVzcyB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgaGFyZHdhcmUgcGFzc3Rocm91Z2guCgpCdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIHRoaW5rIG91dHNpZGUgdGhlIGJveC4gQ291bGQgc3l6a2FsbGVyIGZpbmQgYSB3YXkgdG8gaW5qZWN0IG1hYzgwMjExIG9wZXJhdGlvbnMgZGlyZWN0bHk/IE5vLCB0aGF0JiMzOTtzIG5vdCBob3cgaXQgd29ya3MuIFN5emthbGxlciBwcmltYXJpbHkgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCB0aHJvdWdoIHN5c2NhbGxzIOKAkyBuZXRsaW5rLCBpb2N0bCwgc29ja2V0cywgZXRjLiDigJMgb3IgdGhyb3VnaCB2aXJ0dWFsIGRldmljZXMgbGlrZSB0dW4vdGFwLCB2aGNpLCBhbmQgc3l6X3BjaV9kZXZpY2UuIEl0IGRvZXNuJiMzOTt0IGFsbG93IGZvciB0aGUgaW5qZWN0aW9uIG9mIGFyYml0cmFyeSBmdW5jdGlvbiBwb2ludGVycy4KClNvLCBpZiB0aGUgZHJpdmVyIGNhbiYjMzk7dCByZWdpc3RlciBpdHMgbWFjODAyMTEgZGV2aWNlLCB0aGUgYHdha2VfdHhfcXVldWVgIGhhbmRsZXIgd2lsbCAqbmV2ZXIqIGdldCBjYWxsZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgZWl0aGVyIGBhdGgxMWtgIG9yIGBhdGgxMmtgIGhhcyBzb21lIGtpbmQgb2YgdGVzdCBtb2RlIG9yIHNpbXVsYXRpb24gbW9kZS4gVGhhdCB3b3VsZCByZWFsbHkgY2hhbmdlIHRoaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdG1vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlPTI0PWF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjU6YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTI2LWF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaD05MjQ9c3RydWN0IGF0aDExa19iYXNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC0xMDg3LVx0XHR1OCAqZXZlbnRkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmg6MTA4ODpcdH0gdGVzdG1vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC0xMDg5LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWcuaD0zND1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKmF0aDExa19kYmdfc3RyKGVudW0gYXRoMTFrX2RlYnVnX21hc2sgbWFzaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnLmgtNTctXHRjYXNlIEFUSDExS19EQkdfVEVTVE1PREU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnLmg6NTg6XHRcdHJldHVybiBcJiMzNDt0ZXN0bW9kZVwmIzM0OztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWcuaC01OS1cdGNhc2UgQVRIMTFLX0RCR19IQUw6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0yMS0jaW5jbHVkZSBcJiMzNDtkcF9yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjIyOiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMjMtI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NzojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtOC0jaW5jbHVkZSBcdTAwM2NuZXQvbmV0bGluay5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTEyLSNpbmNsdWRlIFwmIzM0O2NvcmUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjEzOiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rtb2RlX2kuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYz00Nz1zdGF0aWMgdm9pZCBhdGgxMWtfdG1fd21pX2V2ZW50X3Vuc2VnbWVudGVkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBjbWRfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTU5LVx0aWYgKCFhcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjYwOlx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NjY6XHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjctXHRcdFx0XHRcdFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy03MS1cdFx0YXRoMTFrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NzI6XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBhbGxvY2F0ZSBza2IgZm9yIHVuc2VnbWVudGVkIHRlc3Rtb2RlIHdtaSBldmVudFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNzMtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy03OC1cdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVx1MDAzZWxlbiwgc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6Nzk6XHRcdGF0aDExa193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTgwLVx0XHRrZnJlZV9za2Iobmxfc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6ODQ6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTg1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtODktXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjkwOlx0YXRoMTFrX3dhcm4oYWIsIFwmIzM0O0ZhaWxlZCB0byBzZW5kIHRlc3Rtb2RlIGV2ZW50IHRvIGhpZ2hlciBsYXllcnNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTkxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9OTY9c3RhdGljIGludCBhdGgxMWtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMTUtXHRpZiAocGRldl9pZCBcdTAwM2U9IGFiLVx1MDAzZW51bV9yYWRpb3MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMTY6XHRcdGF0aDExa193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2IGlkOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMTctXHRcdFx0ICAgIHBkZXZfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMjItXHRpZiAoIWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTIzOlx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGFic2VuY2Ugb2YgcGRldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTI0LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTM2LVx0aWYgKGN1cnJlbnRfc2VxID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMzc6XHRcdGFiLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTM4Olx0XHRhYi1cdTAwM2V0ZXN0bW9kZS5kYXRhX3BvcyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTM5LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNDE6XHRkYXRhX3BvcyA9IGFiLVx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE1MDpcdG1lbWNweShcdTAwMjZhYi1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbZGF0YV9wb3NdLCBidWZfcG9zLCBkYXRhbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNTEtXHRkYXRhX3BvcyAmIzQzOz0gZGF0YWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTUzOlx0aWYgKCYjNDM7JiM0MzthYi1cdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gdG90YWxfc2VnbWVudHMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNTQ6XHRcdGFiLVx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zID0gZGF0YV9wb3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTU1LVx0XHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX1RFU1RNT0RFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNjMtXHRcdCAgICBkYXRhX3BvcywgZnRtX21zZy1cdTAwM2VzZWdfaGRyLmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTY0Olx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE2NS1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE2OS1cdFx0YXRoMTFrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTcwOlx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciBzZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNzEtXHRcdHJldCA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE3OC1cdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgZGF0YV9wb3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTc5Olx0XHQgICAgXHUwMDI2YWItXHUwMDNldGVzdG1vZGUuZXZlbnRkYXRhWzBdKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE4MDpcdFx0YXRoMTFrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBwb3B1bGF0ZSBzZWdtZW50ZWQgdGVzdG1vZGUgZXZlbnRcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4MS1cdFx0a2ZyZWVfc2tiKG5sX3NrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxODY6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9MjMxPXN0YXRpYyBpbnQgYXRoMTFrX3RtX2NtZF9nZXRfdmVyc2lvbihzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI0MTpcdHNrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX3JlcGx5X3NrYihhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yNDItXHRcdFx0XHRcdFx0bmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI2MDpcdHJldHVybiBjZmc4MDIxMV90ZXN0bW9kZV9yZXBseShza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTI2MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI2MzpzdGF0aWMgaW50IGF0aDExa190bV9jbWRfdGVzdG1vZGVfc3RhcnQoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI4MDpcdGFyLVx1MDAzZWFiLVx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IGt6YWxsb2MoQVRIX0ZUTV9FVkVOVF9NQVhfQlVGX0xFTkdUSCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yODEtXHRcdFx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MjgyOlx0aWYgKCFhci1cdTAwM2VhYi1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yODMtXHRcdHJldCA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jPTMwMD1zdGF0aWMgaW50IGF0aDExa190bV9jbWRfd21pKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0zMjUtXHRpZiAoIWJ1Zl9sZW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzozMjY6XHRcdGF0aDExa193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtObyBkYXRhIHByZXNlbnQgaW4gdGVzdG1vZGUgd21pIGNvbW1hbmRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTMyNy1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzc3LVx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6Mzc4Olx0XHRhdGgxMWtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7ZmFpbGVkIHRvIHRyYW5zbWl0IHdtaSBjb21tYW5kICh0ZXN0bW9kZSk6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTM3OS1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9NDc2PWludCBhdGgxMWtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy00OTYtXHRjYXNlIEFUSF9UTV9DTURfVEVTVE1PREVfU1RBUlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NDk3Olx0XHRyZXR1cm4gYXRoMTFrX3RtX2NtZF90ZXN0bW9kZV9zdGFydChhciwgdGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTQ5OC1cdGNhc2UgQVRIX1RNX0NNRF9XTUlfRlRNOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtMjEtI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjIyOiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtMjMtI2luY2x1ZGUgXCYjMzQ7cDJwLmhcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxOTIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBBbmFseXNpcyoqCgpPa2F5LCBzbyB0aGUgdGVzdG1vZGUgYXBwcm9hY2ggaGVyZSwgdXNpbmcgbmw4MDIxMSwgaXMgZnVuZGFtZW50YWxseSBkZXBlbmRlbnQgb24gdGhlIGZpcm13YXJlIGFjdHVhbGx5ICpiZWluZyogcHJlc2VudCBhbmQgcnVubmluZywgd2hpY2ggbWVhbnMgc3BlY2lmaWMgaGFyZHdhcmUuIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBhcmUgZGlyZWN0bHkgdGllZCB0byB0aGUgaGFyZHdhcmUgYW5kIHRoZWlyIHJlc3BlY3RpdmUgZmlybXdhcmUuIEJ1dCB3aGF0IGFib3V0IGBpZWVlODAyMTFfdHhfcGVla2A/IElzIHRoZXJlIGEgcG9zc2liaWxpdHkgdGhhdCBhbm90aGVyIGRyaXZlciAqY291bGQqIHVzZSBpdCBkb3duIHRoZSBsaW5lPyBUaGUgcGF0Y2ggaXRzZWxmIG9ubHkgbW9kaWZpZXMgYGF0aDExa2AgYW5kIGBhdGgxMmtgIHRvIHV0aWxpemUgYGllZWU4MDIxMV90eF9wZWVrYC4KCkdpdmVuIHRoYXQgdGhpcyBwYXRjaCBpcyBvbmx5IHJlYWNoYWJsZSB3aXRoIHBoeXNpY2FsIGhhcmR3YXJlLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSG93ZXZlciwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gY29uc2lkZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlLgoKVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byBjb25zaWRlciBzY2VuYXJpb3Mgd2hlcmUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gSG93ZXZlciwgaXQgYWxzbyBjbGFyaWZpZXMgdGhhdCBpZiB0aGUgcGF0Y2ggbW9kaWZpZXMgJiMzNDtyZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsJiMzNDsgaXQgd2FycmFudHMgaW52ZXN0aWdhdGlvbi4KCk5vdywgYGllZWU4MDIxMV90eF9wZWVrYCBpcyBleHBvcnRlZCBpbiBgbmV0L21hYzgwMjExL3R4LmNgLCB3aGljaCBtYWtlcyBpdCBwYXJ0IG9mIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLiBUaGUga2V5IGhlcmUgaXMgdGhhdCwgYXQgcHJlc2VudCwgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGFyZSB0aGUgKm9ubHkqIGNhbGxlcnMgb2YgYGllZWU4MDIxMV90eF9wZWVrYC4gU28sIGNvdWxkIGBtYWM4MDIxMV9od3NpbWAgY2FsbCBgaWVlZTgwMjExX3R4X3BlZWtgPyBObywgdGhhdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIHRoZSBjYXNlLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYG1hYzgwMjExX2h3c2ltYCByZWxpZXMgb24gYHdha2VfdHhfcXVldWVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dha2VfdHhfcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwMzYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiB0aGUgV2ktRmkgU3Vic3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYG1hYzgwMjExX2h3c2ltYCBjb2RlLCBhbmQgaXQmIzM5O3MgbG9va2luZyBsaWtlIGB3YWtlX3R4X3F1ZXVlYCBpc24mIzM5O3QgYWN0dWFsbHkgaW1wbGVtZW50ZWQgdGhlcmUuIEhtbSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWUgb3RoZXIgY2FsbCBwYXRoLiBXYWl0LCBpcyBpdCBwb3NzaWJsZSB0aGF0IGBpZWVlODAyMTFfdHhfcGVla2Agd2hpY2ggKmlzKiBuZXcsIGlzIHJlYWNoYWJsZSBieSAqc29tZSogb3RoZXIgbWVhbnM/IE5vLCBsb29raW5nIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgbGlrZSB0aGUgb25seSBjYWxscyB0byBpdCBhcmUgZnJvbSBgYXRoMTFrYCBhbmQgYGF0aDEya2AsIHJpZ2h0PwoKUmlnaHQuIEFuZCBzaW5jZSBgYXRoMTFrYCBhbmQgYGF0aDEya2AgcmVxdWlyZSBhY3R1YWwgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCBJIGtub3cgdGhleSYjMzk7cmUgZXNzZW50aWFsbHkgb2ZmIHRoZSB0YWJsZSBmb3IgZnV6emluZyBpbiBzb21ldGhpbmcgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhleSByZXF1aXJlIHRoZSByZWFsIGRlYWwuIFNvIHRoYXQgY29kZSAqc2hvdWxkKiBiZSB1bnJlYWNoYWJsZSBpbiBteSB2aXJ0dWFsIHRlc3RpbmcgZW52aXJvbm1lbnRzLgoKQnV0LCBoYW5nIG9uLi4uIGlzIHRoZXJlIGEgc2xpbSBjaGFuY2UgYGF0aDExa2Agb3IgYGF0aDEya2AgY2FuIGJlIGZ1enplZCB2aWEgYHN5el9wY2lfZGV2aWNlYD8gVGhhdCYjMzk7cyB0aGUgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3Mgc3l6a2FsbGVyIHRvIHNpbXVsYXRlIFBDSSBkZXZpY2VzLiBBaCwgYnV0IHJlbWVtYmVyLCBgYXRoMTFrYCBuZWVkcyB0aGUgZmlybXdhcmUgdG8gYmUgbG9hZGVkIHVzaW5nIGByZXF1ZXN0X2Zpcm13YXJlYC4gQW5kIHRoZW4gaXQgaGFzIHRvICp3YWl0KiBmb3IgdGhlIGZpcm13YXJlIHRvIGJvb3QgYW5kIHNlbmQgdGhhdCBzcGVjaWZpYyBRTUkgbWVzc2FnZSwgcmlnaHQ/IEkmIzM5O20gdGFsa2luZyBhYm91dCBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gV2l0aG91dCB0aGF0IGZpcm13YXJlIGFjdHVhbGx5IHJ1bm5pbmcgYW5kIHNlbmRpbmcgdGhlIFFNSSBtZXNzYWdlLCB0aGUgbWFjODAyMTEgZGV2aWNlIGlzIG5ldmVyIHJlZ2lzdGVyZWQgYW5kLCBjb25zZXF1ZW50bHksIGB3YWtlX3R4X3F1ZXVlYCBpcyBuZXZlciBldmVuIGNhbGxlZC4KClNvIGNhbiBJIGdldCB0aGUgZnV6emVyIHRvIGVtdWxhdGUgdGhlIGZpcm13YXJlPyBTYWRseSwgbm8uIEkmIzM5O20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgUU1JIGZpcm13YXJlIGVtdWxhdGlvbiBmb3IgUXVhbGNvbW0gV2ktRmkgY2hpcHMsIG5vdCB0aGF0IGNvbXBsZXguCgpTbywgcmVhbGlzdGljYWxseSwgdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIGluIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBpcyB1bnJlYWNoYWJsZS4gQW5kIHdoYXQgYWJvdXQgYGllZWU4MDIxMV90eF9wZWVrYD8gSXQgKmlzKiBleHBvcnRlZCwgYnV0IG5vIG90aGVyIGRyaXZlciBpcyB1c2luZyBpdC4gU28gaXQgYWxzbyBpcyBsaWtlbHkgdW5yZWFjaGFibGUuIEkgd2lsbCBkb3VibGUgY2hlY2sgYGF0aDEya2AganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDk3NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipDaGVja2luZyBGaXJtd2FyZSBSZXF1ZXN0IENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIGBhdGgxMmtgIGRyaXZlciBhY3R1YWxseSBpbXBsZW1lbnRzIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgZnVuY3Rpb24uIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgc3RhbmRhcmQgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIGluIHRoZSBrZXJuZWwsIHNvIHRoaXMgY2hlY2sgaXMgaW1wb3J0YW50LiBJdCB3b3VsZCBiZSBhIHNpbGx5IG92ZXJzaWdodCBpZiB0aGUgZHJpdmVyIGZhaWxlZCB0byBkbyB0aGlzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHJlc2VuY2UgdG8gY29uZmlybSBpdCYjMzk7cyB1c2luZyB0aGUgc3RhbmRhcmQgbWVjaGFuaXNtcy4gVGhpcyBpcyBiYXNpYywgYnV0IG5lY2Vzc2FyeSBiZWZvcmUgSSBwcm9jZWVkLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQgd2l0aCBhbnkgZnVydGhlciBhbmFseXNpcyBvciBkZWJ1Z2dpbmcuIFRoaXMgaXMgcHJldHR5IGZ1bmRhbWVudGFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zMzQ9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM2NjpcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIGZ3X25hbWUsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2Ny1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY4Olx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2OS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mzk5Olx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZmdzIsIGZ3Ml9uYW1lLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDAtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQwMTpcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7cmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDItXHRcdGdvdG8gZXJyX2Z3O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjEwOnN0YXRpYyBpbnQgYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xMS1cdFx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jPTE2Mz12b2lkIGF0aDEya19md19tYXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjE2NzpcdHJldCA9IGF0aDEya19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKGFiLCBBVEgxMktfRldfQVBJMl9GSUxFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xNjgtXHRpZiAocmV0ID09IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODEyCgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDM3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IFVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgYXNraW5nIG1lIHRvIGRldGVybWluZSBpZiBhIHBhdGNoIGlzICYjMzQ7V29ydGhGdXp6aW5nLiYjMzQ7IEJhc2VkIG9uIHRoZSBwcm92aWRlZCBjcml0ZXJpYSwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBwYXRjaCBpbmNsdWRlcyBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKUmlnaHQsIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgYXRoMTFrYCBhbmQgYGF0aDEya2AsIGFuZCBJIHJlbWVtYmVyIHRoYXQgdGhlc2UgZHJpdmVycywgbGlrZSB0aGVpciBwcmVkZWNlc3NvcnMsIGFic29sdXRlbHkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBhbmQsIGNydWNpYWxseSwgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gZXZlbiBnZXQgb2ZmIHRoZSBncm91bmQuIFRoZXNlIGRyaXZlcnMgYXJlIG5vdCBnb2luZyB0byBpbml0aWFsaXplIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIG5vIGhhcmR3YXJlLCBubyBkaWNlLgoKVGhlIGtleSBjaGFuZ2UgaGVyZSBzZWVtcyB0byBiZSBgaWVlZTgwMjExX3R4X3BlZWtgLCBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gaW4gdGhlIGBtYWM4MDIxMWAgY29yZS4gSSBrbm93IGBtYWM4MDIxMWAgd2VsbCwgYW5kIEkga25vdyBjb3JlIGZ1bmN0aW9ucyBjYW4gYmUgdHJpY2t5LCBidXQgdGhpcyBvbmUgaXMgb25seSBjYWxsZWQgYnkgdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVycyB3aXRoaW4gYGF0aDExa2AgYW5kIGBhdGgxMmtgLiBJIHVuZGVyc3RhbmQgdGhhdC4gU28sIHNpbmNlIHRoZSBkcml2ZXJzIHRoYXQgKmNhbGwqIGBpZWVlODAyMTFfdHhfcGVla2AgYXJlIGRlcGVuZGVudCBvbiBwaHlzaWNhbCBoYXJkd2FyZSwgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0b28uCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBwYXRjaCBtb2RpZmllcyBkcml2ZXJzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUsIGFuZCB0aG9zZSBhcmUgdGhlIG9ubHkgZHJpdmVycyB3aGljaCB1c2UgdGhlIG5ldyBmdW5jdGlvbiwgdGhlIGNvZGUgcGF0aHMgYXJlIGFic29sdXRlbHkgaW1wb3NzaWJsZSB0byBoaXQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuIFRoZXkgd29uJiMzOTt0IGV2ZW4gcHJvYmUsIGxldCBhbG9uZSByZWFjaCB0aGUgbW9kaWZpZWQgY29kZS4KClNvLCBhY2NvcmRpbmcgdG8gdGhlIGNyaXRlcmlhIGdpdmVuLCB0aGlzIHBhdGNoIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIHdpcmVsZXNzIGRyaXZlcnMgYW5kIGFkZHMgYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGllZWU4MDIxMV90eF9wZWVrIHRvIHRoZSBtYWM4MDIxMSBjb3JlLiBUaGUgbmV3IGhlbHBlciBpcyBleGNsdXNpdmVseSBjYWxsZWQgYnkgdGhlIHdha2VfdHhfcXVldWUgaGFuZGxlcnMgb2YgYXRoMTFrIGFuZCBhdGgxMmsuIEJvdGggb2YgdGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IHRoZSBoYXJkd2FyZSBhbmQgZmlybXdhcmUsIHRoZSBkcml2ZXJzIGZhaWwgdG8gcHJvYmUvaW5pdGlhbGl6ZSwgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW5jbHVkaW5nIHRoZSBuZXcgbWFjODAyMTEgaGVscGVyKSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6MzQuNTI3MjMwMDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMyMjYyMDI5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMDozNC41MjcyMzYwNzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzU5NjAyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU0NzRjMTVmYjk3OTA5ZTgwYjNlMDY3ZDA3NDIyM2FmZGMxNzBhYjZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTg6MTA6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXFxuaW5kZXggZjM4OWI5N2FjYmRkNWQuLjJlNTk3OGVjMmIwNWJjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbkBAIC0xMDg3LDYgKzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXFx1MDAzZW51bV90eF9yaW5nczsgaSsrKSB7XFxuIFxcdFxcdGlkcl9pbml0KFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tpXS50eGJ1Zl9pZHIpO1xcbiBcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhfaWRyX2xvY2spO1xcbitcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XFxuIFxcbiBcXHRcXHRkcC1cXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxcbmluZGV4IDg0ZjY2ODM5ZjBjNmRlLi42ZDk5NTAxYWEyNjljNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcXG5AQCAtODcsNiArODcsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7XFxuIFxcdHN0cnVjdCBpZHIgdHhidWZfaWRyO1xcbiBcXHQvKiBQcm90ZWN0cyB0eGJ1Zl9pZHIgYW5kIG51bV9wZW5kaW5nICovXFxuIFxcdHNwaW5sb2NrX3QgdHhfaWRyX2xvY2s7XFxuK1xcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cXG4rXFx0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XFxuIFxcdHN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzO1xcbiBcXHRpbnQgdHhfc3RhdHVzX2hlYWQ7XFxuIFxcdGludCB0eF9zdGF0dXNfdGFpbDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5pbmRleCAyZDU1Y2RjNGQxNjVkZS4uMDQ2Y2VmZDUzMTc4MjAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5AQCAtMTAwNjUsOSArMTAwNjUsNjcgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xcbitcXHRcXHQuc3RhID0gdHhxLVxcdTAwM2VzdGEsXFxuK1xcdH07XFxuK1xcdGNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjtcXG4rXFx0c3RydWN0IGF0aDExayAqYXIgPSBody1cXHUwMDNlcHJpdjtcXG4rXFx0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XFxuK1xcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdHUzMiByaW5nX3NlbGVjdG9yO1xcbitcXHRpbnQgbnVtX2ZyZWU7XFxuK1xcdHU4IHJpbmdfaWQ7XFxuK1xcbitcXHRpZiAoIWFyKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHR3aGlsZSAoMSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XFxuK1xcdFxcdGlmICghcGVla19za2IpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0cmluZ19zZWxlY3RvciA9IGFyLVxcdTAwM2VhYi1cXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IoXFxuK1xcdFxcdFxcdFxcdFxcdChzdHJ1Y3Qgc2tfYnVmZiAqKXBlZWtfc2tiKTtcXG4rXFx0XFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJVxcbitcXHRcXHRcXHQgIGFyLVxcdTAwM2VhYi1cXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXFx1MDAzZW51bV90eF9yaW5ncztcXG4rXFxuK1xcdFxcdHR4X3JpbmcgPSBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkcC50eF9yaW5nW3JpbmdfaWRdO1xcbitcXHRcXHR0Y2xfcmluZyA9IFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWhhbC5zcm5nX2xpc3RbdHhfcmluZy1cXHUwMDNldGNsX2RhdGFfcmluZy5yaW5nX2lkXTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2dGNsX3JpbmctXFx1MDAzZWxvY2spO1xcbitcXHRcXHRudW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItXFx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRpZiAobnVtX2ZyZWUgPT0gMCkge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xcbitcXHRcXHRpZiAoIXNrYikge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGF0aDExa19tYWNfb3BfdHgoaHcsIFxcdTAwMjZjb250cm9sLCBza2IpO1xcbitcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XFxuIFxcdC50eFxcdFxcdFxcdFxcdD0gYXRoMTFrX21hY19vcF90eCxcXG4tXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcXG4rXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcXG4gXFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXFxuIFxcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXFxuIFxcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG5pbmRleCBhZjVmMTFmYzFkODRhYi4uM2Q0NmNmYmYwYTFjM2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXFxuQEAgLTE1MzksNiArMTUzOSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuIFxcdH1cXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VtYXhfdHhfcmluZzsgaSsrKSB7XFxuK1xcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tpXS53YWtlX3R4X2xvY2spO1xcbiBcXHRcXHRkcC1cXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcXG4gXFxuIFxcdFxcdGRwLVxcdTAwM2V0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuaW5kZXggZjhjZmM3YmIyOWRkNzguLjY4ZDIwMjBiZTliODY4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbkBAIC01OCw2ICs1OCw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcXG4gXFx0dTggdGNsX2RhdGFfcmluZ19pZDtcXG4gXFx0c3RydWN0IGRwX3NybmcgdGNsX2RhdGFfcmluZztcXG4gXFx0c3RydWN0IGRwX3NybmcgdGNsX2NvbXBfcmluZztcXG4rXFx0LyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqL1xcbitcXHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcXG4gXFx0c3RydWN0IGhhbF93Ym1fY29tcGxldGlvbl9yaW5nX3R4ICp0eF9zdGF0dXM7XFxuIFxcdGludCB0eF9zdGF0dXNfaGVhZDtcXG4gXFx0aW50IHR4X3N0YXR1c190YWlsO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xcbmluZGV4IGExNjQ1NjNmZmYyODljLi5jMWM2NTZlNDU1MGIyNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xcbkBAIC0zOTAsNiArMzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLFxcbiBcXHRlbHNlXFxuIFxcdFxcdHJldHVybiAoKHNybmctXFx1MDAzZXJpbmdfc2l6ZSAtIGhwICsgdHApIC8gc3JuZy1cXHUwMDNlZW50cnlfc2l6ZSkgLSAxO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0woYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XFxuIFxcbiB2b2lkICphdGgxMmtfaGFsX3Nybmdfc3JjX25leHRfcGVlayhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG5pbmRleCBkOWZkZDJmYzgyOTg2YS4uMzA2ZDUxZGEzZWExOGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuQEAgLTExMDAsOSArMTEwMCw3MiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4re1xcbitcXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYgPSBhdGgxMmtfdmlmX3RvX2FodmlmKHR4cS1cXHUwMDNldmlmKTtcXG4rXFx0c3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYgPSBcXHUwMDI2YWh2aWYtXFx1MDAzZWRlZmxpbms7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xcbitcXHRcXHQuc3RhID0gdHhxLVxcdTAwM2VzdGEsXFxuK1xcdH07XFxuK1xcdGNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjtcXG4rXFx0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XFxuK1xcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XFxuK1xcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbitcXHRzdHJ1Y3QgYXRoMTJrICphcjtcXG4rXFx0dTMyIHJpbmdfc2VsZWN0b3I7XFxuK1xcdGludCBudW1fZnJlZTtcXG4rXFx0dTggcmluZ19pZDtcXG4rXFxuK1xcdGFyID0gYXJ2aWYtXFx1MDAzZWFyO1xcbitcXHRpZiAoIWFyKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRkcCA9IGFyLVxcdTAwM2VhYi1cXHUwMDNlZHA7XFxuK1xcbitcXHR3aGlsZSAoMSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XFxuK1xcdFxcdGlmICghcGVla19za2IpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0cmluZ19zZWxlY3RvciA9IGRwLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IoXFxuK1xcdFxcdFxcdFxcdFxcdChzdHJ1Y3Qgc2tfYnVmZiAqKXBlZWtfc2tiKTtcXG4rXFx0XFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VtYXhfdHhfcmluZztcXG4rXFxuK1xcdFxcdHR4X3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbcmluZ19pZF07XFxuK1xcdFxcdHRjbF9yaW5nID0gXFx1MDAyNmRwLVxcdTAwM2VoYWwtXFx1MDAzZXNybmdfbGlzdFt0eF9yaW5nLVxcdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cXHUwMDNlYWIsIHRjbF9yaW5nLCB0cnVlKTtcXG4rXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnRjbF9yaW5nLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdFxcdGlmIChudW1fZnJlZSA9PSAwKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XFxuK1xcdFxcdGlmICghc2tiKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0YXRoMTJrX3dpZmk3X21hY19vcF90eChodywgXFx1MDAyNmNvbnRyb2wsIHNrYik7XFxuK1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcXG4gXFx0LnR4XFx0XFx0XFx0XFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxcbi1cXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxcbitcXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLFxcbiBcXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcXG4gXFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RvcCxcXG4gXFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXFxuaW5kZXggNGY5NWRhMDIzNzQ2ZjkuLjkyODliOGRjYTk3MmNmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcXG4rKysgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXFxuQEAgLTc3NDIsNiArNzc0MiwyNiBAQCB2b2lkIGllZWU4MDIxMV91bnJlc2VydmVfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHU4IHRpZCk7XFxuIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcXG4gXFxuKy8qKlxcbisgKiBpZWVlODAyMTFfdHhfcGVlayAtIHBlZWsgYXQgdGhlIG5leHQgcGFja2V0IGluIGEgc29mdHdhcmUgdHggcXVldWVcXG4rICpcXG4rICogQGh3OiBwb2ludGVyIGFzIG9idGFpbmVkIGZyb20gaWVlZTgwMjExX2FsbG9jX2h3KClcXG4rICogQHR4cTogcG9pbnRlciBvYnRhaW5lZCBmcm9tIHN0YXRpb24gb3IgdmlydHVhbCBpbnRlcmZhY2UsIG9yIGZyb21cXG4rICpcXHRpZWVlODAyMTFfbmV4dF90eHEoKVxcbisgKlxcbisgKiBSZXR1cm46IHRoZSBuZXh0IHNrYiB3aXRob3V0IGRlcXVldWluZyBpdCwgb3IgJU5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LlxcbisgKiBUaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBjb25zdCDigJQgdGhlIGNhbGxlciBtdXN0IG5vdCBtb2RpZnkgb3IgZnJlZSB0aGUgc2tiLlxcbisgKiBUaGUgc2tiIHJlbWFpbnMgcXVldWVkIGFuZCB3aWxsIGJlIHJldHVybmVkIGJ5IGEgc3Vic2VxdWVudFxcbisgKiBpZWVlODAyMTFfdHhfZGVxdWV1ZSgpIGNhbGwuXFxuKyAqXFxuKyAqIFRoaXMgaXMgdXNlZnVsIGZvciBkcml2ZXJzIHRoYXQgbmVlZCB0byBpbnNwZWN0IHRoZSBuZXh0IGZyYW1lIChlLmcuIHRvXFxuKyAqIGRldGVybWluZSB0aGUgdGFyZ2V0IFRYIHJpbmcpIGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIHRvIGRlcXVldWUuXFxuKyAqXFxuKyAqIE11c3QgYmUgY2FsbGVkIGluIHRoZSBzYW1lIGNvbnRleHQgYXMgaWVlZTgwMjExX3R4X2RlcXVldWUoKS5cXG4rICovXFxuK2NvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSk7XFxuK1xcbiAvKipcXG4gICogaWVlZTgwMjExX3R4X2RlcXVldWVfbmkgLSBkZXF1ZXVlIGEgcGFja2V0IGZyb20gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxcbiAgKiAoaW4gcHJvY2VzcyBjb250ZXh0KVxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXFxuaW5kZXggYzEzYjIwOWZhZDQ3YWEuLjkxYmZkOGVmOTQyOGEwIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtMzg1Nyw2ICszODU3LDQ1IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbitjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuK3tcXG4rXFx0c3RydWN0IHR4cV9pbmZvICp0eHFpID0gY29udGFpbmVyX29mKHR4cSwgc3RydWN0IHR4cV9pbmZvLCB0eHEpO1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcXG4rXFx0c3RydWN0IGZxX3RpbiAqdGluID0gXFx1MDAyNnR4cWktXFx1MDAzZXRpbjtcXG4rXFx0c3RydWN0IGZxICpmcSA9IFxcdTAwMjZsb2NhbC1cXHUwMDNlZnE7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgZnFfZmxvdyAqZmxvdztcXG4rXFxuK1xcdFdBUk5fT05fT05DRShzb2Z0aXJxX2NvdW50KCkgPT0gMCk7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmZxLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHNrYiA9IHNrYl9wZWVrKFxcdTAwMjZ0eHFpLVxcdTAwM2VmcmFncyk7XFxuK1xcdGlmIChza2IpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCBcXHUwMDI2dGluLVxcdTAwM2VuZXdfZmxvd3MsIGZsb3djaGFpbikge1xcbitcXHRcXHRza2IgPSBza2JfcGVlayhcXHUwMDI2Zmxvdy1cXHUwMDNlcXVldWUpO1xcbitcXHRcXHRpZiAoc2tiKVxcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCBcXHUwMDI2dGluLVxcdTAwM2VvbGRfZmxvd3MsIGZsb3djaGFpbikge1xcbitcXHRcXHRza2IgPSBza2JfcGVlayhcXHUwMDI2Zmxvdy1cXHUwMDNlcXVldWUpO1xcbitcXHRcXHRpZiAoc2tiKVxcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rb3V0OlxcbitcXHRpZiAoc2tiKVxcbitcXHRcXHRza2JfZ2V0X2hhc2goc2tiKTtcXG4rXFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZmcS1cXHUwMDNlbG9jayk7XFxuK1xcdHJldHVybiBza2I7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoaWVlZTgwMjExX3R4X3BlZWspO1xcbitcXG4gc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6MzUuMDkxNjA4NDQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI2NjE4MTk2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU0NzRjMTVmYjk3OTA5ZTgwYjNlMDY3ZDA3NDIyM2FmZGMxNzBhYjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxODoxMDozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuaW5kZXggZjM4OWI5N2FjYmRkNWQuLjJlNTk3OGVjMmIwNWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbkBAIC0xMDg3LDYgKzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cdTAwM2VudW1fdHhfcmluZ3M7IGkrKykge1xuIFx0XHRpZHJfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnR4YnVmX2lkcik7XG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udHhfaWRyX2xvY2spO1xuK1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XG4gXG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuaW5kZXggODRmNjY4MzlmMGM2ZGUuLjZkOTk1MDFhYTI2OWM0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbkBAIC04Nyw2ICs4Nyw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcbiBcdHN0cnVjdCBpZHIgdHhidWZfaWRyO1xuIFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xuIFx0c3BpbmxvY2tfdCB0eF9pZHJfbG9jaztcbitcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbitcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xuIFx0c3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7XG4gXHRpbnQgdHhfc3RhdHVzX2hlYWQ7XG4gXHRpbnQgdHhfc3RhdHVzX3RhaWw7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbmluZGV4IDJkNTVjZGM0ZDE2NWRlLi4wNDZjZWZkNTMxNzgyMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC0xMDA2NSw5ICsxMDA2NSw2NyBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuK1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbitcdH07XG4rXHRjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqcGVla19za2I7XG4rXHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcbitcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4rXHRpbnQgbnVtX2ZyZWU7XG4rXHR1OCByaW5nX2lkO1xuK1xuK1x0aWYgKCFhcilcbitcdFx0cmV0dXJuO1xuK1xuK1x0d2hpbGUgKDEpIHtcbitcdFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XG4rXHRcdGlmICghcGVla19za2IpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHJpbmdfc2VsZWN0b3IgPSBhci1cdTAwM2VhYi1cdTAwM2Vod19wYXJhbXMuaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKFxuK1x0XHRcdFx0XHQoc3RydWN0IHNrX2J1ZmYgKilwZWVrX3NrYik7XG4rXHRcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICVcbitcdFx0XHQgIGFyLVx1MDAzZWFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZW51bV90eF9yaW5ncztcbitcbitcdFx0dHhfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRwLnR4X3JpbmdbcmluZ19pZF07XG4rXHRcdHRjbF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsLnNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXG4rXHRcdHNwaW5fbG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuK1xuK1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1xuK1x0XHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcbitcdFx0aWYgKCFza2IpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0YXRoMTFrX21hY19vcF90eChodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbitcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbmluZGV4IGFmNWYxMWZjMWQ4NGFiLi4zZDQ2Y2ZiZjBhMWMzZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG5AQCAtMTUzOSw2ICsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZzsgaSsrKSB7XG4rXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5pbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0dTggdGNsX2RhdGFfcmluZ19pZDtcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xuK1x0LyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqL1xuK1x0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XG4gXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcbiBcdGludCB0eF9zdGF0dXNfaGVhZDtcbiBcdGludCB0eF9zdGF0dXNfdGFpbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuaW5kZXggYTE2NDU2M2ZmZjI4OWMuLmMxYzY1NmU0NTUwYjI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXG4gXHRlbHNlXG4gXHRcdHJldHVybiAoKHNybmctXHUwMDNlcmluZ19zaXplIC0gaHAgKyB0cCkgLyBzcm5nLVx1MDAzZWVudHJ5X3NpemUpIC0gMTtcbiB9XG4rRVhQT1JUX1NZTUJPTChhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKTtcbiBcbiB2b2lkICphdGgxMmtfaGFsX3Nybmdfc3JjX25leHRfcGVlayhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBoYWxfc3JuZyAqc3JuZylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IGQ5ZmRkMmZjODI5ODZhLi4zMDZkNTFkYTNlYTE4YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtMTEwMCw5ICsxMTAwLDcyIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbitcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbit7XG4rXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYgPSBhdGgxMmtfdmlmX3RvX2FodmlmKHR4cS1cdTAwM2V2aWYpO1xuK1x0c3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYgPSBcdTAwMjZhaHZpZi1cdTAwM2VkZWZsaW5rO1xuK1x0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XG4rXHRcdC5zdGEgPSB0eHEtXHUwMDNlc3RhLFxuK1x0fTtcbitcdGNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjtcbitcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuK1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbitcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4rXHRpbnQgbnVtX2ZyZWU7XG4rXHR1OCByaW5nX2lkO1xuK1xuK1x0YXIgPSBhcnZpZi1cdTAwM2VhcjtcbitcdGlmICghYXIpXG4rXHRcdHJldHVybjtcbitcbitcdGRwID0gYXItXHUwMDNlYWItXHUwMDNlZHA7XG4rXG4rXHR3aGlsZSAoMSkge1xuK1x0XHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsXG4rXHRcdFx0XHQgICAgICBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSlcbitcdFx0XHRicmVhaztcbitcbitcdFx0cGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTtcbitcdFx0aWYgKCFwZWVrX3NrYilcbitcdFx0XHRicmVhaztcbitcbitcdFx0cmluZ19zZWxlY3RvciA9IGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vod19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IoXG4rXHRcdFx0XHRcdChzdHJ1Y3Qgc2tfYnVmZiAqKXBlZWtfc2tiKTtcbitcdFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlbWF4X3R4X3Jpbmc7XG4rXG4rXHRcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xuK1x0XHR0Y2xfcmluZyA9IFx1MDAyNmRwLVx1MDAzZWhhbC1cdTAwM2Vzcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuK1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1xuK1x0XHRzcGluX2xvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4rXHRcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcbitcdFx0aWYgKG51bV9mcmVlID09IDApIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XG4rXHRcdGlmICghc2tiKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXG4rXHRcdGF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4rXG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdH1cbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTJrX3dpZmk3X21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4rXHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbmluZGV4IDRmOTVkYTAyMzc0NmY5Li45Mjg5YjhkY2E5NzJjZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbisrKyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbkBAIC03NzQyLDYgKzc3NDIsMjYgQEAgdm9pZCBpZWVlODAyMTFfdW5yZXNlcnZlX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCB1OCB0aWQpO1xuIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSk7XG4gXG4rLyoqXG4rICogaWVlZTgwMjExX3R4X3BlZWsgLSBwZWVrIGF0IHRoZSBuZXh0IHBhY2tldCBpbiBhIHNvZnR3YXJlIHR4IHF1ZXVlXG4rICpcbisgKiBAaHc6IHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxuKyAqIEB0eHE6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBzdGF0aW9uIG9yIHZpcnR1YWwgaW50ZXJmYWNlLCBvciBmcm9tXG4rICpcdGllZWU4MDIxMV9uZXh0X3R4cSgpXG4rICpcbisgKiBSZXR1cm46IHRoZSBuZXh0IHNrYiB3aXRob3V0IGRlcXVldWluZyBpdCwgb3IgJU5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LlxuKyAqIFRoZSByZXR1cm5lZCBwb2ludGVyIGlzIGNvbnN0IOKAlCB0aGUgY2FsbGVyIG11c3Qgbm90IG1vZGlmeSBvciBmcmVlIHRoZSBza2IuXG4rICogVGhlIHNrYiByZW1haW5zIHF1ZXVlZCBhbmQgd2lsbCBiZSByZXR1cm5lZCBieSBhIHN1YnNlcXVlbnRcbisgKiBpZWVlODAyMTFfdHhfZGVxdWV1ZSgpIGNhbGwuXG4rICpcbisgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZHJpdmVycyB0aGF0IG5lZWQgdG8gaW5zcGVjdCB0aGUgbmV4dCBmcmFtZSAoZS5nLiB0b1xuKyAqIGRldGVybWluZSB0aGUgdGFyZ2V0IFRYIHJpbmcpIGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIHRvIGRlcXVldWUuXG4rICpcbisgKiBNdXN0IGJlIGNhbGxlZCBpbiB0aGUgc2FtZSBjb250ZXh0IGFzIGllZWU4MDIxMV90eF9kZXF1ZXVlKCkuXG4rICovXG4rY29uc3Qgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9wZWVrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcbitcbiAvKipcbiAgKiBpZWVlODAyMTFfdHhfZGVxdWV1ZV9uaSAtIGRlcXVldWUgYSBwYWNrZXQgZnJvbSBhIHNvZnR3YXJlIHR4IHF1ZXVlXG4gICogKGluIHByb2Nlc3MgY29udGV4dClcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMTNiMjA5ZmFkNDdhYS4uOTFiZmQ4ZWY5NDI4YTAgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdHguY1xuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcbkBAIC0zODU3LDYgKzM4NTcsNDUgQEAgc3RhdGljIGJvb2wgaWVlZTgwMjExX3htaXRfZmFzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4rXHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4re1xuK1x0c3RydWN0IHR4cV9pbmZvICp0eHFpID0gY29udGFpbmVyX29mKHR4cSwgc3RydWN0IHR4cV9pbmZvLCB0eHEpO1xuK1x0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG4rXHRzdHJ1Y3QgZnFfdGluICp0aW4gPSBcdTAwMjZ0eHFpLVx1MDAzZXRpbjtcbitcdHN0cnVjdCBmcSAqZnEgPSBcdTAwMjZsb2NhbC1cdTAwM2VmcTtcbitcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuK1x0c3RydWN0IGZxX2Zsb3cgKmZsb3c7XG4rXG4rXHRXQVJOX09OX09OQ0Uoc29mdGlycV9jb3VudCgpID09IDApO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZxLVx1MDAzZWxvY2spO1xuK1xuK1x0c2tiID0gc2tiX3BlZWsoXHUwMDI2dHhxaS1cdTAwM2VmcmFncyk7XG4rXHRpZiAoc2tiKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkoZmxvdywgXHUwMDI2dGluLVx1MDAzZW5ld19mbG93cywgZmxvd2NoYWluKSB7XG4rXHRcdHNrYiA9IHNrYl9wZWVrKFx1MDAyNmZsb3ctXHUwMDNlcXVldWUpO1xuK1x0XHRpZiAoc2tiKVxuK1x0XHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCBcdTAwMjZ0aW4tXHUwMDNlb2xkX2Zsb3dzLCBmbG93Y2hhaW4pIHtcbitcdFx0c2tiID0gc2tiX3BlZWsoXHUwMDI2Zmxvdy1cdTAwM2VxdWV1ZSk7XG4rXHRcdGlmIChza2IpXG4rXHRcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rb3V0OlxuK1x0aWYgKHNrYilcbitcdFx0c2tiX2dldF9oYXNoKHNrYik7XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZmcS1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiBza2I7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV90eF9wZWVrKTtcbitcbiBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6MzUuMDkxNjEwNDkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYwMTQzNTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgUmVhY2hhYmlsaXR5IG9mIGEgV2lyZWxlc3MgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgc29tZSBrZXkgd2lyZWxlc3MgbmV0d29ya2luZyBhcmVhczogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYCwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYCwgYW5kIGBuZXQvbWFjODAyMTEvdHguY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYSBuZXcgZnVuY3Rpb24sIGBpZWVlODAyMTFfdHhfcGVla2AsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byBjcmVhdGUgY3VzdG9tIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVycyBpbiBgYXRoMTFrYCBhbmQgYGF0aDEya2Ag4oCTIHNwZWNpZmljYWxseSwgYGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZWAgYW5kIGBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWVgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBuZXR3b3JraW5nL3dpcmVsZXNzIHN0YWNrLiBUaGUgYmlnIHF1ZXN0aW9uIGlzOiBjYW4gSSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgY29kZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD9cblxuYG1hYzgwMjExYCBpdHNlbGYgaXMgZGVmaW5pdGVseSByZWFjaGFibGU7IGBtYWM4MDIxMV9od3NpbWAgb2ZmZXJzIGEgcm91dGUgaW50byB0aGF0IGNvZGUuIEJ1dCB0aGUgY3JpdGljYWwgcGFydCBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIFRoZXNlIGFyZSB0eXBpY2FsbHkgdGllZCB0byBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4L2JlIGhhcmR3YXJlLiBUaGF0IHN1Z2dlc3RzIFBDSS9BSEIgZGVwZW5kZW5jaWVzLiBBcmUgdGhvc2UgZHJpdmVycyBldmVuICphY2Nlc3NpYmxlKiBpbiBhIFZNPyBDb3VsZCB0aGVyZSBiZSBhbnkgc2ltdWxhdGVkIGhhcmR3YXJlLCBvciBpcyB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5IG9mZi1saW1pdHMgZm9yIGZ1enppbmcgb3IgdGVzdGluZyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IEkndmUgZ290IHRvIGRldGVybWluZSBpZiB0aGVyZSdzIGFueSB3YXkgdG8gYWNjZXNzIHRoaXMgY29kZS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGhhdmUgYW55IHNpbXVsYXRlZCBoYXJkd2FyZSBjb21wb25lbnRzIGluIHRoZSBrZXJuZWwuIExldCBtZSBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGZvciByZWZlcmVuY2VzIHRvIHRoZW0gdG8gc2VlIGlmIHRoZXkgY2FuIGJlIGFjY2Vzc2VkIHZpYSBhIHZpcnR1YWwgYnVzIG9yIFVTQiBvciBpZiB0aGV5IGFyZSBwdXJlbHkgUENJL0FIQi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE1NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjQyLjY5MzA0Nzc2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTQ4NzQzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyNjY4NCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTI9Y29uZmlnIEFUSDExS1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxMTpcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBhdGgxMWsuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZz0xMz1jb25maWcgQVRIMTFLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxNDpcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMWsgQUhCIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE1LVxcdGRlcGVuZHMgb24gQVRIMTFLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9MjA9Y29uZmlnIEFUSDExS19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjE6XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMi1cXHRkZXBlbmRzIG9uIEFUSDExSyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZz0zMD1jb25maWcgQVRIMTFLX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMxOlxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMi1cXHRkZXBlbmRzIG9uIEFUSDExS1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTM4PWNvbmZpZyBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozOTpcXHRib29sIFxcXCJRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDAtXFx0ZGVwZW5kcyBvbiBBVEgxMUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00MS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQyOlxcdCAgRW5hYmxlIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9NDY9Y29uZmlnIEFUSDExS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ3OlxcdGJvb2wgXFxcImF0aDExayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ4LVxcdGRlcGVuZHMgb24gQVRIMTFLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDktXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1MDpcXHQgIFNlbGVjdCB0aGlzIHRvIHVzZSBhdGgxMWsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTUyPWNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NTM6XFx0Ym9vbCBcXFwiUUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU0LVxcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01Ni1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU3OlxcdCAgRW5hYmxlIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9NjE9Y29uZmlnIEFUSDExS19DRlJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjI6XFx0Ym9vbCBcXFwiYXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYzLVxcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjY2OlxcdCAgRW5hYmxlIGF0aDExayBjaGFubmVsIGZyZXF1ZW5jeSByZXNwb25zZSBkdW1wIHN1cHBvcnQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTY3LVxcdCAgVGhpcyBvcHRpb24gZXhwb3NlcyBkZWJ1Z2ZzIG5vZGVzIHRoYXQgd2lsbCBhbGxvdyB0aGUgdXNlclxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQVRIMTFLKSArPSBhdGgxMWsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzphdGgxMWsteSArPSBjb3JlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtNC1cXHQgICAgaGFsLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI0OmF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgKz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjU6YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI2OmF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgKz0gdHJhY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjc6YXRoMTFrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjg6YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgKz0gc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjk6YXRoMTFrLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzA6YXRoMTFrLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgKz0gY29yZWR1bXAub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzE6YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICs9IGNmci5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19BVEgxMUtfQUhCKSArPSBhdGgxMWtfYWhiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjM0OmF0aDExa19haGIteSArPSBhaGIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfQVRIMTFLX1BDSSkgKz0gYXRoMTFrX3BjaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZTozNzphdGgxMWtfcGNpLXkgKz0gbWhpLm8gcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF0aDExa19haGJfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1LVxcdC8qIFRPRE86IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIGNvbXBhdGlibGUgc3RyaW5nIHRvIHNvbWV0aGluZyBzaW1pbGFyXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDM6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXRoMTFrX2FoYl9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTQ0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE0NTphdGgxMWtfYWhiX2dldF9tc2lfaXJxX3djbjY3NTAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdW5zaWduZWQgaW50IHZlY3RvcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTE1MD1zdGF0aWMgaW5saW5lIHUzMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTUxOmF0aDExa19haGJfZ2V0X3dpbmRvd19zdGFydF93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNjY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE2NzphdGgxMWtfYWhiX3dpbmRvd193cml0ZTMyX3djbjY3NTAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIG9mZnNldCwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTcxLVxcdC8qIFdDTjY3NTAgdXNlcyBzdGF0aWMgd2luZG93IGJhc2VkIHJlZ2lzdGVyIGFjY2VzcyovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNzI6XFx0d2luZG93X3N0YXJ0ID0gYXRoMTFrX2FoYl9nZXRfd2luZG93X3N0YXJ0X3djbjY3NTAoYWIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE3ODpzdGF0aWMgdTMyIGF0aDExa19haGJfd2luZG93X3JlYWQzMl93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODMtXFx0LyogV0NONjc1MCB1c2VzIHN0YXRpYyB3aW5kb3cgYmFzZWQgcmVnaXN0ZXIgYWNjZXNzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxODQ6XFx0d2luZG93X3N0YXJ0ID0gYXRoMTFrX2FoYl9nZXRfd2luZG93X3N0YXJ0X3djbjY3NTAoYWIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5MTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDExa19wY2lfb3BzIGF0aDExa19haGJfcGNpX29wc193Y242NzUwID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTkyLVxcdC53YWtldXAgPSBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTkzLVxcdC5yZWxlYXNlID0gTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5NDpcXHQuZ2V0X21zaV9pcnEgPSBhdGgxMWtfYWhiX2dldF9tc2lfaXJxX3djbjY3NTAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxOTU6XFx0LndpbmRvd193cml0ZTMyID0gYXRoMTFrX2FoYl93aW5kb3dfd3JpdGUzMl93Y242NzUwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTk2OlxcdC53aW5kb3dfcmVhZDMyID0gYXRoMTFrX2FoYl93aW5kb3dfcmVhZDMyX3djbjY3NTAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xOTctfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5OTpzdGF0aWMgaW5saW5lIHUzMiBhdGgxMWtfYWhiX3JlYWQzMihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjA0OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMWtfYWhiX3dyaXRlMzIoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIG9mZnNldCwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjA5OnN0YXRpYyB2b2lkIGF0aDExa19haGJfa2lsbF90YXNrbGV0cyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjEzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIxNDpcXHRcXHRzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKmNlX3BpcGUgPSBcXHUwMDI2YWItXFx1MDAzZWNlLmNlX3BpcGVbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMTY6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjE3LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMjM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9leHRfZ3JwX2Rpc2FibGUoc3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIzMTpzdGF0aWMgdm9pZCBfX2F0aDExa19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzUtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIzNjpcXHRcXHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIzODpcXHRcXHRhdGgxMWtfYWhiX2V4dF9ncnBfZGlzYWJsZShpcnFfZ3JwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjQ4OnN0YXRpYyB2b2lkIGF0aDExa19haGJfZXh0X2dycF9lbmFibGUoc3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI0OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI1NjpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3NldGJpdDMyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHU4IGJpdCwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2MDpcXHR2YWwgPSBhdGgxMWtfYWhiX3JlYWQzMihhYiwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2MTpcXHRhdGgxMWtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIHwgQklUKGJpdCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjYyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2NDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NsZWFyYml0MzIoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTggYml0LCB1MzIgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjY4OlxcdHZhbCA9IGF0aDExa19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjY5OlxcdGF0aDExa19haGJfd3JpdGUzMihhYiwgb2Zmc2V0LCB2YWwgXFx1MDAyNiB+QklUKGJpdCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjcwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI3MjpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjgzLVxcdGlmIChjZV9hdHRyLVxcdTAwM2VzcmNfbmVudHJpZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyODQ6XFx0XFx0YXRoMTFrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQsIGllMV9yZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODYtXFx0aWYgKGNlX2F0dHItXFx1MDAzZWRlc3RfbmVudHJpZXMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI4NzpcXHRcXHRhdGgxMWtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI4ODpcXHRcXHRhdGgxMWtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCArIENFX0hPU1RfSUVfM19TSElGVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI4OS1cXHRcXHRcXHRcXHQgICAgaWUzX3JlZ19hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjkzOnN0YXRpYyB2b2lkIGF0aDExa19haGJfY2VfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzA0LVxcdGlmIChjZV9hdHRyLVxcdTAwM2VzcmNfbmVudHJpZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMDU6XFx0XFx0YXRoMTFrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMwNy1cXHRpZiAoY2VfYXR0ci1cXHUwMDNlZGVzdF9uZW50cmllcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzA4OlxcdFxcdGF0aDExa19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQsIGllMl9yZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMDk6XFx0XFx0YXRoMTFrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCArIENFX0hPU1RfSUVfM19TSElGVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxMC1cXHRcXHRcXHRcXHQgICAgICBpZTNfcmVnX2FkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMTQ6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zeW5jX2NlX2lycXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5jZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMjA6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzIxLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMjg6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zeW5jX2V4dF9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMzNDpcXHRcXHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzQzOnN0YXRpYyB2b2lkIGF0aDExa19haGJfY2VfaXJxc19lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0Ny1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5jZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNDg6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzQ5LVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzUwOlxcdFxcdGF0aDExa19haGJfY2VfaXJxX2VuYWJsZShhYiwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNTQ6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV9pcnFzX2Rpc2FibGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM1OC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5jZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNTk6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzYwLVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzYxOlxcdFxcdGF0aDExa19haGJfY2VfaXJxX2Rpc2FibGUoYWIsIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzYyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzY1OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9zdGFydChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzY2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM2NzpcXHRhdGgxMWtfYWhiX2NlX2lycXNfZW5hYmxlKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM2ODpcXHRhdGgxMWtfY2VfcnhfcG9zdF9idWYoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNzM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9leHRfaXJxX2VuYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNzg6XFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM4My1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozODQ6XFx0XFx0YXRoMTFrX2FoYl9leHRfZ3JwX2VuYWJsZShpcnFfZ3JwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM4NS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM4ODpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzg5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5MDpcXHRfX2F0aDExa19haGJfZXh0X2lycV9kaXNhYmxlKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5MTpcXHRhdGgxMWtfYWhiX3N5bmNfZXh0X2lycXMoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzkyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5NDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3N0b3Aoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zOTYtXFx0aWYgKCF0ZXN0X2JpdChBVEgxMUtfRkxBR19DUkFTSF9GTFVTSCwgXFx1MDAyNmFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mzk3OlxcdFxcdGF0aDExa19haGJfY2VfaXJxc19kaXNhYmxlKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5ODpcXHRhdGgxMWtfYWhiX3N5bmNfY2VfaXJxcyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozOTk6XFx0YXRoMTFrX2FoYl9raWxsX3Rhc2tsZXRzKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwMC1cXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2YWItXFx1MDAzZXJ4X3JlcGxlbmlzaF9yZXRyeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MDE6XFx0YXRoMTFrX2NlX2NsZWFudXBfcGlwZXMoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDAyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQwNDpzdGF0aWMgaW50IGF0aDExa19haGJfcG93ZXJfdXAoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MDY6XFx0c3RydWN0IGF0aDExa19haGIgKmFiX2FoYiA9IGF0aDExa19haGJfcHJpdihhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MDctXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDEwLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MTE6XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byBib290IHRoZSByZW1vdGUgcHJvY2Vzc29yIFE2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDE2OnN0YXRpYyB2b2lkIGF0aDExa19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDE4OlxcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MjM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9pbml0X3FtaV9jZV9jb25maWcoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MjU6XFx0c3RydWN0IGF0aDExa19xbWlfY2VfY2ZnICpjZmcgPSBcXHUwMDI2YWItXFx1MDAzZXFtaS5jZV9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQzNDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfZXh0X2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDM4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0Mzk6XFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ0OTpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTQtXFx0aWYgKGFiLVxcdTAwM2Vod19wYXJhbXMuaHlicmlkX2J1c190eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDU1OlxcdFxcdHJldHVybiBhdGgxMWtfcGNpY19mcmVlX2lycShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMuY2VfY291bnQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDU4OlxcdFxcdGlmIChhdGgxMWtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFxcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ1OS1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDY0OlxcdGF0aDExa19haGJfZnJlZV9leHRfaXJxKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ2NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0Njc6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ2OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0Njk6XFx0c3RydWN0IGF0aDExa19jZV9waXBlICpjZV9waXBlID0gZnJvbV90YXNrbGV0KGNlX3BpcGUsIHQsIGludHJfdHEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDcxOlxcdGF0aDExa19jZV9wZXJfZW5naW5lX3NlcnZpY2UoY2VfcGlwZS1cXHUwMDNlYWIsIGNlX3BpcGUtXFx1MDAzZXBpcGVfbnVtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3MzpcXHRhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoY2VfcGlwZS1cXHUwMDNlYWIsIGNlX3BpcGUtXFx1MDAzZXBpcGVfbnVtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ3NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NzY6c3RhdGljIGlycXJldHVybl90IGF0aDExa19haGJfY2VfaW50ZXJydXB0X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3ODpcXHRzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKmNlX3BpcGUgPSBhcmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ4MzpcXHRhdGgxMWtfYWhiX2NlX2lycV9kaXNhYmxlKGNlX3BpcGUtXFx1MDAzZWFiLCBjZV9waXBlLVxcdTAwM2VwaXBlX251bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00ODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5MDpzdGF0aWMgaW50IGF0aDExa19haGJfZXh0X2dycF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5MjpcXHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gY29udGFpbmVyX29mKG5hcGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0OTM6XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ5NC1cXHRcXHRcXHRcXHRcXHRcXHRuYXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5NTpcXHRzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiID0gaXJxX2dycC1cXHUwMDNlYWI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTYtXFx0aW50IHdvcmtfZG9uZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5ODpcXHR3b3JrX2RvbmUgPSBhdGgxMWtfZHBfc2VydmljZV9zcm5nKGFiLCBpcnFfZ3JwLCBidWRnZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDk5LVxcdGlmICh3b3JrX2RvbmUgXFx1MDAzYyBidWRnZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUwMC1cXHRcXHRuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgd29ya19kb25lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUwMTpcXHRcXHRhdGgxMWtfYWhiX2V4dF9ncnBfZW5hYmxlKGlycV9ncnApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTAyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTEwOnN0YXRpYyBpcnFyZXR1cm5fdCBhdGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTEyOlxcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBhcmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUxNzpcXHRhdGgxMWtfYWhiX2V4dF9ncnBfZGlzYWJsZShpcnFfZ3JwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTI0OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9jb25maWdfZXh0X2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUyNjpcXHRzdHJ1Y3QgYXRoMTFrX2h3X3BhcmFtcyAqaHcgPSBcXHUwMDI2YWItXFx1MDAzZWh3X3BhcmFtcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUyNy1cXHRpbnQgaSwgajtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTMxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1MzI6XFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MzMtXFx0XFx0dTMyIG51bV9pcnEgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NDItXFx0XFx0bmV0aWZfbmFwaV9hZGQoaXJxX2dycC1cXHUwMDNlbmFwaV9uZGV2LCBcXHUwMDI2aXJxX2dycC1cXHUwMDNlbmFwaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjU0MzpcXHRcXHRcXHQgICAgICAgYXRoMTFrX2FoYl9leHRfZ3JwX25hcGlfcG9sbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU2OC1cXHRcXHRcXHRcXHRcXHRcXHRyeGRtYTJob3N0X2Rlc3RpbmF0aW9uX3JpbmdfbWFjMSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1Njk6XFx0XFx0XFx0XFx0XFx0XFx0YXRoMTFrX2h3X2dldF9tYWNfZnJvbV9wZGV2X2lkKGh3LCBqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3MC1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3NC1cXHRcXHRcXHRcXHRcXHRcXHRob3N0MnJ4ZG1hX2hvc3RfYnVmX3JpbmdfbWFjMSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1NzU6XFx0XFx0XFx0XFx0XFx0XFx0YXRoMTFrX2h3X2dldF9tYWNfZnJvbV9wZGV2X2lkKGh3LCBqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3Ni1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4MC1cXHRcXHRcXHRcXHRcXHRcXHRwcGR1X2VuZF9pbnRlcnJ1cHRzX21hYzEgLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTgxOlxcdFxcdFxcdFxcdFxcdFxcdGF0aDExa19od19nZXRfbWFjX2Zyb21fcGRldl9pZChodywgaik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01ODItXFx0XFx0XFx0XFx0XFx0aXJxX2dycC1cXHUwMDNlaXJxc1tudW1faXJxKytdID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4My1cXHRcXHRcXHRcXHRcXHRcXHRyeGRtYTJob3N0X21vbml0b3Jfc3RhdHVzX3JpbmdfbWFjMSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1ODQ6XFx0XFx0XFx0XFx0XFx0XFx0YXRoMTFrX2h3X2dldF9tYWNfZnJvbV9wZGV2X2lkKGh3LCBqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4NS1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU5Ni1cXHRcXHRcXHRpcnFfc2V0X3N0YXR1c19mbGFncyhpcnEsIElSUV9OT0FVVE9FTiB8IElSUV9ESVNBQkxFX1VOTEFaWSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1OTc6XFx0XFx0XFx0cmV0ID0gcmVxdWVzdF9pcnEoaXJxLCBhdGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU5OC1cXHRcXHRcXHRcXHRcXHQgIElSUUZfVFJJR0dFUl9SSVNJTkcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYwMC1cXHRcXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2MDE6XFx0XFx0XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCByZXF1ZXN0X2lycSBmb3IgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MDItXFx0XFx0XFx0XFx0XFx0ICAgaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjEwOnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9jb25maWdfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTUtXFx0aWYgKGFiLVxcdTAwM2Vod19wYXJhbXMuaHlicmlkX2J1c190eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjE2OlxcdFxcdHJldHVybiBhdGgxMWtfcGNpY19jb25maWdfaXJxKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjE5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYyMDpcXHRcXHRzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKmNlX3BpcGUgPSBcXHUwMDI2YWItXFx1MDAzZWNlLmNlX3BpcGVbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2MjI6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjIzLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2Mjc6XFx0XFx0dGFza2xldF9zZXR1cChcXHUwMDI2Y2VfcGlwZS1cXHUwMDNlaW50cl90cSwgYXRoMTFrX2FoYl9jZV90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYyOC1cXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShhYi1cXHUwMDNlcGRldiwgaXJxX25hbWVbaXJxX2lkeF0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjI5OlxcdFxcdHJldCA9IHJlcXVlc3RfaXJxKGlycSwgYXRoMTFrX2FoYl9jZV9pbnRlcnJ1cHRfaGFuZGxlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYzMC1cXHRcXHRcXHRcXHQgIElSUUZfVFJJR0dFUl9SSVNJTkcsIGlycV9uYW1lW2lycV9pZHhdLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MzgtXFx0LyogQ29uZmlndXJlIGV4dGVybmFsIGludGVycnVwdHMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYzOTpcXHRyZXQgPSBhdGgxMWtfYWhiX2NvbmZpZ19leHRfaXJxKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjQ0OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9tYXBfc2VydmljZV90b19waXBlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUxNiBzZXJ2aWNlX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjQ1LVxcdFxcdFxcdFxcdFxcdCAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2ODc6c3RhdGljIGludCBhdGgxMWtfYWhiX2hpZl9zdXNwZW5kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02ODgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Njg5OlxcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjkwLVxcdHUzMiB3YWtlX2lycTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzAwLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjcwMTpcXHRcXHRhdGgxMWtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGVuYWJsZSB3YWtldXAgaXJxIDolZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcwMi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MTItXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzEzOlxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gc2VuZCBzbXAycCBwb3dlciBzYXZlIGVudGVyIGNtZCA6JWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MTQtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzE3OlxcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcXFwiZGV2aWNlIHN1c3BlbmRlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjcyMjpzdGF0aWMgaW50IGF0aDExa19haGJfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjcyNDpcXHRzdHJ1Y3QgYXRoMTFrX2FoYiAqYWJfYWhiID0gYXRoMTFrX2FoYl9wcml2KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcyNS1cXHR1MzIgd2FrZV9pcnE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTczNS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3MzY6XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byBkaXNhYmxlIHdha2V1cCBpcnE6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzM3LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc0OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NTA6XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byBzZW5kIHNtcDJwIHBvd2VyIHNhdmUgZW50ZXIgY21kIDolZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc1MS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NTUtXFx0aWYgKHJldCA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NTY6XFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJ0aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igd293IHdha2V1cCBjb21wbGV0aW9uXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc1Ny1cXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzYwOlxcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcXFwiZGV2aWNlIHJlc3VtZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzYxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMWtfaGlmX29wcyBhdGgxMWtfYWhiX2hpZl9vcHNfaXBxODA3NCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2NjpcXHQuc3RhcnQgPSBhdGgxMWtfYWhiX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzY3OlxcdC5zdG9wID0gYXRoMTFrX2FoYl9zdG9wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzY4OlxcdC5yZWFkMzIgPSBhdGgxMWtfYWhiX3JlYWQzMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2OTpcXHQud3JpdGUzMiA9IGF0aDExa19haGJfd3JpdGUzMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc3MC1cXHQucmVhZCA9IE5VTEwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NzE6XFx0LmlycV9lbmFibGUgPSBhdGgxMWtfYWhiX2V4dF9pcnFfZW5hYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzcyOlxcdC5pcnFfZGlzYWJsZSA9IGF0aDExa19haGJfZXh0X2lycV9kaXNhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzczOlxcdC5tYXBfc2VydmljZV90b19waXBlID0gYXRoMTFrX2FoYl9tYXBfc2VydmljZV90b19waXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc0OlxcdC5wb3dlcl9kb3duID0gYXRoMTFrX2FoYl9wb3dlcl9kb3duLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc1OlxcdC5wb3dlcl91cCA9IGF0aDExa19haGJfcG93ZXJfdXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3ODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDExa19oaWZfb3BzIGF0aDExa19haGJfaGlmX29wc193Y242NzUwID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc5OlxcdC5zdGFydCA9IGF0aDExa19wY2ljX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzgwOlxcdC5zdG9wID0gYXRoMTFrX3BjaWNfc3RvcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4MTpcXHQucmVhZDMyID0gYXRoMTFrX3BjaWNfcmVhZDMyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzgyOlxcdC53cml0ZTMyID0gYXRoMTFrX3BjaWNfd3JpdGUzMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc4My1cXHQucmVhZCA9IE5VTEwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODQ6XFx0LmlycV9lbmFibGUgPSBhdGgxMWtfcGNpY19leHRfaXJxX2VuYWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4NTpcXHQuaXJxX2Rpc2FibGUgPSBhdGgxMWtfcGNpY19leHRfaXJxX2Rpc2FibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODY6XFx0LmdldF9tc2lfYWRkcmVzcyA9ICBhdGgxMWtfcGNpY19nZXRfbXNpX2FkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODc6XFx0LmdldF91c2VyX21zaV92ZWN0b3IgPSBhdGgxMWtfcGNpY19nZXRfdXNlcl9tc2lfYXNzaWdubWVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4ODpcXHQubWFwX3NlcnZpY2VfdG9fcGlwZSA9IGF0aDExa19wY2ljX21hcF9zZXJ2aWNlX3RvX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODk6XFx0LnBvd2VyX2Rvd24gPSBhdGgxMWtfYWhiX3Bvd2VyX2Rvd24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3OTA6XFx0LnBvd2VyX3VwID0gYXRoMTFrX2FoYl9wb3dlcl91cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MTpcXHQuc3VzcGVuZCA9IGF0aDExa19haGJfaGlmX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3OTI6XFx0LnJlc3VtZSA9IGF0aDExa19haGJfaGlmX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MzpcXHQuY2VfaXJxX2VuYWJsZSA9IGF0aDExa19wY2lfZW5hYmxlX2NlX2lycXNfZXhjZXB0X3dha2VfaXJxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzk0OlxcdC5jZV9pcnFfZGlzYWJsZSA9IGF0aDExa19wY2lfZGlzYWJsZV9jZV9pcnFzX2V4Y2VwdF93YWtlX2lycSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5NS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzk3OnN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfZ2V0X3Jwcm9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03OTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzk5OlxcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODAwLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGFiLVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTgwNC1cXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwicWNvbSxycHJvY1xcXCIsIFxcdTAwMjZycHJvY19waGFuZGxlKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODA1OlxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IHE2X3Jwcm9jIGhhbmRsZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MDYtXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTgxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjgxNzpzdGF0aWMgaW50IGF0aDExa19haGJfc2V0dXBfbXNpX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODI3OlxcdHJldCA9IGF0aDExa19wY2ljX2luaXRfbXNpX2NvbmZpZyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MjgtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODI5OlxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gaW5pdCBtc2kgY29uZmlnOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTgzMC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjQyLjc2MjU0MjA3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0Mjc2ODgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBTaW11bGF0aW9uIExhbmRzY2FwZSBmb3IgYXRoMTFrL2F0aDEyayBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgYGF0aDExa2AgZHJpdmVyLCBhbmQgSSBzZWUgaXQncyBnb3Qgb3B0aW9ucyBmb3IgYm90aCBBSEIgYW5kIFBDSSBjb25maWd1cmF0aW9ucywgcmlnaHQ/IFRoYXQgbWFrZXMgc2Vuc2UsIGNvdmVyaW5nIHRoZSBkaWZmZXJlbnQgYnVzIGludGVyZmFjZXMuIEkgYWxzbyBub3RpY2UgdGhpbmdzIGxpa2UgYERFQlVHRlNgIGFuZCB0cmFjaW5nIHN1cHBvcnQsIHdoaWNoIGFyZSBwcmV0dHkgc3RhbmRhcmQgZm9yIGRlYnVnZ2luZyBhbmQgaW5zdHJ1bWVudGF0aW9uLiBOb3csIHdoYXQgSSdtIHJlYWxseSBjdXJpb3VzIGFib3V0IGlzOiBkb2VzIHRoaXMgZHJpdmVyLCBvciB0aGUgbmV3ZXIgYGF0aDEya2AsIGhhdmUgYW55IGtpbmQgb2Ygc2ltdWxhdGVkIGhhcmR3YXJlIGVudmlyb25tZW50PyBTb21ldGhpbmcgbGlrZSBhIGBod3NpbWAgc2V0dXAsIHBlcmhhcHM/IEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSdzIGEgbWVjaGFuaXNtIGF2YWlsYWJsZSB0byBlbXVsYXRlIG9yIHNpbXVsYXRlIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIHdoaWNoIHdvdWxkIGJlIGludmFsdWFibGUgZm9yIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50LCBlc3BlY2lhbGx5IHdoZW4gYWN0dWFsIGhhcmR3YXJlIGlzbid0IHJlYWRpbHkgYWNjZXNzaWJsZS4gTGV0J3Mgc2VlIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBsaWtlIHRoYXQgYXZhaWxhYmxlIGZvciB0aGVzZSBwYXJ0aWN1bGFyIGRyaXZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODM3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjQ3LjEwNTMxMjYzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzExMjM3MDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjQ3LjI3NjQ0NDgxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NTkxMTg0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhdGgxMWsgYW5kIGF0aDEyayBEcml2ZXJzKipcblxuT2theSwgc28gYG1hYzgwMjExX2h3c2ltYCBpcyB0aGF0IGdlbmVyaWMgbWFjODAyMTEgZHJpdmVyIOKAkyByaWdodCwgZ290IGl0LiBUaGlzIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGBhdGgxMWtgIGFuZCBgYXRoMTJrYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGVzZSBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHNpbmNlIHRoZXkgc2VlbSB0byBkZXBlbmQgb24gcGh5c2ljYWwgaGFyZHdhcmUgKFBDSSBvciBBSEIpP1xuXG5UaGUgdXN1YWwgYXBwcm9hY2ggZm9yIFBDSSBkZXZpY2VzIGludm9sdmVzIGVpdGhlciBhIHZpcnR1YWwgUENJIGRldmljZSBvciBsZXZlcmFnaW5nIHNvbWV0aGluZyBsaWtlIGB2aGNpYCBmb3IgVVNCIG9yIGB2ZmlvYCBmb3IgUENJIHdpdGhpbiBTeXprYWxsZXIuIFN5emthbGxlciBoYXMgdGhlIGBzeXpfcGNpX2RldmljZWAgY2FsbCwgYnV0IHRoYXQgKnJlcXVpcmVzKiB0aGUgZHJpdmVyIHRvIGJpbmQgdG8gYSBQQ0kgZGV2aWNlLiBBbmQsIEkgdGhpbmsgU3l6a2FsbGVyIGRvZXMgdXNlIGB2aGNpYCBmb3IgVVNCIGluamVjdGlvbi4gQnV0LCBjYW4gaXQgYWxzbyBlbXVsYXRlIFBDSSBkZXZpY2VzLCBvciBkb2VzIGl0IHVzZSBgc3l6X3BjaV9kZXZpY2VgIGZvciB0aGF0PyBXYWl0LCBkb2VzIFN5emthbGxlciAqYWN0dWFsbHkqIHN1cHBvcnQgZnV6emluZyBQQ0kgZHJpdmVycz9cblxuWWVzLCBhZnRlciBhIHF1aWNrIHJlbWluZGVyLCBTeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgZnV6emluZyBQQ0kgZHJpdmVycywgZWl0aGVyIGRpcmVjdGx5IHRocm91Z2ggYHN5el9wY2lfZGV2aWNlYCBvciBzaW1pbGFyIG1lY2hhbmlzbXMsIG9yIHBvdGVudGlhbGx5IGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlLiBCdXQgaGVyZSdzIHRoZSBraWNrZXI6IHdpdGggY29tcGxleCB3aXJlbGVzcyBkcml2ZXJzIGxpa2UgYGF0aDExa2AsIHJlYWNoaW5nIGFueSBtZWFuaW5nZnVsIGNvZGUgZGVwdGggd2l0aG91dCBhIGZ1bGwgaGFyZHdhcmUgZW11bGF0b3IgaXMgaW5jcmVkaWJseSBkaWZmaWN1bHQuIFRoZXNlIGRyaXZlcnMgYXJlIGZpbmlja3kg4oCTIHRoZXkncmUgZXhwZWN0aW5nIHNwZWNpZmljIGZpcm13YXJlIHRvIGxvYWQsIHZlcnkgc3BlY2lmaWMgRE1BIHJpbmdzIHRvIGJlIHNldCB1cCBpbiBhIHNwZWNpZmljIHdheSwgYW5kIHByZWNpc2UgcmVzcG9uc2VzIGZyb20gdGhlIGhhcmR3YXJlLlxuXG5TbywgdGhlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNoZWNrIGlmIGBhdGgxMWtgIG9yIGBhdGgxMmtgIGNhbiBldmVuIGluaXRpYWxpemUgd2l0aG91dCB0aGF0IGZpcm13YXJlLCBvciBpZiB0aGV5IGp1c3QgZmFpbCBlYXJseS4gVGhhdCB3b3VsZCBiZSB0aGUgZmlyc3QgaHVyZGxlIGluIHNlZWluZyBob3cgdXNlZnVsIHRoaXMgcGF0Y2ggd291bGQgYmUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTY5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjUzLjkzNTU2NjI4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDI0NTU3MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVxdWVzdF9maXJtd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jOjExOnN0YXRpYyBpbnQgYXRoMTFrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDExa19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTItXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmM9MTQ3PWludCBhdGgxMWtfZndfcHJlX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jOjE1MTpcXHRyZXQgPSBhdGgxMWtfZndfcmVxdWVzdF9maXJtd2FyZV9hcGlfbihhYiwgQVRIMTFLX0ZXX0FQSTJfRklMRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTE1Mi1cXHRpZiAocmV0ID09IDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6NTQuMTc4MDI5MTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQyMDk2MjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogaWYgdGhpcyBgYXRoMTFrYCBkcml2ZXIgbmVlZHMgZmlybXdhcmUgdG8gcnVuLCBpdCdzIGdvaW5nIHRvIGJlIGEgZGlzYXN0ZXIgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIGNvcnJlY3QgZmlybXdhcmUgbG9hZGVkIGFuZCB0aGUgaGFyZHdhcmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQncyBhIGNsYXNzaWMgcGl0ZmFsbC4gQnV0IHdhaXQsIGl0J3Mgbm90IGp1c3QgdGhlIGRyaXZlciBpdHNlbGYuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYG5ldC9tYWM4MDIxMS90eC5jYCBhbmQgYGluY2x1ZGUvbmV0L21hYzgwMjExLmhgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IGl0J3MgZXh0ZW5kaW5nIHRoZSBjb3JlIE1BQzgwMjExIGZ1bmN0aW9uYWxpdHkuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBhIG5ldyBmdW5jdGlvbiwgYGllZWU4MDIxMV90eF9wZWVrYCwgaGFzIGJlZW4gYWRkZWQgdG8gYG5ldC9tYWM4MDIxMS90eC5jYCBhbmQgZXhwb3J0ZWQuIFRoaXMgbWFrZXMgaXQgYSBwYXJ0IG9mIHRoZSBjb3JlIG1hYzgwMjExLCBtZWFuaW5nIGl0J3MgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGZyb20gbXVsdGlwbGUgZHJpdmVycy4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBuZXcgZnVuY3Rpb24uIENhbiB0aGlzIGBpZWVlODAyMTFfdHhfcGVla2AgYWN0dWFsbHkgYmUgdHJpZ2dlcmVkLCBvciBpcyBpdCBpc29sYXRlZD9cblxuT2theSwgZnJvbSB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20gYGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZWAgYW5kIGBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWVgLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gYSBiaXQuIEJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgc2hvdWxkIGNoZWNrIGlmIGFueSBvdGhlciBkcml2ZXJzLCBiZXNpZGVzIHRob3NlIHR3bywgYXJlIHV0aWxpemluZyBgaWVlZTgwMjExX3R4X3BlZWtgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgSSBoYXZlIGNvdmVyZWQgYWxsIHRoZSBiYXNlcyBvZiBob3cgdGhlIGZ1enppbmcgaXMgd29ya2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxODYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6NTkuMjIwMTI4MzcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTQwNjM3MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV90eF9wZWVrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwMDY4PXN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDA5MTpcXHRcXHRwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTItXFx0XFx0aWYgKCFwZWVrX3NrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz0xMTAzPXN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoxMTMyOlxcdFxcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExMzMtXFx0XFx0aWYgKCFwZWVrX3NrYilcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc0Mj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NDUtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzQ2OiAqIGllZWU4MDIxMV90eF9wZWVrIC0gcGVlayBhdCB0aGUgbmV4dCBwYWNrZXQgaW4gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc0Ny0gKlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYxLSAqL1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzc2Mjpjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzgwOT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzg1OS1cXG5uZXQvbWFjODAyMTEvdHguYzozODYwOmNvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvdHguYy0zODYxLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zODk2LX1cXG5uZXQvbWFjODAyMTEvdHguYzozODk3OkVYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV90eF9wZWVrKTtcXG5uZXQvbWFjODAyMTEvdHguYy0zODk4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMTowMi4xNjA3NzA5NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxODAwNzMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgaWVlZTgwMjExX3R4X3BlZWtgIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqXG5cbk9rYXksIHNvIGl0IHNlZW1zIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBhdGgxMWtgIGFuZCBgYXRoMTJrYCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBJZiwgaHlwb3RoZXRpY2FsbHksIEkgY2FuJ3QgZ2V0IGBhdGgxMWtgIG9yIGBhdGgxMmtgIGluaXRpYWxpemVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGVuIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gdGhhdCBzY2VuYXJpby4gVGhhdCdzIHRoZSBjb3JlIHF1ZXN0aW9uIGhlcmU6IGNhbiBJIGdldCBlaXRoZXIgb2YgdGhvc2UgZHJpdmVycyB1cCBhbmQgcnVubmluZyBpbiBRRU1VP1xuXG5NeSBleHBlcmllbmNlIHN1Z2dlc3RzIFBDSSBkcml2ZXJzLCBpbiBnZW5lcmFsLCBhcmUgdXN1YWxseSBwcm9iZWFibGUgaWYgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgZXhpc3RzLiBBbmQsIG9mIGNvdXJzZSwgdGhlcmUncyBhbHdheXMgdGhlIHBvc3NpYmlsaXR5IHRoYXQgYHN5emthbGxlcmAncyBgc3l6X3BjaV9kZXZpY2VgIGNvdWxkIHRyaWdnZXIgdGhhdCBwcm9iZSBmdW5jdGlvbi4gSG93ZXZlciwgSSdtIGFudGljaXBhdGluZyB0aGF0IGV2ZW4gaWYgdGhlIGBhdGgxMWtgIHByb2JlICpkb2VzKiBnZXQgY2FsbGVkLCBpdCdsbCBwcm9iYWJseSBmYWlsIHByZXR0eSBlYXJseSBvbiwgc3BlY2lmaWNhbGx5IHdoZW4gaXQgdHJpZXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgb3Igd2hlbiBpdCdzIHRyeWluZyB0byBsb2FkIHRoZSBmaXJtd2FyZS4gVGhhdCdzIGEgY2xhc3NpYyBzdHVtYmxpbmcgYmxvY2sgaW4gdmlydHVhbGl6YXRpb24uXG5cblRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsaWtlbHkgZmFpbHVyZSBwb2ludHMsIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBhdGgxMWtfcGNpX3Byb2JlYCBmdW5jdGlvbiBpdHNlbGYuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjAwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjA2Ljk3ODc4MDQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg1Njk2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfcGNpX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ5OnN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk1MC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEyOTY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0aDExa19wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVxcdC5pZF90YWJsZSA9IGF0aDExa19wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMjk5OlxcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzAwLVxcdC5yZW1vdmUgPSBhdGgxMWtfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MDcuMDQxNjQyMTQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2OTI1NjA5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiBgYXRoMTFrX3BjaV9wcm9iZWAuIFRoaXMgaXMgd2hlcmUgdGhlIGluaXRpYWwgc2V0dXAgYW5kIGluaXRpYWxpemF0aW9uIGZvciB0aGUgUENJLWJhc2VkIFF1YWxjb21tIEF0aGVyb3MgV2ktRmkgZHJpdmVyIGhhcHBlbnMsIHNvIGl0J3MgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBkb2luZyBzbyBJIGNhbiBxdWlja2x5IGFuZCBlZmZpY2llbnRseSBkZXRlcm1pbmUgaWYgYW55IGVycm9ycyBvY2N1ciwgb3IgaWYgdGhlcmUgaXMgdGhlIG5lZWQgdG8gYWRqdXN0IHRoZSBkcml2ZXIuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDY4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MDkuNzM0MjA1NDgyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk0OSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5NDk6XFx0c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiA5NTA6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxcbiA5NTE6XFx0e1xcbiA5NTI6XFx0XFx0c3RydWN0IGF0aDExa19iYXNlICphYjtcXG4gOTUzOlxcdFxcdHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2k7XFxuIDk1NDpcXHRcXHR1MzIgc29jX2h3X3ZlcnNpb25fbWFqb3IsIHNvY19od192ZXJzaW9uX21pbm9yO1xcbiA5NTU6XFx0XFx0aW50IHJldDtcXG4gOTU2OlxcdFxcdHUzMiBzdWJfdmVyc2lvbjtcXG4gOTU3OlxcdFxcbiA5NTg6XFx0XFx0YWIgPSBhdGgxMWtfY29yZV9hbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKmFiX3BjaSksIEFUSDExS19CVVNfUENJKTtcXG4gOTU5OlxcdFxcbiA5NjA6XFx0XFx0aWYgKCFhYikge1xcbiA5NjE6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIGF0aDExayBiYXNlXFxcXG5cXFwiKTtcXG4gOTYyOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA5NjM6XFx0XFx0fVxcbiA5NjQ6XFx0XFxuIDk2NTpcXHRcXHRhYi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4gOTY2OlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBhYik7XFxuIDk2NzpcXHRcXHRhYl9wY2kgPSBhdGgxMWtfcGNpX3ByaXYoYWIpO1xcbiA5Njg6XFx0XFx0YWJfcGNpLVxcdTAwM2VkZXZfaWQgPSBwY2lfZGV2LVxcdTAwM2VkZXZpY2U7XFxuIDk2OTpcXHRcXHRhYl9wY2ktXFx1MDAzZWFiID0gYWI7XFxuIDk3MDpcXHRcXHRhYl9wY2ktXFx1MDAzZXBkZXYgPSBwZGV2O1xcbiA5NzE6XFx0XFx0YWItXFx1MDAzZWhpZi5vcHMgPSBcXHUwMDI2YXRoMTFrX3BjaV9oaWZfb3BzO1xcbiA5NzI6XFx0XFx0YWItXFx1MDAzZWZ3X21vZGUgPSBBVEgxMUtfRklSTVdBUkVfTU9ERV9OT1JNQUw7XFxuIDk3MzpcXHRcXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWIpO1xcbiA5NzQ6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFiX3BjaS1cXHUwMDNld2luZG93X2xvY2spO1xcbiA5NzU6XFx0XFxuIDk3NjpcXHRcXHQvKiBTZXQgZml4ZWRfbWVtX3JlZ2lvbiB0byB0cnVlIGZvciBwbGF0Zm9ybXMgc3VwcG9ydCByZXNlcnZlZCBtZW1vcnlcXG4gOTc3OlxcdFxcdCAqIGZyb20gRFQuIElmIG1lbW9yeSBpcyByZXNlcnZlZCBmcm9tIERUIGZvciBGVywgYXRoMTFrIGRyaXZlciBuZWVkIG5vdFxcbiA5Nzg6XFx0XFx0ICogYWxsb2NhdGUgbWVtb3J5LlxcbiA5Nzk6XFx0XFx0ICovXFxuIDk4MDpcXHRcXHRpZiAob2ZfcHJvcGVydHlfcHJlc2VudChhYi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwibWVtb3J5LXJlZ2lvblxcXCIpKVxcbiA5ODE6XFx0XFx0XFx0c2V0X2JpdChBVEgxMUtfRkxBR19GSVhFRF9NRU1fUkdOLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncyk7XFxuIDk4MjpcXHRcXG4gOTgzOlxcdFxcdHJldCA9IGF0aDExa19wY2lfY2xhaW0oYWJfcGNpLCBwZGV2KTtcXG4gOTg0OlxcdFxcdGlmIChyZXQpIHtcXG4gOTg1OlxcdFxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gY2xhaW0gZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4gOTg2OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfY29yZTtcXG4gOTg3OlxcdFxcdH1cXG4gOTg4OlxcdFxcbiA5ODk6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19CT09ULCBcXFwicGNpIHByb2JlICUwNHg6JTA0eCAlMDR4OiUwNHhcXFxcblxcXCIsXFxuIDk5MDpcXHRcXHRcXHQgICBwZGV2LVxcdTAwM2V2ZW5kb3IsIHBkZXYtXFx1MDAzZWRldmljZSxcXG4gOTkxOlxcdFxcdFxcdCAgIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UpO1xcbiA5OTI6XFx0XFxuIDk5MzpcXHRcXHRhYi1cXHUwMDNlaWQudmVuZG9yID0gcGRldi1cXHUwMDNldmVuZG9yO1xcbiA5OTQ6XFx0XFx0YWItXFx1MDAzZWlkLmRldmljZSA9IHBkZXYtXFx1MDAzZWRldmljZTtcXG4gOTk1OlxcdFxcdGFiLVxcdTAwM2VpZC5zdWJzeXN0ZW1fdmVuZG9yID0gcGRldi1cXHUwMDNlc3Vic3lzdGVtX3ZlbmRvcjtcXG4gOTk2OlxcdFxcdGFiLVxcdTAwM2VpZC5zdWJzeXN0ZW1fZGV2aWNlID0gcGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZTtcXG4gOTk3OlxcdFxcbiA5OTg6XFx0XFx0c3dpdGNoIChwY2lfZGV2LVxcdTAwM2VkZXZpY2UpIHtcXG4gOTk5OlxcdFxcdGNhc2UgUUNBNjM5MF9ERVZJQ0VfSUQ6XFxuMTAwMDpcXHRcXHRcXHRyZXQgPSBhdGgxMWtfcGNpY19yZWdpc3Rlcl9wY2lfb3BzKGFiLCBcXHUwMDI2YXRoMTFrX3BjaV9vcHNfcWNhNjM5MCk7XFxuMTAwMTpcXHRcXHRcXHRpZiAocmV0KSB7XFxuMTAwMjpcXHRcXHRcXHRcXHRhdGgxMWtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIFBDSSBvcHM6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjEwMDM6XFx0XFx0XFx0XFx0Z290byBlcnJfcGNpX2ZyZWVfcmVnaW9uO1xcbjEwMDQ6XFx0XFx0XFx0fVxcbjEwMDU6XFx0XFxuMTAwNjpcXHRcXHRcXHRhdGgxMWtfcGNpX3JlYWRfaHdfdmVyc2lvbihhYiwgXFx1MDAyNnNvY19od192ZXJzaW9uX21ham9yLFxcbjEwMDc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnNvY19od192ZXJzaW9uX21pbm9yKTtcXG4xMDA4OlxcdFxcdFxcdHN3aXRjaCAoc29jX2h3X3ZlcnNpb25fbWFqb3IpIHtcXG4xMDA5OlxcdFxcdFxcdGNhc2UgMjpcXG4xMDEwOlxcdFxcdFxcdFxcdGFiLVxcdTAwM2Vod19yZXYgPSBBVEgxMUtfSFdfUUNBNjM5MF9IVzIwO1xcbjEwMTE6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTAxMjpcXHRcXHRcXHRkZWZhdWx0OlxcbjEwMTM6XFx0XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiVW5zdXBwb3J0ZWQgUUNBNjM5MCBTT0MgaGFyZHdhcmUgdmVyc2lvbjogJWQgJWRcXFxcblxcXCIsXFxuMTAxNDpcXHRcXHRcXHRcXHRcXHRzb2NfaHdfdmVyc2lvbl9tYWpvciwgc29jX2h3X3ZlcnNpb25fbWlub3IpO1xcbjEwMTU6XFx0XFx0XFx0XFx0cmV0ID0gLUVPUE5PVFNVUFA7XFxuMTAxNjpcXHRcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTAxNzpcXHRcXHRcXHR9XFxuMTAxODpcXHRcXG4xMDE5OlxcdFxcdFxcdGJyZWFrO1xcbjEwMjA6XFx0XFx0Y2FzZSBRQ045MDc0X0RFVklDRV9JRDpcXG4xMDIxOlxcdFxcdFxcdHJldCA9IGF0aDExa19wY2ljX3JlZ2lzdGVyX3BjaV9vcHMoYWIsIFxcdTAwMjZhdGgxMWtfcGNpX29wc19xY245MDc0KTtcXG4xMDIyOlxcdFxcdFxcdGlmIChyZXQpIHtcXG4xMDIzOlxcdFxcdFxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgUENJIG9wczogJWRcXFxcblxcXCIsIHJldCk7XFxuMTAyNDpcXHRcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTAyNTpcXHRcXHRcXHR9XFxuMTAyNjpcXHRcXHRcXHRhYi1cXHUwMDNlaHdfcmV2ID0gQVRIMTFLX0hXX1FDTjkwNzRfSFcxMDtcXG4xMDI3OlxcdFxcdFxcdGJyZWFrO1xcbjEwMjg6XFx0XFx0Y2FzZSBXQ042ODU1X0RFVklDRV9JRDpcXG4xMDI5OlxcdFxcdFxcdHJldCA9IGF0aDExa19wY2ljX3JlZ2lzdGVyX3BjaV9vcHMoYWIsIFxcdTAwMjZhdGgxMWtfcGNpX29wc19xY2E2MzkwKTtcXG4xMDMwOlxcdFxcdFxcdGlmIChyZXQpIHtcXG4xMDMxOlxcdFxcdFxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgUENJIG9wczogJWRcXFxcblxcXCIsIHJldCk7XFxuMTAzMjpcXHRcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTAzMzpcXHRcXHRcXHR9XFxuMTAzNDpcXHRcXHRcXHRhYi1cXHUwMDNlaWQuYmRmX3NlYXJjaCA9IEFUSDExS19CREZfU0VBUkNIX0JVU19BTkRfQk9BUkQ7XFxuMTAzNTpcXHRcXHRcXHRhdGgxMWtfcGNpX3JlYWRfaHdfdmVyc2lvbihhYiwgXFx1MDAyNnNvY19od192ZXJzaW9uX21ham9yLFxcbjEwMzY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnNvY19od192ZXJzaW9uX21pbm9yKTtcXG4xMDM3OlxcdFxcdFxcdHN3aXRjaCAoc29jX2h3X3ZlcnNpb25fbWFqb3IpIHtcXG4xMDM4OlxcdFxcdFxcdGNhc2UgMjpcXG4xMDM5OlxcdFxcdFxcdFxcdHN3aXRjaCAoc29jX2h3X3ZlcnNpb25fbWlub3IpIHtcXG4xMDQwOlxcdFxcdFxcdFxcdGNhc2UgMHgwMDpcXG4xMDQxOlxcdFxcdFxcdFxcdGNhc2UgMHgwMTpcXG4xMDQyOlxcdFxcdFxcdFxcdFxcdGFiLVxcdTAwM2Vod19yZXYgPSBBVEgxMUtfSFdfV0NONjg1NV9IVzIwO1xcbjEwNDM6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTA0NDpcXHRcXHRcXHRcXHRjYXNlIDB4MTA6XFxuMTA0NTpcXHRcXHRcXHRcXHRjYXNlIDB4MTE6XFxuMTA0NjpcXHRcXHRcXHRcXHRcXHRzdWJfdmVyc2lvbiA9IGF0aDExa19wY2ljX3JlYWQzMihhYiwgVENTUl9TT0NfSFdfU1VCX1ZFUik7XFxuMTA0NzpcXHRcXHRcXHRcXHRcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX1BDSSwgXFxcInN1Yl92ZXJzaW9uIDB4JXhcXFxcblxcXCIsXFxuMTA0ODpcXHRcXHRcXHRcXHRcXHRcXHQgICBzdWJfdmVyc2lvbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjA5LjczNDM0NDI2MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI5NzI0OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZ1bG5lcmFiaWxpdHkgRXhwbG9yYXRpb24gaW4gYXRoMTFrIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGluIGBhdGgxMWtgIHJlbGllcyBvbiBgYXRoMTFrX3BjaV9yZWFkX2h3X3ZlcnNpb25gIGFuZCBgYXRoMTFrX3BjaWNfcmVhZDMyYCB0byByZWFkIHRoZSBoYXJkd2FyZSB2ZXJzaW9uLiBNeSBpbml0aWFsIGNvbmNlcm4gaXMgdGhhdCBpZiBhIGZ1enplciwgc3BlY2lmaWNhbGx5IG9uZSBsaWtlIGBzeXpfcGNpX2RldmljZWAsIGlzIG1hbmlwdWxhdGluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCBpdCBjYW4gZWZmZWN0aXZlbHkgc3Bvb2YgdGhlc2UgaGFyZHdhcmUgdmVyc2lvbiByZWFkcy4gVGhpcyBjb3VsZCBhbGxvdyBpdCB0byBieXBhc3MgdGhlIGludGVuZGVkIGNoZWNrcyBhbmQgcG90ZW50aWFsbHkgdHJpZ2dlciBzdWJzZXF1ZW50LCB1bmludGVuZGVkIGNvZGUgcGF0aHMuXG5cblRoZSBrZXkgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gdGhlIGZ1enplciB1c2UgdGhhdCBzcG9vZmVkIGluZm9ybWF0aW9uIHRvIGJ5cGFzcyB0aGUgcmVxdWlyZW1lbnQgb2YgZmlybXdhcmUgdG8gYmUgbG9hZGVkPyBJIG5lZWQgdG8ga25vdyBpZiB0aGUgYGF0aDExa2AgZHJpdmVyIGhhcyBjaGVja3MgZm9yIGZpcm13YXJlLiBJZiBpdCBkb2VzLCB0aGVuIHRoZSBhYmlsaXR5IHRvIG1hbmlwdWxhdGUgdGhlIGhhcmR3YXJlIHZlcnNpb24gbWF5IGFsbG93IHRoZSBmdXp6ZXIgdG8gYnlwYXNzIGNoZWNrcyByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcuXG5cbkkgc2hvdWxkIGludmVzdGlnYXRlIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcGVyaGFwcyBzb21ldGhpbmcgbGlrZSBgYXRoMTFrX2NvcmVfaW5pdGAsIHRvIGNvbmZpcm0gaWYgZmlybXdhcmUgbG9hZGluZyBpcyBpbmRlZWQgZXNzZW50aWFsIGFuZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBoYXJkd2FyZSB2ZXJzaW9ucyBhcmUgdXRpbGl6ZWQgaW4gdGhhdCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU2NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjE0LjM2NDA3MTA0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczODc1NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTFrX2NvcmVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTExMDg9c3RhdGljIGludCBhdGgxMWtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTk1OlxcdHJldCA9IGF0aDExa19jb3JlX2luaXQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE5Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yNjg0PUVYUE9SVF9TWU1CT0woYXRoMTFrX2NvcmVfcG1fbm90aWZpZXJfdW5yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjY4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyNjg2OmludCBhdGgxMWtfY29yZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjY4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yNzE3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyNzE4OkVYUE9SVF9TWU1CT0woYXRoMTFrX2NvcmVfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjcxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oPTEyNzA9aW50IGF0aDExa19jb3JlX3ByZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oOjEyNzE6aW50IGF0aDExa19jb3JlX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphdGgxMWspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oLTEyNzItdm9pZCBhdGgxMWtfY29yZV9kZWluaXQoc3RydWN0IGF0aDExa19iYXNlICphdGgxMWspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDk9c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTE0MDpcXHRyZXQgPSBhdGgxMWtfY29yZV9pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTExNDEtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMToxNC40MjE0NjU5NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTU3MzAxOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgYXRoMTFrX2NvcmVfaW5pdGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29yZSBvZiB0aGlzIGRyaXZlciBpbml0aWFsaXplcywgd2hhdCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGFyZS4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHNldCB1cCwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBiZWluZyBhY2Nlc3NlZCwgYW5kIGFueSBjcnVjaWFsIGVhcmx5IGNoZWNrcyBvciBjb25maWd1cmF0aW9ucy4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIOKAkyBpdCdzIG9mdGVuIHRoZSBzZXF1ZW5jZSB0aGF0IHJldmVhbHMgdGhlIG1vc3QgaW1wb3J0YW50IGRlcGVuZGVuY2llcy4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueXRoaW5nIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBvciBjbG9jayBzZXR1cCwgYXMgdGhvc2UgYXJlIG9mdGVuIGNyaXRpY2FsIGZvciBhIG5ldyBkZXZpY2UgYW5kIGNhbiBhZmZlY3QgZXZlcnl0aGluZyB0aGF0IGZvbGxvd3MuIEkgZXhwZWN0IHRoZXJlIHRvIGJlIGEgbG90IG9mIGhhcmR3YXJlLXNwZWNpZmljIGRldGFpbCwgYnV0IEknbGwgZm9jdXMgb24gdGhlIGhpZ2hlci1sZXZlbCBsb2dpYy4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgZHJpdmVyJ3MgZW50cnkgcG9pbnQgYW5kIG92ZXJhbGwgc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODYyMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjE4LjU3ODc2OTkxMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjY4NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjY4NjpcXHRpbnQgYXRoMTFrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbjI2ODc6XFx0e1xcbjI2ODg6XFx0XFx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcXG4yNjg5OlxcdFxcdGludCByZXQ7XFxuMjY5MDpcXHRcXG4yNjkxOlxcdFxcdGRtaV9pZCA9IGRtaV9maXJzdF9tYXRjaChhdGgxMWtfcG1fcXVpcmtfdGFibGUpO1xcbjI2OTI6XFx0XFx0aWYgKGRtaV9pZClcXG4yNjkzOlxcdFxcdFxcdGFiLVxcdTAwM2VwbV9wb2xpY3kgPSAoa2VybmVsX3Vsb25nX3QpZG1pX2lkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4yNjk0OlxcdFxcdGVsc2VcXG4yNjk1OlxcdFxcdFxcdGFiLVxcdTAwM2VwbV9wb2xpY3kgPSBBVEgxMUtfUE1fREVGQVVMVDtcXG4yNjk2OlxcdFxcbjI2OTc6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19CT09ULCBcXFwicG0gcG9saWN5ICV1XFxcXG5cXFwiLCBhYi1cXHUwMDNlcG1fcG9saWN5KTtcXG4yNjk4OlxcdFxcbjI2OTk6XFx0XFx0cmV0ID0gYXRoMTFrX2NvcmVfcG1fbm90aWZpZXJfcmVnaXN0ZXIoYWIpO1xcbjI3MDA6XFx0XFx0aWYgKHJldCkge1xcbjI3MDE6XFx0XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byByZWdpc3RlciBQTSBub3RpZmllcjogJWRcXFxcblxcXCIsIHJldCk7XFxuMjcwMjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI3MDM6XFx0XFx0fVxcbjI3MDQ6XFx0XFxuMjcwNTpcXHRcXHRyZXQgPSBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKGFiKTtcXG4yNzA2OlxcdFxcdGlmIChyZXQpIHtcXG4yNzA3OlxcdFxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gY3JlYXRlIHNvYyBjb3JlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4yNzA4OlxcdFxcdFxcdGdvdG8gZXJyX3VucmVnaXN0ZXJfcG1fbm90aWZpZXI7XFxuMjcwOTpcXHRcXHR9XFxuMjcxMDpcXHRcXG4yNzExOlxcdFxcdHJldHVybiAwO1xcbjI3MTI6XFx0XFxuMjcxMzpcXHRlcnJfdW5yZWdpc3Rlcl9wbV9ub3RpZmllcjpcXG4yNzE0OlxcdFxcdGF0aDExa19jb3JlX3BtX25vdGlmaWVyX3VucmVnaXN0ZXIoYWIpO1xcbjI3MTU6XFx0XFxuMjcxNjpcXHRcXHRyZXR1cm4gcmV0O1xcbjI3MTc6XFx0fVxcbjI3MTg6XFx0RVhQT1JUX1NZTUJPTChhdGgxMWtfY29yZV9pbml0KTtcXG4yNzE5OlxcdFxcbjI3MjA6XFx0dm9pZCBhdGgxMWtfY29yZV9kZWluaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4yNzIxOlxcdHtcXG4yNzIyOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmFiLVxcdTAwM2Vjb3JlX2xvY2spO1xcbjI3MjM6XFx0XFxuMjcyNDpcXHRcXHRhdGgxMWtfY29yZV9wZGV2X2Rlc3Ryb3koYWIpO1xcbjI3MjU6XFx0XFx0YXRoMTFrX2NvcmVfc3RvcChhYik7XFxuMjcyNjpcXHRcXG4yNzI3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YWItXFx1MDAzZWNvcmVfbG9jayk7XFxuMjcyODpcXHRcXG4yNzI5OlxcdFxcdGF0aDExa19oaWZfcG93ZXJfZG93bihhYiwgZmFsc2UpO1xcbjI3MzA6XFx0XFx0YXRoMTFrX21hY19kZXN0cm95KGFiKTtcXG4yNzMxOlxcdFxcdGF0aDExa19jb3JlX3NvY19kZXN0cm95KGFiKTtcXG4yNzMyOlxcdFxcdGF0aDExa19jb3JlX3BtX25vdGlmaWVyX3VucmVnaXN0ZXIoYWIpO1xcbjI3MzM6XFx0fVxcbjI3MzQ6XFx0RVhQT1JUX1NZTUJPTChhdGgxMWtfY29yZV9kZWluaXQpO1xcbjI3MzU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjE4LjU3ODk1NDE0MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkxNDcxNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYCBpcyBtb3JlIGludm9sdmVkIHRoYW4ganVzdCBhIHNpbXBsZSBpbnN0YW50aWF0aW9uLCBpdCBhcHBlYXJzIHRvIGhhbmRsZSBzaWduaWZpY2FudCBpbml0aWFsaXphdGlvbiBzdGVwcy4gR2l2ZW4gaXRzIG5hbWluZyBjb252ZW50aW9uLCB0aGUgXCJzb2NcIiBwYXJ0IGxpa2VseSByZWZlcnMgdG8gU3lzdGVtLW9uLUNoaXAsIHdoaWNoIG1lYW5zIGl0IHByb2JhYmx5IGRlYWxzIHdpdGggY29uZmlndXJpbmcgaGFyZHdhcmUgcmVzb3VyY2VzIGFuZCBzZXR0aW5nIHVwIHRoZSBjb3JlIG9wZXJhdGluZyBlbnZpcm9ubWVudCBmb3IgdGhlIHdpcmVsZXNzIGNoaXAgb24gdGhlIGJvYXJkLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIGZ1bmN0aW9uLCBzaW5jZSBpdCBpcyBhbiBpZGVhbCBwb2ludCB0byBmb2N1cyBvbiB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UuIExldCdzIHNlZSBleGFjdGx5IHdoYXQncyBnb2luZyBvbiB3aXRoaW4uIEl0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0IGlzIGdvaW5nIHRvIGJlIGtleSB0byBhbnkgZGVlcGVyIGFuYWx5c2lzIG9mIHRoZSBhdGgxMWsgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYzMywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MjEuODcwNDI4MTQ5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc3ODM1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfY29yZV9zb2NfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTE5NzM9c3RhdGljIHZvaWQgYXRoMTFrX2NvcmVfc3RvcChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMTk4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoxOTg1OnN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTE5ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjY4Nj1pbnQgYXRoMTFrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjcwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyNzA1OlxcdHJldCA9IGF0aDExa19jb3JlX3NvY19jcmVhdGUoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI3MDYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMToyMS45MjcyMTA0ODNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxNDg3MTQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYDpcblxuKipBbmFseXppbmcgYGF0aDExa19jb3JlX3NvY19jcmVhdGVgKipcblxuQWxyaWdodCwgSSdtIGRpZ2dpbmcgaW50byBgYXRoMTFrX2NvcmVfc29jX2NyZWF0ZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKiBhdCBhIGhpZ2ggbGV2ZWwuIEZyb20gdGhlIG5hbWUsIGl0J3MgY2xlYXIgaXQncyBhYm91dCB0aGUgY3JlYXRpb24gb2Ygc29tZXRoaW5nIGNvcmUgdG8gdGhlIFNPQyAoU3lzdGVtLW9uLWEtQ2hpcCkgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBhdGgxMWsgZHJpdmVyLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGlzIGludm9sdmVzIGluaXRpYWxpemluZyBkYXRhIHN0cnVjdHVyZXMsIHByb2JhYmx5IGFsbG9jYXRpbmcgbWVtb3J5LCBhbmQgc2V0dGluZyB1cCB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyBuZWVkZWQgYmV0d2VlbiB0aGUgaG9zdCAobGlrZWx5IExpbnV4KSBhbmQgdGhlIGF0aDExayBoYXJkd2FyZS5cblxuSSBzdXNwZWN0IHRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgaW4gYnJpbmdpbmcgdXAgdGhlIHdpcmVsZXNzIGludGVyZmFjZS4gSXQncyBsaWtlbHkgc2V0dGluZyB1cCB0aGUgaW5pdGlhbCBzdGF0ZSBmb3IgcG93ZXIgbWFuYWdlbWVudCwgY2xvY2sgY29udHJvbCwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgbWF5YmUgZXZlbiBmaXJtd2FyZSBsb2FkaW5nIG9yIHRyaWdnZXJpbmcuIEknbGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIGFyZ3VtZW50cyBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIHNlZSB3aGF0IGRhdGEgaXQgdGFrZXMgYXMgaW5wdXQgYW5kIGhvdyBpdCdzIHVzZWQuIEJhc2VkIG9uIHRoYXQgaW5mb3JtYXRpb24sIEknbGwgYmUgYWJsZSB0byBjb25maXJtIG9yIGFkanVzdCBteSBpbml0aWFsIHRob3VnaHRzLiBJJ20gYWxzbyByZWFkeSB0byBhbmFseXplIHRoZSByZXR1cm4gdmFsdWUgdG8gYXNzZXNzIGhvdyBpdCByZXBvcnRzIGFueSBlcnJvcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTczLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MjUuNDQyMDgzODg5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTg1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTg1OlxcdHN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbjE5ODY6XFx0e1xcbjE5ODc6XFx0XFx0aW50IHJldDtcXG4xOTg4OlxcdFxcbjE5ODk6XFx0XFx0aWYgKGF0aDExa19mdG1fbW9kZSkge1xcbjE5OTA6XFx0XFx0XFx0YWItXFx1MDAzZWZ3X21vZGUgPSBBVEgxMUtfRklSTVdBUkVfTU9ERV9GVE07XFxuMTk5MTpcXHRcXHRcXHRhdGgxMWtfaW5mbyhhYiwgXFxcIkJvb3RpbmcgaW4gZmFjdG9yeSB0ZXN0IG1vZGVcXFxcblxcXCIpO1xcbjE5OTI6XFx0XFx0fVxcbjE5OTM6XFx0XFxuMTk5NDpcXHRcXHRyZXQgPSBhdGgxMWtfcW1pX2luaXRfc2VydmljZShhYik7XFxuMTk5NTpcXHRcXHRpZiAocmV0KSB7XFxuMTk5NjpcXHRcXHRcXHRhdGgxMWtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGluaXRpYWxpemUgcW1pIDolZFxcXFxuXFxcIiwgcmV0KTtcXG4xOTk3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTk5ODpcXHRcXHR9XFxuMTk5OTpcXHRcXG4yMDAwOlxcdFxcdHJldCA9IGF0aDExa19kZWJ1Z2ZzX3NvY19jcmVhdGUoYWIpO1xcbjIwMDE6XFx0XFx0aWYgKHJldCkge1xcbjIwMDI6XFx0XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byBjcmVhdGUgYXRoMTFrIGRlYnVnZnNcXFxcblxcXCIpO1xcbjIwMDM6XFx0XFx0XFx0Z290byBlcnJfcW1pX2RlaW5pdDtcXG4yMDA0OlxcdFxcdH1cXG4yMDA1OlxcdFxcbjIwMDY6XFx0XFx0cmV0ID0gYXRoMTFrX2hpZl9wb3dlcl91cChhYik7XFxuMjAwNzpcXHRcXHRpZiAocmV0KSB7XFxuMjAwODpcXHRcXHRcXHRhdGgxMWtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHBvd2VyIHVwIDolZFxcXFxuXFxcIiwgcmV0KTtcXG4yMDA5OlxcdFxcdFxcdGdvdG8gZXJyX2RlYnVnZnNfcmVnO1xcbjIwMTA6XFx0XFx0fVxcbjIwMTE6XFx0XFxuMjAxMjpcXHRcXHRyZXR1cm4gMDtcXG4yMDEzOlxcdFxcbjIwMTQ6XFx0ZXJyX2RlYnVnZnNfcmVnOlxcbjIwMTU6XFx0XFx0YXRoMTFrX2RlYnVnZnNfc29jX2Rlc3Ryb3koYWIpO1xcbjIwMTY6XFx0ZXJyX3FtaV9kZWluaXQ6XFxuMjAxNzpcXHRcXHRhdGgxMWtfcW1pX2RlaW5pdF9zZXJ2aWNlKGFiKTtcXG4yMDE4OlxcdFxcdHJldHVybiByZXQ7XFxuMjAxOTpcXHR9XFxuMjAyMDpcXHRcXG4yMDIxOlxcdHN0YXRpYyB2b2lkIGF0aDExa19jb3JlX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuMjAyMjpcXHR7XFxuMjAyMzpcXHRcXHRhdGgxMWtfZGVidWdmc19zb2NfZGVzdHJveShhYik7XFxuMjAyNDpcXHRcXHRhdGgxMWtfZHBfZnJlZShhYik7XFxuMjAyNTpcXHRcXHRhdGgxMWtfcmVnX2ZyZWUoYWIpO1xcbjIwMjY6XFx0XFx0YXRoMTFrX3FtaV9kZWluaXRfc2VydmljZShhYik7XFxuMjAyNzpcXHR9XFxuMjAyODpcXHRcXG4yMDI5OlxcdHN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4yMDMwOlxcdHtcXG4yMDMxOlxcdFxcdGludCByZXQ7XFxuMjAzMjpcXHRcXG4yMDMzOlxcdFxcdHJldCA9IGF0aDExa19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKGFiKTtcXG4yMDM0OlxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MjUuNDQyMjEzMjM5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzM1MjcxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgYXRoMTFrIERyaXZlciBTdGFydHVwKipcblxuT2theSwgc28gYGF0aDExa19jb3JlX3NvY19jcmVhdGVgIGlzIHRoZSBzdGFydGluZyBwb2ludCBoZXJlLiBJIHNlZSBpdCBjYWxscyBgYXRoMTFrX3FtaV9pbml0X3NlcnZpY2VgIGFuZCBgYXRoMTFrX2hpZl9wb3dlcl91cGAuIE1ha2VzIHNlbnNlLCBRTUkgaW5pdGlhbGl6YXRpb24gYW5kIGdldHRpbmcgdGhlIGhhcmR3YXJlIGludGVyZmFjZSB1cCBhbmQgcnVubmluZy4gTm93LCBgYXRoMTFrX2hpZl9wb3dlcl91cGAgbGlrZWx5IGhhbmRsZXMgdGhlIGxvdy1sZXZlbCBzdHVmZiwgYW5kIHllcCwgaXQgY2FsbHMgYGF0aDExa19wY2lfcG93ZXJfdXBgLCBpbmRpY2F0aW5nIHRoaXMgaXMgYSBQQ0ktc3BlY2lmaWMgZnVuY3Rpb24gZm9yIHBvd2VyIG1hbmFnZW1lbnQsIHdoaWNoIHNlZW1zIGxvZ2ljYWwgZ2l2ZW4gdGhlIGNvbnRleHQuXG5cbkJ1dCwgaGFuZyBvbiBhIHNlY29uZC4uLiB3aGVyZSBkb2VzIHRoZSBtYWM4MDIxMSBkZXZpY2UgcmVnaXN0cmF0aW9uIGhhcHBlbj8gSSBkb24ndCBzZWUgaXQgZXhwbGljaXRseSBjYWxsZWQgb3V0IGhlcmUgaW4gdGhlIHBvd2VyLXVwIHNlcXVlbmNlLiBJdCBtdXN0IGhhcHBlbiAqYWZ0ZXIqIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQsIHRoYXQgd291bGQgYmUgbG9naWNhbC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gTGV0IG1lIGRvIGEgcXVpY2sgc2VhcmNoIGFuZCBmaW5kIHdoZXJlIGBhdGgxMWtfbWFjX3JlZ2lzdGVyYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHByb3ZpZGUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgdGhlIHRpbWluZyBvZiB0aGUgbWFjODAyMTEgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNzgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMToyOS44NzU3NDMwMTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjcwNzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19tYWNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjAyOT1zdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIwNDU6XFx0cmV0ID0gYXRoMTFrX21hY19yZWdpc3RlcihhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA0Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwNDgyPXZvaWQgYXRoMTFrX21hY191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA1MDA6c3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDUwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNzUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA3NTE6aW50IGF0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNzUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDc4ODpcXHRcXHRyZXQgPSBfX2F0aDExa19tYWNfcmVnaXN0ZXIoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3ODktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmg9MTQwPXZvaWQgYXRoMTFrX21hY191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmg6MTQxOmludCBhdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmgtMTQyLWludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMToyOS45MzY0MTk1NDdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NTI3NDU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyBvZiBhdGgxMWsqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBhdGgxMWsgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBUaGUgY29yZSBvZiB0aGlzLCBmcm9tIHdoYXQgSSdtIHNlZWluZywgaXMgdGhpcyBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIGZ1bmN0aW9uLiBJIGtub3cgaXQncyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIHBoeXNpY2FsIGRldmljZSwgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoYXJkd2FyZS4gQW5kIGl0LCBpbiB0dXJuLCBjYWxscyBgYXRoMTFrX21hY19yZWdpc3RlcmAuIFNvLCB0aGUgcmVnaXN0cmF0aW9uIHdpdGggdGhlIE1BQyBsYXllciBpcyBkZXBlbmRlbnQgb24gdGhlIHBoeXNpY2FsIGRldmljZSBiZWluZyBjcmVhdGVkLCB3aGljaCBtYWtlcyBsb2dpY2FsIHNlbnNlLlxuXG5Ob3csIG15IGtleSBxdWVzdGlvbiBpczogd2hlcmUgaXMgYGF0aDExa19jb3JlX3BkZXZfY3JlYXRlYCBhY3R1YWxseSBjYWxsZWQgZnJvbT8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayAqdG8qIHRoYXQgZnVuY3Rpb24gaXMgY3JpdGljYWwgdG8gZmlndXJpbmcgb3V0IHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgdG8gZmluZCBpdHMgcGFyZW50IGZ1bmN0aW9uLCBhbmQgdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoZSB3aG9sZSBwcm9jZXNzLiBJcyBpdCBjYWxsZWQgZHVyaW5nIHByb2JlLCBvciBpcyB0aGVyZSBhbm90aGVyIGluaXRpYWxpemF0aW9uIHBhdGg/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIHRlbGwgbWUgd2hhdCB0aGUgdHJpZ2dlcmluZyBldmVudCBpcyBhbmQgdGhlIGRlcGVuZGVuY2llcyBpbnZvbHZlZC4gSSBuZWVkIHRvIGZpbmQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGFuZCBkZXZpY2UgaW50ZXJhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMzAyLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MzMuNjgxNjk2MTg5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM4NTU3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMDIxPXN0YXRpYyB2b2lkIGF0aDExa19jb3JlX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIwMjk6c3RhdGljIGludCBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjI2MT1pbnQgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMzA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIzMDc6XFx0cmV0ID0gYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIzMDgtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMTozMy43NDEwODc1NzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYzODU3MDk1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZpcm13YXJlIERlcGVuZGVuY3kgYW5kIEZ1enppbmcgU3RyYXRlZ2llcyoqXG5cbk9rYXksIHNvIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgaXMgdHJpZ2dlcmVkIGJ5IGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBUaGF0J3MgdGhlIGtleS4gVGhlIG1hYzgwMjExIGRldmljZSByZWdpc3RyYXRpb24gKmRlcGVuZHMqIG9uIHRoZSBRTUkgZmlybXdhcmUgYmVpbmcgcmVhZHkuIFJpZ2h0LiBRTUksIFF1YWxjb21tIE1lc3NhZ2UgSW50ZXJmYWNlLCB0YWxraW5nIHRvIHRoZSBkZXZpY2UgZmlybXdhcmUuIElmIHRoYXQgZmlybXdhcmUgaXNuJ3QgdXAgYW5kIHJ1bm5pbmcsIGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgIHdvbid0IGV2ZW4gaGFwcGVuLlxuXG5TbywgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIGEgZnV6emVyICpzaW11bGF0ZSogdGhhdCBRTUkgZmlybXdhcmUgcmVhZHkgc3RhdGU/IFN5emthbGxlciwgd2hpY2ggaXMgd2hhdCBJJ20gbG9va2luZyBhdCwgZG9lc24ndCBoYXZlIGEgUU1JIGVtdWxhdG9yIHNwZWNpZmljYWxseSBmb3IgYXRoMTFrLiBJIGtub3cgaXQgY2FuIGZ1enogUENJIGRldmljZXMsIGZha2luZyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPLiBCdXQgZmFraW5nICp0aGUgZW50aXJlKiBRTUkgcHJvdG9jb2wgYW5kIHRoZSB3aG9sZSBmaXJtd2FyZSBib290IHByb2Nlc3M/IEhpZ2hseSBpbXByb2JhYmxlIHdpdGgganVzdCByYW5kb20gbXV0YXRpb24uIFRoYXQncyBhIGh1Z2UgYXNrLlxuXG5XYWl0LiBEaWRuJ3QgU3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfZGV2aWNlYD8gUmlnaHQsIEkgcmVtZW1iZXIuIEJ1dCBpdCBvZnRlbiBmYWxscyBzaG9ydCBvbiBjb21wbGV4IGRldmljZXMgdGhhdCByZXF1aXJlIGZpcm13YXJlLCB1bmxlc3MgdGhlcmUncyBzb21lIGtpbmQgb2YgKnNwZWNpZmljKiBlbXVsYXRvci5cblxuSGFuZyBvbuKApiB3aGF0IGFib3V0IGBtYWM4MDIxMV9od3NpbWA/IENvdWxkIHRoYXQgYmUgYW4gYXZlbnVlPyBJIGhhdmUgYSBwYXRjaCBoZXJlIHRoYXQgbW9kaWZpZXMgYG5ldC9tYWM4MDIxMS90eC5jYCBhbmQgYGluY2x1ZGUvbmV0L21hYzgwMjExLmhgLiBBaGEhIEl0IGFkZHMgYGllZWU4MDIxMV90eF9wZWVrYCB0byBgbWFjODAyMTFgLiBOb3csIGNhbiBgaWVlZTgwMjExX3R4X3BlZWtgIGJlIHJlYWNoZWQgZnJvbSBgbWFjODAyMTFfaHdzaW1gP1xuXG5Ob3BlLCBpdCBsb29rcyBsaWtlIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgb25seSBjYWxsZWQgYnkgdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzLiBJdCdzIGRyaXZlciBzcGVjaWZpYy5cblxuT2theSwgbGV0J3MganVzdCBtYWtlIHN1cmUuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgYGllZWU4MDIxMV90eF9wZWVrYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUgYmFzZS4gR290dGEgYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI5NTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6NDEuMzc5NjYxMjk0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg3NDExOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV90eF9wZWVrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwMDY4PXN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDA5MTpcXHRcXHRwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTItXFx0XFx0aWYgKCFwZWVrX3NrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz0xMTAzPXN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoxMTMyOlxcdFxcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExMzMtXFx0XFx0aWYgKCFwZWVrX3NrYilcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc0Mj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NDUtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzQ2OiAqIGllZWU4MDIxMV90eF9wZWVrIC0gcGVlayBhdCB0aGUgbmV4dCBwYWNrZXQgaW4gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc0Ny0gKlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYxLSAqL1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzc2Mjpjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzgwOT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzg1OS1cXG5uZXQvbWFjODAyMTEvdHguYzozODYwOmNvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvdHguYy0zODYxLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zODk2LX1cXG5uZXQvbWFjODAyMTEvdHguYzozODk3OkVYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV90eF9wZWVrKTtcXG5uZXQvbWFjODAyMTEvdHguYy0zODk4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMTo0My40NjcwNzkwMDNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzMzM2ODY0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBUaGlzIENvZGUqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUgc25pcHBldCBpcyBvbmx5IGNhbGxlZCBieSBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaWYgdGhlc2UgZHJpdmVycyBjYW4ndCBpbml0aWFsaXplIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGVuIHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSwgcmlnaHQ/IEJ1dCBob2xkIG9uLCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcy4gSXMgdGhlcmUgYW55IHdheSBgYXRoMTFrYCBvciBgYXRoMTJrYCBjb3VsZCBiZSBmdXp6ZWQgaW5kaXJlY3RseT9cblxuRm9yIGluc3RhbmNlLCB3aGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWA/IFRoYXQgc2ltdWxhdGVzIGEgbWFjODAyMTEgZGV2aWNlLCBidXQgaXQgKmRvZXNuJ3QqIHVzZSBgYXRoMTFrYCBvciBgYXRoMTJrYC4gVGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBgd2FrZV90eF9xdWV1ZWAgaGFuZGxlciAqd2l0aGluKiBgYXRoMTFrYCBhbmQgYGF0aDEya2AgYW5kIGNoYW5nZXMgaXQgdG8gdXNlIGBpZWVlODAyMTFfdHhfcGVla2AuIFNpbmNlIHRob3NlIGRyaXZlcnMgZGVwZW5kIG9uIGFjdHVhbCBoYXJkd2FyZSBhbmQgc3BlY2lmaWMgZmlybXdhcmUgdG8gZXZlbiByZWFjaCB0aGUgcG9pbnQgd2hlcmUgdGhleSByZWdpc3RlciB3aXRoIG1hYzgwMjExIOKAkyBhbmQgKnRoZW4qIHRoZSBgd2FrZV90eF9xdWV1ZWAgaGFuZGxlciB3b3VsZCBldmVuIGJlIGNhbGxlZCDigJMgdGhpcyBzZWVtcyBwcmV0dHkgdW5saWtlbHkgdG8gdHJpZ2dlciBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSB1bmxlc3MgdGhlcmUncyBzb21lIGtpbmQgb2YgaGFyZHdhcmUgcGFzc3Rocm91Z2guXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBJIG5lZWQgdG8gdGhpbmsgb3V0c2lkZSB0aGUgYm94LiBDb3VsZCBzeXprYWxsZXIgZmluZCBhIHdheSB0byBpbmplY3QgbWFjODAyMTEgb3BlcmF0aW9ucyBkaXJlY3RseT8gTm8sIHRoYXQncyBub3QgaG93IGl0IHdvcmtzLiBTeXprYWxsZXIgcHJpbWFyaWx5IGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwgdGhyb3VnaCBzeXNjYWxscyDigJMgbmV0bGluaywgaW9jdGwsIHNvY2tldHMsIGV0Yy4g4oCTIG9yIHRocm91Z2ggdmlydHVhbCBkZXZpY2VzIGxpa2UgdHVuL3RhcCwgdmhjaSwgYW5kIHN5el9wY2lfZGV2aWNlLiBJdCBkb2Vzbid0IGFsbG93IGZvciB0aGUgaW5qZWN0aW9uIG9mIGFyYml0cmFyeSBmdW5jdGlvbiBwb2ludGVycy5cblxuU28sIGlmIHRoZSBkcml2ZXIgY2FuJ3QgcmVnaXN0ZXIgaXRzIG1hYzgwMjExIGRldmljZSwgdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIHdpbGwgKm5ldmVyKiBnZXQgY2FsbGVkLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgZWl0aGVyIGBhdGgxMWtgIG9yIGBhdGgxMmtgIGhhcyBzb21lIGtpbmQgb2YgdGVzdCBtb2RlIG9yIHNpbXVsYXRpb24gbW9kZS4gVGhhdCB3b3VsZCByZWFsbHkgY2hhbmdlIHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2NTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6NTAuMzAwNDUwMzI3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU0MTg1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdG1vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZT0yND1hdGgxMWstJChDT05GSUdfQVRIMTFLX0RFQlVHRlMpICs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI1OmF0aDExay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yNi1hdGgxMWstJChDT05GSUdfQVRIMTFLX1RSQUNJTkcpICs9IHRyYWNlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oPTkyND1zdHJ1Y3QgYXRoMTFrX2Jhc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtMTA4Ny1cXHRcXHR1OCAqZXZlbnRkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oOjEwODg6XFx0fSB0ZXN0bW9kZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC0xMDg5LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Zy5oPTM0PXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqYXRoMTFrX2RiZ19zdHIoZW51bSBhdGgxMWtfZGVidWdfbWFzayBtYXNrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Zy5oLTU3LVxcdGNhc2UgQVRIMTFLX0RCR19URVNUTU9ERTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnLmg6NTg6XFx0XFx0cmV0dXJuIFxcXCJ0ZXN0bW9kZVxcXCI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Zy5oLTU5LVxcdGNhc2UgQVRIMTFLX0RCR19IQUw6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTIxLSNpbmNsdWRlIFxcXCJkcF9yeC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MjI6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0yMy0jaW5jbHVkZSBcXFwicGVlci5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTgtI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRsaW5rLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTItI2luY2x1ZGUgXFxcImNvcmUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTM6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlX2kuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9NDc9c3RhdGljIHZvaWQgYXRoMTFrX3RtX3dtaV9ldmVudF91bnNlZ21lbnRlZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTU5LVxcdGlmICghYXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NjA6XFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo2NjpcXHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjctXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNzEtXFx0XFx0YXRoMTFrX3dhcm4oYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjcyOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNzMtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNzgtXFx0ICAgIG5sYV9wdXQobmxfc2tiLCBBVEhfVE1fQVRUUl9EQVRBLCBza2ItXFx1MDAzZWxlbiwgc2tiLVxcdTAwM2VkYXRhKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo3OTpcXHRcXHRhdGgxMWtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSB0ZXN0bW9kZSB1bnNlZ21lbnRlZCBldmVudFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTgwLVxcdFxcdGtmcmVlX3NrYihubF9za2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo4NDpcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy04NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtODktXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo5MDpcXHRhdGgxMWtfd2FybihhYiwgXFxcIkZhaWxlZCB0byBzZW5kIHRlc3Rtb2RlIGV2ZW50IHRvIGhpZ2hlciBsYXllcnNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy05MS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9OTY9c3RhdGljIGludCBhdGgxMWtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTExNS1cXHRpZiAocGRldl9pZCBcXHUwMDNlPSBhYi1cXHUwMDNlbnVtX3JhZGlvcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMTY6XFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2IGlkOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTE3LVxcdFxcdFxcdCAgICBwZGV2X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMjItXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMjM6XFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTI0LVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTEzNi1cXHRpZiAoY3VycmVudF9zZXEgPT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMzc6XFx0XFx0YWItXFx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjEzODpcXHRcXHRhYi1cXHUwMDNldGVzdG1vZGUuZGF0YV9wb3MgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMzktXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE0MTpcXHRkYXRhX3BvcyA9IGFiLVxcdTAwM2V0ZXN0bW9kZS5kYXRhX3BvcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTUwOlxcdG1lbWNweShcXHUwMDI2YWItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YVtkYXRhX3Bvc10sIGJ1Zl9wb3MsIGRhdGFsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNTEtXFx0ZGF0YV9wb3MgKz0gZGF0YWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNTM6XFx0aWYgKCsrYWItXFx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSAhPSB0b3RhbF9zZWdtZW50cykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNTQ6XFx0XFx0YWItXFx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zID0gZGF0YV9wb3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE1NS1cXHRcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX1RFU1RNT0RFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE2My1cXHRcXHQgICAgZGF0YV9wb3MsIGZ0bV9tc2ctXFx1MDAzZXNlZ19oZHIubGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTY0OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNjUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTY5LVxcdFxcdGF0aDExa193YXJuKGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNzA6XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciBzZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTcxLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTc4LVxcdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgZGF0YV9wb3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE3OTpcXHRcXHQgICAgXFx1MDAyNmFiLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbMF0pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE4MDpcXHRcXHRhdGgxMWtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSBzZWdtZW50ZWQgdGVzdG1vZGUgZXZlbnRcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTgxLVxcdFxcdGtmcmVlX3NrYihubF9za2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTg2OlxcdGNmZzgwMjExX3Rlc3Rtb2RlX2V2ZW50KG5sX3NrYiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYz0yMzE9c3RhdGljIGludCBhdGgxMWtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MjQxOlxcdHNrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX3JlcGx5X3NrYihhci1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yNDItXFx0XFx0XFx0XFx0XFx0XFx0bmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI2MDpcXHRyZXR1cm4gY2ZnODAyMTFfdGVzdG1vZGVfcmVwbHkoc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjYxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoyNjM6c3RhdGljIGludCBhdGgxMWtfdG1fY21kX3Rlc3Rtb2RlX3N0YXJ0KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MjgwOlxcdGFyLVxcdTAwM2VhYi1cXHUwMDNldGVzdG1vZGUuZXZlbnRkYXRhID0ga3phbGxvYyhBVEhfRlRNX0VWRU5UX01BWF9CVUZfTEVOR1RILFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yODEtXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MjgyOlxcdGlmICghYXItXFx1MDAzZWFiLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjgzLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9MzAwPXN0YXRpYyBpbnQgYXRoMTFrX3RtX2NtZF93bWkoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzI1LVxcdGlmICghYnVmX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzozMjY6XFx0XFx0YXRoMTFrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiTm8gZGF0YSBwcmVzZW50IGluIHRlc3Rtb2RlIHdtaSBjb21tYW5kXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzI3LVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzc3LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6Mzc4OlxcdFxcdGF0aDExa193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzc5LVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jPTQ3Nj1pbnQgYXRoMTFrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy00OTYtXFx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo0OTc6XFx0XFx0cmV0dXJuIGF0aDExa190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNDk4LVxcdGNhc2UgQVRIX1RNX0NNRF9XTUlfRlRNOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy0yMS0jaW5jbHVkZSBcXFwicGVlci5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6MjI6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy0yMy0jaW5jbHVkZSBcXFwicDJwLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjUwLjU5NTg3NjMzOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njk4NDMyMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyB0aGUgdGVzdG1vZGUgYXBwcm9hY2ggaGVyZSwgdXNpbmcgbmw4MDIxMSwgaXMgZnVuZGFtZW50YWxseSBkZXBlbmRlbnQgb24gdGhlIGZpcm13YXJlIGFjdHVhbGx5ICpiZWluZyogcHJlc2VudCBhbmQgcnVubmluZywgd2hpY2ggbWVhbnMgc3BlY2lmaWMgaGFyZHdhcmUuIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBhcmUgZGlyZWN0bHkgdGllZCB0byB0aGUgaGFyZHdhcmUgYW5kIHRoZWlyIHJlc3BlY3RpdmUgZmlybXdhcmUuIEJ1dCB3aGF0IGFib3V0IGBpZWVlODAyMTFfdHhfcGVla2A/IElzIHRoZXJlIGEgcG9zc2liaWxpdHkgdGhhdCBhbm90aGVyIGRyaXZlciAqY291bGQqIHVzZSBpdCBkb3duIHRoZSBsaW5lPyBUaGUgcGF0Y2ggaXRzZWxmIG9ubHkgbW9kaWZpZXMgYGF0aDExa2AgYW5kIGBhdGgxMmtgIHRvIHV0aWxpemUgYGllZWU4MDIxMV90eF9wZWVrYC5cblxuR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIGlzIG9ubHkgcmVhY2hhYmxlIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBIb3dldmVyLCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBjb25zaWRlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBiZSBjYXJlZnVsIGhlcmUuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gY29uc2lkZXIgc2NlbmFyaW9zIHdoZXJlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUuIEhvd2V2ZXIsIGl0IGFsc28gY2xhcmlmaWVzIHRoYXQgaWYgdGhlIHBhdGNoIG1vZGlmaWVzIFwicmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLFwiIGl0IHdhcnJhbnRzIGludmVzdGlnYXRpb24uXG5cbk5vdywgYGllZWU4MDIxMV90eF9wZWVrYCBpcyBleHBvcnRlZCBpbiBgbmV0L21hYzgwMjExL3R4LmNgLCB3aGljaCBtYWtlcyBpdCBwYXJ0IG9mIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLiBUaGUga2V5IGhlcmUgaXMgdGhhdCwgYXQgcHJlc2VudCwgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGFyZSB0aGUgKm9ubHkqIGNhbGxlcnMgb2YgYGllZWU4MDIxMV90eF9wZWVrYC4gU28sIGNvdWxkIGBtYWM4MDIxMV9od3NpbWAgY2FsbCBgaWVlZTgwMjExX3R4X3BlZWtgPyBObywgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgdGhlIGNhc2UuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBgbWFjODAyMTFfaHdzaW1gIHJlbGllcyBvbiBgd2FrZV90eF9xdWV1ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTkyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjU3LjI5NDMxMTEwN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5MjIyMTU0MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2FrZV90eF9xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMTo1OC43ODY1NDEzOThaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODAxMjI0NjAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIHRoZSBXaS1GaSBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYG1hYzgwMjExX2h3c2ltYCBjb2RlLCBhbmQgaXQncyBsb29raW5nIGxpa2UgYHdha2VfdHhfcXVldWVgIGlzbid0IGFjdHVhbGx5IGltcGxlbWVudGVkIHRoZXJlLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZSBvdGhlciBjYWxsIHBhdGguIFdhaXQsIGlzIGl0IHBvc3NpYmxlIHRoYXQgYGllZWU4MDIxMV90eF9wZWVrYCB3aGljaCAqaXMqIG5ldywgaXMgcmVhY2hhYmxlIGJ5ICpzb21lKiBvdGhlciBtZWFucz8gTm8sIGxvb2tpbmcgYXQgdGhlIHBhdGNoLCBpdCBzZWVtcyBsaWtlIHRoZSBvbmx5IGNhbGxzIHRvIGl0IGFyZSBmcm9tIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCwgcmlnaHQ/XG5cblJpZ2h0LiBBbmQgc2luY2UgYGF0aDExa2AgYW5kIGBhdGgxMmtgIHJlcXVpcmUgYWN0dWFsIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSwgSSBrbm93IHRoZXkncmUgZXNzZW50aWFsbHkgb2ZmIHRoZSB0YWJsZSBmb3IgZnV6emluZyBpbiBzb21ldGhpbmcgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhleSByZXF1aXJlIHRoZSByZWFsIGRlYWwuIFNvIHRoYXQgY29kZSAqc2hvdWxkKiBiZSB1bnJlYWNoYWJsZSBpbiBteSB2aXJ0dWFsIHRlc3RpbmcgZW52aXJvbm1lbnRzLlxuXG5CdXQsIGhhbmcgb24uLi4gaXMgdGhlcmUgYSBzbGltIGNoYW5jZSBgYXRoMTFrYCBvciBgYXRoMTJrYCBjYW4gYmUgZnV6emVkIHZpYSBgc3l6X3BjaV9kZXZpY2VgPyBUaGF0J3MgdGhlIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHN5emthbGxlciB0byBzaW11bGF0ZSBQQ0kgZGV2aWNlcy4gQWgsIGJ1dCByZW1lbWJlciwgYGF0aDExa2AgbmVlZHMgdGhlIGZpcm13YXJlIHRvIGJlIGxvYWRlZCB1c2luZyBgcmVxdWVzdF9maXJtd2FyZWAuIEFuZCB0aGVuIGl0IGhhcyB0byAqd2FpdCogZm9yIHRoZSBmaXJtd2FyZSB0byBib290IGFuZCBzZW5kIHRoYXQgc3BlY2lmaWMgUU1JIG1lc3NhZ2UsIHJpZ2h0PyBJJ20gdGFsa2luZyBhYm91dCBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gV2l0aG91dCB0aGF0IGZpcm13YXJlIGFjdHVhbGx5IHJ1bm5pbmcgYW5kIHNlbmRpbmcgdGhlIFFNSSBtZXNzYWdlLCB0aGUgbWFjODAyMTEgZGV2aWNlIGlzIG5ldmVyIHJlZ2lzdGVyZWQgYW5kLCBjb25zZXF1ZW50bHksIGB3YWtlX3R4X3F1ZXVlYCBpcyBuZXZlciBldmVuIGNhbGxlZC5cblxuU28gY2FuIEkgZ2V0IHRoZSBmdXp6ZXIgdG8gZW11bGF0ZSB0aGUgZmlybXdhcmU/IFNhZGx5LCBuby4gSSdtIHByZXR0eSBzdXJlIHN5emthbGxlciBkb2Vzbid0IGhhdmUgUU1JIGZpcm13YXJlIGVtdWxhdGlvbiBmb3IgUXVhbGNvbW0gV2ktRmkgY2hpcHMsIG5vdCB0aGF0IGNvbXBsZXguXG5cblNvLCByZWFsaXN0aWNhbGx5LCB0aGUgYHdha2VfdHhfcXVldWVgIGhhbmRsZXIgaW4gYGF0aDExa2AgYW5kIGBhdGgxMmtgIGlzIHVucmVhY2hhYmxlLiBBbmQgd2hhdCBhYm91dCBgaWVlZTgwMjExX3R4X3BlZWtgPyBJdCAqaXMqIGV4cG9ydGVkLCBidXQgbm8gb3RoZXIgZHJpdmVyIGlzIHVzaW5nIGl0LiBTbyBpdCBhbHNvIGlzIGxpa2VseSB1bnJlYWNoYWJsZS4gSSB3aWxsIGRvdWJsZSBjaGVjayBgYXRoMTJrYCBqdXN0IHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDM2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEyOjA2Ljc5ODc5MDMzNloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyMzMzNjI0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJod3NpbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTI6MDcuMjYxMTMzMjQ5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjQyODQzNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipDaGVja2luZyBGaXJtd2FyZSBSZXF1ZXN0IENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgYGF0aDEya2AgZHJpdmVyIGFjdHVhbGx5IGltcGxlbWVudHMgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBmdW5jdGlvbi4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHN0YW5kYXJkIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpbiB0aGUga2VybmVsLCBzbyB0aGlzIGNoZWNrIGlzIGltcG9ydGFudC4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQgaWYgdGhlIGRyaXZlciBmYWlsZWQgdG8gZG8gdGhpcy4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoaXMgZnVuY3Rpb24ncyBwcmVzZW5jZSB0byBjb25maXJtIGl0J3MgdXNpbmcgdGhlIHN0YW5kYXJkIG1lY2hhbmlzbXMuIFRoaXMgaXMgYmFzaWMsIGJ1dCBuZWNlc3NhcnkgYmVmb3JlIEkgcHJvY2VlZC4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkIHdpdGggYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgZGVidWdnaW5nLiBUaGlzIGlzIHByZXR0eSBmdW5kYW1lbnRhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5NzUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMjoxMC4xODU0MTk4ODdaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMzM5OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zMzQ9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM2NjpcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmdywgZndfbmFtZSwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2Ny1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY4OlxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNjktXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mzk5OlxcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3MiwgZncyX25hbWUsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDAtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQwMTpcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwicmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDAyLVxcdFxcdGdvdG8gZXJyX2Z3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjEwOnN0YXRpYyBpbnQgYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTEtXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM9MTYzPXZvaWQgYXRoMTJrX2Z3X21hcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTE2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTY3OlxcdHJldCA9IGF0aDEya19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKGFiLCBBVEgxMktfRldfQVBJMl9GSUxFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY4LVxcdGlmIChyZXQgPT0gMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTI6MTAuMjU3NzY1MjRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ5NTYzNTAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IFVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gdGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gZGV0ZXJtaW5lIGlmIGEgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmcuXCIgQmFzZWQgb24gdGhlIHByb3ZpZGVkIGNyaXRlcmlhLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHBhdGNoIGluY2x1ZGVzIGNvZGUgdGhhdCdzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuUmlnaHQsIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgYXRoMTFrYCBhbmQgYGF0aDEya2AsIGFuZCBJIHJlbWVtYmVyIHRoYXQgdGhlc2UgZHJpdmVycywgbGlrZSB0aGVpciBwcmVkZWNlc3NvcnMsIGFic29sdXRlbHkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBhbmQsIGNydWNpYWxseSwgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gZXZlbiBnZXQgb2ZmIHRoZSBncm91bmQuIFRoZXNlIGRyaXZlcnMgYXJlIG5vdCBnb2luZyB0byBpbml0aWFsaXplIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIG5vIGhhcmR3YXJlLCBubyBkaWNlLlxuXG5UaGUga2V5IGNoYW5nZSBoZXJlIHNlZW1zIHRvIGJlIGBpZWVlODAyMTFfdHhfcGVla2AsIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpbiB0aGUgYG1hYzgwMjExYCBjb3JlLiBJIGtub3cgYG1hYzgwMjExYCB3ZWxsLCBhbmQgSSBrbm93IGNvcmUgZnVuY3Rpb25zIGNhbiBiZSB0cmlja3ksIGJ1dCB0aGlzIG9uZSBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYHdha2VfdHhfcXVldWVgIGhhbmRsZXJzIHdpdGhpbiBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIEkgdW5kZXJzdGFuZCB0aGF0LiBTbywgc2luY2UgdGhlIGRyaXZlcnMgdGhhdCAqY2FsbCogYGllZWU4MDIxMV90eF9wZWVrYCBhcmUgZGVwZW5kZW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlLCB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIGVzc2VudGlhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHRvby5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycyB0aGF0IHJlbHkgb24gcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlLCBhbmQgdGhvc2UgYXJlIHRoZSBvbmx5IGRyaXZlcnMgd2hpY2ggdXNlIHRoZSBuZXcgZnVuY3Rpb24sIHRoZSBjb2RlIHBhdGhzIGFyZSBhYnNvbHV0ZWx5IGltcG9zc2libGUgdG8gaGl0IGluIHNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaGV5IHdvbid0IGV2ZW4gcHJvYmUsIGxldCBhbG9uZSByZWFjaCB0aGUgbW9kaWZpZWQgY29kZS5cblxuU28sIGFjY29yZGluZyB0byB0aGUgY3JpdGVyaWEgZ2l2ZW4sIHRoaXMgcGF0Y2ggaXMgKm5vdCogd29ydGggZnV6emluZy4gSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE4MTIsIk91dHB1dFRva2VucyI6MTc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEyOjE3Ljc1MzQwMjE4OVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGFuZCBhdGgxMmsgd2lyZWxlc3MgZHJpdmVycyBhbmQgYWRkcyBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gaWVlZTgwMjExX3R4X3BlZWsgdG8gdGhlIG1hYzgwMjExIGNvcmUuIFRoZSBuZXcgaGVscGVyIGlzIGV4Y2x1c2l2ZWx5IGNhbGxlZCBieSB0aGUgd2FrZV90eF9xdWV1ZSBoYW5kbGVycyBvZiBhdGgxMWsgYW5kIGF0aDEyay4gQm90aCBvZiB0aGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgaGFyZHdhcmUgKFBDSS9BSEIpIGFuZCBwcm9wcmlldGFyeSBmaXJtd2FyZSB0byBpbml0aWFsaXplIGFuZCByZWdpc3RlciB3aXRoIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIFdpdGhvdXQgdGhlIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSwgdGhlIGRyaXZlcnMgZmFpbCB0byBwcm9iZS9pbml0aWFsaXplLCBtZWFuaW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbmNsdWRpbmcgdGhlIG5ldyBtYWM4MDIxMSBoZWxwZXIpIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow4hsp2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 17:48:12 +0000 UTC FinishedAt: 2026-07-15 18:12:19 +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+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTQ3NGMxNWZiOTc5MDllODBiM2UwNjdkMDc0MjIzYWZkYzE3MGFiNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDE4OjEwOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuaW5kZXggZjM4OWI5N2FjYmRkNWQuLjJlNTk3OGVjMmIwNWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbkBAIC0xMDg3LDYgJiM0MzsxMDg3LDcgQEAgaW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRpZHJfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnR4YnVmX2lkcik7XG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udHhfaWRyX2xvY2spO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS53YWtlX3R4X2xvY2spO1xuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xuIFxuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbmluZGV4IDg0ZjY2ODM5ZjBjNmRlLi42ZDk5NTAxYWEyNjljNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5AQCAtODcsNiAmIzQzOzg3LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0c3RydWN0IGlkciB0eGJ1Zl9pZHI7XG4gXHQvKiBQcm90ZWN0cyB0eGJ1Zl9pZHIgYW5kIG51bV9wZW5kaW5nICovXG4gXHRzcGlubG9ja190IHR4X2lkcl9sb2NrO1xuJiM0MztcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbiYjNDM7XHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkZS4uMDQ2Y2VmZDUzMTc4MjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5AQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDY3IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuJiM0MztcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuJiM0MztcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4mIzQzO1x0fTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqcGVla19za2I7XG4mIzQzO1x0c3RydWN0IGF0aDExayAqYXIgPSBody1cdTAwM2Vwcml2O1xuJiM0MztcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuJiM0MztcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XHR1MzIgcmluZ19zZWxlY3RvcjtcbiYjNDM7XHRpbnQgbnVtX2ZyZWU7XG4mIzQzO1x0dTggcmluZ19pZDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFhcilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKDEpIHtcbiYjNDM7XHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMUtfRkxBR19DUkFTSF9GTFVTSCxcbiYjNDM7XHRcdFx0XHQgICAgICBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdFx0cGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTtcbiYjNDM7XHRcdGlmICghcGVla19za2IpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHJpbmdfc2VsZWN0b3IgPSBhci1cdTAwM2VhYi1cdTAwM2Vod19wYXJhbXMuaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKFxuJiM0MztcdFx0XHRcdFx0KHN0cnVjdCBza19idWZmICopcGVla19za2IpO1xuJiM0MztcdFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJVxuJiM0MztcdFx0XHQgIGFyLVx1MDAzZWFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZW51bV90eF9yaW5ncztcbiYjNDM7XG4mIzQzO1x0XHR0eF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZHAudHhfcmluZ1tyaW5nX2lkXTtcbiYjNDM7XHRcdHRjbF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsLnNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRzcGluX2xvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRudW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItXHUwMDNlYWIsIHRjbF9yaW5nLCB0cnVlKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRcdGlmIChudW1fZnJlZSA9PSAwKSB7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XG4mIzQzO1x0XHRpZiAoIXNrYikge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGF0aDExa19tYWNfb3BfdHgoaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbiYjNDM7XHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG5pbmRleCBhZjVmMTFmYzFkODRhYi4uM2Q0NmNmYmYwYTFjM2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuQEAgLTE1MzksNiAmIzQzOzE1MzksNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0fVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZW1heF90eF9yaW5nOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS53YWtlX3R4X2xvY2spO1xuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xuIFxuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGY4Y2ZjN2JiMjlkZDc4Li42OGQyMDIwYmU5Yjg2OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5AQCAtNTgsNiAmIzQzOzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0dTggdGNsX2RhdGFfcmluZ19pZDtcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xuJiM0MztcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbiYjNDM7XHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX2NvbXBsZXRpb25fcmluZ190eCAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG5pbmRleCBhMTY0NTYzZmZmMjg5Yy4uYzFjNjU2ZTQ1NTBiMjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG5AQCAtMzkwLDYgJiM0MzszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXG4gXHRlbHNlXG4gXHRcdHJldHVybiAoKHNybmctXHUwMDNlcmluZ19zaXplIC0gaHAgJiM0MzsgdHApIC8gc3JuZy1cdTAwM2VlbnRyeV9zaXplKSAtIDE7XG4gfVxuJiM0MztFWFBPUlRfU1lNQk9MKGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUpO1xuIFxuIHZvaWQgKmF0aDEya19oYWxfc3JuZ19zcmNfbmV4dF9wZWVrKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRcdFx0XHQgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuaW5kZXggZDlmZGQyZmM4Mjk4NmEuLjMwNmQ1MWRhM2VhMThjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbkBAIC0xMTAwLDkgJiM0MzsxMTAwLDcyIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtXHUwMDNldmlmKTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZiA9IFx1MDAyNmFodmlmLVx1MDAzZWRlZmxpbms7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XG4mIzQzO1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbiYjNDM7XHR9O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjtcbiYjNDM7XHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcbiYjNDM7XHRzdHJ1Y3QgaGFsX3NybmcgKnRjbF9yaW5nO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0c3RydWN0IGF0aDEyayAqYXI7XG4mIzQzO1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4mIzQzO1x0aW50IG51bV9mcmVlO1xuJiM0MztcdHU4IHJpbmdfaWQ7XG4mIzQzO1xuJiM0MztcdGFyID0gYXJ2aWYtXHUwMDNlYXI7XG4mIzQzO1x0aWYgKCFhcilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZHAgPSBhci1cdTAwM2VhYi1cdTAwM2VkcDtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKDEpIHtcbiYjNDM7XHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCxcbiYjNDM7XHRcdFx0XHQgICAgICBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdFx0cGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTtcbiYjNDM7XHRcdGlmICghcGVla19za2IpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKFxuJiM0MztcdFx0XHRcdFx0KHN0cnVjdCBza19idWZmICopcGVla19za2IpO1xuJiM0MztcdFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlbWF4X3R4X3Jpbmc7XG4mIzQzO1xuJiM0MztcdFx0dHhfcmluZyA9IFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbcmluZ19pZF07XG4mIzQzO1x0XHR0Y2xfcmluZyA9IFx1MDAyNmRwLVx1MDAzZWhhbC1cdTAwM2Vzcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bnVtX2ZyZWUgPSBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xuJiM0MztcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRhdGgxMmtfd2lmaTdfbWFjX29wX3R4KGh3LCBcdTAwMjZjb250cm9sLCBza2IpO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTJrX3dpZmk3X21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4mIzQzO1x0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcbiBcdC5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0YXJ0LFxuIFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RvcCxcbiBcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5pbmRleCA0Zjk1ZGEwMjM3NDZmOS4uOTI4OWI4ZGNhOTcyY2YgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5AQCAtNzc0Miw2ICYjNDM7Nzc0MiwyNiBAQCB2b2lkIGllZWU4MDIxMV91bnJlc2VydmVfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHU4IHRpZCk7XG4gc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGllZWU4MDIxMV90eF9wZWVrIC0gcGVlayBhdCB0aGUgbmV4dCBwYWNrZXQgaW4gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxuJiM0MzsgKlxuJiM0MzsgKiBAaHc6IHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxuJiM0MzsgKiBAdHhxOiBwb2ludGVyIG9idGFpbmVkIGZyb20gc3RhdGlvbiBvciB2aXJ0dWFsIGludGVyZmFjZSwgb3IgZnJvbVxuJiM0MzsgKlx0aWVlZTgwMjExX25leHRfdHhxKClcbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiB0aGUgbmV4dCBza2Igd2l0aG91dCBkZXF1ZXVpbmcgaXQsIG9yICVOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS5cbiYjNDM7ICogVGhlIHJldHVybmVkIHBvaW50ZXIgaXMgY29uc3Qg4oCUIHRoZSBjYWxsZXIgbXVzdCBub3QgbW9kaWZ5IG9yIGZyZWUgdGhlIHNrYi5cbiYjNDM7ICogVGhlIHNrYiByZW1haW5zIHF1ZXVlZCBhbmQgd2lsbCBiZSByZXR1cm5lZCBieSBhIHN1YnNlcXVlbnRcbiYjNDM7ICogaWVlZTgwMjExX3R4X2RlcXVldWUoKSBjYWxsLlxuJiM0MzsgKlxuJiM0MzsgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZHJpdmVycyB0aGF0IG5lZWQgdG8gaW5zcGVjdCB0aGUgbmV4dCBmcmFtZSAoZS5nLiB0b1xuJiM0MzsgKiBkZXRlcm1pbmUgdGhlIHRhcmdldCBUWCByaW5nKSBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciB0byBkZXF1ZXVlLlxuJiM0MzsgKlxuJiM0MzsgKiBNdXN0IGJlIGNhbGxlZCBpbiB0aGUgc2FtZSBjb250ZXh0IGFzIGllZWU4MDIxMV90eF9kZXF1ZXVlKCkuXG4mIzQzOyAqL1xuJiM0Mztjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcbiYjNDM7XG4gLyoqXG4gICogaWVlZTgwMjExX3R4X2RlcXVldWVfbmkgLSBkZXF1ZXVlIGEgcGFja2V0IGZyb20gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxuICAqIChpbiBwcm9jZXNzIGNvbnRleHQpXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggYzEzYjIwOWZhZDQ3YWEuLjkxYmZkOGVmOTQyOGEwIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtMzg1Nyw2ICYjNDM7Mzg1Nyw0NSBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0Mztjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHR4cV9pbmZvICp0eHFpID0gY29udGFpbmVyX29mKHR4cSwgc3RydWN0IHR4cV9pbmZvLCB0eHEpO1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xuJiM0MztcdHN0cnVjdCBmcV90aW4gKnRpbiA9IFx1MDAyNnR4cWktXHUwMDNldGluO1xuJiM0MztcdHN0cnVjdCBmcSAqZnEgPSBcdTAwMjZsb2NhbC1cdTAwM2VmcTtcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgZnFfZmxvdyAqZmxvdztcbiYjNDM7XG4mIzQzO1x0V0FSTl9PTl9PTkNFKHNvZnRpcnFfY291bnQoKSA9PSAwKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZxLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRza2IgPSBza2JfcGVlayhcdTAwMjZ0eHFpLVx1MDAzZWZyYWdzKTtcbiYjNDM7XHRpZiAoc2tiKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkoZmxvdywgXHUwMDI2dGluLVx1MDAzZW5ld19mbG93cywgZmxvd2NoYWluKSB7XG4mIzQzO1x0XHRza2IgPSBza2JfcGVlayhcdTAwMjZmbG93LVx1MDAzZXF1ZXVlKTtcbiYjNDM7XHRcdGlmIChza2IpXG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCBcdTAwMjZ0aW4tXHUwMDNlb2xkX2Zsb3dzLCBmbG93Y2hhaW4pIHtcbiYjNDM7XHRcdHNrYiA9IHNrYl9wZWVrKFx1MDAyNmZsb3ctXHUwMDNlcXVldWUpO1xuJiM0MztcdFx0aWYgKHNrYilcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGlmIChza2IpXG4mIzQzO1x0XHRza2JfZ2V0X2hhc2goc2tiKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZnEtXHUwMDNlbG9jayk7XG4mIzQzO1x0cmV0dXJuIHNrYjtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChpZWVlODAyMTFfdHhfcGVlayk7XG4mIzQzO1xuIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIHdpcmVsZXNzIGRyaXZlcnMgYW5kIGFkZHMgYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGllZWU4MDIxMV90eF9wZWVrIHRvIHRoZSBtYWM4MDIxMSBjb3JlLiBUaGUgbmV3IGhlbHBlciBpcyBleGNsdXNpdmVseSBjYWxsZWQgYnkgdGhlIHdha2VfdHhfcXVldWUgaGFuZGxlcnMgb2YgYXRoMTFrIGFuZCBhdGgxMmsuIEJvdGggb2YgdGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IHRoZSBoYXJkd2FyZSBhbmQgZmlybXdhcmUsIHRoZSBkcml2ZXJzIGZhaWwgdG8gcHJvYmUvaW5pdGlhbGl6ZSwgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW5jbHVkaW5nIHRoZSBuZXcgbWFjODAyMTEgaGVscGVyKSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU0NzRjMTVmYjk3OTA5ZTgwYjNlMDY3ZDA3NDIyM2FmZGMxNzBhYjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAxODoxMDozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwppbmRleCBmMzg5Yjk3YWNiZGQ1ZC4uMmU1OTc4ZWMyYjA1YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKQEAgLTEwODcsNiAmIzQzOzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFiLSZndDtod19wYXJhbXMuaGFsX3BhcmFtcy0mZ3Q7bnVtX3R4X3JpbmdzOyBpJiM0MzsmIzQzOykgewogCQlpZHJfaW5pdCgmYW1wO2RwLSZndDt0eF9yaW5nW2ldLnR4YnVmX2lkcik7CiAJCXNwaW5fbG9ja19pbml0KCZhbXA7ZHAtJmd0O3R4X3JpbmdbaV0udHhfaWRyX2xvY2spOwomIzQzOwkJc3Bpbl9sb2NrX2luaXQoJmFtcDtkcC0mZ3Q7dHhfcmluZ1tpXS53YWtlX3R4X2xvY2spOwogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTsKIAogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKaW5kZXggODRmNjY4MzlmMGM2ZGUuLjZkOTk1MDFhYTI2OWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oCkBAIC04Nyw2ICYjNDM7ODcsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7CiAJc3RydWN0IGlkciB0eGJ1Zl9pZHI7CiAJLyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqLwogCXNwaW5sb2NrX3QgdHhfaWRyX2xvY2s7CiYjNDM7CS8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi8KJiM0MzsJc3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7CiAJc3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7CiAJaW50IHR4X3N0YXR1c19oZWFkOwogCWludCB0eF9zdGF0dXNfdGFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCmluZGV4IDJkNTVjZGM0ZDE2NWRlLi4wNDZjZWZkNTMxNzgyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCkBAIC0xMDA2NSw5ICYjNDM7MTAwNjUsNjcgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAomIzQzOwkJCQkJc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0gewomIzQzOwkJLnN0YSA9IHR4cS0mZ3Q7c3RhLAomIzQzOwl9OwomIzQzOwljb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqcGVla19za2I7CiYjNDM7CXN0cnVjdCBhdGgxMWsgKmFyID0gaHctJmd0O3ByaXY7CiYjNDM7CXN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nOwomIzQzOwlzdHJ1Y3QgaGFsX3NybmcgKnRjbF9yaW5nOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwl1MzIgcmluZ19zZWxlY3RvcjsKJiM0MzsJaW50IG51bV9mcmVlOwomIzQzOwl1OCByaW5nX2lkOwomIzQzOwomIzQzOwlpZiAoIWFyKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwl3aGlsZSAoMSkgewomIzQzOwkJaWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILAomIzQzOwkJCQkgICAgICAmYW1wO2FyLSZndDthYi0mZ3Q7ZGV2X2ZsYWdzKSkpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpOwomIzQzOwkJaWYgKCFwZWVrX3NrYikKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCXJpbmdfc2VsZWN0b3IgPSBhci0mZ3Q7YWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKAomIzQzOwkJCQkJKHN0cnVjdCBza19idWZmICopcGVla19za2IpOwomIzQzOwkJcmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJQomIzQzOwkJCSAgYXItJmd0O2FiLSZndDtod19wYXJhbXMuaGFsX3BhcmFtcy0mZ3Q7bnVtX3R4X3JpbmdzOwomIzQzOwomIzQzOwkJdHhfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtkcC50eF9yaW5nW3JpbmdfaWRdOwomIzQzOwkJdGNsX3JpbmcgPSAmYW1wO2FyLSZndDthYi0mZ3Q7aGFsLnNybmdfbGlzdFt0eF9yaW5nLSZndDt0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsKJiM0MzsJCXNwaW5fbG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsJCW51bV9mcmVlID0gYXRoMTFrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci0mZ3Q7YWIsIHRjbF9yaW5nLCB0cnVlKTsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7dGNsX3JpbmctJmd0O2xvY2spOwomIzQzOwomIzQzOwkJaWYgKG51bV9mcmVlID09IDApIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTsKJiM0MzsJCWlmICghc2tiKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJYXRoMTFrX21hY19vcF90eChodywgJmFtcDtjb250cm9sLCBza2IpOwomIzQzOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7CiAJLnR4CQkJCT0gYXRoMTFrX21hY19vcF90eCwKLQkud2FrZV90eF9xdWV1ZQkJCT0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLAomIzQzOwkud2FrZV90eF9xdWV1ZQkJCT0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLAogCS5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0YXJ0LAogCS5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsCiAJLnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMKaW5kZXggYWY1ZjExZmMxZDg0YWIuLjNkNDZjZmJmMGExYzNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jCkBAIC0xNTM5LDYgJiM0MzsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYikKIAl9CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgYWItJmd0O2h3X3BhcmFtcy0mZ3Q7bWF4X3R4X3Jpbmc7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlzcGluX2xvY2tfaW5pdCgmYW1wO2RwLSZndDt0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7CiAJCWRwLSZndDt0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpOwogCiAJCWRwLSZndDt0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAppbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHsKIAl1OCB0Y2xfZGF0YV9yaW5nX2lkOwogCXN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7CiAJc3RydWN0IGRwX3NybmcgdGNsX2NvbXBfcmluZzsKJiM0MzsJLyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqLwomIzQzOwlzcGlubG9ja190IHdha2VfdHhfbG9jazsKIAlzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1czsKIAlpbnQgdHhfc3RhdHVzX2hlYWQ7CiAJaW50IHR4X3N0YXR1c190YWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMKaW5kZXggYTE2NDU2M2ZmZjI4OWMuLmMxYzY1NmU0NTUwYjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMKQEAgLTM5MCw2ICYjNDM7MzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLAogCWVsc2UKIAkJcmV0dXJuICgoc3JuZy0mZ3Q7cmluZ19zaXplIC0gaHAgJiM0MzsgdHApIC8gc3JuZy0mZ3Q7ZW50cnlfc2l6ZSkgLSAxOwogfQomIzQzO0VYUE9SVF9TWU1CT0woYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7CiAKIHZvaWQgKmF0aDEya19oYWxfc3JuZ19zcmNfbmV4dF9wZWVrKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsCiAJCQkJICAgIHN0cnVjdCBoYWxfc3JuZyAqc3JuZykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwppbmRleCBkOWZkZDJmYzgyOTg2YS4uMzA2ZDUxZGEzZWExOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKQEAgLTExMDAsOSAmIzQzOzExMDAsNzIgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiYjNDM7CQkJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtJmd0O3ZpZik7CiYjNDM7CXN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmID0gJmFtcDthaHZpZi0mZ3Q7ZGVmbGluazsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7CiYjNDM7CQkuc3RhID0gdHhxLSZndDtzdGEsCiYjNDM7CX07CiYjNDM7CWNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjsKJiM0MzsJc3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7CiYjNDM7CXN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHAgKmRwOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlzdHJ1Y3QgYXRoMTJrICphcjsKJiM0MzsJdTMyIHJpbmdfc2VsZWN0b3I7CiYjNDM7CWludCBudW1fZnJlZTsKJiM0MzsJdTggcmluZ19pZDsKJiM0MzsKJiM0MzsJYXIgPSBhcnZpZi0mZ3Q7YXI7CiYjNDM7CWlmICghYXIpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWRwID0gYXItJmd0O2FiLSZndDtkcDsKJiM0MzsKJiM0MzsJd2hpbGUgKDEpIHsKJiM0MzsJCWlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwKJiM0MzsJCQkJICAgICAgJmFtcDthci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJcGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTsKJiM0MzsJCWlmICghcGVla19za2IpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlyaW5nX3NlbGVjdG9yID0gZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7aHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3RvcigKJiM0MzsJCQkJCShzdHJ1Y3Qgc2tfYnVmZiAqKXBlZWtfc2tiKTsKJiM0MzsJCXJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7bWF4X3R4X3Jpbmc7CiYjNDM7CiYjNDM7CQl0eF9yaW5nID0gJmFtcDtkcC0mZ3Q7dHhfcmluZ1tyaW5nX2lkXTsKJiM0MzsJCXRjbF9yaW5nID0gJmFtcDtkcC0mZ3Q7aGFsLSZndDtzcm5nX2xpc3RbdHhfcmluZy0mZ3Q7dGNsX2RhdGFfcmluZy5yaW5nX2lkXTsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CQludW1fZnJlZSA9IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItJmd0O2FiLCB0Y2xfcmluZywgdHJ1ZSk7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJCWlmIChudW1fZnJlZSA9PSAwKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7CiYjNDM7CQlpZiAoIXNrYikgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsICZhbXA7Y29udHJvbCwgc2tiKTsKJiM0MzsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMmtfb3BzX3dpZmk3ID0gewogCS50eAkJCQk9IGF0aDEya193aWZpN19tYWNfb3BfdHgsCi0JLndha2VfdHhfcXVldWUJCQk9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSwKJiM0MzsJLndha2VfdHhfcXVldWUJCQk9IGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZSwKIAkuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCwKIAkuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdG9wLAogCS5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKaW5kZXggNGY5NWRhMDIzNzQ2ZjkuLjkyODliOGRjYTk3MmNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKQEAgLTc3NDIsNiAmIzQzOzc3NDIsMjYgQEAgdm9pZCBpZWVlODAyMTFfdW5yZXNlcnZlX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCB1OCB0aWQpOwogc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCSAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSk7CiAKJiM0MzsvKioKJiM0MzsgKiBpZWVlODAyMTFfdHhfcGVlayAtIHBlZWsgYXQgdGhlIG5leHQgcGFja2V0IGluIGEgc29mdHdhcmUgdHggcXVldWUKJiM0MzsgKgomIzQzOyAqIEBodzogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIGllZWU4MDIxMV9hbGxvY19odygpCiYjNDM7ICogQHR4cTogcG9pbnRlciBvYnRhaW5lZCBmcm9tIHN0YXRpb24gb3IgdmlydHVhbCBpbnRlcmZhY2UsIG9yIGZyb20KJiM0MzsgKglpZWVlODAyMTFfbmV4dF90eHEoKQomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiB0aGUgbmV4dCBza2Igd2l0aG91dCBkZXF1ZXVpbmcgaXQsIG9yICVOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KJiM0MzsgKiBUaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBjb25zdCDigJQgdGhlIGNhbGxlciBtdXN0IG5vdCBtb2RpZnkgb3IgZnJlZSB0aGUgc2tiLgomIzQzOyAqIFRoZSBza2IgcmVtYWlucyBxdWV1ZWQgYW5kIHdpbGwgYmUgcmV0dXJuZWQgYnkgYSBzdWJzZXF1ZW50CiYjNDM7ICogaWVlZTgwMjExX3R4X2RlcXVldWUoKSBjYWxsLgomIzQzOyAqCiYjNDM7ICogVGhpcyBpcyB1c2VmdWwgZm9yIGRyaXZlcnMgdGhhdCBuZWVkIHRvIGluc3BlY3QgdGhlIG5leHQgZnJhbWUgKGUuZy4gdG8KJiM0MzsgKiBkZXRlcm1pbmUgdGhlIHRhcmdldCBUWCByaW5nKSBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciB0byBkZXF1ZXVlLgomIzQzOyAqCiYjNDM7ICogTXVzdCBiZSBjYWxsZWQgaW4gdGhlIHNhbWUgY29udGV4dCBhcyBpZWVlODAyMTFfdHhfZGVxdWV1ZSgpLgomIzQzOyAqLwomIzQzO2NvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKJiM0MzsJCQkJCXN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpOwomIzQzOwogLyoqCiAgKiBpZWVlODAyMTFfdHhfZGVxdWV1ZV9uaSAtIGRlcXVldWUgYSBwYWNrZXQgZnJvbSBhIHNvZnR3YXJlIHR4IHF1ZXVlCiAgKiAoaW4gcHJvY2VzcyBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCBjMTNiMjA5ZmFkNDdhYS4uOTFiZmQ4ZWY5NDI4YTAgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jCkBAIC0zODU3LDYgJiM0MzszODU3LDQ1IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJcmV0dXJuIHRydWU7CiB9CiAKJiM0Mztjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiYjNDM7CQkJCQlzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQomIzQzO3sKJiM0MzsJc3RydWN0IHR4cV9pbmZvICp0eHFpID0gY29udGFpbmVyX29mKHR4cSwgc3RydWN0IHR4cV9pbmZvLCB0eHEpOwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTsKJiM0MzsJc3RydWN0IGZxX3RpbiAqdGluID0gJmFtcDt0eHFpLSZndDt0aW47CiYjNDM7CXN0cnVjdCBmcSAqZnEgPSAmYW1wO2xvY2FsLSZndDtmcTsKJiM0MzsJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7CiYjNDM7CXN0cnVjdCBmcV9mbG93ICpmbG93OwomIzQzOwomIzQzOwlXQVJOX09OX09OQ0Uoc29mdGlycV9jb3VudCgpID09IDApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtmcS0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXNrYiA9IHNrYl9wZWVrKCZhbXA7dHhxaS0mZ3Q7ZnJhZ3MpOwomIzQzOwlpZiAoc2tiKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkoZmxvdywgJmFtcDt0aW4tJmd0O25ld19mbG93cywgZmxvd2NoYWluKSB7CiYjNDM7CQlza2IgPSBza2JfcGVlaygmYW1wO2Zsb3ctJmd0O3F1ZXVlKTsKJiM0MzsJCWlmIChza2IpCiYjNDM7CQkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCAmYW1wO3Rpbi0mZ3Q7b2xkX2Zsb3dzLCBmbG93Y2hhaW4pIHsKJiM0MzsJCXNrYiA9IHNrYl9wZWVrKCZhbXA7Zmxvdy0mZ3Q7cXVldWUpOwomIzQzOwkJaWYgKHNrYikKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzO291dDoKJiM0MzsJaWYgKHNrYikKJiM0MzsJCXNrYl9nZXRfaGFzaChza2IpOwomIzQzOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2ZxLSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIHNrYjsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoaWVlZTgwMjExX3R4X3BlZWspOwomIzQzOwogc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCSAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgUmVhY2hhYmlsaXR5IG9mIGEgV2lyZWxlc3MgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBzb21lIGtleSB3aXJlbGVzcyBuZXR3b3JraW5nIGFyZWFzOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLCBhbmQgYG5ldC9tYWM4MDIxMS90eC5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhIG5ldyBmdW5jdGlvbiwgYGllZWU4MDIxMV90eF9wZWVrYCwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGNyZWF0ZSBjdXN0b20gYHdha2VfdHhfcXVldWVgIGhhbmRsZXJzIGluIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCDigJMgc3BlY2lmaWNhbGx5LCBgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlYCBhbmQgYGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZWAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyByaWdodCBpbiB0aGUgaGVhcnQgb2YgdGhlIG5ldHdvcmtpbmcvd2lyZWxlc3Mgc3RhY2suIFRoZSBiaWcgcXVlc3Rpb24gaXM6IGNhbiBJIGFjdHVhbGx5ICpyZWFjaCogdGhpcyBjb2RlIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHVwPwoKYG1hYzgwMjExYCBpdHNlbGYgaXMgZGVmaW5pdGVseSByZWFjaGFibGU7IGBtYWM4MDIxMV9od3NpbWAgb2ZmZXJzIGEgcm91dGUgaW50byB0aGF0IGNvZGUuIEJ1dCB0aGUgY3JpdGljYWwgcGFydCBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIFRoZXNlIGFyZSB0eXBpY2FsbHkgdGllZCB0byBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4L2JlIGhhcmR3YXJlLiBUaGF0IHN1Z2dlc3RzIFBDSS9BSEIgZGVwZW5kZW5jaWVzLiBBcmUgdGhvc2UgZHJpdmVycyBldmVuICphY2Nlc3NpYmxlKiBpbiBhIFZNPyBDb3VsZCB0aGVyZSBiZSBhbnkgc2ltdWxhdGVkIGhhcmR3YXJlLCBvciBpcyB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5IG9mZi1saW1pdHMgZm9yIGZ1enppbmcgb3IgdGVzdGluZyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IEkmIzM5O3ZlIGdvdCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byBhY2Nlc3MgdGhpcyBjb2RlLgoKSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGhhdmUgYW55IHNpbXVsYXRlZCBoYXJkd2FyZSBjb21wb25lbnRzIGluIHRoZSBrZXJuZWwuIExldCBtZSBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGZvciByZWZlcmVuY2VzIHRvIHRoZW0gdG8gc2VlIGlmIHRoZXkgY2FuIGJlIGFjY2Vzc2VkIHZpYSBhIHZpcnR1YWwgYnVzIG9yIFVTQiBvciBpZiB0aGV5IGFyZSBwdXJlbHkgUENJL0FIQi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjY2ODQgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZz0yPWNvbmZpZyBBVEgxMUtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTE6XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTFrLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTEzPWNvbmZpZyBBVEgxMUtfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MTQ6XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE1LVx0ZGVwZW5kcyBvbiBBVEgxMUtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9MjA9Y29uZmlnIEFUSDExS19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMTpcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjItXHRkZXBlbmRzIG9uIEFUSDExSyBcdTAwMjZcdTAwMjYgUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTMwPWNvbmZpZyBBVEgxMUtfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMTpcdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMi1cdGRlcGVuZHMgb24gQVRIMTFLXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTM4PWNvbmZpZyBBVEgxMUtfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjM5Olx0Ym9vbCBcJiMzNDtRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQwLVx0ZGVwZW5kcyBvbiBBVEgxMUsgXHUwMDI2XHUwMDI2IERFQlVHX0ZTIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDEtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDI6XHQgIEVuYWJsZSBhdGgxMWsgZGVidWdmcyBzdXBwb3J0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTQ2PWNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ3Olx0Ym9vbCBcJiMzNDthdGgxMWsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDgtXHRkZXBlbmRzIG9uIEFUSDExSyBcdTAwMjZcdTAwMjYgRVZFTlRfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ5LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUwOlx0ICBTZWxlY3QgdGhpcyB0byB1c2UgYXRoMTFrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9NTI9Y29uZmlnIEFUSDExS19TUEVDVFJBTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjUzOlx0Ym9vbCBcJiMzNDtRQ0EgYXRoMTFrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU0LVx0ZGVwZW5kcyBvbiBBVEgxMUtfREVCVUdGU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01Ni1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1NzpcdCAgRW5hYmxlIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9NjE9Y29uZmlnIEFUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MjpcdGJvb2wgXCYjMzQ7YXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02My1cdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjUtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjY6XHQgIEVuYWJsZSBhdGgxMWsgY2hhbm5lbCBmcmVxdWVuY3kgcmVzcG9uc2UgZHVtcCBzdXBwb3J0LlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTY3LVx0ICBUaGlzIG9wdGlvbiBleHBvc2VzIGRlYnVnZnMgbm9kZXMgdGhhdCB3aWxsIGFsbG93IHRoZSB1c2VyXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19BVEgxMUspICYjNDM7PSBhdGgxMWsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZTozOmF0aDExay15ICYjNDM7PSBjb3JlLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtNC1cdCAgICBoYWwubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI0OmF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjU6YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI2OmF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjc6YXRoMTFrLSQoQ09ORklHX1RIRVJNQUwpICYjNDM7PSB0aGVybWFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjg6YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgJiM0Mzs9IHNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjk6YXRoMTFrLSQoQ09ORklHX1BNKSAmIzQzOz0gd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzA6YXRoMTFrLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzE6YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICYjNDM7PSBjZnIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FUSDExS19BSEIpICYjNDM7PSBhdGgxMWtfYWhiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzQ6YXRoMTFrX2FoYi15ICYjNDM7PSBhaGIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FUSDExS19QQ0kpICYjNDM7PSBhdGgxMWtfcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mzc6YXRoMTFrX3BjaS15ICYjNDM7PSBtaGkubyBwY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNDpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBhdGgxMWtfYWhiX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1LVx0LyogVE9ETzogU2hvdWxkIHdlIGNoYW5nZSB0aGUgY29tcGF0aWJsZSBzdHJpbmcgdG8gc29tZXRoaW5nIHNpbWlsYXJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhdGgxMWtfYWhiX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNDQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNDU6YXRoMTFrX2FoYl9nZXRfbXNpX2lycV93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHVuc2lnbmVkIGludCB2ZWN0b3IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNTA9c3RhdGljIGlubGluZSB1MzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTUxOmF0aDExa19haGJfZ2V0X3dpbmRvd19zdGFydF93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTY3OmF0aDExa19haGJfd2luZG93X3dyaXRlMzJfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0LCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE2OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzEtXHQvKiBXQ042NzUwIHVzZXMgc3RhdGljIHdpbmRvdyBiYXNlZCByZWdpc3RlciBhY2Nlc3MqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNzI6XHR3aW5kb3dfc3RhcnQgPSBhdGgxMWtfYWhiX2dldF93aW5kb3dfc3RhcnRfd2NuNjc1MChhYiwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTczLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNzg6c3RhdGljIHUzMiBhdGgxMWtfYWhiX3dpbmRvd19yZWFkMzJfd2NuNjc1MChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTgzLVx0LyogV0NONjc1MCB1c2VzIHN0YXRpYyB3aW5kb3cgYmFzZWQgcmVnaXN0ZXIgYWNjZXNzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE4NDpcdHdpbmRvd19zdGFydCA9IGF0aDExa19haGJfZ2V0X3dpbmRvd19zdGFydF93Y242NzUwKGFiLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5MTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDExa19wY2lfb3BzIGF0aDExa19haGJfcGNpX29wc193Y242NzUwID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xOTItXHQud2FrZXVwID0gTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTkzLVx0LnJlbGVhc2UgPSBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxOTQ6XHQuZ2V0X21zaV9pcnEgPSBhdGgxMWtfYWhiX2dldF9tc2lfaXJxX3djbjY3NTAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5NTpcdC53aW5kb3dfd3JpdGUzMiA9IGF0aDExa19haGJfd2luZG93X3dyaXRlMzJfd2NuNjc1MCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTk2Olx0LndpbmRvd19yZWFkMzIgPSBhdGgxMWtfYWhiX3dpbmRvd19yZWFkMzJfd2NuNjc1MCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTk3LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTk5OnN0YXRpYyBpbmxpbmUgdTMyIGF0aDExa19haGJfcmVhZDMyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIwNDpzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTFrX2FoYl93cml0ZTMyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjA5OnN0YXRpYyB2b2lkIGF0aDExa19haGJfa2lsbF90YXNrbGV0cyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjEzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMTQ6XHRcdHN0cnVjdCBhdGgxMWtfY2VfcGlwZSAqY2VfcGlwZSA9IFx1MDAyNmFiLVx1MDAzZWNlLmNlX3BpcGVbaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjE2Olx0XHRpZiAoYXRoMTFrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjE3LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMjM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9leHRfZ3JwX2Rpc2FibGUoc3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjMxOnN0YXRpYyB2b2lkIF9fYXRoMTFrX2FoYl9leHRfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzNS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMzY6XHRcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMzg6XHRcdGF0aDExa19haGJfZXh0X2dycF9kaXNhYmxlKGlycV9ncnApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI0ODpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9ncnBfZW5hYmxlKHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI1NjpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3NldGJpdDMyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHU4IGJpdCwgdTMyIG9mZnNldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjYwOlx0dmFsID0gYXRoMTFrX2FoYl9yZWFkMzIoYWIsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2MTpcdGF0aDExa19haGJfd3JpdGUzMihhYiwgb2Zmc2V0LCB2YWwgfCBCSVQoYml0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI2Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjY0OnN0YXRpYyB2b2lkIGF0aDExa19haGJfY2xlYXJiaXQzMihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2ODpcdHZhbCA9IGF0aDExa19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyNjk6XHRhdGgxMWtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIFx1MDAyNiB+QklUKGJpdCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI3MjpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yNzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjgzLVx0aWYgKGNlX2F0dHItXHUwMDNlc3JjX25lbnRyaWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyODQ6XHRcdGF0aDExa19haGJfc2V0Yml0MzIoYWIsIGNlX2lkLCBpZTFfcmVnX2FkZHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI4Ni1cdGlmIChjZV9hdHRyLVx1MDAzZWRlc3RfbmVudHJpZXMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjg3Olx0XHRhdGgxMWtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mjg4Olx0XHRhdGgxMWtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCAmIzQzOyBDRV9IT1NUX0lFXzNfU0hJRlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI4OS1cdFx0XHRcdCAgICBpZTNfcmVnX2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyOTM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MTYgY2VfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMDQtXHRpZiAoY2VfYXR0ci1cdTAwM2VzcmNfbmVudHJpZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMwNTpcdFx0YXRoMTFrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMDctXHRpZiAoY2VfYXR0ci1cdTAwM2VkZXN0X25lbnRyaWVzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMwODpcdFx0YXRoMTFrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzA5Olx0XHRhdGgxMWtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkICYjNDM7IENFX0hPU1RfSUVfM19TSElGVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzEwLVx0XHRcdFx0ICAgICAgaWUzX3JlZ19hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzE0OnN0YXRpYyB2b2lkIGF0aDExa19haGJfc3luY19jZV9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMyMDpcdFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMyMS1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzI4OnN0YXRpYyB2b2lkIGF0aDExa19haGJfc3luY19leHRfaXJxcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMjkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzMzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMzNDpcdFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM0MzpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycXNfZW5hYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNDctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM0ODpcdFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0OS1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzUwOlx0XHRhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoYWIsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTEtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM1NDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycXNfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzU4LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNTk6XHRcdGlmIChhdGgxMWtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNjAtXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM2MTpcdFx0YXRoMTFrX2FoYl9jZV9pcnFfZGlzYWJsZShhYiwgaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM2Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzY1OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9zdGFydChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNjc6XHRhdGgxMWtfYWhiX2NlX2lycXNfZW5hYmxlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzY4Olx0YXRoMTFrX2NlX3J4X3Bvc3RfYnVmKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNzM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9leHRfaXJxX2VuYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM3ODpcdFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zODMtXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mzg0Olx0XHRhdGgxMWtfYWhiX2V4dF9ncnBfZW5hYmxlKGlycV9ncnApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zODUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM4ODpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zODkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozOTA6XHRfX2F0aDExa19haGJfZXh0X2lycV9kaXNhYmxlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzkxOlx0YXRoMTFrX2FoYl9zeW5jX2V4dF9pcnFzKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzkyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozOTQ6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zdG9wKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5Ni1cdGlmICghdGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5NzpcdFx0YXRoMTFrX2FoYl9jZV9pcnFzX2Rpc2FibGUoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozOTg6XHRhdGgxMWtfYWhiX3N5bmNfY2VfaXJxcyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5OTpcdGF0aDExa19haGJfa2lsbF90YXNrbGV0cyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwMC1cdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmFiLVx1MDAzZXJ4X3JlcGxlbmlzaF9yZXRyeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQwMTpcdGF0aDExa19jZV9jbGVhbnVwX3BpcGVzKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDAyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MDQ6c3RhdGljIGludCBhdGgxMWtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQwNjpcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MDctXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDEwLVx0aWYgKHJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDExOlx0XHRhdGgxMWtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gYm9vdCB0aGUgcmVtb3RlIHByb2Nlc3NvciBRNlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDE2OnN0YXRpYyB2b2lkIGF0aDExa19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQxNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQxODpcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQyMzpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2luaXRfcW1pX2NlX2NvbmZpZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MjU6XHRzdHJ1Y3QgYXRoMTFrX3FtaV9jZV9jZmcgKmNmZyA9IFx1MDAyNmFiLVx1MDAzZXFtaS5jZV9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDM0OnN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9leHRfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MzgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDM5Olx0XHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXHUwMDI2YWItXHUwMDNlZXh0X2lycV9ncnBbaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDQ5OnN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ1NC1cdGlmIChhYi1cdTAwM2Vod19wYXJhbXMuaHlicmlkX2J1c190eXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NTU6XHRcdHJldHVybiBhdGgxMWtfcGNpY19mcmVlX2lycShhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDU3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NTg6XHRcdGlmIChhdGgxMWtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTktXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ2NDpcdGF0aDExa19haGJfZnJlZV9leHRfaXJxKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDY1LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0Njc6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDY4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDY5Olx0c3RydWN0IGF0aDExa19jZV9waXBlICpjZV9waXBlID0gZnJvbV90YXNrbGV0KGNlX3BpcGUsIHQsIGludHJfdHEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3MTpcdGF0aDExa19jZV9wZXJfZW5naW5lX3NlcnZpY2UoY2VfcGlwZS1cdTAwM2VhYiwgY2VfcGlwZS1cdTAwM2VwaXBlX251bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDczOlx0YXRoMTFrX2FoYl9jZV9pcnFfZW5hYmxlKGNlX3BpcGUtXHUwMDNlYWIsIGNlX3BpcGUtXHUwMDNlcGlwZV9udW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3NjpzdGF0aWMgaXJxcmV0dXJuX3QgYXRoMTFrX2FoYl9jZV9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3ODpcdHN0cnVjdCBhdGgxMWtfY2VfcGlwZSAqY2VfcGlwZSA9IGFyZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0ODM6XHRhdGgxMWtfYWhiX2NlX2lycV9kaXNhYmxlKGNlX3BpcGUtXHUwMDNlYWIsIGNlX3BpcGUtXHUwMDNlcGlwZV9udW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00ODQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5MDpzdGF0aWMgaW50IGF0aDExa19haGJfZXh0X2dycF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0OTI6XHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gY29udGFpbmVyX29mKG5hcGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5MzpcdFx0XHRcdFx0XHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTQtXHRcdFx0XHRcdFx0bmFwaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5NTpcdHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIgPSBpcnFfZ3JwLVx1MDAzZWFiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTYtXHRpbnQgd29ya19kb25lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5ODpcdHdvcmtfZG9uZSA9IGF0aDExa19kcF9zZXJ2aWNlX3NybmcoYWIsIGlycV9ncnAsIGJ1ZGdldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ5OS1cdGlmICh3b3JrX2RvbmUgXHUwMDNjIGJ1ZGdldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MDAtXHRcdG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCB3b3JrX2RvbmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1MDE6XHRcdGF0aDExa19haGJfZXh0X2dycF9lbmFibGUoaXJxX2dycCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUwMi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTEwOnN0YXRpYyBpcnFyZXR1cm5fdCBhdGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUxMjpcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBhcmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTE3Olx0YXRoMTFrX2FoYl9leHRfZ3JwX2Rpc2FibGUoaXJxX2dycCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTI0OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9jb25maWdfZXh0X2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1MjY6XHRzdHJ1Y3QgYXRoMTFrX2h3X3BhcmFtcyAqaHcgPSBcdTAwMjZhYi1cdTAwM2Vod19wYXJhbXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUyNy1cdGludCBpLCBqO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTMxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIMTFLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUzMjpcdFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFx1MDAyNmFiLVx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MzMtXHRcdHUzMiBudW1faXJxID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU0Mi1cdFx0bmV0aWZfbmFwaV9hZGQoaXJxX2dycC1cdTAwM2VuYXBpX25kZXYsIFx1MDAyNmlycV9ncnAtXHUwMDNlbmFwaSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTQzOlx0XHRcdCAgICAgICBhdGgxMWtfYWhiX2V4dF9ncnBfbmFwaV9wb2xsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTQ0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTY4LVx0XHRcdFx0XHRcdHJ4ZG1hMmhvc3RfZGVzdGluYXRpb25fcmluZ19tYWMxIC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTY5Olx0XHRcdFx0XHRcdGF0aDExa19od19nZXRfbWFjX2Zyb21fcGRldl9pZChodywgaik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3MC1cdFx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3NC1cdFx0XHRcdFx0XHRob3N0MnJ4ZG1hX2hvc3RfYnVmX3JpbmdfbWFjMSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjU3NTpcdFx0XHRcdFx0XHRhdGgxMWtfaHdfZ2V0X21hY19mcm9tX3BkZXZfaWQoaHcsIGopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NzYtXHRcdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01ODAtXHRcdFx0XHRcdFx0cHBkdV9lbmRfaW50ZXJydXB0c19tYWMxIC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTgxOlx0XHRcdFx0XHRcdGF0aDExa19od19nZXRfbWFjX2Zyb21fcGRldl9pZChodywgaik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4Mi1cdFx0XHRcdFx0aXJxX2dycC1cdTAwM2VpcnFzW251bV9pcnEmIzQzOyYjNDM7XSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4My1cdFx0XHRcdFx0XHRyeGRtYTJob3N0X21vbml0b3Jfc3RhdHVzX3JpbmdfbWFjMSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjU4NDpcdFx0XHRcdFx0XHRhdGgxMWtfaHdfZ2V0X21hY19mcm9tX3BkZXZfaWQoaHcsIGopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01ODUtXHRcdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01OTYtXHRcdFx0aXJxX3NldF9zdGF0dXNfZmxhZ3MoaXJxLCBJUlFfTk9BVVRPRU4gfCBJUlFfRElTQUJMRV9VTkxBWlkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1OTc6XHRcdFx0cmV0ID0gcmVxdWVzdF9pcnEoaXJxLCBhdGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTk4LVx0XHRcdFx0XHQgIElSUUZfVFJJR0dFUl9SSVNJTkcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MDAtXHRcdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2MDE6XHRcdFx0XHRhdGgxMWtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgcmVxdWVzdF9pcnEgZm9yICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MDItXHRcdFx0XHRcdCAgIGlycSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYxMDpzdGF0aWMgaW50IGF0aDExa19haGJfY29uZmlnX2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjE1LVx0aWYgKGFiLVx1MDAzZWh3X3BhcmFtcy5oeWJyaWRfYnVzX3R5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYxNjpcdFx0cmV0dXJuIGF0aDExa19wY2ljX2NvbmZpZ19pcnEoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuY2VfY291bnQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYyMDpcdFx0c3RydWN0IGF0aDExa19jZV9waXBlICpjZV9waXBlID0gXHUwMDI2YWItXHUwMDNlY2UuY2VfcGlwZVtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2MjI6XHRcdGlmIChhdGgxMWtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MjMtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYyNzpcdFx0dGFza2xldF9zZXR1cChcdTAwMjZjZV9waXBlLVx1MDAzZWludHJfdHEsIGF0aDExa19haGJfY2VfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYyOC1cdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUoYWItXHUwMDNlcGRldiwgaXJxX25hbWVbaXJxX2lkeF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2Mjk6XHRcdHJldCA9IHJlcXVlc3RfaXJxKGlycSwgYXRoMTFrX2FoYl9jZV9pbnRlcnJ1cHRfaGFuZGxlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjMwLVx0XHRcdFx0ICBJUlFGX1RSSUdHRVJfUklTSU5HLCBpcnFfbmFtZVtpcnFfaWR4XSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYzOC1cdC8qIENvbmZpZ3VyZSBleHRlcm5hbCBpbnRlcnJ1cHRzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYzOTpcdHJldCA9IGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02NDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02NDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjY0NDpzdGF0aWMgaW50IGF0aDExa19haGJfbWFwX3NlcnZpY2VfdG9fcGlwZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MTYgc2VydmljZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjQ1LVx0XHRcdFx0XHQgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Njg3OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9oaWZfc3VzcGVuZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02ODgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2ODk6XHRzdHJ1Y3QgYXRoMTFrX2FoYiAqYWJfYWhiID0gYXRoMTFrX2FoYl9wcml2KGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjkwLVx0dTMyIHdha2VfaXJxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzAwLVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3MDE6XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBlbmFibGUgd2FrZXVwIGlycSA6JWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcwMi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcxMi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzEzOlx0XHRhdGgxMWtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBzbXAycCBwb3dlciBzYXZlIGVudGVyIGNtZCA6JWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcxNC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzE3Olx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19BSEIsIFwmIzM0O2RldmljZSBzdXNwZW5kZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjcyMjpzdGF0aWMgaW50IGF0aDExa19haGJfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3MjQ6XHRzdHJ1Y3QgYXRoMTFrX2FoYiAqYWJfYWhiID0gYXRoMTFrX2FoYl9wcml2KGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzI1LVx0dTMyIHdha2VfaXJxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzM1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3MzY6XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBkaXNhYmxlIHdha2V1cCBpcnE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MzctXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NDktXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc1MDpcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgc21wMnAgcG93ZXIgc2F2ZSBlbnRlciBjbWQgOiVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NTEtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NTUtXHRpZiAocmV0ID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzU2Olx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7dGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHdvdyB3YWtldXAgY29tcGxldGlvblxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc1Ny1cdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2MDpcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcJiMzNDtkZXZpY2UgcmVzdW1lZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc2MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzY1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTFrX2hpZl9vcHMgYXRoMTFrX2FoYl9oaWZfb3BzX2lwcTgwNzQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2NjpcdC5zdGFydCA9IGF0aDExa19haGJfc3RhcnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2NzpcdC5zdG9wID0gYXRoMTFrX2FoYl9zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3Njg6XHQucmVhZDMyID0gYXRoMTFrX2FoYl9yZWFkMzIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2OTpcdC53cml0ZTMyID0gYXRoMTFrX2FoYl93cml0ZTMyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzAtXHQucmVhZCA9IE5VTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3MTpcdC5pcnFfZW5hYmxlID0gYXRoMTFrX2FoYl9leHRfaXJxX2VuYWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzcyOlx0LmlycV9kaXNhYmxlID0gYXRoMTFrX2FoYl9leHRfaXJxX2Rpc2FibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3MzpcdC5tYXBfc2VydmljZV90b19waXBlID0gYXRoMTFrX2FoYl9tYXBfc2VydmljZV90b19waXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NzQ6XHQucG93ZXJfZG93biA9IGF0aDExa19haGJfcG93ZXJfZG93bixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc1Olx0LnBvd2VyX3VwID0gYXRoMTFrX2FoYl9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzc2LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTFrX2hpZl9vcHMgYXRoMTFrX2FoYl9oaWZfb3BzX3djbjY3NTAgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3OTpcdC5zdGFydCA9IGF0aDExa19wY2ljX3N0YXJ0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODA6XHQuc3RvcCA9IGF0aDExa19wY2ljX3N0b3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4MTpcdC5yZWFkMzIgPSBhdGgxMWtfcGNpY19yZWFkMzIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4MjpcdC53cml0ZTMyID0gYXRoMTFrX3BjaWNfd3JpdGUzMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzgzLVx0LnJlYWQgPSBOVUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODQ6XHQuaXJxX2VuYWJsZSA9IGF0aDExa19wY2ljX2V4dF9pcnFfZW5hYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODU6XHQuaXJxX2Rpc2FibGUgPSBhdGgxMWtfcGNpY19leHRfaXJxX2Rpc2FibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4NjpcdC5nZXRfbXNpX2FkZHJlc3MgPSAgYXRoMTFrX3BjaWNfZ2V0X21zaV9hZGRyZXNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODc6XHQuZ2V0X3VzZXJfbXNpX3ZlY3RvciA9IGF0aDExa19wY2ljX2dldF91c2VyX21zaV9hc3NpZ25tZW50LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODg6XHQubWFwX3NlcnZpY2VfdG9fcGlwZSA9IGF0aDExa19wY2ljX21hcF9zZXJ2aWNlX3RvX3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4OTpcdC5wb3dlcl9kb3duID0gYXRoMTFrX2FoYl9wb3dlcl9kb3duLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3OTA6XHQucG93ZXJfdXAgPSBhdGgxMWtfYWhiX3Bvd2VyX3VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3OTE6XHQuc3VzcGVuZCA9IGF0aDExa19haGJfaGlmX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MjpcdC5yZXN1bWUgPSBhdGgxMWtfYWhiX2hpZl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MzpcdC5jZV9pcnFfZW5hYmxlID0gYXRoMTFrX3BjaV9lbmFibGVfY2VfaXJxc19leGNlcHRfd2FrZV9pcnEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5NDpcdC5jZV9pcnFfZGlzYWJsZSA9IGF0aDExa19wY2lfZGlzYWJsZV9jZV9pcnFzX2V4Y2VwdF93YWtlX2lycSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzk1LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzk3OnN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfZ2V0X3Jwcm9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5OTpcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MDAtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBhYi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MDQtXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LVx1MDAzZW9mX25vZGUsIFwmIzM0O3Fjb20scnByb2NcJiMzNDssIFx1MDAyNnJwcm9jX3BoYW5kbGUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjgwNTpcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBxNl9ycHJvYyBoYW5kbGVcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MDYtXHRcdHJldHVybiAtRU5PRU5UO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo4MTc6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX21zaV9yZXNvdXJjZXMoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTgyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODI3Olx0cmV0ID0gYXRoMTFrX3BjaWNfaW5pdF9tc2lfY29uZmlnKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODI4LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo4Mjk6XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBpbml0IG1zaSBjb25maWc6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MzAtXHRcdHJldHVybiByZXQ7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE4MzcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgU2ltdWxhdGlvbiBMYW5kc2NhcGUgZm9yIGF0aDExay9hdGgxMmsgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYGF0aDExa2AgZHJpdmVyLCBhbmQgSSBzZWUgaXQmIzM5O3MgZ290IG9wdGlvbnMgZm9yIGJvdGggQUhCIGFuZCBQQ0kgY29uZmlndXJhdGlvbnMsIHJpZ2h0PyBUaGF0IG1ha2VzIHNlbnNlLCBjb3ZlcmluZyB0aGUgZGlmZmVyZW50IGJ1cyBpbnRlcmZhY2VzLiBJIGFsc28gbm90aWNlIHRoaW5ncyBsaWtlIGBERUJVR0ZTYCBhbmQgdHJhY2luZyBzdXBwb3J0LCB3aGljaCBhcmUgcHJldHR5IHN0YW5kYXJkIGZvciBkZWJ1Z2dpbmcgYW5kIGluc3RydW1lbnRhdGlvbi4gTm93LCB3aGF0IEkmIzM5O20gcmVhbGx5IGN1cmlvdXMgYWJvdXQgaXM6IGRvZXMgdGhpcyBkcml2ZXIsIG9yIHRoZSBuZXdlciBgYXRoMTJrYCwgaGF2ZSBhbnkga2luZCBvZiBzaW11bGF0ZWQgaGFyZHdhcmUgZW52aXJvbm1lbnQ/IFNvbWV0aGluZyBsaWtlIGEgYGh3c2ltYCBzZXR1cCwgcGVyaGFwcz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGEgbWVjaGFuaXNtIGF2YWlsYWJsZSB0byBlbXVsYXRlIG9yIHNpbXVsYXRlIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIHdoaWNoIHdvdWxkIGJlIGludmFsdWFibGUgZm9yIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50LCBlc3BlY2lhbGx5IHdoZW4gYWN0dWFsIGhhcmR3YXJlIGlzbiYjMzk7dCByZWFkaWx5IGFjY2Vzc2libGUuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgaXMgc29tZXRoaW5nIGxpa2UgdGhhdCBhdmFpbGFibGUgZm9yIHRoZXNlIHBhcnRpY3VsYXIgZHJpdmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhdGgxMWsgYW5kIGF0aDEyayBEcml2ZXJzKioKCk9rYXksIHNvIGBtYWM4MDIxMV9od3NpbWAgaXMgdGhhdCBnZW5lcmljIG1hYzgwMjExIGRyaXZlciDigJMgcmlnaHQsIGdvdCBpdC4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhlc2UgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCBzaW5jZSB0aGV5IHNlZW0gdG8gZGVwZW5kIG9uIHBoeXNpY2FsIGhhcmR3YXJlIChQQ0kgb3IgQUhCKT8KClRoZSB1c3VhbCBhcHByb2FjaCBmb3IgUENJIGRldmljZXMgaW52b2x2ZXMgZWl0aGVyIGEgdmlydHVhbCBQQ0kgZGV2aWNlIG9yIGxldmVyYWdpbmcgc29tZXRoaW5nIGxpa2UgYHZoY2lgIGZvciBVU0Igb3IgYHZmaW9gIGZvciBQQ0kgd2l0aGluIFN5emthbGxlci4gU3l6a2FsbGVyIGhhcyB0aGUgYHN5el9wY2lfZGV2aWNlYCBjYWxsLCBidXQgdGhhdCAqcmVxdWlyZXMqIHRoZSBkcml2ZXIgdG8gYmluZCB0byBhIFBDSSBkZXZpY2UuIEFuZCwgSSB0aGluayBTeXprYWxsZXIgZG9lcyB1c2UgYHZoY2lgIGZvciBVU0IgaW5qZWN0aW9uLiBCdXQsIGNhbiBpdCBhbHNvIGVtdWxhdGUgUENJIGRldmljZXMsIG9yIGRvZXMgaXQgdXNlIGBzeXpfcGNpX2RldmljZWAgZm9yIHRoYXQ/IFdhaXQsIGRvZXMgU3l6a2FsbGVyICphY3R1YWxseSogc3VwcG9ydCBmdXp6aW5nIFBDSSBkcml2ZXJzPwoKWWVzLCBhZnRlciBhIHF1aWNrIHJlbWluZGVyLCBTeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgZnV6emluZyBQQ0kgZHJpdmVycywgZWl0aGVyIGRpcmVjdGx5IHRocm91Z2ggYHN5el9wY2lfZGV2aWNlYCBvciBzaW1pbGFyIG1lY2hhbmlzbXMsIG9yIHBvdGVudGlhbGx5IGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlLiBCdXQgaGVyZSYjMzk7cyB0aGUga2lja2VyOiB3aXRoIGNvbXBsZXggd2lyZWxlc3MgZHJpdmVycyBsaWtlIGBhdGgxMWtgLCByZWFjaGluZyBhbnkgbWVhbmluZ2Z1bCBjb2RlIGRlcHRoIHdpdGhvdXQgYSBmdWxsIGhhcmR3YXJlIGVtdWxhdG9yIGlzIGluY3JlZGlibHkgZGlmZmljdWx0LiBUaGVzZSBkcml2ZXJzIGFyZSBmaW5pY2t5IOKAkyB0aGV5JiMzOTtyZSBleHBlY3Rpbmcgc3BlY2lmaWMgZmlybXdhcmUgdG8gbG9hZCwgdmVyeSBzcGVjaWZpYyBETUEgcmluZ3MgdG8gYmUgc2V0IHVwIGluIGEgc3BlY2lmaWMgd2F5LCBhbmQgcHJlY2lzZSByZXNwb25zZXMgZnJvbSB0aGUgaGFyZHdhcmUuCgpTbywgdGhlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNoZWNrIGlmIGBhdGgxMWtgIG9yIGBhdGgxMmtgIGNhbiBldmVuIGluaXRpYWxpemUgd2l0aG91dCB0aGF0IGZpcm13YXJlLCBvciBpZiB0aGV5IGp1c3QgZmFpbCBlYXJseS4gVGhhdCB3b3VsZCBiZSB0aGUgZmlyc3QgaHVyZGxlIGluIHNlZWluZyBob3cgdXNlZnVsIHRoaXMgcGF0Y2ggd291bGQgYmUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYzoxMTpzdGF0aWMgaW50IGF0aDExa19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTItXHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYz0xNDc9aW50IGF0aDExa19md19wcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmM6MTUxOlx0cmV0ID0gYXRoMTFrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDExS19GV19BUEkyX0ZJTEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTE1Mi1cdGlmIChyZXQgPT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTg2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpZiB0aGlzIGBhdGgxMWtgIGRyaXZlciBuZWVkcyBmaXJtd2FyZSB0byBydW4sIGl0JiMzOTtzIGdvaW5nIHRvIGJlIGEgZGlzYXN0ZXIgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIGNvcnJlY3QgZmlybXdhcmUgbG9hZGVkIGFuZCB0aGUgaGFyZHdhcmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHBpdGZhbGwuIEJ1dCB3YWl0LCBpdCYjMzk7cyBub3QganVzdCB0aGUgZHJpdmVyIGl0c2VsZi4gVGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgbmV0L21hYzgwMjExL3R4LmNgIGFuZCBgaW5jbHVkZS9uZXQvbWFjODAyMTEuaGAuIFRoYXQmIzM5O3MgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIGV4dGVuZGluZyB0aGUgY29yZSBNQUM4MDIxMSBmdW5jdGlvbmFsaXR5LgoKU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGEgbmV3IGZ1bmN0aW9uLCBgaWVlZTgwMjExX3R4X3BlZWtgLCBoYXMgYmVlbiBhZGRlZCB0byBgbmV0L21hYzgwMjExL3R4LmNgIGFuZCBleHBvcnRlZC4gVGhpcyBtYWtlcyBpdCBhIHBhcnQgb2YgdGhlIGNvcmUgbWFjODAyMTEsIG1lYW5pbmcgaXQmIzM5O3MgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGZyb20gbXVsdGlwbGUgZHJpdmVycy4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBuZXcgZnVuY3Rpb24uIENhbiB0aGlzIGBpZWVlODAyMTFfdHhfcGVla2AgYWN0dWFsbHkgYmUgdHJpZ2dlcmVkLCBvciBpcyBpdCBpc29sYXRlZD8KCk9rYXksIGZyb20gdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBmcm9tIGBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWVgIGFuZCBgYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlYC4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGEgYml0LiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIHNob3VsZCBjaGVjayBpZiBhbnkgb3RoZXIgZHJpdmVycywgYmVzaWRlcyB0aG9zZSB0d28sIGFyZSB1dGlsaXppbmcgYGllZWU4MDIxMV90eF9wZWVrYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkgaGF2ZSBjb3ZlcmVkIGFsbCB0aGUgYmFzZXMgb2YgaG93IHRoZSBmdXp6aW5nIGlzIHdvcmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV90eF9wZWVrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9MTAwNjg9c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwMDkxOlx0XHRwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDA5Mi1cdFx0aWYgKCFwZWVrX3NrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MTEwMz1zdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MTEzMjpcdFx0cGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTMzLVx0XHRpZiAoIXBlZWtfc2tiKVxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc0Mj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzQ1LS8qKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzQ2OiAqIGllZWU4MDIxMV90eF9wZWVrIC0gcGVlayBhdCB0aGUgbmV4dCBwYWNrZXQgaW4gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzQ3LSAqXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYxLSAqL1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzYyOmNvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc2My1cdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSk7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MzgwOT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTM4NTktXG5uZXQvbWFjODAyMTEvdHguYzozODYwOmNvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbm5ldC9tYWM4MDIxMS90eC5jLTM4NjEtXHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzg5Ni19XG5uZXQvbWFjODAyMTEvdHguYzozODk3OkVYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV90eF9wZWVrKTtcbm5ldC9tYWM4MDIxMS90eC5jLTM4OTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjAwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBpZWVlODAyMTFfdHhfcGVla2AgaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KioKCk9rYXksIHNvIGl0IHNlZW1zIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBhdGgxMWtgIGFuZCBgYXRoMTJrYCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBJZiwgaHlwb3RoZXRpY2FsbHksIEkgY2FuJiMzOTt0IGdldCBgYXRoMTFrYCBvciBgYXRoMTJrYCBpbml0aWFsaXplZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdGhlbiBgaWVlZTgwMjExX3R4X3BlZWtgIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIHRoYXQgc2NlbmFyaW8uIFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZTogY2FuIEkgZ2V0IGVpdGhlciBvZiB0aG9zZSBkcml2ZXJzIHVwIGFuZCBydW5uaW5nIGluIFFFTVU/CgpNeSBleHBlcmllbmNlIHN1Z2dlc3RzIFBDSSBkcml2ZXJzLCBpbiBnZW5lcmFsLCBhcmUgdXN1YWxseSBwcm9iZWFibGUgaWYgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgZXhpc3RzLiBBbmQsIG9mIGNvdXJzZSwgdGhlcmUmIzM5O3MgYWx3YXlzIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGBzeXprYWxsZXJgJiMzOTtzIGBzeXpfcGNpX2RldmljZWAgY291bGQgdHJpZ2dlciB0aGF0IHByb2JlIGZ1bmN0aW9uLiBIb3dldmVyLCBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGV2ZW4gaWYgdGhlIGBhdGgxMWtgIHByb2JlICpkb2VzKiBnZXQgY2FsbGVkLCBpdCYjMzk7bGwgcHJvYmFibHkgZmFpbCBwcmV0dHkgZWFybHkgb24sIHNwZWNpZmljYWxseSB3aGVuIGl0IHRyaWVzIHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIG9yIHdoZW4gaXQmIzM5O3MgdHJ5aW5nIHRvIGxvYWQgdGhlIGZpcm13YXJlLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBzdHVtYmxpbmcgYmxvY2sgaW4gdmlydHVhbGl6YXRpb24uCgpUbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgbGlrZWx5IGZhaWx1cmUgcG9pbnRzLCBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgYXRoMTFrX3BjaV9wcm9iZWAgZnVuY3Rpb24gaXRzZWxmLiBUaGF0IHNlZW1zIGxpa2UgdGhlIG5leHQgbG9naWNhbCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfcGNpX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDA9c3RhdGljIGludCBhdGgxMWtfcGNpX3NldF9pcnFfYWZmaW5pdHlfaGludChzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzo5NDk6c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy05NTAtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTI5Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYXRoMTFrX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVx0LmlkX3RhYmxlID0gYXRoMTFrX3BjaV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTI5OTpcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMDAtXHQucmVtb3ZlID0gYXRoMTFrX3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDY4CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIGBhdGgxMWtfcGNpX3Byb2JlYC4gVGhpcyBpcyB3aGVyZSB0aGUgaW5pdGlhbCBzZXR1cCBhbmQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBQQ0ktYmFzZWQgUXVhbGNvbW0gQXRoZXJvcyBXaS1GaSBkcml2ZXIgaGFwcGVucywgc28gaXQmIzM5O3MgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgc28gSSBjYW4gcXVpY2tseSBhbmQgZWZmaWNpZW50bHkgZGV0ZXJtaW5lIGlmIGFueSBlcnJvcnMgb2NjdXIsIG9yIGlmIHRoZXJlIGlzIHRoZSBuZWVkIHRvIGFkanVzdCB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk0OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDk0OTpcdHN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiA5NTA6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4gOTUxOlx0e1xuIDk1MjpcdFx0c3RydWN0IGF0aDExa19iYXNlICphYjtcbiA5NTM6XHRcdHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2k7XG4gOTU0Olx0XHR1MzIgc29jX2h3X3ZlcnNpb25fbWFqb3IsIHNvY19od192ZXJzaW9uX21pbm9yO1xuIDk1NTpcdFx0aW50IHJldDtcbiA5NTY6XHRcdHUzMiBzdWJfdmVyc2lvbjtcbiA5NTc6XHRcbiA5NTg6XHRcdGFiID0gYXRoMTFrX2NvcmVfYWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqYWJfcGNpKSwgQVRIMTFLX0JVU19QQ0kpO1xuIDk1OTpcdFxuIDk2MDpcdFx0aWYgKCFhYikge1xuIDk2MTpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgYXRoMTFrIGJhc2VcXG5cJiMzNDspO1xuIDk2MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA5NjM6XHRcdH1cbiA5NjQ6XHRcbiA5NjU6XHRcdGFiLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIDk2NjpcdFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIGFiKTtcbiA5Njc6XHRcdGFiX3BjaSA9IGF0aDExa19wY2lfcHJpdihhYik7XG4gOTY4Olx0XHRhYl9wY2ktXHUwMDNlZGV2X2lkID0gcGNpX2Rldi1cdTAwM2VkZXZpY2U7XG4gOTY5Olx0XHRhYl9wY2ktXHUwMDNlYWIgPSBhYjtcbiA5NzA6XHRcdGFiX3BjaS1cdTAwM2VwZGV2ID0gcGRldjtcbiA5NzE6XHRcdGFiLVx1MDAzZWhpZi5vcHMgPSBcdTAwMjZhdGgxMWtfcGNpX2hpZl9vcHM7XG4gOTcyOlx0XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTFLX0ZJUk1XQVJFX01PREVfTk9STUFMO1xuIDk3MzpcdFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIGFiKTtcbiA5NzQ6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFiX3BjaS1cdTAwM2V3aW5kb3dfbG9jayk7XG4gOTc1Olx0XG4gOTc2Olx0XHQvKiBTZXQgZml4ZWRfbWVtX3JlZ2lvbiB0byB0cnVlIGZvciBwbGF0Zm9ybXMgc3VwcG9ydCByZXNlcnZlZCBtZW1vcnlcbiA5Nzc6XHRcdCAqIGZyb20gRFQuIElmIG1lbW9yeSBpcyByZXNlcnZlZCBmcm9tIERUIGZvciBGVywgYXRoMTFrIGRyaXZlciBuZWVkIG5vdFxuIDk3ODpcdFx0ICogYWxsb2NhdGUgbWVtb3J5LlxuIDk3OTpcdFx0ICovXG4gOTgwOlx0XHRpZiAob2ZfcHJvcGVydHlfcHJlc2VudChhYi1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7bWVtb3J5LXJlZ2lvblwmIzM0OykpXG4gOTgxOlx0XHRcdHNldF9iaXQoQVRIMTFLX0ZMQUdfRklYRURfTUVNX1JHTiwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKTtcbiA5ODI6XHRcbiA5ODM6XHRcdHJldCA9IGF0aDExa19wY2lfY2xhaW0oYWJfcGNpLCBwZGV2KTtcbiA5ODQ6XHRcdGlmIChyZXQpIHtcbiA5ODU6XHRcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGNsYWltIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG4gOTg2Olx0XHRcdGdvdG8gZXJyX2ZyZWVfY29yZTtcbiA5ODc6XHRcdH1cbiA5ODg6XHRcbiA5ODk6XHRcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQk9PVCwgXCYjMzQ7cGNpIHByb2JlICUwNHg6JTA0eCAlMDR4OiUwNHhcXG5cJiMzNDssXG4gOTkwOlx0XHRcdCAgIHBkZXYtXHUwMDNldmVuZG9yLCBwZGV2LVx1MDAzZWRldmljZSxcbiA5OTE6XHRcdFx0ICAgcGRldi1cdTAwM2VzdWJzeXN0ZW1fdmVuZG9yLCBwZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UpO1xuIDk5MjpcdFxuIDk5MzpcdFx0YWItXHUwMDNlaWQudmVuZG9yID0gcGRldi1cdTAwM2V2ZW5kb3I7XG4gOTk0Olx0XHRhYi1cdTAwM2VpZC5kZXZpY2UgPSBwZGV2LVx1MDAzZWRldmljZTtcbiA5OTU6XHRcdGFiLVx1MDAzZWlkLnN1YnN5c3RlbV92ZW5kb3IgPSBwZGV2LVx1MDAzZXN1YnN5c3RlbV92ZW5kb3I7XG4gOTk2Olx0XHRhYi1cdTAwM2VpZC5zdWJzeXN0ZW1fZGV2aWNlID0gcGRldi1cdTAwM2VzdWJzeXN0ZW1fZGV2aWNlO1xuIDk5NzpcdFxuIDk5ODpcdFx0c3dpdGNoIChwY2lfZGV2LVx1MDAzZWRldmljZSkge1xuIDk5OTpcdFx0Y2FzZSBRQ0E2MzkwX0RFVklDRV9JRDpcbjEwMDA6XHRcdFx0cmV0ID0gYXRoMTFrX3BjaWNfcmVnaXN0ZXJfcGNpX29wcyhhYiwgXHUwMDI2YXRoMTFrX3BjaV9vcHNfcWNhNjM5MCk7XG4xMDAxOlx0XHRcdGlmIChyZXQpIHtcbjEwMDI6XHRcdFx0XHRhdGgxMWtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gcmVnaXN0ZXIgUENJIG9wczogJWRcXG5cJiMzNDssIHJldCk7XG4xMDAzOlx0XHRcdFx0Z290byBlcnJfcGNpX2ZyZWVfcmVnaW9uO1xuMTAwNDpcdFx0XHR9XG4xMDA1Olx0XG4xMDA2Olx0XHRcdGF0aDExa19wY2lfcmVhZF9od192ZXJzaW9uKGFiLCBcdTAwMjZzb2NfaHdfdmVyc2lvbl9tYWpvcixcbjEwMDc6XHRcdFx0XHRcdFx0ICAgXHUwMDI2c29jX2h3X3ZlcnNpb25fbWlub3IpO1xuMTAwODpcdFx0XHRzd2l0Y2ggKHNvY19od192ZXJzaW9uX21ham9yKSB7XG4xMDA5Olx0XHRcdGNhc2UgMjpcbjEwMTA6XHRcdFx0XHRhYi1cdTAwM2Vod19yZXYgPSBBVEgxMUtfSFdfUUNBNjM5MF9IVzIwO1xuMTAxMTpcdFx0XHRcdGJyZWFrO1xuMTAxMjpcdFx0XHRkZWZhdWx0OlxuMTAxMzpcdFx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1Vuc3VwcG9ydGVkIFFDQTYzOTAgU09DIGhhcmR3YXJlIHZlcnNpb246ICVkICVkXFxuXCYjMzQ7LFxuMTAxNDpcdFx0XHRcdFx0c29jX2h3X3ZlcnNpb25fbWFqb3IsIHNvY19od192ZXJzaW9uX21pbm9yKTtcbjEwMTU6XHRcdFx0XHRyZXQgPSAtRU9QTk9UU1VQUDtcbjEwMTY6XHRcdFx0XHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XG4xMDE3Olx0XHRcdH1cbjEwMTg6XHRcbjEwMTk6XHRcdFx0YnJlYWs7XG4xMDIwOlx0XHRjYXNlIFFDTjkwNzRfREVWSUNFX0lEOlxuMTAyMTpcdFx0XHRyZXQgPSBhdGgxMWtfcGNpY19yZWdpc3Rlcl9wY2lfb3BzKGFiLCBcdTAwMjZhdGgxMWtfcGNpX29wc19xY245MDc0KTtcbjEwMjI6XHRcdFx0aWYgKHJldCkge1xuMTAyMzpcdFx0XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBQQ0kgb3BzOiAlZFxcblwmIzM0OywgcmV0KTtcbjEwMjQ6XHRcdFx0XHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XG4xMDI1Olx0XHRcdH1cbjEwMjY6XHRcdFx0YWItXHUwMDNlaHdfcmV2ID0gQVRIMTFLX0hXX1FDTjkwNzRfSFcxMDtcbjEwMjc6XHRcdFx0YnJlYWs7XG4xMDI4Olx0XHRjYXNlIFdDTjY4NTVfREVWSUNFX0lEOlxuMTAyOTpcdFx0XHRyZXQgPSBhdGgxMWtfcGNpY19yZWdpc3Rlcl9wY2lfb3BzKGFiLCBcdTAwMjZhdGgxMWtfcGNpX29wc19xY2E2MzkwKTtcbjEwMzA6XHRcdFx0aWYgKHJldCkge1xuMTAzMTpcdFx0XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBQQ0kgb3BzOiAlZFxcblwmIzM0OywgcmV0KTtcbjEwMzI6XHRcdFx0XHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XG4xMDMzOlx0XHRcdH1cbjEwMzQ6XHRcdFx0YWItXHUwMDNlaWQuYmRmX3NlYXJjaCA9IEFUSDExS19CREZfU0VBUkNIX0JVU19BTkRfQk9BUkQ7XG4xMDM1Olx0XHRcdGF0aDExa19wY2lfcmVhZF9od192ZXJzaW9uKGFiLCBcdTAwMjZzb2NfaHdfdmVyc2lvbl9tYWpvcixcbjEwMzY6XHRcdFx0XHRcdFx0ICAgXHUwMDI2c29jX2h3X3ZlcnNpb25fbWlub3IpO1xuMTAzNzpcdFx0XHRzd2l0Y2ggKHNvY19od192ZXJzaW9uX21ham9yKSB7XG4xMDM4Olx0XHRcdGNhc2UgMjpcbjEwMzk6XHRcdFx0XHRzd2l0Y2ggKHNvY19od192ZXJzaW9uX21pbm9yKSB7XG4xMDQwOlx0XHRcdFx0Y2FzZSAweDAwOlxuMTA0MTpcdFx0XHRcdGNhc2UgMHgwMTpcbjEwNDI6XHRcdFx0XHRcdGFiLVx1MDAzZWh3X3JldiA9IEFUSDExS19IV19XQ042ODU1X0hXMjA7XG4xMDQzOlx0XHRcdFx0XHRicmVhaztcbjEwNDQ6XHRcdFx0XHRjYXNlIDB4MTA6XG4xMDQ1Olx0XHRcdFx0Y2FzZSAweDExOlxuMTA0NjpcdFx0XHRcdFx0c3ViX3ZlcnNpb24gPSBhdGgxMWtfcGNpY19yZWFkMzIoYWIsIFRDU1JfU09DX0hXX1NVQl9WRVIpO1xuMTA0NzpcdFx0XHRcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19QQ0ksIFwmIzM0O3N1Yl92ZXJzaW9uIDB4JXhcXG5cJiMzNDssXG4xMDQ4Olx0XHRcdFx0XHRcdCAgIHN1Yl92ZXJzaW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVnVsbmVyYWJpbGl0eSBFeHBsb3JhdGlvbiBpbiBhdGgxMWsgRHJpdmVyKioKCk9rYXksIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGluIGBhdGgxMWtgIHJlbGllcyBvbiBgYXRoMTFrX3BjaV9yZWFkX2h3X3ZlcnNpb25gIGFuZCBgYXRoMTFrX3BjaWNfcmVhZDMyYCB0byByZWFkIHRoZSBoYXJkd2FyZSB2ZXJzaW9uLiBNeSBpbml0aWFsIGNvbmNlcm4gaXMgdGhhdCBpZiBhIGZ1enplciwgc3BlY2lmaWNhbGx5IG9uZSBsaWtlIGBzeXpfcGNpX2RldmljZWAsIGlzIG1hbmlwdWxhdGluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCBpdCBjYW4gZWZmZWN0aXZlbHkgc3Bvb2YgdGhlc2UgaGFyZHdhcmUgdmVyc2lvbiByZWFkcy4gVGhpcyBjb3VsZCBhbGxvdyBpdCB0byBieXBhc3MgdGhlIGludGVuZGVkIGNoZWNrcyBhbmQgcG90ZW50aWFsbHkgdHJpZ2dlciBzdWJzZXF1ZW50LCB1bmludGVuZGVkIGNvZGUgcGF0aHMuCgpUaGUga2V5IHF1ZXN0aW9uIHRoZW4gYmVjb21lczogY2FuIHRoZSBmdXp6ZXIgdXNlIHRoYXQgc3Bvb2ZlZCBpbmZvcm1hdGlvbiB0byBieXBhc3MgdGhlIHJlcXVpcmVtZW50IG9mIGZpcm13YXJlIHRvIGJlIGxvYWRlZD8gSSBuZWVkIHRvIGtub3cgaWYgdGhlIGBhdGgxMWtgIGRyaXZlciBoYXMgY2hlY2tzIGZvciBmaXJtd2FyZS4gSWYgaXQgZG9lcywgdGhlbiB0aGUgYWJpbGl0eSB0byBtYW5pcHVsYXRlIHRoZSBoYXJkd2FyZSB2ZXJzaW9uIG1heSBhbGxvdyB0aGUgZnV6emVyIHRvIGJ5cGFzcyBjaGVja3MgcmVsYXRlZCB0byBmaXJtd2FyZSBsb2FkaW5nLgoKSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIGBhdGgxMWtfY29yZV9pbml0YCwgdG8gY29uZmlybSBpZiBmaXJtd2FyZSBsb2FkaW5nIGlzIGluZGVlZCBlc3NlbnRpYWwgYW5kIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGhhcmR3YXJlIHZlcnNpb25zIGFyZSB1dGlsaXplZCBpbiB0aGF0IGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19jb3JlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTExMDg9c3RhdGljIGludCBhdGgxMWtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTk1Olx0cmV0ID0gYXRoMTFrX2NvcmVfaW5pdChhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExOTYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjY4ND1FWFBPUlRfU1lNQk9MKGF0aDExa19jb3JlX3BtX25vdGlmaWVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjY4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjI2ODY6aW50IGF0aDExa19jb3JlX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI2ODcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI3MTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjcxODpFWFBPUlRfU1lNQk9MKGF0aDExa19jb3JlX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjcxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaD0xMjcwPWludCBhdGgxMWtfY29yZV9wcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oOjEyNzE6aW50IGF0aDExa19jb3JlX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphdGgxMWspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtMTI3Mi12b2lkIGF0aDExa19jb3JlX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmF0aDExayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDk9c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTE0MDpcdHJldCA9IGF0aDExa19jb3JlX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMTQxLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODYyMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGF0aDExa19jb3JlX2luaXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvcmUgb2YgdGhpcyBkcml2ZXIgaW5pdGlhbGl6ZXMsIHdoYXQgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrcyBhcmUuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgc2V0IHVwLCB0aGUgaGFyZHdhcmUgcmVnaXN0ZXJzIGJlaW5nIGFjY2Vzc2VkLCBhbmQgYW55IGNydWNpYWwgZWFybHkgY2hlY2tzIG9yIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIOKAkyBpdCYjMzk7cyBvZnRlbiB0aGUgc2VxdWVuY2UgdGhhdCByZXZlYWxzIHRoZSBtb3N0IGltcG9ydGFudCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55dGhpbmcgcmVsYXRlZCB0byBwb3dlciBtYW5hZ2VtZW50IG9yIGNsb2NrIHNldHVwLCBhcyB0aG9zZSBhcmUgb2Z0ZW4gY3JpdGljYWwgZm9yIGEgbmV3IGRldmljZSBhbmQgY2FuIGFmZmVjdCBldmVyeXRoaW5nIHRoYXQgZm9sbG93cy4gSSBleHBlY3QgdGhlcmUgdG8gYmUgYSBsb3Qgb2YgaGFyZHdhcmUtc3BlY2lmaWMgZGV0YWlsLCBidXQgSSYjMzk7bGwgZm9jdXMgb24gdGhlIGhpZ2hlci1sZXZlbCBsb2dpYy4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgZHJpdmVyJiMzOTtzIGVudHJ5IHBvaW50IGFuZCBvdmVyYWxsIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2ODYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY4NjpcdGludCBhdGgxMWtfY29yZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4yNjg3Olx0e1xuMjY4ODpcdFx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcbjI2ODk6XHRcdGludCByZXQ7XG4yNjkwOlx0XG4yNjkxOlx0XHRkbWlfaWQgPSBkbWlfZmlyc3RfbWF0Y2goYXRoMTFrX3BtX3F1aXJrX3RhYmxlKTtcbjI2OTI6XHRcdGlmIChkbWlfaWQpXG4yNjkzOlx0XHRcdGFiLVx1MDAzZXBtX3BvbGljeSA9IChrZXJuZWxfdWxvbmdfdClkbWlfaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG4yNjk0Olx0XHRlbHNlXG4yNjk1Olx0XHRcdGFiLVx1MDAzZXBtX3BvbGljeSA9IEFUSDExS19QTV9ERUZBVUxUO1xuMjY5NjpcdFxuMjY5NzpcdFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19CT09ULCBcJiMzNDtwbSBwb2xpY3kgJXVcXG5cJiMzNDssIGFiLVx1MDAzZXBtX3BvbGljeSk7XG4yNjk4Olx0XG4yNjk5Olx0XHRyZXQgPSBhdGgxMWtfY29yZV9wbV9ub3RpZmllcl9yZWdpc3RlcihhYik7XG4yNzAwOlx0XHRpZiAocmV0KSB7XG4yNzAxOlx0XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBQTSBub3RpZmllcjogJWRcXG5cJiMzNDssIHJldCk7XG4yNzAyOlx0XHRcdHJldHVybiByZXQ7XG4yNzAzOlx0XHR9XG4yNzA0Olx0XG4yNzA1Olx0XHRyZXQgPSBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKGFiKTtcbjI3MDY6XHRcdGlmIChyZXQpIHtcbjI3MDc6XHRcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBzb2MgY29yZTogJWRcXG5cJiMzNDssIHJldCk7XG4yNzA4Olx0XHRcdGdvdG8gZXJyX3VucmVnaXN0ZXJfcG1fbm90aWZpZXI7XG4yNzA5Olx0XHR9XG4yNzEwOlx0XG4yNzExOlx0XHRyZXR1cm4gMDtcbjI3MTI6XHRcbjI3MTM6XHRlcnJfdW5yZWdpc3Rlcl9wbV9ub3RpZmllcjpcbjI3MTQ6XHRcdGF0aDExa19jb3JlX3BtX25vdGlmaWVyX3VucmVnaXN0ZXIoYWIpO1xuMjcxNTpcdFxuMjcxNjpcdFx0cmV0dXJuIHJldDtcbjI3MTc6XHR9XG4yNzE4Olx0RVhQT1JUX1NZTUJPTChhdGgxMWtfY29yZV9pbml0KTtcbjI3MTk6XHRcbjI3MjA6XHR2b2lkIGF0aDExa19jb3JlX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuMjcyMTpcdHtcbjI3MjI6XHRcdG11dGV4X2xvY2soXHUwMDI2YWItXHUwMDNlY29yZV9sb2NrKTtcbjI3MjM6XHRcbjI3MjQ6XHRcdGF0aDExa19jb3JlX3BkZXZfZGVzdHJveShhYik7XG4yNzI1Olx0XHRhdGgxMWtfY29yZV9zdG9wKGFiKTtcbjI3MjY6XHRcbjI3Mjc6XHRcdG11dGV4X3VubG9jayhcdTAwMjZhYi1cdTAwM2Vjb3JlX2xvY2spO1xuMjcyODpcdFxuMjcyOTpcdFx0YXRoMTFrX2hpZl9wb3dlcl9kb3duKGFiLCBmYWxzZSk7XG4yNzMwOlx0XHRhdGgxMWtfbWFjX2Rlc3Ryb3koYWIpO1xuMjczMTpcdFx0YXRoMTFrX2NvcmVfc29jX2Rlc3Ryb3koYWIpO1xuMjczMjpcdFx0YXRoMTFrX2NvcmVfcG1fbm90aWZpZXJfdW5yZWdpc3RlcihhYik7XG4yNzMzOlx0fVxuMjczNDpcdEVYUE9SVF9TWU1CT0woYXRoMTFrX2NvcmVfZGVpbml0KTtcbjI3MzU6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk2MzMKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gYXRoMTFrX2NvcmVfc29jX2NyZWF0ZSoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgYGF0aDExa19jb3JlX3NvY19jcmVhdGVgIGlzIG1vcmUgaW52b2x2ZWQgdGhhbiBqdXN0IGEgc2ltcGxlIGluc3RhbnRpYXRpb24sIGl0IGFwcGVhcnMgdG8gaGFuZGxlIHNpZ25pZmljYW50IGluaXRpYWxpemF0aW9uIHN0ZXBzLiBHaXZlbiBpdHMgbmFtaW5nIGNvbnZlbnRpb24sIHRoZSAmIzM0O3NvYyYjMzQ7IHBhcnQgbGlrZWx5IHJlZmVycyB0byBTeXN0ZW0tb24tQ2hpcCwgd2hpY2ggbWVhbnMgaXQgcHJvYmFibHkgZGVhbHMgd2l0aCBjb25maWd1cmluZyBoYXJkd2FyZSByZXNvdXJjZXMgYW5kIHNldHRpbmcgdXAgdGhlIGNvcmUgb3BlcmF0aW5nIGVudmlyb25tZW50IGZvciB0aGUgd2lyZWxlc3MgY2hpcCBvbiB0aGUgYm9hcmQuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIGZ1bmN0aW9uLCBzaW5jZSBpdCBpcyBhbiBpZGVhbCBwb2ludCB0byBmb2N1cyBvbiB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UuIExldCYjMzk7cyBzZWUgZXhhY3RseSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGhpbi4gSXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0IGlzIGdvaW5nIHRvIGJlIGtleSB0byBhbnkgZGVlcGVyIGFuYWx5c2lzIG9mIHRoZSBhdGgxMWsgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfY29yZV9zb2NfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MTk3Mz1zdGF0aWMgdm9pZCBhdGgxMWtfY29yZV9zdG9wKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMTk4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjE5ODU6c3RhdGljIGludCBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0xOTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yNjg2PWludCBhdGgxMWtfY29yZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjcwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjI3MDU6XHRyZXQgPSBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI3MDYtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTczCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYDoKCioqQW5hbHl6aW5nIGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGRpZ2dpbmcgaW50byBgYXRoMTFrX2NvcmVfc29jX2NyZWF0ZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKiBhdCBhIGhpZ2ggbGV2ZWwuIEZyb20gdGhlIG5hbWUsIGl0JiMzOTtzIGNsZWFyIGl0JiMzOTtzIGFib3V0IHRoZSBjcmVhdGlvbiBvZiBzb21ldGhpbmcgY29yZSB0byB0aGUgU09DIChTeXN0ZW0tb24tYS1DaGlwKSBpbnRlcmFjdGlvbiB3aXRoaW4gdGhlIGF0aDExayBkcml2ZXIuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGlzIGludm9sdmVzIGluaXRpYWxpemluZyBkYXRhIHN0cnVjdHVyZXMsIHByb2JhYmx5IGFsbG9jYXRpbmcgbWVtb3J5LCBhbmQgc2V0dGluZyB1cCB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyBuZWVkZWQgYmV0d2VlbiB0aGUgaG9zdCAobGlrZWx5IExpbnV4KSBhbmQgdGhlIGF0aDExayBoYXJkd2FyZS4KCkkgc3VzcGVjdCB0aGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGluIGJyaW5naW5nIHVwIHRoZSB3aXJlbGVzcyBpbnRlcmZhY2UuIEl0JiMzOTtzIGxpa2VseSBzZXR0aW5nIHVwIHRoZSBpbml0aWFsIHN0YXRlIGZvciBwb3dlciBtYW5hZ2VtZW50LCBjbG9jayBjb250cm9sLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBtYXliZSBldmVuIGZpcm13YXJlIGxvYWRpbmcgb3IgdHJpZ2dlcmluZy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIGFyZ3VtZW50cyBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIHNlZSB3aGF0IGRhdGEgaXQgdGFrZXMgYXMgaW5wdXQgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLiBCYXNlZCBvbiB0aGF0IGluZm9ybWF0aW9uLCBJJiMzOTtsbCBiZSBhYmxlIHRvIGNvbmZpcm0gb3IgYWRqdXN0IG15IGluaXRpYWwgdGhvdWdodHMuIEkmIzM5O20gYWxzbyByZWFkeSB0byBhbmFseXplIHRoZSByZXR1cm4gdmFsdWUgdG8gYXNzZXNzIGhvdyBpdCByZXBvcnRzIGFueSBlcnJvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE5ODU6XHRzdGF0aWMgaW50IGF0aDExa19jb3JlX3NvY19jcmVhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcbjE5ODY6XHR7XG4xOTg3Olx0XHRpbnQgcmV0O1xuMTk4ODpcdFxuMTk4OTpcdFx0aWYgKGF0aDExa19mdG1fbW9kZSkge1xuMTk5MDpcdFx0XHRhYi1cdTAwM2Vmd19tb2RlID0gQVRIMTFLX0ZJUk1XQVJFX01PREVfRlRNO1xuMTk5MTpcdFx0XHRhdGgxMWtfaW5mbyhhYiwgXCYjMzQ7Qm9vdGluZyBpbiBmYWN0b3J5IHRlc3QgbW9kZVxcblwmIzM0Oyk7XG4xOTkyOlx0XHR9XG4xOTkzOlx0XG4xOTk0Olx0XHRyZXQgPSBhdGgxMWtfcW1pX2luaXRfc2VydmljZShhYik7XG4xOTk1Olx0XHRpZiAocmV0KSB7XG4xOTk2Olx0XHRcdGF0aDExa19lcnIoYWIsIFwmIzM0O2ZhaWxlZCB0byBpbml0aWFsaXplIHFtaSA6JWRcXG5cJiMzNDssIHJldCk7XG4xOTk3Olx0XHRcdHJldHVybiByZXQ7XG4xOTk4Olx0XHR9XG4xOTk5Olx0XG4yMDAwOlx0XHRyZXQgPSBhdGgxMWtfZGVidWdmc19zb2NfY3JlYXRlKGFiKTtcbjIwMDE6XHRcdGlmIChyZXQpIHtcbjIwMDI6XHRcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBhdGgxMWsgZGVidWdmc1xcblwmIzM0Oyk7XG4yMDAzOlx0XHRcdGdvdG8gZXJyX3FtaV9kZWluaXQ7XG4yMDA0Olx0XHR9XG4yMDA1Olx0XG4yMDA2Olx0XHRyZXQgPSBhdGgxMWtfaGlmX3Bvd2VyX3VwKGFiKTtcbjIwMDc6XHRcdGlmIChyZXQpIHtcbjIwMDg6XHRcdFx0YXRoMTFrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBvd2VyIHVwIDolZFxcblwmIzM0OywgcmV0KTtcbjIwMDk6XHRcdFx0Z290byBlcnJfZGVidWdmc19yZWc7XG4yMDEwOlx0XHR9XG4yMDExOlx0XG4yMDEyOlx0XHRyZXR1cm4gMDtcbjIwMTM6XHRcbjIwMTQ6XHRlcnJfZGVidWdmc19yZWc6XG4yMDE1Olx0XHRhdGgxMWtfZGVidWdmc19zb2NfZGVzdHJveShhYik7XG4yMDE2Olx0ZXJyX3FtaV9kZWluaXQ6XG4yMDE3Olx0XHRhdGgxMWtfcW1pX2RlaW5pdF9zZXJ2aWNlKGFiKTtcbjIwMTg6XHRcdHJldHVybiByZXQ7XG4yMDE5Olx0fVxuMjAyMDpcdFxuMjAyMTpcdHN0YXRpYyB2b2lkIGF0aDExa19jb3JlX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4yMDIyOlx0e1xuMjAyMzpcdFx0YXRoMTFrX2RlYnVnZnNfc29jX2Rlc3Ryb3koYWIpO1xuMjAyNDpcdFx0YXRoMTFrX2RwX2ZyZWUoYWIpO1xuMjAyNTpcdFx0YXRoMTFrX3JlZ19mcmVlKGFiKTtcbjIwMjY6XHRcdGF0aDExa19xbWlfZGVpbml0X3NlcnZpY2UoYWIpO1xuMjAyNzpcdH1cbjIwMjg6XHRcbjIwMjk6XHRzdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4yMDMwOlx0e1xuMjAzMTpcdFx0aW50IHJldDtcbjIwMzI6XHRcbjIwMzM6XHRcdHJldCA9IGF0aDExa19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKGFiKTtcbjIwMzQ6XHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNzgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgYXRoMTFrIERyaXZlciBTdGFydHVwKioKCk9rYXksIHNvIGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgaGVyZS4gSSBzZWUgaXQgY2FsbHMgYGF0aDExa19xbWlfaW5pdF9zZXJ2aWNlYCBhbmQgYGF0aDExa19oaWZfcG93ZXJfdXBgLiBNYWtlcyBzZW5zZSwgUU1JIGluaXRpYWxpemF0aW9uIGFuZCBnZXR0aW5nIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UgdXAgYW5kIHJ1bm5pbmcuIE5vdywgYGF0aDExa19oaWZfcG93ZXJfdXBgIGxpa2VseSBoYW5kbGVzIHRoZSBsb3ctbGV2ZWwgc3R1ZmYsIGFuZCB5ZXAsIGl0IGNhbGxzIGBhdGgxMWtfcGNpX3Bvd2VyX3VwYCwgaW5kaWNhdGluZyB0aGlzIGlzIGEgUENJLXNwZWNpZmljIGZ1bmN0aW9uIGZvciBwb3dlciBtYW5hZ2VtZW50LCB3aGljaCBzZWVtcyBsb2dpY2FsIGdpdmVuIHRoZSBjb250ZXh0LgoKQnV0LCBoYW5nIG9uIGEgc2Vjb25kLi4uIHdoZXJlIGRvZXMgdGhlIG1hYzgwMjExIGRldmljZSByZWdpc3RyYXRpb24gaGFwcGVuPyBJIGRvbiYjMzk7dCBzZWUgaXQgZXhwbGljaXRseSBjYWxsZWQgb3V0IGhlcmUgaW4gdGhlIHBvd2VyLXVwIHNlcXVlbmNlLiBJdCBtdXN0IGhhcHBlbiAqYWZ0ZXIqIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQsIHRoYXQgd291bGQgYmUgbG9naWNhbC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gTGV0IG1lIGRvIGEgcXVpY2sgc2VhcmNoIGFuZCBmaW5kIHdoZXJlIGBhdGgxMWtfbWFjX3JlZ2lzdGVyYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHByb3ZpZGUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgdGhlIHRpbWluZyBvZiB0aGUgbWFjODAyMTEgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX21hY19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIwMjk9c3RhdGljIGludCBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyMDQ1Olx0cmV0ID0gYXRoMTFrX21hY19yZWdpc3RlcihhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDQ2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9MTA0ODI9dm9pZCBhdGgxMWtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNDk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDUwMDpzdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA1MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwNzUxOmludCBhdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNzUyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDc4ODpcdFx0cmV0ID0gX19hdGgxMWtfbWFjX3JlZ2lzdGVyKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3ODktXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaD0xNDA9dm9pZCBhdGgxMWtfbWFjX3VucmVnaXN0ZXIoc3RydWN0IGF0aDExa19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oOjE0MTppbnQgYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmgtMTQyLWludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjMwMgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJbml0aWFsaXphdGlvbiBGbG93IG9mIGF0aDExayoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYXRoMTFrIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi4gVGhlIGNvcmUgb2YgdGhpcywgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBpcyB0aGlzIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgZnVuY3Rpb24uIEkga25vdyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIHBoeXNpY2FsIGRldmljZSwgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoYXJkd2FyZS4gQW5kIGl0LCBpbiB0dXJuLCBjYWxscyBgYXRoMTFrX21hY19yZWdpc3RlcmAuIFNvLCB0aGUgcmVnaXN0cmF0aW9uIHdpdGggdGhlIE1BQyBsYXllciBpcyBkZXBlbmRlbnQgb24gdGhlIHBoeXNpY2FsIGRldmljZSBiZWluZyBjcmVhdGVkLCB3aGljaCBtYWtlcyBsb2dpY2FsIHNlbnNlLgoKTm93LCBteSBrZXkgcXVlc3Rpb24gaXM6IHdoZXJlIGlzIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgYWN0dWFsbHkgY2FsbGVkIGZyb20/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgKnRvKiB0aGF0IGZ1bmN0aW9uIGlzIGNyaXRpY2FsIHRvIGZpZ3VyaW5nIG91dCB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIHRvIGZpbmQgaXRzIHBhcmVudCBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGUgd2hvbGUgcHJvY2Vzcy4gSXMgaXQgY2FsbGVkIGR1cmluZyBwcm9iZSwgb3IgaXMgdGhlcmUgYW5vdGhlciBpbml0aWFsaXphdGlvbiBwYXRoPyBLbm93aW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIHRyaWdnZXJpbmcgZXZlbnQgaXMgYW5kIHRoZSBkZXBlbmRlbmNpZXMgaW52b2x2ZWQuIEkgbmVlZCB0byBmaW5kIHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBhbmQgZGV2aWNlIGludGVyYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfY29yZV9wZGV2X2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIwMjE9c3RhdGljIHZvaWQgYXRoMTFrX2NvcmVfc29jX2Rlc3Ryb3koc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjAyOTpzdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMjYxPWludCBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHkoc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMzA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjMwNzpcdHJldCA9IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIzMDgtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTU1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgRGVwZW5kZW5jeSBhbmQgRnV6emluZyBTdHJhdGVnaWVzKioKCk9rYXksIHNvIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgaXMgdHJpZ2dlcmVkIGJ5IGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoZSBtYWM4MDIxMSBkZXZpY2UgcmVnaXN0cmF0aW9uICpkZXBlbmRzKiBvbiB0aGUgUU1JIGZpcm13YXJlIGJlaW5nIHJlYWR5LiBSaWdodC4gUU1JLCBRdWFsY29tbSBNZXNzYWdlIEludGVyZmFjZSwgdGFsa2luZyB0byB0aGUgZGV2aWNlIGZpcm13YXJlLiBJZiB0aGF0IGZpcm13YXJlIGlzbiYjMzk7dCB1cCBhbmQgcnVubmluZywgYGF0aDExa19jb3JlX3FtaV9maXJtd2FyZV9yZWFkeWAgd29uJiMzOTt0IGV2ZW4gaGFwcGVuLgoKU28sIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBhIGZ1enplciAqc2ltdWxhdGUqIHRoYXQgUU1JIGZpcm13YXJlIHJlYWR5IHN0YXRlPyBTeXprYWxsZXIsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LCBkb2VzbiYjMzk7dCBoYXZlIGEgUU1JIGVtdWxhdG9yIHNwZWNpZmljYWxseSBmb3IgYXRoMTFrLiBJIGtub3cgaXQgY2FuIGZ1enogUENJIGRldmljZXMsIGZha2luZyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPLiBCdXQgZmFraW5nICp0aGUgZW50aXJlKiBRTUkgcHJvdG9jb2wgYW5kIHRoZSB3aG9sZSBmaXJtd2FyZSBib290IHByb2Nlc3M/IEhpZ2hseSBpbXByb2JhYmxlIHdpdGgganVzdCByYW5kb20gbXV0YXRpb24uIFRoYXQmIzM5O3MgYSBodWdlIGFzay4KCldhaXQuIERpZG4mIzM5O3QgU3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfZGV2aWNlYD8gUmlnaHQsIEkgcmVtZW1iZXIuIEJ1dCBpdCBvZnRlbiBmYWxscyBzaG9ydCBvbiBjb21wbGV4IGRldmljZXMgdGhhdCByZXF1aXJlIGZpcm13YXJlLCB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mICpzcGVjaWZpYyogZW11bGF0b3IuCgpIYW5nIG9u4oCmIHdoYXQgYWJvdXQgYG1hYzgwMjExX2h3c2ltYD8gQ291bGQgdGhhdCBiZSBhbiBhdmVudWU/IEkgaGF2ZSBhIHBhdGNoIGhlcmUgdGhhdCBtb2RpZmllcyBgbmV0L21hYzgwMjExL3R4LmNgIGFuZCBgaW5jbHVkZS9uZXQvbWFjODAyMTEuaGAuIEFoYSEgSXQgYWRkcyBgaWVlZTgwMjExX3R4X3BlZWtgIHRvIGBtYWM4MDIxMWAuIE5vdywgY2FuIGBpZWVlODAyMTFfdHhfcGVla2AgYmUgcmVhY2hlZCBmcm9tIGBtYWM4MDIxMV9od3NpbWA/CgpOb3BlLCBpdCBsb29rcyBsaWtlIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgb25seSBjYWxsZWQgYnkgdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzLiBJdCYjMzk7cyBkcml2ZXIgc3BlY2lmaWMuCgpPa2F5LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgYGllZWU4MDIxMV90eF9wZWVrYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUgYmFzZS4gR290dGEgYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3R4X3BlZWsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDA2OD1zdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDA5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTAwOTE6XHRcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwMDkyLVx0XHRpZiAoIXBlZWtfc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz0xMTAzPXN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoxMTMyOlx0XHRwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExMzMtXHRcdGlmICghcGVla19za2IpXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03NzQyPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NDUtLyoqXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc3NDY6ICogaWVlZTgwMjExX3R4X3BlZWsgLSBwZWVrIGF0IHRoZSBuZXh0IHBhY2tldCBpbiBhIHNvZnR3YXJlIHR4IHF1ZXVlXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NDctICpcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NjEtICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc3NjI6Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9wZWVrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYzLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zODA5PXN0YXRpYyBib29sIGllZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzg1OS1cbm5ldC9tYWM4MDIxMS90eC5jOjM4NjA6Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9wZWVrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxubmV0L21hYzgwMjExL3R4LmMtMzg2MS1cdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zODk2LX1cbm5ldC9tYWM4MDIxMS90eC5jOjM4OTc6RVhQT1JUX1NZTUJPTF9HUEwoaWVlZTgwMjExX3R4X3BlZWspO1xubmV0L21hYzgwMjExL3R4LmMtMzg5OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ2NTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgVGhpcyBDb2RlKioKCk9rYXksIHNvIHRoaXMgY29kZSBzbmlwcGV0IGlzIG9ubHkgY2FsbGVkIGJ5IGBhdGgxMWtgIGFuZCBgYXRoMTJrYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpZiB0aGVzZSBkcml2ZXJzIGNhbiYjMzk7dCBpbml0aWFsaXplIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGVuIHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSwgcmlnaHQ/IEJ1dCBob2xkIG9uLCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcy4gSXMgdGhlcmUgYW55IHdheSBgYXRoMTFrYCBvciBgYXRoMTJrYCBjb3VsZCBiZSBmdXp6ZWQgaW5kaXJlY3RseT8KCkZvciBpbnN0YW5jZSwgd2hhdCBhYm91dCBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gPyBUaGF0IHNpbXVsYXRlcyBhIG1hYzgwMjExIGRldmljZSwgYnV0IGl0ICpkb2VzbiYjMzk7dCogdXNlIGBhdGgxMWtgIG9yIGBhdGgxMmtgLiBUaGlzIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyICp3aXRoaW4qIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBhbmQgY2hhbmdlcyBpdCB0byB1c2UgYGllZWU4MDIxMV90eF9wZWVrYC4gU2luY2UgdGhvc2UgZHJpdmVycyBkZXBlbmQgb24gYWN0dWFsIGhhcmR3YXJlIGFuZCBzcGVjaWZpYyBmaXJtd2FyZSB0byBldmVuIHJlYWNoIHRoZSBwb2ludCB3aGVyZSB0aGV5IHJlZ2lzdGVyIHdpdGggbWFjODAyMTEg4oCTIGFuZCAqdGhlbiogdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIHdvdWxkIGV2ZW4gYmUgY2FsbGVkIOKAkyB0aGlzIHNlZW1zIHByZXR0eSB1bmxpa2VseSB0byB0cmlnZ2VyIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFIHVubGVzcyB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgaGFyZHdhcmUgcGFzc3Rocm91Z2guCgpCdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIHRoaW5rIG91dHNpZGUgdGhlIGJveC4gQ291bGQgc3l6a2FsbGVyIGZpbmQgYSB3YXkgdG8gaW5qZWN0IG1hYzgwMjExIG9wZXJhdGlvbnMgZGlyZWN0bHk/IE5vLCB0aGF0JiMzOTtzIG5vdCBob3cgaXQgd29ya3MuIFN5emthbGxlciBwcmltYXJpbHkgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCB0aHJvdWdoIHN5c2NhbGxzIOKAkyBuZXRsaW5rLCBpb2N0bCwgc29ja2V0cywgZXRjLiDigJMgb3IgdGhyb3VnaCB2aXJ0dWFsIGRldmljZXMgbGlrZSB0dW4vdGFwLCB2aGNpLCBhbmQgc3l6X3BjaV9kZXZpY2UuIEl0IGRvZXNuJiMzOTt0IGFsbG93IGZvciB0aGUgaW5qZWN0aW9uIG9mIGFyYml0cmFyeSBmdW5jdGlvbiBwb2ludGVycy4KClNvLCBpZiB0aGUgZHJpdmVyIGNhbiYjMzk7dCByZWdpc3RlciBpdHMgbWFjODAyMTEgZGV2aWNlLCB0aGUgYHdha2VfdHhfcXVldWVgIGhhbmRsZXIgd2lsbCAqbmV2ZXIqIGdldCBjYWxsZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgZWl0aGVyIGBhdGgxMWtgIG9yIGBhdGgxMmtgIGhhcyBzb21lIGtpbmQgb2YgdGVzdCBtb2RlIG9yIHNpbXVsYXRpb24gbW9kZS4gVGhhdCB3b3VsZCByZWFsbHkgY2hhbmdlIHRoaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdG1vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlPTI0PWF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjU6YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTI2LWF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaD05MjQ9c3RydWN0IGF0aDExa19iYXNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC0xMDg3LVx0XHR1OCAqZXZlbnRkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmg6MTA4ODpcdH0gdGVzdG1vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC0xMDg5LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWcuaD0zND1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKmF0aDExa19kYmdfc3RyKGVudW0gYXRoMTFrX2RlYnVnX21hc2sgbWFzaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnLmgtNTctXHRjYXNlIEFUSDExS19EQkdfVEVTVE1PREU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnLmg6NTg6XHRcdHJldHVybiBcJiMzNDt0ZXN0bW9kZVwmIzM0OztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWcuaC01OS1cdGNhc2UgQVRIMTFLX0RCR19IQUw6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0yMS0jaW5jbHVkZSBcJiMzNDtkcF9yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjIyOiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMjMtI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NzojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtOC0jaW5jbHVkZSBcdTAwM2NuZXQvbmV0bGluay5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTEyLSNpbmNsdWRlIFwmIzM0O2NvcmUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjEzOiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rtb2RlX2kuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYz00Nz1zdGF0aWMgdm9pZCBhdGgxMWtfdG1fd21pX2V2ZW50X3Vuc2VnbWVudGVkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBjbWRfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTU5LVx0aWYgKCFhcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjYwOlx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NjY6XHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjctXHRcdFx0XHRcdFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy03MS1cdFx0YXRoMTFrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NzI6XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBhbGxvY2F0ZSBza2IgZm9yIHVuc2VnbWVudGVkIHRlc3Rtb2RlIHdtaSBldmVudFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNzMtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy03OC1cdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVx1MDAzZWxlbiwgc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6Nzk6XHRcdGF0aDExa193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTgwLVx0XHRrZnJlZV9za2Iobmxfc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6ODQ6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTg1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtODktXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjkwOlx0YXRoMTFrX3dhcm4oYWIsIFwmIzM0O0ZhaWxlZCB0byBzZW5kIHRlc3Rtb2RlIGV2ZW50IHRvIGhpZ2hlciBsYXllcnNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTkxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9OTY9c3RhdGljIGludCBhdGgxMWtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMTUtXHRpZiAocGRldl9pZCBcdTAwM2U9IGFiLVx1MDAzZW51bV9yYWRpb3MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMTY6XHRcdGF0aDExa193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2IGlkOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMTctXHRcdFx0ICAgIHBkZXZfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMjItXHRpZiAoIWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTIzOlx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGFic2VuY2Ugb2YgcGRldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTI0LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTM2LVx0aWYgKGN1cnJlbnRfc2VxID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMzc6XHRcdGFiLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTM4Olx0XHRhYi1cdTAwM2V0ZXN0bW9kZS5kYXRhX3BvcyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTM5LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNDE6XHRkYXRhX3BvcyA9IGFiLVx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE1MDpcdG1lbWNweShcdTAwMjZhYi1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbZGF0YV9wb3NdLCBidWZfcG9zLCBkYXRhbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNTEtXHRkYXRhX3BvcyAmIzQzOz0gZGF0YWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTUzOlx0aWYgKCYjNDM7JiM0MzthYi1cdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gdG90YWxfc2VnbWVudHMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNTQ6XHRcdGFiLVx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zID0gZGF0YV9wb3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTU1LVx0XHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX1RFU1RNT0RFLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNjMtXHRcdCAgICBkYXRhX3BvcywgZnRtX21zZy1cdTAwM2VzZWdfaGRyLmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTY0Olx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE2NS1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE2OS1cdFx0YXRoMTFrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTcwOlx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciBzZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNzEtXHRcdHJldCA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE3OC1cdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgZGF0YV9wb3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTc5Olx0XHQgICAgXHUwMDI2YWItXHUwMDNldGVzdG1vZGUuZXZlbnRkYXRhWzBdKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE4MDpcdFx0YXRoMTFrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBwb3B1bGF0ZSBzZWdtZW50ZWQgdGVzdG1vZGUgZXZlbnRcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4MS1cdFx0a2ZyZWVfc2tiKG5sX3NrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxODY6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9MjMxPXN0YXRpYyBpbnQgYXRoMTFrX3RtX2NtZF9nZXRfdmVyc2lvbihzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI0MTpcdHNrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX3JlcGx5X3NrYihhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yNDItXHRcdFx0XHRcdFx0bmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI2MDpcdHJldHVybiBjZmc4MDIxMV90ZXN0bW9kZV9yZXBseShza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTI2MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI2MzpzdGF0aWMgaW50IGF0aDExa190bV9jbWRfdGVzdG1vZGVfc3RhcnQoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI4MDpcdGFyLVx1MDAzZWFiLVx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IGt6YWxsb2MoQVRIX0ZUTV9FVkVOVF9NQVhfQlVGX0xFTkdUSCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yODEtXHRcdFx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MjgyOlx0aWYgKCFhci1cdTAwM2VhYi1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yODMtXHRcdHJldCA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jPTMwMD1zdGF0aWMgaW50IGF0aDExa190bV9jbWRfd21pKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0zMjUtXHRpZiAoIWJ1Zl9sZW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzozMjY6XHRcdGF0aDExa193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtObyBkYXRhIHByZXNlbnQgaW4gdGVzdG1vZGUgd21pIGNvbW1hbmRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTMyNy1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzc3LVx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6Mzc4Olx0XHRhdGgxMWtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7ZmFpbGVkIHRvIHRyYW5zbWl0IHdtaSBjb21tYW5kICh0ZXN0bW9kZSk6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTM3OS1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9NDc2PWludCBhdGgxMWtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy00OTYtXHRjYXNlIEFUSF9UTV9DTURfVEVTVE1PREVfU1RBUlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NDk3Olx0XHRyZXR1cm4gYXRoMTFrX3RtX2NtZF90ZXN0bW9kZV9zdGFydChhciwgdGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTQ5OC1cdGNhc2UgQVRIX1RNX0NNRF9XTUlfRlRNOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtMjEtI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjIyOiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtMjMtI2luY2x1ZGUgXCYjMzQ7cDJwLmhcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxOTIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBBbmFseXNpcyoqCgpPa2F5LCBzbyB0aGUgdGVzdG1vZGUgYXBwcm9hY2ggaGVyZSwgdXNpbmcgbmw4MDIxMSwgaXMgZnVuZGFtZW50YWxseSBkZXBlbmRlbnQgb24gdGhlIGZpcm13YXJlIGFjdHVhbGx5ICpiZWluZyogcHJlc2VudCBhbmQgcnVubmluZywgd2hpY2ggbWVhbnMgc3BlY2lmaWMgaGFyZHdhcmUuIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBhcmUgZGlyZWN0bHkgdGllZCB0byB0aGUgaGFyZHdhcmUgYW5kIHRoZWlyIHJlc3BlY3RpdmUgZmlybXdhcmUuIEJ1dCB3aGF0IGFib3V0IGBpZWVlODAyMTFfdHhfcGVla2A/IElzIHRoZXJlIGEgcG9zc2liaWxpdHkgdGhhdCBhbm90aGVyIGRyaXZlciAqY291bGQqIHVzZSBpdCBkb3duIHRoZSBsaW5lPyBUaGUgcGF0Y2ggaXRzZWxmIG9ubHkgbW9kaWZpZXMgYGF0aDExa2AgYW5kIGBhdGgxMmtgIHRvIHV0aWxpemUgYGllZWU4MDIxMV90eF9wZWVrYC4KCkdpdmVuIHRoYXQgdGhpcyBwYXRjaCBpcyBvbmx5IHJlYWNoYWJsZSB3aXRoIHBoeXNpY2FsIGhhcmR3YXJlLCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSG93ZXZlciwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gY29uc2lkZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCBoZXJlLgoKVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byBjb25zaWRlciBzY2VuYXJpb3Mgd2hlcmUgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gSG93ZXZlciwgaXQgYWxzbyBjbGFyaWZpZXMgdGhhdCBpZiB0aGUgcGF0Y2ggbW9kaWZpZXMgJiMzNDtyZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsJiMzNDsgaXQgd2FycmFudHMgaW52ZXN0aWdhdGlvbi4KCk5vdywgYGllZWU4MDIxMV90eF9wZWVrYCBpcyBleHBvcnRlZCBpbiBgbmV0L21hYzgwMjExL3R4LmNgLCB3aGljaCBtYWtlcyBpdCBwYXJ0IG9mIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLiBUaGUga2V5IGhlcmUgaXMgdGhhdCwgYXQgcHJlc2VudCwgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGFyZSB0aGUgKm9ubHkqIGNhbGxlcnMgb2YgYGllZWU4MDIxMV90eF9wZWVrYC4gU28sIGNvdWxkIGBtYWM4MDIxMV9od3NpbWAgY2FsbCBgaWVlZTgwMjExX3R4X3BlZWtgPyBObywgdGhhdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIHRoZSBjYXNlLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYG1hYzgwMjExX2h3c2ltYCByZWxpZXMgb24gYHdha2VfdHhfcXVldWVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dha2VfdHhfcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTg6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwMzYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiB0aGUgV2ktRmkgU3Vic3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYG1hYzgwMjExX2h3c2ltYCBjb2RlLCBhbmQgaXQmIzM5O3MgbG9va2luZyBsaWtlIGB3YWtlX3R4X3F1ZXVlYCBpc24mIzM5O3QgYWN0dWFsbHkgaW1wbGVtZW50ZWQgdGhlcmUuIEhtbSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWUgb3RoZXIgY2FsbCBwYXRoLiBXYWl0LCBpcyBpdCBwb3NzaWJsZSB0aGF0IGBpZWVlODAyMTFfdHhfcGVla2Agd2hpY2ggKmlzKiBuZXcsIGlzIHJlYWNoYWJsZSBieSAqc29tZSogb3RoZXIgbWVhbnM/IE5vLCBsb29raW5nIGF0IHRoZSBwYXRjaCwgaXQgc2VlbXMgbGlrZSB0aGUgb25seSBjYWxscyB0byBpdCBhcmUgZnJvbSBgYXRoMTFrYCBhbmQgYGF0aDEya2AsIHJpZ2h0PwoKUmlnaHQuIEFuZCBzaW5jZSBgYXRoMTFrYCBhbmQgYGF0aDEya2AgcmVxdWlyZSBhY3R1YWwgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCBJIGtub3cgdGhleSYjMzk7cmUgZXNzZW50aWFsbHkgb2ZmIHRoZSB0YWJsZSBmb3IgZnV6emluZyBpbiBzb21ldGhpbmcgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhleSByZXF1aXJlIHRoZSByZWFsIGRlYWwuIFNvIHRoYXQgY29kZSAqc2hvdWxkKiBiZSB1bnJlYWNoYWJsZSBpbiBteSB2aXJ0dWFsIHRlc3RpbmcgZW52aXJvbm1lbnRzLgoKQnV0LCBoYW5nIG9uLi4uIGlzIHRoZXJlIGEgc2xpbSBjaGFuY2UgYGF0aDExa2Agb3IgYGF0aDEya2AgY2FuIGJlIGZ1enplZCB2aWEgYHN5el9wY2lfZGV2aWNlYD8gVGhhdCYjMzk7cyB0aGUgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3Mgc3l6a2FsbGVyIHRvIHNpbXVsYXRlIFBDSSBkZXZpY2VzLiBBaCwgYnV0IHJlbWVtYmVyLCBgYXRoMTFrYCBuZWVkcyB0aGUgZmlybXdhcmUgdG8gYmUgbG9hZGVkIHVzaW5nIGByZXF1ZXN0X2Zpcm13YXJlYC4gQW5kIHRoZW4gaXQgaGFzIHRvICp3YWl0KiBmb3IgdGhlIGZpcm13YXJlIHRvIGJvb3QgYW5kIHNlbmQgdGhhdCBzcGVjaWZpYyBRTUkgbWVzc2FnZSwgcmlnaHQ/IEkmIzM5O20gdGFsa2luZyBhYm91dCBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gV2l0aG91dCB0aGF0IGZpcm13YXJlIGFjdHVhbGx5IHJ1bm5pbmcgYW5kIHNlbmRpbmcgdGhlIFFNSSBtZXNzYWdlLCB0aGUgbWFjODAyMTEgZGV2aWNlIGlzIG5ldmVyIHJlZ2lzdGVyZWQgYW5kLCBjb25zZXF1ZW50bHksIGB3YWtlX3R4X3F1ZXVlYCBpcyBuZXZlciBldmVuIGNhbGxlZC4KClNvIGNhbiBJIGdldCB0aGUgZnV6emVyIHRvIGVtdWxhdGUgdGhlIGZpcm13YXJlPyBTYWRseSwgbm8uIEkmIzM5O20gcHJldHR5IHN1cmUgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgUU1JIGZpcm13YXJlIGVtdWxhdGlvbiBmb3IgUXVhbGNvbW0gV2ktRmkgY2hpcHMsIG5vdCB0aGF0IGNvbXBsZXguCgpTbywgcmVhbGlzdGljYWxseSwgdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIGluIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBpcyB1bnJlYWNoYWJsZS4gQW5kIHdoYXQgYWJvdXQgYGllZWU4MDIxMV90eF9wZWVrYD8gSXQgKmlzKiBleHBvcnRlZCwgYnV0IG5vIG90aGVyIGRyaXZlciBpcyB1c2luZyBpdC4gU28gaXQgYWxzbyBpcyBsaWtlbHkgdW5yZWFjaGFibGUuIEkgd2lsbCBkb3VibGUgY2hlY2sgYGF0aDEya2AganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDk3NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipDaGVja2luZyBGaXJtd2FyZSBSZXF1ZXN0IENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIGBhdGgxMmtgIGRyaXZlciBhY3R1YWxseSBpbXBsZW1lbnRzIHRoZSBgcmVxdWVzdF9maXJtd2FyZWAgZnVuY3Rpb24uIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgc3RhbmRhcmQgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIGluIHRoZSBrZXJuZWwsIHNvIHRoaXMgY2hlY2sgaXMgaW1wb3J0YW50LiBJdCB3b3VsZCBiZSBhIHNpbGx5IG92ZXJzaWdodCBpZiB0aGUgZHJpdmVyIGZhaWxlZCB0byBkbyB0aGlzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHJlc2VuY2UgdG8gY29uZmlybSBpdCYjMzk7cyB1c2luZyB0aGUgc3RhbmRhcmQgbWVjaGFuaXNtcy4gVGhpcyBpcyBiYXNpYywgYnV0IG5lY2Vzc2FyeSBiZWZvcmUgSSBwcm9jZWVkLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQgd2l0aCBhbnkgZnVydGhlciBhbmFseXNpcyBvciBkZWJ1Z2dpbmcuIFRoaXMgaXMgcHJldHR5IGZ1bmRhbWVudGFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxODoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXF1ZXN0X2Zpcm13YXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zMzQ9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM2NjpcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIGZ3X25hbWUsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2Ny1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY4Olx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2OS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mzk5Olx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZmdzIsIGZ3Ml9uYW1lLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDAtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQwMTpcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7cmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDItXHRcdGdvdG8gZXJyX2Z3O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjEwOnN0YXRpYyBpbnQgYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xMS1cdFx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jPTE2Mz12b2lkIGF0aDEya19md19tYXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjE2NzpcdHJldCA9IGF0aDEya19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKGFiLCBBVEgxMktfRldfQVBJMl9GSUxFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xNjgtXHRpZiAocmV0ID09IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODEyCgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDM3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IFVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgYXNraW5nIG1lIHRvIGRldGVybWluZSBpZiBhIHBhdGNoIGlzICYjMzQ7V29ydGhGdXp6aW5nLiYjMzQ7IEJhc2VkIG9uIHRoZSBwcm92aWRlZCBjcml0ZXJpYSwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBwYXRjaCBpbmNsdWRlcyBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKUmlnaHQsIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgYXRoMTFrYCBhbmQgYGF0aDEya2AsIGFuZCBJIHJlbWVtYmVyIHRoYXQgdGhlc2UgZHJpdmVycywgbGlrZSB0aGVpciBwcmVkZWNlc3NvcnMsIGFic29sdXRlbHkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBhbmQsIGNydWNpYWxseSwgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gZXZlbiBnZXQgb2ZmIHRoZSBncm91bmQuIFRoZXNlIGRyaXZlcnMgYXJlIG5vdCBnb2luZyB0byBpbml0aWFsaXplIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIG5vIGhhcmR3YXJlLCBubyBkaWNlLgoKVGhlIGtleSBjaGFuZ2UgaGVyZSBzZWVtcyB0byBiZSBgaWVlZTgwMjExX3R4X3BlZWtgLCBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gaW4gdGhlIGBtYWM4MDIxMWAgY29yZS4gSSBrbm93IGBtYWM4MDIxMWAgd2VsbCwgYW5kIEkga25vdyBjb3JlIGZ1bmN0aW9ucyBjYW4gYmUgdHJpY2t5LCBidXQgdGhpcyBvbmUgaXMgb25seSBjYWxsZWQgYnkgdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVycyB3aXRoaW4gYGF0aDExa2AgYW5kIGBhdGgxMmtgLiBJIHVuZGVyc3RhbmQgdGhhdC4gU28sIHNpbmNlIHRoZSBkcml2ZXJzIHRoYXQgKmNhbGwqIGBpZWVlODAyMTFfdHhfcGVla2AgYXJlIGRlcGVuZGVudCBvbiBwaHlzaWNhbCBoYXJkd2FyZSwgdGhlIGZ1bmN0aW9uIGl0c2VsZiBpcyBlc3NlbnRpYWxseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0b28uCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBwYXRjaCBtb2RpZmllcyBkcml2ZXJzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUsIGFuZCB0aG9zZSBhcmUgdGhlIG9ubHkgZHJpdmVycyB3aGljaCB1c2UgdGhlIG5ldyBmdW5jdGlvbiwgdGhlIGNvZGUgcGF0aHMgYXJlIGFic29sdXRlbHkgaW1wb3NzaWJsZSB0byBoaXQgaW4gc29tZXRoaW5nIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUuIFRoZXkgd29uJiMzOTt0IGV2ZW4gcHJvYmUsIGxldCBhbG9uZSByZWFjaCB0aGUgbW9kaWZpZWQgY29kZS4KClNvLCBhY2NvcmRpbmcgdG8gdGhlIGNyaXRlcmlhIGdpdmVuLCB0aGlzIHBhdGNoIGlzICpub3QqIHdvcnRoIGZ1enppbmcuIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE4OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIHdpcmVsZXNzIGRyaXZlcnMgYW5kIGFkZHMgYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGllZWU4MDIxMV90eF9wZWVrIHRvIHRoZSBtYWM4MDIxMSBjb3JlLiBUaGUgbmV3IGhlbHBlciBpcyBleGNsdXNpdmVseSBjYWxsZWQgYnkgdGhlIHdha2VfdHhfcXVldWUgaGFuZGxlcnMgb2YgYXRoMTFrIGFuZCBhdGgxMmsuIEJvdGggb2YgdGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IHRoZSBoYXJkd2FyZSBhbmQgZmlybXdhcmUsIHRoZSBkcml2ZXJzIGZhaWwgdG8gcHJvYmUvaW5pdGlhbGl6ZSwgbWVhbmluZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyAoaW5jbHVkaW5nIHRoZSBuZXcgbWFjODAyMTEgaGVscGVyKSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6MzQuNTI3MjMwMDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMyMjYyMDI5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMDozNC41MjcyMzYwNzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzU5NjAyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU0NzRjMTVmYjk3OTA5ZTgwYjNlMDY3ZDA3NDIyM2FmZGMxNzBhYjZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTg6MTA6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXFxuaW5kZXggZjM4OWI5N2FjYmRkNWQuLjJlNTk3OGVjMmIwNWJjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbkBAIC0xMDg3LDYgKzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXFx1MDAzZW51bV90eF9yaW5nczsgaSsrKSB7XFxuIFxcdFxcdGlkcl9pbml0KFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tpXS50eGJ1Zl9pZHIpO1xcbiBcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhfaWRyX2xvY2spO1xcbitcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XFxuIFxcbiBcXHRcXHRkcC1cXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxcbmluZGV4IDg0ZjY2ODM5ZjBjNmRlLi42ZDk5NTAxYWEyNjljNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcXG5AQCAtODcsNiArODcsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7XFxuIFxcdHN0cnVjdCBpZHIgdHhidWZfaWRyO1xcbiBcXHQvKiBQcm90ZWN0cyB0eGJ1Zl9pZHIgYW5kIG51bV9wZW5kaW5nICovXFxuIFxcdHNwaW5sb2NrX3QgdHhfaWRyX2xvY2s7XFxuK1xcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cXG4rXFx0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XFxuIFxcdHN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzO1xcbiBcXHRpbnQgdHhfc3RhdHVzX2hlYWQ7XFxuIFxcdGludCB0eF9zdGF0dXNfdGFpbDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5pbmRleCAyZDU1Y2RjNGQxNjVkZS4uMDQ2Y2VmZDUzMTc4MjAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5AQCAtMTAwNjUsOSArMTAwNjUsNjcgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xcbitcXHRcXHQuc3RhID0gdHhxLVxcdTAwM2VzdGEsXFxuK1xcdH07XFxuK1xcdGNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjtcXG4rXFx0c3RydWN0IGF0aDExayAqYXIgPSBody1cXHUwMDNlcHJpdjtcXG4rXFx0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XFxuK1xcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdHUzMiByaW5nX3NlbGVjdG9yO1xcbitcXHRpbnQgbnVtX2ZyZWU7XFxuK1xcdHU4IHJpbmdfaWQ7XFxuK1xcbitcXHRpZiAoIWFyKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHR3aGlsZSAoMSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XFxuK1xcdFxcdGlmICghcGVla19za2IpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0cmluZ19zZWxlY3RvciA9IGFyLVxcdTAwM2VhYi1cXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IoXFxuK1xcdFxcdFxcdFxcdFxcdChzdHJ1Y3Qgc2tfYnVmZiAqKXBlZWtfc2tiKTtcXG4rXFx0XFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJVxcbitcXHRcXHRcXHQgIGFyLVxcdTAwM2VhYi1cXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXFx1MDAzZW51bV90eF9yaW5ncztcXG4rXFxuK1xcdFxcdHR4X3JpbmcgPSBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkcC50eF9yaW5nW3JpbmdfaWRdO1xcbitcXHRcXHR0Y2xfcmluZyA9IFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWhhbC5zcm5nX2xpc3RbdHhfcmluZy1cXHUwMDNldGNsX2RhdGFfcmluZy5yaW5nX2lkXTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2dGNsX3JpbmctXFx1MDAzZWxvY2spO1xcbitcXHRcXHRudW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItXFx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRpZiAobnVtX2ZyZWUgPT0gMCkge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xcbitcXHRcXHRpZiAoIXNrYikge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGF0aDExa19tYWNfb3BfdHgoaHcsIFxcdTAwMjZjb250cm9sLCBza2IpO1xcbitcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XFxuIFxcdC50eFxcdFxcdFxcdFxcdD0gYXRoMTFrX21hY19vcF90eCxcXG4tXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcXG4rXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcXG4gXFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXFxuIFxcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXFxuIFxcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG5pbmRleCBhZjVmMTFmYzFkODRhYi4uM2Q0NmNmYmYwYTFjM2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXFxuQEAgLTE1MzksNiArMTUzOSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuIFxcdH1cXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VtYXhfdHhfcmluZzsgaSsrKSB7XFxuK1xcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tpXS53YWtlX3R4X2xvY2spO1xcbiBcXHRcXHRkcC1cXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcXG4gXFxuIFxcdFxcdGRwLVxcdTAwM2V0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuaW5kZXggZjhjZmM3YmIyOWRkNzguLjY4ZDIwMjBiZTliODY4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbkBAIC01OCw2ICs1OCw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcXG4gXFx0dTggdGNsX2RhdGFfcmluZ19pZDtcXG4gXFx0c3RydWN0IGRwX3NybmcgdGNsX2RhdGFfcmluZztcXG4gXFx0c3RydWN0IGRwX3NybmcgdGNsX2NvbXBfcmluZztcXG4rXFx0LyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqL1xcbitcXHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcXG4gXFx0c3RydWN0IGhhbF93Ym1fY29tcGxldGlvbl9yaW5nX3R4ICp0eF9zdGF0dXM7XFxuIFxcdGludCB0eF9zdGF0dXNfaGVhZDtcXG4gXFx0aW50IHR4X3N0YXR1c190YWlsO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xcbmluZGV4IGExNjQ1NjNmZmYyODljLi5jMWM2NTZlNDU1MGIyNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xcbkBAIC0zOTAsNiArMzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLFxcbiBcXHRlbHNlXFxuIFxcdFxcdHJldHVybiAoKHNybmctXFx1MDAzZXJpbmdfc2l6ZSAtIGhwICsgdHApIC8gc3JuZy1cXHUwMDNlZW50cnlfc2l6ZSkgLSAxO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0woYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XFxuIFxcbiB2b2lkICphdGgxMmtfaGFsX3Nybmdfc3JjX25leHRfcGVlayhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG5pbmRleCBkOWZkZDJmYzgyOTg2YS4uMzA2ZDUxZGEzZWExOGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuQEAgLTExMDAsOSArMTEwMCw3MiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcXG4re1xcbitcXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYgPSBhdGgxMmtfdmlmX3RvX2FodmlmKHR4cS1cXHUwMDNldmlmKTtcXG4rXFx0c3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYgPSBcXHUwMDI2YWh2aWYtXFx1MDAzZWRlZmxpbms7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xcbitcXHRcXHQuc3RhID0gdHhxLVxcdTAwM2VzdGEsXFxuK1xcdH07XFxuK1xcdGNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjtcXG4rXFx0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XFxuK1xcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XFxuK1xcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbitcXHRzdHJ1Y3QgYXRoMTJrICphcjtcXG4rXFx0dTMyIHJpbmdfc2VsZWN0b3I7XFxuK1xcdGludCBudW1fZnJlZTtcXG4rXFx0dTggcmluZ19pZDtcXG4rXFxuK1xcdGFyID0gYXJ2aWYtXFx1MDAzZWFyO1xcbitcXHRpZiAoIWFyKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRkcCA9IGFyLVxcdTAwM2VhYi1cXHUwMDNlZHA7XFxuK1xcbitcXHR3aGlsZSAoMSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XFxuK1xcdFxcdGlmICghcGVla19za2IpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0cmluZ19zZWxlY3RvciA9IGRwLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IoXFxuK1xcdFxcdFxcdFxcdFxcdChzdHJ1Y3Qgc2tfYnVmZiAqKXBlZWtfc2tiKTtcXG4rXFx0XFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VtYXhfdHhfcmluZztcXG4rXFxuK1xcdFxcdHR4X3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbcmluZ19pZF07XFxuK1xcdFxcdHRjbF9yaW5nID0gXFx1MDAyNmRwLVxcdTAwM2VoYWwtXFx1MDAzZXNybmdfbGlzdFt0eF9yaW5nLVxcdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cXHUwMDNlYWIsIHRjbF9yaW5nLCB0cnVlKTtcXG4rXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnRjbF9yaW5nLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdFxcdGlmIChudW1fZnJlZSA9PSAwKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XFxuK1xcdFxcdGlmICghc2tiKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0YXRoMTJrX3dpZmk3X21hY19vcF90eChodywgXFx1MDAyNmNvbnRyb2wsIHNrYik7XFxuK1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcXG4gXFx0LnR4XFx0XFx0XFx0XFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxcbi1cXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxcbitcXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLFxcbiBcXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcXG4gXFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RvcCxcXG4gXFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXFxuaW5kZXggNGY5NWRhMDIzNzQ2ZjkuLjkyODliOGRjYTk3MmNmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcXG4rKysgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXFxuQEAgLTc3NDIsNiArNzc0MiwyNiBAQCB2b2lkIGllZWU4MDIxMV91bnJlc2VydmVfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHU4IHRpZCk7XFxuIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcXG4gXFxuKy8qKlxcbisgKiBpZWVlODAyMTFfdHhfcGVlayAtIHBlZWsgYXQgdGhlIG5leHQgcGFja2V0IGluIGEgc29mdHdhcmUgdHggcXVldWVcXG4rICpcXG4rICogQGh3OiBwb2ludGVyIGFzIG9idGFpbmVkIGZyb20gaWVlZTgwMjExX2FsbG9jX2h3KClcXG4rICogQHR4cTogcG9pbnRlciBvYnRhaW5lZCBmcm9tIHN0YXRpb24gb3IgdmlydHVhbCBpbnRlcmZhY2UsIG9yIGZyb21cXG4rICpcXHRpZWVlODAyMTFfbmV4dF90eHEoKVxcbisgKlxcbisgKiBSZXR1cm46IHRoZSBuZXh0IHNrYiB3aXRob3V0IGRlcXVldWluZyBpdCwgb3IgJU5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LlxcbisgKiBUaGUgcmV0dXJuZWQgcG9pbnRlciBpcyBjb25zdCDigJQgdGhlIGNhbGxlciBtdXN0IG5vdCBtb2RpZnkgb3IgZnJlZSB0aGUgc2tiLlxcbisgKiBUaGUgc2tiIHJlbWFpbnMgcXVldWVkIGFuZCB3aWxsIGJlIHJldHVybmVkIGJ5IGEgc3Vic2VxdWVudFxcbisgKiBpZWVlODAyMTFfdHhfZGVxdWV1ZSgpIGNhbGwuXFxuKyAqXFxuKyAqIFRoaXMgaXMgdXNlZnVsIGZvciBkcml2ZXJzIHRoYXQgbmVlZCB0byBpbnNwZWN0IHRoZSBuZXh0IGZyYW1lIChlLmcuIHRvXFxuKyAqIGRldGVybWluZSB0aGUgdGFyZ2V0IFRYIHJpbmcpIGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIHRvIGRlcXVldWUuXFxuKyAqXFxuKyAqIE11c3QgYmUgY2FsbGVkIGluIHRoZSBzYW1lIGNvbnRleHQgYXMgaWVlZTgwMjExX3R4X2RlcXVldWUoKS5cXG4rICovXFxuK2NvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSk7XFxuK1xcbiAvKipcXG4gICogaWVlZTgwMjExX3R4X2RlcXVldWVfbmkgLSBkZXF1ZXVlIGEgcGFja2V0IGZyb20gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxcbiAgKiAoaW4gcHJvY2VzcyBjb250ZXh0KVxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXFxuaW5kZXggYzEzYjIwOWZhZDQ3YWEuLjkxYmZkOGVmOTQyOGEwIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtMzg1Nyw2ICszODU3LDQ1IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbitjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuK3tcXG4rXFx0c3RydWN0IHR4cV9pbmZvICp0eHFpID0gY29udGFpbmVyX29mKHR4cSwgc3RydWN0IHR4cV9pbmZvLCB0eHEpO1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcXG4rXFx0c3RydWN0IGZxX3RpbiAqdGluID0gXFx1MDAyNnR4cWktXFx1MDAzZXRpbjtcXG4rXFx0c3RydWN0IGZxICpmcSA9IFxcdTAwMjZsb2NhbC1cXHUwMDNlZnE7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgZnFfZmxvdyAqZmxvdztcXG4rXFxuK1xcdFdBUk5fT05fT05DRShzb2Z0aXJxX2NvdW50KCkgPT0gMCk7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmZxLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHNrYiA9IHNrYl9wZWVrKFxcdTAwMjZ0eHFpLVxcdTAwM2VmcmFncyk7XFxuK1xcdGlmIChza2IpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCBcXHUwMDI2dGluLVxcdTAwM2VuZXdfZmxvd3MsIGZsb3djaGFpbikge1xcbitcXHRcXHRza2IgPSBza2JfcGVlayhcXHUwMDI2Zmxvdy1cXHUwMDNlcXVldWUpO1xcbitcXHRcXHRpZiAoc2tiKVxcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCBcXHUwMDI2dGluLVxcdTAwM2VvbGRfZmxvd3MsIGZsb3djaGFpbikge1xcbitcXHRcXHRza2IgPSBza2JfcGVlayhcXHUwMDI2Zmxvdy1cXHUwMDNlcXVldWUpO1xcbitcXHRcXHRpZiAoc2tiKVxcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4rb3V0OlxcbitcXHRpZiAoc2tiKVxcbitcXHRcXHRza2JfZ2V0X2hhc2goc2tiKTtcXG4rXFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZmcS1cXHUwMDNlbG9jayk7XFxuK1xcdHJldHVybiBza2I7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoaWVlZTgwMjExX3R4X3BlZWspO1xcbitcXG4gc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6MzUuMDkxNjA4NDQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDI2NjE4MTk2MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU0NzRjMTVmYjk3OTA5ZTgwYjNlMDY3ZDA3NDIyM2FmZGMxNzBhYjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxODoxMDozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuaW5kZXggZjM4OWI5N2FjYmRkNWQuLjJlNTk3OGVjMmIwNWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbkBAIC0xMDg3LDYgKzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cdTAwM2VudW1fdHhfcmluZ3M7IGkrKykge1xuIFx0XHRpZHJfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnR4YnVmX2lkcik7XG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udHhfaWRyX2xvY2spO1xuK1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XG4gXG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuaW5kZXggODRmNjY4MzlmMGM2ZGUuLjZkOTk1MDFhYTI2OWM0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbkBAIC04Nyw2ICs4Nyw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcbiBcdHN0cnVjdCBpZHIgdHhidWZfaWRyO1xuIFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xuIFx0c3BpbmxvY2tfdCB0eF9pZHJfbG9jaztcbitcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbitcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xuIFx0c3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7XG4gXHRpbnQgdHhfc3RhdHVzX2hlYWQ7XG4gXHRpbnQgdHhfc3RhdHVzX3RhaWw7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbmluZGV4IDJkNTVjZGM0ZDE2NWRlLi4wNDZjZWZkNTMxNzgyMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC0xMDA2NSw5ICsxMDA2NSw2NyBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuK1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbitcdH07XG4rXHRjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqcGVla19za2I7XG4rXHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcbitcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4rXHRpbnQgbnVtX2ZyZWU7XG4rXHR1OCByaW5nX2lkO1xuK1xuK1x0aWYgKCFhcilcbitcdFx0cmV0dXJuO1xuK1xuK1x0d2hpbGUgKDEpIHtcbitcdFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XG4rXHRcdGlmICghcGVla19za2IpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHJpbmdfc2VsZWN0b3IgPSBhci1cdTAwM2VhYi1cdTAwM2Vod19wYXJhbXMuaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKFxuK1x0XHRcdFx0XHQoc3RydWN0IHNrX2J1ZmYgKilwZWVrX3NrYik7XG4rXHRcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICVcbitcdFx0XHQgIGFyLVx1MDAzZWFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZW51bV90eF9yaW5ncztcbitcbitcdFx0dHhfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRwLnR4X3JpbmdbcmluZ19pZF07XG4rXHRcdHRjbF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsLnNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXG4rXHRcdHNwaW5fbG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuK1xuK1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1xuK1x0XHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcbitcdFx0aWYgKCFza2IpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0YXRoMTFrX21hY19vcF90eChodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbitcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbmluZGV4IGFmNWYxMWZjMWQ4NGFiLi4zZDQ2Y2ZiZjBhMWMzZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG5AQCAtMTUzOSw2ICsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZzsgaSsrKSB7XG4rXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5pbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0dTggdGNsX2RhdGFfcmluZ19pZDtcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xuK1x0LyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqL1xuK1x0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XG4gXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcbiBcdGludCB0eF9zdGF0dXNfaGVhZDtcbiBcdGludCB0eF9zdGF0dXNfdGFpbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuaW5kZXggYTE2NDU2M2ZmZjI4OWMuLmMxYzY1NmU0NTUwYjI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXG4gXHRlbHNlXG4gXHRcdHJldHVybiAoKHNybmctXHUwMDNlcmluZ19zaXplIC0gaHAgKyB0cCkgLyBzcm5nLVx1MDAzZWVudHJ5X3NpemUpIC0gMTtcbiB9XG4rRVhQT1JUX1NZTUJPTChhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKTtcbiBcbiB2b2lkICphdGgxMmtfaGFsX3Nybmdfc3JjX25leHRfcGVlayhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBoYWxfc3JuZyAqc3JuZylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IGQ5ZmRkMmZjODI5ODZhLi4zMDZkNTFkYTNlYTE4YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtMTEwMCw5ICsxMTAwLDcyIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbitcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbit7XG4rXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYgPSBhdGgxMmtfdmlmX3RvX2FodmlmKHR4cS1cdTAwM2V2aWYpO1xuK1x0c3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYgPSBcdTAwMjZhaHZpZi1cdTAwM2VkZWZsaW5rO1xuK1x0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XG4rXHRcdC5zdGEgPSB0eHEtXHUwMDNlc3RhLFxuK1x0fTtcbitcdGNvbnN0IHN0cnVjdCBza19idWZmICpwZWVrX3NrYjtcbitcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuK1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbitcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4rXHRpbnQgbnVtX2ZyZWU7XG4rXHR1OCByaW5nX2lkO1xuK1xuK1x0YXIgPSBhcnZpZi1cdTAwM2VhcjtcbitcdGlmICghYXIpXG4rXHRcdHJldHVybjtcbitcbitcdGRwID0gYXItXHUwMDNlYWItXHUwMDNlZHA7XG4rXG4rXHR3aGlsZSAoMSkge1xuK1x0XHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsXG4rXHRcdFx0XHQgICAgICBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSlcbitcdFx0XHRicmVhaztcbitcbitcdFx0cGVla19za2IgPSBpZWVlODAyMTFfdHhfcGVlayhodywgdHhxKTtcbitcdFx0aWYgKCFwZWVrX3NrYilcbitcdFx0XHRicmVhaztcbitcbitcdFx0cmluZ19zZWxlY3RvciA9IGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vod19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IoXG4rXHRcdFx0XHRcdChzdHJ1Y3Qgc2tfYnVmZiAqKXBlZWtfc2tiKTtcbitcdFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlbWF4X3R4X3Jpbmc7XG4rXG4rXHRcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xuK1x0XHR0Y2xfcmluZyA9IFx1MDAyNmRwLVx1MDAzZWhhbC1cdTAwM2Vzcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuK1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1xuK1x0XHRzcGluX2xvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4rXHRcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcbitcdFx0aWYgKG51bV9mcmVlID09IDApIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XG4rXHRcdGlmICghc2tiKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXG4rXHRcdGF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4rXG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdH1cbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTJrX3dpZmk3X21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4rXHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbmluZGV4IDRmOTVkYTAyMzc0NmY5Li45Mjg5YjhkY2E5NzJjZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbisrKyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbkBAIC03NzQyLDYgKzc3NDIsMjYgQEAgdm9pZCBpZWVlODAyMTFfdW5yZXNlcnZlX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCB1OCB0aWQpO1xuIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSk7XG4gXG4rLyoqXG4rICogaWVlZTgwMjExX3R4X3BlZWsgLSBwZWVrIGF0IHRoZSBuZXh0IHBhY2tldCBpbiBhIHNvZnR3YXJlIHR4IHF1ZXVlXG4rICpcbisgKiBAaHc6IHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxuKyAqIEB0eHE6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBzdGF0aW9uIG9yIHZpcnR1YWwgaW50ZXJmYWNlLCBvciBmcm9tXG4rICpcdGllZWU4MDIxMV9uZXh0X3R4cSgpXG4rICpcbisgKiBSZXR1cm46IHRoZSBuZXh0IHNrYiB3aXRob3V0IGRlcXVldWluZyBpdCwgb3IgJU5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LlxuKyAqIFRoZSByZXR1cm5lZCBwb2ludGVyIGlzIGNvbnN0IOKAlCB0aGUgY2FsbGVyIG11c3Qgbm90IG1vZGlmeSBvciBmcmVlIHRoZSBza2IuXG4rICogVGhlIHNrYiByZW1haW5zIHF1ZXVlZCBhbmQgd2lsbCBiZSByZXR1cm5lZCBieSBhIHN1YnNlcXVlbnRcbisgKiBpZWVlODAyMTFfdHhfZGVxdWV1ZSgpIGNhbGwuXG4rICpcbisgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZHJpdmVycyB0aGF0IG5lZWQgdG8gaW5zcGVjdCB0aGUgbmV4dCBmcmFtZSAoZS5nLiB0b1xuKyAqIGRldGVybWluZSB0aGUgdGFyZ2V0IFRYIHJpbmcpIGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIHRvIGRlcXVldWUuXG4rICpcbisgKiBNdXN0IGJlIGNhbGxlZCBpbiB0aGUgc2FtZSBjb250ZXh0IGFzIGllZWU4MDIxMV90eF9kZXF1ZXVlKCkuXG4rICovXG4rY29uc3Qgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9wZWVrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKTtcbitcbiAvKipcbiAgKiBpZWVlODAyMTFfdHhfZGVxdWV1ZV9uaSAtIGRlcXVldWUgYSBwYWNrZXQgZnJvbSBhIHNvZnR3YXJlIHR4IHF1ZXVlXG4gICogKGluIHByb2Nlc3MgY29udGV4dClcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMTNiMjA5ZmFkNDdhYS4uOTFiZmQ4ZWY5NDI4YTAgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdHguY1xuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcbkBAIC0zODU3LDYgKzM4NTcsNDUgQEAgc3RhdGljIGJvb2wgaWVlZTgwMjExX3htaXRfZmFzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4rXHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4re1xuK1x0c3RydWN0IHR4cV9pbmZvICp0eHFpID0gY29udGFpbmVyX29mKHR4cSwgc3RydWN0IHR4cV9pbmZvLCB0eHEpO1xuK1x0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG4rXHRzdHJ1Y3QgZnFfdGluICp0aW4gPSBcdTAwMjZ0eHFpLVx1MDAzZXRpbjtcbitcdHN0cnVjdCBmcSAqZnEgPSBcdTAwMjZsb2NhbC1cdTAwM2VmcTtcbitcdHN0cnVjdCBza19idWZmICpza2IgPSBOVUxMO1xuK1x0c3RydWN0IGZxX2Zsb3cgKmZsb3c7XG4rXG4rXHRXQVJOX09OX09OQ0Uoc29mdGlycV9jb3VudCgpID09IDApO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZxLVx1MDAzZWxvY2spO1xuK1xuK1x0c2tiID0gc2tiX3BlZWsoXHUwMDI2dHhxaS1cdTAwM2VmcmFncyk7XG4rXHRpZiAoc2tiKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkoZmxvdywgXHUwMDI2dGluLVx1MDAzZW5ld19mbG93cywgZmxvd2NoYWluKSB7XG4rXHRcdHNrYiA9IHNrYl9wZWVrKFx1MDAyNmZsb3ctXHUwMDNlcXVldWUpO1xuK1x0XHRpZiAoc2tiKVxuK1x0XHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShmbG93LCBcdTAwMjZ0aW4tXHUwMDNlb2xkX2Zsb3dzLCBmbG93Y2hhaW4pIHtcbitcdFx0c2tiID0gc2tiX3BlZWsoXHUwMDI2Zmxvdy1cdTAwM2VxdWV1ZSk7XG4rXHRcdGlmIChza2IpXG4rXHRcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rb3V0OlxuK1x0aWYgKHNrYilcbitcdFx0c2tiX2dldF9oYXNoKHNrYik7XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZmcS1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiBza2I7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV90eF9wZWVrKTtcbitcbiBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6MzUuMDkxNjEwNDkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYwMTQzNTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgUmVhY2hhYmlsaXR5IG9mIGEgV2lyZWxlc3MgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgc29tZSBrZXkgd2lyZWxlc3MgbmV0d29ya2luZyBhcmVhczogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYCwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYCwgYW5kIGBuZXQvbWFjODAyMTEvdHguY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYSBuZXcgZnVuY3Rpb24sIGBpZWVlODAyMTFfdHhfcGVla2AsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byBjcmVhdGUgY3VzdG9tIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVycyBpbiBgYXRoMTFrYCBhbmQgYGF0aDEya2Ag4oCTIHNwZWNpZmljYWxseSwgYGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZWAgYW5kIGBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWVgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBuZXR3b3JraW5nL3dpcmVsZXNzIHN0YWNrLiBUaGUgYmlnIHF1ZXN0aW9uIGlzOiBjYW4gSSBhY3R1YWxseSAqcmVhY2gqIHRoaXMgY29kZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cD9cblxuYG1hYzgwMjExYCBpdHNlbGYgaXMgZGVmaW5pdGVseSByZWFjaGFibGU7IGBtYWM4MDIxMV9od3NpbWAgb2ZmZXJzIGEgcm91dGUgaW50byB0aGF0IGNvZGUuIEJ1dCB0aGUgY3JpdGljYWwgcGFydCBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIFRoZXNlIGFyZSB0eXBpY2FsbHkgdGllZCB0byBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4L2JlIGhhcmR3YXJlLiBUaGF0IHN1Z2dlc3RzIFBDSS9BSEIgZGVwZW5kZW5jaWVzLiBBcmUgdGhvc2UgZHJpdmVycyBldmVuICphY2Nlc3NpYmxlKiBpbiBhIFZNPyBDb3VsZCB0aGVyZSBiZSBhbnkgc2ltdWxhdGVkIGhhcmR3YXJlLCBvciBpcyB0aGlzIHBhdGNoIGVmZmVjdGl2ZWx5IG9mZi1saW1pdHMgZm9yIGZ1enppbmcgb3IgdGVzdGluZyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IEkndmUgZ290IHRvIGRldGVybWluZSBpZiB0aGVyZSdzIGFueSB3YXkgdG8gYWNjZXNzIHRoaXMgY29kZS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGhhdmUgYW55IHNpbXVsYXRlZCBoYXJkd2FyZSBjb21wb25lbnRzIGluIHRoZSBrZXJuZWwuIExldCBtZSBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGZvciByZWZlcmVuY2VzIHRvIHRoZW0gdG8gc2VlIGlmIHRoZXkgY2FuIGJlIGFjY2Vzc2VkIHZpYSBhIHZpcnR1YWwgYnVzIG9yIFVTQiBvciBpZiB0aGV5IGFyZSBwdXJlbHkgUENJL0FIQi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE1NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjQyLjY5MzA0Nzc2N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTQ4NzQzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAyNjY4NCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTI9Y29uZmlnIEFUSDExS1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxMTpcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBhdGgxMWsuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZz0xMz1jb25maWcgQVRIMTFLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxNDpcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMWsgQUhCIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE1LVxcdGRlcGVuZHMgb24gQVRIMTFLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9MjA9Y29uZmlnIEFUSDExS19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjE6XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMi1cXHRkZXBlbmRzIG9uIEFUSDExSyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZz0zMD1jb25maWcgQVRIMTFLX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMxOlxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMi1cXHRkZXBlbmRzIG9uIEFUSDExS1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTM4PWNvbmZpZyBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozOTpcXHRib29sIFxcXCJRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDAtXFx0ZGVwZW5kcyBvbiBBVEgxMUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00MS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQyOlxcdCAgRW5hYmxlIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9NDY9Y29uZmlnIEFUSDExS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ3OlxcdGJvb2wgXFxcImF0aDExayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ4LVxcdGRlcGVuZHMgb24gQVRIMTFLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDktXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1MDpcXHQgIFNlbGVjdCB0aGlzIHRvIHVzZSBhdGgxMWsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTUyPWNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NTM6XFx0Ym9vbCBcXFwiUUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU0LVxcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01Ni1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU3OlxcdCAgRW5hYmxlIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc9NjE9Y29uZmlnIEFUSDExS19DRlJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjI6XFx0Ym9vbCBcXFwiYXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYzLVxcdGRlcGVuZHMgb24gQVRIMTFLX0RFQlVHRlNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjY2OlxcdCAgRW5hYmxlIGF0aDExayBjaGFubmVsIGZyZXF1ZW5jeSByZXNwb25zZSBkdW1wIHN1cHBvcnQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTY3LVxcdCAgVGhpcyBvcHRpb24gZXhwb3NlcyBkZWJ1Z2ZzIG5vZGVzIHRoYXQgd2lsbCBhbGxvdyB0aGUgdXNlclxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQVRIMTFLKSArPSBhdGgxMWsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzphdGgxMWsteSArPSBjb3JlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtNC1cXHQgICAgaGFsLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI0OmF0aDExay0kKENPTkZJR19BVEgxMUtfREVCVUdGUykgKz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MjU6YXRoMTFrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI2OmF0aDExay0kKENPTkZJR19BVEgxMUtfVFJBQ0lORykgKz0gdHJhY2Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjc6YXRoMTFrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjg6YXRoMTFrLSQoQ09ORklHX0FUSDExS19TUEVDVFJBTCkgKz0gc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6Mjk6YXRoMTFrLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzA6YXRoMTFrLSQoQ09ORklHX0RFVl9DT1JFRFVNUCkgKz0gY29yZWR1bXAub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGU6MzE6YXRoMTFrLSQoQ09ORklHX0FUSDExS19DRlIpICs9IGNmci5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19BVEgxMUtfQUhCKSArPSBhdGgxMWtfYWhiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjM0OmF0aDExa19haGIteSArPSBhaGIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvTWFrZWZpbGUtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfQVRIMTFLX1BDSSkgKz0gYXRoMTFrX3BjaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZTozNzphdGgxMWtfcGNpLXkgKz0gbWhpLm8gcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlLTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI0OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF0aDExa19haGJfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1LVxcdC8qIFRPRE86IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIGNvbXBhdGlibGUgc3RyaW5nIHRvIHNvbWV0aGluZyBzaW1pbGFyXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDM6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXRoMTFrX2FoYl9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTQ0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE0NTphdGgxMWtfYWhiX2dldF9tc2lfaXJxX3djbjY3NTAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdW5zaWduZWQgaW50IHZlY3RvcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTE1MD1zdGF0aWMgaW5saW5lIHUzMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTUxOmF0aDExa19haGJfZ2V0X3dpbmRvd19zdGFydF93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xNjY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE2NzphdGgxMWtfYWhiX3dpbmRvd193cml0ZTMyX3djbjY3NTAoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIG9mZnNldCwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTcxLVxcdC8qIFdDTjY3NTAgdXNlcyBzdGF0aWMgd2luZG93IGJhc2VkIHJlZ2lzdGVyIGFjY2VzcyovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxNzI6XFx0d2luZG93X3N0YXJ0ID0gYXRoMTFrX2FoYl9nZXRfd2luZG93X3N0YXJ0X3djbjY3NTAoYWIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE3ODpzdGF0aWMgdTMyIGF0aDExa19haGJfd2luZG93X3JlYWQzMl93Y242NzUwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xNzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODMtXFx0LyogV0NONjc1MCB1c2VzIHN0YXRpYyB3aW5kb3cgYmFzZWQgcmVnaXN0ZXIgYWNjZXNzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxODQ6XFx0d2luZG93X3N0YXJ0ID0gYXRoMTFrX2FoYl9nZXRfd2luZG93X3N0YXJ0X3djbjY3NTAoYWIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xODUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5MTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDExa19wY2lfb3BzIGF0aDExa19haGJfcGNpX29wc193Y242NzUwID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTkyLVxcdC53YWtldXAgPSBOVUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTkzLVxcdC5yZWxlYXNlID0gTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5NDpcXHQuZ2V0X21zaV9pcnEgPSBhdGgxMWtfYWhiX2dldF9tc2lfaXJxX3djbjY3NTAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxOTU6XFx0LndpbmRvd193cml0ZTMyID0gYXRoMTFrX2FoYl93aW5kb3dfd3JpdGUzMl93Y242NzUwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTk2OlxcdC53aW5kb3dfcmVhZDMyID0gYXRoMTFrX2FoYl93aW5kb3dfcmVhZDMyX3djbjY3NTAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xOTctfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTE5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjE5OTpzdGF0aWMgaW5saW5lIHUzMiBhdGgxMWtfYWhiX3JlYWQzMihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjA0OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMWtfYWhiX3dyaXRlMzIoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIG9mZnNldCwgdTMyIHZhbHVlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjA5OnN0YXRpYyB2b2lkIGF0aDExa19haGJfa2lsbF90YXNrbGV0cyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjEzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIxNDpcXHRcXHRzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKmNlX3BpcGUgPSBcXHUwMDI2YWItXFx1MDAzZWNlLmNlX3BpcGVbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMTY6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjE3LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyMjM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9leHRfZ3JwX2Rpc2FibGUoc3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIzMTpzdGF0aWMgdm9pZCBfX2F0aDExa19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yMzUtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIzNjpcXHRcXHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjIzODpcXHRcXHRhdGgxMWtfYWhiX2V4dF9ncnBfZGlzYWJsZShpcnFfZ3JwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTIzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjQ4OnN0YXRpYyB2b2lkIGF0aDExa19haGJfZXh0X2dycF9lbmFibGUoc3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI0OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI1NjpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3NldGJpdDMyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHU4IGJpdCwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2MDpcXHR2YWwgPSBhdGgxMWtfYWhiX3JlYWQzMihhYiwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2MTpcXHRhdGgxMWtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIHwgQklUKGJpdCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjYyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI2NDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NsZWFyYml0MzIoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTggYml0LCB1MzIgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjY4OlxcdHZhbCA9IGF0aDExa19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjY5OlxcdGF0aDExa19haGJfd3JpdGUzMihhYiwgb2Zmc2V0LCB2YWwgXFx1MDAyNiB+QklUKGJpdCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjcwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI3MjpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjgzLVxcdGlmIChjZV9hdHRyLVxcdTAwM2VzcmNfbmVudHJpZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoyODQ6XFx0XFx0YXRoMTFrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQsIGllMV9yZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0yODYtXFx0aWYgKGNlX2F0dHItXFx1MDAzZWRlc3RfbmVudHJpZXMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI4NzpcXHRcXHRhdGgxMWtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUyX3JlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjI4ODpcXHRcXHRhdGgxMWtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCArIENFX0hPU1RfSUVfM19TSElGVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTI4OS1cXHRcXHRcXHRcXHQgICAgaWUzX3JlZ19hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MjkzOnN0YXRpYyB2b2lkIGF0aDExa19haGJfY2VfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTE2IGNlX2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMjk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzA0LVxcdGlmIChjZV9hdHRyLVxcdTAwM2VzcmNfbmVudHJpZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMDU6XFx0XFx0YXRoMTFrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMwNy1cXHRpZiAoY2VfYXR0ci1cXHUwMDNlZGVzdF9uZW50cmllcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzA4OlxcdFxcdGF0aDExa19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQsIGllMl9yZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMDk6XFx0XFx0YXRoMTFrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCArIENFX0hPU1RfSUVfM19TSElGVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxMC1cXHRcXHRcXHRcXHQgICAgICBpZTNfcmVnX2FkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMTQ6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zeW5jX2NlX2lycXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMxOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5jZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMjA6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzIxLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozMjg6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9zeW5jX2V4dF9pcnFzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zMzMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDExS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjMzNDpcXHRcXHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTMzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzQzOnN0YXRpYyB2b2lkIGF0aDExa19haGJfY2VfaXJxc19lbmFibGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM0Ny1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5jZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNDg6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzQ5LVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzUwOlxcdFxcdGF0aDExa19haGJfY2VfaXJxX2VuYWJsZShhYiwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNTQ6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV9pcnFzX2Rpc2FibGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM1OC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5jZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNTk6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzYwLVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzYxOlxcdFxcdGF0aDExa19haGJfY2VfaXJxX2Rpc2FibGUoYWIsIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzYyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MzY1OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9zdGFydChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzY2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM2NzpcXHRhdGgxMWtfYWhiX2NlX2lycXNfZW5hYmxlKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM2ODpcXHRhdGgxMWtfY2VfcnhfcG9zdF9idWYoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNzM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9leHRfaXJxX2VuYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozNzg6XFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM4My1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozODQ6XFx0XFx0YXRoMTFrX2FoYl9leHRfZ3JwX2VuYWJsZShpcnFfZ3JwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM4NS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM4ODpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzg5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5MDpcXHRfX2F0aDExa19haGJfZXh0X2lycV9kaXNhYmxlKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5MTpcXHRhdGgxMWtfYWhiX3N5bmNfZXh0X2lycXMoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMzkyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5NDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3N0b3Aoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTM5NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0zOTYtXFx0aWYgKCF0ZXN0X2JpdChBVEgxMUtfRkxBR19DUkFTSF9GTFVTSCwgXFx1MDAyNmFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Mzk3OlxcdFxcdGF0aDExa19haGJfY2VfaXJxc19kaXNhYmxlKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjM5ODpcXHRhdGgxMWtfYWhiX3N5bmNfY2VfaXJxcyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzozOTk6XFx0YXRoMTFrX2FoYl9raWxsX3Rhc2tsZXRzKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwMC1cXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2YWItXFx1MDAzZXJ4X3JlcGxlbmlzaF9yZXRyeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MDE6XFx0YXRoMTFrX2NlX2NsZWFudXBfcGlwZXMoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDAyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQwNDpzdGF0aWMgaW50IGF0aDExa19haGJfcG93ZXJfdXAoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQwNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MDY6XFx0c3RydWN0IGF0aDExa19haGIgKmFiX2FoYiA9IGF0aDExa19haGJfcHJpdihhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MDctXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDEwLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MTE6XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byBib290IHRoZSByZW1vdGUgcHJvY2Vzc29yIFE2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDE2OnN0YXRpYyB2b2lkIGF0aDExa19haGJfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDE4OlxcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MjM6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9pbml0X3FtaV9jZV9jb25maWcoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0MjU6XFx0c3RydWN0IGF0aDExa19xbWlfY2VfY2ZnICpjZmcgPSBcXHUwMDI2YWItXFx1MDAzZXFtaS5jZV9jZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQzNDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfZXh0X2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDM4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0Mzk6XFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ0OTpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTQtXFx0aWYgKGFiLVxcdTAwM2Vod19wYXJhbXMuaHlicmlkX2J1c190eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDU1OlxcdFxcdHJldHVybiBhdGgxMWtfcGNpY19mcmVlX2lycShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NTctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMuY2VfY291bnQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDU4OlxcdFxcdGlmIChhdGgxMWtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFxcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ1OS1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDY0OlxcdGF0aDExa19haGJfZnJlZV9leHRfaXJxKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ2NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0Njc6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9jZV90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ2OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0Njk6XFx0c3RydWN0IGF0aDExa19jZV9waXBlICpjZV9waXBlID0gZnJvbV90YXNrbGV0KGNlX3BpcGUsIHQsIGludHJfdHEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NDcxOlxcdGF0aDExa19jZV9wZXJfZW5naW5lX3NlcnZpY2UoY2VfcGlwZS1cXHUwMDNlYWIsIGNlX3BpcGUtXFx1MDAzZXBpcGVfbnVtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3MzpcXHRhdGgxMWtfYWhiX2NlX2lycV9lbmFibGUoY2VfcGlwZS1cXHUwMDNlYWIsIGNlX3BpcGUtXFx1MDAzZXBpcGVfbnVtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ3NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0NzY6c3RhdGljIGlycXJldHVybl90IGF0aDExa19haGJfY2VfaW50ZXJydXB0X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ3ODpcXHRzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKmNlX3BpcGUgPSBhcmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00NzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ4MzpcXHRhdGgxMWtfYWhiX2NlX2lycV9kaXNhYmxlKGNlX3BpcGUtXFx1MDAzZWFiLCBjZV9waXBlLVxcdTAwM2VwaXBlX251bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00ODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5MDpzdGF0aWMgaW50IGF0aDExa19haGJfZXh0X2dycF9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5MjpcXHRzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gY29udGFpbmVyX29mKG5hcGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo0OTM6XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ5NC1cXHRcXHRcXHRcXHRcXHRcXHRuYXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5NTpcXHRzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiID0gaXJxX2dycC1cXHUwMDNlYWI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy00OTYtXFx0aW50IHdvcmtfZG9uZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTQ5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjQ5ODpcXHR3b3JrX2RvbmUgPSBhdGgxMWtfZHBfc2VydmljZV9zcm5nKGFiLCBpcnFfZ3JwLCBidWRnZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNDk5LVxcdGlmICh3b3JrX2RvbmUgXFx1MDAzYyBidWRnZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUwMC1cXHRcXHRuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgd29ya19kb25lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUwMTpcXHRcXHRhdGgxMWtfYWhiX2V4dF9ncnBfZW5hYmxlKGlycV9ncnApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTAyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTEwOnN0YXRpYyBpcnFyZXR1cm5fdCBhdGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTEyOlxcdHN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBhcmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUxNzpcXHRhdGgxMWtfYWhiX2V4dF9ncnBfZGlzYWJsZShpcnFfZ3JwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTI0OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9jb25maWdfZXh0X2lycShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjUyNjpcXHRzdHJ1Y3QgYXRoMTFrX2h3X3BhcmFtcyAqaHcgPSBcXHUwMDI2YWItXFx1MDAzZWh3X3BhcmFtcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTUyNy1cXHRpbnQgaSwgajtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNTMxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1MzI6XFx0XFx0c3RydWN0IGF0aDExa19leHRfaXJxX2dycCAqaXJxX2dycCA9IFxcdTAwMjZhYi1cXHUwMDNlZXh0X2lycV9ncnBbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01MzMtXFx0XFx0dTMyIG51bV9pcnEgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NDItXFx0XFx0bmV0aWZfbmFwaV9hZGQoaXJxX2dycC1cXHUwMDNlbmFwaV9uZGV2LCBcXHUwMDI2aXJxX2dycC1cXHUwMDNlbmFwaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjU0MzpcXHRcXHRcXHQgICAgICAgYXRoMTFrX2FoYl9leHRfZ3JwX25hcGlfcG9sbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU2OC1cXHRcXHRcXHRcXHRcXHRcXHRyeGRtYTJob3N0X2Rlc3RpbmF0aW9uX3JpbmdfbWFjMSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1Njk6XFx0XFx0XFx0XFx0XFx0XFx0YXRoMTFrX2h3X2dldF9tYWNfZnJvbV9wZGV2X2lkKGh3LCBqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3MC1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3NC1cXHRcXHRcXHRcXHRcXHRcXHRob3N0MnJ4ZG1hX2hvc3RfYnVmX3JpbmdfbWFjMSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1NzU6XFx0XFx0XFx0XFx0XFx0XFx0YXRoMTFrX2h3X2dldF9tYWNfZnJvbV9wZGV2X2lkKGh3LCBqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU3Ni1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4MC1cXHRcXHRcXHRcXHRcXHRcXHRwcGR1X2VuZF9pbnRlcnJ1cHRzX21hYzEgLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NTgxOlxcdFxcdFxcdFxcdFxcdFxcdGF0aDExa19od19nZXRfbWFjX2Zyb21fcGRldl9pZChodywgaik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy01ODItXFx0XFx0XFx0XFx0XFx0aXJxX2dycC1cXHUwMDNlaXJxc1tudW1faXJxKytdID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4My1cXHRcXHRcXHRcXHRcXHRcXHRyeGRtYTJob3N0X21vbml0b3Jfc3RhdHVzX3JpbmdfbWFjMSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1ODQ6XFx0XFx0XFx0XFx0XFx0XFx0YXRoMTFrX2h3X2dldF9tYWNfZnJvbV9wZGV2X2lkKGh3LCBqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU4NS1cXHRcXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU5Ni1cXHRcXHRcXHRpcnFfc2V0X3N0YXR1c19mbGFncyhpcnEsIElSUV9OT0FVVE9FTiB8IElSUV9ESVNBQkxFX1VOTEFaWSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo1OTc6XFx0XFx0XFx0cmV0ID0gcmVxdWVzdF9pcnEoaXJxLCBhdGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTU5OC1cXHRcXHRcXHRcXHRcXHQgIElSUUZfVFJJR0dFUl9SSVNJTkcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYwMC1cXHRcXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2MDE6XFx0XFx0XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCByZXF1ZXN0X2lycSBmb3IgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MDItXFx0XFx0XFx0XFx0XFx0ICAgaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjEwOnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9jb25maWdfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MTUtXFx0aWYgKGFiLVxcdTAwM2Vod19wYXJhbXMuaHlicmlkX2J1c190eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjE2OlxcdFxcdHJldHVybiBhdGgxMWtfcGNpY19jb25maWdfaXJxKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjE5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYyMDpcXHRcXHRzdHJ1Y3QgYXRoMTFrX2NlX3BpcGUgKmNlX3BpcGUgPSBcXHUwMDI2YWItXFx1MDAzZWNlLmNlX3BpcGVbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2MjI6XFx0XFx0aWYgKGF0aDExa19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjIzLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2Mjc6XFx0XFx0dGFza2xldF9zZXR1cChcXHUwMDI2Y2VfcGlwZS1cXHUwMDNlaW50cl90cSwgYXRoMTFrX2FoYl9jZV90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYyOC1cXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShhYi1cXHUwMDNlcGRldiwgaXJxX25hbWVbaXJxX2lkeF0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjI5OlxcdFxcdHJldCA9IHJlcXVlc3RfaXJxKGlycSwgYXRoMTFrX2FoYl9jZV9pbnRlcnJ1cHRfaGFuZGxlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTYzMC1cXHRcXHRcXHRcXHQgIElSUUZfVFJJR0dFUl9SSVNJTkcsIGlycV9uYW1lW2lycV9pZHhdLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02MzgtXFx0LyogQ29uZmlndXJlIGV4dGVybmFsIGludGVycnVwdHMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjYzOTpcXHRyZXQgPSBhdGgxMWtfYWhiX2NvbmZpZ19leHRfaXJxKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTY0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NjQ0OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9tYXBfc2VydmljZV90b19waXBlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUxNiBzZXJ2aWNlX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjQ1LVxcdFxcdFxcdFxcdFxcdCAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo2ODc6c3RhdGljIGludCBhdGgxMWtfYWhiX2hpZl9zdXNwZW5kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy02ODgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Njg5OlxcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNjkwLVxcdHUzMiB3YWtlX2lycTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzAwLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjcwMTpcXHRcXHRhdGgxMWtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGVuYWJsZSB3YWtldXAgaXJxIDolZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcwMi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MTItXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzEzOlxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gc2VuZCBzbXAycCBwb3dlciBzYXZlIGVudGVyIGNtZCA6JWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MTQtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzE3OlxcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcXFwiZGV2aWNlIHN1c3BlbmRlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03MTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjcyMjpzdGF0aWMgaW50IGF0aDExa19haGJfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjcyNDpcXHRzdHJ1Y3QgYXRoMTFrX2FoYiAqYWJfYWhiID0gYXRoMTFrX2FoYl9wcml2KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTcyNS1cXHR1MzIgd2FrZV9pcnE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTczNS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3MzY6XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byBkaXNhYmxlIHdha2V1cCBpcnE6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzM3LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc0OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NTA6XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byBzZW5kIHNtcDJwIHBvd2VyIHNhdmUgZW50ZXIgY21kIDolZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc1MS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NTUtXFx0aWYgKHJldCA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NTY6XFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJ0aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igd293IHdha2V1cCBjb21wbGV0aW9uXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc1Ny1cXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzYwOlxcdGF0aDExa19kYmcoYWIsIEFUSDExS19EQkdfQUhCLCBcXFwiZGV2aWNlIHJlc3VtZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzYxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMWtfaGlmX29wcyBhdGgxMWtfYWhiX2hpZl9vcHNfaXBxODA3NCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2NjpcXHQuc3RhcnQgPSBhdGgxMWtfYWhiX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzY3OlxcdC5zdG9wID0gYXRoMTFrX2FoYl9zdG9wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzY4OlxcdC5yZWFkMzIgPSBhdGgxMWtfYWhiX3JlYWQzMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc2OTpcXHQud3JpdGUzMiA9IGF0aDExa19haGJfd3JpdGUzMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc3MC1cXHQucmVhZCA9IE5VTEwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3NzE6XFx0LmlycV9lbmFibGUgPSBhdGgxMWtfYWhiX2V4dF9pcnFfZW5hYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzcyOlxcdC5pcnFfZGlzYWJsZSA9IGF0aDExa19haGJfZXh0X2lycV9kaXNhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzczOlxcdC5tYXBfc2VydmljZV90b19waXBlID0gYXRoMTFrX2FoYl9tYXBfc2VydmljZV90b19waXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc0OlxcdC5wb3dlcl9kb3duID0gYXRoMTFrX2FoYl9wb3dlcl9kb3duLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc1OlxcdC5wb3dlcl91cCA9IGF0aDExa19haGJfcG93ZXJfdXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03NzYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc3ODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDExa19oaWZfb3BzIGF0aDExa19haGJfaGlmX29wc193Y242NzUwID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzc5OlxcdC5zdGFydCA9IGF0aDExa19wY2ljX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzgwOlxcdC5zdG9wID0gYXRoMTFrX3BjaWNfc3RvcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4MTpcXHQucmVhZDMyID0gYXRoMTFrX3BjaWNfcmVhZDMyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6NzgyOlxcdC53cml0ZTMyID0gYXRoMTFrX3BjaWNfd3JpdGUzMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc4My1cXHQucmVhZCA9IE5VTEwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODQ6XFx0LmlycV9lbmFibGUgPSBhdGgxMWtfcGNpY19leHRfaXJxX2VuYWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4NTpcXHQuaXJxX2Rpc2FibGUgPSBhdGgxMWtfcGNpY19leHRfaXJxX2Rpc2FibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODY6XFx0LmdldF9tc2lfYWRkcmVzcyA9ICBhdGgxMWtfcGNpY19nZXRfbXNpX2FkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODc6XFx0LmdldF91c2VyX21zaV92ZWN0b3IgPSBhdGgxMWtfcGNpY19nZXRfdXNlcl9tc2lfYXNzaWdubWVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc4ODpcXHQubWFwX3NlcnZpY2VfdG9fcGlwZSA9IGF0aDExa19wY2ljX21hcF9zZXJ2aWNlX3RvX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3ODk6XFx0LnBvd2VyX2Rvd24gPSBhdGgxMWtfYWhiX3Bvd2VyX2Rvd24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3OTA6XFx0LnBvd2VyX3VwID0gYXRoMTFrX2FoYl9wb3dlcl91cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MTpcXHQuc3VzcGVuZCA9IGF0aDExa19haGJfaGlmX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo3OTI6XFx0LnJlc3VtZSA9IGF0aDExa19haGJfaGlmX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjc5MzpcXHQuY2VfaXJxX2VuYWJsZSA9IGF0aDExa19wY2lfZW5hYmxlX2NlX2lycXNfZXhjZXB0X3dha2VfaXJxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzk0OlxcdC5jZV9pcnFfZGlzYWJsZSA9IGF0aDExa19wY2lfZGlzYWJsZV9jZV9pcnFzX2V4Y2VwdF93YWtlX2lycSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTc5NS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtNzk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzk3OnN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfZ2V0X3Jwcm9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy03OTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6Nzk5OlxcdHN0cnVjdCBhdGgxMWtfYWhiICphYl9haGIgPSBhdGgxMWtfYWhiX3ByaXYoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODAwLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGFiLVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTgwNC1cXHRpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwicWNvbSxycHJvY1xcXCIsIFxcdTAwMjZycHJvY19waGFuZGxlKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODA1OlxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IHE2X3Jwcm9jIGhhbmRsZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MDYtXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTgxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjgxNzpzdGF0aWMgaW50IGF0aDExa19haGJfc2V0dXBfbXNpX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtODI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODI3OlxcdHJldCA9IGF0aDExa19wY2ljX2luaXRfbXNpX2NvbmZpZyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04MjgtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODI5OlxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gaW5pdCBtc2kgY29uZmlnOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTgzMC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjQyLjc2MjU0MjA3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0Mjc2ODgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBTaW11bGF0aW9uIExhbmRzY2FwZSBmb3IgYXRoMTFrL2F0aDEyayBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgYGF0aDExa2AgZHJpdmVyLCBhbmQgSSBzZWUgaXQncyBnb3Qgb3B0aW9ucyBmb3IgYm90aCBBSEIgYW5kIFBDSSBjb25maWd1cmF0aW9ucywgcmlnaHQ/IFRoYXQgbWFrZXMgc2Vuc2UsIGNvdmVyaW5nIHRoZSBkaWZmZXJlbnQgYnVzIGludGVyZmFjZXMuIEkgYWxzbyBub3RpY2UgdGhpbmdzIGxpa2UgYERFQlVHRlNgIGFuZCB0cmFjaW5nIHN1cHBvcnQsIHdoaWNoIGFyZSBwcmV0dHkgc3RhbmRhcmQgZm9yIGRlYnVnZ2luZyBhbmQgaW5zdHJ1bWVudGF0aW9uLiBOb3csIHdoYXQgSSdtIHJlYWxseSBjdXJpb3VzIGFib3V0IGlzOiBkb2VzIHRoaXMgZHJpdmVyLCBvciB0aGUgbmV3ZXIgYGF0aDEya2AsIGhhdmUgYW55IGtpbmQgb2Ygc2ltdWxhdGVkIGhhcmR3YXJlIGVudmlyb25tZW50PyBTb21ldGhpbmcgbGlrZSBhIGBod3NpbWAgc2V0dXAsIHBlcmhhcHM/IEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSdzIGEgbWVjaGFuaXNtIGF2YWlsYWJsZSB0byBlbXVsYXRlIG9yIHNpbXVsYXRlIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIHdoaWNoIHdvdWxkIGJlIGludmFsdWFibGUgZm9yIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50LCBlc3BlY2lhbGx5IHdoZW4gYWN0dWFsIGhhcmR3YXJlIGlzbid0IHJlYWRpbHkgYWNjZXNzaWJsZS4gTGV0J3Mgc2VlIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBsaWtlIHRoYXQgYXZhaWxhYmxlIGZvciB0aGVzZSBwYXJ0aWN1bGFyIGRyaXZlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODM3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjQ3LjEwNTMxMjYzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzExMjM3MDMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjQ3LjI3NjQ0NDgxNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NTkxMTg0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhdGgxMWsgYW5kIGF0aDEyayBEcml2ZXJzKipcblxuT2theSwgc28gYG1hYzgwMjExX2h3c2ltYCBpcyB0aGF0IGdlbmVyaWMgbWFjODAyMTEgZHJpdmVyIOKAkyByaWdodCwgZ290IGl0LiBUaGlzIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGBhdGgxMWtgIGFuZCBgYXRoMTJrYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGVzZSBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHNpbmNlIHRoZXkgc2VlbSB0byBkZXBlbmQgb24gcGh5c2ljYWwgaGFyZHdhcmUgKFBDSSBvciBBSEIpP1xuXG5UaGUgdXN1YWwgYXBwcm9hY2ggZm9yIFBDSSBkZXZpY2VzIGludm9sdmVzIGVpdGhlciBhIHZpcnR1YWwgUENJIGRldmljZSBvciBsZXZlcmFnaW5nIHNvbWV0aGluZyBsaWtlIGB2aGNpYCBmb3IgVVNCIG9yIGB2ZmlvYCBmb3IgUENJIHdpdGhpbiBTeXprYWxsZXIuIFN5emthbGxlciBoYXMgdGhlIGBzeXpfcGNpX2RldmljZWAgY2FsbCwgYnV0IHRoYXQgKnJlcXVpcmVzKiB0aGUgZHJpdmVyIHRvIGJpbmQgdG8gYSBQQ0kgZGV2aWNlLiBBbmQsIEkgdGhpbmsgU3l6a2FsbGVyIGRvZXMgdXNlIGB2aGNpYCBmb3IgVVNCIGluamVjdGlvbi4gQnV0LCBjYW4gaXQgYWxzbyBlbXVsYXRlIFBDSSBkZXZpY2VzLCBvciBkb2VzIGl0IHVzZSBgc3l6X3BjaV9kZXZpY2VgIGZvciB0aGF0PyBXYWl0LCBkb2VzIFN5emthbGxlciAqYWN0dWFsbHkqIHN1cHBvcnQgZnV6emluZyBQQ0kgZHJpdmVycz9cblxuWWVzLCBhZnRlciBhIHF1aWNrIHJlbWluZGVyLCBTeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgZnV6emluZyBQQ0kgZHJpdmVycywgZWl0aGVyIGRpcmVjdGx5IHRocm91Z2ggYHN5el9wY2lfZGV2aWNlYCBvciBzaW1pbGFyIG1lY2hhbmlzbXMsIG9yIHBvdGVudGlhbGx5IGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlLiBCdXQgaGVyZSdzIHRoZSBraWNrZXI6IHdpdGggY29tcGxleCB3aXJlbGVzcyBkcml2ZXJzIGxpa2UgYGF0aDExa2AsIHJlYWNoaW5nIGFueSBtZWFuaW5nZnVsIGNvZGUgZGVwdGggd2l0aG91dCBhIGZ1bGwgaGFyZHdhcmUgZW11bGF0b3IgaXMgaW5jcmVkaWJseSBkaWZmaWN1bHQuIFRoZXNlIGRyaXZlcnMgYXJlIGZpbmlja3kg4oCTIHRoZXkncmUgZXhwZWN0aW5nIHNwZWNpZmljIGZpcm13YXJlIHRvIGxvYWQsIHZlcnkgc3BlY2lmaWMgRE1BIHJpbmdzIHRvIGJlIHNldCB1cCBpbiBhIHNwZWNpZmljIHdheSwgYW5kIHByZWNpc2UgcmVzcG9uc2VzIGZyb20gdGhlIGhhcmR3YXJlLlxuXG5TbywgdGhlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNoZWNrIGlmIGBhdGgxMWtgIG9yIGBhdGgxMmtgIGNhbiBldmVuIGluaXRpYWxpemUgd2l0aG91dCB0aGF0IGZpcm13YXJlLCBvciBpZiB0aGV5IGp1c3QgZmFpbCBlYXJseS4gVGhhdCB3b3VsZCBiZSB0aGUgZmlyc3QgaHVyZGxlIGluIHNlZWluZyBob3cgdXNlZnVsIHRoaXMgcGF0Y2ggd291bGQgYmUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTY5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEwOjUzLjkzNTU2NjI4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDI0NTU3MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVxdWVzdF9maXJtd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jOjExOnN0YXRpYyBpbnQgYXRoMTFrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDExa19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmMtMTItXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2Z3LmM9MTQ3PWludCBhdGgxMWtfZndfcHJlX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZncuYy0xNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jOjE1MTpcXHRyZXQgPSBhdGgxMWtfZndfcmVxdWVzdF9maXJtd2FyZV9hcGlfbihhYiwgQVRIMTFLX0ZXX0FQSTJfRklMRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9mdy5jLTE1Mi1cXHRpZiAocmV0ID09IDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6NTQuMTc4MDI5MTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDQyMDk2MjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpczogaWYgdGhpcyBgYXRoMTFrYCBkcml2ZXIgbmVlZHMgZmlybXdhcmUgdG8gcnVuLCBpdCdzIGdvaW5nIHRvIGJlIGEgZGlzYXN0ZXIgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIGNvcnJlY3QgZmlybXdhcmUgbG9hZGVkIGFuZCB0aGUgaGFyZHdhcmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQncyBhIGNsYXNzaWMgcGl0ZmFsbC4gQnV0IHdhaXQsIGl0J3Mgbm90IGp1c3QgdGhlIGRyaXZlciBpdHNlbGYuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYG5ldC9tYWM4MDIxMS90eC5jYCBhbmQgYGluY2x1ZGUvbmV0L21hYzgwMjExLmhgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IGl0J3MgZXh0ZW5kaW5nIHRoZSBjb3JlIE1BQzgwMjExIGZ1bmN0aW9uYWxpdHkuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBhIG5ldyBmdW5jdGlvbiwgYGllZWU4MDIxMV90eF9wZWVrYCwgaGFzIGJlZW4gYWRkZWQgdG8gYG5ldC9tYWM4MDIxMS90eC5jYCBhbmQgZXhwb3J0ZWQuIFRoaXMgbWFrZXMgaXQgYSBwYXJ0IG9mIHRoZSBjb3JlIG1hYzgwMjExLCBtZWFuaW5nIGl0J3MgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGZyb20gbXVsdGlwbGUgZHJpdmVycy4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBuZXcgZnVuY3Rpb24uIENhbiB0aGlzIGBpZWVlODAyMTFfdHhfcGVla2AgYWN0dWFsbHkgYmUgdHJpZ2dlcmVkLCBvciBpcyBpdCBpc29sYXRlZD9cblxuT2theSwgZnJvbSB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20gYGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZWAgYW5kIGBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWVgLiBUaGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gYSBiaXQuIEJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgc2hvdWxkIGNoZWNrIGlmIGFueSBvdGhlciBkcml2ZXJzLCBiZXNpZGVzIHRob3NlIHR3bywgYXJlIHV0aWxpemluZyBgaWVlZTgwMjExX3R4X3BlZWtgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgSSBoYXZlIGNvdmVyZWQgYWxsIHRoZSBiYXNlcyBvZiBob3cgdGhlIGZ1enppbmcgaXMgd29ya2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxODYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTA6NTkuMjIwMTI4MzcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTQwNjM3MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV90eF9wZWVrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwMDY4PXN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDA5MTpcXHRcXHRwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTItXFx0XFx0aWYgKCFwZWVrX3NrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz0xMTAzPXN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoxMTMyOlxcdFxcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExMzMtXFx0XFx0aWYgKCFwZWVrX3NrYilcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc0Mj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NDUtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzQ2OiAqIGllZWU4MDIxMV90eF9wZWVrIC0gcGVlayBhdCB0aGUgbmV4dCBwYWNrZXQgaW4gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc0Ny0gKlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYxLSAqL1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzc2Mjpjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzgwOT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzg1OS1cXG5uZXQvbWFjODAyMTEvdHguYzozODYwOmNvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvdHguYy0zODYxLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zODk2LX1cXG5uZXQvbWFjODAyMTEvdHguYzozODk3OkVYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV90eF9wZWVrKTtcXG5uZXQvbWFjODAyMTEvdHguYy0zODk4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMTowMi4xNjA3NzA5NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxODAwNzMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgaWVlZTgwMjExX3R4X3BlZWtgIGluIGEgVmlydHVhbGl6ZWQgQ29udGV4dCoqXG5cbk9rYXksIHNvIGl0IHNlZW1zIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBhdGgxMWtgIGFuZCBgYXRoMTJrYCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBJZiwgaHlwb3RoZXRpY2FsbHksIEkgY2FuJ3QgZ2V0IGBhdGgxMWtgIG9yIGBhdGgxMmtgIGluaXRpYWxpemVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGVuIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gdGhhdCBzY2VuYXJpby4gVGhhdCdzIHRoZSBjb3JlIHF1ZXN0aW9uIGhlcmU6IGNhbiBJIGdldCBlaXRoZXIgb2YgdGhvc2UgZHJpdmVycyB1cCBhbmQgcnVubmluZyBpbiBRRU1VP1xuXG5NeSBleHBlcmllbmNlIHN1Z2dlc3RzIFBDSSBkcml2ZXJzLCBpbiBnZW5lcmFsLCBhcmUgdXN1YWxseSBwcm9iZWFibGUgaWYgYSB2aXJ0dWFsIFBDSSBkZXZpY2UgZXhpc3RzLiBBbmQsIG9mIGNvdXJzZSwgdGhlcmUncyBhbHdheXMgdGhlIHBvc3NpYmlsaXR5IHRoYXQgYHN5emthbGxlcmAncyBgc3l6X3BjaV9kZXZpY2VgIGNvdWxkIHRyaWdnZXIgdGhhdCBwcm9iZSBmdW5jdGlvbi4gSG93ZXZlciwgSSdtIGFudGljaXBhdGluZyB0aGF0IGV2ZW4gaWYgdGhlIGBhdGgxMWtgIHByb2JlICpkb2VzKiBnZXQgY2FsbGVkLCBpdCdsbCBwcm9iYWJseSBmYWlsIHByZXR0eSBlYXJseSBvbiwgc3BlY2lmaWNhbGx5IHdoZW4gaXQgdHJpZXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgb3Igd2hlbiBpdCdzIHRyeWluZyB0byBsb2FkIHRoZSBmaXJtd2FyZS4gVGhhdCdzIGEgY2xhc3NpYyBzdHVtYmxpbmcgYmxvY2sgaW4gdmlydHVhbGl6YXRpb24uXG5cblRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsaWtlbHkgZmFpbHVyZSBwb2ludHMsIEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBhdGgxMWtfcGNpX3Byb2JlYCBmdW5jdGlvbiBpdHNlbGYuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjAwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjA2Ljk3ODc4MDQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg1Njk2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfcGNpX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ5OnN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk1MC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEyOTY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0aDExa19wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVxcdC5pZF90YWJsZSA9IGF0aDExa19wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMjk5OlxcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzAwLVxcdC5yZW1vdmUgPSBhdGgxMWtfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MDcuMDQxNjQyMTQzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2OTI1NjA5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiBgYXRoMTFrX3BjaV9wcm9iZWAuIFRoaXMgaXMgd2hlcmUgdGhlIGluaXRpYWwgc2V0dXAgYW5kIGluaXRpYWxpemF0aW9uIGZvciB0aGUgUENJLWJhc2VkIFF1YWxjb21tIEF0aGVyb3MgV2ktRmkgZHJpdmVyIGhhcHBlbnMsIHNvIGl0J3MgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBkb2luZyBzbyBJIGNhbiBxdWlja2x5IGFuZCBlZmZpY2llbnRseSBkZXRlcm1pbmUgaWYgYW55IGVycm9ycyBvY2N1ciwgb3IgaWYgdGhlcmUgaXMgdGhlIG5lZWQgdG8gYWRqdXN0IHRoZSBkcml2ZXIuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDY4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MDkuNzM0MjA1NDgyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk0OSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5NDk6XFx0c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiA5NTA6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxcbiA5NTE6XFx0e1xcbiA5NTI6XFx0XFx0c3RydWN0IGF0aDExa19iYXNlICphYjtcXG4gOTUzOlxcdFxcdHN0cnVjdCBhdGgxMWtfcGNpICphYl9wY2k7XFxuIDk1NDpcXHRcXHR1MzIgc29jX2h3X3ZlcnNpb25fbWFqb3IsIHNvY19od192ZXJzaW9uX21pbm9yO1xcbiA5NTU6XFx0XFx0aW50IHJldDtcXG4gOTU2OlxcdFxcdHUzMiBzdWJfdmVyc2lvbjtcXG4gOTU3OlxcdFxcbiA5NTg6XFx0XFx0YWIgPSBhdGgxMWtfY29yZV9hbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKmFiX3BjaSksIEFUSDExS19CVVNfUENJKTtcXG4gOTU5OlxcdFxcbiA5NjA6XFx0XFx0aWYgKCFhYikge1xcbiA5NjE6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIGF0aDExayBiYXNlXFxcXG5cXFwiKTtcXG4gOTYyOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA5NjM6XFx0XFx0fVxcbiA5NjQ6XFx0XFxuIDk2NTpcXHRcXHRhYi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4gOTY2OlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBhYik7XFxuIDk2NzpcXHRcXHRhYl9wY2kgPSBhdGgxMWtfcGNpX3ByaXYoYWIpO1xcbiA5Njg6XFx0XFx0YWJfcGNpLVxcdTAwM2VkZXZfaWQgPSBwY2lfZGV2LVxcdTAwM2VkZXZpY2U7XFxuIDk2OTpcXHRcXHRhYl9wY2ktXFx1MDAzZWFiID0gYWI7XFxuIDk3MDpcXHRcXHRhYl9wY2ktXFx1MDAzZXBkZXYgPSBwZGV2O1xcbiA5NzE6XFx0XFx0YWItXFx1MDAzZWhpZi5vcHMgPSBcXHUwMDI2YXRoMTFrX3BjaV9oaWZfb3BzO1xcbiA5NzI6XFx0XFx0YWItXFx1MDAzZWZ3X21vZGUgPSBBVEgxMUtfRklSTVdBUkVfTU9ERV9OT1JNQUw7XFxuIDk3MzpcXHRcXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWIpO1xcbiA5NzQ6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFiX3BjaS1cXHUwMDNld2luZG93X2xvY2spO1xcbiA5NzU6XFx0XFxuIDk3NjpcXHRcXHQvKiBTZXQgZml4ZWRfbWVtX3JlZ2lvbiB0byB0cnVlIGZvciBwbGF0Zm9ybXMgc3VwcG9ydCByZXNlcnZlZCBtZW1vcnlcXG4gOTc3OlxcdFxcdCAqIGZyb20gRFQuIElmIG1lbW9yeSBpcyByZXNlcnZlZCBmcm9tIERUIGZvciBGVywgYXRoMTFrIGRyaXZlciBuZWVkIG5vdFxcbiA5Nzg6XFx0XFx0ICogYWxsb2NhdGUgbWVtb3J5LlxcbiA5Nzk6XFx0XFx0ICovXFxuIDk4MDpcXHRcXHRpZiAob2ZfcHJvcGVydHlfcHJlc2VudChhYi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwibWVtb3J5LXJlZ2lvblxcXCIpKVxcbiA5ODE6XFx0XFx0XFx0c2V0X2JpdChBVEgxMUtfRkxBR19GSVhFRF9NRU1fUkdOLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncyk7XFxuIDk4MjpcXHRcXG4gOTgzOlxcdFxcdHJldCA9IGF0aDExa19wY2lfY2xhaW0oYWJfcGNpLCBwZGV2KTtcXG4gOTg0OlxcdFxcdGlmIChyZXQpIHtcXG4gOTg1OlxcdFxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gY2xhaW0gZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4gOTg2OlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfY29yZTtcXG4gOTg3OlxcdFxcdH1cXG4gOTg4OlxcdFxcbiA5ODk6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19CT09ULCBcXFwicGNpIHByb2JlICUwNHg6JTA0eCAlMDR4OiUwNHhcXFxcblxcXCIsXFxuIDk5MDpcXHRcXHRcXHQgICBwZGV2LVxcdTAwM2V2ZW5kb3IsIHBkZXYtXFx1MDAzZWRldmljZSxcXG4gOTkxOlxcdFxcdFxcdCAgIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIHBkZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UpO1xcbiA5OTI6XFx0XFxuIDk5MzpcXHRcXHRhYi1cXHUwMDNlaWQudmVuZG9yID0gcGRldi1cXHUwMDNldmVuZG9yO1xcbiA5OTQ6XFx0XFx0YWItXFx1MDAzZWlkLmRldmljZSA9IHBkZXYtXFx1MDAzZWRldmljZTtcXG4gOTk1OlxcdFxcdGFiLVxcdTAwM2VpZC5zdWJzeXN0ZW1fdmVuZG9yID0gcGRldi1cXHUwMDNlc3Vic3lzdGVtX3ZlbmRvcjtcXG4gOTk2OlxcdFxcdGFiLVxcdTAwM2VpZC5zdWJzeXN0ZW1fZGV2aWNlID0gcGRldi1cXHUwMDNlc3Vic3lzdGVtX2RldmljZTtcXG4gOTk3OlxcdFxcbiA5OTg6XFx0XFx0c3dpdGNoIChwY2lfZGV2LVxcdTAwM2VkZXZpY2UpIHtcXG4gOTk5OlxcdFxcdGNhc2UgUUNBNjM5MF9ERVZJQ0VfSUQ6XFxuMTAwMDpcXHRcXHRcXHRyZXQgPSBhdGgxMWtfcGNpY19yZWdpc3Rlcl9wY2lfb3BzKGFiLCBcXHUwMDI2YXRoMTFrX3BjaV9vcHNfcWNhNjM5MCk7XFxuMTAwMTpcXHRcXHRcXHRpZiAocmV0KSB7XFxuMTAwMjpcXHRcXHRcXHRcXHRhdGgxMWtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIFBDSSBvcHM6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjEwMDM6XFx0XFx0XFx0XFx0Z290byBlcnJfcGNpX2ZyZWVfcmVnaW9uO1xcbjEwMDQ6XFx0XFx0XFx0fVxcbjEwMDU6XFx0XFxuMTAwNjpcXHRcXHRcXHRhdGgxMWtfcGNpX3JlYWRfaHdfdmVyc2lvbihhYiwgXFx1MDAyNnNvY19od192ZXJzaW9uX21ham9yLFxcbjEwMDc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnNvY19od192ZXJzaW9uX21pbm9yKTtcXG4xMDA4OlxcdFxcdFxcdHN3aXRjaCAoc29jX2h3X3ZlcnNpb25fbWFqb3IpIHtcXG4xMDA5OlxcdFxcdFxcdGNhc2UgMjpcXG4xMDEwOlxcdFxcdFxcdFxcdGFiLVxcdTAwM2Vod19yZXYgPSBBVEgxMUtfSFdfUUNBNjM5MF9IVzIwO1xcbjEwMTE6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTAxMjpcXHRcXHRcXHRkZWZhdWx0OlxcbjEwMTM6XFx0XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiVW5zdXBwb3J0ZWQgUUNBNjM5MCBTT0MgaGFyZHdhcmUgdmVyc2lvbjogJWQgJWRcXFxcblxcXCIsXFxuMTAxNDpcXHRcXHRcXHRcXHRcXHRzb2NfaHdfdmVyc2lvbl9tYWpvciwgc29jX2h3X3ZlcnNpb25fbWlub3IpO1xcbjEwMTU6XFx0XFx0XFx0XFx0cmV0ID0gLUVPUE5PVFNVUFA7XFxuMTAxNjpcXHRcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTAxNzpcXHRcXHRcXHR9XFxuMTAxODpcXHRcXG4xMDE5OlxcdFxcdFxcdGJyZWFrO1xcbjEwMjA6XFx0XFx0Y2FzZSBRQ045MDc0X0RFVklDRV9JRDpcXG4xMDIxOlxcdFxcdFxcdHJldCA9IGF0aDExa19wY2ljX3JlZ2lzdGVyX3BjaV9vcHMoYWIsIFxcdTAwMjZhdGgxMWtfcGNpX29wc19xY245MDc0KTtcXG4xMDIyOlxcdFxcdFxcdGlmIChyZXQpIHtcXG4xMDIzOlxcdFxcdFxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgUENJIG9wczogJWRcXFxcblxcXCIsIHJldCk7XFxuMTAyNDpcXHRcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTAyNTpcXHRcXHRcXHR9XFxuMTAyNjpcXHRcXHRcXHRhYi1cXHUwMDNlaHdfcmV2ID0gQVRIMTFLX0hXX1FDTjkwNzRfSFcxMDtcXG4xMDI3OlxcdFxcdFxcdGJyZWFrO1xcbjEwMjg6XFx0XFx0Y2FzZSBXQ042ODU1X0RFVklDRV9JRDpcXG4xMDI5OlxcdFxcdFxcdHJldCA9IGF0aDExa19wY2ljX3JlZ2lzdGVyX3BjaV9vcHMoYWIsIFxcdTAwMjZhdGgxMWtfcGNpX29wc19xY2E2MzkwKTtcXG4xMDMwOlxcdFxcdFxcdGlmIChyZXQpIHtcXG4xMDMxOlxcdFxcdFxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gcmVnaXN0ZXIgUENJIG9wczogJWRcXFxcblxcXCIsIHJldCk7XFxuMTAzMjpcXHRcXHRcXHRcXHRnb3RvIGVycl9wY2lfZnJlZV9yZWdpb247XFxuMTAzMzpcXHRcXHRcXHR9XFxuMTAzNDpcXHRcXHRcXHRhYi1cXHUwMDNlaWQuYmRmX3NlYXJjaCA9IEFUSDExS19CREZfU0VBUkNIX0JVU19BTkRfQk9BUkQ7XFxuMTAzNTpcXHRcXHRcXHRhdGgxMWtfcGNpX3JlYWRfaHdfdmVyc2lvbihhYiwgXFx1MDAyNnNvY19od192ZXJzaW9uX21ham9yLFxcbjEwMzY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnNvY19od192ZXJzaW9uX21pbm9yKTtcXG4xMDM3OlxcdFxcdFxcdHN3aXRjaCAoc29jX2h3X3ZlcnNpb25fbWFqb3IpIHtcXG4xMDM4OlxcdFxcdFxcdGNhc2UgMjpcXG4xMDM5OlxcdFxcdFxcdFxcdHN3aXRjaCAoc29jX2h3X3ZlcnNpb25fbWlub3IpIHtcXG4xMDQwOlxcdFxcdFxcdFxcdGNhc2UgMHgwMDpcXG4xMDQxOlxcdFxcdFxcdFxcdGNhc2UgMHgwMTpcXG4xMDQyOlxcdFxcdFxcdFxcdFxcdGFiLVxcdTAwM2Vod19yZXYgPSBBVEgxMUtfSFdfV0NONjg1NV9IVzIwO1xcbjEwNDM6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTA0NDpcXHRcXHRcXHRcXHRjYXNlIDB4MTA6XFxuMTA0NTpcXHRcXHRcXHRcXHRjYXNlIDB4MTE6XFxuMTA0NjpcXHRcXHRcXHRcXHRcXHRzdWJfdmVyc2lvbiA9IGF0aDExa19wY2ljX3JlYWQzMihhYiwgVENTUl9TT0NfSFdfU1VCX1ZFUik7XFxuMTA0NzpcXHRcXHRcXHRcXHRcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX1BDSSwgXFxcInN1Yl92ZXJzaW9uIDB4JXhcXFxcblxcXCIsXFxuMTA0ODpcXHRcXHRcXHRcXHRcXHRcXHQgICBzdWJfdmVyc2lvbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjA5LjczNDM0NDI2MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI5NzI0OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZ1bG5lcmFiaWxpdHkgRXhwbG9yYXRpb24gaW4gYXRoMTFrIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGluIGBhdGgxMWtgIHJlbGllcyBvbiBgYXRoMTFrX3BjaV9yZWFkX2h3X3ZlcnNpb25gIGFuZCBgYXRoMTFrX3BjaWNfcmVhZDMyYCB0byByZWFkIHRoZSBoYXJkd2FyZSB2ZXJzaW9uLiBNeSBpbml0aWFsIGNvbmNlcm4gaXMgdGhhdCBpZiBhIGZ1enplciwgc3BlY2lmaWNhbGx5IG9uZSBsaWtlIGBzeXpfcGNpX2RldmljZWAsIGlzIG1hbmlwdWxhdGluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIG1lbW9yeS1tYXBwZWQgSS9PLCBpdCBjYW4gZWZmZWN0aXZlbHkgc3Bvb2YgdGhlc2UgaGFyZHdhcmUgdmVyc2lvbiByZWFkcy4gVGhpcyBjb3VsZCBhbGxvdyBpdCB0byBieXBhc3MgdGhlIGludGVuZGVkIGNoZWNrcyBhbmQgcG90ZW50aWFsbHkgdHJpZ2dlciBzdWJzZXF1ZW50LCB1bmludGVuZGVkIGNvZGUgcGF0aHMuXG5cblRoZSBrZXkgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gdGhlIGZ1enplciB1c2UgdGhhdCBzcG9vZmVkIGluZm9ybWF0aW9uIHRvIGJ5cGFzcyB0aGUgcmVxdWlyZW1lbnQgb2YgZmlybXdhcmUgdG8gYmUgbG9hZGVkPyBJIG5lZWQgdG8ga25vdyBpZiB0aGUgYGF0aDExa2AgZHJpdmVyIGhhcyBjaGVja3MgZm9yIGZpcm13YXJlLiBJZiBpdCBkb2VzLCB0aGVuIHRoZSBhYmlsaXR5IHRvIG1hbmlwdWxhdGUgdGhlIGhhcmR3YXJlIHZlcnNpb24gbWF5IGFsbG93IHRoZSBmdXp6ZXIgdG8gYnlwYXNzIGNoZWNrcyByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcuXG5cbkkgc2hvdWxkIGludmVzdGlnYXRlIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgcGVyaGFwcyBzb21ldGhpbmcgbGlrZSBgYXRoMTFrX2NvcmVfaW5pdGAsIHRvIGNvbmZpcm0gaWYgZmlybXdhcmUgbG9hZGluZyBpcyBpbmRlZWQgZXNzZW50aWFsIGFuZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBoYXJkd2FyZSB2ZXJzaW9ucyBhcmUgdXRpbGl6ZWQgaW4gdGhhdCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU2NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjE0LjM2NDA3MTA0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczODc1NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTFrX2NvcmVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTExMDg9c3RhdGljIGludCBhdGgxMWtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTk1OlxcdHJldCA9IGF0aDExa19jb3JlX2luaXQoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTE5Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yNjg0PUVYUE9SVF9TWU1CT0woYXRoMTFrX2NvcmVfcG1fbm90aWZpZXJfdW5yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjY4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyNjg2OmludCBhdGgxMWtfY29yZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjY4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yNzE3LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyNzE4OkVYUE9SVF9TWU1CT0woYXRoMTFrX2NvcmVfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjcxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oPTEyNzA9aW50IGF0aDExa19jb3JlX3ByZV9pbml0KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oOjEyNzE6aW50IGF0aDExa19jb3JlX2luaXQoc3RydWN0IGF0aDExa19iYXNlICphdGgxMWspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oLTEyNzItdm9pZCBhdGgxMWtfY29yZV9kZWluaXQoc3RydWN0IGF0aDExa19iYXNlICphdGgxMWspO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDk9c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTE0MDpcXHRyZXQgPSBhdGgxMWtfY29yZV9pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTExNDEtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMToxNC40MjE0NjU5NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTU3MzAxOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgYXRoMTFrX2NvcmVfaW5pdGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29yZSBvZiB0aGlzIGRyaXZlciBpbml0aWFsaXplcywgd2hhdCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGFyZS4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHNldCB1cCwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBiZWluZyBhY2Nlc3NlZCwgYW5kIGFueSBjcnVjaWFsIGVhcmx5IGNoZWNrcyBvciBjb25maWd1cmF0aW9ucy4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIOKAkyBpdCdzIG9mdGVuIHRoZSBzZXF1ZW5jZSB0aGF0IHJldmVhbHMgdGhlIG1vc3QgaW1wb3J0YW50IGRlcGVuZGVuY2llcy4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueXRoaW5nIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBvciBjbG9jayBzZXR1cCwgYXMgdGhvc2UgYXJlIG9mdGVuIGNyaXRpY2FsIGZvciBhIG5ldyBkZXZpY2UgYW5kIGNhbiBhZmZlY3QgZXZlcnl0aGluZyB0aGF0IGZvbGxvd3MuIEkgZXhwZWN0IHRoZXJlIHRvIGJlIGEgbG90IG9mIGhhcmR3YXJlLXNwZWNpZmljIGRldGFpbCwgYnV0IEknbGwgZm9jdXMgb24gdGhlIGhpZ2hlci1sZXZlbCBsb2dpYy4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGUgZHJpdmVyJ3MgZW50cnkgcG9pbnQgYW5kIG92ZXJhbGwgc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODYyMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjE4LjU3ODc2OTkxMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjY4NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjY4NjpcXHRpbnQgYXRoMTFrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbjI2ODc6XFx0e1xcbjI2ODg6XFx0XFx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcXG4yNjg5OlxcdFxcdGludCByZXQ7XFxuMjY5MDpcXHRcXG4yNjkxOlxcdFxcdGRtaV9pZCA9IGRtaV9maXJzdF9tYXRjaChhdGgxMWtfcG1fcXVpcmtfdGFibGUpO1xcbjI2OTI6XFx0XFx0aWYgKGRtaV9pZClcXG4yNjkzOlxcdFxcdFxcdGFiLVxcdTAwM2VwbV9wb2xpY3kgPSAoa2VybmVsX3Vsb25nX3QpZG1pX2lkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4yNjk0OlxcdFxcdGVsc2VcXG4yNjk1OlxcdFxcdFxcdGFiLVxcdTAwM2VwbV9wb2xpY3kgPSBBVEgxMUtfUE1fREVGQVVMVDtcXG4yNjk2OlxcdFxcbjI2OTc6XFx0XFx0YXRoMTFrX2RiZyhhYiwgQVRIMTFLX0RCR19CT09ULCBcXFwicG0gcG9saWN5ICV1XFxcXG5cXFwiLCBhYi1cXHUwMDNlcG1fcG9saWN5KTtcXG4yNjk4OlxcdFxcbjI2OTk6XFx0XFx0cmV0ID0gYXRoMTFrX2NvcmVfcG1fbm90aWZpZXJfcmVnaXN0ZXIoYWIpO1xcbjI3MDA6XFx0XFx0aWYgKHJldCkge1xcbjI3MDE6XFx0XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byByZWdpc3RlciBQTSBub3RpZmllcjogJWRcXFxcblxcXCIsIHJldCk7XFxuMjcwMjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjI3MDM6XFx0XFx0fVxcbjI3MDQ6XFx0XFxuMjcwNTpcXHRcXHRyZXQgPSBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKGFiKTtcXG4yNzA2OlxcdFxcdGlmIChyZXQpIHtcXG4yNzA3OlxcdFxcdFxcdGF0aDExa19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gY3JlYXRlIHNvYyBjb3JlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4yNzA4OlxcdFxcdFxcdGdvdG8gZXJyX3VucmVnaXN0ZXJfcG1fbm90aWZpZXI7XFxuMjcwOTpcXHRcXHR9XFxuMjcxMDpcXHRcXG4yNzExOlxcdFxcdHJldHVybiAwO1xcbjI3MTI6XFx0XFxuMjcxMzpcXHRlcnJfdW5yZWdpc3Rlcl9wbV9ub3RpZmllcjpcXG4yNzE0OlxcdFxcdGF0aDExa19jb3JlX3BtX25vdGlmaWVyX3VucmVnaXN0ZXIoYWIpO1xcbjI3MTU6XFx0XFxuMjcxNjpcXHRcXHRyZXR1cm4gcmV0O1xcbjI3MTc6XFx0fVxcbjI3MTg6XFx0RVhQT1JUX1NZTUJPTChhdGgxMWtfY29yZV9pbml0KTtcXG4yNzE5OlxcdFxcbjI3MjA6XFx0dm9pZCBhdGgxMWtfY29yZV9kZWluaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4yNzIxOlxcdHtcXG4yNzIyOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmFiLVxcdTAwM2Vjb3JlX2xvY2spO1xcbjI3MjM6XFx0XFxuMjcyNDpcXHRcXHRhdGgxMWtfY29yZV9wZGV2X2Rlc3Ryb3koYWIpO1xcbjI3MjU6XFx0XFx0YXRoMTFrX2NvcmVfc3RvcChhYik7XFxuMjcyNjpcXHRcXG4yNzI3OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2YWItXFx1MDAzZWNvcmVfbG9jayk7XFxuMjcyODpcXHRcXG4yNzI5OlxcdFxcdGF0aDExa19oaWZfcG93ZXJfZG93bihhYiwgZmFsc2UpO1xcbjI3MzA6XFx0XFx0YXRoMTFrX21hY19kZXN0cm95KGFiKTtcXG4yNzMxOlxcdFxcdGF0aDExa19jb3JlX3NvY19kZXN0cm95KGFiKTtcXG4yNzMyOlxcdFxcdGF0aDExa19jb3JlX3BtX25vdGlmaWVyX3VucmVnaXN0ZXIoYWIpO1xcbjI3MzM6XFx0fVxcbjI3MzQ6XFx0RVhQT1JUX1NZTUJPTChhdGgxMWtfY29yZV9kZWluaXQpO1xcbjI3MzU6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjE4LjU3ODk1NDE0MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkxNDcxNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byBhdGgxMWtfY29yZV9zb2NfY3JlYXRlKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYCBpcyBtb3JlIGludm9sdmVkIHRoYW4ganVzdCBhIHNpbXBsZSBpbnN0YW50aWF0aW9uLCBpdCBhcHBlYXJzIHRvIGhhbmRsZSBzaWduaWZpY2FudCBpbml0aWFsaXphdGlvbiBzdGVwcy4gR2l2ZW4gaXRzIG5hbWluZyBjb252ZW50aW9uLCB0aGUgXCJzb2NcIiBwYXJ0IGxpa2VseSByZWZlcnMgdG8gU3lzdGVtLW9uLUNoaXAsIHdoaWNoIG1lYW5zIGl0IHByb2JhYmx5IGRlYWxzIHdpdGggY29uZmlndXJpbmcgaGFyZHdhcmUgcmVzb3VyY2VzIGFuZCBzZXR0aW5nIHVwIHRoZSBjb3JlIG9wZXJhdGluZyBlbnZpcm9ubWVudCBmb3IgdGhlIHdpcmVsZXNzIGNoaXAgb24gdGhlIGJvYXJkLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciB0aGlzIGZ1bmN0aW9uLCBzaW5jZSBpdCBpcyBhbiBpZGVhbCBwb2ludCB0byBmb2N1cyBvbiB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UuIExldCdzIHNlZSBleGFjdGx5IHdoYXQncyBnb2luZyBvbiB3aXRoaW4uIEl0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0IGlzIGdvaW5nIHRvIGJlIGtleSB0byBhbnkgZGVlcGVyIGFuYWx5c2lzIG9mIHRoZSBhdGgxMWsgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYzMywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MjEuODcwNDI4MTQ5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc3ODM1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfY29yZV9zb2NfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTE5NzM9c3RhdGljIHZvaWQgYXRoMTFrX2NvcmVfc3RvcChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMTk4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoxOTg1OnN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTE5ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjY4Nj1pbnQgYXRoMTFrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjcwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyNzA1OlxcdHJldCA9IGF0aDExa19jb3JlX3NvY19jcmVhdGUoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI3MDYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMToyMS45MjcyMTA0ODNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxNDg3MTQxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIGBhdGgxMWtfY29yZV9zb2NfY3JlYXRlYDpcblxuKipBbmFseXppbmcgYGF0aDExa19jb3JlX3NvY19jcmVhdGVgKipcblxuQWxyaWdodCwgSSdtIGRpZ2dpbmcgaW50byBgYXRoMTFrX2NvcmVfc29jX2NyZWF0ZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCB0aGlzIGZ1bmN0aW9uICpkb2VzKiBhdCBhIGhpZ2ggbGV2ZWwuIEZyb20gdGhlIG5hbWUsIGl0J3MgY2xlYXIgaXQncyBhYm91dCB0aGUgY3JlYXRpb24gb2Ygc29tZXRoaW5nIGNvcmUgdG8gdGhlIFNPQyAoU3lzdGVtLW9uLWEtQ2hpcCkgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBhdGgxMWsgZHJpdmVyLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGlzIGludm9sdmVzIGluaXRpYWxpemluZyBkYXRhIHN0cnVjdHVyZXMsIHByb2JhYmx5IGFsbG9jYXRpbmcgbWVtb3J5LCBhbmQgc2V0dGluZyB1cCB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVscyBuZWVkZWQgYmV0d2VlbiB0aGUgaG9zdCAobGlrZWx5IExpbnV4KSBhbmQgdGhlIGF0aDExayBoYXJkd2FyZS5cblxuSSBzdXNwZWN0IHRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgaW4gYnJpbmdpbmcgdXAgdGhlIHdpcmVsZXNzIGludGVyZmFjZS4gSXQncyBsaWtlbHkgc2V0dGluZyB1cCB0aGUgaW5pdGlhbCBzdGF0ZSBmb3IgcG93ZXIgbWFuYWdlbWVudCwgY2xvY2sgY29udHJvbCwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgbWF5YmUgZXZlbiBmaXJtd2FyZSBsb2FkaW5nIG9yIHRyaWdnZXJpbmcuIEknbGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIGFyZ3VtZW50cyBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIHNlZSB3aGF0IGRhdGEgaXQgdGFrZXMgYXMgaW5wdXQgYW5kIGhvdyBpdCdzIHVzZWQuIEJhc2VkIG9uIHRoYXQgaW5mb3JtYXRpb24sIEknbGwgYmUgYWJsZSB0byBjb25maXJtIG9yIGFkanVzdCBteSBpbml0aWFsIHRob3VnaHRzLiBJJ20gYWxzbyByZWFkeSB0byBhbmFseXplIHRoZSByZXR1cm4gdmFsdWUgdG8gYXNzZXNzIGhvdyBpdCByZXBvcnRzIGFueSBlcnJvcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTczLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MjUuNDQyMDgzODg5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOTg1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxOTg1OlxcdHN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbjE5ODY6XFx0e1xcbjE5ODc6XFx0XFx0aW50IHJldDtcXG4xOTg4OlxcdFxcbjE5ODk6XFx0XFx0aWYgKGF0aDExa19mdG1fbW9kZSkge1xcbjE5OTA6XFx0XFx0XFx0YWItXFx1MDAzZWZ3X21vZGUgPSBBVEgxMUtfRklSTVdBUkVfTU9ERV9GVE07XFxuMTk5MTpcXHRcXHRcXHRhdGgxMWtfaW5mbyhhYiwgXFxcIkJvb3RpbmcgaW4gZmFjdG9yeSB0ZXN0IG1vZGVcXFxcblxcXCIpO1xcbjE5OTI6XFx0XFx0fVxcbjE5OTM6XFx0XFxuMTk5NDpcXHRcXHRyZXQgPSBhdGgxMWtfcW1pX2luaXRfc2VydmljZShhYik7XFxuMTk5NTpcXHRcXHRpZiAocmV0KSB7XFxuMTk5NjpcXHRcXHRcXHRhdGgxMWtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIGluaXRpYWxpemUgcW1pIDolZFxcXFxuXFxcIiwgcmV0KTtcXG4xOTk3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMTk5ODpcXHRcXHR9XFxuMTk5OTpcXHRcXG4yMDAwOlxcdFxcdHJldCA9IGF0aDExa19kZWJ1Z2ZzX3NvY19jcmVhdGUoYWIpO1xcbjIwMDE6XFx0XFx0aWYgKHJldCkge1xcbjIwMDI6XFx0XFx0XFx0YXRoMTFrX2VycihhYiwgXFxcImZhaWxlZCB0byBjcmVhdGUgYXRoMTFrIGRlYnVnZnNcXFxcblxcXCIpO1xcbjIwMDM6XFx0XFx0XFx0Z290byBlcnJfcW1pX2RlaW5pdDtcXG4yMDA0OlxcdFxcdH1cXG4yMDA1OlxcdFxcbjIwMDY6XFx0XFx0cmV0ID0gYXRoMTFrX2hpZl9wb3dlcl91cChhYik7XFxuMjAwNzpcXHRcXHRpZiAocmV0KSB7XFxuMjAwODpcXHRcXHRcXHRhdGgxMWtfZXJyKGFiLCBcXFwiZmFpbGVkIHRvIHBvd2VyIHVwIDolZFxcXFxuXFxcIiwgcmV0KTtcXG4yMDA5OlxcdFxcdFxcdGdvdG8gZXJyX2RlYnVnZnNfcmVnO1xcbjIwMTA6XFx0XFx0fVxcbjIwMTE6XFx0XFxuMjAxMjpcXHRcXHRyZXR1cm4gMDtcXG4yMDEzOlxcdFxcbjIwMTQ6XFx0ZXJyX2RlYnVnZnNfcmVnOlxcbjIwMTU6XFx0XFx0YXRoMTFrX2RlYnVnZnNfc29jX2Rlc3Ryb3koYWIpO1xcbjIwMTY6XFx0ZXJyX3FtaV9kZWluaXQ6XFxuMjAxNzpcXHRcXHRhdGgxMWtfcW1pX2RlaW5pdF9zZXJ2aWNlKGFiKTtcXG4yMDE4OlxcdFxcdHJldHVybiByZXQ7XFxuMjAxOTpcXHR9XFxuMjAyMDpcXHRcXG4yMDIxOlxcdHN0YXRpYyB2b2lkIGF0aDExa19jb3JlX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuMjAyMjpcXHR7XFxuMjAyMzpcXHRcXHRhdGgxMWtfZGVidWdmc19zb2NfZGVzdHJveShhYik7XFxuMjAyNDpcXHRcXHRhdGgxMWtfZHBfZnJlZShhYik7XFxuMjAyNTpcXHRcXHRhdGgxMWtfcmVnX2ZyZWUoYWIpO1xcbjIwMjY6XFx0XFx0YXRoMTFrX3FtaV9kZWluaXRfc2VydmljZShhYik7XFxuMjAyNzpcXHR9XFxuMjAyODpcXHRcXG4yMDI5OlxcdHN0YXRpYyBpbnQgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4yMDMwOlxcdHtcXG4yMDMxOlxcdFxcdGludCByZXQ7XFxuMjAzMjpcXHRcXG4yMDMzOlxcdFxcdHJldCA9IGF0aDExa19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKGFiKTtcXG4yMDM0OlxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MjUuNDQyMjEzMjM5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzM1MjcxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgYXRoMTFrIERyaXZlciBTdGFydHVwKipcblxuT2theSwgc28gYGF0aDExa19jb3JlX3NvY19jcmVhdGVgIGlzIHRoZSBzdGFydGluZyBwb2ludCBoZXJlLiBJIHNlZSBpdCBjYWxscyBgYXRoMTFrX3FtaV9pbml0X3NlcnZpY2VgIGFuZCBgYXRoMTFrX2hpZl9wb3dlcl91cGAuIE1ha2VzIHNlbnNlLCBRTUkgaW5pdGlhbGl6YXRpb24gYW5kIGdldHRpbmcgdGhlIGhhcmR3YXJlIGludGVyZmFjZSB1cCBhbmQgcnVubmluZy4gTm93LCBgYXRoMTFrX2hpZl9wb3dlcl91cGAgbGlrZWx5IGhhbmRsZXMgdGhlIGxvdy1sZXZlbCBzdHVmZiwgYW5kIHllcCwgaXQgY2FsbHMgYGF0aDExa19wY2lfcG93ZXJfdXBgLCBpbmRpY2F0aW5nIHRoaXMgaXMgYSBQQ0ktc3BlY2lmaWMgZnVuY3Rpb24gZm9yIHBvd2VyIG1hbmFnZW1lbnQsIHdoaWNoIHNlZW1zIGxvZ2ljYWwgZ2l2ZW4gdGhlIGNvbnRleHQuXG5cbkJ1dCwgaGFuZyBvbiBhIHNlY29uZC4uLiB3aGVyZSBkb2VzIHRoZSBtYWM4MDIxMSBkZXZpY2UgcmVnaXN0cmF0aW9uIGhhcHBlbj8gSSBkb24ndCBzZWUgaXQgZXhwbGljaXRseSBjYWxsZWQgb3V0IGhlcmUgaW4gdGhlIHBvd2VyLXVwIHNlcXVlbmNlLiBJdCBtdXN0IGhhcHBlbiAqYWZ0ZXIqIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQsIHRoYXQgd291bGQgYmUgbG9naWNhbC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gTGV0IG1lIGRvIGEgcXVpY2sgc2VhcmNoIGFuZCBmaW5kIHdoZXJlIGBhdGgxMWtfbWFjX3JlZ2lzdGVyYCBpcyBhY3R1YWxseSBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHByb3ZpZGUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgdGhlIHRpbWluZyBvZiB0aGUgbWFjODAyMTEgZGV2aWNlIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhlIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNzgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMToyOS44NzU3NDMwMTNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjcwNzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19tYWNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjAyOT1zdGF0aWMgaW50IGF0aDExa19jb3JlX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIwNDU6XFx0cmV0ID0gYXRoMTFrX21hY19yZWdpc3RlcihhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjA0Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwNDgyPXZvaWQgYXRoMTFrX21hY191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA1MDA6c3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDUwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNzUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTA3NTE6aW50IGF0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNzUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDc4ODpcXHRcXHRyZXQgPSBfX2F0aDExa19tYWNfcmVnaXN0ZXIoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA3ODktXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmg9MTQwPXZvaWQgYXRoMTFrX21hY191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmg6MTQxOmludCBhdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmgtMTQyLWludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMToyOS45MzY0MTk1NDdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NTI3NDU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyBvZiBhdGgxMWsqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBhdGgxMWsgZHJpdmVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBUaGUgY29yZSBvZiB0aGlzLCBmcm9tIHdoYXQgSSdtIHNlZWluZywgaXMgdGhpcyBgYXRoMTFrX2NvcmVfcGRldl9jcmVhdGVgIGZ1bmN0aW9uLiBJIGtub3cgaXQncyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIHBoeXNpY2FsIGRldmljZSwgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoYXJkd2FyZS4gQW5kIGl0LCBpbiB0dXJuLCBjYWxscyBgYXRoMTFrX21hY19yZWdpc3RlcmAuIFNvLCB0aGUgcmVnaXN0cmF0aW9uIHdpdGggdGhlIE1BQyBsYXllciBpcyBkZXBlbmRlbnQgb24gdGhlIHBoeXNpY2FsIGRldmljZSBiZWluZyBjcmVhdGVkLCB3aGljaCBtYWtlcyBsb2dpY2FsIHNlbnNlLlxuXG5Ob3csIG15IGtleSBxdWVzdGlvbiBpczogd2hlcmUgaXMgYGF0aDExa19jb3JlX3BkZXZfY3JlYXRlYCBhY3R1YWxseSBjYWxsZWQgZnJvbT8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayAqdG8qIHRoYXQgZnVuY3Rpb24gaXMgY3JpdGljYWwgdG8gZmlndXJpbmcgb3V0IHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgdG8gZmluZCBpdHMgcGFyZW50IGZ1bmN0aW9uLCBhbmQgdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoZSB3aG9sZSBwcm9jZXNzLiBJcyBpdCBjYWxsZWQgZHVyaW5nIHByb2JlLCBvciBpcyB0aGVyZSBhbm90aGVyIGluaXRpYWxpemF0aW9uIHBhdGg/IEtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIHRlbGwgbWUgd2hhdCB0aGUgdHJpZ2dlcmluZyBldmVudCBpcyBhbmQgdGhlIGRlcGVuZGVuY2llcyBpbnZvbHZlZC4gSSBuZWVkIHRvIGZpbmQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGFuZCBkZXZpY2UgaW50ZXJhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMzAyLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6MzMuNjgxNjk2MTg5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM4NTU3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMDIxPXN0YXRpYyB2b2lkIGF0aDExa19jb3JlX3NvY19kZXN0cm95KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMDI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIwMjk6c3RhdGljIGludCBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIwMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM9MjI2MT1pbnQgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0yMzA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjIzMDc6XFx0cmV0ID0gYXRoMTFrX2NvcmVfcGRldl9jcmVhdGUoYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTIzMDgtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMTozMy43NDEwODc1NzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYzODU3MDk1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZpcm13YXJlIERlcGVuZGVuY3kgYW5kIEZ1enppbmcgU3RyYXRlZ2llcyoqXG5cbk9rYXksIHNvIGBhdGgxMWtfY29yZV9wZGV2X2NyZWF0ZWAgaXMgdHJpZ2dlcmVkIGJ5IGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgLiBUaGF0J3MgdGhlIGtleS4gVGhlIG1hYzgwMjExIGRldmljZSByZWdpc3RyYXRpb24gKmRlcGVuZHMqIG9uIHRoZSBRTUkgZmlybXdhcmUgYmVpbmcgcmVhZHkuIFJpZ2h0LiBRTUksIFF1YWxjb21tIE1lc3NhZ2UgSW50ZXJmYWNlLCB0YWxraW5nIHRvIHRoZSBkZXZpY2UgZmlybXdhcmUuIElmIHRoYXQgZmlybXdhcmUgaXNuJ3QgdXAgYW5kIHJ1bm5pbmcsIGBhdGgxMWtfY29yZV9xbWlfZmlybXdhcmVfcmVhZHlgIHdvbid0IGV2ZW4gaGFwcGVuLlxuXG5TbywgdGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIGEgZnV6emVyICpzaW11bGF0ZSogdGhhdCBRTUkgZmlybXdhcmUgcmVhZHkgc3RhdGU/IFN5emthbGxlciwgd2hpY2ggaXMgd2hhdCBJJ20gbG9va2luZyBhdCwgZG9lc24ndCBoYXZlIGEgUU1JIGVtdWxhdG9yIHNwZWNpZmljYWxseSBmb3IgYXRoMTFrLiBJIGtub3cgaXQgY2FuIGZ1enogUENJIGRldmljZXMsIGZha2luZyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPLiBCdXQgZmFraW5nICp0aGUgZW50aXJlKiBRTUkgcHJvdG9jb2wgYW5kIHRoZSB3aG9sZSBmaXJtd2FyZSBib290IHByb2Nlc3M/IEhpZ2hseSBpbXByb2JhYmxlIHdpdGgganVzdCByYW5kb20gbXV0YXRpb24uIFRoYXQncyBhIGh1Z2UgYXNrLlxuXG5XYWl0LiBEaWRuJ3QgU3l6a2FsbGVyIGhhdmUgYHN5el9wY2lfZGV2aWNlYD8gUmlnaHQsIEkgcmVtZW1iZXIuIEJ1dCBpdCBvZnRlbiBmYWxscyBzaG9ydCBvbiBjb21wbGV4IGRldmljZXMgdGhhdCByZXF1aXJlIGZpcm13YXJlLCB1bmxlc3MgdGhlcmUncyBzb21lIGtpbmQgb2YgKnNwZWNpZmljKiBlbXVsYXRvci5cblxuSGFuZyBvbuKApiB3aGF0IGFib3V0IGBtYWM4MDIxMV9od3NpbWA/IENvdWxkIHRoYXQgYmUgYW4gYXZlbnVlPyBJIGhhdmUgYSBwYXRjaCBoZXJlIHRoYXQgbW9kaWZpZXMgYG5ldC9tYWM4MDIxMS90eC5jYCBhbmQgYGluY2x1ZGUvbmV0L21hYzgwMjExLmhgLiBBaGEhIEl0IGFkZHMgYGllZWU4MDIxMV90eF9wZWVrYCB0byBgbWFjODAyMTFgLiBOb3csIGNhbiBgaWVlZTgwMjExX3R4X3BlZWtgIGJlIHJlYWNoZWQgZnJvbSBgbWFjODAyMTFfaHdzaW1gP1xuXG5Ob3BlLCBpdCBsb29rcyBsaWtlIGBpZWVlODAyMTFfdHhfcGVla2AgaXMgb25seSBjYWxsZWQgYnkgdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzLiBJdCdzIGRyaXZlciBzcGVjaWZpYy5cblxuT2theSwgbGV0J3MganVzdCBtYWtlIHN1cmUuIExldCBtZSBkb3VibGUgY2hlY2sgaWYgYGllZWU4MDIxMV90eF9wZWVrYCBpcyB1c2VkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUgYmFzZS4gR290dGEgYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI5NTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6NDEuMzc5NjYxMjk0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg3NDExOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV90eF9wZWVrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwMDY4PXN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDA5MTpcXHRcXHRwZWVrX3NrYiA9IGllZWU4MDIxMV90eF9wZWVrKGh3LCB0eHEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTAwOTItXFx0XFx0aWYgKCFwZWVrX3NrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz0xMTAzPXN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoxMTMyOlxcdFxcdHBlZWtfc2tiID0gaWVlZTgwMjExX3R4X3BlZWsoaHcsIHR4cSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExMzMtXFx0XFx0aWYgKCFwZWVrX3NrYilcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc0Mj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NDUtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzQ2OiAqIGllZWU4MDIxMV90eF9wZWVrIC0gcGVlayBhdCB0aGUgbmV4dCBwYWNrZXQgaW4gYSBzb2Z0d2FyZSB0eCBxdWV1ZVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc0Ny0gKlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYxLSAqL1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzc2Mjpjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX3R4X3BlZWsoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzYzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzgwOT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzg1OS1cXG5uZXQvbWFjODAyMTEvdHguYzozODYwOmNvbnN0IHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfcGVlayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5uZXQvbWFjODAyMTEvdHguYy0zODYxLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zODk2LX1cXG5uZXQvbWFjODAyMTEvdHguYzozODk3OkVYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV90eF9wZWVrKTtcXG5uZXQvbWFjODAyMTEvdHguYy0zODk4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMTo0My40NjcwNzkwMDNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzMzM2ODY0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBUaGlzIENvZGUqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUgc25pcHBldCBpcyBvbmx5IGNhbGxlZCBieSBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaWYgdGhlc2UgZHJpdmVycyBjYW4ndCBpbml0aWFsaXplIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGVuIHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSwgcmlnaHQ/IEJ1dCBob2xkIG9uLCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcy4gSXMgdGhlcmUgYW55IHdheSBgYXRoMTFrYCBvciBgYXRoMTJrYCBjb3VsZCBiZSBmdXp6ZWQgaW5kaXJlY3RseT9cblxuRm9yIGluc3RhbmNlLCB3aGF0IGFib3V0IHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWA/IFRoYXQgc2ltdWxhdGVzIGEgbWFjODAyMTEgZGV2aWNlLCBidXQgaXQgKmRvZXNuJ3QqIHVzZSBgYXRoMTFrYCBvciBgYXRoMTJrYC4gVGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBgd2FrZV90eF9xdWV1ZWAgaGFuZGxlciAqd2l0aGluKiBgYXRoMTFrYCBhbmQgYGF0aDEya2AgYW5kIGNoYW5nZXMgaXQgdG8gdXNlIGBpZWVlODAyMTFfdHhfcGVla2AuIFNpbmNlIHRob3NlIGRyaXZlcnMgZGVwZW5kIG9uIGFjdHVhbCBoYXJkd2FyZSBhbmQgc3BlY2lmaWMgZmlybXdhcmUgdG8gZXZlbiByZWFjaCB0aGUgcG9pbnQgd2hlcmUgdGhleSByZWdpc3RlciB3aXRoIG1hYzgwMjExIOKAkyBhbmQgKnRoZW4qIHRoZSBgd2FrZV90eF9xdWV1ZWAgaGFuZGxlciB3b3VsZCBldmVuIGJlIGNhbGxlZCDigJMgdGhpcyBzZWVtcyBwcmV0dHkgdW5saWtlbHkgdG8gdHJpZ2dlciBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSB1bmxlc3MgdGhlcmUncyBzb21lIGtpbmQgb2YgaGFyZHdhcmUgcGFzc3Rocm91Z2guXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBJIG5lZWQgdG8gdGhpbmsgb3V0c2lkZSB0aGUgYm94LiBDb3VsZCBzeXprYWxsZXIgZmluZCBhIHdheSB0byBpbmplY3QgbWFjODAyMTEgb3BlcmF0aW9ucyBkaXJlY3RseT8gTm8sIHRoYXQncyBub3QgaG93IGl0IHdvcmtzLiBTeXprYWxsZXIgcHJpbWFyaWx5IGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwgdGhyb3VnaCBzeXNjYWxscyDigJMgbmV0bGluaywgaW9jdGwsIHNvY2tldHMsIGV0Yy4g4oCTIG9yIHRocm91Z2ggdmlydHVhbCBkZXZpY2VzIGxpa2UgdHVuL3RhcCwgdmhjaSwgYW5kIHN5el9wY2lfZGV2aWNlLiBJdCBkb2Vzbid0IGFsbG93IGZvciB0aGUgaW5qZWN0aW9uIG9mIGFyYml0cmFyeSBmdW5jdGlvbiBwb2ludGVycy5cblxuU28sIGlmIHRoZSBkcml2ZXIgY2FuJ3QgcmVnaXN0ZXIgaXRzIG1hYzgwMjExIGRldmljZSwgdGhlIGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIHdpbGwgKm5ldmVyKiBnZXQgY2FsbGVkLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgZWl0aGVyIGBhdGgxMWtgIG9yIGBhdGgxMmtgIGhhcyBzb21lIGtpbmQgb2YgdGVzdCBtb2RlIG9yIHNpbXVsYXRpb24gbW9kZS4gVGhhdCB3b3VsZCByZWFsbHkgY2hhbmdlIHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2NTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTE6NTAuMzAwNDUwMzI3WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU0MTg1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdG1vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZT0yND1hdGgxMWstJChDT05GSUdfQVRIMTFLX0RFQlVHRlMpICs9IGRlYnVnZnMubyBkZWJ1Z2ZzX2h0dF9zdGF0cy5vIGRlYnVnZnNfc3RhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL01ha2VmaWxlOjI1OmF0aDExay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9NYWtlZmlsZS0yNi1hdGgxMWstJChDT05GSUdfQVRIMTFLX1RSQUNJTkcpICs9IHRyYWNlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oPTkyND1zdHJ1Y3QgYXRoMTFrX2Jhc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtMTA4Ny1cXHRcXHR1OCAqZXZlbnRkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oOjEwODg6XFx0fSB0ZXN0bW9kZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC0xMDg5LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Zy5oPTM0PXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqYXRoMTFrX2RiZ19zdHIoZW51bSBhdGgxMWtfZGVidWdfbWFzayBtYXNrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Zy5oLTU3LVxcdGNhc2UgQVRIMTFLX0RCR19URVNUTU9ERTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnLmg6NTg6XFx0XFx0cmV0dXJuIFxcXCJ0ZXN0bW9kZVxcXCI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Zy5oLTU5LVxcdGNhc2UgQVRIMTFLX0RCR19IQUw6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTIxLSNpbmNsdWRlIFxcXCJkcF9yeC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MjI6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0yMy0jaW5jbHVkZSBcXFwicGVlci5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTgtI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRsaW5rLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTItI2luY2x1ZGUgXFxcImNvcmUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTM6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlX2kuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9NDc9c3RhdGljIHZvaWQgYXRoMTFrX3RtX3dtaV9ldmVudF91bnNlZ21lbnRlZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTU5LVxcdGlmICghYXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6NjA6XFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo2NjpcXHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNjctXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNzEtXFx0XFx0YXRoMTFrX3dhcm4oYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjcyOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNzMtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNzgtXFx0ICAgIG5sYV9wdXQobmxfc2tiLCBBVEhfVE1fQVRUUl9EQVRBLCBza2ItXFx1MDAzZWxlbiwgc2tiLVxcdTAwM2VkYXRhKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo3OTpcXHRcXHRhdGgxMWtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSB0ZXN0bW9kZSB1bnNlZ21lbnRlZCBldmVudFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTgwLVxcdFxcdGtmcmVlX3NrYihubF9za2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo4NDpcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy04NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtODktXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo5MDpcXHRhdGgxMWtfd2FybihhYiwgXFxcIkZhaWxlZCB0byBzZW5kIHRlc3Rtb2RlIGV2ZW50IHRvIGhpZ2hlciBsYXllcnNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy05MS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9OTY9c3RhdGljIGludCBhdGgxMWtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTExNS1cXHRpZiAocGRldl9pZCBcXHUwMDNlPSBhYi1cXHUwMDNlbnVtX3JhZGlvcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMTY6XFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2IGlkOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTE3LVxcdFxcdFxcdCAgICBwZGV2X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMjItXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMjM6XFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTI0LVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTEzNi1cXHRpZiAoY3VycmVudF9zZXEgPT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxMzc6XFx0XFx0YWItXFx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjEzODpcXHRcXHRhYi1cXHUwMDNldGVzdG1vZGUuZGF0YV9wb3MgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xMzktXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE0MTpcXHRkYXRhX3BvcyA9IGFiLVxcdTAwM2V0ZXN0bW9kZS5kYXRhX3BvcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTUwOlxcdG1lbWNweShcXHUwMDI2YWItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YVtkYXRhX3Bvc10sIGJ1Zl9wb3MsIGRhdGFsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNTEtXFx0ZGF0YV9wb3MgKz0gZGF0YWxlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNTM6XFx0aWYgKCsrYWItXFx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSAhPSB0b3RhbF9zZWdtZW50cykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNTQ6XFx0XFx0YWItXFx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zID0gZGF0YV9wb3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE1NS1cXHRcXHRhdGgxMWtfZGJnKGFiLCBBVEgxMUtfREJHX1RFU1RNT0RFLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE2My1cXHRcXHQgICAgZGF0YV9wb3MsIGZ0bV9tc2ctXFx1MDAzZXNlZ19oZHIubGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTY0OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0xNjUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTY5LVxcdFxcdGF0aDExa193YXJuKGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoxNzA6XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciBzZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTcxLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTc4LVxcdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgZGF0YV9wb3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE3OTpcXHRcXHQgICAgXFx1MDAyNmFiLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbMF0pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjE4MDpcXHRcXHRhdGgxMWtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSBzZWdtZW50ZWQgdGVzdG1vZGUgZXZlbnRcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMTgxLVxcdFxcdGtmcmVlX3NrYihubF9za2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MTg2OlxcdGNmZzgwMjExX3Rlc3Rtb2RlX2V2ZW50KG5sX3NrYiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTE4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYz0yMzE9c3RhdGljIGludCBhdGgxMWtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MjQxOlxcdHNrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX3JlcGx5X3NrYihhci1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yNDItXFx0XFx0XFx0XFx0XFx0XFx0bmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jOjI2MDpcXHRyZXR1cm4gY2ZnODAyMTFfdGVzdG1vZGVfcmVwbHkoc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjYxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzoyNjM6c3RhdGljIGludCBhdGgxMWtfdG1fY21kX3Rlc3Rtb2RlX3N0YXJ0KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jLTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MjgwOlxcdGFyLVxcdTAwM2VhYi1cXHUwMDNldGVzdG1vZGUuZXZlbnRkYXRhID0ga3phbGxvYyhBVEhfRlRNX0VWRU5UX01BWF9CVUZfTEVOR1RILFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy0yODEtXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6MjgyOlxcdGlmICghYXItXFx1MDAzZWFiLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMjgzLVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM9MzAwPXN0YXRpYyBpbnQgYXRoMTFrX3RtX2NtZF93bWkoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzI1LVxcdGlmICghYnVmX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzozMjY6XFx0XFx0YXRoMTFrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiTm8gZGF0YSBwcmVzZW50IGluIHRlc3Rtb2RlIHdtaSBjb21tYW5kXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzI3LVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzc3LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmM6Mzc4OlxcdFxcdGF0aDExa193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtMzc5LVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay90ZXN0bW9kZS5jPTQ3Nj1pbnQgYXRoMTFrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYy00OTYtXFx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvdGVzdG1vZGUuYzo0OTc6XFx0XFx0cmV0dXJuIGF0aDExa190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3Rlc3Rtb2RlLmMtNDk4LVxcdGNhc2UgQVRIX1RNX0NNRF9XTUlfRlRNOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy0yMS0jaW5jbHVkZSBcXFwicGVlci5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6MjI6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy0yMy0jaW5jbHVkZSBcXFwicDJwLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjUwLjU5NTg3NjMzOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njk4NDMyMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyB0aGUgdGVzdG1vZGUgYXBwcm9hY2ggaGVyZSwgdXNpbmcgbmw4MDIxMSwgaXMgZnVuZGFtZW50YWxseSBkZXBlbmRlbnQgb24gdGhlIGZpcm13YXJlIGFjdHVhbGx5ICpiZWluZyogcHJlc2VudCBhbmQgcnVubmluZywgd2hpY2ggbWVhbnMgc3BlY2lmaWMgaGFyZHdhcmUuIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBhcmUgZGlyZWN0bHkgdGllZCB0byB0aGUgaGFyZHdhcmUgYW5kIHRoZWlyIHJlc3BlY3RpdmUgZmlybXdhcmUuIEJ1dCB3aGF0IGFib3V0IGBpZWVlODAyMTFfdHhfcGVla2A/IElzIHRoZXJlIGEgcG9zc2liaWxpdHkgdGhhdCBhbm90aGVyIGRyaXZlciAqY291bGQqIHVzZSBpdCBkb3duIHRoZSBsaW5lPyBUaGUgcGF0Y2ggaXRzZWxmIG9ubHkgbW9kaWZpZXMgYGF0aDExa2AgYW5kIGBhdGgxMmtgIHRvIHV0aWxpemUgYGllZWU4MDIxMV90eF9wZWVrYC5cblxuR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIGlzIG9ubHkgcmVhY2hhYmxlIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBIb3dldmVyLCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBjb25zaWRlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBiZSBjYXJlZnVsIGhlcmUuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gY29uc2lkZXIgc2NlbmFyaW9zIHdoZXJlIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUuIEhvd2V2ZXIsIGl0IGFsc28gY2xhcmlmaWVzIHRoYXQgaWYgdGhlIHBhdGNoIG1vZGlmaWVzIFwicmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLFwiIGl0IHdhcnJhbnRzIGludmVzdGlnYXRpb24uXG5cbk5vdywgYGllZWU4MDIxMV90eF9wZWVrYCBpcyBleHBvcnRlZCBpbiBgbmV0L21hYzgwMjExL3R4LmNgLCB3aGljaCBtYWtlcyBpdCBwYXJ0IG9mIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLiBUaGUga2V5IGhlcmUgaXMgdGhhdCwgYXQgcHJlc2VudCwgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGFyZSB0aGUgKm9ubHkqIGNhbGxlcnMgb2YgYGllZWU4MDIxMV90eF9wZWVrYC4gU28sIGNvdWxkIGBtYWM4MDIxMV9od3NpbWAgY2FsbCBgaWVlZTgwMjExX3R4X3BlZWtgPyBObywgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgdGhlIGNhc2UuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBgbWFjODAyMTFfaHdzaW1gIHJlbGllcyBvbiBgd2FrZV90eF9xdWV1ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTkyLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjExOjU3LjI5NDMxMTEwN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5MjIyMTU0MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid2FrZV90eF9xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMTo1OC43ODY1NDEzOThaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODAxMjI0NjAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIHRoZSBXaS1GaSBTdWJzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYG1hYzgwMjExX2h3c2ltYCBjb2RlLCBhbmQgaXQncyBsb29raW5nIGxpa2UgYHdha2VfdHhfcXVldWVgIGlzbid0IGFjdHVhbGx5IGltcGxlbWVudGVkIHRoZXJlLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZSBvdGhlciBjYWxsIHBhdGguIFdhaXQsIGlzIGl0IHBvc3NpYmxlIHRoYXQgYGllZWU4MDIxMV90eF9wZWVrYCB3aGljaCAqaXMqIG5ldywgaXMgcmVhY2hhYmxlIGJ5ICpzb21lKiBvdGhlciBtZWFucz8gTm8sIGxvb2tpbmcgYXQgdGhlIHBhdGNoLCBpdCBzZWVtcyBsaWtlIHRoZSBvbmx5IGNhbGxzIHRvIGl0IGFyZSBmcm9tIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCwgcmlnaHQ/XG5cblJpZ2h0LiBBbmQgc2luY2UgYGF0aDExa2AgYW5kIGBhdGgxMmtgIHJlcXVpcmUgYWN0dWFsIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSwgSSBrbm93IHRoZXkncmUgZXNzZW50aWFsbHkgb2ZmIHRoZSB0YWJsZSBmb3IgZnV6emluZyBpbiBzb21ldGhpbmcgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhleSByZXF1aXJlIHRoZSByZWFsIGRlYWwuIFNvIHRoYXQgY29kZSAqc2hvdWxkKiBiZSB1bnJlYWNoYWJsZSBpbiBteSB2aXJ0dWFsIHRlc3RpbmcgZW52aXJvbm1lbnRzLlxuXG5CdXQsIGhhbmcgb24uLi4gaXMgdGhlcmUgYSBzbGltIGNoYW5jZSBgYXRoMTFrYCBvciBgYXRoMTJrYCBjYW4gYmUgZnV6emVkIHZpYSBgc3l6X3BjaV9kZXZpY2VgPyBUaGF0J3MgdGhlIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHN5emthbGxlciB0byBzaW11bGF0ZSBQQ0kgZGV2aWNlcy4gQWgsIGJ1dCByZW1lbWJlciwgYGF0aDExa2AgbmVlZHMgdGhlIGZpcm13YXJlIHRvIGJlIGxvYWRlZCB1c2luZyBgcmVxdWVzdF9maXJtd2FyZWAuIEFuZCB0aGVuIGl0IGhhcyB0byAqd2FpdCogZm9yIHRoZSBmaXJtd2FyZSB0byBib290IGFuZCBzZW5kIHRoYXQgc3BlY2lmaWMgUU1JIG1lc3NhZ2UsIHJpZ2h0PyBJJ20gdGFsa2luZyBhYm91dCBgYXRoMTFrX2NvcmVfcW1pX2Zpcm13YXJlX3JlYWR5YC4gV2l0aG91dCB0aGF0IGZpcm13YXJlIGFjdHVhbGx5IHJ1bm5pbmcgYW5kIHNlbmRpbmcgdGhlIFFNSSBtZXNzYWdlLCB0aGUgbWFjODAyMTEgZGV2aWNlIGlzIG5ldmVyIHJlZ2lzdGVyZWQgYW5kLCBjb25zZXF1ZW50bHksIGB3YWtlX3R4X3F1ZXVlYCBpcyBuZXZlciBldmVuIGNhbGxlZC5cblxuU28gY2FuIEkgZ2V0IHRoZSBmdXp6ZXIgdG8gZW11bGF0ZSB0aGUgZmlybXdhcmU/IFNhZGx5LCBuby4gSSdtIHByZXR0eSBzdXJlIHN5emthbGxlciBkb2Vzbid0IGhhdmUgUU1JIGZpcm13YXJlIGVtdWxhdGlvbiBmb3IgUXVhbGNvbW0gV2ktRmkgY2hpcHMsIG5vdCB0aGF0IGNvbXBsZXguXG5cblNvLCByZWFsaXN0aWNhbGx5LCB0aGUgYHdha2VfdHhfcXVldWVgIGhhbmRsZXIgaW4gYGF0aDExa2AgYW5kIGBhdGgxMmtgIGlzIHVucmVhY2hhYmxlLiBBbmQgd2hhdCBhYm91dCBgaWVlZTgwMjExX3R4X3BlZWtgPyBJdCAqaXMqIGV4cG9ydGVkLCBidXQgbm8gb3RoZXIgZHJpdmVyIGlzIHVzaW5nIGl0LiBTbyBpdCBhbHNvIGlzIGxpa2VseSB1bnJlYWNoYWJsZS4gSSB3aWxsIGRvdWJsZSBjaGVjayBgYXRoMTJrYCBqdXN0IHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDM2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEyOjA2Ljc5ODc5MDMzNloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyMzMzNjI0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJod3NpbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTI6MDcuMjYxMTMzMjQ5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjQyODQzNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipDaGVja2luZyBGaXJtd2FyZSBSZXF1ZXN0IENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgYGF0aDEya2AgZHJpdmVyIGFjdHVhbGx5IGltcGxlbWVudHMgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBmdW5jdGlvbi4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHN0YW5kYXJkIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBpbiB0aGUga2VybmVsLCBzbyB0aGlzIGNoZWNrIGlzIGltcG9ydGFudC4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQgaWYgdGhlIGRyaXZlciBmYWlsZWQgdG8gZG8gdGhpcy4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoaXMgZnVuY3Rpb24ncyBwcmVzZW5jZSB0byBjb25maXJtIGl0J3MgdXNpbmcgdGhlIHN0YW5kYXJkIG1lY2hhbmlzbXMuIFRoaXMgaXMgYmFzaWMsIGJ1dCBuZWNlc3NhcnkgYmVmb3JlIEkgcHJvY2VlZC4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkIHdpdGggYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgZGVidWdnaW5nLiBUaGlzIGlzIHByZXR0eSBmdW5kYW1lbnRhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5NzUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxODoxMjoxMC4xODU0MTk4ODdaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMzM5OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zMzQ9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM2NjpcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlKFxcdTAwMjZmdywgZndfbmFtZSwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2Ny1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY4OlxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNjktXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mzk5OlxcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3MiwgZncyX25hbWUsIGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDAtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQwMTpcXHRcXHRhdGgxMmtfZXJyKGFiLCBcXFwicmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtNDAyLVxcdFxcdGdvdG8gZXJyX2Z3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjEwOnN0YXRpYyBpbnQgYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTEtXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM9MTYzPXZvaWQgYXRoMTJrX2Z3X21hcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jLTE2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTY3OlxcdHJldCA9IGF0aDEya19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKGFiLCBBVEgxMktfRldfQVBJMl9GSUxFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY4LVxcdGlmIChyZXQgPT0gMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTg6MTI6MTAuMjU3NzY1MjRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ5NTYzNTAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IFVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gdGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gZGV0ZXJtaW5lIGlmIGEgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmcuXCIgQmFzZWQgb24gdGhlIHByb3ZpZGVkIGNyaXRlcmlhLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHBhdGNoIGluY2x1ZGVzIGNvZGUgdGhhdCdzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuUmlnaHQsIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgYXRoMTFrYCBhbmQgYGF0aDEya2AsIGFuZCBJIHJlbWVtYmVyIHRoYXQgdGhlc2UgZHJpdmVycywgbGlrZSB0aGVpciBwcmVkZWNlc3NvcnMsIGFic29sdXRlbHkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBhbmQsIGNydWNpYWxseSwgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gZXZlbiBnZXQgb2ZmIHRoZSBncm91bmQuIFRoZXNlIGRyaXZlcnMgYXJlIG5vdCBnb2luZyB0byBpbml0aWFsaXplIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIG5vIGhhcmR3YXJlLCBubyBkaWNlLlxuXG5UaGUga2V5IGNoYW5nZSBoZXJlIHNlZW1zIHRvIGJlIGBpZWVlODAyMTFfdHhfcGVla2AsIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpbiB0aGUgYG1hYzgwMjExYCBjb3JlLiBJIGtub3cgYG1hYzgwMjExYCB3ZWxsLCBhbmQgSSBrbm93IGNvcmUgZnVuY3Rpb25zIGNhbiBiZSB0cmlja3ksIGJ1dCB0aGlzIG9uZSBpcyBvbmx5IGNhbGxlZCBieSB0aGUgYHdha2VfdHhfcXVldWVgIGhhbmRsZXJzIHdpdGhpbiBgYXRoMTFrYCBhbmQgYGF0aDEya2AuIEkgdW5kZXJzdGFuZCB0aGF0LiBTbywgc2luY2UgdGhlIGRyaXZlcnMgdGhhdCAqY2FsbCogYGllZWU4MDIxMV90eF9wZWVrYCBhcmUgZGVwZW5kZW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlLCB0aGUgZnVuY3Rpb24gaXRzZWxmIGlzIGVzc2VudGlhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHRvby5cblxuVGhlcmVmb3JlLCBiZWNhdXNlIHRoaXMgcGF0Y2ggbW9kaWZpZXMgZHJpdmVycyB0aGF0IHJlbHkgb24gcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlLCBhbmQgdGhvc2UgYXJlIHRoZSBvbmx5IGRyaXZlcnMgd2hpY2ggdXNlIHRoZSBuZXcgZnVuY3Rpb24sIHRoZSBjb2RlIHBhdGhzIGFyZSBhYnNvbHV0ZWx5IGltcG9zc2libGUgdG8gaGl0IGluIHNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaGV5IHdvbid0IGV2ZW4gcHJvYmUsIGxldCBhbG9uZSByZWFjaCB0aGUgbW9kaWZpZWQgY29kZS5cblxuU28sIGFjY29yZGluZyB0byB0aGUgY3JpdGVyaWEgZ2l2ZW4sIHRoaXMgcGF0Y2ggaXMgKm5vdCogd29ydGggZnV6emluZy4gSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE4MTIsIk91dHB1dFRva2VucyI6MTc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE4OjEyOjE3Ljc1MzQwMjE4OVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayB3aXJlbGVzcyBkcml2ZXJzIGFuZCBhZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBpZWVlODAyMTFfdHhfcGVlayB0byB0aGUgbWFjODAyMTEgY29yZS4gVGhlIG5ldyBoZWxwZXIgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IHRoZSB3YWtlX3R4X3F1ZXVlIGhhbmRsZXJzIG9mIGF0aDExayBhbmQgYXRoMTJrLiBCb3RoIG9mIHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCB0aGUgaGFyZHdhcmUgYW5kIGZpcm13YXJlLCB0aGUgZHJpdmVycyBmYWlsIHRvIHByb2JlL2luaXRpYWxpemUsIG1lYW5pbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgKGluY2x1ZGluZyB0aGUgbmV3IG1hYzgwMjExIGhlbHBlcikgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGFuZCBhdGgxMmsgd2lyZWxlc3MgZHJpdmVycyBhbmQgYWRkcyBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gaWVlZTgwMjExX3R4X3BlZWsgdG8gdGhlIG1hYzgwMjExIGNvcmUuIFRoZSBuZXcgaGVscGVyIGlzIGV4Y2x1c2l2ZWx5IGNhbGxlZCBieSB0aGUgd2FrZV90eF9xdWV1ZSBoYW5kbGVycyBvZiBhdGgxMWsgYW5kIGF0aDEyay4gQm90aCBvZiB0aGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgaGFyZHdhcmUgKFBDSS9BSEIpIGFuZCBwcm9wcmlldGFyeSBmaXJtd2FyZSB0byBpbml0aWFsaXplIGFuZCByZWdpc3RlciB3aXRoIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIFdpdGhvdXQgdGhlIGhhcmR3YXJlIGFuZCBmaXJtd2FyZSwgdGhlIGRyaXZlcnMgZmFpbCB0byBwcm9iZS9pbml0aWFsaXplLCBtZWFuaW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIChpbmNsdWRpbmcgdGhlIG5ldyBtYWM4MDIxMSBoZWxwZXIpIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow4hsp2[1] Phase: Running StartedAt: 2026-07-15 18:12:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4hsp2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-15 18:12:41 +0000 UTC FinishedAt: 2026-07-15 18:12:46 +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,}