Name: series-workflowdlqj4 Phase: Succeeded StartedAt: 2026-08-12 14:08:04 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[0] Phase: Succeeded StartedAt: 2026-08-12 14:08:04 +0000 UTC FinishedAt: 2026-08-12 14:15:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 14:08:04 +0000 UTC FinishedAt: 2026-08-12 14:15:31 +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_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_CONFIGFS", "USB_CONFIGFS_F_UVC", "USB_G_WEBCAM", "VIDEO_DEV" ], "series_id": "70ac3841-2b45-4dfe-8eb0-7cc977eaf243" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "uvc_v4l2_streamon", "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNfdjRsMl9zdHJlYW1vbiYjMzQ7LAogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRlIG1hY2hpbmUgbG9naWMgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYWRkcyBlbmRwb2ludCB2YWxpZGF0aW9uIGNoZWNrcyAoYHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2NgKSBpbiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBhY2Nlc3NlcyB0byBkaXNhYmxlZCBvciB1bmluaXRpYWxpemVkIGVuZHBvaW50cywgd2hpY2ggdHlwaWNhbGx5IHJlc3VsdCBpbiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBidWZmZXJzLCBvciBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBwZXJmZWN0bHkgc3VpdGVkIHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBpbnZhbGlkIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIGdhZGdldCBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb24gZHJpdmVyIHRvIGFkZCBzdGF0ZSBjaGVja3MgYmVmb3JlIGVuYWJsaW5nIHZpZGVvIHN0cmVhbWluZyBhbmQgYWxsb2NhdGluZyByZXF1ZXN0cy4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIHN0YXRlcyBhbmQgcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2Vyc3BhY2UgaXNzdWVzIFZJRElPQ19TVFJFQU1PTiBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGdhZGdldCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDowOToxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG5pbmRleCBkZmEwNTIxYTI0M2FjLi5hODA2NjNjOWFjYjczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG5AQCAtNTI3LDE3ICYjNDM7NTI3LDI0IEBAIHV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXG4gXHRpZiAodHlwZSAhPSB2aWRlby1cdTAwM2VxdWV1ZS5xdWV1ZS50eXBlKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHRpZiAodXZjLVx1MDAzZXN0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURUQpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0dXZjLVx1MDAzZXN0YXRlID0gVVZDX1NUQVRFX1NUUkVBTUlORztcbiYjNDM7XG4gXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuIFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuLVx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRpZiAodXZjLVx1MDAzZXN0YXRlID09IFVWQ19TVEFURV9TVFJFQU1JTkcpXG4mIzQzO1x0XHRcdHV2Yy1cdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9DT05ORUNURUQ7XG4gXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuIFxuIFx0LypcbiBcdCAqIENvbXBsZXRlIHRoZSBhbHRlcm5hdGUgc2V0dGluZyBzZWxlY3Rpb24gc2V0dXAgcGhhc2Ugbm93IHRoYXRcbiBcdCAqIHVzZXJzcGFjZSBpcyByZWFkeSB0byBwcm92aWRlIHZpZGVvIGZyYW1lcy5cbiBcdCAqL1xuIFx0dXZjX2Z1bmN0aW9uX3NldHVwX2NvbnRpbnVlKHV2YywgMCk7XG4tXHR1dmMtXHUwMDNlc3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuaW5kZXggMmY5NzAwYjNmMWI2NC4uYmQ2N2E5ZDgwYjQ1ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXG5AQCAtNTUxLDYgJiM0Mzs1NTEsOSBAQCB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4gXHR1bnNpZ25lZCBpbnQgaTtcbiBcdGludCByZXQgPSAtRU5PTUVNO1xuIFxuJiM0MztcdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuIFx0LypcbiBcdCAqIGNhbGN1bGF0ZSBpbiB1dmNfdmlkZW9fcHJlcF9yZXF1ZXN0c1xuIFx0ICogLSB2aWRlby1cdTAwM2V1dmNfbnVtX3JlcXVlc3RzXG5AQCAtNzY0LDcgJiM0Mzs3NjcsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4mIzQzO1x0aWYgKHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2MpIHtcbiBcdFx0dXZjZ19pbmZvKFx1MDAyNnZpZGVvLVx1MDAzZXV2Yy1cdTAwM2VmdW5jLFxuIFx0XHRcdCAgXCYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNfdjRsMl9zdHJlYW1vbiYjMzQ7LAogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIGdhZGdldCBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb24gZHJpdmVyIHRvIGFkZCBzdGF0ZSBjaGVja3MgYmVmb3JlIGVuYWJsaW5nIHZpZGVvIHN0cmVhbWluZyBhbmQgYWxsb2NhdGluZyByZXF1ZXN0cy4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIHN0YXRlcyBhbmQgcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2Vyc3BhY2UgaXNzdWVzIFZJRElPQ19TVFJFQU1PTiBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGdhZGdldCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDowOToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKaW5kZXggZGZhMDUyMWEyNDNhYy4uYTgwNjYzYzlhY2I3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKQEAgLTUyNywxNyAmIzQzOzUyNywyNCBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKQogCWlmICh0eXBlICE9IHZpZGVvLSZndDtxdWV1ZS5xdWV1ZS50eXBlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAodXZjLSZndDtzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CXV2Yy0mZ3Q7c3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HOwomIzQzOwogCS8qIEVuYWJsZSBVVkMgdmlkZW8uICovCiAJcmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pOwotCWlmIChyZXQgJmx0OyAwKQomIzQzOwlpZiAocmV0ICZsdDsgMCkgewomIzQzOwkJaWYgKHV2Yy0mZ3Q7c3RhdGUgPT0gVVZDX1NUQVRFX1NUUkVBTUlORykKJiM0MzsJCQl1dmMtJmd0O3N0YXRlID0gVVZDX1NUQVRFX0NPTk5FQ1RFRDsKIAkJcmV0dXJuIHJldDsKJiM0MzsJfQogCiAJLyoKIAkgKiBDb21wbGV0ZSB0aGUgYWx0ZXJuYXRlIHNldHRpbmcgc2VsZWN0aW9uIHNldHVwIHBoYXNlIG5vdyB0aGF0CiAJICogdXNlcnNwYWNlIGlzIHJlYWR5IHRvIHByb3ZpZGUgdmlkZW8gZnJhbWVzLgogCSAqLwogCXV2Y19mdW5jdGlvbl9zZXR1cF9jb250aW51ZSh1dmMsIDApOwotCXV2Yy0mZ3Q7c3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMKaW5kZXggMmY5NzAwYjNmMWI2NC4uYmQ2N2E5ZDgwYjQ1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYwpAQCAtNTUxLDYgJiM0Mzs1NTEsOSBAQCB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pCiAJdW5zaWduZWQgaW50IGk7CiAJaW50IHJldCA9IC1FTk9NRU07CiAKJiM0MzsJaWYgKHZpZGVvLSZndDtlcCA9PSBOVUxMIHx8ICF2aWRlby0mZ3Q7ZXAtJmd0O2VuYWJsZWQgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZGVzYykKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCS8qCiAJICogY2FsY3VsYXRlIGluIHV2Y192aWRlb19wcmVwX3JlcXVlc3RzCiAJICogLSB2aWRlby0mZ3Q7dXZjX251bV9yZXF1ZXN0cwpAQCAtNzY0LDcgJiM0Mzs3NjcsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pCiB7CiAJaW50IHJldDsKIAotCWlmICh2aWRlby0mZ3Q7ZXAgPT0gTlVMTCkgewomIzQzOwlpZiAodmlkZW8tJmd0O2VwID09IE5VTEwgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZCB8fCAhdmlkZW8tJmd0O2VwLSZndDtkZXNjKSB7CiAJCXV2Y2dfaW5mbygmYW1wO3ZpZGVvLSZndDt1dmMtJmd0O2Z1bmMsCiAJCQkgICYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXG4mIzM0Oyk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBVVkMgR2FkZ2V0IERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBJIHNlZSBtb2RpZmljYXRpb25zIHRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AgYW5kIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNgLiBJdCYjMzk7cyB0b3VjaGluZyBzb21lIGtleSBhcmVhczogYHV2Y192NGwyX3N0cmVhbW9uYCwgYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AsIGFuZCBgdXZjZ192aWRlb19lbmFibGVgLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIHNvbWUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBtYW5hZ2VtZW50IGlzc3VlcyB3aXRoaW4gdGhlIFVWQyBnYWRnZXQgZHJpdmVyJiMzOTtzIHN0YXRlIG1hY2hpbmUsIHNwZWNpZmljYWxseSBhcm91bmQgc3RyZWFtaW5nIGluaXRpYXRpb24gYW5kIGVuZHBvaW50IGF2YWlsYWJpbGl0eS4KClNwZWNpZmljYWxseSwgSSBzZWUgYWRkZWQgY2hlY2tzIGZvciBgdXZjLSZndDtzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEYCB3aXRoaW4gYHV2Y192NGwyX3N0cmVhbW9uYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFdlIGRvbiYjMzk7dCB3YW50IHRvIHN0YXJ0IHN0cmVhbWluZyBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBwcm9wZXJseSBjb25uZWN0ZWQuIEZ1cnRoZXIsIHRoZSBzZXR0aW5nIG9mIGB1dmMtJmd0O3N0YXRlID0gVVZDX1NUQVRFX1NUUkVBTUlOR2AgcmlnaHQgYmVmb3JlIGB1dmNnX3ZpZGVvX2VuYWJsZWAsIHdpdGggYSByb2xsYmFjayB0byBgVVZDX1NUQVRFX0NPTk5FQ1RFRGAgb24gZmFpbHVyZSwgaXMgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBhcHByb2FjaC4gUHJldmVudHMgYSBwYXJ0aWFsIHN0YXRlLiBUaGUgY2hlY2tzIGZvciBgdmlkZW8tJmd0O2VwID09IE5VTEwgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZCB8fCAhdmlkZW8tJmd0O2VwLSZndDtkZXNjYCBpbiBib3RoIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGFuZCBgdXZjZ192aWRlb19lbmFibGVgIGFyZSBhbHNvIGNyaXRpY2FsLiBDbGVhcmx5LCB0aGUgY29kZSBuZWVkcyB0byBlbnN1cmUgdGhlIFVTQiBlbmRwb2ludCBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYW5kIGNvbmZpZ3VyZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LiBUaGF0IHByZXZlbnRzIHBhbmljcy4KClRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgVVZDIGdhZGdldCBkcml2ZXIuIEkga25vdyB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IGluIGNvbmZpZ3VyYXRpb25zIHRoYXQgdXNlIHRoZSBkdW1teV9oY2QsIG1ha2luZyB0aGlzIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBzZXR1cCBjb3ZlcnMgdGhhdCBzY2VuYXJpby4KCk5vdywgbGV0JiMzOTtzIGRldGVybWluZSB0aGUgY29uZmlndXJhdGlvbnMgbmVlZGVkIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguIEkga25vdyB0aGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AgaXMgcGFydCBvZiB0aGUgYHVzYl9mX3V2Y2AgZnVuY3Rpb24uIEkgc2hvdWxkIGNoZWNrIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlYCwgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCwgYW5kIHBvc3NpYmx5IHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYCBmaWxlcyB0byBpZGVudGlmeSB0aGUgZXhhY3QgS2NvbmZpZyBvcHRpb25zIG5lZWRlZCB0byBlbmFibGUgdGhlIFVWQyBnYWRnZXQgZnVuY3Rpb25hbGl0eS4gVW5kZXJzdGFuZGluZyB0aG9zZSBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIGVmZmVjdGl2ZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3V2Y192NGwyXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX1VTQl9GX1VBQzIpXHQmIzQzOz0gdXNiX2ZfdWFjMi5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NDM6dXNiX2ZfdXZjLXlcdFx0XHQ6PSBmX3V2Yy5vIHV2Y19xdWV1ZS5vIHV2Y192NGwyLm8gdXZjX3ZpZGVvLm8gdXZjX2NvbmZpZ2ZzLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS00NC1pZm5lcSAoJChDT05GSUdfVFJBQ0lORyksKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NjcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgdXNiX2ZfdXZjLXlgIE1vZHVsZSBCdWlsZCBQcm9jZXNzKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB0aGUga2VybmVsIGlzIHRlbGxpbmcgbWUgYHVzYl9mX3V2Yy15YCBpcyBnZXR0aW5nIGJ1aWx0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvcnJlbGF0ZSB0aGlzIHdpdGggdGhlIGBDT05GSUdfVVNCX0ZfVVZDYCBLY29uZmlnIG9wdGlvbiBiZWluZyBlbmFibGVkLCB3aGljaCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgbmV4dCBzdGVwIGlzIGFsd2F5cyB0byB2ZXJpZnkgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGEgbW9kdWxlIGxpa2UgdGhpcy4gU28sIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSB1c3VhbCBzdXNwZWN0OiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgcnVsZSB0aGF0IGRlZmluZXMgaG93IGB1c2JfZl91dmNgICh0aGUgY29yZSBtb2R1bGUpIGdldHMgYnVpbHQsIGFuZCBwb3RlbnRpYWxseSwgaXRzIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGFueSBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGV4cGxhaW5zIGhvdyBgdXNiX2ZfdXZjLXlgIGlzIGhhbmRsZWQgYW5kIGVuc3VyZXMgdGhlIG1vZHVsZSBnZXRzIGxpbmtlZCBpbiB3aGVuIHRoYXQgS2NvbmZpZyBvcHRpb24gaXMgc2V0LCBhbmQgd2hlcmUgdGhlIHNvdXJjZXMgYXJlIGxvY2F0ZWQuIEdvb2Qgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiX2ZfdXZjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfVVNCX0ZfVUFDMilcdCYjNDM7PSB1c2JfZl91YWMyLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0Mzp1c2JfZl91dmMteVx0XHRcdDo9IGZfdXZjLm8gdXZjX3F1ZXVlLm8gdXZjX3Y0bDIubyB1dmNfdmlkZW8ubyB1dmNfY29uZmlnZnMub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ0LWlmbmVxICgkKENPTkZJR19UUkFDSU5HKSwpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDUtICAgIENGTEFHU191dmNfdHJhY2Uub1x0XHQ6PSAtSSQoc3JjKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQ2OiAgICB1c2JfZl91dmMteVx0XHRcdCYjNDM7PSB1dmNfdHJhY2Uub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ3LWVuZGlmXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX1VTQl9GX1VWQylcdFx0JiM0Mzs9IHVzYl9mX3V2Yy5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDktdXNiX2ZfbWlkaS15XHRcdFx0Oj0gZl9taWRpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTUzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgQ2hlY2sgZm9yIFVTQl9GX1VWQyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBgVVNCX0ZfVVZDYCB3aXRoaW4gdGhlIEtjb25maWcgc3lzdGVtLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCBmaXJzdCBzdGVwIGZvciBhIGZlYXR1cmUgcmVsYXRlZCB0byBVU0IgVmlkZW8gQ2xhc3MgKFVWQykuIElzIGl0IGRlZmluZWQ/IElzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdD8gSXMgaXQgZGVwZW5kZW50IG9uIG90aGVyIG9wdGlvbnMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnM/IEkgbmVlZCB0byBrbm93IGhvdyBpdCYjMzk7cyBzZXQgdXAgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCBob3cgdG8gcHJvY2VlZCB3aXRoIHdoYXRldmVyIHRhc2sgaXMgYXQgaGFuZCwgYmUgaXQgYWRkaW5nIGZ1bmN0aW9uYWxpdHkgb3IgdW5kZXJzdGFuZGluZyBhbiBleGlzdGluZyBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIG1lbnUgaXQmIzM5O3MgdW5kZXIsIGFuZCBpZGVhbGx5LCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBMZXQgbWUgZ28gZmluZCB0aGF0IGNvbmZpZyBmaWxlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGNoZWNrLCBhIHF1aWNrIGZpcnN0IGxpbmUgb2YgaW5xdWlyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0ZfVVZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgZGVidWdnaW5nIHNvbWUgY29kZSwgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWNvZGluZyB0aGUgVHJpc3RhdGUqKgoKQWxyaWdodCwgYSB0cmlzdGF0ZS4gTm8gcHJvbXB0LCBpbnRlcmVzdGluZy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzbiYjMzk7dCBhIHVzZXItZHJpdmVuIHNlbGVjdGlvbjsgc29tZXRoaW5nIGVsc2UgaXMgY2FsbGluZyB0aGUgc2hvdHMgaGVyZS4gTXkgbWVudGFsIGNoZWNrbGlzdCBraWNrcyBpbjogV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCB1cHN0cmVhbSBwcm9jZXNzIGlzIGluZmx1ZW5jaW5nIHRoaXMgc3RhdGU/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyB0cmlzdGF0ZSB0byB1bmRlcnN0YW5kIGl0cyBwYXJlbnQgc2VsZWN0b3IuIEdvdHRhIGZpZ3VyZSBvdXQgKndoYXQqIGlzIGRpY3RhdGluZyBpdHMgc3RhdGUgYW5kICp3aHkqLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcsIGJlY2F1c2Ugd2l0aG91dCBrbm93aW5nIGl0cyBzZWxlY3RvciwgdGhpcyB0cmlzdGF0ZSBpcyBqdXN0IGEgY29uZnVzaW5nIHB1enpsZSBwaWVjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1VWQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDY4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NzQtXHRzZWxlY3QgVklERU9CVUYyX1ZNQUxMT0NcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3NTpcdHNlbGVjdCBVU0JfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTA2LVx0c2VsZWN0IFZJREVPQlVGMl9WTUFMTE9DXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTA3Olx0c2VsZWN0IFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwOC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg3NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBVVkMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBVVkMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFRoZSBrZXkgaGVyZSBzZWVtcyB0byBiZSBlaXRoZXIgYFVTQl9DT05GSUdGU19GX1VWQ2Agb3IgYFVTQl9HX1dFQkNBTWAuIFRob3NlIGFyZSB0aGUgdHdvIG9wdGlvbnMgdGhhdCBzdGFuZCBvdXQuIEJ1dCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hhdGV2ZXIgSSBjaG9vc2UsIEkmIzM5O20gbm90IGluYWR2ZXJ0ZW50bHkgYnJlYWtpbmcgc29tZXRoaW5nIGVsc2Ugb3IgbGVhdmluZyBvdXQgY3JpdGljYWwgc3VwcG9ydGluZyBtb2R1bGVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhvc2UgZGVwZW5kIG9uIGFuZCBob3cgdGhleSByZWxhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBlbmNvdW50ZXJlZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgcGxhY2UgdGhpcyB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dC4gJiMzNDtVU0ImIzM0OyDigJMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBVbml2ZXJzYWwgU2VyaWFsIEJ1cy4gJiMzNDtDT05GSUdGUyYjMzQ7IOKAkyB0aGF0IHNjcmVhbXMgY29uZmlndXJhdGlvbiBmaWxlc3lzdGVtLCBhIHVzZXJzcGFjZSBpbnRlcmZhY2UgZm9yIGNvbmZpZ3VyaW5nIFVTQiBkZXZpY2VzLiBBbmQgJiMzNDtVVkMmIzM0Oy4uLiB0aGF0JiMzOTtzIFVTQiBWaWRlbyBDbGFzcy4gVGhlIHBpZWNlcyBhcmUgZmFsbGluZyBpbnRvIHBsYWNlLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmV4YWN0bHkqIHdoYXQgdGhpcyBzcGVjaWZpYyBmbGFnLCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCwgc2lnbmlmaWVzLiBJcyBpdCBhIGNvbXBpbGUtdGltZSBvcHRpb24/IEEgcnVuLXRpbWUgcGFyYW1ldGVyPyBBIGJpdCBmbGFnIHdpdGhpbiBhIGxhcmdlciBzdHJ1Y3R1cmU/IE15IGV4cGVydCBrbm93bGVkZ2UgaW1tZWRpYXRlbHkgbGVhbnMgbWUgdG93YXJkcyBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGZsYWcgd2l0aGluIGEgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUuIE15IG1lbnRhbCBtb2RlbCBpcyBqdW1waW5nIHN0cmFpZ2h0IHRvIHRoZSBsaWtlbHkgdW5kZXJseWluZyBrZXJuZWwgc3RydWN0dXJlcyBhbmQgaGVhZGVyIGZpbGVzLiBJJiMzOTttIHRoaW5raW5nIG9mIGBjb25maWdmc19hdHRyYCwgYHVzYl9mdW5jdGlvbl9pbnN0YW5jZWAsIGB1dmNfZnVuY3Rpb25gLCBhbmQgdGhlIHJlbGV2YW50IGRldmljZSB0cmVlIGJpbmRpbmdzLgoKSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoYXQgdGhlIGNvZGUmIzM5O3MgdHJ5aW5nIHRvICpkbyogd2l0aCB0aGlzIGZsYWcuIElzIGl0IGVuYWJsaW5nIFVWQyBmdW5jdGlvbmFsaXR5PyBEaXNhYmxpbmcgaXQ/IENvbmZpZ3VyaW5nIGl0cyBzcGVjaWZpYyBmZWF0dXJlcz8gSSBpbW1lZGlhdGVseSBzdGFydCBtYWtpbmcgZWR1Y2F0ZWQgZ3Vlc3NlcyBhcyB0byB0aGUgbGlrZWx5IHZhbHVlcyBhbmQgbWVhbmluZ3MgdGhpcyBmbGFnIG1pZ2h0IGhhdmU6IHBlcmhhcHMsIGl0IGNvbnRyb2xzIHRoZSBleHBvc3VyZSBvZiBVVkMtcmVsYXRlZCBkZXNjcmlwdG9ycywgZW5kcG9pbnRzLCBvciBjb250cm9sIGludGVyZmFjZXMuIFRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgcHJvdmlkZSBmdXJ0aGVyIGNsdWVzIGFuZCBpbnNpZ2h0cy4gSXQgY291bGQgYWxzbyByZWxhdGUgdG8gdGhlIGVudW1lcmF0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIHRoZSBVVkMgZnVuY3Rpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzI4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcHJvY2Vzc2luZyB0aGUgZGVzY3JpYmVkIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AuIEkmIzM5O20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSA0NjguIEJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSwgdGhhdCBsaWtlbHkgbWFya3MgYSBjcml0aWNhbCBhcmVhIHdoZXJlIGNlcnRhaW4gY29yZSBmZWF0dXJlcyBvciBhIHNwZWNpZmljIGRyaXZlciYjMzk7cyBzZXR0aW5ncyBhcmUgZGVmaW5lZC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBzZWN0aW9uIG9yIGluIHRoZSBzdXJyb3VuZGluZyBsaW5lcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Iga2V5d29yZHMgbGlrZSAmIzM0O2NvbmZpZywmIzM0OyAmIzM0O3RyaXN0YXRlLCYjMzQ7ICYjMzQ7Ym9vbCwmIzM0OyBhbmQgc3BlY2lmaWMgZGV2aWNlIG5hbWVzIG9yIGRlc2NyaXB0b3JzIHRvIHF1aWNrbHkgcGFyc2Ugd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIGhvdyBpdCYjMzk7cyBjb250cm9sbGVkLiBUaW1lIHRvIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHRcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG4gNDYxOlx0XHRzZWxlY3QgVVNCX0ZfSElEXG4gNDYyOlx0XHRoZWxwXG4gNDYzOlx0XHQgIFRoZSBISUQgZnVuY3Rpb24gZHJpdmVyIHByb3ZpZGVzIGdlbmVyaWMgZW11bGF0aW9uIG9mIFVTQlxuIDQ2NDpcdFx0ICBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlcyAoSElEKS5cbiA0NjU6XHRcbiA0NjY6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfaGlkLnJzdC5cbiA0Njc6XHRcbiA0Njg6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG4gNDY5Olx0XHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbiA0NzA6XHRcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG4gNDcxOlx0XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuIDQ3MjpcdFx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbiA0NzM6XHRcdHNlbGVjdCBWSURFT0JVRjJfRE1BX1NHXG4gNDc0Olx0XHRzZWxlY3QgVklERU9CVUYyX1ZNQUxMT0NcbiA0NzU6XHRcdHNlbGVjdCBVU0JfRl9VVkNcbiA0NzY6XHRcdGhlbHBcbiA0Nzc6XHRcdCAgVGhlIFdlYmNhbSBmdW5jdGlvbiBhY3RzIGFzIGEgY29tcG9zaXRlIFVTQiBBdWRpbyBhbmQgVmlkZW8gQ2xhc3NcbiA0Nzg6XHRcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xuIDQ3OTpcdFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNDkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEZXBlbmRlbmNpZXMgYW5kIHRoZSBVU0IgV2ViY2FtIE1vZHVsZSoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4gVGhpcyBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBzZXR0aW5nLCBJJiMzOTttIHRoaW5raW5nLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCByZWxpZXMgb24gYm90aCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFZJREVPX0RFVmAuIE5vIHN1cnByaXNlcyB0aGVyZTsgVVZDIGZ1bmN0aW9uYWxpdHkgd2l0aGluIGNvbmZpZ2ZzIGlzLCBhZnRlciBhbGwsIGJ1aWxkaW5nIG9uIHRob3NlIGZvdW5kYXRpb25zLiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIgYW5kIHdoZXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1vcmUgcmVsZXZhbnQsIEkgbmVlZCB0byBjaGVjayBob3cgdGhlIGJyb2FkZXIgVVNCIHdlYmNhbSBmdW5jdGlvbmFsaXR5IGlzIHNldCB1cC4gTGV0JiMzOTtzIHNlZSB3aGF0IGBVU0JfR19XRUJDQU1gIGJyaW5ncyB0byB0aGUgdGFibGUuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgYXNwZWN0cyBhcmUgZW5hYmxlZCBieSBgVVNCX0dfV0VCQ0FNYCBhbmQgaG93IHRoZXkgaW50ZXItcmVsYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dfV0VCQ0FNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00OTc9ZW5kaWZcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAwLSMgb3IgdmlkZW8gY2xhc3MgZ2FkZ2V0IGRyaXZlcnMpLCBvciBzcGVjaWZpYyBoYXJkd2FyZSwgaGVyZS5cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo1MDE6Y29uZmlnIFVTQl9HX1dFQkNBTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBXZWJjYW0gR2FkZ2V0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSBwcm9jZXNzaW5nIHRoZSBjb2RlIG1lbnRpb25lZDoKCioqQW5hbHl6aW5nIEtjb25maWcgZm9yIFVTQiBHYWRnZXQgRHJpdmVyIE9wdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTAxLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciB0aGVzZSBsZWdhY3kgVVNCIGdhZGdldCBkcml2ZXJzLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbGx5IGNvbXBsZXggZGVwZW5kZW5jaWVzLCBsaWtlbHkgaW52b2x2aW5nIGRpZmZlcmVudCBVU0IgY29udHJvbGxlciBhcmNoaXRlY3R1cmVzIGFuZCB2YXJpb3VzIGdhZGdldCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vZHVsYXJpdHkgYW5kIHdoYXQga2luZCBvZiBjdXN0b21pemF0aW9uIHRoZSBrZXJuZWwgb2ZmZXJzIHVzZXJzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgbGVnYWN5IGNvZGUgb2Z0ZW4gaGFzIGxlc3MtdGhhbi1pZGVhbCBzdHJ1Y3R1cmUsIHNvIEkmIzM5O20gcHJlcGFyZWQgdG8gdHJhY2UgdGhyb3VnaCBzb21lIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgYW5kIHNlZSBob3cgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIEkmIzM5O20gYXNzdW1pbmcgYXQgdGhpcyBwb2ludCB0aGF0IGxpbmUgNTAxIHNob3VsZCBiZSBjbG9zZSB0byBhIHJlbGV2YW50IG9wdGlvbiBvciBmZWF0dXJlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MDA6XHQjIG9yIHZpZGVvIGNsYXNzIGdhZGdldCBkcml2ZXJzKSwgb3Igc3BlY2lmaWMgaGFyZHdhcmUsIGhlcmUuXG4gNTAxOlx0Y29uZmlnIFVTQl9HX1dFQkNBTVxuIDUwMjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIFdlYmNhbSBHYWRnZXRcJiMzNDtcbiA1MDM6XHRcdGRlcGVuZHMgb24gVklERU9fREVWXG4gNTA0Olx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDUwNTpcdFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcbiA1MDY6XHRcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuIDUwNzpcdFx0c2VsZWN0IFVTQl9GX1VWQ1xuIDUwODpcdFx0aGVscFxuIDUwOTpcdFx0ICBUaGUgV2ViY2FtIEdhZGdldCBhY3RzIGFzIGEgY29tcG9zaXRlIFVTQiBBdWRpbyBhbmQgVmlkZW8gQ2xhc3NcbiA1MTA6XHRcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xuIDUxMTpcdFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXG4gNTEyOlx0XG4gNTEzOlx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiA1MTQ6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z193ZWJjYW1cJiMzNDsuXG4gNTE1Olx0XG4gNTE2Olx0Y29uZmlnIFVTQl9SQVdfR0FER0VUXG4gNTE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgUmF3IEdhZGdldFwmIzM0O1xuIDUxODpcdFx0aGVscFxuIDUxOTpcdFx0ICBVU0IgUmF3IEdhZGdldCBpcyBhIGdhZGdldCBkcml2ZXIgdGhhdCBnaXZlcyB1c2Vyc3BhY2UgbG93LWxldmVsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxODUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiAmYW1wOyBGdW5jdGlvbiBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgZHJpdmVyIHNldHVwLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBjbGVhcmx5LiBUaGUgYFVTQl9HX1dFQkNBTWAgZ2FkZ2V0IGRyaXZlciByZWxpZXMgb24gdGhlIGJhc2UgYFZJREVPX0RFVmAgZnJhbWV3b3JrLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBPZiBjb3Vyc2UsIHRvIGVuYWJsZSBhbnkgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHksIEkgbmVlZCBgVVNCX0dBREdFVGAgZW5hYmxlZC4gTm93LCB0aGUgYFVTQl9EVU1NWV9IQ0RgIG9wdGlvbiBpcyBpbnRlcmVzdGluZzsgaXTigJlzIHVzZWZ1bCBmb3IgZnV6emluZywgc28gSSYjMzk7bGwga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0aGlua2luZyBhYm91dCB0ZXN0aW5nIGxhdGVyIG9uLgoKTXkga2V5IGNvbmZpZ3MsIHRoZW4sIGFyZTogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCwgYFVTQl9HX1dFQkNBTWAsIGFuZCBgVklERU9fREVWYC4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZXMuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgdXZjX3Y0bDJfc3RyZWFtb25gLCBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCwgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGVpciBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjX3Y0bDJfc3RyZWFtb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MTk9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MjEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY1MD1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2MS1cdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY2MjpcdC52aWRpb2Nfc3RyZWFtb24gPSB1dmNfdjRsMl9zdHJlYW1vbixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2My1cdC52aWRpb2Nfc3RyZWFtb2ZmID0gdXZjX3Y0bDJfc3RyZWFtb2ZmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTc2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgYHV2Y192NGwyX3N0cmVhbW9uYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBpbnRyaWNhdGVseSBsaW5rZWQgdG8gdGhlIGJyb2FkZXIgYHV2Y192NGwyX2lvY3RsX29wc2Agc3RydWN0dXJlLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgYW5kIHdoYXQgY29udGV4dCBpdCYjMzk7cyBvcGVyYXRpbmcgd2l0aGluLiBHaXZlbiB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IGZvY3VzIGFuZCBzdGFydCBpbnZlc3RpZ2F0aW5nIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZSBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBmdW5jdGlvbiB0byBzZWUgaG93IGl0IGNvbWVzIGludG8gcGxheSB3aXRoIGBzdHJlYW1vbmAuIExldCYjMzk7cyBkZWx2ZSBpbiBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYz01NDc9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjU0ODp1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNTQ5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9NzY2PWludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzg2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc4NzpcdGlmICgocmV0ID0gdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHZpZGVvKSkgXHUwMDNjIDApXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzg4LVx0XHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBVVkMgVmlkZW8gRHJpdmVyJiMzOTtzIFJlcXVlc3QgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgYXJlYSBmb3IgY2xvc2VyIGluc3BlY3Rpb24uIEEgc3RhdGljIGZ1bmN0aW9uLCBpbiB0aGlzIGNvbnRleHQsIGltcGxpZXMgaXRzIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgbGlrZWx5IHdpdGhpbiB0aGUgVVZDIHZpZGVvIGRyaXZlciBpdHNlbGYuIFRoaXMgbWVhbnMgaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSBvdGhlciBtb2R1bGVzLCB3aGljaCBpcyBnZW5lcmFsbHkgZmluZSBmb3IgcmVxdWVzdCBhbGxvY2F0aW9uLCBidXQgSSBuZWVkIHRvIGNvbnNpZGVyIGltcGxpY2F0aW9ucyBmb3IgcG90ZW50aWFsIGZ1dHVyZSBleHRlbnNpb25zIG9yIGV4dGVybmFsIGludGVyYWN0aW9ucyB3aXRoIHJlcXVlc3QgaGFuZGxpbmcuCgpOb3csIGxldCYjMzk7cyBwaXZvdCB0byBgdXZjZ192aWRlb19lbmFibGVgLiBNeSBpbnR1aXRpb24gaXMgdGhpcyBmdW5jdGlvbiBsaWtlbHkgaW50ZXJhY3RzIHdpdGggdGhlIHJlcXVlc3QgcXVldWUgb3IgdGhlIGVuYWJsaW5nL2Rpc2FibGluZyBvZiB2aWRlbyBzdHJlYW1zLiBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIOKAkyB0aGUgYWxsb2NhdGlvbiBvZiByZXF1ZXN0cyBhbmQgdGhlIGVuYWJsaW5nIG9mIHZpZGVvIOKAkyBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaG93IGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBgdXZjZ192aWRlb19lbmFibGVgIChvciBhbnkgb3RoZXIgZnVuY3Rpb24gY2FsbGVkIGJ5IGB1dmNnX3ZpZGVvX2VuYWJsZWApIHRvIGVuc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHJlc291cmNlIGNvbnRlbnRpb24gaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9Njg4PXV2Y2dfdmlkZW9fZGlzYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzY1LSAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc2NjppbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzY3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg4NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHV2Y2dfdmlkZW9fZW5hYmxlYCoqCgpPa2F5LCBzbyBgdXZjZ192aWRlb19lbmFibGVgIGlzbiYjMzk7dCBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBnbG9iYWxseSBleHBvcnRlZCBzeW1ib2wsIG1lYW5pbmcgaXQmIzM5O3MgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgbW9kaWZpZWQgYnkgb3RoZXIgbW9kdWxlcyBpbiB0aGUga2VybmVsLCBvciBpZiBpdCYjMzk7cyBzaW1wbHkgZGVjbGFyZWQgd2l0aG91dCBgc3RhdGljYCBidXQgaXMgc3RpbGwgb25seSB1dGlsaXplZCBpbnRlcm5hbGx5IHdpdGhpbiBpdHMgZGVmaW5pbmcgbW9kdWxlLiBUaGUgaW1wbGljYXRpb25zIGFyZSBzaWduaWZpY2FudCBkZXBlbmRpbmcgb24gd2hpY2ggaXMgdGhlIGNhc2UuIElmIGV4cG9ydGVkLCBpdCB3YXJyYW50cyBhIGRlZXBlciBkaXZlIGludG8gdGhlIGFjY2VzcyBwYXR0ZXJucyBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgb3IgbWF5YmUgdGhlIGludGVudGlvbmFsIGFyY2hpdGVjdHVyZSBpdCBmYWNpbGl0YXRlcy4gSWYgaW50ZXJuYWwsIHRoZW4gdGhlIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24gZmVlbHMgbGlrZSBlaXRoZXIgYSBtaW5vciBkZXNpZ24gcXVpcmsgb3IgYSBzaWduIG9mIGZ1dHVyZSByZWZhY3RvcmluZy4gVGltZSB0byB0cmFjayBkb3duIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBpdCwgZWl0aGVyIHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjZ192aWRlb19lbmFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUyMD11dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzNS1cdC8qIEVuYWJsZSBVVkMgdmlkZW8uICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MzY6XHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MzctXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTY4OD11dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2NS0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjY6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oPTE1PXN0cnVjdCB1dmNfdmlkZW87XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmg6MTc6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaC0xOC1pbnQgdXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU0MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQ4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVZDIEdhZGdldCBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIFVWQyBnYWRnZXQgY29kZSBhbmQgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cy4gVGhlIHByb21wdCBzdHJlc3NlcyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGZ1bmN0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgdXZjX3Y0bDJfc3RyZWFtb25gIHNpbmNlIHRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHZpYSBhbiBpb2N0bCwgYW5kIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgdGhlIGZhY3QgdGhhdCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBpbiBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBtZWFucyBpdCAqd29uJiMzOTt0KiBiZSBpbmxpbmVkIGFuZCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wuIEFsc28sIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXMgbm9uLXN0YXRpYywgc28gaXQmIzM5O3MgYSBkZWZpbml0ZSBjYW5kaWRhdGUuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgb2J2aW91cyBlbnRyeSBwb2ludHMuIFRoaW5raW5nIGl0IHRocm91Z2gsIGB1dmNfdjRsMl9zdHJlYW1vbmAgZ2V0cyBpbnZva2VkIHdoZW4gdGhlIGBWSURJT0NfU1RSRUFNT05gIGlvY3RsIGlzIGNhbGxlZCBvbiB0aGUgVjRMMiBkZXZpY2UgY3JlYXRlZCBieSB0aGUgVVZDIGdhZGdldCwgc28gaXQmIzM5O3MgYSBjbGVhciBmb2N1cyBzeW1ib2wuIGB1dmNnX3ZpZGVvX2VuYWJsZWAgc2VlbXMgbGlrZSBhIHNvbGlkIGNob2ljZSBhcyB3ZWxsLCBnaXZlbiBpdHMgbm9uLXN0YXRpYyBuYXR1cmUuCgpUaW1lIHRvIGNvbmZpcm0gdGhhdCBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGluZGVlZCBzdGF0aWMgYnkgbG9va2luZyBhdCBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNgLiBZZXAsIGl0JiMzOTtzIHN0YXRpYy4gQnV0IGJlY2F1c2UgaXQmIzM5O3MgYW4gaW9jdGwgY2FsbGJhY2ssIHRoZSBjb21waWxlciB3b24mIzM5O3QgaW5saW5lIGl0LgoKU28sIEkmIzM5O2xsIGFkZCBib3RoIGB1dmNnX3ZpZGVvX2VuYWJsZWAgYW5kIGB1dmNfdjRsMl9zdHJlYW1vbmAgdG8gdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9scy4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR19XRUJDQU1gIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYC4gYFVTQl9HX1dFQkNBTWAgZGVwZW5kcyBvbiBgVklERU9fREVWYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9VVkNgIGRlcGVuZHMgb24gYFVTQl9DT05GSUdGU2AgYW5kIGBWSURFT19ERVZgLiBgVVNCX0NPTkZJR0ZTYCBpdHNlbGYgZGVwZW5kcyBvbiBgQ09ORklHRlNfRlNgLiBBbmQsIGFzIEkgcmVjYWxsLCBgVklERU9fREVWYCBkZXBlbmRzIG9uIGBJMkNgLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBgVklERU9fREVWYCBoYXMgbm8gb3RoZXIgcmVsZXZhbnQgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVklERU9fREVWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTE1Nz1tZW51IFwmIzM0O01lZGlhIGNvcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNTktXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTYwOmNvbmZpZyBWSURFT19ERVZcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtWaWRlbzRMaW51eCBjb3JlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjA1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWEgU3Vic3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHplcm8gaW4gb24gYSBzcGVjaWZpYyBhcmVhIHdpdGhpbiB0aGUgTGludXgga2VybmVsJiMzOTtzIG1lZGlhIGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgYSBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgY29uZmlndXJlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBgZHJpdmVycy9tZWRpYS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbWVkaWEgc3Vic3lzdGVtIGFyZSBkZWZpbmVkLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCBmaWxlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhcm91bmQgbGluZSAxNjAuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldywgSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBlaXRoZXIgYSByZWxhdGVkIG1vZHVsZSBvciBhIG1vcmUgZm9jdXNlZCBzZWN0aW9uIGluIHRoYXQgYXJlYS4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgbGVhZCBtZSB0byB0aGUgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb24gSSBuZWVkIHRvIGVpdGhlciB1bmRlcnN0YW5kIG9yIG1vZGlmeS4gVGhlIGdvYWwgaXMgYSBkZWVwZXIgZGl2ZSBvbiBjb25maWd1cmF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1NTpcdFxuIDE1NjpcdFxuIDE1NzpcdG1lbnUgXCYjMzQ7TWVkaWEgY29yZSBzdXBwb3J0XCYjMzQ7XG4gMTU4Olx0XHR2aXNpYmxlIGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxuIDE1OTpcdFxuIDE2MDpcdGNvbmZpZyBWSURFT19ERVZcbiAxNjE6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpZGVvNExpbnV4IGNvcmVcJiMzNDtcbiAxNjI6XHRcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfUkFESU9fU1VQUE9SVCB8fCBNRURJQV9TRFJfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUIHx8IE1FRElBX1RFU1RfU1VQUE9SVFxuIDE2MzpcdFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxuIDE2NDpcdFx0c2VsZWN0IFJBVElPTkFMXG4gMTY1Olx0XHRzZWxlY3QgVklERU9CVUYyX1Y0TDIgaWYgVklERU9CVUYyX0NPUkVcbiAxNjY6XHRcdGhlbHBcbiAxNjc6XHRcdCAgRW5hYmxlcyB0aGUgVjRMMiBBUEksIHVzZWQgYnkgY2FtZXJhcywgYW5hbG9nIFRWLCB2aWRlbyBncmFiYmVycyxcbiAxNjg6XHRcdCAgcmFkaW8gZGV2aWNlcyBhbmQgYnkgc29tZSBpbnB1dCBkZXZpY2VzLlxuIDE2OTpcdFxuIDE3MDpcdGNvbmZpZyBNRURJQV9DT05UUk9MTEVSXG4gMTcxOlx0XHRib29sIFwmIzM0O01lZGlhIENvbnRyb2xsZXIgQVBJXCYjMzQ7XG4gMTcyOlx0XHRkZWZhdWx0IE1FRElBX0NBTUVSQV9TVVBQT1JUIHx8IE1FRElBX0FOQUxPR19UVl9TVVBQT1JUIHx8IE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUXG4gMTczOlx0XHRoZWxwXG4gMTc0Olx0XHQgIEVuYWJsZSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkgdXNlZCB0byBxdWVyeSBtZWRpYSBkZXZpY2VzIGludGVybmFsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTc5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgVklERU9fREVWYCBpcyBwcmV0dHkgbGVhbjsgaXQgZG9lc24mIzM5O3Qgc2VlbSB0byByZWx5IG9uIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBiZXlvbmQgdGhlIEkyQyBpbnRlcmZhY2UsIGFuZCBldmVuIHRoZW4sIEkyQyBpcyBvcHRpb25hbC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGVzcGVjaWFsbHkgaWYgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gb3IgdHJ5aW5nIHRvIGlzb2xhdGUgYSBzcGVjaWZpYyB2aWRlbyBzdWJzeXN0ZW0uIFRoZSBgfHwgSTJDPW5gIHBhcnQgaXMga2V5IOKAkyBpZiBJJiMzOTttIGJ1aWxkaW5nIGZvciBhIHBsYXRmb3JtIHdoZXJlIEkyQyBpc24mIzM5O3QgcHJlc2VudCBvciByZWxldmFudCwgSSBjYW4gc2FmZWx5IGRpc2FibGUgaXQgYW5kIHN0aWxsIHBvdGVudGlhbGx5IGxldmVyYWdlIGBWSURFT19ERVZgIGZvciBvdGhlciBmdW5jdGlvbmFsaXR5LiBOb3csIGxldCYjMzk7cyBzaGlmdCBnZWFycyBhbmQgZXhhbWluZSBgVVNCX0dBREdFVGAuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGV4cGVjdGluZyBzb21lIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb3IgcmVsYXRpb25zaGlwcyB0aGVyZSwgYW5kIGl0JiMzOTtzIHByb2JhYmx5IHdvcnRoIGRpZ2dpbmcgaW50byB0aGUgc3BlY2lmaWMgc3ViLW9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgVVNCX0dBREdFVGAgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9HQURHRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgbWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTYyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc3OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZJTEVTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03OC1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjg4OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTk4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMDAtXHRpbnQgXCYjMzQ7TWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxMTY6Y29uZmlnIFVTQl9HQURHRVRfU1RPUkFHRV9OVU1fQlVGRkVSU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTE3LVx0aW50IFwmIzM0O051bWJlciBvZiBzdG9yYWdlIHBpcGVsaW5lIGJ1ZmZlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTkwPWNvbmZpZyBVU0JfR19OQ01cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjIwNjpjb25maWcgVVNCX0dBREdFVEZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA3LVx0dHJpc3RhdGUgXCYjMzQ7R2FkZ2V0IEZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjYyPWNvbmZpZyBVU0JfTUFTU19TVE9SQUdFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI3OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNzk6Y29uZmlnIFVTQl9HQURHRVRfVEFSR0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjgwLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljIE1vZHVsZVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zNDc9Y29uZmlnIFVTQl9FRzIwVFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MzcxOmNvbmZpZyBVU0JfR0FER0VUX1hJTElOWFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3Mi1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBVU0IgRHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjMwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHNlY3Rpb24gYXJvdW5kIGxpbmUgMTcuIFRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgaGVhcnQgb2YgY29uZmlndXJpbmcgdGhlIGtlcm5lbCwgc28gdGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGhvdyB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gaXMgZW5hYmxlZCBhbmQgc3RydWN0dXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBVU0IgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZWNpc2lvbnMgZ2V0IG1hZGUgYWJvdXQgd2hhdCBmZWF0dXJlcyB3ZSB3YW50IHRvIGV4cG9zZSB0byB1c2Vyc3BhY2UgYXMgYSBVU0IgZGV2aWNlLiBGcm9tIGhlcmUsIEkgY2FuIHRyYWNlIG91dCB0byByZWxldmFudCBjb2RlIGFuZCBvdGhlciBrY29uZmlnIG9wdGlvbnMgYXMgbmVlZGVkLCBiYXNlZCBvbiB0aGlzIGluaXRpYWwgaGlnaC1sZXZlbCBtYXAgb2YgdGhlIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTU6XHQjXG4gIDE2Olx0XG4gIDE3Olx0bWVudWNvbmZpZyBVU0JfR0FER0VUXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBVU0JfQ09NTU9OXG4gIDIwOlx0XHRzZWxlY3QgTkxTXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgICBVU0IgaXMgYSBob3N0L2RldmljZSBwcm90b2NvbCwgb3JnYW5pemVkIHdpdGggb25lIGhvc3QgKHN1Y2ggYXMgYVxuICAyMzpcdFx0ICAgUEMpIGNvbnRyb2xsaW5nIHVwIHRvIDEyNyBwZXJpcGhlcmFsIGRldmljZXMuXG4gIDI0Olx0XHQgICBUaGUgVVNCIGhhcmR3YXJlIGlzIGFzeW1tZXRyaWMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBzZXQgdXA6XG4gIDI1Olx0XHQgICB5b3UgY2FuJiMzOTt0IGNvbm5lY3QgYSBcJiMzNDt0by10aGUtaG9zdFwmIzM0OyBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxuICAyNjpcdFxuICAyNzpcdFx0ICAgTGludXggY2FuIHJ1biBpbiB0aGUgaG9zdCwgb3IgaW4gdGhlIHBlcmlwaGVyYWwuICBJbiBib3RoIGNhc2VzXG4gIDI4Olx0XHQgICB5b3UgbmVlZCBhIGxvdyBsZXZlbCBidXMgY29udHJvbGxlciBkcml2ZXIsIGFuZCBzb21lIHNvZnR3YXJlXG4gIDI5Olx0XHQgICB0YWxraW5nIHRvIGl0LiAgUGVyaXBoZXJhbCBjb250cm9sbGVycyBhcmUgb2Z0ZW4gZGlzY3JldGUgc2lsaWNvbixcbiAgMzA6XHRcdCAgIG9yIGFyZSBpbnRlZ3JhdGVkIHdpdGggdGhlIENQVSBpbiBhIG1pY3JvY29udHJvbGxlci4gIFRoZSBtb3JlXG4gIDMxOlx0XHQgICBmYW1pbGlhciBob3N0IHNpZGUgY29udHJvbGxlcnMgaGF2ZSBuYW1lcyBsaWtlIFwmIzM0O0VIQ0lcJiMzNDssIFwmIzM0O09IQ0lcJiMzNDssXG4gIDMyOlx0XHQgICBvciBcJiMzNDtVSENJXCYjMzQ7LCBhbmQgYXJlIHVzdWFsbHkgaW50ZWdyYXRlZCBpbnRvIHNvdXRoYnJpZGdlcyBvbiBQQ1xuICAzMzpcdFx0ICAgbW90aGVyYm9hcmRzLlxuICAzNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc3NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIG9wdGlvbnMuCgoqKk15IENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kgZm9yIFVTQiBHYWRnZXQgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcyBpcyBjZW50ZXJlZCBhcm91bmQgc2V0dGluZyB1cCBVU0IgR2FkZ2V0IGZ1bmN0aW9uYWxpdHksIGFuZCB0aGUgbWVudWNvbmZpZyBjaG9pY2VzIGFyZSBrZXkgdG8gdGhhdC4gVGhlIGdvYWwgaGVyZSBpcyBjbGVhcmx5IHRvIGVzdGFibGlzaCBhIFVTQiB3ZWJjYW0gaW50ZXJmYWNlLCBhbmQgSeKAmW0gZ29pbmcgdG8gdXNlIHRoZSBgVVNCX0dBREdFVGAgbWVudWNvbmZpZy4KCkkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgZW5hYmxlIGBVU0JfR0FER0VUYCB3aGljaCB3aWxsIG9mIGNvdXJzZSBicmluZyBpbiB0aGUgY29yZSBnYWRnZXQgZnJhbWV3b3JrLiBJJiMzOTtsbCBuZWVkIGEgaG9zdCBjb250cm9sbGVyLCB3aGljaCB3aWxsIGJlIGVtdWxhdGVkIHNpbmNlIHdlIGFyZSBjb25maWd1cmluZyBmb3IgYSBnYWRnZXQgcm9sZS4gVGhlcmVmb3JlLCBJIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIHRvIGJlIGVuYWJsZWQgdG8gZG8gdGhpcy4KCkkmIzM5O20gZGVmaW5pdGVseSBnb2luZyB0byB1c2UgYFVTQl9DT05GSUdGU2AgYXMgdGhlIGZpbGUgc3lzdGVtIGZvciBnYWRnZXQgY29uZmlndXJhdGlvbiwgZ2l2aW5nIG1lIGZsZXhpYmlsaXR5IGluIGhvdyBJIHByZXNlbnQgdGhlIGludGVyZmFjZS4gVGhpcyB3aWxsIGdpdmUgbWUgYWxsIGtpbmRzIG9mIG9wdGlvbnMuIEdpdmVuIHRoZSBtZW50aW9uIG9mIHdlYmNhbSBmdW5jdGlvbmFsaXR5LCBJJiMzOTttIGdvaW5nIHRvIGFjdGl2YXRlIGBVU0JfQ09ORklHRlNfRl9VVkNgIHRvIHN1cHBvcnQgdGhlIFVTQiBWaWRlbyBDbGFzcyBmdW5jdGlvbmFsaXR5LgoKU2luY2Ugd2UgYXJlIGFpbWluZyBmb3Igd2ViY2FtIGNhcGFiaWxpdGllcywgZW5hYmxpbmcgYFVTQl9HX1dFQkNBTWAgc2VlbXMgb2J2aW91cyAtIHRoYXQmIzM5O3MgdGhlIGdhZGdldCBkcml2ZXIgZm9yIGEgd2ViY2FtLiBBbmQgb2YgY291cnNlLCBnaXZlbiB0aGlzIGFsbCByZXZvbHZlcyBhcm91bmQgdmlkZW8sIEkmIzM5O2xsIG5lZWQgYFZJREVPX0RFVmAgZm9yIHRoZSBWaWRlbzRMaW51eCBmcmFtZXdvcmsuCgpIb3dldmVyLCBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIHNlY29uZCBoZXJlLCBJIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBob3N0IGNvbnRyb2xsZXIgZW11bGF0aW9uLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGlzIGVtdWxhdGVzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGNvbmZsaWN0cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nOyBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9EVU1NWV9IQ0QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFwmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjctXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDI4OmNvbmZpZyBVU0JfRFVNTVlfSENEXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzODkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIHRoZSBVU0IgQ29uZmlndXJhdGlvbioqCgpZZXMsIHRoYXQgbG9va3MgcmlnaHQuIFRoZSBpbmNsdXNpb24gb2YgYFVTQl9EVU1NWV9IQ0RgIGlzIGV4YWN0bHkgd2hhdCBJJiMzOTtkIGV4cGVjdCBnaXZlbiB0aGUgY3VycmVudCBnb2Fscy4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGNydWNpYWwuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSBpZiBgVVNCX0NPTkZJR0ZTYCBoYXMgYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcyBJJiMzOTttIG92ZXJsb29raW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSByZXF1aXJlZCBtb2R1bGVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgd2lsbCBpbXBhY3QgdGhlIHNldHVwIGRvd25zdHJlYW0uIEJldHRlciBzYWZlIHRoYW4gc29ycnkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIFVTQiBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMz1jb25maWcgVVNCX0ZfVENNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjI4OmNvbmZpZyBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyOS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjM5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQwOmNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXHRib29sIFwmIzM0O0dlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQ4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXHRib29sIFwmIzM0O0Fic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjU5OmNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI2OTpjb25maWcgVVNCX0NPTkZJR0ZTX05DTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVx0Ym9vbCBcJiMzNDtOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O0V0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjkzOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDItXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDM6Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVx0Ym9vbCBcJiMzNDtSTkRJU1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzU6Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cdGJvb2wgXCYjMzQ7UGhvbmV0IHByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXHRib29sIFwmIzM0O01hc3Mgc3RvcmFnZVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cdGJvb2wgXCYjMzQ7TG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM2OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cdGJvb2wgXCYjMzQ7RnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzk4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVx0Ym9vbCBcJiMzNDtBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMy1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXHRib29sIFwmIzM0O01JREkgZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXHRib29sIFwmIzM0O01JREkgMi4wIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDU4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1OS1cdGJvb2wgXCYjMzQ7SElEIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgyLVx0Ym9vbCBcJiMzNDtQcmludGVyIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBCYXNlZCBvbiB3aGF0IEkmIzM5O20gbG9va2luZyBhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsLiBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvYCBkaXJlY3RvcnkgYmVmb3JlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgYEtjb25maWdgIGZpbGUgaXMgdGhlIHBsYWNlIHRvIGJlIGZvciB0aGF0LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gbGluZSAyMjggKG9yIHRoZXJlYWJvdXRzKSBvZiB0aGF0IGZpbGUuIFRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIGdhZGdldCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYmVnaW4sIG9yIGF0IGxlYXN0IGEgc2lnbmlmaWNhbnQgZ3JvdXBpbmcgb2YgdGhlbS4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGUgdmFyaW91cyBnYWRnZXQgZnVuY3Rpb25hbGl0aWVzIGFyZSBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyZWQuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjI1Olx0XG4gMjI2Olx0IyB0aGlzIGZpcnN0IHNldCBvZiBkcml2ZXJzIGFsbCBkZXBlbmQgb24gYnVsay1jYXBhYmxlIGhhcmR3YXJlLlxuIDIyNzpcdFxuIDIyODpcdGNvbmZpZyBVU0JfQ09ORklHRlNcbiAyMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4gMjMwOlx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDIzMTpcdFx0aGVscFxuIDIzMjpcdFx0ICBBIExpbnV4IFVTQiBcJiMzNDtnYWRnZXRcJiMzNDsgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ2ZzLlxuIDIzMzpcdFx0ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgVVNCIGZ1bmN0aW9ucyAod2hpY2ggZnJvbSB0aGUgaG9zdCYjMzk7c1xuIDIzNDpcdFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXG4gMjM1Olx0XHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXG4gMjM2Olx0XHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcbiAyMzc6XHRcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXG4gMjM4Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxuIDIzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTUzNAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVZDIEdhZGdldCBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFVWQyBnYWRnZXQgaW1wbGVtZW50YXRpb24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTt2ZSBjb25maXJtZWQgaXMgdGhhdCBgVVNCX0NPTkZJR0ZTYCBoYXMgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLiBJIG5vdGljZWQgYFVTQl9HX1dFQkNBTWAgaXMgYSBsZWdhY3kgZHJpdmVyIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBpcyB0aGUgY29uZmlnZnMtYmFzZWQgb25lLCBidXQgSSYjMzk7bSBnb2luZyB0byBpbmNsdWRlIGJvdGggb2YgdGhlbSBmb3Igbm93LgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBgVVNCX0ZfVVZDYCBhZ2FpbiwganVzdCB0byBiZSB0aG9yb3VnaC4gSSBhbHJlYWR5IHNlZSB0aGF0IGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gLgoKTmV4dCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgdXZjZ192aWRlb19lbmFibGVgIGlzIHJlYWNoYWJsZS4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjX3Y0bDJfc2V0X2Zvcm1hdGAuIE9rYXksIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgY2FsbGVkIGJ5IHRoZSBWNEwyIGNvcmUgd2hlbmV2ZXIgYFZJRElPQ19TVFJFQU1PTmAgaXMgaXNzdWVkLCB3aGljaCBtZWFucyB1c2Vyc3BhY2UgY2FuIHRyaWdnZXIgaXQgYnkgb3BlbmluZyB0aGF0IGAvZGV2L3ZpZGVvWGAgbm9kZSB0aGUgVVZDIGdhZGdldCBjcmVhdGVzIGFuZCB0aGVuIGlzc3VpbmcgYFZJRElPQ19TVFJFQU1PTmAuCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgc29tZSBjaGVja3MgZm9yIGB1dmMtJmd0O3N0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURURgIGFuZCBgdmlkZW8tJmd0O2VwID09IE5VTEwgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZCB8fCAhdmlkZW8tJmd0O2VwLSZndDtkZXNjYC4gSSBzZWUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBzZWVtcyB0byBiZSBwcmV2ZW50aW5nIGNyYXNoZXMgb3IgaW52YWxpZCBzdGF0ZXMgaWYgc3RyZWFtaW5nIHN0YXJ0cyBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGltcHJvdmVtZW50IGFuZCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZy4KCk15IGZvY3VzIHN5bWJvbHMgaGVyZSBhcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gTXkgY29uZmlnIHJlcXVpcmVtZW50cywgYXMgYSByZW1pbmRlciwgYXJlIGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VWQ2AsIGBVU0JfR19XRUJDQU1gLCBhbmQgYFZJREVPX0RFVmAuCgpJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IHZlcmlmeSBpZiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBpcyBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLCBqdXN0IGluIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3V2Y192aWRlb19hbGxvY19yZXF1ZXN0cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9NTQ3PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1NDg6dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU0OS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTc2Nj1pbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc4Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3ODc6XHRpZiAoKHJldCA9IHV2Y192aWRlb19hbGxvY19yZXF1ZXN0cyh2aWRlbykpIFx1MDAzYyAwKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc4OC1cdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4MTYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiB0aGUgY29udGV4dCB0aGF0IEkmIzM5O20gbGlrZWx5IGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgY29kZWJhc2U6CgoqKkZvY3VzaW5nIG9uIHRoZSBFbmFibGUgRnVuY3Rpb24qKgoKQWxyaWdodCwgc28gdGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uLCBgdXZjZ192aWRlb19lbmFibGVgLCBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgaGVyZS4gSSBzZWUgdGhhdCB0aGUgb3JpZ2luYWwgdGhvdWdodCBpcyB0byBmb2N1cyBvbiB0aGlzIGZ1bmN0aW9uLiBHb29kLCB0aGF0IG1ha2VzIHNlbnNlOyB0aGF0IHNlZW1zIGxvZ2ljYWwgYmVjYXVzZSBvZiB0aGUgaW1wbGljYXRpb24gdGhhdCBpdCYjMzk7cyB0aGUgcm9vdCBvZiB0aGUgaXNzdWUuCgpOb3csIGJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCwgbGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGF0IGFzc3VtcHRpb24uIEkgd2FudCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXNuJiMzOTt0IGludm9rZWQgZnJvbSBzb21lIHVuZXhwZWN0ZWQgY29ybmVyIG9mIHRoZSBjb2RlIGJhc2UuIExldCYjMzk7cyB0cmFjZSBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gbWFrZSBzdXJlIG5vdGhpbmcgZWxzZSBpcyBjYWxsaW5nIGl0LiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvciBjaGFzaW5nIHRoZSB3cm9uZyByYWJiaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3V2Y2dfdmlkZW9fZW5hYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MjA9dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MzUtXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTM2Olx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM3LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYz02ODg9dXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjUtICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NzY2OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03Njcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaD0xNT1zdHJ1Y3QgdXZjX3ZpZGVvO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oLTE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oOjE3OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTgtaW50IHV2Y2dfdmlkZW9fZGlzYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDk0CgkJCQkJCQlvdXRwdXQ6IDE3MwoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhpbmtpbmcgcHJvY2VzcywgZm9ybWF0dGVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKlJlZmxlY3Rpbmcgb24gRnVuY3Rpb24gQ2FsbCBSZWxhdGlvbnNoaXBzKioKCkFscmlnaHQsIEkmIzM5O20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggaGVyZS4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV2ZXIgY2FsbGVkIGZyb20gYHV2Y192NGwyX3N0cmVhbW9uYC4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4gS25vd2luZyB0aGUgY2FsbCBncmFwaCBsaWtlIHRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgpUaGVyZWZvcmUsIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgZGVmaW5pdGVseSBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIHdoZW4gSSYjMzk7bSBleGFtaW5pbmcgdGhpcyBjb2RlLiBGdXJ0aGVybW9yZSwgaXQgc3VnZ2VzdHMgdGhhdCBgdXZjZ192aWRlb19lbmFibGVgIGlzIGFsc28gYSBwcmltZSBjYW5kaWRhdGUgYXMgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbi4gCgpJJiMzOTtsbCBiZSBsZXZlcmFnaW5nIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gY2FwdHVyZSBhbmQgY29tbXVuaWNhdGUgbXkgZmluZGluZ3MgZWZmZWN0aXZlbHkuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gc3BlY2lmeSB0aGUgY29udGV4dCB3aGVuIEkgc2V0IHRoZSByZXN1bHRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VVkMmIzM0OywKICAgICYjMzQ7VVNCX0dfV0VCQ0FNJiMzNDssCiAgICAmIzM0O1ZJREVPX0RFViYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3V2Y192NGwyX3N0cmVhbW9uJiMzNDssCiAgICAmIzM0O3V2Y2dfdmlkZW9fZW5hYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0IgZ2FkZ2V0IFVWQyAoVVNCIFZpZGVvIENsYXNzKSBmdW5jdGlvbiBkcml2ZXIgdG8gYWRkIHN0YXRlIGNoZWNrcyBiZWZvcmUgZW5hYmxpbmcgdmlkZW8gc3RyZWFtaW5nIGFuZCBhbGxvY2F0aW5nIHJlcXVlc3RzLiBUaGlzIHByZXZlbnRzIGludmFsaWQgc3RhdGVzIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHVzZXJzcGFjZSBpc3N1ZXMgVklESU9DX1NUUkVBTU9OIGJlZm9yZSB0aGUgZ2FkZ2V0IGlzIGZ1bGx5IGNvbm5lY3RlZCBvciBjb25maWd1cmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgZ2FkZ2V0IGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VWQyYjMzQ7LAogICAgJiMzNDtVU0JfR19XRUJDQU0mIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXZjX3Y0bDJfc3RyZWFtb24mIzM0OywKICAgICYjMzQ7dXZjZ192aWRlb19lbmFibGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFVTQiBnYWRnZXQgVVZDIChVU0IgVmlkZW8gQ2xhc3MpIGZ1bmN0aW9uIGRyaXZlciB0byBhZGQgc3RhdGUgY2hlY2tzIGJlZm9yZSBlbmFibGluZyB2aWRlbyBzdHJlYW1pbmcgYW5kIGFsbG9jYXRpbmcgcmVxdWVzdHMuIFRoaXMgcHJldmVudHMgaW52YWxpZCBzdGF0ZXMgYW5kIHBvdGVudGlhbCBjcmFzaGVzIHdoZW4gdXNlcnNwYWNlIGlzc3VlcyBWSURJT0NfU1RSRUFNT04gYmVmb3JlIHRoZSBnYWRnZXQgaXMgZnVsbHkgY29ubmVjdGVkIG9yIGNvbmZpZ3VyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBnYWRnZXQgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGUgbWFjaGluZSBsb2dpYyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBhZGRzIGVuZHBvaW50IHZhbGlkYXRpb24gY2hlY2tzIChgdmlkZW8tXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZGVzY2ApIGluIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGFuZCBgdXZjZ192aWRlb19lbmFibGVgLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IGludmFsaWQgc3RhdGUgdHJhbnNpdGlvbnMgYW5kIGFjY2Vzc2VzIHRvIGRpc2FibGVkIG9yIHVuaW5pdGlhbGl6ZWQgZW5kcG9pbnRzLCB3aGljaCB0eXBpY2FsbHkgcmVzdWx0IGluIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9mIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGJ1ZmZlcnMsIG9yIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHBlcmZlY3RseSBzdWl0ZWQgdG8gY2F0Y2ggYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIGludmFsaWQgYWNjZXNzZXMgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzLiBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDowOToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKaW5kZXggZGZhMDUyMWEyNDNhYy4uYTgwNjYzYzlhY2I3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKQEAgLTUyNywxNyAmIzQzOzUyNywyNCBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKQogCWlmICh0eXBlICE9IHZpZGVvLSZndDtxdWV1ZS5xdWV1ZS50eXBlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAodXZjLSZndDtzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CXV2Yy0mZ3Q7c3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HOwomIzQzOwogCS8qIEVuYWJsZSBVVkMgdmlkZW8uICovCiAJcmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pOwotCWlmIChyZXQgJmx0OyAwKQomIzQzOwlpZiAocmV0ICZsdDsgMCkgewomIzQzOwkJaWYgKHV2Yy0mZ3Q7c3RhdGUgPT0gVVZDX1NUQVRFX1NUUkVBTUlORykKJiM0MzsJCQl1dmMtJmd0O3N0YXRlID0gVVZDX1NUQVRFX0NPTk5FQ1RFRDsKIAkJcmV0dXJuIHJldDsKJiM0MzsJfQogCiAJLyoKIAkgKiBDb21wbGV0ZSB0aGUgYWx0ZXJuYXRlIHNldHRpbmcgc2VsZWN0aW9uIHNldHVwIHBoYXNlIG5vdyB0aGF0CiAJICogdXNlcnNwYWNlIGlzIHJlYWR5IHRvIHByb3ZpZGUgdmlkZW8gZnJhbWVzLgogCSAqLwogCXV2Y19mdW5jdGlvbl9zZXR1cF9jb250aW51ZSh1dmMsIDApOwotCXV2Yy0mZ3Q7c3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMKaW5kZXggMmY5NzAwYjNmMWI2NC4uYmQ2N2E5ZDgwYjQ1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYwpAQCAtNTUxLDYgJiM0Mzs1NTEsOSBAQCB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pCiAJdW5zaWduZWQgaW50IGk7CiAJaW50IHJldCA9IC1FTk9NRU07CiAKJiM0MzsJaWYgKHZpZGVvLSZndDtlcCA9PSBOVUxMIHx8ICF2aWRlby0mZ3Q7ZXAtJmd0O2VuYWJsZWQgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZGVzYykKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCS8qCiAJICogY2FsY3VsYXRlIGluIHV2Y192aWRlb19wcmVwX3JlcXVlc3RzCiAJICogLSB2aWRlby0mZ3Q7dXZjX251bV9yZXF1ZXN0cwpAQCAtNzY0LDcgJiM0Mzs3NjcsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pCiB7CiAJaW50IHJldDsKIAotCWlmICh2aWRlby0mZ3Q7ZXAgPT0gTlVMTCkgewomIzQzOwlpZiAodmlkZW8tJmd0O2VwID09IE5VTEwgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZCB8fCAhdmlkZW8tJmd0O2VwLSZndDtkZXNjKSB7CiAJCXV2Y2dfaW5mbygmYW1wO3ZpZGVvLSZndDt1dmMtJmd0O2Z1bmMsCiAJCQkgICYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXG4mIzM0Oyk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MQoJCQkJCQkJb3V0cHV0OiAxODgKCQkJCQkJCXRob3VnaHRzOiA3MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgVVNCIEdhZGdldCBVVkMgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgcGF0Y2ggZm9yIHRoZSBVU0IgZ2FkZ2V0IFVWQyBkcml2ZXIuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgZHJpdmVyJiMzOTtzIHJvYnVzdG5lc3MgdGhyb3VnaCBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBwcmV2ZW50aW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGFjY2Vzc2VzIHRvIGVuZHBvaW50cyB0aGF0IGFyZW4mIzM5O3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQgb3IgZW5hYmxlZC4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgbW9kaWZpY2F0aW9ucyB0byBgdXZjX3Y0bDJfc3RyZWFtb25gLCBJIHNlZSBhIGNyaXRpY2FsIHN0YXRlIHRyYW5zaXRpb24gYmVpbmcgaGFuZGxlZC4gSXQgZXhwbGljaXRseSBjaGVja3MgdGhhdCB0aGUgVVZDIGRldmljZSBpcyBpbiBhIGBVVkNfU1RBVEVfQ09OTkVDVEVEYCBzdGF0ZSBiZWZvcmUgcHJvY2VlZGluZyB0byBlbmFibGUgdGhlIHZpZGVvIHN0cmVhbS4gVGhlbiwgaXQgc2V0cyB0aGUgc3RhdGUgdG8gYFVWQ19TVEFURV9TVFJFQU1JTkdgICpiZWZvcmUqIGNhbGxpbmcgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gQ3JpdGljYWxseSwgaWYgYHV2Y2dfdmlkZW9fZW5hYmxlYCBmYWlscywgdGhlIHN0YXRlIGlzIGNvcnJlY3RseSByZXZlcnRlZCB0byBgVVZDX1NUQVRFX0NPTk5FQ1RFRGAuIFRoaXMgaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHN0YXRlIG1hY2hpbmUgbG9naWMgSSBsaWtlIHRvIHNlZS4gSXQmIzM5O3MgcHJldmVudGF0aXZlIGFuZCBwcm90ZWN0cyBhZ2FpbnN0IGludmFsaWQgc3RhdGUgYWNjZXNzZXMuCgpNb3Zpbmcgb24gdG8gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AsIHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGFkZGVkIGF0IHRoZSBiZWdpbm5pbmcuIEl0JiMzOTtzIHZlcmlmeWluZyB0aGF0IGB2aWRlby0mZ3Q7ZXBgIGlzbiYjMzk7dCBOVUxMLCBhbmQgY3J1Y2lhbGx5LCB0aGF0IHRoZSBlbmRwb2ludCBpcyBhY3R1YWxseSBlbmFibGVkIGFuZCBoYXMgYSB2YWxpZCBkZXNjcmlwdG9yLiBJZiBhbnkgb2YgdGhlc2UgY29uZGl0aW9ucyBhcmUgZmFsc2UsIGl0IG5vdyByZXR1cm5zIGAtRU5PREVWYCwgaW5kaWNhdGluZyBhIHByb2JsZW0gd2l0aCB0aGUgZGV2aWNlJiMzOTtzIHNldHVwLiBUaGlzIGlzIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLgoKRmluYWxseSwgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYCwgYSBzaW1pbGFyIGNoZWNrIGlzIGFkZGVkLiBJdCBlbnN1cmVzIHRoZSBlbmRwb2ludCBpcyB2YWxpZCwgZW5hYmxlZCwgYW5kIGhhcyBhIGRlc2NyaXB0b3IgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LiBUaGlzIGFkZHMgYW4gZXh0cmEgbGF5ZXIgb2YgcHJvdGVjdGlvbi4KCkkgY2FuIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGJhc2VkIG9uIHRoaXMgZGV0YWlsZWQgZXhhbWluYXRpb24uIE5vd2hlcmUgZG8gSSBzZWUgYW55IGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkLiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93IGFuZCBzdGF0ZSB2YWxpZGF0aW9uLiBXZSBhcmVuJiMzOTt0IGRlYWxpbmcgd2l0aCBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb25zLCBvciBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVha3MgdGhhdCBtaWdodCByZXF1aXJlIEtNU0FOLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gVGhlIHByaW1hcnkgZ29hbCBvZiB0aGlzIHBhdGNoIGlzIHRvIGZpeCBwb3RlbnRpYWwgYnVncyB0aGF0IG1pZ2h0IHRyaWdnZXIga2VybmVsIGNyYXNoZXMsIGFuZCBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGZvciB0aGlzIGtpbmQgb2YgZml4LiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGFkZHMgZW5kcG9pbnQgdmFsaWRhdGlvbiBjaGVja3MgKGB2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjYCkgaW4gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgYWNjZXNzZXMgdG8gZGlzYWJsZWQgb3IgdW5pbml0aWFsaXplZCBlbmRwb2ludHMsIHdoaWNoIHR5cGljYWxseSByZXN1bHQgaW4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGRhdGEgc3RydWN0dXJlcywgYnVmZmVycywgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW52YWxpZCBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRlIG1hY2hpbmUgbG9naWMgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYWRkcyBlbmRwb2ludCB2YWxpZGF0aW9uIGNoZWNrcyAoYHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2NgKSBpbiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBhY2Nlc3NlcyB0byBkaXNhYmxlZCBvciB1bmluaXRpYWxpemVkIGVuZHBvaW50cywgd2hpY2ggdHlwaWNhbGx5IHJlc3VsdCBpbiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBidWZmZXJzLCBvciBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBwZXJmZWN0bHkgc3VpdGVkIHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBpbnZhbGlkIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOToxNy4wNzYzNjIyODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjMyMDEzODg2OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgICBcIlVTQl9HX1dFQkNBTVwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZjX3Y0bDJfc3RyZWFtb25cIixcbiAgICBcInV2Y2dfdmlkZW9fZW5hYmxlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGFkZHMgZW5kcG9pbnQgdmFsaWRhdGlvbiBjaGVja3MgKGB2aWRlby1cXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWRlc2NgKSBpbiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBhY2Nlc3NlcyB0byBkaXNhYmxlZCBvciB1bmluaXRpYWxpemVkIGVuZHBvaW50cywgd2hpY2ggdHlwaWNhbGx5IHJlc3VsdCBpbiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBidWZmZXJzLCBvciBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBwZXJmZWN0bHkgc3VpdGVkIHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBpbnZhbGlkIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0IgZ2FkZ2V0IFVWQyAoVVNCIFZpZGVvIENsYXNzKSBmdW5jdGlvbiBkcml2ZXIgdG8gYWRkIHN0YXRlIGNoZWNrcyBiZWZvcmUgZW5hYmxpbmcgdmlkZW8gc3RyZWFtaW5nIGFuZCBhbGxvY2F0aW5nIHJlcXVlc3RzLiBUaGlzIHByZXZlbnRzIGludmFsaWQgc3RhdGVzIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHVzZXJzcGFjZSBpc3N1ZXMgVklESU9DX1NUUkVBTU9OIGJlZm9yZSB0aGUgZ2FkZ2V0IGlzIGZ1bGx5IGNvbm5lY3RlZCBvciBjb25maWd1cmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgZ2FkZ2V0IGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOToxNy4wNzYzNjg0MDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MjYxNTMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTQ6MDk6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xcbmluZGV4IGRmYTA1MjFhMjQzYWMuLmE4MDY2M2M5YWNiNzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xcbkBAIC01MjcsMTcgKzUyNywyNCBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxcbiBcXHRpZiAodHlwZSAhPSB2aWRlby1cXHUwMDNlcXVldWUucXVldWUudHlwZSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRpZiAodXZjLVxcdTAwM2VzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdHV2Yy1cXHUwMDNlc3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HO1xcbitcXG4gXFx0LyogRW5hYmxlIFVWQyB2aWRlby4gKi9cXG4gXFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xcbi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0aWYgKHV2Yy1cXHUwMDNlc3RhdGUgPT0gVVZDX1NUQVRFX1NUUkVBTUlORylcXG4rXFx0XFx0XFx0dXZjLVxcdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9DT05ORUNURUQ7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4gXFxuIFxcdC8qXFxuIFxcdCAqIENvbXBsZXRlIHRoZSBhbHRlcm5hdGUgc2V0dGluZyBzZWxlY3Rpb24gc2V0dXAgcGhhc2Ugbm93IHRoYXRcXG4gXFx0ICogdXNlcnNwYWNlIGlzIHJlYWR5IHRvIHByb3ZpZGUgdmlkZW8gZnJhbWVzLlxcbiBcXHQgKi9cXG4gXFx0dXZjX2Z1bmN0aW9uX3NldHVwX2NvbnRpbnVlKHV2YywgMCk7XFxuLVxcdHV2Yy1cXHUwMDNlc3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXFxuaW5kZXggMmY5NzAwYjNmMWI2NC4uYmQ2N2E5ZDgwYjQ1ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcXG5AQCAtNTUxLDYgKzU1MSw5IEBAIHV2Y192aWRlb19hbGxvY19yZXF1ZXN0cyhzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG4gXFx0dW5zaWduZWQgaW50IGk7XFxuIFxcdGludCByZXQgPSAtRU5PTUVNO1xcbiBcXG4rXFx0aWYgKHZpZGVvLVxcdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZGVzYylcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBjYWxjdWxhdGUgaW4gdXZjX3ZpZGVvX3ByZXBfcmVxdWVzdHNcXG4gXFx0ICogLSB2aWRlby1cXHUwMDNldXZjX251bV9yZXF1ZXN0c1xcbkBAIC03NjQsNyArNzY3LDcgQEAgaW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAodmlkZW8tXFx1MDAzZWVwID09IE5VTEwpIHtcXG4rXFx0aWYgKHZpZGVvLVxcdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZGVzYykge1xcbiBcXHRcXHR1dmNnX2luZm8oXFx1MDAyNnZpZGVvLVxcdTAwM2V1dmMtXFx1MDAzZWZ1bmMsXFxuIFxcdFxcdFxcdCAgXFxcIlZpZGVvIGVuYWJsZSBmYWlsZWQsIGRldmljZSBpcyB1bmluaXRpYWxpemVkLlxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOToxNy42Mzk5NDUxODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNTEwNTkzNzk5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgICBcIlVTQl9HX1dFQkNBTVwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZjX3Y0bDJfc3RyZWFtb25cIixcbiAgICBcInV2Y2dfdmlkZW9fZW5hYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFVTQiBnYWRnZXQgVVZDIChVU0IgVmlkZW8gQ2xhc3MpIGZ1bmN0aW9uIGRyaXZlciB0byBhZGQgc3RhdGUgY2hlY2tzIGJlZm9yZSBlbmFibGluZyB2aWRlbyBzdHJlYW1pbmcgYW5kIGFsbG9jYXRpbmcgcmVxdWVzdHMuIFRoaXMgcHJldmVudHMgaW52YWxpZCBzdGF0ZXMgYW5kIHBvdGVudGlhbCBjcmFzaGVzIHdoZW4gdXNlcnNwYWNlIGlzc3VlcyBWSURJT0NfU1RSRUFNT04gYmVmb3JlIHRoZSBnYWRnZXQgaXMgZnVsbHkgY29ubmVjdGVkIG9yIGNvbmZpZ3VyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBnYWRnZXQgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDowOToxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbmluZGV4IGRmYTA1MjFhMjQzYWMuLmE4MDY2M2M5YWNiNzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbkBAIC01MjcsMTcgKzUyNywyNCBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxuIFx0aWYgKHR5cGUgIT0gdmlkZW8tXHUwMDNlcXVldWUucXVldWUudHlwZSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHRpZiAodXZjLVx1MDAzZXN0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURUQpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0dXZjLVx1MDAzZXN0YXRlID0gVVZDX1NUQVRFX1NUUkVBTUlORztcbitcbiBcdC8qIEVuYWJsZSBVVkMgdmlkZW8uICovXG4gXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XG4tXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRpZiAodXZjLVx1MDAzZXN0YXRlID09IFVWQ19TVEFURV9TVFJFQU1JTkcpXG4rXHRcdFx0dXZjLVx1MDAzZXN0YXRlID0gVVZDX1NUQVRFX0NPTk5FQ1RFRDtcbiBcdFx0cmV0dXJuIHJldDtcbitcdH1cbiBcbiBcdC8qXG4gXHQgKiBDb21wbGV0ZSB0aGUgYWx0ZXJuYXRlIHNldHRpbmcgc2VsZWN0aW9uIHNldHVwIHBoYXNlIG5vdyB0aGF0XG4gXHQgKiB1c2Vyc3BhY2UgaXMgcmVhZHkgdG8gcHJvdmlkZSB2aWRlbyBmcmFtZXMuXG4gXHQgKi9cbiBcdHV2Y19mdW5jdGlvbl9zZXR1cF9jb250aW51ZSh1dmMsIDApO1xuLVx0dXZjLVx1MDAzZXN0YXRlID0gVVZDX1NUQVRFX1NUUkVBTUlORztcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbmluZGV4IDJmOTcwMGIzZjFiNjQuLmJkNjdhOWQ4MGI0NWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuQEAgLTU1MSw2ICs1NTEsOSBAQCB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4gXHR1bnNpZ25lZCBpbnQgaTtcbiBcdGludCByZXQgPSAtRU5PTUVNO1xuIFxuK1x0aWYgKHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2MpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0LypcbiBcdCAqIGNhbGN1bGF0ZSBpbiB1dmNfdmlkZW9fcHJlcF9yZXF1ZXN0c1xuIFx0ICogLSB2aWRlby1cdTAwM2V1dmNfbnVtX3JlcXVlc3RzXG5AQCAtNzY0LDcgKzc2Nyw3IEBAIGludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbiB7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKHZpZGVvLVx1MDAzZWVwID09IE5VTEwpIHtcbitcdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjKSB7XG4gXHRcdHV2Y2dfaW5mbyhcdTAwMjZ2aWRlby1cdTAwM2V1dmMtXHUwMDNlZnVuYyxcbiBcdFx0XHQgIFwiVmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjA5OjE3LjYzOTk0NjkzN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTYzMDU3MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFVWQyBHYWRnZXQgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBJIHNlZSBtb2RpZmljYXRpb25zIHRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AgYW5kIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNgLiBJdCdzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzOiBgdXZjX3Y0bDJfc3RyZWFtb25gLCBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCwgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGFkZHJlc3Npbmcgc29tZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHJlc291cmNlIG1hbmFnZW1lbnQgaXNzdWVzIHdpdGhpbiB0aGUgVVZDIGdhZGdldCBkcml2ZXIncyBzdGF0ZSBtYWNoaW5lLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHN0cmVhbWluZyBpbml0aWF0aW9uIGFuZCBlbmRwb2ludCBhdmFpbGFiaWxpdHkuXG5cblNwZWNpZmljYWxseSwgSSBzZWUgYWRkZWQgY2hlY2tzIGZvciBgdXZjLVx1MDAzZXN0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURURgIHdpdGhpbiBgdXZjX3Y0bDJfc3RyZWFtb25gLCB3aGljaCBtYWtlcyBzZW5zZS4gV2UgZG9uJ3Qgd2FudCB0byBzdGFydCBzdHJlYW1pbmcgaWYgdGhlIGRldmljZSBpc24ndCBwcm9wZXJseSBjb25uZWN0ZWQuIEZ1cnRoZXIsIHRoZSBzZXR0aW5nIG9mIGB1dmMtXHUwMDNlc3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HYCByaWdodCBiZWZvcmUgYHV2Y2dfdmlkZW9fZW5hYmxlYCwgd2l0aCBhIHJvbGxiYWNrIHRvIGBVVkNfU1RBVEVfQ09OTkVDVEVEYCBvbiBmYWlsdXJlLCBpcyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIGFwcHJvYWNoLiBQcmV2ZW50cyBhIHBhcnRpYWwgc3RhdGUuIFRoZSBjaGVja3MgZm9yIGB2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjYCBpbiBib3RoIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGFuZCBgdXZjZ192aWRlb19lbmFibGVgIGFyZSBhbHNvIGNyaXRpY2FsLiBDbGVhcmx5LCB0aGUgY29kZSBuZWVkcyB0byBlbnN1cmUgdGhlIFVTQiBlbmRwb2ludCBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYW5kIGNvbmZpZ3VyZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LiBUaGF0IHByZXZlbnRzIHBhbmljcy5cblxuVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlci4gSSBrbm93IHRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgaW4gY29uZmlndXJhdGlvbnMgdGhhdCB1c2UgdGhlIGR1bW15X2hjZCwgbWFraW5nIHRoaXMgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJJ20gZ29pbmcgdG8gd2FudCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgc2V0dXAgY292ZXJzIHRoYXQgc2NlbmFyaW8uXG5cbk5vdywgbGV0J3MgZGV0ZXJtaW5lIHRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4gSSBrbm93IHRoYXQgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jYCBpcyBwYXJ0IG9mIHRoZSBgdXNiX2ZfdXZjYCBmdW5jdGlvbi4gSSBzaG91bGQgY2hlY2sgdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGVgLCBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgLCBhbmQgcG9zc2libHkgdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgIGZpbGVzIHRvIGlkZW50aWZ5IHRoZSBleGFjdCBLY29uZmlnIG9wdGlvbnMgbmVlZGVkIHRvIGVuYWJsZSB0aGUgVVZDIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZWZmZWN0aXZlIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOToyNi4yMzYyNTU1ODNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4NTkzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjX3Y0bDJcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfVVNCX0ZfVUFDMilcXHQrPSB1c2JfZl91YWMyLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NDM6dXNiX2ZfdXZjLXlcXHRcXHRcXHQ6PSBmX3V2Yy5vIHV2Y19xdWV1ZS5vIHV2Y192NGwyLm8gdXZjX3ZpZGVvLm8gdXZjX2NvbmZpZ2ZzLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDQtaWZuZXEgKCQoQ09ORklHX1RSQUNJTkcpLClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6MjYuMjg3MTIwODIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzMDUyMjQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHVzYl9mX3V2Yy15YCBNb2R1bGUgQnVpbGQgUHJvY2VzcyoqXG5cblJpZ2h0LCBsZXQncyBzZWUsIHRoZSBrZXJuZWwgaXMgdGVsbGluZyBtZSBgdXNiX2ZfdXZjLXlgIGlzIGdldHRpbmcgYnVpbHQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY29ycmVsYXRlIHRoaXMgd2l0aCB0aGUgYENPTkZJR19VU0JfRl9VVkNgIEtjb25maWcgb3B0aW9uIGJlaW5nIGVuYWJsZWQsIHdoaWNoIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBuZXh0IHN0ZXAgaXMgYWx3YXlzIHRvIHZlcmlmeSB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgYSBtb2R1bGUgbGlrZSB0aGlzLiBTbywgdGltZSB0byBkaXZlIGludG8gdGhlIHVzdWFsIHN1c3BlY3Q6IHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJ1bGUgdGhhdCBkZWZpbmVzIGhvdyBgdXNiX2ZfdXZjYCAodGhlIGNvcmUgbW9kdWxlKSBnZXRzIGJ1aWx0LCBhbmQgcG90ZW50aWFsbHksIGl0cyBkZXBlbmRlbmNpZXMuIEknbGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGFueSBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGV4cGxhaW5zIGhvdyBgdXNiX2ZfdXZjLXlgIGlzIGhhbmRsZWQgYW5kIGVuc3VyZXMgdGhlIG1vZHVsZSBnZXRzIGxpbmtlZCBpbiB3aGVuIHRoYXQgS2NvbmZpZyBvcHRpb24gaXMgc2V0LCBhbmQgd2hlcmUgdGhlIHNvdXJjZXMgYXJlIGxvY2F0ZWQuIEdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTozMS4yMTc2NDc4NzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyODQ2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiX2ZfdXZjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX1VTQl9GX1VBQzIpXFx0Kz0gdXNiX2ZfdWFjMi5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQzOnVzYl9mX3V2Yy15XFx0XFx0XFx0Oj0gZl91dmMubyB1dmNfcXVldWUubyB1dmNfdjRsMi5vIHV2Y192aWRlby5vIHV2Y19jb25maWdmcy5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ0LWlmbmVxICgkKENPTkZJR19UUkFDSU5HKSwpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ1LSAgICBDRkxBR1NfdXZjX3RyYWNlLm9cXHRcXHQ6PSAtSSQoc3JjKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0NjogICAgdXNiX2ZfdXZjLXlcXHRcXHRcXHQrPSB1dmNfdHJhY2Uub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS00Ny1lbmRpZlxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0ODpvYmotJChDT05GSUdfVVNCX0ZfVVZDKVxcdFxcdCs9IHVzYl9mX3V2Yy5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ5LXVzYl9mX21pZGkteVxcdFxcdFxcdDo9IGZfbWlkaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjA5OjMxLjI2OTkzODUwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5ODU3NjM4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIENoZWNrIGZvciBVU0JfRl9VVkMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBgVVNCX0ZfVVZDYCB3aXRoaW4gdGhlIEtjb25maWcgc3lzdGVtLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCBmaXJzdCBzdGVwIGZvciBhIGZlYXR1cmUgcmVsYXRlZCB0byBVU0IgVmlkZW8gQ2xhc3MgKFVWQykuIElzIGl0IGRlZmluZWQ/IElzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdD8gSXMgaXQgZGVwZW5kZW50IG9uIG90aGVyIG9wdGlvbnMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnM/IEkgbmVlZCB0byBrbm93IGhvdyBpdCdzIHNldCB1cCBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB0byBwcm9jZWVkIHdpdGggd2hhdGV2ZXIgdGFzayBpcyBhdCBoYW5kLCBiZSBpdCBhZGRpbmcgZnVuY3Rpb25hbGl0eSBvciB1bmRlcnN0YW5kaW5nIGFuIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBtZW51IGl0J3MgdW5kZXIsIGFuZCBpZGVhbGx5LCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBMZXQgbWUgZ28gZmluZCB0aGF0IGNvbmZpZyBmaWxlIGFuZCBzZWUgd2hhdCdzIHdoYXQuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY2hlY2ssIGEgcXVpY2sgZmlyc3QgbGluZSBvZiBpbnF1aXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTUzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6MzYuMjU1NzA2MjQ4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MDAyNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRl9VVkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIwNC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIwNi1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTozNi4zMjE3MTcwNDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTAwODI2MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBkZWJ1Z2dpbmcgc29tZSBjb2RlLCBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVjb2RpbmcgdGhlIFRyaXN0YXRlKipcblxuQWxyaWdodCwgYSB0cmlzdGF0ZS4gTm8gcHJvbXB0LCBpbnRlcmVzdGluZy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzbid0IGEgdXNlci1kcml2ZW4gc2VsZWN0aW9uOyBzb21ldGhpbmcgZWxzZSBpcyBjYWxsaW5nIHRoZSBzaG90cyBoZXJlLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluOiBXaGF0J3MgdGhlIGNvbnRleHQ/IFdoYXQgdXBzdHJlYW0gcHJvY2VzcyBpcyBpbmZsdWVuY2luZyB0aGlzIHN0YXRlPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgdHJpc3RhdGUgdG8gdW5kZXJzdGFuZCBpdHMgcGFyZW50IHNlbGVjdG9yLiBHb3R0YSBmaWd1cmUgb3V0ICp3aGF0KiBpcyBkaWN0YXRpbmcgaXRzIHN0YXRlIGFuZCAqd2h5Ki4gVGltZSB0byBzdGFydCBkaWdnaW5nLCBiZWNhdXNlIHdpdGhvdXQga25vd2luZyBpdHMgc2VsZWN0b3IsIHRoaXMgdHJpc3RhdGUgaXMganVzdCBhIGNvbmZ1c2luZyBwdXp6bGUgcGllY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTo0Mi4yMjI1NDYyNDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1Njc5MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBVU0JfRl9VVkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc0LVxcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3NTpcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwNi1cXHRzZWxlY3QgVklERU9CVUYyX1ZNQUxMT0NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTA3OlxcdHNlbGVjdCBVU0JfRl9VVkNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTA4LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6NDIuMjc4MjMyMjgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NDQzMTU5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVVkMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgVVZDIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGUga2V5IGhlcmUgc2VlbXMgdG8gYmUgZWl0aGVyIGBVU0JfQ09ORklHRlNfRl9VVkNgIG9yIGBVU0JfR19XRUJDQU1gLiBUaG9zZSBhcmUgdGhlIHR3byBvcHRpb25zIHRoYXQgc3RhbmQgb3V0LiBCdXQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZWFjaC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hhdGV2ZXIgSSBjaG9vc2UsIEknbSBub3QgaW5hZHZlcnRlbnRseSBicmVha2luZyBzb21ldGhpbmcgZWxzZSBvciBsZWF2aW5nIG91dCBjcml0aWNhbCBzdXBwb3J0aW5nIG1vZHVsZXMuIExldCdzIHNlZSB3aGF0IHRob3NlIGRlcGVuZCBvbiBhbmQgaG93IHRoZXkgcmVsYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODc2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6NDguODIyNTUxMzc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA0NDI1OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXFx0Ym9vbCBcXFwiVVNCIFdlYmNhbSBmdW5jdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6NDkuMTAzMDAyNjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk2NjcxMzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCoqXG5cbk9rYXksIHNvIEkndmUgZW5jb3VudGVyZWQgYFVTQl9DT05GSUdGU19GX1VWQ2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGltbWVkaWF0ZWx5IHBsYWNlIHRoaXMgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQuIFwiVVNCXCIg4oCTIHdlJ3JlIGRlYWxpbmcgd2l0aCBVbml2ZXJzYWwgU2VyaWFsIEJ1cy4gXCJDT05GSUdGU1wiIOKAkyB0aGF0IHNjcmVhbXMgY29uZmlndXJhdGlvbiBmaWxlc3lzdGVtLCBhIHVzZXJzcGFjZSBpbnRlcmZhY2UgZm9yIGNvbmZpZ3VyaW5nIFVTQiBkZXZpY2VzLiBBbmQgXCJVVkNcIi4uLiB0aGF0J3MgVVNCIFZpZGVvIENsYXNzLiBUaGUgcGllY2VzIGFyZSBmYWxsaW5nIGludG8gcGxhY2UuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kICpleGFjdGx5KiB3aGF0IHRoaXMgc3BlY2lmaWMgZmxhZywgYFVTQl9DT05GSUdGU19GX1VWQ2AsIHNpZ25pZmllcy4gSXMgaXQgYSBjb21waWxlLXRpbWUgb3B0aW9uPyBBIHJ1bi10aW1lIHBhcmFtZXRlcj8gQSBiaXQgZmxhZyB3aXRoaW4gYSBsYXJnZXIgc3RydWN0dXJlPyBNeSBleHBlcnQga25vd2xlZGdlIGltbWVkaWF0ZWx5IGxlYW5zIG1lIHRvd2FyZHMgZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBmbGFnIHdpdGhpbiBhIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlLiBNeSBtZW50YWwgbW9kZWwgaXMganVtcGluZyBzdHJhaWdodCB0byB0aGUgbGlrZWx5IHVuZGVybHlpbmcga2VybmVsIHN0cnVjdHVyZXMgYW5kIGhlYWRlciBmaWxlcy4gSSdtIHRoaW5raW5nIG9mIGBjb25maWdmc19hdHRyYCwgYHVzYl9mdW5jdGlvbl9pbnN0YW5jZWAsIGB1dmNfZnVuY3Rpb25gLCBhbmQgdGhlIHJlbGV2YW50IGRldmljZSB0cmVlIGJpbmRpbmdzLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hhdCB0aGUgY29kZSdzIHRyeWluZyB0byAqZG8qIHdpdGggdGhpcyBmbGFnLiBJcyBpdCBlbmFibGluZyBVVkMgZnVuY3Rpb25hbGl0eT8gRGlzYWJsaW5nIGl0PyBDb25maWd1cmluZyBpdHMgc3BlY2lmaWMgZmVhdHVyZXM/IEkgaW1tZWRpYXRlbHkgc3RhcnQgbWFraW5nIGVkdWNhdGVkIGd1ZXNzZXMgYXMgdG8gdGhlIGxpa2VseSB2YWx1ZXMgYW5kIG1lYW5pbmdzIHRoaXMgZmxhZyBtaWdodCBoYXZlOiBwZXJoYXBzLCBpdCBjb250cm9scyB0aGUgZXhwb3N1cmUgb2YgVVZDLXJlbGF0ZWQgZGVzY3JpcHRvcnMsIGVuZHBvaW50cywgb3IgY29udHJvbCBpbnRlcmZhY2VzLiBUaGUgc3Vycm91bmRpbmcgY29kZSB3aWxsIHByb3ZpZGUgZnVydGhlciBjbHVlcyBhbmQgaW5zaWdodHMuIEl0IGNvdWxkIGFsc28gcmVsYXRlIHRvIHRoZSBlbnVtZXJhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiB0aGUgVVZDIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTo1NS4wNjk3MTk3MzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDY3MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTo1NS4xMTYxOTEzNTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ5ODY5Nzk5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcHJvY2Vzc2luZyB0aGUgZGVzY3JpYmVkIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AuIEknbSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDQ2OC4gQmFzZWQgb24gbXkgZXhpc3Rpbmcga25vd2xlZGdlLCB0aGF0IGxpa2VseSBtYXJrcyBhIGNyaXRpY2FsIGFyZWEgd2hlcmUgY2VydGFpbiBjb3JlIGZlYXR1cmVzIG9yIGEgc3BlY2lmaWMgZHJpdmVyJ3Mgc2V0dGluZ3MgYXJlIGRlZmluZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IGluIHRoaXMgc2VjdGlvbiBvciBpbiB0aGUgc3Vycm91bmRpbmcgbGluZXMuIEknbGwgYmUgbG9va2luZyBmb3Iga2V5d29yZHMgbGlrZSBcImNvbmZpZyxcIiBcInRyaXN0YXRlLFwiIFwiYm9vbCxcIiBhbmQgc3BlY2lmaWMgZGV2aWNlIG5hbWVzIG9yIGRlc2NyaXB0b3JzIHRvIHF1aWNrbHkgcGFyc2Ugd2hhdCdzIGF2YWlsYWJsZSBhbmQgaG93IGl0J3MgY29udHJvbGxlZC4gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjEwOjAzLjYxNDg5MjIyNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NjA6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG4gNDYxOlxcdFxcdHNlbGVjdCBVU0JfRl9ISURcXG4gNDYyOlxcdFxcdGhlbHBcXG4gNDYzOlxcdFxcdCAgVGhlIEhJRCBmdW5jdGlvbiBkcml2ZXIgcHJvdmlkZXMgZ2VuZXJpYyBlbXVsYXRpb24gb2YgVVNCXFxuIDQ2NDpcXHRcXHQgIEh1bWFuIEludGVyZmFjZSBEZXZpY2VzIChISUQpLlxcbiA0NjU6XFx0XFxuIDQ2NjpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2hpZC5yc3QuXFxuIDQ2NzpcXHRcXG4gNDY4OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcXG4gNDY5OlxcdFxcdGJvb2wgXFxcIlVTQiBXZWJjYW0gZnVuY3Rpb25cXFwiXFxuIDQ3MDpcXHRcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbiA0NzE6XFx0XFx0ZGVwZW5kcyBvbiBWSURFT19ERVZcXG4gNDcyOlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWXFxuIDQ3MzpcXHRcXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xcbiA0NzQ6XFx0XFx0c2VsZWN0IFZJREVPQlVGMl9WTUFMTE9DXFxuIDQ3NTpcXHRcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuIDQ3NjpcXHRcXHRoZWxwXFxuIDQ3NzpcXHRcXHQgIFRoZSBXZWJjYW0gZnVuY3Rpb24gYWN0cyBhcyBhIGNvbXBvc2l0ZSBVU0IgQXVkaW8gYW5kIFZpZGVvIENsYXNzXFxuIDQ3ODpcXHRcXHQgIGRldmljZS4gSXQgcHJvdmlkZXMgYSB1c2Vyc3BhY2UgQVBJIHRvIHByb2Nlc3MgVVZDIGNvbnRyb2wgcmVxdWVzdHNcXG4gNDc5OlxcdFxcdCAgYW5kIHN0cmVhbSB2aWRlbyBkYXRhIHRvIHRoZSBob3N0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMDowMy42MTQ5ODI5MTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4NTI2MjA1MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEZXBlbmRlbmNpZXMgYW5kIHRoZSBVU0IgV2ViY2FtIE1vZHVsZSoqXG5cblJpZ2h0LCBsZXQncyBzZWUuIFRoaXMgYFVTQl9DT05GSUdGU19GX1VWQ2Agc2V0dGluZywgSSdtIHRoaW5raW5nLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0IHJlbGllcyBvbiBib3RoIGBVU0JfQ09ORklHRlNgIGFuZCBgVklERU9fREVWYC4gTm8gc3VycHJpc2VzIHRoZXJlOyBVVkMgZnVuY3Rpb25hbGl0eSB3aXRoaW4gY29uZmlnZnMgaXMsIGFmdGVyIGFsbCwgYnVpbGRpbmcgb24gdGhvc2UgZm91bmRhdGlvbnMuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgbW9yZSByZWxldmFudCwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgYnJvYWRlciBVU0Igd2ViY2FtIGZ1bmN0aW9uYWxpdHkgaXMgc2V0IHVwLiBMZXQncyBzZWUgd2hhdCBgVVNCX0dfV0VCQ0FNYCBicmluZ3MgdG8gdGhlIHRhYmxlLiBJJ20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgYXNwZWN0cyBhcmUgZW5hYmxlZCBieSBgVVNCX0dfV0VCQ0FNYCBhbmQgaG93IHRoZXkgaW50ZXItcmVsYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQ5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMjoxMi4xNDExOTEzMjFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzA0NzMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0dfV0VCQ0FNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDk3PWVuZGlmXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAwLSMgb3IgdmlkZW8gY2xhc3MgZ2FkZ2V0IGRyaXZlcnMpLCBvciBzcGVjaWZpYyBoYXJkd2FyZSwgaGVyZS5cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTAxOmNvbmZpZyBVU0JfR19XRUJDQU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAyLVxcdHRyaXN0YXRlIFxcXCJVU0IgV2ViY2FtIEdhZGdldFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTI6MTIuNTc0MjQ1MzE5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1Mzg3NTM5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHByb2Nlc3NpbmcgdGhlIGNvZGUgbWVudGlvbmVkOlxuXG4qKkFuYWx5emluZyBLY29uZmlnIGZvciBVU0IgR2FkZ2V0IERyaXZlciBPcHRpb25zKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYCBmaWxlLiBJJ20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDUwMS4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgdGhlc2UgbGVnYWN5IFVTQiBnYWRnZXQgZHJpdmVycy4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbGx5IGNvbXBsZXggZGVwZW5kZW5jaWVzLCBsaWtlbHkgaW52b2x2aW5nIGRpZmZlcmVudCBVU0IgY29udHJvbGxlciBhcmNoaXRlY3R1cmVzIGFuZCB2YXJpb3VzIGdhZGdldCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vZHVsYXJpdHkgYW5kIHdoYXQga2luZCBvZiBjdXN0b21pemF0aW9uIHRoZSBrZXJuZWwgb2ZmZXJzIHVzZXJzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgbGVnYWN5IGNvZGUgb2Z0ZW4gaGFzIGxlc3MtdGhhbi1pZGVhbCBzdHJ1Y3R1cmUsIHNvIEknbSBwcmVwYXJlZCB0byB0cmFjZSB0aHJvdWdoIHNvbWUgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBhbmQgc2VlIGhvdyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gSSdtIGFzc3VtaW5nIGF0IHRoaXMgcG9pbnQgdGhhdCBsaW5lIDUwMSBzaG91bGQgYmUgY2xvc2UgdG8gYSByZWxldmFudCBvcHRpb24gb3IgZmVhdHVyZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjE4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTI6MTkuMTEzMDAyMTI3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MDA6XFx0IyBvciB2aWRlbyBjbGFzcyBnYWRnZXQgZHJpdmVycyksIG9yIHNwZWNpZmljIGhhcmR3YXJlLCBoZXJlLlxcbiA1MDE6XFx0Y29uZmlnIFVTQl9HX1dFQkNBTVxcbiA1MDI6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBXZWJjYW0gR2FkZ2V0XFxcIlxcbiA1MDM6XFx0XFx0ZGVwZW5kcyBvbiBWSURFT19ERVZcXG4gNTA0OlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDUwNTpcXHRcXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xcbiA1MDY6XFx0XFx0c2VsZWN0IFZJREVPQlVGMl9WTUFMTE9DXFxuIDUwNzpcXHRcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuIDUwODpcXHRcXHRoZWxwXFxuIDUwOTpcXHRcXHQgIFRoZSBXZWJjYW0gR2FkZ2V0IGFjdHMgYXMgYSBjb21wb3NpdGUgVVNCIEF1ZGlvIGFuZCBWaWRlbyBDbGFzc1xcbiA1MTA6XFx0XFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXFxuIDUxMTpcXHRcXHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cXG4gNTEyOlxcdFxcbiA1MTM6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGQgYVxcbiA1MTQ6XFx0XFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcXFwiZ193ZWJjYW1cXFwiLlxcbiA1MTU6XFx0XFxuIDUxNjpcXHRjb25maWcgVVNCX1JBV19HQURHRVRcXG4gNTE3OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgUmF3IEdhZGdldFxcXCJcXG4gNTE4OlxcdFxcdGhlbHBcXG4gNTE5OlxcdFxcdCAgVVNCIFJhdyBHYWRnZXQgaXMgYSBnYWRnZXQgZHJpdmVyIHRoYXQgZ2l2ZXMgdXNlcnNwYWNlIGxvdy1sZXZlbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMjoxOS4xMTMwODQ2NjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg2Njk5NjQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFx1MDAyNiBGdW5jdGlvbiBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIGRyaXZlciBzZXR1cC4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgY2xlYXJseS4gVGhlIGBVU0JfR19XRUJDQU1gIGdhZGdldCBkcml2ZXIgcmVsaWVzIG9uIHRoZSBiYXNlIGBWSURFT19ERVZgIGZyYW1ld29yaywgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gT2YgY291cnNlLCB0byBlbmFibGUgYW55IGdhZGdldCBmdW5jdGlvbmFsaXR5LCBJIG5lZWQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIE5vdywgdGhlIGBVU0JfRFVNTVlfSENEYCBvcHRpb24gaXMgaW50ZXJlc3Rpbmc7IGl04oCZcyB1c2VmdWwgZm9yIGZ1enppbmcsIHNvIEknbGwga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0aGlua2luZyBhYm91dCB0ZXN0aW5nIGxhdGVyIG9uLlxuXG5NeSBrZXkgY29uZmlncywgdGhlbiwgYXJlOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLlxuXG5Ob3csIEknbSBnb2luZyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZXMuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgdXZjX3Y0bDJfc3RyZWFtb25gLCBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCwgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIEknbGwgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZWlyIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uIEl0J3MgdGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxODUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMjoyNi45ODAwODQwNDZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDAxNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInV2Y192NGwyX3N0cmVhbW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUxOT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTIxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY1MD1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYxLVxcdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NjI6XFx0LnZpZGlvY19zdHJlYW1vbiA9IHV2Y192NGwyX3N0cmVhbW9uLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2My1cXHQudmlkaW9jX3N0cmVhbW9mZiA9IHV2Y192NGwyX3N0cmVhbW9mZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTI6MjcuMDMwMDkwNzE0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0MzY0MDA0MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgdXZjX3Y0bDJfc3RyZWFtb25gIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHV2Y192NGwyX3N0cmVhbW9uYCBpcyBkZWZpbmVkIGFzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQncyBpbnRyaWNhdGVseSBsaW5rZWQgdG8gdGhlIGJyb2FkZXIgYHV2Y192NGwyX2lvY3RsX29wc2Agc3RydWN0dXJlLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCBhbmQgd2hhdCBjb250ZXh0IGl0J3Mgb3BlcmF0aW5nIHdpdGhpbi4gR2l2ZW4gdGhpcywgSSdtIGdvaW5nIHRvIHNoaWZ0IGZvY3VzIGFuZCBzdGFydCBpbnZlc3RpZ2F0aW5nIHdoYXQncyBoYXBwZW5pbmcgaW4gdGhlIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGZ1bmN0aW9uIHRvIHNlZSBob3cgaXQgY29tZXMgaW50byBwbGF5IHdpdGggYHN0cmVhbW9uYC4gTGV0J3MgZGVsdmUgaW4gYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk3NiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjEyOjUxLjM5NDA5ODM3MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzODMyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9NTQ3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NTQ4OnV2Y192aWRlb19hbGxvY19yZXF1ZXN0cyhzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNTQ5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYz03NjY9aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc4Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6Nzg3OlxcdGlmICgocmV0ID0gdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHZpZGVvKSkgXFx1MDAzYyAwKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03ODgtXFx0XFx0cmV0dXJuIHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTI6NTEuNDQzNDg2MTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQxMDEwMjY5MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgVVZDIFZpZGVvIERyaXZlcidzIFJlcXVlc3QgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBhcmVhIGZvciBjbG9zZXIgaW5zcGVjdGlvbi4gQSBzdGF0aWMgZnVuY3Rpb24sIGluIHRoaXMgY29udGV4dCwgaW1wbGllcyBpdHMgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCBsaWtlbHkgd2l0aGluIHRoZSBVVkMgdmlkZW8gZHJpdmVyIGl0c2VsZi4gVGhpcyBtZWFucyBpdCdzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgbW9kdWxlcywgd2hpY2ggaXMgZ2VuZXJhbGx5IGZpbmUgZm9yIHJlcXVlc3QgYWxsb2NhdGlvbiwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBpbXBsaWNhdGlvbnMgZm9yIHBvdGVudGlhbCBmdXR1cmUgZXh0ZW5zaW9ucyBvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMgd2l0aCByZXF1ZXN0IGhhbmRsaW5nLlxuXG5Ob3csIGxldCdzIHBpdm90IHRvIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIE15IGludHVpdGlvbiBpcyB0aGlzIGZ1bmN0aW9uIGxpa2VseSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVxdWVzdCBxdWV1ZSBvciB0aGUgZW5hYmxpbmcvZGlzYWJsaW5nIG9mIHZpZGVvIHN0cmVhbXMuIFVuZGVyc3RhbmRpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBmdW5jdGlvbnMg4oCTIHRoZSBhbGxvY2F0aW9uIG9mIHJlcXVlc3RzIGFuZCB0aGUgZW5hYmxpbmcgb2YgdmlkZW8g4oCTIGlzIGNydWNpYWwuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiBob3cgYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AgaXMgY2FsbGVkIGZyb20gd2l0aGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAgKG9yIGFueSBvdGhlciBmdW5jdGlvbiBjYWxsZWQgYnkgYHV2Y2dfdmlkZW9fZW5hYmxlYCkgdG8gZW5zdXJlIHRoZXJlIGFyZW4ndCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBjb250ZW50aW9uIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjEzOjA1LjU0NDUxNTg5MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MjUyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjZ192aWRlb19lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYz02ODg9dXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2NS0gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NzY2OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzY3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTM6MDUuNTkwMTQ1NTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM2ODk2MjQxMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYHV2Y2dfdmlkZW9fZW5hYmxlYCoqXG5cbk9rYXksIHNvIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXNuJ3QgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGEgZ2xvYmFsbHkgZXhwb3J0ZWQgc3ltYm9sLCBtZWFuaW5nIGl0J3MgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgbW9kaWZpZWQgYnkgb3RoZXIgbW9kdWxlcyBpbiB0aGUga2VybmVsLCBvciBpZiBpdCdzIHNpbXBseSBkZWNsYXJlZCB3aXRob3V0IGBzdGF0aWNgIGJ1dCBpcyBzdGlsbCBvbmx5IHV0aWxpemVkIGludGVybmFsbHkgd2l0aGluIGl0cyBkZWZpbmluZyBtb2R1bGUuIFRoZSBpbXBsaWNhdGlvbnMgYXJlIHNpZ25pZmljYW50IGRlcGVuZGluZyBvbiB3aGljaCBpcyB0aGUgY2FzZS4gSWYgZXhwb3J0ZWQsIGl0IHdhcnJhbnRzIGEgZGVlcGVyIGRpdmUgaW50byB0aGUgYWNjZXNzIHBhdHRlcm5zIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBvciBtYXliZSB0aGUgaW50ZW50aW9uYWwgYXJjaGl0ZWN0dXJlIGl0IGZhY2lsaXRhdGVzLiBJZiBpbnRlcm5hbCwgdGhlbiB0aGUgbm9uLXN0YXRpYyBkZWNsYXJhdGlvbiBmZWVscyBsaWtlIGVpdGhlciBhIG1pbm9yIGRlc2lnbiBxdWlyayBvciBhIHNpZ24gb2YgZnV0dXJlIHJlZmFjdG9yaW5nLiBUaW1lIHRvIHRyYWNrIGRvd24gYWxsIHRoZSByZWZlcmVuY2VzIHRvIGl0LCBlaXRoZXIgd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTM6MTkuMjc5NzcyOTYxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQ2NDEyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjZ192aWRlb19lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MjA9dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzNS1cXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUzNjpcXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM3LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9Njg4PXV2Y2dfdmlkZW9fZGlzYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjUtICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc2NjppbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmg9MTU9c3RydWN0IHV2Y192aWRlbztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oOjE3OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oLTE4LWludCB1dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMzoxOS42OTQ0NDA1ODlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNjI5MzUwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVWQyBHYWRnZXQgRW50cnkgUG9pbnRzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgVVZDIGdhZGdldCBjb2RlIGFuZCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzLiBUaGUgcHJvbXB0IHN0cmVzc2VzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGB1dmNfdjRsMl9zdHJlYW1vbmAgc2luY2UgdGhhdCdzIHRoZSBlbnRyeSBwb2ludCB2aWEgYW4gaW9jdGwsIGFuZCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgdGhlIGZhY3QgdGhhdCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBpbiBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBtZWFucyBpdCAqd29uJ3QqIGJlIGlubGluZWQgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbC4gQWxzbywgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyBub24tc3RhdGljLCBzbyBpdCdzIGEgZGVmaW5pdGUgY2FuZGlkYXRlLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIG9idmlvdXMgZW50cnkgcG9pbnRzLiBUaGlua2luZyBpdCB0aHJvdWdoLCBgdXZjX3Y0bDJfc3RyZWFtb25gIGdldHMgaW52b2tlZCB3aGVuIHRoZSBgVklESU9DX1NUUkVBTU9OYCBpb2N0bCBpcyBjYWxsZWQgb24gdGhlIFY0TDIgZGV2aWNlIGNyZWF0ZWQgYnkgdGhlIFVWQyBnYWRnZXQsIHNvIGl0J3MgYSBjbGVhciBmb2N1cyBzeW1ib2wuIGB1dmNnX3ZpZGVvX2VuYWJsZWAgc2VlbXMgbGlrZSBhIHNvbGlkIGNob2ljZSBhcyB3ZWxsLCBnaXZlbiBpdHMgbm9uLXN0YXRpYyBuYXR1cmUuXG5cblRpbWUgdG8gY29uZmlybSB0aGF0IGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgaW5kZWVkIHN0YXRpYyBieSBsb29raW5nIGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AuIFllcCwgaXQncyBzdGF0aWMuIEJ1dCBiZWNhdXNlIGl0J3MgYW4gaW9jdGwgY2FsbGJhY2ssIHRoZSBjb21waWxlciB3b24ndCBpbmxpbmUgaXQuXG5cblNvLCBJJ2xsIGFkZCBib3RoIGB1dmNnX3ZpZGVvX2VuYWJsZWAgYW5kIGB1dmNfdjRsMl9zdHJlYW1vbmAgdG8gdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9scy5cblxuTm93LCBsZXQncyB2ZXJpZnkgZGVwZW5kZW5jaWVzIGZvciBgVVNCX0dfV0VCQ0FNYCBhbmQgYFVTQl9DT05GSUdGU19GX1VWQ2AuIGBVU0JfR19XRUJDQU1gIGRlcGVuZHMgb24gYFZJREVPX0RFVmAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBkZXBlbmRzIG9uIGBVU0JfQ09ORklHRlNgIGFuZCBgVklERU9fREVWYC4gYFVTQl9DT05GSUdGU2AgaXRzZWxmIGRlcGVuZHMgb24gYENPTkZJR0ZTX0ZTYC4gQW5kLCBhcyBJIHJlY2FsbCwgYFZJREVPX0RFVmAgZGVwZW5kcyBvbiBgSTJDYC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYFZJREVPX0RFVmAgaGFzIG5vIG90aGVyIHJlbGV2YW50IGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU0MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMzo1OC43NTczNzg5MzhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NTY1MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSURFT19ERVZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTE1Nz1tZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxNjA6Y29uZmlnIFZJREVPX0RFVlxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIlZpZGVvNExpbnV4IGNvcmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjEzOjU4Ljg0Njk1NTQ2NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjMyNzA5NDUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTWVkaWEgU3Vic3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgYXJlYSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCdzIG1lZGlhIGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgYSBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgY29uZmlndXJlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBgZHJpdmVycy9tZWRpYS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBtZWRpYSBzdWJzeXN0ZW0gYXJlIGRlZmluZWQuIEknbSBnb2luZyB0byBzY2FuIHRoYXQgZmlsZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXJvdW5kIGxpbmUgMTYwLiBUaGF0J3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldywgSSdtIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIHJlbGF0ZWQgbW9kdWxlIG9yIGEgbW9yZSBmb2N1c2VkIHNlY3Rpb24gaW4gdGhhdCBhcmVhLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBJIG5lZWQgdG8gZWl0aGVyIHVuZGVyc3RhbmQgb3IgbW9kaWZ5LiBUaGUgZ29hbCBpcyBhIGRlZXBlciBkaXZlIG9uIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHNwZWNpZmllZCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE0OjIxLjE3NDA1MzAxMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTU1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTU1OlxcdFxcbiAxNTY6XFx0XFxuIDE1NzpcXHRtZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuIDE1ODpcXHRcXHR2aXNpYmxlIGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxcbiAxNTk6XFx0XFxuIDE2MDpcXHRjb25maWcgVklERU9fREVWXFxuIDE2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlkZW80TGludXggY29yZVxcXCJcXG4gMTYyOlxcdFxcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfUkFESU9fU1VQUE9SVCB8fCBNRURJQV9TRFJfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUIHx8IE1FRElBX1RFU1RfU1VQUE9SVFxcbiAxNjM6XFx0XFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxcbiAxNjQ6XFx0XFx0c2VsZWN0IFJBVElPTkFMXFxuIDE2NTpcXHRcXHRzZWxlY3QgVklERU9CVUYyX1Y0TDIgaWYgVklERU9CVUYyX0NPUkVcXG4gMTY2OlxcdFxcdGhlbHBcXG4gMTY3OlxcdFxcdCAgRW5hYmxlcyB0aGUgVjRMMiBBUEksIHVzZWQgYnkgY2FtZXJhcywgYW5hbG9nIFRWLCB2aWRlbyBncmFiYmVycyxcXG4gMTY4OlxcdFxcdCAgcmFkaW8gZGV2aWNlcyBhbmQgYnkgc29tZSBpbnB1dCBkZXZpY2VzLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRjb25maWcgTUVESUFfQ09OVFJPTExFUlxcbiAxNzE6XFx0XFx0Ym9vbCBcXFwiTWVkaWEgQ29udHJvbGxlciBBUElcXFwiXFxuIDE3MjpcXHRcXHRkZWZhdWx0IE1FRElBX0NBTUVSQV9TVVBQT1JUIHx8IE1FRElBX0FOQUxPR19UVl9TVVBQT1JUIHx8IE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUXFxuIDE3MzpcXHRcXHRoZWxwXFxuIDE3NDpcXHRcXHQgIEVuYWJsZSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkgdXNlZCB0byBxdWVyeSBtZWRpYSBkZXZpY2VzIGludGVybmFsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE0OjIxLjE3NDEyODk1MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjA0MjUyNDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgVklERU9fREVWYCBpcyBwcmV0dHkgbGVhbjsgaXQgZG9lc24ndCBzZWVtIHRvIHJlbHkgb24gYW55IHNwZWNpZmljIGhhcmR3YXJlIGJleW9uZCB0aGUgSTJDIGludGVyZmFjZSwgYW5kIGV2ZW4gdGhlbiwgSTJDIGlzIG9wdGlvbmFsLiBUaGF0J3MgZ29vZCB0byBrbm93LCBlc3BlY2lhbGx5IGlmIHdlJ3JlIGxvb2tpbmcgYXQgYSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gb3IgdHJ5aW5nIHRvIGlzb2xhdGUgYSBzcGVjaWZpYyB2aWRlbyBzdWJzeXN0ZW0uIFRoZSBgfHwgSTJDPW5gIHBhcnQgaXMga2V5IOKAkyBpZiBJJ20gYnVpbGRpbmcgZm9yIGEgcGxhdGZvcm0gd2hlcmUgSTJDIGlzbid0IHByZXNlbnQgb3IgcmVsZXZhbnQsIEkgY2FuIHNhZmVseSBkaXNhYmxlIGl0IGFuZCBzdGlsbCBwb3RlbnRpYWxseSBsZXZlcmFnZSBgVklERU9fREVWYCBmb3Igb3RoZXIgZnVuY3Rpb25hbGl0eS4gTm93LCBsZXQncyBzaGlmdCBnZWFycyBhbmQgZXhhbWluZSBgVVNCX0dBREdFVGAuIEdpdmVuIHRoZSBjb250ZXh0LCBJJ20gZXhwZWN0aW5nIHNvbWUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvciByZWxhdGlvbnNoaXBzIHRoZXJlLCBhbmQgaXQncyBwcm9iYWJseSB3b3J0aCBkaWdnaW5nIGludG8gdGhlIHNwZWNpZmljIHN1Yi1vcHRpb25zIG9yIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYFVTQl9HQURHRVRgIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTc5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDoyNS43NzgzODUyNjFaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NzY2Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfR0FER0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3Nzpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cXHRib29sIFxcXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTAwLVxcdGludCBcXFwiTWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTE2OmNvbmZpZyBVU0JfR0FER0VUX1NUT1JBR0VfTlVNX0JVRkZFUlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXFx0aW50IFxcXCJOdW1iZXIgb2Ygc3RvcmFnZSBwaXBlbGluZSBidWZmZXJzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI3OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Mjc5OmNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzQ3PWNvbmZpZyBVU0JfRUcyMFRcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MTpjb25maWcgVVNCX0dBREdFVF9YSUxJTlhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggVVNCIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTQ6MjUuODM2MTYxODk5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjAwMTE4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBzZWN0aW9uIGFyb3VuZCBsaW5lIDE3LiBUaGUgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIGhlYXJ0IG9mIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwsIHNvIHRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGhvdyB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gaXMgZW5hYmxlZCBhbmQgc3RydWN0dXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBVU0IgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZWNpc2lvbnMgZ2V0IG1hZGUgYWJvdXQgd2hhdCBmZWF0dXJlcyB3ZSB3YW50IHRvIGV4cG9zZSB0byB1c2Vyc3BhY2UgYXMgYSBVU0IgZGV2aWNlLiBGcm9tIGhlcmUsIEkgY2FuIHRyYWNlIG91dCB0byByZWxldmFudCBjb2RlIGFuZCBvdGhlciBrY29uZmlnIG9wdGlvbnMgYXMgbmVlZGVkLCBiYXNlZCBvbiB0aGlzIGluaXRpYWwgaGlnaC1sZXZlbCBtYXAgb2YgdGhlIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyMzAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDozMC40OTYxNzcyNjdaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE1OlxcdCNcXG4gIDE2OlxcdFxcbiAgMTc6XFx0bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0c2VsZWN0IFVTQl9DT01NT05cXG4gIDIwOlxcdFxcdHNlbGVjdCBOTFNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgIFVTQiBpcyBhIGhvc3QvZGV2aWNlIHByb3RvY29sLCBvcmdhbml6ZWQgd2l0aCBvbmUgaG9zdCAoc3VjaCBhcyBhXFxuICAyMzpcXHRcXHQgICBQQykgY29udHJvbGxpbmcgdXAgdG8gMTI3IHBlcmlwaGVyYWwgZGV2aWNlcy5cXG4gIDI0OlxcdFxcdCAgIFRoZSBVU0IgaGFyZHdhcmUgaXMgYXN5bW1ldHJpYywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHNldCB1cDpcXG4gIDI1OlxcdFxcdCAgIHlvdSBjYW4ndCBjb25uZWN0IGEgXFxcInRvLXRoZS1ob3N0XFxcIiBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRcXHQgICBMaW51eCBjYW4gcnVuIGluIHRoZSBob3N0LCBvciBpbiB0aGUgcGVyaXBoZXJhbC4gIEluIGJvdGggY2FzZXNcXG4gIDI4OlxcdFxcdCAgIHlvdSBuZWVkIGEgbG93IGxldmVsIGJ1cyBjb250cm9sbGVyIGRyaXZlciwgYW5kIHNvbWUgc29mdHdhcmVcXG4gIDI5OlxcdFxcdCAgIHRhbGtpbmcgdG8gaXQuICBQZXJpcGhlcmFsIGNvbnRyb2xsZXJzIGFyZSBvZnRlbiBkaXNjcmV0ZSBzaWxpY29uLFxcbiAgMzA6XFx0XFx0ICAgb3IgYXJlIGludGVncmF0ZWQgd2l0aCB0aGUgQ1BVIGluIGEgbWljcm9jb250cm9sbGVyLiAgVGhlIG1vcmVcXG4gIDMxOlxcdFxcdCAgIGZhbWlsaWFyIGhvc3Qgc2lkZSBjb250cm9sbGVycyBoYXZlIG5hbWVzIGxpa2UgXFxcIkVIQ0lcXFwiLCBcXFwiT0hDSVxcXCIsXFxuICAzMjpcXHRcXHQgICBvciBcXFwiVUhDSVxcXCIsIGFuZCBhcmUgdXN1YWxseSBpbnRlZ3JhdGVkIGludG8gc291dGhicmlkZ2VzIG9uIFBDXFxuICAzMzpcXHRcXHQgICBtb3RoZXJib2FyZHMuXFxuICAzNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTQ6MzAuNDk2Mjc5ODQ3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1Njk0MzIxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBvcHRpb25zLlxuXG4qKk15IENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kgZm9yIFVTQiBHYWRnZXQgRnVuY3Rpb25hbGl0eSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gTXkgY3VycmVudCB0aG91Z2h0IHByb2Nlc3MgaXMgY2VudGVyZWQgYXJvdW5kIHNldHRpbmcgdXAgVVNCIEdhZGdldCBmdW5jdGlvbmFsaXR5LCBhbmQgdGhlIG1lbnVjb25maWcgY2hvaWNlcyBhcmUga2V5IHRvIHRoYXQuIFRoZSBnb2FsIGhlcmUgaXMgY2xlYXJseSB0byBlc3RhYmxpc2ggYSBVU0Igd2ViY2FtIGludGVyZmFjZSwgYW5kIEnigJltIGdvaW5nIHRvIHVzZSB0aGUgYFVTQl9HQURHRVRgIG1lbnVjb25maWcuXG5cbkknbSB0aGlua2luZyBJJ2xsIGVuYWJsZSBgVVNCX0dBREdFVGAgd2hpY2ggd2lsbCBvZiBjb3Vyc2UgYnJpbmcgaW4gdGhlIGNvcmUgZ2FkZ2V0IGZyYW1ld29yay4gSSdsbCBuZWVkIGEgaG9zdCBjb250cm9sbGVyLCB3aGljaCB3aWxsIGJlIGVtdWxhdGVkIHNpbmNlIHdlIGFyZSBjb25maWd1cmluZyBmb3IgYSBnYWRnZXQgcm9sZS4gVGhlcmVmb3JlLCBJIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIHRvIGJlIGVuYWJsZWQgdG8gZG8gdGhpcy5cblxuSSdtIGRlZmluaXRlbHkgZ29pbmcgdG8gdXNlIGBVU0JfQ09ORklHRlNgIGFzIHRoZSBmaWxlIHN5c3RlbSBmb3IgZ2FkZ2V0IGNvbmZpZ3VyYXRpb24sIGdpdmluZyBtZSBmbGV4aWJpbGl0eSBpbiBob3cgSSBwcmVzZW50IHRoZSBpbnRlcmZhY2UuIFRoaXMgd2lsbCBnaXZlIG1lIGFsbCBraW5kcyBvZiBvcHRpb25zLiBHaXZlbiB0aGUgbWVudGlvbiBvZiB3ZWJjYW0gZnVuY3Rpb25hbGl0eSwgSSdtIGdvaW5nIHRvIGFjdGl2YXRlIGBVU0JfQ09ORklHRlNfRl9VVkNgIHRvIHN1cHBvcnQgdGhlIFVTQiBWaWRlbyBDbGFzcyBmdW5jdGlvbmFsaXR5LlxuXG5TaW5jZSB3ZSBhcmUgYWltaW5nIGZvciB3ZWJjYW0gY2FwYWJpbGl0aWVzLCBlbmFibGluZyBgVVNCX0dfV0VCQ0FNYCBzZWVtcyBvYnZpb3VzIC0gdGhhdCdzIHRoZSBnYWRnZXQgZHJpdmVyIGZvciBhIHdlYmNhbS4gQW5kIG9mIGNvdXJzZSwgZ2l2ZW4gdGhpcyBhbGwgcmV2b2x2ZXMgYXJvdW5kIHZpZGVvLCBJJ2xsIG5lZWQgYFZJREVPX0RFVmAgZm9yIHRoZSBWaWRlbzRMaW51eCBmcmFtZXdvcmsuXG5cbkhvd2V2ZXIsIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgc2Vjb25kIGhlcmUsIEkgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCBgVVNCX0RVTU1ZX0hDRGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGhvc3QgY29udHJvbGxlciBlbXVsYXRpb24uIFdlIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoaXMgZW11bGF0ZXMgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgdW5leHBlY3RlZCBiZWhhdmlvciBvciBjb25mbGljdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nOyBpdCdzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjc3NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTQ6MzguMDY1NzE1Njc2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMwOTQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0RVTU1ZX0hDRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVxcdHRyaXN0YXRlIFxcXCJEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTQ6MzguMTE3MDMyMDI0WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTg3MjA2MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIFVTQiBDb25maWd1cmF0aW9uKipcblxuWWVzLCB0aGF0IGxvb2tzIHJpZ2h0LiBUaGUgaW5jbHVzaW9uIG9mIGBVU0JfRFVNTVlfSENEYCBpcyBleGFjdGx5IHdoYXQgSSdkIGV4cGVjdCBnaXZlbiB0aGUgY3VycmVudCBnb2Fscy4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGNydWNpYWwuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSBpZiBgVVNCX0NPTkZJR0ZTYCBoYXMgYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcyBJJ20gb3Zlcmxvb2tpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgcmVxdWlyZWQgbW9kdWxlcyBvciBjb25maWd1cmF0aW9ucyB0aGF0IHdpbGwgaW1wYWN0IHRoZSBzZXR1cCBkb3duc3RyZWFtLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM4OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE0OjQyLjYxNTc1NjE2NloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM0MjYyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9DT05GSUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMz1jb25maWcgVVNCX0ZfVENNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjI4OmNvbmZpZyBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjM5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0MS1cXHRib29sIFxcXCJHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDk6Y29uZmlnIFVTQl9DT05GSUdGU19BQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXFx0Ym9vbCBcXFwiQWJzdHJhY3QgQ29udHJvbCBNb2RlbCAoQ0RDIEFDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjU5OmNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNzAtXFx0Ym9vbCBcXFwiTmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODE6Y29uZmlnIFVTQl9DT05GSUdGU19FQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjkzOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDQtXFx0Ym9vbCBcXFwiUk5ESVNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzE5OmNvbmZpZyBVU0JfQ09ORklHRlNfRUVNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVxcdGJvb2wgXFxcIkV0aGVybmV0IEVtdWxhdGlvbiBNb2RlbCAoRUVNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzU6Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXFx0Ym9vbCBcXFwiUGhvbmV0IHByb3RvY29sXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0Ni1cXHRib29sIFxcXCJNYXNzIHN0b3JhZ2VcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU2OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9MQl9TU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cXHRib29sIFxcXCJMb29wYmFjayBhbmQgc291cmNlc2luayBmdW5jdGlvbiAoZm9yIHRlc3RpbmcpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzY4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM2OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXFx0Ym9vbCBcXFwiRnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgyLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozOTk6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMCAobGVnYWN5IGltcGxlbWVudGF0aW9uKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMi1cXHRib29sIFxcXCJNSURJIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESTJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXFx0Ym9vbCBcXFwiTUlESSAyLjAgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDU4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXFx0Ym9vbCBcXFwiSElEIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY5LVxcdGJvb2wgXFxcIlVTQiBXZWJjYW0gZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgyLVxcdGJvb2wgXFxcIlByaW50ZXIgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDo0Mi42NjkxOTI2MTRaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4MTA5Mjg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gQmFzZWQgb24gd2hhdCBJJ20gbG9va2luZyBhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsLiBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvYCBkaXJlY3RvcnkgYmVmb3JlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgYEtjb25maWdgIGZpbGUgaXMgdGhlIHBsYWNlIHRvIGJlIGZvciB0aGF0LiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCB0byBsaW5lIDIyOCAob3IgdGhlcmVhYm91dHMpIG9mIHRoYXQgZmlsZS4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBnYWRnZXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZ2luLCBvciBhdCBsZWFzdCBhIHNpZ25pZmljYW50IGdyb3VwaW5nIG9mIHRoZW0uIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGUgdmFyaW91cyBnYWRnZXQgZnVuY3Rpb25hbGl0aWVzIGFyZSBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyZWQuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDo0Ny43NTAyOTAzODlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjI1LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjI1OlxcdFxcbiAyMjY6XFx0IyB0aGlzIGZpcnN0IHNldCBvZiBkcml2ZXJzIGFsbCBkZXBlbmQgb24gYnVsay1jYXBhYmxlIGhhcmR3YXJlLlxcbiAyMjc6XFx0XFxuIDIyODpcXHRjb25maWcgVVNCX0NPTkZJR0ZTXFxuIDIyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBmdW5jdGlvbnMgY29uZmlndXJhYmxlIHRocm91Z2ggY29uZmlnZnNcXFwiXFxuIDIzMDpcXHRcXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbiAyMzE6XFx0XFx0aGVscFxcbiAyMzI6XFx0XFx0ICBBIExpbnV4IFVTQiBcXFwiZ2FkZ2V0XFxcIiBjYW4gYmUgc2V0IHVwIHRocm91Z2ggY29uZmlnZnMuXFxuIDIzMzpcXHRcXHQgIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZSBVU0IgZnVuY3Rpb25zICh3aGljaCBmcm9tIHRoZSBob3N0J3NcXG4gMjM0OlxcdFxcdCAgcGVyc3BlY3RpdmUgYXJlIHNlZW4gYXMgaW50ZXJmYWNlcykgYW5kIGNvbmZpZ3VyYXRpb25zIGFyZVxcbiAyMzU6XFx0XFx0ICBzcGVjaWZpZWQgc2ltcGx5IGJ5IGNyZWF0aW5nIGFwcHJvcHJpYXRlIGRpcmVjdG9yaWVzIGluIGNvbmZpZ2ZzLlxcbiAyMzY6XFx0XFx0ICBBc3NvY2lhdGluZyBmdW5jdGlvbnMgd2l0aCBjb25maWd1cmF0aW9ucyBpcyBkb25lIGJ5IGNyZWF0aW5nXFxuIDIzNzpcXHRcXHQgIGFwcHJvcHJpYXRlIHN5bWJvbGljIGxpbmtzLlxcbiAyMzg6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2NvbmZpZ2ZzLnJzdC5cXG4gMjM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDo0Ny43NTAzOTA0MThaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg0MzYwMTczMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVVZDIEdhZGdldCBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBVVkMgZ2FkZ2V0IGltcGxlbWVudGF0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSd2ZSBjb25maXJtZWQgaXMgdGhhdCBgVVNCX0NPTkZJR0ZTYCBoYXMgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLiBJIG5vdGljZWQgYFVTQl9HX1dFQkNBTWAgaXMgYSBsZWdhY3kgZHJpdmVyIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBpcyB0aGUgY29uZmlnZnMtYmFzZWQgb25lLCBidXQgSSdtIGdvaW5nIHRvIGluY2x1ZGUgYm90aCBvZiB0aGVtIGZvciBub3cuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBgVVNCX0ZfVVZDYCBhZ2FpbiwganVzdCB0byBiZSB0aG9yb3VnaC4gSSBhbHJlYWR5IHNlZSB0aGF0IGl0J3Mgc2VsZWN0ZWQgYnkgYm90aCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBhbmQgYFVTQl9HX1dFQkNBTWAuXG5cbk5leHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyByZWFjaGFibGUuIEkgc2VlIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjX3Y0bDJfc2V0X2Zvcm1hdGAuIE9rYXksIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgY2FsbGVkIGJ5IHRoZSBWNEwyIGNvcmUgd2hlbmV2ZXIgYFZJRElPQ19TVFJFQU1PTmAgaXMgaXNzdWVkLCB3aGljaCBtZWFucyB1c2Vyc3BhY2UgY2FuIHRyaWdnZXIgaXQgYnkgb3BlbmluZyB0aGF0IGAvZGV2L3ZpZGVvWGAgbm9kZSB0aGUgVVZDIGdhZGdldCBjcmVhdGVzIGFuZCB0aGVuIGlzc3VpbmcgYFZJRElPQ19TVFJFQU1PTmAuXG5cblRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzb21lIGNoZWNrcyBmb3IgYHV2Yy1cdTAwM2VzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEYCBhbmQgYHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2NgLiBJIHNlZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHByZXZlbnRpbmcgY3Jhc2hlcyBvciBpbnZhbGlkIHN0YXRlcyBpZiBzdHJlYW1pbmcgc3RhcnRzIGJlZm9yZSB0aGUgZ2FkZ2V0IGlzIGZ1bGx5IGNvbm5lY3RlZCBvciBjb25maWd1cmVkLiBUaGF0J3MgYSBkZWZpbml0ZSBpbXByb3ZlbWVudCBhbmQgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIGZ1enppbmcuXG5cbk15IGZvY3VzIHN5bWJvbHMgaGVyZSBhcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gTXkgY29uZmlnIHJlcXVpcmVtZW50cywgYXMgYSByZW1pbmRlciwgYXJlIGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VWQ2AsIGBVU0JfR19XRUJDQU1gLCBhbmQgYFZJREVPX0RFVmAuXG5cbkkgc2hvdWxkIHByb2JhYmx5IHF1aWNrbHkgdmVyaWZ5IGlmIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UsIGp1c3QgaW4gY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1MzQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDo1Ni41OTM5OTUzNjlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzA1MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInV2Y192aWRlb19hbGxvY19yZXF1ZXN0c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTU0Nz1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjU0ODp1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU0OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9NzY2PWludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03ODYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc4NzpcXHRpZiAoKHJldCA9IHV2Y192aWRlb19hbGxvY19yZXF1ZXN0cyh2aWRlbykpIFxcdTAwM2MgMClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzg4LVxcdFxcdHJldHVybiByZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE0OjU2LjY1MDMxMDIwN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjAwNTMxNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gdGhlIGNvbnRleHQgdGhhdCBJJ20gbGlrZWx5IGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgY29kZWJhc2U6XG5cbioqRm9jdXNpbmcgb24gdGhlIEVuYWJsZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYHV2Y2dfdmlkZW9fZW5hYmxlYCwgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IGhlcmUuIEkgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIHRob3VnaHQgaXMgdG8gZm9jdXMgb24gdGhpcyBmdW5jdGlvbi4gR29vZCwgdGhhdCBtYWtlcyBzZW5zZTsgdGhhdCBzZWVtcyBsb2dpY2FsIGJlY2F1c2Ugb2YgdGhlIGltcGxpY2F0aW9uIHRoYXQgaXQncyB0aGUgcm9vdCBvZiB0aGUgaXNzdWUuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQncyBqdXN0IGNvbmZpcm0gdGhhdCBhc3N1bXB0aW9uLiBJIHdhbnQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgdXZjZ192aWRlb19lbmFibGVgIGlzbid0IGludm9rZWQgZnJvbSBzb21lIHVuZXhwZWN0ZWQgY29ybmVyIG9mIHRoZSBjb2RlIGJhc2UuIExldCdzIHRyYWNlIGFsbCB0aGUgY2FsbCBzaXRlcyB0byBtYWtlIHN1cmUgbm90aGluZyBlbHNlIGlzIGNhbGxpbmcgaXQuIEdvdHRhIG1ha2Ugc3VyZSB3ZSdyZSBub3QgbWlzc2luZyBzb21ldGhpbmcgb3IgY2hhc2luZyB0aGUgd3JvbmcgcmFiYml0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgxNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE1OjAyLjI1MDg0NDkyNVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0NzY1MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjZ192aWRlb19lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MjA9dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzNS1cXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUzNjpcXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM3LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9Njg4PXV2Y2dfdmlkZW9fZGlzYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjUtICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc2NjppbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmg9MTU9c3RydWN0IHV2Y192aWRlbztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oOjE3OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oLTE4LWludCB1dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNTowMi4yOTczMjgyNzRaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMwNjA0NDQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhpbmtpbmcgcHJvY2VzcywgZm9ybWF0dGVkIGZvciBhIGZlbGxvdyBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiBGdW5jdGlvbiBDYWxsIFJlbGF0aW9uc2hpcHMqKlxuXG5BbHJpZ2h0LCBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggaGVyZS4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV2ZXIgY2FsbGVkIGZyb20gYHV2Y192NGwyX3N0cmVhbW9uYC4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBLbm93aW5nIHRoZSBjYWxsIGdyYXBoIGxpa2UgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cblxuVGhlcmVmb3JlLCBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGRlZmluaXRlbHkgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiB3aGVuIEknbSBleGFtaW5pbmcgdGhpcyBjb2RlLiBGdXJ0aGVybW9yZSwgaXQgc3VnZ2VzdHMgdGhhdCBgdXZjZ192aWRlb19lbmFibGVgIGlzIGFsc28gYSBwcmltZSBjYW5kaWRhdGUgYXMgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbi4gXG5cbkknbGwgYmUgbGV2ZXJhZ2luZyB0aGUgYHNldC1yZXN1bHRzYCB0b29sIHRvIGNhcHR1cmUgYW5kIGNvbW11bmljYXRlIG15IGZpbmRpbmdzIGVmZmVjdGl2ZWx5LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gc3BlY2lmeSB0aGUgY29udGV4dCB3aGVuIEkgc2V0IHRoZSByZXN1bHRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ5NCwiT3V0cHV0VG9rZW5zIjoxNzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNTowOC42MDMzNzY3NFoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1OTQ0NzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICAgIFwiVVNCX0dfV0VCQ0FNXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dmNfdjRsMl9zdHJlYW1vblwiLFxuICAgIFwidXZjZ192aWRlb19lbmFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIGdhZGdldCBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb24gZHJpdmVyIHRvIGFkZCBzdGF0ZSBjaGVja3MgYmVmb3JlIGVuYWJsaW5nIHZpZGVvIHN0cmVhbWluZyBhbmQgYWxsb2NhdGluZyByZXF1ZXN0cy4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIHN0YXRlcyBhbmQgcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2Vyc3BhY2UgaXNzdWVzIFZJRElPQ19TVFJFQU1PTiBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGdhZGdldCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICAgIFwiVVNCX0dfV0VCQ0FNXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dmNfdjRsMl9zdHJlYW1vblwiLFxuICAgIFwidXZjZ192aWRlb19lbmFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIGdhZGdldCBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb24gZHJpdmVyIHRvIGFkZCBzdGF0ZSBjaGVja3MgYmVmb3JlIGVuYWJsaW5nIHZpZGVvIHN0cmVhbWluZyBhbmQgYWxsb2NhdGluZyByZXF1ZXN0cy4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIHN0YXRlcyBhbmQgcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2Vyc3BhY2UgaXNzdWVzIFZJRElPQ19TVFJFQU1PTiBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGdhZGdldCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTU6MDguNjk5MzMwMTU3WiIsIlNlcSI6NDksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU3ODQwOTk3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE1OjA4LjY5OTkzNjM5N1oiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTU3Nzc5ODQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGUgbWFjaGluZSBsb2dpYyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBhZGRzIGVuZHBvaW50IHZhbGlkYXRpb24gY2hlY2tzIChgdmlkZW8tXFx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZW5hYmxlZCB8fCAhdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VkZXNjYCkgaW4gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgYWNjZXNzZXMgdG8gZGlzYWJsZWQgb3IgdW5pbml0aWFsaXplZCBlbmRwb2ludHMsIHdoaWNoIHR5cGljYWxseSByZXN1bHQgaW4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGRhdGEgc3RydWN0dXJlcywgYnVmZmVycywgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW52YWxpZCBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MTA2NmIxMGEzYTM4NDYxNmQ3MzZkN2VmMzUxYTY5ZjFiN2YyNzIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTQ6MDk6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG5pbmRleCBkZmEwNTIxYTI0M2FjLi5hODA2NjNjOWFjYjczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG5AQCAtNTI3LDE3ICs1MjcsMjQgQEAgdXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbiBcdGlmICh0eXBlICE9IHZpZGVvLVx1MDAzZXF1ZXVlLnF1ZXVlLnR5cGUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHV2Yy1cdTAwM2VzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdHV2Yy1cdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9TVFJFQU1JTkc7XG4rXG4gXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuIFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuLVx0aWYgKHJldCBcdTAwM2MgMClcbitcdGlmIChyZXQgXHUwMDNjIDApIHtcbitcdFx0aWYgKHV2Yy1cdTAwM2VzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKVxuK1x0XHRcdHV2Yy1cdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9DT05ORUNURUQ7XG4gXHRcdHJldHVybiByZXQ7XG4rXHR9XG4gXG4gXHQvKlxuIFx0ICogQ29tcGxldGUgdGhlIGFsdGVybmF0ZSBzZXR0aW5nIHNlbGVjdGlvbiBzZXR1cCBwaGFzZSBub3cgdGhhdFxuIFx0ICogdXNlcnNwYWNlIGlzIHJlYWR5IHRvIHByb3ZpZGUgdmlkZW8gZnJhbWVzLlxuIFx0ICovXG4gXHR1dmNfZnVuY3Rpb25fc2V0dXBfY29udGludWUodXZjLCAwKTtcbi1cdHV2Yy1cdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9TVFJFQU1JTkc7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXG5pbmRleCAyZjk3MDBiM2YxYjY0Li5iZDY3YTlkODBiNDVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbkBAIC01NTEsNiArNTUxLDkgQEAgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuIFx0dW5zaWduZWQgaW50IGk7XG4gXHRpbnQgcmV0ID0gLUVOT01FTTtcbiBcbitcdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbiBcdC8qXG4gXHQgKiBjYWxjdWxhdGUgaW4gdXZjX3ZpZGVvX3ByZXBfcmVxdWVzdHNcbiBcdCAqIC0gdmlkZW8tXHUwMDNldXZjX251bV9yZXF1ZXN0c1xuQEAgLTc2NCw3ICs3NjcsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4rXHRpZiAodmlkZW8tXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZGVzYykge1xuIFx0XHR1dmNnX2luZm8oXHUwMDI2dmlkZW8tXHUwMDNldXZjLVx1MDAzZWZ1bmMsXG4gXHRcdFx0ICBcIlZpZGVvIGVuYWJsZSBmYWlsZWQsIGRldmljZSBpcyB1bmluaXRpYWxpemVkLlxcblwiKTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNTowOC42OTk5Mzc0MjdaIiwiU2VxIjo1MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1Nzc3NzA4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgVVNCIEdhZGdldCBVVkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0IG1lIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBmb3IgdGhlIFVTQiBnYWRnZXQgVVZDIGRyaXZlci4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSBkcml2ZXIncyByb2J1c3RuZXNzIHRocm91Z2ggc3RhdGUgbWFuYWdlbWVudCBhbmQgcHJldmVudGluZyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBhY2Nlc3NlcyB0byBlbmRwb2ludHMgdGhhdCBhcmVuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQgb3IgZW5hYmxlZC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBtb2RpZmljYXRpb25zIHRvIGB1dmNfdjRsMl9zdHJlYW1vbmAsIEkgc2VlIGEgY3JpdGljYWwgc3RhdGUgdHJhbnNpdGlvbiBiZWluZyBoYW5kbGVkLiBJdCBleHBsaWNpdGx5IGNoZWNrcyB0aGF0IHRoZSBVVkMgZGV2aWNlIGlzIGluIGEgYFVWQ19TVEFURV9DT05ORUNURURgIHN0YXRlIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGVuYWJsZSB0aGUgdmlkZW8gc3RyZWFtLiBUaGVuLCBpdCBzZXRzIHRoZSBzdGF0ZSB0byBgVVZDX1NUQVRFX1NUUkVBTUlOR2AgKmJlZm9yZSogY2FsbGluZyBgdXZjZ192aWRlb19lbmFibGVgLiBDcml0aWNhbGx5LCBpZiBgdXZjZ192aWRlb19lbmFibGVgIGZhaWxzLCB0aGUgc3RhdGUgaXMgY29ycmVjdGx5IHJldmVydGVkIHRvIGBVVkNfU1RBVEVfQ09OTkVDVEVEYC4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2Ygc3RhdGUgbWFjaGluZSBsb2dpYyBJIGxpa2UgdG8gc2VlLiBJdCdzIHByZXZlbnRhdGl2ZSBhbmQgcHJvdGVjdHMgYWdhaW5zdCBpbnZhbGlkIHN0YXRlIGFjY2Vzc2VzLlxuXG5Nb3Zpbmcgb24gdG8gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AsIHRoZXJlJ3MgYSBuZXcgY2hlY2sgYWRkZWQgYXQgdGhlIGJlZ2lubmluZy4gSXQncyB2ZXJpZnlpbmcgdGhhdCBgdmlkZW8tXHUwMDNlZXBgIGlzbid0IE5VTEwsIGFuZCBjcnVjaWFsbHksIHRoYXQgdGhlIGVuZHBvaW50IGlzIGFjdHVhbGx5IGVuYWJsZWQgYW5kIGhhcyBhIHZhbGlkIGRlc2NyaXB0b3IuIElmIGFueSBvZiB0aGVzZSBjb25kaXRpb25zIGFyZSBmYWxzZSwgaXQgbm93IHJldHVybnMgYC1FTk9ERVZgLCBpbmRpY2F0aW5nIGEgcHJvYmxlbSB3aXRoIHRoZSBkZXZpY2UncyBzZXR1cC4gVGhpcyBpcyBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBwcmFjdGljZS5cblxuRmluYWxseSwgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYCwgYSBzaW1pbGFyIGNoZWNrIGlzIGFkZGVkLiBJdCBlbnN1cmVzIHRoZSBlbmRwb2ludCBpcyB2YWxpZCwgZW5hYmxlZCwgYW5kIGhhcyBhIGRlc2NyaXB0b3IgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LiBUaGlzIGFkZHMgYW4gZXh0cmEgbGF5ZXIgb2YgcHJvdGVjdGlvbi5cblxuSSBjYW4gY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgYmFzZWQgb24gdGhpcyBkZXRhaWxlZCBleGFtaW5hdGlvbi4gTm93aGVyZSBkbyBJIHNlZSBhbnkgaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIG9yIHVzZWQuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYW5kIHN0YXRlIHZhbGlkYXRpb24uIFdlIGFyZW4ndCBkZWFsaW5nIHdpdGggYW55IGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgbWFuaXB1bGF0aW9ucywgb3IgcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzIHRoYXQgbWlnaHQgcmVxdWlyZSBLTVNBTi4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IGlzc3VlcyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBmaXggcG90ZW50aWFsIGJ1Z3MgdGhhdCBtaWdodCB0cmlnZ2VyIGtlcm5lbCBjcmFzaGVzLCBhbmQgS01TQU4gaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhpcyBraW5kIG9mIGZpeC4gVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQxLCJPdXRwdXRUb2tlbnMiOjE4OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE1OjIwLjI3NzcxMzM2MloiLCJTZXEiOjUyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGUgbWFjaGluZSBsb2dpYyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBhZGRzIGVuZHBvaW50IHZhbGlkYXRpb24gY2hlY2tzIChgdmlkZW8tXFx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZW5hYmxlZCB8fCAhdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VkZXNjYCkgaW4gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgYWNjZXNzZXMgdG8gZGlzYWJsZWQgb3IgdW5pbml0aWFsaXplZCBlbmRwb2ludHMsIHdoaWNoIHR5cGljYWxseSByZXN1bHQgaW4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGRhdGEgc3RydWN0dXJlcywgYnVmZmVycywgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW52YWxpZCBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGFkZHMgZW5kcG9pbnQgdmFsaWRhdGlvbiBjaGVja3MgKGB2aWRlby1cXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWRlc2NgKSBpbiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBhY2Nlc3NlcyB0byBkaXNhYmxlZCBvciB1bmluaXRpYWxpemVkIGVuZHBvaW50cywgd2hpY2ggdHlwaWNhbGx5IHJlc3VsdCBpbiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBidWZmZXJzLCBvciBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBwZXJmZWN0bHkgc3VpdGVkIHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBpbnZhbGlkIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 14:08:04 +0000 UTC FinishedAt: 2026-08-12 14:15:22 +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_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_CONFIGFS", "USB_CONFIGFS_F_UVC", "USB_G_WEBCAM", "VIDEO_DEV" ], "series_id": "70ac3841-2b45-4dfe-8eb0-7cc977eaf243" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "uvc_v4l2_streamon", "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNfdjRsMl9zdHJlYW1vbiYjMzQ7LAogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRlIG1hY2hpbmUgbG9naWMgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYWRkcyBlbmRwb2ludCB2YWxpZGF0aW9uIGNoZWNrcyAoYHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2NgKSBpbiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBhY2Nlc3NlcyB0byBkaXNhYmxlZCBvciB1bmluaXRpYWxpemVkIGVuZHBvaW50cywgd2hpY2ggdHlwaWNhbGx5IHJlc3VsdCBpbiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBidWZmZXJzLCBvciBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBwZXJmZWN0bHkgc3VpdGVkIHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBpbnZhbGlkIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIGdhZGdldCBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb24gZHJpdmVyIHRvIGFkZCBzdGF0ZSBjaGVja3MgYmVmb3JlIGVuYWJsaW5nIHZpZGVvIHN0cmVhbWluZyBhbmQgYWxsb2NhdGluZyByZXF1ZXN0cy4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIHN0YXRlcyBhbmQgcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2Vyc3BhY2UgaXNzdWVzIFZJRElPQ19TVFJFQU1PTiBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGdhZGdldCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDowOToxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG5pbmRleCBkZmEwNTIxYTI0M2FjLi5hODA2NjNjOWFjYjczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG5AQCAtNTI3LDE3ICYjNDM7NTI3LDI0IEBAIHV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXG4gXHRpZiAodHlwZSAhPSB2aWRlby1cdTAwM2VxdWV1ZS5xdWV1ZS50eXBlKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHRpZiAodXZjLVx1MDAzZXN0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURUQpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4mIzQzO1x0dXZjLVx1MDAzZXN0YXRlID0gVVZDX1NUQVRFX1NUUkVBTUlORztcbiYjNDM7XG4gXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuIFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuLVx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRpZiAodXZjLVx1MDAzZXN0YXRlID09IFVWQ19TVEFURV9TVFJFQU1JTkcpXG4mIzQzO1x0XHRcdHV2Yy1cdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9DT05ORUNURUQ7XG4gXHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuIFxuIFx0LypcbiBcdCAqIENvbXBsZXRlIHRoZSBhbHRlcm5hdGUgc2V0dGluZyBzZWxlY3Rpb24gc2V0dXAgcGhhc2Ugbm93IHRoYXRcbiBcdCAqIHVzZXJzcGFjZSBpcyByZWFkeSB0byBwcm92aWRlIHZpZGVvIGZyYW1lcy5cbiBcdCAqL1xuIFx0dXZjX2Z1bmN0aW9uX3NldHVwX2NvbnRpbnVlKHV2YywgMCk7XG4tXHR1dmMtXHUwMDNlc3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuaW5kZXggMmY5NzAwYjNmMWI2NC4uYmQ2N2E5ZDgwYjQ1ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXG5AQCAtNTUxLDYgJiM0Mzs1NTEsOSBAQCB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4gXHR1bnNpZ25lZCBpbnQgaTtcbiBcdGludCByZXQgPSAtRU5PTUVNO1xuIFxuJiM0MztcdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuIFx0LypcbiBcdCAqIGNhbGN1bGF0ZSBpbiB1dmNfdmlkZW9fcHJlcF9yZXF1ZXN0c1xuIFx0ICogLSB2aWRlby1cdTAwM2V1dmNfbnVtX3JlcXVlc3RzXG5AQCAtNzY0LDcgJiM0Mzs3NjcsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4mIzQzO1x0aWYgKHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2MpIHtcbiBcdFx0dXZjZ19pbmZvKFx1MDAyNnZpZGVvLVx1MDAzZXV2Yy1cdTAwM2VmdW5jLFxuIFx0XHRcdCAgXCYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVVZDJiMzNDssCiAgICAmIzM0O1VTQl9HX1dFQkNBTSYjMzQ7LAogICAgJiMzNDtWSURFT19ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1dmNfdjRsMl9zdHJlYW1vbiYjMzQ7LAogICAgJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIGdhZGdldCBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb24gZHJpdmVyIHRvIGFkZCBzdGF0ZSBjaGVja3MgYmVmb3JlIGVuYWJsaW5nIHZpZGVvIHN0cmVhbWluZyBhbmQgYWxsb2NhdGluZyByZXF1ZXN0cy4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIHN0YXRlcyBhbmQgcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2Vyc3BhY2UgaXNzdWVzIFZJRElPQ19TVFJFQU1PTiBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGdhZGdldCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDowOToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKaW5kZXggZGZhMDUyMWEyNDNhYy4uYTgwNjYzYzlhY2I3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKQEAgLTUyNywxNyAmIzQzOzUyNywyNCBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKQogCWlmICh0eXBlICE9IHZpZGVvLSZndDtxdWV1ZS5xdWV1ZS50eXBlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAodXZjLSZndDtzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CXV2Yy0mZ3Q7c3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HOwomIzQzOwogCS8qIEVuYWJsZSBVVkMgdmlkZW8uICovCiAJcmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pOwotCWlmIChyZXQgJmx0OyAwKQomIzQzOwlpZiAocmV0ICZsdDsgMCkgewomIzQzOwkJaWYgKHV2Yy0mZ3Q7c3RhdGUgPT0gVVZDX1NUQVRFX1NUUkVBTUlORykKJiM0MzsJCQl1dmMtJmd0O3N0YXRlID0gVVZDX1NUQVRFX0NPTk5FQ1RFRDsKIAkJcmV0dXJuIHJldDsKJiM0MzsJfQogCiAJLyoKIAkgKiBDb21wbGV0ZSB0aGUgYWx0ZXJuYXRlIHNldHRpbmcgc2VsZWN0aW9uIHNldHVwIHBoYXNlIG5vdyB0aGF0CiAJICogdXNlcnNwYWNlIGlzIHJlYWR5IHRvIHByb3ZpZGUgdmlkZW8gZnJhbWVzLgogCSAqLwogCXV2Y19mdW5jdGlvbl9zZXR1cF9jb250aW51ZSh1dmMsIDApOwotCXV2Yy0mZ3Q7c3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMKaW5kZXggMmY5NzAwYjNmMWI2NC4uYmQ2N2E5ZDgwYjQ1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYwpAQCAtNTUxLDYgJiM0Mzs1NTEsOSBAQCB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pCiAJdW5zaWduZWQgaW50IGk7CiAJaW50IHJldCA9IC1FTk9NRU07CiAKJiM0MzsJaWYgKHZpZGVvLSZndDtlcCA9PSBOVUxMIHx8ICF2aWRlby0mZ3Q7ZXAtJmd0O2VuYWJsZWQgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZGVzYykKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCS8qCiAJICogY2FsY3VsYXRlIGluIHV2Y192aWRlb19wcmVwX3JlcXVlc3RzCiAJICogLSB2aWRlby0mZ3Q7dXZjX251bV9yZXF1ZXN0cwpAQCAtNzY0LDcgJiM0Mzs3NjcsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pCiB7CiAJaW50IHJldDsKIAotCWlmICh2aWRlby0mZ3Q7ZXAgPT0gTlVMTCkgewomIzQzOwlpZiAodmlkZW8tJmd0O2VwID09IE5VTEwgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZCB8fCAhdmlkZW8tJmd0O2VwLSZndDtkZXNjKSB7CiAJCXV2Y2dfaW5mbygmYW1wO3ZpZGVvLSZndDt1dmMtJmd0O2Z1bmMsCiAJCQkgICYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXG4mIzM0Oyk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBVVkMgR2FkZ2V0IERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBJIHNlZSBtb2RpZmljYXRpb25zIHRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AgYW5kIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNgLiBJdCYjMzk7cyB0b3VjaGluZyBzb21lIGtleSBhcmVhczogYHV2Y192NGwyX3N0cmVhbW9uYCwgYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AsIGFuZCBgdXZjZ192aWRlb19lbmFibGVgLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIHNvbWUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBtYW5hZ2VtZW50IGlzc3VlcyB3aXRoaW4gdGhlIFVWQyBnYWRnZXQgZHJpdmVyJiMzOTtzIHN0YXRlIG1hY2hpbmUsIHNwZWNpZmljYWxseSBhcm91bmQgc3RyZWFtaW5nIGluaXRpYXRpb24gYW5kIGVuZHBvaW50IGF2YWlsYWJpbGl0eS4KClNwZWNpZmljYWxseSwgSSBzZWUgYWRkZWQgY2hlY2tzIGZvciBgdXZjLSZndDtzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEYCB3aXRoaW4gYHV2Y192NGwyX3N0cmVhbW9uYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFdlIGRvbiYjMzk7dCB3YW50IHRvIHN0YXJ0IHN0cmVhbWluZyBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBwcm9wZXJseSBjb25uZWN0ZWQuIEZ1cnRoZXIsIHRoZSBzZXR0aW5nIG9mIGB1dmMtJmd0O3N0YXRlID0gVVZDX1NUQVRFX1NUUkVBTUlOR2AgcmlnaHQgYmVmb3JlIGB1dmNnX3ZpZGVvX2VuYWJsZWAsIHdpdGggYSByb2xsYmFjayB0byBgVVZDX1NUQVRFX0NPTk5FQ1RFRGAgb24gZmFpbHVyZSwgaXMgYSBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBhcHByb2FjaC4gUHJldmVudHMgYSBwYXJ0aWFsIHN0YXRlLiBUaGUgY2hlY2tzIGZvciBgdmlkZW8tJmd0O2VwID09IE5VTEwgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZCB8fCAhdmlkZW8tJmd0O2VwLSZndDtkZXNjYCBpbiBib3RoIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGFuZCBgdXZjZ192aWRlb19lbmFibGVgIGFyZSBhbHNvIGNyaXRpY2FsLiBDbGVhcmx5LCB0aGUgY29kZSBuZWVkcyB0byBlbnN1cmUgdGhlIFVTQiBlbmRwb2ludCBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYW5kIGNvbmZpZ3VyZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LiBUaGF0IHByZXZlbnRzIHBhbmljcy4KClRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgVVZDIGdhZGdldCBkcml2ZXIuIEkga25vdyB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IGluIGNvbmZpZ3VyYXRpb25zIHRoYXQgdXNlIHRoZSBkdW1teV9oY2QsIG1ha2luZyB0aGlzIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBzZXR1cCBjb3ZlcnMgdGhhdCBzY2VuYXJpby4KCk5vdywgbGV0JiMzOTtzIGRldGVybWluZSB0aGUgY29uZmlndXJhdGlvbnMgbmVlZGVkIHRvIHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguIEkga25vdyB0aGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AgaXMgcGFydCBvZiB0aGUgYHVzYl9mX3V2Y2AgZnVuY3Rpb24uIEkgc2hvdWxkIGNoZWNrIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlYCwgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCwgYW5kIHBvc3NpYmx5IHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYCBmaWxlcyB0byBpZGVudGlmeSB0aGUgZXhhY3QgS2NvbmZpZyBvcHRpb25zIG5lZWRlZCB0byBlbmFibGUgdGhlIFVWQyBnYWRnZXQgZnVuY3Rpb25hbGl0eS4gVW5kZXJzdGFuZGluZyB0aG9zZSBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIGVmZmVjdGl2ZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3V2Y192NGwyXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX1VTQl9GX1VBQzIpXHQmIzQzOz0gdXNiX2ZfdWFjMi5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NDM6dXNiX2ZfdXZjLXlcdFx0XHQ6PSBmX3V2Yy5vIHV2Y19xdWV1ZS5vIHV2Y192NGwyLm8gdXZjX3ZpZGVvLm8gdXZjX2NvbmZpZ2ZzLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS00NC1pZm5lcSAoJChDT05GSUdfVFJBQ0lORyksKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NjcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgdXNiX2ZfdXZjLXlgIE1vZHVsZSBCdWlsZCBQcm9jZXNzKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB0aGUga2VybmVsIGlzIHRlbGxpbmcgbWUgYHVzYl9mX3V2Yy15YCBpcyBnZXR0aW5nIGJ1aWx0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGNvcnJlbGF0ZSB0aGlzIHdpdGggdGhlIGBDT05GSUdfVVNCX0ZfVVZDYCBLY29uZmlnIG9wdGlvbiBiZWluZyBlbmFibGVkLCB3aGljaCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgbmV4dCBzdGVwIGlzIGFsd2F5cyB0byB2ZXJpZnkgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGEgbW9kdWxlIGxpa2UgdGhpcy4gU28sIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSB1c3VhbCBzdXNwZWN0OiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgcnVsZSB0aGF0IGRlZmluZXMgaG93IGB1c2JfZl91dmNgICh0aGUgY29yZSBtb2R1bGUpIGdldHMgYnVpbHQsIGFuZCBwb3RlbnRpYWxseSwgaXRzIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGFueSBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGV4cGxhaW5zIGhvdyBgdXNiX2ZfdXZjLXlgIGlzIGhhbmRsZWQgYW5kIGVuc3VyZXMgdGhlIG1vZHVsZSBnZXRzIGxpbmtlZCBpbiB3aGVuIHRoYXQgS2NvbmZpZyBvcHRpb24gaXMgc2V0LCBhbmQgd2hlcmUgdGhlIHNvdXJjZXMgYXJlIGxvY2F0ZWQuIEdvb2Qgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiX2ZfdXZjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfVVNCX0ZfVUFDMilcdCYjNDM7PSB1c2JfZl91YWMyLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0Mzp1c2JfZl91dmMteVx0XHRcdDo9IGZfdXZjLm8gdXZjX3F1ZXVlLm8gdXZjX3Y0bDIubyB1dmNfdmlkZW8ubyB1dmNfY29uZmlnZnMub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ0LWlmbmVxICgkKENPTkZJR19UUkFDSU5HKSwpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDUtICAgIENGTEFHU191dmNfdHJhY2Uub1x0XHQ6PSAtSSQoc3JjKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQ2OiAgICB1c2JfZl91dmMteVx0XHRcdCYjNDM7PSB1dmNfdHJhY2Uub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ3LWVuZGlmXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX1VTQl9GX1VWQylcdFx0JiM0Mzs9IHVzYl9mX3V2Yy5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDktdXNiX2ZfbWlkaS15XHRcdFx0Oj0gZl9taWRpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTUzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgQ2hlY2sgZm9yIFVTQl9GX1VWQyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBgVVNCX0ZfVVZDYCB3aXRoaW4gdGhlIEtjb25maWcgc3lzdGVtLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCBmaXJzdCBzdGVwIGZvciBhIGZlYXR1cmUgcmVsYXRlZCB0byBVU0IgVmlkZW8gQ2xhc3MgKFVWQykuIElzIGl0IGRlZmluZWQ/IElzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdD8gSXMgaXQgZGVwZW5kZW50IG9uIG90aGVyIG9wdGlvbnMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnM/IEkgbmVlZCB0byBrbm93IGhvdyBpdCYjMzk7cyBzZXQgdXAgaW4gb3JkZXIgdG8gdW5kZXJzdGFuZCBob3cgdG8gcHJvY2VlZCB3aXRoIHdoYXRldmVyIHRhc2sgaXMgYXQgaGFuZCwgYmUgaXQgYWRkaW5nIGZ1bmN0aW9uYWxpdHkgb3IgdW5kZXJzdGFuZGluZyBhbiBleGlzdGluZyBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIG1lbnUgaXQmIzM5O3MgdW5kZXIsIGFuZCBpZGVhbGx5LCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBMZXQgbWUgZ28gZmluZCB0aGF0IGNvbmZpZyBmaWxlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGNoZWNrLCBhIHF1aWNrIGZpcnN0IGxpbmUgb2YgaW5xdWlyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0ZfVVZDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjA2LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgZGVidWdnaW5nIHNvbWUgY29kZSwgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWNvZGluZyB0aGUgVHJpc3RhdGUqKgoKQWxyaWdodCwgYSB0cmlzdGF0ZS4gTm8gcHJvbXB0LCBpbnRlcmVzdGluZy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzbiYjMzk7dCBhIHVzZXItZHJpdmVuIHNlbGVjdGlvbjsgc29tZXRoaW5nIGVsc2UgaXMgY2FsbGluZyB0aGUgc2hvdHMgaGVyZS4gTXkgbWVudGFsIGNoZWNrbGlzdCBraWNrcyBpbjogV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCB1cHN0cmVhbSBwcm9jZXNzIGlzIGluZmx1ZW5jaW5nIHRoaXMgc3RhdGU/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyB0cmlzdGF0ZSB0byB1bmRlcnN0YW5kIGl0cyBwYXJlbnQgc2VsZWN0b3IuIEdvdHRhIGZpZ3VyZSBvdXQgKndoYXQqIGlzIGRpY3RhdGluZyBpdHMgc3RhdGUgYW5kICp3aHkqLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcsIGJlY2F1c2Ugd2l0aG91dCBrbm93aW5nIGl0cyBzZWxlY3RvciwgdGhpcyB0cmlzdGF0ZSBpcyBqdXN0IGEgY29uZnVzaW5nIHB1enpsZSBwaWVjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1VWQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDY4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NzQtXHRzZWxlY3QgVklERU9CVUYyX1ZNQUxMT0NcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3NTpcdHNlbGVjdCBVU0JfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTA2LVx0c2VsZWN0IFZJREVPQlVGMl9WTUFMTE9DXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTA3Olx0c2VsZWN0IFVTQl9GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwOC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg3NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBVVkMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBVVkMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFRoZSBrZXkgaGVyZSBzZWVtcyB0byBiZSBlaXRoZXIgYFVTQl9DT05GSUdGU19GX1VWQ2Agb3IgYFVTQl9HX1dFQkNBTWAuIFRob3NlIGFyZSB0aGUgdHdvIG9wdGlvbnMgdGhhdCBzdGFuZCBvdXQuIEJ1dCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hhdGV2ZXIgSSBjaG9vc2UsIEkmIzM5O20gbm90IGluYWR2ZXJ0ZW50bHkgYnJlYWtpbmcgc29tZXRoaW5nIGVsc2Ugb3IgbGVhdmluZyBvdXQgY3JpdGljYWwgc3VwcG9ydGluZyBtb2R1bGVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhvc2UgZGVwZW5kIG9uIGFuZCBob3cgdGhleSByZWxhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBlbmNvdW50ZXJlZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgcGxhY2UgdGhpcyB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dC4gJiMzNDtVU0ImIzM0OyDigJMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBVbml2ZXJzYWwgU2VyaWFsIEJ1cy4gJiMzNDtDT05GSUdGUyYjMzQ7IOKAkyB0aGF0IHNjcmVhbXMgY29uZmlndXJhdGlvbiBmaWxlc3lzdGVtLCBhIHVzZXJzcGFjZSBpbnRlcmZhY2UgZm9yIGNvbmZpZ3VyaW5nIFVTQiBkZXZpY2VzLiBBbmQgJiMzNDtVVkMmIzM0Oy4uLiB0aGF0JiMzOTtzIFVTQiBWaWRlbyBDbGFzcy4gVGhlIHBpZWNlcyBhcmUgZmFsbGluZyBpbnRvIHBsYWNlLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmV4YWN0bHkqIHdoYXQgdGhpcyBzcGVjaWZpYyBmbGFnLCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCwgc2lnbmlmaWVzLiBJcyBpdCBhIGNvbXBpbGUtdGltZSBvcHRpb24/IEEgcnVuLXRpbWUgcGFyYW1ldGVyPyBBIGJpdCBmbGFnIHdpdGhpbiBhIGxhcmdlciBzdHJ1Y3R1cmU/IE15IGV4cGVydCBrbm93bGVkZ2UgaW1tZWRpYXRlbHkgbGVhbnMgbWUgdG93YXJkcyBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGZsYWcgd2l0aGluIGEgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUuIE15IG1lbnRhbCBtb2RlbCBpcyBqdW1waW5nIHN0cmFpZ2h0IHRvIHRoZSBsaWtlbHkgdW5kZXJseWluZyBrZXJuZWwgc3RydWN0dXJlcyBhbmQgaGVhZGVyIGZpbGVzLiBJJiMzOTttIHRoaW5raW5nIG9mIGBjb25maWdmc19hdHRyYCwgYHVzYl9mdW5jdGlvbl9pbnN0YW5jZWAsIGB1dmNfZnVuY3Rpb25gLCBhbmQgdGhlIHJlbGV2YW50IGRldmljZSB0cmVlIGJpbmRpbmdzLgoKSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoYXQgdGhlIGNvZGUmIzM5O3MgdHJ5aW5nIHRvICpkbyogd2l0aCB0aGlzIGZsYWcuIElzIGl0IGVuYWJsaW5nIFVWQyBmdW5jdGlvbmFsaXR5PyBEaXNhYmxpbmcgaXQ/IENvbmZpZ3VyaW5nIGl0cyBzcGVjaWZpYyBmZWF0dXJlcz8gSSBpbW1lZGlhdGVseSBzdGFydCBtYWtpbmcgZWR1Y2F0ZWQgZ3Vlc3NlcyBhcyB0byB0aGUgbGlrZWx5IHZhbHVlcyBhbmQgbWVhbmluZ3MgdGhpcyBmbGFnIG1pZ2h0IGhhdmU6IHBlcmhhcHMsIGl0IGNvbnRyb2xzIHRoZSBleHBvc3VyZSBvZiBVVkMtcmVsYXRlZCBkZXNjcmlwdG9ycywgZW5kcG9pbnRzLCBvciBjb250cm9sIGludGVyZmFjZXMuIFRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgcHJvdmlkZSBmdXJ0aGVyIGNsdWVzIGFuZCBpbnNpZ2h0cy4gSXQgY291bGQgYWxzbyByZWxhdGUgdG8gdGhlIGVudW1lcmF0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIHRoZSBVVkMgZnVuY3Rpb24uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzI4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcHJvY2Vzc2luZyB0aGUgZGVzY3JpYmVkIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AuIEkmIzM5O20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSA0NjguIEJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSwgdGhhdCBsaWtlbHkgbWFya3MgYSBjcml0aWNhbCBhcmVhIHdoZXJlIGNlcnRhaW4gY29yZSBmZWF0dXJlcyBvciBhIHNwZWNpZmljIGRyaXZlciYjMzk7cyBzZXR0aW5ncyBhcmUgZGVmaW5lZC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBzZWN0aW9uIG9yIGluIHRoZSBzdXJyb3VuZGluZyBsaW5lcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Iga2V5d29yZHMgbGlrZSAmIzM0O2NvbmZpZywmIzM0OyAmIzM0O3RyaXN0YXRlLCYjMzQ7ICYjMzQ7Ym9vbCwmIzM0OyBhbmQgc3BlY2lmaWMgZGV2aWNlIG5hbWVzIG9yIGRlc2NyaXB0b3JzIHRvIHF1aWNrbHkgcGFyc2Ugd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIGhvdyBpdCYjMzk7cyBjb250cm9sbGVkLiBUaW1lIHRvIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHRcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG4gNDYxOlx0XHRzZWxlY3QgVVNCX0ZfSElEXG4gNDYyOlx0XHRoZWxwXG4gNDYzOlx0XHQgIFRoZSBISUQgZnVuY3Rpb24gZHJpdmVyIHByb3ZpZGVzIGdlbmVyaWMgZW11bGF0aW9uIG9mIFVTQlxuIDQ2NDpcdFx0ICBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlcyAoSElEKS5cbiA0NjU6XHRcbiA0NjY6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfaGlkLnJzdC5cbiA0Njc6XHRcbiA0Njg6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG4gNDY5Olx0XHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbiA0NzA6XHRcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG4gNDcxOlx0XHRkZXBlbmRzIG9uIFZJREVPX0RFVlxuIDQ3MjpcdFx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbiA0NzM6XHRcdHNlbGVjdCBWSURFT0JVRjJfRE1BX1NHXG4gNDc0Olx0XHRzZWxlY3QgVklERU9CVUYyX1ZNQUxMT0NcbiA0NzU6XHRcdHNlbGVjdCBVU0JfRl9VVkNcbiA0NzY6XHRcdGhlbHBcbiA0Nzc6XHRcdCAgVGhlIFdlYmNhbSBmdW5jdGlvbiBhY3RzIGFzIGEgY29tcG9zaXRlIFVTQiBBdWRpbyBhbmQgVmlkZW8gQ2xhc3NcbiA0Nzg6XHRcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xuIDQ3OTpcdFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNDkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEZXBlbmRlbmNpZXMgYW5kIHRoZSBVU0IgV2ViY2FtIE1vZHVsZSoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZS4gVGhpcyBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBzZXR0aW5nLCBJJiMzOTttIHRoaW5raW5nLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCByZWxpZXMgb24gYm90aCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFZJREVPX0RFVmAuIE5vIHN1cnByaXNlcyB0aGVyZTsgVVZDIGZ1bmN0aW9uYWxpdHkgd2l0aGluIGNvbmZpZ2ZzIGlzLCBhZnRlciBhbGwsIGJ1aWxkaW5nIG9uIHRob3NlIGZvdW5kYXRpb25zLiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIgYW5kIHdoZXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1vcmUgcmVsZXZhbnQsIEkgbmVlZCB0byBjaGVjayBob3cgdGhlIGJyb2FkZXIgVVNCIHdlYmNhbSBmdW5jdGlvbmFsaXR5IGlzIHNldCB1cC4gTGV0JiMzOTtzIHNlZSB3aGF0IGBVU0JfR19XRUJDQU1gIGJyaW5ncyB0byB0aGUgdGFibGUuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgYXNwZWN0cyBhcmUgZW5hYmxlZCBieSBgVVNCX0dfV0VCQ0FNYCBhbmQgaG93IHRoZXkgaW50ZXItcmVsYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dfV0VCQ0FNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00OTc9ZW5kaWZcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAwLSMgb3IgdmlkZW8gY2xhc3MgZ2FkZ2V0IGRyaXZlcnMpLCBvciBzcGVjaWZpYyBoYXJkd2FyZSwgaGVyZS5cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo1MDE6Y29uZmlnIFVTQl9HX1dFQkNBTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBXZWJjYW0gR2FkZ2V0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSBwcm9jZXNzaW5nIHRoZSBjb2RlIG1lbnRpb25lZDoKCioqQW5hbHl6aW5nIEtjb25maWcgZm9yIFVTQiBHYWRnZXQgRHJpdmVyIE9wdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTAxLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciB0aGVzZSBsZWdhY3kgVVNCIGdhZGdldCBkcml2ZXJzLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbGx5IGNvbXBsZXggZGVwZW5kZW5jaWVzLCBsaWtlbHkgaW52b2x2aW5nIGRpZmZlcmVudCBVU0IgY29udHJvbGxlciBhcmNoaXRlY3R1cmVzIGFuZCB2YXJpb3VzIGdhZGdldCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vZHVsYXJpdHkgYW5kIHdoYXQga2luZCBvZiBjdXN0b21pemF0aW9uIHRoZSBrZXJuZWwgb2ZmZXJzIHVzZXJzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgbGVnYWN5IGNvZGUgb2Z0ZW4gaGFzIGxlc3MtdGhhbi1pZGVhbCBzdHJ1Y3R1cmUsIHNvIEkmIzM5O20gcHJlcGFyZWQgdG8gdHJhY2UgdGhyb3VnaCBzb21lIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgYW5kIHNlZSBob3cgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIEkmIzM5O20gYXNzdW1pbmcgYXQgdGhpcyBwb2ludCB0aGF0IGxpbmUgNTAxIHNob3VsZCBiZSBjbG9zZSB0byBhIHJlbGV2YW50IG9wdGlvbiBvciBmZWF0dXJlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MDA6XHQjIG9yIHZpZGVvIGNsYXNzIGdhZGdldCBkcml2ZXJzKSwgb3Igc3BlY2lmaWMgaGFyZHdhcmUsIGhlcmUuXG4gNTAxOlx0Y29uZmlnIFVTQl9HX1dFQkNBTVxuIDUwMjpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIFdlYmNhbSBHYWRnZXRcJiMzNDtcbiA1MDM6XHRcdGRlcGVuZHMgb24gVklERU9fREVWXG4gNTA0Olx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDUwNTpcdFx0c2VsZWN0IFZJREVPQlVGMl9ETUFfU0dcbiA1MDY6XHRcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xuIDUwNzpcdFx0c2VsZWN0IFVTQl9GX1VWQ1xuIDUwODpcdFx0aGVscFxuIDUwOTpcdFx0ICBUaGUgV2ViY2FtIEdhZGdldCBhY3RzIGFzIGEgY29tcG9zaXRlIFVTQiBBdWRpbyBhbmQgVmlkZW8gQ2xhc3NcbiA1MTA6XHRcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xuIDUxMTpcdFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXG4gNTEyOlx0XG4gNTEzOlx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiA1MTQ6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z193ZWJjYW1cJiMzNDsuXG4gNTE1Olx0XG4gNTE2Olx0Y29uZmlnIFVTQl9SQVdfR0FER0VUXG4gNTE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgUmF3IEdhZGdldFwmIzM0O1xuIDUxODpcdFx0aGVscFxuIDUxOTpcdFx0ICBVU0IgUmF3IEdhZGdldCBpcyBhIGdhZGdldCBkcml2ZXIgdGhhdCBnaXZlcyB1c2Vyc3BhY2UgbG93LWxldmVsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxODUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiAmYW1wOyBGdW5jdGlvbiBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgZHJpdmVyIHNldHVwLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBjbGVhcmx5LiBUaGUgYFVTQl9HX1dFQkNBTWAgZ2FkZ2V0IGRyaXZlciByZWxpZXMgb24gdGhlIGJhc2UgYFZJREVPX0RFVmAgZnJhbWV3b3JrLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBPZiBjb3Vyc2UsIHRvIGVuYWJsZSBhbnkgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHksIEkgbmVlZCBgVVNCX0dBREdFVGAgZW5hYmxlZC4gTm93LCB0aGUgYFVTQl9EVU1NWV9IQ0RgIG9wdGlvbiBpcyBpbnRlcmVzdGluZzsgaXTigJlzIHVzZWZ1bCBmb3IgZnV6emluZywgc28gSSYjMzk7bGwga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0aGlua2luZyBhYm91dCB0ZXN0aW5nIGxhdGVyIG9uLgoKTXkga2V5IGNvbmZpZ3MsIHRoZW4sIGFyZTogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCwgYFVTQl9HX1dFQkNBTWAsIGFuZCBgVklERU9fREVWYC4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZXMuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgdXZjX3Y0bDJfc3RyZWFtb25gLCBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCwgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGVpciBzY29wZSBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjX3Y0bDJfc3RyZWFtb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MTk9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MjEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY1MD1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2MS1cdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjY2MjpcdC52aWRpb2Nfc3RyZWFtb24gPSB1dmNfdjRsMl9zdHJlYW1vbixcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2My1cdC52aWRpb2Nfc3RyZWFtb2ZmID0gdXZjX3Y0bDJfc3RyZWFtb2ZmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTc2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgYHV2Y192NGwyX3N0cmVhbW9uYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBpbnRyaWNhdGVseSBsaW5rZWQgdG8gdGhlIGJyb2FkZXIgYHV2Y192NGwyX2lvY3RsX29wc2Agc3RydWN0dXJlLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgYW5kIHdoYXQgY29udGV4dCBpdCYjMzk7cyBvcGVyYXRpbmcgd2l0aGluLiBHaXZlbiB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IGZvY3VzIGFuZCBzdGFydCBpbnZlc3RpZ2F0aW5nIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZSBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBmdW5jdGlvbiB0byBzZWUgaG93IGl0IGNvbWVzIGludG8gcGxheSB3aXRoIGBzdHJlYW1vbmAuIExldCYjMzk7cyBkZWx2ZSBpbiBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYz01NDc9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjU0ODp1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNTQ5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9NzY2PWludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzg2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc4NzpcdGlmICgocmV0ID0gdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHZpZGVvKSkgXHUwMDNjIDApXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzg4LVx0XHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDQ2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBVVkMgVmlkZW8gRHJpdmVyJiMzOTtzIFJlcXVlc3QgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIHRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgYXJlYSBmb3IgY2xvc2VyIGluc3BlY3Rpb24uIEEgc3RhdGljIGZ1bmN0aW9uLCBpbiB0aGlzIGNvbnRleHQsIGltcGxpZXMgaXRzIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgbGlrZWx5IHdpdGhpbiB0aGUgVVZDIHZpZGVvIGRyaXZlciBpdHNlbGYuIFRoaXMgbWVhbnMgaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSBvdGhlciBtb2R1bGVzLCB3aGljaCBpcyBnZW5lcmFsbHkgZmluZSBmb3IgcmVxdWVzdCBhbGxvY2F0aW9uLCBidXQgSSBuZWVkIHRvIGNvbnNpZGVyIGltcGxpY2F0aW9ucyBmb3IgcG90ZW50aWFsIGZ1dHVyZSBleHRlbnNpb25zIG9yIGV4dGVybmFsIGludGVyYWN0aW9ucyB3aXRoIHJlcXVlc3QgaGFuZGxpbmcuCgpOb3csIGxldCYjMzk7cyBwaXZvdCB0byBgdXZjZ192aWRlb19lbmFibGVgLiBNeSBpbnR1aXRpb24gaXMgdGhpcyBmdW5jdGlvbiBsaWtlbHkgaW50ZXJhY3RzIHdpdGggdGhlIHJlcXVlc3QgcXVldWUgb3IgdGhlIGVuYWJsaW5nL2Rpc2FibGluZyBvZiB2aWRlbyBzdHJlYW1zLiBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIOKAkyB0aGUgYWxsb2NhdGlvbiBvZiByZXF1ZXN0cyBhbmQgdGhlIGVuYWJsaW5nIG9mIHZpZGVvIOKAkyBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaG93IGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBgdXZjZ192aWRlb19lbmFibGVgIChvciBhbnkgb3RoZXIgZnVuY3Rpb24gY2FsbGVkIGJ5IGB1dmNnX3ZpZGVvX2VuYWJsZWApIHRvIGVuc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHJlc291cmNlIGNvbnRlbnRpb24gaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1dmNnX3ZpZGVvX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9Njg4PXV2Y2dfdmlkZW9fZGlzYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzY1LSAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc2NjppbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzY3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg4NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHV2Y2dfdmlkZW9fZW5hYmxlYCoqCgpPa2F5LCBzbyBgdXZjZ192aWRlb19lbmFibGVgIGlzbiYjMzk7dCBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBnbG9iYWxseSBleHBvcnRlZCBzeW1ib2wsIG1lYW5pbmcgaXQmIzM5O3MgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgbW9kaWZpZWQgYnkgb3RoZXIgbW9kdWxlcyBpbiB0aGUga2VybmVsLCBvciBpZiBpdCYjMzk7cyBzaW1wbHkgZGVjbGFyZWQgd2l0aG91dCBgc3RhdGljYCBidXQgaXMgc3RpbGwgb25seSB1dGlsaXplZCBpbnRlcm5hbGx5IHdpdGhpbiBpdHMgZGVmaW5pbmcgbW9kdWxlLiBUaGUgaW1wbGljYXRpb25zIGFyZSBzaWduaWZpY2FudCBkZXBlbmRpbmcgb24gd2hpY2ggaXMgdGhlIGNhc2UuIElmIGV4cG9ydGVkLCBpdCB3YXJyYW50cyBhIGRlZXBlciBkaXZlIGludG8gdGhlIGFjY2VzcyBwYXR0ZXJucyBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgb3IgbWF5YmUgdGhlIGludGVudGlvbmFsIGFyY2hpdGVjdHVyZSBpdCBmYWNpbGl0YXRlcy4gSWYgaW50ZXJuYWwsIHRoZW4gdGhlIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24gZmVlbHMgbGlrZSBlaXRoZXIgYSBtaW5vciBkZXNpZ24gcXVpcmsgb3IgYSBzaWduIG9mIGZ1dHVyZSByZWZhY3RvcmluZy4gVGltZSB0byB0cmFjayBkb3duIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBpdCwgZWl0aGVyIHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXZjZ192aWRlb19lbmFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUyMD11dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzNS1cdC8qIEVuYWJsZSBVVkMgdmlkZW8uICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo1MzY6XHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MzctXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTY4OD11dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2NS0gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3NjY6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oPTE1PXN0cnVjdCB1dmNfdmlkZW87XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmg6MTc6aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaC0xOC1pbnQgdXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU0MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDQ4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVZDIEdhZGdldCBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIFVWQyBnYWRnZXQgY29kZSBhbmQgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cy4gVGhlIHByb21wdCBzdHJlc3NlcyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGZ1bmN0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgdXZjX3Y0bDJfc3RyZWFtb25gIHNpbmNlIHRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHZpYSBhbiBpb2N0bCwgYW5kIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgdGhlIGZhY3QgdGhhdCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBpbiBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBtZWFucyBpdCAqd29uJiMzOTt0KiBiZSBpbmxpbmVkIGFuZCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wuIEFsc28sIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXMgbm9uLXN0YXRpYywgc28gaXQmIzM5O3MgYSBkZWZpbml0ZSBjYW5kaWRhdGUuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgb2J2aW91cyBlbnRyeSBwb2ludHMuIFRoaW5raW5nIGl0IHRocm91Z2gsIGB1dmNfdjRsMl9zdHJlYW1vbmAgZ2V0cyBpbnZva2VkIHdoZW4gdGhlIGBWSURJT0NfU1RSRUFNT05gIGlvY3RsIGlzIGNhbGxlZCBvbiB0aGUgVjRMMiBkZXZpY2UgY3JlYXRlZCBieSB0aGUgVVZDIGdhZGdldCwgc28gaXQmIzM5O3MgYSBjbGVhciBmb2N1cyBzeW1ib2wuIGB1dmNnX3ZpZGVvX2VuYWJsZWAgc2VlbXMgbGlrZSBhIHNvbGlkIGNob2ljZSBhcyB3ZWxsLCBnaXZlbiBpdHMgbm9uLXN0YXRpYyBuYXR1cmUuCgpUaW1lIHRvIGNvbmZpcm0gdGhhdCBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGluZGVlZCBzdGF0aWMgYnkgbG9va2luZyBhdCBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNgLiBZZXAsIGl0JiMzOTtzIHN0YXRpYy4gQnV0IGJlY2F1c2UgaXQmIzM5O3MgYW4gaW9jdGwgY2FsbGJhY2ssIHRoZSBjb21waWxlciB3b24mIzM5O3QgaW5saW5lIGl0LgoKU28sIEkmIzM5O2xsIGFkZCBib3RoIGB1dmNnX3ZpZGVvX2VuYWJsZWAgYW5kIGB1dmNfdjRsMl9zdHJlYW1vbmAgdG8gdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9scy4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR19XRUJDQU1gIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYC4gYFVTQl9HX1dFQkNBTWAgZGVwZW5kcyBvbiBgVklERU9fREVWYCwgYW5kIGBVU0JfQ09ORklHRlNfRl9VVkNgIGRlcGVuZHMgb24gYFVTQl9DT05GSUdGU2AgYW5kIGBWSURFT19ERVZgLiBgVVNCX0NPTkZJR0ZTYCBpdHNlbGYgZGVwZW5kcyBvbiBgQ09ORklHRlNfRlNgLiBBbmQsIGFzIEkgcmVjYWxsLCBgVklERU9fREVWYCBkZXBlbmRzIG9uIGBJMkNgLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhhdCBgVklERU9fREVWYCBoYXMgbm8gb3RoZXIgcmVsZXZhbnQgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVklERU9fREVWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9LY29uZmlnPTE1Nz1tZW51IFwmIzM0O01lZGlhIGNvcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNTktXG5kcml2ZXJzL21lZGlhL0tjb25maWc6MTYwOmNvbmZpZyBWSURFT19ERVZcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtWaWRlbzRMaW51eCBjb3JlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjA1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTWVkaWEgU3Vic3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHplcm8gaW4gb24gYSBzcGVjaWZpYyBhcmVhIHdpdGhpbiB0aGUgTGludXgga2VybmVsJiMzOTtzIG1lZGlhIGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgYSBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgY29uZmlndXJlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBgZHJpdmVycy9tZWRpYS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgbWVkaWEgc3Vic3lzdGVtIGFyZSBkZWZpbmVkLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCBmaWxlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhcm91bmQgbGluZSAxNjAuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldywgSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBlaXRoZXIgYSByZWxhdGVkIG1vZHVsZSBvciBhIG1vcmUgZm9jdXNlZCBzZWN0aW9uIGluIHRoYXQgYXJlYS4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgbGVhZCBtZSB0byB0aGUgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb24gSSBuZWVkIHRvIGVpdGhlciB1bmRlcnN0YW5kIG9yIG1vZGlmeS4gVGhlIGdvYWwgaXMgYSBkZWVwZXIgZGl2ZSBvbiBjb25maWd1cmF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1NTpcdFxuIDE1NjpcdFxuIDE1NzpcdG1lbnUgXCYjMzQ7TWVkaWEgY29yZSBzdXBwb3J0XCYjMzQ7XG4gMTU4Olx0XHR2aXNpYmxlIGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxuIDE1OTpcdFxuIDE2MDpcdGNvbmZpZyBWSURFT19ERVZcbiAxNjE6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpZGVvNExpbnV4IGNvcmVcJiMzNDtcbiAxNjI6XHRcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfUkFESU9fU1VQUE9SVCB8fCBNRURJQV9TRFJfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUIHx8IE1FRElBX1RFU1RfU1VQUE9SVFxuIDE2MzpcdFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxuIDE2NDpcdFx0c2VsZWN0IFJBVElPTkFMXG4gMTY1Olx0XHRzZWxlY3QgVklERU9CVUYyX1Y0TDIgaWYgVklERU9CVUYyX0NPUkVcbiAxNjY6XHRcdGhlbHBcbiAxNjc6XHRcdCAgRW5hYmxlcyB0aGUgVjRMMiBBUEksIHVzZWQgYnkgY2FtZXJhcywgYW5hbG9nIFRWLCB2aWRlbyBncmFiYmVycyxcbiAxNjg6XHRcdCAgcmFkaW8gZGV2aWNlcyBhbmQgYnkgc29tZSBpbnB1dCBkZXZpY2VzLlxuIDE2OTpcdFxuIDE3MDpcdGNvbmZpZyBNRURJQV9DT05UUk9MTEVSXG4gMTcxOlx0XHRib29sIFwmIzM0O01lZGlhIENvbnRyb2xsZXIgQVBJXCYjMzQ7XG4gMTcyOlx0XHRkZWZhdWx0IE1FRElBX0NBTUVSQV9TVVBQT1JUIHx8IE1FRElBX0FOQUxPR19UVl9TVVBQT1JUIHx8IE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUXG4gMTczOlx0XHRoZWxwXG4gMTc0Olx0XHQgIEVuYWJsZSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkgdXNlZCB0byBxdWVyeSBtZWRpYSBkZXZpY2VzIGludGVybmFsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTc5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgVklERU9fREVWYCBpcyBwcmV0dHkgbGVhbjsgaXQgZG9lc24mIzM5O3Qgc2VlbSB0byByZWx5IG9uIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBiZXlvbmQgdGhlIEkyQyBpbnRlcmZhY2UsIGFuZCBldmVuIHRoZW4sIEkyQyBpcyBvcHRpb25hbC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGVzcGVjaWFsbHkgaWYgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gb3IgdHJ5aW5nIHRvIGlzb2xhdGUgYSBzcGVjaWZpYyB2aWRlbyBzdWJzeXN0ZW0uIFRoZSBgfHwgSTJDPW5gIHBhcnQgaXMga2V5IOKAkyBpZiBJJiMzOTttIGJ1aWxkaW5nIGZvciBhIHBsYXRmb3JtIHdoZXJlIEkyQyBpc24mIzM5O3QgcHJlc2VudCBvciByZWxldmFudCwgSSBjYW4gc2FmZWx5IGRpc2FibGUgaXQgYW5kIHN0aWxsIHBvdGVudGlhbGx5IGxldmVyYWdlIGBWSURFT19ERVZgIGZvciBvdGhlciBmdW5jdGlvbmFsaXR5LiBOb3csIGxldCYjMzk7cyBzaGlmdCBnZWFycyBhbmQgZXhhbWluZSBgVVNCX0dBREdFVGAuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGV4cGVjdGluZyBzb21lIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb3IgcmVsYXRpb25zaGlwcyB0aGVyZSwgYW5kIGl0JiMzOTtzIHByb2JhYmx5IHdvcnRoIGRpZ2dpbmcgaW50byB0aGUgc3BlY2lmaWMgc3ViLW9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgVVNCX0dBREdFVGAgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9HQURHRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgbWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTYyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc3OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZJTEVTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03OC1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjg4OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTk4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMDAtXHRpbnQgXCYjMzQ7TWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxMTY6Y29uZmlnIFVTQl9HQURHRVRfU1RPUkFHRV9OVU1fQlVGRkVSU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTE3LVx0aW50IFwmIzM0O051bWJlciBvZiBzdG9yYWdlIHBpcGVsaW5lIGJ1ZmZlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTkwPWNvbmZpZyBVU0JfR19OQ01cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjIwNjpjb25maWcgVVNCX0dBREdFVEZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA3LVx0dHJpc3RhdGUgXCYjMzQ7R2FkZ2V0IEZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjYyPWNvbmZpZyBVU0JfTUFTU19TVE9SQUdFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI3OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNzk6Y29uZmlnIFVTQl9HQURHRVRfVEFSR0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjgwLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljIE1vZHVsZVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zNDc9Y29uZmlnIFVTQl9FRzIwVFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MzcxOmNvbmZpZyBVU0JfR0FER0VUX1hJTElOWFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3Mi1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBVU0IgRHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjMwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIHNlY3Rpb24gYXJvdW5kIGxpbmUgMTcuIFRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgaGVhcnQgb2YgY29uZmlndXJpbmcgdGhlIGtlcm5lbCwgc28gdGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGhvdyB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gaXMgZW5hYmxlZCBhbmQgc3RydWN0dXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBVU0IgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZWNpc2lvbnMgZ2V0IG1hZGUgYWJvdXQgd2hhdCBmZWF0dXJlcyB3ZSB3YW50IHRvIGV4cG9zZSB0byB1c2Vyc3BhY2UgYXMgYSBVU0IgZGV2aWNlLiBGcm9tIGhlcmUsIEkgY2FuIHRyYWNlIG91dCB0byByZWxldmFudCBjb2RlIGFuZCBvdGhlciBrY29uZmlnIG9wdGlvbnMgYXMgbmVlZGVkLCBiYXNlZCBvbiB0aGlzIGluaXRpYWwgaGlnaC1sZXZlbCBtYXAgb2YgdGhlIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTU6XHQjXG4gIDE2Olx0XG4gIDE3Olx0bWVudWNvbmZpZyBVU0JfR0FER0VUXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdHNlbGVjdCBVU0JfQ09NTU9OXG4gIDIwOlx0XHRzZWxlY3QgTkxTXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgICBVU0IgaXMgYSBob3N0L2RldmljZSBwcm90b2NvbCwgb3JnYW5pemVkIHdpdGggb25lIGhvc3QgKHN1Y2ggYXMgYVxuICAyMzpcdFx0ICAgUEMpIGNvbnRyb2xsaW5nIHVwIHRvIDEyNyBwZXJpcGhlcmFsIGRldmljZXMuXG4gIDI0Olx0XHQgICBUaGUgVVNCIGhhcmR3YXJlIGlzIGFzeW1tZXRyaWMsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byBzZXQgdXA6XG4gIDI1Olx0XHQgICB5b3UgY2FuJiMzOTt0IGNvbm5lY3QgYSBcJiMzNDt0by10aGUtaG9zdFwmIzM0OyBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxuICAyNjpcdFxuICAyNzpcdFx0ICAgTGludXggY2FuIHJ1biBpbiB0aGUgaG9zdCwgb3IgaW4gdGhlIHBlcmlwaGVyYWwuICBJbiBib3RoIGNhc2VzXG4gIDI4Olx0XHQgICB5b3UgbmVlZCBhIGxvdyBsZXZlbCBidXMgY29udHJvbGxlciBkcml2ZXIsIGFuZCBzb21lIHNvZnR3YXJlXG4gIDI5Olx0XHQgICB0YWxraW5nIHRvIGl0LiAgUGVyaXBoZXJhbCBjb250cm9sbGVycyBhcmUgb2Z0ZW4gZGlzY3JldGUgc2lsaWNvbixcbiAgMzA6XHRcdCAgIG9yIGFyZSBpbnRlZ3JhdGVkIHdpdGggdGhlIENQVSBpbiBhIG1pY3JvY29udHJvbGxlci4gIFRoZSBtb3JlXG4gIDMxOlx0XHQgICBmYW1pbGlhciBob3N0IHNpZGUgY29udHJvbGxlcnMgaGF2ZSBuYW1lcyBsaWtlIFwmIzM0O0VIQ0lcJiMzNDssIFwmIzM0O09IQ0lcJiMzNDssXG4gIDMyOlx0XHQgICBvciBcJiMzNDtVSENJXCYjMzQ7LCBhbmQgYXJlIHVzdWFsbHkgaW50ZWdyYXRlZCBpbnRvIHNvdXRoYnJpZGdlcyBvbiBQQ1xuICAzMzpcdFx0ICAgbW90aGVyYm9hcmRzLlxuICAzNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc3NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIG9wdGlvbnMuCgoqKk15IENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kgZm9yIFVTQiBHYWRnZXQgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBjdXJyZW50IHRob3VnaHQgcHJvY2VzcyBpcyBjZW50ZXJlZCBhcm91bmQgc2V0dGluZyB1cCBVU0IgR2FkZ2V0IGZ1bmN0aW9uYWxpdHksIGFuZCB0aGUgbWVudWNvbmZpZyBjaG9pY2VzIGFyZSBrZXkgdG8gdGhhdC4gVGhlIGdvYWwgaGVyZSBpcyBjbGVhcmx5IHRvIGVzdGFibGlzaCBhIFVTQiB3ZWJjYW0gaW50ZXJmYWNlLCBhbmQgSeKAmW0gZ29pbmcgdG8gdXNlIHRoZSBgVVNCX0dBREdFVGAgbWVudWNvbmZpZy4KCkkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgZW5hYmxlIGBVU0JfR0FER0VUYCB3aGljaCB3aWxsIG9mIGNvdXJzZSBicmluZyBpbiB0aGUgY29yZSBnYWRnZXQgZnJhbWV3b3JrLiBJJiMzOTtsbCBuZWVkIGEgaG9zdCBjb250cm9sbGVyLCB3aGljaCB3aWxsIGJlIGVtdWxhdGVkIHNpbmNlIHdlIGFyZSBjb25maWd1cmluZyBmb3IgYSBnYWRnZXQgcm9sZS4gVGhlcmVmb3JlLCBJIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIHRvIGJlIGVuYWJsZWQgdG8gZG8gdGhpcy4KCkkmIzM5O20gZGVmaW5pdGVseSBnb2luZyB0byB1c2UgYFVTQl9DT05GSUdGU2AgYXMgdGhlIGZpbGUgc3lzdGVtIGZvciBnYWRnZXQgY29uZmlndXJhdGlvbiwgZ2l2aW5nIG1lIGZsZXhpYmlsaXR5IGluIGhvdyBJIHByZXNlbnQgdGhlIGludGVyZmFjZS4gVGhpcyB3aWxsIGdpdmUgbWUgYWxsIGtpbmRzIG9mIG9wdGlvbnMuIEdpdmVuIHRoZSBtZW50aW9uIG9mIHdlYmNhbSBmdW5jdGlvbmFsaXR5LCBJJiMzOTttIGdvaW5nIHRvIGFjdGl2YXRlIGBVU0JfQ09ORklHRlNfRl9VVkNgIHRvIHN1cHBvcnQgdGhlIFVTQiBWaWRlbyBDbGFzcyBmdW5jdGlvbmFsaXR5LgoKU2luY2Ugd2UgYXJlIGFpbWluZyBmb3Igd2ViY2FtIGNhcGFiaWxpdGllcywgZW5hYmxpbmcgYFVTQl9HX1dFQkNBTWAgc2VlbXMgb2J2aW91cyAtIHRoYXQmIzM5O3MgdGhlIGdhZGdldCBkcml2ZXIgZm9yIGEgd2ViY2FtLiBBbmQgb2YgY291cnNlLCBnaXZlbiB0aGlzIGFsbCByZXZvbHZlcyBhcm91bmQgdmlkZW8sIEkmIzM5O2xsIG5lZWQgYFZJREVPX0RFVmAgZm9yIHRoZSBWaWRlbzRMaW51eCBmcmFtZXdvcmsuCgpIb3dldmVyLCBJIG5lZWQgdG8gdGFrZSBhIHF1aWNrIHNlY29uZCBoZXJlLCBJIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBob3N0IGNvbnRyb2xsZXIgZW11bGF0aW9uLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGlzIGVtdWxhdGVzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGNvbmZsaWN0cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nOyBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9EVU1NWV9IQ0QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFwmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjctXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDI4OmNvbmZpZyBVU0JfRFVNTVlfSENEXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzODkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIHRoZSBVU0IgQ29uZmlndXJhdGlvbioqCgpZZXMsIHRoYXQgbG9va3MgcmlnaHQuIFRoZSBpbmNsdXNpb24gb2YgYFVTQl9EVU1NWV9IQ0RgIGlzIGV4YWN0bHkgd2hhdCBJJiMzOTtkIGV4cGVjdCBnaXZlbiB0aGUgY3VycmVudCBnb2Fscy4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGNydWNpYWwuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSBpZiBgVVNCX0NPTkZJR0ZTYCBoYXMgYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcyBJJiMzOTttIG92ZXJsb29raW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSByZXF1aXJlZCBtb2R1bGVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgd2lsbCBpbXBhY3QgdGhlIHNldHVwIGRvd25zdHJlYW0uIEJldHRlciBzYWZlIHRoYW4gc29ycnkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIFVTQiBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMz1jb25maWcgVVNCX0ZfVENNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjI4OmNvbmZpZyBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyOS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjM5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQwOmNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXHRib29sIFwmIzM0O0dlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQ4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXHRib29sIFwmIzM0O0Fic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjU5OmNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI2OTpjb25maWcgVVNCX0NPTkZJR0ZTX05DTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVx0Ym9vbCBcJiMzNDtOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O0V0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjkzOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDItXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDM6Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVx0Ym9vbCBcJiMzNDtSTkRJU1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzU6Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cdGJvb2wgXCYjMzQ7UGhvbmV0IHByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXHRib29sIFwmIzM0O01hc3Mgc3RvcmFnZVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cdGJvb2wgXCYjMzQ7TG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM2OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cdGJvb2wgXCYjMzQ7RnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzk4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVx0Ym9vbCBcJiMzNDtBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMy1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXHRib29sIFwmIzM0O01JREkgZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXHRib29sIFwmIzM0O01JREkgMi4wIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDU4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1OS1cdGJvb2wgXCYjMzQ7SElEIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgyLVx0Ym9vbCBcJiMzNDtQcmludGVyIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBCYXNlZCBvbiB3aGF0IEkmIzM5O20gbG9va2luZyBhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsLiBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvYCBkaXJlY3RvcnkgYmVmb3JlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgYEtjb25maWdgIGZpbGUgaXMgdGhlIHBsYWNlIHRvIGJlIGZvciB0aGF0LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gbGluZSAyMjggKG9yIHRoZXJlYWJvdXRzKSBvZiB0aGF0IGZpbGUuIFRoYXQmIzM5O3MgbGlrZWx5IHdoZXJlIHRoZSBjb3JlIGdhZGdldCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYmVnaW4sIG9yIGF0IGxlYXN0IGEgc2lnbmlmaWNhbnQgZ3JvdXBpbmcgb2YgdGhlbS4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGUgdmFyaW91cyBnYWRnZXQgZnVuY3Rpb25hbGl0aWVzIGFyZSBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyZWQuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjI1Olx0XG4gMjI2Olx0IyB0aGlzIGZpcnN0IHNldCBvZiBkcml2ZXJzIGFsbCBkZXBlbmQgb24gYnVsay1jYXBhYmxlIGhhcmR3YXJlLlxuIDIyNzpcdFxuIDIyODpcdGNvbmZpZyBVU0JfQ09ORklHRlNcbiAyMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4gMjMwOlx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDIzMTpcdFx0aGVscFxuIDIzMjpcdFx0ICBBIExpbnV4IFVTQiBcJiMzNDtnYWRnZXRcJiMzNDsgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ2ZzLlxuIDIzMzpcdFx0ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgVVNCIGZ1bmN0aW9ucyAod2hpY2ggZnJvbSB0aGUgaG9zdCYjMzk7c1xuIDIzNDpcdFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXG4gMjM1Olx0XHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXG4gMjM2Olx0XHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcbiAyMzc6XHRcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXG4gMjM4Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxuIDIzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTUzNAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVZDIEdhZGdldCBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFVWQyBnYWRnZXQgaW1wbGVtZW50YXRpb24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTt2ZSBjb25maXJtZWQgaXMgdGhhdCBgVVNCX0NPTkZJR0ZTYCBoYXMgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLiBJIG5vdGljZWQgYFVTQl9HX1dFQkNBTWAgaXMgYSBsZWdhY3kgZHJpdmVyIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBpcyB0aGUgY29uZmlnZnMtYmFzZWQgb25lLCBidXQgSSYjMzk7bSBnb2luZyB0byBpbmNsdWRlIGJvdGggb2YgdGhlbSBmb3Igbm93LgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBgVVNCX0ZfVVZDYCBhZ2FpbiwganVzdCB0byBiZSB0aG9yb3VnaC4gSSBhbHJlYWR5IHNlZSB0aGF0IGl0JiMzOTtzIHNlbGVjdGVkIGJ5IGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gLgoKTmV4dCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgdXZjZ192aWRlb19lbmFibGVgIGlzIHJlYWNoYWJsZS4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjX3Y0bDJfc2V0X2Zvcm1hdGAuIE9rYXksIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgY2FsbGVkIGJ5IHRoZSBWNEwyIGNvcmUgd2hlbmV2ZXIgYFZJRElPQ19TVFJFQU1PTmAgaXMgaXNzdWVkLCB3aGljaCBtZWFucyB1c2Vyc3BhY2UgY2FuIHRyaWdnZXIgaXQgYnkgb3BlbmluZyB0aGF0IGAvZGV2L3ZpZGVvWGAgbm9kZSB0aGUgVVZDIGdhZGdldCBjcmVhdGVzIGFuZCB0aGVuIGlzc3VpbmcgYFZJRElPQ19TVFJFQU1PTmAuCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgc29tZSBjaGVja3MgZm9yIGB1dmMtJmd0O3N0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURURgIGFuZCBgdmlkZW8tJmd0O2VwID09IE5VTEwgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZCB8fCAhdmlkZW8tJmd0O2VwLSZndDtkZXNjYC4gSSBzZWUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBzZWVtcyB0byBiZSBwcmV2ZW50aW5nIGNyYXNoZXMgb3IgaW52YWxpZCBzdGF0ZXMgaWYgc3RyZWFtaW5nIHN0YXJ0cyBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGltcHJvdmVtZW50IGFuZCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgZnV6emluZy4KCk15IGZvY3VzIHN5bWJvbHMgaGVyZSBhcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gTXkgY29uZmlnIHJlcXVpcmVtZW50cywgYXMgYSByZW1pbmRlciwgYXJlIGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VWQ2AsIGBVU0JfR19XRUJDQU1gLCBhbmQgYFZJREVPX0RFVmAuCgpJIHNob3VsZCBwcm9iYWJseSBxdWlja2x5IHZlcmlmeSBpZiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBpcyBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLCBqdXN0IGluIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3V2Y192aWRlb19hbGxvY19yZXF1ZXN0cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9NTQ3PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo1NDg6dXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU0OS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTc2Nj1pbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc4Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYzo3ODc6XHRpZiAoKHJldCA9IHV2Y192aWRlb19hbGxvY19yZXF1ZXN0cyh2aWRlbykpIFx1MDAzYyAwKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc4OC1cdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4MTYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiB0aGUgY29udGV4dCB0aGF0IEkmIzM5O20gbGlrZWx5IGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgY29kZWJhc2U6CgoqKkZvY3VzaW5nIG9uIHRoZSBFbmFibGUgRnVuY3Rpb24qKgoKQWxyaWdodCwgc28gdGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uLCBgdXZjZ192aWRlb19lbmFibGVgLCBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgaGVyZS4gSSBzZWUgdGhhdCB0aGUgb3JpZ2luYWwgdGhvdWdodCBpcyB0byBmb2N1cyBvbiB0aGlzIGZ1bmN0aW9uLiBHb29kLCB0aGF0IG1ha2VzIHNlbnNlOyB0aGF0IHNlZW1zIGxvZ2ljYWwgYmVjYXVzZSBvZiB0aGUgaW1wbGljYXRpb24gdGhhdCBpdCYjMzk7cyB0aGUgcm9vdCBvZiB0aGUgaXNzdWUuCgpOb3csIGJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCwgbGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGF0IGFzc3VtcHRpb24uIEkgd2FudCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXNuJiMzOTt0IGludm9rZWQgZnJvbSBzb21lIHVuZXhwZWN0ZWQgY29ybmVyIG9mIHRoZSBjb2RlIGJhc2UuIExldCYjMzk7cyB0cmFjZSBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gbWFrZSBzdXJlIG5vdGhpbmcgZWxzZSBpcyBjYWxsaW5nIGl0LiBHb3R0YSBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvciBjaGFzaW5nIHRoZSB3cm9uZyByYWJiaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3V2Y2dfdmlkZW9fZW5hYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MjA9dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYy01MzUtXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTM2Olx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM3LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYz02ODg9dXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjUtICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NzY2OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03Njcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uaD0xNT1zdHJ1Y3QgdXZjX3ZpZGVvO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oLTE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oOjE3OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTgtaW50IHV2Y2dfdmlkZW9fZGlzYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDk0CgkJCQkJCQlvdXRwdXQ6IDE3MwoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhpbmtpbmcgcHJvY2VzcywgZm9ybWF0dGVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKlJlZmxlY3Rpbmcgb24gRnVuY3Rpb24gQ2FsbCBSZWxhdGlvbnNoaXBzKioKCkFscmlnaHQsIEkmIzM5O20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggaGVyZS4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV2ZXIgY2FsbGVkIGZyb20gYHV2Y192NGwyX3N0cmVhbW9uYC4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4gS25vd2luZyB0aGUgY2FsbCBncmFwaCBsaWtlIHRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgpUaGVyZWZvcmUsIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgZGVmaW5pdGVseSBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIHdoZW4gSSYjMzk7bSBleGFtaW5pbmcgdGhpcyBjb2RlLiBGdXJ0aGVybW9yZSwgaXQgc3VnZ2VzdHMgdGhhdCBgdXZjZ192aWRlb19lbmFibGVgIGlzIGFsc28gYSBwcmltZSBjYW5kaWRhdGUgYXMgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbi4gCgpJJiMzOTtsbCBiZSBsZXZlcmFnaW5nIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gY2FwdHVyZSBhbmQgY29tbXVuaWNhdGUgbXkgZmluZGluZ3MgZWZmZWN0aXZlbHkuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gc3BlY2lmeSB0aGUgY29udGV4dCB3aGVuIEkgc2V0IHRoZSByZXN1bHRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VVkMmIzM0OywKICAgICYjMzQ7VVNCX0dfV0VCQ0FNJiMzNDssCiAgICAmIzM0O1ZJREVPX0RFViYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3V2Y192NGwyX3N0cmVhbW9uJiMzNDssCiAgICAmIzM0O3V2Y2dfdmlkZW9fZW5hYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0IgZ2FkZ2V0IFVWQyAoVVNCIFZpZGVvIENsYXNzKSBmdW5jdGlvbiBkcml2ZXIgdG8gYWRkIHN0YXRlIGNoZWNrcyBiZWZvcmUgZW5hYmxpbmcgdmlkZW8gc3RyZWFtaW5nIGFuZCBhbGxvY2F0aW5nIHJlcXVlc3RzLiBUaGlzIHByZXZlbnRzIGludmFsaWQgc3RhdGVzIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHVzZXJzcGFjZSBpc3N1ZXMgVklESU9DX1NUUkVBTU9OIGJlZm9yZSB0aGUgZ2FkZ2V0IGlzIGZ1bGx5IGNvbm5lY3RlZCBvciBjb25maWd1cmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgZ2FkZ2V0IGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VWQyYjMzQ7LAogICAgJiMzNDtVU0JfR19XRUJDQU0mIzM0OywKICAgICYjMzQ7VklERU9fREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXZjX3Y0bDJfc3RyZWFtb24mIzM0OywKICAgICYjMzQ7dXZjZ192aWRlb19lbmFibGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFVTQiBnYWRnZXQgVVZDIChVU0IgVmlkZW8gQ2xhc3MpIGZ1bmN0aW9uIGRyaXZlciB0byBhZGQgc3RhdGUgY2hlY2tzIGJlZm9yZSBlbmFibGluZyB2aWRlbyBzdHJlYW1pbmcgYW5kIGFsbG9jYXRpbmcgcmVxdWVzdHMuIFRoaXMgcHJldmVudHMgaW52YWxpZCBzdGF0ZXMgYW5kIHBvdGVudGlhbCBjcmFzaGVzIHdoZW4gdXNlcnNwYWNlIGlzc3VlcyBWSURJT0NfU1RSRUFNT04gYmVmb3JlIHRoZSBnYWRnZXQgaXMgZnVsbHkgY29ubmVjdGVkIG9yIGNvbmZpZ3VyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBnYWRnZXQgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGUgbWFjaGluZSBsb2dpYyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBhZGRzIGVuZHBvaW50IHZhbGlkYXRpb24gY2hlY2tzIChgdmlkZW8tXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZGVzY2ApIGluIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGFuZCBgdXZjZ192aWRlb19lbmFibGVgLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50IGludmFsaWQgc3RhdGUgdHJhbnNpdGlvbnMgYW5kIGFjY2Vzc2VzIHRvIGRpc2FibGVkIG9yIHVuaW5pdGlhbGl6ZWQgZW5kcG9pbnRzLCB3aGljaCB0eXBpY2FsbHkgcmVzdWx0IGluIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgdXNlLWFmdGVyLWZyZWUgYnVncy4gVGhlcmUgaXMgbm8gaW50cm9kdWN0aW9uIG9mIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGJ1ZmZlcnMsIG9yIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHBlcmZlY3RseSBzdWl0ZWQgdG8gY2F0Y2ggYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIGludmFsaWQgYWNjZXNzZXMgcmVsYXRlZCB0byB0aGVzZSBjaGFuZ2VzLiBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDowOToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKaW5kZXggZGZhMDUyMWEyNDNhYy4uYTgwNjYzYzlhY2I3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMKQEAgLTUyNywxNyAmIzQzOzUyNywyNCBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKQogCWlmICh0eXBlICE9IHZpZGVvLSZndDtxdWV1ZS5xdWV1ZS50eXBlKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAodXZjLSZndDtzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiYjNDM7CXV2Yy0mZ3Q7c3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HOwomIzQzOwogCS8qIEVuYWJsZSBVVkMgdmlkZW8uICovCiAJcmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pOwotCWlmIChyZXQgJmx0OyAwKQomIzQzOwlpZiAocmV0ICZsdDsgMCkgewomIzQzOwkJaWYgKHV2Yy0mZ3Q7c3RhdGUgPT0gVVZDX1NUQVRFX1NUUkVBTUlORykKJiM0MzsJCQl1dmMtJmd0O3N0YXRlID0gVVZDX1NUQVRFX0NPTk5FQ1RFRDsKIAkJcmV0dXJuIHJldDsKJiM0MzsJfQogCiAJLyoKIAkgKiBDb21wbGV0ZSB0aGUgYWx0ZXJuYXRlIHNldHRpbmcgc2VsZWN0aW9uIHNldHVwIHBoYXNlIG5vdyB0aGF0CiAJICogdXNlcnNwYWNlIGlzIHJlYWR5IHRvIHByb3ZpZGUgdmlkZW8gZnJhbWVzLgogCSAqLwogCXV2Y19mdW5jdGlvbl9zZXR1cF9jb250aW51ZSh1dmMsIDApOwotCXV2Yy0mZ3Q7c3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMKaW5kZXggMmY5NzAwYjNmMWI2NC4uYmQ2N2E5ZDgwYjQ1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYwpAQCAtNTUxLDYgJiM0Mzs1NTEsOSBAQCB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pCiAJdW5zaWduZWQgaW50IGk7CiAJaW50IHJldCA9IC1FTk9NRU07CiAKJiM0MzsJaWYgKHZpZGVvLSZndDtlcCA9PSBOVUxMIHx8ICF2aWRlby0mZ3Q7ZXAtJmd0O2VuYWJsZWQgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZGVzYykKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCS8qCiAJICogY2FsY3VsYXRlIGluIHV2Y192aWRlb19wcmVwX3JlcXVlc3RzCiAJICogLSB2aWRlby0mZ3Q7dXZjX251bV9yZXF1ZXN0cwpAQCAtNzY0LDcgJiM0Mzs3NjcsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pCiB7CiAJaW50IHJldDsKIAotCWlmICh2aWRlby0mZ3Q7ZXAgPT0gTlVMTCkgewomIzQzOwlpZiAodmlkZW8tJmd0O2VwID09IE5VTEwgfHwgIXZpZGVvLSZndDtlcC0mZ3Q7ZW5hYmxlZCB8fCAhdmlkZW8tJmd0O2VwLSZndDtkZXNjKSB7CiAJCXV2Y2dfaW5mbygmYW1wO3ZpZGVvLSZndDt1dmMtJmd0O2Z1bmMsCiAJCQkgICYjMzQ7VmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXG4mIzM0Oyk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MQoJCQkJCQkJb3V0cHV0OiAxODgKCQkJCQkJCXRob3VnaHRzOiA3MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgVVNCIEdhZGdldCBVVkMgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgcGF0Y2ggZm9yIHRoZSBVU0IgZ2FkZ2V0IFVWQyBkcml2ZXIuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgZHJpdmVyJiMzOTtzIHJvYnVzdG5lc3MgdGhyb3VnaCBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBwcmV2ZW50aW5nIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGFjY2Vzc2VzIHRvIGVuZHBvaW50cyB0aGF0IGFyZW4mIzM5O3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQgb3IgZW5hYmxlZC4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgbW9kaWZpY2F0aW9ucyB0byBgdXZjX3Y0bDJfc3RyZWFtb25gLCBJIHNlZSBhIGNyaXRpY2FsIHN0YXRlIHRyYW5zaXRpb24gYmVpbmcgaGFuZGxlZC4gSXQgZXhwbGljaXRseSBjaGVja3MgdGhhdCB0aGUgVVZDIGRldmljZSBpcyBpbiBhIGBVVkNfU1RBVEVfQ09OTkVDVEVEYCBzdGF0ZSBiZWZvcmUgcHJvY2VlZGluZyB0byBlbmFibGUgdGhlIHZpZGVvIHN0cmVhbS4gVGhlbiwgaXQgc2V0cyB0aGUgc3RhdGUgdG8gYFVWQ19TVEFURV9TVFJFQU1JTkdgICpiZWZvcmUqIGNhbGxpbmcgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gQ3JpdGljYWxseSwgaWYgYHV2Y2dfdmlkZW9fZW5hYmxlYCBmYWlscywgdGhlIHN0YXRlIGlzIGNvcnJlY3RseSByZXZlcnRlZCB0byBgVVZDX1NUQVRFX0NPTk5FQ1RFRGAuIFRoaXMgaXMgcHJlY2lzZWx5IHRoZSBraW5kIG9mIHN0YXRlIG1hY2hpbmUgbG9naWMgSSBsaWtlIHRvIHNlZS4gSXQmIzM5O3MgcHJldmVudGF0aXZlIGFuZCBwcm90ZWN0cyBhZ2FpbnN0IGludmFsaWQgc3RhdGUgYWNjZXNzZXMuCgpNb3Zpbmcgb24gdG8gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AsIHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGFkZGVkIGF0IHRoZSBiZWdpbm5pbmcuIEl0JiMzOTtzIHZlcmlmeWluZyB0aGF0IGB2aWRlby0mZ3Q7ZXBgIGlzbiYjMzk7dCBOVUxMLCBhbmQgY3J1Y2lhbGx5LCB0aGF0IHRoZSBlbmRwb2ludCBpcyBhY3R1YWxseSBlbmFibGVkIGFuZCBoYXMgYSB2YWxpZCBkZXNjcmlwdG9yLiBJZiBhbnkgb2YgdGhlc2UgY29uZGl0aW9ucyBhcmUgZmFsc2UsIGl0IG5vdyByZXR1cm5zIGAtRU5PREVWYCwgaW5kaWNhdGluZyBhIHByb2JsZW0gd2l0aCB0aGUgZGV2aWNlJiMzOTtzIHNldHVwLiBUaGlzIGlzIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLgoKRmluYWxseSwgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYCwgYSBzaW1pbGFyIGNoZWNrIGlzIGFkZGVkLiBJdCBlbnN1cmVzIHRoZSBlbmRwb2ludCBpcyB2YWxpZCwgZW5hYmxlZCwgYW5kIGhhcyBhIGRlc2NyaXB0b3IgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LiBUaGlzIGFkZHMgYW4gZXh0cmEgbGF5ZXIgb2YgcHJvdGVjdGlvbi4KCkkgY2FuIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGJhc2VkIG9uIHRoaXMgZGV0YWlsZWQgZXhhbWluYXRpb24uIE5vd2hlcmUgZG8gSSBzZWUgYW55IGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCBvciB1c2VkLiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93IGFuZCBzdGF0ZSB2YWxpZGF0aW9uLiBXZSBhcmVuJiMzOTt0IGRlYWxpbmcgd2l0aCBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb25zLCBvciBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVha3MgdGhhdCBtaWdodCByZXF1aXJlIEtNU0FOLiBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gVGhlIHByaW1hcnkgZ29hbCBvZiB0aGlzIHBhdGNoIGlzIHRvIGZpeCBwb3RlbnRpYWwgYnVncyB0aGF0IG1pZ2h0IHRyaWdnZXIga2VybmVsIGNyYXNoZXMsIGFuZCBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGZvciB0aGlzIGtpbmQgb2YgZml4LiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGFkZHMgZW5kcG9pbnQgdmFsaWRhdGlvbiBjaGVja3MgKGB2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjYCkgaW4gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgYWNjZXNzZXMgdG8gZGlzYWJsZWQgb3IgdW5pbml0aWFsaXplZCBlbmRwb2ludHMsIHdoaWNoIHR5cGljYWxseSByZXN1bHQgaW4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGRhdGEgc3RydWN0dXJlcywgYnVmZmVycywgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW52YWxpZCBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRlIG1hY2hpbmUgbG9naWMgaW4gYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYWRkcyBlbmRwb2ludCB2YWxpZGF0aW9uIGNoZWNrcyAoYHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2NgKSBpbiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBhY2Nlc3NlcyB0byBkaXNhYmxlZCBvciB1bmluaXRpYWxpemVkIGVuZHBvaW50cywgd2hpY2ggdHlwaWNhbGx5IHJlc3VsdCBpbiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBidWZmZXJzLCBvciBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBwZXJmZWN0bHkgc3VpdGVkIHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBpbnZhbGlkIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOToxNy4wNzYzNjIyODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjMyMDEzODg2OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgICBcIlVTQl9HX1dFQkNBTVwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZjX3Y0bDJfc3RyZWFtb25cIixcbiAgICBcInV2Y2dfdmlkZW9fZW5hYmxlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGFkZHMgZW5kcG9pbnQgdmFsaWRhdGlvbiBjaGVja3MgKGB2aWRlby1cXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWRlc2NgKSBpbiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBhY2Nlc3NlcyB0byBkaXNhYmxlZCBvciB1bmluaXRpYWxpemVkIGVuZHBvaW50cywgd2hpY2ggdHlwaWNhbGx5IHJlc3VsdCBpbiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBidWZmZXJzLCBvciBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBwZXJmZWN0bHkgc3VpdGVkIHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBpbnZhbGlkIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0IgZ2FkZ2V0IFVWQyAoVVNCIFZpZGVvIENsYXNzKSBmdW5jdGlvbiBkcml2ZXIgdG8gYWRkIHN0YXRlIGNoZWNrcyBiZWZvcmUgZW5hYmxpbmcgdmlkZW8gc3RyZWFtaW5nIGFuZCBhbGxvY2F0aW5nIHJlcXVlc3RzLiBUaGlzIHByZXZlbnRzIGludmFsaWQgc3RhdGVzIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHVzZXJzcGFjZSBpc3N1ZXMgVklESU9DX1NUUkVBTU9OIGJlZm9yZSB0aGUgZ2FkZ2V0IGlzIGZ1bGx5IGNvbm5lY3RlZCBvciBjb25maWd1cmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgZ2FkZ2V0IGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOToxNy4wNzYzNjg0MDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MjYxNTMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTQ6MDk6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xcbmluZGV4IGRmYTA1MjFhMjQzYWMuLmE4MDY2M2M5YWNiNzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xcbkBAIC01MjcsMTcgKzUyNywyNCBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxcbiBcXHRpZiAodHlwZSAhPSB2aWRlby1cXHUwMDNlcXVldWUucXVldWUudHlwZSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRpZiAodXZjLVxcdTAwM2VzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuK1xcdHV2Yy1cXHUwMDNlc3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HO1xcbitcXG4gXFx0LyogRW5hYmxlIFVWQyB2aWRlby4gKi9cXG4gXFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xcbi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4rXFx0XFx0aWYgKHV2Yy1cXHUwMDNlc3RhdGUgPT0gVVZDX1NUQVRFX1NUUkVBTUlORylcXG4rXFx0XFx0XFx0dXZjLVxcdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9DT05ORUNURUQ7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdH1cXG4gXFxuIFxcdC8qXFxuIFxcdCAqIENvbXBsZXRlIHRoZSBhbHRlcm5hdGUgc2V0dGluZyBzZWxlY3Rpb24gc2V0dXAgcGhhc2Ugbm93IHRoYXRcXG4gXFx0ICogdXNlcnNwYWNlIGlzIHJlYWR5IHRvIHByb3ZpZGUgdmlkZW8gZnJhbWVzLlxcbiBcXHQgKi9cXG4gXFx0dXZjX2Z1bmN0aW9uX3NldHVwX2NvbnRpbnVlKHV2YywgMCk7XFxuLVxcdHV2Yy1cXHUwMDNlc3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXFxuaW5kZXggMmY5NzAwYjNmMWI2NC4uYmQ2N2E5ZDgwYjQ1ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcXG5AQCAtNTUxLDYgKzU1MSw5IEBAIHV2Y192aWRlb19hbGxvY19yZXF1ZXN0cyhzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG4gXFx0dW5zaWduZWQgaW50IGk7XFxuIFxcdGludCByZXQgPSAtRU5PTUVNO1xcbiBcXG4rXFx0aWYgKHZpZGVvLVxcdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZGVzYylcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBjYWxjdWxhdGUgaW4gdXZjX3ZpZGVvX3ByZXBfcmVxdWVzdHNcXG4gXFx0ICogLSB2aWRlby1cXHUwMDNldXZjX251bV9yZXF1ZXN0c1xcbkBAIC03NjQsNyArNzY3LDcgQEAgaW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAodmlkZW8tXFx1MDAzZWVwID09IE5VTEwpIHtcXG4rXFx0aWYgKHZpZGVvLVxcdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZGVzYykge1xcbiBcXHRcXHR1dmNnX2luZm8oXFx1MDAyNnZpZGVvLVxcdTAwM2V1dmMtXFx1MDAzZWZ1bmMsXFxuIFxcdFxcdFxcdCAgXFxcIlZpZGVvIGVuYWJsZSBmYWlsZWQsIGRldmljZSBpcyB1bmluaXRpYWxpemVkLlxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOToxNy42Mzk5NDUxODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNTEwNTkzNzk5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgICBcIlVTQl9HX1dFQkNBTVwiLFxuICAgIFwiVklERU9fREVWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXZjX3Y0bDJfc3RyZWFtb25cIixcbiAgICBcInV2Y2dfdmlkZW9fZW5hYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFVTQiBnYWRnZXQgVVZDIChVU0IgVmlkZW8gQ2xhc3MpIGZ1bmN0aW9uIGRyaXZlciB0byBhZGQgc3RhdGUgY2hlY2tzIGJlZm9yZSBlbmFibGluZyB2aWRlbyBzdHJlYW1pbmcgYW5kIGFsbG9jYXRpbmcgcmVxdWVzdHMuIFRoaXMgcHJldmVudHMgaW52YWxpZCBzdGF0ZXMgYW5kIHBvdGVudGlhbCBjcmFzaGVzIHdoZW4gdXNlcnNwYWNlIGlzc3VlcyBWSURJT0NfU1RSRUFNT04gYmVmb3JlIHRoZSBnYWRnZXQgaXMgZnVsbHkgY29ubmVjdGVkIG9yIGNvbmZpZ3VyZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBnYWRnZXQgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkxMDY2YjEwYTNhMzg0NjE2ZDczNmQ3ZWYzNTFhNjlmMWI3ZjI3MjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDowOToxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbmluZGV4IGRmYTA1MjFhMjQzYWMuLmE4MDY2M2M5YWNiNzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbkBAIC01MjcsMTcgKzUyNywyNCBAQCB1dmNfdjRsMl9zdHJlYW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlKVxuIFx0aWYgKHR5cGUgIT0gdmlkZW8tXHUwMDNlcXVldWUucXVldWUudHlwZSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHRpZiAodXZjLVx1MDAzZXN0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURUQpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0dXZjLVx1MDAzZXN0YXRlID0gVVZDX1NUQVRFX1NUUkVBTUlORztcbitcbiBcdC8qIEVuYWJsZSBVVkMgdmlkZW8uICovXG4gXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XG4tXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0aWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRpZiAodXZjLVx1MDAzZXN0YXRlID09IFVWQ19TVEFURV9TVFJFQU1JTkcpXG4rXHRcdFx0dXZjLVx1MDAzZXN0YXRlID0gVVZDX1NUQVRFX0NPTk5FQ1RFRDtcbiBcdFx0cmV0dXJuIHJldDtcbitcdH1cbiBcbiBcdC8qXG4gXHQgKiBDb21wbGV0ZSB0aGUgYWx0ZXJuYXRlIHNldHRpbmcgc2VsZWN0aW9uIHNldHVwIHBoYXNlIG5vdyB0aGF0XG4gXHQgKiB1c2Vyc3BhY2UgaXMgcmVhZHkgdG8gcHJvdmlkZSB2aWRlbyBmcmFtZXMuXG4gXHQgKi9cbiBcdHV2Y19mdW5jdGlvbl9zZXR1cF9jb250aW51ZSh1dmMsIDApO1xuLVx0dXZjLVx1MDAzZXN0YXRlID0gVVZDX1NUQVRFX1NUUkVBTUlORztcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbmluZGV4IDJmOTcwMGIzZjFiNjQuLmJkNjdhOWQ4MGI0NWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1xuQEAgLTU1MSw2ICs1NTEsOSBAQCB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4gXHR1bnNpZ25lZCBpbnQgaTtcbiBcdGludCByZXQgPSAtRU5PTUVNO1xuIFxuK1x0aWYgKHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2MpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0LypcbiBcdCAqIGNhbGN1bGF0ZSBpbiB1dmNfdmlkZW9fcHJlcF9yZXF1ZXN0c1xuIFx0ICogLSB2aWRlby1cdTAwM2V1dmNfbnVtX3JlcXVlc3RzXG5AQCAtNzY0LDcgKzc2Nyw3IEBAIGludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcbiB7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKHZpZGVvLVx1MDAzZWVwID09IE5VTEwpIHtcbitcdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjKSB7XG4gXHRcdHV2Y2dfaW5mbyhcdTAwMjZ2aWRlby1cdTAwM2V1dmMtXHUwMDNlZnVuYyxcbiBcdFx0XHQgIFwiVmlkZW8gZW5hYmxlIGZhaWxlZCwgZGV2aWNlIGlzIHVuaW5pdGlhbGl6ZWQuXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjA5OjE3LjYzOTk0NjkzN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTYzMDU3MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFVWQyBHYWRnZXQgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBJIHNlZSBtb2RpZmljYXRpb25zIHRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AgYW5kIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNgLiBJdCdzIHRvdWNoaW5nIHNvbWUga2V5IGFyZWFzOiBgdXZjX3Y0bDJfc3RyZWFtb25gLCBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCwgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGFkZHJlc3Npbmcgc29tZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHJlc291cmNlIG1hbmFnZW1lbnQgaXNzdWVzIHdpdGhpbiB0aGUgVVZDIGdhZGdldCBkcml2ZXIncyBzdGF0ZSBtYWNoaW5lLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHN0cmVhbWluZyBpbml0aWF0aW9uIGFuZCBlbmRwb2ludCBhdmFpbGFiaWxpdHkuXG5cblNwZWNpZmljYWxseSwgSSBzZWUgYWRkZWQgY2hlY2tzIGZvciBgdXZjLVx1MDAzZXN0YXRlICE9IFVWQ19TVEFURV9DT05ORUNURURgIHdpdGhpbiBgdXZjX3Y0bDJfc3RyZWFtb25gLCB3aGljaCBtYWtlcyBzZW5zZS4gV2UgZG9uJ3Qgd2FudCB0byBzdGFydCBzdHJlYW1pbmcgaWYgdGhlIGRldmljZSBpc24ndCBwcm9wZXJseSBjb25uZWN0ZWQuIEZ1cnRoZXIsIHRoZSBzZXR0aW5nIG9mIGB1dmMtXHUwMDNlc3RhdGUgPSBVVkNfU1RBVEVfU1RSRUFNSU5HYCByaWdodCBiZWZvcmUgYHV2Y2dfdmlkZW9fZW5hYmxlYCwgd2l0aCBhIHJvbGxiYWNrIHRvIGBVVkNfU1RBVEVfQ09OTkVDVEVEYCBvbiBmYWlsdXJlLCBpcyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIGFwcHJvYWNoLiBQcmV2ZW50cyBhIHBhcnRpYWwgc3RhdGUuIFRoZSBjaGVja3MgZm9yIGB2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjYCBpbiBib3RoIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGFuZCBgdXZjZ192aWRlb19lbmFibGVgIGFyZSBhbHNvIGNyaXRpY2FsLiBDbGVhcmx5LCB0aGUgY29kZSBuZWVkcyB0byBlbnN1cmUgdGhlIFVTQiBlbmRwb2ludCBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYW5kIGNvbmZpZ3VyZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LiBUaGF0IHByZXZlbnRzIHBhbmljcy5cblxuVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBVVkMgZ2FkZ2V0IGRyaXZlci4gSSBrbm93IHRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBzcGVjaWZpY2FsbHkgaW4gY29uZmlndXJhdGlvbnMgdGhhdCB1c2UgdGhlIGR1bW15X2hjZCwgbWFraW5nIHRoaXMgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJJ20gZ29pbmcgdG8gd2FudCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgc2V0dXAgY292ZXJzIHRoYXQgc2NlbmFyaW8uXG5cbk5vdywgbGV0J3MgZGV0ZXJtaW5lIHRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4gSSBrbm93IHRoYXQgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jYCBpcyBwYXJ0IG9mIHRoZSBgdXNiX2ZfdXZjYCBmdW5jdGlvbi4gSSBzaG91bGQgY2hlY2sgdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGVgLCBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgLCBhbmQgcG9zc2libHkgdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgIGZpbGVzIHRvIGlkZW50aWZ5IHRoZSBleGFjdCBLY29uZmlnIG9wdGlvbnMgbmVlZGVkIHRvIGVuYWJsZSB0aGUgVVZDIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZWZmZWN0aXZlIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOToyNi4yMzYyNTU1ODNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4NTkzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjX3Y0bDJcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfVVNCX0ZfVUFDMilcXHQrPSB1c2JfZl91YWMyLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NDM6dXNiX2ZfdXZjLXlcXHRcXHRcXHQ6PSBmX3V2Yy5vIHV2Y19xdWV1ZS5vIHV2Y192NGwyLm8gdXZjX3ZpZGVvLm8gdXZjX2NvbmZpZ2ZzLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDQtaWZuZXEgKCQoQ09ORklHX1RSQUNJTkcpLClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6MjYuMjg3MTIwODIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzMDUyMjQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHVzYl9mX3V2Yy15YCBNb2R1bGUgQnVpbGQgUHJvY2VzcyoqXG5cblJpZ2h0LCBsZXQncyBzZWUsIHRoZSBrZXJuZWwgaXMgdGVsbGluZyBtZSBgdXNiX2ZfdXZjLXlgIGlzIGdldHRpbmcgYnVpbHQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY29ycmVsYXRlIHRoaXMgd2l0aCB0aGUgYENPTkZJR19VU0JfRl9VVkNgIEtjb25maWcgb3B0aW9uIGJlaW5nIGVuYWJsZWQsIHdoaWNoIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBuZXh0IHN0ZXAgaXMgYWx3YXlzIHRvIHZlcmlmeSB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgYSBtb2R1bGUgbGlrZSB0aGlzLiBTbywgdGltZSB0byBkaXZlIGludG8gdGhlIHVzdWFsIHN1c3BlY3Q6IHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJ1bGUgdGhhdCBkZWZpbmVzIGhvdyBgdXNiX2ZfdXZjYCAodGhlIGNvcmUgbW9kdWxlKSBnZXRzIGJ1aWx0LCBhbmQgcG90ZW50aWFsbHksIGl0cyBkZXBlbmRlbmNpZXMuIEknbGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGFueSBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGV4cGxhaW5zIGhvdyBgdXNiX2ZfdXZjLXlgIGlzIGhhbmRsZWQgYW5kIGVuc3VyZXMgdGhlIG1vZHVsZSBnZXRzIGxpbmtlZCBpbiB3aGVuIHRoYXQgS2NvbmZpZyBvcHRpb24gaXMgc2V0LCBhbmQgd2hlcmUgdGhlIHNvdXJjZXMgYXJlIGxvY2F0ZWQuIEdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTozMS4yMTc2NDc4NzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyODQ2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiX2ZfdXZjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX1VTQl9GX1VBQzIpXFx0Kz0gdXNiX2ZfdWFjMi5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQzOnVzYl9mX3V2Yy15XFx0XFx0XFx0Oj0gZl91dmMubyB1dmNfcXVldWUubyB1dmNfdjRsMi5vIHV2Y192aWRlby5vIHV2Y19jb25maWdmcy5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ0LWlmbmVxICgkKENPTkZJR19UUkFDSU5HKSwpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ1LSAgICBDRkxBR1NfdXZjX3RyYWNlLm9cXHRcXHQ6PSAtSSQoc3JjKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0NjogICAgdXNiX2ZfdXZjLXlcXHRcXHRcXHQrPSB1dmNfdHJhY2Uub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS00Ny1lbmRpZlxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0ODpvYmotJChDT05GSUdfVVNCX0ZfVVZDKVxcdFxcdCs9IHVzYl9mX3V2Yy5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQ5LXVzYl9mX21pZGkteVxcdFxcdFxcdDo9IGZfbWlkaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjA5OjMxLjI2OTkzODUwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5ODU3NjM4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIENoZWNrIGZvciBVU0JfRl9VVkMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvZiBgVVNCX0ZfVVZDYCB3aXRoaW4gdGhlIEtjb25maWcgc3lzdGVtLiBUaGlzIGlzIHByb2JhYmx5IGEgZ29vZCBmaXJzdCBzdGVwIGZvciBhIGZlYXR1cmUgcmVsYXRlZCB0byBVU0IgVmlkZW8gQ2xhc3MgKFVWQykuIElzIGl0IGRlZmluZWQ/IElzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdD8gSXMgaXQgZGVwZW5kZW50IG9uIG90aGVyIG9wdGlvbnMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnM/IEkgbmVlZCB0byBrbm93IGhvdyBpdCdzIHNldCB1cCBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB0byBwcm9jZWVkIHdpdGggd2hhdGV2ZXIgdGFzayBpcyBhdCBoYW5kLCBiZSBpdCBhZGRpbmcgZnVuY3Rpb25hbGl0eSBvciB1bmRlcnN0YW5kaW5nIGFuIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBtZW51IGl0J3MgdW5kZXIsIGFuZCBpZGVhbGx5LCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBMZXQgbWUgZ28gZmluZCB0aGF0IGNvbmZpZyBmaWxlIGFuZCBzZWUgd2hhdCdzIHdoYXQuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgY2hlY2ssIGEgcXVpY2sgZmlyc3QgbGluZSBvZiBpbnF1aXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTUzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6MzYuMjU1NzA2MjQ4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MDAyNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRl9VVkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMDI9Y29uZmlnIFVTQl9GX1VBQzJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIwNC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyMDU6Y29uZmlnIFVTQl9GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIwNi1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTozNi4zMjE3MTcwNDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTAwODI2MzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBkZWJ1Z2dpbmcgc29tZSBjb2RlLCBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVjb2RpbmcgdGhlIFRyaXN0YXRlKipcblxuQWxyaWdodCwgYSB0cmlzdGF0ZS4gTm8gcHJvbXB0LCBpbnRlcmVzdGluZy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzbid0IGEgdXNlci1kcml2ZW4gc2VsZWN0aW9uOyBzb21ldGhpbmcgZWxzZSBpcyBjYWxsaW5nIHRoZSBzaG90cyBoZXJlLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluOiBXaGF0J3MgdGhlIGNvbnRleHQ/IFdoYXQgdXBzdHJlYW0gcHJvY2VzcyBpcyBpbmZsdWVuY2luZyB0aGlzIHN0YXRlPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgdHJpc3RhdGUgdG8gdW5kZXJzdGFuZCBpdHMgcGFyZW50IHNlbGVjdG9yLiBHb3R0YSBmaWd1cmUgb3V0ICp3aGF0KiBpcyBkaWN0YXRpbmcgaXRzIHN0YXRlIGFuZCAqd2h5Ki4gVGltZSB0byBzdGFydCBkaWdnaW5nLCBiZWNhdXNlIHdpdGhvdXQga25vd2luZyBpdHMgc2VsZWN0b3IsIHRoaXMgdHJpc3RhdGUgaXMganVzdCBhIGNvbmZ1c2luZyBwdXp6bGUgcGllY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTo0Mi4yMjI1NDYyNDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1Njc5MDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBVU0JfRl9VVkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc0LVxcdHNlbGVjdCBWSURFT0JVRjJfVk1BTExPQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3NTpcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDc2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwNi1cXHRzZWxlY3QgVklERU9CVUYyX1ZNQUxMT0NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTA3OlxcdHNlbGVjdCBVU0JfRl9VVkNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTA4LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6NDIuMjc4MjMyMjgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NDQzMTU5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVVkMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgVVZDIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGUga2V5IGhlcmUgc2VlbXMgdG8gYmUgZWl0aGVyIGBVU0JfQ09ORklHRlNfRl9VVkNgIG9yIGBVU0JfR19XRUJDQU1gLiBUaG9zZSBhcmUgdGhlIHR3byBvcHRpb25zIHRoYXQgc3RhbmQgb3V0LiBCdXQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgZWFjaC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGJvdGggYFVTQl9DT05GSUdGU19GX1VWQ2AgYW5kIGBVU0JfR19XRUJDQU1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hhdGV2ZXIgSSBjaG9vc2UsIEknbSBub3QgaW5hZHZlcnRlbnRseSBicmVha2luZyBzb21ldGhpbmcgZWxzZSBvciBsZWF2aW5nIG91dCBjcml0aWNhbCBzdXBwb3J0aW5nIG1vZHVsZXMuIExldCdzIHNlZSB3aGF0IHRob3NlIGRlcGVuZCBvbiBhbmQgaG93IHRoZXkgcmVsYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODc2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6NDguODIyNTUxMzc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA0NDI1OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXFx0Ym9vbCBcXFwiVVNCIFdlYmNhbSBmdW5jdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MDk6NDkuMTAzMDAyNjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk2NjcxMzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCoqXG5cbk9rYXksIHNvIEkndmUgZW5jb3VudGVyZWQgYFVTQl9DT05GSUdGU19GX1VWQ2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGltbWVkaWF0ZWx5IHBsYWNlIHRoaXMgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQuIFwiVVNCXCIg4oCTIHdlJ3JlIGRlYWxpbmcgd2l0aCBVbml2ZXJzYWwgU2VyaWFsIEJ1cy4gXCJDT05GSUdGU1wiIOKAkyB0aGF0IHNjcmVhbXMgY29uZmlndXJhdGlvbiBmaWxlc3lzdGVtLCBhIHVzZXJzcGFjZSBpbnRlcmZhY2UgZm9yIGNvbmZpZ3VyaW5nIFVTQiBkZXZpY2VzLiBBbmQgXCJVVkNcIi4uLiB0aGF0J3MgVVNCIFZpZGVvIENsYXNzLiBUaGUgcGllY2VzIGFyZSBmYWxsaW5nIGludG8gcGxhY2UuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kICpleGFjdGx5KiB3aGF0IHRoaXMgc3BlY2lmaWMgZmxhZywgYFVTQl9DT05GSUdGU19GX1VWQ2AsIHNpZ25pZmllcy4gSXMgaXQgYSBjb21waWxlLXRpbWUgb3B0aW9uPyBBIHJ1bi10aW1lIHBhcmFtZXRlcj8gQSBiaXQgZmxhZyB3aXRoaW4gYSBsYXJnZXIgc3RydWN0dXJlPyBNeSBleHBlcnQga25vd2xlZGdlIGltbWVkaWF0ZWx5IGxlYW5zIG1lIHRvd2FyZHMgZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBmbGFnIHdpdGhpbiBhIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlLiBNeSBtZW50YWwgbW9kZWwgaXMganVtcGluZyBzdHJhaWdodCB0byB0aGUgbGlrZWx5IHVuZGVybHlpbmcga2VybmVsIHN0cnVjdHVyZXMgYW5kIGhlYWRlciBmaWxlcy4gSSdtIHRoaW5raW5nIG9mIGBjb25maWdmc19hdHRyYCwgYHVzYl9mdW5jdGlvbl9pbnN0YW5jZWAsIGB1dmNfZnVuY3Rpb25gLCBhbmQgdGhlIHJlbGV2YW50IGRldmljZSB0cmVlIGJpbmRpbmdzLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hhdCB0aGUgY29kZSdzIHRyeWluZyB0byAqZG8qIHdpdGggdGhpcyBmbGFnLiBJcyBpdCBlbmFibGluZyBVVkMgZnVuY3Rpb25hbGl0eT8gRGlzYWJsaW5nIGl0PyBDb25maWd1cmluZyBpdHMgc3BlY2lmaWMgZmVhdHVyZXM/IEkgaW1tZWRpYXRlbHkgc3RhcnQgbWFraW5nIGVkdWNhdGVkIGd1ZXNzZXMgYXMgdG8gdGhlIGxpa2VseSB2YWx1ZXMgYW5kIG1lYW5pbmdzIHRoaXMgZmxhZyBtaWdodCBoYXZlOiBwZXJoYXBzLCBpdCBjb250cm9scyB0aGUgZXhwb3N1cmUgb2YgVVZDLXJlbGF0ZWQgZGVzY3JpcHRvcnMsIGVuZHBvaW50cywgb3IgY29udHJvbCBpbnRlcmZhY2VzLiBUaGUgc3Vycm91bmRpbmcgY29kZSB3aWxsIHByb3ZpZGUgZnVydGhlciBjbHVlcyBhbmQgaW5zaWdodHMuIEl0IGNvdWxkIGFsc28gcmVsYXRlIHRvIHRoZSBlbnVtZXJhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiB0aGUgVVZDIGZ1bmN0aW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZWJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTo1NS4wNjk3MTk3MzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDY3MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDowOTo1NS4xMTYxOTEzNTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ5ODY5Nzk5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcHJvY2Vzc2luZyB0aGUgZGVzY3JpYmVkIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AuIEknbSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDQ2OC4gQmFzZWQgb24gbXkgZXhpc3Rpbmcga25vd2xlZGdlLCB0aGF0IGxpa2VseSBtYXJrcyBhIGNyaXRpY2FsIGFyZWEgd2hlcmUgY2VydGFpbiBjb3JlIGZlYXR1cmVzIG9yIGEgc3BlY2lmaWMgZHJpdmVyJ3Mgc2V0dGluZ3MgYXJlIGRlZmluZWQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IGluIHRoaXMgc2VjdGlvbiBvciBpbiB0aGUgc3Vycm91bmRpbmcgbGluZXMuIEknbGwgYmUgbG9va2luZyBmb3Iga2V5d29yZHMgbGlrZSBcImNvbmZpZyxcIiBcInRyaXN0YXRlLFwiIFwiYm9vbCxcIiBhbmQgc3BlY2lmaWMgZGV2aWNlIG5hbWVzIG9yIGRlc2NyaXB0b3JzIHRvIHF1aWNrbHkgcGFyc2Ugd2hhdCdzIGF2YWlsYWJsZSBhbmQgaG93IGl0J3MgY29udHJvbGxlZC4gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjEwOjAzLjYxNDg5MjIyNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NjA6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG4gNDYxOlxcdFxcdHNlbGVjdCBVU0JfRl9ISURcXG4gNDYyOlxcdFxcdGhlbHBcXG4gNDYzOlxcdFxcdCAgVGhlIEhJRCBmdW5jdGlvbiBkcml2ZXIgcHJvdmlkZXMgZ2VuZXJpYyBlbXVsYXRpb24gb2YgVVNCXFxuIDQ2NDpcXHRcXHQgIEh1bWFuIEludGVyZmFjZSBEZXZpY2VzIChISUQpLlxcbiA0NjU6XFx0XFxuIDQ2NjpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2hpZC5yc3QuXFxuIDQ2NzpcXHRcXG4gNDY4OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcXG4gNDY5OlxcdFxcdGJvb2wgXFxcIlVTQiBXZWJjYW0gZnVuY3Rpb25cXFwiXFxuIDQ3MDpcXHRcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbiA0NzE6XFx0XFx0ZGVwZW5kcyBvbiBWSURFT19ERVZcXG4gNDcyOlxcdFxcdGRlcGVuZHMgb24gVklERU9fREVWXFxuIDQ3MzpcXHRcXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xcbiA0NzQ6XFx0XFx0c2VsZWN0IFZJREVPQlVGMl9WTUFMTE9DXFxuIDQ3NTpcXHRcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuIDQ3NjpcXHRcXHRoZWxwXFxuIDQ3NzpcXHRcXHQgIFRoZSBXZWJjYW0gZnVuY3Rpb24gYWN0cyBhcyBhIGNvbXBvc2l0ZSBVU0IgQXVkaW8gYW5kIFZpZGVvIENsYXNzXFxuIDQ3ODpcXHRcXHQgIGRldmljZS4gSXQgcHJvdmlkZXMgYSB1c2Vyc3BhY2UgQVBJIHRvIHByb2Nlc3MgVVZDIGNvbnRyb2wgcmVxdWVzdHNcXG4gNDc5OlxcdFxcdCAgYW5kIHN0cmVhbSB2aWRlbyBkYXRhIHRvIHRoZSBob3N0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMDowMy42MTQ5ODI5MTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4NTI2MjA1MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEZXBlbmRlbmNpZXMgYW5kIHRoZSBVU0IgV2ViY2FtIE1vZHVsZSoqXG5cblJpZ2h0LCBsZXQncyBzZWUuIFRoaXMgYFVTQl9DT05GSUdGU19GX1VWQ2Agc2V0dGluZywgSSdtIHRoaW5raW5nLCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IGl0IHJlbGllcyBvbiBib3RoIGBVU0JfQ09ORklHRlNgIGFuZCBgVklERU9fREVWYC4gTm8gc3VycHJpc2VzIHRoZXJlOyBVVkMgZnVuY3Rpb25hbGl0eSB3aXRoaW4gY29uZmlnZnMgaXMsIGFmdGVyIGFsbCwgYnVpbGRpbmcgb24gdGhvc2UgZm91bmRhdGlvbnMuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgbW9yZSByZWxldmFudCwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgYnJvYWRlciBVU0Igd2ViY2FtIGZ1bmN0aW9uYWxpdHkgaXMgc2V0IHVwLiBMZXQncyBzZWUgd2hhdCBgVVNCX0dfV0VCQ0FNYCBicmluZ3MgdG8gdGhlIHRhYmxlLiBJJ20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgYXNwZWN0cyBhcmUgZW5hYmxlZCBieSBgVVNCX0dfV0VCQ0FNYCBhbmQgaG93IHRoZXkgaW50ZXItcmVsYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQ5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMjoxMi4xNDExOTEzMjFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzA0NzMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0dfV0VCQ0FNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDk3PWVuZGlmXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAwLSMgb3IgdmlkZW8gY2xhc3MgZ2FkZ2V0IGRyaXZlcnMpLCBvciBzcGVjaWZpYyBoYXJkd2FyZSwgaGVyZS5cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTAxOmNvbmZpZyBVU0JfR19XRUJDQU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTAyLVxcdHRyaXN0YXRlIFxcXCJVU0IgV2ViY2FtIEdhZGdldFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTI6MTIuNTc0MjQ1MzE5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1Mzg3NTM5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHByb2Nlc3NpbmcgdGhlIGNvZGUgbWVudGlvbmVkOlxuXG4qKkFuYWx5emluZyBLY29uZmlnIGZvciBVU0IgR2FkZ2V0IERyaXZlciBPcHRpb25zKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYCBmaWxlLiBJJ20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDUwMS4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgdGhlc2UgbGVnYWN5IFVTQiBnYWRnZXQgZHJpdmVycy4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbGx5IGNvbXBsZXggZGVwZW5kZW5jaWVzLCBsaWtlbHkgaW52b2x2aW5nIGRpZmZlcmVudCBVU0IgY29udHJvbGxlciBhcmNoaXRlY3R1cmVzIGFuZCB2YXJpb3VzIGdhZGdldCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG1vZHVsYXJpdHkgYW5kIHdoYXQga2luZCBvZiBjdXN0b21pemF0aW9uIHRoZSBrZXJuZWwgb2ZmZXJzIHVzZXJzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgbGVnYWN5IGNvZGUgb2Z0ZW4gaGFzIGxlc3MtdGhhbi1pZGVhbCBzdHJ1Y3R1cmUsIHNvIEknbSBwcmVwYXJlZCB0byB0cmFjZSB0aHJvdWdoIHNvbWUgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBhbmQgc2VlIGhvdyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gSSdtIGFzc3VtaW5nIGF0IHRoaXMgcG9pbnQgdGhhdCBsaW5lIDUwMSBzaG91bGQgYmUgY2xvc2UgdG8gYSByZWxldmFudCBvcHRpb24gb3IgZmVhdHVyZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjE4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTI6MTkuMTEzMDAyMTI3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MDA6XFx0IyBvciB2aWRlbyBjbGFzcyBnYWRnZXQgZHJpdmVycyksIG9yIHNwZWNpZmljIGhhcmR3YXJlLCBoZXJlLlxcbiA1MDE6XFx0Y29uZmlnIFVTQl9HX1dFQkNBTVxcbiA1MDI6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBXZWJjYW0gR2FkZ2V0XFxcIlxcbiA1MDM6XFx0XFx0ZGVwZW5kcyBvbiBWSURFT19ERVZcXG4gNTA0OlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDUwNTpcXHRcXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xcbiA1MDY6XFx0XFx0c2VsZWN0IFZJREVPQlVGMl9WTUFMTE9DXFxuIDUwNzpcXHRcXHRzZWxlY3QgVVNCX0ZfVVZDXFxuIDUwODpcXHRcXHRoZWxwXFxuIDUwOTpcXHRcXHQgIFRoZSBXZWJjYW0gR2FkZ2V0IGFjdHMgYXMgYSBjb21wb3NpdGUgVVNCIEF1ZGlvIGFuZCBWaWRlbyBDbGFzc1xcbiA1MTA6XFx0XFx0ICBkZXZpY2UuIEl0IHByb3ZpZGVzIGEgdXNlcnNwYWNlIEFQSSB0byBwcm9jZXNzIFVWQyBjb250cm9sIHJlcXVlc3RzXFxuIDUxMTpcXHRcXHQgIGFuZCBzdHJlYW0gdmlkZW8gZGF0YSB0byB0aGUgaG9zdC5cXG4gNTEyOlxcdFxcbiA1MTM6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGQgYVxcbiA1MTQ6XFx0XFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcXFwiZ193ZWJjYW1cXFwiLlxcbiA1MTU6XFx0XFxuIDUxNjpcXHRjb25maWcgVVNCX1JBV19HQURHRVRcXG4gNTE3OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgUmF3IEdhZGdldFxcXCJcXG4gNTE4OlxcdFxcdGhlbHBcXG4gNTE5OlxcdFxcdCAgVVNCIFJhdyBHYWRnZXQgaXMgYSBnYWRnZXQgZHJpdmVyIHRoYXQgZ2l2ZXMgdXNlcnNwYWNlIGxvdy1sZXZlbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMjoxOS4xMTMwODQ2NjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg2Njk5NjQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFx1MDAyNiBGdW5jdGlvbiBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIGRyaXZlciBzZXR1cC4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgY2xlYXJseS4gVGhlIGBVU0JfR19XRUJDQU1gIGdhZGdldCBkcml2ZXIgcmVsaWVzIG9uIHRoZSBiYXNlIGBWSURFT19ERVZgIGZyYW1ld29yaywgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gT2YgY291cnNlLCB0byBlbmFibGUgYW55IGdhZGdldCBmdW5jdGlvbmFsaXR5LCBJIG5lZWQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIE5vdywgdGhlIGBVU0JfRFVNTVlfSENEYCBvcHRpb24gaXMgaW50ZXJlc3Rpbmc7IGl04oCZcyB1c2VmdWwgZm9yIGZ1enppbmcsIHNvIEknbGwga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0aGlua2luZyBhYm91dCB0ZXN0aW5nIGxhdGVyIG9uLlxuXG5NeSBrZXkgY29uZmlncywgdGhlbiwgYXJlOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLlxuXG5Ob3csIEknbSBnb2luZyB0byBxdWlja2x5IHBpbnBvaW50IHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZXMuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgdXZjX3Y0bDJfc3RyZWFtb25gLCBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCwgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIEknbGwgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZWlyIHNjb3BlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uIEl0J3MgdGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxODUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMjoyNi45ODAwODQwNDZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDAxNjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInV2Y192NGwyX3N0cmVhbW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTUxOT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmM6NTIwOnV2Y192NGwyX3N0cmVhbW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTIxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jPTY1MD1jb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgdXZjX3Y0bDJfaW9jdGxfb3BzID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNjYxLVxcdC52aWRpb2NfZHFidWYgPSB1dmNfdjRsMl9kcWJ1ZixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYzo2NjI6XFx0LnZpZGlvY19zdHJlYW1vbiA9IHV2Y192NGwyX3N0cmVhbW9uLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTY2My1cXHQudmlkaW9jX3N0cmVhbW9mZiA9IHV2Y192NGwyX3N0cmVhbW9mZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTI6MjcuMDMwMDkwNzE0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0MzY0MDA0MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgdXZjX3Y0bDJfc3RyZWFtb25gIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHV2Y192NGwyX3N0cmVhbW9uYCBpcyBkZWZpbmVkIGFzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQncyBpbnRyaWNhdGVseSBsaW5rZWQgdG8gdGhlIGJyb2FkZXIgYHV2Y192NGwyX2lvY3RsX29wc2Agc3RydWN0dXJlLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCBhbmQgd2hhdCBjb250ZXh0IGl0J3Mgb3BlcmF0aW5nIHdpdGhpbi4gR2l2ZW4gdGhpcywgSSdtIGdvaW5nIHRvIHNoaWZ0IGZvY3VzIGFuZCBzdGFydCBpbnZlc3RpZ2F0aW5nIHdoYXQncyBoYXBwZW5pbmcgaW4gdGhlIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGZ1bmN0aW9uIHRvIHNlZSBob3cgaXQgY29tZXMgaW50byBwbGF5IHdpdGggYHN0cmVhbW9uYC4gTGV0J3MgZGVsdmUgaW4gYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk3NiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjEyOjUxLjM5NDA5ODM3MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzODMyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9NTQ3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NTQ4OnV2Y192aWRlb19hbGxvY19yZXF1ZXN0cyhzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNTQ5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYz03NjY9aW50IHV2Y2dfdmlkZW9fZW5hYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc4Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6Nzg3OlxcdGlmICgocmV0ID0gdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHZpZGVvKSkgXFx1MDAzYyAwKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03ODgtXFx0XFx0cmV0dXJuIHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTI6NTEuNDQzNDg2MTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQxMDEwMjY5MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgVVZDIFZpZGVvIERyaXZlcidzIFJlcXVlc3QgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBhcmVhIGZvciBjbG9zZXIgaW5zcGVjdGlvbi4gQSBzdGF0aWMgZnVuY3Rpb24sIGluIHRoaXMgY29udGV4dCwgaW1wbGllcyBpdHMgc2NvcGUgaXMgbGltaXRlZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCBsaWtlbHkgd2l0aGluIHRoZSBVVkMgdmlkZW8gZHJpdmVyIGl0c2VsZi4gVGhpcyBtZWFucyBpdCdzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgbW9kdWxlcywgd2hpY2ggaXMgZ2VuZXJhbGx5IGZpbmUgZm9yIHJlcXVlc3QgYWxsb2NhdGlvbiwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBpbXBsaWNhdGlvbnMgZm9yIHBvdGVudGlhbCBmdXR1cmUgZXh0ZW5zaW9ucyBvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMgd2l0aCByZXF1ZXN0IGhhbmRsaW5nLlxuXG5Ob3csIGxldCdzIHBpdm90IHRvIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIE15IGludHVpdGlvbiBpcyB0aGlzIGZ1bmN0aW9uIGxpa2VseSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVxdWVzdCBxdWV1ZSBvciB0aGUgZW5hYmxpbmcvZGlzYWJsaW5nIG9mIHZpZGVvIHN0cmVhbXMuIFVuZGVyc3RhbmRpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBmdW5jdGlvbnMg4oCTIHRoZSBhbGxvY2F0aW9uIG9mIHJlcXVlc3RzIGFuZCB0aGUgZW5hYmxpbmcgb2YgdmlkZW8g4oCTIGlzIGNydWNpYWwuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiBob3cgYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AgaXMgY2FsbGVkIGZyb20gd2l0aGluIGB1dmNnX3ZpZGVvX2VuYWJsZWAgKG9yIGFueSBvdGhlciBmdW5jdGlvbiBjYWxsZWQgYnkgYHV2Y2dfdmlkZW9fZW5hYmxlYCkgdG8gZW5zdXJlIHRoZXJlIGFyZW4ndCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBjb250ZW50aW9uIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjEzOjA1LjU0NDUxNTg5MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MjUyNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjZ192aWRlb19lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYz02ODg9dXZjZ192aWRlb19kaXNhYmxlKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2NS0gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM6NzY2OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzY3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTM6MDUuNTkwMTQ1NTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM2ODk2MjQxMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYHV2Y2dfdmlkZW9fZW5hYmxlYCoqXG5cbk9rYXksIHNvIGB1dmNnX3ZpZGVvX2VuYWJsZWAgaXNuJ3QgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGEgZ2xvYmFsbHkgZXhwb3J0ZWQgc3ltYm9sLCBtZWFuaW5nIGl0J3MgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgbW9kaWZpZWQgYnkgb3RoZXIgbW9kdWxlcyBpbiB0aGUga2VybmVsLCBvciBpZiBpdCdzIHNpbXBseSBkZWNsYXJlZCB3aXRob3V0IGBzdGF0aWNgIGJ1dCBpcyBzdGlsbCBvbmx5IHV0aWxpemVkIGludGVybmFsbHkgd2l0aGluIGl0cyBkZWZpbmluZyBtb2R1bGUuIFRoZSBpbXBsaWNhdGlvbnMgYXJlIHNpZ25pZmljYW50IGRlcGVuZGluZyBvbiB3aGljaCBpcyB0aGUgY2FzZS4gSWYgZXhwb3J0ZWQsIGl0IHdhcnJhbnRzIGEgZGVlcGVyIGRpdmUgaW50byB0aGUgYWNjZXNzIHBhdHRlcm5zIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBvciBtYXliZSB0aGUgaW50ZW50aW9uYWwgYXJjaGl0ZWN0dXJlIGl0IGZhY2lsaXRhdGVzLiBJZiBpbnRlcm5hbCwgdGhlbiB0aGUgbm9uLXN0YXRpYyBkZWNsYXJhdGlvbiBmZWVscyBsaWtlIGVpdGhlciBhIG1pbm9yIGRlc2lnbiBxdWlyayBvciBhIHNpZ24gb2YgZnV0dXJlIHJlZmFjdG9yaW5nLiBUaW1lIHRvIHRyYWNrIGRvd24gYWxsIHRoZSByZWZlcmVuY2VzIHRvIGl0LCBlaXRoZXIgd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTM6MTkuMjc5NzcyOTYxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQ2NDEyNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjZ192aWRlb19lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MjA9dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzNS1cXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUzNjpcXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM3LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9Njg4PXV2Y2dfdmlkZW9fZGlzYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjUtICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc2NjppbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmg9MTU9c3RydWN0IHV2Y192aWRlbztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oOjE3OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oLTE4LWludCB1dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMzoxOS42OTQ0NDA1ODlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNjI5MzUwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVWQyBHYWRnZXQgRW50cnkgUG9pbnRzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgVVZDIGdhZGdldCBjb2RlIGFuZCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzLiBUaGUgcHJvbXB0IHN0cmVzc2VzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGB1dmNfdjRsMl9zdHJlYW1vbmAgc2luY2UgdGhhdCdzIHRoZSBlbnRyeSBwb2ludCB2aWEgYW4gaW9jdGwsIGFuZCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYywgdGhlIGZhY3QgdGhhdCBpdHMgYWRkcmVzcyBpcyB0YWtlbiBpbiBgdXZjX3Y0bDJfaW9jdGxfb3BzYCBtZWFucyBpdCAqd29uJ3QqIGJlIGlubGluZWQgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbC4gQWxzbywgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyBub24tc3RhdGljLCBzbyBpdCdzIGEgZGVmaW5pdGUgY2FuZGlkYXRlLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIG9idmlvdXMgZW50cnkgcG9pbnRzLiBUaGlua2luZyBpdCB0aHJvdWdoLCBgdXZjX3Y0bDJfc3RyZWFtb25gIGdldHMgaW52b2tlZCB3aGVuIHRoZSBgVklESU9DX1NUUkVBTU9OYCBpb2N0bCBpcyBjYWxsZWQgb24gdGhlIFY0TDIgZGV2aWNlIGNyZWF0ZWQgYnkgdGhlIFVWQyBnYWRnZXQsIHNvIGl0J3MgYSBjbGVhciBmb2N1cyBzeW1ib2wuIGB1dmNnX3ZpZGVvX2VuYWJsZWAgc2VlbXMgbGlrZSBhIHNvbGlkIGNob2ljZSBhcyB3ZWxsLCBnaXZlbiBpdHMgbm9uLXN0YXRpYyBuYXR1cmUuXG5cblRpbWUgdG8gY29uZmlybSB0aGF0IGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgaW5kZWVkIHN0YXRpYyBieSBsb29raW5nIGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuY2AuIFllcCwgaXQncyBzdGF0aWMuIEJ1dCBiZWNhdXNlIGl0J3MgYW4gaW9jdGwgY2FsbGJhY2ssIHRoZSBjb21waWxlciB3b24ndCBpbmxpbmUgaXQuXG5cblNvLCBJJ2xsIGFkZCBib3RoIGB1dmNnX3ZpZGVvX2VuYWJsZWAgYW5kIGB1dmNfdjRsMl9zdHJlYW1vbmAgdG8gdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9scy5cblxuTm93LCBsZXQncyB2ZXJpZnkgZGVwZW5kZW5jaWVzIGZvciBgVVNCX0dfV0VCQ0FNYCBhbmQgYFVTQl9DT05GSUdGU19GX1VWQ2AuIGBVU0JfR19XRUJDQU1gIGRlcGVuZHMgb24gYFZJREVPX0RFVmAsIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBkZXBlbmRzIG9uIGBVU0JfQ09ORklHRlNgIGFuZCBgVklERU9fREVWYC4gYFVTQl9DT05GSUdGU2AgaXRzZWxmIGRlcGVuZHMgb24gYENPTkZJR0ZTX0ZTYC4gQW5kLCBhcyBJIHJlY2FsbCwgYFZJREVPX0RFVmAgZGVwZW5kcyBvbiBgSTJDYC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYFZJREVPX0RFVmAgaGFzIG5vIG90aGVyIHJlbGV2YW50IGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU0MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxMzo1OC43NTczNzg5MzhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NTY1MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSURFT19ERVZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tZWRpYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9tZWRpYS9LY29uZmlnPTE1Nz1tZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL21lZGlhL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZzoxNjA6Y29uZmlnIFZJREVPX0RFVlxcbmRyaXZlcnMvbWVkaWEvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIlZpZGVvNExpbnV4IGNvcmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjEzOjU4Ljg0Njk1NTQ2NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjMyNzA5NDUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTWVkaWEgU3Vic3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgYXJlYSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCdzIG1lZGlhIGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgYSBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgY29uZmlndXJlZC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBgZHJpdmVycy9tZWRpYS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBtZWRpYSBzdWJzeXN0ZW0gYXJlIGRlZmluZWQuIEknbSBnb2luZyB0byBzY2FuIHRoYXQgZmlsZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXJvdW5kIGxpbmUgMTYwLiBUaGF0J3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldywgSSdtIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIHJlbGF0ZWQgbW9kdWxlIG9yIGEgbW9yZSBmb2N1c2VkIHNlY3Rpb24gaW4gdGhhdCBhcmVhLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBsZWFkIG1lIHRvIHRoZSBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBJIG5lZWQgdG8gZWl0aGVyIHVuZGVyc3RhbmQgb3IgbW9kaWZ5LiBUaGUgZ29hbCBpcyBhIGRlZXBlciBkaXZlIG9uIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHNwZWNpZmllZCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE0OjIxLjE3NDA1MzAxMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL21lZGlhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTU1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTU1OlxcdFxcbiAxNTY6XFx0XFxuIDE1NzpcXHRtZW51IFxcXCJNZWRpYSBjb3JlIHN1cHBvcnRcXFwiXFxuIDE1ODpcXHRcXHR2aXNpYmxlIGlmICFNRURJQV9TVVBQT1JUX0ZJTFRFUlxcbiAxNTk6XFx0XFxuIDE2MDpcXHRjb25maWcgVklERU9fREVWXFxuIDE2MTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlkZW80TGludXggY29yZVxcXCJcXG4gMTYyOlxcdFxcdGRlZmF1bHQgTUVESUFfQ0FNRVJBX1NVUFBPUlQgfHwgTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQgfHwgTUVESUFfUkFESU9fU1VQUE9SVCB8fCBNRURJQV9TRFJfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUIHx8IE1FRElBX1RFU1RfU1VQUE9SVFxcbiAxNjM6XFx0XFx0ZGVwZW5kcyBvbiAoSTJDIHx8IEkyQz1uKVxcbiAxNjQ6XFx0XFx0c2VsZWN0IFJBVElPTkFMXFxuIDE2NTpcXHRcXHRzZWxlY3QgVklERU9CVUYyX1Y0TDIgaWYgVklERU9CVUYyX0NPUkVcXG4gMTY2OlxcdFxcdGhlbHBcXG4gMTY3OlxcdFxcdCAgRW5hYmxlcyB0aGUgVjRMMiBBUEksIHVzZWQgYnkgY2FtZXJhcywgYW5hbG9nIFRWLCB2aWRlbyBncmFiYmVycyxcXG4gMTY4OlxcdFxcdCAgcmFkaW8gZGV2aWNlcyBhbmQgYnkgc29tZSBpbnB1dCBkZXZpY2VzLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRjb25maWcgTUVESUFfQ09OVFJPTExFUlxcbiAxNzE6XFx0XFx0Ym9vbCBcXFwiTWVkaWEgQ29udHJvbGxlciBBUElcXFwiXFxuIDE3MjpcXHRcXHRkZWZhdWx0IE1FRElBX0NBTUVSQV9TVVBQT1JUIHx8IE1FRElBX0FOQUxPR19UVl9TVVBQT1JUIHx8IE1FRElBX0RJR0lUQUxfVFZfU1VQUE9SVCB8fCBNRURJQV9QTEFURk9STV9TVVBQT1JUXFxuIDE3MzpcXHRcXHRoZWxwXFxuIDE3NDpcXHRcXHQgIEVuYWJsZSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkgdXNlZCB0byBxdWVyeSBtZWRpYSBkZXZpY2VzIGludGVybmFsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE0OjIxLjE3NDEyODk1MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjA0MjUyNDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgVklERU9fREVWYCBpcyBwcmV0dHkgbGVhbjsgaXQgZG9lc24ndCBzZWVtIHRvIHJlbHkgb24gYW55IHNwZWNpZmljIGhhcmR3YXJlIGJleW9uZCB0aGUgSTJDIGludGVyZmFjZSwgYW5kIGV2ZW4gdGhlbiwgSTJDIGlzIG9wdGlvbmFsLiBUaGF0J3MgZ29vZCB0byBrbm93LCBlc3BlY2lhbGx5IGlmIHdlJ3JlIGxvb2tpbmcgYXQgYSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gb3IgdHJ5aW5nIHRvIGlzb2xhdGUgYSBzcGVjaWZpYyB2aWRlbyBzdWJzeXN0ZW0uIFRoZSBgfHwgSTJDPW5gIHBhcnQgaXMga2V5IOKAkyBpZiBJJ20gYnVpbGRpbmcgZm9yIGEgcGxhdGZvcm0gd2hlcmUgSTJDIGlzbid0IHByZXNlbnQgb3IgcmVsZXZhbnQsIEkgY2FuIHNhZmVseSBkaXNhYmxlIGl0IGFuZCBzdGlsbCBwb3RlbnRpYWxseSBsZXZlcmFnZSBgVklERU9fREVWYCBmb3Igb3RoZXIgZnVuY3Rpb25hbGl0eS4gTm93LCBsZXQncyBzaGlmdCBnZWFycyBhbmQgZXhhbWluZSBgVVNCX0dBREdFVGAuIEdpdmVuIHRoZSBjb250ZXh0LCBJJ20gZXhwZWN0aW5nIHNvbWUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvciByZWxhdGlvbnNoaXBzIHRoZXJlLCBhbmQgaXQncyBwcm9iYWJseSB3b3J0aCBkaWdnaW5nIGludG8gdGhlIHNwZWNpZmljIHN1Yi1vcHRpb25zIG9yIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYFVTQl9HQURHRVRgIG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTc5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDoyNS43NzgzODUyNjFaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NzY2Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfR0FER0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo3Nzpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cXHRib29sIFxcXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTAwLVxcdGludCBcXFwiTWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTE2OmNvbmZpZyBVU0JfR0FER0VUX1NUT1JBR0VfTlVNX0JVRkZFUlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXFx0aW50IFxcXCJOdW1iZXIgb2Ygc3RvcmFnZSBwaXBlbGluZSBidWZmZXJzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI3OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Mjc5OmNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzQ3PWNvbmZpZyBVU0JfRUcyMFRcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MTpjb25maWcgVVNCX0dBREdFVF9YSUxJTlhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggVVNCIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTQ6MjUuODM2MTYxODk5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjAwMTE4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBzZWN0aW9uIGFyb3VuZCBsaW5lIDE3LiBUaGUgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIGhlYXJ0IG9mIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwsIHNvIHRoaXMgaXMgd2hlcmUgSSdsbCBmaW5kIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGhvdyB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gaXMgZW5hYmxlZCBhbmQgc3RydWN0dXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBVU0IgYXJjaGl0ZWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZWNpc2lvbnMgZ2V0IG1hZGUgYWJvdXQgd2hhdCBmZWF0dXJlcyB3ZSB3YW50IHRvIGV4cG9zZSB0byB1c2Vyc3BhY2UgYXMgYSBVU0IgZGV2aWNlLiBGcm9tIGhlcmUsIEkgY2FuIHRyYWNlIG91dCB0byByZWxldmFudCBjb2RlIGFuZCBvdGhlciBrY29uZmlnIG9wdGlvbnMgYXMgbmVlZGVkLCBiYXNlZCBvbiB0aGlzIGluaXRpYWwgaGlnaC1sZXZlbCBtYXAgb2YgdGhlIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyMzAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDozMC40OTYxNzcyNjdaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE1OlxcdCNcXG4gIDE2OlxcdFxcbiAgMTc6XFx0bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0c2VsZWN0IFVTQl9DT01NT05cXG4gIDIwOlxcdFxcdHNlbGVjdCBOTFNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgIFVTQiBpcyBhIGhvc3QvZGV2aWNlIHByb3RvY29sLCBvcmdhbml6ZWQgd2l0aCBvbmUgaG9zdCAoc3VjaCBhcyBhXFxuICAyMzpcXHRcXHQgICBQQykgY29udHJvbGxpbmcgdXAgdG8gMTI3IHBlcmlwaGVyYWwgZGV2aWNlcy5cXG4gIDI0OlxcdFxcdCAgIFRoZSBVU0IgaGFyZHdhcmUgaXMgYXN5bW1ldHJpYywgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHNldCB1cDpcXG4gIDI1OlxcdFxcdCAgIHlvdSBjYW4ndCBjb25uZWN0IGEgXFxcInRvLXRoZS1ob3N0XFxcIiBjb25uZWN0b3IgdG8gYSBwZXJpcGhlcmFsLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRcXHQgICBMaW51eCBjYW4gcnVuIGluIHRoZSBob3N0LCBvciBpbiB0aGUgcGVyaXBoZXJhbC4gIEluIGJvdGggY2FzZXNcXG4gIDI4OlxcdFxcdCAgIHlvdSBuZWVkIGEgbG93IGxldmVsIGJ1cyBjb250cm9sbGVyIGRyaXZlciwgYW5kIHNvbWUgc29mdHdhcmVcXG4gIDI5OlxcdFxcdCAgIHRhbGtpbmcgdG8gaXQuICBQZXJpcGhlcmFsIGNvbnRyb2xsZXJzIGFyZSBvZnRlbiBkaXNjcmV0ZSBzaWxpY29uLFxcbiAgMzA6XFx0XFx0ICAgb3IgYXJlIGludGVncmF0ZWQgd2l0aCB0aGUgQ1BVIGluIGEgbWljcm9jb250cm9sbGVyLiAgVGhlIG1vcmVcXG4gIDMxOlxcdFxcdCAgIGZhbWlsaWFyIGhvc3Qgc2lkZSBjb250cm9sbGVycyBoYXZlIG5hbWVzIGxpa2UgXFxcIkVIQ0lcXFwiLCBcXFwiT0hDSVxcXCIsXFxuICAzMjpcXHRcXHQgICBvciBcXFwiVUhDSVxcXCIsIGFuZCBhcmUgdXN1YWxseSBpbnRlZ3JhdGVkIGludG8gc291dGhicmlkZ2VzIG9uIFBDXFxuICAzMzpcXHRcXHQgICBtb3RoZXJib2FyZHMuXFxuICAzNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTQ6MzAuNDk2Mjc5ODQ3WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1Njk0MzIxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBvcHRpb25zLlxuXG4qKk15IENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kgZm9yIFVTQiBHYWRnZXQgRnVuY3Rpb25hbGl0eSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gTXkgY3VycmVudCB0aG91Z2h0IHByb2Nlc3MgaXMgY2VudGVyZWQgYXJvdW5kIHNldHRpbmcgdXAgVVNCIEdhZGdldCBmdW5jdGlvbmFsaXR5LCBhbmQgdGhlIG1lbnVjb25maWcgY2hvaWNlcyBhcmUga2V5IHRvIHRoYXQuIFRoZSBnb2FsIGhlcmUgaXMgY2xlYXJseSB0byBlc3RhYmxpc2ggYSBVU0Igd2ViY2FtIGludGVyZmFjZSwgYW5kIEnigJltIGdvaW5nIHRvIHVzZSB0aGUgYFVTQl9HQURHRVRgIG1lbnVjb25maWcuXG5cbkknbSB0aGlua2luZyBJJ2xsIGVuYWJsZSBgVVNCX0dBREdFVGAgd2hpY2ggd2lsbCBvZiBjb3Vyc2UgYnJpbmcgaW4gdGhlIGNvcmUgZ2FkZ2V0IGZyYW1ld29yay4gSSdsbCBuZWVkIGEgaG9zdCBjb250cm9sbGVyLCB3aGljaCB3aWxsIGJlIGVtdWxhdGVkIHNpbmNlIHdlIGFyZSBjb25maWd1cmluZyBmb3IgYSBnYWRnZXQgcm9sZS4gVGhlcmVmb3JlLCBJIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIHRvIGJlIGVuYWJsZWQgdG8gZG8gdGhpcy5cblxuSSdtIGRlZmluaXRlbHkgZ29pbmcgdG8gdXNlIGBVU0JfQ09ORklHRlNgIGFzIHRoZSBmaWxlIHN5c3RlbSBmb3IgZ2FkZ2V0IGNvbmZpZ3VyYXRpb24sIGdpdmluZyBtZSBmbGV4aWJpbGl0eSBpbiBob3cgSSBwcmVzZW50IHRoZSBpbnRlcmZhY2UuIFRoaXMgd2lsbCBnaXZlIG1lIGFsbCBraW5kcyBvZiBvcHRpb25zLiBHaXZlbiB0aGUgbWVudGlvbiBvZiB3ZWJjYW0gZnVuY3Rpb25hbGl0eSwgSSdtIGdvaW5nIHRvIGFjdGl2YXRlIGBVU0JfQ09ORklHRlNfRl9VVkNgIHRvIHN1cHBvcnQgdGhlIFVTQiBWaWRlbyBDbGFzcyBmdW5jdGlvbmFsaXR5LlxuXG5TaW5jZSB3ZSBhcmUgYWltaW5nIGZvciB3ZWJjYW0gY2FwYWJpbGl0aWVzLCBlbmFibGluZyBgVVNCX0dfV0VCQ0FNYCBzZWVtcyBvYnZpb3VzIC0gdGhhdCdzIHRoZSBnYWRnZXQgZHJpdmVyIGZvciBhIHdlYmNhbS4gQW5kIG9mIGNvdXJzZSwgZ2l2ZW4gdGhpcyBhbGwgcmV2b2x2ZXMgYXJvdW5kIHZpZGVvLCBJJ2xsIG5lZWQgYFZJREVPX0RFVmAgZm9yIHRoZSBWaWRlbzRMaW51eCBmcmFtZXdvcmsuXG5cbkhvd2V2ZXIsIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgc2Vjb25kIGhlcmUsIEkgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCBgVVNCX0RVTU1ZX0hDRGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGhvc3QgY29udHJvbGxlciBlbXVsYXRpb24uIFdlIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoaXMgZW11bGF0ZXMgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgdW5leHBlY3RlZCBiZWhhdmlvciBvciBjb25mbGljdHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nOyBpdCdzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjc3NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTQ6MzguMDY1NzE1Njc2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMwOTQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0RVTU1ZX0hDRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVxcdHRyaXN0YXRlIFxcXCJEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTQ6MzguMTE3MDMyMDI0WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTg3MjA2MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIFVTQiBDb25maWd1cmF0aW9uKipcblxuWWVzLCB0aGF0IGxvb2tzIHJpZ2h0LiBUaGUgaW5jbHVzaW9uIG9mIGBVU0JfRFVNTVlfSENEYCBpcyBleGFjdGx5IHdoYXQgSSdkIGV4cGVjdCBnaXZlbiB0aGUgY3VycmVudCBnb2Fscy4gTm93LCBiZWZvcmUgSSBwcm9jZWVkIGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGNydWNpYWwuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSBpZiBgVVNCX0NPTkZJR0ZTYCBoYXMgYW55IGV4dGVybmFsIGRlcGVuZGVuY2llcyBJJ20gb3Zlcmxvb2tpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgcmVxdWlyZWQgbW9kdWxlcyBvciBjb25maWd1cmF0aW9ucyB0aGF0IHdpbGwgaW1wYWN0IHRoZSBzZXR1cCBkb3duc3RyZWFtLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM4OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE0OjQyLjYxNTc1NjE2NloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM0MjYyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9DT05GSUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMz1jb25maWcgVVNCX0ZfVENNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjI4OmNvbmZpZyBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjM5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0MS1cXHRib29sIFxcXCJHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDk6Y29uZmlnIFVTQl9DT05GSUdGU19BQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXFx0Ym9vbCBcXFwiQWJzdHJhY3QgQ29udHJvbCBNb2RlbCAoQ0RDIEFDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjU5OmNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNzAtXFx0Ym9vbCBcXFwiTmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODE6Y29uZmlnIFVTQl9DT05GSUdGU19FQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjkzOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDQtXFx0Ym9vbCBcXFwiUk5ESVNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzE5OmNvbmZpZyBVU0JfQ09ORklHRlNfRUVNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVxcdGJvb2wgXFxcIkV0aGVybmV0IEVtdWxhdGlvbiBNb2RlbCAoRUVNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzU6Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXFx0Ym9vbCBcXFwiUGhvbmV0IHByb3RvY29sXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0Ni1cXHRib29sIFxcXCJNYXNzIHN0b3JhZ2VcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU2OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9MQl9TU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cXHRib29sIFxcXCJMb29wYmFjayBhbmQgc291cmNlc2luayBmdW5jdGlvbiAoZm9yIHRlc3RpbmcpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzY4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM2OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXFx0Ym9vbCBcXFwiRnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgyLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozOTk6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMCAobGVnYWN5IGltcGxlbWVudGF0aW9uKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMi1cXHRib29sIFxcXCJNSURJIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESTJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXFx0Ym9vbCBcXFwiTUlESSAyLjAgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDU4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXFx0Ym9vbCBcXFwiSElEIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY5LVxcdGJvb2wgXFxcIlVTQiBXZWJjYW0gZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgyLVxcdGJvb2wgXFxcIlByaW50ZXIgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDo0Mi42NjkxOTI2MTRaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4MTA5Mjg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gQmFzZWQgb24gd2hhdCBJJ20gbG9va2luZyBhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsLiBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvYCBkaXJlY3RvcnkgYmVmb3JlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgYEtjb25maWdgIGZpbGUgaXMgdGhlIHBsYWNlIHRvIGJlIGZvciB0aGF0LiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCB0byBsaW5lIDIyOCAob3IgdGhlcmVhYm91dHMpIG9mIHRoYXQgZmlsZS4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBnYWRnZXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZ2luLCBvciBhdCBsZWFzdCBhIHNpZ25pZmljYW50IGdyb3VwaW5nIG9mIHRoZW0uIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGUgdmFyaW91cyBnYWRnZXQgZnVuY3Rpb25hbGl0aWVzIGFyZSBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyZWQuIFRoaXMgc2hvdWxkIHByb3ZpZGUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDo0Ny43NTAyOTAzODlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjI1LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjI1OlxcdFxcbiAyMjY6XFx0IyB0aGlzIGZpcnN0IHNldCBvZiBkcml2ZXJzIGFsbCBkZXBlbmQgb24gYnVsay1jYXBhYmxlIGhhcmR3YXJlLlxcbiAyMjc6XFx0XFxuIDIyODpcXHRjb25maWcgVVNCX0NPTkZJR0ZTXFxuIDIyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBmdW5jdGlvbnMgY29uZmlndXJhYmxlIHRocm91Z2ggY29uZmlnZnNcXFwiXFxuIDIzMDpcXHRcXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbiAyMzE6XFx0XFx0aGVscFxcbiAyMzI6XFx0XFx0ICBBIExpbnV4IFVTQiBcXFwiZ2FkZ2V0XFxcIiBjYW4gYmUgc2V0IHVwIHRocm91Z2ggY29uZmlnZnMuXFxuIDIzMzpcXHRcXHQgIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZSBVU0IgZnVuY3Rpb25zICh3aGljaCBmcm9tIHRoZSBob3N0J3NcXG4gMjM0OlxcdFxcdCAgcGVyc3BlY3RpdmUgYXJlIHNlZW4gYXMgaW50ZXJmYWNlcykgYW5kIGNvbmZpZ3VyYXRpb25zIGFyZVxcbiAyMzU6XFx0XFx0ICBzcGVjaWZpZWQgc2ltcGx5IGJ5IGNyZWF0aW5nIGFwcHJvcHJpYXRlIGRpcmVjdG9yaWVzIGluIGNvbmZpZ2ZzLlxcbiAyMzY6XFx0XFx0ICBBc3NvY2lhdGluZyBmdW5jdGlvbnMgd2l0aCBjb25maWd1cmF0aW9ucyBpcyBkb25lIGJ5IGNyZWF0aW5nXFxuIDIzNzpcXHRcXHQgIGFwcHJvcHJpYXRlIHN5bWJvbGljIGxpbmtzLlxcbiAyMzg6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2NvbmZpZ2ZzLnJzdC5cXG4gMjM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDo0Ny43NTAzOTA0MThaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg0MzYwMTczMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVVZDIEdhZGdldCBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBVVkMgZ2FkZ2V0IGltcGxlbWVudGF0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSd2ZSBjb25maXJtZWQgaXMgdGhhdCBgVVNCX0NPTkZJR0ZTYCBoYXMgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0aGVzZSBjb25maWd1cmF0aW9ucyBlbmFibGVkOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VVkNgLCBgVVNCX0dfV0VCQ0FNYCwgYW5kIGBWSURFT19ERVZgLiBJIG5vdGljZWQgYFVTQl9HX1dFQkNBTWAgaXMgYSBsZWdhY3kgZHJpdmVyIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBpcyB0aGUgY29uZmlnZnMtYmFzZWQgb25lLCBidXQgSSdtIGdvaW5nIHRvIGluY2x1ZGUgYm90aCBvZiB0aGVtIGZvciBub3cuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBgVVNCX0ZfVVZDYCBhZ2FpbiwganVzdCB0byBiZSB0aG9yb3VnaC4gSSBhbHJlYWR5IHNlZSB0aGF0IGl0J3Mgc2VsZWN0ZWQgYnkgYm90aCBgVVNCX0NPTkZJR0ZTX0ZfVVZDYCBhbmQgYFVTQl9HX1dFQkNBTWAuXG5cbk5leHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgYHV2Y2dfdmlkZW9fZW5hYmxlYCBpcyByZWFjaGFibGUuIEkgc2VlIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBgdXZjX3Y0bDJfc2V0X2Zvcm1hdGAuIE9rYXksIGB1dmNfdjRsMl9zdHJlYW1vbmAgaXMgY2FsbGVkIGJ5IHRoZSBWNEwyIGNvcmUgd2hlbmV2ZXIgYFZJRElPQ19TVFJFQU1PTmAgaXMgaXNzdWVkLCB3aGljaCBtZWFucyB1c2Vyc3BhY2UgY2FuIHRyaWdnZXIgaXQgYnkgb3BlbmluZyB0aGF0IGAvZGV2L3ZpZGVvWGAgbm9kZSB0aGUgVVZDIGdhZGdldCBjcmVhdGVzIGFuZCB0aGVuIGlzc3VpbmcgYFZJRElPQ19TVFJFQU1PTmAuXG5cblRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzb21lIGNoZWNrcyBmb3IgYHV2Yy1cdTAwM2VzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEYCBhbmQgYHZpZGVvLVx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWVuYWJsZWQgfHwgIXZpZGVvLVx1MDAzZWVwLVx1MDAzZWRlc2NgLiBJIHNlZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHByZXZlbnRpbmcgY3Jhc2hlcyBvciBpbnZhbGlkIHN0YXRlcyBpZiBzdHJlYW1pbmcgc3RhcnRzIGJlZm9yZSB0aGUgZ2FkZ2V0IGlzIGZ1bGx5IGNvbm5lY3RlZCBvciBjb25maWd1cmVkLiBUaGF0J3MgYSBkZWZpbml0ZSBpbXByb3ZlbWVudCBhbmQgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIGZ1enppbmcuXG5cbk15IGZvY3VzIHN5bWJvbHMgaGVyZSBhcmUgYHV2Y192NGwyX3N0cmVhbW9uYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gTXkgY29uZmlnIHJlcXVpcmVtZW50cywgYXMgYSByZW1pbmRlciwgYXJlIGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VWQ2AsIGBVU0JfR19XRUJDQU1gLCBhbmQgYFZJREVPX0RFVmAuXG5cbkkgc2hvdWxkIHByb2JhYmx5IHF1aWNrbHkgdmVyaWZ5IGlmIGB1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHNgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UsIGp1c3QgaW4gY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1MzQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNDo1Ni41OTM5OTUzNjlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzA1MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInV2Y192aWRlb19hbGxvY19yZXF1ZXN0c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jPTU0Nz1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjU0ODp1dmNfdmlkZW9fYWxsb2NfcmVxdWVzdHMoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTU0OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9NzY2PWludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03ODYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc4NzpcXHRpZiAoKHJldCA9IHV2Y192aWRlb19hbGxvY19yZXF1ZXN0cyh2aWRlbykpIFxcdTAwM2MgMClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmMtNzg4LVxcdFxcdHJldHVybiByZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE0OjU2LjY1MDMxMDIwN1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjAwNTMxNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gdGhlIGNvbnRleHQgdGhhdCBJJ20gbGlrZWx5IGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgY29kZWJhc2U6XG5cbioqRm9jdXNpbmcgb24gdGhlIEVuYWJsZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgYHV2Y2dfdmlkZW9fZW5hYmxlYCwgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IGhlcmUuIEkgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIHRob3VnaHQgaXMgdG8gZm9jdXMgb24gdGhpcyBmdW5jdGlvbi4gR29vZCwgdGhhdCBtYWtlcyBzZW5zZTsgdGhhdCBzZWVtcyBsb2dpY2FsIGJlY2F1c2Ugb2YgdGhlIGltcGxpY2F0aW9uIHRoYXQgaXQncyB0aGUgcm9vdCBvZiB0aGUgaXNzdWUuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQncyBqdXN0IGNvbmZpcm0gdGhhdCBhc3N1bXB0aW9uLiBJIHdhbnQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgdXZjZ192aWRlb19lbmFibGVgIGlzbid0IGludm9rZWQgZnJvbSBzb21lIHVuZXhwZWN0ZWQgY29ybmVyIG9mIHRoZSBjb2RlIGJhc2UuIExldCdzIHRyYWNlIGFsbCB0aGUgY2FsbCBzaXRlcyB0byBtYWtlIHN1cmUgbm90aGluZyBlbHNlIGlzIGNhbGxpbmcgaXQuIEdvdHRhIG1ha2Ugc3VyZSB3ZSdyZSBub3QgbWlzc2luZyBzb21ldGhpbmcgb3IgY2hhc2luZyB0aGUgd3JvbmcgcmFiYml0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgxNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE1OjAyLjI1MDg0NDkyNVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0NzY1MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXZjZ192aWRlb19lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYz01MjA9dXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jLTUzNS1cXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jOjUzNjpcXHRyZXQgPSB1dmNnX3ZpZGVvX2VuYWJsZSh2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmMtNTM3LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmM9Njg4PXV2Y2dfdmlkZW9fZGlzYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdmlkZW8uYy03NjUtICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jOjc2NjppbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jLTc2Ny17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmg9MTU9c3RydWN0IHV2Y192aWRlbztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmgtMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oOjE3OmludCB1dmNnX3ZpZGVvX2VuYWJsZShzdHJ1Y3QgdXZjX3ZpZGVvICp2aWRlbyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5oLTE4LWludCB1dmNnX3ZpZGVvX2Rpc2FibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNTowMi4yOTczMjgyNzRaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMwNjA0NDQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhpbmtpbmcgcHJvY2VzcywgZm9ybWF0dGVkIGZvciBhIGZlbGxvdyBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiBGdW5jdGlvbiBDYWxsIFJlbGF0aW9uc2hpcHMqKlxuXG5BbHJpZ2h0LCBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggaGVyZS4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV2ZXIgY2FsbGVkIGZyb20gYHV2Y192NGwyX3N0cmVhbW9uYC4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBLbm93aW5nIHRoZSBjYWxsIGdyYXBoIGxpa2UgdGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cblxuVGhlcmVmb3JlLCBgdXZjX3Y0bDJfc3RyZWFtb25gIGlzIGRlZmluaXRlbHkgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiB3aGVuIEknbSBleGFtaW5pbmcgdGhpcyBjb2RlLiBGdXJ0aGVybW9yZSwgaXQgc3VnZ2VzdHMgdGhhdCBgdXZjZ192aWRlb19lbmFibGVgIGlzIGFsc28gYSBwcmltZSBjYW5kaWRhdGUgYXMgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbi4gXG5cbkknbGwgYmUgbGV2ZXJhZ2luZyB0aGUgYHNldC1yZXN1bHRzYCB0b29sIHRvIGNhcHR1cmUgYW5kIGNvbW11bmljYXRlIG15IGZpbmRpbmdzIGVmZmVjdGl2ZWx5LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gc3BlY2lmeSB0aGUgY29udGV4dCB3aGVuIEkgc2V0IHRoZSByZXN1bHRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ5NCwiT3V0cHV0VG9rZW5zIjoxNzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNTowOC42MDMzNzY3NFoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1OTQ0NzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICAgIFwiVVNCX0dfV0VCQ0FNXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dmNfdjRsMl9zdHJlYW1vblwiLFxuICAgIFwidXZjZ192aWRlb19lbmFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIGdhZGdldCBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb24gZHJpdmVyIHRvIGFkZCBzdGF0ZSBjaGVja3MgYmVmb3JlIGVuYWJsaW5nIHZpZGVvIHN0cmVhbWluZyBhbmQgYWxsb2NhdGluZyByZXF1ZXN0cy4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIHN0YXRlcyBhbmQgcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2Vyc3BhY2UgaXNzdWVzIFZJRElPQ19TVFJFQU1PTiBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGdhZGdldCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VWQ1wiLFxuICAgIFwiVVNCX0dfV0VCQ0FNXCIsXG4gICAgXCJWSURFT19ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1dmNfdjRsMl9zdHJlYW1vblwiLFxuICAgIFwidXZjZ192aWRlb19lbmFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIGdhZGdldCBVVkMgKFVTQiBWaWRlbyBDbGFzcykgZnVuY3Rpb24gZHJpdmVyIHRvIGFkZCBzdGF0ZSBjaGVja3MgYmVmb3JlIGVuYWJsaW5nIHZpZGVvIHN0cmVhbWluZyBhbmQgYWxsb2NhdGluZyByZXF1ZXN0cy4gVGhpcyBwcmV2ZW50cyBpbnZhbGlkIHN0YXRlcyBhbmQgcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2Vyc3BhY2UgaXNzdWVzIFZJRElPQ19TVFJFQU1PTiBiZWZvcmUgdGhlIGdhZGdldCBpcyBmdWxseSBjb25uZWN0ZWQgb3IgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGdhZGdldCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTU6MDguNjk5MzMwMTU3WiIsIlNlcSI6NDksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU3ODQwOTk3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE1OjA4LjY5OTkzNjM5N1oiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTU3Nzc5ODQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGUgbWFjaGluZSBsb2dpYyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBhZGRzIGVuZHBvaW50IHZhbGlkYXRpb24gY2hlY2tzIChgdmlkZW8tXFx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZW5hYmxlZCB8fCAhdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VkZXNjYCkgaW4gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgYWNjZXNzZXMgdG8gZGlzYWJsZWQgb3IgdW5pbml0aWFsaXplZCBlbmRwb2ludHMsIHdoaWNoIHR5cGljYWxseSByZXN1bHQgaW4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGRhdGEgc3RydWN0dXJlcywgYnVmZmVycywgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW52YWxpZCBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MTA2NmIxMGEzYTM4NDYxNmQ3MzZkN2VmMzUxYTY5ZjFiN2YyNzIzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTQ6MDk6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3Y0bDIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG5pbmRleCBkZmEwNTIxYTI0M2FjLi5hODA2NjNjOWFjYjczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192NGwyLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91dmNfdjRsMi5jXG5AQCAtNTI3LDE3ICs1MjcsMjQgQEAgdXZjX3Y0bDJfc3RyZWFtb24oc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCBlbnVtIHY0bDJfYnVmX3R5cGUgdHlwZSlcbiBcdGlmICh0eXBlICE9IHZpZGVvLVx1MDAzZXF1ZXVlLnF1ZXVlLnR5cGUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHV2Yy1cdTAwM2VzdGF0ZSAhPSBVVkNfU1RBVEVfQ09OTkVDVEVEKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdHV2Yy1cdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9TVFJFQU1JTkc7XG4rXG4gXHQvKiBFbmFibGUgVVZDIHZpZGVvLiAqL1xuIFx0cmV0ID0gdXZjZ192aWRlb19lbmFibGUodmlkZW8pO1xuLVx0aWYgKHJldCBcdTAwM2MgMClcbitcdGlmIChyZXQgXHUwMDNjIDApIHtcbitcdFx0aWYgKHV2Yy1cdTAwM2VzdGF0ZSA9PSBVVkNfU1RBVEVfU1RSRUFNSU5HKVxuK1x0XHRcdHV2Yy1cdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9DT05ORUNURUQ7XG4gXHRcdHJldHVybiByZXQ7XG4rXHR9XG4gXG4gXHQvKlxuIFx0ICogQ29tcGxldGUgdGhlIGFsdGVybmF0ZSBzZXR0aW5nIHNlbGVjdGlvbiBzZXR1cCBwaGFzZSBub3cgdGhhdFxuIFx0ICogdXNlcnNwYWNlIGlzIHJlYWR5IHRvIHByb3ZpZGUgdmlkZW8gZnJhbWVzLlxuIFx0ICovXG4gXHR1dmNfZnVuY3Rpb25fc2V0dXBfY29udGludWUodXZjLCAwKTtcbi1cdHV2Yy1cdTAwM2VzdGF0ZSA9IFVWQ19TVEFURV9TVFJFQU1JTkc7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXG5pbmRleCAyZjk3MDBiM2YxYjY0Li5iZDY3YTlkODBiNDVkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3V2Y192aWRlby5jXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdXZjX3ZpZGVvLmNcbkBAIC01NTEsNiArNTUxLDkgQEAgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzKHN0cnVjdCB1dmNfdmlkZW8gKnZpZGVvKVxuIFx0dW5zaWduZWQgaW50IGk7XG4gXHRpbnQgcmV0ID0gLUVOT01FTTtcbiBcbitcdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cdTAwM2VlcC1cdTAwM2VkZXNjKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbiBcdC8qXG4gXHQgKiBjYWxjdWxhdGUgaW4gdXZjX3ZpZGVvX3ByZXBfcmVxdWVzdHNcbiBcdCAqIC0gdmlkZW8tXHUwMDNldXZjX251bV9yZXF1ZXN0c1xuQEAgLTc2NCw3ICs3NjcsNyBAQCBpbnQgdXZjZ192aWRlb19lbmFibGUoc3RydWN0IHV2Y192aWRlbyAqdmlkZW8pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICh2aWRlby1cdTAwM2VlcCA9PSBOVUxMKSB7XG4rXHRpZiAodmlkZW8tXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZW5hYmxlZCB8fCAhdmlkZW8tXHUwMDNlZXAtXHUwMDNlZGVzYykge1xuIFx0XHR1dmNnX2luZm8oXHUwMDI2dmlkZW8tXHUwMDNldXZjLVx1MDAzZWZ1bmMsXG4gXHRcdFx0ICBcIlZpZGVvIGVuYWJsZSBmYWlsZWQsIGRldmljZSBpcyB1bmluaXRpYWxpemVkLlxcblwiKTtcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxNTowOC42OTk5Mzc0MjdaIiwiU2VxIjo1MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1Nzc3NzA4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgVVNCIEdhZGdldCBVVkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0IG1lIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBmb3IgdGhlIFVTQiBnYWRnZXQgVVZDIGRyaXZlci4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSBkcml2ZXIncyByb2J1c3RuZXNzIHRocm91Z2ggc3RhdGUgbWFuYWdlbWVudCBhbmQgcHJldmVudGluZyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBhY2Nlc3NlcyB0byBlbmRwb2ludHMgdGhhdCBhcmVuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQgb3IgZW5hYmxlZC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBtb2RpZmljYXRpb25zIHRvIGB1dmNfdjRsMl9zdHJlYW1vbmAsIEkgc2VlIGEgY3JpdGljYWwgc3RhdGUgdHJhbnNpdGlvbiBiZWluZyBoYW5kbGVkLiBJdCBleHBsaWNpdGx5IGNoZWNrcyB0aGF0IHRoZSBVVkMgZGV2aWNlIGlzIGluIGEgYFVWQ19TVEFURV9DT05ORUNURURgIHN0YXRlIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGVuYWJsZSB0aGUgdmlkZW8gc3RyZWFtLiBUaGVuLCBpdCBzZXRzIHRoZSBzdGF0ZSB0byBgVVZDX1NUQVRFX1NUUkVBTUlOR2AgKmJlZm9yZSogY2FsbGluZyBgdXZjZ192aWRlb19lbmFibGVgLiBDcml0aWNhbGx5LCBpZiBgdXZjZ192aWRlb19lbmFibGVgIGZhaWxzLCB0aGUgc3RhdGUgaXMgY29ycmVjdGx5IHJldmVydGVkIHRvIGBVVkNfU1RBVEVfQ09OTkVDVEVEYC4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2Ygc3RhdGUgbWFjaGluZSBsb2dpYyBJIGxpa2UgdG8gc2VlLiBJdCdzIHByZXZlbnRhdGl2ZSBhbmQgcHJvdGVjdHMgYWdhaW5zdCBpbnZhbGlkIHN0YXRlIGFjY2Vzc2VzLlxuXG5Nb3Zpbmcgb24gdG8gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AsIHRoZXJlJ3MgYSBuZXcgY2hlY2sgYWRkZWQgYXQgdGhlIGJlZ2lubmluZy4gSXQncyB2ZXJpZnlpbmcgdGhhdCBgdmlkZW8tXHUwMDNlZXBgIGlzbid0IE5VTEwsIGFuZCBjcnVjaWFsbHksIHRoYXQgdGhlIGVuZHBvaW50IGlzIGFjdHVhbGx5IGVuYWJsZWQgYW5kIGhhcyBhIHZhbGlkIGRlc2NyaXB0b3IuIElmIGFueSBvZiB0aGVzZSBjb25kaXRpb25zIGFyZSBmYWxzZSwgaXQgbm93IHJldHVybnMgYC1FTk9ERVZgLCBpbmRpY2F0aW5nIGEgcHJvYmxlbSB3aXRoIHRoZSBkZXZpY2UncyBzZXR1cC4gVGhpcyBpcyBnb29kIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBwcmFjdGljZS5cblxuRmluYWxseSwgaW4gYHV2Y2dfdmlkZW9fZW5hYmxlYCwgYSBzaW1pbGFyIGNoZWNrIGlzIGFkZGVkLiBJdCBlbnN1cmVzIHRoZSBlbmRwb2ludCBpcyB2YWxpZCwgZW5hYmxlZCwgYW5kIGhhcyBhIGRlc2NyaXB0b3IgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LiBUaGlzIGFkZHMgYW4gZXh0cmEgbGF5ZXIgb2YgcHJvdGVjdGlvbi5cblxuSSBjYW4gY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgYmFzZWQgb24gdGhpcyBkZXRhaWxlZCBleGFtaW5hdGlvbi4gTm93aGVyZSBkbyBJIHNlZSBhbnkgaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkIG9yIHVzZWQuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYW5kIHN0YXRlIHZhbGlkYXRpb24uIFdlIGFyZW4ndCBkZWFsaW5nIHdpdGggYW55IGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgbWFuaXB1bGF0aW9ucywgb3IgcG90ZW50aWFsIGluZm9ybWF0aW9uIGxlYWtzIHRoYXQgbWlnaHQgcmVxdWlyZSBLTVNBTi4gS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IGlzc3VlcyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byBmaXggcG90ZW50aWFsIGJ1Z3MgdGhhdCBtaWdodCB0cmlnZ2VyIGtlcm5lbCBjcmFzaGVzLCBhbmQgS01TQU4gaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhpcyBraW5kIG9mIGZpeC4gVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQxLCJPdXRwdXRUb2tlbnMiOjE4OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE1OjIwLjI3NzcxMzM2MloiLCJTZXEiOjUyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGUgbWFjaGluZSBsb2dpYyBpbiBgdXZjX3Y0bDJfc3RyZWFtb25gIGFuZCBhZGRzIGVuZHBvaW50IHZhbGlkYXRpb24gY2hlY2tzIChgdmlkZW8tXFx1MDAzZWVwID09IE5VTEwgfHwgIXZpZGVvLVxcdTAwM2VlcC1cXHUwMDNlZW5hYmxlZCB8fCAhdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VkZXNjYCkgaW4gYHV2Y192aWRlb19hbGxvY19yZXF1ZXN0c2AgYW5kIGB1dmNnX3ZpZGVvX2VuYWJsZWAuIFRoZXNlIGNoYW5nZXMgYXJlIGRlc2lnbmVkIHRvIHByZXZlbnQgaW52YWxpZCBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgYWNjZXNzZXMgdG8gZGlzYWJsZWQgb3IgdW5pbml0aWFsaXplZCBlbmRwb2ludHMsIHdoaWNoIHR5cGljYWxseSByZXN1bHQgaW4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBUaGVyZSBpcyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGRhdGEgc3RydWN0dXJlcywgYnVmZmVycywgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgcGVyZmVjdGx5IHN1aXRlZCB0byBjYXRjaCBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW52YWxpZCBhY2Nlc3NlcyByZWxhdGVkIHRvIHRoZXNlIGNoYW5nZXMuIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGluIGB1dmNfdjRsMl9zdHJlYW1vbmAgYW5kIGFkZHMgZW5kcG9pbnQgdmFsaWRhdGlvbiBjaGVja3MgKGB2aWRlby1cXHUwMDNlZXAgPT0gTlVMTCB8fCAhdmlkZW8tXFx1MDAzZWVwLVxcdTAwM2VlbmFibGVkIHx8ICF2aWRlby1cXHUwMDNlZXAtXFx1MDAzZWRlc2NgKSBpbiBgdXZjX3ZpZGVvX2FsbG9jX3JlcXVlc3RzYCBhbmQgYHV2Y2dfdmlkZW9fZW5hYmxlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcHJldmVudCBpbnZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFuZCBhY2Nlc3NlcyB0byBkaXNhYmxlZCBvciB1bmluaXRpYWxpemVkIGVuZHBvaW50cywgd2hpY2ggdHlwaWNhbGx5IHJlc3VsdCBpbiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFRoZXJlIGlzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBidWZmZXJzLCBvciBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBwZXJmZWN0bHkgc3VpdGVkIHRvIGNhdGNoIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciBpbnZhbGlkIGFjY2Vzc2VzIHJlbGF0ZWQgdG8gdGhlc2UgY2hhbmdlcy4gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[1] Phase: Succeeded StartedAt: 2026-08-12 14:15:31 +0000 UTC FinishedAt: 2026-08-12 14:15:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 14:15:31 +0000 UTC FinishedAt: 2026-08-12 14:15:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[2] Phase: Succeeded StartedAt: 2026-08-12 14:15:31 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-12 14:15:31 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-12 14:15:31 +0000 UTC FinishedAt: 2026-08-12 14:15:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:15:31 +0000 UTC FinishedAt: 2026-08-12 14:15:36 +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_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-workflowdlqj4/series-workflowdlqj4-convert-artifact-3863361326/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-12 14:15:41 +0000 UTC FinishedAt: 2026-08-12 14:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:15:41 +0000 UTC FinishedAt: 2026-08-12 14:35:44 +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:*96d53ec6-982d-46bf-9fc3-40afe9809710,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-workflowdlqj4/series-workflowdlqj4-convert-artifact-3863361326/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": "619b406e-57ec-449f-95d1-4c0bfff005e2", "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-workflowdlqj4/series-workflowdlqj4-build-action-1196710548/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:15:41 +0000 UTC FinishedAt: 2026-08-12 14:35:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*96d53ec6-982d-46bf-9fc3-40afe9809710,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-workflowdlqj4/series-workflowdlqj4-convert-artifact-3863361326/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": "619b406e-57ec-449f-95d1-4c0bfff005e2", "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-workflowdlqj4/series-workflowdlqj4-build-action-1196710548/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-12 14:35:44 +0000 UTC FinishedAt: 2026-08-12 14:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:35:44 +0000 UTC FinishedAt: 2026-08-12 14:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-12 14:35:44 +0000 UTC FinishedAt: 2026-08-12 14:36:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:35:44 +0000 UTC FinishedAt: 2026-08-12 14:35:50 +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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-workflowdlqj4/series-workflowdlqj4-convert-artifact-3520183585/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-12 14:36:08 +0000 UTC FinishedAt: 2026-08-12 14:38:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:36:08 +0000 UTC FinishedAt: 2026-08-12 14:38:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*619b406e-57ec-449f-95d1-4c0bfff005e2,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-workflowdlqj4/series-workflowdlqj4-build-action-1196710548/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-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-12 14:38:16 +0000 UTC FinishedAt: 2026-08-12 14:38:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:38:16 +0000 UTC FinishedAt: 2026-08-12 14:38:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-12 14:38:16 +0000 UTC FinishedAt: 2026-08-12 14:56:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:38:16 +0000 UTC FinishedAt: 2026-08-12 14:56:46 +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:*96d53ec6-982d-46bf-9fc3-40afe9809710,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-workflowdlqj4/series-workflowdlqj4-convert-artifact-3520183585/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": "19458870-ce23-4342-af88-1027510ca9a1", "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-workflowdlqj4/series-workflowdlqj4-build-action-1212934189/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:38:16 +0000 UTC FinishedAt: 2026-08-12 14:56:36 +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:*96d53ec6-982d-46bf-9fc3-40afe9809710,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-workflowdlqj4/series-workflowdlqj4-convert-artifact-3520183585/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": "19458870-ce23-4342-af88-1027510ca9a1", "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-workflowdlqj4/series-workflowdlqj4-build-action-1212934189/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-12 14:56:46 +0000 UTC FinishedAt: 2026-08-12 14:56:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:56:46 +0000 UTC FinishedAt: 2026-08-12 14:56:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-12 14:56:46 +0000 UTC FinishedAt: 2026-08-12 14:58:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:56:46 +0000 UTC FinishedAt: 2026-08-12 14:58:45 +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:*19458870-ce23-4342-af88-1027510ca9a1,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-workflowdlqj4/series-workflowdlqj4-build-action-1212934189/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-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-12 14:58:55 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:58:55 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +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":["uvc_v4l2_streamon","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:*619b406e-57ec-449f-95d1-4c0bfff005e2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*19458870-ce23-4342-af88-1027510ca9a1,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-workflowdlqj4/series-workflowdlqj4-build-action-1196710548/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-workflowdlqj4/series-workflowdlqj4-build-action-1212934189/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:58:55 +0000 UTC FinishedAt: 2026-08-12 14:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:58:55 +0000 UTC FinishedAt: 2026-08-12 14:59:00 +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":["uvc_v4l2_streamon","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-workflowdlqj4/series-workflowdlqj4-convert-artifact-3907069622/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:58:55 +0000 UTC FinishedAt: 2026-08-12 14:58:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-12 14:58:55 +0000 UTC FinishedAt: 2026-08-12 14:58:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:58:55 +0000 UTC FinishedAt: 2026-08-12 14:58:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:59:05 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdlqj4[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_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":["uvc_v4l2_streamon","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_CONFIGFS","USB_CONFIGFS_F_UVC","USB_G_WEBCAM","VIDEO_DEV"],"series_id":"70ac3841-2b45-4dfe-8eb0-7cc977eaf243","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-12 14:59:05 +0000 UTC FinishedAt: 2026-08-12 18:01:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*619b406e-57ec-449f-95d1-4c0bfff005e2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*19458870-ce23-4342-af88-1027510ca9a1,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-workflowdlqj4/series-workflowdlqj4-build-action-1196710548/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-workflowdlqj4/series-workflowdlqj4-build-action-1212934189/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-workflowdlqj4/series-workflowdlqj4-convert-artifact-3907069622/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,}