Name: series-workflowkb5t8 Phase: Succeeded StartedAt: 2026-06-30 08:57:28 +0000 UTC FinishedAt: 2026-06-30 10:27:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[0] Phase: Succeeded StartedAt: 2026-06-30 08:57:28 +0000 UTC FinishedAt: 2026-06-30 09:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 08:57:28 +0000 UTC FinishedAt: 2026-06-30 09:19:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "EFI", "IWLMVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "EFI", "IWLMVM" ], "series_id": "5b98170d-5c94-4ad2-a180-35c73ee79bd9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_uefi_reduce_power_parse", "iwl_pnvm_load_reduce_power_to_trans" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSYjMzQ7LAogICAgJiMzNDtpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmUxZGQ2YWM1ODA2NDAyOWQ4NTZlZmI3NmE4OTdlY2Q2YTg1NjM1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDA5OjEyOjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li43NDdkZjY1OGRjN2U4NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuQEAgLTI0OCw2ICYjNDM7MjQ4LDEyIEBAIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuIFx0XHRcdFx0ICAgICBcJiMzNDtHb3QgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSBsZW4gJWRcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgIHRsdl9sZW4pO1xuJiM0MztcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XG4mIzQzO1x0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdHRsdl9sZW4pO1xuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHR9XG4mIzQzO1xuIFx0XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7c2t1X2lkIDB4JTB4IDB4JTB4IDB4JTB4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSYjMzQ7LAogICAgJiMzNDtpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2ZTFkZDZhYzU4MDY0MDI5ZDg1NmVmYjc2YTg5N2VjZDZhODU2MzUxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTI6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jCmluZGV4IDJlZjBhN2E5MjBhZGI1Li43NDdkZjY1OGRjN2U4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMKQEAgLTI0OCw2ICYjNDM7MjQ4LDEyIEBAIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsCiAJCQlJV0xfREVCVUdfRlcodHJhbnMsCiAJCQkJICAgICAmIzM0O0dvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxuJiMzNDssCiAJCQkJICAgICB0bHZfbGVuKTsKJiM0MzsJCQlpZiAodGx2X2xlbiAmbHQ7IDMgKiBzaXplb2YoX19sZTMyKSkgewomIzQzOwkJCQlJV0xfRVJSKHRyYW5zLCAmIzM0O2ludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcbiYjMzQ7LAomIzQzOwkJCQkJdGx2X2xlbik7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KJiM0MzsKIAkJCUlXTF9ERUJVR19GVyh0cmFucywgJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcbiYjMzQ7LAogCQkJCSAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC0mZ3Q7ZGF0YVswXSksCiAJCQkJICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLSZndDtkYXRhWzFdKSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRmlybXdhcmUgUGF0Y2gqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBmbG9hdGluZyBhcm91bmQsIGFuZCBpdCYjMzk7cyBsYW5kZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRyZXNzaW5nIHRoZSBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBmdW5jdGlvbiBhbmQgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciBgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcy4gSSYjMzk7bGwgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGFjdHVhbGx5ICpkb2luZyouIExldCYjMzk7cyBnbyBhaGVhZCBhbmQgZXhhbWluZSB0aGF0IGZ1bmN0aW9uIGluIGRldGFpbC4gVGhpcyBsZW5ndGggY2hlY2sgcHJvYmFibHkgYWRkcmVzc2VzIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBvciBvdGhlciB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gaG93IHRoZSBmaXJtd2FyZSBoYW5kbGVzIHRoaXMgcGFydGljdWxhciBUTFYuIEdvdCB0byBtYWtlIHN1cmUgdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJlYWwgaXNzdWUgYW5kIHRoYXQgdGhlIHNvbHV0aW9uIGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBzaWRlIGVmZmVjdHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmshCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTY2PXN0YXRpYyBpbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjIwOmludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMjEtXHRcdFx0XHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDcxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGxpa2VseSBkZWFsaW5nIHdpdGggcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpY2FsbHkgd2l0aGluIGEgVUVGSSBlbnZpcm9ubWVudC4gVGhlIG5hbWluZyBjb252ZW50aW9uIGlzIHByZXR0eSBjbGVhcjsgJiMzNDtyZWR1Y2VfcG93ZXImIzM0OyBzdWdnZXN0cyBpdCYjMzk7cyBhYm91dCBvcHRpbWl6aW5nIHBvd2VyIGNvbnN1bXB0aW9uLiBUaGUgJiMzNDtwYXJzZSYjMzQ7IHBhcnQgbGlrZWx5IG1lYW5zIGl0JiMzOTtzIGludGVycHJldGluZyBzb21lIGRhdGEgb3IgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHBvd2VyIHJlZHVjdGlvbi4gSSYjMzk7bSBndWVzc2luZyBpdCYjMzk7cyBoYW5kbGluZyBzZXR0aW5ncyByZWxhdGVkIHRvIHJhZGlvIHBvd2VyLWRvd24sIGNsb2NrIGdhdGluZywgb3IgcGVyaGFwcyBwb3dlci1zYXZpbmcgbW9kZXMgZHVyaW5nIHRoZSBVRUZJIHBoYXNlLCBnaXZlbiB0aGF0ICYjMzQ7VUVGSSYjMzQ7IGlzIGluIHRoZSBuYW1lLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB3aGF0IGlucHV0cyBpdCB0YWtlcywgd2hhdCBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGFuZCwgY3JpdGljYWxseSwgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGZyb20gYW5kIHdoYXQgaXRzIHJldHVybiB2YWx1ZXMgYXJlLiBUaGF0IHdpbGwgcGFpbnQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGxhcmdlciBwb3dlciBtYW5hZ2VtZW50IHBpY3R1cmUgd2l0aGluIHRoaXMgZHJpdmVyIGFuZCBwb3RlbnRpYWxseSB3aXRoaW4gdGhlIHN5c3RlbSYjMzk7cyBvdmVyYWxsIHBvd2VyIHByb2ZpbGUgZHVyaW5nIHRoZSBlYXJseSBib290IHN0YWdlcy4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBuZWVkaW5nIHRvIGFzc2VzcyBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgQUNQSSB0YWJsZXMgYW5kIG90aGVyIHBvd2VyIG1hbmFnZW1lbnQgZmlybXdhcmUgaW50ZXJmYWNlcy4gTGV0JiMzOTtzIGdldCByZWFkaW5nIGFuZCBjb25maXJtIHRoZXNlIGluaXRpYWwgaHlwb3RoZXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE5Olx0XG4gMjIwOlx0aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiAyMjE6XHRcdFx0XHRcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuIDIyMjpcdFx0XHRcdFx0c3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEsXG4gMjIzOlx0XHRcdFx0XHRfX2xlMzIgc2t1X2lkWzNdKVxuIDIyNDpcdHtcbiAyMjU6XHRcdGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfdGx2ICp0bHY7XG4gMjI2Olx0XG4gMjI3Olx0XHRJV0xfREVCVUdfRlcodHJhbnMsIFwmIzM0O1BhcnNpbmcgUkVEVUNFX1BPV0VSIGRhdGFcXG5cJiMzNDspO1xuIDIyODpcdFxuIDIyOTpcdFx0d2hpbGUgKGxlbiBcdTAwM2U9IHNpemVvZigqdGx2KSkge1xuIDIzMDpcdFx0XHR1MzIgdGx2X2xlbiwgdGx2X3R5cGU7XG4gMjMxOlx0XG4gMjMyOlx0XHRcdGxlbiAtPSBzaXplb2YoKnRsdik7XG4gMjMzOlx0XHRcdHRsdiA9IChjb25zdCB2b2lkICopZGF0YTtcbiAyMzQ6XHRcbiAyMzU6XHRcdFx0dGx2X2xlbiA9IGxlMzJfdG9fY3B1KHRsdi1cdTAwM2VsZW5ndGgpO1xuIDIzNjpcdFx0XHR0bHZfdHlwZSA9IGxlMzJfdG9fY3B1KHRsdi1cdTAwM2V0eXBlKTtcbiAyMzc6XHRcbiAyMzg6XHRcdFx0aWYgKGxlbiBcdTAwM2MgdGx2X2xlbikge1xuIDIzOTpcdFx0XHRcdElXTF9FUlIodHJhbnMsIFwmIzM0O2ludmFsaWQgVExWIGxlbjogJXpkLyV1XFxuXCYjMzQ7LFxuIDI0MDpcdFx0XHRcdFx0bGVuLCB0bHZfbGVuKTtcbiAyNDE6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNDI6XHRcdFx0fVxuIDI0MzpcdFxuIDI0NDpcdFx0XHRpZiAodGx2X3R5cGUgPT0gSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSkge1xuIDI0NTpcdFx0XHRcdGNvbnN0IHN0cnVjdCBpd2xfc2t1X2lkICp0bHZfc2t1X2lkID1cbiAyNDY6XHRcdFx0XHRcdChjb25zdCB2b2lkICopKGRhdGEgJiM0Mzsgc2l6ZW9mKCp0bHYpKTtcbiAyNDc6XHRcbiAyNDg6XHRcdFx0XHRJV0xfREVCVUdfRlcodHJhbnMsXG4gMjQ5Olx0XHRcdFx0XHQgICAgIFwmIzM0O0dvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwmIzM0OyxcbiAyNTA6XHRcdFx0XHRcdCAgICAgdGx2X2xlbik7XG4gMjUxOlx0XHRcdFx0aWYgKHRsdl9sZW4gXHUwMDNjIDMgKiBzaXplb2YoX19sZTMyKSkge1xuIDI1MjpcdFx0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwmIzM0OyxcbiAyNTM6XHRcdFx0XHRcdFx0dGx2X2xlbik7XG4gMjU0Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNTU6XHRcdFx0XHR9XG4gMjU2Olx0XG4gMjU3Olx0XHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcXG5cJiMzNDssXG4gMjU4Olx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVswXSksXG4gMjU5Olx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsxXSksXG4gMjYwOlx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsyXSkpO1xuIDI2MTpcdFxuIDI2MjpcdFx0XHRcdGRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTtcbiAyNjM6XHRcdFx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4gMjY0Olx0XG4gMjY1Olx0XHRcdFx0aWYgKHNrdV9pZFswXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0gXHUwMDI2XHUwMDI2XG4gMjY2Olx0XHRcdFx0ICAgIHNrdV9pZFsxXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0gXHUwMDI2XHUwMDI2XG4gMjY3Olx0XHRcdFx0ICAgIHNrdV9pZFsyXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMl0pIHtcbiAyNjg6XHRcdFx0XHRcdGludCByZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbih0cmFucyxcbiAyNjk6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGRhdGEsIGxlbixcbiAyNzA6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHBudm1fZGF0YSk7XG4gMjcxOlx0XHRcdFx0XHRpZiAoIXJldClcbiAyNzI6XHRcdFx0XHRcdFx0cmV0dXJuIDA7XG4gMjczOlx0XHRcdFx0fSBlbHNlIHtcbiAyNzQ6XHRcdFx0XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7U0tVIElEIGRpZG4mIzM5O3QgbWF0Y2ghXFxuXCYjMzQ7KTtcbiAyNzU6XHRcdFx0XHR9XG4gMjc2Olx0XHRcdH0gZWxzZSB7XG4gMjc3Olx0XHRcdFx0ZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IEFMSUdOKHRsdl9sZW4sIDQpO1xuIDI3ODpcdFx0XHRcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcbiAyNzk6XHRcdFx0fVxuIDI4MDpcdFx0fVxuIDI4MTpcdFxuIDI4MjpcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gMjgzOlx0fVxuIDI4NDpcdFxuIDI4NTpcdHU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG4gMjg2Olx0e1xuIDI4NzpcdFx0c3RydWN0IHBudm1fc2t1X3BhY2thZ2UgKnBhY2thZ2U7XG4gMjg4Olx0XHR1bnNpZ25lZCBsb25nIHBhY2thZ2Vfc2l6ZTtcbiAyODk6XHRcdHU4ICpkYXRhO1xuIDI5MDpcdFxuIDI5MTpcdFx0cGFja2FnZSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucyxcbiAyOTI6XHRcdFx0XHRcdFx0XHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxuIDI5MzpcdFx0XHRcdFx0XHRcdCBcJiMzNDtSZWR1Y2VkIFBvd2VyXCYjMzQ7LFxuIDI5NDpcdFx0XHRcdFx0XHRcdCBzaXplb2YoKnBhY2thZ2UpLFxuIDI5NTpcdFx0XHRcdFx0XHRcdCBcdTAwMjZwYWNrYWdlX3NpemUpO1xuIDI5NjpcdFx0aWYgKElTX0VSUihwYWNrYWdlKSlcbiAyOTc6XHRcdFx0cmV0dXJuIEVSUl9DQVNUKHBhY2thZ2UpO1xuIDI5ODpcdFxuIDI5OTpcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtyZXYgJWQsIHRvdGFsX3NpemUgJWQsIG5fc2t1cyAlZFxcblwmIzM0OyxcbiAzMDA6XHRcdFx0ICAgICBwYWNrYWdlLVx1MDAzZXJldiwgcGFja2FnZS1cdTAwM2V0b3RhbF9zaXplLCBwYWNrYWdlLVx1MDAzZW5fc2t1cyk7XG4gMzAxOlx0XG4gMzAyOlx0XHQqbGVuID0gcGFja2FnZV9zaXplIC0gc2l6ZW9mKCpwYWNrYWdlKTtcbiAzMDM6XHRcdGRhdGEgPSBrbWVtZHVwKHBhY2thZ2UtXHUwMDNlZGF0YSwgKmxlbiwgR0ZQX0tFUk5FTCk7XG4gMzA0Olx0XHRpZiAoIWRhdGEpIHtcbiAzMDU6XHRcdFx0a2ZyZWUocGFja2FnZSk7XG4gMzA2Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIDMwNzpcdFx0fVxuIDMwODpcdFxuIDMwOTpcdFx0a2ZyZWUocGFja2FnZSk7XG4gMzEwOlx0XG4gMzExOlx0XHRyZXR1cm4gZGF0YTtcbiAzMTI6XHR9XG4gMzEzOlx0XG4gMzE0Olx0c3RhdGljIGludCBpd2xfdWVmaV9zdGVwX3BhcnNlKHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpjb21tb25fc3RlcF9kYXRhLFxuIDMxNTpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbiAzMTY6XHR7XG4gMzE3Olx0XHRpZiAoY29tbW9uX3N0ZXBfZGF0YS1cdTAwM2VyZXZpc2lvbiAhPSAxKVxuIDMxODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVRUZJIFBhcnNpbmcgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYSBsZW5ndGggY2hlY2sgZm9yIGBJV0xfVUNPREVfVExWX1BOVk1fU0tVYCB3aXRoaW4gdGhlIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGZ1bmN0aW9uLiBSaWdodCwgdGhhdCBmdW5jdGlvbiwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBpcyByZXNwb25zaWJsZSBmb3IgcGFyc2luZyBVRUZJIHZhcmlhYmxlcy4gSSBrbm93IEkmIzM5O3ZlIHdvcmtlZCB3aXRoIFVFRkkgdmFyaWFibGUgcGFyc2luZyBiZWZvcmUsIHNvIGl0JiMzOTtzIGdvb2QgdG8gc2VlIHRoaXMgbGV2ZWwgb2YgZGV0YWlsIGJlaW5nIGFkZGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYmFjay4gV2hlcmUgZXhhY3RseSBpcyBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBiZWluZyBjYWxsZWQgZnJvbT8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsIHRvIGFzc2Vzc2luZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCB3aHkgdGhhdCBzcGVjaWZpYyBUTFYgaXMgaW1wb3J0YW50IGluIHRoaXMgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBpZGVudGlmeSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBhZGRlZCBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzMjpcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzMtXHRcdFx0XHRcdCAgc2t1X2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xNjY9c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyMjA6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cdFx0XHRcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyNT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMyNjppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzI3LVx0XHRcdFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzYwPXN0YXRpYyBpbmxpbmUgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNjE6aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzYyLVx0XHRcdCAgICBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBQb3dlciBSZWR1Y3Rpb24gaW4gSW50ZWwgV2lyZWxlc3MgRmlybXdhcmUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0cyBtYWluIHB1cnBvc2UgaXMgdG8gaGFuZGxlIHBvd2VyIHJlZHVjdGlvbiBkdXJpbmcgYSB0cmFuc2l0aW9uLiBUaGUgaW1tZWRpYXRlIHBvaW50IG9mIGludGVyZXN0IGlzIHRoZSBjYWxsIHRvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIHdpdGhpbiBpdC4gVGhhdCBzdWdnZXN0cyB0aGVyZSYjMzk7cyBzb21lIFVFRkkgaW50ZXJhY3Rpb24gb3IgaW50ZXJwcmV0YXRpb24gaW52b2x2ZWQgaW4gZGV0ZXJtaW5pbmcgKmhvdyogdGhlIHBvd2VyIHJlZHVjdGlvbiBpcyBwZXJmb3JtZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhvc2UgdHdvIGZ1bmN0aW9uczogYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBhbmQgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAuCgpNeSBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIGZvciBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgcG93ZXIgcmVkdWN0aW9uIGxvZ2ljLiBXaGF0IHN0YXRlcyBvciBldmVudHMgbGVhZCB0byBpdHMgZXhlY3V0aW9uPyBLbm93aW5nIHRoZSBjYWxsZXIocykgd2lsbCB0ZWxsIG1lIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgZ2l2ZSBtZSBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIG92ZXJhbGwgcG93ZXIgbWFuYWdlbWVudCBzY2hlbWUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2ggdG8gZGV0ZXJtaW5lIHdoZXJlIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgaXMgYWN0dWFsbHkgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwOC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyAqY2FwYSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00NTU9aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY3LVx0aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHRyYW5zLCBmdywgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ2ODpcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhLCBza3VfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTEyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGl3bF9wbnZtX2xvYWQqKgoKT2theSwgc28gYGl3bF9wbnZtX2xvYWRgIGlzIGludm9raW5nIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZSwgYW5kIHdoYXQgZHJpdmVzIHRoZSBjYWxsIHRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIFRvIHRydWx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyBwb2ludC4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyIOKAkyBJIGhhdmUgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBpd2xfcG52bV9sb2FkYC4gV2hlcmUgZG9lcyBpdCBvcmlnaW5hdGUgd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBzdHJ1Y3R1cmU/IE9ubHkgdGhlbiBjYW4gSSBmb3JtIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcmVhbGx5IGRpZ2dpbmcgaW50byB0aGlzIHBpZWNlIG9mIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcG52bV9sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM1OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzYwOml3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM2MS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MDc6aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDU1OmludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU2LVx0XHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ2NzpcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njg6XHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00ODAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDgxOklXTF9FWFBPUlRfU1lNQk9MKGl3bF9wbnZtX2xvYWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oLTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmg6MTY6aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaC0xNy1cdFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jPTI3Mj1zdGF0aWMgaW50IGl3bF9tbGRfcnVuX2Z3X2luaXRfc2VxdWVuY2Uoc3RydWN0IGl3bF9tbGQgKm1sZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jLTI4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmM6MjkwOlx0cmV0ID0gaXdsX3Budm1fbG9hZChtbGQtXHUwMDNldHJhbnMsIFx1MDAyNm1sZC1cdTAwM2Vub3RpZl93YWl0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYy0yOTEtXHRcdFx0ICAgIG1sZC1cdTAwM2VmdywgYWxpdmVfZGF0YS5za3VfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM9Mjg2PXN0YXRpYyBpbnQgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmUoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM6NDA3Olx0cmV0ID0gaXdsX3Budm1fbG9hZChtdm0tXHUwMDNldHJhbnMsIFx1MDAyNm12bS1cdTAwM2Vub3RpZl93YWl0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy00MDgtXHRcdFx0ICAgIG12bS1cdTAwM2VmdywgYWxpdmVfZGF0YS5za3VfaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTQxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgYW5kIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGl3bF9wbnZtX2xvYWRgIGZ1bmN0aW9uIGFuZCBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGl3bHdpZmkgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCBhbmQgYGl3bF9tbGRfcnVuX2Z3X2luaXRfc2VxdWVuY2VgLiBUaGVzZSBhcmUgY3JpdGljYWwgcGFydHMgb2YgdGhlIGRyaXZlciYjMzk7cyBzZXR1cCwgd2hpY2ggYWx3YXlzIG1ha2VzIG1lIHBheSBtb3JlIGF0dGVudGlvbi4gVGhpcyBwYXRjaCBjYXVnaHQgbXkgZXllIGJlY2F1c2UgaXQgaW50cm9kdWNlcyBhIG5ldyBsZW5ndGggY2hlY2sg4oCTIGB0bHZfbGVuICZsdDsgMyAqIHNpemVvZihfX2xlMzIpYCDigJMgd2hlbiBoYW5kbGluZyBgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVWAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgdGhpcyBpbnZvbHZlcyBwYXJzaW5nIFVFRkkgdmFyaWFibGVzLgoKVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBVRUZJIHZhcmlhYmxlcyBhcmUgZXNzZW50aWFsbHkgZmlybXdhcmUvQklPUyBwcm92aWRlZCBkYXRhLCBhbmQgdGhhdCByYWlzZXMgYSBmbGFnOiBhcmUgdGhlc2UgdmFyaWFibGVzIHBvdGVudGlhbGx5IGZ1enphYmxlPyBJbiB0aGUgY29udGV4dCBvZiBrZXJuZWwgc2VjdXJpdHksIHRoYXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgYnkgZGVmYXVsdCwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IG9mZmVyIGEgZGlyZWN0IHdheSB0byBmdXp6IFVFRkkgdmFyaWFibGVzIHVubGVzcyB0aGVyZSBpcyBhIGRlZGljYXRlZCBpbnRlcmZhY2UgYXZhaWxhYmxlIG9yIGl0JiMzOTtzIHJlYWRpbmcgZnJvbSBhIGZpbGUuIEhvd2V2ZXIsIGl0JiMzOTtzIHdvcnRoIGNoZWNraW5nIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgaW50ZXJmYWNlIHRvIGludGVyYWN0IHdpdGggdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIFVFRkkgZGF0YS4gSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAgZnVuY3Rpb24gdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFueSBjbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQyMjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcih0cmFucywgXHUwMDI2bGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMy1cdGlmIChJU19FUlIoZGF0YSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yMjA9aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyODU6dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzI0PXZvaWQgKml3bF91ZWZpX2dldF9wbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMjU6dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjYtaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zNjk9c3RhdGljIGlubGluZSB1OCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNzA6aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzcxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIxNQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqRGl2aW5nIGludG8gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgc3RhcnRlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAuIFRoYXQgbmFtZSBhbG9uZSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBpbnRlcmFjdGlvbiB3aXRoIFVFRkkgZmlybXdhcmUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggcmV0cmlldmluZyB2ZXJpZmllZCB2YXJpYWJsZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIG9wZXJhdGVzLiBJcyBpdCByZXRyaWV2aW5nIHNlY3VyaXR5IHNldHRpbmdzPyBQZXJoYXBzIGl0JiMzOTtzIGNoZWNraW5nIHRoZSBpbnRlZ3JpdHkgb2YgYSBib290IHZhcmlhYmxlPyBLbm93aW5nIHdoYXQgaXQmIzM5O3MgKnZlcmlmeWluZyogaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcm9sZS4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaXdsIChsaWtlbHkgSW50ZWwgV2lyZWxlc3MgTEFOKSBkcml2ZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgVUVGSSBzZXJ2aWNlcy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHJlbGF0ZWQgZnVuY3Rpb25zLiBIb3BlZnVsbHkgdGhlIGNvZGUgaXMgd2VsbC1kb2N1bWVudGVkLiBPdGhlcndpc2UgSSB3aWxsIGJlIHNwZW5kaW5nIGEgbG90IG9mIHRpbWUgcmV2ZXJzZSBlbmdpbmVlcmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgyPXN0YXRpYyB2b2lkICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgzOml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODQtXHRcdFx0XHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMTg9c3RhdGljIHZvaWQgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE5Oml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyMC1cdFx0XHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMjU6XHRyZXR1cm4gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFx1MDAyNklXTF9FRklfV0lGSV9HVUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTI2LVx0XHRcdFx0XHRcdCAgIHVlZmlfdmFyX25hbWUsIHZhcl9uYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTI4NT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI5MTpcdHBhY2thZ2UgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOTItXHRcdFx0XHRcdFx0IElXTF9VRUZJX1JFRFVDRURfUE9XRVJfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0zMjk9dm9pZCBpd2xfdWVmaV9nZXRfc3RlcF90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozMzc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzM4LVx0XHRcdFx0XHRcdCAgIElXTF9VRUZJX1NURVBfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0zODM9dm9pZCBpd2xfdWVmaV9nZXRfc2dvbV90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9TR09NX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTMtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1NHT01cJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTQyMD12b2lkIGl3bF91ZWZpX2dldF91YXRzX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQyNjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VBVFNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNy1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7VUFUU1wmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NDM4PXZvaWQgaXdsX3VlZmlfZ2V0X3VuZWJfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQzOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfVU5FQl9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQ0LVx0XHRcdFx0XHQgICAgICBcJiMzNDtVTkVCXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz00OTc9aW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1MDU6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRFNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNi1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V1JEU1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01NDU9aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NTQ6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX0VXUkRfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1NS1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7RVdSRFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01OTk9aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dHRFNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V0dEU1wmIzM0OywgVUVGSV9XR0RTX1RBQkxFX1NJWkVfUkVWMyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02NzY9aW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1BQQUdfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7UFBBR1wmIzM0OywgVUVGSV9QUEFHX0RBVEFfU0laRV9WNSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2OTM6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTQtXHRcdFx0XHRcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz03NDU9aW50IGl3bF91ZWZpX2dldF90YXNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc1MTpcdHVlZmlfdGFzID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dUQVNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1Mi1cdFx0XHRcdFx0XHQgIFwmIzM0O1dUQVNcJiMzNDssIHNpemVvZigqdWVmaV90YXMpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz03OTg9aW50IGl3bF91ZWZpX2dldF9wd3JfbGltaXQoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwNDpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfU1BMQ19OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODA1LVx0XHRcdFx0XHQgICAgICBcJiMzNDtTUExDXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04MjE9aW50IGl3bF91ZWZpX2dldF9tY2Moc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCBjaGFyICptY2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODI2Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XUkREX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjctXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dSRERcJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg1Mj1pbnQgaXdsX3VlZmlfZ2V0X2Vja3Yoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKmV4dGxfY2xrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1NzpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChmd3J0LVx1MDAzZXRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU4LVx0XHRcdFx0XHRcdCAgIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg3Nj1pbnQgaXdsX3VlZmlfZ2V0X3diZW0oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg4MTpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV0JFTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgyLVx0XHRcdFx0XHQgICAgICBcJiMzNDtXQkVNXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04OTk9c3RhdGljIGludCBpd2xfdWVmaV9sb2FkX2RzbV92YWx1ZXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTkwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkwNjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfRFNNX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDctXHRcdFx0XHRcdCAgICAgIFwmIzM0O0RTTVwmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9OTc2PWludCBpd2xfdWVmaV9nZXRfcHVuY3R1cmluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTg0Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTg1LVx0XHRcdFx0XHQgICAgICBJV0xfVUVGSV9QVU5DVFVSSU5HX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTAwNT1pbnQgaXdsX3VlZmlfZ2V0X2RzYnIoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDEwOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDExLVx0XHRcdFx0XHRcdCAgIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTEwMzE9aW50IGl3bF91ZWZpX2dldF9waHlfZmlsdGVycyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMzY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dQRkNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzctXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dQRkNcJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkyMwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQuIFdoYXQgaXMgaXQgdmVyaWZ5aW5nPyBXaGF0IHR5cGUgb2YgdmFyaWFibGUgaXMgaXQgZGVhbGluZyB3aXRoPyBUaGUgbmFtZSBjbGVhcmx5IHN1Z2dlc3RzIGludGVyYWN0aW9uIHdpdGggVUVGSSB2YXJpYWJsZXMsIGxpa2VseSB3aXRoaW4gYW4gSW50ZWwgV2lyZWxlc3MgTEFOIChpd2wpIGNvbnRleHQuIFNvLCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uJiMzOTtzIG9wZXJhdGlvbiBvbiB0aGUgc2VjdXJpdHkgYW5kIGludGVncml0eSBvZiB0aGUgc3lzdGVtJiMzOTtzIFVFRkkgZW52aXJvbm1lbnQuIElzIGl0IGdldHRpbmcgYSB2YXJpYWJsZSwgb3IgdGhlIEdVSUQ/CgpJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgaGVyZS4gSWYgdGhpcyBpcyB1c2VkIGZvciBzb21lIGtpbmQgb2YgdmVyaWZpY2F0aW9uLCB3aGF0JiMzOTtzIHRoZSBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc20/IFdoYXQgaGFwcGVucyBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzPyBEb2VzIGl0IGxlYWsgaW5mb3JtYXRpb24sIGFsbG93IGV4cGxvaXRhdGlvbiwgb3IgY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZT8gVGhlICYjMzQ7dmVyaWZpZWQmIzM0OyBwYXJ0IGlzIGtleS4gV2hhdCBhcmUgdGhlIHZlcmlmaWNhdGlvbiBzdGVwcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHRocmVhdCBtb2RlbCBoZXJlIHRvIGRldGVybWluZSB0aGUgZGVwdGggb2YgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byBrbm93IHRoZSByaXNrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODI6XHRzdGF0aWMgdm9pZCAqXG4gIDgzOlx0aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gIDg0Olx0XHRcdFx0XHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcbiAgODU6XHRcdFx0XHRcdCAgICBlZmlfY2hhcjE2X3QgKnVlZmlfdmFyX25hbWUsXG4gIDg2Olx0XHRcdFx0XHQgICAgY2hhciAqdmFyX25hbWUsXG4gIDg3Olx0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50IGV4cGVjdGVkX3NpemUsXG4gIDg4Olx0XHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyAqc2l6ZSlcbiAgODk6XHR7XG4gIDkwOlx0XHR2b2lkICp2YXI7XG4gIDkxOlx0XHR1bnNpZ25lZCBsb25nIHZhcl9zaXplO1xuICA5MjpcdFxuICA5MzpcdFx0dmFyID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKHVlZmlfdmFyX25hbWUsIGd1aWQsIFx1MDAyNnZhcl9zaXplKTtcbiAgOTQ6XHRcbiAgOTU6XHRcdGlmIChJU19FUlIodmFyKSkge1xuICA5NjpcdFx0XHRJV0xfREVCVUdfUkFESU8odHJhbnMsXG4gIDk3Olx0XHRcdFx0XHRcJiMzNDslcyBVRUZJIHZhcmlhYmxlIG5vdCBmb3VuZCAweCVseFxcblwmIzM0OywgdmFyX25hbWUsXG4gIDk4Olx0XHRcdFx0XHRQVFJfRVJSKHZhcikpO1xuICA5OTpcdFx0XHRyZXR1cm4gdmFyO1xuIDEwMDpcdFx0fVxuIDEwMTpcdFxuIDEwMjpcdFx0aWYgKHZhcl9zaXplIFx1MDAzYyBleHBlY3RlZF9zaXplKSB7XG4gMTAzOlx0XHRcdElXTF9ERUJVR19SQURJTyh0cmFucyxcbiAxMDQ6XHRcdFx0XHRcdFwmIzM0O0ludmFsaWQgJXMgVUVGSSB2YXJpYWJsZSBsZW4gKCVsdSlcXG5cJiMzNDssXG4gMTA1Olx0XHRcdFx0XHR2YXJfbmFtZSwgdmFyX3NpemUpO1xuIDEwNjpcdFx0XHRrZnJlZSh2YXIpO1xuIDEwNzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiAxMDg6XHRcdH1cbiAxMDk6XHRcbiAxMTA6XHRcdElXTF9ERUJVR19SQURJTyh0cmFucywgXCYjMzQ7JXMgZnJvbSBVRUZJIHdpdGggc2l6ZSAlbHVcXG5cJiMzNDssIHZhcl9uYW1lLFxuIDExMTpcdFx0XHRcdHZhcl9zaXplKTtcbiAxMTI6XHRcbiAxMTM6XHRcdGlmIChzaXplKVxuIDExNDpcdFx0XHQqc2l6ZSA9IHZhcl9zaXplO1xuIDExNTpcdFx0cmV0dXJuIHZhcjtcbiAxMTY6XHR9XG4gMTE3Olx0XG4gMTE4Olx0c3RhdGljIHZvaWQgKlxuIDExOTpcdGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiAxMjA6XHRcdFx0XHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuIDEyMTpcdFx0XHRcdCAgICAgICBjaGFyICp2YXJfbmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3NjAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgKioKClJpZ2h0LCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYC4uLiBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBLbm93aW5nIHRoZSBjb250ZXh0LCBJIGltbWVkaWF0ZWx5IGFzc3VtZSB0aGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlciBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIFVFRkkgZmlybXdhcmUuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmV0cmlldmluZyBhIHNwZWNpZmljIFVFRkkgdmFyaWFibGUsIGxpa2VseSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgd2lyZWxlc3MgYWRhcHRlciYjMzk7cyBjb25maWd1cmF0aW9uIG9yIHN0YXR1cywgcGVyaGFwcyBldmVuIHNlY3VyaXR5LXJlbGF0ZWQgc2V0dGluZ3MuIEl0JiMzOTtzIHByb2JhYmx5IHBhcnQgb2YgYSBsYXJnZXIgbWVjaGFuaXNtIHRvIGludGVyZmFjZSB3aXRoIHRoZSBmaXJtd2FyZSBhbmQgZ2V0IGVzc2VudGlhbCBpbmZvcm1hdGlvbi4gSSB3b25kZXIgaWYgaXQgaW5jbHVkZXMgZXJyb3IgaGFuZGxpbmcuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZSB3aXJlbGVzcyBhZGFwdGVyIGlzIGF0dGVtcHRpbmcgdG8gZGV0ZXJtaW5lIGl0cyBvcGVyYXRpb25hbCBzdGF0dXMgYnkgYWNjZXNzaW5nIFVFRkkgdmFyaWFibGVzLiBBcmUgd2UgZGV0ZXJtaW5pbmcgd2hldGhlciBTZWN1cmUgQm9vdCBpcyBlbmFibGVkLCBmb3IgZXhhbXBsZT8gT3IgYXJlIHdlIGFjY2Vzc2luZyBkcml2ZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnM/IFRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscywgc28gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgdmFyaWFibGVzIGl0JiMzOTtzIGZldGNoaW5nLCBhbmQgd2h5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9nZXRfdmFyaWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjM9c3RydWN0IGl3bF91ZWZpX3Budm1fbWVtX2Rlc2Mge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjk6c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgKmRhdGFfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02MD12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUoSVdMX1VFRklfT0VNX1BOVk1fTkFNRSwgXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OC1cdFx0XHRcdCAgICAgXHUwMDI2cGFja2FnZV9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04Mz1pd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkzOlx0dmFyID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKHVlZmlfdmFyX25hbWUsIGd1aWQsIFx1MDAyNnZhcl9zaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzUxMgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGZ1bmN0aW9uIHJldHJpZXZlcyBVRUZJIHZhcmlhYmxlcy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGtub3cgdGhlIG51YW5jZXMgb2YgVUVGSSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGFyZWFzIG9mIGNvbmNlcm4uIEkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nLCB0aGUgc2l6ZSBjYWxjdWxhdGlvbnMsIGFuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVUVGSSBydW50aW1lIHNlcnZpY2VzLiBJJiMzOTtsbCBtZW50YWxseSBjb21wYXJlIHRoaXMgaW1wbGVtZW50YXRpb24gdG8gb3RoZXIgVUVGSSB2YXJpYWJsZSByZXRyaWV2YWwgbWV0aG9kcyBJJiMzOTt2ZSBzZWVuLCBjb25zaWRlcmluZyBkaWZmZXJlbnQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlcyBhbmQgZmlybXdhcmUgZGVzaWducy4gSSYjMzk7bGwgYWxzbyBiZSB0aGlua2luZyBhYm91dCBhbnkgcG9zc2libGUgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBzdWNoIGFzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgdG8gYnVmZmVyIG92ZXJmbG93cyBvciBpbmNvcnJlY3QgcGVybWlzc2lvbnMgY2hlY2tzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYXJlYXMgd2hlcmUgdGhlIGNvZGUgbWlnaHQgaW5hZHZlcnRlbnRseSBleHBvc2Ugc2Vuc2l0aXZlIGRhdGEgb3IgYWxsb3cgZm9yIHVuZXhwZWN0ZWQgbW9kaWZpY2F0aW9ucyBvZiB0aGUgVUVGSSB2YXJpYWJsZSBzdG9yZS4gSSYjMzk7bGwgYWxzbyBjaGVjayBpZiB0aGUgZnVuY3Rpb24gaGFuZGxlcyBOVUxMIG9yIGludmFsaWQgaW5wdXQgcHJvcGVybHkgYW5kIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGRpZmZlcmVudCBlcnJvciBjb2Rlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjk6XHRzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcbiAgMzA6XHRcdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgKmRhdGFfc2l6ZSlcbiAgMzE6XHR7XG4gIDMyOlx0XHRlZmlfc3RhdHVzX3Qgc3RhdHVzO1xuICAzMzpcdFx0dm9pZCAqZGF0YTtcbiAgMzQ6XHRcbiAgMzU6XHRcdGlmICghZGF0YV9zaXplKVxuICAzNjpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiAgMzc6XHRcbiAgMzg6XHRcdGlmICghZWZpX3J0X3NlcnZpY2VzX3N1cHBvcnRlZChFRklfUlRfU1VQUE9SVEVEX0dFVF9WQVJJQUJMRSkpXG4gIDM5Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuICA0MDpcdFxuICA0MTpcdFx0LyogZmlyc3QgY2FsbCB3aXRoIE5VTEwgZGF0YSB0byBnZXQgdGhlIGV4YWN0IGVudHJ5IHNpemUgKi9cbiAgNDI6XHRcdCpkYXRhX3NpemUgPSAwO1xuICA0MzpcdFx0c3RhdHVzID0gZWZpLmdldF92YXJpYWJsZShuYW1lLCBndWlkLCBOVUxMLCBkYXRhX3NpemUsIE5VTEwpO1xuICA0NDpcdFx0aWYgKHN0YXR1cyAhPSBFRklfQlVGRkVSX1RPT19TTUFMTCB8fCAhKmRhdGFfc2l6ZSlcbiAgNDU6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4gIDQ2Olx0XG4gIDQ3Olx0XHRkYXRhID0ga21hbGxvYygqZGF0YV9zaXplLCBHRlBfS0VSTkVMKTtcbiAgNDg6XHRcdGlmICghZGF0YSlcbiAgNDk6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gIDUwOlx0XG4gIDUxOlx0XHRzdGF0dXMgPSBlZmkuZ2V0X3ZhcmlhYmxlKG5hbWUsIGd1aWQsIE5VTEwsIGRhdGFfc2l6ZSwgZGF0YSk7XG4gIDUyOlx0XHRpZiAoc3RhdHVzICE9IEVGSV9TVUNDRVNTKSB7XG4gIDUzOlx0XHRcdGtmcmVlKGRhdGEpO1xuICA1NDpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcbiAgNTU6XHRcdH1cbiAgNTY6XHRcbiAgNTc6XHRcdHJldHVybiBkYXRhO1xuICA1ODpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxOTIKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgdmlhIEVGSSBWYXJpYWJsZXMqKgoKT2theSwgc28gYGl3bF91ZWZpX2dldF92YXJpYWJsZWAgdWx0aW1hdGVseSBjYWxscyBgZWZpLmdldF92YXJpYWJsZWAuIENhbiB3ZSBmdXp6IGBlZmkuZ2V0X3ZhcmlhYmxlYCB0aHJvdWdoIHRoaXMgZHJpdmVyPyAgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBkaXJlY3RseSB0YXJnZXQgVUVGSSB2YXJpYWJsZXMgdW5sZXNzIHRoZXJlJiMzOTtzIGEgY29udmVuaWVudCBpbnRlcmZhY2UgbGlrZSBhbiBpb2N0bCBvciBzeXNmcyBlbnRyeSBvciBpZiB3ZSYjMzk7cmUgaW4gYSBWTSB3aXRoIGRpcmVjdCBjb250cm9sLCBidXQgdGhhdCYjMzk7cyBub3QgaXRzIHVzdWFsIG1vZGUgb2Ygb3BlcmF0aW9uLiBIb2xkIG9uLi4uIGRvZXNuJiMzOTt0IHN5emthbGxlciBoYXZlIHNvbWUgc3VwcG9ydCB2aWEgYGVmaXZhcmZzYD8gTm8sIHRoYXQganVzdCBwcm92aWRlcyB3cml0ZSBhY2Nlc3MuICBBaCwgYnV0IHRoYXQmIzM5O3MgdGhlIGtleSEgSWYgc3l6a2FsbGVyICpjYW4qIHdyaXRlIHRvIGBlZml2YXJmc2AsIGl0IGNhbiBjcmVhdGUgYXJiaXRyYXJ5IEVGSSB2YXJpYWJsZXMsIGFuZCAqdGhlbiogdGhlIGRyaXZlciB3aWxsIHJlYWQgdGhlbS4KClRoZSBuZXh0IHF1ZXN0aW9uOiBJcyBgZWZpdmFyZnNgIHdyaXRhYmxlIGJ5IHJvb3Q/IFllcywgaXQgaXMuIFBlcmZlY3QuIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGNhbiB3cml0ZSB0byBgL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycy8uLi5gIGFuZCBlZmZlY3RpdmVseSBjb25zdHJ1Y3QgaW5wdXRzIGZvciB0aGUgZHJpdmVyLgoKTm93LCB3aGVuIGRvZXMgdGhlIGRyaXZlciByZWFkIHRoZSB2YXJpYWJsZT8gYGl3bF9wbnZtX2xvYWRgIGlzIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIENhbiBzeXprYWxsZXIgdHJpZ2dlciBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKmFmdGVyKiB3cml0aW5nIHRoZSBFRkkgdmFyaWFibGVzPyBZZXMsIGJ5IHVuYmluZGluZyBhbmQgYmluZGluZyB0aGUgZHJpdmVyLCBvciBieSB1c2luZyBob3RwbHVnZ2luZyBtZWNoYW5pc21zIGZvciB0aGUgZGV2aWNlLCBsaWtlIGB2aGNpYCwgYG1hYzgwMjExX2h3c2ltYCwgb3IgZXZlbiBQQ0kgaG90cGx1Zy4KCldhaXQsIGl3bHdpZmkgaXMgYSBQQ0kgZHJpdmVyISAgQW5kIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuICBJZiB0aGUgYGl3bHdpZmlgIGRyaXZlciBpcyBlbmFibGVkLCBzeXprYWxsZXIgKmNvdWxkKiBmdXp6IGl0LiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBpd2x3aWZpYCBpcyBhY3R1YWxseSBlbmFibGVkIGluIHRoZSBzeXprYWxsZXIgY29uZmlncy4gU3l6a2FsbGVyIGdlbmVyYWxseSB0ZXN0cyBhIGxvdCBvZiBkcml2ZXJzLCBzbyBpdCYjMzk7cyBhIGdvb2QgYmV0LiBMZXQmIzM5O3MgdmVyaWZ5IGJ5IGNoZWNraW5nIGBDT05GSUdfSVdMV0lGSWAgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1ODpjb25maWcgSVdMV0lGSV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTg0PWNvbmZpZyBJV0xNTERcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTQtIyBkb24mIzM5O3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5NTpjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDU9bWVudSBcJiMzNDtEZWJ1Z2dpbmcgT3B0aW9uc1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXHRib29sIFwmIzM0O0VuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cdGJvb2wgXCYjMzQ7aXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzOTpjb25maWcgSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cdGJvb2wgXCYjMzQ7aXdsd2lmaSBkZXZpY2UgYWNjZXNzIHRyYWNpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2ODcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgbGVuZ3RoIGNoZWNrIGluIHRoZSBpd2x3aWZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoaXMgc25pcHBldDoKCmBgYGMKCQkJaWYgKHRsdl9sZW4gJmx0OyAzICogc2l6ZW9mKF9fbGUzMikpIHsKCQkJCUlXTF9FUlIodHJhbnMsICYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxuJiMzNDssCgkJCQkJdGx2X2xlbik7CgkJCQlyZXR1cm4gLUVJTlZBTDsKCQkJfQpgYGAKClJpZ2h0LCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gaXQgdHJpZXMgdG8gYWNjZXNzIGVsZW1lbnRzIGB0bHZfc2t1X2lkLSZndDtkYXRhWzBdYCwgYFsxXWAsIGFuZCBgWzJdYC4gR29vZCBjYXRjaC4gQW5kIGxvb2ssIHRoZSBjb21taXQgYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AuIFdhaXQgYSBtaW51dGUuLi4gdGhhdCBtZWFucyBzeXpib3QgZm91bmQgdGhpcyEgU3l6a2FsbGVyISBUaGF0JiMzOTtzIGV4Y2VsbGVudCBuZXdzLiBJZiBzeXpib3QgY2FuIHRyaWdnZXIgdGhpcywgdGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGNvZGUgKmlzKiByZWFjaGFibGUsIGFuZCB0aGF0IGl0JiMzOTtzIHByaW1lIGZvciBmdXJ0aGVyIGZ1enppbmcuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBwdXJzdWluZy4KCk5vdywgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIENsZWFybHksIGBDT05GSUdfSVdMV0lGSWAgaXMgdGhlIG1haW4gb25lLCBhcyBpdCYjMzk7cyB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCBidXQgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBzdWItb3B0aW9ucyB3ZSBuZWVkIHRvIGVuYWJsZSB0byBleHBvc2UgdGhpcyB2dWxuZXJhYmlsaXR5PyBMZXQmIzM5O3MgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWcgZmxhZ3Mgd2UgbmVlZCB0byB0YWtlIGludG8gY29uc2lkZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCMgY29tbW9uXG4gICAzOlx0b2JqLSQoQ09ORklHX0lXTFdJRkkpXHQmIzQzOz0gaXdsd2lmaS5vXG4gICA0Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtaW8ub1xuICAgNTpcdGl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gaXdsLWRydi5vXG4gICA2Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtZGVidWcub1xuICAgNzpcdGl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gaXdsLW52bS11dGlscy5vXG4gICA4Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtdXRpbHMub1xuICAgOTpcdGl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gaXdsLXBoeS1kYi5vIGl3bC1udm0tcGFyc2Uub1xuICAxMDpcdFxuICAxMTpcdCMgQnVzXG4gIDEyOlx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBwY2llL2N0eHQtaW5mby5vIHBjaWUvY3R4dC1pbmZvLXYyLm8gcGNpZS9kcnYubyBwY2llL3V0aWxzLm9cbiAgMTM6XHRpd2x3aWZpLW9ianNcdFx0JiM0Mzs9IHBjaWUvZ2VuMV8yL3J4Lm8gcGNpZS9nZW4xXzIvdHgubyBwY2llL2dlbjFfMi90cmFucy5vXG4gIDE0Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBwY2llL2dlbjFfMi90cmFucy1nZW4yLm8gcGNpZS9nZW4xXzIvdHgtZ2VuMi5vXG4gIDE1Olx0XG4gIDE2Olx0Q0ZMQUdTX3BjaWUvZHJ2Lm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxuICAxNzpcdFxuICAxODpcdCMgY29tYmluZWQgTUFDL1JGIGNvbmZpZ3VyYXRpb25zXG4gIDE5Olx0aXdsd2lmaS0kKENPTkZJR19JV0xEVk0pICYjNDM7PSBjZmcvMTAwMC5vIGNmZy8yMDAwLm9cbiAgMjA6XHRpd2x3aWZpLSQoQ09ORklHX0lXTERWTSkgJiM0Mzs9IGNmZy81MDAwLm8gY2ZnLzYwMDAub1xuICAyMTpcdGl3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnLzcwMDAubyBjZmcvODAwMC5vXG4gIDIyOlx0IyBNQUMgY29uZmlndXJhdGlvbnNcbiAgMjM6XHRpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IGNmZy85MDAwLm8gY2ZnLzIyMDAwLm9cbiAgMjQ6XHRpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IGNmZy9heDIxMC5vXG4gIDI1Olx0aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICYjNDM7PSBjZmcvYnoubyBjZmcvc2Mub1xuICAyNjpcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSAmIzQzOz0gY2ZnL2J6Lm8gY2ZnL3NjLm8gY2ZnL2RyLm9cbiAgMjc6XHQjIFJGIGNvbmZpZ3VyYXRpb25zXG4gIDI4Olx0aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICYjNDM7PSBjZmcvcmYtamYubyBjZmcvcmYtaHIubyBjZmcvcmYtZ2Yub1xuICAyOTpcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSAmIzQzOz0gY2ZnL3JmLWZtLm8gY2ZnL3JmLXdoLm8gY2ZnL3JmLXBlLm9cbiAgMzA6XHRcbiAgMzE6XHRpd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGl3bC1kYmctdGx2Lm9cbiAgMzI6XHRpd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGl3bC10cmFucy5vXG4gIDMzOlx0XG4gIDM0Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBmdy9pbWcubyBmdy9ub3RpZi13YWl0Lm8gZncvcnMub1xuICAzNTpcdGl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gZncvZGJnLm8gZncvZGJnLW9sZC5vIGZ3L3Budm0ubyBmdy9kdW1wLm9cbiAgMzY6XHRpd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGZ3L3JlZ3VsYXRvcnkub1xuICAzNzpcdGl3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gZncvcGFnaW5nLm8gZncvc21lbS5vIGZ3L2luaXQub1xuICAzODpcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSAmIzQzOz0gZncvc21lbS5vIGZ3L2luaXQub1xuICAzOTpcdGl3bHdpZmktJChDT05GSUdfQUNQSSkgJiM0Mzs9IGZ3L2FjcGkub1xuICA0MDpcdGl3bHdpZmktJChDT05GSUdfRUZJKVx0JiM0Mzs9IGZ3L3VlZmkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzIwOQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGl3bHdpZmkgRHJpdmVyJiMzOTtzIFVFRkkgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGl3bHdpZmlgIGRyaXZlciBidWlsZCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgaG93IFVFRkkgaXMgaGFuZGxlZC4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYGl3bHdpZmktJChDT05GSUdfRUZJKSAmIzQzOz0gZncvdWVmaS5vYC4gVGhpcyB0ZWxscyBtZSB0aGF0IHRoZSBgZncvdWVmaS5jYCBmaWxlICpyZXF1aXJlcyogYENPTkZJR19FRklgIHRvIGJlIGNvbXBpbGVkIGludG8gdGhlIGRyaXZlci4gTWFrZXMgc2Vuc2UuIE5hdHVyYWxseSwgYENPTkZJR19JV0xXSUZJYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgdGhlIGRyaXZlciYjMzk7cyBpbmNsdXNpb24uCgpOb3csIEkgbmVlZCB0byBjaGVjayBmb3Igb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzZWUuLi4gSSByZW1lbWJlciB0aGF0IGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGRlZmluZWQgaW4gYGZ3L3VlZmkuY2AuIFRoZXJlZm9yZSwgdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIGFyZSBkZWZpbml0ZWx5IGBJV0xXSUZJYCBhbmQgYEVGSWAuCgpIb2xkIG9uLi4uIEkmIzM5O20gcmVtaW5kZWQgdGhhdCBgaXdsX3Budm1fbG9hZGAgaXMgaW4gYGZ3L3Budm0uY2AuIExldCBtZSBxdWlja2x5IGxvb2sgYXQgdGhlIE1ha2VmaWxlIGZvciB0aGF0IGZpbGUsIGp1c3QgdG8gYmUgc3VyZS4uLiBBaCwgeWVzOiBgaXdsd2lmaS1vYmpzICYjNDM7PSBmdy9wbnZtLm9gLiBTbywgdGhhdCBtZWFucyBgZncvcG52bS5jYCBpcyBhbHdheXMgY29tcGlsZWQgaWYgYElXTFdJRklgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRvIGJlIGV4cGVjdGVkLgoKQ3J1Y2lhbGx5LCB0aG91Z2gsIGBmdy91ZWZpLmNgIG9ubHkgZ2V0cyBidWlsdCBpZiBgQ09ORklHX0VGSWAgaXMgc2V0LiBPa2F5LCBqdXN0IHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nLCBJIG5lZWQgdG8gbG9vayBhdCBgZncvdWVmaS5oYCB0byBzZWUgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZCB3aGVuIGBDT05GSUdfRUZJYCAqaXNuJiMzOTt0KiBlbmFibGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGZhbGxzIG91dCB3aGVuIHRoaXMgaXMgZGlzYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM1MDpcdFx0XHRcdCAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcbiAzNTE6XHRpbnQgaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcbiAzNTI6XHRpbnQgaXdsX3VlZmlfZ2V0X2RzYnIoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKTtcbiAzNTM6XHRpbnQgaXdsX3VlZmlfZ2V0X3BoeV9maWx0ZXJzKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG4gMzU0Olx0I2Vsc2UgLyogQ09ORklHX0VGSSAqL1xuIDM1NTpcdHN0YXRpYyBpbmxpbmUgdm9pZCAqaXdsX3VlZmlfZ2V0X3Budm0oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxuIDM1NjpcdHtcbiAzNTc6XHRcdHJldHVybiBFUlJfUFRSKC1FT1BOT1RTVVBQKTtcbiAzNTg6XHR9XG4gMzU5Olx0XG4gMzYwOlx0c3RhdGljIGlubGluZSBpbnRcbiAzNjE6XHRpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gMzYyOlx0XHRcdFx0ICAgIGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuIDM2MzpcdFx0XHRcdCAgICBzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSxcbiAzNjQ6XHRcdFx0XHQgICAgX19sZTMyIHNrdV9pZFszXSlcbiAzNjU6XHR7XG4gMzY2Olx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gMzY3Olx0fVxuIDM2ODpcdFxuIDM2OTpcdHN0YXRpYyBpbmxpbmUgdTggKlxuIDM3MDpcdGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbiAzNzE6XHR7XG4gMzcyOlx0XHRyZXR1cm4gRVJSX1BUUigtRU9QTk9UU1VQUCk7XG4gMzczOlx0fVxuIDM3NDpcdFxuIDM3NTpcdHN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdWVmaV9nZXRfc3RlcF90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbiAzNzY6XHR7XG4gMzc3Olx0fVxuIDM3ODpcdFxuIDM3OTpcdHN0YXRpYyBpbmxpbmUgaW50XG4gMzgwOlx0aXdsX3VlZmlfaGFuZGxlX3Rsdl9tZW1fZGVzYyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4gMzgxOlx0XHRcdFx0ICAgICB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXG4gMzgyOlx0e1xuIDM4MzpcdFx0cmV0dXJuIDA7XG4gMzg0Olx0fVxuIDM4NTpcdFxuIDM4NjpcdHN0YXRpYyBpbmxpbmUgaW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiAzODc6XHR7XG4gMzg4Olx0XHRyZXR1cm4gLUVOT0VOVDtcbiAzODk6XHR9XG4gMzkwOlx0XG4gMzkxOlx0c3RhdGljIGlubGluZSBpbnQgaXdsX3VlZmlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuIDM5MjpcdHtcbiAzOTM6XHRcdHJldHVybiAtRU5PRU5UO1xuIDM5NDpcdH1cbiAzOTU6XHRcbiAzOTY6XHRzdGF0aWMgaW5saW5lIGludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4gMzk3Olx0e1xuIDM5ODpcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gMzk5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYzMwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgQ2hhaW4qKgoKT2theSwgc28gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCwgYnV0IGl0JiMzOTtzIGNsZWFybHkgc3R1YmJlZCBvdXQgdW5sZXNzIGBDT05GSUdfRUZJYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBkZXBlbmRlbmN5LCBkZWZpbml0ZWx5LiBBbmQgZ2l2ZW4gaXQgbGl2ZXMgd2l0aGluIHRoZSBgaXdsd2lmaWAgdHJlZSwgYENPTkZJR19JV0xXSUZJYCBpcyBhbm90aGVyIG5vLWJyYWluZXIuCgpMZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0IGVsc2UgaXMgdGllZCBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNgLiBUaGUgZnVuY3Rpb24gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgY2FsbGVkIGJ5IGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIHdoaWNoLCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYGl3bF9wbnZtX2xvYWRgLiBOb3cgd2UmIzM5O3JlIGdldHRpbmcgc29tZXdoZXJlLiBgaXdsX3Budm1fbG9hZGAgaXMgY2FsbGVkIGZyb20gYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCAqYW5kKiBgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZWAuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIHJlc2lkZXMgaW4gYG12bS9mdy5jYCwgd2hpY2ggdGVsbHMgbWUgdGhpcyBicmFuY2ggaXMgZGVwZW5kZW50IG9uIGBDT05GSUdfSVdMTVZNYC4gQW5kIHRoZSBvdGhlciBvbmUsIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYCwgaXMgaW4gYG1sZC9mdy5jYCB3aGljaCwgbmF0dXJhbGx5LCBwb2ludHMgdG8gYENPTkZJR19JV0xNTERgLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgTWFrZWZpbGUuIEFoLCB5ZXM6IGBpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IG12bS9gIGFuZCBgaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICYjNDM7PSBtbGQvYC4KCkhvbGQgb24uLi4gYGl3bF9wbnZtX2xvYWRgIGlzIGFjdHVhbGx5IGluIGBmdy9wbnZtLmNgLCB3aGljaCBzZWVtcyB0byBiZSBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHksIHNvIHRoZSBwYXRoIGlzIHN0aWxsIHRoZXJlIGV2ZW4gd2l0aG91dCBlaXRoZXIgYElXTE1WTWAgb3IgYElXTE1MRGAuIEJ1dCB0aGUgY2FsbCBjaGFpbiAqcmVxdWlyZXMqIGF0IGxlYXN0IG9uZSBvZiB0aGVtIHRvIHJlYWNoIGl0LiBJdCBzZWVtcyBJIG5lZWQgdG8gY2xhcmlmeSB3aGF0IHRoZSAqS2NvbmZpZyogZmlsZXMgZm9yIGBJV0xNVk1gIGFuZCBgSVdMTUxEYCBzYXkgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xNVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTY2PWNvbmZpZyBJV0xEVk1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NzQ6Y29uZmlnIElXTE1WTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTYyNQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBWZXJpZmljYXRpb24qKgoKQWxyaWdodCwgdGhlIGluc3RydWN0aW9uIG1lbnRpb25zIGBJV0xNTERgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byBhIG1lbnRhbCBjaGVja2xpc3QuIElzIHRoaXMgYSBjb2RlPyBBbiBhY3JvbnltPyBBIGZpbGUgb3IgZGF0YXNldCBpZGVudGlmaWVyPyBHaXZlbiB0aGUgY29udGV4dCwgSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyBsaWtlbHkgYSB0ZWNobmljYWwgZGVzaWduYXRpb24sIHBlcmhhcHMgYSB2YXJpYWJsZSBuYW1lLCBhIG1vZGVsIGlkZW50aWZpZXIsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiBhIHNwZWNpZmljIHByb2plY3Qgb3IgZG9tYWluLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB2ZXJpZnkgdGhlIGNvbnRleHQ7IHdoYXQgaXMgdGhlIGRvbWFpbj8gV2hhdCBpcyB0aGUgcHJvamVjdD8gSSBuZWVkIHRvIGNoZWNrIGl0cyBvcmlnaW4gdG8gZGV0ZXJtaW5lIGl0cyByZWxldmFuY2UuIElzIHRoaXMgc29tZXRoaW5nIEkgc2hvdWxkIHJlY29nbml6ZSwgb3IgaXMgaXQgbmV3PyBJIG5lZWQgdG8gcGVyZm9ybSBhIHF1aWNrIHJldmlldyBvZiBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgbWV0YWRhdGEuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBkZXNpZ25hdGlvbiBmb3IgYSBwcm9jZWR1cmUsIGEgZGF0YXNldCwgb3IgYW4gaXRlbS4gUGVyaGFwcyBJIG5lZWQgdG8gY2hlY2sgdGhlIHByb2plY3QmIzM5O3MgY29kZWJhc2UsIGRvY3VtZW50YXRpb24sIG9yIHJlbGV2YW50IGludGVybmFsIHRvb2xzIGlmIGFueSBhcmUgYXZhaWxhYmxlLiBJJiMzOTtsbCBzZWFyY2ggZXhpc3RpbmcgaW5kaWNlcyBvciBkYXRhYmFzZXMgZm9yIGFueSBtYXRjaGVzIG9yIHNpbWlsYXIgZW50cmllcyB0aGF0IEkgYW0gYXdhcmUgb2YuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcDsgSSBjYW4mIzM5O3QgcHJvY2VlZCB3aXRob3V0IHRoYXQgY2xhcml0eS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYSB0eXBvLCB0b28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xNTEQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTc0PWNvbmZpZyBJV0xNVk1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6ODQ6Y29uZmlnIElXTE1MRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAyNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRHJpdmVyIEluY2x1c2lvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2Ugc3ViLWRyaXZlcnM6IGBJV0xNVk1gIGFuZCBgSVdMTUxEYC4gVGhpbmtpbmcgc3RyYXRlZ2ljYWxseSwgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcmVhY2hhYmxlLCBJIG5lZWQgdG8gaW5jbHVkZSBgSVdMV0lGSWAsIGBFRklgLCBhbmQgcHJvYmFibHkgYElXTE1WTWAuIEhhbmcgb24uLi4gYElXTE1WTWAgaXMgdGhlIHdvcmtob3JzZSBoZXJlLCB0aGUgTWFjODAyMTEgVmlydHVhbCBNQUMgdGhhdCBoYW5kbGVzIHRob3NlIG5ld2VyIEludGVsIGNhcmRzIOKAkyB0aGUgNzI2MCBhbmQgdXAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBgSVdMTVZNYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgaXQgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBsaXN0ZWQuIEJlc3QgdG8gYmUgc2FmZSwgc28gSSYjMzk7bGwgZ28gd2l0aCBsaXN0aW5nIGBJV0xXSUZJYCwgYElXTE1WTWAsIGFuZCBgRUZJYC4gVGhhdCBzaG91bGQgY292ZXIgdGhlIGNydWNpYWwgYmFzZXMuCgpOb3csIG9uIHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIOKAkyBpZGVudGlmeWluZyB0aGUgZm9jdXMgc3ltYm9scy4gVGhlIHBhdGNoIHRhcmdldHMgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAuIFllcCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEga2V5IHBsYXllciwgc28gdGhhdCYjMzk7cyB3aGVyZSBteSBhdHRlbnRpb24gd2lsbCBiZSBkaXJlY3RlZC4gSSYjMzk7bGwgYWxzbyBiZSB3YXRjaGluZyBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGFuZCBgaXdsX3Budm1fbG9hZGAuIFRob3NlIGFyZSBsaWtlbHkgcmVsYXRlZC4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGFsbCBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNz1pd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MzI6XHRyZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVx0XHRcdFx0XHQgIHNrdV9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTY2PXN0YXRpYyBpbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjIwOmludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMjEtXHRcdFx0XHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zMjU9dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMjY6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTMyNy1cdFx0XHRcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTM2MD1zdGF0aWMgaW5saW5lIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzYxOml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM2Mi1cdFx0XHQgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTI5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgUG93ZXIgUmVkdWN0aW9uIGluIEludGVsIFdpcmVsZXNzIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gcG93ZXIgbWFuYWdlbWVudCB3aXRoaW4gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciBzcGFjZSwgYW5kIGl0IHNlZW1zIGxpa2UgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgYSBwcmV0dHkgc29saWQgZW50cnkgcG9pbnQgZm9yIGludmVzdGlnYXRpb24uIEl0IGxpa2VseSBkZWFscyB3aXRoIGluaXRpYWwgcG93ZXIgY29uZmlndXJhdGlvbiBwYXJzaW5nIGR1cmluZyBVRUZJIGJvb3QsIHdoaWNoIGlzIGFuIGludGVyZXN0aW5nIHNwb3QgdG8gc3RhcnQuCgpOb3csIEkgbmVlZCB0byBleHBhbmQgbXkgc2NvcGUuIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgYWxzbyBsb29rcyBwcm9taXNpbmcuIFRoYXQgbmFtZSBzdWdnZXN0cyB3ZSYjMzk7cmUgZ2V0dGluZyBpbnRvIGxvYWRpbmcgcG93ZXIgc2V0dGluZ3MgZnJvbSBwZXJtYW5lbnQgbm9uLXZvbGF0aWxlIG1lbW9yeSAoUE5WTSkgYW5kIHRyYW5zaXRpb25pbmcgdGhvc2Ugc2V0dGluZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgdHJhbnNpdGlvbiBwcm9jZXNzIGFuZCBob3cgdGhvc2Ugc2V0dGluZ3MgaW50ZXJhY3Qgd2l0aCB0aGUgaW5pdGlhbCBwYXJzaW5nLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB0d28gd29yayB0b2dldGhlciB3aWxsIGRlZmluaXRlbHkgaWxsdW1pbmF0ZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIEFyZSB0aGVzZSB0d28gZnVuY3Rpb25zIHJlbGF0ZWQgb3IgZG8gdGhleSBmZWVkIGludG8gdGhlIHNhbWUgc3RhdGUgbWFjaGluZT8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDA3Oml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDA4LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQ1NT1pbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjctXHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY4Olx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFx1MDAyNmZ3LVx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzA0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyB1bmRlcnN0YW5kaW5nOgoKKipSZWZsZWN0aW5nIG9uIFBvd2VyIFJlZHVjdGlvbiBTdHJhdGVnaWVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBwb3dlciBtYW5hZ2VtZW50LiBJJiMzOTttIHNlZWluZyB0aGF0IGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgaXMgYSBzb3VuZCBhcHByb2FjaCBmb3IgaGFuZGxpbmcgcG93ZXIgcmVkdWN0aW9uIGR1cmluZyB0cmFuc21pdCBvcGVyYXRpb25zLiBNYWtlcyBzZW5zZS4gSXQmIzM5O3MgbGlrZWx5IGEgdGFyZ2V0ZWQgb3B0aW1pemF0aW9uIHdpdGhpbiB0aGUgUE5WTSAoUGVyc2lzdGVudCBOb24tVm9sYXRpbGUgTWVtb3J5KSBsb2FkaW5nIHByb2Nlc3MgdG8gc3BlY2lmaWNhbGx5IHRyaW0gcG93ZXIgY29uc3VtcHRpb24gd2hlbiB0cmFuc21pdHRpbmcgZGF0YS4gR29vZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoZXJlLiBBbmQsIEkmIzM5O20gYWxzbyB0aGlua2luZyBvZiBob3cgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHJldHJpZXZpbmcgb3IgY29uZmlndXJpbmcgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyB3aXRoaW4gYSBVRUZJIChVbmlmaWVkIEV4dGVuc2libGUgRmlybXdhcmUgSW50ZXJmYWNlKSBlbnZpcm9ubWVudCwgd2hpY2ggbGlrZWx5IHByb3ZpZGVzIGEgYmFzZS1sZXZlbCBwbGF0Zm9ybSBwb3dlciBtYW5hZ2VtZW50IHN0cmF0ZWd5IHRoYXQgY29tcGxlbWVudHMgdGhlIG1vcmUgYXBwbGljYXRpb24tc3BlY2lmaWMgZGV0YWlscyBvZiB0aGUgdHJhbnNtaXQgcG93ZXIgcmVkdWN0aW9uLiBUaGUgY29tYmluZWQgZWZmZWN0IG9mIHRoZXNlIHBvd2VyIHNhdmluZyBtZWFzdXJlcyBpcyBpbXBvcnRhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNz1pd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MjI6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIodHJhbnMsIFx1MDAyNmxlbmd0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MjMtXHRpZiAoSVNfRVJSKGRhdGEpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjIwPWludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjg1OnU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyND12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzI1OnU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzI2LWludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzY5PXN0YXRpYyBpbmxpbmUgdTggKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzcwOml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM3MS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTQ0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYC4gSSYjMzk7bSBndWVzc2luZyB0aGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgSW50ZWwmIzM5O3Mgd2lyZWxlc3MgZHJpdmVyLCBsaWtlbHkgcmVsYXRlZCB0byBoYW5kbGluZyBVRUZJIHZhcmlhYmxlcyB3aXRoaW4gdGhlIGZpcm13YXJlLCBwb3NzaWJseSBmb3IgY29uZmlndXJhdGlvbiBvciBwb3dlciBtYW5hZ2VtZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IHJldHJpZXZlcyBhbmQgZnJvbSB3aGVyZSDigJMgc3BlY2lmaWNhbGx5LCB3aGF0IFVFRkkgdmFyaWFibGUgc3RvcmUgaXMgaXQgYWNjZXNzaW5nPyBJcyBpdCBkZWFsaW5nIHdpdGggTlZSQU0sIG9yIHNvbWUgb3RoZXIgZmlybXdhcmUtc3BlY2lmaWMgYXJlYT8gTW9yZSBpbXBvcnRhbnRseSwgSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzIG9yIHBvdGVudGlhbCBtaXN1c2UgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBwYXJ0aWN1bGFybHkgaW4gaGFuZGxpbmcgdGhlIHJldHJpZXZlZCBkYXRhLiBBcmUgdGhlcmUgYW55IHNpemUgbGltaXRhdGlvbnMsIGJ1ZmZlciBvdmVyZmxvd3MsIG9yIHR5cGUtY29uZnVzaW9uIGJ1Z3MgdGhhdCBJIGNhbiBxdWlja2x5IGlkZW50aWZ5PyBJIG5lZWQgdG8gY2hlY2sgaG93IGVycm9yIGNvbmRpdGlvbnMgYXJlIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgYXJlIHRoZSBlcnJvciBjb2RlcyBoYW5kbGVkIHByb3Blcmx5LCBhbmQgYXJlIHRoZXJlIGFueSBzY2VuYXJpb3Mgd2hlcmUgdW5leHBlY3RlZCB2YWx1ZXMgbWlnaHQgbGVhZCB0byBhIHNlY3VyaXR5IGlzc3VlPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgZGlyZWN0IG1lbW9yeSBhY2Nlc3MsIGFuZCBpZiB0aGUgYWNjZXNzIGlzIHByb3BlciBhbmQgY29udHJvbGxlZC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gbG9va2luZyBhdCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCYjMzk7cyBjYWxsZWQuIElzIGl0IGNhbGxlZCBpbiBhIHByaXZpbGVnZWQgY29udGV4dCwgYW5kIGlmIHNvLCB3aGF0JiMzOTtzIHRoZSBjb250cm9sIGZsb3c/IFdoYXQgb3RoZXIgZnVuY3Rpb25zIGRvZXMgaXQgY2FsbCwgYW5kIHdoYXQgYXJlIHRoZWlyIGJlaGF2aW9ycz8gQWxzbywgaXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG9mIGJ5cGFzc2luZyBhY2Nlc3MgY29udHJvbCB0aHJvdWdoIHRoaXMgZnVuY3Rpb24/IFVsdGltYXRlbHksIEkgd2FudCB0byBxdWlja2x5IGV2YWx1YXRlIGl0cyBzYWZldHkgYW5kIHBvdGVudGlhbCBmb3IgZXhwbG9pdGF0aW9uIHdpdGhpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9nZXRfdmFyaWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjM9c3RydWN0IGl3bF91ZWZpX3Budm1fbWVtX2Rlc2Mge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjk6c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgKmRhdGFfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02MD12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUoSVdMX1VFRklfT0VNX1BOVk1fTkFNRSwgXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OC1cdFx0XHRcdCAgICAgXHUwMDI2cGFja2FnZV9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04Mz1pd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkzOlx0dmFyID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKHVlZmlfdmFyX25hbWUsIGd1aWQsIFx1MDAyNnZhcl9zaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM5NgoJCQkJCQkJb3V0cHV0OiAxMjgKCQkJCQkJCXRob3VnaHRzOiA0NzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBpd2x3aWZpYCBQb3dlciBSZWR1Y3Rpb24gVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgYW5kIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AuIFRob3NlIGxvb2sgbGlrZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB0aGlzIHBhcnRpY3VsYXIgYnVnLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5hYmxlIGNvbmZpZ3MgYElXTFdJRklgLCBgRUZJYCwgYW5kIGBJV0xNVk1gLiBUaG91Z2gsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGxpc3QuLi4geWVhaCwgaXQmIzM5O3MganVzdCBgSVdMV0lGSWAsIGBFRklgLCBhbmQgYElXTE1WTWAuIE5vIG90aGVyIG9idmlvdXMgY29uZmlncyBhcmUgaW1tZWRpYXRlbHkgYXBwYXJlbnQgYXMgcmVsZXZhbnQuCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgSVdMV0lGSWAgaXRzZWxmIGRvZXNuJiMzOTt0IG5lZWQgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMuIEFoLCBpdCBuZWVkcyBgUENJYCBhbmQgYE1BQzgwMjExYCwgYnV0IHN5emthbGxlciBzaG91bGQgYWxyZWFkeSBiZSBzZXQgdXAgd2l0aCB0aG9zZSwgc28gd2UmIzM5O3JlIGdvb2QgdGhlcmUuIFRodXMsIGBJV0xXSUZJYCwgYEVGSWAsIGFuZCBgSVdMTVZNYCBpcyBpbmRlZWQgc3VmZmljaWVudC4KCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgcmVhY2hhYmlsaXR5LiBDYW4gd2UgYWN0dWFsbHkgZ2V0IHRvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgPyBSaWdodCwgaXQmIzM5O3MgcmVhY2hlZCBpZiBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgIHJldHVybnMgdmFsaWQgZGF0YS4gQW5kIHRoYXQsIGluIHR1cm4sIGRlcGVuZHMgb24gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAgc3VjY2VlZGluZywgd2hpY2ggZGVwZW5kcyBvbiBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCBzdWNjZWVkaW5nLiBGaW5hbGx5LCB0aGF0IGhpbmdlcyBvbiBgZWZpLmdldF92YXJpYWJsZWAgc3VjY2VlZGluZy4gTm93LCBpZiBzeXprYWxsZXIgY2FuIG1vY2sgRUZJIHZhcmlhYmxlcyBvciB3cml0ZSB0byBlZml2YXJmcywgd2UgY2FuIGRlZmluaXRlbHkgcmVhY2ggdGhpcyBjb2RlIHBhdGguIENvbnNpZGVyaW5nIHRoaXMgd2FzIGZvdW5kIGJ5IHN5emJvdCwgaXQmIzM5O3MgYWxtb3N0IGEgZ2l2ZW4gdGhhdCBpdCYjMzk7cyByZWFjaGFibGUuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3VtbWFyaXplOgoKKipXb3J0aEZ1enppbmc6KiogVHJ1ZQoKKipGb2N1c1N5bWJvbHM6KioKCiogICBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYAoqICAgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYAoKKipFbmFibGVDb25maWdzOioqCgoqICAgYElXTFdJRklgCiogICBgRUZJYAoqICAgYElXTE1WTWAKCioqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgd2hlbiBwYXJzaW5nIHRoZSBQTlZNIFNLVSBUTFYgZnJvbSBhIFVFRkkgdmFyaWFibGUuIFRoZSB2dWxuZXJhYmxlIGNvZGUgaXMgcmVhY2hlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGlmIGNlcnRhaW4gRUZJIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlLCBhbmQgdGhlc2UgdmFyaWFibGVzIGFyZSBmdXp6YWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSYjMzQ7LAogICAgJiMzNDtpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0VGSSYjMzQ7LAogICAgJiMzNDtJV0xNVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UmIzM0OywKICAgICYjMzQ7aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBpd2x3aWZpIGRyaXZlciB3aGVuIHBhcnNpbmcgdGhlIFBOVk0gU0tVIFRMViBmcm9tIGEgVUVGSSB2YXJpYWJsZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaWYgc3BlY2lmaWMgRUZJIHZhcmlhYmxlcyBhcmUgcHJlc2VudCwgd2hpY2ggY2FuIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjEwLjEyMjk0ODIyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTMxMjM2MzIxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCIsXG4gICAgXCJFRklcIixcbiAgICBcIklXTE1WTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICAgIFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjoxMC4xMjI5NTgyNDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDM0MjA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZlMWRkNmFjNTgwNjQwMjlkODU2ZWZiNzZhODk3ZWNkNmE4NTYzNTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTI6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li43NDdkZjY1OGRjN2U4NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXFxuQEAgLTI0OCw2ICsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4gXFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJHb3QgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSBsZW4gJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgdGx2X2xlbik7XFxuK1xcdFxcdFxcdGlmICh0bHZfbGVuIFxcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XFxuK1xcdFxcdFxcdFxcdElXTF9FUlIodHJhbnMsIFxcXCJpbnZhbGlkIFBOVk0gU0tVIFRMViBsZW46ICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHR0bHZfbGVuKTtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdH1cXG4rXFxuIFxcdFxcdFxcdElXTF9ERUJVR19GVyh0cmFucywgXFxcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzBdKSxcXG4gXFx0XFx0XFx0XFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzFdKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTAuODU0NzI3NjgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTg1ODA1NjY3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiRUZJXCIsXG4gICAgXCJJV0xNVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VcIixcbiAgICBcIml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBpd2x3aWZpIGRyaXZlciB3aGVuIHBhcnNpbmcgdGhlIFBOVk0gU0tVIFRMViBmcm9tIGEgVUVGSSB2YXJpYWJsZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaWYgc3BlY2lmaWMgRUZJIHZhcmlhYmxlcyBhcmUgcHJlc2VudCwgd2hpY2ggY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2ZTFkZDZhYzU4MDY0MDI5ZDg1NmVmYjc2YTg5N2VjZDZhODU2MzUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTI6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG5pbmRleCAyZWYwYTdhOTIwYWRiNS4uNzQ3ZGY2NThkYzdlODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbkBAIC0yNDgsNiArMjQ4LDEyIEBAIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuIFx0XHRcdFx0ICAgICBcIkdvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwiLFxuIFx0XHRcdFx0ICAgICB0bHZfbGVuKTtcbitcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XG4rXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcbitcdFx0XHRcdFx0dGx2X2xlbik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcblwiLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTAuODU0NzMxMjkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2NTMyMDcyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEludGVsIFdpcmVsZXNzIEZpcm13YXJlIFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGZsb2F0aW5nIGFyb3VuZCwgYW5kIGl0J3MgbGFuZGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY2AuIFNwZWNpZmljYWxseSwgaXQncyBhZGRyZXNzaW5nIHRoZSBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBmdW5jdGlvbiBhbmQgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciBgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcy4gSSdsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgYWN0dWFsbHkgKmRvaW5nKi4gTGV0J3MgZ28gYWhlYWQgYW5kIGV4YW1pbmUgdGhhdCBmdW5jdGlvbiBpbiBkZXRhaWwuIFRoaXMgbGVuZ3RoIGNoZWNrIHByb2JhYmx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgb3Igb3RoZXIgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIGhvdyB0aGUgZmlybXdhcmUgaGFuZGxlcyB0aGlzIHBhcnRpY3VsYXIgVExWLiBHb3QgdG8gbWFrZSBzdXJlIHRoZSBwYXRjaCBhZGRyZXNzZXMgYSByZWFsIGlzc3VlIGFuZCB0aGF0IHRoZSBzb2x1dGlvbiBpcyByb2J1c3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBzaWRlIGVmZmVjdHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmshXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzcsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjE1LjMyMDA1NTc2NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDQ2ODM3ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTUuNjI0NzUwNjQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwMDAwMTM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBleHBlY3RpbmcgdGhpcyBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGxpa2VseSBkZWFsaW5nIHdpdGggcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpY2FsbHkgd2l0aGluIGEgVUVGSSBlbnZpcm9ubWVudC4gVGhlIG5hbWluZyBjb252ZW50aW9uIGlzIHByZXR0eSBjbGVhcjsgXCJyZWR1Y2VfcG93ZXJcIiBzdWdnZXN0cyBpdCdzIGFib3V0IG9wdGltaXppbmcgcG93ZXIgY29uc3VtcHRpb24uIFRoZSBcInBhcnNlXCIgcGFydCBsaWtlbHkgbWVhbnMgaXQncyBpbnRlcnByZXRpbmcgc29tZSBkYXRhIG9yIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBwb3dlciByZWR1Y3Rpb24uIEknbSBndWVzc2luZyBpdCdzIGhhbmRsaW5nIHNldHRpbmdzIHJlbGF0ZWQgdG8gcmFkaW8gcG93ZXItZG93biwgY2xvY2sgZ2F0aW5nLCBvciBwZXJoYXBzIHBvd2VyLXNhdmluZyBtb2RlcyBkdXJpbmcgdGhlIFVFRkkgcGhhc2UsIGdpdmVuIHRoYXQgXCJVRUZJXCIgaXMgaW4gdGhlIG5hbWUuIEknbGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgd2hhdCBpbnB1dHMgaXQgdGFrZXMsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLCBhbmQsIGNyaXRpY2FsbHksIHdoZXJlIGl0J3MgY2FsbGVkIGZyb20gYW5kIHdoYXQgaXRzIHJldHVybiB2YWx1ZXMgYXJlLiBUaGF0IHdpbGwgcGFpbnQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGxhcmdlciBwb3dlciBtYW5hZ2VtZW50IHBpY3R1cmUgd2l0aGluIHRoaXMgZHJpdmVyIGFuZCBwb3RlbnRpYWxseSB3aXRoaW4gdGhlIHN5c3RlbSdzIG92ZXJhbGwgcG93ZXIgcHJvZmlsZSBkdXJpbmcgdGhlIGVhcmx5IGJvb3Qgc3RhZ2VzLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgbmVlZGluZyB0byBhc3Nlc3MgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIEFDUEkgdGFibGVzIGFuZCBvdGhlciBwb3dlciBtYW5hZ2VtZW50IGZpcm13YXJlIGludGVyZmFjZXMuIExldCdzIGdldCByZWFkaW5nIGFuZCBjb25maXJtIHRoZXNlIGluaXRpYWwgaHlwb3RoZXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ3MSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjE5LjIyNDc1NTA3OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTksXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjE5OlxcdFxcbiAyMjA6XFx0aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4gMjIxOlxcdFxcdFxcdFxcdFxcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxcbiAyMjI6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEsXFxuIDIyMzpcXHRcXHRcXHRcXHRcXHRfX2xlMzIgc2t1X2lkWzNdKVxcbiAyMjQ6XFx0e1xcbiAyMjU6XFx0XFx0Y29uc3Qgc3RydWN0IGl3bF91Y29kZV90bHYgKnRsdjtcXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwiUGFyc2luZyBSRURVQ0VfUE9XRVIgZGF0YVxcXFxuXFxcIik7XFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdHdoaWxlIChsZW4gXFx1MDAzZT0gc2l6ZW9mKCp0bHYpKSB7XFxuIDIzMDpcXHRcXHRcXHR1MzIgdGx2X2xlbiwgdGx2X3R5cGU7XFxuIDIzMTpcXHRcXG4gMjMyOlxcdFxcdFxcdGxlbiAtPSBzaXplb2YoKnRsdik7XFxuIDIzMzpcXHRcXHRcXHR0bHYgPSAoY29uc3Qgdm9pZCAqKWRhdGE7XFxuIDIzNDpcXHRcXG4gMjM1OlxcdFxcdFxcdHRsdl9sZW4gPSBsZTMyX3RvX2NwdSh0bHYtXFx1MDAzZWxlbmd0aCk7XFxuIDIzNjpcXHRcXHRcXHR0bHZfdHlwZSA9IGxlMzJfdG9fY3B1KHRsdi1cXHUwMDNldHlwZSk7XFxuIDIzNzpcXHRcXG4gMjM4OlxcdFxcdFxcdGlmIChsZW4gXFx1MDAzYyB0bHZfbGVuKSB7XFxuIDIzOTpcXHRcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBUTFYgbGVuOiAlemQvJXVcXFxcblxcXCIsXFxuIDI0MDpcXHRcXHRcXHRcXHRcXHRsZW4sIHRsdl9sZW4pO1xcbiAyNDE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDI0MjpcXHRcXHRcXHR9XFxuIDI0MzpcXHRcXG4gMjQ0OlxcdFxcdFxcdGlmICh0bHZfdHlwZSA9PSBJV0xfVUNPREVfVExWX1BOVk1fU0tVKSB7XFxuIDI0NTpcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgaXdsX3NrdV9pZCAqdGx2X3NrdV9pZCA9XFxuIDI0NjpcXHRcXHRcXHRcXHRcXHQoY29uc3Qgdm9pZCAqKShkYXRhICsgc2l6ZW9mKCp0bHYpKTtcXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxcbiAyNDk6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiR290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXFxcXG5cXFwiLFxcbiAyNTA6XFx0XFx0XFx0XFx0XFx0ICAgICB0bHZfbGVuKTtcXG4gMjUxOlxcdFxcdFxcdFxcdGlmICh0bHZfbGVuIFxcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XFxuIDI1MjpcXHRcXHRcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcXFxuXFxcIixcXG4gMjUzOlxcdFxcdFxcdFxcdFxcdFxcdHRsdl9sZW4pO1xcbiAyNTQ6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDI1NTpcXHRcXHRcXHRcXHR9XFxuIDI1NjpcXHRcXG4gMjU3OlxcdFxcdFxcdFxcdElXTF9ERUJVR19GVyh0cmFucywgXFxcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcXFxuXFxcIixcXG4gMjU4OlxcdFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVswXSksXFxuIDI1OTpcXHRcXHRcXHRcXHRcXHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMV0pLFxcbiAyNjA6XFx0XFx0XFx0XFx0XFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzJdKSk7XFxuIDI2MTpcXHRcXG4gMjYyOlxcdFxcdFxcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XFxuIDI2MzpcXHRcXHRcXHRcXHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XFxuIDI2NDpcXHRcXG4gMjY1OlxcdFxcdFxcdFxcdGlmIChza3VfaWRbMF0gPT0gdGx2X3NrdV9pZC1cXHUwMDNlZGF0YVswXSBcXHUwMDI2XFx1MDAyNlxcbiAyNjY6XFx0XFx0XFx0XFx0ICAgIHNrdV9pZFsxXSA9PSB0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzFdIFxcdTAwMjZcXHUwMDI2XFxuIDI2NzpcXHRcXHRcXHRcXHQgICAgc2t1X2lkWzJdID09IHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMl0pIHtcXG4gMjY4OlxcdFxcdFxcdFxcdFxcdGludCByZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbih0cmFucyxcXG4gMjY5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBkYXRhLCBsZW4sXFxuIDI3MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgcG52bV9kYXRhKTtcXG4gMjcxOlxcdFxcdFxcdFxcdFxcdGlmICghcmV0KVxcbiAyNzI6XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDI3MzpcXHRcXHRcXHRcXHR9IGVsc2Uge1xcbiAyNzQ6XFx0XFx0XFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwiU0tVIElEIGRpZG4ndCBtYXRjaCFcXFxcblxcXCIpO1xcbiAyNzU6XFx0XFx0XFx0XFx0fVxcbiAyNzY6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjc3OlxcdFxcdFxcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XFxuIDI3ODpcXHRcXHRcXHRcXHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XFxuIDI3OTpcXHRcXHRcXHR9XFxuIDI4MDpcXHRcXHR9XFxuIDI4MTpcXHRcXG4gMjgyOlxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiAyODM6XFx0fVxcbiAyODQ6XFx0XFxuIDI4NTpcXHR1OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbiAyODY6XFx0e1xcbiAyODc6XFx0XFx0c3RydWN0IHBudm1fc2t1X3BhY2thZ2UgKnBhY2thZ2U7XFxuIDI4ODpcXHRcXHR1bnNpZ25lZCBsb25nIHBhY2thZ2Vfc2l6ZTtcXG4gMjg5OlxcdFxcdHU4ICpkYXRhO1xcbiAyOTA6XFx0XFxuIDI5MTpcXHRcXHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxcbiAyOTI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IElXTF9VRUZJX1JFRFVDRURfUE9XRVJfTkFNRSxcXG4gMjkzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXFwiUmVkdWNlZCBQb3dlclxcXCIsXFxuIDI5NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKCpwYWNrYWdlKSxcXG4gMjk1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2cGFja2FnZV9zaXplKTtcXG4gMjk2OlxcdFxcdGlmIChJU19FUlIocGFja2FnZSkpXFxuIDI5NzpcXHRcXHRcXHRyZXR1cm4gRVJSX0NBU1QocGFja2FnZSk7XFxuIDI5ODpcXHRcXG4gMjk5OlxcdFxcdElXTF9ERUJVR19GVyh0cmFucywgXFxcInJldiAlZCwgdG90YWxfc2l6ZSAlZCwgbl9za3VzICVkXFxcXG5cXFwiLFxcbiAzMDA6XFx0XFx0XFx0ICAgICBwYWNrYWdlLVxcdTAwM2VyZXYsIHBhY2thZ2UtXFx1MDAzZXRvdGFsX3NpemUsIHBhY2thZ2UtXFx1MDAzZW5fc2t1cyk7XFxuIDMwMTpcXHRcXG4gMzAyOlxcdFxcdCpsZW4gPSBwYWNrYWdlX3NpemUgLSBzaXplb2YoKnBhY2thZ2UpO1xcbiAzMDM6XFx0XFx0ZGF0YSA9IGttZW1kdXAocGFja2FnZS1cXHUwMDNlZGF0YSwgKmxlbiwgR0ZQX0tFUk5FTCk7XFxuIDMwNDpcXHRcXHRpZiAoIWRhdGEpIHtcXG4gMzA1OlxcdFxcdFxcdGtmcmVlKHBhY2thZ2UpO1xcbiAzMDY6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDMwNzpcXHRcXHR9XFxuIDMwODpcXHRcXG4gMzA5OlxcdFxcdGtmcmVlKHBhY2thZ2UpO1xcbiAzMTA6XFx0XFxuIDMxMTpcXHRcXHRyZXR1cm4gZGF0YTtcXG4gMzEyOlxcdH1cXG4gMzEzOlxcdFxcbiAzMTQ6XFx0c3RhdGljIGludCBpd2xfdWVmaV9zdGVwX3BhcnNlKHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpjb21tb25fc3RlcF9kYXRhLFxcbiAzMTU6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbiAzMTY6XFx0e1xcbiAzMTc6XFx0XFx0aWYgKGNvbW1vbl9zdGVwX2RhdGEtXFx1MDAzZXJldmlzaW9uICE9IDEpXFxuIDMxODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTkuMjI1MjU0Mjc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMTE2NTY5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVFRkkgUGFyc2luZyBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBpdCdzIGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgYElXTF9VQ09ERV9UTFZfUE5WTV9TS1VgIHdpdGhpbiB0aGUgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgZnVuY3Rpb24uIFJpZ2h0LCB0aGF0IGZ1bmN0aW9uLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIFVFRkkgdmFyaWFibGVzLiBJIGtub3cgSSd2ZSB3b3JrZWQgd2l0aCBVRUZJIHZhcmlhYmxlIHBhcnNpbmcgYmVmb3JlLCBzbyBpdCdzIGdvb2QgdG8gc2VlIHRoaXMgbGV2ZWwgb2YgZGV0YWlsIGJlaW5nIGFkZGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgdHJhY2UgdGhpcyBiYWNrLiBXaGVyZSBleGFjdGx5IGlzIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGJlaW5nIGNhbGxlZCBmcm9tPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIGNydWNpYWwgdG8gYXNzZXNzaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoeSB0aGF0IHNwZWNpZmljIFRMViBpcyBpbXBvcnRhbnQgaW4gdGhpcyBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHRvIGZ1bGx5IGdyYXNwIHRoZSByYW1pZmljYXRpb25zIG9mIHRoaXMgYWRkZWQgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjIyLjYzNjQyNDA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwODc4NzkyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDc9aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDMyOlxcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVxcdFxcdFxcdFxcdFxcdCAgc2t1X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyNT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMjY6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjctXFx0XFx0XFx0XFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zNjA9c3RhdGljIGlubGluZSBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNjE6aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM2Mi1cXHRcXHRcXHQgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjI4LjcyNDMxMTQ3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTI4NDE1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgUG93ZXIgUmVkdWN0aW9uIGluIEludGVsIFdpcmVsZXNzIEZpcm13YXJlKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXRzIG1haW4gcHVycG9zZSBpcyB0byBoYW5kbGUgcG93ZXIgcmVkdWN0aW9uIGR1cmluZyBhIHRyYW5zaXRpb24uIFRoZSBpbW1lZGlhdGUgcG9pbnQgb2YgaW50ZXJlc3QgaXMgdGhlIGNhbGwgdG8gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgd2l0aGluIGl0LiBUaGF0IHN1Z2dlc3RzIHRoZXJlJ3Mgc29tZSBVRUZJIGludGVyYWN0aW9uIG9yIGludGVycHJldGF0aW9uIGludm9sdmVkIGluIGRldGVybWluaW5nICpob3cqIHRoZSBwb3dlciByZWR1Y3Rpb24gaXMgcGVyZm9ybWVkLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhvc2UgdHdvIGZ1bmN0aW9uczogYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBhbmQgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAuXG5cbk15IGZpcnN0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggZm9yIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AuIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBwb3dlciByZWR1Y3Rpb24gbG9naWMuIFdoYXQgc3RhdGVzIG9yIGV2ZW50cyBsZWFkIHRvIGl0cyBleGVjdXRpb24/IEtub3dpbmcgdGhlIGNhbGxlcihzKSB3aWxsIHRlbGwgbWUgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGFuZCBnaXZlIG1lIGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgb3ZlcmFsbCBwb3dlciBtYW5hZ2VtZW50IHNjaGVtZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoIHRvIGRldGVybWluZSB3aGVyZSBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGlzIGFjdHVhbGx5IGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjMyLjg3NzE1NzMwNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE0MDkzNDg2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDA3Oml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwOC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00NTU9aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjctXFx0aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHRyYW5zLCBmdywgc2t1X2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njg6XFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFxcdTAwMjZmdy1cXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjM2LjAxODEwMTU5MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg4NjI2MDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgaXdsX3Budm1fbG9hZCoqXG5cbk9rYXksIHNvIGBpd2xfcG52bV9sb2FkYCBpcyBpbnZva2luZyBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGhlcmUsIGFuZCB3aGF0IGRyaXZlcyB0aGUgY2FsbCB0byB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLiBUbyB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgcG9pbnQuIE15IG5leHQgc3RlcCBpcyBjbGVhciDigJMgSSBoYXZlIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBgaXdsX3Budm1fbG9hZGAuIFdoZXJlIGRvZXMgaXQgb3JpZ2luYXRlIHdpdGhpbiB0aGUgYnJvYWRlciBkcml2ZXIgc3RydWN0dXJlPyBPbmx5IHRoZW4gY2FuIEkgZm9ybSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBwaWVjZSBvZiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkxMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjQwLjAwNjczMTU4OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5NTgxNTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcG52bV9sb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNTk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozNjA6aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM2MS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MDc6aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDA4LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyAqY2FwYSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NTU6aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU2LVxcdFxcdCAgc3RydWN0IGl3bF9ub3RpZl93YWl0X2RhdGEgKm5vdGlmX3dhaXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY3OlxcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY4OlxcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcXHUwMDI2ZnctXFx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDgwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0ODE6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3Budm1fbG9hZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaC0xNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaDoxNjppbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaC0xNy1cXHRcXHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYz0yNzI9c3RhdGljIGludCBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlKHN0cnVjdCBpd2xfbWxkICptbGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jLTI4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jOjI5MDpcXHRyZXQgPSBpd2xfcG52bV9sb2FkKG1sZC1cXHUwMDNldHJhbnMsIFxcdTAwMjZtbGQtXFx1MDAzZW5vdGlmX3dhaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYy0yOTEtXFx0XFx0XFx0ICAgIG1sZC1cXHUwMDNlZncsIGFsaXZlX2RhdGEuc2t1X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM9Mjg2PXN0YXRpYyBpbnQgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmUoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtNDA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM6NDA3OlxcdHJldCA9IGl3bF9wbnZtX2xvYWQobXZtLVxcdTAwM2V0cmFucywgXFx1MDAyNm12bS1cXHUwMDNlbm90aWZfd2FpdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTQwOC1cXHRcXHRcXHQgICAgbXZtLVxcdTAwM2VmdywgYWxpdmVfZGF0YS5za3VfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjo0Mi44MDI1NTcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTQyMzM0MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBhbmQgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGl3bF9wbnZtX2xvYWRgIGZ1bmN0aW9uIGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgaXdsd2lmaSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQncyBjYWxsZWQgZnJvbSBib3RoIGBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZWAgYW5kIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYC4gVGhlc2UgYXJlIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBkcml2ZXIncyBzZXR1cCwgd2hpY2ggYWx3YXlzIG1ha2VzIG1lIHBheSBtb3JlIGF0dGVudGlvbi4gVGhpcyBwYXRjaCBjYXVnaHQgbXkgZXllIGJlY2F1c2UgaXQgaW50cm9kdWNlcyBhIG5ldyBsZW5ndGggY2hlY2sg4oCTIGB0bHZfbGVuIFx1MDAzYyAzICogc2l6ZW9mKF9fbGUzMilgIOKAkyB3aGVuIGhhbmRsaW5nIGBJV0xfVUNPREVfVExWX1BOVk1fU0tVYC4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhhdCB0aGlzIGludm9sdmVzIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMuXG5cblRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gVUVGSSB2YXJpYWJsZXMgYXJlIGVzc2VudGlhbGx5IGZpcm13YXJlL0JJT1MgcHJvdmlkZWQgZGF0YSwgYW5kIHRoYXQgcmFpc2VzIGEgZmxhZzogYXJlIHRoZXNlIHZhcmlhYmxlcyBwb3RlbnRpYWxseSBmdXp6YWJsZT8gSW4gdGhlIGNvbnRleHQgb2Yga2VybmVsIHNlY3VyaXR5LCB0aGF0J3MgYSBrZXkgcXVlc3Rpb24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgYnkgZGVmYXVsdCwgc3l6a2FsbGVyIGRvZXNuJ3Qgb2ZmZXIgYSBkaXJlY3Qgd2F5IHRvIGZ1enogVUVGSSB2YXJpYWJsZXMgdW5sZXNzIHRoZXJlIGlzIGEgZGVkaWNhdGVkIGludGVyZmFjZSBhdmFpbGFibGUgb3IgaXQncyByZWFkaW5nIGZyb20gYSBmaWxlLiBIb3dldmVyLCBpdCdzIHdvcnRoIGNoZWNraW5nIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgaW50ZXJmYWNlIHRvIGludGVyYWN0IHdpdGggdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIFVFRkkgZGF0YS4gSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAgZnVuY3Rpb24gdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFueSBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjo0Ny42NTY4MTQzMzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTgzMzUxNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNz1pd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MjI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHRyYW5zLCBcXHUwMDI2bGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MjMtXFx0aWYgKElTX0VSUihkYXRhKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjIwPWludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjg1OnU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyND12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMyNTp1OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjYtaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTM2OT1zdGF0aWMgaW5saW5lIHU4ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNzA6aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM3MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjUwLjQ1NTE1OTMwM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ4NjYxMDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBzdGFydGVkLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVgLiBUaGF0IG5hbWUgYWxvbmUgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byB0aGUgaW50ZXJhY3Rpb24gd2l0aCBVRUZJIGZpcm13YXJlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHJldHJpZXZpbmcgdmVyaWZpZWQgdmFyaWFibGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcy4gSXMgaXQgcmV0cmlldmluZyBzZWN1cml0eSBzZXR0aW5ncz8gUGVyaGFwcyBpdCdzIGNoZWNraW5nIHRoZSBpbnRlZ3JpdHkgb2YgYSBib290IHZhcmlhYmxlPyBLbm93aW5nIHdoYXQgaXQncyAqdmVyaWZ5aW5nKiBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyByb2xlLiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGl3bCAobGlrZWx5IEludGVsIFdpcmVsZXNzIExBTikgZHJpdmVyIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIFVFRkkgc2VydmljZXMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHJlbGF0ZWQgZnVuY3Rpb25zLiBIb3BlZnVsbHkgdGhlIGNvZGUgaXMgd2VsbC1kb2N1bWVudGVkLiBPdGhlcndpc2UgSSB3aWxsIGJlIHNwZW5kaW5nIGEgbG90IG9mIHRpbWUgcmV2ZXJzZSBlbmdpbmVlcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIxNSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjUzLjkwMzgyNDIxMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyMzI3OTQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgyPXN0YXRpYyB2b2lkICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Mzppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NC1cXHRcXHRcXHRcXHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTExOD1zdGF0aWMgdm9pZCAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE5Oml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjAtXFx0XFx0XFx0ICAgICAgIGVmaV9jaGFyMTZfdCAqdWVmaV92YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTI1OlxcdHJldHVybiBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXFx1MDAyNklXTF9FRklfV0lGSV9HVUlELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICB1ZWZpX3Zhcl9uYW1lLCB2YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTI4NT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI5MTpcXHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI5Mi1cXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MzI5PXZvaWQgaXdsX3VlZmlfZ2V0X3N0ZXBfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzM3OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzOC1cXHRcXHRcXHRcXHRcXHRcXHQgICBJV0xfVUVGSV9TVEVQX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0zODM9dm9pZCBpd2xfdWVmaV9nZXRfc2dvbV90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfU0dPTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5My1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiU0dPTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NDIwPXZvaWQgaXdsX3VlZmlfZ2V0X3VhdHNfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDI2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VBVFNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIlVBVFNcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTQzOD12b2lkIGl3bF91ZWZpX2dldF91bmViX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQ0MzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9VTkVCX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJVTkVCXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz00OTc9aW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1MDU6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV1JEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNi1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV1JEU1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01NDU9aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NTQ6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfRVdSRF9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1NS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiRVdSRFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01OTk9aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV0dEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV0dEU1xcXCIsIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02NzY9aW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfUFBBR19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiUFBBR1xcXCIsIFVFRklfUFBBR19EQVRBX1NJWkVfVjUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjkzOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjk0LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTc0NT1pbnQgaXdsX3VlZmlfZ2V0X3Rhc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUxOlxcdHVlZmlfdGFzID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XVEFTX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzUyLVxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcIldUQVNcXFwiLCBzaXplb2YoKnVlZmlfdGFzKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz03OTg9aW50IGl3bF91ZWZpX2dldF9wd3JfbGltaXQoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwNDpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9TUExDX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODA1LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJTUExDXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04MjE9aW50IGl3bF91ZWZpX2dldF9tY2Moc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCBjaGFyICptY2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODI2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRERfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIldSRERcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg1Mj1pbnQgaXdsX3VlZmlfZ2V0X2Vja3Yoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKmV4dGxfY2xrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU4LVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg3Nj1pbnQgaXdsX3VlZmlfZ2V0X3diZW0oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg4MTpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XQkVNX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgyLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJXQkVNXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04OTk9c3RhdGljIGludCBpd2xfdWVmaV9sb2FkX2RzbV92YWx1ZXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkwNjpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9EU01fTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIkRTTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9OTc2PWludCBpd2xfdWVmaV9nZXRfcHVuY3R1cmluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTg0OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTg1LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BVTkNUVVJJTkdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTEwMDU9aW50IGl3bF91ZWZpX2dldF9kc2JyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAxMDpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAxMS1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2SVdMX0VGSV9XSUZJX0JUX0dVSUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMDMxPWludCBpd2xfdWVmaV9nZXRfcGh5X2ZpbHRlcnMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDM2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dQRkNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM3LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJXUEZDXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjU2LjIyNzExNTE2OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU5MTUxMzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dC4gV2hhdCBpcyBpdCB2ZXJpZnlpbmc/IFdoYXQgdHlwZSBvZiB2YXJpYWJsZSBpcyBpdCBkZWFsaW5nIHdpdGg/IFRoZSBuYW1lIGNsZWFybHkgc3VnZ2VzdHMgaW50ZXJhY3Rpb24gd2l0aCBVRUZJIHZhcmlhYmxlcywgbGlrZWx5IHdpdGhpbiBhbiBJbnRlbCBXaXJlbGVzcyBMQU4gKGl3bCkgY29udGV4dC4gU28sIEkgbmVlZCB0byBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24ncyBvcGVyYXRpb24gb24gdGhlIHNlY3VyaXR5IGFuZCBpbnRlZ3JpdHkgb2YgdGhlIHN5c3RlbSdzIFVFRkkgZW52aXJvbm1lbnQuIElzIGl0IGdldHRpbmcgYSB2YXJpYWJsZSwgb3IgdGhlIEdVSUQ/XG5cbkknbSBzdGFydGluZyB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGhlcmUuIElmIHRoaXMgaXMgdXNlZCBmb3Igc29tZSBraW5kIG9mIHZlcmlmaWNhdGlvbiwgd2hhdCdzIHRoZSBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc20/IFdoYXQgaGFwcGVucyBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzPyBEb2VzIGl0IGxlYWsgaW5mb3JtYXRpb24sIGFsbG93IGV4cGxvaXRhdGlvbiwgb3IgY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZT8gVGhlIFwidmVyaWZpZWRcIiBwYXJ0IGlzIGtleS4gV2hhdCBhcmUgdGhlIHZlcmlmaWNhdGlvbiBzdGVwcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHRocmVhdCBtb2RlbCBoZXJlIHRvIGRldGVybWluZSB0aGUgZGVwdGggb2YgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byBrbm93IHRoZSByaXNrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5MjMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzowMC4xODYyNzA4MzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgyLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgyOlxcdHN0YXRpYyB2b2lkICpcXG4gIDgzOlxcdGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiAgODQ6XFx0XFx0XFx0XFx0XFx0ICAgIGVmaV9ndWlkX3QgKmd1aWQsXFxuICA4NTpcXHRcXHRcXHRcXHRcXHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbiAgODY6XFx0XFx0XFx0XFx0XFx0ICAgIGNoYXIgKnZhcl9uYW1lLFxcbiAgODc6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxcbiAgODg6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpXFxuICA4OTpcXHR7XFxuICA5MDpcXHRcXHR2b2lkICp2YXI7XFxuICA5MTpcXHRcXHR1bnNpZ25lZCBsb25nIHZhcl9zaXplO1xcbiAgOTI6XFx0XFxuICA5MzpcXHRcXHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXFx1MDAyNnZhcl9zaXplKTtcXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0aWYgKElTX0VSUih2YXIpKSB7XFxuICA5NjpcXHRcXHRcXHRJV0xfREVCVUdfUkFESU8odHJhbnMsXFxuICA5NzpcXHRcXHRcXHRcXHRcXHRcXFwiJXMgVUVGSSB2YXJpYWJsZSBub3QgZm91bmQgMHglbHhcXFxcblxcXCIsIHZhcl9uYW1lLFxcbiAgOTg6XFx0XFx0XFx0XFx0XFx0UFRSX0VSUih2YXIpKTtcXG4gIDk5OlxcdFxcdFxcdHJldHVybiB2YXI7XFxuIDEwMDpcXHRcXHR9XFxuIDEwMTpcXHRcXG4gMTAyOlxcdFxcdGlmICh2YXJfc2l6ZSBcXHUwMDNjIGV4cGVjdGVkX3NpemUpIHtcXG4gMTAzOlxcdFxcdFxcdElXTF9ERUJVR19SQURJTyh0cmFucyxcXG4gMTA0OlxcdFxcdFxcdFxcdFxcdFxcXCJJbnZhbGlkICVzIFVFRkkgdmFyaWFibGUgbGVuICglbHUpXFxcXG5cXFwiLFxcbiAxMDU6XFx0XFx0XFx0XFx0XFx0dmFyX25hbWUsIHZhcl9zaXplKTtcXG4gMTA2OlxcdFxcdFxcdGtmcmVlKHZhcik7XFxuIDEwNzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4gMTA4OlxcdFxcdH1cXG4gMTA5OlxcdFxcbiAxMTA6XFx0XFx0SVdMX0RFQlVHX1JBRElPKHRyYW5zLCBcXFwiJXMgZnJvbSBVRUZJIHdpdGggc2l6ZSAlbHVcXFxcblxcXCIsIHZhcl9uYW1lLFxcbiAxMTE6XFx0XFx0XFx0XFx0dmFyX3NpemUpO1xcbiAxMTI6XFx0XFxuIDExMzpcXHRcXHRpZiAoc2l6ZSlcXG4gMTE0OlxcdFxcdFxcdCpzaXplID0gdmFyX3NpemU7XFxuIDExNTpcXHRcXHRyZXR1cm4gdmFyO1xcbiAxMTY6XFx0fVxcbiAxMTc6XFx0XFxuIDExODpcXHRzdGF0aWMgdm9pZCAqXFxuIDExOTpcXHRpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDEyMDpcXHRcXHRcXHRcXHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbiAxMjE6XFx0XFx0XFx0XFx0ICAgICAgIGNoYXIgKnZhcl9uYW1lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzowMC4xODY0NjgxNTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQxNDAxNTMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgYGl3bF91ZWZpX2dldF92YXJpYWJsZWAqKlxuXG5SaWdodCwgYGl3bF91ZWZpX2dldF92YXJpYWJsZWAuLi4gbGV0J3MgdGFrZSBhIGxvb2sgYXQgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIEtub3dpbmcgdGhlIGNvbnRleHQsIEkgaW1tZWRpYXRlbHkgYXNzdW1lIHRoaXMgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgSW50ZWwgV2lyZWxlc3MgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVUVGSSBmaXJtd2FyZS4gSSdtIGd1ZXNzaW5nIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHJldHJpZXZpbmcgYSBzcGVjaWZpYyBVRUZJIHZhcmlhYmxlLCBsaWtlbHkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIGFkYXB0ZXIncyBjb25maWd1cmF0aW9uIG9yIHN0YXR1cywgcGVyaGFwcyBldmVuIHNlY3VyaXR5LXJlbGF0ZWQgc2V0dGluZ3MuIEl0J3MgcHJvYmFibHkgcGFydCBvZiBhIGxhcmdlciBtZWNoYW5pc20gdG8gaW50ZXJmYWNlIHdpdGggdGhlIGZpcm13YXJlIGFuZCBnZXQgZXNzZW50aWFsIGluZm9ybWF0aW9uLiBJIHdvbmRlciBpZiBpdCBpbmNsdWRlcyBlcnJvciBoYW5kbGluZy4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgd2lyZWxlc3MgYWRhcHRlciBpcyBhdHRlbXB0aW5nIHRvIGRldGVybWluZSBpdHMgb3BlcmF0aW9uYWwgc3RhdHVzIGJ5IGFjY2Vzc2luZyBVRUZJIHZhcmlhYmxlcy4gQXJlIHdlIGRldGVybWluaW5nIHdoZXRoZXIgU2VjdXJlIEJvb3QgaXMgZW5hYmxlZCwgZm9yIGV4YW1wbGU/IE9yIGFyZSB3ZSBhY2Nlc3NpbmcgZHJpdmVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zPyBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgdmFyaWFibGVzIGl0J3MgZmV0Y2hpbmcsIGFuZCB3aHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzYwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzowNS42MDA0ODk1MTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTMzMjcxOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yMz1zdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02MD12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKElXTF9VRUZJX09FTV9QTlZNX05BTUUsIFxcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OC1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZwYWNrYWdlX3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODM9aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MzpcXHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXFx1MDAyNnZhcl9zaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6MDguMjUzODI2OTYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NTM2NzIwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgVUVGSSB2YXJpYWJsZXMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBrbm93IHRoZSBudWFuY2VzIG9mIFVFRkksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGFyZWFzIG9mIGNvbmNlcm4uIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcsIHRoZSBzaXplIGNhbGN1bGF0aW9ucywgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVRUZJIHJ1bnRpbWUgc2VydmljZXMuIEknbGwgbWVudGFsbHkgY29tcGFyZSB0aGlzIGltcGxlbWVudGF0aW9uIHRvIG90aGVyIFVFRkkgdmFyaWFibGUgcmV0cmlldmFsIG1ldGhvZHMgSSd2ZSBzZWVuLCBjb25zaWRlcmluZyBkaWZmZXJlbnQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlcyBhbmQgZmlybXdhcmUgZGVzaWducy4gSSdsbCBhbHNvIGJlIHRoaW5raW5nIGFib3V0IGFueSBwb3NzaWJsZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIHN1Y2ggYXMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB0byBidWZmZXIgb3ZlcmZsb3dzIG9yIGluY29ycmVjdCBwZXJtaXNzaW9ucyBjaGVja3MuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFyZWFzIHdoZXJlIHRoZSBjb2RlIG1pZ2h0IGluYWR2ZXJ0ZW50bHkgZXhwb3NlIHNlbnNpdGl2ZSBkYXRhIG9yIGFsbG93IGZvciB1bmV4cGVjdGVkIG1vZGlmaWNhdGlvbnMgb2YgdGhlIFVFRkkgdmFyaWFibGUgc3RvcmUuIEknbGwgYWxzbyBjaGVjayBpZiB0aGUgZnVuY3Rpb24gaGFuZGxlcyBOVUxMIG9yIGludmFsaWQgaW5wdXQgcHJvcGVybHkgYW5kIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGRpZmZlcmVudCBlcnJvciBjb2Rlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MTIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzoxNi43MDc1MDMxNzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI5OlxcdHN0YXRpYyB2b2lkICppd2xfdWVmaV9nZXRfdmFyaWFibGUoZWZpX2NoYXIxNl90ICpuYW1lLCBlZmlfZ3VpZF90ICpndWlkLFxcbiAgMzA6XFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyAqZGF0YV9zaXplKVxcbiAgMzE6XFx0e1xcbiAgMzI6XFx0XFx0ZWZpX3N0YXR1c190IHN0YXR1cztcXG4gIDMzOlxcdFxcdHZvaWQgKmRhdGE7XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdGlmICghZGF0YV9zaXplKVxcbiAgMzY6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdGlmICghZWZpX3J0X3NlcnZpY2VzX3N1cHBvcnRlZChFRklfUlRfU1VQUE9SVEVEX0dFVF9WQVJJQUJMRSkpXFxuICAzOTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0LyogZmlyc3QgY2FsbCB3aXRoIE5VTEwgZGF0YSB0byBnZXQgdGhlIGV4YWN0IGVudHJ5IHNpemUgKi9cXG4gIDQyOlxcdFxcdCpkYXRhX3NpemUgPSAwO1xcbiAgNDM6XFx0XFx0c3RhdHVzID0gZWZpLmdldF92YXJpYWJsZShuYW1lLCBndWlkLCBOVUxMLCBkYXRhX3NpemUsIE5VTEwpO1xcbiAgNDQ6XFx0XFx0aWYgKHN0YXR1cyAhPSBFRklfQlVGRkVSX1RPT19TTUFMTCB8fCAhKmRhdGFfc2l6ZSlcXG4gIDQ1OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbiAgNDY6XFx0XFxuICA0NzpcXHRcXHRkYXRhID0ga21hbGxvYygqZGF0YV9zaXplLCBHRlBfS0VSTkVMKTtcXG4gIDQ4OlxcdFxcdGlmICghZGF0YSlcXG4gIDQ5OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRzdGF0dXMgPSBlZmkuZ2V0X3ZhcmlhYmxlKG5hbWUsIGd1aWQsIE5VTEwsIGRhdGFfc2l6ZSwgZGF0YSk7XFxuICA1MjpcXHRcXHRpZiAoc3RhdHVzICE9IEVGSV9TVUNDRVNTKSB7XFxuICA1MzpcXHRcXHRcXHRrZnJlZShkYXRhKTtcXG4gIDU0OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xcbiAgNTU6XFx0XFx0fVxcbiAgNTY6XFx0XFxuICA1NzpcXHRcXHRyZXR1cm4gZGF0YTtcXG4gIDU4OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6MTYuNzA3NjQwODk4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjIwMDU5Nzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGl3bHdpZmkgRHJpdmVyIHZpYSBFRkkgVmFyaWFibGVzKipcblxuT2theSwgc28gYGl3bF91ZWZpX2dldF92YXJpYWJsZWAgdWx0aW1hdGVseSBjYWxscyBgZWZpLmdldF92YXJpYWJsZWAuIENhbiB3ZSBmdXp6IGBlZmkuZ2V0X3ZhcmlhYmxlYCB0aHJvdWdoIHRoaXMgZHJpdmVyPyAgU3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGRpcmVjdGx5IHRhcmdldCBVRUZJIHZhcmlhYmxlcyB1bmxlc3MgdGhlcmUncyBhIGNvbnZlbmllbnQgaW50ZXJmYWNlIGxpa2UgYW4gaW9jdGwgb3Igc3lzZnMgZW50cnkgb3IgaWYgd2UncmUgaW4gYSBWTSB3aXRoIGRpcmVjdCBjb250cm9sLCBidXQgdGhhdCdzIG5vdCBpdHMgdXN1YWwgbW9kZSBvZiBvcGVyYXRpb24uIEhvbGQgb24uLi4gZG9lc24ndCBzeXprYWxsZXIgaGF2ZSBzb21lIHN1cHBvcnQgdmlhIGBlZml2YXJmc2A/IE5vLCB0aGF0IGp1c3QgcHJvdmlkZXMgd3JpdGUgYWNjZXNzLiAgQWgsIGJ1dCB0aGF0J3MgdGhlIGtleSEgSWYgc3l6a2FsbGVyICpjYW4qIHdyaXRlIHRvIGBlZml2YXJmc2AsIGl0IGNhbiBjcmVhdGUgYXJiaXRyYXJ5IEVGSSB2YXJpYWJsZXMsIGFuZCAqdGhlbiogdGhlIGRyaXZlciB3aWxsIHJlYWQgdGhlbS5cblxuVGhlIG5leHQgcXVlc3Rpb246IElzIGBlZml2YXJmc2Agd3JpdGFibGUgYnkgcm9vdD8gWWVzLCBpdCBpcy4gUGVyZmVjdC4gVGhhdCBtZWFucyBzeXprYWxsZXIgY2FuIHdyaXRlIHRvIGAvc3lzL2Zpcm13YXJlL2VmaS9lZml2YXJzLy4uLmAgYW5kIGVmZmVjdGl2ZWx5IGNvbnN0cnVjdCBpbnB1dHMgZm9yIHRoZSBkcml2ZXIuXG5cbk5vdywgd2hlbiBkb2VzIHRoZSBkcml2ZXIgcmVhZCB0aGUgdmFyaWFibGU/IGBpd2xfcG52bV9sb2FkYCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBDYW4gc3l6a2FsbGVyIHRyaWdnZXIgZHJpdmVyIGluaXRpYWxpemF0aW9uICphZnRlciogd3JpdGluZyB0aGUgRUZJIHZhcmlhYmxlcz8gWWVzLCBieSB1bmJpbmRpbmcgYW5kIGJpbmRpbmcgdGhlIGRyaXZlciwgb3IgYnkgdXNpbmcgaG90cGx1Z2dpbmcgbWVjaGFuaXNtcyBmb3IgdGhlIGRldmljZSwgbGlrZSBgdmhjaWAsIGBtYWM4MDIxMV9od3NpbWAsIG9yIGV2ZW4gUENJIGhvdHBsdWcuXG5cbldhaXQsIGl3bHdpZmkgaXMgYSBQQ0kgZHJpdmVyISAgQW5kIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuICBJZiB0aGUgYGl3bHdpZmlgIGRyaXZlciBpcyBlbmFibGVkLCBzeXprYWxsZXIgKmNvdWxkKiBmdXp6IGl0LiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBpd2x3aWZpYCBpcyBhY3R1YWxseSBlbmFibGVkIGluIHRoZSBzeXprYWxsZXIgY29uZmlncy4gU3l6a2FsbGVyIGdlbmVyYWxseSB0ZXN0cyBhIGxvdCBvZiBkcml2ZXJzLCBzbyBpdCdzIGEgZ29vZCBiZXQuIExldCdzIHZlcmlmeSBieSBjaGVja2luZyBgQ09ORklHX0lXTFdJRklgIGlzIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTkyLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6MjYuOTI3NzAzNzc0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDY4Njg5NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6MjkuMzk2NDAyNzQ3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMTkzODI0Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgbGVuZ3RoIGNoZWNrIGluIHRoZSBpd2x3aWZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoaXMgc25pcHBldDpcblxuYGBgY1xuXHRcdFx0aWYgKHRsdl9sZW4gXHUwMDNjIDMgKiBzaXplb2YoX19sZTMyKSkge1xuXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcblx0XHRcdFx0XHR0bHZfbGVuKTtcblx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cdFx0XHR9XG5gYGBcblxuUmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQncyBwcmV2ZW50aW5nIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIGl0IHRyaWVzIHRvIGFjY2VzcyBlbGVtZW50cyBgdGx2X3NrdV9pZC1cdTAwM2VkYXRhWzBdYCwgYFsxXWAsIGFuZCBgWzJdYC4gR29vZCBjYXRjaC4gQW5kIGxvb2ssIHRoZSBjb21taXQgYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBXYWl0IGEgbWludXRlLi4uIHRoYXQgbWVhbnMgc3l6Ym90IGZvdW5kIHRoaXMhIFN5emthbGxlciEgVGhhdCdzIGV4Y2VsbGVudCBuZXdzLiBJZiBzeXpib3QgY2FuIHRyaWdnZXIgdGhpcywgdGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGNvZGUgKmlzKiByZWFjaGFibGUsIGFuZCB0aGF0IGl0J3MgcHJpbWUgZm9yIGZ1cnRoZXIgZnV6emluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIHB1cnN1aW5nLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIENsZWFybHksIGBDT05GSUdfSVdMV0lGSWAgaXMgdGhlIG1haW4gb25lLCBhcyBpdCdzIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGJ1dCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIHN1Yi1vcHRpb25zIHdlIG5lZWQgdG8gZW5hYmxlIHRvIGV4cG9zZSB0aGlzIHZ1bG5lcmFiaWxpdHk/IExldCdzIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlnIGZsYWdzIHdlIG5lZWQgdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Njg3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEzOjUxLjU5MDIzMzI4MloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCMgY29tbW9uXFxuICAgMzpcXHRvYmotJChDT05GSUdfSVdMV0lGSSlcXHQrPSBpd2x3aWZpLm9cXG4gICA0OlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IGl3bC1pby5vXFxuICAgNTpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtZHJ2Lm9cXG4gICA2OlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IGl3bC1kZWJ1Zy5vXFxuICAgNzpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtbnZtLXV0aWxzLm9cXG4gICA4OlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IGl3bC11dGlscy5vXFxuICAgOTpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtcGh5LWRiLm8gaXdsLW52bS1wYXJzZS5vXFxuICAxMDpcXHRcXG4gIDExOlxcdCMgQnVzXFxuICAxMjpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBwY2llL2N0eHQtaW5mby5vIHBjaWUvY3R4dC1pbmZvLXYyLm8gcGNpZS9kcnYubyBwY2llL3V0aWxzLm9cXG4gIDEzOlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IHBjaWUvZ2VuMV8yL3J4Lm8gcGNpZS9nZW4xXzIvdHgubyBwY2llL2dlbjFfMi90cmFucy5vXFxuICAxNDpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBwY2llL2dlbjFfMi90cmFucy1nZW4yLm8gcGNpZS9nZW4xXzIvdHgtZ2VuMi5vXFxuICAxNTpcXHRcXG4gIDE2OlxcdENGTEFHU19wY2llL2Rydi5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxcbiAgMTc6XFx0XFxuICAxODpcXHQjIGNvbWJpbmVkIE1BQy9SRiBjb25maWd1cmF0aW9uc1xcbiAgMTk6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xEVk0pICs9IGNmZy8xMDAwLm8gY2ZnLzIwMDAub1xcbiAgMjA6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xEVk0pICs9IGNmZy81MDAwLm8gY2ZnLzYwMDAub1xcbiAgMjE6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGNmZy83MDAwLm8gY2ZnLzgwMDAub1xcbiAgMjI6XFx0IyBNQUMgY29uZmlndXJhdGlvbnNcXG4gIDIzOlxcdGl3bHdpZmktJChDT05GSUdfSVdMTVZNKSArPSBjZmcvOTAwMC5vIGNmZy8yMjAwMC5vXFxuICAyNDpcXHRpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgKz0gY2ZnL2F4MjEwLm9cXG4gIDI1OlxcdGl3bHdpZmktJChDT05GSUdfSVdMTVZNKSArPSBjZmcvYnoubyBjZmcvc2Mub1xcbiAgMjY6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICs9IGNmZy9iei5vIGNmZy9zYy5vIGNmZy9kci5vXFxuICAyNzpcXHQjIFJGIGNvbmZpZ3VyYXRpb25zXFxuICAyODpcXHRpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgKz0gY2ZnL3JmLWpmLm8gY2ZnL3JmLWhyLm8gY2ZnL3JmLWdmLm9cXG4gIDI5OlxcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSArPSBjZmcvcmYtZm0ubyBjZmcvcmYtd2gubyBjZmcvcmYtcGUub1xcbiAgMzA6XFx0XFxuICAzMTpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtZGJnLXRsdi5vXFxuICAzMjpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtdHJhbnMub1xcbiAgMzM6XFx0XFxuICAzNDpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBmdy9pbWcubyBmdy9ub3RpZi13YWl0Lm8gZncvcnMub1xcbiAgMzU6XFx0aXdsd2lmaS1vYmpzXFx0XFx0Kz0gZncvZGJnLm8gZncvZGJnLW9sZC5vIGZ3L3Budm0ubyBmdy9kdW1wLm9cXG4gIDM2OlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IGZ3L3JlZ3VsYXRvcnkub1xcbiAgMzc6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGZ3L3BhZ2luZy5vIGZ3L3NtZW0ubyBmdy9pbml0Lm9cXG4gIDM4OlxcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSArPSBmdy9zbWVtLm8gZncvaW5pdC5vXFxuICAzOTpcXHRpd2x3aWZpLSQoQ09ORklHX0FDUEkpICs9IGZ3L2FjcGkub1xcbiAgNDA6XFx0aXdsd2lmaS0kKENPTkZJR19FRkkpXFx0Kz0gZncvdWVmaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEzOjUxLjU5MDM5NDkwMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTUzNjkyODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIncyBVRUZJIEludGVncmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgaXdsd2lmaWAgZHJpdmVyIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBob3cgVUVGSSBpcyBoYW5kbGVkLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgaXdsd2lmaS0kKENPTkZJR19FRkkpICs9IGZ3L3VlZmkub2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgYGZ3L3VlZmkuY2AgZmlsZSAqcmVxdWlyZXMqIGBDT05GSUdfRUZJYCB0byBiZSBjb21waWxlZCBpbnRvIHRoZSBkcml2ZXIuIE1ha2VzIHNlbnNlLiBOYXR1cmFsbHksIGBDT05GSUdfSVdMV0lGSWAgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIHRoZSBkcml2ZXIncyBpbmNsdXNpb24uXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGZvciBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gTGV0J3Mgc2VlLi4uIEkgcmVtZW1iZXIgdGhhdCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBpcyBkZWZpbmVkIGluIGBmdy91ZWZpLmNgLiBUaGVyZWZvcmUsIHRoZSBlc3NlbnRpYWwgY29uZmlndXJhdGlvbiBhcmUgZGVmaW5pdGVseSBgSVdMV0lGSWAgYW5kIGBFRklgLlxuXG5Ib2xkIG9uLi4uIEknbSByZW1pbmRlZCB0aGF0IGBpd2xfcG52bV9sb2FkYCBpcyBpbiBgZncvcG52bS5jYC4gTGV0IG1lIHF1aWNrbHkgbG9vayBhdCB0aGUgTWFrZWZpbGUgZm9yIHRoYXQgZmlsZSwganVzdCB0byBiZSBzdXJlLi4uIEFoLCB5ZXM6IGBpd2x3aWZpLW9ianMgKz0gZncvcG52bS5vYC4gU28sIHRoYXQgbWVhbnMgYGZ3L3Budm0uY2AgaXMgYWx3YXlzIGNvbXBpbGVkIGlmIGBJV0xXSUZJYCBpcyBlbmFibGVkLCB3aGljaCBpcyB0byBiZSBleHBlY3RlZC5cblxuQ3J1Y2lhbGx5LCB0aG91Z2gsIGBmdy91ZWZpLmNgIG9ubHkgZ2V0cyBidWlsdCBpZiBgQ09ORklHX0VGSWAgaXMgc2V0LiBPa2F5LCBqdXN0IHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nLCBJIG5lZWQgdG8gbG9vayBhdCBgZncvdWVmaS5oYCB0byBzZWUgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZCB3aGVuIGBDT05GSUdfRUZJYCAqaXNuJ3QqIGVuYWJsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZmFsbHMgb3V0IHdoZW4gdGhpcyBpcyBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyMDksIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzo1OS43NDQwOTIwNjdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1OTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM1MDpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuIDM1MTpcXHRpbnQgaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcXG4gMzUyOlxcdGludCBpd2xfdWVmaV9nZXRfZHNicihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsIHUzMiAqdmFsdWUpO1xcbiAzNTM6XFx0aW50IGl3bF91ZWZpX2dldF9waHlfZmlsdGVycyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbiAzNTQ6XFx0I2Vsc2UgLyogQ09ORklHX0VGSSAqL1xcbiAzNTU6XFx0c3RhdGljIGlubGluZSB2b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuIDM1NjpcXHR7XFxuIDM1NzpcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU9QTk9UU1VQUCk7XFxuIDM1ODpcXHR9XFxuIDM1OTpcXHRcXG4gMzYwOlxcdHN0YXRpYyBpbmxpbmUgaW50XFxuIDM2MTpcXHRpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDM2MjpcXHRcXHRcXHRcXHQgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuIDM2MzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEsXFxuIDM2NDpcXHRcXHRcXHRcXHQgICAgX19sZTMyIHNrdV9pZFszXSlcXG4gMzY1OlxcdHtcXG4gMzY2OlxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gMzY3OlxcdH1cXG4gMzY4OlxcdFxcbiAzNjk6XFx0c3RhdGljIGlubGluZSB1OCAqXFxuIDM3MDpcXHRpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuIDM3MTpcXHR7XFxuIDM3MjpcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU9QTk9UU1VQUCk7XFxuIDM3MzpcXHR9XFxuIDM3NDpcXHRcXG4gMzc1OlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdWVmaV9nZXRfc3RlcF90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4gMzc2OlxcdHtcXG4gMzc3OlxcdH1cXG4gMzc4OlxcdFxcbiAzNzk6XFx0c3RhdGljIGlubGluZSBpbnRcXG4gMzgwOlxcdGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2Moc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbiAzODE6XFx0XFx0XFx0XFx0ICAgICB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXFxuIDM4MjpcXHR7XFxuIDM4MzpcXHRcXHRyZXR1cm4gMDtcXG4gMzg0OlxcdH1cXG4gMzg1OlxcdFxcbiAzODY6XFx0c3RhdGljIGlubGluZSBpbnQgaXdsX3VlZmlfZ2V0X3dyZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbiAzODc6XFx0e1xcbiAzODg6XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIDM4OTpcXHR9XFxuIDM5MDpcXHRcXG4gMzkxOlxcdHN0YXRpYyBpbmxpbmUgaW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4gMzkyOlxcdHtcXG4gMzkzOlxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiAzOTQ6XFx0fVxcbiAzOTU6XFx0XFxuIDM5NjpcXHRzdGF0aWMgaW5saW5lIGludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuIDM5NzpcXHR7XFxuIDM5ODpcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gMzk5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6NTkuNzQ0MjkxOTE3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjg2MzUxMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbioqXG5cbk9rYXksIHNvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIGJ1dCBpdCdzIGNsZWFybHkgc3R1YmJlZCBvdXQgdW5sZXNzIGBDT05GSUdfRUZJYCBpcyBlbmFibGVkLiBUaGF0J3MgdGhlIGZpcnN0IGRlcGVuZGVuY3ksIGRlZmluaXRlbHkuIEFuZCBnaXZlbiBpdCBsaXZlcyB3aXRoaW4gdGhlIGBpd2x3aWZpYCB0cmVlLCBgQ09ORklHX0lXTFdJRklgIGlzIGFub3RoZXIgbm8tYnJhaW5lci5cblxuTGV0J3MgZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0IGVsc2UgaXMgdGllZCBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNgLiBUaGUgZnVuY3Rpb24gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgY2FsbGVkIGJ5IGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIHdoaWNoLCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYGl3bF9wbnZtX2xvYWRgLiBOb3cgd2UncmUgZ2V0dGluZyBzb21ld2hlcmUuIGBpd2xfcG52bV9sb2FkYCBpcyBjYWxsZWQgZnJvbSBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgICphbmQqIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCByZXNpZGVzIGluIGBtdm0vZncuY2AsIHdoaWNoIHRlbGxzIG1lIHRoaXMgYnJhbmNoIGlzIGRlcGVuZGVudCBvbiBgQ09ORklHX0lXTE1WTWAuIEFuZCB0aGUgb3RoZXIgb25lLCBgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZWAsIGlzIGluIGBtbGQvZncuY2Agd2hpY2gsIG5hdHVyYWxseSwgcG9pbnRzIHRvIGBDT05GSUdfSVdMTUxEYC4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlIE1ha2VmaWxlLiBBaCwgeWVzOiBgaXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IG12bS9gIGFuZCBgaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICs9IG1sZC9gLlxuXG5Ib2xkIG9uLi4uIGBpd2xfcG52bV9sb2FkYCBpcyBhY3R1YWxseSBpbiBgZncvcG52bS5jYCwgd2hpY2ggc2VlbXMgdG8gYmUgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5LCBzbyB0aGUgcGF0aCBpcyBzdGlsbCB0aGVyZSBldmVuIHdpdGhvdXQgZWl0aGVyIGBJV0xNVk1gIG9yIGBJV0xNTERgLiBCdXQgdGhlIGNhbGwgY2hhaW4gKnJlcXVpcmVzKiBhdCBsZWFzdCBvbmUgb2YgdGhlbSB0byByZWFjaCBpdC4gSXQgc2VlbXMgSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgKktjb25maWcqIGZpbGVzIGZvciBgSVdMTVZNYCBhbmQgYElXTE1MRGAgc2F5IHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYzMywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE0OjEwLjQzMDY0NjQyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzcxNDk1ODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xNVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE0OjEzLjIwMjE1MDkwM1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjQ4NjIzNjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgVmVyaWZpY2F0aW9uKipcblxuQWxyaWdodCwgdGhlIGluc3RydWN0aW9uIG1lbnRpb25zIGBJV0xNTERgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byBhIG1lbnRhbCBjaGVja2xpc3QuIElzIHRoaXMgYSBjb2RlPyBBbiBhY3JvbnltPyBBIGZpbGUgb3IgZGF0YXNldCBpZGVudGlmaWVyPyBHaXZlbiB0aGUgY29udGV4dCwgSSdtIGFzc3VtaW5nIGl0J3MgbGlrZWx5IGEgdGVjaG5pY2FsIGRlc2lnbmF0aW9uLCBwZXJoYXBzIGEgdmFyaWFibGUgbmFtZSwgYSBtb2RlbCBpZGVudGlmaWVyLCBvciBzb21ldGhpbmcgc2ltaWxhciB3aXRoaW4gYSBzcGVjaWZpYyBwcm9qZWN0IG9yIGRvbWFpbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdmVyaWZ5IHRoZSBjb250ZXh0OyB3aGF0IGlzIHRoZSBkb21haW4/IFdoYXQgaXMgdGhlIHByb2plY3Q/IEkgbmVlZCB0byBjaGVjayBpdHMgb3JpZ2luIHRvIGRldGVybWluZSBpdHMgcmVsZXZhbmNlLiBJcyB0aGlzIHNvbWV0aGluZyBJIHNob3VsZCByZWNvZ25pemUsIG9yIGlzIGl0IG5ldz8gSSBuZWVkIHRvIHBlcmZvcm0gYSBxdWljayByZXZpZXcgb2YgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIG1ldGFkYXRhLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBkZXNpZ25hdGlvbiBmb3IgYSBwcm9jZWR1cmUsIGEgZGF0YXNldCwgb3IgYW4gaXRlbS4gUGVyaGFwcyBJIG5lZWQgdG8gY2hlY2sgdGhlIHByb2plY3QncyBjb2RlYmFzZSwgZG9jdW1lbnRhdGlvbiwgb3IgcmVsZXZhbnQgaW50ZXJuYWwgdG9vbHMgaWYgYW55IGFyZSBhdmFpbGFibGUuIEknbGwgc2VhcmNoIGV4aXN0aW5nIGluZGljZXMgb3IgZGF0YWJhc2VzIGZvciBhbnkgbWF0Y2hlcyBvciBzaW1pbGFyIGVudHJpZXMgdGhhdCBJIGFtIGF3YXJlIG9mLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcDsgSSBjYW4ndCBwcm9jZWVkIHdpdGhvdXQgdGhhdCBjbGFyaXR5LiBMZXQncyBtYWtlIHN1cmUgaXQncyBub3QgYSB0eXBvLCB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjI1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTQ6MjEuODUwNzgxMjYxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzcyODcyODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xNTERcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz03ND1jb25maWcgSVdMTVZNXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg0OmNvbmZpZyBJV0xNTERcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE0OjI1LjIyMzY2MTc0NloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTIxNjY3MzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEcml2ZXIgSW5jbHVzaW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2Ugc3ViLWRyaXZlcnM6IGBJV0xNVk1gIGFuZCBgSVdMTUxEYC4gVGhpbmtpbmcgc3RyYXRlZ2ljYWxseSwgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcmVhY2hhYmxlLCBJIG5lZWQgdG8gaW5jbHVkZSBgSVdMV0lGSWAsIGBFRklgLCBhbmQgcHJvYmFibHkgYElXTE1WTWAuIEhhbmcgb24uLi4gYElXTE1WTWAgaXMgdGhlIHdvcmtob3JzZSBoZXJlLCB0aGUgTWFjODAyMTEgVmlydHVhbCBNQUMgdGhhdCBoYW5kbGVzIHRob3NlIG5ld2VyIEludGVsIGNhcmRzIOKAkyB0aGUgNzI2MCBhbmQgdXAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBgSVdMTVZNYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgaXQgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBsaXN0ZWQuIEJlc3QgdG8gYmUgc2FmZSwgc28gSSdsbCBnbyB3aXRoIGxpc3RpbmcgYElXTFdJRklgLCBgSVdMTVZNYCwgYW5kIGBFRklgLiBUaGF0IHNob3VsZCBjb3ZlciB0aGUgY3J1Y2lhbCBiYXNlcy5cblxuTm93LCBvbiB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgaWRlbnRpZnlpbmcgdGhlIGZvY3VzIHN5bWJvbHMuIFRoZSBwYXRjaCB0YXJnZXRzIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgLiBZZXAsIHRoYXQncyBkZWZpbml0ZWx5IGEga2V5IHBsYXllciwgc28gdGhhdCdzIHdoZXJlIG15IGF0dGVudGlvbiB3aWxsIGJlIGRpcmVjdGVkLiBJJ2xsIGFsc28gYmUgd2F0Y2hpbmcgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBhbmQgYGl3bF9wbnZtX2xvYWRgLiBUaG9zZSBhcmUgbGlrZWx5IHJlbGF0ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGFuZCBzZWUgd2hhdCBpdCdzIGFsbCBhYm91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwMjcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTQ6MzMuMTQ1MzMzOTg0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTYxODE3MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzMjpcXHRyZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMy1cXHRcXHRcXHRcXHRcXHQgIHNrdV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xNjY9c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyMjA6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMjEtXFx0XFx0XFx0XFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zMjU9dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzI2OmludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzI3LVxcdFxcdFxcdFxcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzYwPXN0YXRpYyBpbmxpbmUgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzYxOml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zNjItXFx0XFx0XFx0ICAgIGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxNDozNi4xMDcxNjEwODlaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1MjU0NzU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgUG93ZXIgUmVkdWN0aW9uIGluIEludGVsIFdpcmVsZXNzIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHBvd2VyIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgc3BhY2UsIGFuZCBpdCBzZWVtcyBsaWtlIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGEgcHJldHR5IHNvbGlkIGVudHJ5IHBvaW50IGZvciBpbnZlc3RpZ2F0aW9uLiBJdCBsaWtlbHkgZGVhbHMgd2l0aCBpbml0aWFsIHBvd2VyIGNvbmZpZ3VyYXRpb24gcGFyc2luZyBkdXJpbmcgVUVGSSBib290LCB3aGljaCBpcyBhbiBpbnRlcmVzdGluZyBzcG90IHRvIHN0YXJ0LlxuXG5Ob3csIEkgbmVlZCB0byBleHBhbmQgbXkgc2NvcGUuIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgYWxzbyBsb29rcyBwcm9taXNpbmcuIFRoYXQgbmFtZSBzdWdnZXN0cyB3ZSdyZSBnZXR0aW5nIGludG8gbG9hZGluZyBwb3dlciBzZXR0aW5ncyBmcm9tIHBlcm1hbmVudCBub24tdm9sYXRpbGUgbWVtb3J5IChQTlZNKSBhbmQgdHJhbnNpdGlvbmluZyB0aG9zZSBzZXR0aW5ncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCB0cmFuc2l0aW9uIHByb2Nlc3MgYW5kIGhvdyB0aG9zZSBzZXR0aW5ncyBpbnRlcmFjdCB3aXRoIHRoZSBpbml0aWFsIHBhcnNpbmcuIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIHR3byB3b3JrIHRvZ2V0aGVyIHdpbGwgZGVmaW5pdGVseSBpbGx1bWluYXRlIHRoZSBiaWdnZXIgcGljdHVyZS4gQXJlIHRoZXNlIHR3byBmdW5jdGlvbnMgcmVsYXRlZCBvciBkbyB0aGV5IGZlZWQgaW50byB0aGUgc2FtZSBzdGF0ZSBtYWNoaW5lPyBJIG5lZWQgdG8gZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExMjksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxNDo0MC43NTk3MTMzNDJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMzU0OTgzOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDU1PWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY3LVxcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY4OlxcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcXHUwMDI2ZnctXFx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxNDo0My45OTUyMzY3MjFaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgwNzY0MzkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyB1bmRlcnN0YW5kaW5nOlxuXG4qKlJlZmxlY3Rpbmcgb24gUG93ZXIgUmVkdWN0aW9uIFN0cmF0ZWdpZXMqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBwb3dlciBtYW5hZ2VtZW50LiBJJ20gc2VlaW5nIHRoYXQgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBpcyBhIHNvdW5kIGFwcHJvYWNoIGZvciBoYW5kbGluZyBwb3dlciByZWR1Y3Rpb24gZHVyaW5nIHRyYW5zbWl0IG9wZXJhdGlvbnMuIE1ha2VzIHNlbnNlLiBJdCdzIGxpa2VseSBhIHRhcmdldGVkIG9wdGltaXphdGlvbiB3aXRoaW4gdGhlIFBOVk0gKFBlcnNpc3RlbnQgTm9uLVZvbGF0aWxlIE1lbW9yeSkgbG9hZGluZyBwcm9jZXNzIHRvIHNwZWNpZmljYWxseSB0cmltIHBvd2VyIGNvbnN1bXB0aW9uIHdoZW4gdHJhbnNtaXR0aW5nIGRhdGEuIEdvb2QgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGVyZS4gQW5kLCBJJ20gYWxzbyB0aGlua2luZyBvZiBob3cgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gSXQncyBsaWtlbHkgaW52b2x2ZWQgaW4gcmV0cmlldmluZyBvciBjb25maWd1cmluZyByZWR1Y2VkIHBvd2VyIHNldHRpbmdzIHdpdGhpbiBhIFVFRkkgKFVuaWZpZWQgRXh0ZW5zaWJsZSBGaXJtd2FyZSBJbnRlcmZhY2UpIGVudmlyb25tZW50LCB3aGljaCBsaWtlbHkgcHJvdmlkZXMgYSBiYXNlLWxldmVsIHBsYXRmb3JtIHBvd2VyIG1hbmFnZW1lbnQgc3RyYXRlZ3kgdGhhdCBjb21wbGVtZW50cyB0aGUgbW9yZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBkZXRhaWxzIG9mIHRoZSB0cmFuc21pdCBwb3dlciByZWR1Y3Rpb24uIFRoZSBjb21iaW5lZCBlZmZlY3Qgb2YgdGhlc2UgcG93ZXIgc2F2aW5nIG1lYXN1cmVzIGlzIGltcG9ydGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3MDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxNDo0Ny44MDI4ODU0MDRaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDQzMzI5NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNz1pd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MjI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHRyYW5zLCBcXHUwMDI2bGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MjMtXFx0aWYgKElTX0VSUihkYXRhKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjIwPWludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjg1OnU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyND12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMyNTp1OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjYtaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTM2OT1zdGF0aWMgaW5saW5lIHU4ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNzA6aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM3MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE0OjUwLjU0NzIzNDc0WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxOTE4NTQ3MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYGl3bF91ZWZpX2dldF92YXJpYWJsZWAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYC4gSSdtIGd1ZXNzaW5nIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBJbnRlbCdzIHdpcmVsZXNzIGRyaXZlciwgbGlrZWx5IHJlbGF0ZWQgdG8gaGFuZGxpbmcgVUVGSSB2YXJpYWJsZXMgd2l0aGluIHRoZSBmaXJtd2FyZSwgcG9zc2libHkgZm9yIGNvbmZpZ3VyYXRpb24gb3IgcG93ZXIgbWFuYWdlbWVudC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IHJldHJpZXZlcyBhbmQgZnJvbSB3aGVyZSDigJMgc3BlY2lmaWNhbGx5LCB3aGF0IFVFRkkgdmFyaWFibGUgc3RvcmUgaXMgaXQgYWNjZXNzaW5nPyBJcyBpdCBkZWFsaW5nIHdpdGggTlZSQU0sIG9yIHNvbWUgb3RoZXIgZmlybXdhcmUtc3BlY2lmaWMgYXJlYT8gTW9yZSBpbXBvcnRhbnRseSwgSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzIG9yIHBvdGVudGlhbCBtaXN1c2UgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBwYXJ0aWN1bGFybHkgaW4gaGFuZGxpbmcgdGhlIHJldHJpZXZlZCBkYXRhLiBBcmUgdGhlcmUgYW55IHNpemUgbGltaXRhdGlvbnMsIGJ1ZmZlciBvdmVyZmxvd3MsIG9yIHR5cGUtY29uZnVzaW9uIGJ1Z3MgdGhhdCBJIGNhbiBxdWlja2x5IGlkZW50aWZ5PyBJIG5lZWQgdG8gY2hlY2sgaG93IGVycm9yIGNvbmRpdGlvbnMgYXJlIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgYXJlIHRoZSBlcnJvciBjb2RlcyBoYW5kbGVkIHByb3Blcmx5LCBhbmQgYXJlIHRoZXJlIGFueSBzY2VuYXJpb3Mgd2hlcmUgdW5leHBlY3RlZCB2YWx1ZXMgbWlnaHQgbGVhZCB0byBhIHNlY3VyaXR5IGlzc3VlPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzaWducyBvZiBkaXJlY3QgbWVtb3J5IGFjY2VzcywgYW5kIGlmIHRoZSBhY2Nlc3MgaXMgcHJvcGVyIGFuZCBjb250cm9sbGVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQncyBjYWxsZWQuIElzIGl0IGNhbGxlZCBpbiBhIHByaXZpbGVnZWQgY29udGV4dCwgYW5kIGlmIHNvLCB3aGF0J3MgdGhlIGNvbnRyb2wgZmxvdz8gV2hhdCBvdGhlciBmdW5jdGlvbnMgZG9lcyBpdCBjYWxsLCBhbmQgd2hhdCBhcmUgdGhlaXIgYmVoYXZpb3JzPyBBbHNvLCBpcyB0aGVyZSBhbnkgcG9zc2liaWxpdHkgb2YgYnlwYXNzaW5nIGFjY2VzcyBjb250cm9sIHRocm91Z2ggdGhpcyBmdW5jdGlvbj8gVWx0aW1hdGVseSwgSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaXRzIHNhZmV0eSBhbmQgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24gd2l0aGluIHRoZSBvdmVyYWxsIHN5c3RlbSBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTU6MTIuNDY1Nzg2NTQxWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODU5Nzg0MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF91ZWZpX2dldF92YXJpYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjM9c3RydWN0IGl3bF91ZWZpX3Budm1fbWVtX2Rlc2Mge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjk6c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzAtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyAqZGF0YV9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NjA9dm9pZCAqaXdsX3VlZmlfZ2V0X3Budm0oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Njc6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92YXJpYWJsZShJV0xfVUVGSV9PRU1fUE5WTV9OQU1FLCBcXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjgtXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2cGFja2FnZV9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgzPWl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTM6XFx0dmFyID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKHVlZmlfdmFyX25hbWUsIGd1aWQsIFxcdTAwMjZ2YXJfc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE1OjE1LjMyNTU3OTY0NloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzk2Nzc0NzgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYGl3bHdpZmlgIFBvd2VyIFJlZHVjdGlvbiBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgYW5kIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AuIFRob3NlIGxvb2sgbGlrZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB0aGlzIHBhcnRpY3VsYXIgYnVnLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5hYmxlIGNvbmZpZ3MgYElXTFdJRklgLCBgRUZJYCwgYW5kIGBJV0xNVk1gLiBUaG91Z2gsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGxpc3QuLi4geWVhaCwgaXQncyBqdXN0IGBJV0xXSUZJYCwgYEVGSWAsIGFuZCBgSVdMTVZNYC4gTm8gb3RoZXIgb2J2aW91cyBjb25maWdzIGFyZSBpbW1lZGlhdGVseSBhcHBhcmVudCBhcyByZWxldmFudC5cblxuTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgYElXTFdJRklgIGl0c2VsZiBkb2Vzbid0IG5lZWQgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMuIEFoLCBpdCBuZWVkcyBgUENJYCBhbmQgYE1BQzgwMjExYCwgYnV0IHN5emthbGxlciBzaG91bGQgYWxyZWFkeSBiZSBzZXQgdXAgd2l0aCB0aG9zZSwgc28gd2UncmUgZ29vZCB0aGVyZS4gVGh1cywgYElXTFdJRklgLCBgRUZJYCwgYW5kIGBJV0xNVk1gIGlzIGluZGVlZCBzdWZmaWNpZW50LlxuXG5OZXh0LCBJIG5lZWQgdG8gdmVyaWZ5IHJlYWNoYWJpbGl0eS4gQ2FuIHdlIGFjdHVhbGx5IGdldCB0byBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYD8gUmlnaHQsIGl0J3MgcmVhY2hlZCBpZiBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgIHJldHVybnMgdmFsaWQgZGF0YS4gQW5kIHRoYXQsIGluIHR1cm4sIGRlcGVuZHMgb24gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAgc3VjY2VlZGluZywgd2hpY2ggZGVwZW5kcyBvbiBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCBzdWNjZWVkaW5nLiBGaW5hbGx5LCB0aGF0IGhpbmdlcyBvbiBgZWZpLmdldF92YXJpYWJsZWAgc3VjY2VlZGluZy4gTm93LCBpZiBzeXprYWxsZXIgY2FuIG1vY2sgRUZJIHZhcmlhYmxlcyBvciB3cml0ZSB0byBlZml2YXJmcywgd2UgY2FuIGRlZmluaXRlbHkgcmVhY2ggdGhpcyBjb2RlIHBhdGguIENvbnNpZGVyaW5nIHRoaXMgd2FzIGZvdW5kIGJ5IHN5emJvdCwgaXQncyBhbG1vc3QgYSBnaXZlbiB0aGF0IGl0J3MgcmVhY2hhYmxlLlxuXG5BbHJpZ2h0LCBsZXQncyBzdW1tYXJpemU6XG5cbioqV29ydGhGdXp6aW5nOioqIFRydWVcblxuKipGb2N1c1N5bWJvbHM6KipcblxuKiAgIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgXG4qICAgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYFxuXG4qKkVuYWJsZUNvbmZpZ3M6KipcblxuKiAgIGBJV0xXSUZJYFxuKiAgIGBFRklgXG4qICAgYElXTE1WTWBcblxuKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgYGl3bHdpZmlgIGRyaXZlciB3aGVuIHBhcnNpbmcgdGhlIFBOVk0gU0tVIFRMViBmcm9tIGEgVUVGSSB2YXJpYWJsZS4gVGhlIHZ1bG5lcmFibGUgY29kZSBpcyByZWFjaGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaWYgY2VydGFpbiBFRkkgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsIGFuZCB0aGVzZSB2YXJpYWJsZXMgYXJlIGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM5NiwiT3V0cHV0VG9rZW5zIjoxMjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTU6MjkuMjkzMzMyMTIyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxOTUyMzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCIsXG4gICAgXCJFRklcIixcbiAgICBcIklXTE1WTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICAgIFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIkVGSVwiLFxuICAgIFwiSVdMTVZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlXCIsXG4gICAgXCJpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgaXdsd2lmaSBkcml2ZXIgd2hlbiBwYXJzaW5nIHRoZSBQTlZNIFNLVSBUTFYgZnJvbSBhIFVFRkkgdmFyaWFibGUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGlmIHNwZWNpZmljIEVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQsIHdoaWNoIGNhbiBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 08:57:28 +0000 UTC FinishedAt: 2026-06-30 09:15:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "EFI", "IWLMVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "EFI", "IWLMVM" ], "series_id": "5b98170d-5c94-4ad2-a180-35c73ee79bd9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_uefi_reduce_power_parse", "iwl_pnvm_load_reduce_power_to_trans" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSYjMzQ7LAogICAgJiMzNDtpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmUxZGQ2YWM1ODA2NDAyOWQ4NTZlZmI3NmE4OTdlY2Q2YTg1NjM1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDA5OjEyOjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li43NDdkZjY1OGRjN2U4NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuQEAgLTI0OCw2ICYjNDM7MjQ4LDEyIEBAIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuIFx0XHRcdFx0ICAgICBcJiMzNDtHb3QgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSBsZW4gJWRcXG5cJiMzNDssXG4gXHRcdFx0XHQgICAgIHRsdl9sZW4pO1xuJiM0MztcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XG4mIzQzO1x0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdHRsdl9sZW4pO1xuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHR9XG4mIzQzO1xuIFx0XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7c2t1X2lkIDB4JTB4IDB4JTB4IDB4JTB4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSYjMzQ7LAogICAgJiMzNDtpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2ZTFkZDZhYzU4MDY0MDI5ZDg1NmVmYjc2YTg5N2VjZDZhODU2MzUxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTI6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jCmluZGV4IDJlZjBhN2E5MjBhZGI1Li43NDdkZjY1OGRjN2U4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMKQEAgLTI0OCw2ICYjNDM7MjQ4LDEyIEBAIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsCiAJCQlJV0xfREVCVUdfRlcodHJhbnMsCiAJCQkJICAgICAmIzM0O0dvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxuJiMzNDssCiAJCQkJICAgICB0bHZfbGVuKTsKJiM0MzsJCQlpZiAodGx2X2xlbiAmbHQ7IDMgKiBzaXplb2YoX19sZTMyKSkgewomIzQzOwkJCQlJV0xfRVJSKHRyYW5zLCAmIzM0O2ludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcbiYjMzQ7LAomIzQzOwkJCQkJdGx2X2xlbik7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KJiM0MzsKIAkJCUlXTF9ERUJVR19GVyh0cmFucywgJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcbiYjMzQ7LAogCQkJCSAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC0mZ3Q7ZGF0YVswXSksCiAJCQkJICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLSZndDtkYXRhWzFdKSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRmlybXdhcmUgUGF0Y2gqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBmbG9hdGluZyBhcm91bmQsIGFuZCBpdCYjMzk7cyBsYW5kZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRyZXNzaW5nIHRoZSBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBmdW5jdGlvbiBhbmQgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciBgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcy4gSSYjMzk7bGwgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGFjdHVhbGx5ICpkb2luZyouIExldCYjMzk7cyBnbyBhaGVhZCBhbmQgZXhhbWluZSB0aGF0IGZ1bmN0aW9uIGluIGRldGFpbC4gVGhpcyBsZW5ndGggY2hlY2sgcHJvYmFibHkgYWRkcmVzc2VzIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBvciBvdGhlciB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gaG93IHRoZSBmaXJtd2FyZSBoYW5kbGVzIHRoaXMgcGFydGljdWxhciBUTFYuIEdvdCB0byBtYWtlIHN1cmUgdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJlYWwgaXNzdWUgYW5kIHRoYXQgdGhlIHNvbHV0aW9uIGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBzaWRlIGVmZmVjdHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmshCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTY2PXN0YXRpYyBpbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjIwOmludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMjEtXHRcdFx0XHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDcxCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGxpa2VseSBkZWFsaW5nIHdpdGggcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpY2FsbHkgd2l0aGluIGEgVUVGSSBlbnZpcm9ubWVudC4gVGhlIG5hbWluZyBjb252ZW50aW9uIGlzIHByZXR0eSBjbGVhcjsgJiMzNDtyZWR1Y2VfcG93ZXImIzM0OyBzdWdnZXN0cyBpdCYjMzk7cyBhYm91dCBvcHRpbWl6aW5nIHBvd2VyIGNvbnN1bXB0aW9uLiBUaGUgJiMzNDtwYXJzZSYjMzQ7IHBhcnQgbGlrZWx5IG1lYW5zIGl0JiMzOTtzIGludGVycHJldGluZyBzb21lIGRhdGEgb3IgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHBvd2VyIHJlZHVjdGlvbi4gSSYjMzk7bSBndWVzc2luZyBpdCYjMzk7cyBoYW5kbGluZyBzZXR0aW5ncyByZWxhdGVkIHRvIHJhZGlvIHBvd2VyLWRvd24sIGNsb2NrIGdhdGluZywgb3IgcGVyaGFwcyBwb3dlci1zYXZpbmcgbW9kZXMgZHVyaW5nIHRoZSBVRUZJIHBoYXNlLCBnaXZlbiB0aGF0ICYjMzQ7VUVGSSYjMzQ7IGlzIGluIHRoZSBuYW1lLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB3aGF0IGlucHV0cyBpdCB0YWtlcywgd2hhdCBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGFuZCwgY3JpdGljYWxseSwgd2hlcmUgaXQmIzM5O3MgY2FsbGVkIGZyb20gYW5kIHdoYXQgaXRzIHJldHVybiB2YWx1ZXMgYXJlLiBUaGF0IHdpbGwgcGFpbnQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGxhcmdlciBwb3dlciBtYW5hZ2VtZW50IHBpY3R1cmUgd2l0aGluIHRoaXMgZHJpdmVyIGFuZCBwb3RlbnRpYWxseSB3aXRoaW4gdGhlIHN5c3RlbSYjMzk7cyBvdmVyYWxsIHBvd2VyIHByb2ZpbGUgZHVyaW5nIHRoZSBlYXJseSBib290IHN0YWdlcy4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBuZWVkaW5nIHRvIGFzc2VzcyBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgQUNQSSB0YWJsZXMgYW5kIG90aGVyIHBvd2VyIG1hbmFnZW1lbnQgZmlybXdhcmUgaW50ZXJmYWNlcy4gTGV0JiMzOTtzIGdldCByZWFkaW5nIGFuZCBjb25maXJtIHRoZXNlIGluaXRpYWwgaHlwb3RoZXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE5Olx0XG4gMjIwOlx0aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiAyMjE6XHRcdFx0XHRcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuIDIyMjpcdFx0XHRcdFx0c3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEsXG4gMjIzOlx0XHRcdFx0XHRfX2xlMzIgc2t1X2lkWzNdKVxuIDIyNDpcdHtcbiAyMjU6XHRcdGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfdGx2ICp0bHY7XG4gMjI2Olx0XG4gMjI3Olx0XHRJV0xfREVCVUdfRlcodHJhbnMsIFwmIzM0O1BhcnNpbmcgUkVEVUNFX1BPV0VSIGRhdGFcXG5cJiMzNDspO1xuIDIyODpcdFxuIDIyOTpcdFx0d2hpbGUgKGxlbiBcdTAwM2U9IHNpemVvZigqdGx2KSkge1xuIDIzMDpcdFx0XHR1MzIgdGx2X2xlbiwgdGx2X3R5cGU7XG4gMjMxOlx0XG4gMjMyOlx0XHRcdGxlbiAtPSBzaXplb2YoKnRsdik7XG4gMjMzOlx0XHRcdHRsdiA9IChjb25zdCB2b2lkICopZGF0YTtcbiAyMzQ6XHRcbiAyMzU6XHRcdFx0dGx2X2xlbiA9IGxlMzJfdG9fY3B1KHRsdi1cdTAwM2VsZW5ndGgpO1xuIDIzNjpcdFx0XHR0bHZfdHlwZSA9IGxlMzJfdG9fY3B1KHRsdi1cdTAwM2V0eXBlKTtcbiAyMzc6XHRcbiAyMzg6XHRcdFx0aWYgKGxlbiBcdTAwM2MgdGx2X2xlbikge1xuIDIzOTpcdFx0XHRcdElXTF9FUlIodHJhbnMsIFwmIzM0O2ludmFsaWQgVExWIGxlbjogJXpkLyV1XFxuXCYjMzQ7LFxuIDI0MDpcdFx0XHRcdFx0bGVuLCB0bHZfbGVuKTtcbiAyNDE6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNDI6XHRcdFx0fVxuIDI0MzpcdFxuIDI0NDpcdFx0XHRpZiAodGx2X3R5cGUgPT0gSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSkge1xuIDI0NTpcdFx0XHRcdGNvbnN0IHN0cnVjdCBpd2xfc2t1X2lkICp0bHZfc2t1X2lkID1cbiAyNDY6XHRcdFx0XHRcdChjb25zdCB2b2lkICopKGRhdGEgJiM0Mzsgc2l6ZW9mKCp0bHYpKTtcbiAyNDc6XHRcbiAyNDg6XHRcdFx0XHRJV0xfREVCVUdfRlcodHJhbnMsXG4gMjQ5Olx0XHRcdFx0XHQgICAgIFwmIzM0O0dvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwmIzM0OyxcbiAyNTA6XHRcdFx0XHRcdCAgICAgdGx2X2xlbik7XG4gMjUxOlx0XHRcdFx0aWYgKHRsdl9sZW4gXHUwMDNjIDMgKiBzaXplb2YoX19sZTMyKSkge1xuIDI1MjpcdFx0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwmIzM0OyxcbiAyNTM6XHRcdFx0XHRcdFx0dGx2X2xlbik7XG4gMjU0Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNTU6XHRcdFx0XHR9XG4gMjU2Olx0XG4gMjU3Olx0XHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcXG5cJiMzNDssXG4gMjU4Olx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVswXSksXG4gMjU5Olx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsxXSksXG4gMjYwOlx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsyXSkpO1xuIDI2MTpcdFxuIDI2MjpcdFx0XHRcdGRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTtcbiAyNjM6XHRcdFx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4gMjY0Olx0XG4gMjY1Olx0XHRcdFx0aWYgKHNrdV9pZFswXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0gXHUwMDI2XHUwMDI2XG4gMjY2Olx0XHRcdFx0ICAgIHNrdV9pZFsxXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0gXHUwMDI2XHUwMDI2XG4gMjY3Olx0XHRcdFx0ICAgIHNrdV9pZFsyXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMl0pIHtcbiAyNjg6XHRcdFx0XHRcdGludCByZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbih0cmFucyxcbiAyNjk6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGRhdGEsIGxlbixcbiAyNzA6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHBudm1fZGF0YSk7XG4gMjcxOlx0XHRcdFx0XHRpZiAoIXJldClcbiAyNzI6XHRcdFx0XHRcdFx0cmV0dXJuIDA7XG4gMjczOlx0XHRcdFx0fSBlbHNlIHtcbiAyNzQ6XHRcdFx0XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7U0tVIElEIGRpZG4mIzM5O3QgbWF0Y2ghXFxuXCYjMzQ7KTtcbiAyNzU6XHRcdFx0XHR9XG4gMjc2Olx0XHRcdH0gZWxzZSB7XG4gMjc3Olx0XHRcdFx0ZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IEFMSUdOKHRsdl9sZW4sIDQpO1xuIDI3ODpcdFx0XHRcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcbiAyNzk6XHRcdFx0fVxuIDI4MDpcdFx0fVxuIDI4MTpcdFxuIDI4MjpcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gMjgzOlx0fVxuIDI4NDpcdFxuIDI4NTpcdHU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG4gMjg2Olx0e1xuIDI4NzpcdFx0c3RydWN0IHBudm1fc2t1X3BhY2thZ2UgKnBhY2thZ2U7XG4gMjg4Olx0XHR1bnNpZ25lZCBsb25nIHBhY2thZ2Vfc2l6ZTtcbiAyODk6XHRcdHU4ICpkYXRhO1xuIDI5MDpcdFxuIDI5MTpcdFx0cGFja2FnZSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucyxcbiAyOTI6XHRcdFx0XHRcdFx0XHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxuIDI5MzpcdFx0XHRcdFx0XHRcdCBcJiMzNDtSZWR1Y2VkIFBvd2VyXCYjMzQ7LFxuIDI5NDpcdFx0XHRcdFx0XHRcdCBzaXplb2YoKnBhY2thZ2UpLFxuIDI5NTpcdFx0XHRcdFx0XHRcdCBcdTAwMjZwYWNrYWdlX3NpemUpO1xuIDI5NjpcdFx0aWYgKElTX0VSUihwYWNrYWdlKSlcbiAyOTc6XHRcdFx0cmV0dXJuIEVSUl9DQVNUKHBhY2thZ2UpO1xuIDI5ODpcdFxuIDI5OTpcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtyZXYgJWQsIHRvdGFsX3NpemUgJWQsIG5fc2t1cyAlZFxcblwmIzM0OyxcbiAzMDA6XHRcdFx0ICAgICBwYWNrYWdlLVx1MDAzZXJldiwgcGFja2FnZS1cdTAwM2V0b3RhbF9zaXplLCBwYWNrYWdlLVx1MDAzZW5fc2t1cyk7XG4gMzAxOlx0XG4gMzAyOlx0XHQqbGVuID0gcGFja2FnZV9zaXplIC0gc2l6ZW9mKCpwYWNrYWdlKTtcbiAzMDM6XHRcdGRhdGEgPSBrbWVtZHVwKHBhY2thZ2UtXHUwMDNlZGF0YSwgKmxlbiwgR0ZQX0tFUk5FTCk7XG4gMzA0Olx0XHRpZiAoIWRhdGEpIHtcbiAzMDU6XHRcdFx0a2ZyZWUocGFja2FnZSk7XG4gMzA2Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIDMwNzpcdFx0fVxuIDMwODpcdFxuIDMwOTpcdFx0a2ZyZWUocGFja2FnZSk7XG4gMzEwOlx0XG4gMzExOlx0XHRyZXR1cm4gZGF0YTtcbiAzMTI6XHR9XG4gMzEzOlx0XG4gMzE0Olx0c3RhdGljIGludCBpd2xfdWVmaV9zdGVwX3BhcnNlKHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpjb21tb25fc3RlcF9kYXRhLFxuIDMxNTpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbiAzMTY6XHR7XG4gMzE3Olx0XHRpZiAoY29tbW9uX3N0ZXBfZGF0YS1cdTAwM2VyZXZpc2lvbiAhPSAxKVxuIDMxODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVRUZJIFBhcnNpbmcgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYSBsZW5ndGggY2hlY2sgZm9yIGBJV0xfVUNPREVfVExWX1BOVk1fU0tVYCB3aXRoaW4gdGhlIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGZ1bmN0aW9uLiBSaWdodCwgdGhhdCBmdW5jdGlvbiwgaWYgSSByZWNhbGwgY29ycmVjdGx5LCBpcyByZXNwb25zaWJsZSBmb3IgcGFyc2luZyBVRUZJIHZhcmlhYmxlcy4gSSBrbm93IEkmIzM5O3ZlIHdvcmtlZCB3aXRoIFVFRkkgdmFyaWFibGUgcGFyc2luZyBiZWZvcmUsIHNvIGl0JiMzOTtzIGdvb2QgdG8gc2VlIHRoaXMgbGV2ZWwgb2YgZGV0YWlsIGJlaW5nIGFkZGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYmFjay4gV2hlcmUgZXhhY3RseSBpcyBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBiZWluZyBjYWxsZWQgZnJvbT8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsIHRvIGFzc2Vzc2luZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCB3aHkgdGhhdCBzcGVjaWZpYyBUTFYgaXMgaW1wb3J0YW50IGluIHRoaXMgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBpZGVudGlmeSB0aGUgY2FsbGluZyBmdW5jdGlvbnMgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMgb2YgdGhpcyBhZGRlZCBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzMjpcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzMtXHRcdFx0XHRcdCAgc2t1X2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xNjY9c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyMjA6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cdFx0XHRcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyNT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMyNjppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzI3LVx0XHRcdFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzYwPXN0YXRpYyBpbmxpbmUgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNjE6aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzYyLVx0XHRcdCAgICBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBQb3dlciBSZWR1Y3Rpb24gaW4gSW50ZWwgV2lyZWxlc3MgRmlybXdhcmUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0cyBtYWluIHB1cnBvc2UgaXMgdG8gaGFuZGxlIHBvd2VyIHJlZHVjdGlvbiBkdXJpbmcgYSB0cmFuc2l0aW9uLiBUaGUgaW1tZWRpYXRlIHBvaW50IG9mIGludGVyZXN0IGlzIHRoZSBjYWxsIHRvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIHdpdGhpbiBpdC4gVGhhdCBzdWdnZXN0cyB0aGVyZSYjMzk7cyBzb21lIFVFRkkgaW50ZXJhY3Rpb24gb3IgaW50ZXJwcmV0YXRpb24gaW52b2x2ZWQgaW4gZGV0ZXJtaW5pbmcgKmhvdyogdGhlIHBvd2VyIHJlZHVjdGlvbiBpcyBwZXJmb3JtZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhvc2UgdHdvIGZ1bmN0aW9uczogYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBhbmQgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAuCgpNeSBmaXJzdCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIGZvciBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoaXMgcG93ZXIgcmVkdWN0aW9uIGxvZ2ljLiBXaGF0IHN0YXRlcyBvciBldmVudHMgbGVhZCB0byBpdHMgZXhlY3V0aW9uPyBLbm93aW5nIHRoZSBjYWxsZXIocykgd2lsbCB0ZWxsIG1lIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgZ2l2ZSBtZSBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIG92ZXJhbGwgcG93ZXIgbWFuYWdlbWVudCBzY2hlbWUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2ggdG8gZGV0ZXJtaW5lIHdoZXJlIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgaXMgYWN0dWFsbHkgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwOC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyAqY2FwYSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00NTU9aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY3LVx0aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHRyYW5zLCBmdywgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ2ODpcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhLCBza3VfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTEyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGl3bF9wbnZtX2xvYWQqKgoKT2theSwgc28gYGl3bF9wbnZtX2xvYWRgIGlzIGludm9raW5nIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZSwgYW5kIHdoYXQgZHJpdmVzIHRoZSBjYWxsIHRvIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIFRvIHRydWx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMsIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyBwb2ludC4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyIOKAkyBJIGhhdmUgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBpd2xfcG52bV9sb2FkYC4gV2hlcmUgZG9lcyBpdCBvcmlnaW5hdGUgd2l0aGluIHRoZSBicm9hZGVyIGRyaXZlciBzdHJ1Y3R1cmU/IE9ubHkgdGhlbiBjYW4gSSBmb3JtIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgcmVhbGx5IGRpZ2dpbmcgaW50byB0aGlzIHBpZWNlIG9mIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcG52bV9sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM1OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6MzYwOml3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM2MS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MDc6aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDU1OmludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU2LVx0XHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ2NzpcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njg6XHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00ODAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDgxOklXTF9FWFBPUlRfU1lNQk9MKGl3bF9wbnZtX2xvYWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oLTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmg6MTY6aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaC0xNy1cdFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jPTI3Mj1zdGF0aWMgaW50IGl3bF9tbGRfcnVuX2Z3X2luaXRfc2VxdWVuY2Uoc3RydWN0IGl3bF9tbGQgKm1sZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jLTI4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmM6MjkwOlx0cmV0ID0gaXdsX3Budm1fbG9hZChtbGQtXHUwMDNldHJhbnMsIFx1MDAyNm1sZC1cdTAwM2Vub3RpZl93YWl0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYy0yOTEtXHRcdFx0ICAgIG1sZC1cdTAwM2VmdywgYWxpdmVfZGF0YS5za3VfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM9Mjg2PXN0YXRpYyBpbnQgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmUoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM6NDA3Olx0cmV0ID0gaXdsX3Budm1fbG9hZChtdm0tXHUwMDNldHJhbnMsIFx1MDAyNm12bS1cdTAwM2Vub3RpZl93YWl0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy00MDgtXHRcdFx0ICAgIG12bS1cdTAwM2VmdywgYWxpdmVfZGF0YS5za3VfaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTQxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgYW5kIFBvdGVudGlhbCBWdWxuZXJhYmlsaXRpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGl3bF9wbnZtX2xvYWRgIGZ1bmN0aW9uIGFuZCBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGl3bHdpZmkgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBTcGVjaWZpY2FsbHksIEkgc2VlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCBhbmQgYGl3bF9tbGRfcnVuX2Z3X2luaXRfc2VxdWVuY2VgLiBUaGVzZSBhcmUgY3JpdGljYWwgcGFydHMgb2YgdGhlIGRyaXZlciYjMzk7cyBzZXR1cCwgd2hpY2ggYWx3YXlzIG1ha2VzIG1lIHBheSBtb3JlIGF0dGVudGlvbi4gVGhpcyBwYXRjaCBjYXVnaHQgbXkgZXllIGJlY2F1c2UgaXQgaW50cm9kdWNlcyBhIG5ldyBsZW5ndGggY2hlY2sg4oCTIGB0bHZfbGVuICZsdDsgMyAqIHNpemVvZihfX2xlMzIpYCDigJMgd2hlbiBoYW5kbGluZyBgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVWAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgdGhpcyBpbnZvbHZlcyBwYXJzaW5nIFVFRkkgdmFyaWFibGVzLgoKVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBVRUZJIHZhcmlhYmxlcyBhcmUgZXNzZW50aWFsbHkgZmlybXdhcmUvQklPUyBwcm92aWRlZCBkYXRhLCBhbmQgdGhhdCByYWlzZXMgYSBmbGFnOiBhcmUgdGhlc2UgdmFyaWFibGVzIHBvdGVudGlhbGx5IGZ1enphYmxlPyBJbiB0aGUgY29udGV4dCBvZiBrZXJuZWwgc2VjdXJpdHksIHRoYXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgYnkgZGVmYXVsdCwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IG9mZmVyIGEgZGlyZWN0IHdheSB0byBmdXp6IFVFRkkgdmFyaWFibGVzIHVubGVzcyB0aGVyZSBpcyBhIGRlZGljYXRlZCBpbnRlcmZhY2UgYXZhaWxhYmxlIG9yIGl0JiMzOTtzIHJlYWRpbmcgZnJvbSBhIGZpbGUuIEhvd2V2ZXIsIGl0JiMzOTtzIHdvcnRoIGNoZWNraW5nIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgaW50ZXJmYWNlIHRvIGludGVyYWN0IHdpdGggdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIFVFRkkgZGF0YS4gSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAgZnVuY3Rpb24gdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFueSBjbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQyMjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcih0cmFucywgXHUwMDI2bGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMy1cdGlmIChJU19FUlIoZGF0YSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yMjA9aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyODU6dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzI0PXZvaWQgKml3bF91ZWZpX2dldF9wbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMjU6dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjYtaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zNjk9c3RhdGljIGlubGluZSB1OCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNzA6aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzcxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIxNQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqRGl2aW5nIGludG8gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgc3RhcnRlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAuIFRoYXQgbmFtZSBhbG9uZSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBpbnRlcmFjdGlvbiB3aXRoIFVFRkkgZmlybXdhcmUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggcmV0cmlldmluZyB2ZXJpZmllZCB2YXJpYWJsZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIG9wZXJhdGVzLiBJcyBpdCByZXRyaWV2aW5nIHNlY3VyaXR5IHNldHRpbmdzPyBQZXJoYXBzIGl0JiMzOTtzIGNoZWNraW5nIHRoZSBpbnRlZ3JpdHkgb2YgYSBib290IHZhcmlhYmxlPyBLbm93aW5nIHdoYXQgaXQmIzM5O3MgKnZlcmlmeWluZyogaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcm9sZS4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaXdsIChsaWtlbHkgSW50ZWwgV2lyZWxlc3MgTEFOKSBkcml2ZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgVUVGSSBzZXJ2aWNlcy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHJlbGF0ZWQgZnVuY3Rpb25zLiBIb3BlZnVsbHkgdGhlIGNvZGUgaXMgd2VsbC1kb2N1bWVudGVkLiBPdGhlcndpc2UgSSB3aWxsIGJlIHNwZW5kaW5nIGEgbG90IG9mIHRpbWUgcmV2ZXJzZSBlbmdpbmVlcmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgyPXN0YXRpYyB2b2lkICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgzOml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODQtXHRcdFx0XHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMTg9c3RhdGljIHZvaWQgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE5Oml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyMC1cdFx0XHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMjU6XHRyZXR1cm4gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFx1MDAyNklXTF9FRklfV0lGSV9HVUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTI2LVx0XHRcdFx0XHRcdCAgIHVlZmlfdmFyX25hbWUsIHZhcl9uYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTI4NT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI5MTpcdHBhY2thZ2UgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOTItXHRcdFx0XHRcdFx0IElXTF9VRUZJX1JFRFVDRURfUE9XRVJfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0zMjk9dm9pZCBpd2xfdWVmaV9nZXRfc3RlcF90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozMzc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzM4LVx0XHRcdFx0XHRcdCAgIElXTF9VRUZJX1NURVBfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0zODM9dm9pZCBpd2xfdWVmaV9nZXRfc2dvbV90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9TR09NX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTMtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1NHT01cJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTQyMD12b2lkIGl3bF91ZWZpX2dldF91YXRzX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQyNjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VBVFNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNy1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7VUFUU1wmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NDM4PXZvaWQgaXdsX3VlZmlfZ2V0X3VuZWJfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQzOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfVU5FQl9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQ0LVx0XHRcdFx0XHQgICAgICBcJiMzNDtVTkVCXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz00OTc9aW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1MDU6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRFNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNi1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V1JEU1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01NDU9aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NTQ6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX0VXUkRfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1NS1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7RVdSRFwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01OTk9aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dHRFNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V0dEU1wmIzM0OywgVUVGSV9XR0RTX1RBQkxFX1NJWkVfUkVWMyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02NzY9aW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1BQQUdfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7UFBBR1wmIzM0OywgVUVGSV9QUEFHX0RBVEFfU0laRV9WNSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2OTM6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTQtXHRcdFx0XHRcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz03NDU9aW50IGl3bF91ZWZpX2dldF90YXNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc1MTpcdHVlZmlfdGFzID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dUQVNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1Mi1cdFx0XHRcdFx0XHQgIFwmIzM0O1dUQVNcJiMzNDssIHNpemVvZigqdWVmaV90YXMpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz03OTg9aW50IGl3bF91ZWZpX2dldF9wd3JfbGltaXQoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwNDpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfU1BMQ19OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODA1LVx0XHRcdFx0XHQgICAgICBcJiMzNDtTUExDXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04MjE9aW50IGl3bF91ZWZpX2dldF9tY2Moc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCBjaGFyICptY2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODI2Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XUkREX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjctXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dSRERcJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg1Mj1pbnQgaXdsX3VlZmlfZ2V0X2Vja3Yoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKmV4dGxfY2xrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1NzpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChmd3J0LVx1MDAzZXRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU4LVx0XHRcdFx0XHRcdCAgIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg3Nj1pbnQgaXdsX3VlZmlfZ2V0X3diZW0oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg4MTpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV0JFTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgyLVx0XHRcdFx0XHQgICAgICBcJiMzNDtXQkVNXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04OTk9c3RhdGljIGludCBpd2xfdWVmaV9sb2FkX2RzbV92YWx1ZXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTkwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkwNjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfRFNNX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDctXHRcdFx0XHRcdCAgICAgIFwmIzM0O0RTTVwmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9OTc2PWludCBpd2xfdWVmaV9nZXRfcHVuY3R1cmluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTg0Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTg1LVx0XHRcdFx0XHQgICAgICBJV0xfVUVGSV9QVU5DVFVSSU5HX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTAwNT1pbnQgaXdsX3VlZmlfZ2V0X2RzYnIoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDEwOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDExLVx0XHRcdFx0XHRcdCAgIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTEwMzE9aW50IGl3bF91ZWZpX2dldF9waHlfZmlsdGVycyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMzY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dQRkNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzctXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dQRkNcJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkyMwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQuIFdoYXQgaXMgaXQgdmVyaWZ5aW5nPyBXaGF0IHR5cGUgb2YgdmFyaWFibGUgaXMgaXQgZGVhbGluZyB3aXRoPyBUaGUgbmFtZSBjbGVhcmx5IHN1Z2dlc3RzIGludGVyYWN0aW9uIHdpdGggVUVGSSB2YXJpYWJsZXMsIGxpa2VseSB3aXRoaW4gYW4gSW50ZWwgV2lyZWxlc3MgTEFOIChpd2wpIGNvbnRleHQuIFNvLCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGZ1bmN0aW9uJiMzOTtzIG9wZXJhdGlvbiBvbiB0aGUgc2VjdXJpdHkgYW5kIGludGVncml0eSBvZiB0aGUgc3lzdGVtJiMzOTtzIFVFRkkgZW52aXJvbm1lbnQuIElzIGl0IGdldHRpbmcgYSB2YXJpYWJsZSwgb3IgdGhlIEdVSUQ/CgpJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgaGVyZS4gSWYgdGhpcyBpcyB1c2VkIGZvciBzb21lIGtpbmQgb2YgdmVyaWZpY2F0aW9uLCB3aGF0JiMzOTtzIHRoZSBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc20/IFdoYXQgaGFwcGVucyBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzPyBEb2VzIGl0IGxlYWsgaW5mb3JtYXRpb24sIGFsbG93IGV4cGxvaXRhdGlvbiwgb3IgY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZT8gVGhlICYjMzQ7dmVyaWZpZWQmIzM0OyBwYXJ0IGlzIGtleS4gV2hhdCBhcmUgdGhlIHZlcmlmaWNhdGlvbiBzdGVwcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHRocmVhdCBtb2RlbCBoZXJlIHRvIGRldGVybWluZSB0aGUgZGVwdGggb2YgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byBrbm93IHRoZSByaXNrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODI6XHRzdGF0aWMgdm9pZCAqXG4gIDgzOlx0aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gIDg0Olx0XHRcdFx0XHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcbiAgODU6XHRcdFx0XHRcdCAgICBlZmlfY2hhcjE2X3QgKnVlZmlfdmFyX25hbWUsXG4gIDg2Olx0XHRcdFx0XHQgICAgY2hhciAqdmFyX25hbWUsXG4gIDg3Olx0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50IGV4cGVjdGVkX3NpemUsXG4gIDg4Olx0XHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyAqc2l6ZSlcbiAgODk6XHR7XG4gIDkwOlx0XHR2b2lkICp2YXI7XG4gIDkxOlx0XHR1bnNpZ25lZCBsb25nIHZhcl9zaXplO1xuICA5MjpcdFxuICA5MzpcdFx0dmFyID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKHVlZmlfdmFyX25hbWUsIGd1aWQsIFx1MDAyNnZhcl9zaXplKTtcbiAgOTQ6XHRcbiAgOTU6XHRcdGlmIChJU19FUlIodmFyKSkge1xuICA5NjpcdFx0XHRJV0xfREVCVUdfUkFESU8odHJhbnMsXG4gIDk3Olx0XHRcdFx0XHRcJiMzNDslcyBVRUZJIHZhcmlhYmxlIG5vdCBmb3VuZCAweCVseFxcblwmIzM0OywgdmFyX25hbWUsXG4gIDk4Olx0XHRcdFx0XHRQVFJfRVJSKHZhcikpO1xuICA5OTpcdFx0XHRyZXR1cm4gdmFyO1xuIDEwMDpcdFx0fVxuIDEwMTpcdFxuIDEwMjpcdFx0aWYgKHZhcl9zaXplIFx1MDAzYyBleHBlY3RlZF9zaXplKSB7XG4gMTAzOlx0XHRcdElXTF9ERUJVR19SQURJTyh0cmFucyxcbiAxMDQ6XHRcdFx0XHRcdFwmIzM0O0ludmFsaWQgJXMgVUVGSSB2YXJpYWJsZSBsZW4gKCVsdSlcXG5cJiMzNDssXG4gMTA1Olx0XHRcdFx0XHR2YXJfbmFtZSwgdmFyX3NpemUpO1xuIDEwNjpcdFx0XHRrZnJlZSh2YXIpO1xuIDEwNzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiAxMDg6XHRcdH1cbiAxMDk6XHRcbiAxMTA6XHRcdElXTF9ERUJVR19SQURJTyh0cmFucywgXCYjMzQ7JXMgZnJvbSBVRUZJIHdpdGggc2l6ZSAlbHVcXG5cJiMzNDssIHZhcl9uYW1lLFxuIDExMTpcdFx0XHRcdHZhcl9zaXplKTtcbiAxMTI6XHRcbiAxMTM6XHRcdGlmIChzaXplKVxuIDExNDpcdFx0XHQqc2l6ZSA9IHZhcl9zaXplO1xuIDExNTpcdFx0cmV0dXJuIHZhcjtcbiAxMTY6XHR9XG4gMTE3Olx0XG4gMTE4Olx0c3RhdGljIHZvaWQgKlxuIDExOTpcdGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiAxMjA6XHRcdFx0XHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuIDEyMTpcdFx0XHRcdCAgICAgICBjaGFyICp2YXJfbmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI3NjAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgKioKClJpZ2h0LCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYC4uLiBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBLbm93aW5nIHRoZSBjb250ZXh0LCBJIGltbWVkaWF0ZWx5IGFzc3VtZSB0aGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIEludGVsIFdpcmVsZXNzIGRyaXZlciBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIFVFRkkgZmlybXdhcmUuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmV0cmlldmluZyBhIHNwZWNpZmljIFVFRkkgdmFyaWFibGUsIGxpa2VseSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgd2lyZWxlc3MgYWRhcHRlciYjMzk7cyBjb25maWd1cmF0aW9uIG9yIHN0YXR1cywgcGVyaGFwcyBldmVuIHNlY3VyaXR5LXJlbGF0ZWQgc2V0dGluZ3MuIEl0JiMzOTtzIHByb2JhYmx5IHBhcnQgb2YgYSBsYXJnZXIgbWVjaGFuaXNtIHRvIGludGVyZmFjZSB3aXRoIHRoZSBmaXJtd2FyZSBhbmQgZ2V0IGVzc2VudGlhbCBpbmZvcm1hdGlvbi4gSSB3b25kZXIgaWYgaXQgaW5jbHVkZXMgZXJyb3IgaGFuZGxpbmcuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZSB3aXJlbGVzcyBhZGFwdGVyIGlzIGF0dGVtcHRpbmcgdG8gZGV0ZXJtaW5lIGl0cyBvcGVyYXRpb25hbCBzdGF0dXMgYnkgYWNjZXNzaW5nIFVFRkkgdmFyaWFibGVzLiBBcmUgd2UgZGV0ZXJtaW5pbmcgd2hldGhlciBTZWN1cmUgQm9vdCBpcyBlbmFibGVkLCBmb3IgZXhhbXBsZT8gT3IgYXJlIHdlIGFjY2Vzc2luZyBkcml2ZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnM/IFRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscywgc28gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgdmFyaWFibGVzIGl0JiMzOTtzIGZldGNoaW5nLCBhbmQgd2h5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9nZXRfdmFyaWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjM9c3RydWN0IGl3bF91ZWZpX3Budm1fbWVtX2Rlc2Mge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjk6c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgKmRhdGFfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02MD12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUoSVdMX1VFRklfT0VNX1BOVk1fTkFNRSwgXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OC1cdFx0XHRcdCAgICAgXHUwMDI2cGFja2FnZV9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04Mz1pd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkzOlx0dmFyID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKHVlZmlfdmFyX25hbWUsIGd1aWQsIFx1MDAyNnZhcl9zaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzUxMgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGlzIGZ1bmN0aW9uIHJldHJpZXZlcyBVRUZJIHZhcmlhYmxlcy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGtub3cgdGhlIG51YW5jZXMgb2YgVUVGSSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGFyZWFzIG9mIGNvbmNlcm4uIEkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nLCB0aGUgc2l6ZSBjYWxjdWxhdGlvbnMsIGFuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVUVGSSBydW50aW1lIHNlcnZpY2VzLiBJJiMzOTtsbCBtZW50YWxseSBjb21wYXJlIHRoaXMgaW1wbGVtZW50YXRpb24gdG8gb3RoZXIgVUVGSSB2YXJpYWJsZSByZXRyaWV2YWwgbWV0aG9kcyBJJiMzOTt2ZSBzZWVuLCBjb25zaWRlcmluZyBkaWZmZXJlbnQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlcyBhbmQgZmlybXdhcmUgZGVzaWducy4gSSYjMzk7bGwgYWxzbyBiZSB0aGlua2luZyBhYm91dCBhbnkgcG9zc2libGUgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBzdWNoIGFzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgdG8gYnVmZmVyIG92ZXJmbG93cyBvciBpbmNvcnJlY3QgcGVybWlzc2lvbnMgY2hlY2tzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYXJlYXMgd2hlcmUgdGhlIGNvZGUgbWlnaHQgaW5hZHZlcnRlbnRseSBleHBvc2Ugc2Vuc2l0aXZlIGRhdGEgb3IgYWxsb3cgZm9yIHVuZXhwZWN0ZWQgbW9kaWZpY2F0aW9ucyBvZiB0aGUgVUVGSSB2YXJpYWJsZSBzdG9yZS4gSSYjMzk7bGwgYWxzbyBjaGVjayBpZiB0aGUgZnVuY3Rpb24gaGFuZGxlcyBOVUxMIG9yIGludmFsaWQgaW5wdXQgcHJvcGVybHkgYW5kIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGRpZmZlcmVudCBlcnJvciBjb2Rlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjk6XHRzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcbiAgMzA6XHRcdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgKmRhdGFfc2l6ZSlcbiAgMzE6XHR7XG4gIDMyOlx0XHRlZmlfc3RhdHVzX3Qgc3RhdHVzO1xuICAzMzpcdFx0dm9pZCAqZGF0YTtcbiAgMzQ6XHRcbiAgMzU6XHRcdGlmICghZGF0YV9zaXplKVxuICAzNjpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiAgMzc6XHRcbiAgMzg6XHRcdGlmICghZWZpX3J0X3NlcnZpY2VzX3N1cHBvcnRlZChFRklfUlRfU1VQUE9SVEVEX0dFVF9WQVJJQUJMRSkpXG4gIDM5Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xuICA0MDpcdFxuICA0MTpcdFx0LyogZmlyc3QgY2FsbCB3aXRoIE5VTEwgZGF0YSB0byBnZXQgdGhlIGV4YWN0IGVudHJ5IHNpemUgKi9cbiAgNDI6XHRcdCpkYXRhX3NpemUgPSAwO1xuICA0MzpcdFx0c3RhdHVzID0gZWZpLmdldF92YXJpYWJsZShuYW1lLCBndWlkLCBOVUxMLCBkYXRhX3NpemUsIE5VTEwpO1xuICA0NDpcdFx0aWYgKHN0YXR1cyAhPSBFRklfQlVGRkVSX1RPT19TTUFMTCB8fCAhKmRhdGFfc2l6ZSlcbiAgNDU6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XG4gIDQ2Olx0XG4gIDQ3Olx0XHRkYXRhID0ga21hbGxvYygqZGF0YV9zaXplLCBHRlBfS0VSTkVMKTtcbiAgNDg6XHRcdGlmICghZGF0YSlcbiAgNDk6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gIDUwOlx0XG4gIDUxOlx0XHRzdGF0dXMgPSBlZmkuZ2V0X3ZhcmlhYmxlKG5hbWUsIGd1aWQsIE5VTEwsIGRhdGFfc2l6ZSwgZGF0YSk7XG4gIDUyOlx0XHRpZiAoc3RhdHVzICE9IEVGSV9TVUNDRVNTKSB7XG4gIDUzOlx0XHRcdGtmcmVlKGRhdGEpO1xuICA1NDpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTtcbiAgNTU6XHRcdH1cbiAgNTY6XHRcbiAgNTc6XHRcdHJldHVybiBkYXRhO1xuICA1ODpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQxOTIKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgdmlhIEVGSSBWYXJpYWJsZXMqKgoKT2theSwgc28gYGl3bF91ZWZpX2dldF92YXJpYWJsZWAgdWx0aW1hdGVseSBjYWxscyBgZWZpLmdldF92YXJpYWJsZWAuIENhbiB3ZSBmdXp6IGBlZmkuZ2V0X3ZhcmlhYmxlYCB0aHJvdWdoIHRoaXMgZHJpdmVyPyAgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBkaXJlY3RseSB0YXJnZXQgVUVGSSB2YXJpYWJsZXMgdW5sZXNzIHRoZXJlJiMzOTtzIGEgY29udmVuaWVudCBpbnRlcmZhY2UgbGlrZSBhbiBpb2N0bCBvciBzeXNmcyBlbnRyeSBvciBpZiB3ZSYjMzk7cmUgaW4gYSBWTSB3aXRoIGRpcmVjdCBjb250cm9sLCBidXQgdGhhdCYjMzk7cyBub3QgaXRzIHVzdWFsIG1vZGUgb2Ygb3BlcmF0aW9uLiBIb2xkIG9uLi4uIGRvZXNuJiMzOTt0IHN5emthbGxlciBoYXZlIHNvbWUgc3VwcG9ydCB2aWEgYGVmaXZhcmZzYD8gTm8sIHRoYXQganVzdCBwcm92aWRlcyB3cml0ZSBhY2Nlc3MuICBBaCwgYnV0IHRoYXQmIzM5O3MgdGhlIGtleSEgSWYgc3l6a2FsbGVyICpjYW4qIHdyaXRlIHRvIGBlZml2YXJmc2AsIGl0IGNhbiBjcmVhdGUgYXJiaXRyYXJ5IEVGSSB2YXJpYWJsZXMsIGFuZCAqdGhlbiogdGhlIGRyaXZlciB3aWxsIHJlYWQgdGhlbS4KClRoZSBuZXh0IHF1ZXN0aW9uOiBJcyBgZWZpdmFyZnNgIHdyaXRhYmxlIGJ5IHJvb3Q/IFllcywgaXQgaXMuIFBlcmZlY3QuIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGNhbiB3cml0ZSB0byBgL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycy8uLi5gIGFuZCBlZmZlY3RpdmVseSBjb25zdHJ1Y3QgaW5wdXRzIGZvciB0aGUgZHJpdmVyLgoKTm93LCB3aGVuIGRvZXMgdGhlIGRyaXZlciByZWFkIHRoZSB2YXJpYWJsZT8gYGl3bF9wbnZtX2xvYWRgIGlzIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIENhbiBzeXprYWxsZXIgdHJpZ2dlciBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKmFmdGVyKiB3cml0aW5nIHRoZSBFRkkgdmFyaWFibGVzPyBZZXMsIGJ5IHVuYmluZGluZyBhbmQgYmluZGluZyB0aGUgZHJpdmVyLCBvciBieSB1c2luZyBob3RwbHVnZ2luZyBtZWNoYW5pc21zIGZvciB0aGUgZGV2aWNlLCBsaWtlIGB2aGNpYCwgYG1hYzgwMjExX2h3c2ltYCwgb3IgZXZlbiBQQ0kgaG90cGx1Zy4KCldhaXQsIGl3bHdpZmkgaXMgYSBQQ0kgZHJpdmVyISAgQW5kIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuICBJZiB0aGUgYGl3bHdpZmlgIGRyaXZlciBpcyBlbmFibGVkLCBzeXprYWxsZXIgKmNvdWxkKiBmdXp6IGl0LiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBpd2x3aWZpYCBpcyBhY3R1YWxseSBlbmFibGVkIGluIHRoZSBzeXprYWxsZXIgY29uZmlncy4gU3l6a2FsbGVyIGdlbmVyYWxseSB0ZXN0cyBhIGxvdCBvZiBkcml2ZXJzLCBzbyBpdCYjMzk7cyBhIGdvb2QgYmV0LiBMZXQmIzM5O3MgdmVyaWZ5IGJ5IGNoZWNraW5nIGBDT05GSUdfSVdMV0lGSWAgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTFdJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1ODpjb25maWcgSVdMV0lGSV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTg0PWNvbmZpZyBJV0xNTERcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTQtIyBkb24mIzM5O3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo5NTpjb25maWcgSVdMV0lGSV9PUE1PREVfTU9EVUxBUlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDU9bWVudSBcJiMzNDtEZWJ1Z2dpbmcgT3B0aW9uc1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDgtXHRib29sIFwmIzM0O0VuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzE6Y29uZmlnIElXTFdJRklfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cdGJvb2wgXCYjMzQ7aXdsd2lmaSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzOTpjb25maWcgSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cdGJvb2wgXCYjMzQ7aXdsd2lmaSBkZXZpY2UgYWNjZXNzIHRyYWNpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2ODcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgbGVuZ3RoIGNoZWNrIGluIHRoZSBpd2x3aWZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoaXMgc25pcHBldDoKCmBgYGMKCQkJaWYgKHRsdl9sZW4gJmx0OyAzICogc2l6ZW9mKF9fbGUzMikpIHsKCQkJCUlXTF9FUlIodHJhbnMsICYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxuJiMzNDssCgkJCQkJdGx2X2xlbik7CgkJCQlyZXR1cm4gLUVJTlZBTDsKCQkJfQpgYGAKClJpZ2h0LCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHByZXZlbnRpbmcgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gaXQgdHJpZXMgdG8gYWNjZXNzIGVsZW1lbnRzIGB0bHZfc2t1X2lkLSZndDtkYXRhWzBdYCwgYFsxXWAsIGFuZCBgWzJdYC4gR29vZCBjYXRjaC4gQW5kIGxvb2ssIHRoZSBjb21taXQgYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AuIFdhaXQgYSBtaW51dGUuLi4gdGhhdCBtZWFucyBzeXpib3QgZm91bmQgdGhpcyEgU3l6a2FsbGVyISBUaGF0JiMzOTtzIGV4Y2VsbGVudCBuZXdzLiBJZiBzeXpib3QgY2FuIHRyaWdnZXIgdGhpcywgdGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGNvZGUgKmlzKiByZWFjaGFibGUsIGFuZCB0aGF0IGl0JiMzOTtzIHByaW1lIGZvciBmdXJ0aGVyIGZ1enppbmcuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBwdXJzdWluZy4KCk5vdywgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIENsZWFybHksIGBDT05GSUdfSVdMV0lGSWAgaXMgdGhlIG1haW4gb25lLCBhcyBpdCYjMzk7cyB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCBidXQgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBzdWItb3B0aW9ucyB3ZSBuZWVkIHRvIGVuYWJsZSB0byBleHBvc2UgdGhpcyB2dWxuZXJhYmlsaXR5PyBMZXQmIzM5O3MgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWcgZmxhZ3Mgd2UgbmVlZCB0byB0YWtlIGludG8gY29uc2lkZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCMgY29tbW9uXG4gICAzOlx0b2JqLSQoQ09ORklHX0lXTFdJRkkpXHQmIzQzOz0gaXdsd2lmaS5vXG4gICA0Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtaW8ub1xuICAgNTpcdGl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gaXdsLWRydi5vXG4gICA2Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtZGVidWcub1xuICAgNzpcdGl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gaXdsLW52bS11dGlscy5vXG4gICA4Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBpd2wtdXRpbHMub1xuICAgOTpcdGl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gaXdsLXBoeS1kYi5vIGl3bC1udm0tcGFyc2Uub1xuICAxMDpcdFxuICAxMTpcdCMgQnVzXG4gIDEyOlx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBwY2llL2N0eHQtaW5mby5vIHBjaWUvY3R4dC1pbmZvLXYyLm8gcGNpZS9kcnYubyBwY2llL3V0aWxzLm9cbiAgMTM6XHRpd2x3aWZpLW9ianNcdFx0JiM0Mzs9IHBjaWUvZ2VuMV8yL3J4Lm8gcGNpZS9nZW4xXzIvdHgubyBwY2llL2dlbjFfMi90cmFucy5vXG4gIDE0Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBwY2llL2dlbjFfMi90cmFucy1nZW4yLm8gcGNpZS9nZW4xXzIvdHgtZ2VuMi5vXG4gIDE1Olx0XG4gIDE2Olx0Q0ZMQUdTX3BjaWUvZHJ2Lm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxuICAxNzpcdFxuICAxODpcdCMgY29tYmluZWQgTUFDL1JGIGNvbmZpZ3VyYXRpb25zXG4gIDE5Olx0aXdsd2lmaS0kKENPTkZJR19JV0xEVk0pICYjNDM7PSBjZmcvMTAwMC5vIGNmZy8yMDAwLm9cbiAgMjA6XHRpd2x3aWZpLSQoQ09ORklHX0lXTERWTSkgJiM0Mzs9IGNmZy81MDAwLm8gY2ZnLzYwMDAub1xuICAyMTpcdGl3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gY2ZnLzcwMDAubyBjZmcvODAwMC5vXG4gIDIyOlx0IyBNQUMgY29uZmlndXJhdGlvbnNcbiAgMjM6XHRpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IGNmZy85MDAwLm8gY2ZnLzIyMDAwLm9cbiAgMjQ6XHRpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IGNmZy9heDIxMC5vXG4gIDI1Olx0aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICYjNDM7PSBjZmcvYnoubyBjZmcvc2Mub1xuICAyNjpcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSAmIzQzOz0gY2ZnL2J6Lm8gY2ZnL3NjLm8gY2ZnL2RyLm9cbiAgMjc6XHQjIFJGIGNvbmZpZ3VyYXRpb25zXG4gIDI4Olx0aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICYjNDM7PSBjZmcvcmYtamYubyBjZmcvcmYtaHIubyBjZmcvcmYtZ2Yub1xuICAyOTpcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSAmIzQzOz0gY2ZnL3JmLWZtLm8gY2ZnL3JmLXdoLm8gY2ZnL3JmLXBlLm9cbiAgMzA6XHRcbiAgMzE6XHRpd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGl3bC1kYmctdGx2Lm9cbiAgMzI6XHRpd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGl3bC10cmFucy5vXG4gIDMzOlx0XG4gIDM0Olx0aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBmdy9pbWcubyBmdy9ub3RpZi13YWl0Lm8gZncvcnMub1xuICAzNTpcdGl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gZncvZGJnLm8gZncvZGJnLW9sZC5vIGZ3L3Budm0ubyBmdy9kdW1wLm9cbiAgMzY6XHRpd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGZ3L3JlZ3VsYXRvcnkub1xuICAzNzpcdGl3bHdpZmktJChDT05GSUdfSVdMTVZNKSAmIzQzOz0gZncvcGFnaW5nLm8gZncvc21lbS5vIGZ3L2luaXQub1xuICAzODpcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSAmIzQzOz0gZncvc21lbS5vIGZ3L2luaXQub1xuICAzOTpcdGl3bHdpZmktJChDT05GSUdfQUNQSSkgJiM0Mzs9IGZ3L2FjcGkub1xuICA0MDpcdGl3bHdpZmktJChDT05GSUdfRUZJKVx0JiM0Mzs9IGZ3L3VlZmkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzIwOQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGl3bHdpZmkgRHJpdmVyJiMzOTtzIFVFRkkgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGl3bHdpZmlgIGRyaXZlciBidWlsZCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgaG93IFVFRkkgaXMgaGFuZGxlZC4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYGl3bHdpZmktJChDT05GSUdfRUZJKSAmIzQzOz0gZncvdWVmaS5vYC4gVGhpcyB0ZWxscyBtZSB0aGF0IHRoZSBgZncvdWVmaS5jYCBmaWxlICpyZXF1aXJlcyogYENPTkZJR19FRklgIHRvIGJlIGNvbXBpbGVkIGludG8gdGhlIGRyaXZlci4gTWFrZXMgc2Vuc2UuIE5hdHVyYWxseSwgYENPTkZJR19JV0xXSUZJYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgdGhlIGRyaXZlciYjMzk7cyBpbmNsdXNpb24uCgpOb3csIEkgbmVlZCB0byBjaGVjayBmb3Igb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzZWUuLi4gSSByZW1lbWJlciB0aGF0IGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGRlZmluZWQgaW4gYGZ3L3VlZmkuY2AuIFRoZXJlZm9yZSwgdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIGFyZSBkZWZpbml0ZWx5IGBJV0xXSUZJYCBhbmQgYEVGSWAuCgpIb2xkIG9uLi4uIEkmIzM5O20gcmVtaW5kZWQgdGhhdCBgaXdsX3Budm1fbG9hZGAgaXMgaW4gYGZ3L3Budm0uY2AuIExldCBtZSBxdWlja2x5IGxvb2sgYXQgdGhlIE1ha2VmaWxlIGZvciB0aGF0IGZpbGUsIGp1c3QgdG8gYmUgc3VyZS4uLiBBaCwgeWVzOiBgaXdsd2lmaS1vYmpzICYjNDM7PSBmdy9wbnZtLm9gLiBTbywgdGhhdCBtZWFucyBgZncvcG52bS5jYCBpcyBhbHdheXMgY29tcGlsZWQgaWYgYElXTFdJRklgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRvIGJlIGV4cGVjdGVkLgoKQ3J1Y2lhbGx5LCB0aG91Z2gsIGBmdy91ZWZpLmNgIG9ubHkgZ2V0cyBidWlsdCBpZiBgQ09ORklHX0VGSWAgaXMgc2V0LiBPa2F5LCBqdXN0IHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nLCBJIG5lZWQgdG8gbG9vayBhdCBgZncvdWVmaS5oYCB0byBzZWUgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZCB3aGVuIGBDT05GSUdfRUZJYCAqaXNuJiMzOTt0KiBlbmFibGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGZhbGxzIG91dCB3aGVuIHRoaXMgaXMgZGlzYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM1MDpcdFx0XHRcdCAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcbiAzNTE6XHRpbnQgaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcbiAzNTI6XHRpbnQgaXdsX3VlZmlfZ2V0X2RzYnIoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKTtcbiAzNTM6XHRpbnQgaXdsX3VlZmlfZ2V0X3BoeV9maWx0ZXJzKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XG4gMzU0Olx0I2Vsc2UgLyogQ09ORklHX0VGSSAqL1xuIDM1NTpcdHN0YXRpYyBpbmxpbmUgdm9pZCAqaXdsX3VlZmlfZ2V0X3Budm0oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxuIDM1NjpcdHtcbiAzNTc6XHRcdHJldHVybiBFUlJfUFRSKC1FT1BOT1RTVVBQKTtcbiAzNTg6XHR9XG4gMzU5Olx0XG4gMzYwOlx0c3RhdGljIGlubGluZSBpbnRcbiAzNjE6XHRpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gMzYyOlx0XHRcdFx0ICAgIGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuIDM2MzpcdFx0XHRcdCAgICBzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSxcbiAzNjQ6XHRcdFx0XHQgICAgX19sZTMyIHNrdV9pZFszXSlcbiAzNjU6XHR7XG4gMzY2Olx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gMzY3Olx0fVxuIDM2ODpcdFxuIDM2OTpcdHN0YXRpYyBpbmxpbmUgdTggKlxuIDM3MDpcdGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbiAzNzE6XHR7XG4gMzcyOlx0XHRyZXR1cm4gRVJSX1BUUigtRU9QTk9UU1VQUCk7XG4gMzczOlx0fVxuIDM3NDpcdFxuIDM3NTpcdHN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdWVmaV9nZXRfc3RlcF90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbiAzNzY6XHR7XG4gMzc3Olx0fVxuIDM3ODpcdFxuIDM3OTpcdHN0YXRpYyBpbmxpbmUgaW50XG4gMzgwOlx0aXdsX3VlZmlfaGFuZGxlX3Rsdl9tZW1fZGVzYyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXG4gMzgxOlx0XHRcdFx0ICAgICB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXG4gMzgyOlx0e1xuIDM4MzpcdFx0cmV0dXJuIDA7XG4gMzg0Olx0fVxuIDM4NTpcdFxuIDM4NjpcdHN0YXRpYyBpbmxpbmUgaW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbiAzODc6XHR7XG4gMzg4Olx0XHRyZXR1cm4gLUVOT0VOVDtcbiAzODk6XHR9XG4gMzkwOlx0XG4gMzkxOlx0c3RhdGljIGlubGluZSBpbnQgaXdsX3VlZmlfZ2V0X2V3cmRfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuIDM5MjpcdHtcbiAzOTM6XHRcdHJldHVybiAtRU5PRU5UO1xuIDM5NDpcdH1cbiAzOTU6XHRcbiAzOTY6XHRzdGF0aWMgaW5saW5lIGludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4gMzk3Olx0e1xuIDM5ODpcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gMzk5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYzMwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgQ2hhaW4qKgoKT2theSwgc28gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCwgYnV0IGl0JiMzOTtzIGNsZWFybHkgc3R1YmJlZCBvdXQgdW5sZXNzIGBDT05GSUdfRUZJYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBkZXBlbmRlbmN5LCBkZWZpbml0ZWx5LiBBbmQgZ2l2ZW4gaXQgbGl2ZXMgd2l0aGluIHRoZSBgaXdsd2lmaWAgdHJlZSwgYENPTkZJR19JV0xXSUZJYCBpcyBhbm90aGVyIG5vLWJyYWluZXIuCgpMZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0IGVsc2UgaXMgdGllZCBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNgLiBUaGUgZnVuY3Rpb24gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgY2FsbGVkIGJ5IGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIHdoaWNoLCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYGl3bF9wbnZtX2xvYWRgLiBOb3cgd2UmIzM5O3JlIGdldHRpbmcgc29tZXdoZXJlLiBgaXdsX3Budm1fbG9hZGAgaXMgY2FsbGVkIGZyb20gYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCAqYW5kKiBgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZWAuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIHJlc2lkZXMgaW4gYG12bS9mdy5jYCwgd2hpY2ggdGVsbHMgbWUgdGhpcyBicmFuY2ggaXMgZGVwZW5kZW50IG9uIGBDT05GSUdfSVdMTVZNYC4gQW5kIHRoZSBvdGhlciBvbmUsIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYCwgaXMgaW4gYG1sZC9mdy5jYCB3aGljaCwgbmF0dXJhbGx5LCBwb2ludHMgdG8gYENPTkZJR19JV0xNTERgLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgTWFrZWZpbGUuIEFoLCB5ZXM6IGBpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IG12bS9gIGFuZCBgaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICYjNDM7PSBtbGQvYC4KCkhvbGQgb24uLi4gYGl3bF9wbnZtX2xvYWRgIGlzIGFjdHVhbGx5IGluIGBmdy9wbnZtLmNgLCB3aGljaCBzZWVtcyB0byBiZSBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHksIHNvIHRoZSBwYXRoIGlzIHN0aWxsIHRoZXJlIGV2ZW4gd2l0aG91dCBlaXRoZXIgYElXTE1WTWAgb3IgYElXTE1MRGAuIEJ1dCB0aGUgY2FsbCBjaGFpbiAqcmVxdWlyZXMqIGF0IGxlYXN0IG9uZSBvZiB0aGVtIHRvIHJlYWNoIGl0LiBJdCBzZWVtcyBJIG5lZWQgdG8gY2xhcmlmeSB3aGF0IHRoZSAqS2NvbmZpZyogZmlsZXMgZm9yIGBJV0xNVk1gIGFuZCBgSVdMTUxEYCBzYXkgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xNVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTY2PWNvbmZpZyBJV0xEVk1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NzQ6Y29uZmlnIElXTE1WTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTYyNQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBWZXJpZmljYXRpb24qKgoKQWxyaWdodCwgdGhlIGluc3RydWN0aW9uIG1lbnRpb25zIGBJV0xNTERgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byBhIG1lbnRhbCBjaGVja2xpc3QuIElzIHRoaXMgYSBjb2RlPyBBbiBhY3JvbnltPyBBIGZpbGUgb3IgZGF0YXNldCBpZGVudGlmaWVyPyBHaXZlbiB0aGUgY29udGV4dCwgSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyBsaWtlbHkgYSB0ZWNobmljYWwgZGVzaWduYXRpb24sIHBlcmhhcHMgYSB2YXJpYWJsZSBuYW1lLCBhIG1vZGVsIGlkZW50aWZpZXIsIG9yIHNvbWV0aGluZyBzaW1pbGFyIHdpdGhpbiBhIHNwZWNpZmljIHByb2plY3Qgb3IgZG9tYWluLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB2ZXJpZnkgdGhlIGNvbnRleHQ7IHdoYXQgaXMgdGhlIGRvbWFpbj8gV2hhdCBpcyB0aGUgcHJvamVjdD8gSSBuZWVkIHRvIGNoZWNrIGl0cyBvcmlnaW4gdG8gZGV0ZXJtaW5lIGl0cyByZWxldmFuY2UuIElzIHRoaXMgc29tZXRoaW5nIEkgc2hvdWxkIHJlY29nbml6ZSwgb3IgaXMgaXQgbmV3PyBJIG5lZWQgdG8gcGVyZm9ybSBhIHF1aWNrIHJldmlldyBvZiBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgbWV0YWRhdGEuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBkZXNpZ25hdGlvbiBmb3IgYSBwcm9jZWR1cmUsIGEgZGF0YXNldCwgb3IgYW4gaXRlbS4gUGVyaGFwcyBJIG5lZWQgdG8gY2hlY2sgdGhlIHByb2plY3QmIzM5O3MgY29kZWJhc2UsIGRvY3VtZW50YXRpb24sIG9yIHJlbGV2YW50IGludGVybmFsIHRvb2xzIGlmIGFueSBhcmUgYXZhaWxhYmxlLiBJJiMzOTtsbCBzZWFyY2ggZXhpc3RpbmcgaW5kaWNlcyBvciBkYXRhYmFzZXMgZm9yIGFueSBtYXRjaGVzIG9yIHNpbWlsYXIgZW50cmllcyB0aGF0IEkgYW0gYXdhcmUgb2YuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcDsgSSBjYW4mIzM5O3QgcHJvY2VlZCB3aXRob3V0IHRoYXQgY2xhcml0eS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYSB0eXBvLCB0b28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xNTEQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTc0PWNvbmZpZyBJV0xNVk1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6ODQ6Y29uZmlnIElXTE1MRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAyNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRHJpdmVyIEluY2x1c2lvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2Ugc3ViLWRyaXZlcnM6IGBJV0xNVk1gIGFuZCBgSVdMTUxEYC4gVGhpbmtpbmcgc3RyYXRlZ2ljYWxseSwgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcmVhY2hhYmxlLCBJIG5lZWQgdG8gaW5jbHVkZSBgSVdMV0lGSWAsIGBFRklgLCBhbmQgcHJvYmFibHkgYElXTE1WTWAuIEhhbmcgb24uLi4gYElXTE1WTWAgaXMgdGhlIHdvcmtob3JzZSBoZXJlLCB0aGUgTWFjODAyMTEgVmlydHVhbCBNQUMgdGhhdCBoYW5kbGVzIHRob3NlIG5ld2VyIEludGVsIGNhcmRzIOKAkyB0aGUgNzI2MCBhbmQgdXAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBgSVdMTVZNYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgaXQgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBsaXN0ZWQuIEJlc3QgdG8gYmUgc2FmZSwgc28gSSYjMzk7bGwgZ28gd2l0aCBsaXN0aW5nIGBJV0xXSUZJYCwgYElXTE1WTWAsIGFuZCBgRUZJYC4gVGhhdCBzaG91bGQgY292ZXIgdGhlIGNydWNpYWwgYmFzZXMuCgpOb3csIG9uIHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIOKAkyBpZGVudGlmeWluZyB0aGUgZm9jdXMgc3ltYm9scy4gVGhlIHBhdGNoIHRhcmdldHMgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAuIFllcCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEga2V5IHBsYXllciwgc28gdGhhdCYjMzk7cyB3aGVyZSBteSBhdHRlbnRpb24gd2lsbCBiZSBkaXJlY3RlZC4gSSYjMzk7bGwgYWxzbyBiZSB3YXRjaGluZyBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGFuZCBgaXdsX3Budm1fbG9hZGAuIFRob3NlIGFyZSBsaWtlbHkgcmVsYXRlZC4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgYW5kIHNlZSB3aGF0IGl0JiMzOTtzIGFsbCBhYm91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNz1pd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MzI6XHRyZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVx0XHRcdFx0XHQgIHNrdV9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTY2PXN0YXRpYyBpbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjIwOmludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMjEtXHRcdFx0XHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zMjU9dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMjY6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTMyNy1cdFx0XHRcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTM2MD1zdGF0aWMgaW5saW5lIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzYxOml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM2Mi1cdFx0XHQgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTI5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgUG93ZXIgUmVkdWN0aW9uIGluIEludGVsIFdpcmVsZXNzIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBob25pbmcgaW4gb24gcG93ZXIgbWFuYWdlbWVudCB3aXRoaW4gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciBzcGFjZSwgYW5kIGl0IHNlZW1zIGxpa2UgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgYSBwcmV0dHkgc29saWQgZW50cnkgcG9pbnQgZm9yIGludmVzdGlnYXRpb24uIEl0IGxpa2VseSBkZWFscyB3aXRoIGluaXRpYWwgcG93ZXIgY29uZmlndXJhdGlvbiBwYXJzaW5nIGR1cmluZyBVRUZJIGJvb3QsIHdoaWNoIGlzIGFuIGludGVyZXN0aW5nIHNwb3QgdG8gc3RhcnQuCgpOb3csIEkgbmVlZCB0byBleHBhbmQgbXkgc2NvcGUuIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgYWxzbyBsb29rcyBwcm9taXNpbmcuIFRoYXQgbmFtZSBzdWdnZXN0cyB3ZSYjMzk7cmUgZ2V0dGluZyBpbnRvIGxvYWRpbmcgcG93ZXIgc2V0dGluZ3MgZnJvbSBwZXJtYW5lbnQgbm9uLXZvbGF0aWxlIG1lbW9yeSAoUE5WTSkgYW5kIHRyYW5zaXRpb25pbmcgdGhvc2Ugc2V0dGluZ3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgdHJhbnNpdGlvbiBwcm9jZXNzIGFuZCBob3cgdGhvc2Ugc2V0dGluZ3MgaW50ZXJhY3Qgd2l0aCB0aGUgaW5pdGlhbCBwYXJzaW5nLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB0d28gd29yayB0b2dldGhlciB3aWxsIGRlZmluaXRlbHkgaWxsdW1pbmF0ZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIEFyZSB0aGVzZSB0d28gZnVuY3Rpb25zIHJlbGF0ZWQgb3IgZG8gdGhleSBmZWVkIGludG8gdGhlIHNhbWUgc3RhdGUgbWFjaGluZT8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDA3Oml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDA4LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQ1NT1pbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjctXHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY4Olx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFx1MDAyNmZ3LVx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzA0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyB1bmRlcnN0YW5kaW5nOgoKKipSZWZsZWN0aW5nIG9uIFBvd2VyIFJlZHVjdGlvbiBTdHJhdGVnaWVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBwb3dlciBtYW5hZ2VtZW50LiBJJiMzOTttIHNlZWluZyB0aGF0IGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgaXMgYSBzb3VuZCBhcHByb2FjaCBmb3IgaGFuZGxpbmcgcG93ZXIgcmVkdWN0aW9uIGR1cmluZyB0cmFuc21pdCBvcGVyYXRpb25zLiBNYWtlcyBzZW5zZS4gSXQmIzM5O3MgbGlrZWx5IGEgdGFyZ2V0ZWQgb3B0aW1pemF0aW9uIHdpdGhpbiB0aGUgUE5WTSAoUGVyc2lzdGVudCBOb24tVm9sYXRpbGUgTWVtb3J5KSBsb2FkaW5nIHByb2Nlc3MgdG8gc3BlY2lmaWNhbGx5IHRyaW0gcG93ZXIgY29uc3VtcHRpb24gd2hlbiB0cmFuc21pdHRpbmcgZGF0YS4gR29vZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoZXJlLiBBbmQsIEkmIzM5O20gYWxzbyB0aGlua2luZyBvZiBob3cgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHJldHJpZXZpbmcgb3IgY29uZmlndXJpbmcgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyB3aXRoaW4gYSBVRUZJIChVbmlmaWVkIEV4dGVuc2libGUgRmlybXdhcmUgSW50ZXJmYWNlKSBlbnZpcm9ubWVudCwgd2hpY2ggbGlrZWx5IHByb3ZpZGVzIGEgYmFzZS1sZXZlbCBwbGF0Zm9ybSBwb3dlciBtYW5hZ2VtZW50IHN0cmF0ZWd5IHRoYXQgY29tcGxlbWVudHMgdGhlIG1vcmUgYXBwbGljYXRpb24tc3BlY2lmaWMgZGV0YWlscyBvZiB0aGUgdHJhbnNtaXQgcG93ZXIgcmVkdWN0aW9uLiBUaGUgY29tYmluZWQgZWZmZWN0IG9mIHRoZXNlIHBvd2VyIHNhdmluZyBtZWFzdXJlcyBpcyBpbXBvcnRhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNz1pd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MjI6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIodHJhbnMsIFx1MDAyNmxlbmd0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MjMtXHRpZiAoSVNfRVJSKGRhdGEpKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjIwPWludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjg1OnU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyND12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzI1OnU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzI2LWludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzY5PXN0YXRpYyBpbmxpbmUgdTggKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzcwOml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM3MS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTQ0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYC4gSSYjMzk7bSBndWVzc2luZyB0aGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgSW50ZWwmIzM5O3Mgd2lyZWxlc3MgZHJpdmVyLCBsaWtlbHkgcmVsYXRlZCB0byBoYW5kbGluZyBVRUZJIHZhcmlhYmxlcyB3aXRoaW4gdGhlIGZpcm13YXJlLCBwb3NzaWJseSBmb3IgY29uZmlndXJhdGlvbiBvciBwb3dlciBtYW5hZ2VtZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IHJldHJpZXZlcyBhbmQgZnJvbSB3aGVyZSDigJMgc3BlY2lmaWNhbGx5LCB3aGF0IFVFRkkgdmFyaWFibGUgc3RvcmUgaXMgaXQgYWNjZXNzaW5nPyBJcyBpdCBkZWFsaW5nIHdpdGggTlZSQU0sIG9yIHNvbWUgb3RoZXIgZmlybXdhcmUtc3BlY2lmaWMgYXJlYT8gTW9yZSBpbXBvcnRhbnRseSwgSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzIG9yIHBvdGVudGlhbCBtaXN1c2UgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBwYXJ0aWN1bGFybHkgaW4gaGFuZGxpbmcgdGhlIHJldHJpZXZlZCBkYXRhLiBBcmUgdGhlcmUgYW55IHNpemUgbGltaXRhdGlvbnMsIGJ1ZmZlciBvdmVyZmxvd3MsIG9yIHR5cGUtY29uZnVzaW9uIGJ1Z3MgdGhhdCBJIGNhbiBxdWlja2x5IGlkZW50aWZ5PyBJIG5lZWQgdG8gY2hlY2sgaG93IGVycm9yIGNvbmRpdGlvbnMgYXJlIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgYXJlIHRoZSBlcnJvciBjb2RlcyBoYW5kbGVkIHByb3Blcmx5LCBhbmQgYXJlIHRoZXJlIGFueSBzY2VuYXJpb3Mgd2hlcmUgdW5leHBlY3RlZCB2YWx1ZXMgbWlnaHQgbGVhZCB0byBhIHNlY3VyaXR5IGlzc3VlPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgZGlyZWN0IG1lbW9yeSBhY2Nlc3MsIGFuZCBpZiB0aGUgYWNjZXNzIGlzIHByb3BlciBhbmQgY29udHJvbGxlZC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gbG9va2luZyBhdCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCYjMzk7cyBjYWxsZWQuIElzIGl0IGNhbGxlZCBpbiBhIHByaXZpbGVnZWQgY29udGV4dCwgYW5kIGlmIHNvLCB3aGF0JiMzOTtzIHRoZSBjb250cm9sIGZsb3c/IFdoYXQgb3RoZXIgZnVuY3Rpb25zIGRvZXMgaXQgY2FsbCwgYW5kIHdoYXQgYXJlIHRoZWlyIGJlaGF2aW9ycz8gQWxzbywgaXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG9mIGJ5cGFzc2luZyBhY2Nlc3MgY29udHJvbCB0aHJvdWdoIHRoaXMgZnVuY3Rpb24/IFVsdGltYXRlbHksIEkgd2FudCB0byBxdWlja2x5IGV2YWx1YXRlIGl0cyBzYWZldHkgYW5kIHBvdGVudGlhbCBmb3IgZXhwbG9pdGF0aW9uIHdpdGhpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9nZXRfdmFyaWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjM9c3RydWN0IGl3bF91ZWZpX3Budm1fbWVtX2Rlc2Mge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjk6c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgKmRhdGFfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02MD12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUoSVdMX1VFRklfT0VNX1BOVk1fTkFNRSwgXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OC1cdFx0XHRcdCAgICAgXHUwMDI2cGFja2FnZV9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04Mz1pd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkzOlx0dmFyID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKHVlZmlfdmFyX25hbWUsIGd1aWQsIFx1MDAyNnZhcl9zaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM5NgoJCQkJCQkJb3V0cHV0OiAxMjgKCQkJCQkJCXRob3VnaHRzOiA0NzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBpd2x3aWZpYCBQb3dlciBSZWR1Y3Rpb24gVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgYW5kIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AuIFRob3NlIGxvb2sgbGlrZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB0aGlzIHBhcnRpY3VsYXIgYnVnLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5hYmxlIGNvbmZpZ3MgYElXTFdJRklgLCBgRUZJYCwgYW5kIGBJV0xNVk1gLiBUaG91Z2gsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGxpc3QuLi4geWVhaCwgaXQmIzM5O3MganVzdCBgSVdMV0lGSWAsIGBFRklgLCBhbmQgYElXTE1WTWAuIE5vIG90aGVyIG9idmlvdXMgY29uZmlncyBhcmUgaW1tZWRpYXRlbHkgYXBwYXJlbnQgYXMgcmVsZXZhbnQuCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBgSVdMV0lGSWAgaXRzZWxmIGRvZXNuJiMzOTt0IG5lZWQgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMuIEFoLCBpdCBuZWVkcyBgUENJYCBhbmQgYE1BQzgwMjExYCwgYnV0IHN5emthbGxlciBzaG91bGQgYWxyZWFkeSBiZSBzZXQgdXAgd2l0aCB0aG9zZSwgc28gd2UmIzM5O3JlIGdvb2QgdGhlcmUuIFRodXMsIGBJV0xXSUZJYCwgYEVGSWAsIGFuZCBgSVdMTVZNYCBpcyBpbmRlZWQgc3VmZmljaWVudC4KCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgcmVhY2hhYmlsaXR5LiBDYW4gd2UgYWN0dWFsbHkgZ2V0IHRvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgPyBSaWdodCwgaXQmIzM5O3MgcmVhY2hlZCBpZiBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgIHJldHVybnMgdmFsaWQgZGF0YS4gQW5kIHRoYXQsIGluIHR1cm4sIGRlcGVuZHMgb24gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAgc3VjY2VlZGluZywgd2hpY2ggZGVwZW5kcyBvbiBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCBzdWNjZWVkaW5nLiBGaW5hbGx5LCB0aGF0IGhpbmdlcyBvbiBgZWZpLmdldF92YXJpYWJsZWAgc3VjY2VlZGluZy4gTm93LCBpZiBzeXprYWxsZXIgY2FuIG1vY2sgRUZJIHZhcmlhYmxlcyBvciB3cml0ZSB0byBlZml2YXJmcywgd2UgY2FuIGRlZmluaXRlbHkgcmVhY2ggdGhpcyBjb2RlIHBhdGguIENvbnNpZGVyaW5nIHRoaXMgd2FzIGZvdW5kIGJ5IHN5emJvdCwgaXQmIzM5O3MgYWxtb3N0IGEgZ2l2ZW4gdGhhdCBpdCYjMzk7cyByZWFjaGFibGUuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3VtbWFyaXplOgoKKipXb3J0aEZ1enppbmc6KiogVHJ1ZQoKKipGb2N1c1N5bWJvbHM6KioKCiogICBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYAoqICAgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYAoKKipFbmFibGVDb25maWdzOioqCgoqICAgYElXTFdJRklgCiogICBgRUZJYAoqICAgYElXTE1WTWAKCioqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGBpd2x3aWZpYCBkcml2ZXIgd2hlbiBwYXJzaW5nIHRoZSBQTlZNIFNLVSBUTFYgZnJvbSBhIFVFRkkgdmFyaWFibGUuIFRoZSB2dWxuZXJhYmxlIGNvZGUgaXMgcmVhY2hlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGlmIGNlcnRhaW4gRUZJIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlLCBhbmQgdGhlc2UgdmFyaWFibGVzIGFyZSBmdXp6YWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSYjMzQ7LAogICAgJiMzNDtpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0VGSSYjMzQ7LAogICAgJiMzNDtJV0xNVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UmIzM0OywKICAgICYjMzQ7aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBpd2x3aWZpIGRyaXZlciB3aGVuIHBhcnNpbmcgdGhlIFBOVk0gU0tVIFRMViBmcm9tIGEgVUVGSSB2YXJpYWJsZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaWYgc3BlY2lmaWMgRUZJIHZhcmlhYmxlcyBhcmUgcHJlc2VudCwgd2hpY2ggY2FuIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjEwLjEyMjk0ODIyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTMxMjM2MzIxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCIsXG4gICAgXCJFRklcIixcbiAgICBcIklXTE1WTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICAgIFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjoxMC4xMjI5NTgyNDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDM0MjA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZlMWRkNmFjNTgwNjQwMjlkODU2ZWZiNzZhODk3ZWNkNmE4NTYzNTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTI6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li43NDdkZjY1OGRjN2U4NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXFxuQEAgLTI0OCw2ICsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4gXFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJHb3QgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSBsZW4gJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgdGx2X2xlbik7XFxuK1xcdFxcdFxcdGlmICh0bHZfbGVuIFxcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XFxuK1xcdFxcdFxcdFxcdElXTF9FUlIodHJhbnMsIFxcXCJpbnZhbGlkIFBOVk0gU0tVIFRMViBsZW46ICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHR0bHZfbGVuKTtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdH1cXG4rXFxuIFxcdFxcdFxcdElXTF9ERUJVR19GVyh0cmFucywgXFxcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzBdKSxcXG4gXFx0XFx0XFx0XFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzFdKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTAuODU0NzI3NjgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTg1ODA1NjY3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiRUZJXCIsXG4gICAgXCJJV0xNVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VcIixcbiAgICBcIml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBpd2x3aWZpIGRyaXZlciB3aGVuIHBhcnNpbmcgdGhlIFBOVk0gU0tVIFRMViBmcm9tIGEgVUVGSSB2YXJpYWJsZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaWYgc3BlY2lmaWMgRUZJIHZhcmlhYmxlcyBhcmUgcHJlc2VudCwgd2hpY2ggY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2ZTFkZDZhYzU4MDY0MDI5ZDg1NmVmYjc2YTg5N2VjZDZhODU2MzUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMDk6MTI6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG5pbmRleCAyZWYwYTdhOTIwYWRiNS4uNzQ3ZGY2NThkYzdlODQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbkBAIC0yNDgsNiArMjQ4LDEyIEBAIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuIFx0XHRcdFx0ICAgICBcIkdvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwiLFxuIFx0XHRcdFx0ICAgICB0bHZfbGVuKTtcbitcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XG4rXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcbitcdFx0XHRcdFx0dGx2X2xlbik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcblwiLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTAuODU0NzMxMjkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2NTMyMDcyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEludGVsIFdpcmVsZXNzIEZpcm13YXJlIFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGZsb2F0aW5nIGFyb3VuZCwgYW5kIGl0J3MgbGFuZGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY2AuIFNwZWNpZmljYWxseSwgaXQncyBhZGRyZXNzaW5nIHRoZSBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBmdW5jdGlvbiBhbmQgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrIGZvciBgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcy4gSSdsbCBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgYWN0dWFsbHkgKmRvaW5nKi4gTGV0J3MgZ28gYWhlYWQgYW5kIGV4YW1pbmUgdGhhdCBmdW5jdGlvbiBpbiBkZXRhaWwuIFRoaXMgbGVuZ3RoIGNoZWNrIHByb2JhYmx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgb3Igb3RoZXIgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIGhvdyB0aGUgZmlybXdhcmUgaGFuZGxlcyB0aGlzIHBhcnRpY3VsYXIgVExWLiBHb3QgdG8gbWFrZSBzdXJlIHRoZSBwYXRjaCBhZGRyZXNzZXMgYSByZWFsIGlzc3VlIGFuZCB0aGF0IHRoZSBzb2x1dGlvbiBpcyByb2J1c3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBzaWRlIGVmZmVjdHMuIFRpbWUgdG8gZ2V0IHRvIHdvcmshXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzcsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjE1LjMyMDA1NTc2NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDQ2ODM3ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTUuNjI0NzUwNjQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwMDAwMTM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBleHBlY3RpbmcgdGhpcyBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGxpa2VseSBkZWFsaW5nIHdpdGggcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpY2FsbHkgd2l0aGluIGEgVUVGSSBlbnZpcm9ubWVudC4gVGhlIG5hbWluZyBjb252ZW50aW9uIGlzIHByZXR0eSBjbGVhcjsgXCJyZWR1Y2VfcG93ZXJcIiBzdWdnZXN0cyBpdCdzIGFib3V0IG9wdGltaXppbmcgcG93ZXIgY29uc3VtcHRpb24uIFRoZSBcInBhcnNlXCIgcGFydCBsaWtlbHkgbWVhbnMgaXQncyBpbnRlcnByZXRpbmcgc29tZSBkYXRhIG9yIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBwb3dlciByZWR1Y3Rpb24uIEknbSBndWVzc2luZyBpdCdzIGhhbmRsaW5nIHNldHRpbmdzIHJlbGF0ZWQgdG8gcmFkaW8gcG93ZXItZG93biwgY2xvY2sgZ2F0aW5nLCBvciBwZXJoYXBzIHBvd2VyLXNhdmluZyBtb2RlcyBkdXJpbmcgdGhlIFVFRkkgcGhhc2UsIGdpdmVuIHRoYXQgXCJVRUZJXCIgaXMgaW4gdGhlIG5hbWUuIEknbGwgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgd2hhdCBpbnB1dHMgaXQgdGFrZXMsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLCBhbmQsIGNyaXRpY2FsbHksIHdoZXJlIGl0J3MgY2FsbGVkIGZyb20gYW5kIHdoYXQgaXRzIHJldHVybiB2YWx1ZXMgYXJlLiBUaGF0IHdpbGwgcGFpbnQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGxhcmdlciBwb3dlciBtYW5hZ2VtZW50IHBpY3R1cmUgd2l0aGluIHRoaXMgZHJpdmVyIGFuZCBwb3RlbnRpYWxseSB3aXRoaW4gdGhlIHN5c3RlbSdzIG92ZXJhbGwgcG93ZXIgcHJvZmlsZSBkdXJpbmcgdGhlIGVhcmx5IGJvb3Qgc3RhZ2VzLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgbmVlZGluZyB0byBhc3Nlc3MgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIEFDUEkgdGFibGVzIGFuZCBvdGhlciBwb3dlciBtYW5hZ2VtZW50IGZpcm13YXJlIGludGVyZmFjZXMuIExldCdzIGdldCByZWFkaW5nIGFuZCBjb25maXJtIHRoZXNlIGluaXRpYWwgaHlwb3RoZXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ3MSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjE5LjIyNDc1NTA3OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTksXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjE5OlxcdFxcbiAyMjA6XFx0aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4gMjIxOlxcdFxcdFxcdFxcdFxcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxcbiAyMjI6XFx0XFx0XFx0XFx0XFx0c3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEsXFxuIDIyMzpcXHRcXHRcXHRcXHRcXHRfX2xlMzIgc2t1X2lkWzNdKVxcbiAyMjQ6XFx0e1xcbiAyMjU6XFx0XFx0Y29uc3Qgc3RydWN0IGl3bF91Y29kZV90bHYgKnRsdjtcXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwiUGFyc2luZyBSRURVQ0VfUE9XRVIgZGF0YVxcXFxuXFxcIik7XFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdHdoaWxlIChsZW4gXFx1MDAzZT0gc2l6ZW9mKCp0bHYpKSB7XFxuIDIzMDpcXHRcXHRcXHR1MzIgdGx2X2xlbiwgdGx2X3R5cGU7XFxuIDIzMTpcXHRcXG4gMjMyOlxcdFxcdFxcdGxlbiAtPSBzaXplb2YoKnRsdik7XFxuIDIzMzpcXHRcXHRcXHR0bHYgPSAoY29uc3Qgdm9pZCAqKWRhdGE7XFxuIDIzNDpcXHRcXG4gMjM1OlxcdFxcdFxcdHRsdl9sZW4gPSBsZTMyX3RvX2NwdSh0bHYtXFx1MDAzZWxlbmd0aCk7XFxuIDIzNjpcXHRcXHRcXHR0bHZfdHlwZSA9IGxlMzJfdG9fY3B1KHRsdi1cXHUwMDNldHlwZSk7XFxuIDIzNzpcXHRcXG4gMjM4OlxcdFxcdFxcdGlmIChsZW4gXFx1MDAzYyB0bHZfbGVuKSB7XFxuIDIzOTpcXHRcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBUTFYgbGVuOiAlemQvJXVcXFxcblxcXCIsXFxuIDI0MDpcXHRcXHRcXHRcXHRcXHRsZW4sIHRsdl9sZW4pO1xcbiAyNDE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDI0MjpcXHRcXHRcXHR9XFxuIDI0MzpcXHRcXG4gMjQ0OlxcdFxcdFxcdGlmICh0bHZfdHlwZSA9PSBJV0xfVUNPREVfVExWX1BOVk1fU0tVKSB7XFxuIDI0NTpcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgaXdsX3NrdV9pZCAqdGx2X3NrdV9pZCA9XFxuIDI0NjpcXHRcXHRcXHRcXHRcXHQoY29uc3Qgdm9pZCAqKShkYXRhICsgc2l6ZW9mKCp0bHYpKTtcXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxcbiAyNDk6XFx0XFx0XFx0XFx0XFx0ICAgICBcXFwiR290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXFxcXG5cXFwiLFxcbiAyNTA6XFx0XFx0XFx0XFx0XFx0ICAgICB0bHZfbGVuKTtcXG4gMjUxOlxcdFxcdFxcdFxcdGlmICh0bHZfbGVuIFxcdTAwM2MgMyAqIHNpemVvZihfX2xlMzIpKSB7XFxuIDI1MjpcXHRcXHRcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcXFxuXFxcIixcXG4gMjUzOlxcdFxcdFxcdFxcdFxcdFxcdHRsdl9sZW4pO1xcbiAyNTQ6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDI1NTpcXHRcXHRcXHRcXHR9XFxuIDI1NjpcXHRcXG4gMjU3OlxcdFxcdFxcdFxcdElXTF9ERUJVR19GVyh0cmFucywgXFxcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcXFxuXFxcIixcXG4gMjU4OlxcdFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVswXSksXFxuIDI1OTpcXHRcXHRcXHRcXHRcXHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMV0pLFxcbiAyNjA6XFx0XFx0XFx0XFx0XFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzJdKSk7XFxuIDI2MTpcXHRcXG4gMjYyOlxcdFxcdFxcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XFxuIDI2MzpcXHRcXHRcXHRcXHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XFxuIDI2NDpcXHRcXG4gMjY1OlxcdFxcdFxcdFxcdGlmIChza3VfaWRbMF0gPT0gdGx2X3NrdV9pZC1cXHUwMDNlZGF0YVswXSBcXHUwMDI2XFx1MDAyNlxcbiAyNjY6XFx0XFx0XFx0XFx0ICAgIHNrdV9pZFsxXSA9PSB0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzFdIFxcdTAwMjZcXHUwMDI2XFxuIDI2NzpcXHRcXHRcXHRcXHQgICAgc2t1X2lkWzJdID09IHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMl0pIHtcXG4gMjY4OlxcdFxcdFxcdFxcdFxcdGludCByZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbih0cmFucyxcXG4gMjY5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBkYXRhLCBsZW4sXFxuIDI3MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgcG52bV9kYXRhKTtcXG4gMjcxOlxcdFxcdFxcdFxcdFxcdGlmICghcmV0KVxcbiAyNzI6XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDI3MzpcXHRcXHRcXHRcXHR9IGVsc2Uge1xcbiAyNzQ6XFx0XFx0XFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwiU0tVIElEIGRpZG4ndCBtYXRjaCFcXFxcblxcXCIpO1xcbiAyNzU6XFx0XFx0XFx0XFx0fVxcbiAyNzY6XFx0XFx0XFx0fSBlbHNlIHtcXG4gMjc3OlxcdFxcdFxcdFxcdGRhdGEgKz0gc2l6ZW9mKCp0bHYpICsgQUxJR04odGx2X2xlbiwgNCk7XFxuIDI3ODpcXHRcXHRcXHRcXHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XFxuIDI3OTpcXHRcXHRcXHR9XFxuIDI4MDpcXHRcXHR9XFxuIDI4MTpcXHRcXG4gMjgyOlxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiAyODM6XFx0fVxcbiAyODQ6XFx0XFxuIDI4NTpcXHR1OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbiAyODY6XFx0e1xcbiAyODc6XFx0XFx0c3RydWN0IHBudm1fc2t1X3BhY2thZ2UgKnBhY2thZ2U7XFxuIDI4ODpcXHRcXHR1bnNpZ25lZCBsb25nIHBhY2thZ2Vfc2l6ZTtcXG4gMjg5OlxcdFxcdHU4ICpkYXRhO1xcbiAyOTA6XFx0XFxuIDI5MTpcXHRcXHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxcbiAyOTI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IElXTF9VRUZJX1JFRFVDRURfUE9XRVJfTkFNRSxcXG4gMjkzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXFwiUmVkdWNlZCBQb3dlclxcXCIsXFxuIDI5NDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKCpwYWNrYWdlKSxcXG4gMjk1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2cGFja2FnZV9zaXplKTtcXG4gMjk2OlxcdFxcdGlmIChJU19FUlIocGFja2FnZSkpXFxuIDI5NzpcXHRcXHRcXHRyZXR1cm4gRVJSX0NBU1QocGFja2FnZSk7XFxuIDI5ODpcXHRcXG4gMjk5OlxcdFxcdElXTF9ERUJVR19GVyh0cmFucywgXFxcInJldiAlZCwgdG90YWxfc2l6ZSAlZCwgbl9za3VzICVkXFxcXG5cXFwiLFxcbiAzMDA6XFx0XFx0XFx0ICAgICBwYWNrYWdlLVxcdTAwM2VyZXYsIHBhY2thZ2UtXFx1MDAzZXRvdGFsX3NpemUsIHBhY2thZ2UtXFx1MDAzZW5fc2t1cyk7XFxuIDMwMTpcXHRcXG4gMzAyOlxcdFxcdCpsZW4gPSBwYWNrYWdlX3NpemUgLSBzaXplb2YoKnBhY2thZ2UpO1xcbiAzMDM6XFx0XFx0ZGF0YSA9IGttZW1kdXAocGFja2FnZS1cXHUwMDNlZGF0YSwgKmxlbiwgR0ZQX0tFUk5FTCk7XFxuIDMwNDpcXHRcXHRpZiAoIWRhdGEpIHtcXG4gMzA1OlxcdFxcdFxcdGtmcmVlKHBhY2thZ2UpO1xcbiAzMDY6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDMwNzpcXHRcXHR9XFxuIDMwODpcXHRcXG4gMzA5OlxcdFxcdGtmcmVlKHBhY2thZ2UpO1xcbiAzMTA6XFx0XFxuIDMxMTpcXHRcXHRyZXR1cm4gZGF0YTtcXG4gMzEyOlxcdH1cXG4gMzEzOlxcdFxcbiAzMTQ6XFx0c3RhdGljIGludCBpd2xfdWVmaV9zdGVwX3BhcnNlKHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpjb21tb25fc3RlcF9kYXRhLFxcbiAzMTU6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbiAzMTY6XFx0e1xcbiAzMTc6XFx0XFx0aWYgKGNvbW1vbl9zdGVwX2RhdGEtXFx1MDAzZXJldmlzaW9uICE9IDEpXFxuIDMxODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTI6MTkuMjI1MjU0Mjc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMTE2NTY5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVFRkkgUGFyc2luZyBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBpdCdzIGFkZGluZyBhIGxlbmd0aCBjaGVjayBmb3IgYElXTF9VQ09ERV9UTFZfUE5WTV9TS1VgIHdpdGhpbiB0aGUgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgZnVuY3Rpb24uIFJpZ2h0LCB0aGF0IGZ1bmN0aW9uLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIFVFRkkgdmFyaWFibGVzLiBJIGtub3cgSSd2ZSB3b3JrZWQgd2l0aCBVRUZJIHZhcmlhYmxlIHBhcnNpbmcgYmVmb3JlLCBzbyBpdCdzIGdvb2QgdG8gc2VlIHRoaXMgbGV2ZWwgb2YgZGV0YWlsIGJlaW5nIGFkZGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgdHJhY2UgdGhpcyBiYWNrLiBXaGVyZSBleGFjdGx5IGlzIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGJlaW5nIGNhbGxlZCBmcm9tPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIGNydWNpYWwgdG8gYXNzZXNzaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoeSB0aGF0IHNwZWNpZmljIFRMViBpcyBpbXBvcnRhbnQgaW4gdGhpcyBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHRvIGZ1bGx5IGdyYXNwIHRoZSByYW1pZmljYXRpb25zIG9mIHRoaXMgYWRkZWQgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjIyLjYzNjQyNDA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwODc4NzkyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDc9aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDMyOlxcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVxcdFxcdFxcdFxcdFxcdCAgc2t1X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyNT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMjY6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjctXFx0XFx0XFx0XFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zNjA9c3RhdGljIGlubGluZSBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNjE6aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM2Mi1cXHRcXHRcXHQgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjI4LjcyNDMxMTQ3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTI4NDE1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgUG93ZXIgUmVkdWN0aW9uIGluIEludGVsIFdpcmVsZXNzIEZpcm13YXJlKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXRzIG1haW4gcHVycG9zZSBpcyB0byBoYW5kbGUgcG93ZXIgcmVkdWN0aW9uIGR1cmluZyBhIHRyYW5zaXRpb24uIFRoZSBpbW1lZGlhdGUgcG9pbnQgb2YgaW50ZXJlc3QgaXMgdGhlIGNhbGwgdG8gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgd2l0aGluIGl0LiBUaGF0IHN1Z2dlc3RzIHRoZXJlJ3Mgc29tZSBVRUZJIGludGVyYWN0aW9uIG9yIGludGVycHJldGF0aW9uIGludm9sdmVkIGluIGRldGVybWluaW5nICpob3cqIHRoZSBwb3dlciByZWR1Y3Rpb24gaXMgcGVyZm9ybWVkLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhvc2UgdHdvIGZ1bmN0aW9uczogYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBhbmQgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAuXG5cbk15IGZpcnN0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggZm9yIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AuIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBwb3dlciByZWR1Y3Rpb24gbG9naWMuIFdoYXQgc3RhdGVzIG9yIGV2ZW50cyBsZWFkIHRvIGl0cyBleGVjdXRpb24/IEtub3dpbmcgdGhlIGNhbGxlcihzKSB3aWxsIHRlbGwgbWUgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGFuZCBnaXZlIG1lIGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgb3ZlcmFsbCBwb3dlciBtYW5hZ2VtZW50IHNjaGVtZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoIHRvIGRldGVybWluZSB3aGVyZSBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGlzIGFjdHVhbGx5IGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI0MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjMyLjg3NzE1NzMwNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE0MDkzNDg2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDA3Oml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwOC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00NTU9aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjctXFx0aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHRyYW5zLCBmdywgc2t1X2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njg6XFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFxcdTAwMjZmdy1cXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjM2LjAxODEwMTU5MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg4NjI2MDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgaXdsX3Budm1fbG9hZCoqXG5cbk9rYXksIHNvIGBpd2xfcG52bV9sb2FkYCBpcyBpbnZva2luZyBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGhlcmUsIGFuZCB3aGF0IGRyaXZlcyB0aGUgY2FsbCB0byB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLiBUbyB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgcG9pbnQuIE15IG5leHQgc3RlcCBpcyBjbGVhciDigJMgSSBoYXZlIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBgaXdsX3Budm1fbG9hZGAuIFdoZXJlIGRvZXMgaXQgb3JpZ2luYXRlIHdpdGhpbiB0aGUgYnJvYWRlciBkcml2ZXIgc3RydWN0dXJlPyBPbmx5IHRoZW4gY2FuIEkgZm9ybSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBwaWVjZSBvZiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkxMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjQwLjAwNjczMTU4OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5NTgxNTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcG52bV9sb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNTk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozNjA6aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTM2MS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGl3bF9mdyAqZncsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MDc6aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDA4LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyAqY2FwYSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NTU6aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU2LVxcdFxcdCAgc3RydWN0IGl3bF9ub3RpZl93YWl0X2RhdGEgKm5vdGlmX3dhaXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY3OlxcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY4OlxcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcXHUwMDI2ZnctXFx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDgwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0ODE6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3Budm1fbG9hZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaC0xNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaDoxNjppbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaC0xNy1cXHRcXHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYz0yNzI9c3RhdGljIGludCBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlKHN0cnVjdCBpd2xfbWxkICptbGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jLTI4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jOjI5MDpcXHRyZXQgPSBpd2xfcG52bV9sb2FkKG1sZC1cXHUwMDNldHJhbnMsIFxcdTAwMjZtbGQtXFx1MDAzZW5vdGlmX3dhaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYy0yOTEtXFx0XFx0XFx0ICAgIG1sZC1cXHUwMDNlZncsIGFsaXZlX2RhdGEuc2t1X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM9Mjg2PXN0YXRpYyBpbnQgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmUoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtNDA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmM6NDA3OlxcdHJldCA9IGl3bF9wbnZtX2xvYWQobXZtLVxcdTAwM2V0cmFucywgXFx1MDAyNm12bS1cXHUwMDNlbm90aWZfd2FpdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTQwOC1cXHRcXHRcXHQgICAgbXZtLVxcdTAwM2VmdywgYWxpdmVfZGF0YS5za3VfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjo0Mi44MDI1NTcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTQyMzM0MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBhbmQgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGl3bF9wbnZtX2xvYWRgIGZ1bmN0aW9uIGFuZCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgaXdsd2lmaSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQncyBjYWxsZWQgZnJvbSBib3RoIGBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZWAgYW5kIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYC4gVGhlc2UgYXJlIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBkcml2ZXIncyBzZXR1cCwgd2hpY2ggYWx3YXlzIG1ha2VzIG1lIHBheSBtb3JlIGF0dGVudGlvbi4gVGhpcyBwYXRjaCBjYXVnaHQgbXkgZXllIGJlY2F1c2UgaXQgaW50cm9kdWNlcyBhIG5ldyBsZW5ndGggY2hlY2sg4oCTIGB0bHZfbGVuIFx1MDAzYyAzICogc2l6ZW9mKF9fbGUzMilgIOKAkyB3aGVuIGhhbmRsaW5nIGBJV0xfVUNPREVfVExWX1BOVk1fU0tVYC4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhhdCB0aGlzIGludm9sdmVzIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMuXG5cblRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gVUVGSSB2YXJpYWJsZXMgYXJlIGVzc2VudGlhbGx5IGZpcm13YXJlL0JJT1MgcHJvdmlkZWQgZGF0YSwgYW5kIHRoYXQgcmFpc2VzIGEgZmxhZzogYXJlIHRoZXNlIHZhcmlhYmxlcyBwb3RlbnRpYWxseSBmdXp6YWJsZT8gSW4gdGhlIGNvbnRleHQgb2Yga2VybmVsIHNlY3VyaXR5LCB0aGF0J3MgYSBrZXkgcXVlc3Rpb24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCwgYnkgZGVmYXVsdCwgc3l6a2FsbGVyIGRvZXNuJ3Qgb2ZmZXIgYSBkaXJlY3Qgd2F5IHRvIGZ1enogVUVGSSB2YXJpYWJsZXMgdW5sZXNzIHRoZXJlIGlzIGEgZGVkaWNhdGVkIGludGVyZmFjZSBhdmFpbGFibGUgb3IgaXQncyByZWFkaW5nIGZyb20gYSBmaWxlLiBIb3dldmVyLCBpdCdzIHdvcnRoIGNoZWNraW5nIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgaW50ZXJmYWNlIHRvIGludGVyYWN0IHdpdGggdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIFVFRkkgZGF0YS4gSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAgZnVuY3Rpb24gdG8gc2VlIGlmIGl0IHByb3ZpZGVzIGFueSBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMjo0Ny42NTY4MTQzMzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTgzMzUxNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNz1pd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MjI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHRyYW5zLCBcXHUwMDI2bGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MjMtXFx0aWYgKElTX0VSUihkYXRhKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjIwPWludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjg1OnU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyND12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMyNTp1OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjYtaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTM2OT1zdGF0aWMgaW5saW5lIHU4ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNzA6aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM3MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjUwLjQ1NTE1OTMwM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ4NjYxMDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBzdGFydGVkLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVgLiBUaGF0IG5hbWUgYWxvbmUgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byB0aGUgaW50ZXJhY3Rpb24gd2l0aCBVRUZJIGZpcm13YXJlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHJldHJpZXZpbmcgdmVyaWZpZWQgdmFyaWFibGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcy4gSXMgaXQgcmV0cmlldmluZyBzZWN1cml0eSBzZXR0aW5ncz8gUGVyaGFwcyBpdCdzIGNoZWNraW5nIHRoZSBpbnRlZ3JpdHkgb2YgYSBib290IHZhcmlhYmxlPyBLbm93aW5nIHdoYXQgaXQncyAqdmVyaWZ5aW5nKiBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyByb2xlLiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGl3bCAobGlrZWx5IEludGVsIFdpcmVsZXNzIExBTikgZHJpdmVyIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIFVFRkkgc2VydmljZXMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHJlbGF0ZWQgZnVuY3Rpb25zLiBIb3BlZnVsbHkgdGhlIGNvZGUgaXMgd2VsbC1kb2N1bWVudGVkLiBPdGhlcndpc2UgSSB3aWxsIGJlIHNwZW5kaW5nIGEgbG90IG9mIHRpbWUgcmV2ZXJzZSBlbmdpbmVlcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODIxNSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjUzLjkwMzgyNDIxMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyMzI3OTQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgyPXN0YXRpYyB2b2lkICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Mzppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NC1cXHRcXHRcXHRcXHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTExOD1zdGF0aWMgdm9pZCAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE5Oml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjAtXFx0XFx0XFx0ICAgICAgIGVmaV9jaGFyMTZfdCAqdWVmaV92YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTI1OlxcdHJldHVybiBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXFx1MDAyNklXTF9FRklfV0lGSV9HVUlELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICB1ZWZpX3Zhcl9uYW1lLCB2YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTI4NT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI5MTpcXHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI5Mi1cXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MzI5PXZvaWQgaXdsX3VlZmlfZ2V0X3N0ZXBfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzM3OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzOC1cXHRcXHRcXHRcXHRcXHRcXHQgICBJV0xfVUVGSV9TVEVQX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0zODM9dm9pZCBpd2xfdWVmaV9nZXRfc2dvbV90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfU0dPTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5My1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiU0dPTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NDIwPXZvaWQgaXdsX3VlZmlfZ2V0X3VhdHNfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDI2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VBVFNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIlVBVFNcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTQzOD12b2lkIGl3bF91ZWZpX2dldF91bmViX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQ0MzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9VTkVCX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJVTkVCXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz00OTc9aW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1MDU6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV1JEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNi1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV1JEU1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01NDU9aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NTQ6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfRVdSRF9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1NS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiRVdSRFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01OTk9aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV0dEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV0dEU1xcXCIsIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02NzY9aW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfUFBBR19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiUFBBR1xcXCIsIFVFRklfUFBBR19EQVRBX1NJWkVfVjUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjkzOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjk0LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTc0NT1pbnQgaXdsX3VlZmlfZ2V0X3Rhc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUxOlxcdHVlZmlfdGFzID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XVEFTX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzUyLVxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcIldUQVNcXFwiLCBzaXplb2YoKnVlZmlfdGFzKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz03OTg9aW50IGl3bF91ZWZpX2dldF9wd3JfbGltaXQoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwNDpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9TUExDX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODA1LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJTUExDXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04MjE9aW50IGl3bF91ZWZpX2dldF9tY2Moc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCBjaGFyICptY2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODI2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRERfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIldSRERcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg1Mj1pbnQgaXdsX3VlZmlfZ2V0X2Vja3Yoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKmV4dGxfY2xrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU4LVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg3Nj1pbnQgaXdsX3VlZmlfZ2V0X3diZW0oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg4MTpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XQkVNX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgyLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJXQkVNXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04OTk9c3RhdGljIGludCBpd2xfdWVmaV9sb2FkX2RzbV92YWx1ZXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkwNjpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9EU01fTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIkRTTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9OTc2PWludCBpd2xfdWVmaV9nZXRfcHVuY3R1cmluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTg0OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTg1LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BVTkNUVVJJTkdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTEwMDU9aW50IGl3bF91ZWZpX2dldF9kc2JyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAxMDpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAxMS1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2SVdMX0VGSV9XSUZJX0JUX0dVSUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMDMxPWludCBpd2xfdWVmaV9nZXRfcGh5X2ZpbHRlcnMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDM2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dQRkNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM3LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJXUEZDXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEyOjU2LjIyNzExNTE2OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU5MTUxMzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dC4gV2hhdCBpcyBpdCB2ZXJpZnlpbmc/IFdoYXQgdHlwZSBvZiB2YXJpYWJsZSBpcyBpdCBkZWFsaW5nIHdpdGg/IFRoZSBuYW1lIGNsZWFybHkgc3VnZ2VzdHMgaW50ZXJhY3Rpb24gd2l0aCBVRUZJIHZhcmlhYmxlcywgbGlrZWx5IHdpdGhpbiBhbiBJbnRlbCBXaXJlbGVzcyBMQU4gKGl3bCkgY29udGV4dC4gU28sIEkgbmVlZCB0byBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24ncyBvcGVyYXRpb24gb24gdGhlIHNlY3VyaXR5IGFuZCBpbnRlZ3JpdHkgb2YgdGhlIHN5c3RlbSdzIFVFRkkgZW52aXJvbm1lbnQuIElzIGl0IGdldHRpbmcgYSB2YXJpYWJsZSwgb3IgdGhlIEdVSUQ/XG5cbkknbSBzdGFydGluZyB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGhlcmUuIElmIHRoaXMgaXMgdXNlZCBmb3Igc29tZSBraW5kIG9mIHZlcmlmaWNhdGlvbiwgd2hhdCdzIHRoZSBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc20/IFdoYXQgaGFwcGVucyBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzPyBEb2VzIGl0IGxlYWsgaW5mb3JtYXRpb24sIGFsbG93IGV4cGxvaXRhdGlvbiwgb3IgY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZT8gVGhlIFwidmVyaWZpZWRcIiBwYXJ0IGlzIGtleS4gV2hhdCBhcmUgdGhlIHZlcmlmaWNhdGlvbiBzdGVwcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHRocmVhdCBtb2RlbCBoZXJlIHRvIGRldGVybWluZSB0aGUgZGVwdGggb2YgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byBrbm93IHRoZSByaXNrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5MjMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzowMC4xODYyNzA4MzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgyLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgyOlxcdHN0YXRpYyB2b2lkICpcXG4gIDgzOlxcdGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiAgODQ6XFx0XFx0XFx0XFx0XFx0ICAgIGVmaV9ndWlkX3QgKmd1aWQsXFxuICA4NTpcXHRcXHRcXHRcXHRcXHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbiAgODY6XFx0XFx0XFx0XFx0XFx0ICAgIGNoYXIgKnZhcl9uYW1lLFxcbiAgODc6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxcbiAgODg6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpXFxuICA4OTpcXHR7XFxuICA5MDpcXHRcXHR2b2lkICp2YXI7XFxuICA5MTpcXHRcXHR1bnNpZ25lZCBsb25nIHZhcl9zaXplO1xcbiAgOTI6XFx0XFxuICA5MzpcXHRcXHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXFx1MDAyNnZhcl9zaXplKTtcXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0aWYgKElTX0VSUih2YXIpKSB7XFxuICA5NjpcXHRcXHRcXHRJV0xfREVCVUdfUkFESU8odHJhbnMsXFxuICA5NzpcXHRcXHRcXHRcXHRcXHRcXFwiJXMgVUVGSSB2YXJpYWJsZSBub3QgZm91bmQgMHglbHhcXFxcblxcXCIsIHZhcl9uYW1lLFxcbiAgOTg6XFx0XFx0XFx0XFx0XFx0UFRSX0VSUih2YXIpKTtcXG4gIDk5OlxcdFxcdFxcdHJldHVybiB2YXI7XFxuIDEwMDpcXHRcXHR9XFxuIDEwMTpcXHRcXG4gMTAyOlxcdFxcdGlmICh2YXJfc2l6ZSBcXHUwMDNjIGV4cGVjdGVkX3NpemUpIHtcXG4gMTAzOlxcdFxcdFxcdElXTF9ERUJVR19SQURJTyh0cmFucyxcXG4gMTA0OlxcdFxcdFxcdFxcdFxcdFxcXCJJbnZhbGlkICVzIFVFRkkgdmFyaWFibGUgbGVuICglbHUpXFxcXG5cXFwiLFxcbiAxMDU6XFx0XFx0XFx0XFx0XFx0dmFyX25hbWUsIHZhcl9zaXplKTtcXG4gMTA2OlxcdFxcdFxcdGtmcmVlKHZhcik7XFxuIDEwNzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4gMTA4OlxcdFxcdH1cXG4gMTA5OlxcdFxcbiAxMTA6XFx0XFx0SVdMX0RFQlVHX1JBRElPKHRyYW5zLCBcXFwiJXMgZnJvbSBVRUZJIHdpdGggc2l6ZSAlbHVcXFxcblxcXCIsIHZhcl9uYW1lLFxcbiAxMTE6XFx0XFx0XFx0XFx0dmFyX3NpemUpO1xcbiAxMTI6XFx0XFxuIDExMzpcXHRcXHRpZiAoc2l6ZSlcXG4gMTE0OlxcdFxcdFxcdCpzaXplID0gdmFyX3NpemU7XFxuIDExNTpcXHRcXHRyZXR1cm4gdmFyO1xcbiAxMTY6XFx0fVxcbiAxMTc6XFx0XFxuIDExODpcXHRzdGF0aWMgdm9pZCAqXFxuIDExOTpcXHRpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDEyMDpcXHRcXHRcXHRcXHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbiAxMjE6XFx0XFx0XFx0XFx0ICAgICAgIGNoYXIgKnZhcl9uYW1lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzowMC4xODY0NjgxNTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQxNDAxNTMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5J3JlIG15IG93bjpcblxuKipBbmFseXppbmcgYGl3bF91ZWZpX2dldF92YXJpYWJsZWAqKlxuXG5SaWdodCwgYGl3bF91ZWZpX2dldF92YXJpYWJsZWAuLi4gbGV0J3MgdGFrZSBhIGxvb2sgYXQgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIEtub3dpbmcgdGhlIGNvbnRleHQsIEkgaW1tZWRpYXRlbHkgYXNzdW1lIHRoaXMgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgSW50ZWwgV2lyZWxlc3MgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVUVGSSBmaXJtd2FyZS4gSSdtIGd1ZXNzaW5nIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHJldHJpZXZpbmcgYSBzcGVjaWZpYyBVRUZJIHZhcmlhYmxlLCBsaWtlbHkgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIGFkYXB0ZXIncyBjb25maWd1cmF0aW9uIG9yIHN0YXR1cywgcGVyaGFwcyBldmVuIHNlY3VyaXR5LXJlbGF0ZWQgc2V0dGluZ3MuIEl0J3MgcHJvYmFibHkgcGFydCBvZiBhIGxhcmdlciBtZWNoYW5pc20gdG8gaW50ZXJmYWNlIHdpdGggdGhlIGZpcm13YXJlIGFuZCBnZXQgZXNzZW50aWFsIGluZm9ybWF0aW9uLiBJIHdvbmRlciBpZiBpdCBpbmNsdWRlcyBlcnJvciBoYW5kbGluZy4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgd2lyZWxlc3MgYWRhcHRlciBpcyBhdHRlbXB0aW5nIHRvIGRldGVybWluZSBpdHMgb3BlcmF0aW9uYWwgc3RhdHVzIGJ5IGFjY2Vzc2luZyBVRUZJIHZhcmlhYmxlcy4gQXJlIHdlIGRldGVybWluaW5nIHdoZXRoZXIgU2VjdXJlIEJvb3QgaXMgZW5hYmxlZCwgZm9yIGV4YW1wbGU/IE9yIGFyZSB3ZSBhY2Nlc3NpbmcgZHJpdmVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zPyBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgdmFyaWFibGVzIGl0J3MgZmV0Y2hpbmcsIGFuZCB3aHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzYwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzowNS42MDA0ODk1MTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTMzMjcxOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yMz1zdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02MD12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKElXTF9VRUZJX09FTV9QTlZNX05BTUUsIFxcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OC1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZwYWNrYWdlX3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODM9aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MzpcXHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXFx1MDAyNnZhcl9zaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6MDguMjUzODI2OTYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NTM2NzIwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgVUVGSSB2YXJpYWJsZXMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBrbm93IHRoZSBudWFuY2VzIG9mIFVFRkksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGFyZWFzIG9mIGNvbmNlcm4uIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcsIHRoZSBzaXplIGNhbGN1bGF0aW9ucywgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVRUZJIHJ1bnRpbWUgc2VydmljZXMuIEknbGwgbWVudGFsbHkgY29tcGFyZSB0aGlzIGltcGxlbWVudGF0aW9uIHRvIG90aGVyIFVFRkkgdmFyaWFibGUgcmV0cmlldmFsIG1ldGhvZHMgSSd2ZSBzZWVuLCBjb25zaWRlcmluZyBkaWZmZXJlbnQgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlcyBhbmQgZmlybXdhcmUgZGVzaWducy4gSSdsbCBhbHNvIGJlIHRoaW5raW5nIGFib3V0IGFueSBwb3NzaWJsZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIHN1Y2ggYXMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyB0byBidWZmZXIgb3ZlcmZsb3dzIG9yIGluY29ycmVjdCBwZXJtaXNzaW9ucyBjaGVja3MuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFyZWFzIHdoZXJlIHRoZSBjb2RlIG1pZ2h0IGluYWR2ZXJ0ZW50bHkgZXhwb3NlIHNlbnNpdGl2ZSBkYXRhIG9yIGFsbG93IGZvciB1bmV4cGVjdGVkIG1vZGlmaWNhdGlvbnMgb2YgdGhlIFVFRkkgdmFyaWFibGUgc3RvcmUuIEknbGwgYWxzbyBjaGVjayBpZiB0aGUgZnVuY3Rpb24gaGFuZGxlcyBOVUxMIG9yIGludmFsaWQgaW5wdXQgcHJvcGVybHkgYW5kIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGRpZmZlcmVudCBlcnJvciBjb2Rlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MTIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzoxNi43MDc1MDMxNzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI5OlxcdHN0YXRpYyB2b2lkICppd2xfdWVmaV9nZXRfdmFyaWFibGUoZWZpX2NoYXIxNl90ICpuYW1lLCBlZmlfZ3VpZF90ICpndWlkLFxcbiAgMzA6XFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyAqZGF0YV9zaXplKVxcbiAgMzE6XFx0e1xcbiAgMzI6XFx0XFx0ZWZpX3N0YXR1c190IHN0YXR1cztcXG4gIDMzOlxcdFxcdHZvaWQgKmRhdGE7XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdGlmICghZGF0YV9zaXplKVxcbiAgMzY6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdGlmICghZWZpX3J0X3NlcnZpY2VzX3N1cHBvcnRlZChFRklfUlRfU1VQUE9SVEVEX0dFVF9WQVJJQUJMRSkpXFxuICAzOTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0LyogZmlyc3QgY2FsbCB3aXRoIE5VTEwgZGF0YSB0byBnZXQgdGhlIGV4YWN0IGVudHJ5IHNpemUgKi9cXG4gIDQyOlxcdFxcdCpkYXRhX3NpemUgPSAwO1xcbiAgNDM6XFx0XFx0c3RhdHVzID0gZWZpLmdldF92YXJpYWJsZShuYW1lLCBndWlkLCBOVUxMLCBkYXRhX3NpemUsIE5VTEwpO1xcbiAgNDQ6XFx0XFx0aWYgKHN0YXR1cyAhPSBFRklfQlVGRkVSX1RPT19TTUFMTCB8fCAhKmRhdGFfc2l6ZSlcXG4gIDQ1OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xcbiAgNDY6XFx0XFxuICA0NzpcXHRcXHRkYXRhID0ga21hbGxvYygqZGF0YV9zaXplLCBHRlBfS0VSTkVMKTtcXG4gIDQ4OlxcdFxcdGlmICghZGF0YSlcXG4gIDQ5OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRzdGF0dXMgPSBlZmkuZ2V0X3ZhcmlhYmxlKG5hbWUsIGd1aWQsIE5VTEwsIGRhdGFfc2l6ZSwgZGF0YSk7XFxuICA1MjpcXHRcXHRpZiAoc3RhdHVzICE9IEVGSV9TVUNDRVNTKSB7XFxuICA1MzpcXHRcXHRcXHRrZnJlZShkYXRhKTtcXG4gIDU0OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xcbiAgNTU6XFx0XFx0fVxcbiAgNTY6XFx0XFxuICA1NzpcXHRcXHRyZXR1cm4gZGF0YTtcXG4gIDU4OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6MTYuNzA3NjQwODk4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjIwMDU5Nzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGl3bHdpZmkgRHJpdmVyIHZpYSBFRkkgVmFyaWFibGVzKipcblxuT2theSwgc28gYGl3bF91ZWZpX2dldF92YXJpYWJsZWAgdWx0aW1hdGVseSBjYWxscyBgZWZpLmdldF92YXJpYWJsZWAuIENhbiB3ZSBmdXp6IGBlZmkuZ2V0X3ZhcmlhYmxlYCB0aHJvdWdoIHRoaXMgZHJpdmVyPyAgU3l6a2FsbGVyIGRvZXNuJ3QgdHlwaWNhbGx5IGRpcmVjdGx5IHRhcmdldCBVRUZJIHZhcmlhYmxlcyB1bmxlc3MgdGhlcmUncyBhIGNvbnZlbmllbnQgaW50ZXJmYWNlIGxpa2UgYW4gaW9jdGwgb3Igc3lzZnMgZW50cnkgb3IgaWYgd2UncmUgaW4gYSBWTSB3aXRoIGRpcmVjdCBjb250cm9sLCBidXQgdGhhdCdzIG5vdCBpdHMgdXN1YWwgbW9kZSBvZiBvcGVyYXRpb24uIEhvbGQgb24uLi4gZG9lc24ndCBzeXprYWxsZXIgaGF2ZSBzb21lIHN1cHBvcnQgdmlhIGBlZml2YXJmc2A/IE5vLCB0aGF0IGp1c3QgcHJvdmlkZXMgd3JpdGUgYWNjZXNzLiAgQWgsIGJ1dCB0aGF0J3MgdGhlIGtleSEgSWYgc3l6a2FsbGVyICpjYW4qIHdyaXRlIHRvIGBlZml2YXJmc2AsIGl0IGNhbiBjcmVhdGUgYXJiaXRyYXJ5IEVGSSB2YXJpYWJsZXMsIGFuZCAqdGhlbiogdGhlIGRyaXZlciB3aWxsIHJlYWQgdGhlbS5cblxuVGhlIG5leHQgcXVlc3Rpb246IElzIGBlZml2YXJmc2Agd3JpdGFibGUgYnkgcm9vdD8gWWVzLCBpdCBpcy4gUGVyZmVjdC4gVGhhdCBtZWFucyBzeXprYWxsZXIgY2FuIHdyaXRlIHRvIGAvc3lzL2Zpcm13YXJlL2VmaS9lZml2YXJzLy4uLmAgYW5kIGVmZmVjdGl2ZWx5IGNvbnN0cnVjdCBpbnB1dHMgZm9yIHRoZSBkcml2ZXIuXG5cbk5vdywgd2hlbiBkb2VzIHRoZSBkcml2ZXIgcmVhZCB0aGUgdmFyaWFibGU/IGBpd2xfcG52bV9sb2FkYCBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBDYW4gc3l6a2FsbGVyIHRyaWdnZXIgZHJpdmVyIGluaXRpYWxpemF0aW9uICphZnRlciogd3JpdGluZyB0aGUgRUZJIHZhcmlhYmxlcz8gWWVzLCBieSB1bmJpbmRpbmcgYW5kIGJpbmRpbmcgdGhlIGRyaXZlciwgb3IgYnkgdXNpbmcgaG90cGx1Z2dpbmcgbWVjaGFuaXNtcyBmb3IgdGhlIGRldmljZSwgbGlrZSBgdmhjaWAsIGBtYWM4MDIxMV9od3NpbWAsIG9yIGV2ZW4gUENJIGhvdHBsdWcuXG5cbldhaXQsIGl3bHdpZmkgaXMgYSBQQ0kgZHJpdmVyISAgQW5kIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuICBJZiB0aGUgYGl3bHdpZmlgIGRyaXZlciBpcyBlbmFibGVkLCBzeXprYWxsZXIgKmNvdWxkKiBmdXp6IGl0LiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBpd2x3aWZpYCBpcyBhY3R1YWxseSBlbmFibGVkIGluIHRoZSBzeXprYWxsZXIgY29uZmlncy4gU3l6a2FsbGVyIGdlbmVyYWxseSB0ZXN0cyBhIGxvdCBvZiBkcml2ZXJzLCBzbyBpdCdzIGEgZ29vZCBiZXQuIExldCdzIHZlcmlmeSBieSBjaGVja2luZyBgQ09ORklHX0lXTFdJRklgIGlzIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTkyLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6MjYuOTI3NzAzNzc0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDY4Njg5NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6MjkuMzk2NDAyNzQ3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMTkzODI0Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgbGVuZ3RoIGNoZWNrIGluIHRoZSBpd2x3aWZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoaXMgc25pcHBldDpcblxuYGBgY1xuXHRcdFx0aWYgKHRsdl9sZW4gXHUwMDNjIDMgKiBzaXplb2YoX19sZTMyKSkge1xuXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcblx0XHRcdFx0XHR0bHZfbGVuKTtcblx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cdFx0XHR9XG5gYGBcblxuUmlnaHQsIGl0IGxvb2tzIGxpa2UgaXQncyBwcmV2ZW50aW5nIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIGl0IHRyaWVzIHRvIGFjY2VzcyBlbGVtZW50cyBgdGx2X3NrdV9pZC1cdTAwM2VkYXRhWzBdYCwgYFsxXWAsIGFuZCBgWzJdYC4gR29vZCBjYXRjaC4gQW5kIGxvb2ssIHRoZSBjb21taXQgYXV0aG9yIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBXYWl0IGEgbWludXRlLi4uIHRoYXQgbWVhbnMgc3l6Ym90IGZvdW5kIHRoaXMhIFN5emthbGxlciEgVGhhdCdzIGV4Y2VsbGVudCBuZXdzLiBJZiBzeXpib3QgY2FuIHRyaWdnZXIgdGhpcywgdGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGNvZGUgKmlzKiByZWFjaGFibGUsIGFuZCB0aGF0IGl0J3MgcHJpbWUgZm9yIGZ1cnRoZXIgZnV6emluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIHB1cnN1aW5nLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIENsZWFybHksIGBDT05GSUdfSVdMV0lGSWAgaXMgdGhlIG1haW4gb25lLCBhcyBpdCdzIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGJ1dCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIHN1Yi1vcHRpb25zIHdlIG5lZWQgdG8gZW5hYmxlIHRvIGV4cG9zZSB0aGlzIHZ1bG5lcmFiaWxpdHk/IExldCdzIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlnIGZsYWdzIHdlIG5lZWQgdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Njg3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEzOjUxLjU5MDIzMzI4MloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCMgY29tbW9uXFxuICAgMzpcXHRvYmotJChDT05GSUdfSVdMV0lGSSlcXHQrPSBpd2x3aWZpLm9cXG4gICA0OlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IGl3bC1pby5vXFxuICAgNTpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtZHJ2Lm9cXG4gICA2OlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IGl3bC1kZWJ1Zy5vXFxuICAgNzpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtbnZtLXV0aWxzLm9cXG4gICA4OlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IGl3bC11dGlscy5vXFxuICAgOTpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtcGh5LWRiLm8gaXdsLW52bS1wYXJzZS5vXFxuICAxMDpcXHRcXG4gIDExOlxcdCMgQnVzXFxuICAxMjpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBwY2llL2N0eHQtaW5mby5vIHBjaWUvY3R4dC1pbmZvLXYyLm8gcGNpZS9kcnYubyBwY2llL3V0aWxzLm9cXG4gIDEzOlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IHBjaWUvZ2VuMV8yL3J4Lm8gcGNpZS9nZW4xXzIvdHgubyBwY2llL2dlbjFfMi90cmFucy5vXFxuICAxNDpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBwY2llL2dlbjFfMi90cmFucy1nZW4yLm8gcGNpZS9nZW4xXzIvdHgtZ2VuMi5vXFxuICAxNTpcXHRcXG4gIDE2OlxcdENGTEFHU19wY2llL2Rydi5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxcbiAgMTc6XFx0XFxuICAxODpcXHQjIGNvbWJpbmVkIE1BQy9SRiBjb25maWd1cmF0aW9uc1xcbiAgMTk6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xEVk0pICs9IGNmZy8xMDAwLm8gY2ZnLzIwMDAub1xcbiAgMjA6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xEVk0pICs9IGNmZy81MDAwLm8gY2ZnLzYwMDAub1xcbiAgMjE6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGNmZy83MDAwLm8gY2ZnLzgwMDAub1xcbiAgMjI6XFx0IyBNQUMgY29uZmlndXJhdGlvbnNcXG4gIDIzOlxcdGl3bHdpZmktJChDT05GSUdfSVdMTVZNKSArPSBjZmcvOTAwMC5vIGNmZy8yMjAwMC5vXFxuICAyNDpcXHRpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgKz0gY2ZnL2F4MjEwLm9cXG4gIDI1OlxcdGl3bHdpZmktJChDT05GSUdfSVdMTVZNKSArPSBjZmcvYnoubyBjZmcvc2Mub1xcbiAgMjY6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICs9IGNmZy9iei5vIGNmZy9zYy5vIGNmZy9kci5vXFxuICAyNzpcXHQjIFJGIGNvbmZpZ3VyYXRpb25zXFxuICAyODpcXHRpd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgKz0gY2ZnL3JmLWpmLm8gY2ZnL3JmLWhyLm8gY2ZnL3JmLWdmLm9cXG4gIDI5OlxcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSArPSBjZmcvcmYtZm0ubyBjZmcvcmYtd2gubyBjZmcvcmYtcGUub1xcbiAgMzA6XFx0XFxuICAzMTpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtZGJnLXRsdi5vXFxuICAzMjpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtdHJhbnMub1xcbiAgMzM6XFx0XFxuICAzNDpcXHRpd2x3aWZpLW9ianNcXHRcXHQrPSBmdy9pbWcubyBmdy9ub3RpZi13YWl0Lm8gZncvcnMub1xcbiAgMzU6XFx0aXdsd2lmaS1vYmpzXFx0XFx0Kz0gZncvZGJnLm8gZncvZGJnLW9sZC5vIGZ3L3Budm0ubyBmdy9kdW1wLm9cXG4gIDM2OlxcdGl3bHdpZmktb2Jqc1xcdFxcdCs9IGZ3L3JlZ3VsYXRvcnkub1xcbiAgMzc6XFx0aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGZ3L3BhZ2luZy5vIGZ3L3NtZW0ubyBmdy9pbml0Lm9cXG4gIDM4OlxcdGl3bHdpZmktJChDT05GSUdfSVdMTUxEKSArPSBmdy9zbWVtLm8gZncvaW5pdC5vXFxuICAzOTpcXHRpd2x3aWZpLSQoQ09ORklHX0FDUEkpICs9IGZ3L2FjcGkub1xcbiAgNDA6XFx0aXdsd2lmaS0kKENPTkZJR19FRkkpXFx0Kz0gZncvdWVmaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjEzOjUxLjU5MDM5NDkwMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTUzNjkyODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIncyBVRUZJIEludGVncmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgaXdsd2lmaWAgZHJpdmVyIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBob3cgVUVGSSBpcyBoYW5kbGVkLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgaXdsd2lmaS0kKENPTkZJR19FRkkpICs9IGZ3L3VlZmkub2AuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgYGZ3L3VlZmkuY2AgZmlsZSAqcmVxdWlyZXMqIGBDT05GSUdfRUZJYCB0byBiZSBjb21waWxlZCBpbnRvIHRoZSBkcml2ZXIuIE1ha2VzIHNlbnNlLiBOYXR1cmFsbHksIGBDT05GSUdfSVdMV0lGSWAgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIHRoZSBkcml2ZXIncyBpbmNsdXNpb24uXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGZvciBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gTGV0J3Mgc2VlLi4uIEkgcmVtZW1iZXIgdGhhdCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBpcyBkZWZpbmVkIGluIGBmdy91ZWZpLmNgLiBUaGVyZWZvcmUsIHRoZSBlc3NlbnRpYWwgY29uZmlndXJhdGlvbiBhcmUgZGVmaW5pdGVseSBgSVdMV0lGSWAgYW5kIGBFRklgLlxuXG5Ib2xkIG9uLi4uIEknbSByZW1pbmRlZCB0aGF0IGBpd2xfcG52bV9sb2FkYCBpcyBpbiBgZncvcG52bS5jYC4gTGV0IG1lIHF1aWNrbHkgbG9vayBhdCB0aGUgTWFrZWZpbGUgZm9yIHRoYXQgZmlsZSwganVzdCB0byBiZSBzdXJlLi4uIEFoLCB5ZXM6IGBpd2x3aWZpLW9ianMgKz0gZncvcG52bS5vYC4gU28sIHRoYXQgbWVhbnMgYGZ3L3Budm0uY2AgaXMgYWx3YXlzIGNvbXBpbGVkIGlmIGBJV0xXSUZJYCBpcyBlbmFibGVkLCB3aGljaCBpcyB0byBiZSBleHBlY3RlZC5cblxuQ3J1Y2lhbGx5LCB0aG91Z2gsIGBmdy91ZWZpLmNgIG9ubHkgZ2V0cyBidWlsdCBpZiBgQ09ORklHX0VGSWAgaXMgc2V0LiBPa2F5LCBqdXN0IHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nLCBJIG5lZWQgdG8gbG9vayBhdCBgZncvdWVmaS5oYCB0byBzZWUgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZCB3aGVuIGBDT05GSUdfRUZJYCAqaXNuJ3QqIGVuYWJsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZmFsbHMgb3V0IHdoZW4gdGhpcyBpcyBkaXNhYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyMDksIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxMzo1OS43NDQwOTIwNjdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1OTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM1MDpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCk7XFxuIDM1MTpcXHRpbnQgaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KTtcXG4gMzUyOlxcdGludCBpd2xfdWVmaV9nZXRfZHNicihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsIHUzMiAqdmFsdWUpO1xcbiAzNTM6XFx0aW50IGl3bF91ZWZpX2dldF9waHlfZmlsdGVycyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpO1xcbiAzNTQ6XFx0I2Vsc2UgLyogQ09ORklHX0VGSSAqL1xcbiAzNTU6XFx0c3RhdGljIGlubGluZSB2b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuIDM1NjpcXHR7XFxuIDM1NzpcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU9QTk9UU1VQUCk7XFxuIDM1ODpcXHR9XFxuIDM1OTpcXHRcXG4gMzYwOlxcdHN0YXRpYyBpbmxpbmUgaW50XFxuIDM2MTpcXHRpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDM2MjpcXHRcXHRcXHRcXHQgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuIDM2MzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEsXFxuIDM2NDpcXHRcXHRcXHRcXHQgICAgX19sZTMyIHNrdV9pZFszXSlcXG4gMzY1OlxcdHtcXG4gMzY2OlxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gMzY3OlxcdH1cXG4gMzY4OlxcdFxcbiAzNjk6XFx0c3RhdGljIGlubGluZSB1OCAqXFxuIDM3MDpcXHRpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuIDM3MTpcXHR7XFxuIDM3MjpcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU9QTk9UU1VQUCk7XFxuIDM3MzpcXHR9XFxuIDM3NDpcXHRcXG4gMzc1OlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBpd2xfdWVmaV9nZXRfc3RlcF90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcXG4gMzc2OlxcdHtcXG4gMzc3OlxcdH1cXG4gMzc4OlxcdFxcbiAzNzk6XFx0c3RhdGljIGlubGluZSBpbnRcXG4gMzgwOlxcdGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2Moc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbiAzODE6XFx0XFx0XFx0XFx0ICAgICB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXFxuIDM4MjpcXHR7XFxuIDM4MzpcXHRcXHRyZXR1cm4gMDtcXG4gMzg0OlxcdH1cXG4gMzg1OlxcdFxcbiAzODY6XFx0c3RhdGljIGlubGluZSBpbnQgaXdsX3VlZmlfZ2V0X3dyZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbiAzODc6XFx0e1xcbiAzODg6XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIDM4OTpcXHR9XFxuIDM5MDpcXHRcXG4gMzkxOlxcdHN0YXRpYyBpbmxpbmUgaW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4gMzkyOlxcdHtcXG4gMzkzOlxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiAzOTQ6XFx0fVxcbiAzOTU6XFx0XFxuIDM5NjpcXHRzdGF0aWMgaW5saW5lIGludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuIDM5NzpcXHR7XFxuIDM5ODpcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gMzk5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTM6NTkuNzQ0MjkxOTE3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjg2MzUxMDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbioqXG5cbk9rYXksIHNvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQsIGJ1dCBpdCdzIGNsZWFybHkgc3R1YmJlZCBvdXQgdW5sZXNzIGBDT05GSUdfRUZJYCBpcyBlbmFibGVkLiBUaGF0J3MgdGhlIGZpcnN0IGRlcGVuZGVuY3ksIGRlZmluaXRlbHkuIEFuZCBnaXZlbiBpdCBsaXZlcyB3aXRoaW4gdGhlIGBpd2x3aWZpYCB0cmVlLCBgQ09ORklHX0lXTFdJRklgIGlzIGFub3RoZXIgbm8tYnJhaW5lci5cblxuTGV0J3MgZGl2ZSBkZWVwZXIgYW5kIHNlZSB3aGF0IGVsc2UgaXMgdGllZCBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNgLiBUaGUgZnVuY3Rpb24gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgY2FsbGVkIGJ5IGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIHdoaWNoLCBpbiB0dXJuLCBpcyBjYWxsZWQgYnkgYGl3bF9wbnZtX2xvYWRgLiBOb3cgd2UncmUgZ2V0dGluZyBzb21ld2hlcmUuIGBpd2xfcG52bV9sb2FkYCBpcyBjYWxsZWQgZnJvbSBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgICphbmQqIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCByZXNpZGVzIGluIGBtdm0vZncuY2AsIHdoaWNoIHRlbGxzIG1lIHRoaXMgYnJhbmNoIGlzIGRlcGVuZGVudCBvbiBgQ09ORklHX0lXTE1WTWAuIEFuZCB0aGUgb3RoZXIgb25lLCBgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZWAsIGlzIGluIGBtbGQvZncuY2Agd2hpY2gsIG5hdHVyYWxseSwgcG9pbnRzIHRvIGBDT05GSUdfSVdMTUxEYC4gVGltZSB0byBkb3VibGUtY2hlY2sgdGhlIE1ha2VmaWxlLiBBaCwgeWVzOiBgaXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IG12bS9gIGFuZCBgaXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICs9IG1sZC9gLlxuXG5Ib2xkIG9uLi4uIGBpd2xfcG52bV9sb2FkYCBpcyBhY3R1YWxseSBpbiBgZncvcG52bS5jYCwgd2hpY2ggc2VlbXMgdG8gYmUgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5LCBzbyB0aGUgcGF0aCBpcyBzdGlsbCB0aGVyZSBldmVuIHdpdGhvdXQgZWl0aGVyIGBJV0xNVk1gIG9yIGBJV0xNTERgLiBCdXQgdGhlIGNhbGwgY2hhaW4gKnJlcXVpcmVzKiBhdCBsZWFzdCBvbmUgb2YgdGhlbSB0byByZWFjaCBpdC4gSXQgc2VlbXMgSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgKktjb25maWcqIGZpbGVzIGZvciBgSVdMTVZNYCBhbmQgYElXTE1MRGAgc2F5IHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYzMywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE0OjEwLjQzMDY0NjQyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzcxNDk1ODgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xNVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE0OjEzLjIwMjE1MDkwM1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjQ4NjIzNjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgVmVyaWZpY2F0aW9uKipcblxuQWxyaWdodCwgdGhlIGluc3RydWN0aW9uIG1lbnRpb25zIGBJV0xNTERgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byBhIG1lbnRhbCBjaGVja2xpc3QuIElzIHRoaXMgYSBjb2RlPyBBbiBhY3JvbnltPyBBIGZpbGUgb3IgZGF0YXNldCBpZGVudGlmaWVyPyBHaXZlbiB0aGUgY29udGV4dCwgSSdtIGFzc3VtaW5nIGl0J3MgbGlrZWx5IGEgdGVjaG5pY2FsIGRlc2lnbmF0aW9uLCBwZXJoYXBzIGEgdmFyaWFibGUgbmFtZSwgYSBtb2RlbCBpZGVudGlmaWVyLCBvciBzb21ldGhpbmcgc2ltaWxhciB3aXRoaW4gYSBzcGVjaWZpYyBwcm9qZWN0IG9yIGRvbWFpbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdmVyaWZ5IHRoZSBjb250ZXh0OyB3aGF0IGlzIHRoZSBkb21haW4/IFdoYXQgaXMgdGhlIHByb2plY3Q/IEkgbmVlZCB0byBjaGVjayBpdHMgb3JpZ2luIHRvIGRldGVybWluZSBpdHMgcmVsZXZhbmNlLiBJcyB0aGlzIHNvbWV0aGluZyBJIHNob3VsZCByZWNvZ25pemUsIG9yIGlzIGl0IG5ldz8gSSBuZWVkIHRvIHBlcmZvcm0gYSBxdWljayByZXZpZXcgb2YgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIG1ldGFkYXRhLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBkZXNpZ25hdGlvbiBmb3IgYSBwcm9jZWR1cmUsIGEgZGF0YXNldCwgb3IgYW4gaXRlbS4gUGVyaGFwcyBJIG5lZWQgdG8gY2hlY2sgdGhlIHByb2plY3QncyBjb2RlYmFzZSwgZG9jdW1lbnRhdGlvbiwgb3IgcmVsZXZhbnQgaW50ZXJuYWwgdG9vbHMgaWYgYW55IGFyZSBhdmFpbGFibGUuIEknbGwgc2VhcmNoIGV4aXN0aW5nIGluZGljZXMgb3IgZGF0YWJhc2VzIGZvciBhbnkgbWF0Y2hlcyBvciBzaW1pbGFyIGVudHJpZXMgdGhhdCBJIGFtIGF3YXJlIG9mLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcDsgSSBjYW4ndCBwcm9jZWVkIHdpdGhvdXQgdGhhdCBjbGFyaXR5LiBMZXQncyBtYWtlIHN1cmUgaXQncyBub3QgYSB0eXBvLCB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjI1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTQ6MjEuODUwNzgxMjYxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzcyODcyODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xNTERcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz03ND1jb25maWcgSVdMTVZNXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg0OmNvbmZpZyBJV0xNTERcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE0OjI1LjIyMzY2MTc0NloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTIxNjY3MzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEcml2ZXIgSW5jbHVzaW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2Ugc3ViLWRyaXZlcnM6IGBJV0xNVk1gIGFuZCBgSVdMTUxEYC4gVGhpbmtpbmcgc3RyYXRlZ2ljYWxseSwgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcmVhY2hhYmxlLCBJIG5lZWQgdG8gaW5jbHVkZSBgSVdMV0lGSWAsIGBFRklgLCBhbmQgcHJvYmFibHkgYElXTE1WTWAuIEhhbmcgb24uLi4gYElXTE1WTWAgaXMgdGhlIHdvcmtob3JzZSBoZXJlLCB0aGUgTWFjODAyMTEgVmlydHVhbCBNQUMgdGhhdCBoYW5kbGVzIHRob3NlIG5ld2VyIEludGVsIGNhcmRzIOKAkyB0aGUgNzI2MCBhbmQgdXAuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBgSVdMTVZNYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgaXQgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBsaXN0ZWQuIEJlc3QgdG8gYmUgc2FmZSwgc28gSSdsbCBnbyB3aXRoIGxpc3RpbmcgYElXTFdJRklgLCBgSVdMTVZNYCwgYW5kIGBFRklgLiBUaGF0IHNob3VsZCBjb3ZlciB0aGUgY3J1Y2lhbCBiYXNlcy5cblxuTm93LCBvbiB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgaWRlbnRpZnlpbmcgdGhlIGZvY3VzIHN5bWJvbHMuIFRoZSBwYXRjaCB0YXJnZXRzIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgLiBZZXAsIHRoYXQncyBkZWZpbml0ZWx5IGEga2V5IHBsYXllciwgc28gdGhhdCdzIHdoZXJlIG15IGF0dGVudGlvbiB3aWxsIGJlIGRpcmVjdGVkLiBJJ2xsIGFsc28gYmUgd2F0Y2hpbmcgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBhbmQgYGl3bF9wbnZtX2xvYWRgLiBUaG9zZSBhcmUgbGlrZWx5IHJlbGF0ZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGFuZCBzZWUgd2hhdCBpdCdzIGFsbCBhYm91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwMjcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTQ6MzMuMTQ1MzMzOTg0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTYxODE3MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzMjpcXHRyZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMy1cXHRcXHRcXHRcXHRcXHQgIHNrdV9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xNjY9c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyMjA6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMjEtXFx0XFx0XFx0XFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zMjU9dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzI2OmludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzI3LVxcdFxcdFxcdFxcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzYwPXN0YXRpYyBpbmxpbmUgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MzYxOml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zNjItXFx0XFx0XFx0ICAgIGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxNDozNi4xMDcxNjEwODlaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1MjU0NzU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgUG93ZXIgUmVkdWN0aW9uIGluIEludGVsIFdpcmVsZXNzIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHBvd2VyIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgc3BhY2UsIGFuZCBpdCBzZWVtcyBsaWtlIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGEgcHJldHR5IHNvbGlkIGVudHJ5IHBvaW50IGZvciBpbnZlc3RpZ2F0aW9uLiBJdCBsaWtlbHkgZGVhbHMgd2l0aCBpbml0aWFsIHBvd2VyIGNvbmZpZ3VyYXRpb24gcGFyc2luZyBkdXJpbmcgVUVGSSBib290LCB3aGljaCBpcyBhbiBpbnRlcmVzdGluZyBzcG90IHRvIHN0YXJ0LlxuXG5Ob3csIEkgbmVlZCB0byBleHBhbmQgbXkgc2NvcGUuIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgYWxzbyBsb29rcyBwcm9taXNpbmcuIFRoYXQgbmFtZSBzdWdnZXN0cyB3ZSdyZSBnZXR0aW5nIGludG8gbG9hZGluZyBwb3dlciBzZXR0aW5ncyBmcm9tIHBlcm1hbmVudCBub24tdm9sYXRpbGUgbWVtb3J5IChQTlZNKSBhbmQgdHJhbnNpdGlvbmluZyB0aG9zZSBzZXR0aW5ncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCB0cmFuc2l0aW9uIHByb2Nlc3MgYW5kIGhvdyB0aG9zZSBzZXR0aW5ncyBpbnRlcmFjdCB3aXRoIHRoZSBpbml0aWFsIHBhcnNpbmcuIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIHR3byB3b3JrIHRvZ2V0aGVyIHdpbGwgZGVmaW5pdGVseSBpbGx1bWluYXRlIHRoZSBiaWdnZXIgcGljdHVyZS4gQXJlIHRoZXNlIHR3byBmdW5jdGlvbnMgcmVsYXRlZCBvciBkbyB0aGV5IGZlZWQgaW50byB0aGUgc2FtZSBzdGF0ZSBtYWNoaW5lPyBJIG5lZWQgdG8gZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExMjksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxNDo0MC43NTk3MTMzNDJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMzU0OTgzOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDU1PWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY3LVxcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY4OlxcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcXHUwMDI2ZnctXFx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxNDo0My45OTUyMzY3MjFaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgwNzY0MzkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyB1bmRlcnN0YW5kaW5nOlxuXG4qKlJlZmxlY3Rpbmcgb24gUG93ZXIgUmVkdWN0aW9uIFN0cmF0ZWdpZXMqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBwb3dlciBtYW5hZ2VtZW50LiBJJ20gc2VlaW5nIHRoYXQgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBpcyBhIHNvdW5kIGFwcHJvYWNoIGZvciBoYW5kbGluZyBwb3dlciByZWR1Y3Rpb24gZHVyaW5nIHRyYW5zbWl0IG9wZXJhdGlvbnMuIE1ha2VzIHNlbnNlLiBJdCdzIGxpa2VseSBhIHRhcmdldGVkIG9wdGltaXphdGlvbiB3aXRoaW4gdGhlIFBOVk0gKFBlcnNpc3RlbnQgTm9uLVZvbGF0aWxlIE1lbW9yeSkgbG9hZGluZyBwcm9jZXNzIHRvIHNwZWNpZmljYWxseSB0cmltIHBvd2VyIGNvbnN1bXB0aW9uIHdoZW4gdHJhbnNtaXR0aW5nIGRhdGEuIEdvb2QgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGVyZS4gQW5kLCBJJ20gYWxzbyB0aGlua2luZyBvZiBob3cgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gSXQncyBsaWtlbHkgaW52b2x2ZWQgaW4gcmV0cmlldmluZyBvciBjb25maWd1cmluZyByZWR1Y2VkIHBvd2VyIHNldHRpbmdzIHdpdGhpbiBhIFVFRkkgKFVuaWZpZWQgRXh0ZW5zaWJsZSBGaXJtd2FyZSBJbnRlcmZhY2UpIGVudmlyb25tZW50LCB3aGljaCBsaWtlbHkgcHJvdmlkZXMgYSBiYXNlLWxldmVsIHBsYXRmb3JtIHBvd2VyIG1hbmFnZW1lbnQgc3RyYXRlZ3kgdGhhdCBjb21wbGVtZW50cyB0aGUgbW9yZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBkZXRhaWxzIG9mIHRoZSB0cmFuc21pdCBwb3dlciByZWR1Y3Rpb24uIFRoZSBjb21iaW5lZCBlZmZlY3Qgb2YgdGhlc2UgcG93ZXIgc2F2aW5nIG1lYXN1cmVzIGlzIGltcG9ydGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3MDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQwOToxNDo0Ny44MDI4ODU0MDRaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDQzMzI5NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNz1pd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MjI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHRyYW5zLCBcXHUwMDI2bGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MjMtXFx0aWYgKElTX0VSUihkYXRhKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjIwPWludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjg1OnU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyND12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMyNTp1OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjYtaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTM2OT1zdGF0aWMgaW5saW5lIHU4ICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNzA6aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM3MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE0OjUwLjU0NzIzNDc0WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxOTE4NTQ3MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYGl3bF91ZWZpX2dldF92YXJpYWJsZWAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYC4gSSdtIGd1ZXNzaW5nIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBJbnRlbCdzIHdpcmVsZXNzIGRyaXZlciwgbGlrZWx5IHJlbGF0ZWQgdG8gaGFuZGxpbmcgVUVGSSB2YXJpYWJsZXMgd2l0aGluIHRoZSBmaXJtd2FyZSwgcG9zc2libHkgZm9yIGNvbmZpZ3VyYXRpb24gb3IgcG93ZXIgbWFuYWdlbWVudC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IHJldHJpZXZlcyBhbmQgZnJvbSB3aGVyZSDigJMgc3BlY2lmaWNhbGx5LCB3aGF0IFVFRkkgdmFyaWFibGUgc3RvcmUgaXMgaXQgYWNjZXNzaW5nPyBJcyBpdCBkZWFsaW5nIHdpdGggTlZSQU0sIG9yIHNvbWUgb3RoZXIgZmlybXdhcmUtc3BlY2lmaWMgYXJlYT8gTW9yZSBpbXBvcnRhbnRseSwgSSB3YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzIG9yIHBvdGVudGlhbCBtaXN1c2UgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBwYXJ0aWN1bGFybHkgaW4gaGFuZGxpbmcgdGhlIHJldHJpZXZlZCBkYXRhLiBBcmUgdGhlcmUgYW55IHNpemUgbGltaXRhdGlvbnMsIGJ1ZmZlciBvdmVyZmxvd3MsIG9yIHR5cGUtY29uZnVzaW9uIGJ1Z3MgdGhhdCBJIGNhbiBxdWlja2x5IGlkZW50aWZ5PyBJIG5lZWQgdG8gY2hlY2sgaG93IGVycm9yIGNvbmRpdGlvbnMgYXJlIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgYXJlIHRoZSBlcnJvciBjb2RlcyBoYW5kbGVkIHByb3Blcmx5LCBhbmQgYXJlIHRoZXJlIGFueSBzY2VuYXJpb3Mgd2hlcmUgdW5leHBlY3RlZCB2YWx1ZXMgbWlnaHQgbGVhZCB0byBhIHNlY3VyaXR5IGlzc3VlPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzaWducyBvZiBkaXJlY3QgbWVtb3J5IGFjY2VzcywgYW5kIGlmIHRoZSBhY2Nlc3MgaXMgcHJvcGVyIGFuZCBjb250cm9sbGVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQncyBjYWxsZWQuIElzIGl0IGNhbGxlZCBpbiBhIHByaXZpbGVnZWQgY29udGV4dCwgYW5kIGlmIHNvLCB3aGF0J3MgdGhlIGNvbnRyb2wgZmxvdz8gV2hhdCBvdGhlciBmdW5jdGlvbnMgZG9lcyBpdCBjYWxsLCBhbmQgd2hhdCBhcmUgdGhlaXIgYmVoYXZpb3JzPyBBbHNvLCBpcyB0aGVyZSBhbnkgcG9zc2liaWxpdHkgb2YgYnlwYXNzaW5nIGFjY2VzcyBjb250cm9sIHRocm91Z2ggdGhpcyBmdW5jdGlvbj8gVWx0aW1hdGVseSwgSSB3YW50IHRvIHF1aWNrbHkgZXZhbHVhdGUgaXRzIHNhZmV0eSBhbmQgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24gd2l0aGluIHRoZSBvdmVyYWxsIHN5c3RlbSBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTU6MTIuNDY1Nzg2NTQxWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODU5Nzg0MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF91ZWZpX2dldF92YXJpYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MjM9c3RydWN0IGl3bF91ZWZpX3Budm1fbWVtX2Rlc2Mge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mjk6c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzAtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyAqZGF0YV9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NjA9dm9pZCAqaXdsX3VlZmlfZ2V0X3Budm0oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Njc6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92YXJpYWJsZShJV0xfVUVGSV9PRU1fUE5WTV9OQU1FLCBcXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjgtXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2cGFja2FnZV9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgzPWl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTM6XFx0dmFyID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKHVlZmlfdmFyX25hbWUsIGd1aWQsIFxcdTAwMjZ2YXJfc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDA5OjE1OjE1LjMyNTU3OTY0NloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzk2Nzc0NzgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYGl3bHdpZmlgIFBvd2VyIFJlZHVjdGlvbiBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgYW5kIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AuIFRob3NlIGxvb2sgbGlrZSBrZXkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB0aGlzIHBhcnRpY3VsYXIgYnVnLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5hYmxlIGNvbmZpZ3MgYElXTFdJRklgLCBgRUZJYCwgYW5kIGBJV0xNVk1gLiBUaG91Z2gsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGxpc3QuLi4geWVhaCwgaXQncyBqdXN0IGBJV0xXSUZJYCwgYEVGSWAsIGFuZCBgSVdMTVZNYC4gTm8gb3RoZXIgb2J2aW91cyBjb25maWdzIGFyZSBpbW1lZGlhdGVseSBhcHBhcmVudCBhcyByZWxldmFudC5cblxuTm93LCBsZXQgbWUganVzdCBjb25maXJtIHRoYXQgYElXTFdJRklgIGl0c2VsZiBkb2Vzbid0IG5lZWQgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMuIEFoLCBpdCBuZWVkcyBgUENJYCBhbmQgYE1BQzgwMjExYCwgYnV0IHN5emthbGxlciBzaG91bGQgYWxyZWFkeSBiZSBzZXQgdXAgd2l0aCB0aG9zZSwgc28gd2UncmUgZ29vZCB0aGVyZS4gVGh1cywgYElXTFdJRklgLCBgRUZJYCwgYW5kIGBJV0xNVk1gIGlzIGluZGVlZCBzdWZmaWNpZW50LlxuXG5OZXh0LCBJIG5lZWQgdG8gdmVyaWZ5IHJlYWNoYWJpbGl0eS4gQ2FuIHdlIGFjdHVhbGx5IGdldCB0byBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYD8gUmlnaHQsIGl0J3MgcmVhY2hlZCBpZiBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgIHJldHVybnMgdmFsaWQgZGF0YS4gQW5kIHRoYXQsIGluIHR1cm4sIGRlcGVuZHMgb24gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAgc3VjY2VlZGluZywgd2hpY2ggZGVwZW5kcyBvbiBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCBzdWNjZWVkaW5nLiBGaW5hbGx5LCB0aGF0IGhpbmdlcyBvbiBgZWZpLmdldF92YXJpYWJsZWAgc3VjY2VlZGluZy4gTm93LCBpZiBzeXprYWxsZXIgY2FuIG1vY2sgRUZJIHZhcmlhYmxlcyBvciB3cml0ZSB0byBlZml2YXJmcywgd2UgY2FuIGRlZmluaXRlbHkgcmVhY2ggdGhpcyBjb2RlIHBhdGguIENvbnNpZGVyaW5nIHRoaXMgd2FzIGZvdW5kIGJ5IHN5emJvdCwgaXQncyBhbG1vc3QgYSBnaXZlbiB0aGF0IGl0J3MgcmVhY2hhYmxlLlxuXG5BbHJpZ2h0LCBsZXQncyBzdW1tYXJpemU6XG5cbioqV29ydGhGdXp6aW5nOioqIFRydWVcblxuKipGb2N1c1N5bWJvbHM6KipcblxuKiAgIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgXG4qICAgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYFxuXG4qKkVuYWJsZUNvbmZpZ3M6KipcblxuKiAgIGBJV0xXSUZJYFxuKiAgIGBFRklgXG4qICAgYElXTE1WTWBcblxuKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgYGl3bHdpZmlgIGRyaXZlciB3aGVuIHBhcnNpbmcgdGhlIFBOVk0gU0tVIFRMViBmcm9tIGEgVUVGSSB2YXJpYWJsZS4gVGhlIHZ1bG5lcmFibGUgY29kZSBpcyByZWFjaGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gaWYgY2VydGFpbiBFRkkgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsIGFuZCB0aGVzZSB2YXJpYWJsZXMgYXJlIGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM5NiwiT3V0cHV0VG9rZW5zIjoxMjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMDk6MTU6MjkuMjkzMzMyMTIyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxOTUyMzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCIsXG4gICAgXCJFRklcIixcbiAgICBcIklXTE1WTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICAgIFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyIHdoZW4gcGFyc2luZyB0aGUgUE5WTSBTS1UgVExWIGZyb20gYSBVRUZJIHZhcmlhYmxlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiBpZiBzcGVjaWZpYyBFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LCB3aGljaCBjYW4gYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIkVGSVwiLFxuICAgIFwiSVdMTVZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlXCIsXG4gICAgXCJpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgaXdsd2lmaSBkcml2ZXIgd2hlbiBwYXJzaW5nIHRoZSBQTlZNIFNLVSBUTFYgZnJvbSBhIFVFRkkgdmFyaWFibGUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGlmIHNwZWNpZmljIEVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQsIHdoaWNoIGNhbiBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[1] Phase: Succeeded StartedAt: 2026-06-30 09:19:14 +0000 UTC FinishedAt: 2026-06-30 09:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 09:19:14 +0000 UTC FinishedAt: 2026-06-30 09:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2] Phase: Succeeded StartedAt: 2026-06-30 09:19:14 +0000 UTC FinishedAt: 2026-06-30 10:27:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 09:19:14 +0000 UTC FinishedAt: 2026-06-30 10:27:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 09:19:14 +0000 UTC FinishedAt: 2026-06-30 09:19:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 09:19:14 +0000 UTC FinishedAt: 2026-06-30 09:19:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-convert-artifact-2124675057/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 09:19:48 +0000 UTC FinishedAt: 2026-06-30 09:53:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 09:19:48 +0000 UTC FinishedAt: 2026-06-30 09:53:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*70e462a7-4dc2-4d20-ba42-b98f54a2bf27,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-convert-artifact-2124675057/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "41f24a25-25aa-4c64-a220-ef6c4838067d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-2869867039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 09:19:48 +0000 UTC FinishedAt: 2026-06-30 09:53:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*70e462a7-4dc2-4d20-ba42-b98f54a2bf27,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-convert-artifact-2124675057/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "41f24a25-25aa-4c64-a220-ef6c4838067d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-2869867039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 09:53:43 +0000 UTC FinishedAt: 2026-06-30 09:53:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 09:53:43 +0000 UTC FinishedAt: 2026-06-30 09:53:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 09:53:43 +0000 UTC FinishedAt: 2026-06-30 09:54:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 09:53:43 +0000 UTC FinishedAt: 2026-06-30 09:54:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-convert-artifact-3775190084/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 09:54:11 +0000 UTC FinishedAt: 2026-06-30 09:56:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 09:54:11 +0000 UTC FinishedAt: 2026-06-30 09:55:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*41f24a25-25aa-4c64-a220-ef6c4838067d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-2869867039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 09:56:08 +0000 UTC FinishedAt: 2026-06-30 09:56:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 09:56:08 +0000 UTC FinishedAt: 2026-06-30 09:56:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 09:56:08 +0000 UTC FinishedAt: 2026-06-30 10:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 09:56:08 +0000 UTC FinishedAt: 2026-06-30 10:22:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*70e462a7-4dc2-4d20-ba42-b98f54a2bf27,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-convert-artifact-3775190084/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c942318b-e823-4e0e-9c14-ab92c5fd71fa", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-1350237264/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 09:56:08 +0000 UTC FinishedAt: 2026-06-30 10:22:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*70e462a7-4dc2-4d20-ba42-b98f54a2bf27,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-convert-artifact-3775190084/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c942318b-e823-4e0e-9c14-ab92c5fd71fa", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-1350237264/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 10:22:57 +0000 UTC FinishedAt: 2026-06-30 10:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 10:22:57 +0000 UTC FinishedAt: 2026-06-30 10:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 10:22:57 +0000 UTC FinishedAt: 2026-06-30 10:25:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 10:22:57 +0000 UTC FinishedAt: 2026-06-30 10:25:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c942318b-e823-4e0e-9c14-ab92c5fd71fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-1350237264/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 10:25:10 +0000 UTC FinishedAt: 2026-06-30 10:27:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 10:25:10 +0000 UTC FinishedAt: 2026-06-30 10:27:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*41f24a25-25aa-4c64-a220-ef6c4838067d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c942318b-e823-4e0e-9c14-ab92c5fd71fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-2869867039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-1350237264/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 10:25:10 +0000 UTC FinishedAt: 2026-06-30 10:26:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 10:25:10 +0000 UTC FinishedAt: 2026-06-30 10:26:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-convert-artifact-3830245197/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 10:25:10 +0000 UTC FinishedAt: 2026-06-30 10:25:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 10:25:10 +0000 UTC FinishedAt: 2026-06-30 10:25:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 10:25:10 +0000 UTC FinishedAt: 2026-06-30 10:25:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 10:26:34 +0000 UTC FinishedAt: 2026-06-30 10:27:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkb5t8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM"],"series_id":"5b98170d-5c94-4ad2-a180-35c73ee79bd9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 10:26:34 +0000 UTC FinishedAt: 2026-06-30 10:27:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*41f24a25-25aa-4c64-a220-ef6c4838067d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c942318b-e823-4e0e-9c14-ab92c5fd71fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-2869867039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-build-action-1350237264/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkb5t8/series-workflowkb5t8-convert-artifact-3830245197/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}