Name: series-workflowjq8d6 Phase: Succeeded StartedAt: 2026-08-14 12:40:14 +0000 UTC FinishedAt: 2026-08-14 16:28:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[0] Phase: Succeeded StartedAt: 2026-08-14 12:40:14 +0000 UTC FinishedAt: 2026-08-14 12:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 12:40:14 +0000 UTC FinishedAt: 2026-08-14 12:45:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_RAW_GADGET", "USB_CONFIGFS", "USB_CONFIGFS_F_UVC", "USB_G_WEBCAM", "VIDEO_DEV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_RAW_GADGET", "USB_CONFIGFS", "USB_CONFIGFS_F_UVC", "USB_G_WEBCAM", "VIDEO_DEV" ], "series_id": "c20d41da-bdfd-4cad-95ca-9064fe79036f" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "uvcg_video_enable" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3RhdGUgY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGNoZWNrcyBpZiBgdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZGAgaXMgdHJ1ZSBpbiBgdXZjZ192aWRlb19lbmFibGVgLiBUaGlzIGZpeGVzIGEgYnVnIHdoZXJlIGB1dmNfdjRsMl9zdHJlYW1vbmAgY291bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkLCBvciB3aGVuIGl0JiMzOTtzIGFscmVhZHkgc3RyZWFtaW5nLiBJdCBhbHNvIHByZXZlbnRzIGVuYWJsaW5nIHZpZGVvIHdoZW4gdGhlIGVuZHBvaW50IGlzIGRpc2FibGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlIFVWQyBnYWRnZXQgZHJpdmVyLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFY0TDIgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmM3MTYxODc1MDFiNzliY2JhYjI3OWRhYWUxMGE5OTY5NjE3YmZkM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDEyOjQyOjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbmluZGV4IGRmYTA1MjFhMjQzYWMuLmRhODU3YzJjNThkM2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbkBAIC01MjcsNiAmIzQzOzUyNywxMiBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxuIFx0aWYgKHR5cGUgIT0gdmlkZW8tXHUwMDNlcXVldWUucXVldWUudHlwZSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0aWYgKHV2Yy1cdTAwM2VzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdGlmICh1dmMtXHUwMDNlc3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRClcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiBcdC8qIEVuYWJsZSBVVkMgdmlkZW8uICovXG4gXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuaW5kZXggMmY5NzAwYjNmMWI2NC4uZDRhZWVkYWNjYjA2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXG5AQCAtNzY0LDcgJiM0Mzs3NjQsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4mIzQzO1x0aWYgKHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQpIHtcbiBcdFx0dXZjZ19pbmZvKFx1MDAyNnZpZGVvLVx1MDAzZXV2Yy1cdTAwM2VmdW5jLFxuIFx0XHRcdCAgXCYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN0YXRlIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBjaGVja3MgaWYgYHZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWRgIGlzIHRydWUgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSBgdXZjX3Y0bDJfc3RyZWFtb25gIGNvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCwgb3Igd2hlbiBpdCYjMzk7cyBhbHJlYWR5IHN0cmVhbWluZy4gSXQgYWxzbyBwcmV2ZW50cyBlbmFibGluZyB2aWRlbyB3aGVuIHRoZSBlbmRwb2ludCBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBWNEwyIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNzE2MTg3NTAxYjc5YmNiYWIyNzlkYWFlMTBhOTk2OTYxN2JmZDMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxMjo0MjoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKaW5kZXggZGZhMDUyMWEyNDNhYy4uZGE4NTdjMmM1OGQzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKQEAgLTUyNyw2ICYjNDM7NTI3LDEyIEBAIHV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpCiAJaWYgKHR5cGUgIT0gdmlkZW8tJmd0O3F1ZXVlLnF1ZXVlLnR5cGUpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWlmICh1dmMtJmd0O3N0YXRlID09IFVWQ19TVEFURV9TVFJFQU1JTkcpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJaWYgKHV2Yy0mZ3Q7c3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRCkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCS8qIEVuYWJsZSBVVkMgdmlkZW8uICovCiAJcmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pOwogCWlmIChyZXQgJmx0OyAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jCmluZGV4IDJmOTcwMGIzZjFiNjQuLmQ0YWVlZGFjY2IwNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMKQEAgLTc2NCw3ICYjNDM7NzY0LDcgQEAgaW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKQogewogCWludCByZXQ7CiAKLQlpZiAodmlkZW8tJmd0O2VwID09IE5VTEwpIHsKJiM0MzsJaWYgKHZpZGVvLSZndDtlcCA9PSBOVUxMIHx8ICF2aWRlby0mZ3Q7ZXAtJmd0O2VuYWJsZWQpIHsKIAkJdXZjZ19pbmZvKCZhbXA7dmlkZW8tJmd0O3V2Yy0mZ3Q7ZnVuYywKIAkJCSAgJiMzNDtWaWRlbyBlbmFibGUgZmFpbGVkLCBkZXZpY2UgaXMgdW5pbml0aWFsaXplZC5cbiYjMzQ7KTsKIAkJcmV0dXJuIC1FTk9ERVY7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVVkMgR2FkZ2V0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYHV2Y192NGwyLmNgIGFuZCBgdXZjX3ZpZGVvLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0IGZ1bmN0aW9uIGRyaXZlciBmb3IgVVZDLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhleSYjMzk7cmUgYWRkaW5nIHN0YXRlIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCB2ZXJpZnlpbmcgaWYgYHZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZGAgaXMgdHJ1ZSBpbiBgdXZjZ192aWRlb19lbmFibGVgLiBTb3VuZHMgbGlrZSB3ZSYjMzk7cmUgdGlnaHRlbmluZyB1cCBzb21lIHN5bmNocm9uaXphdGlvbiBvciBlcnJvciBoYW5kbGluZyBhcm91bmQgdGhlIFVTQiBWaWRlbyBDbGFzcyAoVVZDKSBnYWRnZXQgZHJpdmVyLiBHaXZlbiB0aGUgY29udGV4dCwgSSYjMzk7bSBndWVzc2luZyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IHBvdGVudGlhbGx5IHByZXZlbnRpbmcgc29tZSBraW5kIG9mIHJhY2UgY29uZGl0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHN0cmVhbSBpbml0aWF0aW9uIG9yIGVuZHBvaW50IGVuYWJsaW5nLgoKS25vd2luZyB0aGUgZ2FkZ2V0IGRyaXZlciYjMzk7cyBkZXNpZ24sIEkgc2VlIHRoaXMgYXMgYSBwb3RlbnRpYWwgdmVjdG9yIGZvciBmdXp6aW5nLiBUaGUgVVNCIGdhZGdldCBkcml2ZXJzLCBpbiBnZW5lcmFsLCBhcmUga25vd24gdG8gYmUgZnV6emFibGUsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSByYXctZ2FkZ2V0IGFuZCBkdW1teV9oY2QgaW50ZXJmYWNlcyBhcmUgbXkgZ28tdG8gdG9vbHMgZm9yIHRoaXMga2luZCBvZiB3b3JrLiBUaGVyZWZvcmUsIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSwgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGhvdyB0aGlzIGdhZGdldCBpcyBjb25maWd1cmVkLiBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zIHRoYXQgZ292ZXJuIHRoaXMgcGFydGljdWxhciBkcml2ZXI/IFRoZXkgbWlnaHQgaW5mbHVlbmNlIGhvdyB0aGUgcGF0Y2ggd2lsbCB3b3JrIGFuZCBpbmZsdWVuY2UgdGhlIGZ1enppbmcgYXBwcm9hY2ggdGhhdCBzaG91bGQgYmUgdGFrZW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjX3Y0bDJfc3RyZWFtb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUxOT1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MjA6dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUyMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM9NjQ5PWNvbnN0IHN0cnVjdCB2NGwyX2lvY3RsX29wcyB1dmNfdjRsMl9pb2N0bF9vcHMgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYwLVx0LnZpZGlvY19kcWJ1ZiA9IHV2Y192NGwyX2RxYnVmLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NjYxOlx0LnZpZGlvY19zdHJlYW1vbiA9IHV2Y192NGwyX3N0cmVhbW9uLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYyLVx0LnZpZGlvY19zdHJlYW1vZmYgPSB1dmNfdjRsMl9zdHJlYW1vZmYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgVVZDIEdhZGdldCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIHJpZ2h0IGluLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIG1ldGljdWxvdXNseSBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgVVZDIGdhZGdldC4gSSBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIGZyb20gdGhlIGVuZHBvaW50IGFzc2lnbm1lbnRzIGFuZCBpbnRlcmZhY2UgZGVzY3JpcHRvcnMgZG93biB0byB0aGUgZ3JhbnVsYXIgZGV0YWlscyBvZiB0aGUgdmlkZW8gcGF5bG9hZCBmb3JtYXQuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHBvdGVudGlhbCBwaXRmYWxscyBoZXJlLCB0aGUgY29tbW9uIGdvdGNoYXM6IGlzIHRoZSBkZXNjcmlwdG9yIGNvcnJlY3RseSBpZGVudGlmeWluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBjYW1lcmE/IEFyZSB0aGUgZnJhbWUgZm9ybWF0cyBhbmQgcmVzb2x1dGlvbnMgc3VwcG9ydGVkIGJ5IGJvdGggdGhlIGhvc3QgYW5kIHRoZSBkZXZpY2U/IEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGJhbmR3aWR0aCBhbGxvY2F0aW9uIGlzIG9wdGltaXplZCB0byBwcmV2ZW50IGFueSBzdHV0dGVyaW5nIG9yIGRyb3BwZWQgZnJhbWVzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBzZXR0aW5ncyBtYXRjaCB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IuIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoZSB2aWRlbyBpcyBiZWluZyBwcmVzZW50ZWQgYXMgdGhlIHNvdXJjZS4gSXMgaXQgYSBsaXZlIGZlZWQsIG9yIHNvbWV0aGluZyBwcmUtcmVjb3JkZWQ/IEFsc28sIHRoZSBjaG9zZW4gY29uZmlndXJhdGlvbiBsaWtlbHkgaGFzIGEgc2lnbmlmaWNhbnQgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBleHBlY3RlZCBmcmFtZXJhdGUgaXMgYWNoaWV2YWJsZS4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0ZfVVZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYToKCioqRGlnZ2luZyBpbnRvIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eS4gR2l2ZW4gbXkga25vd2xlZGdlLCB0aGUgbW9zdCBsaWtlbHkgcGxhY2VzIHRvIGZpbmQgdGhlc2UgYXJlIHRoZSBLY29uZmlnIGZpbGVzLiBUaGUgc3RydWN0dXJlIG9mIHRoZSBrZXJuZWwgaGFzIGV2b2x2ZWQsIGFuZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGNvdWxkIGxpdmUgaW4gYSBjb3VwbGUgb2YgZGlmZmVyZW50IGxvY2F0aW9ucy4gTXkgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIHRoZSAmIzM0O2xlZ2FjeSYjMzQ7IGdhZGdldCBjb25maWd1cmF0aW9ucywgc28gSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AuIElmIHRob3NlIGRvbiYjMzk7dCBoYXZlIHdoYXQgSSBuZWVkLCBvciBpZiBJJiMzOTttIGxvb2tpbmcgZm9yIG1vcmUgbW9kZXJuIG9wdGlvbnMsIEkgc2hvdWxkIGFsc28gbG9vayBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL0tjb25maWdgLiBUaG9zZSBhcmUgdGhlIHR3byBtb3N0IGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IHBva2luZyBhcm91bmQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgZm9yIGFueSByZWxldmFudCBpbmNsdWRlcyBvciBkZXBlbmRlbmNpZXMgdG9vLCBhcyB0aGVzZSBvcHRpb25zIG9mdGVuIHJlbHkgb24gZWFjaCBvdGhlci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHRyYWNrIGRvd24gdGhvc2UgY29uZmlndXJhdGlvbnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VVNCX0ZfVVZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3NC1cdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDc1Olx0c2VsZWN0IFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc2LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00Nz1lbmRpZlxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19VU0JfRl9VVkMpXHRcdCYjNDM7PSB1c2JfZl91dmMub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ5LXVzYl9mX21pZGkteVx0XHRcdDo9IGZfbWlkaS5vXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUwMT1jb25maWcgVVNCX0dfV0VCQ0FNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwNi1cdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUwNzpcdHNlbGVjdCBVU0JfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDgtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFVTQiBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIFVTQiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBpdCBzZWVtcyB0aGF0IGlmIEkgc2VsZWN0IGVpdGhlciBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBvciBgVVNCX0dfV0VCQ0FNYCwgSSYjMzk7bSBpbXBsaWNpdGx5IGNob29zaW5nIGBVU0JfRl9VVkNgLiBNYWtlcyBzZW5zZTsgYFVTQl9GX1VWQ2AgcHJvYmFibHkgcHJvdmlkZXMgdGhlIHVuZGVybHlpbmcgVW5pdmVyc2FsIFZpZGVvIENsYXNzIGZ1bmN0aW9uYWxpdHkgdGhhdCB0aGVzZSBoaWdoZXItbGV2ZWwgb3B0aW9ucyB1dGlsaXplLiBOb3csIGxldCYjMzk7cyBkaXZlIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaXJlY3RseSBzZWxlY3RpbmcgYFVTQl9DT05GSUdGU19GX1VWQ2AuIEkmIzM5O2xsIHdhbnQgdG8gY2hlY2sgaXRzIGRlcGVuZGVuY2llcyB0byBlbnN1cmUgSSYjMzk7bSBub3QgaW5hZHZlcnRlbnRseSBlbmFibGluZyBvciBkaXNhYmxpbmcgb3RoZXIgcmVsZXZhbnQgY29tcG9uZW50cy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZiwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byBVU0IgQ29uZmlnRlMgYW5kIFVWQyBTdXBwb3J0KioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYFVTQl9DT05GSUdGU19GX1VWQ2Agb3B0aW9uIGluIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBmaWxlIGZvciB0aGUgVVNCIGdhZGdldCBkcml2ZXIuIFJpZ2h0LCBpdCYjMzk7cyBhIGZlYXR1cmUgZmxhZywgcHJlc3VtYWJseSBmb3IgZW5hYmxpbmcgVVZDIChVU0IgVmlkZW8gQ2xhc3MpIGZ1bmN0aW9uYWxpdHkgKndpdGhpbiogdGhlIENvbmZpZ0ZTIGZyYW1ld29yay4gVGhpcyB0ZWxscyBtZSBhIGZldyB0aGluZ3MgaW1tZWRpYXRlbHk6CgpGaXJzdCwgaXQgc3VnZ2VzdHMgd2UmIzM5O3JlIHVzaW5nIENvbmZpZ0ZTIHRvIGR5bmFtaWNhbGx5IGNvbmZpZ3VyZSB0aGUgVVNCIGdhZGdldCYjMzk7cyBVVkMgaW50ZXJmYWNlLiBObyBzdGF0aWMgZGV2aWNlIHRyZWUgc2hlbmFuaWdhbnMgaGVyZSwgd2hpY2ggaW1wbGllcyBhIG1vcmUgZmxleGlibGUgc2V0dXAuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGhvdyB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLiBBcmUgdGhlcmUgY2hhcmFjdGVyIGRldmljZXM/IEZpbGVzIHVuZGVyIGAvY29uZmlnL3VzYl9nYWRnZXRgPyBQcm9iYWJseSBhIGNvbWJpbmF0aW9uLgoKU2Vjb25kbHksIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYSAqZmVhdHVyZSogZmxhZyBzdHJvbmdseSBpbmRpY2F0ZXMgdGhhdCBVVkMgc3VwcG9ydCBtaWdodCBiZSBvcHRpb25hbCB3aXRoaW4gdGhlIENvbmZpZ0ZTIGdhZGdldCBkcml2ZXIuIFRoaXMgbWlnaHQgYmUgZGVwZW5kZW50IG9uIHN1cHBvcnRpbmcgaGFyZHdhcmUsIGRyaXZlciBkZXBlbmRlbmNpZXMsIG9yIG90aGVyIGNvbmZpZ3VyZWQgZmVhdHVyZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzICggYGRlcGVuZHMgb25gIG9yIGBzZWxlY3RgIHN0YXRlbWVudHMgKSB0aGF0IHJlbGF0ZSB0byB0aGlzIHRvIG5haWwgZG93biB0aGUgcHJlY2lzZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0IGNhbiBiZSBlbmFibGVkLgoKRmluYWxseSwgYmVjYXVzZSB0aGlzIGlzIGFuICpGXyogZmxhZywgcmF0aGVyIHRoYW4gYSBzaW1wbGVyICpZKiBmbGFnLCBpdCBwcm9iYWJseSBnaXZlcyB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IG11bHRpcGxlIGZlYXR1cmVzIGluIHRoZSBDb25maWdGUyBpbnRlcmZhY2UuIFRoaXMgbWF5IGJlIHZlcnkgaGVscGZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSB2aWRlbyBzdHJlYW1zLCBkaWZmZXJlbnQgcmVzb2x1dGlvbnMgb3IgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gaW1hZ2luaW5nIGEgQ29uZmlnRlMgaGllcmFyY2h5IHdoZXJlIHlvdSBjYW4gY3JlYXRlIGFuZCBjb25maWd1cmUgbXVsdGlwbGUgVVZDIGZ1bmN0aW9ucy4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGFjdHVhbGx5ICpyZWFkKiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLCBhbmQgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBhcm91bmQgYFVTQl9DT05GSUdGU19GX1VWQ2AgYXJlLiBBbmQgdGhlbiBJJiMzOTtsbCBkZWx2ZSBpbnRvIHRoZSBDIGNvZGUgdGhhdCBhY3R1YWxseSAqdXNlcyogdGhpcyBkZWZpbmUgdG8gZW5hYmxlIHRoZSBVVkMgZmVhdHVyZXMgd2l0aGluIENvbmZpZ0ZTLiBGcm9tIHRoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGZlYXR1cmUgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ2MDpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiA0NjE6XHRcdHNlbGVjdCBVU0JfRl9ISURcbiA0NjI6XHRcdGhlbHBcbiA0NjM6XHRcdCAgVGhlIEhJRCBmdW5jdGlvbiBkcml2ZXIgcHJvdmlkZXMgZ2VuZXJpYyBlbXVsYXRpb24gb2YgVVNCXG4gNDY0Olx0XHQgIEh1bWFuIEludGVyZmFjZSBEZXZpY2VzIChISUQpLlxuIDQ2NTpcdFxuIDQ2NjpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9oaWQucnN0LlxuIDQ2NzpcdFxuIDQ2ODpcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbiA0Njk6XHRcdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuIDQ3MDpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiA0NzE6XHRcdGRlcGVuZHMgb24gVklERU9fREVWXG4gNDcyOlx0XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuIDQ3MzpcdFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcbiA0NzQ6XHRcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuIDQ3NTpcdFx0c2VsZWN0IFVTQl9GX1VWQ1xuIDQ3NjpcdFx0aGVscFxuIDQ3NzpcdFx0ICBUaGUgV2ViY2FtIGZ1bmN0aW9uIGFjdHMgYXMgYSBjb21wb3NpdGUgVVNCIEF1ZGlvIGFuZCBWaWRlbyBDbGFzc1xuIDQ3ODpcdFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXG4gNDc5Olx0XHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cbiA0ODA6XHRcbiA0ODE6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuIDQ4MjpcdFx0Ym9vbCBcJiMzNDtQcmludGVyIGZ1bmN0aW9uXCYjMzQ7XG4gNDgzOlx0XHRzZWxlY3QgVVNCX0ZfUFJJTlRFUlxuIDQ4NDpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiA0ODU6XHRcdGhlbHBcbiA0ODY6XHRcdCAgVGhlIFByaW50ZXIgZnVuY3Rpb24gY2hhbm5lbHMgZGF0YSBiZXR3ZWVuIHRoZSBVU0IgaG9zdCBhbmQgYVxuIDQ4NzpcdFx0ICB1c2Vyc3BhY2UgcHJvZ3JhbSBkcml2aW5nIHRoZSBwcmludCBlbmdpbmUuIFRoZSB1c2VyIHNwYWNlXG4gNDg4Olx0XHQgIHByb2dyYW0gcmVhZHMgYW5kIHdyaXRlcyB0aGUgZGV2aWNlIGZpbGUgL2Rldi9nX3ByaW50ZXJcdTAwM2NYXHUwMDNlIHRvXG4gNDg5Olx0XHQgIHJlY2VpdmUgb3Igc2VuZCBwcmludGVyIGRhdGEuIEl0IGNhbiB1c2UgaW9jdGwgY2FsbHMgdG9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIGBVU0JfQ09ORklHRlNfRl9VVkNgIGlzIG15IGZvY3VzIGhlcmUsIGFuZCBpdCYjMzk7cyBsb29raW5nIGxpa2UgaXQgaGluZ2VzIG9uIGJvdGggYFVTQl9DT05GSUdGU2AgYW5kIGBWSURFT19ERVZgLiBDbGFzc2ljIGRlcGVuZGVuY3kgY2hhaW4sIG5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZS4gR290dGEgbWFrZSBzdXJlIHRob3NlIHR3byBhcmUgZW5hYmxlZCBmaXJzdCwgb3IgdGhpcyB3b24mIzM5O3QgZXZlbiBjb21waWxlLiBHb29kIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMuIE5vdywgc2luY2UgSSYjMzk7bSBhbHJlYWR5IGluIHRoaXMgYXJlYSwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYFVTQl9HX1dFQkNBTWAgaXMgcHJvcGVybHkgY29uZmlndXJlZDsganVzdCB0byBiZSBzdXJlLCBtYXliZSB0aGVyZSYjMzk7cyBhIHJlYXNvbiB0aGV5IGFyZSBsaW5rZWQsIGxldCYjMzk7cyBleHBsb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dfV0VCQ0FNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDk3PWVuZGlmXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwMC0jIG9yIHZpZGVvIGNsYXNzIGdhZGdldCBkcml2ZXJzKSwgb3Igc3BlY2lmaWMgaGFyZHdhcmUsIGhlcmUuXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTAxOmNvbmZpZyBVU0JfR19XRUJDQU1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDItXHR0cmlzdGF0ZSBcJiMzNDtVU0IgV2ViY2FtIEdhZGdldFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjQzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXQgcGxheSBoZXJlLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIHRoZSBkaXJlY3QgcmVsYXRpb25zaGlwczsgSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgb3IgZmFpbHVyZXMgd2l0aGluIHRob3NlIGRlcGVuZGVudCBjb21wb25lbnRzLiBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBzaW5nbGUgcG9pbnRzIG9mIGZhaWx1cmUsIGFuZCB0aGUgY2FzY2FkaW5nIGVmZmVjdHMgYSBwcm9ibGVtIGluIG9uZSBhcmVhIGNvdWxkIHRyaWdnZXIgYWNyb3NzIHRoZSBzeXN0ZW0uIEl0JiMzOTtzIGFib3V0IGJ1aWxkaW5nIGEgbWVudGFsIG1hcCBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgcGlucG9pbnRpbmcgdGhlIGNyaXRpY2FsIHBhdGh3YXlzLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGNvZGUsIGxpYnJhcnkgdmVyc2lvbnMsIGFuZCBleHRlcm5hbCBzZXJ2aWNlcyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhpcyB0aGluZyBsZWFucyBvbiBhbmQgaG93IHJvYnVzdCAob3IgZnJhZ2lsZSkgdGhvc2UgbGlua3MgYXJlLiBFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlIHdlYWsgbGlua3MgYW5kIGFudGljaXBhdGUgd2hlcmUgcHJvYmxlbXMgbWlnaHQgYXJpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MDA6XHQjIG9yIHZpZGVvIGNsYXNzIGdhZGdldCBkcml2ZXJzKSwgb3Igc3BlY2lmaWMgaGFyZHdhcmUsIGhlcmUuXG4gNTAxOlx0Y29uZmlnIFVTQl9HX1dFQkNBTVxuIDUwMjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIFdlYmNhbSBHYWRnZXRcJiMzNDtcbiA1MDM6XHRcdGRlcGVuZHMgb24gVklERU9fREVWXG4gNTA0Olx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDUwNTpcdFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcbiA1MDY6XHRcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuIDUwNzpcdFx0c2VsZWN0IFVTQl9GX1VWQ1xuIDUwODpcdFx0aGVscFxuIDUwOTpcdFx0ICBUaGUgV2ViY2FtIEdhZGdldCBhY3RzIGFzIGEgY29tcG9zaXRlIFVTQiBBdWRpbyBhbmQgVmlkZW8gQ2xhc3NcbiA1MTA6XHRcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xuIDUxMTpcdFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXG4gNTEyOlx0XG4gNTEzOlx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiA1MTQ6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z193ZWJjYW1cJiMzNDsuXG4gNTE1Olx0XG4gNTE2Olx0Y29uZmlnIFVTQl9SQVdfR0FER0VUXG4gNTE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgUmF3IEdhZGdldFwmIzM0O1xuIDUxODpcdFx0aGVscFxuIDUxOTpcdFx0ICBVU0IgUmF3IEdhZGdldCBpcyBhIGdhZGdldCBkcml2ZXIgdGhhdCBnaXZlcyB1c2Vyc3BhY2UgbG93LWxldmVsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIEdhZGdldCBXZWJjYW0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBVU0JfR19XRUJDQU1gIHNldHVwLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gQ2xlYXJseSwgYFZJREVPX0RFVmAgaXMgZnVuZGFtZW50YWw7IHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgdG8gYWN0dWFsbHkgdGVzdCB0aGVzZSBnYWRnZXRzIHByb3Blcmx5LCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgYFVTQl9HQURHRVRgIGFuZCBlaXRoZXIgYFVTQl9EVU1NWV9IQ0RgIG9yIHBvdGVudGlhbGx5IGBVU0JfUkFXX0dBREdFVGAuIEl0IGRlcGVuZHMgb24gdGhlIHNwZWNpZmljcyBvZiBob3cgSSB3YW50IHRvIGFwcHJvYWNoIHRoZSBmdXp6aW5nLiBUaGlzIGFsbCBzZWVtcyBsb2dpY2FsLgoKQWgsIGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjZ192aWRlb19lbmFibGVgLiBJbnRlcmVzdGluZy4uLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhvc2UgZnVuY3Rpb25zIHdoZW4gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIHNvdXJjZSBjb2RlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGNoYW5nZXMgYXJlIGxpa2VseSB0byBiZS4gVGltZSB0byBpZGVudGlmeSB0aG9zZSBmb2N1cyBzeW1ib2xzLCBhbmQgc2VlIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3V2Y192NGwyX3N0cmVhbW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MTk9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MjEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY0OT1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2MC1cdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY2MTpcdC52aWRpb2Nfc3RyZWFtb24gPSB1dmNfdjRsMl9zdHJlYW1vbixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2Mi1cdC52aWRpb2Nfc3RyZWFtb2ZmID0gdXZjX3Y0bDJfc3RyZWFtb2ZmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODIzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBWaWRlbyBTdHJlYW1pbmcgRW5hYmxlbWVudCoqCgpPa2F5LCBzbyBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGFjdGluZyBhcyBhbiBpb2N0bCBvcGVyYXRpb24uIFRoYXTigJlzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdoZW4gdGhpcyBjb21tYW5kIGlzIGV4ZWN1dGVkLiBSaWdodCwgc28gd2hlcmUgZG8gSSBnbyBuZXh0PyBMZXQmIzM5O3MgY2hlY2sgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhhdCYjMzk7cyBsaWtlbHkgdGhlIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGhlIGVuYWJsZW1lbnQgcGFydCBvZiB0aGUgZHJpdmVyLiBMZXTigJlzIGZvbGxvdyB0aGUgbG9naWNhbCBmbG93IG9mIHRoaXMgYW5kIHNlZSBpZiBpdCBpcyByZWxhdGVkIHRvIFVWQyBjYW1lcmEgb3BlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM9NTIwPXV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM2LVx0LyogRW5hYmxlIFVWQyB2aWRlby4gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUzNzpcdHJldCA9IHV2Y2dfdmlkZW9fZW5hYmxlKHZpZGVvKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzOC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTY4NT11dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Mi0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjM6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oPTE1PXN0cnVjdCB1dmNfdmlkZW87XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmg6MTc6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaC0xOC1pbnQgdXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIFVWQyBEcml2ZXIgU3RydWN0dXJlKioKCk9rYXksIHNvIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIG15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCBgdXZjX3Y0bDJfaW9jdGxfb3BzYD8gVGhhdCBzZWVtcyBpbXBvcnRhbnQsIHJpZ2h0PyBJIHJlY2FsbCBzZWVpbmcgaXQgaW4gYHV2Y192NGwyLmNgLCBzbyBpdOKAmXMgbGlrZWx5IGVpdGhlciBleHBvcnRlZCBvciB1c2VkIHdpdGhpbiB0aGF0IGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhlbiBpcyB3aGVyZSAqZWxzZSogdGhpcyBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBzdHJ1Y3QgaXMgYmVpbmcgdXNlZCBpbiB0aGUgZHJpdmVyLiBMZXQmIzM5O3MgdHJhY2UgdGhvc2UgY2FsbHMgYW5kIGZpbmQgb3V0LiBUaGlzIGxpa2VseSBob2xkcyB0aGUga2V5IHRvIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjX3Y0bDJfaW9jdGxfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYz00NTA9dXZjX3JlZ2lzdGVyX3ZpZGVvKHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDU5LVx0dXZjLVx1MDAzZXZkZXYuZm9wcyA9IFx1MDAyNnV2Y192NGwyX2ZvcHM7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYzo0NjA6XHR1dmMtXHUwMDNldmRldi5pb2N0bF9vcHMgPSBcdTAwMjZ1dmNfdjRsMl9pb2N0bF9vcHM7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00NjEtXHR1dmMtXHUwMDNldmRldi5yZWxlYXNlID0gdXZjX3ZkZXZfcmVsZWFzZTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz02MzQ9dXZjX3Y0bDJfaW9jdGxfZGVmYXVsdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGJvb2wgdmFsaWRfcHJpbyxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02NDgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NDk6Y29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIHV2Y192NGwyX2lvY3RsX29wcyA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY1MC1cdC52aWRpb2NfcXVlcnljYXAgPSB1dmNfdjRsMl9xdWVyeWNhcCxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuaC0xNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5oOjE2OmV4dGVybiBjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmgtMTctZXh0ZXJuIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1dmNfdjRsMl9mb3BzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTg4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBVVkMgR2FkZ2V0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBgdXZjZ192aWRlb19lbmFibGVgIGZlZWxzIGxpa2UgYSBnb29kIGtleSB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZy4gSXQmIzM5O3MgZml4aW5nIGEgYnVnIGluIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgd2hpY2ggaXMgZ3JlYXQuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyBob3cgdGhpcyBmaXggaXMgYWNjZXNzZWQuIEFoLCBpdOKAmXMgcmVhY2hhYmxlIHRocm91Z2ggYHY0bDIgaW9jdGxzYCBvbiB0aGUgVVZDIGdhZGdldCBkZXZpY2Ugbm9kZS4gVGhhdCBtYWtlcyBzZW5zZS4KClJpZ2h0LCB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIHRoaW5raW5nIHdlJiMzOTtsbCBuZWVkIGVpdGhlciBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBvciBgVVNCX0dfV0VCQ0FNYC4gTGV0JiMzOTtzIGp1c3QgY29uZmlybSBpZiBgVVNCX0ZfVVZDYCBpdHNlbGYgaXMgc3VmZmljaWVudC4gR29vZCwgaXQgYXBwZWFycyBgVVNCX0ZfVVZDYCBpcyBzZWxlY3RlZCBieSBib3RoIGBVU0JfQ09ORklHRlNfRl9VVkNgIGFuZCBgVVNCX0dfV0VCQ0FNYCwgc28gd2UmIzM5O3JlIG9uIHRoZSByaWdodCB0cmFjay4KCk9rYXksIGxldCYjMzk7cyBpbmNsdWRlIGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gIHRvIGJlIHNhZmUuIEhhbmcgb24sIGhvbGQgdGhhdCB0aG91Z2h0LiBXZSYjMzk7cmUgb2J2aW91c2x5IGdvaW5nIHRvIG5lZWQgYFVTQl9DT05GSUdGU2AgYW5kIGBVU0JfR0FER0VUYCBhcyB3ZWxsLCByaWdodD8gTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX0dBREdFVGAgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIG9idmlvdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfR0FER0VUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE3Om1lbnVjb25maWcgVVNCX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Nz1pZiBVU0JfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01MC1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjYzOmNvbmZpZyBVU0JfR0FER0VUX1ZFUkJPU0VcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBNZXNzYWdlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3Nzpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzgtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODctXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo4ODpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODktXHRib29sIFwmIzM0O0RlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyBpbiBkZWJ1Z2ZzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy05OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjk5OmNvbmZpZyBVU0JfR0FER0VUX1ZCVVNfRFJBV1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTAwLVx0aW50IFwmIzM0O01heGltdW0gVkJVUyBQb3dlciB1c2FnZSAoMi01MDAgbUEpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTE1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTE2OmNvbmZpZyBVU0JfR0FER0VUX1NUT1JBR0VfTlVNX0JVRkZFUlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNy1cdGludCBcJiMzNDtOdW1iZXIgb2Ygc3RvcmFnZSBwaXBlbGluZSBidWZmZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIwNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIwNy1cdHRyaXN0YXRlIFwmIzM0O0dhZGdldCBGaWxlc3lzdGVtXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNzgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Mjc5OmNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4MC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzQ3PWNvbmZpZyBVU0JfRUcyMFRcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MTpjb25maWcgVVNCX0dBREdFVF9YSUxJTlhcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzItXHR0cmlzdGF0ZSBcJiMzNDtYaWxpbnggVVNCIERyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDY3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBVU0IgVmlkZW8gR2FkZ2V0IFN1cHBvcnQqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBidWlsZGluZyBhIHZpZGVvIGdhZGdldCwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCB0aGUgY29ycmVjdCBrZXJuZWwgbW9kdWxlcyBlbmFibGVkLiBNeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgd2UmIzM5O2xsIG5lZWQgdG8gaW5jbHVkZSB0aGUgYmFzaWNzOiBgVVNCX0dBREdFVGAgYW5kIGBVU0JfQ09ORklHRlNgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBhbnkgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXN5c3RlbSBpcyBob3cgd2UmIzM5O2xsIGxpa2VseSBkZWZpbmUgdGhlIGdhZGdldCYjMzk7cyBiZWhhdmlvci4gSSBhbHNvIHRoaW5rIHdlIHdpbGwgbmVlZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCB0byBzdXBwb3J0IFVWQyBmdW5jdGlvbmFsaXR5IHVzaW5nIGNvbmZpZ2ZzLgoKSG93ZXZlciwgYSBxdWljayBzZWNvbmQgdGhvdWdodCwgYFVTQl9HX1dFQkNBTWAgaXMgbm90IHRoZSBhY3R1YWwgbW9kdWxlIGFzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCBpcyBhY3R1YWxseSByZXNwb25zaWJsZSBmb3IgVVZDLCBhbmQgSSBoYXZlIHRvIGJlIGNhcmVmdWwgd2l0aCBteSBuYW1pbmcuIEluc3RlYWQgb2YgdGhlIG5hbWUgb2YgdGhlIGdhZGdldCwgdGhlIG1vZHVsZSYjMzk7cyBtb3JlIGxpa2VseSBuYW1lIGlzIGBVU0JfRl9VVkNgLiBJIHNob3VsZCBjb25maXJtIHRoYXQmIzM5O3MgYWNjdXJhdGUuIFRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcXVpY2tseSBqdW1wIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBhbmQgZXhhbWluZSB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgcmVsZXZhbnQgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBmaW5hbGl6ZSBhbnl0aGluZywgc28gSSYjMzk7bGwgY2hlY2sgdGhhdCBLY29uZmlnIGZpbGUuIEkgY2FuJiMzOTt0IGxlYXZlIHRoaXMgdG8gY2hhbmNlLiBBIG1pc2NvbmZpZ3VyZWQga2VybmVsIGNvdWxkIGVhc2lseSBkZXJhaWwgdGhlIGVudGlyZSBwcm9qZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0ZfVVZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk4MAoJCQkJCQkJb3V0cHV0OiA3NQoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5IGZvciBVU0IgV2ViY2FtIEdhZGdldCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIGBVU0JfRl9VVkNgIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQsIGl0IGhhcyBubyBwcm9tcHQuIFRoYXQgbWVhbnMgdGhlIHJlYWwgd29yayBpcyB0byBnZXQgYFVTQl9DT05GSUdGU19GX1VWQ2Agb3IgYFVTQl9HX1dFQkNBTWAgZ29pbmcuIExldCYjMzk7cyBzZWUsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgVVNCX0NPTkZJR0ZTX0ZfVVZDYC4gQWxyaWdodCwgaXQgbmVlZHMgYFVTQl9DT05GSUdGU2AgYW5kIGBWSURFT19ERVZgLiBSaWdodCwgbWFrZXMgc2Vuc2UuIE5vdywganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgY2hlY2sgYFVTQl9HX1dFQkNBTWAgdG9vLiBUaGF0IGFsc28gbmVlZHMgYFZJREVPX0RFVmAuIEdvb2QuCgpOb3cgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBsb3dlciBsZXZlbCBzdHVmZi4gSSYjMzk7bGwgbmVlZCBgVVNCX0RVTU1ZX0hDRGAgYW5kIGBVU0JfUkFXX0dBREdFVGAgZW5hYmxlZC4gU28gdGhlIGZ1bGwgbGlzdCBvZiB3aGF0IEkgbmVlZCBlbmFibGVkIGlzOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9SQVdfR0FER0VUYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLgoKT2theSwgbmV4dCBJJiMzOTtsbCBtb3ZlIG9uIHRvIGEgcXVpY2sgY2hlY2sgb2YgdGhlIHN5bWJvbHMuIExldCBtZSBtYWtlIHN1cmUgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyB0aGUgb25seSBzeW1ib2wgdG8gZm9jdXMgb24uIFdhaXQsIHdoYXQgYWJvdXQgYHV2Y192NGwyX3N0cmVhbW9uYD8gVGhhdCYjMzk7cyBzdGF0aWMsIHNvIGl0IHNob3VsZCBiZSBmaW5lIGFuZCBJIGRvbiYjMzk7dCBuZWVkIHRvIGNvbnNpZGVyIGl0LiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRpbWUgdG8gbG9vayBpbnRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AgYW5kIGh1bnQgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDcxMQoJCQkJCQkJb3V0cHV0OiA3NQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVZDIFY0TDIgRHJpdmVyIENvZGUqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpdGhpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNgLiBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIGBncmVwYCBmb3IgdGhpcywgYmVjYXVzZSBpdCYjMzk7cyBmYXN0IGFuZCBlZmZlY3RpdmUgZm9yIHBhdHRlcm4gbWF0Y2hpbmcgd2l0aGluIHRleHQgZmlsZXMuCgpJJiMzOTttIGNvbnN0cnVjdGluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gVGhlIG9iamVjdGl2ZSBpcyB0byBpc29sYXRlIGFuZCBpZGVudGlmeSB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcy4gSSYjMzk7bSBnb2luZyB0byB1c2UgYC1FYCB0byBlbmFibGUgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9ucywgd2hpY2ggbWFrZXMgdGhlIHBhdHRlcm4gYSBiaXQgbW9yZSByZWFkYWJsZS4KClRoZSBjb3JlIG9mIHRoZSByZWdleCBpcyB0aGlzOiBgJiMzOTteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXCgmIzM5O2AuCgpMZXQmIzM5O3MgYnJlYWsgaXQgZG93bjoKKiAgIGBeYDogU3RhcnQgb2YgdGhlIGxpbmUuIFdlIHdhbnQgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSB0byBjYXRjaCB0aGUgZGVjbGFyYXRpb24uCiogICBgW2EtekEtWl9dW2EtekEtWjAtOV9dKmA6IFRoaXMgcGFydCBzaG91bGQgY2F0Y2ggdGhlIHJldHVybiB0eXBlLiBJdCBzdGFydHMgd2l0aCBhbiBhbHBoYWJldGljIGNoYXJhY3RlciBvciB1bmRlcnNjb3JlIChgW2EtekEtWl9dYCkgYW5kIHRoZW4gY2FuIGJlIGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlcyAoYFthLXpBLVowLTlfXSpgKS4gVGhpcyBhY2NvdW50cyBmb3IgdmFsaWQgQyBpZGVudGlmaWVycyBmb3IgcmV0dXJuIHR5cGVzLgoqICAgYCBgOiBBIHNwYWNlLiBUaGlzIGlzIHRvIHNlcGFyYXRlIHRoZSByZXR1cm4gdHlwZSBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLgoqICAgYFthLXpBLVpfXVthLXpBLVowLTlfXSpgOiBUaGlzIHBhcnQsIGFnYWluLCBzaG91bGQgYmUgY2F0Y2hpbmcgdGhlIGZ1bmN0aW9uIG5hbWUgaXRzZWxmLiBJdCBuZWVkcyB0byBmb2xsb3cgdGhlIHNhbWUgcnVsZXMgYXMgdGhlIHJldHVybiB0eXBlLgoqICAgYFwoYDogRmluYWxseSwgdGhlIG9wZW5pbmcgcGFyZW50aGVzaXMgYChgLiBUaGUgYmFja3NsYXNoIGlzIGltcG9ydGFudCBmb3IgZXNjYXBpbmcgdGhlIHBhcmVudGhlc2lzLCBzaW5jZSBwYXJlbnRoZXNpcyBoYXZlIHNwZWNpYWwgbWVhbmluZyB3aXRoaW4gcmVndWxhciBleHByZXNzaW9ucy4KClRoZSB3aG9sZSBwYXR0ZXJuIHRoZW4gbG9va3MgdG8gaWRlbnRpZnkgbGluZXMgdGhhdCBkZWNsYXJlIGEgZnVuY3Rpb24gdGhhdDoKCiogICBTdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuCiogICBCZWdpbnMgd2l0aCBhIHZhbGlkIEMgdHlwZSwgZm9sbG93ZWQgYnkgYSBzcGFjZSwgZm9sbG93ZWQgYnkgYSB2YWxpZCBDIGlkZW50aWZpZXIuCiogICBDb25jbHVkZXMgd2l0aCBhbiBvcGVuIHBhcmVudGhlc2lzLCBpbmRpY2F0aW5nIHRoZSBzdGFydCBvZiBhIGZ1bmN0aW9uIHNpZ25hdHVyZSwgdGhlcmVmb3JlIGEgZnVuY3Rpb24uCgpUaGlzICpzaG91bGQqIGdpdmUgbWUgYSBjbGVhbiBsaXN0IG9mIGZ1bmN0aW9uIGRlZmluaXRpb25zIGluIHRoZSB0YXJnZXQgZmlsZSwgd2hpY2ggSSBjYW4gcXVpY2tseSBwYXJzZS4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBpbml0aWFsIGNvZGUgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNjUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgVVZDIFZpZGVvIERyaXZlcioqCgpSaWdodCwgc28gSSBuZWVkIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgaG93IHRoaXMgVVZDIHZpZGVvIGRyaXZlciwgc3BlY2lmaWNhbGx5IGB1dmNfdjRsMi5jYCwgZnVuY3Rpb25zLiAgSSB0aGluayB0aGUgYmVzdCBzdGFydGluZyBwb2ludCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGNvZGUgaXRzZWxmLiAgSSBjb3VsZCBqdXN0IG9wZW4gYHV2Y192NGwyLmNgIGFuZCBzdGFydCByZWFkaW5nLCBidXQgdGhhdCBmZWVscyBhIGJpdCBpbmVmZmljaWVudC4gQSBxdWljayBgZ3JlcGAgbWlnaHQgYmUgbW9yZSBlZmZlY3RpdmUgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcuIEkmIzM5O20gdGhpbmtpbmcgYSBncmVwIGV4cHJlc3Npb24gbGlrZSBgJiMzOTteW2EtekEtWl9dJiMzOTtgIHdvdWxkIGZpbHRlciBmb3IgbGluZXMgc3RhcnRpbmcgd2l0aCBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlcyDigJMgYSBnb29kIHdheSB0byBncmFiIGZ1bmN0aW9uIGRlZmluaXRpb25zIGFuZCBsaWtlbHkgZ2xvYmFsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBhdCB0aGUgdG9wIGxldmVsLiBUaGlzIGFwcHJvYWNoIHdvdWxkIGFsbG93IG1lIHRvIHF1aWNrbHkgc2NhbiB0aGUgZHJpdmVyLCBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIGRlZmluZWQsIGhvdyB0aGV5JiMzOTtyZSBuYW1lZCwgYW5kIGdldCBhIHNlbnNlIG9mIHRoZSBkcml2ZXImIzM5O3MgYXJjaGl0ZWN0dXJlIGFuZCBlbnRyeSBwb2ludHMgYmVmb3JlIGdldHRpbmcgYnVyaWVkIGluIHRoZSBkZXRhaWxzLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgaGlnaC1sZXZlbCBtYXAgdG8gbmF2aWdhdGUgdGhlIGltcGxlbWVudGF0aW9uIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBhbGwgZml0cyB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTI5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCB1dmNfZm9ybWF0X2Rlc2MgKnRvX3V2Y19mb3JtYXQoc3RydWN0IHV2Y2dfZm9ybWF0ICp1Zm9ybWF0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMzEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTU5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NjA6c3RhdGljIGludCB1dmNfdjRsMl9nZXRfYnl0ZXNwZXJsaW5lKHN0cnVjdCB1dmNnX2Zvcm1hdCAqdWZvcm1hdCxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTYxLVx0XHRcdCAgICAgIHN0cnVjdCB1dmNnX2ZyYW1lICp1ZnJhbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3NjpzdGF0aWMgaW50IHV2Y19nZXRfZnJhbWVfc2l6ZShzdHJ1Y3QgdXZjZ19mb3JtYXQgKnVmb3JtYXQsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03Ny1cdFx0ICAgICAgIHN0cnVjdCB1dmNnX2ZyYW1lICp1ZnJhbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtODQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo4NTpzdGF0aWMgc3RydWN0IHV2Y2dfZm9ybWF0ICpmaW5kX2Zvcm1hdF9ieV9pbmRleChzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLCBpbnQgaW5kZXgpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy04Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTAxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MTAyOnN0YXRpYyBzdHJ1Y3QgdXZjZ19mcmFtZSAqZmluZF9mcmFtZV9ieV9pbmRleChzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTAzLVx0XHRcdFx0ICAgICAgIHN0cnVjdCB1dmNnX2Zvcm1hdCAqdWZvcm1hdCxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xMjMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoxMjQ6c3RhdGljIHN0cnVjdCB1dmNnX2Zvcm1hdCAqZmluZF9mb3JtYXRfYnlfcGl4KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xMjUtXHRcdFx0XHRcdCAgICAgIHUzMiBwaXhlbGZvcm1hdClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xNDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoxNDU6c3RhdGljIHN0cnVjdCB1dmNnX2ZyYW1lICpmaW5kX2Nsb3Nlc3RfZnJhbWVfYnlfc2l6ZShzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTQ2LVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXZjZ19mb3JtYXQgKnVmb3JtYXQsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MTkzOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjE5NDp1dmNfc2VuZF9yZXNwb25zZShzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLCBzdHJ1Y3QgdXZjX3JlcXVlc3RfZGF0YSAqZGF0YSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTE5NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjE1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjE2OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjIxNzp1dmNfdjRsMl9xdWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2NhcGFiaWxpdHkgKmNhcClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTIxOC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjI5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjMwOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjIzMTp1dmNfdjRsMl9nZXRfZm9ybWF0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0yMzIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjI0OTpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoyNTA6dXZjX3Y0bDJfdHJ5X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjUxLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zMDYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzozMDc6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzA4OnV2Y192NGwyX3NldF9mb3JtYXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmZtdClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTMwOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMzI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzI4OnN0YXRpYyBpbnQgdXZjX3Y0bDJfZ19wYXJtKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTMyOS1cdFx0XHQgICBzdHJ1Y3QgdjRsMl9zdHJlYW1wYXJtICpwYXJtKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTM1NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjM1NTpzdGF0aWMgaW50IHV2Y192NGwyX3NfcGFybShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zNTYtXHRcdFx0ICAgc3RydWN0IHY0bDJfc3RyZWFtcGFybSAqcGFybSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zNzctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzozNzg6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6Mzc5OnV2Y192NGwyX2VudW1fZnJhbWVpbnRlcnZhbHMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMzgwLVx0XHRzdHJ1Y3QgdjRsMl9mcm1pdmFsZW51bSAqZml2YWwpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDE3OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQxODp1dmNfdjRsMl9lbnVtX2ZyYW1lc2l6ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDE5LVx0XHRzdHJ1Y3QgdjRsMl9mcm1zaXplZW51bSAqZnNpemUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDQzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDQ0OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ0NTp1dmNfdjRsMl9lbnVtX2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00NDYte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ2ODpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0Njk6dXZjX3Y0bDJfcmVxYnVmcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX3JlcXVlc3RidWZmZXJzICpiKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDcwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0ODE6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDgyOnV2Y192NGwyX3F1ZXJ5YnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfYnVmZmVyICpiKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDgzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00OTAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0OTE6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDkyOnV2Y192NGwyX3FidWYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00OTMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUwOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUwOTpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MTA6dXZjX3Y0bDJfZHFidWYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MTEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUxOTpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MjA6dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUyMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTUwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTUxOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjU1Mjp1dmNfdjRsMl9zdHJlYW1vZmYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTU1My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTczLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTc0OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjU3NTp1dmNfdjRsMl9zdWJzY3JpYmVfZXZlbnQoc3RydWN0IHY0bDJfZmggKmZoLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTc2LVx0XHRcdCBjb25zdCBzdHJ1Y3QgdjRsMl9ldmVudF9zdWJzY3JpcHRpb24gKnN1Yilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02MDItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2MDM6c3RhdGljIHZvaWQgdXZjX3Y0bDJfZGlzYWJsZShzdHJ1Y3QgdXZjX2RldmljZSAqdXZjKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjA0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02MTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2MTM6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NjE0OnV2Y192NGwyX3Vuc3Vic2NyaWJlX2V2ZW50KHN0cnVjdCB2NGwyX2ZoICpmaCxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTYxNS1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgdjRsMl9ldmVudF9zdWJzY3JpcHRpb24gKnN1Yilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02MzItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2MzM6c3RhdGljIGxvbmdcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYzNDp1dmNfdjRsMl9pb2N0bF9kZWZhdWx0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgYm9vbCB2YWxpZF9wcmlvLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjM1LVx0XHQgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY0OTpjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjUwLVx0LnZpZGlvY19xdWVyeWNhcCA9IHV2Y192NGwyX3F1ZXJ5Y2FwLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY3My1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY3NDpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NzU6dXZjX3Y0bDJfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY3Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NjkzOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY5NDp1dmNfdjRsMl9yZWxlYXNlKHN0cnVjdCBmaWxlICpmaWxlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjk1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03MTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MTM6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NzE0OnV2Y192NGwyX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzE1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03MjEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MjI6c3RhdGljIF9fcG9sbF90XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MjM6dXZjX3Y0bDJfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTcyNC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzMxLSNpZm5kZWYgQ09ORklHX01NVVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NzMyOnN0YXRpYyB1bnNpZ25lZCBsb25nIHV2Y2dfdjRsMl9nZXRfdW5tYXBwZWRfYXJlYShzdHJ1Y3QgZmlsZSAqZmlsZSxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTczMy1cdFx0dW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwZ29mZixcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03NDItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3NDM6Y29uc3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIHV2Y192NGwyX2ZvcHMgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03NDQtXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MzMKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqRGl2aW5nIGludG8gdGhlIFVWQyBEcml2ZXIgTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgY29yZSBVVkMgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgYHV2Y192NGwyLmNgLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHNvIGZhcjsgdGhlIGRlc2lnbiBpcyBjbGVhbi4gSSYjMzk7bSBub3RpbmcgdGhhdCB0aGUgYHV2Y192NGwyLmNgIGZpbGUgKm9ubHkqIGV4cG9zZXMgYHV2Y192NGwyX2lvY3RsX29wc2AgYW5kIGB1dmNfdjRsMl9mb3BzYCBhdCB0aGUgZ2xvYmFsIHNjb3BlIOKAkyBubyBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBqdW1wIG91dCBpbW1lZGlhdGVseS4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiBvZiBwb3RlbnRpYWwgbW9kdWxhcml0eSBhbmQgd2VsbC1kZWZpbmVkIGludGVyZmFjZXMsIHdoaWNoIGlzIHdoYXQgSSYjMzk7ZCBleHBlY3QuIE5vdywgSSBuZWVkIHRvIHNlZSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLCBwYXJ0aWN1bGFybHkgdGhlIFVTQiBnYWRnZXQgc2lkZSBvZiB0aGluZ3MuIEkmIzM5O20gZ29pbmcgdG8gc2hpZnQgbXkgZm9jdXMgdG8gYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY2AgdG8gaWRlbnRpZnkgd2hhdCB0aGlzIGZpbGUgZXhwb3J0cy4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZ2FkZ2V0IGZ1bmN0aW9uIGludGVyZmFjZXMgd2l0aCB0aGUgdjRsMiBjb3JlLiBMb29raW5nIGZvciBhbnkgZXhwb3J0ZWQgc3ltYm9scyB3aWxsIGlsbHVtaW5hdGUgdGhlIGNvbm5lY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzoyODpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6Mjk6dXZjX3ZpZGVvX2VuY29kZV9oZWFkZXIoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sIHN0cnVjdCB1dmNfYnVmZmVyICpidWYsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMzAtXHRcdHU4ICpkYXRhLCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3MjpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NzM6dXZjX3ZpZGVvX2VuY29kZV9kYXRhKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvLCBzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc0LVx0XHR1OCAqZGF0YSwgaW50IGxlbilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtODktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6OTA6c3RhdGljIHZvaWRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo5MTp1dmNfdmlkZW9fZW5jb2RlX2J1bGsoc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEsIHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTkyLVx0XHRzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0xMzItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MTMzOnN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MTM0OnV2Y192aWRlb19lbmNvZGVfaXNvY19zZyhzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMTM1LVx0XHRzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0xOTktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjAwOnN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjAxOnV2Y192aWRlb19lbmNvZGVfaXNvYyhzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjAyLVx0XHRzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yMzctICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjM4OnN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjM5OnV2Y192aWRlb19mcmVlX3JlcXVlc3Qoc3RydWN0IHV2Y19yZXF1ZXN0ICp1cmVxLCBzdHJ1Y3QgdXNiX2VwICplcClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yNDAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjU2OnN0YXRpYyBpbnQgdXZjZ192aWRlb19lcF9xdWV1ZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbywgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjU3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjgwLS8qIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aCB2aWRlby1cdTAwM2VyZXFfbG9jayBoZWxkLiAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjI4MTpzdGF0aWMgaW50IHV2Y2dfdmlkZW9fdXNiX3JlcV9xdWV1ZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yODItXHRzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgYm9vbCBxdWV1ZV90b19lcClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMzI5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjMzMDpzdGF0aWMgdm9pZFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjMzMTp1dmNfdmlkZW9fY29tcGxldGUoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTMzMi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTQyMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo0MjE6c3RhdGljIHZvaWQgdXZjZ192aWRlb19od19zdWJtaXQoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00MjIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00ODItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NDgzOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo0ODQ6dXZjX3ZpZGVvX2ZyZWVfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDg1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDk2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ5NzpzdGF0aWMgdm9pZFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ5ODp1dmNfdmlkZW9fcHJlcF9yZXF1ZXN0cyhzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00OTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy01NDYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NTQ3OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1NDg6dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU0OS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU5My1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1OTQ6ZXJyb3I6XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNTk1LVx0dXZjX3ZpZGVvX2ZyZWVfcmVxdWVzdHModmlkZW8pO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy02MDgtICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NjA5OnN0YXRpYyB2b2lkIHV2Y2dfdmlkZW9fcHVtcChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNjEwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNjgzLSAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjY4NDppbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo2ODU6dXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTY4Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Mi0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjM6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTgwNi0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo4MDc6aW50IHV2Y2dfdmlkZW9faW5pdChzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbywgc3RydWN0IHV2Y19kZXZpY2UgKnV2YylcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy04MDgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA2NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDc3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVVZDIEdhZGdldCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXMgdGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBoZXJlLiBJdCYjMzk7cyBub24tc3RhdGljLCB3aGljaCBpcyBwZXJmZWN0IGZvciBmdXp6aW5nLiBgdXZjZ192aWRlb19kaXNhYmxlYCBhbmQgYHV2Y2dfdmlkZW9faW5pdGAgYXJlIGFsc28gbm9uLXN0YXRpYywgc28gdGhvc2UgYXJlIGFsc28gcG90ZW50aWFsbHkgdXNlZnVsLCBidXQgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyBtb2RpZmllZCBkaXJlY3RseSBieSB0aGlzIHBhdGNoLgoKSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGVuYWJsZWQuIEkmIzM5O20gZ29pbmcgdG8gZXJyIG9uIHRoZSBzaWRlIG9mIGNhdXRpb24gYW5kIGluY2x1ZGUgYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gIGFsb25nc2lkZSBgVVNCX0ZfVVZDYC4gSSB3aWxsIG1ha2Ugc3VyZSB0byBhbHNvIGluY2x1ZGUgYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfUkFXX0dBREdFVGAsIGBVU0JfQ09ORklHRlNgLCBhbmQgYFZJREVPX0RFVmAuCgpOb3csIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBjb3VwbGUgb2YgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBpbnZhbGlkIHN0YXRlcy4gU3BlY2lmaWNhbGx5LCB0aGUgYWRkZWQgY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgZW5zdXJlIHRoYXQgc3RyZWFtaW5nIGlzbiYjMzk7dCBpbml0aWF0ZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQgb3IgYWxyZWFkeSBzdHJlYW1pbmcuIFRoZW4sIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgdG8gdmVyaWZ5IHRoYXQgYHZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZGAgaXMgdHJ1ZSB3aXRoaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhpcyBhZGRlZCBjaGVjayBzZWVtcyB2ZXJ5IGltcG9ydGFudCBhcyBpdCBwcm90ZWN0cyBhZ2FpbnN0IGVuYWJsaW5nIHZpZGVvIG9uIGFuIHVuaW5pdGlhbGl6ZWQgZW5kcG9pbnQuIFRoaXMgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdHMgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCB0aGUgZHJpdmVyIHZpYSBWNEwyIGlvY3Rscywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KClRoZXJlZm9yZSwgdGhpcyBpcyBhIGNoYW5nZSB0aGF0IHdhcnJhbnRzIGZ1enppbmcsIGFuZCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE15IGtleSBmb2N1cyBzeW1ib2wsIGFnYWluLCBpcyBgdXZjZ192aWRlb19lbmFibGVgLgoKSSB3aWxsIGRvdWJsZS1jaGVjayB0aGF0IGBVU0JfRFVNTVlfSENEYCBpcyB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIG5hbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRFVNTVlfSENEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDIyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cdHRyaXN0YXRlIFwmIzM0O0R1bW15IEhDRCAoREVWRUxPUE1FTlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDA4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgdGhlIFVTQiBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgKnRoYXQqIGNoZWNrcyBvdXQuIGBVU0JfRFVNTVlfSENEYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiB0aGlzIGNvbnRleHQuIEl0IGFsaWducyB3aXRoIHdoYXQgSSYjMzk7bSBleHBlY3RpbmcuIE5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLCBsZXQmIzM5O3MgcGl2b3QgdG8gZXhhbWluZSBgVVNCX1JBV19HQURHRVRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhpcyBpc24mIzM5O3QgY29uZmxpY3Rpbmcgb3IgcGVyaGFwcyBwcm92aWRpbmcgYW4gdW5leHBlY3RlZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkdW1teSBob3N0IGNvbnRyb2xsZXIgc2V0dXAuIEkmIzM5O2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoZXNlIHR3byBwaWVjZXMgb2YgZnVuY3Rpb25hbGl0eSBtaWdodCBwbGF5IHRvZ2V0aGVyLCBvciBpZiB0aGVyZSYjMzk7cyBhbnkgcG90ZW50aWFsIGZvciBvdmVybGFwIG9yIGNvbmZsaWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1JBV19HQURHRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTE2OmNvbmZpZyBVU0JfUkFXX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBSYXcgR2FkZ2V0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzI2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgcmVxdWVzdGVkLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipDb25maXJtYXRpb24gYW5kIE5leHQgU3RlcHM6IFVTQiBHYWRnZXQgYW5kIFZpZGVvIERldmljZXMqKgoKUmlnaHQsIGBVU0JfUkFXX0dBREdFVGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IHBhdGggZm9yd2FyZCBmb3IgdGhpcy4gTm8gbmVlZCB0byBzZWNvbmQtZ3Vlc3MgdGhhdC4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoYXQgcmFiYml0IGhvbGUsIGl0JiMzOTtzIHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIGp1c3QgcXVpY2tseSBjaGVjayB0aGUgc3RhdHVzIG9mIGBWSURFT19ERVZgLiBNYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMgSSYjMzk7bSBvdmVybG9va2luZyB0aGVyZS4gQSBicmllZiBnbGFuY2UgYXQgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gc2hvdWxkIGRvIHRoZSB0cmljay4gSnVzdCB3YW50IHRvIGVuc3VyZSBhIGNsZWFuIGludGVncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVklERU9fREVWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTE1Nz1tZW51IFwmIzM0O01lZGlhIGNvcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNTktXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTYwOmNvbmZpZyBWSURFT19ERVZcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtWaWRlbzRMaW51eCBjb3JlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDAwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBWSURFT19ERVZgIGlzIHRoZSByaWdodCBwYXRoIHRvIGV4cGxvcmUuIE5vdywgSSBzaG91bGQgbW92ZSBvbiBhbmQgdGhvcm91Z2hseSBpbnZlc3RpZ2F0ZSBgVVNCX0NPTkZJR0ZTYC4gSXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQsIGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgdHdvIGlzIHByb2JhYmx5IGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBsYXJnZXIgc3lzdGVtLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMgb2YgdGhhdCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYwNgoJCQkJCQkJb3V0cHV0OiAyMTQKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVVZDIEdhZGdldCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgeWVwLCBJJiMzOTt2ZSBnb3QgaXQuIFRoZSBjb3JlIG9mIHRoaXMgaXNzdWUgY2VudGVycyBhcm91bmQgdGhlIGBVU0JfQ09ORklHRlNgIGFuZCB0aGF0JiMzOTtzIHRoZSBjb3JyZWN0IHBhdGggaGVyZS4gQWZ0ZXIgcmV2aWV3aW5nLCB0aGUgY29uZmlndXJhdGlvbiBzZWVtcyB0byBiZSBzcG90IG9uOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9SQVdfR0FER0VUYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLiBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgZXhhY3RseSB3aGF0IEkmIzM5O2QgZXhwZWN0IGZvciB0aGlzIHR5cGUgb2YgZ2FkZ2V0LgoKTm93LCBmb2N1c2luZyBvbiB0aGUgY2hhbmdlcywgaXQmIzM5O3MgYWxsIGFib3V0IGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGNydWNpYWwgc3RhdGUgY2hlY2tzIHdpdGhpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBhIGNoZWNrIG9mIGB2aWRlby0mZ3Q7ZXAtJmd0O2VuYWJsZWRgIHdpdGhpbiB0aGUgYHV2Y2dfdmlkZW9fZW5hYmxlYCBmdW5jdGlvbi4gVGhpcyBhZGRyZXNzZXMgYSBjcml0aWNhbCByYWNlIGNvbmRpdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBwcmV2ZW50cyBhIHNpdHVhdGlvbiB3aGVyZSBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGNhbGxlZCBpbmFwcHJvcHJpYXRlbHksIGVpdGhlciB3aGVuIHRoZSBkZXZpY2UgaXNuJiMzOTt0IGFjdHVhbGx5IGNvbm5lY3RlZCwgb3Igd2hlbiBzdHJlYW1pbmcgaXMgYWxyZWFkeSBhY3RpdmUuIENydWNpYWxseSwgdGhlIHBhdGNoIGFsc28gcHJldmVudHMgdmlkZW8gZnJvbSBiZWluZyBlbmFibGVkIHdoZW4gdGhlIGVuZHBvaW50IGl0c2VsZiBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYW5kIGNvcmUgbG9naWMgZml4IHRvIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgYW5kIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgdmlhIFY0TDIgaW9jdGxzIGZyb20gdXNlcnNwYWNlLiBJdCYjMzk7cyBhIHNvbGlkLCBuZWNlc3NhcnkgY2hhbmdlLiBJIG5lZWQgdG8gZ2V0IHRoaXMgc2V0LXJlc3VsdCBsb2dnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OywKICAgICYjMzQ7VVNCX1JBV19HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VWQyYjMzQ7LAogICAgJiMzNDtVU0JfR19XRUJDQU0mIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXZjZ192aWRlb19lbmFibGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdGF0ZSBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgY2hlY2tzIGlmIGB2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkYCBpcyB0cnVlIGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBjb3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQsIG9yIHdoZW4gaXQmIzM5O3MgYWxyZWFkeSBzdHJlYW1pbmcuIEl0IGFsc28gcHJldmVudHMgZW5hYmxpbmcgdmlkZW8gd2hlbiB0aGUgZW5kcG9pbnQgaXMgZGlzYWJsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgVVZDIGdhZGdldCBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgVjRMMiBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN0YXRlIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBjaGVja3MgaWYgYHZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWRgIGlzIHRydWUgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSBgdXZjX3Y0bDJfc3RyZWFtb25gIGNvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCwgb3Igd2hlbiBpdCYjMzk7cyBhbHJlYWR5IHN0cmVhbWluZy4gSXQgYWxzbyBwcmV2ZW50cyBlbmFibGluZyB2aWRlbyB3aGVuIHRoZSBlbmRwb2ludCBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBWNEwyIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN0YXRlIHZhbGlkYXRpb24gY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAgdG8gZW5zdXJlIHRoZSBVVkMgZGV2aWNlIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIChgVVZDX1NUQVRFX0NPTk5FQ1RFRGApIGFuZCB0aGUgZW5kcG9pbnQgaXMgZW5hYmxlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIHZpZGVvIHN0cmVhbS4gVGhlc2UgY2hhbmdlcyBwcmV2ZW50IGludmFsaWQgc3RhdGUgdHJhbnNpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlLCBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBhbnkgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYW5kIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYzcxNjE4NzUwMWI3OWJjYmFiMjc5ZGFhZTEwYTk5Njk2MTdiZmQzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTI6NDI6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jCmluZGV4IGRmYTA1MjFhMjQzYWMuLmRhODU3YzJjNThkM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jCkBAIC01MjcsNiAmIzQzOzUyNywxMiBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKQogCWlmICh0eXBlICE9IHZpZGVvLSZndDtxdWV1ZS5xdWV1ZS50eXBlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAodXZjLSZndDtzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWlmICh1dmMtJmd0O3N0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURUQpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKIAkvKiBFbmFibGUgVVZDIHZpZGVvLiAqLwogCXJldCA9IHV2Y2dfdmlkZW9fZW5hYmxlKHZpZGVvKTsKIAlpZiAocmV0ICZsdDsgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYwppbmRleCAyZjk3MDBiM2YxYjY0Li5kNGFlZWRhY2NiMDZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jCkBAIC03NjQsNyAmIzQzOzc2NCw3IEBAIGludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbykKIHsKIAlpbnQgcmV0OwogCi0JaWYgKHZpZGVvLSZndDtlcCA9PSBOVUxMKSB7CiYjNDM7CWlmICh2aWRlby0mZ3Q7ZXAgPT0gTlVMTCB8fCAhdmlkZW8tJmd0O2VwLSZndDtlbmFibGVkKSB7CiAJCXV2Y2dfaW5mbygmYW1wO3ZpZGVvLSZndDt1dmMtJmd0O2Z1bmMsCiAJCQkgICYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXG4mIzM0Oyk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4MAoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiA0MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIFZpZGVvIENsYXNzIChVVkMpIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlLCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYHV2Y192NGwyX3N0cmVhbW9uYCBpbiBgdXZjX3Y0bDIuY2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaW4gYHV2Y192aWRlby5jYC4gIExldCBtZSBicmVhayB0aGlzIGRvd24uIEluIGB1dmNfdjRsMl9zdHJlYW1vbmAsIHRoZXkmIzM5O3JlIGFkZGluZyBhIGNvdXBsZSBvZiBzdGF0ZSBjaGVja3M6IGZpcnN0LCBpdCByZXR1cm5zIGVhcmx5IGlmIHdlIGFyZSBhbHJlYWR5IHN0cmVhbWluZy4gU2Vjb25kLCBpdCBleGl0cyB3aXRoIEVOT0RFViBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBjb25uZWN0ZWQuIEluIGB1dmNnX3ZpZGVvX2VuYWJsZWAgdGhleSBhcmUgYWRkaW5nIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkLiBJZiB0aGUgZW5kcG9pbnQgaXMgbnVsbCBvciBub3QgZW5hYmxlZCwgcmV0dXJuIGFuIGVycm9yLgoKVGhlc2UgY2hhbmdlcyBhcmUgY2xlYXJseSBhYm91dCAqc3RhdGUgbWFuYWdlbWVudCouICBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoaXMgaXMgbGlrZWx5IGFpbWVkIGF0IHByZXZlbnRpbmcgdXNlLWFmdGVyLWZyZWUsIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciBwZXJoYXBzIHNvbWUgb3RoZXIgc29ydCBvZiBpbnZhbGlkIGFjY2VzcyBiYXNlZCBvbiB0aGUgZHJpdmVyJiMzOTtzIGludGVybmFsIHN0YXRlLiBJdCBkb2VzbiYjMzk7dCBzY3JlYW0gJiMzNDt1bmluaXRpYWxpemVkIG1lbW9yeSBidWcmIzM0OyB0byBtZS4gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBiZWFzdCwgb2Z0ZW4gcmVxdWlyaW5nIG1vcmUgaW50cmljYXRlIGZpeGVzLgoKTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBoeXBvdGhlc2lzLiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcGllcyBvZiBkYXRhIHRvIHVzZXJzcGFjZS4gQWxsIGl0IGRvZXMgaXMgYWRkIHRoZXNlIHN0YXRlIHZhbGlkYXRpb25zIHdoaWNoIGNvbnRyb2wgdGhlIGZsb3cuIElmIHRoZXJlICp3ZXJlKiBtZW1vcnkgY29ycnVwdGlvbiwgS0FTQU4gb3IgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgd291bGQgcGljayBpdCB1cCwgc2luY2UgdGhpcyBmaXggaXMgcHVyZWx5IGNvbnRyb2wtZmxvdyBiYXNlZCBvbiB0aGUgZHJpdmVyIHN0YXRlLiBXZSB3b3VsZG4mIzM5O3QgbmVlZCBLTVNBTiBoZXJlLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBxdWlja2x5IHJldmlld2luZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gYHV2Y192NGwyX3N0cmVhbW9uYCBpcyBhbiBgaW9jdGxgIGhhbmRsZXIgZm9yIGBWSURJT0NfU1RSRUFNT05gLCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCBlbmFibGVzIHRoZSB2aWRlbyBzdHJlYW0uIFRoaXMgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbnl0aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50LiAqKk5lZWRzS01TQU49ZmFsc2UuKioKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdGF0ZSB2YWxpZGF0aW9uIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjZ192aWRlb19lbmFibGVgIHRvIGVuc3VyZSB0aGUgVVZDIGRldmljZSBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSAoYFVWQ19TVEFURV9DT05ORUNURURgKSBhbmQgdGhlIGVuZHBvaW50IGlzIGVuYWJsZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSB2aWRlbyBzdHJlYW0uIFRoZXNlIGNoYW5nZXMgcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSwgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgYW55IGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjE2LjI2MDE0NTgwMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzAwMjA2OTcyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfUkFXX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgICBcIlVTQl9HX1dFQkNBTVwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZjZ192aWRlb19lbmFibGVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdGF0ZSBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgY2hlY2tzIGlmIGB2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWVuYWJsZWRgIGlzIHRydWUgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSBgdXZjX3Y0bDJfc3RyZWFtb25gIGNvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCwgb3Igd2hlbiBpdCdzIGFscmVhZHkgc3RyZWFtaW5nLiBJdCBhbHNvIHByZXZlbnRzIGVuYWJsaW5nIHZpZGVvIHdoZW4gdGhlIGVuZHBvaW50IGlzIGRpc2FibGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlIFVWQyBnYWRnZXQgZHJpdmVyLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFY0TDIgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjoxNi4yNjAxNTIzMjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzY5MDYwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJjNzE2MTg3NTAxYjc5YmNiYWIyNzlkYWFlMTBhOTk2OTYxN2JmZDNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6NDI6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xcbmluZGV4IGRmYTA1MjFhMjQzYWMuLmRhODU3YzJjNThkM2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xcbkBAIC01MjcsNiArNTI3LDEyIEBAIHV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXFxuIFxcdGlmICh0eXBlICE9IHZpZGVvLVxcdTAwM2VxdWV1ZS5xdWV1ZS50eXBlKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdGlmICh1dmMtXFx1MDAzZXN0YXRlID09IFVWQ19TVEFURV9TVFJFQU1JTkcpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0aWYgKHV2Yy1cXHUwMDNlc3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRClcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbiBcXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xcbiBcXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcXG5pbmRleCAyZjk3MDBiM2YxYjY0Li5kNGFlZWRhY2NiMDZkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xcbkBAIC03NjQsNyArNzY0LDcgQEAgaW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAodmlkZW8tXFx1MDAzZWVwID09IE5VTEwpIHtcXG4rXFx0aWYgKHZpZGVvLVxcdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWVuYWJsZWQpIHtcXG4gXFx0XFx0dXZjZ19pbmZvKFxcdTAwMjZ2aWRlby1cXHUwMDNldXZjLVxcdTAwM2VmdW5jLFxcbiBcXHRcXHRcXHQgIFxcXCJWaWRlbyBlbmFibGUgZmFpbGVkLCBkZXZpY2UgaXMgdW5pbml0aWFsaXplZC5cXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MTYuNjk0Njk5MTE2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTk2NDQ1NDUyNDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIixcbiAgICBcIlVTQl9SQVdfR0FER0VUXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICAgIFwiVVNCX0dfV0VCQ0FNXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dmNnX3ZpZGVvX2VuYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGNoZWNrcyBpZiBgdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VlbmFibGVkYCBpcyB0cnVlIGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBjb3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQsIG9yIHdoZW4gaXQncyBhbHJlYWR5IHN0cmVhbWluZy4gSXQgYWxzbyBwcmV2ZW50cyBlbmFibGluZyB2aWRlbyB3aGVuIHRoZSBlbmRwb2ludCBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBWNEwyIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmM3MTYxODc1MDFiNzliY2JhYjI3OWRhYWUxMGE5OTY5NjE3YmZkM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDEyOjQyOjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuaW5kZXggZGZhMDUyMWEyNDNhYy4uZGE4NTdjMmM1OGQzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuQEAgLTUyNyw2ICs1MjcsMTIgQEAgdXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbiBcdGlmICh0eXBlICE9IHZpZGVvLVx1MDAzZXF1ZXVlLnF1ZXVlLnR5cGUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHV2Yy1cdTAwM2VzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmICh1dmMtXHUwMDNlc3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRClcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuIFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbmluZGV4IDJmOTcwMGIzZjFiNjQuLmQ0YWVlZGFjY2IwNmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuQEAgLTc2NCw3ICs3NjQsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4rXHRpZiAodmlkZW8tXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZCkge1xuIFx0XHR1dmNnX2luZm8oXHUwMDI2dmlkZW8tXHUwMDNldXZjLVx1MDAzZWZ1bmMsXG4gXHRcdFx0ICBcIlZpZGVvIGVuYWJsZSBmYWlsZWQsIGRldmljZSBpcyB1bmluaXRpYWxpemVkLlxcblwiKTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjoxNi42OTQ3MDA5NTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjkzMTkxMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVZDIEdhZGdldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgdXZjX3Y0bDIuY2AgYW5kIGB1dmNfdmlkZW8uY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIFVTQiBnYWRnZXQgZnVuY3Rpb24gZHJpdmVyIGZvciBVVkMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBUaGV5J3JlIGFkZGluZyBzdGF0ZSBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgdmVyaWZ5aW5nIGlmIGB2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkYCBpcyB0cnVlIGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFNvdW5kcyBsaWtlIHdlJ3JlIHRpZ2h0ZW5pbmcgdXAgc29tZSBzeW5jaHJvbml6YXRpb24gb3IgZXJyb3IgaGFuZGxpbmcgYXJvdW5kIHRoZSBVU0IgVmlkZW8gQ2xhc3MgKFVWQykgZ2FkZ2V0IGRyaXZlci4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBndWVzc2luZyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IHBvdGVudGlhbGx5IHByZXZlbnRpbmcgc29tZSBraW5kIG9mIHJhY2UgY29uZGl0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHN0cmVhbSBpbml0aWF0aW9uIG9yIGVuZHBvaW50IGVuYWJsaW5nLlxuXG5Lbm93aW5nIHRoZSBnYWRnZXQgZHJpdmVyJ3MgZGVzaWduLCBJIHNlZSB0aGlzIGFzIGEgcG90ZW50aWFsIHZlY3RvciBmb3IgZnV6emluZy4gVGhlIFVTQiBnYWRnZXQgZHJpdmVycywgaW4gZ2VuZXJhbCwgYXJlIGtub3duIHRvIGJlIGZ1enphYmxlLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgcmF3LWdhZGdldCBhbmQgZHVtbXlfaGNkIGludGVyZmFjZXMgYXJlIG15IGdvLXRvIHRvb2xzIGZvciB0aGlzIGtpbmQgb2Ygd29yay4gVGhlcmVmb3JlLCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIGNvZGUsIEkgd2FudCB0byB0YWtlIGEgbG9vayBhdCBob3cgdGhpcyBnYWRnZXQgaXMgY29uZmlndXJlZC4gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWcgb3B0aW9ucyB0aGF0IGdvdmVybiB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyPyBUaGV5IG1pZ2h0IGluZmx1ZW5jZSBob3cgdGhlIHBhdGNoIHdpbGwgd29yayBhbmQgaW5mbHVlbmNlIHRoZSBmdXp6aW5nIGFwcHJvYWNoIHRoYXQgc2hvdWxkIGJlIHRha2VuLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjgzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MjIuMzg3ODk1NDY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDM4Nzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1dmNfdjRsMl9zdHJlYW1vblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUxOT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTIxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY0OT1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYwLVxcdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NjE6XFx0LnZpZGlvY19zdHJlYW1vbiA9IHV2Y192NGwyX3N0cmVhbW9uLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2Mi1cXHQudmlkaW9jX3N0cmVhbW9mZiA9IHV2Y192NGwyX3N0cmVhbW9mZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MjIuNTYyMjg4NzY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0NzMyODQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIHRoZSBVVkMgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIHJpZ2h0IGluLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIG1ldGljdWxvdXNseSBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgVVZDIGdhZGdldC4gSSBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIGZyb20gdGhlIGVuZHBvaW50IGFzc2lnbm1lbnRzIGFuZCBpbnRlcmZhY2UgZGVzY3JpcHRvcnMgZG93biB0byB0aGUgZ3JhbnVsYXIgZGV0YWlscyBvZiB0aGUgdmlkZW8gcGF5bG9hZCBmb3JtYXQuIEknbSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIHBpdGZhbGxzIGhlcmUsIHRoZSBjb21tb24gZ290Y2hhczogaXMgdGhlIGRlc2NyaXB0b3IgY29ycmVjdGx5IGlkZW50aWZ5aW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGNhbWVyYT8gQXJlIHRoZSBmcmFtZSBmb3JtYXRzIGFuZCByZXNvbHV0aW9ucyBzdXBwb3J0ZWQgYnkgYm90aCB0aGUgaG9zdCBhbmQgdGhlIGRldmljZT8gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgYmFuZHdpZHRoIGFsbG9jYXRpb24gaXMgb3B0aW1pemVkIHRvIHByZXZlbnQgYW55IHN0dXR0ZXJpbmcgb3IgZHJvcHBlZCBmcmFtZXMuIExldCdzIHNlZSBpZiB0aGUgc2V0dGluZ3MgbWF0Y2ggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLiBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGUgdmlkZW8gaXMgYmVpbmcgcHJlc2VudGVkIGFzIHRoZSBzb3VyY2UuIElzIGl0IGEgbGl2ZSBmZWVkLCBvciBzb21ldGhpbmcgcHJlLXJlY29yZGVkPyBBbHNvLCB0aGUgY2hvc2VuIGNvbmZpZ3VyYXRpb24gbGlrZWx5IGhhcyBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZXhwZWN0ZWQgZnJhbWVyYXRlIGlzIGFjaGlldmFibGUuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjI2LjYwOTYxOTc0OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkwMjg2ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1VWQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIwMj1jb25maWcgVVNCX0ZfVUFDMlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIwNTpjb25maWcgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjI2LjcxODY1NDE4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzcwNjE5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBhcmVhOlxuXG4qKkRpZ2dpbmcgaW50byBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBHaXZlbiBteSBrbm93bGVkZ2UsIHRoZSBtb3N0IGxpa2VseSBwbGFjZXMgdG8gZmluZCB0aGVzZSBhcmUgdGhlIEtjb25maWcgZmlsZXMuIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGtlcm5lbCBoYXMgZXZvbHZlZCwgYW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgY291bGQgbGl2ZSBpbiBhIGNvdXBsZSBvZiBkaWZmZXJlbnQgbG9jYXRpb25zLiBNeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgb24gdGhlIFwibGVnYWN5XCIgZ2FkZ2V0IGNvbmZpZ3VyYXRpb25zLCBzbyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgLiBJZiB0aG9zZSBkb24ndCBoYXZlIHdoYXQgSSBuZWVkLCBvciBpZiBJJ20gbG9va2luZyBmb3IgbW9yZSBtb2Rlcm4gb3B0aW9ucywgSSBzaG91bGQgYWxzbyBsb29rIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vS2NvbmZpZ2AuIFRob3NlIGFyZSB0aGUgdHdvIG1vc3QgbG9naWNhbCBwbGFjZXMgdG8gc3RhcnQgcG9raW5nIGFyb3VuZC4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGNoZWNrIGZvciBhbnkgcmVsZXZhbnQgaW5jbHVkZXMgb3IgZGVwZW5kZW5jaWVzIHRvbywgYXMgdGhlc2Ugb3B0aW9ucyBvZnRlbiByZWx5IG9uIGVhY2ggb3RoZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCB0cmFjayBkb3duIHRob3NlIGNvbmZpZ3VyYXRpb25zIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMzcyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MzAuMjk1NzE4NzI1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDQ0Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9GX1VWQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIwMj1jb25maWcgVVNCX0ZfVUFDMlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIwNTpjb25maWcgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc0LVxcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3NTpcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00Nz1lbmRpZlxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0ODpvYmotJChDT05GSUdfVVNCX0ZfVVZDKVxcdFxcdCs9IHVzYl9mX3V2Yy5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ5LXVzYl9mX21pZGkteVxcdFxcdFxcdDo9IGZfbWlkaS5vXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDYtXFx0c2VsZWN0IFZJREVPQlVGMl9WTUFMTE9DXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUwNzpcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwOC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjMwLjM0NTc2ODQzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzMjg0NjgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBVU0IgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgVVNCIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIGl0IHNlZW1zIHRoYXQgaWYgSSBzZWxlY3QgZWl0aGVyIGBVU0JfQ09ORklHRlNfRl9VVkNgIG9yIGBVU0JfR19XRUJDQU1gLCBJJ20gaW1wbGljaXRseSBjaG9vc2luZyBgVVNCX0ZfVVZDYC4gTWFrZXMgc2Vuc2U7IGBVU0JfRl9VVkNgIHByb2JhYmx5IHByb3ZpZGVzIHRoZSB1bmRlcmx5aW5nIFVuaXZlcnNhbCBWaWRlbyBDbGFzcyBmdW5jdGlvbmFsaXR5IHRoYXQgdGhlc2UgaGlnaGVyLWxldmVsIG9wdGlvbnMgdXRpbGl6ZS4gTm93LCBsZXQncyBkaXZlIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaXJlY3RseSBzZWxlY3RpbmcgYFVTQl9DT05GSUdGU19GX1VWQ2AuIEknbGwgd2FudCB0byBjaGVjayBpdHMgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBJJ20gbm90IGluYWR2ZXJ0ZW50bHkgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG90aGVyIHJlbGV2YW50IGNvbXBvbmVudHMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDIzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MzMuNTc4NjE3NjU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODgwOTU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjozMy42Mjc0MzQxMzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyNjY5NTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZiwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkRpdmluZyBpbnRvIFVTQiBDb25maWdGUyBhbmQgVVZDIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBVU0JfQ09ORklHRlNfRl9VVkNgIG9wdGlvbiBpbiB0aGUga2VybmVsJ3MgS2NvbmZpZyBmaWxlIGZvciB0aGUgVVNCIGdhZGdldCBkcml2ZXIuIFJpZ2h0LCBpdCdzIGEgZmVhdHVyZSBmbGFnLCBwcmVzdW1hYmx5IGZvciBlbmFibGluZyBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb25hbGl0eSAqd2l0aGluKiB0aGUgQ29uZmlnRlMgZnJhbWV3b3JrLiBUaGlzIHRlbGxzIG1lIGEgZmV3IHRoaW5ncyBpbW1lZGlhdGVseTpcblxuRmlyc3QsIGl0IHN1Z2dlc3RzIHdlJ3JlIHVzaW5nIENvbmZpZ0ZTIHRvIGR5bmFtaWNhbGx5IGNvbmZpZ3VyZSB0aGUgVVNCIGdhZGdldCdzIFVWQyBpbnRlcmZhY2UuIE5vIHN0YXRpYyBkZXZpY2UgdHJlZSBzaGVuYW5pZ2FucyBoZXJlLCB3aGljaCBpbXBsaWVzIGEgbW9yZSBmbGV4aWJsZSBzZXR1cC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBob3cgdGhhdCBjb25maWd1cmF0aW9uIGlzIHByZXNlbnRlZCB0byB0aGUgdXNlci4gQXJlIHRoZXJlIGNoYXJhY3RlciBkZXZpY2VzPyBGaWxlcyB1bmRlciBgL2NvbmZpZy91c2JfZ2FkZ2V0YD8gUHJvYmFibHkgYSBjb21iaW5hdGlvbi5cblxuU2Vjb25kbHksIHRoZSBmYWN0IHRoYXQgaXQncyBhICpmZWF0dXJlKiBmbGFnIHN0cm9uZ2x5IGluZGljYXRlcyB0aGF0IFVWQyBzdXBwb3J0IG1pZ2h0IGJlIG9wdGlvbmFsIHdpdGhpbiB0aGUgQ29uZmlnRlMgZ2FkZ2V0IGRyaXZlci4gVGhpcyBtaWdodCBiZSBkZXBlbmRlbnQgb24gc3VwcG9ydGluZyBoYXJkd2FyZSwgZHJpdmVyIGRlcGVuZGVuY2llcywgb3Igb3RoZXIgY29uZmlndXJlZCBmZWF0dXJlcy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyAoIGBkZXBlbmRzIG9uYCBvciBgc2VsZWN0YCBzdGF0ZW1lbnRzICkgdGhhdCByZWxhdGUgdG8gdGhpcyB0byBuYWlsIGRvd24gdGhlIHByZWNpc2UgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCBjYW4gYmUgZW5hYmxlZC5cblxuRmluYWxseSwgYmVjYXVzZSB0aGlzIGlzIGFuICpGXyogZmxhZywgcmF0aGVyIHRoYW4gYSBzaW1wbGVyICpZKiBmbGFnLCBpdCBwcm9iYWJseSBnaXZlcyB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IG11bHRpcGxlIGZlYXR1cmVzIGluIHRoZSBDb25maWdGUyBpbnRlcmZhY2UuIFRoaXMgbWF5IGJlIHZlcnkgaGVscGZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSB2aWRlbyBzdHJlYW1zLCBkaWZmZXJlbnQgcmVzb2x1dGlvbnMgb3IgY29uZmlndXJhdGlvbnMuIEknbSBpbWFnaW5pbmcgYSBDb25maWdGUyBoaWVyYXJjaHkgd2hlcmUgeW91IGNhbiBjcmVhdGUgYW5kIGNvbmZpZ3VyZSBtdWx0aXBsZSBVVkMgZnVuY3Rpb25zLlxuXG5TbywgdGhlIG5leHQgc3RlcCBpcyB0byBhY3R1YWxseSAqcmVhZCogdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZSwgYW5kIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYXJvdW5kIGBVU0JfQ09ORklHRlNfRl9VVkNgIGFyZS4gQW5kIHRoZW4gSSdsbCBkZWx2ZSBpbnRvIHRoZSBDIGNvZGUgdGhhdCBhY3R1YWxseSAqdXNlcyogdGhpcyBkZWZpbmUgdG8gZW5hYmxlIHRoZSBVVkMgZmVhdHVyZXMgd2l0aGluIENvbmZpZ0ZTLiBGcm9tIHRoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGZlYXR1cmUgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjozOC40NTQxMzI5NzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQ2MTpcXHRcXHRzZWxlY3QgVVNCX0ZfSElEXFxuIDQ2MjpcXHRcXHRoZWxwXFxuIDQ2MzpcXHRcXHQgIFRoZSBISUQgZnVuY3Rpb24gZHJpdmVyIHByb3ZpZGVzIGdlbmVyaWMgZW11bGF0aW9uIG9mIFVTQlxcbiA0NjQ6XFx0XFx0ICBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlcyAoSElEKS5cXG4gNDY1OlxcdFxcbiA0NjY6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9oaWQucnN0LlxcbiA0Njc6XFx0XFxuIDQ2ODpcXHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXFxuIDQ2OTpcXHRcXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbiA0NzA6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG4gNDcxOlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWXFxuIDQ3MjpcXHRcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbiA0NzM6XFx0XFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcXG4gNDc0OlxcdFxcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xcbiA0NzU6XFx0XFx0c2VsZWN0IFVTQl9GX1VWQ1xcbiA0NzY6XFx0XFx0aGVscFxcbiA0Nzc6XFx0XFx0ICBUaGUgV2ViY2FtIGZ1bmN0aW9uIGFjdHMgYXMgYSBjb21wb3NpdGUgVVNCIEF1ZGlvIGFuZCBWaWRlbyBDbGFzc1xcbiA0Nzg6XFx0XFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXFxuIDQ3OTpcXHRcXHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cXG4gNDgwOlxcdFxcbiA0ODE6XFx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcXG4gNDgyOlxcdFxcdGJvb2wgXFxcIlByaW50ZXIgZnVuY3Rpb25cXFwiXFxuIDQ4MzpcXHRcXHRzZWxlY3QgVVNCX0ZfUFJJTlRFUlxcbiA0ODQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG4gNDg1OlxcdFxcdGhlbHBcXG4gNDg2OlxcdFxcdCAgVGhlIFByaW50ZXIgZnVuY3Rpb24gY2hhbm5lbHMgZGF0YSBiZXR3ZWVuIHRoZSBVU0IgaG9zdCBhbmQgYVxcbiA0ODc6XFx0XFx0ICB1c2Vyc3BhY2UgcHJvZ3JhbSBkcml2aW5nIHRoZSBwcmludCBlbmdpbmUuIFRoZSB1c2VyIHNwYWNlXFxuIDQ4ODpcXHRcXHQgIHByb2dyYW0gcmVhZHMgYW5kIHdyaXRlcyB0aGUgZGV2aWNlIGZpbGUgL2Rldi9nX3ByaW50ZXJcXHUwMDNjWFxcdTAwM2UgdG9cXG4gNDg5OlxcdFxcdCAgcmVjZWl2ZSBvciBzZW5kIHByaW50ZXIgZGF0YS4gSXQgY2FuIHVzZSBpb2N0bCBjYWxscyB0b1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjozOC40NTQyMTg4MzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwNjg4MjY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIGBVU0JfQ09ORklHRlNfRl9VVkNgIGlzIG15IGZvY3VzIGhlcmUsIGFuZCBpdCdzIGxvb2tpbmcgbGlrZSBpdCBoaW5nZXMgb24gYm90aCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFZJREVPX0RFVmAuIENsYXNzaWMgZGVwZW5kZW5jeSBjaGFpbiwgbm90aGluZyB1bmV4cGVjdGVkIHRoZXJlLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgdHdvIGFyZSBlbmFibGVkIGZpcnN0LCBvciB0aGlzIHdvbid0IGV2ZW4gY29tcGlsZS4gR29vZCB0byBtYWtlIGEgbm90ZSBvZiB0aGlzLiBOb3csIHNpbmNlIEknbSBhbHJlYWR5IGluIHRoaXMgYXJlYSwgbGV0J3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCBgVVNCX0dfV0VCQ0FNYCBpcyBwcm9wZXJseSBjb25maWd1cmVkOyBqdXN0IHRvIGJlIHN1cmUsIG1heWJlIHRoZXJlJ3MgYSByZWFzb24gdGhleSBhcmUgbGlua2VkLCBsZXQncyBleHBsb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjk1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0Mjo0Mi42NjExMDQxNTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNjk4MTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfR19XRUJDQU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDk3PWVuZGlmXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAwLSMgb3IgdmlkZW8gY2xhc3MgZ2FkZ2V0IGRyaXZlcnMpLCBvciBzcGVjaWZpYyBoYXJkd2FyZSwgaGVyZS5cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTAxOmNvbmZpZyBVU0JfR19XRUJDQU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAyLVxcdHRyaXN0YXRlIFxcXCJVU0IgV2ViY2FtIEdhZGdldFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NDIuNzEyODA4ODg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTg3OTIxNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXQgcGxheSBoZXJlLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQgaWRlbnRpZnlpbmcgdGhlIGRpcmVjdCByZWxhdGlvbnNoaXBzOyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgY2hhbmdlcyBvciBmYWlsdXJlcyB3aXRoaW4gdGhvc2UgZGVwZW5kZW50IGNvbXBvbmVudHMuIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBib3R0bGVuZWNrcywgc2luZ2xlIHBvaW50cyBvZiBmYWlsdXJlLCBhbmQgdGhlIGNhc2NhZGluZyBlZmZlY3RzIGEgcHJvYmxlbSBpbiBvbmUgYXJlYSBjb3VsZCB0cmlnZ2VyIGFjcm9zcyB0aGUgc3lzdGVtLiBJdCdzIGFib3V0IGJ1aWxkaW5nIGEgbWVudGFsIG1hcCBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlIGFuZCBwaW5wb2ludGluZyB0aGUgY3JpdGljYWwgcGF0aHdheXMuIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBjb2RlLCBsaWJyYXJ5IHZlcnNpb25zLCBhbmQgZXh0ZXJuYWwgc2VydmljZXMgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgdGhpbmcgbGVhbnMgb24gYW5kIGhvdyByb2J1c3QgKG9yIGZyYWdpbGUpIHRob3NlIGxpbmtzIGFyZS4gRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlIHdlYWsgbGlua3MgYW5kIGFudGljaXBhdGUgd2hlcmUgcHJvYmxlbXMgbWlnaHQgYXJpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjQ2Ljg3MTYwNDA2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTAwOlxcdCMgb3IgdmlkZW8gY2xhc3MgZ2FkZ2V0IGRyaXZlcnMpLCBvciBzcGVjaWZpYyBoYXJkd2FyZSwgaGVyZS5cXG4gNTAxOlxcdGNvbmZpZyBVU0JfR19XRUJDQU1cXG4gNTAyOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgV2ViY2FtIEdhZGdldFxcXCJcXG4gNTAzOlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWXFxuIDUwNDpcXHRcXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbiA1MDU6XFx0XFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcXG4gNTA2OlxcdFxcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xcbiA1MDc6XFx0XFx0c2VsZWN0IFVTQl9GX1VWQ1xcbiA1MDg6XFx0XFx0aGVscFxcbiA1MDk6XFx0XFx0ICBUaGUgV2ViY2FtIEdhZGdldCBhY3RzIGFzIGEgY29tcG9zaXRlIFVTQiBBdWRpbyBhbmQgVmlkZW8gQ2xhc3NcXG4gNTEwOlxcdFxcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xcbiA1MTE6XFx0XFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXFxuIDUxMjpcXHRcXG4gNTEzOlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gNTE0OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdfd2ViY2FtXFxcIi5cXG4gNTE1OlxcdFxcbiA1MTY6XFx0Y29uZmlnIFVTQl9SQVdfR0FER0VUXFxuIDUxNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIFJhdyBHYWRnZXRcXFwiXFxuIDUxODpcXHRcXHRoZWxwXFxuIDUxOTpcXHRcXHQgIFVTQiBSYXcgR2FkZ2V0IGlzIGEgZ2FkZ2V0IGRyaXZlciB0aGF0IGdpdmVzIHVzZXJzcGFjZSBsb3ctbGV2ZWxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NDYuODcxNzAyOTc1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTY1MDYyNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBHYWRnZXQgV2ViY2FtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYFVTQl9HX1dFQkNBTWAgc2V0dXAuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIENsZWFybHksIGBWSURFT19ERVZgIGlzIGZ1bmRhbWVudGFsOyB0aGF0IG1ha2VzIHNlbnNlLiBOb3csIHRvIGFjdHVhbGx5IHRlc3QgdGhlc2UgZ2FkZ2V0cyBwcm9wZXJseSwgSSdtIGdvaW5nIHRvIG5lZWQgYFVTQl9HQURHRVRgIGFuZCBlaXRoZXIgYFVTQl9EVU1NWV9IQ0RgIG9yIHBvdGVudGlhbGx5IGBVU0JfUkFXX0dBREdFVGAuIEl0IGRlcGVuZHMgb24gdGhlIHNwZWNpZmljcyBvZiBob3cgSSB3YW50IHRvIGFwcHJvYWNoIHRoZSBmdXp6aW5nLiBUaGlzIGFsbCBzZWVtcyBsb2dpY2FsLlxuXG5BaCwgbG9va3MgbGlrZSB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIEludGVyZXN0aW5nLi4uIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRob3NlIGZ1bmN0aW9ucyB3aGVuIEknbSBkaWdnaW5nIGludG8gdGhlIHNvdXJjZSBjb2RlLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBhcmUgbGlrZWx5IHRvIGJlLiBUaW1lIHRvIGlkZW50aWZ5IHRob3NlIGZvY3VzIHN5bWJvbHMsIGFuZCBzZWUgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NTEuMDI4MjEyMzk1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDYxNDY4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1dmNfdjRsMl9zdHJlYW1vblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUxOT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTIxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY0OT1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYwLVxcdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NjE6XFx0LnZpZGlvY19zdHJlYW1vbiA9IHV2Y192NGwyX3N0cmVhbW9uLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2Mi1cXHQudmlkaW9jX3N0cmVhbW9mZiA9IHV2Y192NGwyX3N0cmVhbW9mZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NTEuMDgyODMzOTg5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NDQ5ODMyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWaWRlbyBTdHJlYW1pbmcgRW5hYmxlbWVudCoqXG5cbk9rYXksIHNvIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgZGVmaW5lZCBhcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3MgZnVuZGFtZW50YWxseSBhY3RpbmcgYXMgYW4gaW9jdGwgb3BlcmF0aW9uLiBUaGF04oCZcyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdoZW4gdGhpcyBjb21tYW5kIGlzIGV4ZWN1dGVkLiBSaWdodCwgc28gd2hlcmUgZG8gSSBnbyBuZXh0PyBMZXQncyBjaGVjayBgdXZjZ192aWRlb19lbmFibGVgLiBUaGF0J3MgbGlrZWx5IHRoZSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSBlbmFibGVtZW50IHBhcnQgb2YgdGhlIGRyaXZlci4gTGV04oCZcyBmb2xsb3cgdGhlIGxvZ2ljYWwgZmxvdyBvZiB0aGlzIGFuZCBzZWUgaWYgaXQgaXMgcmVsYXRlZCB0byBVVkMgY2FtZXJhIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgyMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjU2LjgyNzgxOTYyNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0OTEzNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjZ192aWRlb19lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MjA9dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzNi1cXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUzNzpcXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTY4NT11dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzYyLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjM6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oPTE1PXN0cnVjdCB1dmNfdmlkZW87XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oLTE2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaDoxNzppbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaC0xOC1pbnQgdXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NTYuODc3MzE1NjE5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMjY5MDA3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVVZDIERyaXZlciBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBgdXZjZ192aWRlb19lbmFibGVgIGlzbid0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIG15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCBgdXZjX3Y0bDJfaW9jdGxfb3BzYD8gVGhhdCBzZWVtcyBpbXBvcnRhbnQsIHJpZ2h0PyBJIHJlY2FsbCBzZWVpbmcgaXQgaW4gYHV2Y192NGwyLmNgLCBzbyBpdOKAmXMgbGlrZWx5IGVpdGhlciBleHBvcnRlZCBvciB1c2VkIHdpdGhpbiB0aGF0IGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhlbiBpcyB3aGVyZSAqZWxzZSogdGhpcyBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBzdHJ1Y3QgaXMgYmVpbmcgdXNlZCBpbiB0aGUgZHJpdmVyLiBMZXQncyB0cmFjZSB0aG9zZSBjYWxscyBhbmQgZmluZCBvdXQuIFRoaXMgbGlrZWx5IGhvbGRzIHRoZSBrZXkgdG8gdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDQ4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDM6MDEuMTA0MjE5MjQ5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM4MTg0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1dmNfdjRsMl9pb2N0bF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYz00NTA9dXZjX3JlZ2lzdGVyX3ZpZGVvKHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00NTktXFx0dXZjLVxcdTAwM2V2ZGV2LmZvcHMgPSBcXHUwMDI2dXZjX3Y0bDJfZm9wcztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYzo0NjA6XFx0dXZjLVxcdTAwM2V2ZGV2LmlvY3RsX29wcyA9IFxcdTAwMjZ1dmNfdjRsMl9pb2N0bF9vcHM7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDYxLVxcdHV2Yy1cXHUwMDNldmRldi5yZWxlYXNlID0gdXZjX3ZkZXZfcmVsZWFzZTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTYzND11dmNfdjRsMl9pb2N0bF9kZWZhdWx0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgYm9vbCB2YWxpZF9wcmlvLFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY0OTpjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY1MC1cXHQudmlkaW9jX3F1ZXJ5Y2FwID0gdXZjX3Y0bDJfcXVlcnljYXAsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuaC0xNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuaDoxNjpleHRlcm4gY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIHV2Y192NGwyX2lvY3RsX29wcztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuaC0xNy1leHRlcm4gY29uc3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIHV2Y192NGwyX2ZvcHM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjAxLjE1MTYwNjMyNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjMyNzg0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBVVkMgR2FkZ2V0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGB1dmNnX3ZpZGVvX2VuYWJsZWAgZmVlbHMgbGlrZSBhIGdvb2Qga2V5IHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nLiBJdCdzIGZpeGluZyBhIGJ1ZyBpbiB0aGUgVVZDIGdhZGdldCBkcml2ZXIsIHdoaWNoIGlzIGdyZWF0LiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgaG93IHRoaXMgZml4IGlzIGFjY2Vzc2VkLiBBaCwgaXTigJlzIHJlYWNoYWJsZSB0aHJvdWdoIGB2NGwyIGlvY3Rsc2Agb24gdGhlIFVWQyBnYWRnZXQgZGV2aWNlIG5vZGUuIFRoYXQgbWFrZXMgc2Vuc2UuXG5cblJpZ2h0LCB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLiBJJ20gdGhpbmtpbmcgd2UnbGwgbmVlZCBlaXRoZXIgYFVTQl9DT05GSUdGU19GX1VWQ2Agb3IgYFVTQl9HX1dFQkNBTWAuIExldCdzIGp1c3QgY29uZmlybSBpZiBgVVNCX0ZfVVZDYCBpdHNlbGYgaXMgc3VmZmljaWVudC4gR29vZCwgaXQgYXBwZWFycyBgVVNCX0ZfVVZDYCBpcyBzZWxlY3RlZCBieSBib3RoIGBVU0JfQ09ORklHRlNfRl9VVkNgIGFuZCBgVVNCX0dfV0VCQ0FNYCwgc28gd2UncmUgb24gdGhlIHJpZ2h0IHRyYWNrLlxuXG5Pa2F5LCBsZXQncyBpbmNsdWRlIGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gIHRvIGJlIHNhZmUuIEhhbmcgb24sIGhvbGQgdGhhdCB0aG91Z2h0LiBXZSdyZSBvYnZpb3VzbHkgZ29pbmcgdG8gbmVlZCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFVTQl9HQURHRVRgIGFzIHdlbGwsIHJpZ2h0PyBMZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR0FER0VUYCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgbWlzcyBhbnl0aGluZyBvYnZpb3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTg4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjA3Ljc4NDM5MzQ1NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzMzU0NTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfR0FER0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3Nzpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cXHRib29sIFxcXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTAwLVxcdGludCBcXFwiTWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTE2OmNvbmZpZyBVU0JfR0FER0VUX1NUT1JBR0VfTlVNX0JVRkZFUlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXFx0aW50IFxcXCJOdW1iZXIgb2Ygc3RvcmFnZSBwaXBlbGluZSBidWZmZXJzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI3OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Mjc5OmNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzQ3PWNvbmZpZyBVU0JfRUcyMFRcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MTpjb25maWcgVVNCX0dBREdFVF9YSUxJTlhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggVVNCIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDM6MDguMDY3NzUzOTI0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjA1NDQ4MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIFVTQiBWaWRlbyBHYWRnZXQgU3VwcG9ydCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBidWlsZGluZyBhIHZpZGVvIGdhZGdldCwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBjb3JyZWN0IGtlcm5lbCBtb2R1bGVzIGVuYWJsZWQuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCB3ZSdsbCBuZWVkIHRvIGluY2x1ZGUgdGhlIGJhc2ljczogYFVTQl9HQURHRVRgIGFuZCBgVVNCX0NPTkZJR0ZTYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgYW55IFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzeXN0ZW0gaXMgaG93IHdlJ2xsIGxpa2VseSBkZWZpbmUgdGhlIGdhZGdldCdzIGJlaGF2aW9yLiBJIGFsc28gdGhpbmsgd2Ugd2lsbCBuZWVkIGBVU0JfQ09ORklHRlNfRl9VVkNgIHRvIHN1cHBvcnQgVVZDIGZ1bmN0aW9uYWxpdHkgdXNpbmcgY29uZmlnZnMuXG5cbkhvd2V2ZXIsIGEgcXVpY2sgc2Vjb25kIHRob3VnaHQsIGBVU0JfR19XRUJDQU1gIGlzIG5vdCB0aGUgYWN0dWFsIG1vZHVsZSBhcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgaXMgYWN0dWFsbHkgcmVzcG9uc2libGUgZm9yIFVWQywgYW5kIEkgaGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggbXkgbmFtaW5nLiBJbnN0ZWFkIG9mIHRoZSBuYW1lIG9mIHRoZSBnYWRnZXQsIHRoZSBtb2R1bGUncyBtb3JlIGxpa2VseSBuYW1lIGlzIGBVU0JfRl9VVkNgLiBJIHNob3VsZCBjb25maXJtIHRoYXQncyBhY2N1cmF0ZS4gVG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkganVtcCBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIGV4YW1pbmUgdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgcmVsZXZhbnQgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBmaW5hbGl6ZSBhbnl0aGluZywgc28gSSdsbCBjaGVjayB0aGF0IEtjb25maWcgZmlsZS4gSSBjYW4ndCBsZWF2ZSB0aGlzIHRvIGNoYW5jZS4gQSBtaXNjb25maWd1cmVkIGtlcm5lbCBjb3VsZCBlYXNpbHkgZGVyYWlsIHRoZSBlbnRpcmUgcHJvamVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjE4LjI3MzIwNTQ3OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NTE4MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1VWQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIwMj1jb25maWcgVVNCX0ZfVUFDMlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIwNTpjb25maWcgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjE4LjMzNjg2MzgwMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzg5OTk0MDE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5IGZvciBVU0IgV2ViY2FtIEdhZGdldCBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gYFVTQl9GX1VWQ2AgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCwgaXQgaGFzIG5vIHByb21wdC4gVGhhdCBtZWFucyB0aGUgcmVhbCB3b3JrIGlzIHRvIGdldCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBvciBgVVNCX0dfV0VCQ0FNYCBnb2luZy4gTGV0J3Mgc2VlLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFVTQl9DT05GSUdGU19GX1VWQ2AuIEFscmlnaHQsIGl0IG5lZWRzIGBVU0JfQ09ORklHRlNgIGFuZCBgVklERU9fREVWYC4gUmlnaHQsIG1ha2VzIHNlbnNlLiBOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgY2hlY2sgYFVTQl9HX1dFQkNBTWAgdG9vLiBUaGF0IGFsc28gbmVlZHMgYFZJREVPX0RFVmAuIEdvb2QuXG5cbk5vdyBsZXQncyBjb25zaWRlciB0aGUgbG93ZXIgbGV2ZWwgc3R1ZmYuIEknbGwgbmVlZCBgVVNCX0RVTU1ZX0hDRGAgYW5kIGBVU0JfUkFXX0dBREdFVGAgZW5hYmxlZC4gU28gdGhlIGZ1bGwgbGlzdCBvZiB3aGF0IEkgbmVlZCBlbmFibGVkIGlzOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9SQVdfR0FER0VUYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLlxuXG5Pa2F5LCBuZXh0IEknbGwgbW92ZSBvbiB0byBhIHF1aWNrIGNoZWNrIG9mIHRoZSBzeW1ib2xzLiBMZXQgbWUgbWFrZSBzdXJlIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXMgdGhlIG9ubHkgc3ltYm9sIHRvIGZvY3VzIG9uLiBXYWl0LCB3aGF0IGFib3V0IGB1dmNfdjRsMl9zdHJlYW1vbmA/IFRoYXQncyBzdGF0aWMsIHNvIGl0IHNob3VsZCBiZSBmaW5lIGFuZCBJIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgaXQuIFRoZSBnb2FsIGlzIHRvIGlkZW50aWZ5IGFueSBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGltZSB0byBsb29rIGludG8gYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jYCBhbmQgaHVudCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTgwLCJPdXRwdXRUb2tlbnMiOjc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjMyLjIzNjgwNjM4OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNjU0MjQzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjMyLjM5OTQ5Njg5MloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzc0MjM2OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVZDIFY0TDIgRHJpdmVyIENvZGUqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpdGhpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNgLiBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgYGdyZXBgIGZvciB0aGlzLCBiZWNhdXNlIGl0J3MgZmFzdCBhbmQgZWZmZWN0aXZlIGZvciBwYXR0ZXJuIG1hdGNoaW5nIHdpdGhpbiB0ZXh0IGZpbGVzLlxuXG5JJ20gY29uc3RydWN0aW5nIGEgcmVndWxhciBleHByZXNzaW9uLiBUaGUgb2JqZWN0aXZlIGlzIHRvIGlzb2xhdGUgYW5kIGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLiBJJ20gZ29pbmcgdG8gdXNlIGAtRWAgdG8gZW5hYmxlIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIHdoaWNoIG1ha2VzIHRoZSBwYXR0ZXJuIGEgYml0IG1vcmUgcmVhZGFibGUuXG5cblRoZSBjb3JlIG9mIHRoZSByZWdleCBpcyB0aGlzOiBgJ15bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgnYC5cblxuTGV0J3MgYnJlYWsgaXQgZG93bjpcbiogICBgXmA6IFN0YXJ0IG9mIHRoZSBsaW5lLiBXZSB3YW50IHRvIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgdG8gY2F0Y2ggdGhlIGRlY2xhcmF0aW9uLlxuKiAgIGBbYS16QS1aX11bYS16QS1aMC05X10qYDogVGhpcyBwYXJ0IHNob3VsZCBjYXRjaCB0aGUgcmV0dXJuIHR5cGUuIEl0IHN0YXJ0cyB3aXRoIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyIG9yIHVuZGVyc2NvcmUgKGBbYS16QS1aX11gKSBhbmQgdGhlbiBjYW4gYmUgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmVzIChgW2EtekEtWjAtOV9dKmApLiBUaGlzIGFjY291bnRzIGZvciB2YWxpZCBDIGlkZW50aWZpZXJzIGZvciByZXR1cm4gdHlwZXMuXG4qICAgYCBgOiBBIHNwYWNlLiBUaGlzIGlzIHRvIHNlcGFyYXRlIHRoZSByZXR1cm4gdHlwZSBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLlxuKiAgIGBbYS16QS1aX11bYS16QS1aMC05X10qYDogVGhpcyBwYXJ0LCBhZ2Fpbiwgc2hvdWxkIGJlIGNhdGNoaW5nIHRoZSBmdW5jdGlvbiBuYW1lIGl0c2VsZi4gSXQgbmVlZHMgdG8gZm9sbG93IHRoZSBzYW1lIHJ1bGVzIGFzIHRoZSByZXR1cm4gdHlwZS5cbiogICBgXFwoYDogRmluYWxseSwgdGhlIG9wZW5pbmcgcGFyZW50aGVzaXMgYChgLiBUaGUgYmFja3NsYXNoIGlzIGltcG9ydGFudCBmb3IgZXNjYXBpbmcgdGhlIHBhcmVudGhlc2lzLCBzaW5jZSBwYXJlbnRoZXNpcyBoYXZlIHNwZWNpYWwgbWVhbmluZyB3aXRoaW4gcmVndWxhciBleHByZXNzaW9ucy5cblxuVGhlIHdob2xlIHBhdHRlcm4gdGhlbiBsb29rcyB0byBpZGVudGlmeSBsaW5lcyB0aGF0IGRlY2xhcmUgYSBmdW5jdGlvbiB0aGF0OlxuXG4qICAgU3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLlxuKiAgIEJlZ2lucyB3aXRoIGEgdmFsaWQgQyB0eXBlLCBmb2xsb3dlZCBieSBhIHNwYWNlLCBmb2xsb3dlZCBieSBhIHZhbGlkIEMgaWRlbnRpZmllci5cbiogICBDb25jbHVkZXMgd2l0aCBhbiBvcGVuIHBhcmVudGhlc2lzLCBpbmRpY2F0aW5nIHRoZSBzdGFydCBvZiBhIGZ1bmN0aW9uIHNpZ25hdHVyZSwgdGhlcmVmb3JlIGEgZnVuY3Rpb24uXG5cblRoaXMgKnNob3VsZCogZ2l2ZSBtZSBhIGNsZWFuIGxpc3Qgb2YgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW4gdGhlIHRhcmdldCBmaWxlLCB3aGljaCBJIGNhbiBxdWlja2x5IHBhcnNlLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGluaXRpYWwgY29kZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3MTEsIk91dHB1dFRva2VucyI6NzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MzozOC43NzM3MzU5MDlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjExNjU1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjM4LjgyMTM1MzcyNFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTI3MDg0NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgVVZDIFZpZGVvIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiBob3cgdGhpcyBVVkMgdmlkZW8gZHJpdmVyLCBzcGVjaWZpY2FsbHkgYHV2Y192NGwyLmNgLCBmdW5jdGlvbnMuICBJIHRoaW5rIHRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZSBpdHNlbGYuICBJIGNvdWxkIGp1c3Qgb3BlbiBgdXZjX3Y0bDIuY2AgYW5kIHN0YXJ0IHJlYWRpbmcsIGJ1dCB0aGF0IGZlZWxzIGEgYml0IGluZWZmaWNpZW50LiBBIHF1aWNrIGBncmVwYCBtaWdodCBiZSBtb3JlIGVmZmVjdGl2ZSB0byBnZXQgYSBxdWljayBvdmVydmlldy4gSSdtIHRoaW5raW5nIGEgZ3JlcCBleHByZXNzaW9uIGxpa2UgYCdeW2EtekEtWl9dJ2Agd291bGQgZmlsdGVyIGZvciBsaW5lcyBzdGFydGluZyB3aXRoIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmVzIOKAkyBhIGdvb2Qgd2F5IHRvIGdyYWIgZnVuY3Rpb24gZGVmaW5pdGlvbnMgYW5kIGxpa2VseSBnbG9iYWwgdmFyaWFibGUgZGVjbGFyYXRpb25zIGF0IHRoZSB0b3AgbGV2ZWwuIFRoaXMgYXBwcm9hY2ggd291bGQgYWxsb3cgbWUgdG8gcXVpY2tseSBzY2FuIHRoZSBkcml2ZXIsIHNlZSB3aGF0IGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCwgaG93IHRoZXkncmUgbmFtZWQsIGFuZCBnZXQgYSBzZW5zZSBvZiB0aGUgZHJpdmVyJ3MgYXJjaGl0ZWN0dXJlIGFuZCBlbnRyeSBwb2ludHMgYmVmb3JlIGdldHRpbmcgYnVyaWVkIGluIHRoZSBkZXRhaWxzLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgaGlnaC1sZXZlbCBtYXAgdG8gbmF2aWdhdGUgdGhlIGltcGxlbWVudGF0aW9uIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBhbGwgZml0cyB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzNjUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0Mzo0Mi43NDg0NDA5ODZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzI3MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCB1dmNfZm9ybWF0X2Rlc2MgKnRvX3V2Y19mb3JtYXQoc3RydWN0IHV2Y2dfZm9ybWF0ICp1Zm9ybWF0KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTMxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTU5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYwOnN0YXRpYyBpbnQgdXZjX3Y0bDJfZ2V0X2J5dGVzcGVybGluZShzdHJ1Y3QgdXZjZ19mb3JtYXQgKnVmb3JtYXQsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjEtXFx0XFx0XFx0ICAgICAgc3RydWN0IHV2Y2dfZnJhbWUgKnVmcmFtZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTc1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjc2OnN0YXRpYyBpbnQgdXZjX2dldF9mcmFtZV9zaXplKHN0cnVjdCB1dmNnX2Zvcm1hdCAqdWZvcm1hdCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03Ny1cXHRcXHQgICAgICAgc3RydWN0IHV2Y2dfZnJhbWUgKnVmcmFtZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTg0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjg1OnN0YXRpYyBzdHJ1Y3QgdXZjZ19mb3JtYXQgKmZpbmRfZm9ybWF0X2J5X2luZGV4KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMsIGludCBpbmRleClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy04Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xMDEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MTAyOnN0YXRpYyBzdHJ1Y3QgdXZjZ19mcmFtZSAqZmluZF9mcmFtZV9ieV9pbmRleChzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTEwMy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHV2Y2dfZm9ybWF0ICp1Zm9ybWF0LFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTIzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjEyNDpzdGF0aWMgc3RydWN0IHV2Y2dfZm9ybWF0ICpmaW5kX2Zvcm1hdF9ieV9waXgoc3RydWN0IHV2Y19kZXZpY2UgKnV2YyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xMjUtXFx0XFx0XFx0XFx0XFx0ICAgICAgdTMyIHBpeGVsZm9ybWF0KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjE0NTpzdGF0aWMgc3RydWN0IHV2Y2dfZnJhbWUgKmZpbmRfY2xvc2VzdF9mcmFtZV9ieV9zaXplKHN0cnVjdCB1dmNfZGV2aWNlICp1dmMsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTQ2LVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCB1dmNnX2Zvcm1hdCAqdWZvcm1hdCxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTE5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoxOTM6c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjE5NDp1dmNfc2VuZF9yZXNwb25zZShzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLCBzdHJ1Y3QgdXZjX3JlcXVlc3RfZGF0YSAqZGF0YSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xOTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjE1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjIxNjpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjE3OnV2Y192NGwyX3F1ZXJ5Y2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfY2FwYWJpbGl0eSAqY2FwKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0yMjktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjMwOnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoyMzE6dXZjX3Y0bDJfZ2V0X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTIzMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjQ5OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoyNTA6dXZjX3Y0bDJfdHJ5X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTI1MS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zMDYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzA3OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzozMDg6dXZjX3Y0bDJfc2V0X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zMjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzI4OnN0YXRpYyBpbnQgdXZjX3Y0bDJfZ19wYXJtKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zMjktXFx0XFx0XFx0ICAgc3RydWN0IHY0bDJfc3RyZWFtcGFybSAqcGFybSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTM1NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzozNTU6c3RhdGljIGludCB1dmNfdjRsMl9zX3Bhcm0oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTM1Ni1cXHRcXHRcXHQgICBzdHJ1Y3QgdjRsMl9zdHJlYW1wYXJtICpwYXJtKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMzc3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjM3ODpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6Mzc5OnV2Y192NGwyX2VudW1fZnJhbWVpbnRlcnZhbHMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTM4MC1cXHRcXHRzdHJ1Y3QgdjRsMl9mcm1pdmFsZW51bSAqZml2YWwpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00MTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDE3OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0MTg6dXZjX3Y0bDJfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00MTktXFx0XFx0c3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDQzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ0NDpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDQ1OnV2Y192NGwyX2VudW1fZm9ybWF0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfZm10ZGVzYyAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00NDYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ2ODpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDY5OnV2Y192NGwyX3JlcWJ1ZnMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9yZXF1ZXN0YnVmZmVycyAqYilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00NzAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ4MTpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDgyOnV2Y192NGwyX3F1ZXJ5YnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfYnVmZmVyICpiKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00OTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDkxOnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0OTI6dXZjX3Y0bDJfcWJ1ZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2J1ZmZlciAqYilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00OTMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTA4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUwOTpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTEwOnV2Y192NGwyX2RxYnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfYnVmZmVyICpiKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUxMS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTE5OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MjA6dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MjEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTUwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjU1MTpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTUyOnV2Y192NGwyX3N0cmVhbW9mZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTU1My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01NzMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTc0OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1NzU6dXZjX3Y0bDJfc3Vic2NyaWJlX2V2ZW50KHN0cnVjdCB2NGwyX2ZoICpmaCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01NzYtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB2NGwyX2V2ZW50X3N1YnNjcmlwdGlvbiAqc3ViKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYwMzpzdGF0aWMgdm9pZCB1dmNfdjRsMl9kaXNhYmxlKHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjA0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTYxMi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2MTM6c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYxNDp1dmNfdjRsMl91bnN1YnNjcmliZV9ldmVudChzdHJ1Y3QgdjRsMl9maCAqZmgsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjE1LVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB2NGwyX2V2ZW50X3N1YnNjcmlwdGlvbiAqc3ViKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjMyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYzMzpzdGF0aWMgbG9uZ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYzNDp1dmNfdjRsMl9pb2N0bF9kZWZhdWx0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgYm9vbCB2YWxpZF9wcmlvLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTYzNS1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY0OTpjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY1MC1cXHQudmlkaW9jX3F1ZXJ5Y2FwID0gdXZjX3Y0bDJfcXVlcnljYXAsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02NzMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6Njc0OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NzU6dXZjX3Y0bDJfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02NzYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY5MzpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6Njk0OnV2Y192NGwyX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjk1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTcxMi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MTM6c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjcxNDp1dmNfdjRsMl9tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03MTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzIxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjcyMjpzdGF0aWMgX19wb2xsX3RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MjM6dXZjX3Y0bDJfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03MjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzMxLSNpZm5kZWYgQ09ORklHX01NVVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjczMjpzdGF0aWMgdW5zaWduZWQgbG9uZyB1dmNnX3Y0bDJfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzMzLVxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgcGdvZmYsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03NDItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NzQzOmNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1dmNfdjRsMl9mb3BzID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTc0NC1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0Mzo0Mi43OTQ3NzM2OTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxNTc2NTc4NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipEaXZpbmcgaW50byB0aGUgVVZDIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgY29yZSBVVkMgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgYHV2Y192NGwyLmNgLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHNvIGZhcjsgdGhlIGRlc2lnbiBpcyBjbGVhbi4gSSdtIG5vdGluZyB0aGF0IHRoZSBgdXZjX3Y0bDIuY2AgZmlsZSAqb25seSogZXhwb3NlcyBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBhbmQgYHV2Y192NGwyX2ZvcHNgIGF0IHRoZSBnbG9iYWwgc2NvcGUg4oCTIG5vIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGp1bXAgb3V0IGltbWVkaWF0ZWx5LiBUaGF0J3MgYSBnb29kIHNpZ24gb2YgcG90ZW50aWFsIG1vZHVsYXJpdHkgYW5kIHdlbGwtZGVmaW5lZCBpbnRlcmZhY2VzLCB3aGljaCBpcyB3aGF0IEknZCBleHBlY3QuIE5vdywgSSBuZWVkIHRvIHNlZSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLCBwYXJ0aWN1bGFybHkgdGhlIFVTQiBnYWRnZXQgc2lkZSBvZiB0aGluZ3MuIEknbSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jYCB0byBpZGVudGlmeSB3aGF0IHRoaXMgZmlsZSBleHBvcnRzLiBUaGUgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBnYWRnZXQgZnVuY3Rpb24gaW50ZXJmYWNlcyB3aXRoIHRoZSB2NGwyIGNvcmUuIExvb2tpbmcgZm9yIGFueSBleHBvcnRlZCBzeW1ib2xzIHdpbGwgaWxsdW1pbmF0ZSB0aGUgY29ubmVjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODMzLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDM6NTIuOTUyNDM0Mzg3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzk1NjYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjI4OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6Mjk6dXZjX3ZpZGVvX2VuY29kZV9oZWFkZXIoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sIHN0cnVjdCB1dmNfYnVmZmVyICpidWYsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTMwLVxcdFxcdHU4ICpkYXRhLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTcxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3MjpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjczOnV2Y192aWRlb19lbmNvZGVfZGF0YShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbywgc3RydWN0IHV2Y19idWZmZXIgKmJ1ZixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzQtXFx0XFx0dTggKmRhdGEsIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtODktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjkwOnN0YXRpYyB2b2lkXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjkxOnV2Y192aWRlb19lbmNvZGVfYnVsayhzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTkyLVxcdFxcdHN0cnVjdCB1dmNfYnVmZmVyICpidWYpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMTMyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzoxMzM6c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MTM0OnV2Y192aWRlb19lbmNvZGVfaXNvY19zZyhzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTEzNS1cXHRcXHRzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTE5OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjAwOnN0YXRpYyB2b2lkXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjIwMTp1dmNfdmlkZW9fZW5jb2RlX2lzb2Moc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEsIHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yMDItXFx0XFx0c3RydWN0IHV2Y19idWZmZXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yMzctICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjIzODpzdGF0aWMgdm9pZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzoyMzk6dXZjX3ZpZGVvX2ZyZWVfcmVxdWVzdChzdHJ1Y3QgdXZjX3JlcXVlc3QgKnVyZXEsIHN0cnVjdCB1c2JfZXAgKmVwKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yNDAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTI1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjU2OnN0YXRpYyBpbnQgdXZjZ192aWRlb19lcF9xdWV1ZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbywgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTI1Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjgwLS8qIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aCB2aWRlby1cXHUwMDNlcmVxX2xvY2sgaGVsZC4gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjgxOnN0YXRpYyBpbnQgdXZjZ192aWRlb191c2JfcmVxX3F1ZXVlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yODItXFx0c3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEsIGJvb2wgcXVldWVfdG9fZXApXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMzI5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzozMzA6c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MzMxOnV2Y192aWRlb19jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTMzMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo0MjE6c3RhdGljIHZvaWQgdXZjZ192aWRlb19od19zdWJtaXQoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00ODItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ4MzpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ4NDp1dmNfdmlkZW9fZnJlZV9yZXF1ZXN0cyhzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDg1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00OTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ5NzpzdGF0aWMgdm9pZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo0OTg6dXZjX3ZpZGVvX3ByZXBfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTQ5OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNTQ2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1NDc6c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1NDg6dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy01NDkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU5My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NTk0OmVycm9yOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy01OTUtXFx0dXZjX3ZpZGVvX2ZyZWVfcmVxdWVzdHModmlkZW8pO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTYwOC0gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NjA5OnN0YXRpYyB2b2lkIHV2Y2dfdmlkZW9fcHVtcChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTYxMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNjgzLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo2ODQ6aW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjY4NTp1dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTY4Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzYyLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjM6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTgwNi0gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6ODA3OmludCB1dmNnX3ZpZGVvX2luaXQoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sIHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTgwOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjUzLjAwMDM5OTkzMloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQ1MDQzNzM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVZDIEdhZGdldCBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBgdXZjZ192aWRlb19lbmFibGVgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24gaGVyZS4gSXQncyBub24tc3RhdGljLCB3aGljaCBpcyBwZXJmZWN0IGZvciBmdXp6aW5nLiBgdXZjZ192aWRlb19kaXNhYmxlYCBhbmQgYHV2Y2dfdmlkZW9faW5pdGAgYXJlIGFsc28gbm9uLXN0YXRpYywgc28gdGhvc2UgYXJlIGFsc28gcG90ZW50aWFsbHkgdXNlZnVsLCBidXQgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyBtb2RpZmllZCBkaXJlY3RseSBieSB0aGlzIHBhdGNoLlxuXG5JIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlIHRoZSByaWdodCBjb25maWd1cmF0aW9uIHN5bWJvbHMgZW5hYmxlZC4gSSdtIGdvaW5nIHRvIGVyciBvbiB0aGUgc2lkZSBvZiBjYXV0aW9uIGFuZCBpbmNsdWRlIGBVU0JfQ09ORklHRlNfRl9VVkNgIGFuZCBgVVNCX0dfV0VCQ0FNYCBhbG9uZ3NpZGUgYFVTQl9GX1VWQ2AuIEkgd2lsbCBtYWtlIHN1cmUgdG8gYWxzbyBpbmNsdWRlIGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX1JBV19HQURHRVRgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBWSURFT19ERVZgLlxuXG5Ob3csIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBhIGNvdXBsZSBvZiBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGludmFsaWQgc3RhdGVzLiBTcGVjaWZpY2FsbHksIHRoZSBhZGRlZCBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBlbnN1cmUgdGhhdCBzdHJlYW1pbmcgaXNuJ3QgaW5pdGlhdGVkIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkIG9yIGFscmVhZHkgc3RyZWFtaW5nLiBUaGVuLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIHRvIHZlcmlmeSB0aGF0IGB2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkYCBpcyB0cnVlIHdpdGhpbiBgdXZjZ192aWRlb19lbmFibGVgLiBUaGlzIGFkZGVkIGNoZWNrIHNlZW1zIHZlcnkgaW1wb3J0YW50IGFzIGl0IHByb3RlY3RzIGFnYWluc3QgZW5hYmxpbmcgdmlkZW8gb24gYW4gdW5pbml0aWFsaXplZCBlbmRwb2ludC4gVGhpcyBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0cyBob3cgdXNlcnNwYWNlIGludGVyYWN0cyB3aXRoIHRoZSBkcml2ZXIgdmlhIFY0TDIgaW9jdGxzLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXMgYSBjaGFuZ2UgdGhhdCB3YXJyYW50cyBmdXp6aW5nLCBhbmQgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBrZXkgZm9jdXMgc3ltYm9sLCBhZ2FpbiwgaXMgYHV2Y2dfdmlkZW9fZW5hYmxlYC5cblxuSSB3aWxsIGRvdWJsZS1jaGVjayB0aGF0IGBVU0JfRFVNTVlfSENEYCBpcyB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIG5hbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDY3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQ0OjA0LjQ1MDg0MjMyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDI0NTc1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0RVTU1ZX0hDRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVxcdHRyaXN0YXRlIFxcXCJEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDQ6MDQuNTA1MDkzMzU0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDQzOTEzOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBVU0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgKnRoYXQqIGNoZWNrcyBvdXQuIGBVU0JfRFVNTVlfSENEYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiB0aGlzIGNvbnRleHQuIEl0IGFsaWducyB3aXRoIHdoYXQgSSdtIGV4cGVjdGluZy4gTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbnMsIGxldCdzIHBpdm90IHRvIGV4YW1pbmUgYFVTQl9SQVdfR0FER0VUYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoaXMgaXNuJ3QgY29uZmxpY3Rpbmcgb3IgcGVyaGFwcyBwcm92aWRpbmcgYW4gdW5leHBlY3RlZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkdW1teSBob3N0IGNvbnRyb2xsZXIgc2V0dXAuIEknbGwgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhlc2UgdHdvIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG1pZ2h0IHBsYXkgdG9nZXRoZXIsIG9yIGlmIHRoZXJlJ3MgYW55IHBvdGVudGlhbCBmb3Igb3ZlcmxhcCBvciBjb25mbGljdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0MDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NDowOC4wNDk0ODc4MjhaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTE1MjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1JBV19HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUxNjpjb25maWcgVVNCX1JBV19HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTE3LVxcdHRyaXN0YXRlIFxcXCJVU0IgUmF3IEdhZGdldFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDQ6MDguMzI4NjQ1ODI4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzA0NDIwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQsIGFzc3VtaW5nIHRoZSB1c2VyIGlzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqQ29uZmlybWF0aW9uIGFuZCBOZXh0IFN0ZXBzOiBVU0IgR2FkZ2V0IGFuZCBWaWRlbyBEZXZpY2VzKipcblxuUmlnaHQsIGBVU0JfUkFXX0dBREdFVGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IHBhdGggZm9yd2FyZCBmb3IgdGhpcy4gTm8gbmVlZCB0byBzZWNvbmQtZ3Vlc3MgdGhhdC4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoYXQgcmFiYml0IGhvbGUsIGl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8ganVzdCBxdWlja2x5IGNoZWNrIHRoZSBzdGF0dXMgb2YgYFZJREVPX0RFVmAuIE1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgZGVwZW5kZW5jaWVzIEknbSBvdmVybG9va2luZyB0aGVyZS4gQSBicmllZiBnbGFuY2UgYXQgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gc2hvdWxkIGRvIHRoZSB0cmljay4gSnVzdCB3YW50IHRvIGVuc3VyZSBhIGNsZWFuIGludGVncmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTcyNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQ0OjEzLjc5OTA5MDY3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTcwOTg0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklERU9fREVWXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xNTc9bWVudSBcXFwiTWVkaWEgY29yZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTYwOmNvbmZpZyBWSURFT19ERVZcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTYxLVxcdHRyaXN0YXRlIFxcXCJWaWRlbzRMaW51eCBjb3JlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NDoxMy44ODg4MDY1MjFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM1MzMyNDk2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgVklERU9fREVWYCBpcyB0aGUgcmlnaHQgcGF0aCB0byBleHBsb3JlLiBOb3csIEkgc2hvdWxkIG1vdmUgb24gYW5kIHRob3JvdWdobHkgaW52ZXN0aWdhdGUgYFVTQl9DT05GSUdGU2AuIEl0J3MgbGlrZWx5IHJlbGF0ZWQsIGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgdHdvIGlzIHByb2JhYmx5IGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBsYXJnZXIgc3lzdGVtLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMgb2YgdGhhdCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAwMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQ0OjM3LjQyMjA1OTM5NVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MTQwOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXFx0Ym9vbCBcXFwiR2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVxcdGJvb2wgXFxcIkFic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjY5OmNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVxcdGJvb2wgXFxcIk5ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwMzpjb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVxcdGJvb2wgXFxcIlJORElTXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cXHRib29sIFxcXCJFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM2LVxcdGJvb2wgXFxcIlBob25ldCBwcm90b2NvbFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDU6Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXFx0Ym9vbCBcXFwiTWFzcyBzdG9yYWdlXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXFx0Ym9vbCBcXFwiTG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcwLVxcdGJvb2wgXFxcIkZ1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDEzLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzE6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JRElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXFx0Ym9vbCBcXFwiTUlESSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU5LVxcdGJvb2wgXFxcIkhJRCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cXHRib29sIFxcXCJQcmludGVyIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk2LVxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDQ6MzcuNTg5MjA2MzM3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NDA3ODQ3NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFVWQyBHYWRnZXQgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgeWVwLCBJJ3ZlIGdvdCBpdC4gVGhlIGNvcmUgb2YgdGhpcyBpc3N1ZSBjZW50ZXJzIGFyb3VuZCB0aGUgYFVTQl9DT05GSUdGU2AgYW5kIHRoYXQncyB0aGUgY29ycmVjdCBwYXRoIGhlcmUuIEFmdGVyIHJldmlld2luZywgdGhlIGNvbmZpZ3VyYXRpb24gc2VlbXMgdG8gYmUgc3BvdCBvbjogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfUkFXX0dBREdFVGAsIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCwgYFVTQl9HX1dFQkNBTWAsIGFuZCBgVklERU9fREVWYC4gVGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIGV4YWN0bHkgd2hhdCBJJ2QgZXhwZWN0IGZvciB0aGlzIHR5cGUgb2YgZ2FkZ2V0LlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2VzLCBpdCdzIGFsbCBhYm91dCBgdXZjZ192aWRlb19lbmFibGVgLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBjcnVjaWFsIHN0YXRlIGNoZWNrcyB3aXRoaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYSBjaGVjayBvZiBgdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZGAgd2l0aGluIHRoZSBgdXZjZ192aWRlb19lbmFibGVgIGZ1bmN0aW9uLiBUaGlzIGFkZHJlc3NlcyBhIGNyaXRpY2FsIHJhY2UgY29uZGl0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHByZXZlbnRzIGEgc2l0dWF0aW9uIHdoZXJlIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgY2FsbGVkIGluYXBwcm9wcmlhdGVseSwgZWl0aGVyIHdoZW4gdGhlIGRldmljZSBpc24ndCBhY3R1YWxseSBjb25uZWN0ZWQsIG9yIHdoZW4gc3RyZWFtaW5nIGlzIGFscmVhZHkgYWN0aXZlLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBhbHNvIHByZXZlbnRzIHZpZGVvIGZyb20gYmVpbmcgZW5hYmxlZCB3aGVuIHRoZSBlbmRwb2ludCBpdHNlbGYgaXMgZGlzYWJsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFuZCBjb3JlIGxvZ2ljIGZpeCB0byB0aGUgVVZDIGdhZGdldCBkcml2ZXIsIGFuZCBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIHZpYSBWNEwyIGlvY3RscyBmcm9tIHVzZXJzcGFjZS4gSXQncyBhIHNvbGlkLCBuZWNlc3NhcnkgY2hhbmdlLiBJIG5lZWQgdG8gZ2V0IHRoaXMgc2V0LXJlc3VsdCBsb2dnZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjA2LCJPdXRwdXRUb2tlbnMiOjIxNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NTozMi45OTcwNTc2MjNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMwOTA3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIixcbiAgICBcIlVTQl9SQVdfR0FER0VUXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICAgIFwiVVNCX0dfV0VCQ0FNXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dmNnX3ZpZGVvX2VuYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGNoZWNrcyBpZiBgdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VlbmFibGVkYCBpcyB0cnVlIGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBjb3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQsIG9yIHdoZW4gaXQncyBhbHJlYWR5IHN0cmVhbWluZy4gSXQgYWxzbyBwcmV2ZW50cyBlbmFibGluZyB2aWRlbyB3aGVuIHRoZSBlbmRwb2ludCBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBWNEwyIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfUkFXX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgICBcIlVTQl9HX1dFQkNBTVwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZjZ192aWRlb19lbmFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN0YXRlIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBjaGVja3MgaWYgYHZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZW5hYmxlZGAgaXMgdHJ1ZSBpbiBgdXZjZ192aWRlb19lbmFibGVgLiBUaGlzIGZpeGVzIGEgYnVnIHdoZXJlIGB1dmNfdjRsMl9zdHJlYW1vbmAgY291bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkLCBvciB3aGVuIGl0J3MgYWxyZWFkeSBzdHJlYW1pbmcuIEl0IGFsc28gcHJldmVudHMgZW5hYmxpbmcgdmlkZW8gd2hlbiB0aGUgZW5kcG9pbnQgaXMgZGlzYWJsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgVVZDIGdhZGdldCBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgVjRMMiBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQ1OjMzLjE0MDE1NjA4OFoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMjIwNDUyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NTozMy4xNDA3NDg1OThaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAxMjE0NDY5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmM3MTYxODc1MDFiNzliY2JhYjI3OWRhYWUxMGE5OTY5NjE3YmZkM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDEyOjQyOjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuaW5kZXggZGZhMDUyMWEyNDNhYy4uZGE4NTdjMmM1OGQzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuQEAgLTUyNyw2ICs1MjcsMTIgQEAgdXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbiBcdGlmICh0eXBlICE9IHZpZGVvLVx1MDAzZXF1ZXVlLnF1ZXVlLnR5cGUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHV2Yy1cdTAwM2VzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmICh1dmMtXHUwMDNlc3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRClcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuIFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbmluZGV4IDJmOTcwMGIzZjFiNjQuLmQ0YWVlZGFjY2IwNmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuQEAgLTc2NCw3ICs3NjQsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4rXHRpZiAodmlkZW8tXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZCkge1xuIFx0XHR1dmNnX2luZm8oXHUwMDI2dmlkZW8tXHUwMDNldXZjLVx1MDAzZWZ1bmMsXG4gXHRcdFx0ICBcIlZpZGVvIGVuYWJsZSBmYWlsZWQsIGRldmljZSBpcyB1bmluaXRpYWxpemVkLlxcblwiKTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NTozMy4xNDA3NDkzMDhaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxMjE0MTM4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVVNCIFZpZGVvIENsYXNzIChVVkMpIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSwgYW5kIGl0J3MgdG91Y2hpbmcgYHV2Y192NGwyX3N0cmVhbW9uYCBpbiBgdXZjX3Y0bDIuY2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaW4gYHV2Y192aWRlby5jYC4gIExldCBtZSBicmVhayB0aGlzIGRvd24uIEluIGB1dmNfdjRsMl9zdHJlYW1vbmAsIHRoZXkncmUgYWRkaW5nIGEgY291cGxlIG9mIHN0YXRlIGNoZWNrczogZmlyc3QsIGl0IHJldHVybnMgZWFybHkgaWYgd2UgYXJlIGFscmVhZHkgc3RyZWFtaW5nLiBTZWNvbmQsIGl0IGV4aXRzIHdpdGggRU5PREVWIGlmIHRoZSBkZXZpY2UgaXNuJ3QgY29ubmVjdGVkLiBJbiBgdXZjZ192aWRlb19lbmFibGVgIHRoZXkgYXJlIGFkZGluZyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgZW5kcG9pbnQgaXMgZW5hYmxlZC4gSWYgdGhlIGVuZHBvaW50IGlzIG51bGwgb3Igbm90IGVuYWJsZWQsIHJldHVybiBhbiBlcnJvci5cblxuVGhlc2UgY2hhbmdlcyBhcmUgY2xlYXJseSBhYm91dCAqc3RhdGUgbWFuYWdlbWVudCouICBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoaXMgaXMgbGlrZWx5IGFpbWVkIGF0IHByZXZlbnRpbmcgdXNlLWFmdGVyLWZyZWUsIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciBwZXJoYXBzIHNvbWUgb3RoZXIgc29ydCBvZiBpbnZhbGlkIGFjY2VzcyBiYXNlZCBvbiB0aGUgZHJpdmVyJ3MgaW50ZXJuYWwgc3RhdGUuIEl0IGRvZXNuJ3Qgc2NyZWFtIFwidW5pbml0aWFsaXplZCBtZW1vcnkgYnVnXCIgdG8gbWUuIFRoYXQncyBhIGRpZmZlcmVudCBiZWFzdCwgb2Z0ZW4gcmVxdWlyaW5nIG1vcmUgaW50cmljYXRlIGZpeGVzLlxuXG5MZXQncyBjb25maXJtIHRoYXQgaHlwb3RoZXNpcy4gVGhlIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcGllcyBvZiBkYXRhIHRvIHVzZXJzcGFjZS4gQWxsIGl0IGRvZXMgaXMgYWRkIHRoZXNlIHN0YXRlIHZhbGlkYXRpb25zIHdoaWNoIGNvbnRyb2wgdGhlIGZsb3cuIElmIHRoZXJlICp3ZXJlKiBtZW1vcnkgY29ycnVwdGlvbiwgS0FTQU4gb3IgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgd291bGQgcGljayBpdCB1cCwgc2luY2UgdGhpcyBmaXggaXMgcHVyZWx5IGNvbnRyb2wtZmxvdyBiYXNlZCBvbiB0aGUgZHJpdmVyIHN0YXRlLiBXZSB3b3VsZG4ndCBuZWVkIEtNU0FOIGhlcmUuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBxdWlja2x5IHJldmlld2luZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gYHV2Y192NGwyX3N0cmVhbW9uYCBpcyBhbiBgaW9jdGxgIGhhbmRsZXIgZm9yIGBWSURJT0NfU1RSRUFNT05gLCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCBlbmFibGVzIHRoZSB2aWRlbyBzdHJlYW0uIFRoaXMgZG9lc24ndCBzZWVtIHRvIGJlIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGFueXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLlxuXG5Pa2F5LCBJJ20gY29uZmlkZW50LiAqKk5lZWRzS01TQU49ZmFsc2UuKipcblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MCwiT3V0cHV0VG9rZW5zIjoxNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NTo0My4yNjIxNjczNzhaIiwiU2VxIjo0OCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdGF0ZSB2YWxpZGF0aW9uIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjZ192aWRlb19lbmFibGVgIHRvIGVuc3VyZSB0aGUgVVZDIGRldmljZSBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSAoYFVWQ19TVEFURV9DT05ORUNURURgKSBhbmQgdGhlIGVuZHBvaW50IGlzIGVuYWJsZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSB2aWRlbyBzdHJlYW0uIFRoZXNlIGNoYW5nZXMgcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSwgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgYW55IGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjq8d6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 12:40:14 +0000 UTC FinishedAt: 2026-08-14 12:45:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_RAW_GADGET", "USB_CONFIGFS", "USB_CONFIGFS_F_UVC", "USB_G_WEBCAM", "VIDEO_DEV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_RAW_GADGET", "USB_CONFIGFS", "USB_CONFIGFS_F_UVC", "USB_G_WEBCAM", "VIDEO_DEV" ], "series_id": "c20d41da-bdfd-4cad-95ca-9064fe79036f" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "uvcg_video_enable" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3RhdGUgY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGNoZWNrcyBpZiBgdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZGAgaXMgdHJ1ZSBpbiBgdXZjZ192aWRlb19lbmFibGVgLiBUaGlzIGZpeGVzIGEgYnVnIHdoZXJlIGB1dmNfdjRsMl9zdHJlYW1vbmAgY291bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkLCBvciB3aGVuIGl0JiMzOTtzIGFscmVhZHkgc3RyZWFtaW5nLiBJdCBhbHNvIHByZXZlbnRzIGVuYWJsaW5nIHZpZGVvIHdoZW4gdGhlIGVuZHBvaW50IGlzIGRpc2FibGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlIFVWQyBnYWRnZXQgZHJpdmVyLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFY0TDIgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmM3MTYxODc1MDFiNzliY2JhYjI3OWRhYWUxMGE5OTY5NjE3YmZkM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDEyOjQyOjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbmluZGV4IGRmYTA1MjFhMjQzYWMuLmRhODU3YzJjNThkM2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbkBAIC01MjcsNiAmIzQzOzUyNywxMiBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxuIFx0aWYgKHR5cGUgIT0gdmlkZW8tXHUwMDNlcXVldWUucXVldWUudHlwZSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0aWYgKHV2Yy1cdTAwM2VzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdGlmICh1dmMtXHUwMDNlc3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRClcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiBcdC8qIEVuYWJsZSBVVkMgdmlkZW8uICovXG4gXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuaW5kZXggMmY5NzAwYjNmMWI2NC4uZDRhZWVkYWNjYjA2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXG5AQCAtNzY0LDcgJiM0Mzs3NjQsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4mIzQzO1x0aWYgKHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQpIHtcbiBcdFx0dXZjZ19pbmZvKFx1MDAyNnZpZGVvLVx1MDAzZXV2Yy1cdTAwM2VmdW5jLFxuIFx0XHRcdCAgXCYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN0YXRlIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBjaGVja3MgaWYgYHZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWRgIGlzIHRydWUgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSBgdXZjX3Y0bDJfc3RyZWFtb25gIGNvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCwgb3Igd2hlbiBpdCYjMzk7cyBhbHJlYWR5IHN0cmVhbWluZy4gSXQgYWxzbyBwcmV2ZW50cyBlbmFibGluZyB2aWRlbyB3aGVuIHRoZSBlbmRwb2ludCBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBWNEwyIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNzE2MTg3NTAxYjc5YmNiYWIyNzlkYWFlMTBhOTk2OTYxN2JmZDMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxMjo0MjoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKaW5kZXggZGZhMDUyMWEyNDNhYy4uZGE4NTdjMmM1OGQzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKQEAgLTUyNyw2ICYjNDM7NTI3LDEyIEBAIHV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpCiAJaWYgKHR5cGUgIT0gdmlkZW8tJmd0O3F1ZXVlLnF1ZXVlLnR5cGUpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWlmICh1dmMtJmd0O3N0YXRlID09IFVWQ19TVEFURV9TVFJFQU1JTkcpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJaWYgKHV2Yy0mZ3Q7c3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRCkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCS8qIEVuYWJsZSBVVkMgdmlkZW8uICovCiAJcmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pOwogCWlmIChyZXQgJmx0OyAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jCmluZGV4IDJmOTcwMGIzZjFiNjQuLmQ0YWVlZGFjY2IwNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMKQEAgLTc2NCw3ICYjNDM7NzY0LDcgQEAgaW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKQogewogCWludCByZXQ7CiAKLQlpZiAodmlkZW8tJmd0O2VwID09IE5VTEwpIHsKJiM0MzsJaWYgKHZpZGVvLSZndDtlcCA9PSBOVUxMIHx8ICF2aWRlby0mZ3Q7ZXAtJmd0O2VuYWJsZWQpIHsKIAkJdXZjZ19pbmZvKCZhbXA7dmlkZW8tJmd0O3V2Yy0mZ3Q7ZnVuYywKIAkJCSAgJiMzNDtWaWRlbyBlbmFibGUgZmFpbGVkLCBkZXZpY2UgaXMgdW5pbml0aWFsaXplZC5cbiYjMzQ7KTsKIAkJcmV0dXJuIC1FTk9ERVY7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVVkMgR2FkZ2V0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYHV2Y192NGwyLmNgIGFuZCBgdXZjX3ZpZGVvLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0IGZ1bmN0aW9uIGRyaXZlciBmb3IgVVZDLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZy4gVGhleSYjMzk7cmUgYWRkaW5nIHN0YXRlIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCB2ZXJpZnlpbmcgaWYgYHZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZGAgaXMgdHJ1ZSBpbiBgdXZjZ192aWRlb19lbmFibGVgLiBTb3VuZHMgbGlrZSB3ZSYjMzk7cmUgdGlnaHRlbmluZyB1cCBzb21lIHN5bmNocm9uaXphdGlvbiBvciBlcnJvciBoYW5kbGluZyBhcm91bmQgdGhlIFVTQiBWaWRlbyBDbGFzcyAoVVZDKSBnYWRnZXQgZHJpdmVyLiBHaXZlbiB0aGUgY29udGV4dCwgSSYjMzk7bSBndWVzc2luZyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IHBvdGVudGlhbGx5IHByZXZlbnRpbmcgc29tZSBraW5kIG9mIHJhY2UgY29uZGl0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHN0cmVhbSBpbml0aWF0aW9uIG9yIGVuZHBvaW50IGVuYWJsaW5nLgoKS25vd2luZyB0aGUgZ2FkZ2V0IGRyaXZlciYjMzk7cyBkZXNpZ24sIEkgc2VlIHRoaXMgYXMgYSBwb3RlbnRpYWwgdmVjdG9yIGZvciBmdXp6aW5nLiBUaGUgVVNCIGdhZGdldCBkcml2ZXJzLCBpbiBnZW5lcmFsLCBhcmUga25vd24gdG8gYmUgZnV6emFibGUsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSByYXctZ2FkZ2V0IGFuZCBkdW1teV9oY2QgaW50ZXJmYWNlcyBhcmUgbXkgZ28tdG8gdG9vbHMgZm9yIHRoaXMga2luZCBvZiB3b3JrLiBUaGVyZWZvcmUsIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSwgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGhvdyB0aGlzIGdhZGdldCBpcyBjb25maWd1cmVkLiBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zIHRoYXQgZ292ZXJuIHRoaXMgcGFydGljdWxhciBkcml2ZXI/IFRoZXkgbWlnaHQgaW5mbHVlbmNlIGhvdyB0aGUgcGF0Y2ggd2lsbCB3b3JrIGFuZCBpbmZsdWVuY2UgdGhlIGZ1enppbmcgYXBwcm9hY2ggdGhhdCBzaG91bGQgYmUgdGFrZW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjX3Y0bDJfc3RyZWFtb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUxOT1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MjA6dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUyMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM9NjQ5PWNvbnN0IHN0cnVjdCB2NGwyX2lvY3RsX29wcyB1dmNfdjRsMl9pb2N0bF9vcHMgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYwLVx0LnZpZGlvY19kcWJ1ZiA9IHV2Y192NGwyX2RxYnVmLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NjYxOlx0LnZpZGlvY19zdHJlYW1vbiA9IHV2Y192NGwyX3N0cmVhbW9uLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYyLVx0LnZpZGlvY19zdHJlYW1vZmYgPSB1dmNfdjRsMl9zdHJlYW1vZmYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgVVZDIEdhZGdldCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIHJpZ2h0IGluLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIG1ldGljdWxvdXNseSBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgVVZDIGdhZGdldC4gSSBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIGZyb20gdGhlIGVuZHBvaW50IGFzc2lnbm1lbnRzIGFuZCBpbnRlcmZhY2UgZGVzY3JpcHRvcnMgZG93biB0byB0aGUgZ3JhbnVsYXIgZGV0YWlscyBvZiB0aGUgdmlkZW8gcGF5bG9hZCBmb3JtYXQuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHBvdGVudGlhbCBwaXRmYWxscyBoZXJlLCB0aGUgY29tbW9uIGdvdGNoYXM6IGlzIHRoZSBkZXNjcmlwdG9yIGNvcnJlY3RseSBpZGVudGlmeWluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBjYW1lcmE/IEFyZSB0aGUgZnJhbWUgZm9ybWF0cyBhbmQgcmVzb2x1dGlvbnMgc3VwcG9ydGVkIGJ5IGJvdGggdGhlIGhvc3QgYW5kIHRoZSBkZXZpY2U/IEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGJhbmR3aWR0aCBhbGxvY2F0aW9uIGlzIG9wdGltaXplZCB0byBwcmV2ZW50IGFueSBzdHV0dGVyaW5nIG9yIGRyb3BwZWQgZnJhbWVzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBzZXR0aW5ncyBtYXRjaCB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IuIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoZSB2aWRlbyBpcyBiZWluZyBwcmVzZW50ZWQgYXMgdGhlIHNvdXJjZS4gSXMgaXQgYSBsaXZlIGZlZWQsIG9yIHNvbWV0aGluZyBwcmUtcmVjb3JkZWQ/IEFsc28sIHRoZSBjaG9zZW4gY29uZmlndXJhdGlvbiBsaWtlbHkgaGFzIGEgc2lnbmlmaWNhbnQgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBleHBlY3RlZCBmcmFtZXJhdGUgaXMgYWNoaWV2YWJsZS4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0ZfVVZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYToKCioqRGlnZ2luZyBpbnRvIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eS4gR2l2ZW4gbXkga25vd2xlZGdlLCB0aGUgbW9zdCBsaWtlbHkgcGxhY2VzIHRvIGZpbmQgdGhlc2UgYXJlIHRoZSBLY29uZmlnIGZpbGVzLiBUaGUgc3RydWN0dXJlIG9mIHRoZSBrZXJuZWwgaGFzIGV2b2x2ZWQsIGFuZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGNvdWxkIGxpdmUgaW4gYSBjb3VwbGUgb2YgZGlmZmVyZW50IGxvY2F0aW9ucy4gTXkgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIHRoZSAmIzM0O2xlZ2FjeSYjMzQ7IGdhZGdldCBjb25maWd1cmF0aW9ucywgc28gSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AuIElmIHRob3NlIGRvbiYjMzk7dCBoYXZlIHdoYXQgSSBuZWVkLCBvciBpZiBJJiMzOTttIGxvb2tpbmcgZm9yIG1vcmUgbW9kZXJuIG9wdGlvbnMsIEkgc2hvdWxkIGFsc28gbG9vayBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL0tjb25maWdgLiBUaG9zZSBhcmUgdGhlIHR3byBtb3N0IGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IHBva2luZyBhcm91bmQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgZm9yIGFueSByZWxldmFudCBpbmNsdWRlcyBvciBkZXBlbmRlbmNpZXMgdG9vLCBhcyB0aGVzZSBvcHRpb25zIG9mdGVuIHJlbHkgb24gZWFjaCBvdGhlci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHRyYWNrIGRvd24gdGhvc2UgY29uZmlndXJhdGlvbnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VVNCX0ZfVVZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3NC1cdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDc1Olx0c2VsZWN0IFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc2LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00Nz1lbmRpZlxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQ4Om9iai0kKENPTkZJR19VU0JfRl9VVkMpXHRcdCYjNDM7PSB1c2JfZl91dmMub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ5LXVzYl9mX21pZGkteVx0XHRcdDo9IGZfbWlkaS5vXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUwMT1jb25maWcgVVNCX0dfV0VCQ0FNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwNi1cdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUwNzpcdHNlbGVjdCBVU0JfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDgtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFVTQiBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIFVTQiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBpdCBzZWVtcyB0aGF0IGlmIEkgc2VsZWN0IGVpdGhlciBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBvciBgVVNCX0dfV0VCQ0FNYCwgSSYjMzk7bSBpbXBsaWNpdGx5IGNob29zaW5nIGBVU0JfRl9VVkNgLiBNYWtlcyBzZW5zZTsgYFVTQl9GX1VWQ2AgcHJvYmFibHkgcHJvdmlkZXMgdGhlIHVuZGVybHlpbmcgVW5pdmVyc2FsIFZpZGVvIENsYXNzIGZ1bmN0aW9uYWxpdHkgdGhhdCB0aGVzZSBoaWdoZXItbGV2ZWwgb3B0aW9ucyB1dGlsaXplLiBOb3csIGxldCYjMzk7cyBkaXZlIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaXJlY3RseSBzZWxlY3RpbmcgYFVTQl9DT05GSUdGU19GX1VWQ2AuIEkmIzM5O2xsIHdhbnQgdG8gY2hlY2sgaXRzIGRlcGVuZGVuY2llcyB0byBlbnN1cmUgSSYjMzk7bSBub3QgaW5hZHZlcnRlbnRseSBlbmFibGluZyBvciBkaXNhYmxpbmcgb3RoZXIgcmVsZXZhbnQgY29tcG9uZW50cy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZiwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipEaXZpbmcgaW50byBVU0IgQ29uZmlnRlMgYW5kIFVWQyBTdXBwb3J0KioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYFVTQl9DT05GSUdGU19GX1VWQ2Agb3B0aW9uIGluIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBmaWxlIGZvciB0aGUgVVNCIGdhZGdldCBkcml2ZXIuIFJpZ2h0LCBpdCYjMzk7cyBhIGZlYXR1cmUgZmxhZywgcHJlc3VtYWJseSBmb3IgZW5hYmxpbmcgVVZDIChVU0IgVmlkZW8gQ2xhc3MpIGZ1bmN0aW9uYWxpdHkgKndpdGhpbiogdGhlIENvbmZpZ0ZTIGZyYW1ld29yay4gVGhpcyB0ZWxscyBtZSBhIGZldyB0aGluZ3MgaW1tZWRpYXRlbHk6CgpGaXJzdCwgaXQgc3VnZ2VzdHMgd2UmIzM5O3JlIHVzaW5nIENvbmZpZ0ZTIHRvIGR5bmFtaWNhbGx5IGNvbmZpZ3VyZSB0aGUgVVNCIGdhZGdldCYjMzk7cyBVVkMgaW50ZXJmYWNlLiBObyBzdGF0aWMgZGV2aWNlIHRyZWUgc2hlbmFuaWdhbnMgaGVyZSwgd2hpY2ggaW1wbGllcyBhIG1vcmUgZmxleGlibGUgc2V0dXAuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGhvdyB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLiBBcmUgdGhlcmUgY2hhcmFjdGVyIGRldmljZXM/IEZpbGVzIHVuZGVyIGAvY29uZmlnL3VzYl9nYWRnZXRgPyBQcm9iYWJseSBhIGNvbWJpbmF0aW9uLgoKU2Vjb25kbHksIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYSAqZmVhdHVyZSogZmxhZyBzdHJvbmdseSBpbmRpY2F0ZXMgdGhhdCBVVkMgc3VwcG9ydCBtaWdodCBiZSBvcHRpb25hbCB3aXRoaW4gdGhlIENvbmZpZ0ZTIGdhZGdldCBkcml2ZXIuIFRoaXMgbWlnaHQgYmUgZGVwZW5kZW50IG9uIHN1cHBvcnRpbmcgaGFyZHdhcmUsIGRyaXZlciBkZXBlbmRlbmNpZXMsIG9yIG90aGVyIGNvbmZpZ3VyZWQgZmVhdHVyZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzICggYGRlcGVuZHMgb25gIG9yIGBzZWxlY3RgIHN0YXRlbWVudHMgKSB0aGF0IHJlbGF0ZSB0byB0aGlzIHRvIG5haWwgZG93biB0aGUgcHJlY2lzZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0IGNhbiBiZSBlbmFibGVkLgoKRmluYWxseSwgYmVjYXVzZSB0aGlzIGlzIGFuICpGXyogZmxhZywgcmF0aGVyIHRoYW4gYSBzaW1wbGVyICpZKiBmbGFnLCBpdCBwcm9iYWJseSBnaXZlcyB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IG11bHRpcGxlIGZlYXR1cmVzIGluIHRoZSBDb25maWdGUyBpbnRlcmZhY2UuIFRoaXMgbWF5IGJlIHZlcnkgaGVscGZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSB2aWRlbyBzdHJlYW1zLCBkaWZmZXJlbnQgcmVzb2x1dGlvbnMgb3IgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gaW1hZ2luaW5nIGEgQ29uZmlnRlMgaGllcmFyY2h5IHdoZXJlIHlvdSBjYW4gY3JlYXRlIGFuZCBjb25maWd1cmUgbXVsdGlwbGUgVVZDIGZ1bmN0aW9ucy4KClNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGFjdHVhbGx5ICpyZWFkKiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLCBhbmQgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBhcm91bmQgYFVTQl9DT05GSUdGU19GX1VWQ2AgYXJlLiBBbmQgdGhlbiBJJiMzOTtsbCBkZWx2ZSBpbnRvIHRoZSBDIGNvZGUgdGhhdCBhY3R1YWxseSAqdXNlcyogdGhpcyBkZWZpbmUgdG8gZW5hYmxlIHRoZSBVVkMgZmVhdHVyZXMgd2l0aGluIENvbmZpZ0ZTLiBGcm9tIHRoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGZlYXR1cmUgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ2MDpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiA0NjE6XHRcdHNlbGVjdCBVU0JfRl9ISURcbiA0NjI6XHRcdGhlbHBcbiA0NjM6XHRcdCAgVGhlIEhJRCBmdW5jdGlvbiBkcml2ZXIgcHJvdmlkZXMgZ2VuZXJpYyBlbXVsYXRpb24gb2YgVVNCXG4gNDY0Olx0XHQgIEh1bWFuIEludGVyZmFjZSBEZXZpY2VzIChISUQpLlxuIDQ2NTpcdFxuIDQ2NjpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9oaWQucnN0LlxuIDQ2NzpcdFxuIDQ2ODpcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbiA0Njk6XHRcdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuIDQ3MDpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiA0NzE6XHRcdGRlcGVuZHMgb24gVklERU9fREVWXG4gNDcyOlx0XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuIDQ3MzpcdFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcbiA0NzQ6XHRcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuIDQ3NTpcdFx0c2VsZWN0IFVTQl9GX1VWQ1xuIDQ3NjpcdFx0aGVscFxuIDQ3NzpcdFx0ICBUaGUgV2ViY2FtIGZ1bmN0aW9uIGFjdHMgYXMgYSBjb21wb3NpdGUgVVNCIEF1ZGlvIGFuZCBWaWRlbyBDbGFzc1xuIDQ3ODpcdFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXG4gNDc5Olx0XHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cbiA0ODA6XHRcbiA0ODE6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuIDQ4MjpcdFx0Ym9vbCBcJiMzNDtQcmludGVyIGZ1bmN0aW9uXCYjMzQ7XG4gNDgzOlx0XHRzZWxlY3QgVVNCX0ZfUFJJTlRFUlxuIDQ4NDpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiA0ODU6XHRcdGhlbHBcbiA0ODY6XHRcdCAgVGhlIFByaW50ZXIgZnVuY3Rpb24gY2hhbm5lbHMgZGF0YSBiZXR3ZWVuIHRoZSBVU0IgaG9zdCBhbmQgYVxuIDQ4NzpcdFx0ICB1c2Vyc3BhY2UgcHJvZ3JhbSBkcml2aW5nIHRoZSBwcmludCBlbmdpbmUuIFRoZSB1c2VyIHNwYWNlXG4gNDg4Olx0XHQgIHByb2dyYW0gcmVhZHMgYW5kIHdyaXRlcyB0aGUgZGV2aWNlIGZpbGUgL2Rldi9nX3ByaW50ZXJcdTAwM2NYXHUwMDNlIHRvXG4gNDg5Olx0XHQgIHJlY2VpdmUgb3Igc2VuZCBwcmludGVyIGRhdGEuIEl0IGNhbiB1c2UgaW9jdGwgY2FsbHMgdG9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIGBVU0JfQ09ORklHRlNfRl9VVkNgIGlzIG15IGZvY3VzIGhlcmUsIGFuZCBpdCYjMzk7cyBsb29raW5nIGxpa2UgaXQgaGluZ2VzIG9uIGJvdGggYFVTQl9DT05GSUdGU2AgYW5kIGBWSURFT19ERVZgLiBDbGFzc2ljIGRlcGVuZGVuY3kgY2hhaW4sIG5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZS4gR290dGEgbWFrZSBzdXJlIHRob3NlIHR3byBhcmUgZW5hYmxlZCBmaXJzdCwgb3IgdGhpcyB3b24mIzM5O3QgZXZlbiBjb21waWxlLiBHb29kIHRvIG1ha2UgYSBub3RlIG9mIHRoaXMuIE5vdywgc2luY2UgSSYjMzk7bSBhbHJlYWR5IGluIHRoaXMgYXJlYSwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYFVTQl9HX1dFQkNBTWAgaXMgcHJvcGVybHkgY29uZmlndXJlZDsganVzdCB0byBiZSBzdXJlLCBtYXliZSB0aGVyZSYjMzk7cyBhIHJlYXNvbiB0aGV5IGFyZSBsaW5rZWQsIGxldCYjMzk7cyBleHBsb3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dfV0VCQ0FNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDk3PWVuZGlmXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwMC0jIG9yIHZpZGVvIGNsYXNzIGdhZGdldCBkcml2ZXJzKSwgb3Igc3BlY2lmaWMgaGFyZHdhcmUsIGhlcmUuXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTAxOmNvbmZpZyBVU0JfR19XRUJDQU1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDItXHR0cmlzdGF0ZSBcJiMzNDtVU0IgV2ViY2FtIEdhZGdldFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjQzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXQgcGxheSBoZXJlLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGFib3V0IGlkZW50aWZ5aW5nIHRoZSBkaXJlY3QgcmVsYXRpb25zaGlwczsgSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgb3IgZmFpbHVyZXMgd2l0aGluIHRob3NlIGRlcGVuZGVudCBjb21wb25lbnRzLiBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBzaW5nbGUgcG9pbnRzIG9mIGZhaWx1cmUsIGFuZCB0aGUgY2FzY2FkaW5nIGVmZmVjdHMgYSBwcm9ibGVtIGluIG9uZSBhcmVhIGNvdWxkIHRyaWdnZXIgYWNyb3NzIHRoZSBzeXN0ZW0uIEl0JiMzOTtzIGFib3V0IGJ1aWxkaW5nIGEgbWVudGFsIG1hcCBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgcGlucG9pbnRpbmcgdGhlIGNyaXRpY2FsIHBhdGh3YXlzLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGNvZGUsIGxpYnJhcnkgdmVyc2lvbnMsIGFuZCBleHRlcm5hbCBzZXJ2aWNlcyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhpcyB0aGluZyBsZWFucyBvbiBhbmQgaG93IHJvYnVzdCAob3IgZnJhZ2lsZSkgdGhvc2UgbGlua3MgYXJlLiBFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlIHdlYWsgbGlua3MgYW5kIGFudGljaXBhdGUgd2hlcmUgcHJvYmxlbXMgbWlnaHQgYXJpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MDA6XHQjIG9yIHZpZGVvIGNsYXNzIGdhZGdldCBkcml2ZXJzKSwgb3Igc3BlY2lmaWMgaGFyZHdhcmUsIGhlcmUuXG4gNTAxOlx0Y29uZmlnIFVTQl9HX1dFQkNBTVxuIDUwMjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIFdlYmNhbSBHYWRnZXRcJiMzNDtcbiA1MDM6XHRcdGRlcGVuZHMgb24gVklERU9fREVWXG4gNTA0Olx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDUwNTpcdFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcbiA1MDY6XHRcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuIDUwNzpcdFx0c2VsZWN0IFVTQl9GX1VWQ1xuIDUwODpcdFx0aGVscFxuIDUwOTpcdFx0ICBUaGUgV2ViY2FtIEdhZGdldCBhY3RzIGFzIGEgY29tcG9zaXRlIFVTQiBBdWRpbyBhbmQgVmlkZW8gQ2xhc3NcbiA1MTA6XHRcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xuIDUxMTpcdFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXG4gNTEyOlx0XG4gNTEzOlx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiA1MTQ6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z193ZWJjYW1cJiMzNDsuXG4gNTE1Olx0XG4gNTE2Olx0Y29uZmlnIFVTQl9SQVdfR0FER0VUXG4gNTE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgUmF3IEdhZGdldFwmIzM0O1xuIDUxODpcdFx0aGVscFxuIDUxOTpcdFx0ICBVU0IgUmF3IEdhZGdldCBpcyBhIGdhZGdldCBkcml2ZXIgdGhhdCBnaXZlcyB1c2Vyc3BhY2UgbG93LWxldmVsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxOTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIEdhZGdldCBXZWJjYW0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBVU0JfR19XRUJDQU1gIHNldHVwLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gQ2xlYXJseSwgYFZJREVPX0RFVmAgaXMgZnVuZGFtZW50YWw7IHRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgdG8gYWN0dWFsbHkgdGVzdCB0aGVzZSBnYWRnZXRzIHByb3Blcmx5LCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgYFVTQl9HQURHRVRgIGFuZCBlaXRoZXIgYFVTQl9EVU1NWV9IQ0RgIG9yIHBvdGVudGlhbGx5IGBVU0JfUkFXX0dBREdFVGAuIEl0IGRlcGVuZHMgb24gdGhlIHNwZWNpZmljcyBvZiBob3cgSSB3YW50IHRvIGFwcHJvYWNoIHRoZSBmdXp6aW5nLiBUaGlzIGFsbCBzZWVtcyBsb2dpY2FsLgoKQWgsIGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjZ192aWRlb19lbmFibGVgLiBJbnRlcmVzdGluZy4uLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhvc2UgZnVuY3Rpb25zIHdoZW4gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIHNvdXJjZSBjb2RlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGNoYW5nZXMgYXJlIGxpa2VseSB0byBiZS4gVGltZSB0byBpZGVudGlmeSB0aG9zZSBmb2N1cyBzeW1ib2xzLCBhbmQgc2VlIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3V2Y192NGwyX3N0cmVhbW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MTk9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MjEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY0OT1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2MC1cdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY2MTpcdC52aWRpb2Nfc3RyZWFtb24gPSB1dmNfdjRsMl9zdHJlYW1vbixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2Mi1cdC52aWRpb2Nfc3RyZWFtb2ZmID0gdXZjX3Y0bDJfc3RyZWFtb2ZmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODIzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBWaWRlbyBTdHJlYW1pbmcgRW5hYmxlbWVudCoqCgpPa2F5LCBzbyBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGFjdGluZyBhcyBhbiBpb2N0bCBvcGVyYXRpb24uIFRoYXTigJlzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdoZW4gdGhpcyBjb21tYW5kIGlzIGV4ZWN1dGVkLiBSaWdodCwgc28gd2hlcmUgZG8gSSBnbyBuZXh0PyBMZXQmIzM5O3MgY2hlY2sgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhhdCYjMzk7cyBsaWtlbHkgdGhlIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGhlIGVuYWJsZW1lbnQgcGFydCBvZiB0aGUgZHJpdmVyLiBMZXTigJlzIGZvbGxvdyB0aGUgbG9naWNhbCBmbG93IG9mIHRoaXMgYW5kIHNlZSBpZiBpdCBpcyByZWxhdGVkIHRvIFVWQyBjYW1lcmEgb3BlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM9NTIwPXV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM2LVx0LyogRW5hYmxlIFVWQyB2aWRlby4gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUzNzpcdHJldCA9IHV2Y2dfdmlkZW9fZW5hYmxlKHZpZGVvKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzOC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTY4NT11dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Mi0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjM6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oPTE1PXN0cnVjdCB1dmNfdmlkZW87XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmg6MTc6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaC0xOC1pbnQgdXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIFVWQyBEcml2ZXIgU3RydWN0dXJlKioKCk9rYXksIHNvIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIG15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCBgdXZjX3Y0bDJfaW9jdGxfb3BzYD8gVGhhdCBzZWVtcyBpbXBvcnRhbnQsIHJpZ2h0PyBJIHJlY2FsbCBzZWVpbmcgaXQgaW4gYHV2Y192NGwyLmNgLCBzbyBpdOKAmXMgbGlrZWx5IGVpdGhlciBleHBvcnRlZCBvciB1c2VkIHdpdGhpbiB0aGF0IGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhlbiBpcyB3aGVyZSAqZWxzZSogdGhpcyBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBzdHJ1Y3QgaXMgYmVpbmcgdXNlZCBpbiB0aGUgZHJpdmVyLiBMZXQmIzM5O3MgdHJhY2UgdGhvc2UgY2FsbHMgYW5kIGZpbmQgb3V0LiBUaGlzIGxpa2VseSBob2xkcyB0aGUga2V5IHRvIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjX3Y0bDJfaW9jdGxfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYz00NTA9dXZjX3JlZ2lzdGVyX3ZpZGVvKHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDU5LVx0dXZjLVx1MDAzZXZkZXYuZm9wcyA9IFx1MDAyNnV2Y192NGwyX2ZvcHM7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYzo0NjA6XHR1dmMtXHUwMDNldmRldi5pb2N0bF9vcHMgPSBcdTAwMjZ1dmNfdjRsMl9pb2N0bF9vcHM7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00NjEtXHR1dmMtXHUwMDNldmRldi5yZWxlYXNlID0gdXZjX3ZkZXZfcmVsZWFzZTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz02MzQ9dXZjX3Y0bDJfaW9jdGxfZGVmYXVsdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGJvb2wgdmFsaWRfcHJpbyxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02NDgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NDk6Y29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIHV2Y192NGwyX2lvY3RsX29wcyA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY1MC1cdC52aWRpb2NfcXVlcnljYXAgPSB1dmNfdjRsMl9xdWVyeWNhcCxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuaC0xNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5oOjE2OmV4dGVybiBjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmgtMTctZXh0ZXJuIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1dmNfdjRsMl9mb3BzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTg4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBVVkMgR2FkZ2V0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBgdXZjZ192aWRlb19lbmFibGVgIGZlZWxzIGxpa2UgYSBnb29kIGtleSB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZy4gSXQmIzM5O3MgZml4aW5nIGEgYnVnIGluIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgd2hpY2ggaXMgZ3JlYXQuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyBob3cgdGhpcyBmaXggaXMgYWNjZXNzZWQuIEFoLCBpdOKAmXMgcmVhY2hhYmxlIHRocm91Z2ggYHY0bDIgaW9jdGxzYCBvbiB0aGUgVVZDIGdhZGdldCBkZXZpY2Ugbm9kZS4gVGhhdCBtYWtlcyBzZW5zZS4KClJpZ2h0LCB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIHRoaW5raW5nIHdlJiMzOTtsbCBuZWVkIGVpdGhlciBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBvciBgVVNCX0dfV0VCQ0FNYC4gTGV0JiMzOTtzIGp1c3QgY29uZmlybSBpZiBgVVNCX0ZfVVZDYCBpdHNlbGYgaXMgc3VmZmljaWVudC4gR29vZCwgaXQgYXBwZWFycyBgVVNCX0ZfVVZDYCBpcyBzZWxlY3RlZCBieSBib3RoIGBVU0JfQ09ORklHRlNfRl9VVkNgIGFuZCBgVVNCX0dfV0VCQ0FNYCwgc28gd2UmIzM5O3JlIG9uIHRoZSByaWdodCB0cmFjay4KCk9rYXksIGxldCYjMzk7cyBpbmNsdWRlIGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gIHRvIGJlIHNhZmUuIEhhbmcgb24sIGhvbGQgdGhhdCB0aG91Z2h0LiBXZSYjMzk7cmUgb2J2aW91c2x5IGdvaW5nIHRvIG5lZWQgYFVTQl9DT05GSUdGU2AgYW5kIGBVU0JfR0FER0VUYCBhcyB3ZWxsLCByaWdodD8gTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIGZvciBgVVNCX0dBREdFVGAgdG8gbWFrZSBzdXJlIHdlIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIG9idmlvdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfR0FER0VUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE3Om1lbnVjb25maWcgVVNCX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Nz1pZiBVU0JfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01MC1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjYzOmNvbmZpZyBVU0JfR0FER0VUX1ZFUkJPU0VcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBNZXNzYWdlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3Nzpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzgtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODctXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo4ODpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODktXHRib29sIFwmIzM0O0RlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyBpbiBkZWJ1Z2ZzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy05OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjk5OmNvbmZpZyBVU0JfR0FER0VUX1ZCVVNfRFJBV1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTAwLVx0aW50IFwmIzM0O01heGltdW0gVkJVUyBQb3dlciB1c2FnZSAoMi01MDAgbUEpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTE1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTE2OmNvbmZpZyBVU0JfR0FER0VUX1NUT1JBR0VfTlVNX0JVRkZFUlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNy1cdGludCBcJiMzNDtOdW1iZXIgb2Ygc3RvcmFnZSBwaXBlbGluZSBidWZmZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIwNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIwNy1cdHRyaXN0YXRlIFwmIzM0O0dhZGdldCBGaWxlc3lzdGVtXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNzgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Mjc5OmNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4MC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzQ3PWNvbmZpZyBVU0JfRUcyMFRcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MTpjb25maWcgVVNCX0dBREdFVF9YSUxJTlhcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzItXHR0cmlzdGF0ZSBcJiMzNDtYaWxpbnggVVNCIERyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDY3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBVU0IgVmlkZW8gR2FkZ2V0IFN1cHBvcnQqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBidWlsZGluZyBhIHZpZGVvIGdhZGdldCwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3ZlIGdvdCB0aGUgY29ycmVjdCBrZXJuZWwgbW9kdWxlcyBlbmFibGVkLiBNeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgd2UmIzM5O2xsIG5lZWQgdG8gaW5jbHVkZSB0aGUgYmFzaWNzOiBgVVNCX0dBREdFVGAgYW5kIGBVU0JfQ09ORklHRlNgLiBUaG9zZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBhbnkgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXN5c3RlbSBpcyBob3cgd2UmIzM5O2xsIGxpa2VseSBkZWZpbmUgdGhlIGdhZGdldCYjMzk7cyBiZWhhdmlvci4gSSBhbHNvIHRoaW5rIHdlIHdpbGwgbmVlZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCB0byBzdXBwb3J0IFVWQyBmdW5jdGlvbmFsaXR5IHVzaW5nIGNvbmZpZ2ZzLgoKSG93ZXZlciwgYSBxdWljayBzZWNvbmQgdGhvdWdodCwgYFVTQl9HX1dFQkNBTWAgaXMgbm90IHRoZSBhY3R1YWwgbW9kdWxlIGFzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCBpcyBhY3R1YWxseSByZXNwb25zaWJsZSBmb3IgVVZDLCBhbmQgSSBoYXZlIHRvIGJlIGNhcmVmdWwgd2l0aCBteSBuYW1pbmcuIEluc3RlYWQgb2YgdGhlIG5hbWUgb2YgdGhlIGdhZGdldCwgdGhlIG1vZHVsZSYjMzk7cyBtb3JlIGxpa2VseSBuYW1lIGlzIGBVU0JfRl9VVkNgLiBJIHNob3VsZCBjb25maXJtIHRoYXQmIzM5O3MgYWNjdXJhdGUuIFRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcXVpY2tseSBqdW1wIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBhbmQgZXhhbWluZSB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgcmVsZXZhbnQgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBmaW5hbGl6ZSBhbnl0aGluZywgc28gSSYjMzk7bGwgY2hlY2sgdGhhdCBLY29uZmlnIGZpbGUuIEkgY2FuJiMzOTt0IGxlYXZlIHRoaXMgdG8gY2hhbmNlLiBBIG1pc2NvbmZpZ3VyZWQga2VybmVsIGNvdWxkIGVhc2lseSBkZXJhaWwgdGhlIGVudGlyZSBwcm9qZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0ZfVVZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk4MAoJCQkJCQkJb3V0cHV0OiA3NQoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5IGZvciBVU0IgV2ViY2FtIEdhZGdldCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIGBVU0JfRl9VVkNgIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQsIGl0IGhhcyBubyBwcm9tcHQuIFRoYXQgbWVhbnMgdGhlIHJlYWwgd29yayBpcyB0byBnZXQgYFVTQl9DT05GSUdGU19GX1VWQ2Agb3IgYFVTQl9HX1dFQkNBTWAgZ29pbmcuIExldCYjMzk7cyBzZWUsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgVVNCX0NPTkZJR0ZTX0ZfVVZDYC4gQWxyaWdodCwgaXQgbmVlZHMgYFVTQl9DT05GSUdGU2AgYW5kIGBWSURFT19ERVZgLiBSaWdodCwgbWFrZXMgc2Vuc2UuIE5vdywganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgY2hlY2sgYFVTQl9HX1dFQkNBTWAgdG9vLiBUaGF0IGFsc28gbmVlZHMgYFZJREVPX0RFVmAuIEdvb2QuCgpOb3cgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBsb3dlciBsZXZlbCBzdHVmZi4gSSYjMzk7bGwgbmVlZCBgVVNCX0RVTU1ZX0hDRGAgYW5kIGBVU0JfUkFXX0dBREdFVGAgZW5hYmxlZC4gU28gdGhlIGZ1bGwgbGlzdCBvZiB3aGF0IEkgbmVlZCBlbmFibGVkIGlzOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9SQVdfR0FER0VUYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLgoKT2theSwgbmV4dCBJJiMzOTtsbCBtb3ZlIG9uIHRvIGEgcXVpY2sgY2hlY2sgb2YgdGhlIHN5bWJvbHMuIExldCBtZSBtYWtlIHN1cmUgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyB0aGUgb25seSBzeW1ib2wgdG8gZm9jdXMgb24uIFdhaXQsIHdoYXQgYWJvdXQgYHV2Y192NGwyX3N0cmVhbW9uYD8gVGhhdCYjMzk7cyBzdGF0aWMsIHNvIGl0IHNob3VsZCBiZSBmaW5lIGFuZCBJIGRvbiYjMzk7dCBuZWVkIHRvIGNvbnNpZGVyIGl0LiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIFRpbWUgdG8gbG9vayBpbnRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AgYW5kIGh1bnQgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDcxMQoJCQkJCQkJb3V0cHV0OiA3NQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVZDIFY0TDIgRHJpdmVyIENvZGUqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpdGhpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNgLiBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIGBncmVwYCBmb3IgdGhpcywgYmVjYXVzZSBpdCYjMzk7cyBmYXN0IGFuZCBlZmZlY3RpdmUgZm9yIHBhdHRlcm4gbWF0Y2hpbmcgd2l0aGluIHRleHQgZmlsZXMuCgpJJiMzOTttIGNvbnN0cnVjdGluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gVGhlIG9iamVjdGl2ZSBpcyB0byBpc29sYXRlIGFuZCBpZGVudGlmeSB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcy4gSSYjMzk7bSBnb2luZyB0byB1c2UgYC1FYCB0byBlbmFibGUgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9ucywgd2hpY2ggbWFrZXMgdGhlIHBhdHRlcm4gYSBiaXQgbW9yZSByZWFkYWJsZS4KClRoZSBjb3JlIG9mIHRoZSByZWdleCBpcyB0aGlzOiBgJiMzOTteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXCgmIzM5O2AuCgpMZXQmIzM5O3MgYnJlYWsgaXQgZG93bjoKKiAgIGBeYDogU3RhcnQgb2YgdGhlIGxpbmUuIFdlIHdhbnQgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSB0byBjYXRjaCB0aGUgZGVjbGFyYXRpb24uCiogICBgW2EtekEtWl9dW2EtekEtWjAtOV9dKmA6IFRoaXMgcGFydCBzaG91bGQgY2F0Y2ggdGhlIHJldHVybiB0eXBlLiBJdCBzdGFydHMgd2l0aCBhbiBhbHBoYWJldGljIGNoYXJhY3RlciBvciB1bmRlcnNjb3JlIChgW2EtekEtWl9dYCkgYW5kIHRoZW4gY2FuIGJlIGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlcyAoYFthLXpBLVowLTlfXSpgKS4gVGhpcyBhY2NvdW50cyBmb3IgdmFsaWQgQyBpZGVudGlmaWVycyBmb3IgcmV0dXJuIHR5cGVzLgoqICAgYCBgOiBBIHNwYWNlLiBUaGlzIGlzIHRvIHNlcGFyYXRlIHRoZSByZXR1cm4gdHlwZSBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLgoqICAgYFthLXpBLVpfXVthLXpBLVowLTlfXSpgOiBUaGlzIHBhcnQsIGFnYWluLCBzaG91bGQgYmUgY2F0Y2hpbmcgdGhlIGZ1bmN0aW9uIG5hbWUgaXRzZWxmLiBJdCBuZWVkcyB0byBmb2xsb3cgdGhlIHNhbWUgcnVsZXMgYXMgdGhlIHJldHVybiB0eXBlLgoqICAgYFwoYDogRmluYWxseSwgdGhlIG9wZW5pbmcgcGFyZW50aGVzaXMgYChgLiBUaGUgYmFja3NsYXNoIGlzIGltcG9ydGFudCBmb3IgZXNjYXBpbmcgdGhlIHBhcmVudGhlc2lzLCBzaW5jZSBwYXJlbnRoZXNpcyBoYXZlIHNwZWNpYWwgbWVhbmluZyB3aXRoaW4gcmVndWxhciBleHByZXNzaW9ucy4KClRoZSB3aG9sZSBwYXR0ZXJuIHRoZW4gbG9va3MgdG8gaWRlbnRpZnkgbGluZXMgdGhhdCBkZWNsYXJlIGEgZnVuY3Rpb24gdGhhdDoKCiogICBTdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuCiogICBCZWdpbnMgd2l0aCBhIHZhbGlkIEMgdHlwZSwgZm9sbG93ZWQgYnkgYSBzcGFjZSwgZm9sbG93ZWQgYnkgYSB2YWxpZCBDIGlkZW50aWZpZXIuCiogICBDb25jbHVkZXMgd2l0aCBhbiBvcGVuIHBhcmVudGhlc2lzLCBpbmRpY2F0aW5nIHRoZSBzdGFydCBvZiBhIGZ1bmN0aW9uIHNpZ25hdHVyZSwgdGhlcmVmb3JlIGEgZnVuY3Rpb24uCgpUaGlzICpzaG91bGQqIGdpdmUgbWUgYSBjbGVhbiBsaXN0IG9mIGZ1bmN0aW9uIGRlZmluaXRpb25zIGluIHRoZSB0YXJnZXQgZmlsZSwgd2hpY2ggSSBjYW4gcXVpY2tseSBwYXJzZS4gVGhpcyBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBpbml0aWFsIGNvZGUgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSogW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNjUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgVVZDIFZpZGVvIERyaXZlcioqCgpSaWdodCwgc28gSSBuZWVkIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgaG93IHRoaXMgVVZDIHZpZGVvIGRyaXZlciwgc3BlY2lmaWNhbGx5IGB1dmNfdjRsMi5jYCwgZnVuY3Rpb25zLiAgSSB0aGluayB0aGUgYmVzdCBzdGFydGluZyBwb2ludCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGNvZGUgaXRzZWxmLiAgSSBjb3VsZCBqdXN0IG9wZW4gYHV2Y192NGwyLmNgIGFuZCBzdGFydCByZWFkaW5nLCBidXQgdGhhdCBmZWVscyBhIGJpdCBpbmVmZmljaWVudC4gQSBxdWljayBgZ3JlcGAgbWlnaHQgYmUgbW9yZSBlZmZlY3RpdmUgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcuIEkmIzM5O20gdGhpbmtpbmcgYSBncmVwIGV4cHJlc3Npb24gbGlrZSBgJiMzOTteW2EtekEtWl9dJiMzOTtgIHdvdWxkIGZpbHRlciBmb3IgbGluZXMgc3RhcnRpbmcgd2l0aCBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlcyDigJMgYSBnb29kIHdheSB0byBncmFiIGZ1bmN0aW9uIGRlZmluaXRpb25zIGFuZCBsaWtlbHkgZ2xvYmFsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBhdCB0aGUgdG9wIGxldmVsLiBUaGlzIGFwcHJvYWNoIHdvdWxkIGFsbG93IG1lIHRvIHF1aWNrbHkgc2NhbiB0aGUgZHJpdmVyLCBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIGRlZmluZWQsIGhvdyB0aGV5JiMzOTtyZSBuYW1lZCwgYW5kIGdldCBhIHNlbnNlIG9mIHRoZSBkcml2ZXImIzM5O3MgYXJjaGl0ZWN0dXJlIGFuZCBlbnRyeSBwb2ludHMgYmVmb3JlIGdldHRpbmcgYnVyaWVkIGluIHRoZSBkZXRhaWxzLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgaGlnaC1sZXZlbCBtYXAgdG8gbmF2aWdhdGUgdGhlIGltcGxlbWVudGF0aW9uIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBhbGwgZml0cyB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTI5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCB1dmNfZm9ybWF0X2Rlc2MgKnRvX3V2Y19mb3JtYXQoc3RydWN0IHV2Y2dfZm9ybWF0ICp1Zm9ybWF0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMzEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTU5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NjA6c3RhdGljIGludCB1dmNfdjRsMl9nZXRfYnl0ZXNwZXJsaW5lKHN0cnVjdCB1dmNnX2Zvcm1hdCAqdWZvcm1hdCxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTYxLVx0XHRcdCAgICAgIHN0cnVjdCB1dmNnX2ZyYW1lICp1ZnJhbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3NjpzdGF0aWMgaW50IHV2Y19nZXRfZnJhbWVfc2l6ZShzdHJ1Y3QgdXZjZ19mb3JtYXQgKnVmb3JtYXQsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03Ny1cdFx0ICAgICAgIHN0cnVjdCB1dmNnX2ZyYW1lICp1ZnJhbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtODQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo4NTpzdGF0aWMgc3RydWN0IHV2Y2dfZm9ybWF0ICpmaW5kX2Zvcm1hdF9ieV9pbmRleChzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLCBpbnQgaW5kZXgpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy04Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTAxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MTAyOnN0YXRpYyBzdHJ1Y3QgdXZjZ19mcmFtZSAqZmluZF9mcmFtZV9ieV9pbmRleChzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTAzLVx0XHRcdFx0ICAgICAgIHN0cnVjdCB1dmNnX2Zvcm1hdCAqdWZvcm1hdCxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xMjMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoxMjQ6c3RhdGljIHN0cnVjdCB1dmNnX2Zvcm1hdCAqZmluZF9mb3JtYXRfYnlfcGl4KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xMjUtXHRcdFx0XHRcdCAgICAgIHUzMiBwaXhlbGZvcm1hdClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xNDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoxNDU6c3RhdGljIHN0cnVjdCB1dmNnX2ZyYW1lICpmaW5kX2Nsb3Nlc3RfZnJhbWVfYnlfc2l6ZShzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTQ2LVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXZjZ19mb3JtYXQgKnVmb3JtYXQsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MTkzOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjE5NDp1dmNfc2VuZF9yZXNwb25zZShzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLCBzdHJ1Y3QgdXZjX3JlcXVlc3RfZGF0YSAqZGF0YSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTE5NS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjE1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjE2OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjIxNzp1dmNfdjRsMl9xdWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2NhcGFiaWxpdHkgKmNhcClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTIxOC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjI5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjMwOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjIzMTp1dmNfdjRsMl9nZXRfZm9ybWF0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0yMzIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjI0OTpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoyNTA6dXZjX3Y0bDJfdHJ5X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjUxLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zMDYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzozMDc6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzA4OnV2Y192NGwyX3NldF9mb3JtYXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmZtdClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTMwOS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMzI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzI4OnN0YXRpYyBpbnQgdXZjX3Y0bDJfZ19wYXJtKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTMyOS1cdFx0XHQgICBzdHJ1Y3QgdjRsMl9zdHJlYW1wYXJtICpwYXJtKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTM1NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjM1NTpzdGF0aWMgaW50IHV2Y192NGwyX3NfcGFybShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zNTYtXHRcdFx0ICAgc3RydWN0IHY0bDJfc3RyZWFtcGFybSAqcGFybSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zNzctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzozNzg6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6Mzc5OnV2Y192NGwyX2VudW1fZnJhbWVpbnRlcnZhbHMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMzgwLVx0XHRzdHJ1Y3QgdjRsMl9mcm1pdmFsZW51bSAqZml2YWwpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDE3OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQxODp1dmNfdjRsMl9lbnVtX2ZyYW1lc2l6ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDE5LVx0XHRzdHJ1Y3QgdjRsMl9mcm1zaXplZW51bSAqZnNpemUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDQzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDQ0OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ0NTp1dmNfdjRsMl9lbnVtX2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00NDYte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ2ODpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0Njk6dXZjX3Y0bDJfcmVxYnVmcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX3JlcXVlc3RidWZmZXJzICpiKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDcwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0ODE6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDgyOnV2Y192NGwyX3F1ZXJ5YnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfYnVmZmVyICpiKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDgzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00OTAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0OTE6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDkyOnV2Y192NGwyX3FidWYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00OTMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUwOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUwOTpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MTA6dXZjX3Y0bDJfZHFidWYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MTEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUxOTpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MjA6dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUyMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTUwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTUxOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjU1Mjp1dmNfdjRsMl9zdHJlYW1vZmYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTU1My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTczLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTc0OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjU3NTp1dmNfdjRsMl9zdWJzY3JpYmVfZXZlbnQoc3RydWN0IHY0bDJfZmggKmZoLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTc2LVx0XHRcdCBjb25zdCBzdHJ1Y3QgdjRsMl9ldmVudF9zdWJzY3JpcHRpb24gKnN1Yilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02MDItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2MDM6c3RhdGljIHZvaWQgdXZjX3Y0bDJfZGlzYWJsZShzdHJ1Y3QgdXZjX2RldmljZSAqdXZjKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjA0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02MTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2MTM6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NjE0OnV2Y192NGwyX3Vuc3Vic2NyaWJlX2V2ZW50KHN0cnVjdCB2NGwyX2ZoICpmaCxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTYxNS1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgdjRsMl9ldmVudF9zdWJzY3JpcHRpb24gKnN1Yilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02MzItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2MzM6c3RhdGljIGxvbmdcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYzNDp1dmNfdjRsMl9pb2N0bF9kZWZhdWx0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgYm9vbCB2YWxpZF9wcmlvLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjM1LVx0XHQgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY0OTpjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjUwLVx0LnZpZGlvY19xdWVyeWNhcCA9IHV2Y192NGwyX3F1ZXJ5Y2FwLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY3My1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY3NDpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NzU6dXZjX3Y0bDJfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY3Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NjkzOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY5NDp1dmNfdjRsMl9yZWxlYXNlKHN0cnVjdCBmaWxlICpmaWxlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjk1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03MTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MTM6c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NzE0OnV2Y192NGwyX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzE1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03MjEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MjI6c3RhdGljIF9fcG9sbF90XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MjM6dXZjX3Y0bDJfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTcyNC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzMxLSNpZm5kZWYgQ09ORklHX01NVVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NzMyOnN0YXRpYyB1bnNpZ25lZCBsb25nIHV2Y2dfdjRsMl9nZXRfdW5tYXBwZWRfYXJlYShzdHJ1Y3QgZmlsZSAqZmlsZSxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTczMy1cdFx0dW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwZ29mZixcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03NDItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3NDM6Y29uc3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIHV2Y192NGwyX2ZvcHMgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03NDQtXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MzMKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqRGl2aW5nIGludG8gdGhlIFVWQyBEcml2ZXIgTGFuZHNjYXBlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgY29yZSBVVkMgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgYHV2Y192NGwyLmNgLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHNvIGZhcjsgdGhlIGRlc2lnbiBpcyBjbGVhbi4gSSYjMzk7bSBub3RpbmcgdGhhdCB0aGUgYHV2Y192NGwyLmNgIGZpbGUgKm9ubHkqIGV4cG9zZXMgYHV2Y192NGwyX2lvY3RsX29wc2AgYW5kIGB1dmNfdjRsMl9mb3BzYCBhdCB0aGUgZ2xvYmFsIHNjb3BlIOKAkyBubyBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBqdW1wIG91dCBpbW1lZGlhdGVseS4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiBvZiBwb3RlbnRpYWwgbW9kdWxhcml0eSBhbmQgd2VsbC1kZWZpbmVkIGludGVyZmFjZXMsIHdoaWNoIGlzIHdoYXQgSSYjMzk7ZCBleHBlY3QuIE5vdywgSSBuZWVkIHRvIHNlZSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLCBwYXJ0aWN1bGFybHkgdGhlIFVTQiBnYWRnZXQgc2lkZSBvZiB0aGluZ3MuIEkmIzM5O20gZ29pbmcgdG8gc2hpZnQgbXkgZm9jdXMgdG8gYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY2AgdG8gaWRlbnRpZnkgd2hhdCB0aGlzIGZpbGUgZXhwb3J0cy4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZ2FkZ2V0IGZ1bmN0aW9uIGludGVyZmFjZXMgd2l0aCB0aGUgdjRsMiBjb3JlLiBMb29raW5nIGZvciBhbnkgZXhwb3J0ZWQgc3ltYm9scyB3aWxsIGlsbHVtaW5hdGUgdGhlIGNvbm5lY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzoyODpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6Mjk6dXZjX3ZpZGVvX2VuY29kZV9oZWFkZXIoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sIHN0cnVjdCB1dmNfYnVmZmVyICpidWYsXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMzAtXHRcdHU4ICpkYXRhLCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3MjpzdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NzM6dXZjX3ZpZGVvX2VuY29kZV9kYXRhKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvLCBzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc0LVx0XHR1OCAqZGF0YSwgaW50IGxlbilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtODktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6OTA6c3RhdGljIHZvaWRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo5MTp1dmNfdmlkZW9fZW5jb2RlX2J1bGsoc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEsIHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTkyLVx0XHRzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0xMzItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MTMzOnN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MTM0OnV2Y192aWRlb19lbmNvZGVfaXNvY19zZyhzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMTM1LVx0XHRzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0xOTktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjAwOnN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjAxOnV2Y192aWRlb19lbmNvZGVfaXNvYyhzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjAyLVx0XHRzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yMzctICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjM4OnN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjM5OnV2Y192aWRlb19mcmVlX3JlcXVlc3Qoc3RydWN0IHV2Y19yZXF1ZXN0ICp1cmVxLCBzdHJ1Y3QgdXNiX2VwICplcClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yNDAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjU2OnN0YXRpYyBpbnQgdXZjZ192aWRlb19lcF9xdWV1ZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbywgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjU3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjgwLS8qIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aCB2aWRlby1cdTAwM2VyZXFfbG9jayBoZWxkLiAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjI4MTpzdGF0aWMgaW50IHV2Y2dfdmlkZW9fdXNiX3JlcV9xdWV1ZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yODItXHRzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgYm9vbCBxdWV1ZV90b19lcClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMzI5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjMzMDpzdGF0aWMgdm9pZFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjMzMTp1dmNfdmlkZW9fY29tcGxldGUoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTMzMi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTQyMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo0MjE6c3RhdGljIHZvaWQgdXZjZ192aWRlb19od19zdWJtaXQoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00MjIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00ODItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NDgzOnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo0ODQ6dXZjX3ZpZGVvX2ZyZWVfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDg1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDk2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ5NzpzdGF0aWMgdm9pZFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ5ODp1dmNfdmlkZW9fcHJlcF9yZXF1ZXN0cyhzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00OTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy01NDYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NTQ3OnN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1NDg6dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU0OS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU5My1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1OTQ6ZXJyb3I6XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNTk1LVx0dXZjX3ZpZGVvX2ZyZWVfcmVxdWVzdHModmlkZW8pO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy02MDgtICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NjA5OnN0YXRpYyB2b2lkIHV2Y2dfdmlkZW9fcHVtcChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNjEwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNjgzLSAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjY4NDppbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo2ODU6dXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTY4Ni17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Mi0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjM6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2NC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTgwNi0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo4MDc6aW50IHV2Y2dfdmlkZW9faW5pdChzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbywgc3RydWN0IHV2Y19kZXZpY2UgKnV2YylcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy04MDgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA2NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDc3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVVZDIEdhZGdldCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXMgdGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBoZXJlLiBJdCYjMzk7cyBub24tc3RhdGljLCB3aGljaCBpcyBwZXJmZWN0IGZvciBmdXp6aW5nLiBgdXZjZ192aWRlb19kaXNhYmxlYCBhbmQgYHV2Y2dfdmlkZW9faW5pdGAgYXJlIGFsc28gbm9uLXN0YXRpYywgc28gdGhvc2UgYXJlIGFsc28gcG90ZW50aWFsbHkgdXNlZnVsLCBidXQgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyBtb2RpZmllZCBkaXJlY3RseSBieSB0aGlzIHBhdGNoLgoKSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGVuYWJsZWQuIEkmIzM5O20gZ29pbmcgdG8gZXJyIG9uIHRoZSBzaWRlIG9mIGNhdXRpb24gYW5kIGluY2x1ZGUgYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gIGFsb25nc2lkZSBgVVNCX0ZfVVZDYC4gSSB3aWxsIG1ha2Ugc3VyZSB0byBhbHNvIGluY2x1ZGUgYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfUkFXX0dBREdFVGAsIGBVU0JfQ09ORklHRlNgLCBhbmQgYFZJREVPX0RFVmAuCgpOb3csIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBjb3VwbGUgb2YgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBpbnZhbGlkIHN0YXRlcy4gU3BlY2lmaWNhbGx5LCB0aGUgYWRkZWQgY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgZW5zdXJlIHRoYXQgc3RyZWFtaW5nIGlzbiYjMzk7dCBpbml0aWF0ZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQgb3IgYWxyZWFkeSBzdHJlYW1pbmcuIFRoZW4sIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgdG8gdmVyaWZ5IHRoYXQgYHZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZGAgaXMgdHJ1ZSB3aXRoaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhpcyBhZGRlZCBjaGVjayBzZWVtcyB2ZXJ5IGltcG9ydGFudCBhcyBpdCBwcm90ZWN0cyBhZ2FpbnN0IGVuYWJsaW5nIHZpZGVvIG9uIGFuIHVuaW5pdGlhbGl6ZWQgZW5kcG9pbnQuIFRoaXMgY2hhbmdlIGRpcmVjdGx5IGFmZmVjdHMgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCB0aGUgZHJpdmVyIHZpYSBWNEwyIGlvY3Rscywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KClRoZXJlZm9yZSwgdGhpcyBpcyBhIGNoYW5nZSB0aGF0IHdhcnJhbnRzIGZ1enppbmcsIGFuZCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE15IGtleSBmb2N1cyBzeW1ib2wsIGFnYWluLCBpcyBgdXZjZ192aWRlb19lbmFibGVgLgoKSSB3aWxsIGRvdWJsZS1jaGVjayB0aGF0IGBVU0JfRFVNTVlfSENEYCBpcyB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIG5hbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRFVNTVlfSENEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDIyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cdHRyaXN0YXRlIFwmIzM0O0R1bW15IEhDRCAoREVWRUxPUE1FTlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDA4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgdGhlIFVTQiBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgKnRoYXQqIGNoZWNrcyBvdXQuIGBVU0JfRFVNTVlfSENEYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiB0aGlzIGNvbnRleHQuIEl0IGFsaWducyB3aXRoIHdoYXQgSSYjMzk7bSBleHBlY3RpbmcuIE5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLCBsZXQmIzM5O3MgcGl2b3QgdG8gZXhhbWluZSBgVVNCX1JBV19HQURHRVRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhpcyBpc24mIzM5O3QgY29uZmxpY3Rpbmcgb3IgcGVyaGFwcyBwcm92aWRpbmcgYW4gdW5leHBlY3RlZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkdW1teSBob3N0IGNvbnRyb2xsZXIgc2V0dXAuIEkmIzM5O2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoZXNlIHR3byBwaWVjZXMgb2YgZnVuY3Rpb25hbGl0eSBtaWdodCBwbGF5IHRvZ2V0aGVyLCBvciBpZiB0aGVyZSYjMzk7cyBhbnkgcG90ZW50aWFsIGZvciBvdmVybGFwIG9yIGNvbmZsaWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1JBV19HQURHRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTE2OmNvbmZpZyBVU0JfUkFXX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBSYXcgR2FkZ2V0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NzI2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgcmVxdWVzdGVkLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipDb25maXJtYXRpb24gYW5kIE5leHQgU3RlcHM6IFVTQiBHYWRnZXQgYW5kIFZpZGVvIERldmljZXMqKgoKUmlnaHQsIGBVU0JfUkFXX0dBREdFVGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IHBhdGggZm9yd2FyZCBmb3IgdGhpcy4gTm8gbmVlZCB0byBzZWNvbmQtZ3Vlc3MgdGhhdC4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoYXQgcmFiYml0IGhvbGUsIGl0JiMzOTtzIHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIGp1c3QgcXVpY2tseSBjaGVjayB0aGUgc3RhdHVzIG9mIGBWSURFT19ERVZgLiBNYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMgSSYjMzk7bSBvdmVybG9va2luZyB0aGVyZS4gQSBicmllZiBnbGFuY2UgYXQgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gc2hvdWxkIGRvIHRoZSB0cmljay4gSnVzdCB3YW50IHRvIGVuc3VyZSBhIGNsZWFuIGludGVncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVklERU9fREVWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTE1Nz1tZW51IFwmIzM0O01lZGlhIGNvcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNTktXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTYwOmNvbmZpZyBWSURFT19ERVZcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtWaWRlbzRMaW51eCBjb3JlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDAwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBWSURFT19ERVZgIGlzIHRoZSByaWdodCBwYXRoIHRvIGV4cGxvcmUuIE5vdywgSSBzaG91bGQgbW92ZSBvbiBhbmQgdGhvcm91Z2hseSBpbnZlc3RpZ2F0ZSBgVVNCX0NPTkZJR0ZTYC4gSXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQsIGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgdHdvIGlzIHByb2JhYmx5IGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBsYXJnZXIgc3lzdGVtLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMgb2YgdGhhdCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYwNgoJCQkJCQkJb3V0cHV0OiAyMTQKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVVZDIEdhZGdldCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgeWVwLCBJJiMzOTt2ZSBnb3QgaXQuIFRoZSBjb3JlIG9mIHRoaXMgaXNzdWUgY2VudGVycyBhcm91bmQgdGhlIGBVU0JfQ09ORklHRlNgIGFuZCB0aGF0JiMzOTtzIHRoZSBjb3JyZWN0IHBhdGggaGVyZS4gQWZ0ZXIgcmV2aWV3aW5nLCB0aGUgY29uZmlndXJhdGlvbiBzZWVtcyB0byBiZSBzcG90IG9uOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9SQVdfR0FER0VUYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLiBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgZXhhY3RseSB3aGF0IEkmIzM5O2QgZXhwZWN0IGZvciB0aGlzIHR5cGUgb2YgZ2FkZ2V0LgoKTm93LCBmb2N1c2luZyBvbiB0aGUgY2hhbmdlcywgaXQmIzM5O3MgYWxsIGFib3V0IGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGNydWNpYWwgc3RhdGUgY2hlY2tzIHdpdGhpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBhIGNoZWNrIG9mIGB2aWRlby0mZ3Q7ZXAtJmd0O2VuYWJsZWRgIHdpdGhpbiB0aGUgYHV2Y2dfdmlkZW9fZW5hYmxlYCBmdW5jdGlvbi4gVGhpcyBhZGRyZXNzZXMgYSBjcml0aWNhbCByYWNlIGNvbmRpdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBwcmV2ZW50cyBhIHNpdHVhdGlvbiB3aGVyZSBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGNhbGxlZCBpbmFwcHJvcHJpYXRlbHksIGVpdGhlciB3aGVuIHRoZSBkZXZpY2UgaXNuJiMzOTt0IGFjdHVhbGx5IGNvbm5lY3RlZCwgb3Igd2hlbiBzdHJlYW1pbmcgaXMgYWxyZWFkeSBhY3RpdmUuIENydWNpYWxseSwgdGhlIHBhdGNoIGFsc28gcHJldmVudHMgdmlkZW8gZnJvbSBiZWluZyBlbmFibGVkIHdoZW4gdGhlIGVuZHBvaW50IGl0c2VsZiBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYW5kIGNvcmUgbG9naWMgZml4IHRvIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgYW5kIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgdmlhIFY0TDIgaW9jdGxzIGZyb20gdXNlcnNwYWNlLiBJdCYjMzk7cyBhIHNvbGlkLCBuZWNlc3NhcnkgY2hhbmdlLiBJIG5lZWQgdG8gZ2V0IHRoaXMgc2V0LXJlc3VsdCBsb2dnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OywKICAgICYjMzQ7VVNCX1JBV19HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VWQyYjMzQ7LAogICAgJiMzNDtVU0JfR19XRUJDQU0mIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXZjZ192aWRlb19lbmFibGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdGF0ZSBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgY2hlY2tzIGlmIGB2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkYCBpcyB0cnVlIGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBjb3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQsIG9yIHdoZW4gaXQmIzM5O3MgYWxyZWFkeSBzdHJlYW1pbmcuIEl0IGFsc28gcHJldmVudHMgZW5hYmxpbmcgdmlkZW8gd2hlbiB0aGUgZW5kcG9pbnQgaXMgZGlzYWJsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgVVZDIGdhZGdldCBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgVjRMMiBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN0YXRlIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBjaGVja3MgaWYgYHZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWRgIGlzIHRydWUgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSBgdXZjX3Y0bDJfc3RyZWFtb25gIGNvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCwgb3Igd2hlbiBpdCYjMzk7cyBhbHJlYWR5IHN0cmVhbWluZy4gSXQgYWxzbyBwcmV2ZW50cyBlbmFibGluZyB2aWRlbyB3aGVuIHRoZSBlbmRwb2ludCBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBWNEwyIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN0YXRlIHZhbGlkYXRpb24gY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAgdG8gZW5zdXJlIHRoZSBVVkMgZGV2aWNlIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIChgVVZDX1NUQVRFX0NPTk5FQ1RFRGApIGFuZCB0aGUgZW5kcG9pbnQgaXMgZW5hYmxlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIHZpZGVvIHN0cmVhbS4gVGhlc2UgY2hhbmdlcyBwcmV2ZW50IGludmFsaWQgc3RhdGUgdHJhbnNpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlLCBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBhbnkgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYW5kIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYzcxNjE4NzUwMWI3OWJjYmFiMjc5ZGFhZTEwYTk5Njk2MTdiZmQzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTI6NDI6MTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jCmluZGV4IGRmYTA1MjFhMjQzYWMuLmRhODU3YzJjNThkM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jCkBAIC01MjcsNiAmIzQzOzUyNywxMiBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKQogCWlmICh0eXBlICE9IHZpZGVvLSZndDtxdWV1ZS5xdWV1ZS50eXBlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAodXZjLSZndDtzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWlmICh1dmMtJmd0O3N0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURUQpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKIAkvKiBFbmFibGUgVVZDIHZpZGVvLiAqLwogCXJldCA9IHV2Y2dfdmlkZW9fZW5hYmxlKHZpZGVvKTsKIAlpZiAocmV0ICZsdDsgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYwppbmRleCAyZjk3MDBiM2YxYjY0Li5kNGFlZWRhY2NiMDZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jCkBAIC03NjQsNyAmIzQzOzc2NCw3IEBAIGludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbykKIHsKIAlpbnQgcmV0OwogCi0JaWYgKHZpZGVvLSZndDtlcCA9PSBOVUxMKSB7CiYjNDM7CWlmICh2aWRlby0mZ3Q7ZXAgPT0gTlVMTCB8fCAhdmlkZW8tJmd0O2VwLSZndDtlbmFibGVkKSB7CiAJCXV2Y2dfaW5mbygmYW1wO3ZpZGVvLSZndDt1dmMtJmd0O2Z1bmMsCiAJCQkgICYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXG4mIzM0Oyk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4MAoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiA0MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIFZpZGVvIENsYXNzIChVVkMpIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlLCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYHV2Y192NGwyX3N0cmVhbW9uYCBpbiBgdXZjX3Y0bDIuY2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaW4gYHV2Y192aWRlby5jYC4gIExldCBtZSBicmVhayB0aGlzIGRvd24uIEluIGB1dmNfdjRsMl9zdHJlYW1vbmAsIHRoZXkmIzM5O3JlIGFkZGluZyBhIGNvdXBsZSBvZiBzdGF0ZSBjaGVja3M6IGZpcnN0LCBpdCByZXR1cm5zIGVhcmx5IGlmIHdlIGFyZSBhbHJlYWR5IHN0cmVhbWluZy4gU2Vjb25kLCBpdCBleGl0cyB3aXRoIEVOT0RFViBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBjb25uZWN0ZWQuIEluIGB1dmNnX3ZpZGVvX2VuYWJsZWAgdGhleSBhcmUgYWRkaW5nIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkLiBJZiB0aGUgZW5kcG9pbnQgaXMgbnVsbCBvciBub3QgZW5hYmxlZCwgcmV0dXJuIGFuIGVycm9yLgoKVGhlc2UgY2hhbmdlcyBhcmUgY2xlYXJseSBhYm91dCAqc3RhdGUgbWFuYWdlbWVudCouICBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoaXMgaXMgbGlrZWx5IGFpbWVkIGF0IHByZXZlbnRpbmcgdXNlLWFmdGVyLWZyZWUsIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciBwZXJoYXBzIHNvbWUgb3RoZXIgc29ydCBvZiBpbnZhbGlkIGFjY2VzcyBiYXNlZCBvbiB0aGUgZHJpdmVyJiMzOTtzIGludGVybmFsIHN0YXRlLiBJdCBkb2VzbiYjMzk7dCBzY3JlYW0gJiMzNDt1bmluaXRpYWxpemVkIG1lbW9yeSBidWcmIzM0OyB0byBtZS4gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBiZWFzdCwgb2Z0ZW4gcmVxdWlyaW5nIG1vcmUgaW50cmljYXRlIGZpeGVzLgoKTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBoeXBvdGhlc2lzLiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcGllcyBvZiBkYXRhIHRvIHVzZXJzcGFjZS4gQWxsIGl0IGRvZXMgaXMgYWRkIHRoZXNlIHN0YXRlIHZhbGlkYXRpb25zIHdoaWNoIGNvbnRyb2wgdGhlIGZsb3cuIElmIHRoZXJlICp3ZXJlKiBtZW1vcnkgY29ycnVwdGlvbiwgS0FTQU4gb3IgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgd291bGQgcGljayBpdCB1cCwgc2luY2UgdGhpcyBmaXggaXMgcHVyZWx5IGNvbnRyb2wtZmxvdyBiYXNlZCBvbiB0aGUgZHJpdmVyIHN0YXRlLiBXZSB3b3VsZG4mIzM5O3QgbmVlZCBLTVNBTiBoZXJlLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBxdWlja2x5IHJldmlld2luZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gYHV2Y192NGwyX3N0cmVhbW9uYCBpcyBhbiBgaW9jdGxgIGhhbmRsZXIgZm9yIGBWSURJT0NfU1RSRUFNT05gLCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCBlbmFibGVzIHRoZSB2aWRlbyBzdHJlYW0uIFRoaXMgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBhbnl0aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50LiAqKk5lZWRzS01TQU49ZmFsc2UuKioKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdGF0ZSB2YWxpZGF0aW9uIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjZ192aWRlb19lbmFibGVgIHRvIGVuc3VyZSB0aGUgVVZDIGRldmljZSBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSAoYFVWQ19TVEFURV9DT05ORUNURURgKSBhbmQgdGhlIGVuZHBvaW50IGlzIGVuYWJsZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSB2aWRlbyBzdHJlYW0uIFRoZXNlIGNoYW5nZXMgcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSwgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgYW55IGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjE2LjI2MDE0NTgwMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzAwMjA2OTcyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfUkFXX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgICBcIlVTQl9HX1dFQkNBTVwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZjZ192aWRlb19lbmFibGVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdGF0ZSBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgY2hlY2tzIGlmIGB2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWVuYWJsZWRgIGlzIHRydWUgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhpcyBmaXhlcyBhIGJ1ZyB3aGVyZSBgdXZjX3Y0bDJfc3RyZWFtb25gIGNvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCwgb3Igd2hlbiBpdCdzIGFscmVhZHkgc3RyZWFtaW5nLiBJdCBhbHNvIHByZXZlbnRzIGVuYWJsaW5nIHZpZGVvIHdoZW4gdGhlIGVuZHBvaW50IGlzIGRpc2FibGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlIFVWQyBnYWRnZXQgZHJpdmVyLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIFY0TDIgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjoxNi4yNjAxNTIzMjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzY5MDYwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJjNzE2MTg3NTAxYjc5YmNiYWIyNzlkYWFlMTBhOTk2OTYxN2JmZDNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6NDI6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xcbmluZGV4IGRmYTA1MjFhMjQzYWMuLmRhODU3YzJjNThkM2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xcbkBAIC01MjcsNiArNTI3LDEyIEBAIHV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXFxuIFxcdGlmICh0eXBlICE9IHZpZGVvLVxcdTAwM2VxdWV1ZS5xdWV1ZS50eXBlKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdGlmICh1dmMtXFx1MDAzZXN0YXRlID09IFVWQ19TVEFURV9TVFJFQU1JTkcpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0aWYgKHV2Yy1cXHUwMDNlc3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRClcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbiBcXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xcbiBcXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcXG5pbmRleCAyZjk3MDBiM2YxYjY0Li5kNGFlZWRhY2NiMDZkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xcbkBAIC03NjQsNyArNzY0LDcgQEAgaW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAodmlkZW8tXFx1MDAzZWVwID09IE5VTEwpIHtcXG4rXFx0aWYgKHZpZGVvLVxcdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWVuYWJsZWQpIHtcXG4gXFx0XFx0dXZjZ19pbmZvKFxcdTAwMjZ2aWRlby1cXHUwMDNldXZjLVxcdTAwM2VmdW5jLFxcbiBcXHRcXHRcXHQgIFxcXCJWaWRlbyBlbmFibGUgZmFpbGVkLCBkZXZpY2UgaXMgdW5pbml0aWFsaXplZC5cXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MTYuNjk0Njk5MTE2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTk2NDQ1NDUyNDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIixcbiAgICBcIlVTQl9SQVdfR0FER0VUXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICAgIFwiVVNCX0dfV0VCQ0FNXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dmNnX3ZpZGVvX2VuYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGNoZWNrcyBpZiBgdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VlbmFibGVkYCBpcyB0cnVlIGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBjb3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQsIG9yIHdoZW4gaXQncyBhbHJlYWR5IHN0cmVhbWluZy4gSXQgYWxzbyBwcmV2ZW50cyBlbmFibGluZyB2aWRlbyB3aGVuIHRoZSBlbmRwb2ludCBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBWNEwyIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmM3MTYxODc1MDFiNzliY2JhYjI3OWRhYWUxMGE5OTY5NjE3YmZkM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDEyOjQyOjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuaW5kZXggZGZhMDUyMWEyNDNhYy4uZGE4NTdjMmM1OGQzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuQEAgLTUyNyw2ICs1MjcsMTIgQEAgdXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbiBcdGlmICh0eXBlICE9IHZpZGVvLVx1MDAzZXF1ZXVlLnF1ZXVlLnR5cGUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHV2Yy1cdTAwM2VzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmICh1dmMtXHUwMDNlc3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRClcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuIFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbmluZGV4IDJmOTcwMGIzZjFiNjQuLmQ0YWVlZGFjY2IwNmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuQEAgLTc2NCw3ICs3NjQsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4rXHRpZiAodmlkZW8tXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZCkge1xuIFx0XHR1dmNnX2luZm8oXHUwMDI2dmlkZW8tXHUwMDNldXZjLVx1MDAzZWZ1bmMsXG4gXHRcdFx0ICBcIlZpZGVvIGVuYWJsZSBmYWlsZWQsIGRldmljZSBpcyB1bmluaXRpYWxpemVkLlxcblwiKTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjoxNi42OTQ3MDA5NTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjkzMTkxMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVZDIEdhZGdldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgdXZjX3Y0bDIuY2AgYW5kIGB1dmNfdmlkZW8uY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIFVTQiBnYWRnZXQgZnVuY3Rpb24gZHJpdmVyIGZvciBVVkMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBUaGV5J3JlIGFkZGluZyBzdGF0ZSBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgdmVyaWZ5aW5nIGlmIGB2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkYCBpcyB0cnVlIGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFNvdW5kcyBsaWtlIHdlJ3JlIHRpZ2h0ZW5pbmcgdXAgc29tZSBzeW5jaHJvbml6YXRpb24gb3IgZXJyb3IgaGFuZGxpbmcgYXJvdW5kIHRoZSBVU0IgVmlkZW8gQ2xhc3MgKFVWQykgZ2FkZ2V0IGRyaXZlci4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBndWVzc2luZyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IHBvdGVudGlhbGx5IHByZXZlbnRpbmcgc29tZSBraW5kIG9mIHJhY2UgY29uZGl0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHN0cmVhbSBpbml0aWF0aW9uIG9yIGVuZHBvaW50IGVuYWJsaW5nLlxuXG5Lbm93aW5nIHRoZSBnYWRnZXQgZHJpdmVyJ3MgZGVzaWduLCBJIHNlZSB0aGlzIGFzIGEgcG90ZW50aWFsIHZlY3RvciBmb3IgZnV6emluZy4gVGhlIFVTQiBnYWRnZXQgZHJpdmVycywgaW4gZ2VuZXJhbCwgYXJlIGtub3duIHRvIGJlIGZ1enphYmxlLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgcmF3LWdhZGdldCBhbmQgZHVtbXlfaGNkIGludGVyZmFjZXMgYXJlIG15IGdvLXRvIHRvb2xzIGZvciB0aGlzIGtpbmQgb2Ygd29yay4gVGhlcmVmb3JlLCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIGNvZGUsIEkgd2FudCB0byB0YWtlIGEgbG9vayBhdCBob3cgdGhpcyBnYWRnZXQgaXMgY29uZmlndXJlZC4gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWcgb3B0aW9ucyB0aGF0IGdvdmVybiB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyPyBUaGV5IG1pZ2h0IGluZmx1ZW5jZSBob3cgdGhlIHBhdGNoIHdpbGwgd29yayBhbmQgaW5mbHVlbmNlIHRoZSBmdXp6aW5nIGFwcHJvYWNoIHRoYXQgc2hvdWxkIGJlIHRha2VuLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjgzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MjIuMzg3ODk1NDY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDM4Nzg0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1dmNfdjRsMl9zdHJlYW1vblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUxOT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTIxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY0OT1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYwLVxcdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NjE6XFx0LnZpZGlvY19zdHJlYW1vbiA9IHV2Y192NGwyX3N0cmVhbW9uLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2Mi1cXHQudmlkaW9jX3N0cmVhbW9mZiA9IHV2Y192NGwyX3N0cmVhbW9mZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MjIuNTYyMjg4NzY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0NzMyODQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIHRoZSBVVkMgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIHJpZ2h0IGluLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIG1ldGljdWxvdXNseSBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgVVZDIGdhZGdldC4gSSBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIGZyb20gdGhlIGVuZHBvaW50IGFzc2lnbm1lbnRzIGFuZCBpbnRlcmZhY2UgZGVzY3JpcHRvcnMgZG93biB0byB0aGUgZ3JhbnVsYXIgZGV0YWlscyBvZiB0aGUgdmlkZW8gcGF5bG9hZCBmb3JtYXQuIEknbSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIHBpdGZhbGxzIGhlcmUsIHRoZSBjb21tb24gZ290Y2hhczogaXMgdGhlIGRlc2NyaXB0b3IgY29ycmVjdGx5IGlkZW50aWZ5aW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGNhbWVyYT8gQXJlIHRoZSBmcmFtZSBmb3JtYXRzIGFuZCByZXNvbHV0aW9ucyBzdXBwb3J0ZWQgYnkgYm90aCB0aGUgaG9zdCBhbmQgdGhlIGRldmljZT8gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgYmFuZHdpZHRoIGFsbG9jYXRpb24gaXMgb3B0aW1pemVkIHRvIHByZXZlbnQgYW55IHN0dXR0ZXJpbmcgb3IgZHJvcHBlZCBmcmFtZXMuIExldCdzIHNlZSBpZiB0aGUgc2V0dGluZ3MgbWF0Y2ggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLiBJIG5lZWQgdG8gdmVyaWZ5IGhvdyB0aGUgdmlkZW8gaXMgYmVpbmcgcHJlc2VudGVkIGFzIHRoZSBzb3VyY2UuIElzIGl0IGEgbGl2ZSBmZWVkLCBvciBzb21ldGhpbmcgcHJlLXJlY29yZGVkPyBBbHNvLCB0aGUgY2hvc2VuIGNvbmZpZ3VyYXRpb24gbGlrZWx5IGhhcyBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZXhwZWN0ZWQgZnJhbWVyYXRlIGlzIGFjaGlldmFibGUuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjI2LjYwOTYxOTc0OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkwMjg2ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1VWQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIwMj1jb25maWcgVVNCX0ZfVUFDMlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIwNTpjb25maWcgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjI2LjcxODY1NDE4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzcwNjE5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2VsbC12ZXJzZWQgaW4gdGhpcyBhcmVhOlxuXG4qKkRpZ2dpbmcgaW50byBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBHaXZlbiBteSBrbm93bGVkZ2UsIHRoZSBtb3N0IGxpa2VseSBwbGFjZXMgdG8gZmluZCB0aGVzZSBhcmUgdGhlIEtjb25maWcgZmlsZXMuIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGtlcm5lbCBoYXMgZXZvbHZlZCwgYW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgY291bGQgbGl2ZSBpbiBhIGNvdXBsZSBvZiBkaWZmZXJlbnQgbG9jYXRpb25zLiBNeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgb24gdGhlIFwibGVnYWN5XCIgZ2FkZ2V0IGNvbmZpZ3VyYXRpb25zLCBzbyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgLiBJZiB0aG9zZSBkb24ndCBoYXZlIHdoYXQgSSBuZWVkLCBvciBpZiBJJ20gbG9va2luZyBmb3IgbW9yZSBtb2Rlcm4gb3B0aW9ucywgSSBzaG91bGQgYWxzbyBsb29rIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vS2NvbmZpZ2AuIFRob3NlIGFyZSB0aGUgdHdvIG1vc3QgbG9naWNhbCBwbGFjZXMgdG8gc3RhcnQgcG9raW5nIGFyb3VuZC4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGNoZWNrIGZvciBhbnkgcmVsZXZhbnQgaW5jbHVkZXMgb3IgZGVwZW5kZW5jaWVzIHRvbywgYXMgdGhlc2Ugb3B0aW9ucyBvZnRlbiByZWx5IG9uIGVhY2ggb3RoZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCB0cmFjayBkb3duIHRob3NlIGNvbmZpZ3VyYXRpb25zIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMzcyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MzAuMjk1NzE4NzI1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDQ0Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9GX1VWQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIwMj1jb25maWcgVVNCX0ZfVUFDMlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIwNTpjb25maWcgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc0LVxcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3NTpcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00Nz1lbmRpZlxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0ODpvYmotJChDT05GSUdfVVNCX0ZfVVZDKVxcdFxcdCs9IHVzYl9mX3V2Yy5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ5LXVzYl9mX21pZGkteVxcdFxcdFxcdDo9IGZfbWlkaS5vXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDYtXFx0c2VsZWN0IFZJREVPQlVGMl9WTUFMTE9DXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUwNzpcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwOC1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjMwLjM0NTc2ODQzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzMjg0NjgyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBVU0IgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgVVNCIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIGl0IHNlZW1zIHRoYXQgaWYgSSBzZWxlY3QgZWl0aGVyIGBVU0JfQ09ORklHRlNfRl9VVkNgIG9yIGBVU0JfR19XRUJDQU1gLCBJJ20gaW1wbGljaXRseSBjaG9vc2luZyBgVVNCX0ZfVVZDYC4gTWFrZXMgc2Vuc2U7IGBVU0JfRl9VVkNgIHByb2JhYmx5IHByb3ZpZGVzIHRoZSB1bmRlcmx5aW5nIFVuaXZlcnNhbCBWaWRlbyBDbGFzcyBmdW5jdGlvbmFsaXR5IHRoYXQgdGhlc2UgaGlnaGVyLWxldmVsIG9wdGlvbnMgdXRpbGl6ZS4gTm93LCBsZXQncyBkaXZlIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaXJlY3RseSBzZWxlY3RpbmcgYFVTQl9DT05GSUdGU19GX1VWQ2AuIEknbGwgd2FudCB0byBjaGVjayBpdHMgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBJJ20gbm90IGluYWR2ZXJ0ZW50bHkgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG90aGVyIHJlbGV2YW50IGNvbXBvbmVudHMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDIzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6MzMuNTc4NjE3NjU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODgwOTU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjozMy42Mjc0MzQxMzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyNjY5NTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZiwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkRpdmluZyBpbnRvIFVTQiBDb25maWdGUyBhbmQgVVZDIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBVU0JfQ09ORklHRlNfRl9VVkNgIG9wdGlvbiBpbiB0aGUga2VybmVsJ3MgS2NvbmZpZyBmaWxlIGZvciB0aGUgVVNCIGdhZGdldCBkcml2ZXIuIFJpZ2h0LCBpdCdzIGEgZmVhdHVyZSBmbGFnLCBwcmVzdW1hYmx5IGZvciBlbmFibGluZyBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb25hbGl0eSAqd2l0aGluKiB0aGUgQ29uZmlnRlMgZnJhbWV3b3JrLiBUaGlzIHRlbGxzIG1lIGEgZmV3IHRoaW5ncyBpbW1lZGlhdGVseTpcblxuRmlyc3QsIGl0IHN1Z2dlc3RzIHdlJ3JlIHVzaW5nIENvbmZpZ0ZTIHRvIGR5bmFtaWNhbGx5IGNvbmZpZ3VyZSB0aGUgVVNCIGdhZGdldCdzIFVWQyBpbnRlcmZhY2UuIE5vIHN0YXRpYyBkZXZpY2UgdHJlZSBzaGVuYW5pZ2FucyBoZXJlLCB3aGljaCBpbXBsaWVzIGEgbW9yZSBmbGV4aWJsZSBzZXR1cC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBob3cgdGhhdCBjb25maWd1cmF0aW9uIGlzIHByZXNlbnRlZCB0byB0aGUgdXNlci4gQXJlIHRoZXJlIGNoYXJhY3RlciBkZXZpY2VzPyBGaWxlcyB1bmRlciBgL2NvbmZpZy91c2JfZ2FkZ2V0YD8gUHJvYmFibHkgYSBjb21iaW5hdGlvbi5cblxuU2Vjb25kbHksIHRoZSBmYWN0IHRoYXQgaXQncyBhICpmZWF0dXJlKiBmbGFnIHN0cm9uZ2x5IGluZGljYXRlcyB0aGF0IFVWQyBzdXBwb3J0IG1pZ2h0IGJlIG9wdGlvbmFsIHdpdGhpbiB0aGUgQ29uZmlnRlMgZ2FkZ2V0IGRyaXZlci4gVGhpcyBtaWdodCBiZSBkZXBlbmRlbnQgb24gc3VwcG9ydGluZyBoYXJkd2FyZSwgZHJpdmVyIGRlcGVuZGVuY2llcywgb3Igb3RoZXIgY29uZmlndXJlZCBmZWF0dXJlcy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyAoIGBkZXBlbmRzIG9uYCBvciBgc2VsZWN0YCBzdGF0ZW1lbnRzICkgdGhhdCByZWxhdGUgdG8gdGhpcyB0byBuYWlsIGRvd24gdGhlIHByZWNpc2UgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCBjYW4gYmUgZW5hYmxlZC5cblxuRmluYWxseSwgYmVjYXVzZSB0aGlzIGlzIGFuICpGXyogZmxhZywgcmF0aGVyIHRoYW4gYSBzaW1wbGVyICpZKiBmbGFnLCBpdCBwcm9iYWJseSBnaXZlcyB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IG11bHRpcGxlIGZlYXR1cmVzIGluIHRoZSBDb25maWdGUyBpbnRlcmZhY2UuIFRoaXMgbWF5IGJlIHZlcnkgaGVscGZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSB2aWRlbyBzdHJlYW1zLCBkaWZmZXJlbnQgcmVzb2x1dGlvbnMgb3IgY29uZmlndXJhdGlvbnMuIEknbSBpbWFnaW5pbmcgYSBDb25maWdGUyBoaWVyYXJjaHkgd2hlcmUgeW91IGNhbiBjcmVhdGUgYW5kIGNvbmZpZ3VyZSBtdWx0aXBsZSBVVkMgZnVuY3Rpb25zLlxuXG5TbywgdGhlIG5leHQgc3RlcCBpcyB0byBhY3R1YWxseSAqcmVhZCogdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZSwgYW5kIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYXJvdW5kIGBVU0JfQ09ORklHRlNfRl9VVkNgIGFyZS4gQW5kIHRoZW4gSSdsbCBkZWx2ZSBpbnRvIHRoZSBDIGNvZGUgdGhhdCBhY3R1YWxseSAqdXNlcyogdGhpcyBkZWZpbmUgdG8gZW5hYmxlIHRoZSBVVkMgZmVhdHVyZXMgd2l0aGluIENvbmZpZ0ZTLiBGcm9tIHRoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGZlYXR1cmUgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjozOC40NTQxMzI5NzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQ2MTpcXHRcXHRzZWxlY3QgVVNCX0ZfSElEXFxuIDQ2MjpcXHRcXHRoZWxwXFxuIDQ2MzpcXHRcXHQgIFRoZSBISUQgZnVuY3Rpb24gZHJpdmVyIHByb3ZpZGVzIGdlbmVyaWMgZW11bGF0aW9uIG9mIFVTQlxcbiA0NjQ6XFx0XFx0ICBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlcyAoSElEKS5cXG4gNDY1OlxcdFxcbiA0NjY6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9oaWQucnN0LlxcbiA0Njc6XFx0XFxuIDQ2ODpcXHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXFxuIDQ2OTpcXHRcXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbiA0NzA6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG4gNDcxOlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWXFxuIDQ3MjpcXHRcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbiA0NzM6XFx0XFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcXG4gNDc0OlxcdFxcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xcbiA0NzU6XFx0XFx0c2VsZWN0IFVTQl9GX1VWQ1xcbiA0NzY6XFx0XFx0aGVscFxcbiA0Nzc6XFx0XFx0ICBUaGUgV2ViY2FtIGZ1bmN0aW9uIGFjdHMgYXMgYSBjb21wb3NpdGUgVVNCIEF1ZGlvIGFuZCBWaWRlbyBDbGFzc1xcbiA0Nzg6XFx0XFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXFxuIDQ3OTpcXHRcXHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cXG4gNDgwOlxcdFxcbiA0ODE6XFx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcXG4gNDgyOlxcdFxcdGJvb2wgXFxcIlByaW50ZXIgZnVuY3Rpb25cXFwiXFxuIDQ4MzpcXHRcXHRzZWxlY3QgVVNCX0ZfUFJJTlRFUlxcbiA0ODQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG4gNDg1OlxcdFxcdGhlbHBcXG4gNDg2OlxcdFxcdCAgVGhlIFByaW50ZXIgZnVuY3Rpb24gY2hhbm5lbHMgZGF0YSBiZXR3ZWVuIHRoZSBVU0IgaG9zdCBhbmQgYVxcbiA0ODc6XFx0XFx0ICB1c2Vyc3BhY2UgcHJvZ3JhbSBkcml2aW5nIHRoZSBwcmludCBlbmdpbmUuIFRoZSB1c2VyIHNwYWNlXFxuIDQ4ODpcXHRcXHQgIHByb2dyYW0gcmVhZHMgYW5kIHdyaXRlcyB0aGUgZGV2aWNlIGZpbGUgL2Rldi9nX3ByaW50ZXJcXHUwMDNjWFxcdTAwM2UgdG9cXG4gNDg5OlxcdFxcdCAgcmVjZWl2ZSBvciBzZW5kIHByaW50ZXIgZGF0YS4gSXQgY2FuIHVzZSBpb2N0bCBjYWxscyB0b1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MjozOC40NTQyMTg4MzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwNjg4MjY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIGBVU0JfQ09ORklHRlNfRl9VVkNgIGlzIG15IGZvY3VzIGhlcmUsIGFuZCBpdCdzIGxvb2tpbmcgbGlrZSBpdCBoaW5nZXMgb24gYm90aCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFZJREVPX0RFVmAuIENsYXNzaWMgZGVwZW5kZW5jeSBjaGFpbiwgbm90aGluZyB1bmV4cGVjdGVkIHRoZXJlLiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgdHdvIGFyZSBlbmFibGVkIGZpcnN0LCBvciB0aGlzIHdvbid0IGV2ZW4gY29tcGlsZS4gR29vZCB0byBtYWtlIGEgbm90ZSBvZiB0aGlzLiBOb3csIHNpbmNlIEknbSBhbHJlYWR5IGluIHRoaXMgYXJlYSwgbGV0J3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhhdCBgVVNCX0dfV0VCQ0FNYCBpcyBwcm9wZXJseSBjb25maWd1cmVkOyBqdXN0IHRvIGJlIHN1cmUsIG1heWJlIHRoZXJlJ3MgYSByZWFzb24gdGhleSBhcmUgbGlua2VkLCBsZXQncyBleHBsb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjk1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0Mjo0Mi42NjExMDQxNTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNjk4MTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfR19XRUJDQU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDk3PWVuZGlmXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAwLSMgb3IgdmlkZW8gY2xhc3MgZ2FkZ2V0IGRyaXZlcnMpLCBvciBzcGVjaWZpYyBoYXJkd2FyZSwgaGVyZS5cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTAxOmNvbmZpZyBVU0JfR19XRUJDQU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAyLVxcdHRyaXN0YXRlIFxcXCJVU0IgV2ViY2FtIEdhZGdldFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NDIuNzEyODA4ODg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTg3OTIxNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXQgcGxheSBoZXJlLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQgaWRlbnRpZnlpbmcgdGhlIGRpcmVjdCByZWxhdGlvbnNoaXBzOyBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgY2hhbmdlcyBvciBmYWlsdXJlcyB3aXRoaW4gdGhvc2UgZGVwZW5kZW50IGNvbXBvbmVudHMuIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBib3R0bGVuZWNrcywgc2luZ2xlIHBvaW50cyBvZiBmYWlsdXJlLCBhbmQgdGhlIGNhc2NhZGluZyBlZmZlY3RzIGEgcHJvYmxlbSBpbiBvbmUgYXJlYSBjb3VsZCB0cmlnZ2VyIGFjcm9zcyB0aGUgc3lzdGVtLiBJdCdzIGFib3V0IGJ1aWxkaW5nIGEgbWVudGFsIG1hcCBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlIGFuZCBwaW5wb2ludGluZyB0aGUgY3JpdGljYWwgcGF0aHdheXMuIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBjb2RlLCBsaWJyYXJ5IHZlcnNpb25zLCBhbmQgZXh0ZXJuYWwgc2VydmljZXMgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgdGhpbmcgbGVhbnMgb24gYW5kIGhvdyByb2J1c3QgKG9yIGZyYWdpbGUpIHRob3NlIGxpbmtzIGFyZS4gRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlIHdlYWsgbGlua3MgYW5kIGFudGljaXBhdGUgd2hlcmUgcHJvYmxlbXMgbWlnaHQgYXJpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjQ2Ljg3MTYwNDA2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTAwOlxcdCMgb3IgdmlkZW8gY2xhc3MgZ2FkZ2V0IGRyaXZlcnMpLCBvciBzcGVjaWZpYyBoYXJkd2FyZSwgaGVyZS5cXG4gNTAxOlxcdGNvbmZpZyBVU0JfR19XRUJDQU1cXG4gNTAyOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgV2ViY2FtIEdhZGdldFxcXCJcXG4gNTAzOlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWXFxuIDUwNDpcXHRcXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbiA1MDU6XFx0XFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcXG4gNTA2OlxcdFxcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xcbiA1MDc6XFx0XFx0c2VsZWN0IFVTQl9GX1VWQ1xcbiA1MDg6XFx0XFx0aGVscFxcbiA1MDk6XFx0XFx0ICBUaGUgV2ViY2FtIEdhZGdldCBhY3RzIGFzIGEgY29tcG9zaXRlIFVTQiBBdWRpbyBhbmQgVmlkZW8gQ2xhc3NcXG4gNTEwOlxcdFxcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xcbiA1MTE6XFx0XFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXFxuIDUxMjpcXHRcXG4gNTEzOlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gNTE0OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdfd2ViY2FtXFxcIi5cXG4gNTE1OlxcdFxcbiA1MTY6XFx0Y29uZmlnIFVTQl9SQVdfR0FER0VUXFxuIDUxNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIFJhdyBHYWRnZXRcXFwiXFxuIDUxODpcXHRcXHRoZWxwXFxuIDUxOTpcXHRcXHQgIFVTQiBSYXcgR2FkZ2V0IGlzIGEgZ2FkZ2V0IGRyaXZlciB0aGF0IGdpdmVzIHVzZXJzcGFjZSBsb3ctbGV2ZWxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NDYuODcxNzAyOTc1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTY1MDYyNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBHYWRnZXQgV2ViY2FtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYFVTQl9HX1dFQkNBTWAgc2V0dXAuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIENsZWFybHksIGBWSURFT19ERVZgIGlzIGZ1bmRhbWVudGFsOyB0aGF0IG1ha2VzIHNlbnNlLiBOb3csIHRvIGFjdHVhbGx5IHRlc3QgdGhlc2UgZ2FkZ2V0cyBwcm9wZXJseSwgSSdtIGdvaW5nIHRvIG5lZWQgYFVTQl9HQURHRVRgIGFuZCBlaXRoZXIgYFVTQl9EVU1NWV9IQ0RgIG9yIHBvdGVudGlhbGx5IGBVU0JfUkFXX0dBREdFVGAuIEl0IGRlcGVuZHMgb24gdGhlIHNwZWNpZmljcyBvZiBob3cgSSB3YW50IHRvIGFwcHJvYWNoIHRoZSBmdXp6aW5nLiBUaGlzIGFsbCBzZWVtcyBsb2dpY2FsLlxuXG5BaCwgbG9va3MgbGlrZSB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIEludGVyZXN0aW5nLi4uIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRob3NlIGZ1bmN0aW9ucyB3aGVuIEknbSBkaWdnaW5nIGludG8gdGhlIHNvdXJjZSBjb2RlLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBhcmUgbGlrZWx5IHRvIGJlLiBUaW1lIHRvIGlkZW50aWZ5IHRob3NlIGZvY3VzIHN5bWJvbHMsIGFuZCBzZWUgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NTEuMDI4MjEyMzk1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDYxNDY4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1dmNfdjRsMl9zdHJlYW1vblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUxOT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTIxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY0OT1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYwLVxcdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NjE6XFx0LnZpZGlvY19zdHJlYW1vbiA9IHV2Y192NGwyX3N0cmVhbW9uLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2Mi1cXHQudmlkaW9jX3N0cmVhbW9mZiA9IHV2Y192NGwyX3N0cmVhbW9mZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NTEuMDgyODMzOTg5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NDQ5ODMyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWaWRlbyBTdHJlYW1pbmcgRW5hYmxlbWVudCoqXG5cbk9rYXksIHNvIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgZGVmaW5lZCBhcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0J3MgZnVuZGFtZW50YWxseSBhY3RpbmcgYXMgYW4gaW9jdGwgb3BlcmF0aW9uLiBUaGF04oCZcyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdoZW4gdGhpcyBjb21tYW5kIGlzIGV4ZWN1dGVkLiBSaWdodCwgc28gd2hlcmUgZG8gSSBnbyBuZXh0PyBMZXQncyBjaGVjayBgdXZjZ192aWRlb19lbmFibGVgLiBUaGF0J3MgbGlrZWx5IHRoZSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSBlbmFibGVtZW50IHBhcnQgb2YgdGhlIGRyaXZlci4gTGV04oCZcyBmb2xsb3cgdGhlIGxvZ2ljYWwgZmxvdyBvZiB0aGlzIGFuZCBzZWUgaWYgaXQgaXMgcmVsYXRlZCB0byBVVkMgY2FtZXJhIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgyMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQyOjU2LjgyNzgxOTYyNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0OTEzNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjZ192aWRlb19lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MjA9dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzNi1cXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUzNzpcXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTY4NT11dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzYyLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjM6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oPTE1PXN0cnVjdCB1dmNfdmlkZW87XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oLTE2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaDoxNzppbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaC0xOC1pbnQgdXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDI6NTYuODc3MzE1NjE5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMjY5MDA3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVVZDIERyaXZlciBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBgdXZjZ192aWRlb19lbmFibGVgIGlzbid0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIG15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCBgdXZjX3Y0bDJfaW9jdGxfb3BzYD8gVGhhdCBzZWVtcyBpbXBvcnRhbnQsIHJpZ2h0PyBJIHJlY2FsbCBzZWVpbmcgaXQgaW4gYHV2Y192NGwyLmNgLCBzbyBpdOKAmXMgbGlrZWx5IGVpdGhlciBleHBvcnRlZCBvciB1c2VkIHdpdGhpbiB0aGF0IGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhlbiBpcyB3aGVyZSAqZWxzZSogdGhpcyBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBzdHJ1Y3QgaXMgYmVpbmcgdXNlZCBpbiB0aGUgZHJpdmVyLiBMZXQncyB0cmFjZSB0aG9zZSBjYWxscyBhbmQgZmluZCBvdXQuIFRoaXMgbGlrZWx5IGhvbGRzIHRoZSBrZXkgdG8gdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDQ4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDM6MDEuMTA0MjE5MjQ5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM4MTg0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1dmNfdjRsMl9pb2N0bF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYz00NTA9dXZjX3JlZ2lzdGVyX3ZpZGVvKHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYy00NTktXFx0dXZjLVxcdTAwM2V2ZGV2LmZvcHMgPSBcXHUwMDI2dXZjX3Y0bDJfZm9wcztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91dmMuYzo0NjA6XFx0dXZjLVxcdTAwM2V2ZGV2LmlvY3RsX29wcyA9IFxcdTAwMjZ1dmNfdjRsMl9pb2N0bF9vcHM7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdXZjLmMtNDYxLVxcdHV2Yy1cXHUwMDNldmRldi5yZWxlYXNlID0gdXZjX3ZkZXZfcmVsZWFzZTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTYzND11dmNfdjRsMl9pb2N0bF9kZWZhdWx0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgYm9vbCB2YWxpZF9wcmlvLFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY0OTpjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY1MC1cXHQudmlkaW9jX3F1ZXJ5Y2FwID0gdXZjX3Y0bDJfcXVlcnljYXAsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuaC0xNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuaDoxNjpleHRlcm4gY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIHV2Y192NGwyX2lvY3RsX29wcztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuaC0xNy1leHRlcm4gY29uc3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIHV2Y192NGwyX2ZvcHM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjAxLjE1MTYwNjMyNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjMyNzg0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBVVkMgR2FkZ2V0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGB1dmNnX3ZpZGVvX2VuYWJsZWAgZmVlbHMgbGlrZSBhIGdvb2Qga2V5IHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nLiBJdCdzIGZpeGluZyBhIGJ1ZyBpbiB0aGUgVVZDIGdhZGdldCBkcml2ZXIsIHdoaWNoIGlzIGdyZWF0LiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgaG93IHRoaXMgZml4IGlzIGFjY2Vzc2VkLiBBaCwgaXTigJlzIHJlYWNoYWJsZSB0aHJvdWdoIGB2NGwyIGlvY3Rsc2Agb24gdGhlIFVWQyBnYWRnZXQgZGV2aWNlIG5vZGUuIFRoYXQgbWFrZXMgc2Vuc2UuXG5cblJpZ2h0LCB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLiBJJ20gdGhpbmtpbmcgd2UnbGwgbmVlZCBlaXRoZXIgYFVTQl9DT05GSUdGU19GX1VWQ2Agb3IgYFVTQl9HX1dFQkNBTWAuIExldCdzIGp1c3QgY29uZmlybSBpZiBgVVNCX0ZfVVZDYCBpdHNlbGYgaXMgc3VmZmljaWVudC4gR29vZCwgaXQgYXBwZWFycyBgVVNCX0ZfVVZDYCBpcyBzZWxlY3RlZCBieSBib3RoIGBVU0JfQ09ORklHRlNfRl9VVkNgIGFuZCBgVVNCX0dfV0VCQ0FNYCwgc28gd2UncmUgb24gdGhlIHJpZ2h0IHRyYWNrLlxuXG5Pa2F5LCBsZXQncyBpbmNsdWRlIGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gIHRvIGJlIHNhZmUuIEhhbmcgb24sIGhvbGQgdGhhdCB0aG91Z2h0LiBXZSdyZSBvYnZpb3VzbHkgZ29pbmcgdG8gbmVlZCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFVTQl9HQURHRVRgIGFzIHdlbGwsIHJpZ2h0PyBMZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR0FER0VUYCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgbWlzcyBhbnl0aGluZyBvYnZpb3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTg4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjA3Ljc4NDM5MzQ1NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzMzU0NTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfR0FER0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3Nzpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cXHRib29sIFxcXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTAwLVxcdGludCBcXFwiTWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTE2OmNvbmZpZyBVU0JfR0FER0VUX1NUT1JBR0VfTlVNX0JVRkZFUlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXFx0aW50IFxcXCJOdW1iZXIgb2Ygc3RvcmFnZSBwaXBlbGluZSBidWZmZXJzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI3OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Mjc5OmNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzQ3PWNvbmZpZyBVU0JfRUcyMFRcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MTpjb25maWcgVVNCX0dBREdFVF9YSUxJTlhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggVVNCIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDM6MDguMDY3NzUzOTI0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjA1NDQ4MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIFVTQiBWaWRlbyBHYWRnZXQgU3VwcG9ydCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBidWlsZGluZyBhIHZpZGVvIGdhZGdldCwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBjb3JyZWN0IGtlcm5lbCBtb2R1bGVzIGVuYWJsZWQuIE15IGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCB3ZSdsbCBuZWVkIHRvIGluY2x1ZGUgdGhlIGJhc2ljczogYFVTQl9HQURHRVRgIGFuZCBgVVNCX0NPTkZJR0ZTYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgYW55IFVTQiBnYWRnZXQgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzeXN0ZW0gaXMgaG93IHdlJ2xsIGxpa2VseSBkZWZpbmUgdGhlIGdhZGdldCdzIGJlaGF2aW9yLiBJIGFsc28gdGhpbmsgd2Ugd2lsbCBuZWVkIGBVU0JfQ09ORklHRlNfRl9VVkNgIHRvIHN1cHBvcnQgVVZDIGZ1bmN0aW9uYWxpdHkgdXNpbmcgY29uZmlnZnMuXG5cbkhvd2V2ZXIsIGEgcXVpY2sgc2Vjb25kIHRob3VnaHQsIGBVU0JfR19XRUJDQU1gIGlzIG5vdCB0aGUgYWN0dWFsIG1vZHVsZSBhcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgaXMgYWN0dWFsbHkgcmVzcG9uc2libGUgZm9yIFVWQywgYW5kIEkgaGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggbXkgbmFtaW5nLiBJbnN0ZWFkIG9mIHRoZSBuYW1lIG9mIHRoZSBnYWRnZXQsIHRoZSBtb2R1bGUncyBtb3JlIGxpa2VseSBuYW1lIGlzIGBVU0JfRl9VVkNgLiBJIHNob3VsZCBjb25maXJtIHRoYXQncyBhY2N1cmF0ZS4gVG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkganVtcCBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIGV4YW1pbmUgdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgcmVsZXZhbnQgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBmaW5hbGl6ZSBhbnl0aGluZywgc28gSSdsbCBjaGVjayB0aGF0IEtjb25maWcgZmlsZS4gSSBjYW4ndCBsZWF2ZSB0aGlzIHRvIGNoYW5jZS4gQSBtaXNjb25maWd1cmVkIGtlcm5lbCBjb3VsZCBlYXNpbHkgZGVyYWlsIHRoZSBlbnRpcmUgcHJvamVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjE4LjI3MzIwNTQ3OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NTE4MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1VWQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIwMj1jb25maWcgVVNCX0ZfVUFDMlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIwNTpjb25maWcgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjE4LjMzNjg2MzgwMloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzg5OTk0MDE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5IGZvciBVU0IgV2ViY2FtIEdhZGdldCBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gYFVTQl9GX1VWQ2AgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCwgaXQgaGFzIG5vIHByb21wdC4gVGhhdCBtZWFucyB0aGUgcmVhbCB3b3JrIGlzIHRvIGdldCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBvciBgVVNCX0dfV0VCQ0FNYCBnb2luZy4gTGV0J3Mgc2VlLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFVTQl9DT05GSUdGU19GX1VWQ2AuIEFscmlnaHQsIGl0IG5lZWRzIGBVU0JfQ09ORklHRlNgIGFuZCBgVklERU9fREVWYC4gUmlnaHQsIG1ha2VzIHNlbnNlLiBOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgY2hlY2sgYFVTQl9HX1dFQkNBTWAgdG9vLiBUaGF0IGFsc28gbmVlZHMgYFZJREVPX0RFVmAuIEdvb2QuXG5cbk5vdyBsZXQncyBjb25zaWRlciB0aGUgbG93ZXIgbGV2ZWwgc3R1ZmYuIEknbGwgbmVlZCBgVVNCX0RVTU1ZX0hDRGAgYW5kIGBVU0JfUkFXX0dBREdFVGAgZW5hYmxlZC4gU28gdGhlIGZ1bGwgbGlzdCBvZiB3aGF0IEkgbmVlZCBlbmFibGVkIGlzOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9SQVdfR0FER0VUYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLlxuXG5Pa2F5LCBuZXh0IEknbGwgbW92ZSBvbiB0byBhIHF1aWNrIGNoZWNrIG9mIHRoZSBzeW1ib2xzLiBMZXQgbWUgbWFrZSBzdXJlIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXMgdGhlIG9ubHkgc3ltYm9sIHRvIGZvY3VzIG9uLiBXYWl0LCB3aGF0IGFib3V0IGB1dmNfdjRsMl9zdHJlYW1vbmA/IFRoYXQncyBzdGF0aWMsIHNvIGl0IHNob3VsZCBiZSBmaW5lIGFuZCBJIGRvbid0IG5lZWQgdG8gY29uc2lkZXIgaXQuIFRoZSBnb2FsIGlzIHRvIGlkZW50aWZ5IGFueSBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGltZSB0byBsb29rIGludG8gYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jYCBhbmQgaHVudCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTgwLCJPdXRwdXRUb2tlbnMiOjc1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjMyLjIzNjgwNjM4OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNjU0MjQzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjMyLjM5OTQ5Njg5MloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzc0MjM2OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVZDIFY0TDIgRHJpdmVyIENvZGUqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpdGhpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNgLiBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgYGdyZXBgIGZvciB0aGlzLCBiZWNhdXNlIGl0J3MgZmFzdCBhbmQgZWZmZWN0aXZlIGZvciBwYXR0ZXJuIG1hdGNoaW5nIHdpdGhpbiB0ZXh0IGZpbGVzLlxuXG5JJ20gY29uc3RydWN0aW5nIGEgcmVndWxhciBleHByZXNzaW9uLiBUaGUgb2JqZWN0aXZlIGlzIHRvIGlzb2xhdGUgYW5kIGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLiBJJ20gZ29pbmcgdG8gdXNlIGAtRWAgdG8gZW5hYmxlIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIHdoaWNoIG1ha2VzIHRoZSBwYXR0ZXJuIGEgYml0IG1vcmUgcmVhZGFibGUuXG5cblRoZSBjb3JlIG9mIHRoZSByZWdleCBpcyB0aGlzOiBgJ15bYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgnYC5cblxuTGV0J3MgYnJlYWsgaXQgZG93bjpcbiogICBgXmA6IFN0YXJ0IG9mIHRoZSBsaW5lLiBXZSB3YW50IHRvIGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgdG8gY2F0Y2ggdGhlIGRlY2xhcmF0aW9uLlxuKiAgIGBbYS16QS1aX11bYS16QS1aMC05X10qYDogVGhpcyBwYXJ0IHNob3VsZCBjYXRjaCB0aGUgcmV0dXJuIHR5cGUuIEl0IHN0YXJ0cyB3aXRoIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyIG9yIHVuZGVyc2NvcmUgKGBbYS16QS1aX11gKSBhbmQgdGhlbiBjYW4gYmUgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmVzIChgW2EtekEtWjAtOV9dKmApLiBUaGlzIGFjY291bnRzIGZvciB2YWxpZCBDIGlkZW50aWZpZXJzIGZvciByZXR1cm4gdHlwZXMuXG4qICAgYCBgOiBBIHNwYWNlLiBUaGlzIGlzIHRvIHNlcGFyYXRlIHRoZSByZXR1cm4gdHlwZSBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLlxuKiAgIGBbYS16QS1aX11bYS16QS1aMC05X10qYDogVGhpcyBwYXJ0LCBhZ2Fpbiwgc2hvdWxkIGJlIGNhdGNoaW5nIHRoZSBmdW5jdGlvbiBuYW1lIGl0c2VsZi4gSXQgbmVlZHMgdG8gZm9sbG93IHRoZSBzYW1lIHJ1bGVzIGFzIHRoZSByZXR1cm4gdHlwZS5cbiogICBgXFwoYDogRmluYWxseSwgdGhlIG9wZW5pbmcgcGFyZW50aGVzaXMgYChgLiBUaGUgYmFja3NsYXNoIGlzIGltcG9ydGFudCBmb3IgZXNjYXBpbmcgdGhlIHBhcmVudGhlc2lzLCBzaW5jZSBwYXJlbnRoZXNpcyBoYXZlIHNwZWNpYWwgbWVhbmluZyB3aXRoaW4gcmVndWxhciBleHByZXNzaW9ucy5cblxuVGhlIHdob2xlIHBhdHRlcm4gdGhlbiBsb29rcyB0byBpZGVudGlmeSBsaW5lcyB0aGF0IGRlY2xhcmUgYSBmdW5jdGlvbiB0aGF0OlxuXG4qICAgU3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLlxuKiAgIEJlZ2lucyB3aXRoIGEgdmFsaWQgQyB0eXBlLCBmb2xsb3dlZCBieSBhIHNwYWNlLCBmb2xsb3dlZCBieSBhIHZhbGlkIEMgaWRlbnRpZmllci5cbiogICBDb25jbHVkZXMgd2l0aCBhbiBvcGVuIHBhcmVudGhlc2lzLCBpbmRpY2F0aW5nIHRoZSBzdGFydCBvZiBhIGZ1bmN0aW9uIHNpZ25hdHVyZSwgdGhlcmVmb3JlIGEgZnVuY3Rpb24uXG5cblRoaXMgKnNob3VsZCogZ2l2ZSBtZSBhIGNsZWFuIGxpc3Qgb2YgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW4gdGhlIHRhcmdldCBmaWxlLCB3aGljaCBJIGNhbiBxdWlja2x5IHBhcnNlLiBUaGlzIGlzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGluaXRpYWwgY29kZSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3MTEsIk91dHB1dFRva2VucyI6NzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0MzozOC43NzM3MzU5MDlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjExNjU1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBbYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjM4LjgyMTM1MzcyNFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTI3MDg0NTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgVVZDIFZpZGVvIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiBob3cgdGhpcyBVVkMgdmlkZW8gZHJpdmVyLCBzcGVjaWZpY2FsbHkgYHV2Y192NGwyLmNgLCBmdW5jdGlvbnMuICBJIHRoaW5rIHRoZSBiZXN0IHN0YXJ0aW5nIHBvaW50IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZSBpdHNlbGYuICBJIGNvdWxkIGp1c3Qgb3BlbiBgdXZjX3Y0bDIuY2AgYW5kIHN0YXJ0IHJlYWRpbmcsIGJ1dCB0aGF0IGZlZWxzIGEgYml0IGluZWZmaWNpZW50LiBBIHF1aWNrIGBncmVwYCBtaWdodCBiZSBtb3JlIGVmZmVjdGl2ZSB0byBnZXQgYSBxdWljayBvdmVydmlldy4gSSdtIHRoaW5raW5nIGEgZ3JlcCBleHByZXNzaW9uIGxpa2UgYCdeW2EtekEtWl9dJ2Agd291bGQgZmlsdGVyIGZvciBsaW5lcyBzdGFydGluZyB3aXRoIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmVzIOKAkyBhIGdvb2Qgd2F5IHRvIGdyYWIgZnVuY3Rpb24gZGVmaW5pdGlvbnMgYW5kIGxpa2VseSBnbG9iYWwgdmFyaWFibGUgZGVjbGFyYXRpb25zIGF0IHRoZSB0b3AgbGV2ZWwuIFRoaXMgYXBwcm9hY2ggd291bGQgYWxsb3cgbWUgdG8gcXVpY2tseSBzY2FuIHRoZSBkcml2ZXIsIHNlZSB3aGF0IGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCwgaG93IHRoZXkncmUgbmFtZWQsIGFuZCBnZXQgYSBzZW5zZSBvZiB0aGUgZHJpdmVyJ3MgYXJjaGl0ZWN0dXJlIGFuZCBlbnRyeSBwb2ludHMgYmVmb3JlIGdldHRpbmcgYnVyaWVkIGluIHRoZSBkZXRhaWxzLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgaGlnaC1sZXZlbCBtYXAgdG8gbmF2aWdhdGUgdGhlIGltcGxlbWVudGF0aW9uIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBhbGwgZml0cyB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzNjUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0Mzo0Mi43NDg0NDA5ODZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzI3MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCB1dmNfZm9ybWF0X2Rlc2MgKnRvX3V2Y19mb3JtYXQoc3RydWN0IHV2Y2dfZm9ybWF0ICp1Zm9ybWF0KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTMxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTU5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYwOnN0YXRpYyBpbnQgdXZjX3Y0bDJfZ2V0X2J5dGVzcGVybGluZShzdHJ1Y3QgdXZjZ19mb3JtYXQgKnVmb3JtYXQsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjEtXFx0XFx0XFx0ICAgICAgc3RydWN0IHV2Y2dfZnJhbWUgKnVmcmFtZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTc1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjc2OnN0YXRpYyBpbnQgdXZjX2dldF9mcmFtZV9zaXplKHN0cnVjdCB1dmNnX2Zvcm1hdCAqdWZvcm1hdCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03Ny1cXHRcXHQgICAgICAgc3RydWN0IHV2Y2dfZnJhbWUgKnVmcmFtZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTg0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjg1OnN0YXRpYyBzdHJ1Y3QgdXZjZ19mb3JtYXQgKmZpbmRfZm9ybWF0X2J5X2luZGV4KHN0cnVjdCB1dmNfZGV2aWNlICp1dmMsIGludCBpbmRleClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy04Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xMDEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MTAyOnN0YXRpYyBzdHJ1Y3QgdXZjZ19mcmFtZSAqZmluZF9mcmFtZV9ieV9pbmRleChzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTEwMy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHV2Y2dfZm9ybWF0ICp1Zm9ybWF0LFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTIzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjEyNDpzdGF0aWMgc3RydWN0IHV2Y2dfZm9ybWF0ICpmaW5kX2Zvcm1hdF9ieV9waXgoc3RydWN0IHV2Y19kZXZpY2UgKnV2YyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xMjUtXFx0XFx0XFx0XFx0XFx0ICAgICAgdTMyIHBpeGVsZm9ybWF0KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjE0NTpzdGF0aWMgc3RydWN0IHV2Y2dfZnJhbWUgKmZpbmRfY2xvc2VzdF9mcmFtZV9ieV9zaXplKHN0cnVjdCB1dmNfZGV2aWNlICp1dmMsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMTQ2LVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCB1dmNnX2Zvcm1hdCAqdWZvcm1hdCxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTE5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoxOTM6c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjE5NDp1dmNfc2VuZF9yZXNwb25zZShzdHJ1Y3QgdXZjX2RldmljZSAqdXZjLCBzdHJ1Y3QgdXZjX3JlcXVlc3RfZGF0YSAqZGF0YSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0xOTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMjE1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjIxNjpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjE3OnV2Y192NGwyX3F1ZXJ5Y2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfY2FwYWJpbGl0eSAqY2FwKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0yMjktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjMwOnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoyMzE6dXZjX3Y0bDJfZ2V0X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTIzMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MjQ5OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzoyNTA6dXZjX3Y0bDJfdHJ5X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTI1MS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zMDYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzA3OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzozMDg6dXZjX3Y0bDJfc2V0X2Zvcm1hdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTMwOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zMjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6MzI4OnN0YXRpYyBpbnQgdXZjX3Y0bDJfZ19wYXJtKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy0zMjktXFx0XFx0XFx0ICAgc3RydWN0IHY0bDJfc3RyZWFtcGFybSAqcGFybSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTM1NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzozNTU6c3RhdGljIGludCB1dmNfdjRsMl9zX3Bhcm0oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTM1Ni1cXHRcXHRcXHQgICBzdHJ1Y3QgdjRsMl9zdHJlYW1wYXJtICpwYXJtKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtMzc3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjM3ODpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6Mzc5OnV2Y192NGwyX2VudW1fZnJhbWVpbnRlcnZhbHMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTM4MC1cXHRcXHRzdHJ1Y3QgdjRsMl9mcm1pdmFsZW51bSAqZml2YWwpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00MTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDE3OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0MTg6dXZjX3Y0bDJfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00MTktXFx0XFx0c3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDQzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ0NDpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDQ1OnV2Y192NGwyX2VudW1fZm9ybWF0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfZm10ZGVzYyAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00NDYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ2ODpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDY5OnV2Y192NGwyX3JlcWJ1ZnMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBzdHJ1Y3QgdjRsMl9yZXF1ZXN0YnVmZmVycyAqYilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00NzAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjQ4MTpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDgyOnV2Y192NGwyX3F1ZXJ5YnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfYnVmZmVyICpiKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00OTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NDkxOnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo0OTI6dXZjX3Y0bDJfcWJ1ZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX2J1ZmZlciAqYilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy00OTMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTA4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUwOTpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTEwOnV2Y192NGwyX2RxYnVmKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0IHY0bDJfYnVmZmVyICpiKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUxMS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTE5OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MjA6dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MjEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTUwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjU1MTpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTUyOnV2Y192NGwyX3N0cmVhbW9mZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTU1My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01NzMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTc0OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1NzU6dXZjX3Y0bDJfc3Vic2NyaWJlX2V2ZW50KHN0cnVjdCB2NGwyX2ZoICpmaCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01NzYtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB2NGwyX2V2ZW50X3N1YnNjcmlwdGlvbiAqc3ViKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYwMzpzdGF0aWMgdm9pZCB1dmNfdjRsMl9kaXNhYmxlKHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjA0LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTYxMi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2MTM6c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYxNDp1dmNfdjRsMl91bnN1YnNjcmliZV9ldmVudChzdHJ1Y3QgdjRsMl9maCAqZmgsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjE1LVxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB2NGwyX2V2ZW50X3N1YnNjcmlwdGlvbiAqc3ViKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjMyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYzMzpzdGF0aWMgbG9uZ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjYzNDp1dmNfdjRsMl9pb2N0bF9kZWZhdWx0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgYm9vbCB2YWxpZF9wcmlvLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTYzNS1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY0OTpjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY1MC1cXHQudmlkaW9jX3F1ZXJ5Y2FwID0gdXZjX3Y0bDJfcXVlcnljYXAsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02NzMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6Njc0OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NzU6dXZjX3Y0bDJfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy02NzYte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY5MzpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6Njk0OnV2Y192NGwyX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjk1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTcxMi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MTM6c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjcxNDp1dmNfdjRsMl9tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03MTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzIxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjcyMjpzdGF0aWMgX19wb2xsX3RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo3MjM6dXZjX3Y0bDJfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03MjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzMxLSNpZm5kZWYgQ09ORklHX01NVVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjczMjpzdGF0aWMgdW5zaWduZWQgbG9uZyB1dmNnX3Y0bDJfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNzMzLVxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgcGdvZmYsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy03NDItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NzQzOmNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyB1dmNfdjRsMl9mb3BzID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTc0NC1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0Mzo0Mi43OTQ3NzM2OTJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxNTc2NTc4NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipEaXZpbmcgaW50byB0aGUgVVZDIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgY29yZSBVVkMgZHJpdmVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgYHV2Y192NGwyLmNgLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHNvIGZhcjsgdGhlIGRlc2lnbiBpcyBjbGVhbi4gSSdtIG5vdGluZyB0aGF0IHRoZSBgdXZjX3Y0bDIuY2AgZmlsZSAqb25seSogZXhwb3NlcyBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBhbmQgYHV2Y192NGwyX2ZvcHNgIGF0IHRoZSBnbG9iYWwgc2NvcGUg4oCTIG5vIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGp1bXAgb3V0IGltbWVkaWF0ZWx5LiBUaGF0J3MgYSBnb29kIHNpZ24gb2YgcG90ZW50aWFsIG1vZHVsYXJpdHkgYW5kIHdlbGwtZGVmaW5lZCBpbnRlcmZhY2VzLCB3aGljaCBpcyB3aGF0IEknZCBleHBlY3QuIE5vdywgSSBuZWVkIHRvIHNlZSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLCBwYXJ0aWN1bGFybHkgdGhlIFVTQiBnYWRnZXQgc2lkZSBvZiB0aGluZ3MuIEknbSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jYCB0byBpZGVudGlmeSB3aGF0IHRoaXMgZmlsZSBleHBvcnRzLiBUaGUgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBnYWRnZXQgZnVuY3Rpb24gaW50ZXJmYWNlcyB3aXRoIHRoZSB2NGwyIGNvcmUuIExvb2tpbmcgZm9yIGFueSBleHBvcnRlZCBzeW1ib2xzIHdpbGwgaWxsdW1pbmF0ZSB0aGUgY29ubmVjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODMzLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDM6NTIuOTUyNDM0Mzg3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzk1NjYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjI4OnN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6Mjk6dXZjX3ZpZGVvX2VuY29kZV9oZWFkZXIoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sIHN0cnVjdCB1dmNfYnVmZmVyICpidWYsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTMwLVxcdFxcdHU4ICpkYXRhLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTcxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3MjpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjczOnV2Y192aWRlb19lbmNvZGVfZGF0YShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbywgc3RydWN0IHV2Y19idWZmZXIgKmJ1ZixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzQtXFx0XFx0dTggKmRhdGEsIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtODktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjkwOnN0YXRpYyB2b2lkXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjkxOnV2Y192aWRlb19lbmNvZGVfYnVsayhzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTkyLVxcdFxcdHN0cnVjdCB1dmNfYnVmZmVyICpidWYpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMTMyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzoxMzM6c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MTM0OnV2Y192aWRlb19lbmNvZGVfaXNvY19zZyhzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSwgc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTEzNS1cXHRcXHRzdHJ1Y3QgdXZjX2J1ZmZlciAqYnVmKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTE5OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjAwOnN0YXRpYyB2b2lkXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjIwMTp1dmNfdmlkZW9fZW5jb2RlX2lzb2Moc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEsIHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yMDItXFx0XFx0c3RydWN0IHV2Y19idWZmZXIgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yMzctICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjIzODpzdGF0aWMgdm9pZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzoyMzk6dXZjX3ZpZGVvX2ZyZWVfcmVxdWVzdChzdHJ1Y3QgdXZjX3JlcXVlc3QgKnVyZXEsIHN0cnVjdCB1c2JfZXAgKmVwKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yNDAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTI1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjU2OnN0YXRpYyBpbnQgdXZjZ192aWRlb19lcF9xdWV1ZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbywgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTI1Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMjgwLS8qIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aCB2aWRlby1cXHUwMDNlcmVxX2xvY2sgaGVsZC4gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MjgxOnN0YXRpYyBpbnQgdXZjZ192aWRlb191c2JfcmVxX3F1ZXVlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy0yODItXFx0c3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEsIGJvb2wgcXVldWVfdG9fZXApXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtMzI5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzozMzA6c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6MzMxOnV2Y192aWRlb19jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTMzMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo0MjE6c3RhdGljIHZvaWQgdXZjZ192aWRlb19od19zdWJtaXQoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00ODItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ4MzpzdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ4NDp1dmNfdmlkZW9fZnJlZV9yZXF1ZXN0cyhzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNDg1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy00OTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjQ5NzpzdGF0aWMgdm9pZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo0OTg6dXZjX3ZpZGVvX3ByZXBfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTQ5OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNTQ2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1NDc6c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1NDg6dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy01NDkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU5My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NTk0OmVycm9yOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy01OTUtXFx0dXZjX3ZpZGVvX2ZyZWVfcmVxdWVzdHModmlkZW8pO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTYwOC0gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NjA5OnN0YXRpYyB2b2lkIHV2Y2dfdmlkZW9fcHVtcChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTYxMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNjgzLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo2ODQ6aW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjY4NTp1dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTY4Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzYyLSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjM6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTgwNi0gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6ODA3OmludCB1dmNnX3ZpZGVvX2luaXQoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8sIHN0cnVjdCB1dmNfZGV2aWNlICp1dmMpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTgwOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQzOjUzLjAwMDM5OTkzMloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQ1MDQzNzM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVZDIEdhZGdldCBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBgdXZjZ192aWRlb19lbmFibGVgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdG8gZm9jdXMgb24gaGVyZS4gSXQncyBub24tc3RhdGljLCB3aGljaCBpcyBwZXJmZWN0IGZvciBmdXp6aW5nLiBgdXZjZ192aWRlb19kaXNhYmxlYCBhbmQgYHV2Y2dfdmlkZW9faW5pdGAgYXJlIGFsc28gbm9uLXN0YXRpYywgc28gdGhvc2UgYXJlIGFsc28gcG90ZW50aWFsbHkgdXNlZnVsLCBidXQgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyBtb2RpZmllZCBkaXJlY3RseSBieSB0aGlzIHBhdGNoLlxuXG5JIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlIHRoZSByaWdodCBjb25maWd1cmF0aW9uIHN5bWJvbHMgZW5hYmxlZC4gSSdtIGdvaW5nIHRvIGVyciBvbiB0aGUgc2lkZSBvZiBjYXV0aW9uIGFuZCBpbmNsdWRlIGBVU0JfQ09ORklHRlNfRl9VVkNgIGFuZCBgVVNCX0dfV0VCQ0FNYCBhbG9uZ3NpZGUgYFVTQl9GX1VWQ2AuIEkgd2lsbCBtYWtlIHN1cmUgdG8gYWxzbyBpbmNsdWRlIGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX1JBV19HQURHRVRgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBWSURFT19ERVZgLlxuXG5Ob3csIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBhIGNvdXBsZSBvZiBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGludmFsaWQgc3RhdGVzLiBTcGVjaWZpY2FsbHksIHRoZSBhZGRlZCBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBlbnN1cmUgdGhhdCBzdHJlYW1pbmcgaXNuJ3QgaW5pdGlhdGVkIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkIG9yIGFscmVhZHkgc3RyZWFtaW5nLiBUaGVuLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIHRvIHZlcmlmeSB0aGF0IGB2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkYCBpcyB0cnVlIHdpdGhpbiBgdXZjZ192aWRlb19lbmFibGVgLiBUaGlzIGFkZGVkIGNoZWNrIHNlZW1zIHZlcnkgaW1wb3J0YW50IGFzIGl0IHByb3RlY3RzIGFnYWluc3QgZW5hYmxpbmcgdmlkZW8gb24gYW4gdW5pbml0aWFsaXplZCBlbmRwb2ludC4gVGhpcyBjaGFuZ2UgZGlyZWN0bHkgYWZmZWN0cyBob3cgdXNlcnNwYWNlIGludGVyYWN0cyB3aXRoIHRoZSBkcml2ZXIgdmlhIFY0TDIgaW9jdGxzLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXMgYSBjaGFuZ2UgdGhhdCB3YXJyYW50cyBmdXp6aW5nLCBhbmQgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBrZXkgZm9jdXMgc3ltYm9sLCBhZ2FpbiwgaXMgYHV2Y2dfdmlkZW9fZW5hYmxlYC5cblxuSSB3aWxsIGRvdWJsZS1jaGVjayB0aGF0IGBVU0JfRFVNTVlfSENEYCBpcyB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIG5hbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDY3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQ0OjA0LjQ1MDg0MjMyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDI0NTc1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0RVTU1ZX0hDRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVxcdHRyaXN0YXRlIFxcXCJEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDQ6MDQuNTA1MDkzMzU0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDQzOTEzOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgcGVyc29uYWwgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIHRoZSBVU0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgKnRoYXQqIGNoZWNrcyBvdXQuIGBVU0JfRFVNTVlfSENEYCBpcyBkZWZpbml0ZWx5IHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiB0aGlzIGNvbnRleHQuIEl0IGFsaWducyB3aXRoIHdoYXQgSSdtIGV4cGVjdGluZy4gTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbnMsIGxldCdzIHBpdm90IHRvIGV4YW1pbmUgYFVTQl9SQVdfR0FER0VUYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoaXMgaXNuJ3QgY29uZmxpY3Rpbmcgb3IgcGVyaGFwcyBwcm92aWRpbmcgYW4gdW5leHBlY3RlZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkdW1teSBob3N0IGNvbnRyb2xsZXIgc2V0dXAuIEknbGwgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhlc2UgdHdvIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG1pZ2h0IHBsYXkgdG9nZXRoZXIsIG9yIGlmIHRoZXJlJ3MgYW55IHBvdGVudGlhbCBmb3Igb3ZlcmxhcCBvciBjb25mbGljdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0MDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NDowOC4wNDk0ODc4MjhaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTE1MjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1JBV19HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUxNjpjb25maWcgVVNCX1JBV19HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTE3LVxcdHRyaXN0YXRlIFxcXCJVU0IgUmF3IEdhZGdldFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDQ6MDguMzI4NjQ1ODI4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NzA0NDIwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQsIGFzc3VtaW5nIHRoZSB1c2VyIGlzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqQ29uZmlybWF0aW9uIGFuZCBOZXh0IFN0ZXBzOiBVU0IgR2FkZ2V0IGFuZCBWaWRlbyBEZXZpY2VzKipcblxuUmlnaHQsIGBVU0JfUkFXX0dBREdFVGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IHBhdGggZm9yd2FyZCBmb3IgdGhpcy4gTm8gbmVlZCB0byBzZWNvbmQtZ3Vlc3MgdGhhdC4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoYXQgcmFiYml0IGhvbGUsIGl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8ganVzdCBxdWlja2x5IGNoZWNrIHRoZSBzdGF0dXMgb2YgYFZJREVPX0RFVmAuIE1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgZGVwZW5kZW5jaWVzIEknbSBvdmVybG9va2luZyB0aGVyZS4gQSBicmllZiBnbGFuY2UgYXQgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gc2hvdWxkIGRvIHRoZSB0cmljay4gSnVzdCB3YW50IHRvIGVuc3VyZSBhIGNsZWFuIGludGVncmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTcyNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQ0OjEzLjc5OTA5MDY3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTcwOTg0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklERU9fREVWXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbWVkaWEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvS2NvbmZpZz0xNTc9bWVudSBcXFwiTWVkaWEgY29yZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9tZWRpYS9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTYwOmNvbmZpZyBWSURFT19ERVZcXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTYxLVxcdHRyaXN0YXRlIFxcXCJWaWRlbzRMaW51eCBjb3JlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NDoxMy44ODg4MDY1MjFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjM1MzMyNDk2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgVklERU9fREVWYCBpcyB0aGUgcmlnaHQgcGF0aCB0byBleHBsb3JlLiBOb3csIEkgc2hvdWxkIG1vdmUgb24gYW5kIHRob3JvdWdobHkgaW52ZXN0aWdhdGUgYFVTQl9DT05GSUdGU2AuIEl0J3MgbGlrZWx5IHJlbGF0ZWQsIGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgdHdvIGlzIHByb2JhYmx5IGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBsYXJnZXIgc3lzdGVtLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMgb2YgdGhhdCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAwMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQ0OjM3LjQyMjA1OTM5NVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MTQwOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXFx0Ym9vbCBcXFwiR2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVxcdGJvb2wgXFxcIkFic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjY5OmNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVxcdGJvb2wgXFxcIk5ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwMzpjb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVxcdGJvb2wgXFxcIlJORElTXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cXHRib29sIFxcXCJFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM2LVxcdGJvb2wgXFxcIlBob25ldCBwcm90b2NvbFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDU6Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXFx0Ym9vbCBcXFwiTWFzcyBzdG9yYWdlXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXFx0Ym9vbCBcXFwiTG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcwLVxcdGJvb2wgXFxcIkZ1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDEzLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzE6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JRElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXFx0Ym9vbCBcXFwiTUlESSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU5LVxcdGJvb2wgXFxcIkhJRCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cXHRib29sIFxcXCJQcmludGVyIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk2LVxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6NDQ6MzcuNTg5MjA2MzM3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NDA3ODQ3NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFVWQyBHYWRnZXQgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgeWVwLCBJJ3ZlIGdvdCBpdC4gVGhlIGNvcmUgb2YgdGhpcyBpc3N1ZSBjZW50ZXJzIGFyb3VuZCB0aGUgYFVTQl9DT05GSUdGU2AgYW5kIHRoYXQncyB0aGUgY29ycmVjdCBwYXRoIGhlcmUuIEFmdGVyIHJldmlld2luZywgdGhlIGNvbmZpZ3VyYXRpb24gc2VlbXMgdG8gYmUgc3BvdCBvbjogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfUkFXX0dBREdFVGAsIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCwgYFVTQl9HX1dFQkNBTWAsIGFuZCBgVklERU9fREVWYC4gVGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIGV4YWN0bHkgd2hhdCBJJ2QgZXhwZWN0IGZvciB0aGlzIHR5cGUgb2YgZ2FkZ2V0LlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2VzLCBpdCdzIGFsbCBhYm91dCBgdXZjZ192aWRlb19lbmFibGVgLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBjcnVjaWFsIHN0YXRlIGNoZWNrcyB3aXRoaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYSBjaGVjayBvZiBgdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZGAgd2l0aGluIHRoZSBgdXZjZ192aWRlb19lbmFibGVgIGZ1bmN0aW9uLiBUaGlzIGFkZHJlc3NlcyBhIGNyaXRpY2FsIHJhY2UgY29uZGl0aW9uLiBTcGVjaWZpY2FsbHksIGl0IHByZXZlbnRzIGEgc2l0dWF0aW9uIHdoZXJlIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgY2FsbGVkIGluYXBwcm9wcmlhdGVseSwgZWl0aGVyIHdoZW4gdGhlIGRldmljZSBpc24ndCBhY3R1YWxseSBjb25uZWN0ZWQsIG9yIHdoZW4gc3RyZWFtaW5nIGlzIGFscmVhZHkgYWN0aXZlLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBhbHNvIHByZXZlbnRzIHZpZGVvIGZyb20gYmVpbmcgZW5hYmxlZCB3aGVuIHRoZSBlbmRwb2ludCBpdHNlbGYgaXMgZGlzYWJsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFuZCBjb3JlIGxvZ2ljIGZpeCB0byB0aGUgVVZDIGdhZGdldCBkcml2ZXIsIGFuZCBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIHZpYSBWNEwyIGlvY3RscyBmcm9tIHVzZXJzcGFjZS4gSXQncyBhIHNvbGlkLCBuZWNlc3NhcnkgY2hhbmdlLiBJIG5lZWQgdG8gZ2V0IHRoaXMgc2V0LXJlc3VsdCBsb2dnZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjA2LCJPdXRwdXRUb2tlbnMiOjIxNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NTozMi45OTcwNTc2MjNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMwOTA3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIixcbiAgICBcIlVTQl9SQVdfR0FER0VUXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICAgIFwiVVNCX0dfV0VCQ0FNXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dmNnX3ZpZGVvX2VuYWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgY2hlY2tzIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGNoZWNrcyBpZiBgdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VlbmFibGVkYCBpcyB0cnVlIGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBjb3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQsIG9yIHdoZW4gaXQncyBhbHJlYWR5IHN0cmVhbWluZy4gSXQgYWxzbyBwcmV2ZW50cyBlbmFibGluZyB2aWRlbyB3aGVuIHRoZSBlbmRwb2ludCBpcyBkaXNhYmxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlciwgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBWNEwyIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfUkFXX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgICBcIlVTQl9HX1dFQkNBTVwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZjZ192aWRlb19lbmFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN0YXRlIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBjaGVja3MgaWYgYHZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZW5hYmxlZGAgaXMgdHJ1ZSBpbiBgdXZjZ192aWRlb19lbmFibGVgLiBUaGlzIGZpeGVzIGEgYnVnIHdoZXJlIGB1dmNfdjRsMl9zdHJlYW1vbmAgY291bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkLCBvciB3aGVuIGl0J3MgYWxyZWFkeSBzdHJlYW1pbmcuIEl0IGFsc28gcHJldmVudHMgZW5hYmxpbmcgdmlkZW8gd2hlbiB0aGUgZW5kcG9pbnQgaXMgZGlzYWJsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgVVZDIGdhZGdldCBkcml2ZXIsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgVjRMMiBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjQ1OjMzLjE0MDE1NjA4OFoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMjIwNDUyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NTozMy4xNDA3NDg1OThaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAxMjE0NDY5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmM3MTYxODc1MDFiNzliY2JhYjI3OWRhYWUxMGE5OTY5NjE3YmZkM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDEyOjQyOjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuaW5kZXggZGZhMDUyMWEyNDNhYy4uZGE4NTdjMmM1OGQzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuQEAgLTUyNyw2ICs1MjcsMTIgQEAgdXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbiBcdGlmICh0eXBlICE9IHZpZGVvLVx1MDAzZXF1ZXVlLnF1ZXVlLnR5cGUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHV2Yy1cdTAwM2VzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmICh1dmMtXHUwMDNlc3RhdGUgIT0gVVZDX1NUQVRFX0NPTk5FQ1RFRClcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuIFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbmluZGV4IDJmOTcwMGIzZjFiNjQuLmQ0YWVlZGFjY2IwNmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuQEAgLTc2NCw3ICs3NjQsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4rXHRpZiAodmlkZW8tXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZCkge1xuIFx0XHR1dmNnX2luZm8oXHUwMDI2dmlkZW8tXHUwMDNldXZjLVx1MDAzZWZ1bmMsXG4gXHRcdFx0ICBcIlZpZGVvIGVuYWJsZSBmYWlsZWQsIGRldmljZSBpcyB1bmluaXRpYWxpemVkLlxcblwiKTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NTozMy4xNDA3NDkzMDhaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxMjE0MTM4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVVNCIFZpZGVvIENsYXNzIChVVkMpIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSwgYW5kIGl0J3MgdG91Y2hpbmcgYHV2Y192NGwyX3N0cmVhbW9uYCBpbiBgdXZjX3Y0bDIuY2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaW4gYHV2Y192aWRlby5jYC4gIExldCBtZSBicmVhayB0aGlzIGRvd24uIEluIGB1dmNfdjRsMl9zdHJlYW1vbmAsIHRoZXkncmUgYWRkaW5nIGEgY291cGxlIG9mIHN0YXRlIGNoZWNrczogZmlyc3QsIGl0IHJldHVybnMgZWFybHkgaWYgd2UgYXJlIGFscmVhZHkgc3RyZWFtaW5nLiBTZWNvbmQsIGl0IGV4aXRzIHdpdGggRU5PREVWIGlmIHRoZSBkZXZpY2UgaXNuJ3QgY29ubmVjdGVkLiBJbiBgdXZjZ192aWRlb19lbmFibGVgIHRoZXkgYXJlIGFkZGluZyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgZW5kcG9pbnQgaXMgZW5hYmxlZC4gSWYgdGhlIGVuZHBvaW50IGlzIG51bGwgb3Igbm90IGVuYWJsZWQsIHJldHVybiBhbiBlcnJvci5cblxuVGhlc2UgY2hhbmdlcyBhcmUgY2xlYXJseSBhYm91dCAqc3RhdGUgbWFuYWdlbWVudCouICBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoaXMgaXMgbGlrZWx5IGFpbWVkIGF0IHByZXZlbnRpbmcgdXNlLWFmdGVyLWZyZWUsIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLCBvciBwZXJoYXBzIHNvbWUgb3RoZXIgc29ydCBvZiBpbnZhbGlkIGFjY2VzcyBiYXNlZCBvbiB0aGUgZHJpdmVyJ3MgaW50ZXJuYWwgc3RhdGUuIEl0IGRvZXNuJ3Qgc2NyZWFtIFwidW5pbml0aWFsaXplZCBtZW1vcnkgYnVnXCIgdG8gbWUuIFRoYXQncyBhIGRpZmZlcmVudCBiZWFzdCwgb2Z0ZW4gcmVxdWlyaW5nIG1vcmUgaW50cmljYXRlIGZpeGVzLlxuXG5MZXQncyBjb25maXJtIHRoYXQgaHlwb3RoZXNpcy4gVGhlIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcGllcyBvZiBkYXRhIHRvIHVzZXJzcGFjZS4gQWxsIGl0IGRvZXMgaXMgYWRkIHRoZXNlIHN0YXRlIHZhbGlkYXRpb25zIHdoaWNoIGNvbnRyb2wgdGhlIGZsb3cuIElmIHRoZXJlICp3ZXJlKiBtZW1vcnkgY29ycnVwdGlvbiwgS0FTQU4gb3IgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgd291bGQgcGljayBpdCB1cCwgc2luY2UgdGhpcyBmaXggaXMgcHVyZWx5IGNvbnRyb2wtZmxvdyBiYXNlZCBvbiB0aGUgZHJpdmVyIHN0YXRlLiBXZSB3b3VsZG4ndCBuZWVkIEtNU0FOIGhlcmUuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBxdWlja2x5IHJldmlld2luZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gYHV2Y192NGwyX3N0cmVhbW9uYCBpcyBhbiBgaW9jdGxgIGhhbmRsZXIgZm9yIGBWSURJT0NfU1RSRUFNT05gLCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCBlbmFibGVzIHRoZSB2aWRlbyBzdHJlYW0uIFRoaXMgZG9lc24ndCBzZWVtIHRvIGJlIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGFueXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLlxuXG5Pa2F5LCBJJ20gY29uZmlkZW50LiAqKk5lZWRzS01TQU49ZmFsc2UuKipcblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MCwiT3V0cHV0VG9rZW5zIjoxNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjo0NTo0My4yNjIxNjczNzhaIiwiU2VxIjo0OCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3RhdGUgdmFsaWRhdGlvbiBjaGVja3MgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYCB0byBlbnN1cmUgdGhlIFVWQyBkZXZpY2UgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUgKGBVVkNfU1RBVEVfQ09OTkVDVEVEYCkgYW5kIHRoZSBlbmRwb2ludCBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZyB0aGUgdmlkZW8gc3RyZWFtLiBUaGVzZSBjaGFuZ2VzIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGFueSBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdGF0ZSB2YWxpZGF0aW9uIGNoZWNrcyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjZ192aWRlb19lbmFibGVgIHRvIGVuc3VyZSB0aGUgVVZDIGRldmljZSBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSAoYFVWQ19TVEFURV9DT05ORUNURURgKSBhbmQgdGhlIGVuZHBvaW50IGlzIGVuYWJsZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSB2aWRlbyBzdHJlYW0uIFRoZXNlIGNoYW5nZXMgcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIHRoYXQgY291bGQgbGVhZCB0byB1c2UtYWZ0ZXItZnJlZSwgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgYW55IGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGFuZCBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjq8d6[1] Phase: Succeeded StartedAt: 2026-08-14 12:45:54 +0000 UTC FinishedAt: 2026-08-14 12:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 12:45:54 +0000 UTC FinishedAt: 2026-08-14 12:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2] Phase: Succeeded StartedAt: 2026-08-14 12:45:54 +0000 UTC FinishedAt: 2026-08-14 16:28:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 12:45:54 +0000 UTC FinishedAt: 2026-08-14 16:28:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 12:45:54 +0000 UTC FinishedAt: 2026-08-14 12:46:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 12:45:54 +0000 UTC FinishedAt: 2026-08-14 12:45:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowjq8d6/series-workflowjq8d6-convert-artifact-102901618/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 12:46:04 +0000 UTC FinishedAt: 2026-08-14 13:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 12:46:04 +0000 UTC FinishedAt: 2026-08-14 13:05:08 +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:*67793273-5b89-4dc8-ad01-ff23035e55bb,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-workflowjq8d6/series-workflowjq8d6-convert-artifact-102901618/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": "eb32c894-1b12-4a98-bc2b-c8b89d05bc10", "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-workflowjq8d6/series-workflowjq8d6-build-action-2501095152/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 12:46:04 +0000 UTC FinishedAt: 2026-08-14 13:04:58 +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:*67793273-5b89-4dc8-ad01-ff23035e55bb,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-workflowjq8d6/series-workflowjq8d6-convert-artifact-102901618/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": "eb32c894-1b12-4a98-bc2b-c8b89d05bc10", "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-workflowjq8d6/series-workflowjq8d6-build-action-2501095152/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 13:05:08 +0000 UTC FinishedAt: 2026-08-14 13:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 13:05:08 +0000 UTC FinishedAt: 2026-08-14 13:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 13:05:08 +0000 UTC FinishedAt: 2026-08-14 13:05:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 13:05:08 +0000 UTC FinishedAt: 2026-08-14 13:05:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowjq8d6/series-workflowjq8d6-convert-artifact-1123291277/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 13:05:18 +0000 UTC FinishedAt: 2026-08-14 13:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 13:05:18 +0000 UTC FinishedAt: 2026-08-14 13:07:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*eb32c894-1b12-4a98-bc2b-c8b89d05bc10,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-workflowjq8d6/series-workflowjq8d6-build-action-2501095152/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-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 13:07:26 +0000 UTC FinishedAt: 2026-08-14 13:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 13:07:26 +0000 UTC FinishedAt: 2026-08-14 13:07:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 13:07:26 +0000 UTC FinishedAt: 2026-08-14 13:24:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 13:07:26 +0000 UTC FinishedAt: 2026-08-14 13:24:39 +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:*67793273-5b89-4dc8-ad01-ff23035e55bb,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-workflowjq8d6/series-workflowjq8d6-convert-artifact-1123291277/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": "dbb25a7b-4ca5-4397-b0d5-d9b2a57f976e", "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-workflowjq8d6/series-workflowjq8d6-build-action-3575946857/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 13:07:26 +0000 UTC FinishedAt: 2026-08-14 13:24:29 +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:*67793273-5b89-4dc8-ad01-ff23035e55bb,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-workflowjq8d6/series-workflowjq8d6-convert-artifact-1123291277/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": "dbb25a7b-4ca5-4397-b0d5-d9b2a57f976e", "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-workflowjq8d6/series-workflowjq8d6-build-action-3575946857/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 13:24:39 +0000 UTC FinishedAt: 2026-08-14 13:24:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 13:24:39 +0000 UTC FinishedAt: 2026-08-14 13:24:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 13:24:39 +0000 UTC FinishedAt: 2026-08-14 13:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 13:24:39 +0000 UTC FinishedAt: 2026-08-14 13:26:32 +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:*dbb25a7b-4ca5-4397-b0d5-d9b2a57f976e,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-workflowjq8d6/series-workflowjq8d6-build-action-3575946857/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-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 13:26:42 +0000 UTC FinishedAt: 2026-08-14 16:28:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 13:26:42 +0000 UTC FinishedAt: 2026-08-14 16:28:17 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"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:*eb32c894-1b12-4a98-bc2b-c8b89d05bc10,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbb25a7b-4ca5-4397-b0d5-d9b2a57f976e,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-workflowjq8d6/series-workflowjq8d6-build-action-2501095152/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-workflowjq8d6/series-workflowjq8d6-build-action-3575946857/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 13:26:42 +0000 UTC FinishedAt: 2026-08-14 13:26:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 13:26:42 +0000 UTC FinishedAt: 2026-08-14 13:26:46 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"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-workflowjq8d6/series-workflowjq8d6-convert-artifact-1119693170/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 13:26:42 +0000 UTC FinishedAt: 2026-08-14 13:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 13:26:42 +0000 UTC FinishedAt: 2026-08-14 13:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 13:26:42 +0000 UTC FinishedAt: 2026-08-14 13:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 13:26:52 +0000 UTC FinishedAt: 2026-08-14 16:28:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjq8d6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["uvcg_video_enable"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_RAW_GADGET","USB_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"c20d41da-bdfd-4cad-95ca-9064fe79036f","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 13:26:52 +0000 UTC FinishedAt: 2026-08-14 16:28:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*eb32c894-1b12-4a98-bc2b-c8b89d05bc10,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbb25a7b-4ca5-4397-b0d5-d9b2a57f976e,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-workflowjq8d6/series-workflowjq8d6-build-action-2501095152/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-workflowjq8d6/series-workflowjq8d6-build-action-3575946857/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-workflowjq8d6/series-workflowjq8d6-convert-artifact-1119693170/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,}