Name: series-workflowvnpwp Phase: Succeeded StartedAt: 2026-06-22 07:43:59 +0000 UTC FinishedAt: 2026-06-22 09:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[0] Phase: Succeeded StartedAt: 2026-06-22 07:43:59 +0000 UTC FinishedAt: 2026-06-22 07:53:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 07:43:59 +0000 UTC FinishedAt: 2026-06-22 07:53:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "83f1454877cc292b88baf13c829c16ce6937d120", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HID_BPF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "83f1454877cc292b88baf13c829c16ce6937d120", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HID_BPF" ], "series_id": "58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "hid_bpf_get_data" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hJRF9CUEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoaWRfYnBmX2dldF9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiBgaGlkX2JwZl9nZXRfZGF0YWAgd2hpY2ggaXMgYSBCUEYga2Z1bmMgdXNlZCBieSBISUQtQlBGIHByb2dyYW1zIHRvIGFjY2VzcyBkZXZpY2UgZGF0YSBidWZmZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBzZWN1cml0eSBmaXggdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBISUQgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQxZmE5YTNlNTY0MDBkMjU0Zjg3MjZhNjI2YzVmNTBkNjg1MzMzMWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwNzo1MzowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuaW5kZXggZDAxMzA2NTgwOTFiMDIuLjA5YjQ1YzQwZDg0ZjBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuQEAgLTI5OSw3ICYjNDM7Mjk5LDggQEAgaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCwgdW5zaWduZWQgaW50IG9mZnNldCwgY29uc3Qgc2l6ZV90IHJkd3JcbiBcbiBcdGN0eF9rZXJuID0gY29udGFpbmVyX29mKGN0eCwgc3RydWN0IGhpZF9icGZfY3R4X2tlcm4sIGN0eCk7XG4gXG4tXHRpZiAocmR3cl9idWZfc2l6ZSAmIzQzOyBvZmZzZXQgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSlcbiYjNDM7XHRpZiAob2Zmc2V0IFx1MDAzZSBjdHgtXHUwMDNlYWxsb2NhdGVkX3NpemUgfHxcbiYjNDM7XHQgICAgcmR3cl9idWZfc2l6ZSBcdTAwM2UgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0KVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHJldHVybiBjdHhfa2Vybi1cdTAwM2VkYXRhICYjNDM7IG9mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcbmluZGV4IDUwZWM5ZTA0MDZhYmFmLi4zNTdjNmViNWZmNWVlMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXG5AQCAtMjQsNyAmIzQzOzI0LDcgQEAgQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzO1xuIFxuIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWdcbiBcbi1DRkxBR1MgJiM0Mzs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKVxuJiM0MztDRkxBR1MgJiM0Mzs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpXG4gQ0ZMQUdTICYjNDM7PSAtSSQoT1VUUFVUKS90b29scy9pbmNsdWRlXG4gXG4gTERMSUJTICYjNDM7PSAtbGVsZiAtbHogLWxydCAtbHB0aHJlYWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xuaW5kZXggMWU5NzlmYjM1NDJiYWIuLmI4NTEzMzkzMDhjMjE0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xuQEAgLTg2LDYgJiM0Mzs4NiwyMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdHNlbGYtXHUwMDNlc2tlbCA9IGhpZF9fb3BlbigpO1xuIFx0QVNTRVJUX09LX1BUUihzZWxmLVx1MDAzZXNrZWwpIFRFQVJET1dOX0xPRyhcJiMzNDtFcnJvciB3aGlsZSBjYWxsaW5nIGhpZF9fb3BlblwmIzM0Oyk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBEaXNhYmxlIGFsbCBzdHJ1Y3Rfb3BzIG1hcHMgYnkgZGVmYXVsdCBzbyBsaWJicGYgZG9lcyBub3QgYXV0b2xvYWRcbiYjNDM7XHQgKiBwcm9ncmFtcyByZWZlcmVuY2VkIGJ5IG1hcHMgdGhhdCBhcmUgdW5yZWxhdGVkIHRvIHRoZSBjdXJyZW50IHRlc3QuXG4mIzQzO1x0ICovXG4mIzQzO1x0YnBmX29iamVjdF9fZm9yX2VhY2hfbWFwKGl0ZXJfbWFwLCAqc2VsZi1cdTAwM2Vza2VsLVx1MDAzZXNrZWxldG9uLVx1MDAzZW9iaikge1xuJiM0MztcdFx0aWYgKGJwZl9tYXBfX3R5cGUoaXRlcl9tYXApID09IEJQRl9NQVBfVFlQRV9TVFJVQ1RfT1BTKSB7XG4mIzQzO1x0XHRcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7XG4mIzQzO1x0XHRcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcJiMzNDtjYW4gbm90IGRpc2FibGUgc3RydWN0X29wcyBtYXAgJiMzOTslcyYjMzk7XCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBwcm9nc19jb3VudDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xuIFx0XHRzdHJ1Y3QgYnBmX21hcCAqbWFwO1xuQEAgLTEwMiw2ICYjNDM7MTE2LDEwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuIFx0XHRBU1NFUlRfT0tfUFRSKG1hcCkgVEhfTE9HKFwmIzM0O2NhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJiMzOTslcyYjMzk7XCYjMzQ7LFxuIFx0XHRcdFx0XHQgIHByb2dyYW1zW2ldLm5hbWUgJiM0MzsgNCk7XG4gXG4mIzQzO1x0XHRlcnIgPSBicGZfbWFwX19zZXRfYXV0b2NyZWF0ZShtYXAsIHRydWUpO1xuJiM0MztcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwmIzM0O2NhbiBub3QgZW5hYmxlIHN0cnVjdF9vcHMgbWFwICYjMzk7JXMmIzM5O1wmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgICBwcm9ncmFtc1tpXS5uYW1lICYjNDM7IDQpO1xuJiM0MztcbiBcdFx0LyogaGlkX2lkIGlzIHRoZSBmaXJzdCBmaWVsZCBvZiBzdHJ1Y3QgaGlkX2JwZl9vcHMgKi9cbiBcdFx0b3BzX2hpZF9pZCA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBOVUxMKTtcbiBcdFx0QVNTRVJUX09LX1BUUihvcHNfaGlkX2lkKSBUSF9MT0coXCYjMzQ7dW5hYmxlIHRvIHJldHJpZXZlIHN0cnVjdF9vcHMgZGF0YVwmIzM0Oyk7XG5AQCAtMTA5LDEzICYjNDM7MTI3LDYgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4gXHRcdCpvcHNfaGlkX2lkID0gc2VsZi1cdTAwM2VoaWQuaGlkX2lkO1xuIFx0fVxuIFxuLVx0Lyogd2UgZGlzYWJsZSB0aGUgYXV0by1hdHRhY2ggZmVhdHVyZSBvZiBhbGwgbWFwcyBiZWNhdXNlIHdlXG4tXHQgKiBvbmx5IHdhbnQgdGhlIHRlc3RlZCBvbmUgdG8gYmUgbWFudWFsbHkgYXR0YWNoZWQgaW4gdGhlIG5leHRcbi1cdCAqIGNhbGwgdG8gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoKVxuLVx0ICovXG4tXHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVx1MDAzZXNrZWwtXHUwMDNlc2tlbGV0b24tXHUwMDNlb2JqKVxuLVx0XHRicGZfbWFwX19zZXRfYXV0b2F0dGFjaChpdGVyX21hcCwgZmFsc2UpO1xuLVxuIFx0ZXJyID0gaGlkX19sb2FkKHNlbGYtXHUwMDNlc2tlbCk7XG4gXHRBU1NFUlRfT0soZXJyKSBUSF9MT0coXCYjMzQ7aGlkX3NrZWxfbG9hZCBmYWlsZWQ6ICVkXCYjMzQ7LCBlcnIpO1xuIFxuQEAgLTg4Nyw2ICYjNDM7ODk4LDE3IEBAIFRFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwKVxuIFx0QVNTRVJUX0VRKHJwdF9kZXNjLnZhbHVlWzRdLCAweDQyKTtcbiB9XG4gXG4mIzQzO1RFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93KVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9nc1tdID0ge1xuJiM0MztcdFx0eyAubmFtZSA9IFwmIzM0O2hpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvd1wmIzM0OyB9LFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdExPQURfUFJPR1JBTVMocHJvZ3MpO1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfRVEoc2VsZi1cdTAwM2Vza2VsLVx1MDAzZWJzcy1cdTAwM2VnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBsaWJicGZfcHJpbnRfZm4oZW51bSBsaWJicGZfcHJpbnRfbGV2ZWwgbGV2ZWwsXG4gXHRcdFx0ICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuaW5kZXggNWVjYzg0NWVmNzkyMTYuLmIyMWZiYjEzYzkyNmY4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbkBAIC0xMyw2ICYjNDM7MTMsNyBAQCBzdHJ1Y3QgYXR0YWNoX3Byb2dfYXJncyB7XG4gXG4gX191NjQgY2FsbGJhY2tfY2hlY2sgPSA1MjtcbiBfX3U2NCBjYWxsYmFjazJfY2hlY2sgPSA1MjtcbiYjNDM7X191NjQgZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2s7XG4gXG4gU0VDKFwmIzM0Oz9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcJiMzNDspXG4gaW50IEJQRl9QUk9HKGhpZF9maXJzdF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxuQEAgLTI0MCw2ICYjNDM7MjQxLDIwIEBAIHN0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cCA9IHtcbiBcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cCxcbiB9O1xuIFxuJiM0MztTRUMoXCYjMzQ7P3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eClcbiYjNDM7e1xuJiM0MztcdGlmICghaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAyIC8qIG9mZnNldCAqLywgfjBVTEwgLyogc2l6ZSAqLykpXG4mIzQzO1x0XHRnZXRfZGF0YV9vdmVyZmxvd19jaGVjayA9IDE7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7LnN0cnVjdF9vcHMubGlua1wmIzM0OylcbiYjNDM7c3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93ID0ge1xuJiM0MztcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyxcbiYjNDM7fTtcbiYjNDM7XG4gU0VDKFwmIzM0Oz9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcJiMzNDspXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SElEX0JQRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpZF9icGZfZ2V0X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIGBoaWRfYnBmX2dldF9kYXRhYCB3aGljaCBpcyBhIEJQRiBrZnVuYyB1c2VkIGJ5IEhJRC1CUEYgcHJvZ3JhbXMgdG8gYWNjZXNzIGRldmljZSBkYXRhIGJ1ZmZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIHNlY3VyaXR5IGZpeCB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIEhJRCBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MWZhOWEzZTU2NDAwZDI1NGY4NzI2YTYyNmM1ZjUwZDY4NTMzMzFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMDc6NTM6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYwppbmRleCBkMDEzMDY1ODA5MWIwMi4uMDliNDVjNDBkODRmMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYwpAQCAtMjk5LDcgJiM0MzsyOTksOCBAQCBoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cgogCiAJY3R4X2tlcm4gPSBjb250YWluZXJfb2YoY3R4LCBzdHJ1Y3QgaGlkX2JwZl9jdHhfa2VybiwgY3R4KTsKIAotCWlmIChyZHdyX2J1Zl9zaXplICYjNDM7IG9mZnNldCAmZ3Q7IGN0eC0mZ3Q7YWxsb2NhdGVkX3NpemUpCiYjNDM7CWlmIChvZmZzZXQgJmd0OyBjdHgtJmd0O2FsbG9jYXRlZF9zaXplIHx8CiYjNDM7CSAgICByZHdyX2J1Zl9zaXplICZndDsgY3R4LSZndDthbGxvY2F0ZWRfc2l6ZSAtIG9mZnNldCkKIAkJcmV0dXJuIE5VTEw7CiAKIAlyZXR1cm4gY3R4X2tlcm4tJmd0O2RhdGEgJiM0Mzsgb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlCmluZGV4IDUwZWM5ZTA0MDZhYmFmLi4zNTdjNmViNWZmNWVlMyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZQpAQCAtMjQsNyAmIzQzOzI0LDcgQEAgQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzOwogCiBIT1NUUEtHX0NPTkZJRyA6PSBwa2ctY29uZmlnCiAKLUNGTEFHUyAmIzQzOz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpCiYjNDM7Q0ZMQUdTICYjNDM7PSAtZyAtTzAgLXJkeW5hbWljIC1XYWxsIC1XZXJyb3IgLUkkKE9VVFBVVCkgJChLSERSX0lOQ0xVREVTKQogQ0ZMQUdTICYjNDM7PSAtSSQoT1VUUFVUKS90b29scy9pbmNsdWRlCiAKIExETElCUyAmIzQzOz0gLWxlbGYgLWx6IC1scnQgLWxwdGhyZWFkCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYwppbmRleCAxZTk3OWZiMzU0MmJhYi4uYjg1MTMzOTMwOGMyMTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYwpAQCAtODYsNiAmIzQzOzg2LDIwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAogCXNlbGYtJmd0O3NrZWwgPSBoaWRfX29wZW4oKTsKIAlBU1NFUlRfT0tfUFRSKHNlbGYtJmd0O3NrZWwpIFRFQVJET1dOX0xPRygmIzM0O0Vycm9yIHdoaWxlIGNhbGxpbmcgaGlkX19vcGVuJiMzNDspOwogCiYjNDM7CS8qCiYjNDM7CSAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZAomIzQzOwkgKiBwcm9ncmFtcyByZWZlcmVuY2VkIGJ5IG1hcHMgdGhhdCBhcmUgdW5yZWxhdGVkIHRvIHRoZSBjdXJyZW50IHRlc3QuCiYjNDM7CSAqLwomIzQzOwlicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLSZndDtza2VsLSZndDtza2VsZXRvbi0mZ3Q7b2JqKSB7CiYjNDM7CQlpZiAoYnBmX21hcF9fdHlwZShpdGVyX21hcCkgPT0gQlBGX01BUF9UWVBFX1NUUlVDVF9PUFMpIHsKJiM0MzsJCQllcnIgPSBicGZfbWFwX19zZXRfYXV0b2NyZWF0ZShpdGVyX21hcCwgZmFsc2UpOwomIzQzOwkJCUFTU0VSVF9PSyhlcnIpIFRIX0xPRygmIzM0O2NhbiBub3QgZGlzYWJsZSBzdHJ1Y3Rfb3BzIG1hcCAmIzM5OyVzJiMzOTsmIzM0OywKJiM0MzsJCQkJCSAgICAgIGJwZl9tYXBfX25hbWUoaXRlcl9tYXApKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7CiYjNDM7CX0KJiM0MzsKIAlmb3IgKGludCBpID0gMDsgaSAmbHQ7IHByb2dzX2NvdW50OyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7CiAJCXN0cnVjdCBicGZfbWFwICptYXA7CkBAIC0xMDIsNiAmIzQzOzExNiwxMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSwKIAkJQVNTRVJUX09LX1BUUihtYXApIFRIX0xPRygmIzM0O2NhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJiMzOTslcyYjMzk7JiMzNDssCiAJCQkJCSAgcHJvZ3JhbXNbaV0ubmFtZSAmIzQzOyA0KTsKIAomIzQzOwkJZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUobWFwLCB0cnVlKTsKJiM0MzsJCUFTU0VSVF9PSyhlcnIpIFRIX0xPRygmIzM0O2NhbiBub3QgZW5hYmxlIHN0cnVjdF9vcHMgbWFwICYjMzk7JXMmIzM5OyYjMzQ7LAomIzQzOwkJCQkgICAgICBwcm9ncmFtc1tpXS5uYW1lICYjNDM7IDQpOwomIzQzOwogCQkvKiBoaWRfaWQgaXMgdGhlIGZpcnN0IGZpZWxkIG9mIHN0cnVjdCBoaWRfYnBmX29wcyAqLwogCQlvcHNfaGlkX2lkID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIE5VTEwpOwogCQlBU1NFUlRfT0tfUFRSKG9wc19oaWRfaWQpIFRIX0xPRygmIzM0O3VuYWJsZSB0byByZXRyaWV2ZSBzdHJ1Y3Rfb3BzIGRhdGEmIzM0Oyk7CkBAIC0xMDksMTMgJiM0MzsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSwKIAkJKm9wc19oaWRfaWQgPSBzZWxmLSZndDtoaWQuaGlkX2lkOwogCX0KIAotCS8qIHdlIGRpc2FibGUgdGhlIGF1dG8tYXR0YWNoIGZlYXR1cmUgb2YgYWxsIG1hcHMgYmVjYXVzZSB3ZQotCSAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dAotCSAqIGNhbGwgdG8gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoKQotCSAqLwotCWJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtJmd0O3NrZWwtJmd0O3NrZWxldG9uLSZndDtvYmopCi0JCWJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7Ci0KIAllcnIgPSBoaWRfX2xvYWQoc2VsZi0mZ3Q7c2tlbCk7CiAJQVNTRVJUX09LKGVycikgVEhfTE9HKCYjMzQ7aGlkX3NrZWxfbG9hZCBmYWlsZWQ6ICVkJiMzNDssIGVycik7CiAKQEAgLTg4Nyw2ICYjNDM7ODk4LDE3IEBAIFRFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwKQogCUFTU0VSVF9FUShycHRfZGVzYy52YWx1ZVs0XSwgMHg0Mik7CiB9CiAKJiM0MztURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdykKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3NbXSA9IHsKJiM0MzsJCXsgLm5hbWUgPSAmIzM0O2hpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyYjMzQ7IH0sCiYjNDM7CX07CiYjNDM7CiYjNDM7CUxPQURfUFJPR1JBTVMocHJvZ3MpOwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2VsZi0mZ3Q7c2tlbC0mZ3Q7YnNzLSZndDtnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBsaWJicGZfcHJpbnRfZm4oZW51bSBsaWJicGZfcHJpbnRfbGV2ZWwgbGV2ZWwsCiAJCQkgICBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYwppbmRleCA1ZWNjODQ1ZWY3OTIxNi4uYjIxZmJiMTNjOTI2ZjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMKQEAgLTEzLDYgJiM0MzsxMyw3IEBAIHN0cnVjdCBhdHRhY2hfcHJvZ19hcmdzIHsKIAogX191NjQgY2FsbGJhY2tfY2hlY2sgPSA1MjsKIF9fdTY0IGNhbGxiYWNrMl9jaGVjayA9IDUyOwomIzQzO19fdTY0IGdldF9kYXRhX292ZXJmbG93X2NoZWNrOwogCiBTRUMoJiMzNDs/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50JiMzNDspCiBpbnQgQlBGX1BST0coaGlkX2ZpcnN0X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpCkBAIC0yNDAsNiAmIzQzOzI0MSwyMCBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXAgPSB7CiAJLmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwLAogfTsKIAomIzQzO1NFQygmIzM0Oz9zdHJ1Y3Rfb3BzLnMvaGlkX3JkZXNjX2ZpeHVwJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KQomIzQzO3sKJiM0MzsJaWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSkKJiM0MzsJCWdldF9kYXRhX292ZXJmbG93X2NoZWNrID0gMTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmsmIzM0OykKJiM0MztzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7CiYjNDM7CS5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywKJiM0Mzt9OwomIzQzOwogU0VDKCYjMzQ7P3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudCYjMzQ7KQogaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzMgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgSElEIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBib3RoIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jYCBhbmQgYWRkcyBhIHRlc3QgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoaXMgcG90ZW50aWFsbHkgY3J1Y2lhbCBmaXggaW4gYGhpZF9icGZfZGlzcGF0Y2guY2AuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIHZ1bG5lcmFiaWxpdHk6IGFuIGludGVnZXIgb3ZlcmZsb3cgY291bGQgb2NjdXIgd2hlbiBjYWxjdWxhdGluZyBgcmR3cl9idWZfc2l6ZSAmIzQzOyBvZmZzZXRgLiBUaGUgc3VtIGNvdWxkIHdyYXAgYXJvdW5kLCByZXN1bHRpbmcgaW4gYW4gaW5jb3JyZWN0IGNvbXBhcmlzb24gd2l0aCBgY3R4LSZndDthbGxvY2F0ZWRfc2l6ZWAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHJpZ2h0PyBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgY2hhbmdpbmcgdGhlIGNoZWNrIHRvIHR3byBzZXBhcmF0ZSBjaGVja3MuIE9uZSBlbnN1cmVzIHRoYXQgYG9mZnNldGAgaXRzZWxmIGlzbiYjMzk7dCBncmVhdGVyIHRoYW4gYGN0eC0mZ3Q7YWxsb2NhdGVkX3NpemVgLCBhbmQgdGhlIG90aGVyIG1ha2VzIHN1cmUgYHJkd3JfYnVmX3NpemVgIGlzbiYjMzk7dCBncmVhdGVyIHRoYW4gdGhlIHJlbWFpbmluZyBhdmFpbGFibGUgc2l6ZS4gVGhpcyBpcyBhIHNvbGlkIGFwcHJvYWNoIHRvIHByZXZlbnQgdGhhdCBpbnRlZ2VyIG92ZXJmbG93LgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHJlYWNoYWJsZT8gSXMgaXQgZnVuY3Rpb25hbD8gV2hlcmUgaXMgdGhpcyBjb2RlIGFjdHVhbGx5IHVzZWQ/IFRoZSB2dWxuZXJhYmxlIGxvZ2ljIHJlc2lkZXMgaW4gYGhpZF9icGZfZ2V0X2RhdGFgLiBTbywgbGV0JiMzOTtzIGZpcmUgdXAgYSBncmVwIHNlYXJjaCBmb3IgYGhpZF9icGZfZ2V0X2RhdGFgIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgc2l0ZXMgYW5kIGRhdGEgZmxvdy4gS25vd2luZyB3aGVyZSB0aGlzIGlzIGludm9rZWQgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgaW1wYWN0IGFuZCBob3cgZWFzeSBpdCBpcyB0byB0cmlnZ2VyLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byByZWFsbHkgYW5hbHl6ZSB0aGUgcGF0Y2gmIzM5O3MgZWZmaWNhY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdD0xOTU9QXZhaWxhYmxlIEFQSSB0aGF0IGNhbiBiZSB1c2VkIGluIGFsbCBISUQtQlBGIHN0cnVjdF9vcHMgcHJvZ3JhbXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMTk4LS4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdDoxOTk6ICAgOmlkZW50aWZpZXJzOiBoaWRfYnBmX2dldF9kYXRhXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0yMDAtXG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q9MjEzPVRoZSBgYHN0cnVjdCBoaWRfYnBmX2N0eGBgIGRvZXNuJiMzOTt0IGV4cG9ydCB0aGUgYGBkYXRhYGAgZmllbGRzIGRpcmVjdGx5IGFuZCB0byBhY2Nlc3NcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjIxNDppdCwgYSBicGYgcHJvZ3JhbSBuZWVkcyB0byBmaXJzdCBjYWxsIDpjOmZ1bmM6YGhpZF9icGZfZ2V0X2RhdGFgLlxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMjE1LVxuLS1cbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0PTIxOT1UaGlzIGFsbG93cyB0aGUgZm9sbG93aW5nOlxuLS1cbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTIyNi1cbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjIyNzogICAgIF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGN0eCwgMCAvKiBvZmZzZXQgKi8sIDI1NiAvKiBzaXplICovKTtcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTIyOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0yMzctXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdDoyMzg6ICAgICAgX191MTYgKnggPSBoaWRfYnBmX2dldF9kYXRhKGN0eCwgb2Zmc2V0LCBzaXplb2YoKngpKTtcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTIzOS1cbi0tXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdD0yODc9T25jZSB0aGUgY29udGV4dCBpcyByZXRyaWV2ZWQsIG9uZSBjYW4gYWxzbyByZXF1ZXN0IGEgcG9pbnRlciB0byBrZXJuZWwgbWVtb3J5IHdpdGhcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjI4ODpoaWRfYnBmX2dldF9kYXRhKCkuIFRoaXMgbWVtb3J5IGlzIGJpZyBlbm91Z2ggdG8gc3VwcG9ydCBhbGwgaW5wdXQvb3V0cHV0L2ZlYXR1cmVcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTI4OS1yZXBvcnRzIG9mIHRoZSBnaXZlbiBkZXZpY2UuXG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q9MzcwPUZvciB0aGF0LCB3ZSBjYW4gY3JlYXRlIGEgYmFzaWMgc2tlbGV0b24gZm9yIG91ciBCUEYgcHJvZ3JhbTo6XG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzc5LSAgLyogSElELUJQRiBrZnVuYyBBUEkgZGVmaW5pdGlvbnMgKi9cbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjM4MDogIGV4dGVybiBfX3U4ICpoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzgxLVx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzkzLSAge1xuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6Mzk0Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDE5MiAvKiBzaXplICovKTtcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTM5NS1cdF9fdTggKmJ1Zjtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jPTI4ND1fX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XG4tLVxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYy0yODYtLyoqXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jOjI4NzogKiBoaWRfYnBmX2dldF9kYXRhIC0gR2V0IHRoZSBrZXJuZWwgbWVtb3J5IHBvaW50ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0IEBjdHhcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMtMjg4LSAqXG4tLVxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYz0yOTU9X19icGZfa2Z1bmMgX191OCAqXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jOjI5NjpoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cl9idWZfc2l6ZSlcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMtMjk3LXtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jPTU3ND1CVEZfS0ZVTkNTX1NUQVJUKGhpZF9icGZfa2Z1bmNfaWRzKVxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYzo1NzU6QlRGX0lEX0ZMQUdTKGZ1bmMsIGhpZF9icGZfZ2V0X2RhdGEsIEtGX1JFVF9OVUxMKVxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYy01NzYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGhpZF9icGZfYWxsb2NhdGVfY29udGV4dCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQkxFKVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM9MTM3PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjX3JhcHRvcl9tYWNoXzIsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmMtMTM4LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM6MTM5Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYy0xNDAtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYz0xNTY9aW50IEJQRl9QUk9HKHJhcHRvcl9tYWNoXzJfZml4X2hhdF9zd2l0Y2gsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmMtMTU3LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM6MTU4Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDY0IC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYy0xNTktXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0hQX19FbGl0ZS1QcmVzZW50ZXIuYnBmLmM9MzQ9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jLTM1LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jOjM2Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSFBfX0VsaXRlLVByZXNlbnRlci5icGYuYy0zNy1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYz00NDI9aW50IEJQRl9QUk9HKGRpYWxfMl9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jLTQ0My17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYzo0NDQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYy00NDUtXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cdTAwM2VzaXplO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jPTQ4OD1pbnQgQlBGX1BST0coZGlhbF8yX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jLTQ4OS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYzo0OTA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYy00OTEtXHRzdGF0aWMgX191OCBidXR0b247XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmM9MzgyPWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYy0zODMte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmM6Mzg0Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmMtMzg1LVx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhjdHgtXHUwMDNlc2l6ZTtcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYz00Mjc9aW50IEJQRl9QUk9HKGluc3Bpcm95XzJfZml4X2V2ZW50cywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmMtNDI4LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jOjQyOTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jLTQzMC1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYz0zODI9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1TLmJwZi5jLTM4My17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYzozODQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYy0zODUtXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cdTAwM2VzaXplO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1TLmJwZi5jPTQyOD1pbnQgQlBGX1BST0coaW5zcGlyb3lfMl9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYy00Mjkte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmM6NDMwOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDEwIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmMtNDMxLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzLVByby0xOS5icGYuYz0yNTg9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfaHVpb25fa2FtdmFzX3Byb18xOSwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jLTI1OS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmM6MjYwOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jLTI2MS1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmM9Mjg3PWludCBCUEZfUFJPRyhrYW12YXNfcHJvXzE5X2ZpeF8zcmRfYnV0dG9uLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmMtMjg4LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzLVByby0xOS5icGYuYzoyODk6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmMtMjkwLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jPTEyNDA9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfaHVpb25fa2FtdmFzMTNfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmMtMTI0MS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczEzR2VuMy5icGYuYzoxMjQyOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmMtMTI0My1cdF9fczMyIHJkZXNjX3NpemUgPSBoaWRfY3R4LVx1MDAzZXNpemU7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmM9MTI4ND1pbnQgQlBGX1BST0coaGlkX2ZpeF9ldmVudF9odWlvbl9rYW12YXMxM19nZW4zLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczEzR2VuMy5icGYuYy0xMjg1LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jOjEyODY6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgVkVORE9SX1JFUE9SVF9MRU5HVEggLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczEzR2VuMy5icGYuYy0xMjg3LVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jPTU1NT1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY19odWlvbl9rYW12YXMxNl9nZW4zLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYy01NTYte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmM6NTU3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmMtNTU4LVx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhpZF9jdHgtXHUwMDNlc2l6ZTtcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYz01OTk9aW50IEJQRl9QUk9HKGhpZF9maXhfZXZlbnRfaHVpb25fa2FtdmFzMTZfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmMtNjAwLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jOjYwMTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCBWRU5ET1JfUkVQT1JUX0xFTkdUSCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jLTYwMi1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jPTMzOD1pbnQgQlBGX1BST0coazIwX2J0X2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYy0zMzkte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYzozNDA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jLTM0MS1cdF9fczMyIHJkZXNjX3NpemUgPSBoY3R4LVx1MDAzZXNpemU7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYz0zNjA9aW50IEJQRl9QUk9HKGsyMF9idF9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jLTM2MS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jOjM2MjpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMiAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC1CbHVldG9vdGguYnBmLmMtMzYzLVx0c3RydWN0IHBhZF9yZXBvcnQge1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYz0zNDU9aW50IEJQRl9QUk9HKGsyMF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYy0zNDYte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLmJwZi5jOjM0NzpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYy0zNDgtXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cdTAwM2VzaXplO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYz0zODk9aW50IEJQRl9QUk9HKGsyMF9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzkwLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYzozOTE6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzkyLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jPTI1PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0lPR0VBUl9fS2FsaWJlci1NTU9tZW50dW0uYnBmLmMtMjctXHRjb25zdCB1OCBvZmZzZXRzW10gPSB7ODQsIDExMiwgMTQwfTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jOjI4Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSU9HRUFSX19LYWxpYmVyLU1NT21lbnR1bS5icGYuYy0yOS1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTG9naXRlY2hfX1NwYWNlTmF2aWdhdG9yLmJwZi5jPTI5PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTG9naXRlY2hfX1NwYWNlTmF2aWdhdG9yLmJwZi5jLTMwLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9Mb2dpdGVjaF9fU3BhY2VOYXZpZ2F0b3IuYnBmLmM6MzE6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9Mb2dpdGVjaF9fU3BhY2VOYXZpZ2F0b3IuYnBmLmMtMzItXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pY3Jvc29mdF9fWGJveC1FbGl0ZS0yLmJwZi5jPTk2PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTWljcm9zb2Z0X19YYm94LUVsaXRlLTIuYnBmLmMtOTcte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pY3Jvc29mdF9fWGJveC1FbGl0ZS0yLmJwZi5jOjk4Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTWljcm9zb2Z0X19YYm94LUVsaXRlLTIuYnBmLmMtOTktXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pc3RlbF9fTUQ3NzAuYnBmLmM9MTI3PWludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXBfbWlzdGVsX21kNzcwLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTWlzdGVsX19NRDc3MC5icGYuYy0xMjgte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pc3RlbF9fTUQ3NzAuYnBmLmM6MTI5Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCwgSElEX01BWF9ERVNDUklQVE9SX1NJWkUpO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pc3RlbF9fTUQ3NzAuYnBmLmMtMTMwLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9SYXBvb19fTTUwLVBsdXMtU2lsZW50LmJwZi5jPTEyMT1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX3JhcG9vX201MCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1JhcG9vX19NNTAtUGx1cy1TaWxlbnQuYnBmLmMtMTIyLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9SYXBvb19fTTUwLVBsdXMtU2lsZW50LmJwZi5jOjEyMzpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9SYXBvb19fTTUwLVBsdXMtU2lsZW50LmJwZi5jLTEyNC1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVFVYRURPX19TaXJpdXMtMTYtR2VuMS1hbmQtR2VuMi5icGYuYz0xNT1pbnQgQlBGX1BST0coaWdub3JlX2tleV9maXhfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eClcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVFVYRURPX19TaXJpdXMtMTYtR2VuMS1hbmQtR2VuMi5icGYuYy0yNC1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UVVhFRE9fX1Npcml1cy0xNi1HZW4xLWFuZC1HZW4yLmJwZi5jOjI1Olx0ZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCwgZXhwZWN0ZWRfbGVuZ3RoKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UVVhFRE9fX1Npcml1cy0xNi1HZW4xLWFuZC1HZW4yLmJwZi5jLTI2LVx0aWYgKCFkYXRhIHx8IGRhdGFbMF0gIT0gZXhwZWN0ZWRfcmVwb3J0X2lkKVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UaHJ1c3RtYXN0ZXJfX1RDQS1Zb2tlLUJvZWluZy5icGYuYz0xMDA9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfdGNhX3lva2UsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVGhydXN0bWFzdGVyX19UQ0EtWW9rZS1Cb2VpbmcuYnBmLmMtMTA2LVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RocnVzdG1hc3Rlcl9fVENBLVlva2UtQm9laW5nLmJwZi5jOjEwNzpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UaHJ1c3RtYXN0ZXJfX1RDQS1Zb2tlLUJvZWluZy5icGYuYy0xMDgtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RydXN0X19QaGlsaXBzLVNQSzYzMjcuYnBmLmM9MTk9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jLTIwLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jOjIxOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCwgNDA5Nik7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVHJ1c3RfX1BoaWxpcHMtU1BLNjMyNy5icGYuYy0yMi1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV0FMVE9QX19CYXR0ZXJ5bGVzcy1UYWJsZXQuYnBmLmM9MjMxPWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV0FMVE9QX19CYXR0ZXJ5bGVzcy1UYWJsZXQuYnBmLmMtMjMyLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYzoyMzM6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYy0yMzQtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jPTI0ND1pbnQgQlBGX1BST0cod2FsdG9wX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYy0yNDUte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jOjI0NjpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYy0yNDctXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dhY29tX19BcnRQZW4uYnBmLmM9MTA1PWludCBCUEZfUFJPRyhhcnRwZW5fcHJlc3N1cmVfaW50ZXJwb2xhdGUsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XYWNvbV9fQXJ0UGVuLmJwZi5jLTEwNi17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV2Fjb21fX0FydFBlbi5icGYuYzoxMDc6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgUEVOX1JFUE9SVF9MRU4gLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV2Fjb21fX0FydFBlbi5icGYuYy0xMDgtXHRfX3UxNiAqcHJlc3N1cmUsICp0b29sX3R5cGU7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYz0yMTg9aW50IEJQRl9QUk9HKGFjazA1X2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYy0yMTkte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYzoyMjA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FDSzA1LmJwZi5jLTIyMS1cdF9fczMyIHJkZXNjX3NpemUgPSBoY3R4LVx1MDAzZXNpemU7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYz0yNjU9aW50IEJQRl9QUk9HKGFjazA1X2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmMtMjY2LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmM6MjY3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIFBBRF9SRVBPUlRfTEVOR1RIKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmMtMjY4LVx0aW50IHJldCA9IDA7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYz05Mz1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY194cHBlbl9hcnRpc3QyNCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYy05NC17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jOjk1Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jLTk2LVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0MjQuYnBmLmM9MTU0PWludCBCUEZfUFJPRyh4cHBlbl8yNF9maXhfZXJhc2VyLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jLTE1NS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jOjE1NjpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0MjQuYnBmLmMtMTU3LVx0X191OCBjdXJyZW50X3N0YXRlLCBjaGFuZ2VkX3N0YXRlO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jPTg4PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjX3hwcGVuX2FydGlzdHBybzE2Z2VuMiwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmMtODkte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmM6OTA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTkxLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jPTExNj1zdGF0aWMgaW50IHhwcGVuXzE2X2ZpeF9lcmFzZXIoc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmMtMTE3LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jOjExODpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTExOS1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYz0yMzg9c3RhdGljIGludCB4cHBlbl8xNl9maXhfYW5nbGVfb2Zmc2V0KHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTIzOS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYzoyNDA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYy0yNDEtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYz0yMjQ9aW50IEJQRl9QUk9HKHhwcGVuX2RlY28wMXYzX3JkZXNjX2ZpeHVwLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jLTIyNS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jOjIyNjpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmMtMjI3LVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmM9MjU0PWludCBCUEZfUFJPRyh4cHBlbl9kZWNvMDF2M19kZXZpY2VfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jLTI1Ni1cdHN0YXRpYyBjb25zdCBfX3U4IHBhZF9idXR0b25zW10gPSB7IDB4MDUsIDB4MDgsIDB4MDAsIDB4MmMsIDB4MTYsIDB4MWQsIDB4NTcsIDB4NTYgfTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmM6MjU3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIFBBRF9SRVBPUlRfTEVOR1RIIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYy0yNTgtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDIuYnBmLmM9MjgxPWludCBCUEZfUFJPRyh4cHBlbl9kZWNvMDJfcmRlc2NfZml4dXAsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jLTI4Mi17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYzoyODM6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYy0yODQtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDIuYnBmLmM9Mjk3PWludCBCUEZfUFJPRyh4cHBlbl9kZWNvMDJfZGV2aWNlX2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYy0yOTgte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDIuYnBmLmM6Mjk5Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCwgUkVQT1JUX1NJWkVfUEFEKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jLTMwMC1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY29NaW5pNC5icGYuYz0xNTM9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF94cHBlbl9kZWNvX21pbmlfNCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvTWluaTQuYnBmLmMtMTU0LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jOjE1NTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE1Ni1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY29NaW5pNC5icGYuYz0xNzI9aW50IEJQRl9QUk9HKGhpZF9kZXZpY2VfZXZlbnRfeHBwZW5fZGVjb19taW5pXzQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE3My17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY29NaW5pNC5icGYuYzoxNzQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgOCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE3NS1cdF9fdTggYnV0dG9uX21hc2sgPSAwO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0yMi1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaDoyMzpleHRlcm4gX191OCAqaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0yNC1cdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuLS1cbmluY2x1ZGUvbGludXgvaGlkX2JwZi5oPTExPXN0cnVjdCBoaWRfZGV2aWNlO1xuLS1cbmluY2x1ZGUvbGludXgvaGlkX2JwZi5oLTIzLSAqIGBgZGF0YWBgIGlzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdGhlIGNvbnRleHQuIFdlIG5lZWQgdG8gaXNzdWVcbmluY2x1ZGUvbGludXgvaGlkX2JwZi5oOjI0OiAqIGEgY2FsbCB0byBoaWRfYnBmX2dldF9kYXRhKCkgaW4gb3JkZXIgdG8gZ2V0IGEgcG9pbnRlciB0byB0aGF0IGZpZWxkLlxuaW5jbHVkZS9saW51eC9oaWRfYnBmLmgtMjUtICpcbi0tXG5zYW1wbGVzL2hpZC9oaWRfYnBmX2hlbHBlcnMuaC04LS8qIGZvbGxvd2luZyBhcmUga2Z1bmNzIGV4cG9ydGVkIGJ5IEhJRCBmb3IgSElELUJQRiAqL1xuc2FtcGxlcy9oaWQvaGlkX2JwZl9oZWxwZXJzLmg6OTpleHRlcm4gX191OCAqaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCxcbnNhbXBsZXMvaGlkL2hpZF9icGZfaGVscGVycy5oLTEwLVx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXG4tLVxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jPTg9c3RhdGljIGludCBoaWRfeV9ldmVudChzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG4tLVxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTEwLVx0czE2IHk7XG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM6MTE6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgOSAvKiBzaXplICovKTtcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy0xMi1cbi0tXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM9NTM9c3RhdGljIGludCBoaWRfeF9ldmVudChzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG4tLVxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTU1LVx0czE2IHg7XG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM6NTY6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgOSAvKiBzaXplICovKTtcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy01Ny1cbi0tXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM9ODM9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTg0LXtcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYzo4NTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTg2LVxuLS1cbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM9MTQ9aW50IEJQRl9QUk9HKGhpZF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuc2FtcGxlcy9oaWQvaGlkX3N1cmZhY2VfZGlhbC5icGYuYy0xNS17XG5zYW1wbGVzL2hpZC9oaWRfc3VyZmFjZV9kaWFsLmJwZi5jOjE2Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XG5zYW1wbGVzL2hpZC9oaWRfc3VyZmFjZV9kaWFsLmJwZi5jLTE3LVxuLS1cbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM9MTA1PWludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXAsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmMtMTA2LXtcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM6MTA3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5zYW1wbGVzL2hpZC9oaWRfc3VyZmFjZV9kaWFsLmJwZi5jLTEwOC1cdF9fdTE2ICpyZXMsICpwaHlzO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0xOT1pbnQgQlBGX1BST0coaGlkX2ZpcnN0X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjAte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjIxOlx0X191OCAqcndfZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjItXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTM5PWludCBfX2hpZF9zdWJwcm9nX2ZpcnN0X2V2ZW50KHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00MC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NDE6XHRfX3U4ICpyd19kYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgMyAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00Mi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9NjQ9aW50IEJQRl9QUk9HKGhpZF9zZWNvbmRfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy02NS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NjY6XHRfX3U4ICpyd19kYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgNCAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy02Ny1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9ODI9aW50IEJQRl9QUk9HKGhpZF9jaGFuZ2VfcmVwb3J0X2lkLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtODMte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjg0Olx0X191OCAqcndfZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtODUtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTIyMT1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjIyLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyMjM6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yMjQtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTI0NT1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjQ2LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyNDc6XHRpZiAoIWhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMiAvKiBvZmZzZXQgKi8sIH4wVUxMIC8qIHNpemUgKi8pKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTI0OC1cdFx0Z2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0yNTk9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yNjAte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjI2MTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCA0IC8qIHNpemUgKi8pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTI2Mi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9MjgyPWludCBCUEZfUFJPRyhoaWRfdGVzdF9pbnNlcnQyLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjgzLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyODQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgNCAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yODUtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTMwND1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0Mywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTMwNS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6MzA2Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDQgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMzA3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0zNDc9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2hpZHJhd19yYXdfcmVxdWVzdCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCB1bnNpZ25lZCBjaGFyIHJlcG9ydG51bSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMzQ5LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzozNTA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMyAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0zNTEtXHRpbnQgcmV0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0zNzg9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luZmluaXRlX2xvb3BfcmF3X3JlcXVlc3QsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eCwgdW5zaWduZWQgY2hhciByZXBvcnRudW0sXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTM4MC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6MzgxOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMzgyLVx0aW50IHJldDtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9NDE3PWludCBCUEZfUFJPRyhoaWRfdGVzdF9oaWRyYXdfb3V0cHV0X3JlcG9ydCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCBfX3U2NCBzb3VyY2UpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNDE4LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo0MTk6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMyAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00MjAtXHRpbnQgcmV0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz00Mzg9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luZmluaXRlX2xvb3Bfb3V0cHV0X3JlcG9ydCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCBfX3U2NCBzb3VyY2UpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNDM5LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo0NDA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMyAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00NDEtXHRpbnQgcmV0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01MTU9aW50IEJQRl9QUk9HKGhpZF90ZXN0X211bHRpcGx5X2V2ZW50c193cSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTUxNi17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NTE3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNTE4LVx0aW50IGhpZCA9IGhpZF9jdHgtXHUwMDNlaGlkLVx1MDAzZWlkO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01NDI9aW50IEJQRl9QUk9HKGhpZF90ZXN0X211bHRpcGx5X2V2ZW50cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTU0My17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NTQ0Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNTQ1LVx0X191OCBidWZbOV07XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTU4MT1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5maW5pdGVfbG9vcF9pbnB1dF9yZXBvcnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNTgzLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo1ODQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNiAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy01ODUtXHRfX3U4IGJ1Zls2XTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmg9ODg9c3RydWN0IGhpZF9icGZfb3BzIHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmgtMTA2LS8qIGZvbGxvd2luZyBhcmUga2Z1bmNzIGV4cG9ydGVkIGJ5IEhJRCBmb3IgSElELUJQRiAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oOjEwNzpleHRlcm4gX191OCAqaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0xMDgtXHRcdFx0ICAgICAgdW5zaWduZWQgaW50IG9mZnNldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzA5OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBoaWRfYnBmX2dldF9kYXRhYCBCUEYgS2Z1bmMgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGBoaWRfYnBmX2dldF9kYXRhYCBmdW5jdGlvbi4gVGhpcyBpcyBhIEJQRiBrZnVuYywgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBJdCBsaXZlcyBpbiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY2Ag4oCTIGEgZGV0YWlsIHRvIG5vdGUgZm9yIGxhdGVyIHJlZmVyZW5jZSwgb2YgY291cnNlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFib3V0IGl0cyBwdXJwb3NlOyBpdCYjMzk7cyB1c2VkIGJ5IEJQRiBwcm9ncmFtcyB0byByZWFkIGRhdGEgZnJvbSBhIEhJRCBkZXZpY2UmIzM5O3MgYnVmZmVyLCBzbyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgY3JpdGljYWwgaW50ZXJmYWNlLgoKVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGlzIGFuIGludGVnZXIgb3ZlcmZsb3cuIEVzc2VudGlhbGx5LCBgcmR3cl9idWZfc2l6ZSAmIzQzOyBvZmZzZXRgIHBvdGVudGlhbGx5IHdyYXBzIGFyb3VuZCBpZiBgcmR3cl9idWZfc2l6ZWAgaXMgY2xvc2UgdG8gdGhlIG1heGltdW0gdmFsdWUgb2YgYW4gdW5zaWduZWQgbG9uZyBsb25nIChpLmUuLCBgfjBVTExgKS4gVGhpcyB3cmFwLWFyb3VuZCBjb3VsZCByZXN1bHQgaW4gYHJkd3JfYnVmX3NpemUgJiM0Mzsgb2Zmc2V0YCBiZWluZyAqc21hbGxlciogdGhhbiBgY3R4LSZndDthbGxvY2F0ZWRfc2l6ZWAsIHdoaWNoIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIGFjY2VzcyBzY2VuYXJpby4gV2UmIzM5O3ZlIGdvdCBhIHBvdGVudGlhbCBzZWN1cml0eSBob2xlIGhlcmU7IEkgYW0gYWxyZWFkeSBmb3JtaW5nIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBleHBsb2l0cyEKClRoaXMgaXMgYSAqKmZ1bmN0aW9uYWwgY2hhbmdlKiogYW5kIGEgKipzZWN1cml0eSBmaXgqKiByb2xsZWQgaW50byBvbmUsIGltcGFjdGluZyBob3cgQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggSElEIGRhdGEuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCYjMzk7cyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gSElEIGRldmljZXMuIFRoZSBhdHRhY2sgc3VyZmFjZSBpcyBwcmV0dHkgY2xlYXIgbm93LiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgdGVzdGVkIHZpZ29yb3VzbHkuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bGwgbmVlZCBgQ09ORklHX0hJRF9CUEZgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBlbmFibGVkIHRvIHJlcHJvZHVjZSB0aGlzLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgYGRyaXZlcnMvaGlkL2JwZi9LY29uZmlnYCBvciBwb3NzaWJseSBgZHJpdmVycy9oaWQvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBzZXR0aW5ncyBhcmUgcHJlc2VudC4gSSBhbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IGNyZWF0aW5nIGEgZnV6emluZyBjYW1wYWlnbiB0byB0YXJnZXQgdGhpcyB2dWxuZXJhYmlsaXR5IGFzIGEgdG9wIHByaW9yaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBISURfQlBGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaGlkL2JwZi9LY29uZmlnPTI9bWVudSBcJiMzNDtISUQtQlBGIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvaGlkL2JwZi9LY29uZmlnLTMtXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZzo0OmNvbmZpZyBISURfQlBGXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZy01LVx0Ym9vbCBcJiMzNDtISUQtQlBGIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzgyOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgdGFzazoKCioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyB3aXRoaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGRlcGVuZGVudCBvbiBzb21ldGhpbmcsIGFuZCB0aGUgc3RhcnRpbmcgcG9pbnQgaXMgYGRyaXZlcnMvaGlkL2JwZi9LY29uZmlnYC4gTXkgZXhwZXJ0aXNlIGluIGtlcm5lbCBjb25maWd1cmF0aW9uIHRlbGxzIG1lIHRoaXMgZmlsZSBsaWtlbHkgZGVmaW5lcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgSElEIHN1YnN5c3RlbSYjMzk7cyBCUEYgZnVuY3Rpb25hbGl0eS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgdGhpcyBmaWxlIGZvciBkZXBlbmRlbmN5IGRlY2xhcmF0aW9ucy4gVGhpcyB3aWxsIGluZGljYXRlIHdoaWNoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG1pZ2h0IHJlcXVpcmUgb3IgcmVseSB1cG9uIHRoZSBvcHRpb25zIGRlZmluZWQgd2l0aGluIGBLY29uZmlnYC4gVGhpcyBpcyBhIGNsYXNzaWMgZGVwZW5kZW5jeSBhbmFseXNpcyBzY2VuYXJpbywgdGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBnZXQgdG8gaXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2hpZC9icGYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnUgXCYjMzQ7SElELUJQRiBzdXBwb3J0XCYjMzQ7XG4gICAzOlx0XG4gICA0Olx0Y29uZmlnIEhJRF9CUEZcbiAgIDU6XHRcdGJvb2wgXCYjMzQ7SElELUJQRiBzdXBwb3J0XCYjMzQ7XG4gICA2Olx0XHRkZXBlbmRzIG9uIEJQRl9KSVRcbiAgIDc6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbiAgIDg6XHRcdGRlcGVuZHMgb24gRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdFRoaXMgb3B0aW9uIGFsbG93cyB0byBzdXBwb3J0IGVCUEYgcHJvZ3JhbXMgb24gdGhlIEhJRCBzdWJzeXN0ZW0uXG4gIDExOlx0XHRlQlBGIHByb2dyYW1zIGNhbiBmaXggSElEIGRldmljZXMgaW4gYSBsaWdodGVyIHdheSB0aGFuIGEgZnVsbFxuICAxMjpcdFx0a2VybmVsIHBhdGNoIGFuZCBhbGxvdyBhIGxvdCBtb3JlIGZsZXhpYmlsaXR5LlxuICAxMzpcdFxuICAxNDpcdFx0Rm9yIGRvY3VtZW50YXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdFxuICAxNTpcdFxuICAxNjpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI0OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhJRF9CUEYgQ29uZmlndXJhdGlvbiBhbmQgQXNzb2NpYXRlZCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBISURfQlBGYCBjb25maWd1cmF0aW9uLCB0aGF0JiMzOTtzIHRoZSBjb3JlIG9mIGl0LiBSaWdodCBub3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbmV3IGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBmdW5jdGlvbnMuIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiB0aGF0IHN5bWJvbCwgYGhpZF9icGZfZ2V0X2RhdGFgLgoKQmV5b25kIHRoZSBjb3JlIGNvbmZpZywgSSBzZWUgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyB0aGUgc2VsZnRlc3RzLiBJdCYjMzk7cyBtb2RpZnlpbmcgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jYC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBjaGFuZ2VzIGluY2x1ZGUgdXBkYXRlcyB0byBob3cgdGhlIEJQRiBmdW5jdGlvbmFsaXR5IGlzIHRlc3RlZCwgd2hpY2ggaXMgZ29vZC4gSW1wb3J0YW50IHRoYXQgdGhleSB2ZXJpZnkgdGhhdCBmdW5jdGlvbmFsaXR5LgoKTmV4dCwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgaGlkX2JwZl9nZXRfZGF0YWAgYW5kIHVuZGVyc3RhbmQgaG93IGl0IGZ1bmN0aW9ucy4gVGhhdCBsaWtlbHkgaGFwcGVucyBpbiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY2AsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSB3aWxsIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI4MDpcdFx0cmV0dXJuIDA7XG4gMjgxOlx0fVxuIDI4MjpcdFxuIDI4MzpcdC8qIERpc2FibGVzIG1pc3NpbmcgcHJvdG90eXBlIHdhcm5pbmdzICovXG4gMjg0Olx0X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xuIDI4NTpcdFxuIDI4NjpcdC8qKlxuIDI4NzpcdCAqIGhpZF9icGZfZ2V0X2RhdGEgLSBHZXQgdGhlIGtlcm5lbCBtZW1vcnkgcG9pbnRlciBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgQGN0eFxuIDI4ODpcdCAqXG4gMjg5Olx0ICogQGN0eDogVGhlIEhJRC1CUEYgY29udGV4dFxuIDI5MDpcdCAqIEBvZmZzZXQ6IFRoZSBvZmZzZXQgd2l0aGluIHRoZSBtZW1vcnlcbiAyOTE6XHQgKiBAcmR3cl9idWZfc2l6ZTogdGhlIGNvbnN0IHNpemUgb2YgdGhlIGJ1ZmZlclxuIDI5MjpcdCAqXG4gMjkzOlx0ICogQHJldHVybnMgJU5VTEwgb24gZXJyb3IsIGFuICVfX3U4IG1lbW9yeSBwb2ludGVyIG9uIHN1Y2Nlc3NcbiAyOTQ6XHQgKi9cbiAyOTU6XHRfX2JwZl9rZnVuYyBfX3U4ICpcbiAyOTY6XHRoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cl9idWZfc2l6ZSlcbiAyOTc6XHR7XG4gMjk4Olx0XHRzdHJ1Y3QgaGlkX2JwZl9jdHhfa2VybiAqY3R4X2tlcm47XG4gMjk5Olx0XG4gMzAwOlx0XHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xuIDMwMTpcdFxuIDMwMjpcdFx0aWYgKG9mZnNldCBcdTAwM2UgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplIHx8XG4gMzAzOlx0XHQgICAgcmR3cl9idWZfc2l6ZSBcdTAwM2UgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0KVxuIDMwNDpcdFx0XHRyZXR1cm4gTlVMTDtcbiAzMDU6XHRcbiAzMDY6XHRcdHJldHVybiBjdHhfa2Vybi1cdTAwM2VkYXRhICYjNDM7IG9mZnNldDtcbiAzMDc6XHR9XG4gMzA4Olx0XG4gMzA5Olx0LyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDY0CgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhc3Nlc3NtZW50IG9mIHRoZSBzaXR1YXRpb246CgoqKkFuYWx5c2lzIG9mIHRoZSBISUQgQlBGIFBhdGNoKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIGZpeGluZyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgd2l0aGluIGBoaWRfYnBmX2dldF9kYXRhYC4gVGhpcyBpcyBhIEJQRiBrZnVuYywgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBBbnl0aW1lIHdlIHNlZSBhIGZpeCBsaWtlIHRoaXMsIGVzcGVjaWFsbHkgd2l0aGluIEJQRiwgZnV6emluZyBiZWNvbWVzIGEgdG9wIHByaW9yaXR5LiBUaGUgYXR0YWNrIHN1cmZhY2UgaGVyZSBpcyBjbGVhcmx5IHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24gaXRzZWxmLiBUaGUgZml4IHNob3VsZCBiZSByaWdvcm91c2x5IHRlc3RlZC4KCk15IGZvY3VzIGhhcyB0byBiZSBsYXNlci1zaGFycCBvbiB0aGF0IGZ1bmN0aW9uLiBUbyBlbnN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgdnVsbmVyYWJpbGl0eSBmaXggaXMgaXNvbGF0ZWQgdG8gYGhpZF9icGZfZ2V0X2RhdGFgLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucy4gQWgsIHllcywgaXQgYXBwZWFycyB0aGF0IGBoaWRfYnBmX2dldF9kYXRhYCBpcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGluIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jYC4gVGhlIHJlbWFpbmluZyBtb2RpZmljYXRpb25zIHNlZW0gdG8gYmUgY29uZmluZWQgdG8gc2VsZnRlc3RzLCB3aGljaCBpcyBnb29kLiBUaGV5IHNob3VsZCBoZWxwLCBidXQgdGhlIGtleSBpcyB0aGUgbWFpbiBmdW5jdGlvbi4KCk5vdyB0aGF0IEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGUgc2NvcGUsIEkmIzM5O2xsIHJlY29yZCB0aGVzZSBmaW5kaW5ncyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SElEX0JQRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpZF9icGZfZ2V0X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIGBoaWRfYnBmX2dldF9kYXRhYCB3aGljaCBpcyBhIEJQRiBrZnVuYyB1c2VkIGJ5IEhJRC1CUEYgcHJvZ3JhbXMgdG8gYWNjZXNzIGRldmljZSBkYXRhIGJ1ZmZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIHNlY3VyaXR5IGZpeCB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIEhJRCBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISURfQlBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gYGhpZF9icGZfZ2V0X2RhdGFgIHdoaWNoIGlzIGEgQlBGIGtmdW5jIHVzZWQgYnkgSElELUJQRiBwcm9ncmFtcyB0byBhY2Nlc3MgZGV2aWNlIGRhdGEgYnVmZmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgc2VjdXJpdHkgZml4IHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gSElEIGRldmljZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzo1MzowMy43MTk3NzIwNDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzA5NTg0MjM5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJISURfQlBGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGlkX2JwZl9nZXRfZGF0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiBgaGlkX2JwZl9nZXRfZGF0YWAgd2hpY2ggaXMgYSBCUEYga2Z1bmMgdXNlZCBieSBISUQtQlBGIHByb2dyYW1zIHRvIGFjY2VzcyBkZXZpY2UgZGF0YSBidWZmZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBzZWN1cml0eSBmaXggdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBISUQgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MDMuNzE5Nzc5NzA3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODg3MTQ4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MWZhOWEzZTU2NDAwZDI1NGY4NzI2YTYyNmM1ZjUwZDY4NTMzMzFiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDIyIDA3OjUzOjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXFxuaW5kZXggZDAxMzA2NTgwOTFiMDIuLjA5YjQ1YzQwZDg0ZjBiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcXG4rKysgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXFxuQEAgLTI5OSw3ICsyOTksOCBAQCBoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3clxcbiBcXG4gXFx0Y3R4X2tlcm4gPSBjb250YWluZXJfb2YoY3R4LCBzdHJ1Y3QgaGlkX2JwZl9jdHhfa2VybiwgY3R4KTtcXG4gXFxuLVxcdGlmIChyZHdyX2J1Zl9zaXplICsgb2Zmc2V0IFxcdTAwM2UgY3R4LVxcdTAwM2VhbGxvY2F0ZWRfc2l6ZSlcXG4rXFx0aWYgKG9mZnNldCBcXHUwMDNlIGN0eC1cXHUwMDNlYWxsb2NhdGVkX3NpemUgfHxcXG4rXFx0ICAgIHJkd3JfYnVmX3NpemUgXFx1MDAzZSBjdHgtXFx1MDAzZWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0KVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuIFxcdHJldHVybiBjdHhfa2Vybi1cXHUwMDNlZGF0YSArIG9mZnNldDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXFxuaW5kZXggNTBlYzllMDQwNmFiYWYuLjM1N2M2ZWI1ZmY1ZWUzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxcbkBAIC0yNCw3ICsyNCw3IEBAIENYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXFxuIFxcbiBIT1NUUEtHX0NPTkZJRyA6PSBwa2ctY29uZmlnXFxuIFxcbi1DRkxBR1MgKz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpXFxuK0NGTEFHUyArPSAtZyAtTzAgLXJkeW5hbWljIC1XYWxsIC1XZXJyb3IgLUkkKE9VVFBVVCkgJChLSERSX0lOQ0xVREVTKVxcbiBDRkxBR1MgKz0gLUkkKE9VVFBVVCkvdG9vbHMvaW5jbHVkZVxcbiBcXG4gTERMSUJTICs9IC1sZWxmIC1seiAtbHJ0IC1scHRocmVhZFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xcbmluZGV4IDFlOTc5ZmIzNTQyYmFiLi5iODUxMzM5MzA4YzIxNCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xcbkBAIC04Niw2ICs4NiwyMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcXG4gXFx0c2VsZi1cXHUwMDNlc2tlbCA9IGhpZF9fb3BlbigpO1xcbiBcXHRBU1NFUlRfT0tfUFRSKHNlbGYtXFx1MDAzZXNrZWwpIFRFQVJET1dOX0xPRyhcXFwiRXJyb3Igd2hpbGUgY2FsbGluZyBoaWRfX29wZW5cXFwiKTtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZFxcbitcXHQgKiBwcm9ncmFtcyByZWZlcmVuY2VkIGJ5IG1hcHMgdGhhdCBhcmUgdW5yZWxhdGVkIHRvIHRoZSBjdXJyZW50IHRlc3QuXFxuK1xcdCAqL1xcbitcXHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVxcdTAwM2Vza2VsLVxcdTAwM2Vza2VsZXRvbi1cXHUwMDNlb2JqKSB7XFxuK1xcdFxcdGlmIChicGZfbWFwX190eXBlKGl0ZXJfbWFwKSA9PSBCUEZfTUFQX1RZUEVfU1RSVUNUX09QUykge1xcbitcXHRcXHRcXHRlcnIgPSBicGZfbWFwX19zZXRfYXV0b2NyZWF0ZShpdGVyX21hcCwgZmFsc2UpO1xcbitcXHRcXHRcXHRBU1NFUlRfT0soZXJyKSBUSF9MT0coXFxcImNhbiBub3QgZGlzYWJsZSBzdHJ1Y3Rfb3BzIG1hcCAnJXMnXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRicGZfbWFwX19zZXRfYXV0b2F0dGFjaChpdGVyX21hcCwgZmFsc2UpO1xcbitcXHR9XFxuK1xcbiBcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIHByb2dzX2NvdW50OyBpKyspIHtcXG4gXFx0XFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xcbiBcXHRcXHRzdHJ1Y3QgYnBmX21hcCAqbWFwO1xcbkBAIC0xMDIsNiArMTE2LDEwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxcbiBcXHRcXHRBU1NFUlRfT0tfUFRSKG1hcCkgVEhfTE9HKFxcXCJjYW4gbm90IGZpbmQgc3RydWN0X29wcyBieSBuYW1lICclcydcXFwiLFxcbiBcXHRcXHRcXHRcXHRcXHQgIHByb2dyYW1zW2ldLm5hbWUgKyA0KTtcXG4gXFxuK1xcdFxcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKG1hcCwgdHJ1ZSk7XFxuK1xcdFxcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcXFwiY2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJyVzJ1xcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHByb2dyYW1zW2ldLm5hbWUgKyA0KTtcXG4rXFxuIFxcdFxcdC8qIGhpZF9pZCBpcyB0aGUgZmlyc3QgZmllbGQgb2Ygc3RydWN0IGhpZF9icGZfb3BzICovXFxuIFxcdFxcdG9wc19oaWRfaWQgPSBicGZfbWFwX19pbml0aWFsX3ZhbHVlKG1hcCwgTlVMTCk7XFxuIFxcdFxcdEFTU0VSVF9PS19QVFIob3BzX2hpZF9pZCkgVEhfTE9HKFxcXCJ1bmFibGUgdG8gcmV0cmlldmUgc3RydWN0X29wcyBkYXRhXFxcIik7XFxuQEAgLTEwOSwxMyArMTI3LDYgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXFxuIFxcdFxcdCpvcHNfaGlkX2lkID0gc2VsZi1cXHUwMDNlaGlkLmhpZF9pZDtcXG4gXFx0fVxcbiBcXG4tXFx0Lyogd2UgZGlzYWJsZSB0aGUgYXV0by1hdHRhY2ggZmVhdHVyZSBvZiBhbGwgbWFwcyBiZWNhdXNlIHdlXFxuLVxcdCAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dFxcbi1cXHQgKiBjYWxsIHRvIGJwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzKClcXG4tXFx0ICovXFxuLVxcdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXFx1MDAzZXNrZWwtXFx1MDAzZXNrZWxldG9uLVxcdTAwM2VvYmopXFxuLVxcdFxcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XFxuLVxcbiBcXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cXHUwMDNlc2tlbCk7XFxuIFxcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcXFwiaGlkX3NrZWxfbG9hZCBmYWlsZWQ6ICVkXFxcIiwgZXJyKTtcXG4gXFxuQEAgLTg4Nyw2ICs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApXFxuIFxcdEFTU0VSVF9FUShycHRfZGVzYy52YWx1ZVs0XSwgMHg0Mik7XFxuIH1cXG4gXFxuK1RFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3NbXSA9IHtcXG4rXFx0XFx0eyAubmFtZSA9IFxcXCJoaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3dcXFwiIH0sXFxuK1xcdH07XFxuK1xcbitcXHRMT0FEX1BST0dSQU1TKHByb2dzKTtcXG4rXFxuK1xcdEFTU0VSVF9FUShzZWxmLVxcdTAwM2Vza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWdldF9kYXRhX292ZXJmbG93X2NoZWNrLCAxKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBsaWJicGZfcHJpbnRfZm4oZW51bSBsaWJicGZfcHJpbnRfbGV2ZWwgbGV2ZWwsXFxuIFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxcbiB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xcbmluZGV4IDVlY2M4NDVlZjc5MjE2Li5iMjFmYmIxM2M5MjZmOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcXG5AQCAtMTMsNiArMTMsNyBAQCBzdHJ1Y3QgYXR0YWNoX3Byb2dfYXJncyB7XFxuIFxcbiBfX3U2NCBjYWxsYmFja19jaGVjayA9IDUyO1xcbiBfX3U2NCBjYWxsYmFjazJfY2hlY2sgPSA1MjtcXG4rX191NjQgZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2s7XFxuIFxcbiBTRUMoXFxcIj9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcXFwiKVxcbiBpbnQgQlBGX1BST0coaGlkX2ZpcnN0X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxuQEAgLTI0MCw2ICsyNDEsMjAgQEAgc3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwID0ge1xcbiBcXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXAsXFxuIH07XFxuIFxcbitTRUMoXFxcIj9zdHJ1Y3Rfb3BzLnMvaGlkX3JkZXNjX2ZpeHVwXFxcIilcXG4raW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbit7XFxuK1xcdGlmICghaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAyIC8qIG9mZnNldCAqLywgfjBVTEwgLyogc2l6ZSAqLykpXFxuK1xcdFxcdGdldF9kYXRhX292ZXJmbG93X2NoZWNrID0gMTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcIi5zdHJ1Y3Rfb3BzLmxpbmtcXFwiKVxcbitzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XFxuK1xcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyxcXG4rfTtcXG4rXFxuIFNFQyhcXFwiP3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFxcXCIpXFxuIGludCBCUEZfUFJPRyhoaWRfdGVzdF9pbnNlcnQxLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MDQuNDA5NDE1OTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDA2MTgwMTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJRF9CUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaWRfYnBmX2dldF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIGBoaWRfYnBmX2dldF9kYXRhYCB3aGljaCBpcyBhIEJQRiBrZnVuYyB1c2VkIGJ5IEhJRC1CUEYgcHJvZ3JhbXMgdG8gYWNjZXNzIGRldmljZSBkYXRhIGJ1ZmZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIHNlY3VyaXR5IGZpeCB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIEhJRCBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQxZmE5YTNlNTY0MDBkMjU0Zjg3MjZhNjI2YzVmNTBkNjg1MzMzMWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwNzo1MzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXG5pbmRleCBkMDEzMDY1ODA5MWIwMi4uMDliNDVjNDBkODRmMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXG4rKysgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXG5AQCAtMjk5LDcgKzI5OSw4IEBAIGhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsIHVuc2lnbmVkIGludCBvZmZzZXQsIGNvbnN0IHNpemVfdCByZHdyXG4gXG4gXHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xuIFxuLVx0aWYgKHJkd3JfYnVmX3NpemUgKyBvZmZzZXQgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSlcbitcdGlmIChvZmZzZXQgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSB8fFxuK1x0ICAgIHJkd3JfYnVmX3NpemUgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSAtIG9mZnNldClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gY3R4X2tlcm4tXHUwMDNlZGF0YSArIG9mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcbmluZGV4IDUwZWM5ZTA0MDZhYmFmLi4zNTdjNmViNWZmNWVlMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXG5AQCAtMjQsNyArMjQsNyBAQCBDWFggPz0gJChDUk9TU19DT01QSUxFKWcrK1xuIFxuIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWdcbiBcbi1DRkxBR1MgKz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpXG4rQ0ZMQUdTICs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpXG4gQ0ZMQUdTICs9IC1JJChPVVRQVVQpL3Rvb2xzL2luY2x1ZGVcbiBcbiBMRExJQlMgKz0gLWxlbGYgLWx6IC1scnQgLWxwdGhyZWFkXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbmluZGV4IDFlOTc5ZmIzNTQyYmFiLi5iODUxMzM5MzA4YzIxNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbkBAIC04Niw2ICs4NiwyMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdHNlbGYtXHUwMDNlc2tlbCA9IGhpZF9fb3BlbigpO1xuIFx0QVNTRVJUX09LX1BUUihzZWxmLVx1MDAzZXNrZWwpIFRFQVJET1dOX0xPRyhcIkVycm9yIHdoaWxlIGNhbGxpbmcgaGlkX19vcGVuXCIpO1xuIFxuK1x0LypcbitcdCAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZFxuK1x0ICogcHJvZ3JhbXMgcmVmZXJlbmNlZCBieSBtYXBzIHRoYXQgYXJlIHVucmVsYXRlZCB0byB0aGUgY3VycmVudCB0ZXN0LlxuK1x0ICovXG4rXHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVx1MDAzZXNrZWwtXHUwMDNlc2tlbGV0b24tXHUwMDNlb2JqKSB7XG4rXHRcdGlmIChicGZfbWFwX190eXBlKGl0ZXJfbWFwKSA9PSBCUEZfTUFQX1RZUEVfU1RSVUNUX09QUykge1xuK1x0XHRcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7XG4rXHRcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwiY2FuIG5vdCBkaXNhYmxlIHN0cnVjdF9vcHMgbWFwICclcydcIixcbitcdFx0XHRcdFx0ICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpO1xuK1x0XHR9XG4rXG4rXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4rXHR9XG4rXG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgcHJvZ3NfY291bnQ7IGkrKykge1xuIFx0XHRzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7XG4gXHRcdHN0cnVjdCBicGZfbWFwICptYXA7XG5AQCAtMTAyLDYgKzExNiwxMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0QVNTRVJUX09LX1BUUihtYXApIFRIX0xPRyhcImNhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJyVzJ1wiLFxuIFx0XHRcdFx0XHQgIHByb2dyYW1zW2ldLm5hbWUgKyA0KTtcbiBcbitcdFx0ZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUobWFwLCB0cnVlKTtcbitcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwiY2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJyVzJ1wiLFxuK1x0XHRcdFx0ICAgICAgcHJvZ3JhbXNbaV0ubmFtZSArIDQpO1xuK1xuIFx0XHQvKiBoaWRfaWQgaXMgdGhlIGZpcnN0IGZpZWxkIG9mIHN0cnVjdCBoaWRfYnBmX29wcyAqL1xuIFx0XHRvcHNfaGlkX2lkID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIE5VTEwpO1xuIFx0XHRBU1NFUlRfT0tfUFRSKG9wc19oaWRfaWQpIFRIX0xPRyhcInVuYWJsZSB0byByZXRyaWV2ZSBzdHJ1Y3Rfb3BzIGRhdGFcIik7XG5AQCAtMTA5LDEzICsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0Km9wc19oaWRfaWQgPSBzZWxmLVx1MDAzZWhpZC5oaWRfaWQ7XG4gXHR9XG4gXG4tXHQvKiB3ZSBkaXNhYmxlIHRoZSBhdXRvLWF0dGFjaCBmZWF0dXJlIG9mIGFsbCBtYXBzIGJlY2F1c2Ugd2Vcbi1cdCAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dFxuLVx0ICogY2FsbCB0byBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcygpXG4tXHQgKi9cbi1cdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXHUwMDNlc2tlbC1cdTAwM2Vza2VsZXRvbi1cdTAwM2VvYmopXG4tXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4tXG4gXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cdTAwM2Vza2VsKTtcbiBcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcImhpZF9za2VsX2xvYWQgZmFpbGVkOiAlZFwiLCBlcnIpO1xuIFxuQEAgLTg4Nyw2ICs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApXG4gXHRBU1NFUlRfRVEocnB0X2Rlc2MudmFsdWVbNF0sIDB4NDIpO1xuIH1cbiBcbitURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7XG4rXHRcdHsgLm5hbWUgPSBcImhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvd1wiIH0sXG4rXHR9O1xuK1xuK1x0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XG4rXG4rXHRBU1NFUlRfRVEoc2VsZi1cdTAwM2Vza2VsLVx1MDAzZWJzcy1cdTAwM2VnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbGliYnBmX3ByaW50X2ZuKGVudW0gbGliYnBmX3ByaW50X2xldmVsIGxldmVsLFxuIFx0XHRcdCAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbmluZGV4IDVlY2M4NDVlZjc5MjE2Li5iMjFmYmIxM2M5MjZmOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5AQCAtMTMsNiArMTMsNyBAQCBzdHJ1Y3QgYXR0YWNoX3Byb2dfYXJncyB7XG4gXG4gX191NjQgY2FsbGJhY2tfY2hlY2sgPSA1MjtcbiBfX3U2NCBjYWxsYmFjazJfY2hlY2sgPSA1MjtcbitfX3U2NCBnZXRfZGF0YV9vdmVyZmxvd19jaGVjaztcbiBcbiBTRUMoXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XCIpXG4gaW50IEJQRl9QUk9HKGhpZF9maXJzdF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxuQEAgLTI0MCw2ICsyNDEsMjAgQEAgc3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwID0ge1xuIFx0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwLFxuIH07XG4gXG4rU0VDKFwiP3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcIilcbitpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG4re1xuK1x0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcbitcdFx0Z2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcIi5zdHJ1Y3Rfb3BzLmxpbmtcIilcbitzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4rXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csXG4rfTtcbitcbiBTRUMoXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XCIpXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzo1MzowNC40MDk0MTk1MjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAzNDY0MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBISUQgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBib3RoIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jYCBhbmQgYWRkcyBhIHRlc3QgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoaXMgcG90ZW50aWFsbHkgY3J1Y2lhbCBmaXggaW4gYGhpZF9icGZfZGlzcGF0Y2guY2AuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIHZ1bG5lcmFiaWxpdHk6IGFuIGludGVnZXIgb3ZlcmZsb3cgY291bGQgb2NjdXIgd2hlbiBjYWxjdWxhdGluZyBgcmR3cl9idWZfc2l6ZSArIG9mZnNldGAuIFRoZSBzdW0gY291bGQgd3JhcCBhcm91bmQsIHJlc3VsdGluZyBpbiBhbiBpbmNvcnJlY3QgY29tcGFyaXNvbiB3aXRoIGBjdHgtXHUwMDNlYWxsb2NhdGVkX3NpemVgLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCByaWdodD8gVGhlIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGJ5IGNoYW5naW5nIHRoZSBjaGVjayB0byB0d28gc2VwYXJhdGUgY2hlY2tzLiBPbmUgZW5zdXJlcyB0aGF0IGBvZmZzZXRgIGl0c2VsZiBpc24ndCBncmVhdGVyIHRoYW4gYGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZWAsIGFuZCB0aGUgb3RoZXIgbWFrZXMgc3VyZSBgcmR3cl9idWZfc2l6ZWAgaXNuJ3QgZ3JlYXRlciB0aGFuIHRoZSByZW1haW5pbmcgYXZhaWxhYmxlIHNpemUuIFRoaXMgaXMgYSBzb2xpZCBhcHByb2FjaCB0byBwcmV2ZW50IHRoYXQgaW50ZWdlciBvdmVyZmxvdy5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHJlYWNoYWJsZT8gSXMgaXQgZnVuY3Rpb25hbD8gV2hlcmUgaXMgdGhpcyBjb2RlIGFjdHVhbGx5IHVzZWQ/IFRoZSB2dWxuZXJhYmxlIGxvZ2ljIHJlc2lkZXMgaW4gYGhpZF9icGZfZ2V0X2RhdGFgLiBTbywgbGV0J3MgZmlyZSB1cCBhIGdyZXAgc2VhcmNoIGZvciBgaGlkX2JwZl9nZXRfZGF0YWAgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzaXRlcyBhbmQgZGF0YSBmbG93LiBLbm93aW5nIHdoZXJlIHRoaXMgaXMgaW52b2tlZCBpcyBjcml0aWNhbCBmb3IgYXNzZXNzaW5nIHRoZSBpbXBhY3QgYW5kIGhvdyBlYXN5IGl0IGlzIHRvIHRyaWdnZXIuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHJlYWxseSBhbmFseXplIHRoZSBwYXRjaCdzIGVmZmljYWN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjMyLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MDkuNDEyODg1NjgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDk3OTUxMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlkX2JwZl9nZXRfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdD0xOTU9QXZhaWxhYmxlIEFQSSB0aGF0IGNhbiBiZSB1c2VkIGluIGFsbCBISUQtQlBGIHN0cnVjdF9vcHMgcHJvZ3JhbXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0xOTgtLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdDoxOTk6ICAgOmlkZW50aWZpZXJzOiBoaWRfYnBmX2dldF9kYXRhXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMjAwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q9MjEzPVRoZSBgYHN0cnVjdCBoaWRfYnBmX2N0eGBgIGRvZXNuJ3QgZXhwb3J0IHRoZSBgYGRhdGFgYCBmaWVsZHMgZGlyZWN0bHkgYW5kIHRvIGFjY2Vzc1xcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjIxNDppdCwgYSBicGYgcHJvZ3JhbSBuZWVkcyB0byBmaXJzdCBjYWxsIDpjOmZ1bmM6YGhpZF9icGZfZ2V0X2RhdGFgLlxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTIxNS1cXG4tLVxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0PTIxOT1UaGlzIGFsbG93cyB0aGUgZm9sbG93aW5nOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMjI2LVxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjIyNzogICAgIF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGN0eCwgMCAvKiBvZmZzZXQgKi8sIDI1NiAvKiBzaXplICovKTtcXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0yMjgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0yMzctXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6MjM4OiAgICAgIF9fdTE2ICp4ID0gaGlkX2JwZl9nZXRfZGF0YShjdHgsIG9mZnNldCwgc2l6ZW9mKCp4KSk7XFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMjM5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q9Mjg3PU9uY2UgdGhlIGNvbnRleHQgaXMgcmV0cmlldmVkLCBvbmUgY2FuIGFsc28gcmVxdWVzdCBhIHBvaW50ZXIgdG8ga2VybmVsIG1lbW9yeSB3aXRoXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6Mjg4OmhpZF9icGZfZ2V0X2RhdGEoKS4gVGhpcyBtZW1vcnkgaXMgYmlnIGVub3VnaCB0byBzdXBwb3J0IGFsbCBpbnB1dC9vdXRwdXQvZmVhdHVyZVxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTI4OS1yZXBvcnRzIG9mIHRoZSBnaXZlbiBkZXZpY2UuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdD0zNzA9Rm9yIHRoYXQsIHdlIGNhbiBjcmVhdGUgYSBiYXNpYyBza2VsZXRvbiBmb3Igb3VyIEJQRiBwcm9ncmFtOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTM3OS0gIC8qIEhJRC1CUEYga2Z1bmMgQVBJIGRlZmluaXRpb25zICovXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6MzgwOiAgZXh0ZXJuIF9fdTggKmhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzgxLVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0zOTMtICB7XFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6Mzk0OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCAxOTIgLyogc2l6ZSAqLyk7XFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzk1LVxcdF9fdTggKmJ1ZjtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmM9Mjg0PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMtMjg2LS8qKlxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmM6Mjg3OiAqIGhpZF9icGZfZ2V0X2RhdGEgLSBHZXQgdGhlIGtlcm5lbCBtZW1vcnkgcG9pbnRlciBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgQGN0eFxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMtMjg4LSAqXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jPTI5NT1fX2JwZl9rZnVuYyBfX3U4ICpcXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jOjI5NjpoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cl9idWZfc2l6ZSlcXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jLTI5Ny17XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jPTU3ND1CVEZfS0ZVTkNTX1NUQVJUKGhpZF9icGZfa2Z1bmNfaWRzKVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmM6NTc1OkJURl9JRF9GTEFHUyhmdW5jLCBoaWRfYnBmX2dldF9kYXRhLCBLRl9SRVRfTlVMTClcXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jLTU3Ni1CVEZfSURfRkxBR1MoZnVuYywgaGlkX2JwZl9hbGxvY2F0ZV9jb250ZXh0LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCTEUpXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvRlItVEVDX19SYXB0b3ItTWFjaC0yLmJwZi5jPTEzNz1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY19yYXB0b3JfbWFjaF8yLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYy0xMzgte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM6MTM5OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvRlItVEVDX19SYXB0b3ItTWFjaC0yLmJwZi5jLTE0MC1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM9MTU2PWludCBCUEZfUFJPRyhyYXB0b3JfbWFjaF8yX2ZpeF9oYXRfc3dpdGNoLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYy0xNTcte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM6MTU4OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA2NCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvRlItVEVDX19SYXB0b3ItTWFjaC0yLmJwZi5jLTE1OS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jPTM0PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0hQX19FbGl0ZS1QcmVzZW50ZXIuYnBmLmMtMzUte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jOjM2OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jLTM3LVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19EaWFsLTIuYnBmLmM9NDQyPWludCBCUEZfUFJPRyhkaWFsXzJfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19EaWFsLTIuYnBmLmMtNDQzLXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYzo0NDQ6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jLTQ0NS1cXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cXHUwMDNlc2l6ZTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jPTQ4OD1pbnQgQlBGX1BST0coZGlhbF8yX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYy00ODkte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jOjQ5MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTYgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19EaWFsLTIuYnBmLmMtNDkxLVxcdHN0YXRpYyBfX3U4IGJ1dHRvbjtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jPTM4Mj1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jLTM4My17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmM6Mzg0OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYy0zODUtXFx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhjdHgtXFx1MDAzZXNpemU7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYz00Mjc9aW50IEJQRl9QUk9HKGluc3Bpcm95XzJfZml4X2V2ZW50cywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jLTQyOC17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmM6NDI5OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYy00MzAtXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYz0zODI9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYy0zODMte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1TLmJwZi5jOjM4NDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmMtMzg1LVxcdF9fczMyIHJkZXNjX3NpemUgPSBoY3R4LVxcdTAwM2VzaXplO1xcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmM9NDI4PWludCBCUEZfUFJPRyhpbnNwaXJveV8yX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYy00Mjkte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1TLmJwZi5jOjQzMDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmMtNDMxLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jPTI1OD1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY19odWlvbl9rYW12YXNfcHJvXzE5LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jLTI1OS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jOjI2MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jLTI2MS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzLVByby0xOS5icGYuYz0yODc9aW50IEJQRl9QUk9HKGthbXZhc19wcm9fMTlfZml4XzNyZF9idXR0b24sIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmMtMjg4LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmM6Mjg5OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmMtMjkwLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmM9MTI0MD1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY19odWlvbl9rYW12YXMxM19nZW4zLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmMtMTI0MS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmM6MTI0MjpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmMtMTI0My1cXHRfX3MzMiByZGVzY19zaXplID0gaGlkX2N0eC1cXHUwMDNlc2l6ZTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jPTEyODQ9aW50IEJQRl9QUk9HKGhpZF9maXhfZXZlbnRfaHVpb25fa2FtdmFzMTNfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jLTEyODUte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jOjEyODY6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIFZFTkRPUl9SRVBPUlRfTEVOR1RIIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jLTEyODctXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYz01NTU9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfaHVpb25fa2FtdmFzMTZfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jLTU1Ni17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmM6NTU3OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYy01NTgtXFx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhpZF9jdHgtXFx1MDAzZXNpemU7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYz01OTk9aW50IEJQRl9QUk9HKGhpZF9maXhfZXZlbnRfaHVpb25fa2FtdmFzMTZfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jLTYwMC17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmM6NjAxOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCBWRU5ET1JfUkVQT1JUX0xFTkdUSCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYy02MDItXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jPTMzOD1pbnQgQlBGX1BST0coazIwX2J0X2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC1CbHVldG9vdGguYnBmLmMtMzM5LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jOjM0MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYy0zNDEtXFx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhjdHgtXFx1MDAzZXNpemU7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jPTM2MD1pbnQgQlBGX1BST0coazIwX2J0X2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jLTM2MS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYzozNjI6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDEyIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC1CbHVldG9vdGguYnBmLmMtMzYzLVxcdHN0cnVjdCBwYWRfcmVwb3J0IHtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYz0zNDU9aW50IEJQRl9QUk9HKGsyMF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzQ2LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmM6MzQ3OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzQ4LVxcdF9fczMyIHJkZXNjX3NpemUgPSBoY3R4LVxcdTAwM2VzaXplO1xcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLmJwZi5jPTM4OT1pbnQgQlBGX1BST0coazIwX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzkwLXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmM6MzkxOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzkyLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0lPR0VBUl9fS2FsaWJlci1NTU9tZW50dW0uYnBmLmM9MjU9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jLTI3LVxcdGNvbnN0IHU4IG9mZnNldHNbXSA9IHs4NCwgMTEyLCAxNDB9O1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jOjI4OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jLTI5LVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0xvZ2l0ZWNoX19TcGFjZU5hdmlnYXRvci5icGYuYz0yOT1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9Mb2dpdGVjaF9fU3BhY2VOYXZpZ2F0b3IuYnBmLmMtMzAte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9Mb2dpdGVjaF9fU3BhY2VOYXZpZ2F0b3IuYnBmLmM6MzE6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0xvZ2l0ZWNoX19TcGFjZU5hdmlnYXRvci5icGYuYy0zMi1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaWNyb3NvZnRfX1hib3gtRWxpdGUtMi5icGYuYz05Nj1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaWNyb3NvZnRfX1hib3gtRWxpdGUtMi5icGYuYy05Ny17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pY3Jvc29mdF9fWGJveC1FbGl0ZS0yLmJwZi5jOjk4OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaWNyb3NvZnRfX1hib3gtRWxpdGUtMi5icGYuYy05OS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaXN0ZWxfX01ENzcwLmJwZi5jPTEyNz1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX21pc3RlbF9tZDc3MCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaXN0ZWxfX01ENzcwLmJwZi5jLTEyOC17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pc3RlbF9fTUQ3NzAuYnBmLmM6MTI5OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTWlzdGVsX19NRDc3MC5icGYuYy0xMzAtXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvUmFwb29fX001MC1QbHVzLVNpbGVudC5icGYuYz0xMjE9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9yYXBvb19tNTAsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvUmFwb29fX001MC1QbHVzLVNpbGVudC5icGYuYy0xMjIte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9SYXBvb19fTTUwLVBsdXMtU2lsZW50LmJwZi5jOjEyMzpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1JhcG9vX19NNTAtUGx1cy1TaWxlbnQuYnBmLmMtMTI0LVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RVWEVET19fU2lyaXVzLTE2LUdlbjEtYW5kLUdlbjIuYnBmLmM9MTU9aW50IEJQRl9QUk9HKGlnbm9yZV9rZXlfZml4X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVFVYRURPX19TaXJpdXMtMTYtR2VuMS1hbmQtR2VuMi5icGYuYy0yNC1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVFVYRURPX19TaXJpdXMtMTYtR2VuMS1hbmQtR2VuMi5icGYuYzoyNTpcXHRkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwLCBleHBlY3RlZF9sZW5ndGgpO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UVVhFRE9fX1Npcml1cy0xNi1HZW4xLWFuZC1HZW4yLmJwZi5jLTI2LVxcdGlmICghZGF0YSB8fCBkYXRhWzBdICE9IGV4cGVjdGVkX3JlcG9ydF9pZClcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UaHJ1c3RtYXN0ZXJfX1RDQS1Zb2tlLUJvZWluZy5icGYuYz0xMDA9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfdGNhX3lva2UsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UaHJ1c3RtYXN0ZXJfX1RDQS1Zb2tlLUJvZWluZy5icGYuYy0xMDYtXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RocnVzdG1hc3Rlcl9fVENBLVlva2UtQm9laW5nLmJwZi5jOjEwNzpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RocnVzdG1hc3Rlcl9fVENBLVlva2UtQm9laW5nLmJwZi5jLTEwOC1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jPTE5PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RydXN0X19QaGlsaXBzLVNQSzYzMjcuYnBmLmMtMjAte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jOjIxOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIDQwOTYpO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jLTIyLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jPTIzMT1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYy0yMzIte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYzoyMzM6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jLTIzNC1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYz0yNDQ9aW50IEJQRl9QUk9HKHdhbHRvcF9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jLTI0NS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jOjI0NjpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jLTI0Ny1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XYWNvbV9fQXJ0UGVuLmJwZi5jPTEwNT1pbnQgQlBGX1BST0coYXJ0cGVuX3ByZXNzdXJlX2ludGVycG9sYXRlLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dhY29tX19BcnRQZW4uYnBmLmMtMTA2LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV2Fjb21fX0FydFBlbi5icGYuYzoxMDc6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIFBFTl9SRVBPUlRfTEVOIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XYWNvbV9fQXJ0UGVuLmJwZi5jLTEwOC1cXHRfX3UxNiAqcHJlc3N1cmUsICp0b29sX3R5cGU7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FDSzA1LmJwZi5jPTIxOD1pbnQgQlBGX1BST0coYWNrMDVfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYy0yMTkte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmM6MjIwOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FDSzA1LmJwZi5jLTIyMS1cXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cXHUwMDNlc2l6ZTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmM9MjY1PWludCBCUEZfUFJPRyhhY2swNV9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYy0yNjYte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmM6MjY3OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBQQURfUkVQT1JUX0xFTkdUSCk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYy0yNjgtXFx0aW50IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jPTkzPWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjX3hwcGVuX2FydGlzdDI0LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYy05NC17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYzo5NTpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jLTk2LVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYz0xNTQ9aW50IEJQRl9QUk9HKHhwcGVuXzI0X2ZpeF9lcmFzZXIsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jLTE1NS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYzoxNTY6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDEwIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0MjQuYnBmLmMtMTU3LVxcdF9fdTggY3VycmVudF9zdGF0ZSwgY2hhbmdlZF9zdGF0ZTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jPTg4PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjX3hwcGVuX2FydGlzdHBybzE2Z2VuMiwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTg5LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYzo5MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYy05MS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jPTExNj1zdGF0aWMgaW50IHhwcGVuXzE2X2ZpeF9lcmFzZXIoc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTExNy17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmM6MTE4OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYy0xMTktXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYz0yMzg9c3RhdGljIGludCB4cHBlbl8xNl9maXhfYW5nbGVfb2Zmc2V0KHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYy0yMzkte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jOjI0MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmMtMjQxLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYz0yMjQ9aW50IEJQRl9QUk9HKHhwcGVuX2RlY28wMXYzX3JkZXNjX2ZpeHVwLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYy0yMjUte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmM6MjI2OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jLTIyNy1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmM9MjU0PWludCBCUEZfUFJPRyh4cHBlbl9kZWNvMDF2M19kZXZpY2VfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmMtMjU2LVxcdHN0YXRpYyBjb25zdCBfX3U4IHBhZF9idXR0b25zW10gPSB7IDB4MDUsIDB4MDgsIDB4MDAsIDB4MmMsIDB4MTYsIDB4MWQsIDB4NTcsIDB4NTYgfTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jOjI1NzpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgUEFEX1JFUE9SVF9MRU5HVEggLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYy0yNTgtXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYz0yODE9aW50IEJQRl9QUk9HKHhwcGVuX2RlY28wMl9yZGVzY19maXh1cCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jLTI4Mi17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDIuYnBmLmM6MjgzOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYy0yODQtXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYz0yOTc9aW50IEJQRl9QUk9HKHhwcGVuX2RlY28wMl9kZXZpY2VfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYy0yOTgte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jOjI5OTpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwLCBSRVBPUlRfU0laRV9QQUQpO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jLTMwMC1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jPTE1Mz1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX3hwcGVuX2RlY29fbWluaV80LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvTWluaTQuYnBmLmMtMTU0LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY29NaW5pNC5icGYuYzoxNTU6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCwgSElEX01BWF9ERVNDUklQVE9SX1NJWkUpO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE1Ni1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jPTE3Mj1pbnQgQlBGX1BST0coaGlkX2RldmljZV9ldmVudF94cHBlbl9kZWNvX21pbmlfNCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE3My17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvTWluaTQuYnBmLmM6MTc0OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA4IC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE3NS1cXHRfX3U4IGJ1dHRvbl9tYXNrID0gMDtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0yMi1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmg6MjM6ZXh0ZXJuIF9fdTggKmhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL2hpZF9icGZfaGVscGVycy5oLTI0LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2hpZF9icGYuaD0xMT1zdHJ1Y3QgaGlkX2RldmljZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvaGlkX2JwZi5oLTIzLSAqIGBgZGF0YWBgIGlzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdGhlIGNvbnRleHQuIFdlIG5lZWQgdG8gaXNzdWVcXG5pbmNsdWRlL2xpbnV4L2hpZF9icGYuaDoyNDogKiBhIGNhbGwgdG8gaGlkX2JwZl9nZXRfZGF0YSgpIGluIG9yZGVyIHRvIGdldCBhIHBvaW50ZXIgdG8gdGhhdCBmaWVsZC5cXG5pbmNsdWRlL2xpbnV4L2hpZF9icGYuaC0yNS0gKlxcbi0tXFxuc2FtcGxlcy9oaWQvaGlkX2JwZl9oZWxwZXJzLmgtOC0vKiBmb2xsb3dpbmcgYXJlIGtmdW5jcyBleHBvcnRlZCBieSBISUQgZm9yIEhJRC1CUEYgKi9cXG5zYW1wbGVzL2hpZC9oaWRfYnBmX2hlbHBlcnMuaDo5OmV4dGVybiBfX3U4ICpoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LFxcbnNhbXBsZXMvaGlkL2hpZF9icGZfaGVscGVycy5oLTEwLVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM9OD1zdGF0aWMgaW50IGhpZF95X2V2ZW50KHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG4tLVxcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy0xMC1cXHRzMTYgeTtcXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM6MTE6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XFxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTEyLVxcbi0tXFxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jPTUzPXN0YXRpYyBpbnQgaGlkX3hfZXZlbnQoc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbi0tXFxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTU1LVxcdHMxNiB4O1xcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYzo1NjpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgOSAvKiBzaXplICovKTtcXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmMtNTctXFxuLS1cXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM9ODM9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy04NC17XFxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jOjg1OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy04Ni1cXG4tLVxcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM9MTQ9aW50IEJQRl9QUk9HKGhpZF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmMtMTUte1xcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM6MTY6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XFxuc2FtcGxlcy9oaWQvaGlkX3N1cmZhY2VfZGlhbC5icGYuYy0xNy1cXG4tLVxcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM9MTA1PWludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXAsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5zYW1wbGVzL2hpZC9oaWRfc3VyZmFjZV9kaWFsLmJwZi5jLTEwNi17XFxuc2FtcGxlcy9oaWQvaGlkX3N1cmZhY2VfZGlhbC5icGYuYzoxMDc6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XFxuc2FtcGxlcy9oaWQvaGlkX3N1cmZhY2VfZGlhbC5icGYuYy0xMDgtXFx0X191MTYgKnJlcywgKnBoeXM7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9MTk9aW50IEJQRl9QUk9HKGhpZF9maXJzdF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yMC17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjIxOlxcdF9fdTggKnJ3X2RhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCAzIC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yMi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0zOT1pbnQgX19oaWRfc3VicHJvZ19maXJzdF9ldmVudChzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTQwLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NDE6XFx0X191OCAqcndfZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTQyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTY0PWludCBCUEZfUFJPRyhoaWRfc2Vjb25kX2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTY1LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NjY6XFx0X191OCAqcndfZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDQgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTY3LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTgyPWludCBCUEZfUFJPRyhoaWRfY2hhbmdlX3JlcG9ydF9pZCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy04My17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjg0OlxcdF9fdTggKnJ3X2RhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCAzIC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy04NS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0yMjE9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yMjIte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyMjM6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTIyNC1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0yNDU9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yNDYte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyNDc6XFx0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjQ4LVxcdFxcdGdldF9kYXRhX292ZXJmbG93X2NoZWNrID0gMTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0yNTk9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjYwLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6MjYxOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCA0IC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yNjItXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9MjgyPWludCBCUEZfUFJPRyhoaWRfdGVzdF9pbnNlcnQyLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTI4My17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjI4NDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgNCAvKiBzaXplICovKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjg1LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTMwND1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0Mywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0zMDUte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzozMDY6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDQgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTMwNy1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0zNDc9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2hpZHJhd19yYXdfcmVxdWVzdCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCB1bnNpZ25lZCBjaGFyIHJlcG9ydG51bSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0zNDkte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzozNTA6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTM1MS1cXHRpbnQgcmV0O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTM3OD1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5maW5pdGVfbG9vcF9yYXdfcmVxdWVzdCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCB1bnNpZ25lZCBjaGFyIHJlcG9ydG51bSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0zODAte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzozODE6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTM4Mi1cXHRpbnQgcmV0O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTQxNz1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaGlkcmF3X291dHB1dF9yZXBvcnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eCwgX191NjQgc291cmNlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00MTgte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo0MTk6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTQyMC1cXHRpbnQgcmV0O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTQzOD1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5maW5pdGVfbG9vcF9vdXRwdXRfcmVwb3J0LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgsIF9fdTY0IHNvdXJjZSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNDM5LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NDQwOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAzIC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00NDEtXFx0aW50IHJldDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01MTU9aW50IEJQRl9QUk9HKGhpZF90ZXN0X211bHRpcGx5X2V2ZW50c193cSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy01MTYte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo1MTc6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTUxOC1cXHRpbnQgaGlkID0gaGlkX2N0eC1cXHUwMDNlaGlkLVxcdTAwM2VpZDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01NDI9aW50IEJQRl9QUk9HKGhpZF90ZXN0X211bHRpcGx5X2V2ZW50cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy01NDMte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo1NDQ6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTU0NS1cXHRfX3U4IGJ1Zls5XTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01ODE9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luZmluaXRlX2xvb3BfaW5wdXRfcmVwb3J0LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNTgzLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NTg0OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA2IC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy01ODUtXFx0X191OCBidWZbNl07XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmg9ODg9c3RydWN0IGhpZF9icGZfb3BzIHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0xMDYtLyogZm9sbG93aW5nIGFyZSBrZnVuY3MgZXhwb3J0ZWQgYnkgSElEIGZvciBISUQtQlBGICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oOjEwNzpleHRlcm4gX191OCAqaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmgtMTA4LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjUzOjEyLjcyMjY4OTM5OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NjU1Njg2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgQlBGIEtmdW5jIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYGhpZF9icGZfZ2V0X2RhdGFgIGZ1bmN0aW9uLiBUaGlzIGlzIGEgQlBGIGtmdW5jLCB3aGljaCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIEl0IGxpdmVzIGluIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jYCDigJMgYSBkZXRhaWwgdG8gbm90ZSBmb3IgbGF0ZXIgcmVmZXJlbmNlLCBvZiBjb3Vyc2UuIE15IGZpcnN0IHRob3VnaHQgaXMgYWJvdXQgaXRzIHB1cnBvc2U7IGl0J3MgdXNlZCBieSBCUEYgcHJvZ3JhbXMgdG8gcmVhZCBkYXRhIGZyb20gYSBISUQgZGV2aWNlJ3MgYnVmZmVyLCBzbyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgY3JpdGljYWwgaW50ZXJmYWNlLlxuXG5UaGUgY29yZSBvZiB0aGUgaXNzdWUgaXMgYW4gaW50ZWdlciBvdmVyZmxvdy4gRXNzZW50aWFsbHksIGByZHdyX2J1Zl9zaXplICsgb2Zmc2V0YCBwb3RlbnRpYWxseSB3cmFwcyBhcm91bmQgaWYgYHJkd3JfYnVmX3NpemVgIGlzIGNsb3NlIHRvIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGFuIHVuc2lnbmVkIGxvbmcgbG9uZyAoaS5lLiwgYH4wVUxMYCkuIFRoaXMgd3JhcC1hcm91bmQgY291bGQgcmVzdWx0IGluIGByZHdyX2J1Zl9zaXplICsgb2Zmc2V0YCBiZWluZyAqc21hbGxlciogdGhhbiBgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplYCwgd2hpY2ggaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgYWNjZXNzIHNjZW5hcmlvLiBXZSd2ZSBnb3QgYSBwb3RlbnRpYWwgc2VjdXJpdHkgaG9sZSBoZXJlOyBJIGFtIGFscmVhZHkgZm9ybWluZyBhIG1lbnRhbCBjaGVja2xpc3Qgb2YgZXhwbG9pdHMhXG5cblRoaXMgaXMgYSAqKmZ1bmN0aW9uYWwgY2hhbmdlKiogYW5kIGEgKipzZWN1cml0eSBmaXgqKiByb2xsZWQgaW50byBvbmUsIGltcGFjdGluZyBob3cgQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggSElEIGRhdGEuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCdzIGRpcmVjdGx5IHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBISUQgZGV2aWNlcy4gVGhlIGF0dGFjayBzdXJmYWNlIGlzIHByZXR0eSBjbGVhciBub3cuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSB0ZXN0ZWQgdmlnb3JvdXNseS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgbmVlZCBgQ09ORklHX0hJRF9CUEZgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBlbmFibGVkIHRvIHJlcHJvZHVjZSB0aGlzLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgYGRyaXZlcnMvaGlkL2JwZi9LY29uZmlnYCBvciBwb3NzaWJseSBgZHJpdmVycy9oaWQvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBzZXR0aW5ncyBhcmUgcHJlc2VudC4gSSBhbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IGNyZWF0aW5nIGEgZnV6emluZyBjYW1wYWlnbiB0byB0YXJnZXQgdGhpcyB2dWxuZXJhYmlsaXR5IGFzIGEgdG9wIHByaW9yaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzA5OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzo1MzoxOC42ODgyNjA5NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMzQ2MDgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSElEX0JQRlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2hpZC9icGYvS2NvbmZpZz0yPW1lbnUgXFxcIkhJRC1CUEYgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZy0zLVxcbmRyaXZlcnMvaGlkL2JwZi9LY29uZmlnOjQ6Y29uZmlnIEhJRF9CUEZcXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZy01LVxcdGJvb2wgXFxcIkhJRC1CUEYgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MjEuMjAxNzI3NjkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU2NDIzOTI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyB0YXNrOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZGVwZW5kZW50IG9uIHNvbWV0aGluZywgYW5kIHRoZSBzdGFydGluZyBwb2ludCBpcyBgZHJpdmVycy9oaWQvYnBmL0tjb25maWdgLiBNeSBleHBlcnRpc2UgaW4ga2VybmVsIGNvbmZpZ3VyYXRpb24gdGVsbHMgbWUgdGhpcyBmaWxlIGxpa2VseSBkZWZpbmVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBISUQgc3Vic3lzdGVtJ3MgQlBGIGZ1bmN0aW9uYWxpdHkuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHRoaXMgZmlsZSBmb3IgZGVwZW5kZW5jeSBkZWNsYXJhdGlvbnMuIFRoaXMgd2lsbCBpbmRpY2F0ZSB3aGljaCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBtaWdodCByZXF1aXJlIG9yIHJlbHkgdXBvbiB0aGUgb3B0aW9ucyBkZWZpbmVkIHdpdGhpbiBgS2NvbmZpZ2AuIFRoaXMgaXMgYSBjbGFzc2ljIGRlcGVuZGVuY3kgYW5hbHlzaXMgc2NlbmFyaW8sIHRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlLiBMZXQncyBnZXQgdG8gaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODI4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MjguNzY1OTcwMTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9oaWQvYnBmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnUgXFxcIkhJRC1CUEYgc3VwcG9ydFxcXCJcXG4gICAzOlxcdFxcbiAgIDQ6XFx0Y29uZmlnIEhJRF9CUEZcXG4gICA1OlxcdFxcdGJvb2wgXFxcIkhJRC1CUEYgc3VwcG9ydFxcXCJcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gQlBGX0pJVFxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0VGhpcyBvcHRpb24gYWxsb3dzIHRvIHN1cHBvcnQgZUJQRiBwcm9ncmFtcyBvbiB0aGUgSElEIHN1YnN5c3RlbS5cXG4gIDExOlxcdFxcdGVCUEYgcHJvZ3JhbXMgY2FuIGZpeCBISUQgZGV2aWNlcyBpbiBhIGxpZ2h0ZXIgd2F5IHRoYW4gYSBmdWxsXFxuICAxMjpcXHRcXHRrZXJuZWwgcGF0Y2ggYW5kIGFsbG93IGEgbG90IG1vcmUgZmxleGliaWxpdHkuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdEZvciBkb2N1bWVudGF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3RcXG4gIDE1OlxcdFxcbiAgMTY6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzo1MzoyOC43NjYwNzQxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTk5Nzk3OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBISURfQlBGIENvbmZpZ3VyYXRpb24gYW5kIEFzc29jaWF0ZWQgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYEhJRF9CUEZgIGNvbmZpZ3VyYXRpb24sIHRoYXQncyB0aGUgY29yZSBvZiBpdC4gUmlnaHQgbm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIG5ldyBjb25maWd1cmF0aW9uIGFuZCBob3cgaXQgZnVuY3Rpb25zLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gdGhhdCBzeW1ib2wsIGBoaWRfYnBmX2dldF9kYXRhYC5cblxuQmV5b25kIHRoZSBjb3JlIGNvbmZpZywgSSBzZWUgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyB0aGUgc2VsZnRlc3RzLiBJdCdzIG1vZGlmeWluZyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGNoYW5nZXMgaW5jbHVkZSB1cGRhdGVzIHRvIGhvdyB0aGUgQlBGIGZ1bmN0aW9uYWxpdHkgaXMgdGVzdGVkLCB3aGljaCBpcyBnb29kLiBJbXBvcnRhbnQgdGhhdCB0aGV5IHZlcmlmeSB0aGF0IGZ1bmN0aW9uYWxpdHkuXG5cbk5leHQsIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGhpZF9icGZfZ2V0X2RhdGFgIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBmdW5jdGlvbnMuIFRoYXQgbGlrZWx5IGhhcHBlbnMgaW4gYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgLCBzbyB0aGF0J3Mgd2hlcmUgSSB3aWxsIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI0OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjUzOjMyLjg2NjA1NzI3NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyODA6XFx0XFx0cmV0dXJuIDA7XFxuIDI4MTpcXHR9XFxuIDI4MjpcXHRcXG4gMjgzOlxcdC8qIERpc2FibGVzIG1pc3NpbmcgcHJvdG90eXBlIHdhcm5pbmdzICovXFxuIDI4NDpcXHRfX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XFxuIDI4NTpcXHRcXG4gMjg2OlxcdC8qKlxcbiAyODc6XFx0ICogaGlkX2JwZl9nZXRfZGF0YSAtIEdldCB0aGUga2VybmVsIG1lbW9yeSBwb2ludGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGV4dCBAY3R4XFxuIDI4ODpcXHQgKlxcbiAyODk6XFx0ICogQGN0eDogVGhlIEhJRC1CUEYgY29udGV4dFxcbiAyOTA6XFx0ICogQG9mZnNldDogVGhlIG9mZnNldCB3aXRoaW4gdGhlIG1lbW9yeVxcbiAyOTE6XFx0ICogQHJkd3JfYnVmX3NpemU6IHRoZSBjb25zdCBzaXplIG9mIHRoZSBidWZmZXJcXG4gMjkyOlxcdCAqXFxuIDI5MzpcXHQgKiBAcmV0dXJucyAlTlVMTCBvbiBlcnJvciwgYW4gJV9fdTggbWVtb3J5IHBvaW50ZXIgb24gc3VjY2Vzc1xcbiAyOTQ6XFx0ICovXFxuIDI5NTpcXHRfX2JwZl9rZnVuYyBfX3U4ICpcXG4gMjk2OlxcdGhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsIHVuc2lnbmVkIGludCBvZmZzZXQsIGNvbnN0IHNpemVfdCByZHdyX2J1Zl9zaXplKVxcbiAyOTc6XFx0e1xcbiAyOTg6XFx0XFx0c3RydWN0IGhpZF9icGZfY3R4X2tlcm4gKmN0eF9rZXJuO1xcbiAyOTk6XFx0XFxuIDMwMDpcXHRcXHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xcbiAzMDE6XFx0XFxuIDMwMjpcXHRcXHRpZiAob2Zmc2V0IFxcdTAwM2UgY3R4LVxcdTAwM2VhbGxvY2F0ZWRfc2l6ZSB8fFxcbiAzMDM6XFx0XFx0ICAgIHJkd3JfYnVmX3NpemUgXFx1MDAzZSBjdHgtXFx1MDAzZWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0KVxcbiAzMDQ6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDMwNTpcXHRcXG4gMzA2OlxcdFxcdHJldHVybiBjdHhfa2Vybi1cXHUwMDNlZGF0YSArIG9mZnNldDtcXG4gMzA3OlxcdH1cXG4gMzA4OlxcdFxcbiAzMDk6XFx0LyoqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjUzOjMyLjg2NjI2NDU3NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODAxNjAzNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkFuYWx5c2lzIG9mIHRoZSBISUQgQlBGIFBhdGNoKipcblxuT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIHRoYXQncyBmaXhpbmcgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IHdpdGhpbiBgaGlkX2JwZl9nZXRfZGF0YWAuIFRoaXMgaXMgYSBCUEYga2Z1bmMsIHdoaWNoIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gQW55dGltZSB3ZSBzZWUgYSBmaXggbGlrZSB0aGlzLCBlc3BlY2lhbGx5IHdpdGhpbiBCUEYsIGZ1enppbmcgYmVjb21lcyBhIHRvcCBwcmlvcml0eS4gVGhlIGF0dGFjayBzdXJmYWNlIGhlcmUgaXMgY2xlYXJseSB0aGUgYGhpZF9icGZfZ2V0X2RhdGFgIGZ1bmN0aW9uIGl0c2VsZi4gVGhlIGZpeCBzaG91bGQgYmUgcmlnb3JvdXNseSB0ZXN0ZWQuXG5cbk15IGZvY3VzIGhhcyB0byBiZSBsYXNlci1zaGFycCBvbiB0aGF0IGZ1bmN0aW9uLiBUbyBlbnN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyB2dWxuZXJhYmlsaXR5IGZpeCBpcyBpc29sYXRlZCB0byBgaGlkX2JwZl9nZXRfZGF0YWAuIExldCBtZSBjaGVjayB0aGUgY29kZSBtb2RpZmljYXRpb25zLiBBaCwgeWVzLCBpdCBhcHBlYXJzIHRoYXQgYGhpZF9icGZfZ2V0X2RhdGFgIGlzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW4gYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgLiBUaGUgcmVtYWluaW5nIG1vZGlmaWNhdGlvbnMgc2VlbSB0byBiZSBjb25maW5lZCB0byBzZWxmdGVzdHMsIHdoaWNoIGlzIGdvb2QuIFRoZXkgc2hvdWxkIGhlbHAsIGJ1dCB0aGUga2V5IGlzIHRoZSBtYWluIGZ1bmN0aW9uLlxuXG5Ob3cgdGhhdCBJJ3ZlIGNvbmZpcm1lZCB0aGUgc2NvcGUsIEknbGwgcmVjb3JkIHRoZXNlIGZpbmRpbmdzIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDY0LCJPdXRwdXRUb2tlbnMiOjEwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjUzOjQwLjY2Nzg3MzIwOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzcxNTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElEX0JQRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZF9icGZfZ2V0X2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gYGhpZF9icGZfZ2V0X2RhdGFgIHdoaWNoIGlzIGEgQlBGIGtmdW5jIHVzZWQgYnkgSElELUJQRiBwcm9ncmFtcyB0byBhY2Nlc3MgZGV2aWNlIGRhdGEgYnVmZmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgc2VjdXJpdHkgZml4IHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gSElEIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElEX0JQRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZF9icGZfZ2V0X2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gYGhpZF9icGZfZ2V0X2RhdGFgIHdoaWNoIGlzIGEgQlBGIGtmdW5jIHVzZWQgYnkgSElELUJQRiBwcm9ncmFtcyB0byBhY2Nlc3MgZGV2aWNlIGRhdGEgYnVmZmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgc2VjdXJpdHkgZml4IHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gSElEIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowvnpwp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 07:43:59 +0000 UTC FinishedAt: 2026-06-22 07:53:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "83f1454877cc292b88baf13c829c16ce6937d120", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HID_BPF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "83f1454877cc292b88baf13c829c16ce6937d120", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HID_BPF" ], "series_id": "58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "hid_bpf_get_data" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hJRF9CUEYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoaWRfYnBmX2dldF9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiBgaGlkX2JwZl9nZXRfZGF0YWAgd2hpY2ggaXMgYSBCUEYga2Z1bmMgdXNlZCBieSBISUQtQlBGIHByb2dyYW1zIHRvIGFjY2VzcyBkZXZpY2UgZGF0YSBidWZmZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBzZWN1cml0eSBmaXggdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBISUQgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQxZmE5YTNlNTY0MDBkMjU0Zjg3MjZhNjI2YzVmNTBkNjg1MzMzMWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwNzo1MzowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuaW5kZXggZDAxMzA2NTgwOTFiMDIuLjA5YjQ1YzQwZDg0ZjBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1xuQEAgLTI5OSw3ICYjNDM7Mjk5LDggQEAgaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCwgdW5zaWduZWQgaW50IG9mZnNldCwgY29uc3Qgc2l6ZV90IHJkd3JcbiBcbiBcdGN0eF9rZXJuID0gY29udGFpbmVyX29mKGN0eCwgc3RydWN0IGhpZF9icGZfY3R4X2tlcm4sIGN0eCk7XG4gXG4tXHRpZiAocmR3cl9idWZfc2l6ZSAmIzQzOyBvZmZzZXQgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSlcbiYjNDM7XHRpZiAob2Zmc2V0IFx1MDAzZSBjdHgtXHUwMDNlYWxsb2NhdGVkX3NpemUgfHxcbiYjNDM7XHQgICAgcmR3cl9idWZfc2l6ZSBcdTAwM2UgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0KVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHJldHVybiBjdHhfa2Vybi1cdTAwM2VkYXRhICYjNDM7IG9mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcbmluZGV4IDUwZWM5ZTA0MDZhYmFmLi4zNTdjNmViNWZmNWVlMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXG5AQCAtMjQsNyAmIzQzOzI0LDcgQEAgQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzO1xuIFxuIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWdcbiBcbi1DRkxBR1MgJiM0Mzs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKVxuJiM0MztDRkxBR1MgJiM0Mzs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpXG4gQ0ZMQUdTICYjNDM7PSAtSSQoT1VUUFVUKS90b29scy9pbmNsdWRlXG4gXG4gTERMSUJTICYjNDM7PSAtbGVsZiAtbHogLWxydCAtbHB0aHJlYWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xuaW5kZXggMWU5NzlmYjM1NDJiYWIuLmI4NTEzMzkzMDhjMjE0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xuQEAgLTg2LDYgJiM0Mzs4NiwyMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdHNlbGYtXHUwMDNlc2tlbCA9IGhpZF9fb3BlbigpO1xuIFx0QVNTRVJUX09LX1BUUihzZWxmLVx1MDAzZXNrZWwpIFRFQVJET1dOX0xPRyhcJiMzNDtFcnJvciB3aGlsZSBjYWxsaW5nIGhpZF9fb3BlblwmIzM0Oyk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBEaXNhYmxlIGFsbCBzdHJ1Y3Rfb3BzIG1hcHMgYnkgZGVmYXVsdCBzbyBsaWJicGYgZG9lcyBub3QgYXV0b2xvYWRcbiYjNDM7XHQgKiBwcm9ncmFtcyByZWZlcmVuY2VkIGJ5IG1hcHMgdGhhdCBhcmUgdW5yZWxhdGVkIHRvIHRoZSBjdXJyZW50IHRlc3QuXG4mIzQzO1x0ICovXG4mIzQzO1x0YnBmX29iamVjdF9fZm9yX2VhY2hfbWFwKGl0ZXJfbWFwLCAqc2VsZi1cdTAwM2Vza2VsLVx1MDAzZXNrZWxldG9uLVx1MDAzZW9iaikge1xuJiM0MztcdFx0aWYgKGJwZl9tYXBfX3R5cGUoaXRlcl9tYXApID09IEJQRl9NQVBfVFlQRV9TVFJVQ1RfT1BTKSB7XG4mIzQzO1x0XHRcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7XG4mIzQzO1x0XHRcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcJiMzNDtjYW4gbm90IGRpc2FibGUgc3RydWN0X29wcyBtYXAgJiMzOTslcyYjMzk7XCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBwcm9nc19jb3VudDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xuIFx0XHRzdHJ1Y3QgYnBmX21hcCAqbWFwO1xuQEAgLTEwMiw2ICYjNDM7MTE2LDEwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuIFx0XHRBU1NFUlRfT0tfUFRSKG1hcCkgVEhfTE9HKFwmIzM0O2NhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJiMzOTslcyYjMzk7XCYjMzQ7LFxuIFx0XHRcdFx0XHQgIHByb2dyYW1zW2ldLm5hbWUgJiM0MzsgNCk7XG4gXG4mIzQzO1x0XHRlcnIgPSBicGZfbWFwX19zZXRfYXV0b2NyZWF0ZShtYXAsIHRydWUpO1xuJiM0MztcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwmIzM0O2NhbiBub3QgZW5hYmxlIHN0cnVjdF9vcHMgbWFwICYjMzk7JXMmIzM5O1wmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgICBwcm9ncmFtc1tpXS5uYW1lICYjNDM7IDQpO1xuJiM0MztcbiBcdFx0LyogaGlkX2lkIGlzIHRoZSBmaXJzdCBmaWVsZCBvZiBzdHJ1Y3QgaGlkX2JwZl9vcHMgKi9cbiBcdFx0b3BzX2hpZF9pZCA9IGJwZl9tYXBfX2luaXRpYWxfdmFsdWUobWFwLCBOVUxMKTtcbiBcdFx0QVNTRVJUX09LX1BUUihvcHNfaGlkX2lkKSBUSF9MT0coXCYjMzQ7dW5hYmxlIHRvIHJldHJpZXZlIHN0cnVjdF9vcHMgZGF0YVwmIzM0Oyk7XG5AQCAtMTA5LDEzICYjNDM7MTI3LDYgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4gXHRcdCpvcHNfaGlkX2lkID0gc2VsZi1cdTAwM2VoaWQuaGlkX2lkO1xuIFx0fVxuIFxuLVx0Lyogd2UgZGlzYWJsZSB0aGUgYXV0by1hdHRhY2ggZmVhdHVyZSBvZiBhbGwgbWFwcyBiZWNhdXNlIHdlXG4tXHQgKiBvbmx5IHdhbnQgdGhlIHRlc3RlZCBvbmUgdG8gYmUgbWFudWFsbHkgYXR0YWNoZWQgaW4gdGhlIG5leHRcbi1cdCAqIGNhbGwgdG8gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoKVxuLVx0ICovXG4tXHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVx1MDAzZXNrZWwtXHUwMDNlc2tlbGV0b24tXHUwMDNlb2JqKVxuLVx0XHRicGZfbWFwX19zZXRfYXV0b2F0dGFjaChpdGVyX21hcCwgZmFsc2UpO1xuLVxuIFx0ZXJyID0gaGlkX19sb2FkKHNlbGYtXHUwMDNlc2tlbCk7XG4gXHRBU1NFUlRfT0soZXJyKSBUSF9MT0coXCYjMzQ7aGlkX3NrZWxfbG9hZCBmYWlsZWQ6ICVkXCYjMzQ7LCBlcnIpO1xuIFxuQEAgLTg4Nyw2ICYjNDM7ODk4LDE3IEBAIFRFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwKVxuIFx0QVNTRVJUX0VRKHJwdF9kZXNjLnZhbHVlWzRdLCAweDQyKTtcbiB9XG4gXG4mIzQzO1RFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93KVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9nc1tdID0ge1xuJiM0MztcdFx0eyAubmFtZSA9IFwmIzM0O2hpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvd1wmIzM0OyB9LFxuJiM0MztcdH07XG4mIzQzO1xuJiM0MztcdExPQURfUFJPR1JBTVMocHJvZ3MpO1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfRVEoc2VsZi1cdTAwM2Vza2VsLVx1MDAzZWJzcy1cdTAwM2VnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBsaWJicGZfcHJpbnRfZm4oZW51bSBsaWJicGZfcHJpbnRfbGV2ZWwgbGV2ZWwsXG4gXHRcdFx0ICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuaW5kZXggNWVjYzg0NWVmNzkyMTYuLmIyMWZiYjEzYzkyNmY4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbkBAIC0xMyw2ICYjNDM7MTMsNyBAQCBzdHJ1Y3QgYXR0YWNoX3Byb2dfYXJncyB7XG4gXG4gX191NjQgY2FsbGJhY2tfY2hlY2sgPSA1MjtcbiBfX3U2NCBjYWxsYmFjazJfY2hlY2sgPSA1MjtcbiYjNDM7X191NjQgZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2s7XG4gXG4gU0VDKFwmIzM0Oz9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcJiMzNDspXG4gaW50IEJQRl9QUk9HKGhpZF9maXJzdF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxuQEAgLTI0MCw2ICYjNDM7MjQxLDIwIEBAIHN0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cCA9IHtcbiBcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cCxcbiB9O1xuIFxuJiM0MztTRUMoXCYjMzQ7P3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eClcbiYjNDM7e1xuJiM0MztcdGlmICghaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAyIC8qIG9mZnNldCAqLywgfjBVTEwgLyogc2l6ZSAqLykpXG4mIzQzO1x0XHRnZXRfZGF0YV9vdmVyZmxvd19jaGVjayA9IDE7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7LnN0cnVjdF9vcHMubGlua1wmIzM0OylcbiYjNDM7c3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93ID0ge1xuJiM0MztcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyxcbiYjNDM7fTtcbiYjNDM7XG4gU0VDKFwmIzM0Oz9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcJiMzNDspXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SElEX0JQRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpZF9icGZfZ2V0X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIGBoaWRfYnBmX2dldF9kYXRhYCB3aGljaCBpcyBhIEJQRiBrZnVuYyB1c2VkIGJ5IEhJRC1CUEYgcHJvZ3JhbXMgdG8gYWNjZXNzIGRldmljZSBkYXRhIGJ1ZmZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIHNlY3VyaXR5IGZpeCB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIEhJRCBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MWZhOWEzZTU2NDAwZDI1NGY4NzI2YTYyNmM1ZjUwZDY4NTMzMzFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMDc6NTM6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYwppbmRleCBkMDEzMDY1ODA5MWIwMi4uMDliNDVjNDBkODRmMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYwpAQCAtMjk5LDcgJiM0MzsyOTksOCBAQCBoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cgogCiAJY3R4X2tlcm4gPSBjb250YWluZXJfb2YoY3R4LCBzdHJ1Y3QgaGlkX2JwZl9jdHhfa2VybiwgY3R4KTsKIAotCWlmIChyZHdyX2J1Zl9zaXplICYjNDM7IG9mZnNldCAmZ3Q7IGN0eC0mZ3Q7YWxsb2NhdGVkX3NpemUpCiYjNDM7CWlmIChvZmZzZXQgJmd0OyBjdHgtJmd0O2FsbG9jYXRlZF9zaXplIHx8CiYjNDM7CSAgICByZHdyX2J1Zl9zaXplICZndDsgY3R4LSZndDthbGxvY2F0ZWRfc2l6ZSAtIG9mZnNldCkKIAkJcmV0dXJuIE5VTEw7CiAKIAlyZXR1cm4gY3R4X2tlcm4tJmd0O2RhdGEgJiM0Mzsgb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlCmluZGV4IDUwZWM5ZTA0MDZhYmFmLi4zNTdjNmViNWZmNWVlMyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZQpAQCAtMjQsNyAmIzQzOzI0LDcgQEAgQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzOwogCiBIT1NUUEtHX0NPTkZJRyA6PSBwa2ctY29uZmlnCiAKLUNGTEFHUyAmIzQzOz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpCiYjNDM7Q0ZMQUdTICYjNDM7PSAtZyAtTzAgLXJkeW5hbWljIC1XYWxsIC1XZXJyb3IgLUkkKE9VVFBVVCkgJChLSERSX0lOQ0xVREVTKQogQ0ZMQUdTICYjNDM7PSAtSSQoT1VUUFVUKS90b29scy9pbmNsdWRlCiAKIExETElCUyAmIzQzOz0gLWxlbGYgLWx6IC1scnQgLWxwdGhyZWFkCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYwppbmRleCAxZTk3OWZiMzU0MmJhYi4uYjg1MTMzOTMwOGMyMTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYwpAQCAtODYsNiAmIzQzOzg2LDIwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAogCXNlbGYtJmd0O3NrZWwgPSBoaWRfX29wZW4oKTsKIAlBU1NFUlRfT0tfUFRSKHNlbGYtJmd0O3NrZWwpIFRFQVJET1dOX0xPRygmIzM0O0Vycm9yIHdoaWxlIGNhbGxpbmcgaGlkX19vcGVuJiMzNDspOwogCiYjNDM7CS8qCiYjNDM7CSAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZAomIzQzOwkgKiBwcm9ncmFtcyByZWZlcmVuY2VkIGJ5IG1hcHMgdGhhdCBhcmUgdW5yZWxhdGVkIHRvIHRoZSBjdXJyZW50IHRlc3QuCiYjNDM7CSAqLwomIzQzOwlicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLSZndDtza2VsLSZndDtza2VsZXRvbi0mZ3Q7b2JqKSB7CiYjNDM7CQlpZiAoYnBmX21hcF9fdHlwZShpdGVyX21hcCkgPT0gQlBGX01BUF9UWVBFX1NUUlVDVF9PUFMpIHsKJiM0MzsJCQllcnIgPSBicGZfbWFwX19zZXRfYXV0b2NyZWF0ZShpdGVyX21hcCwgZmFsc2UpOwomIzQzOwkJCUFTU0VSVF9PSyhlcnIpIFRIX0xPRygmIzM0O2NhbiBub3QgZGlzYWJsZSBzdHJ1Y3Rfb3BzIG1hcCAmIzM5OyVzJiMzOTsmIzM0OywKJiM0MzsJCQkJCSAgICAgIGJwZl9tYXBfX25hbWUoaXRlcl9tYXApKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7CiYjNDM7CX0KJiM0MzsKIAlmb3IgKGludCBpID0gMDsgaSAmbHQ7IHByb2dzX2NvdW50OyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7CiAJCXN0cnVjdCBicGZfbWFwICptYXA7CkBAIC0xMDIsNiAmIzQzOzExNiwxMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSwKIAkJQVNTRVJUX09LX1BUUihtYXApIFRIX0xPRygmIzM0O2NhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJiMzOTslcyYjMzk7JiMzNDssCiAJCQkJCSAgcHJvZ3JhbXNbaV0ubmFtZSAmIzQzOyA0KTsKIAomIzQzOwkJZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUobWFwLCB0cnVlKTsKJiM0MzsJCUFTU0VSVF9PSyhlcnIpIFRIX0xPRygmIzM0O2NhbiBub3QgZW5hYmxlIHN0cnVjdF9vcHMgbWFwICYjMzk7JXMmIzM5OyYjMzQ7LAomIzQzOwkJCQkgICAgICBwcm9ncmFtc1tpXS5uYW1lICYjNDM7IDQpOwomIzQzOwogCQkvKiBoaWRfaWQgaXMgdGhlIGZpcnN0IGZpZWxkIG9mIHN0cnVjdCBoaWRfYnBmX29wcyAqLwogCQlvcHNfaGlkX2lkID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIE5VTEwpOwogCQlBU1NFUlRfT0tfUFRSKG9wc19oaWRfaWQpIFRIX0xPRygmIzM0O3VuYWJsZSB0byByZXRyaWV2ZSBzdHJ1Y3Rfb3BzIGRhdGEmIzM0Oyk7CkBAIC0xMDksMTMgJiM0MzsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSwKIAkJKm9wc19oaWRfaWQgPSBzZWxmLSZndDtoaWQuaGlkX2lkOwogCX0KIAotCS8qIHdlIGRpc2FibGUgdGhlIGF1dG8tYXR0YWNoIGZlYXR1cmUgb2YgYWxsIG1hcHMgYmVjYXVzZSB3ZQotCSAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dAotCSAqIGNhbGwgdG8gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoKQotCSAqLwotCWJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtJmd0O3NrZWwtJmd0O3NrZWxldG9uLSZndDtvYmopCi0JCWJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7Ci0KIAllcnIgPSBoaWRfX2xvYWQoc2VsZi0mZ3Q7c2tlbCk7CiAJQVNTRVJUX09LKGVycikgVEhfTE9HKCYjMzQ7aGlkX3NrZWxfbG9hZCBmYWlsZWQ6ICVkJiMzNDssIGVycik7CiAKQEAgLTg4Nyw2ICYjNDM7ODk4LDE3IEBAIFRFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwKQogCUFTU0VSVF9FUShycHRfZGVzYy52YWx1ZVs0XSwgMHg0Mik7CiB9CiAKJiM0MztURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdykKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3NbXSA9IHsKJiM0MzsJCXsgLm5hbWUgPSAmIzM0O2hpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyYjMzQ7IH0sCiYjNDM7CX07CiYjNDM7CiYjNDM7CUxPQURfUFJPR1JBTVMocHJvZ3MpOwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2VsZi0mZ3Q7c2tlbC0mZ3Q7YnNzLSZndDtnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBsaWJicGZfcHJpbnRfZm4oZW51bSBsaWJicGZfcHJpbnRfbGV2ZWwgbGV2ZWwsCiAJCQkgICBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYwppbmRleCA1ZWNjODQ1ZWY3OTIxNi4uYjIxZmJiMTNjOTI2ZjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMKQEAgLTEzLDYgJiM0MzsxMyw3IEBAIHN0cnVjdCBhdHRhY2hfcHJvZ19hcmdzIHsKIAogX191NjQgY2FsbGJhY2tfY2hlY2sgPSA1MjsKIF9fdTY0IGNhbGxiYWNrMl9jaGVjayA9IDUyOwomIzQzO19fdTY0IGdldF9kYXRhX292ZXJmbG93X2NoZWNrOwogCiBTRUMoJiMzNDs/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50JiMzNDspCiBpbnQgQlBGX1BST0coaGlkX2ZpcnN0X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpCkBAIC0yNDAsNiAmIzQzOzI0MSwyMCBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXAgPSB7CiAJLmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwLAogfTsKIAomIzQzO1NFQygmIzM0Oz9zdHJ1Y3Rfb3BzLnMvaGlkX3JkZXNjX2ZpeHVwJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KQomIzQzO3sKJiM0MzsJaWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSkKJiM0MzsJCWdldF9kYXRhX292ZXJmbG93X2NoZWNrID0gMTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmsmIzM0OykKJiM0MztzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7CiYjNDM7CS5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywKJiM0Mzt9OwomIzQzOwogU0VDKCYjMzQ7P3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudCYjMzQ7KQogaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzMgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgSElEIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBib3RoIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jYCBhbmQgYWRkcyBhIHRlc3QgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoaXMgcG90ZW50aWFsbHkgY3J1Y2lhbCBmaXggaW4gYGhpZF9icGZfZGlzcGF0Y2guY2AuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIHZ1bG5lcmFiaWxpdHk6IGFuIGludGVnZXIgb3ZlcmZsb3cgY291bGQgb2NjdXIgd2hlbiBjYWxjdWxhdGluZyBgcmR3cl9idWZfc2l6ZSAmIzQzOyBvZmZzZXRgLiBUaGUgc3VtIGNvdWxkIHdyYXAgYXJvdW5kLCByZXN1bHRpbmcgaW4gYW4gaW5jb3JyZWN0IGNvbXBhcmlzb24gd2l0aCBgY3R4LSZndDthbGxvY2F0ZWRfc2l6ZWAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciB3cml0ZXMsIHJpZ2h0PyBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgY2hhbmdpbmcgdGhlIGNoZWNrIHRvIHR3byBzZXBhcmF0ZSBjaGVja3MuIE9uZSBlbnN1cmVzIHRoYXQgYG9mZnNldGAgaXRzZWxmIGlzbiYjMzk7dCBncmVhdGVyIHRoYW4gYGN0eC0mZ3Q7YWxsb2NhdGVkX3NpemVgLCBhbmQgdGhlIG90aGVyIG1ha2VzIHN1cmUgYHJkd3JfYnVmX3NpemVgIGlzbiYjMzk7dCBncmVhdGVyIHRoYW4gdGhlIHJlbWFpbmluZyBhdmFpbGFibGUgc2l6ZS4gVGhpcyBpcyBhIHNvbGlkIGFwcHJvYWNoIHRvIHByZXZlbnQgdGhhdCBpbnRlZ2VyIG92ZXJmbG93LgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHJlYWNoYWJsZT8gSXMgaXQgZnVuY3Rpb25hbD8gV2hlcmUgaXMgdGhpcyBjb2RlIGFjdHVhbGx5IHVzZWQ/IFRoZSB2dWxuZXJhYmxlIGxvZ2ljIHJlc2lkZXMgaW4gYGhpZF9icGZfZ2V0X2RhdGFgLiBTbywgbGV0JiMzOTtzIGZpcmUgdXAgYSBncmVwIHNlYXJjaCBmb3IgYGhpZF9icGZfZ2V0X2RhdGFgIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgc2l0ZXMgYW5kIGRhdGEgZmxvdy4gS25vd2luZyB3aGVyZSB0aGlzIGlzIGludm9rZWQgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgaW1wYWN0IGFuZCBob3cgZWFzeSBpdCBpcyB0byB0cmlnZ2VyLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byByZWFsbHkgYW5hbHl6ZSB0aGUgcGF0Y2gmIzM5O3MgZWZmaWNhY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdD0xOTU9QXZhaWxhYmxlIEFQSSB0aGF0IGNhbiBiZSB1c2VkIGluIGFsbCBISUQtQlBGIHN0cnVjdF9vcHMgcHJvZ3JhbXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMTk4LS4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdDoxOTk6ICAgOmlkZW50aWZpZXJzOiBoaWRfYnBmX2dldF9kYXRhXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0yMDAtXG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q9MjEzPVRoZSBgYHN0cnVjdCBoaWRfYnBmX2N0eGBgIGRvZXNuJiMzOTt0IGV4cG9ydCB0aGUgYGBkYXRhYGAgZmllbGRzIGRpcmVjdGx5IGFuZCB0byBhY2Nlc3NcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjIxNDppdCwgYSBicGYgcHJvZ3JhbSBuZWVkcyB0byBmaXJzdCBjYWxsIDpjOmZ1bmM6YGhpZF9icGZfZ2V0X2RhdGFgLlxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMjE1LVxuLS1cbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0PTIxOT1UaGlzIGFsbG93cyB0aGUgZm9sbG93aW5nOlxuLS1cbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTIyNi1cbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjIyNzogICAgIF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGN0eCwgMCAvKiBvZmZzZXQgKi8sIDI1NiAvKiBzaXplICovKTtcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTIyOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0yMzctXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdDoyMzg6ICAgICAgX191MTYgKnggPSBoaWRfYnBmX2dldF9kYXRhKGN0eCwgb2Zmc2V0LCBzaXplb2YoKngpKTtcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTIzOS1cbi0tXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdD0yODc9T25jZSB0aGUgY29udGV4dCBpcyByZXRyaWV2ZWQsIG9uZSBjYW4gYWxzbyByZXF1ZXN0IGEgcG9pbnRlciB0byBrZXJuZWwgbWVtb3J5IHdpdGhcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjI4ODpoaWRfYnBmX2dldF9kYXRhKCkuIFRoaXMgbWVtb3J5IGlzIGJpZyBlbm91Z2ggdG8gc3VwcG9ydCBhbGwgaW5wdXQvb3V0cHV0L2ZlYXR1cmVcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTI4OS1yZXBvcnRzIG9mIHRoZSBnaXZlbiBkZXZpY2UuXG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q9MzcwPUZvciB0aGF0LCB3ZSBjYW4gY3JlYXRlIGEgYmFzaWMgc2tlbGV0b24gZm9yIG91ciBCUEYgcHJvZ3JhbTo6XG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzc5LSAgLyogSElELUJQRiBrZnVuYyBBUEkgZGVmaW5pdGlvbnMgKi9cbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjM4MDogIGV4dGVybiBfX3U4ICpoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzgxLVx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXG4tLVxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzkzLSAge1xuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6Mzk0Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDE5MiAvKiBzaXplICovKTtcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTM5NS1cdF9fdTggKmJ1Zjtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jPTI4ND1fX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XG4tLVxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYy0yODYtLyoqXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jOjI4NzogKiBoaWRfYnBmX2dldF9kYXRhIC0gR2V0IHRoZSBrZXJuZWwgbWVtb3J5IHBvaW50ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0IEBjdHhcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMtMjg4LSAqXG4tLVxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYz0yOTU9X19icGZfa2Z1bmMgX191OCAqXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jOjI5NjpoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cl9idWZfc2l6ZSlcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMtMjk3LXtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jPTU3ND1CVEZfS0ZVTkNTX1NUQVJUKGhpZF9icGZfa2Z1bmNfaWRzKVxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYzo1NzU6QlRGX0lEX0ZMQUdTKGZ1bmMsIGhpZF9icGZfZ2V0X2RhdGEsIEtGX1JFVF9OVUxMKVxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guYy01NzYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGhpZF9icGZfYWxsb2NhdGVfY29udGV4dCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfU0xFRVBBQkxFKVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM9MTM3PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjX3JhcHRvcl9tYWNoXzIsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmMtMTM4LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM6MTM5Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYy0xNDAtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYz0xNTY9aW50IEJQRl9QUk9HKHJhcHRvcl9tYWNoXzJfZml4X2hhdF9zd2l0Y2gsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmMtMTU3LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM6MTU4Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDY0IC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYy0xNTktXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0hQX19FbGl0ZS1QcmVzZW50ZXIuYnBmLmM9MzQ9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jLTM1LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jOjM2Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSFBfX0VsaXRlLVByZXNlbnRlci5icGYuYy0zNy1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYz00NDI9aW50IEJQRl9QUk9HKGRpYWxfMl9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jLTQ0My17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYzo0NDQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYy00NDUtXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cdTAwM2VzaXplO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jPTQ4OD1pbnQgQlBGX1BST0coZGlhbF8yX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jLTQ4OS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYzo0OTA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYy00OTEtXHRzdGF0aWMgX191OCBidXR0b247XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmM9MzgyPWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYy0zODMte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmM6Mzg0Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmMtMzg1LVx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhjdHgtXHUwMDNlc2l6ZTtcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYz00Mjc9aW50IEJQRl9QUk9HKGluc3Bpcm95XzJfZml4X2V2ZW50cywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmMtNDI4LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jOjQyOTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jLTQzMC1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYz0zODI9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1TLmJwZi5jLTM4My17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYzozODQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYy0zODUtXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cdTAwM2VzaXplO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1TLmJwZi5jPTQyOD1pbnQgQlBGX1BST0coaW5zcGlyb3lfMl9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYy00Mjkte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmM6NDMwOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDEwIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmMtNDMxLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzLVByby0xOS5icGYuYz0yNTg9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfaHVpb25fa2FtdmFzX3Byb18xOSwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jLTI1OS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmM6MjYwOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jLTI2MS1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmM9Mjg3PWludCBCUEZfUFJPRyhrYW12YXNfcHJvXzE5X2ZpeF8zcmRfYnV0dG9uLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmMtMjg4LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzLVByby0xOS5icGYuYzoyODk6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmMtMjkwLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jPTEyNDA9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfaHVpb25fa2FtdmFzMTNfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmMtMTI0MS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczEzR2VuMy5icGYuYzoxMjQyOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmMtMTI0My1cdF9fczMyIHJkZXNjX3NpemUgPSBoaWRfY3R4LVx1MDAzZXNpemU7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmM9MTI4ND1pbnQgQlBGX1BST0coaGlkX2ZpeF9ldmVudF9odWlvbl9rYW12YXMxM19nZW4zLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczEzR2VuMy5icGYuYy0xMjg1LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jOjEyODY6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgVkVORE9SX1JFUE9SVF9MRU5HVEggLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczEzR2VuMy5icGYuYy0xMjg3LVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jPTU1NT1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY19odWlvbl9rYW12YXMxNl9nZW4zLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYy01NTYte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmM6NTU3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmMtNTU4LVx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhpZF9jdHgtXHUwMDNlc2l6ZTtcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYz01OTk9aW50IEJQRl9QUk9HKGhpZF9maXhfZXZlbnRfaHVpb25fa2FtdmFzMTZfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmMtNjAwLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jOjYwMTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCBWRU5ET1JfUkVQT1JUX0xFTkdUSCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jLTYwMi1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jPTMzOD1pbnQgQlBGX1BST0coazIwX2J0X2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYy0zMzkte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYzozNDA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jLTM0MS1cdF9fczMyIHJkZXNjX3NpemUgPSBoY3R4LVx1MDAzZXNpemU7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYz0zNjA9aW50IEJQRl9QUk9HKGsyMF9idF9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jLTM2MS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jOjM2MjpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMiAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC1CbHVldG9vdGguYnBmLmMtMzYzLVx0c3RydWN0IHBhZF9yZXBvcnQge1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYz0zNDU9aW50IEJQRl9QUk9HKGsyMF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYy0zNDYte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLmJwZi5jOjM0NzpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYy0zNDgtXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cdTAwM2VzaXplO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYz0zODk9aW50IEJQRl9QUk9HKGsyMF9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzkwLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYzozOTE6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzkyLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jPTI1PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0lPR0VBUl9fS2FsaWJlci1NTU9tZW50dW0uYnBmLmMtMjctXHRjb25zdCB1OCBvZmZzZXRzW10gPSB7ODQsIDExMiwgMTQwfTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jOjI4Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSU9HRUFSX19LYWxpYmVyLU1NT21lbnR1bS5icGYuYy0yOS1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTG9naXRlY2hfX1NwYWNlTmF2aWdhdG9yLmJwZi5jPTI5PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTG9naXRlY2hfX1NwYWNlTmF2aWdhdG9yLmJwZi5jLTMwLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9Mb2dpdGVjaF9fU3BhY2VOYXZpZ2F0b3IuYnBmLmM6MzE6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9Mb2dpdGVjaF9fU3BhY2VOYXZpZ2F0b3IuYnBmLmMtMzItXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pY3Jvc29mdF9fWGJveC1FbGl0ZS0yLmJwZi5jPTk2PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTWljcm9zb2Z0X19YYm94LUVsaXRlLTIuYnBmLmMtOTcte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pY3Jvc29mdF9fWGJveC1FbGl0ZS0yLmJwZi5jOjk4Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTWljcm9zb2Z0X19YYm94LUVsaXRlLTIuYnBmLmMtOTktXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pc3RlbF9fTUQ3NzAuYnBmLmM9MTI3PWludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXBfbWlzdGVsX21kNzcwLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTWlzdGVsX19NRDc3MC5icGYuYy0xMjgte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pc3RlbF9fTUQ3NzAuYnBmLmM6MTI5Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCwgSElEX01BWF9ERVNDUklQVE9SX1NJWkUpO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pc3RlbF9fTUQ3NzAuYnBmLmMtMTMwLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9SYXBvb19fTTUwLVBsdXMtU2lsZW50LmJwZi5jPTEyMT1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX3JhcG9vX201MCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1JhcG9vX19NNTAtUGx1cy1TaWxlbnQuYnBmLmMtMTIyLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9SYXBvb19fTTUwLVBsdXMtU2lsZW50LmJwZi5jOjEyMzpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9SYXBvb19fTTUwLVBsdXMtU2lsZW50LmJwZi5jLTEyNC1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVFVYRURPX19TaXJpdXMtMTYtR2VuMS1hbmQtR2VuMi5icGYuYz0xNT1pbnQgQlBGX1BST0coaWdub3JlX2tleV9maXhfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eClcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVFVYRURPX19TaXJpdXMtMTYtR2VuMS1hbmQtR2VuMi5icGYuYy0yNC1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UVVhFRE9fX1Npcml1cy0xNi1HZW4xLWFuZC1HZW4yLmJwZi5jOjI1Olx0ZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCwgZXhwZWN0ZWRfbGVuZ3RoKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UVVhFRE9fX1Npcml1cy0xNi1HZW4xLWFuZC1HZW4yLmJwZi5jLTI2LVx0aWYgKCFkYXRhIHx8IGRhdGFbMF0gIT0gZXhwZWN0ZWRfcmVwb3J0X2lkKVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UaHJ1c3RtYXN0ZXJfX1RDQS1Zb2tlLUJvZWluZy5icGYuYz0xMDA9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfdGNhX3lva2UsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVGhydXN0bWFzdGVyX19UQ0EtWW9rZS1Cb2VpbmcuYnBmLmMtMTA2LVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RocnVzdG1hc3Rlcl9fVENBLVlva2UtQm9laW5nLmJwZi5jOjEwNzpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UaHJ1c3RtYXN0ZXJfX1RDQS1Zb2tlLUJvZWluZy5icGYuYy0xMDgtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RydXN0X19QaGlsaXBzLVNQSzYzMjcuYnBmLmM9MTk9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jLTIwLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jOjIxOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCwgNDA5Nik7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVHJ1c3RfX1BoaWxpcHMtU1BLNjMyNy5icGYuYy0yMi1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV0FMVE9QX19CYXR0ZXJ5bGVzcy1UYWJsZXQuYnBmLmM9MjMxPWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV0FMVE9QX19CYXR0ZXJ5bGVzcy1UYWJsZXQuYnBmLmMtMjMyLXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYzoyMzM6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYy0yMzQtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jPTI0ND1pbnQgQlBGX1BST0cod2FsdG9wX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYy0yNDUte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jOjI0NjpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYy0yNDctXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dhY29tX19BcnRQZW4uYnBmLmM9MTA1PWludCBCUEZfUFJPRyhhcnRwZW5fcHJlc3N1cmVfaW50ZXJwb2xhdGUsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XYWNvbV9fQXJ0UGVuLmJwZi5jLTEwNi17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV2Fjb21fX0FydFBlbi5icGYuYzoxMDc6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgUEVOX1JFUE9SVF9MRU4gLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV2Fjb21fX0FydFBlbi5icGYuYy0xMDgtXHRfX3UxNiAqcHJlc3N1cmUsICp0b29sX3R5cGU7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYz0yMTg9aW50IEJQRl9QUk9HKGFjazA1X2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYy0yMTkte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYzoyMjA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FDSzA1LmJwZi5jLTIyMS1cdF9fczMyIHJkZXNjX3NpemUgPSBoY3R4LVx1MDAzZXNpemU7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYz0yNjU9aW50IEJQRl9QUk9HKGFjazA1X2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmMtMjY2LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmM6MjY3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIFBBRF9SRVBPUlRfTEVOR1RIKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmMtMjY4LVx0aW50IHJldCA9IDA7XG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYz05Mz1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY194cHBlbl9hcnRpc3QyNCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYy05NC17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jOjk1Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jLTk2LVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0MjQuYnBmLmM9MTU0PWludCBCUEZfUFJPRyh4cHBlbl8yNF9maXhfZXJhc2VyLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jLTE1NS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jOjE1NjpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0MjQuYnBmLmMtMTU3LVx0X191OCBjdXJyZW50X3N0YXRlLCBjaGFuZ2VkX3N0YXRlO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jPTg4PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjX3hwcGVuX2FydGlzdHBybzE2Z2VuMiwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmMtODkte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmM6OTA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTkxLVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jPTExNj1zdGF0aWMgaW50IHhwcGVuXzE2X2ZpeF9lcmFzZXIoc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmMtMTE3LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jOjExODpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTExOS1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYz0yMzg9c3RhdGljIGludCB4cHBlbl8xNl9maXhfYW5nbGVfb2Zmc2V0KHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTIzOS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYzoyNDA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYy0yNDEtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYz0yMjQ9aW50IEJQRl9QUk9HKHhwcGVuX2RlY28wMXYzX3JkZXNjX2ZpeHVwLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jLTIyNS17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jOjIyNjpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmMtMjI3LVxuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmM9MjU0PWludCBCUEZfUFJPRyh4cHBlbl9kZWNvMDF2M19kZXZpY2VfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jLTI1Ni1cdHN0YXRpYyBjb25zdCBfX3U4IHBhZF9idXR0b25zW10gPSB7IDB4MDUsIDB4MDgsIDB4MDAsIDB4MmMsIDB4MTYsIDB4MWQsIDB4NTcsIDB4NTYgfTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmM6MjU3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIFBBRF9SRVBPUlRfTEVOR1RIIC8qIHNpemUgKi8pO1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYy0yNTgtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDIuYnBmLmM9MjgxPWludCBCUEZfUFJPRyh4cHBlbl9kZWNvMDJfcmRlc2NfZml4dXAsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jLTI4Mi17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYzoyODM6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSk7XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYy0yODQtXG4tLVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDIuYnBmLmM9Mjk3PWludCBCUEZfUFJPRyh4cHBlbl9kZWNvMDJfZGV2aWNlX2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYy0yOTgte1xuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDIuYnBmLmM6Mjk5Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCwgUkVQT1JUX1NJWkVfUEFEKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jLTMwMC1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY29NaW5pNC5icGYuYz0xNTM9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF94cHBlbl9kZWNvX21pbmlfNCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvTWluaTQuYnBmLmMtMTU0LXtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jOjE1NTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE1Ni1cbi0tXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY29NaW5pNC5icGYuYz0xNzI9aW50IEJQRl9QUk9HKGhpZF9kZXZpY2VfZXZlbnRfeHBwZW5fZGVjb19taW5pXzQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE3My17XG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY29NaW5pNC5icGYuYzoxNzQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgOCAvKiBzaXplICovKTtcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE3NS1cdF9fdTggYnV0dG9uX21hc2sgPSAwO1xuLS1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0yMi1cbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaDoyMzpleHRlcm4gX191OCAqaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0yNC1cdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuLS1cbmluY2x1ZGUvbGludXgvaGlkX2JwZi5oPTExPXN0cnVjdCBoaWRfZGV2aWNlO1xuLS1cbmluY2x1ZGUvbGludXgvaGlkX2JwZi5oLTIzLSAqIGBgZGF0YWBgIGlzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdGhlIGNvbnRleHQuIFdlIG5lZWQgdG8gaXNzdWVcbmluY2x1ZGUvbGludXgvaGlkX2JwZi5oOjI0OiAqIGEgY2FsbCB0byBoaWRfYnBmX2dldF9kYXRhKCkgaW4gb3JkZXIgdG8gZ2V0IGEgcG9pbnRlciB0byB0aGF0IGZpZWxkLlxuaW5jbHVkZS9saW51eC9oaWRfYnBmLmgtMjUtICpcbi0tXG5zYW1wbGVzL2hpZC9oaWRfYnBmX2hlbHBlcnMuaC04LS8qIGZvbGxvd2luZyBhcmUga2Z1bmNzIGV4cG9ydGVkIGJ5IEhJRCBmb3IgSElELUJQRiAqL1xuc2FtcGxlcy9oaWQvaGlkX2JwZl9oZWxwZXJzLmg6OTpleHRlcm4gX191OCAqaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCxcbnNhbXBsZXMvaGlkL2hpZF9icGZfaGVscGVycy5oLTEwLVx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXG4tLVxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jPTg9c3RhdGljIGludCBoaWRfeV9ldmVudChzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG4tLVxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTEwLVx0czE2IHk7XG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM6MTE6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgOSAvKiBzaXplICovKTtcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy0xMi1cbi0tXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM9NTM9c3RhdGljIGludCBoaWRfeF9ldmVudChzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXG4tLVxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTU1LVx0czE2IHg7XG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM6NTY6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgOSAvKiBzaXplICovKTtcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy01Ny1cbi0tXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM9ODM9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTg0LXtcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYzo4NTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTg2LVxuLS1cbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM9MTQ9aW50IEJQRl9QUk9HKGhpZF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxuc2FtcGxlcy9oaWQvaGlkX3N1cmZhY2VfZGlhbC5icGYuYy0xNS17XG5zYW1wbGVzL2hpZC9oaWRfc3VyZmFjZV9kaWFsLmJwZi5jOjE2Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XG5zYW1wbGVzL2hpZC9oaWRfc3VyZmFjZV9kaWFsLmJwZi5jLTE3LVxuLS1cbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM9MTA1PWludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXAsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmMtMTA2LXtcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM6MTA3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XG5zYW1wbGVzL2hpZC9oaWRfc3VyZmFjZV9kaWFsLmJwZi5jLTEwOC1cdF9fdTE2ICpyZXMsICpwaHlzO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0xOT1pbnQgQlBGX1BST0coaGlkX2ZpcnN0X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjAte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjIxOlx0X191OCAqcndfZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjItXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTM5PWludCBfX2hpZF9zdWJwcm9nX2ZpcnN0X2V2ZW50KHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00MC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NDE6XHRfX3U4ICpyd19kYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgMyAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00Mi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9NjQ9aW50IEJQRl9QUk9HKGhpZF9zZWNvbmRfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy02NS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NjY6XHRfX3U4ICpyd19kYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgNCAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy02Ny1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9ODI9aW50IEJQRl9QUk9HKGhpZF9jaGFuZ2VfcmVwb3J0X2lkLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtODMte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjg0Olx0X191OCAqcndfZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtODUtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTIyMT1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjIyLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyMjM6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yMjQtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTI0NT1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjQ2LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyNDc6XHRpZiAoIWhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMiAvKiBvZmZzZXQgKi8sIH4wVUxMIC8qIHNpemUgKi8pKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTI0OC1cdFx0Z2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0yNTk9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yNjAte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjI2MTpcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCA0IC8qIHNpemUgKi8pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTI2Mi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9MjgyPWludCBCUEZfUFJPRyhoaWRfdGVzdF9pbnNlcnQyLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjgzLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyODQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgNCAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yODUtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTMwND1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0Mywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTMwNS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6MzA2Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDQgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMzA3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0zNDc9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2hpZHJhd19yYXdfcmVxdWVzdCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCB1bnNpZ25lZCBjaGFyIHJlcG9ydG51bSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMzQ5LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzozNTA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMyAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0zNTEtXHRpbnQgcmV0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0zNzg9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luZmluaXRlX2xvb3BfcmF3X3JlcXVlc3QsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eCwgdW5zaWduZWQgY2hhciByZXBvcnRudW0sXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTM4MC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6MzgxOlx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMzgyLVx0aW50IHJldDtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9NDE3PWludCBCUEZfUFJPRyhoaWRfdGVzdF9oaWRyYXdfb3V0cHV0X3JlcG9ydCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCBfX3U2NCBzb3VyY2UpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNDE4LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo0MTk6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMyAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00MjAtXHRpbnQgcmV0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz00Mzg9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luZmluaXRlX2xvb3Bfb3V0cHV0X3JlcG9ydCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCBfX3U2NCBzb3VyY2UpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNDM5LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo0NDA6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMyAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00NDEtXHRpbnQgcmV0O1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01MTU9aW50IEJQRl9QUk9HKGhpZF90ZXN0X211bHRpcGx5X2V2ZW50c193cSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTUxNi17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NTE3Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNTE4LVx0aW50IGhpZCA9IGhpZF9jdHgtXHUwMDNlaGlkLVx1MDAzZWlkO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01NDI9aW50IEJQRl9QUk9HKGhpZF90ZXN0X211bHRpcGx5X2V2ZW50cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTU0My17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NTQ0Olx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNTQ1LVx0X191OCBidWZbOV07XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTU4MT1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5maW5pdGVfbG9vcF9pbnB1dF9yZXBvcnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNTgzLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo1ODQ6XHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNiAvKiBzaXplICovKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy01ODUtXHRfX3U4IGJ1Zls2XTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmg9ODg9c3RydWN0IGhpZF9icGZfb3BzIHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmgtMTA2LS8qIGZvbGxvd2luZyBhcmUga2Z1bmNzIGV4cG9ydGVkIGJ5IEhJRCBmb3IgSElELUJQRiAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oOjEwNzpleHRlcm4gX191OCAqaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0xMDgtXHRcdFx0ICAgICAgdW5zaWduZWQgaW50IG9mZnNldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzA5OQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBoaWRfYnBmX2dldF9kYXRhYCBCUEYgS2Z1bmMgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGBoaWRfYnBmX2dldF9kYXRhYCBmdW5jdGlvbi4gVGhpcyBpcyBhIEJQRiBrZnVuYywgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBJdCBsaXZlcyBpbiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY2Ag4oCTIGEgZGV0YWlsIHRvIG5vdGUgZm9yIGxhdGVyIHJlZmVyZW5jZSwgb2YgY291cnNlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFib3V0IGl0cyBwdXJwb3NlOyBpdCYjMzk7cyB1c2VkIGJ5IEJQRiBwcm9ncmFtcyB0byByZWFkIGRhdGEgZnJvbSBhIEhJRCBkZXZpY2UmIzM5O3MgYnVmZmVyLCBzbyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgY3JpdGljYWwgaW50ZXJmYWNlLgoKVGhlIGNvcmUgb2YgdGhlIGlzc3VlIGlzIGFuIGludGVnZXIgb3ZlcmZsb3cuIEVzc2VudGlhbGx5LCBgcmR3cl9idWZfc2l6ZSAmIzQzOyBvZmZzZXRgIHBvdGVudGlhbGx5IHdyYXBzIGFyb3VuZCBpZiBgcmR3cl9idWZfc2l6ZWAgaXMgY2xvc2UgdG8gdGhlIG1heGltdW0gdmFsdWUgb2YgYW4gdW5zaWduZWQgbG9uZyBsb25nIChpLmUuLCBgfjBVTExgKS4gVGhpcyB3cmFwLWFyb3VuZCBjb3VsZCByZXN1bHQgaW4gYHJkd3JfYnVmX3NpemUgJiM0Mzsgb2Zmc2V0YCBiZWluZyAqc21hbGxlciogdGhhbiBgY3R4LSZndDthbGxvY2F0ZWRfc2l6ZWAsIHdoaWNoIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIGFjY2VzcyBzY2VuYXJpby4gV2UmIzM5O3ZlIGdvdCBhIHBvdGVudGlhbCBzZWN1cml0eSBob2xlIGhlcmU7IEkgYW0gYWxyZWFkeSBmb3JtaW5nIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBleHBsb2l0cyEKClRoaXMgaXMgYSAqKmZ1bmN0aW9uYWwgY2hhbmdlKiogYW5kIGEgKipzZWN1cml0eSBmaXgqKiByb2xsZWQgaW50byBvbmUsIGltcGFjdGluZyBob3cgQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggSElEIGRhdGEuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCYjMzk7cyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gSElEIGRldmljZXMuIFRoZSBhdHRhY2sgc3VyZmFjZSBpcyBwcmV0dHkgY2xlYXIgbm93LiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgdGVzdGVkIHZpZ29yb3VzbHkuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSYjMzk7bGwgbmVlZCBgQ09ORklHX0hJRF9CUEZgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBlbmFibGVkIHRvIHJlcHJvZHVjZSB0aGlzLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgYGRyaXZlcnMvaGlkL2JwZi9LY29uZmlnYCBvciBwb3NzaWJseSBgZHJpdmVycy9oaWQvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBzZXR0aW5ncyBhcmUgcHJlc2VudC4gSSBhbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IGNyZWF0aW5nIGEgZnV6emluZyBjYW1wYWlnbiB0byB0YXJnZXQgdGhpcyB2dWxuZXJhYmlsaXR5IGFzIGEgdG9wIHByaW9yaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBISURfQlBGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaGlkL2JwZi9LY29uZmlnPTI9bWVudSBcJiMzNDtISUQtQlBGIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvaGlkL2JwZi9LY29uZmlnLTMtXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZzo0OmNvbmZpZyBISURfQlBGXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZy01LVx0Ym9vbCBcJiMzNDtISUQtQlBGIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzgyOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgdGFzazoKCioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyB3aXRoaW4gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGRlcGVuZGVudCBvbiBzb21ldGhpbmcsIGFuZCB0aGUgc3RhcnRpbmcgcG9pbnQgaXMgYGRyaXZlcnMvaGlkL2JwZi9LY29uZmlnYC4gTXkgZXhwZXJ0aXNlIGluIGtlcm5lbCBjb25maWd1cmF0aW9uIHRlbGxzIG1lIHRoaXMgZmlsZSBsaWtlbHkgZGVmaW5lcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgSElEIHN1YnN5c3RlbSYjMzk7cyBCUEYgZnVuY3Rpb25hbGl0eS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgdGhpcyBmaWxlIGZvciBkZXBlbmRlbmN5IGRlY2xhcmF0aW9ucy4gVGhpcyB3aWxsIGluZGljYXRlIHdoaWNoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG1pZ2h0IHJlcXVpcmUgb3IgcmVseSB1cG9uIHRoZSBvcHRpb25zIGRlZmluZWQgd2l0aGluIGBLY29uZmlnYC4gVGhpcyBpcyBhIGNsYXNzaWMgZGVwZW5kZW5jeSBhbmFseXNpcyBzY2VuYXJpbywgdGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUuIExldCYjMzk7cyBnZXQgdG8gaXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2hpZC9icGYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnUgXCYjMzQ7SElELUJQRiBzdXBwb3J0XCYjMzQ7XG4gICAzOlx0XG4gICA0Olx0Y29uZmlnIEhJRF9CUEZcbiAgIDU6XHRcdGJvb2wgXCYjMzQ7SElELUJQRiBzdXBwb3J0XCYjMzQ7XG4gICA2Olx0XHRkZXBlbmRzIG9uIEJQRl9KSVRcbiAgIDc6XHRcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbiAgIDg6XHRcdGRlcGVuZHMgb24gRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdFRoaXMgb3B0aW9uIGFsbG93cyB0byBzdXBwb3J0IGVCUEYgcHJvZ3JhbXMgb24gdGhlIEhJRCBzdWJzeXN0ZW0uXG4gIDExOlx0XHRlQlBGIHByb2dyYW1zIGNhbiBmaXggSElEIGRldmljZXMgaW4gYSBsaWdodGVyIHdheSB0aGFuIGEgZnVsbFxuICAxMjpcdFx0a2VybmVsIHBhdGNoIGFuZCBhbGxvdyBhIGxvdCBtb3JlIGZsZXhpYmlsaXR5LlxuICAxMzpcdFxuICAxNDpcdFx0Rm9yIGRvY3VtZW50YXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdFxuICAxNTpcdFxuICAxNjpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI0OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEhJRF9CUEYgQ29uZmlndXJhdGlvbiBhbmQgQXNzb2NpYXRlZCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBISURfQlBGYCBjb25maWd1cmF0aW9uLCB0aGF0JiMzOTtzIHRoZSBjb3JlIG9mIGl0LiBSaWdodCBub3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbmV3IGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBmdW5jdGlvbnMuIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiB0aGF0IHN5bWJvbCwgYGhpZF9icGZfZ2V0X2RhdGFgLgoKQmV5b25kIHRoZSBjb3JlIGNvbmZpZywgSSBzZWUgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyB0aGUgc2VsZnRlc3RzLiBJdCYjMzk7cyBtb2RpZnlpbmcgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jYC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBjaGFuZ2VzIGluY2x1ZGUgdXBkYXRlcyB0byBob3cgdGhlIEJQRiBmdW5jdGlvbmFsaXR5IGlzIHRlc3RlZCwgd2hpY2ggaXMgZ29vZC4gSW1wb3J0YW50IHRoYXQgdGhleSB2ZXJpZnkgdGhhdCBmdW5jdGlvbmFsaXR5LgoKTmV4dCwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgaGlkX2JwZl9nZXRfZGF0YWAgYW5kIHVuZGVyc3RhbmQgaG93IGl0IGZ1bmN0aW9ucy4gVGhhdCBsaWtlbHkgaGFwcGVucyBpbiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY2AsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSB3aWxsIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI4MDpcdFx0cmV0dXJuIDA7XG4gMjgxOlx0fVxuIDI4MjpcdFxuIDI4MzpcdC8qIERpc2FibGVzIG1pc3NpbmcgcHJvdG90eXBlIHdhcm5pbmdzICovXG4gMjg0Olx0X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xuIDI4NTpcdFxuIDI4NjpcdC8qKlxuIDI4NzpcdCAqIGhpZF9icGZfZ2V0X2RhdGEgLSBHZXQgdGhlIGtlcm5lbCBtZW1vcnkgcG9pbnRlciBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgQGN0eFxuIDI4ODpcdCAqXG4gMjg5Olx0ICogQGN0eDogVGhlIEhJRC1CUEYgY29udGV4dFxuIDI5MDpcdCAqIEBvZmZzZXQ6IFRoZSBvZmZzZXQgd2l0aGluIHRoZSBtZW1vcnlcbiAyOTE6XHQgKiBAcmR3cl9idWZfc2l6ZTogdGhlIGNvbnN0IHNpemUgb2YgdGhlIGJ1ZmZlclxuIDI5MjpcdCAqXG4gMjkzOlx0ICogQHJldHVybnMgJU5VTEwgb24gZXJyb3IsIGFuICVfX3U4IG1lbW9yeSBwb2ludGVyIG9uIHN1Y2Nlc3NcbiAyOTQ6XHQgKi9cbiAyOTU6XHRfX2JwZl9rZnVuYyBfX3U4ICpcbiAyOTY6XHRoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cl9idWZfc2l6ZSlcbiAyOTc6XHR7XG4gMjk4Olx0XHRzdHJ1Y3QgaGlkX2JwZl9jdHhfa2VybiAqY3R4X2tlcm47XG4gMjk5Olx0XG4gMzAwOlx0XHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xuIDMwMTpcdFxuIDMwMjpcdFx0aWYgKG9mZnNldCBcdTAwM2UgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplIHx8XG4gMzAzOlx0XHQgICAgcmR3cl9idWZfc2l6ZSBcdTAwM2UgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0KVxuIDMwNDpcdFx0XHRyZXR1cm4gTlVMTDtcbiAzMDU6XHRcbiAzMDY6XHRcdHJldHVybiBjdHhfa2Vybi1cdTAwM2VkYXRhICYjNDM7IG9mZnNldDtcbiAzMDc6XHR9XG4gMzA4Olx0XG4gMzA5Olx0LyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDY0CgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhc3Nlc3NtZW50IG9mIHRoZSBzaXR1YXRpb246CgoqKkFuYWx5c2lzIG9mIHRoZSBISUQgQlBGIFBhdGNoKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIGZpeGluZyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgd2l0aGluIGBoaWRfYnBmX2dldF9kYXRhYC4gVGhpcyBpcyBhIEJQRiBrZnVuYywgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBBbnl0aW1lIHdlIHNlZSBhIGZpeCBsaWtlIHRoaXMsIGVzcGVjaWFsbHkgd2l0aGluIEJQRiwgZnV6emluZyBiZWNvbWVzIGEgdG9wIHByaW9yaXR5LiBUaGUgYXR0YWNrIHN1cmZhY2UgaGVyZSBpcyBjbGVhcmx5IHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgZnVuY3Rpb24gaXRzZWxmLiBUaGUgZml4IHNob3VsZCBiZSByaWdvcm91c2x5IHRlc3RlZC4KCk15IGZvY3VzIGhhcyB0byBiZSBsYXNlci1zaGFycCBvbiB0aGF0IGZ1bmN0aW9uLiBUbyBlbnN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgdnVsbmVyYWJpbGl0eSBmaXggaXMgaXNvbGF0ZWQgdG8gYGhpZF9icGZfZ2V0X2RhdGFgLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucy4gQWgsIHllcywgaXQgYXBwZWFycyB0aGF0IGBoaWRfYnBmX2dldF9kYXRhYCBpcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIGluIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jYC4gVGhlIHJlbWFpbmluZyBtb2RpZmljYXRpb25zIHNlZW0gdG8gYmUgY29uZmluZWQgdG8gc2VsZnRlc3RzLCB3aGljaCBpcyBnb29kLiBUaGV5IHNob3VsZCBoZWxwLCBidXQgdGhlIGtleSBpcyB0aGUgbWFpbiBmdW5jdGlvbi4KCk5vdyB0aGF0IEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGUgc2NvcGUsIEkmIzM5O2xsIHJlY29yZCB0aGVzZSBmaW5kaW5ncyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SElEX0JQRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpZF9icGZfZ2V0X2RhdGEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIGBoaWRfYnBmX2dldF9kYXRhYCB3aGljaCBpcyBhIEJQRiBrZnVuYyB1c2VkIGJ5IEhJRC1CUEYgcHJvZ3JhbXMgdG8gYWNjZXNzIGRldmljZSBkYXRhIGJ1ZmZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIHNlY3VyaXR5IGZpeCB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIEhJRCBkZXZpY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtISURfQlBGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlkX2JwZl9nZXRfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gYGhpZF9icGZfZ2V0X2RhdGFgIHdoaWNoIGlzIGEgQlBGIGtmdW5jIHVzZWQgYnkgSElELUJQRiBwcm9ncmFtcyB0byBhY2Nlc3MgZGV2aWNlIGRhdGEgYnVmZmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgc2VjdXJpdHkgZml4IHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gSElEIGRldmljZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzo1MzowMy43MTk3NzIwNDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzA5NTg0MjM5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJISURfQlBGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGlkX2JwZl9nZXRfZGF0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiBgaGlkX2JwZl9nZXRfZGF0YWAgd2hpY2ggaXMgYSBCUEYga2Z1bmMgdXNlZCBieSBISUQtQlBGIHByb2dyYW1zIHRvIGFjY2VzcyBkZXZpY2UgZGF0YSBidWZmZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBzZWN1cml0eSBmaXggdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBISUQgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MDMuNzE5Nzc5NzA3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODg3MTQ4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MWZhOWEzZTU2NDAwZDI1NGY4NzI2YTYyNmM1ZjUwZDY4NTMzMzFiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDIyIDA3OjUzOjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXFxuaW5kZXggZDAxMzA2NTgwOTFiMDIuLjA5YjQ1YzQwZDg0ZjBiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcXG4rKysgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXFxuQEAgLTI5OSw3ICsyOTksOCBAQCBoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3clxcbiBcXG4gXFx0Y3R4X2tlcm4gPSBjb250YWluZXJfb2YoY3R4LCBzdHJ1Y3QgaGlkX2JwZl9jdHhfa2VybiwgY3R4KTtcXG4gXFxuLVxcdGlmIChyZHdyX2J1Zl9zaXplICsgb2Zmc2V0IFxcdTAwM2UgY3R4LVxcdTAwM2VhbGxvY2F0ZWRfc2l6ZSlcXG4rXFx0aWYgKG9mZnNldCBcXHUwMDNlIGN0eC1cXHUwMDNlYWxsb2NhdGVkX3NpemUgfHxcXG4rXFx0ICAgIHJkd3JfYnVmX3NpemUgXFx1MDAzZSBjdHgtXFx1MDAzZWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0KVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuIFxcdHJldHVybiBjdHhfa2Vybi1cXHUwMDNlZGF0YSArIG9mZnNldDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXFxuaW5kZXggNTBlYzllMDQwNmFiYWYuLjM1N2M2ZWI1ZmY1ZWUzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxcbkBAIC0yNCw3ICsyNCw3IEBAIENYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXFxuIFxcbiBIT1NUUEtHX0NPTkZJRyA6PSBwa2ctY29uZmlnXFxuIFxcbi1DRkxBR1MgKz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpXFxuK0NGTEFHUyArPSAtZyAtTzAgLXJkeW5hbWljIC1XYWxsIC1XZXJyb3IgLUkkKE9VVFBVVCkgJChLSERSX0lOQ0xVREVTKVxcbiBDRkxBR1MgKz0gLUkkKE9VVFBVVCkvdG9vbHMvaW5jbHVkZVxcbiBcXG4gTERMSUJTICs9IC1sZWxmIC1seiAtbHJ0IC1scHRocmVhZFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xcbmluZGV4IDFlOTc5ZmIzNTQyYmFiLi5iODUxMzM5MzA4YzIxNCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xcbkBAIC04Niw2ICs4NiwyMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcXG4gXFx0c2VsZi1cXHUwMDNlc2tlbCA9IGhpZF9fb3BlbigpO1xcbiBcXHRBU1NFUlRfT0tfUFRSKHNlbGYtXFx1MDAzZXNrZWwpIFRFQVJET1dOX0xPRyhcXFwiRXJyb3Igd2hpbGUgY2FsbGluZyBoaWRfX29wZW5cXFwiKTtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZFxcbitcXHQgKiBwcm9ncmFtcyByZWZlcmVuY2VkIGJ5IG1hcHMgdGhhdCBhcmUgdW5yZWxhdGVkIHRvIHRoZSBjdXJyZW50IHRlc3QuXFxuK1xcdCAqL1xcbitcXHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVxcdTAwM2Vza2VsLVxcdTAwM2Vza2VsZXRvbi1cXHUwMDNlb2JqKSB7XFxuK1xcdFxcdGlmIChicGZfbWFwX190eXBlKGl0ZXJfbWFwKSA9PSBCUEZfTUFQX1RZUEVfU1RSVUNUX09QUykge1xcbitcXHRcXHRcXHRlcnIgPSBicGZfbWFwX19zZXRfYXV0b2NyZWF0ZShpdGVyX21hcCwgZmFsc2UpO1xcbitcXHRcXHRcXHRBU1NFUlRfT0soZXJyKSBUSF9MT0coXFxcImNhbiBub3QgZGlzYWJsZSBzdHJ1Y3Rfb3BzIG1hcCAnJXMnXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRicGZfbWFwX19zZXRfYXV0b2F0dGFjaChpdGVyX21hcCwgZmFsc2UpO1xcbitcXHR9XFxuK1xcbiBcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIHByb2dzX2NvdW50OyBpKyspIHtcXG4gXFx0XFx0c3RydWN0IGJwZl9wcm9ncmFtICpwcm9nO1xcbiBcXHRcXHRzdHJ1Y3QgYnBmX21hcCAqbWFwO1xcbkBAIC0xMDIsNiArMTE2LDEwIEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxcbiBcXHRcXHRBU1NFUlRfT0tfUFRSKG1hcCkgVEhfTE9HKFxcXCJjYW4gbm90IGZpbmQgc3RydWN0X29wcyBieSBuYW1lICclcydcXFwiLFxcbiBcXHRcXHRcXHRcXHRcXHQgIHByb2dyYW1zW2ldLm5hbWUgKyA0KTtcXG4gXFxuK1xcdFxcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKG1hcCwgdHJ1ZSk7XFxuK1xcdFxcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcXFwiY2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJyVzJ1xcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHByb2dyYW1zW2ldLm5hbWUgKyA0KTtcXG4rXFxuIFxcdFxcdC8qIGhpZF9pZCBpcyB0aGUgZmlyc3QgZmllbGQgb2Ygc3RydWN0IGhpZF9icGZfb3BzICovXFxuIFxcdFxcdG9wc19oaWRfaWQgPSBicGZfbWFwX19pbml0aWFsX3ZhbHVlKG1hcCwgTlVMTCk7XFxuIFxcdFxcdEFTU0VSVF9PS19QVFIob3BzX2hpZF9pZCkgVEhfTE9HKFxcXCJ1bmFibGUgdG8gcmV0cmlldmUgc3RydWN0X29wcyBkYXRhXFxcIik7XFxuQEAgLTEwOSwxMyArMTI3LDYgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXFxuIFxcdFxcdCpvcHNfaGlkX2lkID0gc2VsZi1cXHUwMDNlaGlkLmhpZF9pZDtcXG4gXFx0fVxcbiBcXG4tXFx0Lyogd2UgZGlzYWJsZSB0aGUgYXV0by1hdHRhY2ggZmVhdHVyZSBvZiBhbGwgbWFwcyBiZWNhdXNlIHdlXFxuLVxcdCAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dFxcbi1cXHQgKiBjYWxsIHRvIGJwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzKClcXG4tXFx0ICovXFxuLVxcdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXFx1MDAzZXNrZWwtXFx1MDAzZXNrZWxldG9uLVxcdTAwM2VvYmopXFxuLVxcdFxcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XFxuLVxcbiBcXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cXHUwMDNlc2tlbCk7XFxuIFxcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcXFwiaGlkX3NrZWxfbG9hZCBmYWlsZWQ6ICVkXFxcIiwgZXJyKTtcXG4gXFxuQEAgLTg4Nyw2ICs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApXFxuIFxcdEFTU0VSVF9FUShycHRfZGVzYy52YWx1ZVs0XSwgMHg0Mik7XFxuIH1cXG4gXFxuK1RFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93KVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3NbXSA9IHtcXG4rXFx0XFx0eyAubmFtZSA9IFxcXCJoaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3dcXFwiIH0sXFxuK1xcdH07XFxuK1xcbitcXHRMT0FEX1BST0dSQU1TKHByb2dzKTtcXG4rXFxuK1xcdEFTU0VSVF9FUShzZWxmLVxcdTAwM2Vza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWdldF9kYXRhX292ZXJmbG93X2NoZWNrLCAxKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBsaWJicGZfcHJpbnRfZm4oZW51bSBsaWJicGZfcHJpbnRfbGV2ZWwgbGV2ZWwsXFxuIFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxcbiB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xcbmluZGV4IDVlY2M4NDVlZjc5MjE2Li5iMjFmYmIxM2M5MjZmOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcXG5AQCAtMTMsNiArMTMsNyBAQCBzdHJ1Y3QgYXR0YWNoX3Byb2dfYXJncyB7XFxuIFxcbiBfX3U2NCBjYWxsYmFja19jaGVjayA9IDUyO1xcbiBfX3U2NCBjYWxsYmFjazJfY2hlY2sgPSA1MjtcXG4rX191NjQgZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2s7XFxuIFxcbiBTRUMoXFxcIj9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcXFwiKVxcbiBpbnQgQlBGX1BST0coaGlkX2ZpcnN0X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxuQEAgLTI0MCw2ICsyNDEsMjAgQEAgc3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwID0ge1xcbiBcXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXAsXFxuIH07XFxuIFxcbitTRUMoXFxcIj9zdHJ1Y3Rfb3BzLnMvaGlkX3JkZXNjX2ZpeHVwXFxcIilcXG4raW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbit7XFxuK1xcdGlmICghaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAyIC8qIG9mZnNldCAqLywgfjBVTEwgLyogc2l6ZSAqLykpXFxuK1xcdFxcdGdldF9kYXRhX292ZXJmbG93X2NoZWNrID0gMTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcIi5zdHJ1Y3Rfb3BzLmxpbmtcXFwiKVxcbitzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XFxuK1xcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyxcXG4rfTtcXG4rXFxuIFNFQyhcXFwiP3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFxcXCIpXFxuIGludCBCUEZfUFJPRyhoaWRfdGVzdF9pbnNlcnQxLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MDQuNDA5NDE1OTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDA2MTgwMTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhJRF9CUEZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaWRfYnBmX2dldF9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIGBoaWRfYnBmX2dldF9kYXRhYCB3aGljaCBpcyBhIEJQRiBrZnVuYyB1c2VkIGJ5IEhJRC1CUEYgcHJvZ3JhbXMgdG8gYWNjZXNzIGRldmljZSBkYXRhIGJ1ZmZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIHNlY3VyaXR5IGZpeCB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIEhJRCBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQxZmE5YTNlNTY0MDBkMjU0Zjg3MjZhNjI2YzVmNTBkNjg1MzMzMWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAwNzo1MzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXG5pbmRleCBkMDEzMDY1ODA5MWIwMi4uMDliNDVjNDBkODRmMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXG4rKysgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jXG5AQCAtMjk5LDcgKzI5OSw4IEBAIGhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsIHVuc2lnbmVkIGludCBvZmZzZXQsIGNvbnN0IHNpemVfdCByZHdyXG4gXG4gXHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xuIFxuLVx0aWYgKHJkd3JfYnVmX3NpemUgKyBvZmZzZXQgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSlcbitcdGlmIChvZmZzZXQgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSB8fFxuK1x0ICAgIHJkd3JfYnVmX3NpemUgXHUwMDNlIGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZSAtIG9mZnNldClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gY3R4X2tlcm4tXHUwMDNlZGF0YSArIG9mZnNldDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvTWFrZWZpbGVcbmluZGV4IDUwZWM5ZTA0MDZhYmFmLi4zNTdjNmViNWZmNWVlMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL01ha2VmaWxlXG5AQCAtMjQsNyArMjQsNyBAQCBDWFggPz0gJChDUk9TU19DT01QSUxFKWcrK1xuIFxuIEhPU1RQS0dfQ09ORklHIDo9IHBrZy1jb25maWdcbiBcbi1DRkxBR1MgKz0gLWcgLU8wIC1yZHluYW1pYyAtV2FsbCAtV2Vycm9yIC1JJChPVVRQVVQpXG4rQ0ZMQUdTICs9IC1nIC1PMCAtcmR5bmFtaWMgLVdhbGwgLVdlcnJvciAtSSQoT1VUUFVUKSAkKEtIRFJfSU5DTFVERVMpXG4gQ0ZMQUdTICs9IC1JJChPVVRQVVQpL3Rvb2xzL2luY2x1ZGVcbiBcbiBMRExJQlMgKz0gLWxlbGYgLWx6IC1scnQgLWxwdGhyZWFkXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbmluZGV4IDFlOTc5ZmIzNTQyYmFiLi5iODUxMzM5MzA4YzIxNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbkBAIC04Niw2ICs4NiwyMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdHNlbGYtXHUwMDNlc2tlbCA9IGhpZF9fb3BlbigpO1xuIFx0QVNTRVJUX09LX1BUUihzZWxmLVx1MDAzZXNrZWwpIFRFQVJET1dOX0xPRyhcIkVycm9yIHdoaWxlIGNhbGxpbmcgaGlkX19vcGVuXCIpO1xuIFxuK1x0LypcbitcdCAqIERpc2FibGUgYWxsIHN0cnVjdF9vcHMgbWFwcyBieSBkZWZhdWx0IHNvIGxpYmJwZiBkb2VzIG5vdCBhdXRvbG9hZFxuK1x0ICogcHJvZ3JhbXMgcmVmZXJlbmNlZCBieSBtYXBzIHRoYXQgYXJlIHVucmVsYXRlZCB0byB0aGUgY3VycmVudCB0ZXN0LlxuK1x0ICovXG4rXHRicGZfb2JqZWN0X19mb3JfZWFjaF9tYXAoaXRlcl9tYXAsICpzZWxmLVx1MDAzZXNrZWwtXHUwMDNlc2tlbGV0b24tXHUwMDNlb2JqKSB7XG4rXHRcdGlmIChicGZfbWFwX190eXBlKGl0ZXJfbWFwKSA9PSBCUEZfTUFQX1RZUEVfU1RSVUNUX09QUykge1xuK1x0XHRcdGVyciA9IGJwZl9tYXBfX3NldF9hdXRvY3JlYXRlKGl0ZXJfbWFwLCBmYWxzZSk7XG4rXHRcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwiY2FuIG5vdCBkaXNhYmxlIHN0cnVjdF9vcHMgbWFwICclcydcIixcbitcdFx0XHRcdFx0ICAgICAgYnBmX21hcF9fbmFtZShpdGVyX21hcCkpO1xuK1x0XHR9XG4rXG4rXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4rXHR9XG4rXG4gXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgcHJvZ3NfY291bnQ7IGkrKykge1xuIFx0XHRzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2c7XG4gXHRcdHN0cnVjdCBicGZfbWFwICptYXA7XG5AQCAtMTAyLDYgKzExNiwxMCBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0QVNTRVJUX09LX1BUUihtYXApIFRIX0xPRyhcImNhbiBub3QgZmluZCBzdHJ1Y3Rfb3BzIGJ5IG5hbWUgJyVzJ1wiLFxuIFx0XHRcdFx0XHQgIHByb2dyYW1zW2ldLm5hbWUgKyA0KTtcbiBcbitcdFx0ZXJyID0gYnBmX21hcF9fc2V0X2F1dG9jcmVhdGUobWFwLCB0cnVlKTtcbitcdFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwiY2FuIG5vdCBlbmFibGUgc3RydWN0X29wcyBtYXAgJyVzJ1wiLFxuK1x0XHRcdFx0ICAgICAgcHJvZ3JhbXNbaV0ubmFtZSArIDQpO1xuK1xuIFx0XHQvKiBoaWRfaWQgaXMgdGhlIGZpcnN0IGZpZWxkIG9mIHN0cnVjdCBoaWRfYnBmX29wcyAqL1xuIFx0XHRvcHNfaGlkX2lkID0gYnBmX21hcF9faW5pdGlhbF92YWx1ZShtYXAsIE5VTEwpO1xuIFx0XHRBU1NFUlRfT0tfUFRSKG9wc19oaWRfaWQpIFRIX0xPRyhcInVuYWJsZSB0byByZXRyaWV2ZSBzdHJ1Y3Rfb3BzIGRhdGFcIik7XG5AQCAtMTA5LDEzICsxMjcsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdFx0Km9wc19oaWRfaWQgPSBzZWxmLVx1MDAzZWhpZC5oaWRfaWQ7XG4gXHR9XG4gXG4tXHQvKiB3ZSBkaXNhYmxlIHRoZSBhdXRvLWF0dGFjaCBmZWF0dXJlIG9mIGFsbCBtYXBzIGJlY2F1c2Ugd2Vcbi1cdCAqIG9ubHkgd2FudCB0aGUgdGVzdGVkIG9uZSB0byBiZSBtYW51YWxseSBhdHRhY2hlZCBpbiB0aGUgbmV4dFxuLVx0ICogY2FsbCB0byBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcygpXG4tXHQgKi9cbi1cdGJwZl9vYmplY3RfX2Zvcl9lYWNoX21hcChpdGVyX21hcCwgKnNlbGYtXHUwMDNlc2tlbC1cdTAwM2Vza2VsZXRvbi1cdTAwM2VvYmopXG4tXHRcdGJwZl9tYXBfX3NldF9hdXRvYXR0YWNoKGl0ZXJfbWFwLCBmYWxzZSk7XG4tXG4gXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cdTAwM2Vza2VsKTtcbiBcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcImhpZF9za2VsX2xvYWQgZmFpbGVkOiAlZFwiLCBlcnIpO1xuIFxuQEAgLTg4Nyw2ICs4OTgsMTcgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXApXG4gXHRBU1NFUlRfRVEocnB0X2Rlc2MudmFsdWVbNF0sIDB4NDIpO1xuIH1cbiBcbitURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7XG4rXHRcdHsgLm5hbWUgPSBcImhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvd1wiIH0sXG4rXHR9O1xuK1xuK1x0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XG4rXG4rXHRBU1NFUlRfRVEoc2VsZi1cdTAwM2Vza2VsLVx1MDAzZWJzcy1cdTAwM2VnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbGliYnBmX3ByaW50X2ZuKGVudW0gbGliYnBmX3ByaW50X2xldmVsIGxldmVsLFxuIFx0XHRcdCAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbmluZGV4IDVlY2M4NDVlZjc5MjE2Li5iMjFmYmIxM2M5MjZmOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5AQCAtMTMsNiArMTMsNyBAQCBzdHJ1Y3QgYXR0YWNoX3Byb2dfYXJncyB7XG4gXG4gX191NjQgY2FsbGJhY2tfY2hlY2sgPSA1MjtcbiBfX3U2NCBjYWxsYmFjazJfY2hlY2sgPSA1MjtcbitfX3U2NCBnZXRfZGF0YV9vdmVyZmxvd19jaGVjaztcbiBcbiBTRUMoXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XCIpXG4gaW50IEJQRl9QUk9HKGhpZF9maXJzdF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxuQEAgLTI0MCw2ICsyNDEsMjAgQEAgc3RydWN0IGhpZF9icGZfb3BzIHJkZXNjX2ZpeHVwID0ge1xuIFx0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwLFxuIH07XG4gXG4rU0VDKFwiP3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcIilcbitpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG4re1xuK1x0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcbitcdFx0Z2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2sgPSAxO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcIi5zdHJ1Y3Rfb3BzLmxpbmtcIilcbitzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4rXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csXG4rfTtcbitcbiBTRUMoXCI/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50XCIpXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzo1MzowNC40MDk0MTk1MjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAzNDY0MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlY2VudCBISUQgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBib3RoIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jYCBhbmQgYWRkcyBhIHRlc3QgdG8gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoaXMgcG90ZW50aWFsbHkgY3J1Y2lhbCBmaXggaW4gYGhpZF9icGZfZGlzcGF0Y2guY2AuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIHZ1bG5lcmFiaWxpdHk6IGFuIGludGVnZXIgb3ZlcmZsb3cgY291bGQgb2NjdXIgd2hlbiBjYWxjdWxhdGluZyBgcmR3cl9idWZfc2l6ZSArIG9mZnNldGAuIFRoZSBzdW0gY291bGQgd3JhcCBhcm91bmQsIHJlc3VsdGluZyBpbiBhbiBpbmNvcnJlY3QgY29tcGFyaXNvbiB3aXRoIGBjdHgtXHUwMDNlYWxsb2NhdGVkX3NpemVgLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCByaWdodD8gVGhlIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGJ5IGNoYW5naW5nIHRoZSBjaGVjayB0byB0d28gc2VwYXJhdGUgY2hlY2tzLiBPbmUgZW5zdXJlcyB0aGF0IGBvZmZzZXRgIGl0c2VsZiBpc24ndCBncmVhdGVyIHRoYW4gYGN0eC1cdTAwM2VhbGxvY2F0ZWRfc2l6ZWAsIGFuZCB0aGUgb3RoZXIgbWFrZXMgc3VyZSBgcmR3cl9idWZfc2l6ZWAgaXNuJ3QgZ3JlYXRlciB0aGFuIHRoZSByZW1haW5pbmcgYXZhaWxhYmxlIHNpemUuIFRoaXMgaXMgYSBzb2xpZCBhcHByb2FjaCB0byBwcmV2ZW50IHRoYXQgaW50ZWdlciBvdmVyZmxvdy5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHJlYWNoYWJsZT8gSXMgaXQgZnVuY3Rpb25hbD8gV2hlcmUgaXMgdGhpcyBjb2RlIGFjdHVhbGx5IHVzZWQ/IFRoZSB2dWxuZXJhYmxlIGxvZ2ljIHJlc2lkZXMgaW4gYGhpZF9icGZfZ2V0X2RhdGFgLiBTbywgbGV0J3MgZmlyZSB1cCBhIGdyZXAgc2VhcmNoIGZvciBgaGlkX2JwZl9nZXRfZGF0YWAgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzaXRlcyBhbmQgZGF0YSBmbG93LiBLbm93aW5nIHdoZXJlIHRoaXMgaXMgaW52b2tlZCBpcyBjcml0aWNhbCBmb3IgYXNzZXNzaW5nIHRoZSBpbXBhY3QgYW5kIGhvdyBlYXN5IGl0IGlzIHRvIHRyaWdnZXIuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHJlYWxseSBhbmFseXplIHRoZSBwYXRjaCdzIGVmZmljYWN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjMyLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MDkuNDEyODg1NjgyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMDk3OTUxMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlkX2JwZl9nZXRfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdD0xOTU9QXZhaWxhYmxlIEFQSSB0aGF0IGNhbiBiZSB1c2VkIGluIGFsbCBISUQtQlBGIHN0cnVjdF9vcHMgcHJvZ3JhbXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0xOTgtLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNcXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdDoxOTk6ICAgOmlkZW50aWZpZXJzOiBoaWRfYnBmX2dldF9kYXRhXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMjAwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q9MjEzPVRoZSBgYHN0cnVjdCBoaWRfYnBmX2N0eGBgIGRvZXNuJ3QgZXhwb3J0IHRoZSBgYGRhdGFgYCBmaWVsZHMgZGlyZWN0bHkgYW5kIHRvIGFjY2Vzc1xcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjIxNDppdCwgYSBicGYgcHJvZ3JhbSBuZWVkcyB0byBmaXJzdCBjYWxsIDpjOmZ1bmM6YGhpZF9icGZfZ2V0X2RhdGFgLlxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTIxNS1cXG4tLVxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0PTIxOT1UaGlzIGFsbG93cyB0aGUgZm9sbG93aW5nOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMjI2LVxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0OjIyNzogICAgIF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGN0eCwgMCAvKiBvZmZzZXQgKi8sIDI1NiAvKiBzaXplICovKTtcXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0yMjgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0yMzctXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6MjM4OiAgICAgIF9fdTE2ICp4ID0gaGlkX2JwZl9nZXRfZGF0YShjdHgsIG9mZnNldCwgc2l6ZW9mKCp4KSk7XFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMjM5LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q9Mjg3PU9uY2UgdGhlIGNvbnRleHQgaXMgcmV0cmlldmVkLCBvbmUgY2FuIGFsc28gcmVxdWVzdCBhIHBvaW50ZXIgdG8ga2VybmVsIG1lbW9yeSB3aXRoXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6Mjg4OmhpZF9icGZfZ2V0X2RhdGEoKS4gVGhpcyBtZW1vcnkgaXMgYmlnIGVub3VnaCB0byBzdXBwb3J0IGFsbCBpbnB1dC9vdXRwdXQvZmVhdHVyZVxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTI4OS1yZXBvcnRzIG9mIHRoZSBnaXZlbiBkZXZpY2UuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdD0zNzA9Rm9yIHRoYXQsIHdlIGNhbiBjcmVhdGUgYSBiYXNpYyBza2VsZXRvbiBmb3Igb3VyIEJQRiBwcm9ncmFtOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vaGlkL2hpZC1icGYucnN0LTM3OS0gIC8qIEhJRC1CUEYga2Z1bmMgQVBJIGRlZmluaXRpb25zICovXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6MzgwOiAgZXh0ZXJuIF9fdTggKmhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsXFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzgxLVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2hpZC9oaWQtYnBmLnJzdC0zOTMtICB7XFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3Q6Mzk0OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCAxOTIgLyogc2l6ZSAqLyk7XFxuRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3QtMzk1LVxcdF9fdTggKmJ1ZjtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmM9Mjg0PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMtMjg2LS8qKlxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmM6Mjg3OiAqIGhpZF9icGZfZ2V0X2RhdGEgLSBHZXQgdGhlIGtlcm5lbCBtZW1vcnkgcG9pbnRlciBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgQGN0eFxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmMtMjg4LSAqXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jPTI5NT1fX2JwZl9rZnVuYyBfX3U4ICpcXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jOjI5NjpoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCBzaXplX3QgcmR3cl9idWZfc2l6ZSlcXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jLTI5Ny17XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jPTU3ND1CVEZfS0ZVTkNTX1NUQVJUKGhpZF9icGZfa2Z1bmNfaWRzKVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmM6NTc1OkJURl9JRF9GTEFHUyhmdW5jLCBoaWRfYnBmX2dldF9kYXRhLCBLRl9SRVRfTlVMTClcXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jLTU3Ni1CVEZfSURfRkxBR1MoZnVuYywgaGlkX2JwZl9hbGxvY2F0ZV9jb250ZXh0LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9TTEVFUEFCTEUpXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvRlItVEVDX19SYXB0b3ItTWFjaC0yLmJwZi5jPTEzNz1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY19yYXB0b3JfbWFjaF8yLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYy0xMzgte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM6MTM5OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvRlItVEVDX19SYXB0b3ItTWFjaC0yLmJwZi5jLTE0MC1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM9MTU2PWludCBCUEZfUFJPRyhyYXB0b3JfbWFjaF8yX2ZpeF9oYXRfc3dpdGNoLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0ZSLVRFQ19fUmFwdG9yLU1hY2gtMi5icGYuYy0xNTcte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9GUi1URUNfX1JhcHRvci1NYWNoLTIuYnBmLmM6MTU4OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA2NCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvRlItVEVDX19SYXB0b3ItTWFjaC0yLmJwZi5jLTE1OS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jPTM0PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0hQX19FbGl0ZS1QcmVzZW50ZXIuYnBmLmMtMzUte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jOjM2OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IUF9fRWxpdGUtUHJlc2VudGVyLmJwZi5jLTM3LVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19EaWFsLTIuYnBmLmM9NDQyPWludCBCUEZfUFJPRyhkaWFsXzJfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19EaWFsLTIuYnBmLmMtNDQzLXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYzo0NDQ6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jLTQ0NS1cXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cXHUwMDNlc2l6ZTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jPTQ4OD1pbnQgQlBGX1BST0coZGlhbF8yX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0RpYWwtMi5icGYuYy00ODkte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fRGlhbC0yLmJwZi5jOjQ5MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTYgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19EaWFsLTIuYnBmLmMtNDkxLVxcdHN0YXRpYyBfX3U4IGJ1dHRvbjtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jPTM4Mj1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jLTM4My17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmM6Mzg0OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYy0zODUtXFx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhjdHgtXFx1MDAzZXNpemU7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYz00Mjc9aW50IEJQRl9QUk9HKGluc3Bpcm95XzJfZml4X2V2ZW50cywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1NLmJwZi5jLTQyOC17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLU0uYnBmLmM6NDI5OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItTS5icGYuYy00MzAtXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYz0zODI9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYy0zODMte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1TLmJwZi5jOjM4NDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmMtMzg1LVxcdF9fczMyIHJkZXNjX3NpemUgPSBoY3R4LVxcdTAwM2VzaXplO1xcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmM9NDI4PWludCBCUEZfUFJPRyhpbnNwaXJveV8yX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0luc3Bpcm95LTItUy5icGYuYy00Mjkte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fSW5zcGlyb3ktMi1TLmJwZi5jOjQzMDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19JbnNwaXJveS0yLVMuYnBmLmMtNDMxLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jPTI1OD1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY19odWlvbl9rYW12YXNfcHJvXzE5LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jLTI1OS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jOjI2MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMtUHJvLTE5LmJwZi5jLTI2MS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzLVByby0xOS5icGYuYz0yODc9aW50IEJQRl9QUk9HKGthbXZhc19wcm9fMTlfZml4XzNyZF9idXR0b24sIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmMtMjg4LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmM6Mjg5OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhcy1Qcm8tMTkuYnBmLmMtMjkwLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmM9MTI0MD1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzY19odWlvbl9rYW12YXMxM19nZW4zLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmMtMTI0MS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmM6MTI0MjpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxM0dlbjMuYnBmLmMtMTI0My1cXHRfX3MzMiByZGVzY19zaXplID0gaGlkX2N0eC1cXHUwMDNlc2l6ZTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jPTEyODQ9aW50IEJQRl9QUk9HKGhpZF9maXhfZXZlbnRfaHVpb25fa2FtdmFzMTNfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jLTEyODUte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jOjEyODY6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIFZFTkRPUl9SRVBPUlRfTEVOR1RIIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTNHZW4zLmJwZi5jLTEyODctXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYz01NTU9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfaHVpb25fa2FtdmFzMTZfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jLTU1Ni17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmM6NTU3OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYy01NTgtXFx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhpZF9jdHgtXFx1MDAzZXNpemU7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYz01OTk9aW50IEJQRl9QUk9HKGhpZF9maXhfZXZlbnRfaHVpb25fa2FtdmFzMTZfZ2VuMywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2FtdmFzMTZHZW4zLmJwZi5jLTYwMC17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LYW12YXMxNkdlbjMuYnBmLmM6NjAxOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCBWRU5ET1JfUkVQT1JUX0xFTkdUSCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0thbXZhczE2R2VuMy5icGYuYy02MDItXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jPTMzOD1pbnQgQlBGX1BST0coazIwX2J0X2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC1CbHVldG9vdGguYnBmLmMtMzM5LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jOjM0MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYy0zNDEtXFx0X19zMzIgcmRlc2Nfc2l6ZSA9IGhjdHgtXFx1MDAzZXNpemU7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jPTM2MD1pbnQgQlBGX1BST0coazIwX2J0X2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAtQmx1ZXRvb3RoLmJwZi5jLTM2MS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLUJsdWV0b290aC5icGYuYzozNjI6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDEyIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC1CbHVldG9vdGguYnBmLmMtMzYzLVxcdHN0cnVjdCBwYWRfcmVwb3J0IHtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9IdWlvbl9fS2V5ZGlhbEsyMC5icGYuYz0zNDU9aW50IEJQRl9QUk9HKGsyMF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzQ2LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmM6MzQ3OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzQ4LVxcdF9fczMyIHJkZXNjX3NpemUgPSBoY3R4LVxcdTAwM2VzaXplO1xcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0h1aW9uX19LZXlkaWFsSzIwLmJwZi5jPTM4OT1pbnQgQlBGX1BST0coazIwX2ZpeF9ldmVudHMsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzkwLXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmM6MzkxOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvSHVpb25fX0tleWRpYWxLMjAuYnBmLmMtMzkyLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0lPR0VBUl9fS2FsaWJlci1NTU9tZW50dW0uYnBmLmM9MjU9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2MsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jLTI3LVxcdGNvbnN0IHU4IG9mZnNldHNbXSA9IHs4NCwgMTEyLCAxNDB9O1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jOjI4OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9JT0dFQVJfX0thbGliZXItTU1PbWVudHVtLmJwZi5jLTI5LVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0xvZ2l0ZWNoX19TcGFjZU5hdmlnYXRvci5icGYuYz0yOT1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9Mb2dpdGVjaF9fU3BhY2VOYXZpZ2F0b3IuYnBmLmMtMzAte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9Mb2dpdGVjaF9fU3BhY2VOYXZpZ2F0b3IuYnBmLmM6MzE6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL0xvZ2l0ZWNoX19TcGFjZU5hdmlnYXRvci5icGYuYy0zMi1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaWNyb3NvZnRfX1hib3gtRWxpdGUtMi5icGYuYz05Nj1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaWNyb3NvZnRfX1hib3gtRWxpdGUtMi5icGYuYy05Ny17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pY3Jvc29mdF9fWGJveC1FbGl0ZS0yLmJwZi5jOjk4OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaWNyb3NvZnRfX1hib3gtRWxpdGUtMi5icGYuYy05OS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaXN0ZWxfX01ENzcwLmJwZi5jPTEyNz1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX21pc3RlbF9tZDc3MCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9NaXN0ZWxfX01ENzcwLmJwZi5jLTEyOC17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL01pc3RlbF9fTUQ3NzAuYnBmLmM6MTI5OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvTWlzdGVsX19NRDc3MC5icGYuYy0xMzAtXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvUmFwb29fX001MC1QbHVzLVNpbGVudC5icGYuYz0xMjE9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9yYXBvb19tNTAsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvUmFwb29fX001MC1QbHVzLVNpbGVudC5icGYuYy0xMjIte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9SYXBvb19fTTUwLVBsdXMtU2lsZW50LmJwZi5jOjEyMzpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1JhcG9vX19NNTAtUGx1cy1TaWxlbnQuYnBmLmMtMTI0LVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RVWEVET19fU2lyaXVzLTE2LUdlbjEtYW5kLUdlbjIuYnBmLmM9MTU9aW50IEJQRl9QUk9HKGlnbm9yZV9rZXlfZml4X2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVFVYRURPX19TaXJpdXMtMTYtR2VuMS1hbmQtR2VuMi5icGYuYy0yNC1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvVFVYRURPX19TaXJpdXMtMTYtR2VuMS1hbmQtR2VuMi5icGYuYzoyNTpcXHRkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwLCBleHBlY3RlZF9sZW5ndGgpO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UVVhFRE9fX1Npcml1cy0xNi1HZW4xLWFuZC1HZW4yLmJwZi5jLTI2LVxcdGlmICghZGF0YSB8fCBkYXRhWzBdICE9IGV4cGVjdGVkX3JlcG9ydF9pZClcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UaHJ1c3RtYXN0ZXJfX1RDQS1Zb2tlLUJvZWluZy5icGYuYz0xMDA9aW50IEJQRl9QUk9HKGhpZF9maXhfcmRlc2NfdGNhX3lva2UsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UaHJ1c3RtYXN0ZXJfX1RDQS1Zb2tlLUJvZWluZy5icGYuYy0xMDYtXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RocnVzdG1hc3Rlcl9fVENBLVlva2UtQm9laW5nLmJwZi5jOjEwNzpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgSElEX01BWF9ERVNDUklQVE9SX1NJWkUgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RocnVzdG1hc3Rlcl9fVENBLVlva2UtQm9laW5nLmJwZi5jLTEwOC1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jPTE5PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1RydXN0X19QaGlsaXBzLVNQSzYzMjcuYnBmLmMtMjAte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jOjIxOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIDQwOTYpO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9UcnVzdF9fUGhpbGlwcy1TUEs2MzI3LmJwZi5jLTIyLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jPTIzMT1pbnQgQlBGX1BST0coaGlkX2ZpeF9yZGVzYywgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYy0yMzIte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYzoyMzM6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jLTIzNC1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XQUxUT1BfX0JhdHRlcnlsZXNzLVRhYmxldC5icGYuYz0yNDQ9aW50IEJQRl9QUk9HKHdhbHRvcF9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jLTI0NS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jOjI0NjpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dBTFRPUF9fQmF0dGVyeWxlc3MtVGFibGV0LmJwZi5jLTI0Ny1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XYWNvbV9fQXJ0UGVuLmJwZi5jPTEwNT1pbnQgQlBGX1BST0coYXJ0cGVuX3ByZXNzdXJlX2ludGVycG9sYXRlLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1dhY29tX19BcnRQZW4uYnBmLmMtMTA2LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvV2Fjb21fX0FydFBlbi5icGYuYzoxMDc6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIFBFTl9SRVBPUlRfTEVOIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9XYWNvbV9fQXJ0UGVuLmJwZi5jLTEwOC1cXHRfX3UxNiAqcHJlc3N1cmUsICp0b29sX3R5cGU7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FDSzA1LmJwZi5jPTIxOD1pbnQgQlBGX1BST0coYWNrMDVfZml4X3JkZXNjLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYy0yMTkte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmM6MjIwOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FDSzA1LmJwZi5jLTIyMS1cXHRfX3MzMiByZGVzY19zaXplID0gaGN0eC1cXHUwMDNlc2l6ZTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmM9MjY1PWludCBCUEZfUFJPRyhhY2swNV9maXhfZXZlbnRzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYy0yNjYte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQUNLMDUuYnBmLmM6MjY3OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBQQURfUkVQT1JUX0xFTkdUSCk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BQ0swNS5icGYuYy0yNjgtXFx0aW50IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jPTkzPWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjX3hwcGVuX2FydGlzdDI0LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYy05NC17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYzo5NTpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jLTk2LVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYz0xNTQ9aW50IEJQRl9QUk9HKHhwcGVuXzI0X2ZpeF9lcmFzZXIsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdDI0LmJwZi5jLTE1NS17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3QyNC5icGYuYzoxNTY6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDEwIC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0MjQuYnBmLmMtMTU3LVxcdF9fdTggY3VycmVudF9zdGF0ZSwgY2hhbmdlZF9zdGF0ZTtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jPTg4PWludCBCUEZfUFJPRyhoaWRfZml4X3JkZXNjX3hwcGVuX2FydGlzdHBybzE2Z2VuMiwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTg5LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYzo5MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgNDA5NiAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYy05MS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jPTExNj1zdGF0aWMgaW50IHhwcGVuXzE2X2ZpeF9lcmFzZXIoc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jLTExNy17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmM6MTE4OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAxMCAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYy0xMTktXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYz0yMzg9c3RhdGljIGludCB4cHBlbl8xNl9maXhfYW5nbGVfb2Zmc2V0KHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0FydGlzdFBybzE2R2VuMi5icGYuYy0yMzkte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fQXJ0aXN0UHJvMTZHZW4yLmJwZi5jOjI0MDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgMTAgLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19BcnRpc3RQcm8xNkdlbjIuYnBmLmMtMjQxLVxcbi0tXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYz0yMjQ9aW50IEJQRl9QUk9HKHhwcGVuX2RlY28wMXYzX3JkZXNjX2ZpeHVwLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYy0yMjUte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmM6MjI2OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCBISURfTUFYX0RFU0NSSVBUT1JfU0laRSAvKiBzaXplICovKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jLTIyNy1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmM9MjU0PWludCBCUEZfUFJPRyh4cHBlbl9kZWNvMDF2M19kZXZpY2VfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAxVjMuYnBmLmMtMjU2LVxcdHN0YXRpYyBjb25zdCBfX3U4IHBhZF9idXR0b25zW10gPSB7IDB4MDUsIDB4MDgsIDB4MDAsIDB4MmMsIDB4MTYsIDB4MWQsIDB4NTcsIDB4NTYgfTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMVYzLmJwZi5jOjI1NzpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgUEFEX1JFUE9SVF9MRU5HVEggLyogc2l6ZSAqLyk7XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDFWMy5icGYuYy0yNTgtXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYz0yODE9aW50IEJQRl9QUk9HKHhwcGVuX2RlY28wMl9yZGVzY19maXh1cCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jLTI4Mi17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvMDIuYnBmLmM6MjgzOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAsIEhJRF9NQVhfREVTQ1JJUFRPUl9TSVpFKTtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYy0yODQtXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYz0yOTc9aW50IEJQRl9QUk9HKHhwcGVuX2RlY28wMl9kZXZpY2VfZXZlbnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY28wMi5icGYuYy0yOTgte1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jOjI5OTpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwLCBSRVBPUlRfU0laRV9QQUQpO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjbzAyLmJwZi5jLTMwMC1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jPTE1Mz1pbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX3hwcGVuX2RlY29fbWluaV80LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgpXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvTWluaTQuYnBmLmMtMTU0LXtcXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvWFBQZW5fX0RlY29NaW5pNC5icGYuYzoxNTU6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCwgSElEX01BWF9ERVNDUklQVE9SX1NJWkUpO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE1Ni1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jPTE3Mj1pbnQgQlBGX1BST0coaGlkX2RldmljZV9ldmVudF94cHBlbl9kZWNvX21pbmlfNCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE3My17XFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL1hQUGVuX19EZWNvTWluaTQuYnBmLmM6MTc0OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA4IC8qIHNpemUgKi8pO1xcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9YUFBlbl9fRGVjb01pbmk0LmJwZi5jLTE3NS1cXHRfX3U4IGJ1dHRvbl9tYXNrID0gMDtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0yMi1cXG5kcml2ZXJzL2hpZC9icGYvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmg6MjM6ZXh0ZXJuIF9fdTggKmhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsXFxuZHJpdmVycy9oaWQvYnBmL3Byb2dzL2hpZF9icGZfaGVscGVycy5oLTI0LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2hpZF9icGYuaD0xMT1zdHJ1Y3QgaGlkX2RldmljZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvaGlkX2JwZi5oLTIzLSAqIGBgZGF0YWBgIGlzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gdGhlIGNvbnRleHQuIFdlIG5lZWQgdG8gaXNzdWVcXG5pbmNsdWRlL2xpbnV4L2hpZF9icGYuaDoyNDogKiBhIGNhbGwgdG8gaGlkX2JwZl9nZXRfZGF0YSgpIGluIG9yZGVyIHRvIGdldCBhIHBvaW50ZXIgdG8gdGhhdCBmaWVsZC5cXG5pbmNsdWRlL2xpbnV4L2hpZF9icGYuaC0yNS0gKlxcbi0tXFxuc2FtcGxlcy9oaWQvaGlkX2JwZl9oZWxwZXJzLmgtOC0vKiBmb2xsb3dpbmcgYXJlIGtmdW5jcyBleHBvcnRlZCBieSBISUQgZm9yIEhJRC1CUEYgKi9cXG5zYW1wbGVzL2hpZC9oaWRfYnBmX2hlbHBlcnMuaDo5OmV4dGVybiBfX3U4ICpoaWRfYnBmX2dldF9kYXRhKHN0cnVjdCBoaWRfYnBmX2N0eCAqY3R4LFxcbnNhbXBsZXMvaGlkL2hpZF9icGZfaGVscGVycy5oLTEwLVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM9OD1zdGF0aWMgaW50IGhpZF95X2V2ZW50KHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG4tLVxcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy0xMC1cXHRzMTYgeTtcXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM6MTE6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XFxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTEyLVxcbi0tXFxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jPTUzPXN0YXRpYyBpbnQgaGlkX3hfZXZlbnQoc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbi0tXFxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jLTU1LVxcdHMxNiB4O1xcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYzo1NjpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoY3R4LCAwIC8qIG9mZnNldCAqLywgOSAvKiBzaXplICovKTtcXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmMtNTctXFxuLS1cXG5zYW1wbGVzL2hpZC9oaWRfbW91c2UuYnBmLmM9ODM9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy04NC17XFxuc2FtcGxlcy9oaWQvaGlkX21vdXNlLmJwZi5jOjg1OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA0MDk2IC8qIHNpemUgKi8pO1xcbnNhbXBsZXMvaGlkL2hpZF9tb3VzZS5icGYuYy04Ni1cXG4tLVxcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM9MTQ9aW50IEJQRl9QUk9HKGhpZF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4KVxcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmMtMTUte1xcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM6MTY6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XFxuc2FtcGxlcy9oaWQvaGlkX3N1cmZhY2VfZGlhbC5icGYuYy0xNy1cXG4tLVxcbnNhbXBsZXMvaGlkL2hpZF9zdXJmYWNlX2RpYWwuYnBmLmM9MTA1PWludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXAsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eClcXG5zYW1wbGVzL2hpZC9oaWRfc3VyZmFjZV9kaWFsLmJwZi5jLTEwNi17XFxuc2FtcGxlcy9oaWQvaGlkX3N1cmZhY2VfZGlhbC5icGYuYzoxMDc6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XFxuc2FtcGxlcy9oaWQvaGlkX3N1cmZhY2VfZGlhbC5icGYuYy0xMDgtXFx0X191MTYgKnJlcywgKnBoeXM7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9MTk9aW50IEJQRl9QUk9HKGhpZF9maXJzdF9ldmVudCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yMC17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjIxOlxcdF9fdTggKnJ3X2RhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCAzIC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yMi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0zOT1pbnQgX19oaWRfc3VicHJvZ19maXJzdF9ldmVudChzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTQwLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NDE6XFx0X191OCAqcndfZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTQyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTY0PWludCBCUEZfUFJPRyhoaWRfc2Vjb25kX2V2ZW50LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTY1LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NjY6XFx0X191OCAqcndfZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDQgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTY3LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTgyPWludCBCUEZfUFJPRyhoaWRfY2hhbmdlX3JlcG9ydF9pZCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy04My17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjg0OlxcdF9fdTggKnJ3X2RhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCAzIC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy04NS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0yMjE9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cCwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yMjIte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyMjM6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDQwOTYgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTIyNC1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0yNDU9aW50IEJQRl9QUk9HKGhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yNDYte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzoyNDc6XFx0aWYgKCFoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDIgLyogb2Zmc2V0ICovLCB+MFVMTCAvKiBzaXplICovKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjQ4LVxcdFxcdGdldF9kYXRhX292ZXJmbG93X2NoZWNrID0gMTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0yNTk9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjYwLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6MjYxOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhpZF9jdHgsIDAgLyogb2Zmc2V0ICovLCA0IC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0yNjItXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM9MjgyPWludCBCUEZfUFJPRyhoaWRfdGVzdF9pbnNlcnQyLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTI4My17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jOjI4NDpcXHRfX3U4ICpkYXRhID0gaGlkX2JwZl9nZXRfZGF0YShoaWRfY3R4LCAwIC8qIG9mZnNldCAqLywgNCAvKiBzaXplICovKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtMjg1LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTMwND1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0Mywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0zMDUte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzozMDY6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDQgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTMwNy1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz0zNDc9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2hpZHJhd19yYXdfcmVxdWVzdCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCB1bnNpZ25lZCBjaGFyIHJlcG9ydG51bSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0zNDkte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzozNTA6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTM1MS1cXHRpbnQgcmV0O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTM3OD1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5maW5pdGVfbG9vcF9yYXdfcmVxdWVzdCwgc3RydWN0IGhpZF9icGZfY3R4ICpoY3R4LCB1bnNpZ25lZCBjaGFyIHJlcG9ydG51bSxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy0zODAte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzozODE6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTM4Mi1cXHRpbnQgcmV0O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTQxNz1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaGlkcmF3X291dHB1dF9yZXBvcnQsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGN0eCwgX191NjQgc291cmNlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00MTgte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo0MTk6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGN0eCwgMCAvKiBvZmZzZXQgKi8sIDMgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTQyMC1cXHRpbnQgcmV0O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jPTQzOD1pbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5maW5pdGVfbG9vcF9vdXRwdXRfcmVwb3J0LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgsIF9fdTY0IHNvdXJjZSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNDM5LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NDQwOlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCAzIC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy00NDEtXFx0aW50IHJldDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01MTU9aW50IEJQRl9QUk9HKGhpZF90ZXN0X211bHRpcGx5X2V2ZW50c193cSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy01MTYte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo1MTc6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTUxOC1cXHRpbnQgaGlkID0gaGlkX2N0eC1cXHUwMDNlaGlkLVxcdTAwM2VpZDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01NDI9aW50IEJQRl9QUk9HKGhpZF90ZXN0X211bHRpcGx5X2V2ZW50cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy01NDMte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYzo1NDQ6XFx0X191OCAqZGF0YSA9IGhpZF9icGZfZ2V0X2RhdGEoaGlkX2N0eCwgMCAvKiBvZmZzZXQgKi8sIDkgLyogc2l6ZSAqLyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jLTU0NS1cXHRfX3U4IGJ1Zls5XTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYz01ODE9aW50IEJQRl9QUk9HKGhpZF90ZXN0X2luZmluaXRlX2xvb3BfaW5wdXRfcmVwb3J0LCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhjdHgsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMtNTgzLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmM6NTg0OlxcdF9fdTggKmRhdGEgPSBoaWRfYnBmX2dldF9kYXRhKGhjdHgsIDAgLyogb2Zmc2V0ICovLCA2IC8qIHNpemUgKi8pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYy01ODUtXFx0X191OCBidWZbNl07XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmg9ODg9c3RydWN0IGhpZF9icGZfb3BzIHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaC0xMDYtLyogZm9sbG93aW5nIGFyZSBrZnVuY3MgZXhwb3J0ZWQgYnkgSElEIGZvciBISUQtQlBGICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oOjEwNzpleHRlcm4gX191OCAqaGlkX2JwZl9nZXRfZGF0YShzdHJ1Y3QgaGlkX2JwZl9jdHggKmN0eCxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmgtMTA4LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjUzOjEyLjcyMjY4OTM5OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NjU1Njg2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaGlkX2JwZl9nZXRfZGF0YWAgQlBGIEtmdW5jIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgYGhpZF9icGZfZ2V0X2RhdGFgIGZ1bmN0aW9uLiBUaGlzIGlzIGEgQlBGIGtmdW5jLCB3aGljaCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIEl0IGxpdmVzIGluIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9kaXNwYXRjaC5jYCDigJMgYSBkZXRhaWwgdG8gbm90ZSBmb3IgbGF0ZXIgcmVmZXJlbmNlLCBvZiBjb3Vyc2UuIE15IGZpcnN0IHRob3VnaHQgaXMgYWJvdXQgaXRzIHB1cnBvc2U7IGl0J3MgdXNlZCBieSBCUEYgcHJvZ3JhbXMgdG8gcmVhZCBkYXRhIGZyb20gYSBISUQgZGV2aWNlJ3MgYnVmZmVyLCBzbyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgY3JpdGljYWwgaW50ZXJmYWNlLlxuXG5UaGUgY29yZSBvZiB0aGUgaXNzdWUgaXMgYW4gaW50ZWdlciBvdmVyZmxvdy4gRXNzZW50aWFsbHksIGByZHdyX2J1Zl9zaXplICsgb2Zmc2V0YCBwb3RlbnRpYWxseSB3cmFwcyBhcm91bmQgaWYgYHJkd3JfYnVmX3NpemVgIGlzIGNsb3NlIHRvIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGFuIHVuc2lnbmVkIGxvbmcgbG9uZyAoaS5lLiwgYH4wVUxMYCkuIFRoaXMgd3JhcC1hcm91bmQgY291bGQgcmVzdWx0IGluIGByZHdyX2J1Zl9zaXplICsgb2Zmc2V0YCBiZWluZyAqc21hbGxlciogdGhhbiBgY3R4LVx1MDAzZWFsbG9jYXRlZF9zaXplYCwgd2hpY2ggaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgYWNjZXNzIHNjZW5hcmlvLiBXZSd2ZSBnb3QgYSBwb3RlbnRpYWwgc2VjdXJpdHkgaG9sZSBoZXJlOyBJIGFtIGFscmVhZHkgZm9ybWluZyBhIG1lbnRhbCBjaGVja2xpc3Qgb2YgZXhwbG9pdHMhXG5cblRoaXMgaXMgYSAqKmZ1bmN0aW9uYWwgY2hhbmdlKiogYW5kIGEgKipzZWN1cml0eSBmaXgqKiByb2xsZWQgaW50byBvbmUsIGltcGFjdGluZyBob3cgQlBGIHByb2dyYW1zIGludGVyYWN0IHdpdGggSElEIGRhdGEuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCdzIGRpcmVjdGx5IHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBISUQgZGV2aWNlcy4gVGhlIGF0dGFjayBzdXJmYWNlIGlzIHByZXR0eSBjbGVhciBub3cuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSB0ZXN0ZWQgdmlnb3JvdXNseS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgbmVlZCBgQ09ORklHX0hJRF9CUEZgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBlbmFibGVkIHRvIHJlcHJvZHVjZSB0aGlzLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgYGRyaXZlcnMvaGlkL2JwZi9LY29uZmlnYCBvciBwb3NzaWJseSBgZHJpdmVycy9oaWQvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBzZXR0aW5ncyBhcmUgcHJlc2VudC4gSSBhbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IGNyZWF0aW5nIGEgZnV6emluZyBjYW1wYWlnbiB0byB0YXJnZXQgdGhpcyB2dWxuZXJhYmlsaXR5IGFzIGEgdG9wIHByaW9yaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzA5OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzo1MzoxOC42ODgyNjA5NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMzQ2MDgzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSElEX0JQRlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2hpZC9icGYvS2NvbmZpZz0yPW1lbnUgXFxcIkhJRC1CUEYgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZy0zLVxcbmRyaXZlcnMvaGlkL2JwZi9LY29uZmlnOjQ6Y29uZmlnIEhJRF9CUEZcXG5kcml2ZXJzL2hpZC9icGYvS2NvbmZpZy01LVxcdGJvb2wgXFxcIkhJRC1CUEYgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MjEuMjAxNzI3NjkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU2NDIzOTI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyB0YXNrOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZGVwZW5kZW50IG9uIHNvbWV0aGluZywgYW5kIHRoZSBzdGFydGluZyBwb2ludCBpcyBgZHJpdmVycy9oaWQvYnBmL0tjb25maWdgLiBNeSBleHBlcnRpc2UgaW4ga2VybmVsIGNvbmZpZ3VyYXRpb24gdGVsbHMgbWUgdGhpcyBmaWxlIGxpa2VseSBkZWZpbmVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBISUQgc3Vic3lzdGVtJ3MgQlBGIGZ1bmN0aW9uYWxpdHkuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHRoaXMgZmlsZSBmb3IgZGVwZW5kZW5jeSBkZWNsYXJhdGlvbnMuIFRoaXMgd2lsbCBpbmRpY2F0ZSB3aGljaCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBtaWdodCByZXF1aXJlIG9yIHJlbHkgdXBvbiB0aGUgb3B0aW9ucyBkZWZpbmVkIHdpdGhpbiBgS2NvbmZpZ2AuIFRoaXMgaXMgYSBjbGFzc2ljIGRlcGVuZGVuY3kgYW5hbHlzaXMgc2NlbmFyaW8sIHRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlLiBMZXQncyBnZXQgdG8gaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODI4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6NTM6MjguNzY1OTcwMTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9oaWQvYnBmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnUgXFxcIkhJRC1CUEYgc3VwcG9ydFxcXCJcXG4gICAzOlxcdFxcbiAgIDQ6XFx0Y29uZmlnIEhJRF9CUEZcXG4gICA1OlxcdFxcdGJvb2wgXFxcIkhJRC1CUEYgc3VwcG9ydFxcXCJcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gQlBGX0pJVFxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0VGhpcyBvcHRpb24gYWxsb3dzIHRvIHN1cHBvcnQgZUJQRiBwcm9ncmFtcyBvbiB0aGUgSElEIHN1YnN5c3RlbS5cXG4gIDExOlxcdFxcdGVCUEYgcHJvZ3JhbXMgY2FuIGZpeCBISUQgZGV2aWNlcyBpbiBhIGxpZ2h0ZXIgd2F5IHRoYW4gYSBmdWxsXFxuICAxMjpcXHRcXHRrZXJuZWwgcGF0Y2ggYW5kIGFsbG93IGEgbG90IG1vcmUgZmxleGliaWxpdHkuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdEZvciBkb2N1bWVudGF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi9oaWQvaGlkLWJwZi5yc3RcXG4gIDE1OlxcdFxcbiAgMTY6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzo1MzoyOC43NjYwNzQxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTk5Nzk3OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBISURfQlBGIENvbmZpZ3VyYXRpb24gYW5kIEFzc29jaWF0ZWQgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYEhJRF9CUEZgIGNvbmZpZ3VyYXRpb24sIHRoYXQncyB0aGUgY29yZSBvZiBpdC4gUmlnaHQgbm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIG5ldyBjb25maWd1cmF0aW9uIGFuZCBob3cgaXQgZnVuY3Rpb25zLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gdGhhdCBzeW1ib2wsIGBoaWRfYnBmX2dldF9kYXRhYC5cblxuQmV5b25kIHRoZSBjb3JlIGNvbmZpZywgSSBzZWUgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyB0aGUgc2VsZnRlc3RzLiBJdCdzIG1vZGlmeWluZyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGNoYW5nZXMgaW5jbHVkZSB1cGRhdGVzIHRvIGhvdyB0aGUgQlBGIGZ1bmN0aW9uYWxpdHkgaXMgdGVzdGVkLCB3aGljaCBpcyBnb29kLiBJbXBvcnRhbnQgdGhhdCB0aGV5IHZlcmlmeSB0aGF0IGZ1bmN0aW9uYWxpdHkuXG5cbk5leHQsIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGhpZF9icGZfZ2V0X2RhdGFgIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBmdW5jdGlvbnMuIFRoYXQgbGlrZWx5IGhhcHBlbnMgaW4gYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgLCBzbyB0aGF0J3Mgd2hlcmUgSSB3aWxsIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI0OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjUzOjMyLjg2NjA1NzI3NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfZGlzcGF0Y2guY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyODA6XFx0XFx0cmV0dXJuIDA7XFxuIDI4MTpcXHR9XFxuIDI4MjpcXHRcXG4gMjgzOlxcdC8qIERpc2FibGVzIG1pc3NpbmcgcHJvdG90eXBlIHdhcm5pbmdzICovXFxuIDI4NDpcXHRfX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XFxuIDI4NTpcXHRcXG4gMjg2OlxcdC8qKlxcbiAyODc6XFx0ICogaGlkX2JwZl9nZXRfZGF0YSAtIEdldCB0aGUga2VybmVsIG1lbW9yeSBwb2ludGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGV4dCBAY3R4XFxuIDI4ODpcXHQgKlxcbiAyODk6XFx0ICogQGN0eDogVGhlIEhJRC1CUEYgY29udGV4dFxcbiAyOTA6XFx0ICogQG9mZnNldDogVGhlIG9mZnNldCB3aXRoaW4gdGhlIG1lbW9yeVxcbiAyOTE6XFx0ICogQHJkd3JfYnVmX3NpemU6IHRoZSBjb25zdCBzaXplIG9mIHRoZSBidWZmZXJcXG4gMjkyOlxcdCAqXFxuIDI5MzpcXHQgKiBAcmV0dXJucyAlTlVMTCBvbiBlcnJvciwgYW4gJV9fdTggbWVtb3J5IHBvaW50ZXIgb24gc3VjY2Vzc1xcbiAyOTQ6XFx0ICovXFxuIDI5NTpcXHRfX2JwZl9rZnVuYyBfX3U4ICpcXG4gMjk2OlxcdGhpZF9icGZfZ2V0X2RhdGEoc3RydWN0IGhpZF9icGZfY3R4ICpjdHgsIHVuc2lnbmVkIGludCBvZmZzZXQsIGNvbnN0IHNpemVfdCByZHdyX2J1Zl9zaXplKVxcbiAyOTc6XFx0e1xcbiAyOTg6XFx0XFx0c3RydWN0IGhpZF9icGZfY3R4X2tlcm4gKmN0eF9rZXJuO1xcbiAyOTk6XFx0XFxuIDMwMDpcXHRcXHRjdHhfa2VybiA9IGNvbnRhaW5lcl9vZihjdHgsIHN0cnVjdCBoaWRfYnBmX2N0eF9rZXJuLCBjdHgpO1xcbiAzMDE6XFx0XFxuIDMwMjpcXHRcXHRpZiAob2Zmc2V0IFxcdTAwM2UgY3R4LVxcdTAwM2VhbGxvY2F0ZWRfc2l6ZSB8fFxcbiAzMDM6XFx0XFx0ICAgIHJkd3JfYnVmX3NpemUgXFx1MDAzZSBjdHgtXFx1MDAzZWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0KVxcbiAzMDQ6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDMwNTpcXHRcXG4gMzA2OlxcdFxcdHJldHVybiBjdHhfa2Vybi1cXHUwMDNlZGF0YSArIG9mZnNldDtcXG4gMzA3OlxcdH1cXG4gMzA4OlxcdFxcbiAzMDk6XFx0LyoqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjUzOjMyLjg2NjI2NDU3NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODAxNjAzNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkFuYWx5c2lzIG9mIHRoZSBISUQgQlBGIFBhdGNoKipcblxuT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIHRoYXQncyBmaXhpbmcgYW4gaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IHdpdGhpbiBgaGlkX2JwZl9nZXRfZGF0YWAuIFRoaXMgaXMgYSBCUEYga2Z1bmMsIHdoaWNoIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gQW55dGltZSB3ZSBzZWUgYSBmaXggbGlrZSB0aGlzLCBlc3BlY2lhbGx5IHdpdGhpbiBCUEYsIGZ1enppbmcgYmVjb21lcyBhIHRvcCBwcmlvcml0eS4gVGhlIGF0dGFjayBzdXJmYWNlIGhlcmUgaXMgY2xlYXJseSB0aGUgYGhpZF9icGZfZ2V0X2RhdGFgIGZ1bmN0aW9uIGl0c2VsZi4gVGhlIGZpeCBzaG91bGQgYmUgcmlnb3JvdXNseSB0ZXN0ZWQuXG5cbk15IGZvY3VzIGhhcyB0byBiZSBsYXNlci1zaGFycCBvbiB0aGF0IGZ1bmN0aW9uLiBUbyBlbnN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyB2dWxuZXJhYmlsaXR5IGZpeCBpcyBpc29sYXRlZCB0byBgaGlkX2JwZl9nZXRfZGF0YWAuIExldCBtZSBjaGVjayB0aGUgY29kZSBtb2RpZmljYXRpb25zLiBBaCwgeWVzLCBpdCBhcHBlYXJzIHRoYXQgYGhpZF9icGZfZ2V0X2RhdGFgIGlzIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW4gYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX2Rpc3BhdGNoLmNgLiBUaGUgcmVtYWluaW5nIG1vZGlmaWNhdGlvbnMgc2VlbSB0byBiZSBjb25maW5lZCB0byBzZWxmdGVzdHMsIHdoaWNoIGlzIGdvb2QuIFRoZXkgc2hvdWxkIGhlbHAsIGJ1dCB0aGUga2V5IGlzIHRoZSBtYWluIGZ1bmN0aW9uLlxuXG5Ob3cgdGhhdCBJJ3ZlIGNvbmZpcm1lZCB0aGUgc2NvcGUsIEknbGwgcmVjb3JkIHRoZXNlIGZpbmRpbmdzIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDY0LCJPdXRwdXRUb2tlbnMiOjEwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjUzOjQwLjY2Nzg3MzIwOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzcxNTc3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElEX0JQRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZF9icGZfZ2V0X2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gYGhpZF9icGZfZ2V0X2RhdGFgIHdoaWNoIGlzIGEgQlBGIGtmdW5jIHVzZWQgYnkgSElELUJQRiBwcm9ncmFtcyB0byBhY2Nlc3MgZGV2aWNlIGRhdGEgYnVmZmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgc2VjdXJpdHkgZml4IHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gSElEIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSElEX0JQRlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZF9icGZfZ2V0X2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gYGhpZF9icGZfZ2V0X2RhdGFgIHdoaWNoIGlzIGEgQlBGIGtmdW5jIHVzZWQgYnkgSElELUJQRiBwcm9ncmFtcyB0byBhY2Nlc3MgZGV2aWNlIGRhdGEgYnVmZmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgc2VjdXJpdHkgZml4IHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gSElEIGRldmljZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowvnpwp[1] Phase: Succeeded StartedAt: 2026-06-22 07:53:52 +0000 UTC FinishedAt: 2026-06-22 07:53:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-22 07:53:52 +0000 UTC FinishedAt: 2026-06-22 07:53:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2] Phase: Succeeded StartedAt: 2026-06-22 07:53:52 +0000 UTC FinishedAt: 2026-06-22 09:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-22 07:53:52 +0000 UTC FinishedAt: 2026-06-22 09:12:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-22 07:53:52 +0000 UTC FinishedAt: 2026-06-22 07:54:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-22 07:53:52 +0000 UTC FinishedAt: 2026-06-22 07:53:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},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-workflowvnpwp/series-workflowvnpwp-convert-artifact-411986861/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-22 07:54:02 +0000 UTC FinishedAt: 2026-06-22 08:20:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-22 07:54:02 +0000 UTC FinishedAt: 2026-06-22 08:20:11 +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:*d28d8a94-276e-4eec-867d-977437a9b188,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-workflowvnpwp/series-workflowvnpwp-convert-artifact-411986861/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": "511a2356-e7ab-41aa-93e4-b79cca292205", "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-workflowvnpwp/series-workflowvnpwp-build-action-3834423203/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-22 07:54:02 +0000 UTC FinishedAt: 2026-06-22 08:18:30 +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:*d28d8a94-276e-4eec-867d-977437a9b188,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-workflowvnpwp/series-workflowvnpwp-convert-artifact-411986861/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": "511a2356-e7ab-41aa-93e4-b79cca292205", "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-workflowvnpwp/series-workflowvnpwp-build-action-3834423203/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-22 08:20:11 +0000 UTC FinishedAt: 2026-06-22 08:20:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-22 08:20:11 +0000 UTC FinishedAt: 2026-06-22 08:20:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-22 08:20:11 +0000 UTC FinishedAt: 2026-06-22 08:20:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-22 08:20:11 +0000 UTC FinishedAt: 2026-06-22 08:20:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},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-workflowvnpwp/series-workflowvnpwp-convert-artifact-2134417416/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-22 08:20:21 +0000 UTC FinishedAt: 2026-06-22 08:22:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-22 08:20:21 +0000 UTC FinishedAt: 2026-06-22 08:22:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*511a2356-e7ab-41aa-93e4-b79cca292205,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-workflowvnpwp/series-workflowvnpwp-build-action-3834423203/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-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-22 08:22:45 +0000 UTC FinishedAt: 2026-06-22 08:22:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-22 08:22:45 +0000 UTC FinishedAt: 2026-06-22 08:22:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-22 08:22:45 +0000 UTC FinishedAt: 2026-06-22 09:03:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-22 08:22:45 +0000 UTC FinishedAt: 2026-06-22 09:03:48 +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:*d28d8a94-276e-4eec-867d-977437a9b188,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-workflowvnpwp/series-workflowvnpwp-convert-artifact-2134417416/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": "b093f75e-dc2a-4afb-97d9-1d1a8af07539", "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-workflowvnpwp/series-workflowvnpwp-build-action-1846625204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-22 08:22:45 +0000 UTC FinishedAt: 2026-06-22 09:03:06 +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:*d28d8a94-276e-4eec-867d-977437a9b188,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-workflowvnpwp/series-workflowvnpwp-convert-artifact-2134417416/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": "b093f75e-dc2a-4afb-97d9-1d1a8af07539", "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-workflowvnpwp/series-workflowvnpwp-build-action-1846625204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-22 09:03:48 +0000 UTC FinishedAt: 2026-06-22 09:03:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-22 09:03:48 +0000 UTC FinishedAt: 2026-06-22 09:03:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-22 09:03:48 +0000 UTC FinishedAt: 2026-06-22 09:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-22 09:03:48 +0000 UTC FinishedAt: 2026-06-22 09:05:34 +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:*b093f75e-dc2a-4afb-97d9-1d1a8af07539,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-workflowvnpwp/series-workflowvnpwp-build-action-1846625204/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-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-22 09:05:44 +0000 UTC FinishedAt: 2026-06-22 09:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-22 09:05:44 +0000 UTC FinishedAt: 2026-06-22 09:12:47 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"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:*511a2356-e7ab-41aa-93e4-b79cca292205,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b093f75e-dc2a-4afb-97d9-1d1a8af07539,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-workflowvnpwp/series-workflowvnpwp-build-action-3834423203/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-workflowvnpwp/series-workflowvnpwp-build-action-1846625204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-22 09:05:44 +0000 UTC FinishedAt: 2026-06-22 09:06:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-22 09:05:44 +0000 UTC FinishedAt: 2026-06-22 09:06:48 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"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-workflowvnpwp/series-workflowvnpwp-convert-artifact-86958529/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-22 09:05:44 +0000 UTC FinishedAt: 2026-06-22 09:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-22 09:05:44 +0000 UTC FinishedAt: 2026-06-22 09:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-22 09:05:44 +0000 UTC FinishedAt: 2026-06-22 09:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-22 09:06:56 +0000 UTC FinishedAt: 2026-06-22 09:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvnpwp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["hid_bpf_get_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"83f1454877cc292b88baf13c829c16ce6937d120","config_name":"upstream-apparmor-kasan.config","enable_configs":["HID_BPF"],"series_id":"58ff93ed-ac0d-4284-91f8-7a03fa6bf7a9","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-22 09:06:56 +0000 UTC FinishedAt: 2026-06-22 09:12:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*511a2356-e7ab-41aa-93e4-b79cca292205,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b093f75e-dc2a-4afb-97d9-1d1a8af07539,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-workflowvnpwp/series-workflowvnpwp-build-action-3834423203/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-workflowvnpwp/series-workflowvnpwp-build-action-1846625204/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-workflowvnpwp/series-workflowvnpwp-convert-artifact-86958529/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,}