Name: series-workflow6nn9r Phase: Succeeded StartedAt: 2026-08-07 14:15:01 +0000 UTC FinishedAt: 2026-08-07 18:01:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[0] Phase: Succeeded StartedAt: 2026-08-07 14:15:01 +0000 UTC FinishedAt: 2026-08-07 14:17:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 14:15:01 +0000 UTC FinishedAt: 2026-08-07 14:17:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_FBDEV_EMULATION", "DRM_VKMS", "DRM_VIRTIO_GPU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_FBDEV_EMULATION", "DRM_VKMS", "DRM_VIRTIO_GPU" ], "series_id": "ab1b8d03-a1ab-4a03-84f0-97f3f311f976" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "drm_client_modeset_wait_for_vblank", "drm_crtc_wait_one_vblank", "drm_crtc_wait_one_vblank_internal", "drm_fb_helper_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDssCiAgICAmIzM0O0RSTV9WSVJUSU9fR1BVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsJiMzNDssCiAgICAmIzM0O2RybV9mYl9oZWxwZXJfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgYnkgZXh0cmFjdGluZyBpdHMgY29yZSBsb2dpYyBpbnRvIGEgbmV3IGludGVybmFsIGZ1bmN0aW9uIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIHRha2luZyBhIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGNvbnRyb2wgZmxvdywgd2FpdCBxdWV1ZXMsIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIE5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgbm8gbWVtb3J5IGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCAoZS5nLiwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGJ5IGludHJvZHVjaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHdoaWNoIGF2b2lkcyB0YWtpbmcgYW4gZXh0cmEgdmJsYW5rIHJlZmVyZW5jZSB3aGVuIG9uZSBpcyBhbHJlYWR5IGhlbGQuIFRoaXMgaXMgdXNlZCBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgRFJNIGlvY3RscyBhbmQgZmJkZXYgZW11bGF0aW9uIChlLmcuLCBgRkJJT19XQUlURk9SVlNZTkNgIHZpYSBgZHJtX2ZiX2hlbHBlcl9pb2N0bGApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUyBvciB2aXJ0aW8tZ3B1LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjcwODY5OTM0OWEyMTgzOTg4ZDg4NjdlYzZmNjEzOTE5MWVjYmU2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTQ6MTY6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG5pbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbkBAIC0xMzI4LDcgJiM0MzsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGlcbiBcdCAqL1xuIFx0cmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTtcbiBcdGlmICghcmV0KSB7XG4tXHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbiYjNDM7XHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcdFx0ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuQEAgLTExNSw2ICYjNDM7MTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gdm9pZCBkcm1fdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG4gXG4gLyogZHJtX3ZibGFua193b3JrLmMgKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5pbmRleCBmOTBmYjJkMTNlNDIzLi5lMmJmNWVkNjU3MDAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuQEAgLTEyOTcsNiAmIzQzOzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB9XG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcbiBcbiYjNDM7LypcbiYjNDM7ICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuJiM0MzsgKiBAY3J0YzogRFJNIGNydGNcbiYjNDM7ICpcbiYjNDM7ICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFuayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLlxuJiM0MzsgKiBFdmVyeSBjYWxsZXIgbXVzdCBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSBhY3Jvc3MgdGhlIGNvbXBsZXRlIHdhaXQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Igb24gZmFpbHVyZXMuXG4mIzQzOyAqL1xuJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbiYjNDM7XHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuJiM0MztcdHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1x0dTY0IGxhc3Q7XG4mIzQzO1xuJiM0MztcdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXHUwMDNlcXVldWUsXG4mIzQzO1x0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuJiM0MztcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbiAgKiBAY3J0YzogRFJNIGNydGNcbkBAIC0xMzExLDI2ICYjNDM7MTMzNywyMCBAQCBpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB7XG4gXHRzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy1cdTAwM2VkZXY7XG4gXHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuLVx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG4gXHRpbnQgcmV0O1xuLVx0dTY0IGxhc3Q7XG4gXG4gXHRyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpO1xuIFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcJiMzNDt2Ymxhbmsgbm90IGF2YWlsYWJsZSBvbiBjcnRjICVpLCByZXQ9JWlcXG5cJiMzNDssXG4gXHRcdCAgICAgcGlwZSwgcmV0KSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4tXG4tXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuLVx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuLVx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuJiM0MztcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcbi1cdGRybV9XQVJOKGRldiwgcmV0ID09IDAsIFwmIzM0O3ZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXFxuXCYjMzQ7LCBwaXBlKTtcbiYjNDM7XHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxcblwmIzM0OywgcGlwZSk7XG4gXG4gXHRkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpO1xuIFxuLVx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNJiMzNDssCiAgICAmIzM0O0RSTV9GQkRFVl9FTVVMQVRJT04mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OywKICAgICYjMzQ7RFJNX1ZJUlRJT19HUFUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rJiMzNDssCiAgICAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwmIzM0OywKICAgICYjMzQ7ZHJtX2ZiX2hlbHBlcl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgYnkgaW50cm9kdWNpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgd2hpY2ggYXZvaWRzIHRha2luZyBhbiBleHRyYSB2YmxhbmsgcmVmZXJlbmNlIHdoZW4gb25lIGlzIGFscmVhZHkgaGVsZC4gVGhpcyBpcyB1c2VkIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBEUk0gaW9jdGxzIGFuZCBmYmRldiBlbXVsYXRpb24gKGUuZy4sIGBGQklPX1dBSVRGT1JWU1lOQ2AgdmlhIGBkcm1fZmJfaGVscGVyX2lvY3RsYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TIG9yIHZpcnRpby1ncHUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNzA4Njk5MzQ5YTIxODM5ODhkODg2N2VjNmY2MTM5MTkxZWNiZTYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAxNDoxNjoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwppbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCkBAIC0xMzI4LDcgJiM0MzsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGkKIAkgKi8KIAlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpOwogCWlmICghcmV0KSB7Ci0JCWRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTsKJiM0MzsJCWRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAkJZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCBmODkzYjFlM2E1OTZlLi42ZmQzMzY3MmQyMDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCkBAIC0xMTUsNiAmIzQzOzExNSw3IEBAIHZvaWQgZHJtX3ZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7CiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiAKIC8qIGRybV92Ymxhbmtfd29yay5jICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKaW5kZXggZjkwZmIyZDEzZTQyMy4uZTJiZjVlZDY1NzAwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCkBAIC0xMjk3LDYgJiM0MzsxMjk3LDMyIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpOwogCiYjNDM7LyoKJiM0MzsgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiYjNDM7ICogQGNydGM6IERSTSBjcnRjCiYjNDM7ICoKJiM0MzsgKiBUaGlzIHdhaXRzIGZvciBvbmUgdmJsYW5rIHRvIHBhc3Mgb24gQGNydGMsIHVzaW5nIHRoZSBpcnEgZHJpdmVyIGludGVyZmFjZXMuCiYjNDM7ICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlcy4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiYjNDM7CWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CiYjNDM7CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1NjQgbGFzdDsKJiM0MzsKJiM0MzsJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKJiM0MzsKJiM0MzsJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0mZ3Q7cXVldWUsCiYjNDM7CQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKJiM0MzsJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiAgKiBAY3J0YzogRFJNIGNydGMKQEAgLTEzMTEsMjYgJiM0MzsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiAJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwotCXU2NCBsYXN0OwogCiAJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAoZHJtX1dBUk4oZGV2LCByZXQsICYjMzQ7dmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXG4mIzM0OywKIAkJICAgICBwaXBlLCByZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKLQotCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAotCQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKLQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSk7CiYjNDM7CXJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAotCWRybV9XQVJOKGRldiwgcmV0ID09IDAsICYjMzQ7dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiYjMzQ7LCBwaXBlKTsKJiM0MzsJZHJtX1dBUk4oZGV2LCByZXQgPT0gLUVUSU1FRE9VVCwgJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxuJiMzNDssIHBpcGUpOwogCiAJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAotCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERSTSBTdWJzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIGBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNgIGFuZCBgZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY2AuIEludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgbmV3IGZ1bmN0aW9uLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCwgYW5kIHRoZXkmIzM5O3JlIHVzaW5nIGl0IHdpdGhpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGlzIGlzIGFsbCB3aXRoaW4gdGhlIERSTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBob3cgdmJsYW5rIGV2ZW50cyBhcmUgaGFuZGxlZC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBldmVuICpoYXBwZW4qIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IERSTSBpcyBkZWZpbml0ZWx5IHVzZWQgaW4gUUVNVSwgc28gdGhhdCYjMzk7cyBnb29kLiBXZSBzZWUgdmttcywgdmlydGlvLWdwdSwgYm9jaHMsIGFuZCBxeGwgYWxsIHVzaW5nIGl0IHRoZXJlLiBTbyB0aGUgcmVhY2ggaXMgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBpZiBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCBmb3IgdGhpcyB0byB3b3JrIHByb3Blcmx5LgoKSSYjMzk7bGwgc3RhcnQgYnkgbWFraW5nIHN1cmUgdGhhdCBgRFJNYCBpcyBlbmFibGVkIGFzIHRoYXQmIzM5O3MgdGhlIG9idmlvdXMgcHJlcmVxdWlzaXRlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBtaWdodCBiZSByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWctNy0jXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo4Om1lbnVjb25maWcgRFJNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIgRFJJIHN1cHBvcnQpXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MzQ9aWYgRFJNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjM2OmNvbmZpZyBEUk1fTUlQSV9EQklcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00MC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjQxOmNvbmZpZyBEUk1fTUlQSV9EU0lcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQyLVx0Ym9vbFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQ0LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NDU6Y29uZmlnIERSTV9LTVNfSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00Ni1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTEtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo1Mjpjb25maWcgRFJNX0RSQVdcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTUzLVx0Ym9vbFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTU1LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NTY6Y29uZmlnIERSTV9QQU5JQ1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTctXHRib29sIFwmIzM0O0Rpc3BsYXkgYSB1c2VyLWZyaWVuZGx5IG1lc3NhZ2Ugd2hlbiBhIGtlcm5lbCBwYW5pYyBvY2N1cnNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy02OC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjY5OmNvbmZpZyBEUk1fUEFOSUNfRk9SRUdST1VORF9DT0xPUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzAtXHRoZXggXCYjMzQ7RHJtIHBhbmljIHNjcmVlbiBmb3JlZ3JvdW5kIGNvbG9yLCBpbiBSR0JcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03My1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjc0OmNvbmZpZyBEUk1fUEFOSUNfQkFDS0dST1VORF9DT0xPUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzUtXHRoZXggXCYjMzQ7RHJtIHBhbmljIHNjcmVlbiBiYWNrZ3JvdW5kIGNvbG9yLCBpbiBSR0JcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03OC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjc5OmNvbmZpZyBEUk1fUEFOSUNfREVCVUdcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtBZGQgYSBkZWJ1ZyBmcyBlbnRyeSB0byB0cmlnZ2VyIGRybV9wYW5pY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTg3LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6ODg6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTg5LVx0c3RyaW5nIFwmIzM0O1BhbmljIHNjcmVlbiBmb3JtYXR0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMDAtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMDE6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfQ09ERVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTAyLVx0Ym9vbCBcJiMzNDtBZGQgYSBwYW5pYyBzY3JlZW4gd2l0aCBhIFFSIGNvZGVcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMTEtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMTI6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfQ09ERV9VUkxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTExMy1cdHN0cmluZyBcJiMzNDtCYXNlIFVSTCBvZiB0aGUgUVIgY29kZSBpbiB0aGUgcGFuaWMgc2NyZWVuXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTIyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTIzOmNvbmZpZyBEUk1fUEFOSUNfU0NSRUVOX1FSX1ZFUlNJT05cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEyNC1cdGludCBcJiMzNDtNYXhpbXVtIHZlcnNpb24gKHNpemUpIG9mIHRoZSBRUiBjb2RlLlwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEzMi1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjEzMzpjb25maWcgRFJNX1JBU1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTM0LVx0Ym9vbCBcJiMzNDtEUk0gUkFTIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNDItXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNDM6Y29uZmlnIERSTV9ERUJVR19EUF9NU1RfVE9QT0xPR1lfUkVGU1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTQ0LSAgICAgICAgYm9vbCBcJiMzNDtFbmFibGUgcmVmY291bnQgYmFja3RyYWNlIGhpc3RvcnkgaW4gdGhlIERQIE1TVCBoZWxwZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTU3LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTU4OmNvbmZpZyBEUk1fREVCVUdfTU9ERVNFVF9MT0NLXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNTktXHRib29sIFwmIzM0O0VuYWJsZSBiYWNrdHJhY2UgaGlzdG9yeSBmb3IgbG9jayBjb250ZW50aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTcyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTczOmNvbmZpZyBEUk1fQ0xJRU5UXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzQtXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MTgyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xODMtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxODQ6Y29uZmlnIERSTV9MT0FEX0VESURfRklSTVdBUkVcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7QWxsb3cgdG8gc3BlY2lmeSBhbiBFRElEIGRhdGEgc2V0IGluc3RlYWQgb2YgcHJvYmluZyBmb3IgaXRcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0xOTY9c291cmNlIFwmIzM0O2RyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE5ODpjb25maWcgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTk5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMDYtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMDc6Y29uZmlnIERSTV9FWEVDXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMDgtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIxMi1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIxMzpjb25maWcgRFJNX0dQVVZNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTIyMT1jb25maWcgUlVTVF9EUk1fR1BVVk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjctXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMjg6Y29uZmlnIERSTV9HUFVTVk1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIyOS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjM2LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjM3OmNvbmZpZyBEUk1fQlVERFlcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzOC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQzLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjQ0OmNvbmZpZyBEUk1fVlJBTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI0NS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQ5LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjUwOmNvbmZpZyBEUk1fVFRNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjUxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNTktXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNjA6Y29uZmlnIERSTV9HRU1fRE1BX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjYxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNjgtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNjk6Y29uZmlnIERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNzAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTI3OD1jb25maWcgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4NC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI4NTpjb25maWcgRFJNX1NVQkFMTE9DX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjg2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODgtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyODk6Y29uZmlnIERSTV9TQ0hFRFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjkwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTMtIyBTZXBhcmF0ZSBvcHRpb24gYXMgbm90IGFsbCBEUk0gZHJpdmVycyB1c2UgaXRcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI5NDpjb25maWcgRFJNX1BBTkVMX0JBQ0tMSUdIVF9RVUlSS1NcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5NS1cdHRyaXN0YXRlXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTYtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyOTc6Y29uZmlnIERSTV9QUklWQUNZX1NDUkVFTlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjk4LVx0Ym9vbFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTM2OD1lbmRpZlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3MC0jIFNlcGFyYXRlIG9wdGlvbiBiZWNhdXNlIGRybV9wYW5lbF9vcmllbnRhdGlvbl9xdWlya3MuYyBpcyBzaGFyZWQgd2l0aCBmYmRldlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MzcxOmNvbmZpZyBEUk1fUEFORUxfT1JJRU5UQVRJT05fUVVJUktTXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNzItXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBWYmxhbmsgU3luY2hyb25pemF0aW9uIENoYW5nZXMqKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBhbmQgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLCBpbnRlcmVzdGluZy4gVGhhdCBzdWdnZXN0cyB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgbW9kaWZpY2F0aW9uLCBwZXJoYXBzIG9wdGltaXphdGlvbiwgb3IgYnVnIGZpeCByZWxhdGVkIHRvIFZCTEFOSyBzeW5jaHJvbml6YXRpb24uIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBrbm9jay1vbiBlZmZlY3RzLiBBbnkgY2hhbmdlIGluIHRob3NlIHdhaXQgZnVuY3Rpb25zIGNhbiBjYXNjYWRlIHRocm91Z2ggYSBsb3Qgb2YgY29kZS4KCk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIHBhdGNoJiMzOTtzIGltcGFjdC4gSXMgaXQgdXNlZCBpbiBjcml0aWNhbCBwYXRocyBmb3IgcmVuZGVyaW5nIG9yIG1vZGVzZXR0aW5nPyBJcyBpdCB1c2VkIGluIGluZnJlcXVlbnQgc2NlbmFyaW9zPyBUaGF0IHdpbGwgZHJhbWF0aWNhbGx5IGFmZmVjdCBob3cgc2VyaW91c2x5IEkgbmVlZCB0byB0YWtlIHRoZXNlIGNoYW5nZXMuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ2l0IGdyZXBgIG9yIHNpbWlsYXIgdG8gZmluZCBhbGwgb2NjdXJyZW5jZXMgYW5kIHRoZW4gZGlnIGludG8gdGhlIHJlbGV2YW50IGNvZGUgc2VnbWVudHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM9MTI5NT1FWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF9kcG1zKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5Ny0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMjk4OiAqIGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsoKSAtIFdhaXQgZm9yIHRoZSBuZXh0IFZCTEFOSyB0byBvY2N1clxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEyOTktICogQGNsaWVudDogRFJNIGNsaWVudFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzA4LSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jOjEzMDk6aW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGludCBjcnRjX2luZGV4KVxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMTAte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzM4LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzM5OkVYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTM0MC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTMxNT1zdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0zMjYtXHRpZiAoY3J0Y19pbmRleCBcdTAwM2U9IDApXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjMyNzpcdFx0ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhcdTAwMjZoZWxwZXItXHUwMDNlY2xpZW50LCBjcnRjX2luZGV4KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMzI4LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmhlbHBlci1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTk4ND1pbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTEwMDktXHRcdCAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYzoxMDEwOlx0XHRyZXQgPSBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKFx1MDAyNmZiX2hlbHBlci1cdTAwM2VjbGllbnQsIDApO1xuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0xMDExLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjE4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVmJsYW5rIFN5bmNocm9uaXphdGlvbiBpbiB0aGUgRFJNIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdmJsYW5rIHN5bmNocm9uaXphdGlvbiBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChEUk0pIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBpcyBhIGtleSBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGVtcGxveWVkIHdpdGhpbiBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgYW5kIGBkcm1fZmJfaGVscGVyX2lvY3RsYC4gVGhhdCBsYXN0IG9uZSBpcyBpbnRlcmVzdGluZzsgaXQgbWVhbnMgd2UgY2FuIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyB2Ymxhbmsgd2FpdCB0aHJvdWdoIGFuIGlvY3RsIGNhbGwgZGlyZWN0bHkgb24gdGhlIGZyYW1lYnVmZmVyIGRldmljZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKVG8gZ2V0IGEgYnJvYWRlciBwaWN0dXJlIG9mIHZibGFuayBtYW5hZ2VtZW50LCBJJiMzOTtsbCBub3cgc2hpZnQgbXkgZm9jdXMgdG8gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIEl0JiMzOTtzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBhIGNyaXRpY2FsIHN5bmNocm9uaXphdGlvbiBwb2ludC4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdHJhY2UgaXRzIHVzYWdlIHRocm91Z2hvdXQgdGhlIERSTSBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgaG93IHZibGFuayBzeW5jaHJvbml6YXRpb24gaXMgaW1wbGVtZW50ZWQgYW5kIHdoZXJlIGl0cyBpbXBhY3RzIGFyZSBmZWx0LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB2YXJpb3VzIERSTSBjb21wb25lbnRzIGFuZCB0aGVpciByZWxpYW5jZSBvbiB0aGlzIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYz0yMjg3PXN0YXRpYyB2b2lkIGRybV9kcF9hdXhfY3JjX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYy0yMzAwLVx0d2hpbGUgKGNydGMtXHUwMDNlY3JjLm9wZW5lZCkge1xuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jOjIzMDE6XHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYy0yMzAyLVx0XHRpZiAoIWNydGMtXHUwMDNlY3JjLm9wZW5lZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM9MTMwOT1pbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzAtXHRpZiAoIXJldCkge1xuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jOjEzMzE6XHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzMyLVx0XHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaD0xMTc9dTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjExODppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMTE5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM9MTI5OD1FWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwMC0vKlxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYzoxMzAxOiAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwMi0gKiBAY3J0YzogRFJNIGNydGNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMDgtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzMDk6aW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMTAte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMyNi0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMyNzogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMjgtICogQGNydGM6IERSTSBjcnRjXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzM1LSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYzoxMzM2OmludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzM3LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzNDYtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzNDc6XHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzNDgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzU0LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTM1NTpFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzNTYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmM9Njc9dm9pZCBpbnRlbF9jcnRjX3dhaXRfZm9yX25leHRfdmJsYW5rKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmMtNjgte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmM6Njk6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXHUwMDI2Y3J0Yy1cdTAwM2ViYXNlKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jLTcwLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYz0yMTM9c3RhdGljIGludCBpbmdlbmljX2RybV91cGRhdGVfcGl4Y2xrKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2luZ2VuaWMvaW5nZW5pYy1kcm0tZHJ2LmMtMjIyLVx0XHRwcml2LVx1MDAzZXVwZGF0ZV9jbGtfcmF0ZSA9IHRydWU7XG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYzoyMjM6XHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhcdTAwMjZwcml2LVx1MDAzZWNydGMpO1xuZHJpdmVycy9ncHUvZHJtL2luZ2VuaWMvaW5nZW5pYy1kcm0tZHJ2LmMtMjI0LVx0XHRyZXR1cm4gTk9USUZZX09LO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jPTgwNT1zdGF0aWMgdm9pZCBtdGtfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmMtODM2LVx0LyogV2FpdCBmb3IgcGxhbmVzIHRvIGJlIGRpc2FibGVkICovXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYzo4Mzc6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jPTM2PXN0YXRpYyB2b2lkIHN0aV9jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmMtNDQtXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmM6NDU6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmMtNDYtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jPTE3NzE9c3RhdGljIGludCB0ZWdyYV9kY19zaG93X2NyYyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMtMTc4OC1cbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jOjE3ODk6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXHUwMDI2ZGMtXHUwMDNlYmFzZSk7XG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYzoxNzkwOlx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFx1MDAyNmRjLVx1MDAzZWJhc2UpO1xuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMtMTc5MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjA0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERSTSB2YmxhbmsgUmVmZXJlbmNlIEJ1ZyBhbmQgU29sdXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBidWcgaW4gdGhlIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGdvb2QsIGJlY2F1c2UgdGhlc2UgbG93LWxldmVsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgY2FuIGJlIGEgbmlnaHRtYXJlIHRvIGRlYnVnIGluIHRoZSBmaWVsZC4gSXQgbG9va3MgbGlrZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2Agd2FzIHVubmVjZXNzYXJpbHkgY2FsbGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCwgd2hpY2ggdGhlbiBjYWxscyBgZHJtX3ZibGFua19nZXRgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbHJlYWR5IHRha2VzIGNhcmUgb2YgZ2V0dGluZyBhbmQgcHV0dGluZyB0aGUgdmJsYW5rIHJlZmVyZW5jZSB1c2luZyBgZHJtX2NydGNfdmJsYW5rX2dldGAuIFRoaXMgY3JlYXRlcyBhbiBpbWJhbGFuY2UsIGFuZCB0aGF0JiMzOTtzIGEgcmVjaXBlIGZvciBhbGwgc29ydHMgb2YgdGltaW5nIGlzc3VlcywgZGVhZGxvY2tzLCBvciByZXNvdXJjZSBsZWFrcy4KClRoZSBzb2x1dGlvbiBsb29rcyBjbGVhbi4gVGhleSYjMzk7dmUgZmFjdG9yZWQgb3V0IHRoZSB2YmxhbmsgcmVmZXJlbmNlIG1hbmFnZW1lbnQgaW50byBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiB1c2VkIGJ5IGJvdGggYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgKHdoaWNoIHJldGFpbnMgdGhlIGdldC9wdXQpIGFuZCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgKHdoaWNoIGFscmVhZHkgaGFuZGxlcyBpdCkuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgd2F5IHRvIHNpbXBsaWZ5IHRoZSBjb2RlIGFuZCBwcmV2ZW50IHRoZSByZWZlcmVuY2UgZG91YmxlLWRpcHBpbmcuCgpUaGUgcXVlc3Rpb24gbm93IGJlY29tZXMsIGlzIHRoaXMgY29kZSBwYXRoIGFjdHVhbGx5IHJlYWNoYWJsZT8gSSBrbm93IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBpcyB1c2VkIGJ5IERSTSBjbGllbnRzLCBwYXJ0aWN1bGFybHkgdGhvc2UgaW1wbGVtZW50aW5nIGZyYW1lIGJ1ZmZlciBkZXZpY2UgKGZiZGV2KSBlbXVsYXRpb24uIEkgcmVjYWxsIGBkcm1fZmJfaGVscGVyX2lvY3RsYCB1c2luZyBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgZm9yIGBGQklPX1dBSVRGT1JWU1lOQ2AuIEJpbmdvLCB0aGF0IG1ha2VzIGl0IHJlYWNoYWJsZSBhbmQgZGVmaW5pdGVseSB0ZXN0YWJsZSEgSSBzaG91bGQgZm9jdXMgb24gdGVzdGluZyB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCB0byB2ZXJpZnkgdGhhdCB0aGUgZml4IGFkZHJlc3NlcyB0aGUgaXNzdWUgY29ycmVjdGx5LiBBbHNvLCBgZHJtX2ZiX2hlbHBlcl9pb2N0bGAgYW5kIGBkcm1fZmJfaGVscGVyX2ZiX2RpcnR5YCBhcmUgZ29vZCBjYW5kaWRhdGVzIHRvIHRlc3QgdG9vLCBnaXZlbiB0aGVpciByZWxhdGlvbnNoaXAgdG8gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLgoKQWxyaWdodCwgSSYjMzk7bGwgcHVsbCB1cCBgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuY2AgYW5kIGNoZWNrIGlmIHRoYXQgY29kZSBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IG9yIHJlcXVpcmVzIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCYjMzk7bGwgaW5mbHVlbmNlIGhvdyBkaWZmaWN1bHQgaXQgaXMgdG8gc2V0IHVwIGEgdGVzdCBlbnZpcm9ubWVudCB0byBleGVyY2lzZSB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJtX2ZiX2hlbHBlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xNTk9ZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX1BBTkVMX0JSSURHRSkgJiM0Mzs9IGJyaWRnZS9wYW5lbC5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTYwOmRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICYjNDM7PSBkcm1fZmJfaGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xNjEtb2JqLSQoQ09ORklHX0RSTV9LTVNfSEVMUEVSKSAmIzQzOz0gZHJtX2ttc19oZWxwZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjE5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3aG8gd29ya3Mgd2l0aCB0aGlzIGNvZGUgcmVndWxhcmx5OgoKKipNeSBEZWR1Y3Rpb25zIG9uIERSTSBGcmFtZWJ1ZmZlciBFbXVsYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIG1lIHRoYXQgSSBuZWVkIGBDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTmAgZm9yIGBkcm1fZmJfaGVscGVyLm9gLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGUgZnJhbWVidWZmZXIgZW11bGF0aW9uIG1vZHVsZSBpcyB0aGUgYnJpZGdlIGJldHdlZW4gdGhlIG9sZCBmcmFtZWJ1ZmZlciBjb2RlIGFuZCB0aGUgbmV3ZXIgRFJNIHdvcmxkLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBwcm92aWRpbmcgYSBsZWdhY3kgaW50ZXJmYWNlLiBOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfRFJNX0NMSUVOVGAgaXMgZW5hYmxlZC4gSXQmIzM5O3MgYWxtb3N0IGFsd2F5cyBhIGdpdmVuLCBidXQgc29tZXRpbWVzIGEgZGVwZW5kZW5jeSBnZXRzIG1pc3NlZCBhbmQgaXQgcGF5cyB0byBjb25maXJtLiBJdCBpcyB0aGUgY29yZSBvZiBjbGllbnQgZHJpdmVycy4gSSBzaG91bGQgYWxzbyBzZWUgaWYgYENPTkZJR19EUk1fS01TX0hFTFBFUmAgaXMgYWxzbyBlbmFibGVkLiBJdCBwcm92aWRlcyB2YXJpb3VzIGtlcm5lbCBtb2RlIHNldHRpbmcgaGVscGVycy4gSXQgaXMgcHJvYmFibHkgaW1wb3J0YW50IHRvby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTkwMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UmIzM5O3ZlIGRlc2NyaWJlZDoKCioqRFJNIEZCREVWIEVtdWxhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzdGF0dXMgb2YgZnJhbWVidWZmZXIgZGV2aWNlIGVtdWxhdGlvbiB3aXRoaW4gdGhlIERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlci4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCwgYXMgYWx3YXlzLCBpcyB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgRFJNIGNsaWVudHMuIEkmIzM5O20gZ29pbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiBgRFJNX0ZCREVWX0VNVUxBVElPTmAuIFRpbWUgdG8gc2VlIGlmIGl0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBidWlsdCBhcyBhIG1vZHVsZS4gRGVwZW5kaW5nIG9uIHRoYXQsIEkgY2FuIGluZmVyIHRoZSBjdXJyZW50IHN0YXRlIGFuZCwgZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgdmVyc2lvbiwgbWFrZSBhcHByb3ByaWF0ZSBjb25jbHVzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc9Mjg9bWVudSBcJiMzNDtTdXBwb3J0ZWQgRFJNIGNsaWVudHNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMwLVxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZzozMTpjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTlxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7RW5hYmxlIGxlZ2FjeSBmYmRldiBzdXBwb3J0IGZvciB5b3VyIG1vZGVzZXR0aW5nIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDIzNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uc2lkZXJhdGlvbnMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBEUk0vRnJhbWVidWZmZXIgRW11bGF0aW9uKioKCkFscmlnaHQsIHRoaW5raW5nIGFib3V0IHRoaXMgRFJNIHNldHVwLCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBlbmFibGluZyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaXMgYSBzb2xpZCBtb3ZlLiBJdCYjMzk7cyBhIGtleSBwaWVjZSBpbiBhbGxvd2luZyB0aGUgRFJNIHN1YnN5c3RlbSB0byBwbGF5IG5pY2VseSB3aXRoIHRoZSBsZWdhY3kgZnJhbWVidWZmZXIgZGV2aWNlIGRyaXZlcnMsIHdoaWNoIGlzIG9mdGVuIGNydWNpYWwgZm9yIHdpZGVyIGNvbXBhdGliaWxpdHkgYW5kIGdyYWNlZnVsIGZhbGxiYWNrLiBUaGVuLCBuYXR1cmFsbHksIEkmIzM5O2QgYnJpbmcgaW4gYERSTV9LTVNfSEVMUEVSYCBhbmQgdGhlIGBEUk1gIGRyaXZlciBpdHNlbGY7IHRob3NlIGFyZSBmb3VuZGF0aW9uYWwgdG8gYW55IEtNUy9EUk0gaW1wbGVtZW50YXRpb24sIG9mIGNvdXJzZS4gV2l0aG91dCB0aGVtLCB5b3UmIzM5O3JlIG5vdCBnZXR0aW5nIGFueXdoZXJlLgoKVGhlIG5leHQgcXVlc3Rpb24gaW4gbXkgbWluZCBpcyBhbHdheXMgdG8gY2hlY2sgdGhlIGNvbXBpbGF0aW9uIG9mIGNlcnRhaW4gc3BlY2lmaWMgZmlsZXMuIE5vdywgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYGRybV9jbGllbnRfbW9kZXNldC5jYCBpcyBjb21waWxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZXJlJiMzOTtzIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbnZvbHZlZC4gVGhhdCBvbmUmIzM5O3MgcGFydGljdWxhcmx5IGltcG9ydGFudCwgYmVjYXVzZSBpdCBvZnRlbiBoYW5kbGVzIHRoZSBoaWdoZXItbGV2ZWwgY2xpZW50IG1vZGUgc2V0dGluZyBmdW5jdGlvbmFsaXR5LCBhbmQgSSB3b3VsZCB3YW50IHRoYXQgaW5jbHVkZWQgaW4gbXkgc3RhbmRhcmQgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkcm1fY2xpZW50X21vZGVzZXQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9NzY9ZHJtLSQoQ09ORklHX0RSTV9DTElFTlQpICYjNDM7PSBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03OC1cdGRybV9jbGllbnRfZXZlbnQubyBcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjc5Olx0ZHJtX2NsaWVudF9tb2Rlc2V0Lm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS04MC1cdGRybV9jbGllbnRfc3lzcnEub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY2MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyAtIERSTSBDbGllbnQqKgoKUmlnaHQsIHNvIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBkZXBlbmRlbmN5IGhlcmUg4oCTIGl0JiMzOTtzIHN1Z2dlc3RpbmcgdGhhdCBgQ09ORklHX0RSTV9DTElFTlRgIGlzIGEgY3JpdGljYWwgcmVxdWlyZW1lbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkcmlsbCBkb3duIGludG8gdGhlIEtjb25maWcgc3RydWN0dXJlIHRvIGNvbmZpcm0gd2hhdCB0aGlzIGFjdHVhbGx5IGVudGFpbHMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgRFJNX0NMSUVOVGAgd2l0aGluIGBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ2AuIFRoaXMgd2lsbCBwcm92aWRlIHRoZSBjcnVjaWFsIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgcGFydGljdWxhciBjb25maWcgc2V0dGluZyBhbmQgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCBpdCwgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiBpdCYjMzk7cyB0aWVkIHRvIGFueSBzcGVjaWZpYyBEUk0gZHJpdmVyIG9yIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fQ0xJRU5UJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MTU4PWNvbmZpZyBEUk1fREVCVUdfTU9ERVNFVF9MT0NLXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTcyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTczOmNvbmZpZyBEUk1fQ0xJRU5UXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzQtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTc0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgSGlkZGVuIEJvb2xlYW4gRmxhZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJiMzOTt2ZSBnb3QgYSBodW5jaC4gVGhpcyBzbWVsbHMgbGlrZSBhIGhpZGRlbiBib29sZWFuLCBsaWtlbHkgY29udHJvbGxlZCBieSBgRFJNX0ZCREVWX0VNVUxBVElPTmAuIE15IGd1dCB0ZWxscyBtZSB0aGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhpcyBzdXNwaWNpb24sIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUk1fRkJERVZfRU1VTEFUSU9OYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZmxhZyBlbmFibGVzIG9yIGRpc2FibGVzLCBhbmQgdGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5zd2VyIEkgYW0gbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnPTI4PW1lbnUgXCYjMzQ7U3VwcG9ydGVkIERSTSBjbGllbnRzXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0zMC1cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MzE6Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMzItXHRib29sIFwmIzM0O0VuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiBhbmQgdGFyZ2V0ZWQgYXQgYSBmZWxsb3cgZXhwZXJ0OgoKKipBbmFseXppbmcgdGhlIERSTV9GQkRFVl9FTVVMQVRJT04gQmxvY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBEUk1fRkJERVZfRU1VTEFUSU9OYCBibG9jay4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIEkgZ3Jhc3AgYWxsIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgdGhlIHN1cmZhY2UgbGV2ZWw7IEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBtZWNoYW5pY3Mgb2YgaG93IHRoaXMgZW11bGF0aW9uIHdvcmtzIGFuZCBob3cgaXQgaW50ZWdyYXRlcyB3aXRoIHRoZSByZXN0IG9mIHRoZSBEUk0vS01TIHN0YWNrLiBXaGF0IGFyZSB0aGUga2V5IGZ1bmN0aW9uYWxpdGllcyBiZWluZyBlbXVsYXRlZD8gV2hpY2ggc3BlY2lmaWMgRkJERVYgYmVoYXZpb3JzIGFyZSBiZWluZyByZXBsaWNhdGVkLCBhbmQgd2h5IGlzIHRoaXMgZW11bGF0aW9uIG5lY2Vzc2FyeSBpbiB0aGlzIHNwZWNpZmljIGNvbnRleHQ/CgpJIHdhbnQgdG8gbG9vayBmb3IgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyB0aGF0IG1pZ2h0IGFyaXNlLiBUaGlzIGVtdWxhdGlvbiBsYXllciBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgYSBwZXJmb3JtYW5jZSBvdmVyaGVhZCB0aGF0IHdlIG11c3QgdW5kZXJzdGFuZCBhbmQgbWl0aWdhdGUuIEkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBzcGVjaWZpYyB1c2UgY2FzZXMgZHJpdmluZyB0aGlzIGltcGxlbWVudGF0aW9uLiBJcyBpdCBwcmltYXJpbHkgZm9yIGxlZ2FjeSBhcHBsaWNhdGlvbnMsIG9yIGFyZSB0aGVyZSBvdGhlciByZWFzb25zIHRoaXMgZW11bGF0aW9uIGlzIGNob3Nlbj8KCkkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjcnVjaWFsIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgaW52b2x2ZWQgaW4gdGhpcyBibG9jay4gSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvZGUgYW5kIGFuYWx5emUgdGhlbSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgaG9va3Mgb3IgaW50ZXJhY3Rpb25zIHdpdGggdGhlIERSTSBjb3JlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3NzaWJsZSByYWNlcywgcmVzb3VyY2UgY29udGVudGlvbiBpc3N1ZXMsIGFuZCBob3cgZXJyb3IgY29uZGl0aW9ucyBhcmUgaGFuZGxlZC4gQWxzbywgaXQgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHRoaW5rIGFib3V0IHRoZSBpbXBhY3Qgb2YgdGhpcyBibG9jayBvbiB0aGUgZ3JhcGhpY3Mgc3RhY2smIzM5O3Mgb3ZlcmFsbCBzdGFiaWxpdHkuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IGRldmlhdGlvbnMgZnJvbSB0aGUgc3RhbmRhcmQgRFJNL0tNUyBiZWhhdmlvci4gV2hhdCBjb3JuZXJzIGFyZSBiZWluZyBjdXQgaGVyZSwgYW5kIHdoYXQgYXJlIHRoZSB0cmFkZS1vZmZzPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGVtdWxhdGlvbiBpcyBhIHdlbGwtZGVmaW5lZCBhYnN0cmFjdGlvbiBvciBhIG1vcmUgY29tcGxleCB3b3JrLWFyb3VuZC4gVGhlIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGRldGFpbGVkIGVub3VnaCB0byBleHBsYWluIGFueSBhcmNoaXRlY3R1cmFsIGRlY2lzaW9ucy4KCkZpbmFsbHksIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB0aG9yb3VnaGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyB0aGlzIGJsb2NrIGhhcyBmb3IgZHJpdmVyIG1haW50YWluYWJpbGl0eS4gV2lsbCB0aGlzIGNvbXBsaWNhdGUgZnV0dXJlIHVwZGF0ZXMgb3IgcHJldmVudCB0aGUgYWRvcHRpb24gb2YgbmV3LCBhZHZhbmNlZCBmZWF0dXJlcz8gSSYjMzk7bGwgbmVlZCB0byBhc3Nlc3MgdGhlIGxldmVsIG9mIGNvZGUgY29tcGxleGl0eSBhbmQgcG90ZW50aWFsIGZvciBjcmVhdGluZyBhIG1haW50ZW5hbmNlIGJ1cmRlbiBkb3duIHRoZSByb2FkLiBUaGlzIG92ZXJhbGwgYXNzZXNzbWVudCB3aWxsIG5lZWQgdG8gaW5mb3JtIG15IHZpZXcgb24gaXRzIGRlc2lnbiBhbmQgaG93IGl0IGlzIGludGVncmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzE6XHRjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTlxuICAzMjpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgbGVnYWN5IGZiZGV2IHN1cHBvcnQgZm9yIHlvdXIgbW9kZXNldHRpbmcgZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRkZXBlbmRzIG9uIERSTV9DTElFTlRfU0VMRUNUSU9OXG4gIDM0Olx0XHRzZWxlY3QgRFJNX0NMSUVOVFxuICAzNTpcdFx0c2VsZWN0IERSTV9DTElFTlRfU0VUVVBcbiAgMzY6XHRcdHNlbGVjdCBGUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZIGlmIEZSQU1FQlVGRkVSX0NPTlNPTEVcbiAgMzc6XHRcdGRlZmF1bHQgRkJcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEgbmVlZCBmb3IgdGhlIGxlZ2FjeSBmYmRldlxuICA0MDpcdFx0ICBzdXBwb3J0LiBOb3RlIHRoYXQgdGhpcyBzdXBwb3J0IGFsc28gcHJvdmlkZXMgdGhlIGxpbnV4IGNvbnNvbGVcbiAgNDE6XHRcdCAgc3VwcG9ydCBvbiB0b3Agb2YgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXIuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIElmIGluIGRvdWJ0LCBzYXkgXCYjMzQ7WVwmIzM0Oy5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgRFJNX0ZCREVWX09WRVJBTExPQ1xuICA0NjpcdFx0aW50IFwmIzM0O092ZXJhbGxvY2F0aW9uIG9mIHRoZSBmYmRldiBidWZmZXJcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gRFJNX0ZCREVWX0VNVUxBVElPTlxuICA0ODpcdFx0ZGVmYXVsdCAxMDBcbiAgNDk6XHRcdGhlbHBcbiAgNTA6XHRcdCAgRGVmaW5lcyB0aGUgZmJkZXYgYnVmZmVyIG92ZXJhbGxvY2F0aW9uIGluIHBlcmNlbnQuIERlZmF1bHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwNjgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBkaXN0aWxsZWQgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaW1wbGllcyBhIGRlcGVuZGVuY3kgb24gYERSTV9DTElFTlRgLiBHb3QgaXQuIFdlIGRlZmluaXRlbHkgbmVlZCB0byBpbmNsdWRlIGJvdGggYERSTV9GQkRFVl9FTVVMQVRJT05gIGFuZCB0aGUgY29yZSBgRFJNYCBkcml2ZXIgaXRzZWxmLiBUaGF0JiMzOTtzIGZ1bmRhbWVudGFsLiBOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdmlydHVhbCBHUFUgZHJpdmVycyBmb3IgdGVzdGluZyB0aGlzLiBTaG91bGQgd2UgdXNlIGBEUk1fVktNU2Agb3IgbWF5YmUgYERSTV9WSVJUSU9fR1BVYD8gRWl0aGVyIHdvdWxkIGJlIGEgZ29vZCBjaG9pY2UgZm9yIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIGlmIGBEUk1fVktNU2AgaXMgZXZlbiBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlIGhhdmUgYSB2aWFibGUgb3B0aW9uIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fVktNUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yLVxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZzozOmNvbmZpZyBEUk1fVktNU1xuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBLTVMgKEVYUEVSSU1FTlRBTClcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTE4LVxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZzoxOTpjb25maWcgRFJNX1ZLTVNfS1VOSVRfVEVTVFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBWS01TXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgVmlydHVhbCBLTVMgRHJpdmVycyoqCgpBbHJpZ2h0LCBzbyBgRFJNX1ZLTVNgIC0gdGhhdCYjMzk7cyBhIHZpcnR1YWwgS01TIGRyaXZlciwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGNvbXBhcmUgdGhpcyB3aXRoIGBEUk1fVklSVElPX0dQVWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSB0d28gcmVsYXRlLiBJdCYjMzk7cyBhIGNvbW1vbiBhcmVhIG9mIGRyaXZlciBkZXZlbG9wbWVudCBhbmQgSSBuZWVkIHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3QgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX1ZJUlRJT19HUFUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc6Mjpjb25maWcgRFJNX1ZJUlRJT19HUFVcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VmlydGlvIEdQVSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMTUtXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc6MTY6Y29uZmlnIERSTV9WSVJUSU9fR1BVX0tNU1xuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnLTE3LVx0Ym9vbCBcJiMzNDtWaXJ0aW8gR1BVIGRyaXZlciBtb2Rlc2V0dGluZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODM1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIERSTSBWYmxhbmsgU3luY2hyb25pemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZXZhbHVhdGluZyBzb21lIGtlcm5lbCBEUk0gY29kZSwgYW5kIEkgc2VlIHRoYXQgZW5hYmxpbmcgYERSTV9WS01TYCBhbmQgYERSTV9WSVJUSU9fR1BVYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IHByaW1hcnkgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHZibGFuayBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcywgc28gSSYjMzk7bSBnb2luZyB0byBzdW1tYXJpemUgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIGVhY2ggb3RoZXIuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZXNlIGFzIHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBpbnZlc3RpZ2F0ZTogYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCwgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBJIHNlZSB0aGF0IGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzLCBpbnRlcmVzdGluZ2x5LCBub3QgZGlyZWN0bHkgZXhwb3J0ZWQuIEhvd2V2ZXIsIGl0JiMzOTtzIGNhbGxlZCBieSB0aGUgdHdvIGV4cG9ydGVkIGZ1bmN0aW9ucywgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgYW5kIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBBaCwgaXQgaXM7IGBFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmspO2AuIEdvb2QuIFNpbWlsYXJseSwgSSBzZWUgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgaXMgYWxzbyBleHBvcnRlZDogYEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtgLiBJJiMzOTtsbCBrZWVwIGFuIGV5ZSBvbiBob3cgdGhlc2UgYXJlIHVzZWQgaW4gcmVsYXRpb24gdG8gb3RoZXIgZXhwb3J0ZWQgZnVuY3Rpb25zLiBBcyBmb3IgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAsIGFsdGhvdWdoIGl0JiMzOTtzIG5vdCBleHBvcnRlZCwgaXQgaXMgaW4gYGRybV92YmxhbmsuY2AuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGl0IGlzIG5vdCBzdGF0aWMuCgpJIGFsc28gc2VlIHRoYXQgYGRybV9mYl9oZWxwZXJfaW9jdGxgIGFuZCBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgc2VlbSB0byBiZSByZWxldmFudCBiZWNhdXNlIHRoZXkgY2FsbCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFNvIEkmIzM5O2xsIGNoZWNrIHRob3NlIGFzIHdlbGwuIGBkcm1fZmJfaGVscGVyX2lvY3RsYCBpcyBleHBvcnRlZCBhbmQgYGRybV9mYl9oZWxwZXJfZmJfZGlydHlgIGlzIHN0YXRpYy4KCkxldCBtZSBjb25zb2xpZGF0ZSB0aGUgZm9jdXMgc3ltYm9sczoKCiogICBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AKKiAgIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgCiogICBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYAoqICAgYGRybV9mYl9oZWxwZXJfaW9jdGxgCgpBbmQgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIGFyZToKCiogICBgRFJNYAoqICAgYERSTV9GQkRFVl9FTVVMQVRJT05gCiogICBgRFJNX1ZLTVNgCiogICBgRFJNX1ZJUlRJT19HUFVgCgpKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrLi4uIExldCBtZSBjb25maXJtIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzIG5vdCBzdGF0aWMuIE5vcGUsIGl0IGlzIGRlY2xhcmVkIGluIGBkcm1faW50ZXJuYWwuaGAuIEV4Y2VsbGVudC4gVGhhdCBjb25maXJtcyBpdCBhbmQgZ2l2ZXMgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM9MTI5OD1FWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwOC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMxMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTMxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEeW5hbWljIE5hdHVyZSoqCgpSaWdodCwgc28gaXQmIzM5O3MgY2xlYXI6IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nICpkeW5hbWljKiBoZXJlLCBub3QgYSBmaXhlZCBzdGF0ZS4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gd2UgbmVlZCB0byBrZWVwIGluIG1pbmQuIFdlIGNhbiYjMzk7dCB0cmVhdCB0aGlzIGxpa2Ugc29tZSBraW5kIG9mIGltbXV0YWJsZSBjb25zdGFudC4gVGhpcyBkeW5hbWlzbSBpbXBhY3RzIG91ciBhcHByb2FjaCB0byB0aGUgcHJvYmxlbSBhbmQgYW55IHBvdGVudGlhbCBzb2x1dGlvbnMuCgpOb3csIHdpdGggdGhpcyBpbiBtaW5kLCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjay4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyBgZHJtX2ZiX2hlbHBlcl9pb2N0bGAgYW5kIHNlZSBob3cgaXQgcmVmbGVjdHMgdGhpcyBkeW5hbWljIGNoYXJhY3RlcmlzdGljLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgY2hhbmdlcyBtaWdodCBwcm9wYWdhdGUgdGhyb3VnaCB0aGF0IGlvY3RsLiBJJiMzOTtsbCBmb2N1cyBvbiBob3cgdGhlIGNhbGxzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHJlbGF0ZSB0byBzdGF0ZSBjaGFuZ2VzLCBhbmQgd2hhdCBoYXBwZW5zIHdoZW4gdGhhdCBzdGF0ZSBpc24mIzM5O3QgYXMgZGVmaW5lZCBpbml0aWFsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9mYl9oZWxwZXJfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM9OTczPUVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9zZXRjbWFwKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTk3NS0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6OTc2OiAqIGRybV9mYl9oZWxwZXJfaW9jdGwgLSBsZWdhY3kgaW9jdGwgaW1wbGVtZW50YXRpb25cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtOTc3LSAqIEBpbmZvOiBmYmRldiByZWdpc3RlcmVkIGJ5IHRoZSBoZWxwZXJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTk4My0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6OTg0OmludCBkcm1fZmJfaGVscGVyX2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy05ODUtXHRcdFx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0xMDE3LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MTAxODpFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaW9jdGwpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0xMDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY2MAoJCQkJCQkJb3V0cHV0OiAyNTcKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWYmxhbmsgUmVmZXJlbmNlIENvdW50aW5nIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBwcm9ibGVtLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBpc3N1ZSBpbiBEUk0sIEkga25vdyB0aGUgdGVycml0b3J5IHdlbGwuIFRoZSBmaXggc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgdGhpcyBuZXcgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBFc3NlbnRpYWxseSwgaXQgcHJldmVudHMgdGhlIHN5c3RlbSBmcm9tIGdyYWJiaW5nIGFuICpleHRyYSogdmJsYW5rIHJlZmVyZW5jZSB3aGVuIGl0IGFscmVhZHkgaGFzIG9uZS4gU21hcnQuCgpJIGNhbiBzZWUgd2hlcmUgdGhpcyBjb21lcyBpbnRvIHBsYXk7IGl0JiMzOTtzIHVzZWQgd2l0aGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoZXNlIGFyZSBpbXBvcnRhbnQgZnVuY3Rpb25zLCBhcyB0aGV5IGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIERSTSBpb2N0bHMsIG9yIHRoZSBGQkRFViBlbXVsYXRpb24gbGF5ZXJzIChsaWtlIGBGQklPX1dBSVRGT1JWU1lOQ2AgdXNpbmcgYGRybV9mYl9oZWxwZXJfaW9jdGxgKSwgd2hpY2ggbWVhbnMgaXQgY2FuIGhhdmUgc29tZSB0YW5naWJsZSB1c2VyIGltcGFjdC4KClRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgYSBtaW5vciB0d2VhazsgdGhpcyBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQuIEkgdGhpbmsgSSYjMzk7bGwgY2FsbCBpdCBgc2V0LXJlc3VsdHNgLCBhcyB0aGlzIHNlZW1zIGxpa2UgYSByZWFsIGltcGFjdCB0byB0aGUgY29kZS4KSSB3b3VsZCB3YW50IHRvIHRlc3QgdGhpcyBjaGFuZ2UgdGhvcm91Z2hseSwgYW5kLCB0aGUgZ29vZCBuZXdzIGlzLCBJIGNhbiB0ZXN0IGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMgVktNUywgdmlydGlvLWdwdSwgdGhvc2UgdmlydHVhbCBEUk0gZHJpdmVycyBhcmUgbXkgZnJpZW5kcyBoZXJlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gcHV0IGl0IHRocm91Z2ggaXRzIHBhY2VzIGluIHRob3NlIHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNJiMzNDssCiAgICAmIzM0O0RSTV9GQkRFVl9FTVVMQVRJT04mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OywKICAgICYjMzQ7RFJNX1ZJUlRJT19HUFUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rJiMzNDssCiAgICAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwmIzM0OywKICAgICYjMzQ7ZHJtX2ZiX2hlbHBlcl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgYnkgaW50cm9kdWNpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgd2hpY2ggYXZvaWRzIHRha2luZyBhbiBleHRyYSB2YmxhbmsgcmVmZXJlbmNlIHdoZW4gb25lIGlzIGFscmVhZHkgaGVsZC4gVGhpcyBpcyB1c2VkIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBEUk0gaW9jdGxzIGFuZCBmYmRldiBlbXVsYXRpb24gKGUuZy4sIGBGQklPX1dBSVRGT1JWU1lOQ2AgdmlhIGBkcm1fZmJfaGVscGVyX2lvY3RsYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TIG9yIHZpcnRpby1ncHUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDssCiAgICAmIzM0O0RSTV9WSVJUSU9fR1BVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsJiMzNDssCiAgICAmIzM0O2RybV9mYl9oZWxwZXJfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGJ5IGludHJvZHVjaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHdoaWNoIGF2b2lkcyB0YWtpbmcgYW4gZXh0cmEgdmJsYW5rIHJlZmVyZW5jZSB3aGVuIG9uZSBpcyBhbHJlYWR5IGhlbGQuIFRoaXMgaXMgdXNlZCBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgRFJNIGlvY3RscyBhbmQgZmJkZXYgZW11bGF0aW9uIChlLmcuLCBgRkJJT19XQUlURk9SVlNZTkNgIHZpYSBgZHJtX2ZiX2hlbHBlcl9pb2N0bGApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUyBvciB2aXJ0aW8tZ3B1LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNzA4Njk5MzQ5YTIxODM5ODhkODg2N2VjNmY2MTM5MTkxZWNiZTYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAxNDoxNjoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwppbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCkBAIC0xMzI4LDcgJiM0MzsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGkKIAkgKi8KIAlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpOwogCWlmICghcmV0KSB7Ci0JCWRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTsKJiM0MzsJCWRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAkJZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCBmODkzYjFlM2E1OTZlLi42ZmQzMzY3MmQyMDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCkBAIC0xMTUsNiAmIzQzOzExNSw3IEBAIHZvaWQgZHJtX3ZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7CiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiAKIC8qIGRybV92Ymxhbmtfd29yay5jICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKaW5kZXggZjkwZmIyZDEzZTQyMy4uZTJiZjVlZDY1NzAwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCkBAIC0xMjk3LDYgJiM0MzsxMjk3LDMyIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpOwogCiYjNDM7LyoKJiM0MzsgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiYjNDM7ICogQGNydGM6IERSTSBjcnRjCiYjNDM7ICoKJiM0MzsgKiBUaGlzIHdhaXRzIGZvciBvbmUgdmJsYW5rIHRvIHBhc3Mgb24gQGNydGMsIHVzaW5nIHRoZSBpcnEgZHJpdmVyIGludGVyZmFjZXMuCiYjNDM7ICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlcy4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiYjNDM7CWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CiYjNDM7CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1NjQgbGFzdDsKJiM0MzsKJiM0MzsJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKJiM0MzsKJiM0MzsJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0mZ3Q7cXVldWUsCiYjNDM7CQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKJiM0MzsJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiAgKiBAY3J0YzogRFJNIGNydGMKQEAgLTEzMTEsMjYgJiM0MzsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiAJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwotCXU2NCBsYXN0OwogCiAJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAoZHJtX1dBUk4oZGV2LCByZXQsICYjMzQ7dmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXG4mIzM0OywKIAkJICAgICBwaXBlLCByZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKLQotCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAotCQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKLQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSk7CiYjNDM7CXJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAotCWRybV9XQVJOKGRldiwgcmV0ID09IDAsICYjMzQ7dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiYjMzQ7LCBwaXBlKTsKJiM0MzsJZHJtX1dBUk4oZGV2LCByZXQgPT0gLUVUSU1FRE9VVCwgJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxuJiMzNDssIHBpcGUpOwogCiAJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAotCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE0OQoJCQkJCQkJb3V0cHV0OiAxNzUKCQkJCQkJCXRob3VnaHRzOiA1MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEUk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBLTVNBTiBDb25jZXJucyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIE15IGluaXRpYWwgcmVhZCBpbmRpY2F0ZXMgaXQmIzM5O3MgZXh0cmFjdGluZyBhIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAsIGZyb20gdGhlIGV4aXN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGUgY29yZSBpZGVhIGlzIHRvIGVsaW1pbmF0ZSBhIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGFjcXVpc2l0aW9uLiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYWxyZWFkeSBjYWxscyBgZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKWAgc28gd2h5IGNhbGwgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIHNhbWUgYGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSlgPyBJdCB3YXMgbGlrZWx5IGNhdXNpbmcgYW4gaXNzdWUgb3IgYmVpbmcgb3B0aW1pemVkLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLCBlc3BlY2lhbGx5IHdpdGgga2VybmVsIGNvZGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyByZWZhY3RvcmluZyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMuIEhvd2V2ZXIsIGxvb2tpbmcgYXQgdGhlIGNvZGUgYW5kIHRoZSB2YXJpYWJsZXMgaW52b2x2ZWQg4oCTIHBvaW50ZXJzLCBpbnRlZ2VycywgYW5kIGEgd2FpdCBxdWV1ZSDigJMgaXQgc2VlbXMgdW5saWtlbHkuIFRoZXJlJiMzOTtzIG5vIG9idmlvdXMgcGF0aCB3aGVyZSB1bmluaXRpYWxpemVkIGRhdGEgaXMgYmVpbmcgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBObyBjb21wbGV4IHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCBvciB1c2VkIGluIGNvbmRpdGlvbmFsIGxvZ2ljLCBhbmQgdGhlIG5ldyBmdW5jdGlvbiBpdHNlbGYsIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLCBqdXN0IHVzZXMgYSBgd2FpdF9ldmVudF90aW1lb3V0YCBhbmQgZ2V0cyB0aGUgdmJsYW5rIGNvdW50LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhIHN0cmFpZ2h0Zm9yd2FyZCB3YWl0LgoKTGV0IG1lIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlLgoKYGBgYwppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKewoJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtJmd0O2RldjsKCWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CglzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKCWludCByZXQ7Cgl1NjQgbGFzdDsKCglsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpOwoKCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAoJCQkJIGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLAoJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwoKCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKfQpgYGAKCk9rYXksIEkmIzM5O20gc2F0aXNmaWVkLiBJdCYjMzk7cyBqdXN0IGEgYHdhaXRfZXZlbnRfdGltZW91dGAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGluIHVzZS4gVGhlcmUmIzM5O3Mgbm8gcmlzay4gSSYjMzk7bSBnb2luZyB0byBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAgZm9yIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGJ5IGV4dHJhY3RpbmcgaXRzIGNvcmUgbG9naWMgaW50byBhIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCB0YWtpbmcgYSByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3csIHdhaXQgcXVldWVzLCBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIG1lbW9yeSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKGUuZy4sIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjEzLjk5ODIzNjc1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDE1MTMxNDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX0ZCREVWX0VNVUxBVElPTlwiLFxuICAgIFwiRFJNX1ZLTVNcIixcbiAgICBcIkRSTV9WSVJUSU9fR1BVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxcIixcbiAgICBcImRybV9mYl9oZWxwZXJfaW9jdGxcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBieSBpbnRyb2R1Y2luZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB3aGljaCBhdm9pZHMgdGFraW5nIGFuIGV4dHJhIHZibGFuayByZWZlcmVuY2Ugd2hlbiBvbmUgaXMgYWxyZWFkeSBoZWxkLiBUaGlzIGlzIHVzZWQgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdmlhIERSTSBpb2N0bHMgYW5kIGZiZGV2IGVtdWxhdGlvbiAoZS5nLiwgYEZCSU9fV0FJVEZPUlZTWU5DYCB2aWEgYGRybV9mYl9oZWxwZXJfaW9jdGxgKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBhbmQgY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdmlydHVhbCBEUk0gZHJpdmVycyBsaWtlIFZLTVMgb3IgdmlydGlvLWdwdS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MTMuOTk4MjQyNTQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTE2MzI3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNzA4Njk5MzQ5YTIxODM5ODhkODg2N2VjNmY2MTM5MTkxZWNiZTYxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMTQ6MTY6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXFxuaW5kZXggMDA4MGE4ZTk1NTZhNS4uN2ZmMGYyNGEwZjUwMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcXG5AQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGlcXG4gXFx0ICovXFxuIFxcdHJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7XFxuIFxcdGlmICghcmV0KSB7XFxuLVxcdFxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcXG4rXFx0XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xcbiBcXHRcXHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcXG5pbmRleCBmODkzYjFlM2E1OTZlLi42ZmQzMzY3MmQyMDZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxcbkBAIC0xMTUsNiArMTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbiBpbnQgZHJtX3ZibGFua19nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcXG4gdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbitpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XFxuIFxcbiAvKiBkcm1fdmJsYW5rX3dvcmsuYyAqL1xcbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xcbmluZGV4IGY5MGZiMmQxM2U0MjMuLmUyYmY1ZWQ2NTcwMDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcXG5AQCAtMTI5Nyw2ICsxMjk3LDMyIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcXG4gXFxuKy8qXFxuKyAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcXG4rICogQGNydGM6IERSTSBjcnRjXFxuKyAqXFxuKyAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0YywgdXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy5cXG4rICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LlxcbisgKlxcbisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG9uIGZhaWx1cmVzLlxcbisgKi9cXG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuK3tcXG4rXFx0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXFx1MDAzZWRldjtcXG4rXFx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcXG4rXFx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XFxuK1xcdGludCByZXQ7XFxuK1xcdHU2NCBsYXN0O1xcbitcXG4rXFx0bGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTtcXG4rXFxuK1xcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXFx1MDAzZXF1ZXVlLFxcbitcXHRcXHRcXHRcXHQgbGFzdCAhPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSksXFxuK1xcdFxcdFxcdFxcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcXG4rXFxuK1xcdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcXG4gICogQGNydGM6IERSTSBjcnRjXFxuQEAgLTEzMTEsMjYgKzEzMzcsMjAgQEAgaW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuIHtcXG4gXFx0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXFx1MDAzZWRldjtcXG4gXFx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcXG4tXFx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XFxuIFxcdGludCByZXQ7XFxuLVxcdHU2NCBsYXN0O1xcbiBcXG4gXFx0cmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTtcXG4gXFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcXFwidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgIHBpcGUsIHJldCkpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpO1xcbi1cXG4tXFx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cXHUwMDNlcXVldWUsXFxuLVxcdFxcdFxcdFxcdCBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSxcXG4tXFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xcbitcXHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuIFxcbi1cXHRkcm1fV0FSTihkZXYsIHJldCA9PSAwLCBcXFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXFxcblxcXCIsIHBpcGUpO1xcbitcXHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcXFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXFxcblxcXCIsIHBpcGUpO1xcbiBcXG4gXFx0ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTtcXG4gXFxuLVxcdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjoxNC40MTA2MDE1MzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MDUwNTQ1MTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9GQkRFVl9FTVVMQVRJT05cIixcbiAgICBcIkRSTV9WS01TXCIsXG4gICAgXCJEUk1fVklSVElPX0dQVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtcIixcbiAgICBcImRybV9jcnRjX3dhaXRfb25lX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsXCIsXG4gICAgXCJkcm1fZmJfaGVscGVyX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGJ5IGludHJvZHVjaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHdoaWNoIGF2b2lkcyB0YWtpbmcgYW4gZXh0cmEgdmJsYW5rIHJlZmVyZW5jZSB3aGVuIG9uZSBpcyBhbHJlYWR5IGhlbGQuIFRoaXMgaXMgdXNlZCBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgRFJNIGlvY3RscyBhbmQgZmJkZXYgZW11bGF0aW9uIChlLmcuLCBgRkJJT19XQUlURk9SVlNZTkNgIHZpYSBgZHJtX2ZiX2hlbHBlcl9pb2N0bGApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUyBvciB2aXJ0aW8tZ3B1LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNzA4Njk5MzQ5YTIxODM5ODhkODg2N2VjNmY2MTM5MTkxZWNiZTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAxNDoxNjoxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuaW5kZXggMDA4MGE4ZTk1NTZhNS4uN2ZmMGYyNGEwZjUwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG5AQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGlcbiBcdCAqL1xuIFx0cmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTtcbiBcdGlmICghcmV0KSB7XG4tXHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbitcdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFx0XHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuaW5kZXggZjg5M2IxZTNhNTk2ZS4uNmZkMzM2NzJkMjA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG5AQCAtMTE1LDYgKzExNSw3IEBAIHZvaWQgZHJtX3ZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiBpbnQgZHJtX3ZibGFua19nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbitpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG4gXG4gLyogZHJtX3ZibGFua193b3JrLmMgKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5pbmRleCBmOTBmYjJkMTNlNDIzLi5lMmJmNWVkNjU3MDAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuQEAgLTEyOTcsNiArMTI5NywzMiBAQCB2b2lkIGRybV9jcnRjX3ZibGFua19wdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIH1cbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuIFxuKy8qXG4rICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuKyAqIEBjcnRjOiBEUk0gY3J0Y1xuKyAqXG4rICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFuayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLlxuKyAqIEV2ZXJ5IGNhbGxlciBtdXN0IGhvbGQgYSB2YmxhbmsgcmVmZXJlbmNlIGFjcm9zcyB0aGUgY29tcGxldGUgd2FpdC5cbisgKlxuKyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Igb24gZmFpbHVyZXMuXG4rICovXG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG4re1xuK1x0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXHUwMDNlZGV2O1xuK1x0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcbitcdHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpO1xuK1x0aW50IHJldDtcbitcdHU2NCBsYXN0O1xuK1xuK1x0bGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTtcbitcbitcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXHUwMDNlcXVldWUsXG4rXHRcdFx0XHQgbGFzdCAhPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSksXG4rXHRcdFx0XHQgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG4rXG4rXHRyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7XG4rfVxuK1xuIC8qKlxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbiAgKiBAY3J0YzogRFJNIGNydGNcbkBAIC0xMzExLDI2ICsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIHtcbiBcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbiBcdGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7XG4tXHRzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTtcbiBcdGludCByZXQ7XG4tXHR1NjQgbGFzdDtcbiBcbiBcdHJldCA9IGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSk7XG4gXHRpZiAoZHJtX1dBUk4oZGV2LCByZXQsIFwidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXFxuXCIsXG4gXHRcdCAgICAgcGlwZSwgcmV0KSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4tXG4tXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuLVx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuLVx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuK1x0cmV0ID0gZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFxuLVx0ZHJtX1dBUk4oZGV2LCByZXQgPT0gMCwgXCJ2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxcblwiLCBwaXBlKTtcbitcdGRybV9XQVJOKGRldiwgcmV0ID09IC1FVElNRURPVVQsIFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXG5cIiwgcGlwZSk7XG4gXG4gXHRkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpO1xuIFxuLVx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MTQuNDEwNjAyNzg0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1NTgyNzc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEUk0gU3Vic3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY2AgYW5kIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jYC4gSW50ZXJlc3RpbmcuIFRoZXkndmUgaW50cm9kdWNlZCBhIG5ldyBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAsIGFuZCB0aGV5J3JlIHVzaW5nIGl0IHdpdGhpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGlzIGlzIGFsbCB3aXRoaW4gdGhlIERSTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBob3cgdmJsYW5rIGV2ZW50cyBhcmUgaGFuZGxlZC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gKmhhcHBlbiogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gRFJNIGlzIGRlZmluaXRlbHkgdXNlZCBpbiBRRU1VLCBzbyB0aGF0J3MgZ29vZC4gV2Ugc2VlIHZrbXMsIHZpcnRpby1ncHUsIGJvY2hzLCBhbmQgcXhsIGFsbCB1c2luZyBpdCB0aGVyZS4gU28gdGhlIHJlYWNoIGlzIHRoZXJlLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgZm9yIHRoaXMgdG8gd29yayBwcm9wZXJseS5cblxuSSdsbCBzdGFydCBieSBtYWtpbmcgc3VyZSB0aGF0IGBEUk1gIGlzIGVuYWJsZWQgYXMgdGhhdCdzIHRoZSBvYnZpb3VzIHByZXJlcXVpc2l0ZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBtaWdodCBiZSByZXF1aXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjE5Ljk2NjQzMzE3NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzI0OTE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTctI1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjg6bWVudWNvbmZpZyBEUk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIgKFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlciBEUkkgc3VwcG9ydClcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0zND1pZiBEUk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzozNjpjb25maWcgRFJNX01JUElfREJJXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMzctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjQxOmNvbmZpZyBEUk1fTUlQSV9EU0lcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00Mi1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00NC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo0NTpjb25maWcgRFJNX0tNU19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTEtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NTI6Y29uZmlnIERSTV9EUkFXXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTMtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTUtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NTY6Y29uZmlnIERSTV9QQU5JQ1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkRpc3BsYXkgYSB1c2VyLWZyaWVuZGx5IG1lc3NhZ2Ugd2hlbiBhIGtlcm5lbCBwYW5pYyBvY2N1cnNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy02OC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo2OTpjb25maWcgRFJNX1BBTklDX0ZPUkVHUk9VTkRfQ09MT1JcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03MC1cXHRoZXggXFxcIkRybSBwYW5pYyBzY3JlZW4gZm9yZWdyb3VuZCBjb2xvciwgaW4gUkdCXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzMtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NzQ6Y29uZmlnIERSTV9QQU5JQ19CQUNLR1JPVU5EX0NPTE9SXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzUtXFx0aGV4IFxcXCJEcm0gcGFuaWMgc2NyZWVuIGJhY2tncm91bmQgY29sb3IsIGluIFJHQlxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTc4LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjc5OmNvbmZpZyBEUk1fUEFOSUNfREVCVUdcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy04MC1cXHRib29sIFxcXCJBZGQgYSBkZWJ1ZyBmcyBlbnRyeSB0byB0cmlnZ2VyIGRybV9wYW5pY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTg3LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjg4OmNvbmZpZyBEUk1fUEFOSUNfU0NSRUVOXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODktXFx0c3RyaW5nIFxcXCJQYW5pYyBzY3JlZW4gZm9ybWF0dGVyXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTAwLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjEwMTpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTAyLVxcdGJvb2wgXFxcIkFkZCBhIHBhbmljIHNjcmVlbiB3aXRoIGEgUVIgY29kZVxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTExMS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMTI6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfQ09ERV9VUkxcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMTMtXFx0c3RyaW5nIFxcXCJCYXNlIFVSTCBvZiB0aGUgUVIgY29kZSBpbiB0aGUgcGFuaWMgc2NyZWVuXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTIyLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjEyMzpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9WRVJTSU9OXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTI0LVxcdGludCBcXFwiTWF4aW11bSB2ZXJzaW9uIChzaXplKSBvZiB0aGUgUVIgY29kZS5cXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMzItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTMzOmNvbmZpZyBEUk1fUkFTXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTM0LVxcdGJvb2wgXFxcIkRSTSBSQVMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE0Mi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNDM6Y29uZmlnIERSTV9ERUJVR19EUF9NU1RfVE9QT0xPR1lfUkVGU1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE0NC0gICAgICAgIGJvb2wgXFxcIkVuYWJsZSByZWZjb3VudCBiYWNrdHJhY2UgaGlzdG9yeSBpbiB0aGUgRFAgTVNUIGhlbHBlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNTctXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTU4OmNvbmZpZyBEUk1fREVCVUdfTU9ERVNFVF9MT0NLXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTU5LVxcdGJvb2wgXFxcIkVuYWJsZSBiYWNrdHJhY2UgaGlzdG9yeSBmb3IgbG9jayBjb250ZW50aW9uXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTcyLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE3Mzpjb25maWcgRFJNX0NMSUVOVFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE3NC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0xODI9c291cmNlIFxcXCJkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE4My1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxODQ6Y29uZmlnIERSTV9MT0FEX0VESURfRklSTVdBUkVcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiQWxsb3cgdG8gc3BlY2lmeSBhbiBFRElEIGRhdGEgc2V0IGluc3RlYWQgb2YgcHJvYmluZyBmb3IgaXRcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0xOTY9c291cmNlIFxcXCJkcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE5Ny1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxOTg6Y29uZmlnIERSTV9UVE1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xOTktXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIwNi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMDc6Y29uZmlnIERSTV9FWEVDXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjA4LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMTItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjEzOmNvbmZpZyBEUk1fR1BVVk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTIyMT1jb25maWcgUlVTVF9EUk1fR1BVVk1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIyNy1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMjg6Y29uZmlnIERSTV9HUFVTVk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjktXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzNi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMzc6Y29uZmlnIERSTV9CVUREWVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzOC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQzLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI0NDpjb25maWcgRFJNX1ZSQU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQ1LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDktXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjUwOmNvbmZpZyBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1MS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjU5LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI2MDpjb25maWcgRFJNX0dFTV9ETUFfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjYxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNjgtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjY5OmNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI3MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9Mjc4PWNvbmZpZyBSVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODQtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjg1OmNvbmZpZyBEUk1fU1VCQUxMT0NfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjg2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODgtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjg5OmNvbmZpZyBEUk1fU0NIRURcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5My0jIFNlcGFyYXRlIG9wdGlvbiBhcyBub3QgYWxsIERSTSBkcml2ZXJzIHVzZSBpdFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI5NDpjb25maWcgRFJNX1BBTkVMX0JBQ0tMSUdIVF9RVUlSS1NcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTYtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjk3OmNvbmZpZyBEUk1fUFJJVkFDWV9TQ1JFRU5cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTgtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MzY4PWVuZGlmXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNzAtIyBTZXBhcmF0ZSBvcHRpb24gYmVjYXVzZSBkcm1fcGFuZWxfb3JpZW50YXRpb25fcXVpcmtzLmMgaXMgc2hhcmVkIHdpdGggZmJkZXZcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzozNzE6Y29uZmlnIERSTV9QQU5FTF9PUklFTlRBVElPTl9RVUlSS1NcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNzItXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MjAuMDEzNjg3NzYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1NTc1NDg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBWYmxhbmsgU3luY2hyb25pemF0aW9uIENoYW5nZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGFuZCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AsIGludGVyZXN0aW5nLiBUaGF0IHN1Z2dlc3RzIHRoZXJlJ3Mgc29tZSBraW5kIG9mIG1vZGlmaWNhdGlvbiwgcGVyaGFwcyBvcHRpbWl6YXRpb24sIG9yIGJ1ZyBmaXggcmVsYXRlZCB0byBWQkxBTksgc3luY2hyb25pemF0aW9uLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUga25vY2stb24gZWZmZWN0cy4gQW55IGNoYW5nZSBpbiB0aG9zZSB3YWl0IGZ1bmN0aW9ucyBjYW4gY2FzY2FkZSB0aHJvdWdoIGEgbG90IG9mIGNvZGUuXG5cbk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIHBhdGNoJ3MgaW1wYWN0LiBJcyBpdCB1c2VkIGluIGNyaXRpY2FsIHBhdGhzIGZvciByZW5kZXJpbmcgb3IgbW9kZXNldHRpbmc/IElzIGl0IHVzZWQgaW4gaW5mcmVxdWVudCBzY2VuYXJpb3M/IFRoYXQgd2lsbCBkcmFtYXRpY2FsbHkgYWZmZWN0IGhvdyBzZXJpb3VzbHkgSSBuZWVkIHRvIHRha2UgdGhlc2UgY2hhbmdlcy4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgYGdpdCBncmVwYCBvciBzaW1pbGFyIHRvIGZpbmQgYWxsIG9jY3VycmVuY2VzIGFuZCB0aGVuIGRpZyBpbnRvIHRoZSByZWxldmFudCBjb2RlIHNlZ21lbnRzLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY4NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjI0LjE2OTQ0NTM3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODc3NDUwODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEyOTU9RVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X21vZGVzZXRfZHBtcyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5Ny0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTI5ODogKiBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKCkgLSBXYWl0IGZvciB0aGUgbmV4dCBWQkxBTksgdG8gb2NjdXJcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5OS0gKiBAY2xpZW50OiBEUk0gY2xpZW50XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMwOC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTMwOTppbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzgtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzM5OkVYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzNDAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTMxNT1zdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyNi1cXHRpZiAoY3J0Y19pbmRleCBcXHUwMDNlPSAwKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MzI3OlxcdFxcdGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsoXFx1MDAyNmhlbHBlci1cXHUwMDNlY2xpZW50LCBjcnRjX2luZGV4KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyOC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmhlbHBlci1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTk4ND1pbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAwOS1cXHRcXHQgKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjEwMTA6XFx0XFx0cmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhcXHUwMDI2ZmJfaGVscGVyLVxcdTAwM2VjbGllbnQsIDApO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAxMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MjQuNTU3Mzk2NTYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4OTAyMjc0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWYmxhbmsgU3luY2hyb25pemF0aW9uIGluIHRoZSBEUk0gU3Vic3lzdGVtKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdmJsYW5rIHN5bmNocm9uaXphdGlvbiBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChEUk0pIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBpcyBhIGtleSBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGVtcGxveWVkIHdpdGhpbiBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgYW5kIGBkcm1fZmJfaGVscGVyX2lvY3RsYC4gVGhhdCBsYXN0IG9uZSBpcyBpbnRlcmVzdGluZzsgaXQgbWVhbnMgd2UgY2FuIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyB2Ymxhbmsgd2FpdCB0aHJvdWdoIGFuIGlvY3RsIGNhbGwgZGlyZWN0bHkgb24gdGhlIGZyYW1lYnVmZmVyIGRldmljZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLlxuXG5UbyBnZXQgYSBicm9hZGVyIHBpY3R1cmUgb2YgdmJsYW5rIG1hbmFnZW1lbnQsIEknbGwgbm93IHNoaWZ0IG15IGZvY3VzIHRvIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBJdCdzIGV4cG9ydGVkLCBzbyBpdCdzIGEgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHBvaW50LiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHRyYWNlIGl0cyB1c2FnZSB0aHJvdWdob3V0IHRoZSBEUk0gY29kZSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIGhvdyB2Ymxhbmsgc3luY2hyb25pemF0aW9uIGlzIGltcGxlbWVudGVkIGFuZCB3aGVyZSBpdHMgaW1wYWN0cyBhcmUgZmVsdC4gVGhpcyBzaG91bGQgcmV2ZWFsIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdmFyaW91cyBEUk0gY29tcG9uZW50cyBhbmQgdGhlaXIgcmVsaWFuY2Ugb24gdGhpcyBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjE4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MjguNTQ2NDIyMzg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTkzMDI0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYz0yMjg3PXN0YXRpYyB2b2lkIGRybV9kcF9hdXhfY3JjX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jLTIzMDAtXFx0d2hpbGUgKGNydGMtXFx1MDAzZWNyYy5vcGVuZWQpIHtcXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmM6MjMwMTpcXHRcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jLTIzMDItXFx0XFx0aWYgKCFjcnRjLVxcdTAwM2VjcmMub3BlbmVkKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEzMDk9aW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGludCBjcnRjX2luZGV4KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzAtXFx0aWYgKCFyZXQpIHtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTMzMTpcXHRcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzItXFx0XFx0ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaD0xMTc9dTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoxMTg6aW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0xMTktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jPTEyOTg9RVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwMC0vKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwMTogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzAyLSAqIEBjcnRjOiBEUk0gY3J0Y1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzA4LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI2LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMyNzogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI4LSAqIEBjcnRjOiBEUk0gY3J0Y1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzM1LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMzNjppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzQ2LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTM0NzpcXHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzQ4LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzU0LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzNTU6RVhQT1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM1Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jPTY3PXZvaWQgaW50ZWxfY3J0Y193YWl0X2Zvcl9uZXh0X3ZibGFuayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02OC17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmM6Njk6XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZjcnRjLVxcdTAwM2ViYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy03MC19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYz0yMTM9c3RhdGljIGludCBpbmdlbmljX2RybV91cGRhdGVfcGl4Y2xrKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjItXFx0XFx0cHJpdi1cXHUwMDNldXBkYXRlX2Nsa19yYXRlID0gdHJ1ZTtcXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYzoyMjM6XFx0XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZwcml2LVxcdTAwM2VjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjQtXFx0XFx0cmV0dXJuIE5PVElGWV9PSztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jPTgwNT1zdGF0aWMgdm9pZCBtdGtfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzYtXFx0LyogV2FpdCBmb3IgcGxhbmVzIHRvIGJlIGRpc2FibGVkICovXFxuZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmM6ODM3OlxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmM9MzY9c3RhdGljIHZvaWQgc3RpX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jLTQ0LVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYzo0NTpcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jLTQ2LX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jPTE3NzE9c3RhdGljIGludCB0ZWdyYV9kY19zaG93X2NyYyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzg4LVxcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jOjE3ODk6XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZkYy1cXHUwMDNlYmFzZSk7XFxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmM6MTc5MDpcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXFx1MDAyNmRjLVxcdTAwM2ViYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzkxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjoyOS4wMDgzNjMyNzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjM0MDU3OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERSTSB2YmxhbmsgUmVmZXJlbmNlIEJ1ZyBhbmQgU29sdXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGFkZHJlc3NpbmcgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBidWcgaW4gdGhlIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGdvb2QsIGJlY2F1c2UgdGhlc2UgbG93LWxldmVsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgY2FuIGJlIGEgbmlnaHRtYXJlIHRvIGRlYnVnIGluIHRoZSBmaWVsZC4gSXQgbG9va3MgbGlrZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2Agd2FzIHVubmVjZXNzYXJpbHkgY2FsbGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCwgd2hpY2ggdGhlbiBjYWxscyBgZHJtX3ZibGFua19nZXRgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbHJlYWR5IHRha2VzIGNhcmUgb2YgZ2V0dGluZyBhbmQgcHV0dGluZyB0aGUgdmJsYW5rIHJlZmVyZW5jZSB1c2luZyBgZHJtX2NydGNfdmJsYW5rX2dldGAuIFRoaXMgY3JlYXRlcyBhbiBpbWJhbGFuY2UsIGFuZCB0aGF0J3MgYSByZWNpcGUgZm9yIGFsbCBzb3J0cyBvZiB0aW1pbmcgaXNzdWVzLCBkZWFkbG9ja3MsIG9yIHJlc291cmNlIGxlYWtzLlxuXG5UaGUgc29sdXRpb24gbG9va3MgY2xlYW4uIFRoZXkndmUgZmFjdG9yZWQgb3V0IHRoZSB2YmxhbmsgcmVmZXJlbmNlIG1hbmFnZW1lbnQgaW50byBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiB1c2VkIGJ5IGJvdGggYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgKHdoaWNoIHJldGFpbnMgdGhlIGdldC9wdXQpIGFuZCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgKHdoaWNoIGFscmVhZHkgaGFuZGxlcyBpdCkuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgd2F5IHRvIHNpbXBsaWZ5IHRoZSBjb2RlIGFuZCBwcmV2ZW50IHRoZSByZWZlcmVuY2UgZG91YmxlLWRpcHBpbmcuXG5cblRoZSBxdWVzdGlvbiBub3cgYmVjb21lcywgaXMgdGhpcyBjb2RlIHBhdGggYWN0dWFsbHkgcmVhY2hhYmxlPyBJIGtub3cgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIHVzZWQgYnkgRFJNIGNsaWVudHMsIHBhcnRpY3VsYXJseSB0aG9zZSBpbXBsZW1lbnRpbmcgZnJhbWUgYnVmZmVyIGRldmljZSAoZmJkZXYpIGVtdWxhdGlvbi4gSSByZWNhbGwgYGRybV9mYl9oZWxwZXJfaW9jdGxgIHVzaW5nIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBmb3IgYEZCSU9fV0FJVEZPUlZTWU5DYC4gQmluZ28sIHRoYXQgbWFrZXMgaXQgcmVhY2hhYmxlIGFuZCBkZWZpbml0ZWx5IHRlc3RhYmxlISBJIHNob3VsZCBmb2N1cyBvbiB0ZXN0aW5nIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIHRvIHZlcmlmeSB0aGF0IHRoZSBmaXggYWRkcmVzc2VzIHRoZSBpc3N1ZSBjb3JyZWN0bHkuIEFsc28sIGBkcm1fZmJfaGVscGVyX2lvY3RsYCBhbmQgYGRybV9mYl9oZWxwZXJfZmJfZGlydHlgIGFyZSBnb29kIGNhbmRpZGF0ZXMgdG8gdGVzdCB0b28sIGdpdmVuIHRoZWlyIHJlbGF0aW9uc2hpcCB0byBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuXG5cbkFscmlnaHQsIEknbGwgcHVsbCB1cCBgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuY2AgYW5kIGNoZWNrIGlmIHRoYXQgY29kZSBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IG9yIHJlcXVpcmVzIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCdsbCBpbmZsdWVuY2UgaG93IGRpZmZpY3VsdCBpdCBpcyB0byBzZXQgdXAgYSB0ZXN0IGVudmlyb25tZW50IHRvIGV4ZXJjaXNlIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjA0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjM2LjY0MjQyNDI4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2MDkxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJtX2ZiX2hlbHBlci5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTU5PWRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9QQU5FTF9CUklER0UpICs9IGJyaWRnZS9wYW5lbC5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2MDpkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJfaGVscGVyLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTYxLW9iai0kKENPTkZJR19EUk1fS01TX0hFTFBFUikgKz0gZHJtX2ttc19oZWxwZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjozNi42ODcwNDA1MjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NzgwMDYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2hvIHdvcmtzIHdpdGggdGhpcyBjb2RlIHJlZ3VsYXJseTpcblxuKipNeSBEZWR1Y3Rpb25zIG9uIERSTSBGcmFtZWJ1ZmZlciBFbXVsYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgc3lzdGVtIGlzIHRlbGxpbmcgbWUgdGhhdCBJIG5lZWQgYENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OYCBmb3IgYGRybV9mYl9oZWxwZXIub2AuIFRoYXQgbWFrZXMgc2Vuc2U7IHRoZSBmcmFtZWJ1ZmZlciBlbXVsYXRpb24gbW9kdWxlIGlzIHRoZSBicmlkZ2UgYmV0d2VlbiB0aGUgb2xkIGZyYW1lYnVmZmVyIGNvZGUgYW5kIHRoZSBuZXdlciBEUk0gd29ybGQuIEl0J3MgZXNzZW50aWFsbHkgcHJvdmlkaW5nIGEgbGVnYWN5IGludGVyZmFjZS4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX0RSTV9DTElFTlRgIGlzIGVuYWJsZWQuIEl0J3MgYWxtb3N0IGFsd2F5cyBhIGdpdmVuLCBidXQgc29tZXRpbWVzIGEgZGVwZW5kZW5jeSBnZXRzIG1pc3NlZCBhbmQgaXQgcGF5cyB0byBjb25maXJtLiBJdCBpcyB0aGUgY29yZSBvZiBjbGllbnQgZHJpdmVycy4gSSBzaG91bGQgYWxzbyBzZWUgaWYgYENPTkZJR19EUk1fS01TX0hFTFBFUmAgaXMgYWxzbyBlbmFibGVkLiBJdCBwcm92aWRlcyB2YXJpb3VzIGtlcm5lbCBtb2RlIHNldHRpbmcgaGVscGVycy4gSXQgaXMgcHJvYmFibHkgaW1wb3J0YW50IHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjQwLjM2NDg0MzgyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzNjExMDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fRkJERVZfRU1VTEFUSU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjo0MC40MTMyMTM2MTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2ODE3MjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UndmUgZGVzY3JpYmVkOlxuXG4qKkRSTSBGQkRFViBFbXVsYXRpb24gQ2hlY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHN0YXR1cyBvZiBmcmFtZWJ1ZmZlciBkZXZpY2UgZW11bGF0aW9uIHdpdGhpbiB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBjb21lcyB0byBtaW5kLCBhcyBhbHdheXMsIGlzIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBEUk0gY2xpZW50cy4gSSdtIGdvaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIGBEUk1fRkJERVZfRU1VTEFUSU9OYC4gVGltZSB0byBzZWUgaWYgaXQncyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUuIERlcGVuZGluZyBvbiB0aGF0LCBJIGNhbiBpbmZlciB0aGUgY3VycmVudCBzdGF0ZSBhbmQsIGRlcGVuZGluZyBvbiB0aGUga2VybmVsIHZlcnNpb24sIG1ha2UgYXBwcm9wcmlhdGUgY29uY2x1c2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5MDMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjo0My40ODEzODg4MTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzU5MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fRkJERVZfRU1VTEFUSU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZz0yOD1tZW51IFxcXCJTdXBwb3J0ZWQgRFJNIGNsaWVudHNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMwLVxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MzE6Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjQzLjUyODc1MzAyNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODcyOTA3MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25zaWRlcmF0aW9ucywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgRFJNL0ZyYW1lYnVmZmVyIEVtdWxhdGlvbioqXG5cbkFscmlnaHQsIHRoaW5raW5nIGFib3V0IHRoaXMgRFJNIHNldHVwLCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBlbmFibGluZyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaXMgYSBzb2xpZCBtb3ZlLiBJdCdzIGEga2V5IHBpZWNlIGluIGFsbG93aW5nIHRoZSBEUk0gc3Vic3lzdGVtIHRvIHBsYXkgbmljZWx5IHdpdGggdGhlIGxlZ2FjeSBmcmFtZWJ1ZmZlciBkZXZpY2UgZHJpdmVycywgd2hpY2ggaXMgb2Z0ZW4gY3J1Y2lhbCBmb3Igd2lkZXIgY29tcGF0aWJpbGl0eSBhbmQgZ3JhY2VmdWwgZmFsbGJhY2suIFRoZW4sIG5hdHVyYWxseSwgSSdkIGJyaW5nIGluIGBEUk1fS01TX0hFTFBFUmAgYW5kIHRoZSBgRFJNYCBkcml2ZXIgaXRzZWxmOyB0aG9zZSBhcmUgZm91bmRhdGlvbmFsIHRvIGFueSBLTVMvRFJNIGltcGxlbWVudGF0aW9uLCBvZiBjb3Vyc2UuIFdpdGhvdXQgdGhlbSwgeW91J3JlIG5vdCBnZXR0aW5nIGFueXdoZXJlLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIGFsd2F5cyB0byBjaGVjayB0aGUgY29tcGlsYXRpb24gb2YgY2VydGFpbiBzcGVjaWZpYyBmaWxlcy4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgZHJtX2NsaWVudF9tb2Rlc2V0LmNgIGlzIGNvbXBpbGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlcmUncyBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW52b2x2ZWQuIFRoYXQgb25lJ3MgcGFydGljdWxhcmx5IGltcG9ydGFudCwgYmVjYXVzZSBpdCBvZnRlbiBoYW5kbGVzIHRoZSBoaWdoZXItbGV2ZWwgY2xpZW50IG1vZGUgc2V0dGluZyBmdW5jdGlvbmFsaXR5LCBhbmQgSSB3b3VsZCB3YW50IHRoYXQgaW5jbHVkZWQgaW4gbXkgc3RhbmRhcmQgY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDIzNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjQ4LjQwMTY2MjkyNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3MDcxMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJtX2NsaWVudF9tb2Rlc2V0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT03Nj1kcm0tJChDT05GSUdfRFJNX0NMSUVOVCkgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTc4LVxcdGRybV9jbGllbnRfZXZlbnQubyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjc5OlxcdGRybV9jbGllbnRfbW9kZXNldC5vIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtODAtXFx0ZHJtX2NsaWVudF9zeXNycS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjQ4LjQ0NzM3MzgyNFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk0MzI5MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgLSBEUk0gQ2xpZW50KipcblxuUmlnaHQsIHNvIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRlcGVuZGVuY3kgaGVyZSDigJMgaXQncyBzdWdnZXN0aW5nIHRoYXQgYENPTkZJR19EUk1fQ0xJRU5UYCBpcyBhIGNyaXRpY2FsIHJlcXVpcmVtZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZHJpbGwgZG93biBpbnRvIHRoZSBLY29uZmlnIHN0cnVjdHVyZSB0byBjb25maXJtIHdoYXQgdGhpcyBhY3R1YWxseSBlbnRhaWxzLiBTcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgRFJNX0NMSUVOVGAgd2l0aGluIGBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ2AuIFRoaXMgd2lsbCBwcm92aWRlIHRoZSBjcnVjaWFsIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgcGFydGljdWxhciBjb25maWcgc2V0dGluZyBhbmQgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCBpdCwgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gc2VlIGlmIGl0J3MgdGllZCB0byBhbnkgc3BlY2lmaWMgRFJNIGRyaXZlciBvciBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY2MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjUxLjk0MTcwNTUyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NDEzMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9DTElFTlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MTU4PWNvbmZpZyBEUk1fREVCVUdfTU9ERVNFVF9MT0NLXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTczOmNvbmZpZyBEUk1fQ0xJRU5UXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTc0LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6NTEuOTg5MTUzNTgyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzQzOTQ5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgSGlkZGVuIEJvb2xlYW4gRmxhZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSd2ZSBnb3QgYSBodW5jaC4gVGhpcyBzbWVsbHMgbGlrZSBhIGhpZGRlbiBib29sZWFuLCBsaWtlbHkgY29udHJvbGxlZCBieSBgRFJNX0ZCREVWX0VNVUxBVElPTmAuIE15IGd1dCB0ZWxscyBtZSB0aGF0J3MgdGhlIGtleS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGlzIHN1c3BpY2lvbiwgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYmV0dGVyLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERSTV9GQkRFVl9FTVVMQVRJT05gLiBMZXQncyBzZWUgd2hhdCB0aGF0IGZsYWcgZW5hYmxlcyBvciBkaXNhYmxlcywgYW5kIHRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGFuc3dlciBJIGFtIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk3NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjU1LjIyMzU1MTEwOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MzMwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnPTI4PW1lbnUgXFxcIlN1cHBvcnRlZCBEUk0gY2xpZW50c1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMzAtXFxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZzozMTpjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTlxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMzItXFx0Ym9vbCBcXFwiRW5hYmxlIGxlZ2FjeSBmYmRldiBzdXBwb3J0IGZvciB5b3VyIG1vZGVzZXR0aW5nIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6NTUuMjcxMzg4ODE3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxOTY2MzI5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiBhbmQgdGFyZ2V0ZWQgYXQgYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkFuYWx5emluZyB0aGUgRFJNX0ZCREVWX0VNVUxBVElPTiBCbG9jayoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBEUk1fRkJERVZfRU1VTEFUSU9OYCBibG9jay4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aGF0J3MgaGFwcGVuaW5nIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSBncmFzcCBhbGwgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyBpc24ndCBqdXN0IGFib3V0IHRoZSBzdXJmYWNlIGxldmVsOyBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgbWVjaGFuaWNzIG9mIGhvdyB0aGlzIGVtdWxhdGlvbiB3b3JrcyBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgRFJNL0tNUyBzdGFjay4gV2hhdCBhcmUgdGhlIGtleSBmdW5jdGlvbmFsaXRpZXMgYmVpbmcgZW11bGF0ZWQ/IFdoaWNoIHNwZWNpZmljIEZCREVWIGJlaGF2aW9ycyBhcmUgYmVpbmcgcmVwbGljYXRlZCwgYW5kIHdoeSBpcyB0aGlzIGVtdWxhdGlvbiBuZWNlc3NhcnkgaW4gdGhpcyBzcGVjaWZpYyBjb250ZXh0P1xuXG5JIHdhbnQgdG8gbG9vayBmb3IgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyB0aGF0IG1pZ2h0IGFyaXNlLiBUaGlzIGVtdWxhdGlvbiBsYXllciBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgYSBwZXJmb3JtYW5jZSBvdmVyaGVhZCB0aGF0IHdlIG11c3QgdW5kZXJzdGFuZCBhbmQgbWl0aWdhdGUuIEknbSBhbHNvIGN1cmlvdXMgYWJvdXQgdGhlIHNwZWNpZmljIHVzZSBjYXNlcyBkcml2aW5nIHRoaXMgaW1wbGVtZW50YXRpb24uIElzIGl0IHByaW1hcmlseSBmb3IgbGVnYWN5IGFwcGxpY2F0aW9ucywgb3IgYXJlIHRoZXJlIG90aGVyIHJlYXNvbnMgdGhpcyBlbXVsYXRpb24gaXMgY2hvc2VuP1xuXG5JIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY3J1Y2lhbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9uIGNhbGxzIGludm9sdmVkIGluIHRoaXMgYmxvY2suIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvZGUgYW5kIGFuYWx5emUgdGhlbSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgaG9va3Mgb3IgaW50ZXJhY3Rpb25zIHdpdGggdGhlIERSTSBjb3JlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvc3NpYmxlIHJhY2VzLCByZXNvdXJjZSBjb250ZW50aW9uIGlzc3VlcywgYW5kIGhvdyBlcnJvciBjb25kaXRpb25zIGFyZSBoYW5kbGVkLiBBbHNvLCBpdCBpcyBnb2luZyB0byBiZSBpbXBvcnRhbnQgdG8gdGhpbmsgYWJvdXQgdGhlIGltcGFjdCBvZiB0aGlzIGJsb2NrIG9uIHRoZSBncmFwaGljcyBzdGFjaydzIG92ZXJhbGwgc3RhYmlsaXR5LlxuXG5TcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgZGV2aWF0aW9ucyBmcm9tIHRoZSBzdGFuZGFyZCBEUk0vS01TIGJlaGF2aW9yLiBXaGF0IGNvcm5lcnMgYXJlIGJlaW5nIGN1dCBoZXJlLCBhbmQgd2hhdCBhcmUgdGhlIHRyYWRlLW9mZnM/IEkgd2FudCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgZW11bGF0aW9uIGlzIGEgd2VsbC1kZWZpbmVkIGFic3RyYWN0aW9uIG9yIGEgbW9yZSBjb21wbGV4IHdvcmstYXJvdW5kLiBUaGUgZG9jdW1lbnRhdGlvbiBzaG91bGQgYmUgZGV0YWlsZWQgZW5vdWdoIHRvIGV4cGxhaW4gYW55IGFyY2hpdGVjdHVyYWwgZGVjaXNpb25zLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdGhvcm91Z2hseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgdGhpcyBibG9jayBoYXMgZm9yIGRyaXZlciBtYWludGFpbmFiaWxpdHkuIFdpbGwgdGhpcyBjb21wbGljYXRlIGZ1dHVyZSB1cGRhdGVzIG9yIHByZXZlbnQgdGhlIGFkb3B0aW9uIG9mIG5ldywgYWR2YW5jZWQgZmVhdHVyZXM/IEknbGwgbmVlZCB0byBhc3Nlc3MgdGhlIGxldmVsIG9mIGNvZGUgY29tcGxleGl0eSBhbmQgcG90ZW50aWFsIGZvciBjcmVhdGluZyBhIG1haW50ZW5hbmNlIGJ1cmRlbiBkb3duIHRoZSByb2FkLiBUaGlzIG92ZXJhbGwgYXNzZXNzbWVudCB3aWxsIG5lZWQgdG8gaW5mb3JtIG15IHZpZXcgb24gaXRzIGRlc2lnbiBhbmQgaG93IGl0IGlzIGludGVncmF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjY3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MDAuNDY4MDI1NTk3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzE6XFx0Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cXG4gIDMyOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIERSTV9DTElFTlRfU0VMRUNUSU9OXFxuICAzNDpcXHRcXHRzZWxlY3QgRFJNX0NMSUVOVFxcbiAgMzU6XFx0XFx0c2VsZWN0IERSTV9DTElFTlRfU0VUVVBcXG4gIDM2OlxcdFxcdHNlbGVjdCBGUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZIGlmIEZSQU1FQlVGRkVSX0NPTlNPTEVcXG4gIDM3OlxcdFxcdGRlZmF1bHQgRkJcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEgbmVlZCBmb3IgdGhlIGxlZ2FjeSBmYmRldlxcbiAgNDA6XFx0XFx0ICBzdXBwb3J0LiBOb3RlIHRoYXQgdGhpcyBzdXBwb3J0IGFsc28gcHJvdmlkZXMgdGhlIGxpbnV4IGNvbnNvbGVcXG4gIDQxOlxcdFxcdCAgc3VwcG9ydCBvbiB0b3Agb2YgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXIuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgSWYgaW4gZG91YnQsIHNheSBcXFwiWVxcXCIuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGNvbmZpZyBEUk1fRkJERVZfT1ZFUkFMTE9DXFxuICA0NjpcXHRcXHRpbnQgXFxcIk92ZXJhbGxvY2F0aW9uIG9mIHRoZSBmYmRldiBidWZmZXJcXFwiXFxuICA0NzpcXHRcXHRkZXBlbmRzIG9uIERSTV9GQkRFVl9FTVVMQVRJT05cXG4gIDQ4OlxcdFxcdGRlZmF1bHQgMTAwXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIERlZmluZXMgdGhlIGZiZGV2IGJ1ZmZlciBvdmVyYWxsb2NhdGlvbiBpbiBwZXJjZW50LiBEZWZhdWx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjAwLjQ2ODA5OTI0N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjcxMTYwMDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgZGlzdGlsbGVkIHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzLCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIGBEUk1fRkJERVZfRU1VTEFUSU9OYCBpbXBsaWVzIGEgZGVwZW5kZW5jeSBvbiBgRFJNX0NMSUVOVGAuIEdvdCBpdC4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGluY2x1ZGUgYm90aCBgRFJNX0ZCREVWX0VNVUxBVElPTmAgYW5kIHRoZSBjb3JlIGBEUk1gIGRyaXZlciBpdHNlbGYuIFRoYXQncyBmdW5kYW1lbnRhbC4gTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdmlydHVhbCBHUFUgZHJpdmVycyBmb3IgdGVzdGluZyB0aGlzLiBTaG91bGQgd2UgdXNlIGBEUk1fVktNU2Agb3IgbWF5YmUgYERSTV9WSVJUSU9fR1BVYD8gRWl0aGVyIHdvdWxkIGJlIGEgZ29vZCBjaG9pY2UgZm9yIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgaWYgYERSTV9WS01TYCBpcyBldmVuIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBHb3R0YSBtYWtlIHN1cmUgd2UgaGF2ZSBhIHZpYWJsZSBvcHRpb24gaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNjgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjA0LjEzOTI2MTg3MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxNjAyMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9WS01TXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yLVxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6Mzpjb25maWcgRFJNX1ZLTVNcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgS01TIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjE5OmNvbmZpZyBEUk1fVktNU19LVU5JVF9URVNUXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIFZLTVNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MDQuMTg2NDI2MzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MTc0NDEzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgVmlydHVhbCBLTVMgRHJpdmVycyoqXG5cbkFscmlnaHQsIHNvIGBEUk1fVktNU2AgLSB0aGF0J3MgYSB2aXJ0dWFsIEtNUyBkcml2ZXIsIG5vIHF1ZXN0aW9uLiBOb3csIEkgbmVlZCB0byBjb21wYXJlIHRoaXMgd2l0aCBgRFJNX1ZJUlRJT19HUFVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgdHdvIHJlbGF0ZS4gSXQncyBhIGNvbW1vbiBhcmVhIG9mIGRyaXZlciBkZXZlbG9wbWVudCBhbmQgSSBuZWVkIHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3QgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjA3LjU2ODE3NDAxM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3MTMzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9WSVJUSU9fR1BVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc6Mjpjb25maWcgRFJNX1ZJUlRJT19HUFVcXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIEdQVSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMTUtXFxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnOjE2OmNvbmZpZyBEUk1fVklSVElPX0dQVV9LTVNcXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMTctXFx0Ym9vbCBcXFwiVmlydGlvIEdQVSBkcml2ZXIgbW9kZXNldHRpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MDcuNjIxODkyNjMxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyMTAyODIwNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gRFJNIFZibGFuayBTeW5jaHJvbml6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZXZhbHVhdGluZyBzb21lIGtlcm5lbCBEUk0gY29kZSwgYW5kIEkgc2VlIHRoYXQgZW5hYmxpbmcgYERSTV9WS01TYCBhbmQgYERSTV9WSVJUSU9fR1BVYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IHByaW1hcnkgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHZibGFuayBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcywgc28gSSdtIGdvaW5nIHRvIHN1bW1hcml6ZSB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFuZCBob3cgdGhleSByZWxhdGUgdG8gZWFjaCBvdGhlci5cblxuSSd2ZSBpZGVudGlmaWVkIHRoZXNlIGFzIHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBpbnZlc3RpZ2F0ZTogYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCwgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBJIHNlZSB0aGF0IGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzLCBpbnRlcmVzdGluZ2x5LCBub3QgZGlyZWN0bHkgZXhwb3J0ZWQuIEhvd2V2ZXIsIGl0J3MgY2FsbGVkIGJ5IHRoZSB0d28gZXhwb3J0ZWQgZnVuY3Rpb25zLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBhbmQgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBBaCwgaXQgaXM7IGBFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmspO2AuIEdvb2QuIFNpbWlsYXJseSwgSSBzZWUgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgaXMgYWxzbyBleHBvcnRlZDogYEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtgLiBJJ2xsIGtlZXAgYW4gZXllIG9uIGhvdyB0aGVzZSBhcmUgdXNlZCBpbiByZWxhdGlvbiB0byBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMuIEFzIGZvciBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCwgYWx0aG91Z2ggaXQncyBub3QgZXhwb3J0ZWQsIGl0IGlzIGluIGBkcm1fdmJsYW5rLmNgLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBpdCBpcyBub3Qgc3RhdGljLlxuXG5JIGFsc28gc2VlIHRoYXQgYGRybV9mYl9oZWxwZXJfaW9jdGxgIGFuZCBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgc2VlbSB0byBiZSByZWxldmFudCBiZWNhdXNlIHRoZXkgY2FsbCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFNvIEknbGwgY2hlY2sgdGhvc2UgYXMgd2VsbC4gYGRybV9mYl9oZWxwZXJfaW9jdGxgIGlzIGV4cG9ydGVkIGFuZCBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgaXMgc3RhdGljLlxuXG5MZXQgbWUgY29uc29saWRhdGUgdGhlIGZvY3VzIHN5bWJvbHM6XG5cbiogICBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2BcbiogICBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYFxuKiAgIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgXG4qICAgYGRybV9mYl9oZWxwZXJfaW9jdGxgXG5cbkFuZCB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3MgYXJlOlxuXG4qICAgYERSTWBcbiogICBgRFJNX0ZCREVWX0VNVUxBVElPTmBcbiogICBgRFJNX1ZLTVNgXG4qICAgYERSTV9WSVJUSU9fR1BVYFxuXG5KdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrLi4uIExldCBtZSBjb25maXJtIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzIG5vdCBzdGF0aWMuIE5vcGUsIGl0IGlzIGRlY2xhcmVkIGluIGBkcm1faW50ZXJuYWwuaGAuIEV4Y2VsbGVudC4gVGhhdCBjb25maXJtcyBpdCBhbmQgZ2l2ZXMgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODM1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjE0LjgzMjE3Nzk0M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1MjE3MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM9MTI5OD1FWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzA4LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNzoxNC44ODA3MDQ1NzJaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0ODI2MzIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEeW5hbWljIE5hdHVyZSoqXG5cblJpZ2h0LCBzbyBpdCdzIGNsZWFyOiB3ZSdyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nICpkeW5hbWljKiBoZXJlLCBub3QgYSBmaXhlZCBzdGF0ZS4gVGhhdCdzIGEgZnVuZGFtZW50YWwgYXNzdW1wdGlvbiB3ZSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gV2UgY2FuJ3QgdHJlYXQgdGhpcyBsaWtlIHNvbWUga2luZCBvZiBpbW11dGFibGUgY29uc3RhbnQuIFRoaXMgZHluYW1pc20gaW1wYWN0cyBvdXIgYXBwcm9hY2ggdG8gdGhlIHByb2JsZW0gYW5kIGFueSBwb3RlbnRpYWwgc29sdXRpb25zLlxuXG5Ob3csIHdpdGggdGhpcyBpbiBtaW5kLCBsZXQncyBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJJ20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgYGRybV9mYl9oZWxwZXJfaW9jdGxgIGFuZCBzZWUgaG93IGl0IHJlZmxlY3RzIHRoaXMgZHluYW1pYyBjaGFyYWN0ZXJpc3RpYy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaG93IGNoYW5nZXMgbWlnaHQgcHJvcGFnYXRlIHRocm91Z2ggdGhhdCBpb2N0bC4gSSdsbCBmb2N1cyBvbiBob3cgdGhlIGNhbGxzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHJlbGF0ZSB0byBzdGF0ZSBjaGFuZ2VzLCBhbmQgd2hhdCBoYXBwZW5zIHdoZW4gdGhhdCBzdGF0ZSBpc24ndCBhcyBkZWZpbmVkIGluaXRpYWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxMzEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNzoxOC43Mjg5NzAwNDFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Nzc5OTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRybV9mYl9oZWxwZXJfaW9jdGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTk3Mz1FWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfc2V0Y21hcCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTk3NS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjk3NjogKiBkcm1fZmJfaGVscGVyX2lvY3RsIC0gbGVnYWN5IGlvY3RsIGltcGxlbWVudGF0aW9uXFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy05NzctICogQGluZm86IGZiZGV2IHJlZ2lzdGVyZWQgYnkgdGhlIGhlbHBlclxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy05ODMtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYzo5ODQ6aW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy05ODUtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTEwMTctfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MTAxODpFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaW9jdGwpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAxOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MTguNzc4NzU0M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDM0ODIzNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVmJsYW5rIFJlZmVyZW5jZSBDb3VudGluZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBhIHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgcHJvYmxlbS4gVGhhdCdzIGEgY2xhc3NpYyBpc3N1ZSBpbiBEUk0sIEkga25vdyB0aGUgdGVycml0b3J5IHdlbGwuIFRoZSBmaXggc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgdGhpcyBuZXcgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBFc3NlbnRpYWxseSwgaXQgcHJldmVudHMgdGhlIHN5c3RlbSBmcm9tIGdyYWJiaW5nIGFuICpleHRyYSogdmJsYW5rIHJlZmVyZW5jZSB3aGVuIGl0IGFscmVhZHkgaGFzIG9uZS4gU21hcnQuXG5cbkkgY2FuIHNlZSB3aGVyZSB0aGlzIGNvbWVzIGludG8gcGxheTsgaXQncyB1c2VkIHdpdGhpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGVzZSBhcmUgaW1wb3J0YW50IGZ1bmN0aW9ucywgYXMgdGhleSBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBEUk0gaW9jdGxzLCBvciB0aGUgRkJERVYgZW11bGF0aW9uIGxheWVycyAobGlrZSBgRkJJT19XQUlURk9SVlNZTkNgIHVzaW5nIGBkcm1fZmJfaGVscGVyX2lvY3RsYCksIHdoaWNoIG1lYW5zIGl0IGNhbiBoYXZlIHNvbWUgdGFuZ2libGUgdXNlciBpbXBhY3QuXG5cblRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgYSBtaW5vciB0d2VhazsgdGhpcyBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQuIEkgdGhpbmsgSSdsbCBjYWxsIGl0IGBzZXQtcmVzdWx0c2AsIGFzIHRoaXMgc2VlbXMgbGlrZSBhIHJlYWwgaW1wYWN0IHRvIHRoZSBjb2RlLlxuSSB3b3VsZCB3YW50IHRvIHRlc3QgdGhpcyBjaGFuZ2UgdGhvcm91Z2hseSwgYW5kLCB0aGUgZ29vZCBuZXdzIGlzLCBJIGNhbiB0ZXN0IGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMgVktNUywgdmlydGlvLWdwdSwgdGhvc2UgdmlydHVhbCBEUk0gZHJpdmVycyBhcmUgbXkgZnJpZW5kcyBoZXJlLiBJJ2xsIG1ha2Ugc3VyZSB0byBwdXQgaXQgdGhyb3VnaCBpdHMgcGFjZXMgaW4gdGhvc2Ugc2V0dGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjYwLCJPdXRwdXRUb2tlbnMiOjI1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNzoyNC44MTM1ODUzODZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI0NjQxMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX0ZCREVWX0VNVUxBVElPTlwiLFxuICAgIFwiRFJNX1ZLTVNcIixcbiAgICBcIkRSTV9WSVJUSU9fR1BVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxcIixcbiAgICBcImRybV9mYl9oZWxwZXJfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgYnkgaW50cm9kdWNpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgd2hpY2ggYXZvaWRzIHRha2luZyBhbiBleHRyYSB2YmxhbmsgcmVmZXJlbmNlIHdoZW4gb25lIGlzIGFscmVhZHkgaGVsZC4gVGhpcyBpcyB1c2VkIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBEUk0gaW9jdGxzIGFuZCBmYmRldiBlbXVsYXRpb24gKGUuZy4sIGBGQklPX1dBSVRGT1JWU1lOQ2AgdmlhIGBkcm1fZmJfaGVscGVyX2lvY3RsYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TIG9yIHZpcnRpby1ncHUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNXCIsXG4gICAgXCJEUk1fRkJERVZfRU1VTEFUSU9OXCIsXG4gICAgXCJEUk1fVktNU1wiLFxuICAgIFwiRFJNX1ZJUlRJT19HUFVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtcIixcbiAgICBcImRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbFwiLFxuICAgIFwiZHJtX2ZiX2hlbHBlcl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBieSBpbnRyb2R1Y2luZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB3aGljaCBhdm9pZHMgdGFraW5nIGFuIGV4dHJhIHZibGFuayByZWZlcmVuY2Ugd2hlbiBvbmUgaXMgYWxyZWFkeSBoZWxkLiBUaGlzIGlzIHVzZWQgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdmlhIERSTSBpb2N0bHMgYW5kIGZiZGV2IGVtdWxhdGlvbiAoZS5nLiwgYEZCSU9fV0FJVEZPUlZTWU5DYCB2aWEgYGRybV9mYl9oZWxwZXJfaW9jdGxgKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBhbmQgY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdmlydHVhbCBEUk0gZHJpdmVycyBsaWtlIFZLTVMgb3IgdmlydGlvLWdwdS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MjQuOTE2MDU4NDEzWiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA5NzI5NzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjI0LjkxNjgxNjQyM1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTA5NjUwMTUzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGJ5IGV4dHJhY3RpbmcgaXRzIGNvcmUgbG9naWMgaW50byBhIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCB0YWtpbmcgYSByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3csIHdhaXQgcXVldWVzLCBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIG1lbW9yeSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKGUuZy4sIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjcwODY5OTM0OWEyMTgzOTg4ZDg4NjdlYzZmNjEzOTE5MWVjYmU2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTQ6MTY6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbmluZGV4IDAwODBhOGU5NTU2YTUuLjdmZjBmMjRhMGY1MDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuQEAgLTEzMjgsNyArMTMyOCw3IEBAIGludCBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCB1bnNpZ25lZCBpXG4gXHQgKi9cbiBcdHJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7XG4gXHRpZiAoIXJldCkge1xuLVx0XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XG4rXHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcdFx0ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuQEAgLTExNSw2ICsxMTUsNyBAQCB2b2lkIGRybV92YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiB1NjQgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpO1xuIFxuIC8qIGRybV92Ymxhbmtfd29yay5jICovXG4gc3RhdGljIGlubGluZSB2b2lkIGRybV92YmxhbmtfZmx1c2hfd29ya2VyKHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuaylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuaW5kZXggZjkwZmIyZDEzZTQyMy4uZTJiZjVlZDY1NzAwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcbkBAIC0xMjk3LDYgKzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB9XG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcbiBcbisvKlxuKyAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbisgKiBAY3J0YzogRFJNIGNydGNcbisgKlxuKyAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0YywgdXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy5cbisgKiBFdmVyeSBjYWxsZXIgbXVzdCBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSBhY3Jvc3MgdGhlIGNvbXBsZXRlIHdhaXQuXG4rICpcbisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG9uIGZhaWx1cmVzLlxuKyAqL1xuK2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuK3tcbitcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbitcdGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7XG4rXHRzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTtcbitcdGludCByZXQ7XG4rXHR1NjQgbGFzdDtcbitcbitcdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4rXG4rXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuK1x0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuK1x0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuK1xuK1x0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuK31cbitcbiAvKipcbiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXG4gICogQGNydGM6IERSTSBjcnRjXG5AQCAtMTMxMSwyNiArMTMzNywyMCBAQCBpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB7XG4gXHRzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy1cdTAwM2VkZXY7XG4gXHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuLVx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG4gXHRpbnQgcmV0O1xuLVx0dTY0IGxhc3Q7XG4gXG4gXHRyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpO1xuIFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcInZibGFuayBub3QgYXZhaWxhYmxlIG9uIGNydGMgJWksIHJldD0laVxcblwiLFxuIFx0XHQgICAgIHBpcGUsIHJldCkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpO1xuLVxuLVx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cdTAwM2VxdWV1ZSxcbi1cdFx0XHRcdCBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSxcbi1cdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcbitcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcbi1cdGRybV9XQVJOKGRldiwgcmV0ID09IDAsIFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXG5cIiwgcGlwZSk7XG4rXHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcInZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXFxuXCIsIHBpcGUpO1xuIFxuIFx0ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTtcbiBcbi1cdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcbitcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjI0LjkxNjgxNzgzM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTA5NjQ3ODI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERSTSBQYXRjaCBmb3IgUG90ZW50aWFsIEtNU0FOIENvbmNlcm5zKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBNeSBpbml0aWFsIHJlYWQgaW5kaWNhdGVzIGl0J3MgZXh0cmFjdGluZyBhIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAsIGZyb20gdGhlIGV4aXN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGUgY29yZSBpZGVhIGlzIHRvIGVsaW1pbmF0ZSBhIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGFjcXVpc2l0aW9uLiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYWxyZWFkeSBjYWxscyBgZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKWAgc28gd2h5IGNhbGwgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIHNhbWUgYGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSlgPyBJdCB3YXMgbGlrZWx5IGNhdXNpbmcgYW4gaXNzdWUgb3IgYmVpbmcgb3B0aW1pemVkLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUsIGVzcGVjaWFsbHkgd2l0aCBrZXJuZWwgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHJlZmFjdG9yaW5nIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzLiBIb3dldmVyLCBsb29raW5nIGF0IHRoZSBjb2RlIGFuZCB0aGUgdmFyaWFibGVzIGludm9sdmVkIOKAkyBwb2ludGVycywgaW50ZWdlcnMsIGFuZCBhIHdhaXQgcXVldWUg4oCTIGl0IHNlZW1zIHVubGlrZWx5LiBUaGVyZSdzIG5vIG9idmlvdXMgcGF0aCB3aGVyZSB1bmluaXRpYWxpemVkIGRhdGEgaXMgYmVpbmcgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBObyBjb21wbGV4IHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCBvciB1c2VkIGluIGNvbmRpdGlvbmFsIGxvZ2ljLCBhbmQgdGhlIG5ldyBmdW5jdGlvbiBpdHNlbGYsIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLCBqdXN0IHVzZXMgYSBgd2FpdF9ldmVudF90aW1lb3V0YCBhbmQgZ2V0cyB0aGUgdmJsYW5rIGNvdW50LiBJdCdzIGVzc2VudGlhbGx5IGEgc3RyYWlnaHRmb3J3YXJkIHdhaXQuXG5cbkxldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgY29kZS5cblxuYGBgY1xuaW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG57XG5cdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcblx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcblx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG5cdGludCByZXQ7XG5cdHU2NCBsYXN0O1xuXG5cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG5cblx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cdTAwM2VxdWV1ZSxcblx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuXHRcdFx0XHQgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG5cblx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xufVxuYGBgXG5cbk9rYXksIEknbSBzYXRpc2ZpZWQuIEl0J3MganVzdCBhIGB3YWl0X2V2ZW50X3RpbWVvdXRgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbiB1c2UuIFRoZXJlJ3Mgbm8gcmlzay4gSSdtIGdvaW5nIHRvIHNldCBgTmVlZHNLTVNBTiA9IGZhbHNlYCBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE0OSwiT3V0cHV0VG9rZW5zIjoxNzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNzozNi4wMTMyOTkzNzNaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow6nn9r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 14:15:01 +0000 UTC FinishedAt: 2026-08-07 14:17:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_FBDEV_EMULATION", "DRM_VKMS", "DRM_VIRTIO_GPU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "DRM_FBDEV_EMULATION", "DRM_VKMS", "DRM_VIRTIO_GPU" ], "series_id": "ab1b8d03-a1ab-4a03-84f0-97f3f311f976" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "drm_client_modeset_wait_for_vblank", "drm_crtc_wait_one_vblank", "drm_crtc_wait_one_vblank_internal", "drm_fb_helper_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDssCiAgICAmIzM0O0RSTV9WSVJUSU9fR1BVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsJiMzNDssCiAgICAmIzM0O2RybV9mYl9oZWxwZXJfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgYnkgZXh0cmFjdGluZyBpdHMgY29yZSBsb2dpYyBpbnRvIGEgbmV3IGludGVybmFsIGZ1bmN0aW9uIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHRvIGF2b2lkIHRha2luZyBhIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhlIGNoYW5nZXMgb25seSBpbnZvbHZlIGNvbnRyb2wgZmxvdywgd2FpdCBxdWV1ZXMsIGFuZCByZWZlcmVuY2UgY291bnRpbmcuIE5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYXJlIGFsbG9jYXRlZCwgbm8gbWVtb3J5IGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB1c2VkIG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCAoZS5nLiwgdXNlLWFmdGVyLWZyZWUgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3IgTE9DS0RFUC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGJ5IGludHJvZHVjaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHdoaWNoIGF2b2lkcyB0YWtpbmcgYW4gZXh0cmEgdmJsYW5rIHJlZmVyZW5jZSB3aGVuIG9uZSBpcyBhbHJlYWR5IGhlbGQuIFRoaXMgaXMgdXNlZCBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgRFJNIGlvY3RscyBhbmQgZmJkZXYgZW11bGF0aW9uIChlLmcuLCBgRkJJT19XQUlURk9SVlNZTkNgIHZpYSBgZHJtX2ZiX2hlbHBlcl9pb2N0bGApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUyBvciB2aXJ0aW8tZ3B1LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjcwODY5OTM0OWEyMTgzOTg4ZDg4NjdlYzZmNjEzOTE5MWVjYmU2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTQ6MTY6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG5pbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbkBAIC0xMzI4LDcgJiM0MzsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGlcbiBcdCAqL1xuIFx0cmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTtcbiBcdGlmICghcmV0KSB7XG4tXHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbiYjNDM7XHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcdFx0ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuQEAgLTExNSw2ICYjNDM7MTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gdm9pZCBkcm1fdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG4gXG4gLyogZHJtX3ZibGFua193b3JrLmMgKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5pbmRleCBmOTBmYjJkMTNlNDIzLi5lMmJmNWVkNjU3MDAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuQEAgLTEyOTcsNiAmIzQzOzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB9XG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcbiBcbiYjNDM7LypcbiYjNDM7ICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuJiM0MzsgKiBAY3J0YzogRFJNIGNydGNcbiYjNDM7ICpcbiYjNDM7ICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFuayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLlxuJiM0MzsgKiBFdmVyeSBjYWxsZXIgbXVzdCBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSBhY3Jvc3MgdGhlIGNvbXBsZXRlIHdhaXQuXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Igb24gZmFpbHVyZXMuXG4mIzQzOyAqL1xuJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbiYjNDM7XHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuJiM0MztcdHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1x0dTY0IGxhc3Q7XG4mIzQzO1xuJiM0MztcdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4mIzQzO1xuJiM0MztcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXHUwMDNlcXVldWUsXG4mIzQzO1x0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuJiM0MztcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbiAgKiBAY3J0YzogRFJNIGNydGNcbkBAIC0xMzExLDI2ICYjNDM7MTMzNywyMCBAQCBpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB7XG4gXHRzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy1cdTAwM2VkZXY7XG4gXHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuLVx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG4gXHRpbnQgcmV0O1xuLVx0dTY0IGxhc3Q7XG4gXG4gXHRyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpO1xuIFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcJiMzNDt2Ymxhbmsgbm90IGF2YWlsYWJsZSBvbiBjcnRjICVpLCByZXQ9JWlcXG5cJiMzNDssXG4gXHRcdCAgICAgcGlwZSwgcmV0KSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4tXG4tXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuLVx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuLVx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuJiM0MztcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcbi1cdGRybV9XQVJOKGRldiwgcmV0ID09IDAsIFwmIzM0O3ZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXFxuXCYjMzQ7LCBwaXBlKTtcbiYjNDM7XHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxcblwmIzM0OywgcGlwZSk7XG4gXG4gXHRkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpO1xuIFxuLVx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNJiMzNDssCiAgICAmIzM0O0RSTV9GQkRFVl9FTVVMQVRJT04mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OywKICAgICYjMzQ7RFJNX1ZJUlRJT19HUFUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rJiMzNDssCiAgICAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwmIzM0OywKICAgICYjMzQ7ZHJtX2ZiX2hlbHBlcl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgYnkgaW50cm9kdWNpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgd2hpY2ggYXZvaWRzIHRha2luZyBhbiBleHRyYSB2YmxhbmsgcmVmZXJlbmNlIHdoZW4gb25lIGlzIGFscmVhZHkgaGVsZC4gVGhpcyBpcyB1c2VkIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBEUk0gaW9jdGxzIGFuZCBmYmRldiBlbXVsYXRpb24gKGUuZy4sIGBGQklPX1dBSVRGT1JWU1lOQ2AgdmlhIGBkcm1fZmJfaGVscGVyX2lvY3RsYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TIG9yIHZpcnRpby1ncHUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNzA4Njk5MzQ5YTIxODM5ODhkODg2N2VjNmY2MTM5MTkxZWNiZTYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAxNDoxNjoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwppbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCkBAIC0xMzI4LDcgJiM0MzsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGkKIAkgKi8KIAlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpOwogCWlmICghcmV0KSB7Ci0JCWRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTsKJiM0MzsJCWRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAkJZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCBmODkzYjFlM2E1OTZlLi42ZmQzMzY3MmQyMDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCkBAIC0xMTUsNiAmIzQzOzExNSw3IEBAIHZvaWQgZHJtX3ZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7CiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiAKIC8qIGRybV92Ymxhbmtfd29yay5jICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKaW5kZXggZjkwZmIyZDEzZTQyMy4uZTJiZjVlZDY1NzAwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCkBAIC0xMjk3LDYgJiM0MzsxMjk3LDMyIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpOwogCiYjNDM7LyoKJiM0MzsgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiYjNDM7ICogQGNydGM6IERSTSBjcnRjCiYjNDM7ICoKJiM0MzsgKiBUaGlzIHdhaXRzIGZvciBvbmUgdmJsYW5rIHRvIHBhc3Mgb24gQGNydGMsIHVzaW5nIHRoZSBpcnEgZHJpdmVyIGludGVyZmFjZXMuCiYjNDM7ICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlcy4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiYjNDM7CWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CiYjNDM7CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1NjQgbGFzdDsKJiM0MzsKJiM0MzsJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKJiM0MzsKJiM0MzsJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0mZ3Q7cXVldWUsCiYjNDM7CQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKJiM0MzsJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiAgKiBAY3J0YzogRFJNIGNydGMKQEAgLTEzMTEsMjYgJiM0MzsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiAJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwotCXU2NCBsYXN0OwogCiAJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAoZHJtX1dBUk4oZGV2LCByZXQsICYjMzQ7dmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXG4mIzM0OywKIAkJICAgICBwaXBlLCByZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKLQotCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAotCQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKLQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSk7CiYjNDM7CXJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAotCWRybV9XQVJOKGRldiwgcmV0ID09IDAsICYjMzQ7dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiYjMzQ7LCBwaXBlKTsKJiM0MzsJZHJtX1dBUk4oZGV2LCByZXQgPT0gLUVUSU1FRE9VVCwgJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxuJiMzNDssIHBpcGUpOwogCiAJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAotCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERSTSBTdWJzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIGBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNgIGFuZCBgZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY2AuIEludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgbmV3IGZ1bmN0aW9uLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCwgYW5kIHRoZXkmIzM5O3JlIHVzaW5nIGl0IHdpdGhpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGlzIGlzIGFsbCB3aXRoaW4gdGhlIERSTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBob3cgdmJsYW5rIGV2ZW50cyBhcmUgaGFuZGxlZC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBldmVuICpoYXBwZW4qIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IERSTSBpcyBkZWZpbml0ZWx5IHVzZWQgaW4gUUVNVSwgc28gdGhhdCYjMzk7cyBnb29kLiBXZSBzZWUgdmttcywgdmlydGlvLWdwdSwgYm9jaHMsIGFuZCBxeGwgYWxsIHVzaW5nIGl0IHRoZXJlLiBTbyB0aGUgcmVhY2ggaXMgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBpZiBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCBmb3IgdGhpcyB0byB3b3JrIHByb3Blcmx5LgoKSSYjMzk7bGwgc3RhcnQgYnkgbWFraW5nIHN1cmUgdGhhdCBgRFJNYCBpcyBlbmFibGVkIGFzIHRoYXQmIzM5O3MgdGhlIG9idmlvdXMgcHJlcmVxdWlzaXRlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBtaWdodCBiZSByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWctNy0jXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo4Om1lbnVjb25maWcgRFJNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIgRFJJIHN1cHBvcnQpXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MzQ9aWYgRFJNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjM2OmNvbmZpZyBEUk1fTUlQSV9EQklcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00MC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjQxOmNvbmZpZyBEUk1fTUlQSV9EU0lcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQyLVx0Ym9vbFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQ0LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NDU6Y29uZmlnIERSTV9LTVNfSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00Ni1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTEtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo1Mjpjb25maWcgRFJNX0RSQVdcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTUzLVx0Ym9vbFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTU1LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NTY6Y29uZmlnIERSTV9QQU5JQ1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTctXHRib29sIFwmIzM0O0Rpc3BsYXkgYSB1c2VyLWZyaWVuZGx5IG1lc3NhZ2Ugd2hlbiBhIGtlcm5lbCBwYW5pYyBvY2N1cnNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy02OC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjY5OmNvbmZpZyBEUk1fUEFOSUNfRk9SRUdST1VORF9DT0xPUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzAtXHRoZXggXCYjMzQ7RHJtIHBhbmljIHNjcmVlbiBmb3JlZ3JvdW5kIGNvbG9yLCBpbiBSR0JcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03My1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjc0OmNvbmZpZyBEUk1fUEFOSUNfQkFDS0dST1VORF9DT0xPUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzUtXHRoZXggXCYjMzQ7RHJtIHBhbmljIHNjcmVlbiBiYWNrZ3JvdW5kIGNvbG9yLCBpbiBSR0JcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03OC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjc5OmNvbmZpZyBEUk1fUEFOSUNfREVCVUdcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtBZGQgYSBkZWJ1ZyBmcyBlbnRyeSB0byB0cmlnZ2VyIGRybV9wYW5pY1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTg3LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6ODg6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTg5LVx0c3RyaW5nIFwmIzM0O1BhbmljIHNjcmVlbiBmb3JtYXR0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMDAtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMDE6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfQ09ERVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTAyLVx0Ym9vbCBcJiMzNDtBZGQgYSBwYW5pYyBzY3JlZW4gd2l0aCBhIFFSIGNvZGVcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMTEtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMTI6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfQ09ERV9VUkxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTExMy1cdHN0cmluZyBcJiMzNDtCYXNlIFVSTCBvZiB0aGUgUVIgY29kZSBpbiB0aGUgcGFuaWMgc2NyZWVuXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTIyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTIzOmNvbmZpZyBEUk1fUEFOSUNfU0NSRUVOX1FSX1ZFUlNJT05cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEyNC1cdGludCBcJiMzNDtNYXhpbXVtIHZlcnNpb24gKHNpemUpIG9mIHRoZSBRUiBjb2RlLlwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEzMi1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjEzMzpjb25maWcgRFJNX1JBU1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTM0LVx0Ym9vbCBcJiMzNDtEUk0gUkFTIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNDItXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNDM6Y29uZmlnIERSTV9ERUJVR19EUF9NU1RfVE9QT0xPR1lfUkVGU1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTQ0LSAgICAgICAgYm9vbCBcJiMzNDtFbmFibGUgcmVmY291bnQgYmFja3RyYWNlIGhpc3RvcnkgaW4gdGhlIERQIE1TVCBoZWxwZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTU3LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTU4OmNvbmZpZyBEUk1fREVCVUdfTU9ERVNFVF9MT0NLXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNTktXHRib29sIFwmIzM0O0VuYWJsZSBiYWNrdHJhY2UgaGlzdG9yeSBmb3IgbG9jayBjb250ZW50aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTcyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTczOmNvbmZpZyBEUk1fQ0xJRU5UXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzQtXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MTgyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xODMtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxODQ6Y29uZmlnIERSTV9MT0FEX0VESURfRklSTVdBUkVcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7QWxsb3cgdG8gc3BlY2lmeSBhbiBFRElEIGRhdGEgc2V0IGluc3RlYWQgb2YgcHJvYmluZyBmb3IgaXRcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0xOTY9c291cmNlIFwmIzM0O2RyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE5ODpjb25maWcgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTk5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMDYtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMDc6Y29uZmlnIERSTV9FWEVDXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMDgtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIxMi1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIxMzpjb25maWcgRFJNX0dQVVZNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTIyMT1jb25maWcgUlVTVF9EUk1fR1BVVk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjctXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMjg6Y29uZmlnIERSTV9HUFVTVk1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIyOS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjM2LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjM3OmNvbmZpZyBEUk1fQlVERFlcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzOC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQzLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjQ0OmNvbmZpZyBEUk1fVlJBTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI0NS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQ5LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjUwOmNvbmZpZyBEUk1fVFRNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjUxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNTktXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNjA6Y29uZmlnIERSTV9HRU1fRE1BX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjYxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNjgtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNjk6Y29uZmlnIERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNzAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTI3OD1jb25maWcgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4NC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI4NTpjb25maWcgRFJNX1NVQkFMTE9DX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjg2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODgtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyODk6Y29uZmlnIERSTV9TQ0hFRFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjkwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTMtIyBTZXBhcmF0ZSBvcHRpb24gYXMgbm90IGFsbCBEUk0gZHJpdmVycyB1c2UgaXRcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI5NDpjb25maWcgRFJNX1BBTkVMX0JBQ0tMSUdIVF9RVUlSS1NcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5NS1cdHRyaXN0YXRlXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTYtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyOTc6Y29uZmlnIERSTV9QUklWQUNZX1NDUkVFTlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjk4LVx0Ym9vbFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTM2OD1lbmRpZlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3MC0jIFNlcGFyYXRlIG9wdGlvbiBiZWNhdXNlIGRybV9wYW5lbF9vcmllbnRhdGlvbl9xdWlya3MuYyBpcyBzaGFyZWQgd2l0aCBmYmRldlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MzcxOmNvbmZpZyBEUk1fUEFORUxfT1JJRU5UQVRJT05fUVVJUktTXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNzItXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBWYmxhbmsgU3luY2hyb25pemF0aW9uIENoYW5nZXMqKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBhbmQgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLCBpbnRlcmVzdGluZy4gVGhhdCBzdWdnZXN0cyB0aGVyZSYjMzk7cyBzb21lIGtpbmQgb2YgbW9kaWZpY2F0aW9uLCBwZXJoYXBzIG9wdGltaXphdGlvbiwgb3IgYnVnIGZpeCByZWxhdGVkIHRvIFZCTEFOSyBzeW5jaHJvbml6YXRpb24uIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBrbm9jay1vbiBlZmZlY3RzLiBBbnkgY2hhbmdlIGluIHRob3NlIHdhaXQgZnVuY3Rpb25zIGNhbiBjYXNjYWRlIHRocm91Z2ggYSBsb3Qgb2YgY29kZS4KCk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIHBhdGNoJiMzOTtzIGltcGFjdC4gSXMgaXQgdXNlZCBpbiBjcml0aWNhbCBwYXRocyBmb3IgcmVuZGVyaW5nIG9yIG1vZGVzZXR0aW5nPyBJcyBpdCB1c2VkIGluIGluZnJlcXVlbnQgc2NlbmFyaW9zPyBUaGF0IHdpbGwgZHJhbWF0aWNhbGx5IGFmZmVjdCBob3cgc2VyaW91c2x5IEkgbmVlZCB0byB0YWtlIHRoZXNlIGNoYW5nZXMuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ2l0IGdyZXBgIG9yIHNpbWlsYXIgdG8gZmluZCBhbGwgb2NjdXJyZW5jZXMgYW5kIHRoZW4gZGlnIGludG8gdGhlIHJlbGV2YW50IGNvZGUgc2VnbWVudHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM9MTI5NT1FWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF9kcG1zKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5Ny0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMjk4OiAqIGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsoKSAtIFdhaXQgZm9yIHRoZSBuZXh0IFZCTEFOSyB0byBvY2N1clxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEyOTktICogQGNsaWVudDogRFJNIGNsaWVudFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzA4LSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jOjEzMDk6aW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGludCBjcnRjX2luZGV4KVxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMTAte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzM4LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzM5OkVYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTM0MC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTMxNT1zdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0zMjYtXHRpZiAoY3J0Y19pbmRleCBcdTAwM2U9IDApXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjMyNzpcdFx0ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhcdTAwMjZoZWxwZXItXHUwMDNlY2xpZW50LCBjcnRjX2luZGV4KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMzI4LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmhlbHBlci1cdTAwM2Vsb2NrKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTk4ND1pbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTEwMDktXHRcdCAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYzoxMDEwOlx0XHRyZXQgPSBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKFx1MDAyNmZiX2hlbHBlci1cdTAwM2VjbGllbnQsIDApO1xuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0xMDExLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjE4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVmJsYW5rIFN5bmNocm9uaXphdGlvbiBpbiB0aGUgRFJNIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdmJsYW5rIHN5bmNocm9uaXphdGlvbiBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChEUk0pIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBpcyBhIGtleSBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGVtcGxveWVkIHdpdGhpbiBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgYW5kIGBkcm1fZmJfaGVscGVyX2lvY3RsYC4gVGhhdCBsYXN0IG9uZSBpcyBpbnRlcmVzdGluZzsgaXQgbWVhbnMgd2UgY2FuIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyB2Ymxhbmsgd2FpdCB0aHJvdWdoIGFuIGlvY3RsIGNhbGwgZGlyZWN0bHkgb24gdGhlIGZyYW1lYnVmZmVyIGRldmljZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKVG8gZ2V0IGEgYnJvYWRlciBwaWN0dXJlIG9mIHZibGFuayBtYW5hZ2VtZW50LCBJJiMzOTtsbCBub3cgc2hpZnQgbXkgZm9jdXMgdG8gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIEl0JiMzOTtzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBhIGNyaXRpY2FsIHN5bmNocm9uaXphdGlvbiBwb2ludC4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdHJhY2UgaXRzIHVzYWdlIHRocm91Z2hvdXQgdGhlIERSTSBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgaG93IHZibGFuayBzeW5jaHJvbml6YXRpb24gaXMgaW1wbGVtZW50ZWQgYW5kIHdoZXJlIGl0cyBpbXBhY3RzIGFyZSBmZWx0LiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB2YXJpb3VzIERSTSBjb21wb25lbnRzIGFuZCB0aGVpciByZWxpYW5jZSBvbiB0aGlzIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYz0yMjg3PXN0YXRpYyB2b2lkIGRybV9kcF9hdXhfY3JjX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYy0yMzAwLVx0d2hpbGUgKGNydGMtXHUwMDNlY3JjLm9wZW5lZCkge1xuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jOjIzMDE6XHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYy0yMzAyLVx0XHRpZiAoIWNydGMtXHUwMDNlY3JjLm9wZW5lZClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM9MTMwOT1pbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzAtXHRpZiAoIXJldCkge1xuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jOjEzMzE6XHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYy0xMzMyLVx0XHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaD0xMTc9dTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjExODppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMTE5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM9MTI5OD1FWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwMC0vKlxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYzoxMzAxOiAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwMi0gKiBAY3J0YzogRFJNIGNydGNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMDgtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzMDk6aW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMTAte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMyNi0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMyNzogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMjgtICogQGNydGM6IERSTSBjcnRjXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzM1LSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYzoxMzM2OmludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzM3LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzNDYtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzNDc6XHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzNDgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzU0LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTM1NTpFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzNTYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmM9Njc9dm9pZCBpbnRlbF9jcnRjX3dhaXRfZm9yX25leHRfdmJsYW5rKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmMtNjgte1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmM6Njk6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXHUwMDI2Y3J0Yy1cdTAwM2ViYXNlKTtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jLTcwLX1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYz0yMTM9c3RhdGljIGludCBpbmdlbmljX2RybV91cGRhdGVfcGl4Y2xrKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2luZ2VuaWMvaW5nZW5pYy1kcm0tZHJ2LmMtMjIyLVx0XHRwcml2LVx1MDAzZXVwZGF0ZV9jbGtfcmF0ZSA9IHRydWU7XG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYzoyMjM6XHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhcdTAwMjZwcml2LVx1MDAzZWNydGMpO1xuZHJpdmVycy9ncHUvZHJtL2luZ2VuaWMvaW5nZW5pYy1kcm0tZHJ2LmMtMjI0LVx0XHRyZXR1cm4gTk9USUZZX09LO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jPTgwNT1zdGF0aWMgdm9pZCBtdGtfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmMtODM2LVx0LyogV2FpdCBmb3IgcGxhbmVzIHRvIGJlIGRpc2FibGVkICovXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYzo4Mzc6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jPTM2PXN0YXRpYyB2b2lkIHN0aV9jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmMtNDQtXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmM6NDU6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmMtNDYtfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jPTE3NzE9c3RhdGljIGludCB0ZWdyYV9kY19zaG93X2NyYyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMtMTc4OC1cbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jOjE3ODk6XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXHUwMDI2ZGMtXHUwMDNlYmFzZSk7XG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYzoxNzkwOlx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFx1MDAyNmRjLVx1MDAzZWJhc2UpO1xuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMtMTc5MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjA0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERSTSB2YmxhbmsgUmVmZXJlbmNlIEJ1ZyBhbmQgU29sdXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBidWcgaW4gdGhlIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGdvb2QsIGJlY2F1c2UgdGhlc2UgbG93LWxldmVsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgY2FuIGJlIGEgbmlnaHRtYXJlIHRvIGRlYnVnIGluIHRoZSBmaWVsZC4gSXQgbG9va3MgbGlrZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2Agd2FzIHVubmVjZXNzYXJpbHkgY2FsbGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCwgd2hpY2ggdGhlbiBjYWxscyBgZHJtX3ZibGFua19nZXRgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbHJlYWR5IHRha2VzIGNhcmUgb2YgZ2V0dGluZyBhbmQgcHV0dGluZyB0aGUgdmJsYW5rIHJlZmVyZW5jZSB1c2luZyBgZHJtX2NydGNfdmJsYW5rX2dldGAuIFRoaXMgY3JlYXRlcyBhbiBpbWJhbGFuY2UsIGFuZCB0aGF0JiMzOTtzIGEgcmVjaXBlIGZvciBhbGwgc29ydHMgb2YgdGltaW5nIGlzc3VlcywgZGVhZGxvY2tzLCBvciByZXNvdXJjZSBsZWFrcy4KClRoZSBzb2x1dGlvbiBsb29rcyBjbGVhbi4gVGhleSYjMzk7dmUgZmFjdG9yZWQgb3V0IHRoZSB2YmxhbmsgcmVmZXJlbmNlIG1hbmFnZW1lbnQgaW50byBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiB1c2VkIGJ5IGJvdGggYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgKHdoaWNoIHJldGFpbnMgdGhlIGdldC9wdXQpIGFuZCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgKHdoaWNoIGFscmVhZHkgaGFuZGxlcyBpdCkuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgd2F5IHRvIHNpbXBsaWZ5IHRoZSBjb2RlIGFuZCBwcmV2ZW50IHRoZSByZWZlcmVuY2UgZG91YmxlLWRpcHBpbmcuCgpUaGUgcXVlc3Rpb24gbm93IGJlY29tZXMsIGlzIHRoaXMgY29kZSBwYXRoIGFjdHVhbGx5IHJlYWNoYWJsZT8gSSBrbm93IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBpcyB1c2VkIGJ5IERSTSBjbGllbnRzLCBwYXJ0aWN1bGFybHkgdGhvc2UgaW1wbGVtZW50aW5nIGZyYW1lIGJ1ZmZlciBkZXZpY2UgKGZiZGV2KSBlbXVsYXRpb24uIEkgcmVjYWxsIGBkcm1fZmJfaGVscGVyX2lvY3RsYCB1c2luZyBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgZm9yIGBGQklPX1dBSVRGT1JWU1lOQ2AuIEJpbmdvLCB0aGF0IG1ha2VzIGl0IHJlYWNoYWJsZSBhbmQgZGVmaW5pdGVseSB0ZXN0YWJsZSEgSSBzaG91bGQgZm9jdXMgb24gdGVzdGluZyB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCB0byB2ZXJpZnkgdGhhdCB0aGUgZml4IGFkZHJlc3NlcyB0aGUgaXNzdWUgY29ycmVjdGx5LiBBbHNvLCBgZHJtX2ZiX2hlbHBlcl9pb2N0bGAgYW5kIGBkcm1fZmJfaGVscGVyX2ZiX2RpcnR5YCBhcmUgZ29vZCBjYW5kaWRhdGVzIHRvIHRlc3QgdG9vLCBnaXZlbiB0aGVpciByZWxhdGlvbnNoaXAgdG8gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLgoKQWxyaWdodCwgSSYjMzk7bGwgcHVsbCB1cCBgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuY2AgYW5kIGNoZWNrIGlmIHRoYXQgY29kZSBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IG9yIHJlcXVpcmVzIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCYjMzk7bGwgaW5mbHVlbmNlIGhvdyBkaWZmaWN1bHQgaXQgaXMgdG8gc2V0IHVwIGEgdGVzdCBlbnZpcm9ubWVudCB0byBleGVyY2lzZSB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJtX2ZiX2hlbHBlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xNTk9ZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX1BBTkVMX0JSSURHRSkgJiM0Mzs9IGJyaWRnZS9wYW5lbC5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTYwOmRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICYjNDM7PSBkcm1fZmJfaGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xNjEtb2JqLSQoQ09ORklHX0RSTV9LTVNfSEVMUEVSKSAmIzQzOz0gZHJtX2ttc19oZWxwZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjE5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3aG8gd29ya3Mgd2l0aCB0aGlzIGNvZGUgcmVndWxhcmx5OgoKKipNeSBEZWR1Y3Rpb25zIG9uIERSTSBGcmFtZWJ1ZmZlciBFbXVsYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIG1lIHRoYXQgSSBuZWVkIGBDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTmAgZm9yIGBkcm1fZmJfaGVscGVyLm9gLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGUgZnJhbWVidWZmZXIgZW11bGF0aW9uIG1vZHVsZSBpcyB0aGUgYnJpZGdlIGJldHdlZW4gdGhlIG9sZCBmcmFtZWJ1ZmZlciBjb2RlIGFuZCB0aGUgbmV3ZXIgRFJNIHdvcmxkLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBwcm92aWRpbmcgYSBsZWdhY3kgaW50ZXJmYWNlLiBOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfRFJNX0NMSUVOVGAgaXMgZW5hYmxlZC4gSXQmIzM5O3MgYWxtb3N0IGFsd2F5cyBhIGdpdmVuLCBidXQgc29tZXRpbWVzIGEgZGVwZW5kZW5jeSBnZXRzIG1pc3NlZCBhbmQgaXQgcGF5cyB0byBjb25maXJtLiBJdCBpcyB0aGUgY29yZSBvZiBjbGllbnQgZHJpdmVycy4gSSBzaG91bGQgYWxzbyBzZWUgaWYgYENPTkZJR19EUk1fS01TX0hFTFBFUmAgaXMgYWxzbyBlbmFibGVkLiBJdCBwcm92aWRlcyB2YXJpb3VzIGtlcm5lbCBtb2RlIHNldHRpbmcgaGVscGVycy4gSXQgaXMgcHJvYmFibHkgaW1wb3J0YW50IHRvby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTkwMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UmIzM5O3ZlIGRlc2NyaWJlZDoKCioqRFJNIEZCREVWIEVtdWxhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzdGF0dXMgb2YgZnJhbWVidWZmZXIgZGV2aWNlIGVtdWxhdGlvbiB3aXRoaW4gdGhlIERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlci4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCwgYXMgYWx3YXlzLCBpcyB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgRFJNIGNsaWVudHMuIEkmIzM5O20gZ29pbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiBgRFJNX0ZCREVWX0VNVUxBVElPTmAuIFRpbWUgdG8gc2VlIGlmIGl0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBvciBidWlsdCBhcyBhIG1vZHVsZS4gRGVwZW5kaW5nIG9uIHRoYXQsIEkgY2FuIGluZmVyIHRoZSBjdXJyZW50IHN0YXRlIGFuZCwgZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgdmVyc2lvbiwgbWFrZSBhcHByb3ByaWF0ZSBjb25jbHVzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc9Mjg9bWVudSBcJiMzNDtTdXBwb3J0ZWQgRFJNIGNsaWVudHNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMwLVxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZzozMTpjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTlxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7RW5hYmxlIGxlZ2FjeSBmYmRldiBzdXBwb3J0IGZvciB5b3VyIG1vZGVzZXR0aW5nIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDIzNgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uc2lkZXJhdGlvbnMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3ZWxsLXZlcnNlZCBpbiB0aGlzIGFyZWE6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBEUk0vRnJhbWVidWZmZXIgRW11bGF0aW9uKioKCkFscmlnaHQsIHRoaW5raW5nIGFib3V0IHRoaXMgRFJNIHNldHVwLCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBlbmFibGluZyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaXMgYSBzb2xpZCBtb3ZlLiBJdCYjMzk7cyBhIGtleSBwaWVjZSBpbiBhbGxvd2luZyB0aGUgRFJNIHN1YnN5c3RlbSB0byBwbGF5IG5pY2VseSB3aXRoIHRoZSBsZWdhY3kgZnJhbWVidWZmZXIgZGV2aWNlIGRyaXZlcnMsIHdoaWNoIGlzIG9mdGVuIGNydWNpYWwgZm9yIHdpZGVyIGNvbXBhdGliaWxpdHkgYW5kIGdyYWNlZnVsIGZhbGxiYWNrLiBUaGVuLCBuYXR1cmFsbHksIEkmIzM5O2QgYnJpbmcgaW4gYERSTV9LTVNfSEVMUEVSYCBhbmQgdGhlIGBEUk1gIGRyaXZlciBpdHNlbGY7IHRob3NlIGFyZSBmb3VuZGF0aW9uYWwgdG8gYW55IEtNUy9EUk0gaW1wbGVtZW50YXRpb24sIG9mIGNvdXJzZS4gV2l0aG91dCB0aGVtLCB5b3UmIzM5O3JlIG5vdCBnZXR0aW5nIGFueXdoZXJlLgoKVGhlIG5leHQgcXVlc3Rpb24gaW4gbXkgbWluZCBpcyBhbHdheXMgdG8gY2hlY2sgdGhlIGNvbXBpbGF0aW9uIG9mIGNlcnRhaW4gc3BlY2lmaWMgZmlsZXMuIE5vdywgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYGRybV9jbGllbnRfbW9kZXNldC5jYCBpcyBjb21waWxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZXJlJiMzOTtzIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbnZvbHZlZC4gVGhhdCBvbmUmIzM5O3MgcGFydGljdWxhcmx5IGltcG9ydGFudCwgYmVjYXVzZSBpdCBvZnRlbiBoYW5kbGVzIHRoZSBoaWdoZXItbGV2ZWwgY2xpZW50IG1vZGUgc2V0dGluZyBmdW5jdGlvbmFsaXR5LCBhbmQgSSB3b3VsZCB3YW50IHRoYXQgaW5jbHVkZWQgaW4gbXkgc3RhbmRhcmQgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkcm1fY2xpZW50X21vZGVzZXQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9NzY9ZHJtLSQoQ09ORklHX0RSTV9DTElFTlQpICYjNDM7PSBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03OC1cdGRybV9jbGllbnRfZXZlbnQubyBcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjc5Olx0ZHJtX2NsaWVudF9tb2Rlc2V0Lm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS04MC1cdGRybV9jbGllbnRfc3lzcnEub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY2MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyAtIERSTSBDbGllbnQqKgoKUmlnaHQsIHNvIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBkZXBlbmRlbmN5IGhlcmUg4oCTIGl0JiMzOTtzIHN1Z2dlc3RpbmcgdGhhdCBgQ09ORklHX0RSTV9DTElFTlRgIGlzIGEgY3JpdGljYWwgcmVxdWlyZW1lbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkcmlsbCBkb3duIGludG8gdGhlIEtjb25maWcgc3RydWN0dXJlIHRvIGNvbmZpcm0gd2hhdCB0aGlzIGFjdHVhbGx5IGVudGFpbHMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgRFJNX0NMSUVOVGAgd2l0aGluIGBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ2AuIFRoaXMgd2lsbCBwcm92aWRlIHRoZSBjcnVjaWFsIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgcGFydGljdWxhciBjb25maWcgc2V0dGluZyBhbmQgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCBpdCwgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiBpdCYjMzk7cyB0aWVkIHRvIGFueSBzcGVjaWZpYyBEUk0gZHJpdmVyIG9yIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fQ0xJRU5UJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MTU4PWNvbmZpZyBEUk1fREVCVUdfTU9ERVNFVF9MT0NLXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTcyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTczOmNvbmZpZyBEUk1fQ0xJRU5UXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzQtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTc0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgSGlkZGVuIEJvb2xlYW4gRmxhZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJiMzOTt2ZSBnb3QgYSBodW5jaC4gVGhpcyBzbWVsbHMgbGlrZSBhIGhpZGRlbiBib29sZWFuLCBsaWtlbHkgY29udHJvbGxlZCBieSBgRFJNX0ZCREVWX0VNVUxBVElPTmAuIE15IGd1dCB0ZWxscyBtZSB0aGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhpcyBzdXNwaWNpb24sIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGJldHRlci4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBEUk1fRkJERVZfRU1VTEFUSU9OYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgZmxhZyBlbmFibGVzIG9yIGRpc2FibGVzLCBhbmQgdGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYW5zd2VyIEkgYW0gbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnPTI4PW1lbnUgXCYjMzQ7U3VwcG9ydGVkIERSTSBjbGllbnRzXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZy0zMC1cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MzE6Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMzItXHRib29sIFwmIzM0O0VuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiBhbmQgdGFyZ2V0ZWQgYXQgYSBmZWxsb3cgZXhwZXJ0OgoKKipBbmFseXppbmcgdGhlIERSTV9GQkRFVl9FTVVMQVRJT04gQmxvY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBEUk1fRkJERVZfRU1VTEFUSU9OYCBibG9jay4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIEkgZ3Jhc3AgYWxsIHRoZSBpbXBsaWNhdGlvbnMuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgdGhlIHN1cmZhY2UgbGV2ZWw7IEkgbmVlZCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBtZWNoYW5pY3Mgb2YgaG93IHRoaXMgZW11bGF0aW9uIHdvcmtzIGFuZCBob3cgaXQgaW50ZWdyYXRlcyB3aXRoIHRoZSByZXN0IG9mIHRoZSBEUk0vS01TIHN0YWNrLiBXaGF0IGFyZSB0aGUga2V5IGZ1bmN0aW9uYWxpdGllcyBiZWluZyBlbXVsYXRlZD8gV2hpY2ggc3BlY2lmaWMgRkJERVYgYmVoYXZpb3JzIGFyZSBiZWluZyByZXBsaWNhdGVkLCBhbmQgd2h5IGlzIHRoaXMgZW11bGF0aW9uIG5lY2Vzc2FyeSBpbiB0aGlzIHNwZWNpZmljIGNvbnRleHQ/CgpJIHdhbnQgdG8gbG9vayBmb3IgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyB0aGF0IG1pZ2h0IGFyaXNlLiBUaGlzIGVtdWxhdGlvbiBsYXllciBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgYSBwZXJmb3JtYW5jZSBvdmVyaGVhZCB0aGF0IHdlIG11c3QgdW5kZXJzdGFuZCBhbmQgbWl0aWdhdGUuIEkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBzcGVjaWZpYyB1c2UgY2FzZXMgZHJpdmluZyB0aGlzIGltcGxlbWVudGF0aW9uLiBJcyBpdCBwcmltYXJpbHkgZm9yIGxlZ2FjeSBhcHBsaWNhdGlvbnMsIG9yIGFyZSB0aGVyZSBvdGhlciByZWFzb25zIHRoaXMgZW11bGF0aW9uIGlzIGNob3Nlbj8KCkkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjcnVjaWFsIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgaW52b2x2ZWQgaW4gdGhpcyBibG9jay4gSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvZGUgYW5kIGFuYWx5emUgdGhlbSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgaG9va3Mgb3IgaW50ZXJhY3Rpb25zIHdpdGggdGhlIERSTSBjb3JlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3NzaWJsZSByYWNlcywgcmVzb3VyY2UgY29udGVudGlvbiBpc3N1ZXMsIGFuZCBob3cgZXJyb3IgY29uZGl0aW9ucyBhcmUgaGFuZGxlZC4gQWxzbywgaXQgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHRoaW5rIGFib3V0IHRoZSBpbXBhY3Qgb2YgdGhpcyBibG9jayBvbiB0aGUgZ3JhcGhpY3Mgc3RhY2smIzM5O3Mgb3ZlcmFsbCBzdGFiaWxpdHkuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IGRldmlhdGlvbnMgZnJvbSB0aGUgc3RhbmRhcmQgRFJNL0tNUyBiZWhhdmlvci4gV2hhdCBjb3JuZXJzIGFyZSBiZWluZyBjdXQgaGVyZSwgYW5kIHdoYXQgYXJlIHRoZSB0cmFkZS1vZmZzPyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGVtdWxhdGlvbiBpcyBhIHdlbGwtZGVmaW5lZCBhYnN0cmFjdGlvbiBvciBhIG1vcmUgY29tcGxleCB3b3JrLWFyb3VuZC4gVGhlIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGRldGFpbGVkIGVub3VnaCB0byBleHBsYWluIGFueSBhcmNoaXRlY3R1cmFsIGRlY2lzaW9ucy4KCkZpbmFsbHksIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB0aG9yb3VnaGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyB0aGlzIGJsb2NrIGhhcyBmb3IgZHJpdmVyIG1haW50YWluYWJpbGl0eS4gV2lsbCB0aGlzIGNvbXBsaWNhdGUgZnV0dXJlIHVwZGF0ZXMgb3IgcHJldmVudCB0aGUgYWRvcHRpb24gb2YgbmV3LCBhZHZhbmNlZCBmZWF0dXJlcz8gSSYjMzk7bGwgbmVlZCB0byBhc3Nlc3MgdGhlIGxldmVsIG9mIGNvZGUgY29tcGxleGl0eSBhbmQgcG90ZW50aWFsIGZvciBjcmVhdGluZyBhIG1haW50ZW5hbmNlIGJ1cmRlbiBkb3duIHRoZSByb2FkLiBUaGlzIG92ZXJhbGwgYXNzZXNzbWVudCB3aWxsIG5lZWQgdG8gaW5mb3JtIG15IHZpZXcgb24gaXRzIGRlc2lnbiBhbmQgaG93IGl0IGlzIGludGVncmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzE6XHRjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTlxuICAzMjpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgbGVnYWN5IGZiZGV2IHN1cHBvcnQgZm9yIHlvdXIgbW9kZXNldHRpbmcgZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRkZXBlbmRzIG9uIERSTV9DTElFTlRfU0VMRUNUSU9OXG4gIDM0Olx0XHRzZWxlY3QgRFJNX0NMSUVOVFxuICAzNTpcdFx0c2VsZWN0IERSTV9DTElFTlRfU0VUVVBcbiAgMzY6XHRcdHNlbGVjdCBGUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZIGlmIEZSQU1FQlVGRkVSX0NPTlNPTEVcbiAgMzc6XHRcdGRlZmF1bHQgRkJcbiAgMzg6XHRcdGhlbHBcbiAgMzk6XHRcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEgbmVlZCBmb3IgdGhlIGxlZ2FjeSBmYmRldlxuICA0MDpcdFx0ICBzdXBwb3J0LiBOb3RlIHRoYXQgdGhpcyBzdXBwb3J0IGFsc28gcHJvdmlkZXMgdGhlIGxpbnV4IGNvbnNvbGVcbiAgNDE6XHRcdCAgc3VwcG9ydCBvbiB0b3Agb2YgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXIuXG4gIDQyOlx0XG4gIDQzOlx0XHQgIElmIGluIGRvdWJ0LCBzYXkgXCYjMzQ7WVwmIzM0Oy5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgRFJNX0ZCREVWX09WRVJBTExPQ1xuICA0NjpcdFx0aW50IFwmIzM0O092ZXJhbGxvY2F0aW9uIG9mIHRoZSBmYmRldiBidWZmZXJcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gRFJNX0ZCREVWX0VNVUxBVElPTlxuICA0ODpcdFx0ZGVmYXVsdCAxMDBcbiAgNDk6XHRcdGhlbHBcbiAgNTA6XHRcdCAgRGVmaW5lcyB0aGUgZmJkZXYgYnVmZmVyIG92ZXJhbGxvY2F0aW9uIGluIHBlcmNlbnQuIERlZmF1bHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwNjgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBkaXN0aWxsZWQgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaW1wbGllcyBhIGRlcGVuZGVuY3kgb24gYERSTV9DTElFTlRgLiBHb3QgaXQuIFdlIGRlZmluaXRlbHkgbmVlZCB0byBpbmNsdWRlIGJvdGggYERSTV9GQkRFVl9FTVVMQVRJT05gIGFuZCB0aGUgY29yZSBgRFJNYCBkcml2ZXIgaXRzZWxmLiBUaGF0JiMzOTtzIGZ1bmRhbWVudGFsLiBOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdmlydHVhbCBHUFUgZHJpdmVycyBmb3IgdGVzdGluZyB0aGlzLiBTaG91bGQgd2UgdXNlIGBEUk1fVktNU2Agb3IgbWF5YmUgYERSTV9WSVJUSU9fR1BVYD8gRWl0aGVyIHdvdWxkIGJlIGEgZ29vZCBjaG9pY2UgZm9yIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIGlmIGBEUk1fVktNU2AgaXMgZXZlbiBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlIGhhdmUgYSB2aWFibGUgb3B0aW9uIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fVktNUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yLVxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZzozOmNvbmZpZyBEUk1fVktNU1xuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBLTVMgKEVYUEVSSU1FTlRBTClcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTE4LVxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZzoxOTpjb25maWcgRFJNX1ZLTVNfS1VOSVRfVEVTVFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBWS01TXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgVmlydHVhbCBLTVMgRHJpdmVycyoqCgpBbHJpZ2h0LCBzbyBgRFJNX1ZLTVNgIC0gdGhhdCYjMzk7cyBhIHZpcnR1YWwgS01TIGRyaXZlciwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGNvbXBhcmUgdGhpcyB3aXRoIGBEUk1fVklSVElPX0dQVWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSB0d28gcmVsYXRlLiBJdCYjMzk7cyBhIGNvbW1vbiBhcmVhIG9mIGRyaXZlciBkZXZlbG9wbWVudCBhbmQgSSBuZWVkIHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3QgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX1ZJUlRJT19HUFUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc6Mjpjb25maWcgRFJNX1ZJUlRJT19HUFVcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VmlydGlvIEdQVSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMTUtXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc6MTY6Y29uZmlnIERSTV9WSVJUSU9fR1BVX0tNU1xuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnLTE3LVx0Ym9vbCBcJiMzNDtWaXJ0aW8gR1BVIGRyaXZlciBtb2Rlc2V0dGluZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODM1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIERSTSBWYmxhbmsgU3luY2hyb25pemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZXZhbHVhdGluZyBzb21lIGtlcm5lbCBEUk0gY29kZSwgYW5kIEkgc2VlIHRoYXQgZW5hYmxpbmcgYERSTV9WS01TYCBhbmQgYERSTV9WSVJUSU9fR1BVYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IHByaW1hcnkgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHZibGFuayBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcywgc28gSSYjMzk7bSBnb2luZyB0byBzdW1tYXJpemUgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIGVhY2ggb3RoZXIuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZXNlIGFzIHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBpbnZlc3RpZ2F0ZTogYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCwgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBJIHNlZSB0aGF0IGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzLCBpbnRlcmVzdGluZ2x5LCBub3QgZGlyZWN0bHkgZXhwb3J0ZWQuIEhvd2V2ZXIsIGl0JiMzOTtzIGNhbGxlZCBieSB0aGUgdHdvIGV4cG9ydGVkIGZ1bmN0aW9ucywgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgYW5kIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBBaCwgaXQgaXM7IGBFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmspO2AuIEdvb2QuIFNpbWlsYXJseSwgSSBzZWUgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgaXMgYWxzbyBleHBvcnRlZDogYEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtgLiBJJiMzOTtsbCBrZWVwIGFuIGV5ZSBvbiBob3cgdGhlc2UgYXJlIHVzZWQgaW4gcmVsYXRpb24gdG8gb3RoZXIgZXhwb3J0ZWQgZnVuY3Rpb25zLiBBcyBmb3IgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAsIGFsdGhvdWdoIGl0JiMzOTtzIG5vdCBleHBvcnRlZCwgaXQgaXMgaW4gYGRybV92YmxhbmsuY2AuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGl0IGlzIG5vdCBzdGF0aWMuCgpJIGFsc28gc2VlIHRoYXQgYGRybV9mYl9oZWxwZXJfaW9jdGxgIGFuZCBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgc2VlbSB0byBiZSByZWxldmFudCBiZWNhdXNlIHRoZXkgY2FsbCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFNvIEkmIzM5O2xsIGNoZWNrIHRob3NlIGFzIHdlbGwuIGBkcm1fZmJfaGVscGVyX2lvY3RsYCBpcyBleHBvcnRlZCBhbmQgYGRybV9mYl9oZWxwZXJfZmJfZGlydHlgIGlzIHN0YXRpYy4KCkxldCBtZSBjb25zb2xpZGF0ZSB0aGUgZm9jdXMgc3ltYm9sczoKCiogICBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AKKiAgIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgCiogICBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYAoqICAgYGRybV9mYl9oZWxwZXJfaW9jdGxgCgpBbmQgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWdzIGFyZToKCiogICBgRFJNYAoqICAgYERSTV9GQkRFVl9FTVVMQVRJT05gCiogICBgRFJNX1ZLTVNgCiogICBgRFJNX1ZJUlRJT19HUFVgCgpKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrLi4uIExldCBtZSBjb25maXJtIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzIG5vdCBzdGF0aWMuIE5vcGUsIGl0IGlzIGRlY2xhcmVkIGluIGBkcm1faW50ZXJuYWwuaGAuIEV4Y2VsbGVudC4gVGhhdCBjb25maXJtcyBpdCBhbmQgZ2l2ZXMgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM9MTI5OD1FWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwOC0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMxMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTMxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEeW5hbWljIE5hdHVyZSoqCgpSaWdodCwgc28gaXQmIzM5O3MgY2xlYXI6IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nICpkeW5hbWljKiBoZXJlLCBub3QgYSBmaXhlZCBzdGF0ZS4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gd2UgbmVlZCB0byBrZWVwIGluIG1pbmQuIFdlIGNhbiYjMzk7dCB0cmVhdCB0aGlzIGxpa2Ugc29tZSBraW5kIG9mIGltbXV0YWJsZSBjb25zdGFudC4gVGhpcyBkeW5hbWlzbSBpbXBhY3RzIG91ciBhcHByb2FjaCB0byB0aGUgcHJvYmxlbSBhbmQgYW55IHBvdGVudGlhbCBzb2x1dGlvbnMuCgpOb3csIHdpdGggdGhpcyBpbiBtaW5kLCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjay4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyBgZHJtX2ZiX2hlbHBlcl9pb2N0bGAgYW5kIHNlZSBob3cgaXQgcmVmbGVjdHMgdGhpcyBkeW5hbWljIGNoYXJhY3RlcmlzdGljLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBob3cgY2hhbmdlcyBtaWdodCBwcm9wYWdhdGUgdGhyb3VnaCB0aGF0IGlvY3RsLiBJJiMzOTtsbCBmb2N1cyBvbiBob3cgdGhlIGNhbGxzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHJlbGF0ZSB0byBzdGF0ZSBjaGFuZ2VzLCBhbmQgd2hhdCBoYXBwZW5zIHdoZW4gdGhhdCBzdGF0ZSBpc24mIzM5O3QgYXMgZGVmaW5lZCBpbml0aWFsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9mYl9oZWxwZXJfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM9OTczPUVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9zZXRjbWFwKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTk3NS0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6OTc2OiAqIGRybV9mYl9oZWxwZXJfaW9jdGwgLSBsZWdhY3kgaW9jdGwgaW1wbGVtZW50YXRpb25cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtOTc3LSAqIEBpbmZvOiBmYmRldiByZWdpc3RlcmVkIGJ5IHRoZSBoZWxwZXJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTk4My0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6OTg0OmludCBkcm1fZmJfaGVscGVyX2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy05ODUtXHRcdFx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0xMDE3LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MTAxODpFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaW9jdGwpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy0xMDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY2MAoJCQkJCQkJb3V0cHV0OiAyNTcKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWYmxhbmsgUmVmZXJlbmNlIENvdW50aW5nIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBwcm9ibGVtLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBpc3N1ZSBpbiBEUk0sIEkga25vdyB0aGUgdGVycml0b3J5IHdlbGwuIFRoZSBmaXggc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgdGhpcyBuZXcgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBFc3NlbnRpYWxseSwgaXQgcHJldmVudHMgdGhlIHN5c3RlbSBmcm9tIGdyYWJiaW5nIGFuICpleHRyYSogdmJsYW5rIHJlZmVyZW5jZSB3aGVuIGl0IGFscmVhZHkgaGFzIG9uZS4gU21hcnQuCgpJIGNhbiBzZWUgd2hlcmUgdGhpcyBjb21lcyBpbnRvIHBsYXk7IGl0JiMzOTtzIHVzZWQgd2l0aGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoZXNlIGFyZSBpbXBvcnRhbnQgZnVuY3Rpb25zLCBhcyB0aGV5IGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIERSTSBpb2N0bHMsIG9yIHRoZSBGQkRFViBlbXVsYXRpb24gbGF5ZXJzIChsaWtlIGBGQklPX1dBSVRGT1JWU1lOQ2AgdXNpbmcgYGRybV9mYl9oZWxwZXJfaW9jdGxgKSwgd2hpY2ggbWVhbnMgaXQgY2FuIGhhdmUgc29tZSB0YW5naWJsZSB1c2VyIGltcGFjdC4KClRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgYSBtaW5vciB0d2VhazsgdGhpcyBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQuIEkgdGhpbmsgSSYjMzk7bGwgY2FsbCBpdCBgc2V0LXJlc3VsdHNgLCBhcyB0aGlzIHNlZW1zIGxpa2UgYSByZWFsIGltcGFjdCB0byB0aGUgY29kZS4KSSB3b3VsZCB3YW50IHRvIHRlc3QgdGhpcyBjaGFuZ2UgdGhvcm91Z2hseSwgYW5kLCB0aGUgZ29vZCBuZXdzIGlzLCBJIGNhbiB0ZXN0IGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMgVktNUywgdmlydGlvLWdwdSwgdGhvc2UgdmlydHVhbCBEUk0gZHJpdmVycyBhcmUgbXkgZnJpZW5kcyBoZXJlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gcHV0IGl0IHRocm91Z2ggaXRzIHBhY2VzIGluIHRob3NlIHNldHRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNJiMzNDssCiAgICAmIzM0O0RSTV9GQkRFVl9FTVVMQVRJT04mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OywKICAgICYjMzQ7RFJNX1ZJUlRJT19HUFUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rJiMzNDssCiAgICAmIzM0O2RybV9jcnRjX3dhaXRfb25lX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwmIzM0OywKICAgICYjMzQ7ZHJtX2ZiX2hlbHBlcl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgYnkgaW50cm9kdWNpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgd2hpY2ggYXZvaWRzIHRha2luZyBhbiBleHRyYSB2YmxhbmsgcmVmZXJlbmNlIHdoZW4gb25lIGlzIGFscmVhZHkgaGVsZC4gVGhpcyBpcyB1c2VkIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBEUk0gaW9jdGxzIGFuZCBmYmRldiBlbXVsYXRpb24gKGUuZy4sIGBGQklPX1dBSVRGT1JWU1lOQ2AgdmlhIGBkcm1fZmJfaGVscGVyX2lvY3RsYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TIG9yIHZpcnRpby1ncHUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtEUk1fRkJERVZfRU1VTEFUSU9OJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDssCiAgICAmIzM0O0RSTV9WSVJUSU9fR1BVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayYjMzQ7LAogICAgJiMzNDtkcm1fY3J0Y193YWl0X29uZV92YmxhbmsmIzM0OywKICAgICYjMzQ7ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsJiMzNDssCiAgICAmIzM0O2RybV9mYl9oZWxwZXJfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGJ5IGludHJvZHVjaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHdoaWNoIGF2b2lkcyB0YWtpbmcgYW4gZXh0cmEgdmJsYW5rIHJlZmVyZW5jZSB3aGVuIG9uZSBpcyBhbHJlYWR5IGhlbGQuIFRoaXMgaXMgdXNlZCBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgRFJNIGlvY3RscyBhbmQgZmJkZXYgZW11bGF0aW9uIChlLmcuLCBgRkJJT19XQUlURk9SVlNZTkNgIHZpYSBgZHJtX2ZiX2hlbHBlcl9pb2N0bGApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUyBvciB2aXJ0aW8tZ3B1LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNzA4Njk5MzQ5YTIxODM5ODhkODg2N2VjNmY2MTM5MTkxZWNiZTYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAxNDoxNjoxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwppbmRleCAwMDgwYThlOTU1NmE1Li43ZmYwZjI0YTBmNTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jCkBAIC0xMzI4LDcgJiM0MzsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGkKIAkgKi8KIAlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpOwogCWlmICghcmV0KSB7Ci0JCWRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTsKJiM0MzsJCWRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAkJZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCBmODkzYjFlM2E1OTZlLi42ZmQzMzY3MmQyMDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCkBAIC0xMTUsNiAmIzQzOzExNSw3IEBAIHZvaWQgZHJtX3ZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7CiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiAKIC8qIGRybV92Ymxhbmtfd29yay5jICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMKaW5kZXggZjkwZmIyZDEzZTQyMy4uZTJiZjVlZDY1NzAwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jCkBAIC0xMjk3LDYgJiM0MzsxMjk3LDMyIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpOwogCiYjNDM7LyoKJiM0MzsgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiYjNDM7ICogQGNydGM6IERSTSBjcnRjCiYjNDM7ICoKJiM0MzsgKiBUaGlzIHdhaXRzIGZvciBvbmUgdmJsYW5rIHRvIHBhc3Mgb24gQGNydGMsIHVzaW5nIHRoZSBpcnEgZHJpdmVyIGludGVyZmFjZXMuCiYjNDM7ICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LgomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBvbiBmYWlsdXJlcy4KJiM0MzsgKi8KJiM0MztpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiYjNDM7CWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CiYjNDM7CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1NjQgbGFzdDsKJiM0MzsKJiM0MzsJbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKJiM0MzsKJiM0MzsJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay0mZ3Q7cXVldWUsCiYjNDM7CQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKJiM0MzsJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rCiAgKiBAY3J0YzogRFJNIGNydGMKQEAgLTEzMTEsMjYgJiM0MzsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLSZndDtkZXY7CiAJaW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsKLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKIAlpbnQgcmV0OwotCXU2NCBsYXN0OwogCiAJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKIAlpZiAoZHJtX1dBUk4oZGV2LCByZXQsICYjMzQ7dmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXG4mIzM0OywKIAkJICAgICBwaXBlLCByZXQpKQogCQlyZXR1cm4gcmV0OwogCi0JbGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTsKLQotCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAotCQkJCSBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSwKLQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSk7CiYjNDM7CXJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTsKIAotCWRybV9XQVJOKGRldiwgcmV0ID09IDAsICYjMzQ7dmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiYjMzQ7LCBwaXBlKTsKJiM0MzsJZHJtX1dBUk4oZGV2LCByZXQgPT0gLUVUSU1FRE9VVCwgJiMzNDt2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxuJiMzNDssIHBpcGUpOwogCiAJZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTsKIAotCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE0OQoJCQkJCQkJb3V0cHV0OiAxNzUKCQkJCQkJCXRob3VnaHRzOiA1MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEUk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBLTVNBTiBDb25jZXJucyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIE15IGluaXRpYWwgcmVhZCBpbmRpY2F0ZXMgaXQmIzM5O3MgZXh0cmFjdGluZyBhIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAsIGZyb20gdGhlIGV4aXN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGUgY29yZSBpZGVhIGlzIHRvIGVsaW1pbmF0ZSBhIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGFjcXVpc2l0aW9uLiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYWxyZWFkeSBjYWxscyBgZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKWAgc28gd2h5IGNhbGwgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIHNhbWUgYGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSlgPyBJdCB3YXMgbGlrZWx5IGNhdXNpbmcgYW4gaXNzdWUgb3IgYmVpbmcgb3B0aW1pemVkLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLCBlc3BlY2lhbGx5IHdpdGgga2VybmVsIGNvZGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyByZWZhY3RvcmluZyBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMuIEhvd2V2ZXIsIGxvb2tpbmcgYXQgdGhlIGNvZGUgYW5kIHRoZSB2YXJpYWJsZXMgaW52b2x2ZWQg4oCTIHBvaW50ZXJzLCBpbnRlZ2VycywgYW5kIGEgd2FpdCBxdWV1ZSDigJMgaXQgc2VlbXMgdW5saWtlbHkuIFRoZXJlJiMzOTtzIG5vIG9idmlvdXMgcGF0aCB3aGVyZSB1bmluaXRpYWxpemVkIGRhdGEgaXMgYmVpbmcgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBObyBjb21wbGV4IHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCBvciB1c2VkIGluIGNvbmRpdGlvbmFsIGxvZ2ljLCBhbmQgdGhlIG5ldyBmdW5jdGlvbiBpdHNlbGYsIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLCBqdXN0IHVzZXMgYSBgd2FpdF9ldmVudF90aW1lb3V0YCBhbmQgZ2V0cyB0aGUgdmJsYW5rIGNvdW50LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhIHN0cmFpZ2h0Zm9yd2FyZCB3YWl0LgoKTGV0IG1lIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlLgoKYGBgYwppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKewoJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtJmd0O2RldjsKCWludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7CglzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTsKCWludCByZXQ7Cgl1NjQgbGFzdDsKCglsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpOwoKCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstJmd0O3F1ZXVlLAoJCQkJIGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLAoJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpOwoKCXJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDsKfQpgYGAKCk9rYXksIEkmIzM5O20gc2F0aXNmaWVkLiBJdCYjMzk7cyBqdXN0IGEgYHdhaXRfZXZlbnRfdGltZW91dGAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGluIHVzZS4gVGhlcmUmIzM5O3Mgbm8gcmlzay4gSSYjMzk7bSBnb2luZyB0byBzZXQgYE5lZWRzS01TQU4gPSBmYWxzZWAgZm9yIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGJ5IGV4dHJhY3RpbmcgaXRzIGNvcmUgbG9naWMgaW50byBhIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCB0YWtpbmcgYSByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3csIHdhaXQgcXVldWVzLCBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIG1lbW9yeSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKGUuZy4sIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjEzLjk5ODIzNjc1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDE1MTMxNDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX0ZCREVWX0VNVUxBVElPTlwiLFxuICAgIFwiRFJNX1ZLTVNcIixcbiAgICBcIkRSTV9WSVJUSU9fR1BVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxcIixcbiAgICBcImRybV9mYl9oZWxwZXJfaW9jdGxcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBieSBpbnRyb2R1Y2luZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB3aGljaCBhdm9pZHMgdGFraW5nIGFuIGV4dHJhIHZibGFuayByZWZlcmVuY2Ugd2hlbiBvbmUgaXMgYWxyZWFkeSBoZWxkLiBUaGlzIGlzIHVzZWQgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdmlhIERSTSBpb2N0bHMgYW5kIGZiZGV2IGVtdWxhdGlvbiAoZS5nLiwgYEZCSU9fV0FJVEZPUlZTWU5DYCB2aWEgYGRybV9mYl9oZWxwZXJfaW9jdGxgKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBhbmQgY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdmlydHVhbCBEUk0gZHJpdmVycyBsaWtlIFZLTVMgb3IgdmlydGlvLWdwdS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MTMuOTk4MjQyNTQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTE2MzI3MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNzA4Njk5MzQ5YTIxODM5ODhkODg2N2VjNmY2MTM5MTkxZWNiZTYxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMTQ6MTY6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXFxuaW5kZXggMDA4MGE4ZTk1NTZhNS4uN2ZmMGYyNGEwZjUwMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcXG5AQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGlcXG4gXFx0ICovXFxuIFxcdHJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7XFxuIFxcdGlmICghcmV0KSB7XFxuLVxcdFxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcXG4rXFx0XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xcbiBcXHRcXHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcXG5pbmRleCBmODkzYjFlM2E1OTZlLi42ZmQzMzY3MmQyMDZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxcbkBAIC0xMTUsNiArMTE1LDcgQEAgdm9pZCBkcm1fdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbiBpbnQgZHJtX3ZibGFua19nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcXG4gdTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbitpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XFxuIFxcbiAvKiBkcm1fdmJsYW5rX3dvcmsuYyAqL1xcbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xcbmluZGV4IGY5MGZiMmQxM2U0MjMuLmUyYmY1ZWQ2NTcwMDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcXG5AQCAtMTI5Nyw2ICsxMjk3LDMyIEBAIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcXG4gXFxuKy8qXFxuKyAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcXG4rICogQGNydGM6IERSTSBjcnRjXFxuKyAqXFxuKyAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0YywgdXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy5cXG4rICogRXZlcnkgY2FsbGVyIG11c3QgaG9sZCBhIHZibGFuayByZWZlcmVuY2UgYWNyb3NzIHRoZSBjb21wbGV0ZSB3YWl0LlxcbisgKlxcbisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG9uIGZhaWx1cmVzLlxcbisgKi9cXG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuK3tcXG4rXFx0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXFx1MDAzZWRldjtcXG4rXFx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcXG4rXFx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XFxuK1xcdGludCByZXQ7XFxuK1xcdHU2NCBsYXN0O1xcbitcXG4rXFx0bGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTtcXG4rXFxuK1xcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXFx1MDAzZXF1ZXVlLFxcbitcXHRcXHRcXHRcXHQgbGFzdCAhPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSksXFxuK1xcdFxcdFxcdFxcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcXG4rXFxuK1xcdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcXG4rfVxcbitcXG4gLyoqXFxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcXG4gICogQGNydGM6IERSTSBjcnRjXFxuQEAgLTEzMTEsMjYgKzEzMzcsMjAgQEAgaW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXFxuIHtcXG4gXFx0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXFx1MDAzZWRldjtcXG4gXFx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcXG4tXFx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XFxuIFxcdGludCByZXQ7XFxuLVxcdHU2NCBsYXN0O1xcbiBcXG4gXFx0cmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTtcXG4gXFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcXFwidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgIHBpcGUsIHJldCkpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpO1xcbi1cXG4tXFx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cXHUwMDNlcXVldWUsXFxuLVxcdFxcdFxcdFxcdCBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSxcXG4tXFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xcbitcXHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuIFxcbi1cXHRkcm1fV0FSTihkZXYsIHJldCA9PSAwLCBcXFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXFxcblxcXCIsIHBpcGUpO1xcbitcXHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcXFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXFxcblxcXCIsIHBpcGUpO1xcbiBcXG4gXFx0ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTtcXG4gXFxuLVxcdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjoxNC40MTA2MDE1MzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MDUwNTQ1MTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkRSTV9GQkRFVl9FTVVMQVRJT05cIixcbiAgICBcIkRSTV9WS01TXCIsXG4gICAgXCJEUk1fVklSVElPX0dQVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtcIixcbiAgICBcImRybV9jcnRjX3dhaXRfb25lX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsXCIsXG4gICAgXCJkcm1fZmJfaGVscGVyX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB2YmxhbmsgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlIGJ5IGludHJvZHVjaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIHdoaWNoIGF2b2lkcyB0YWtpbmcgYW4gZXh0cmEgdmJsYW5rIHJlZmVyZW5jZSB3aGVuIG9uZSBpcyBhbHJlYWR5IGhlbGQuIFRoaXMgaXMgdXNlZCBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgRFJNIGlvY3RscyBhbmQgZmJkZXYgZW11bGF0aW9uIChlLmcuLCBgRkJJT19XQUlURk9SVlNZTkNgIHZpYSBgZHJtX2ZiX2hlbHBlcl9pb2N0bGApLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIERSTSBkcml2ZXJzIGxpa2UgVktNUyBvciB2aXJ0aW8tZ3B1LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNzA4Njk5MzQ5YTIxODM5ODhkODg2N2VjNmY2MTM5MTkxZWNiZTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAxNDoxNjoxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuaW5kZXggMDA4MGE4ZTk1NTZhNS4uN2ZmMGYyNGEwZjUwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jXG5AQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGlcbiBcdCAqL1xuIFx0cmV0ID0gZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKTtcbiBcdGlmICghcmV0KSB7XG4tXHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcbitcdFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFx0XHRkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuaW5kZXggZjg5M2IxZTNhNTk2ZS4uNmZkMzM2NzJkMjA2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oXG5AQCAtMTE1LDYgKzExNSw3IEBAIHZvaWQgZHJtX3ZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiBpbnQgZHJtX3ZibGFua19nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xuIHU2NCBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbitpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7XG4gXG4gLyogZHJtX3ZibGFua193b3JrLmMgKi9cbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZibGFua19mbHVzaF93b3JrZXIoc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXG5pbmRleCBmOTBmYjJkMTNlNDIzLi5lMmJmNWVkNjU3MDAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuQEAgLTEyOTcsNiArMTI5NywzMiBAQCB2b2lkIGRybV9jcnRjX3ZibGFua19wdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIH1cbiBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xuIFxuKy8qXG4rICogZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsIC0gd2FpdCBmb3Igb25lIHZibGFua1xuKyAqIEBjcnRjOiBEUk0gY3J0Y1xuKyAqXG4rICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFuayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLlxuKyAqIEV2ZXJ5IGNhbGxlciBtdXN0IGhvbGQgYSB2YmxhbmsgcmVmZXJlbmNlIGFjcm9zcyB0aGUgY29tcGxldGUgd2FpdC5cbisgKlxuKyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Igb24gZmFpbHVyZXMuXG4rICovXG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG4re1xuK1x0c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtXHUwMDNlZGV2O1xuK1x0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcbitcdHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9IGRybV9jcnRjX3ZibGFua19jcnRjKGNydGMpO1xuK1x0aW50IHJldDtcbitcdHU2NCBsYXN0O1xuK1xuK1x0bGFzdCA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKTtcbitcbitcdHJldCA9IHdhaXRfZXZlbnRfdGltZW91dCh2YmxhbmstXHUwMDNlcXVldWUsXG4rXHRcdFx0XHQgbGFzdCAhPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSksXG4rXHRcdFx0XHQgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG4rXG4rXHRyZXR1cm4gcmV0ID8gMCA6IC1FVElNRURPVVQ7XG4rfVxuK1xuIC8qKlxuICAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbiAgKiBAY3J0YzogRFJNIGNydGNcbkBAIC0xMzExLDI2ICsxMzM3LDIwIEBAIGludCBkcm1fY3J0Y193YWl0X29uZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuIHtcbiBcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbiBcdGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7XG4tXHRzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTtcbiBcdGludCByZXQ7XG4tXHR1NjQgbGFzdDtcbiBcbiBcdHJldCA9IGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSk7XG4gXHRpZiAoZHJtX1dBUk4oZGV2LCByZXQsIFwidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVpXFxuXCIsXG4gXHRcdCAgICAgcGlwZSwgcmV0KSlcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4tXG4tXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuLVx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuLVx0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuK1x0cmV0ID0gZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKGNydGMpO1xuIFxuLVx0ZHJtX1dBUk4oZGV2LCByZXQgPT0gMCwgXCJ2Ymxhbmsgd2FpdCB0aW1lZCBvdXQgb24gY3J0YyAlaVxcblwiLCBwaXBlKTtcbitcdGRybV9XQVJOKGRldiwgcmV0ID09IC1FVElNRURPVVQsIFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXG5cIiwgcGlwZSk7XG4gXG4gXHRkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpO1xuIFxuLVx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MTQuNDEwNjAyNzg0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1NTgyNzc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEUk0gU3Vic3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY2AgYW5kIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jYC4gSW50ZXJlc3RpbmcuIFRoZXkndmUgaW50cm9kdWNlZCBhIG5ldyBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAsIGFuZCB0aGV5J3JlIHVzaW5nIGl0IHdpdGhpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGlzIGlzIGFsbCB3aXRoaW4gdGhlIERSTSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBob3cgdmJsYW5rIGV2ZW50cyBhcmUgaGFuZGxlZC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gKmhhcHBlbiogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gRFJNIGlzIGRlZmluaXRlbHkgdXNlZCBpbiBRRU1VLCBzbyB0aGF0J3MgZ29vZC4gV2Ugc2VlIHZrbXMsIHZpcnRpby1ncHUsIGJvY2hzLCBhbmQgcXhsIGFsbCB1c2luZyBpdCB0aGVyZS4gU28gdGhlIHJlYWNoIGlzIHRoZXJlLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgZm9yIHRoaXMgdG8gd29yayBwcm9wZXJseS5cblxuSSdsbCBzdGFydCBieSBtYWtpbmcgc3VyZSB0aGF0IGBEUk1gIGlzIGVuYWJsZWQgYXMgdGhhdCdzIHRoZSBvYnZpb3VzIHByZXJlcXVpc2l0ZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBtaWdodCBiZSByZXF1aXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE1MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjE5Ljk2NjQzMzE3NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzI0OTE4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTctI1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjg6bWVudWNvbmZpZyBEUk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIgKFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlciBEUkkgc3VwcG9ydClcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0zND1pZiBEUk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzozNjpjb25maWcgRFJNX01JUElfREJJXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMzctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjQxOmNvbmZpZyBEUk1fTUlQSV9EU0lcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00Mi1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00NC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo0NTpjb25maWcgRFJNX0tNU19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTEtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NTI6Y29uZmlnIERSTV9EUkFXXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTMtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTUtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NTY6Y29uZmlnIERSTV9QQU5JQ1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkRpc3BsYXkgYSB1c2VyLWZyaWVuZGx5IG1lc3NhZ2Ugd2hlbiBhIGtlcm5lbCBwYW5pYyBvY2N1cnNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy02OC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo2OTpjb25maWcgRFJNX1BBTklDX0ZPUkVHUk9VTkRfQ09MT1JcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03MC1cXHRoZXggXFxcIkRybSBwYW5pYyBzY3JlZW4gZm9yZWdyb3VuZCBjb2xvciwgaW4gUkdCXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzMtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NzQ6Y29uZmlnIERSTV9QQU5JQ19CQUNLR1JPVU5EX0NPTE9SXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzUtXFx0aGV4IFxcXCJEcm0gcGFuaWMgc2NyZWVuIGJhY2tncm91bmQgY29sb3IsIGluIFJHQlxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTc4LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjc5OmNvbmZpZyBEUk1fUEFOSUNfREVCVUdcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy04MC1cXHRib29sIFxcXCJBZGQgYSBkZWJ1ZyBmcyBlbnRyeSB0byB0cmlnZ2VyIGRybV9wYW5pY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTg3LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjg4OmNvbmZpZyBEUk1fUEFOSUNfU0NSRUVOXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODktXFx0c3RyaW5nIFxcXCJQYW5pYyBzY3JlZW4gZm9ybWF0dGVyXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTAwLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjEwMTpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTAyLVxcdGJvb2wgXFxcIkFkZCBhIHBhbmljIHNjcmVlbiB3aXRoIGEgUVIgY29kZVxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTExMS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMTI6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfQ09ERV9VUkxcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMTMtXFx0c3RyaW5nIFxcXCJCYXNlIFVSTCBvZiB0aGUgUVIgY29kZSBpbiB0aGUgcGFuaWMgc2NyZWVuXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTIyLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjEyMzpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9WRVJTSU9OXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTI0LVxcdGludCBcXFwiTWF4aW11bSB2ZXJzaW9uIChzaXplKSBvZiB0aGUgUVIgY29kZS5cXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMzItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTMzOmNvbmZpZyBEUk1fUkFTXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTM0LVxcdGJvb2wgXFxcIkRSTSBSQVMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE0Mi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNDM6Y29uZmlnIERSTV9ERUJVR19EUF9NU1RfVE9QT0xPR1lfUkVGU1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE0NC0gICAgICAgIGJvb2wgXFxcIkVuYWJsZSByZWZjb3VudCBiYWNrdHJhY2UgaGlzdG9yeSBpbiB0aGUgRFAgTVNUIGhlbHBlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNTctXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTU4OmNvbmZpZyBEUk1fREVCVUdfTU9ERVNFVF9MT0NLXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTU5LVxcdGJvb2wgXFxcIkVuYWJsZSBiYWNrdHJhY2UgaGlzdG9yeSBmb3IgbG9jayBjb250ZW50aW9uXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTcyLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE3Mzpjb25maWcgRFJNX0NMSUVOVFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE3NC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0xODI9c291cmNlIFxcXCJkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE4My1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxODQ6Y29uZmlnIERSTV9MT0FEX0VESURfRklSTVdBUkVcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiQWxsb3cgdG8gc3BlY2lmeSBhbiBFRElEIGRhdGEgc2V0IGluc3RlYWQgb2YgcHJvYmluZyBmb3IgaXRcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0xOTY9c291cmNlIFxcXCJkcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE5Ny1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxOTg6Y29uZmlnIERSTV9UVE1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xOTktXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIwNi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMDc6Y29uZmlnIERSTV9FWEVDXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjA4LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMTItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjEzOmNvbmZpZyBEUk1fR1BVVk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTIyMT1jb25maWcgUlVTVF9EUk1fR1BVVk1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIyNy1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMjg6Y29uZmlnIERSTV9HUFVTVk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjktXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzNi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMzc6Y29uZmlnIERSTV9CVUREWVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIzOC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQzLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI0NDpjb25maWcgRFJNX1ZSQU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQ1LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDktXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjUwOmNvbmZpZyBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1MS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjU5LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI2MDpjb25maWcgRFJNX0dFTV9ETUFfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjYxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNjgtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjY5OmNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI3MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9Mjc4PWNvbmZpZyBSVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODQtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjg1OmNvbmZpZyBEUk1fU1VCQUxMT0NfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjg2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODgtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjg5OmNvbmZpZyBEUk1fU0NIRURcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5My0jIFNlcGFyYXRlIG9wdGlvbiBhcyBub3QgYWxsIERSTSBkcml2ZXJzIHVzZSBpdFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI5NDpjb25maWcgRFJNX1BBTkVMX0JBQ0tMSUdIVF9RVUlSS1NcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTUtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTYtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjk3OmNvbmZpZyBEUk1fUFJJVkFDWV9TQ1JFRU5cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTgtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MzY4PWVuZGlmXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNzAtIyBTZXBhcmF0ZSBvcHRpb24gYmVjYXVzZSBkcm1fcGFuZWxfb3JpZW50YXRpb25fcXVpcmtzLmMgaXMgc2hhcmVkIHdpdGggZmJkZXZcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzozNzE6Y29uZmlnIERSTV9QQU5FTF9PUklFTlRBVElPTl9RVUlSS1NcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNzItXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MjAuMDEzNjg3NzYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1NTc1NDg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBWYmxhbmsgU3luY2hyb25pemF0aW9uIENoYW5nZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGFuZCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AsIGludGVyZXN0aW5nLiBUaGF0IHN1Z2dlc3RzIHRoZXJlJ3Mgc29tZSBraW5kIG9mIG1vZGlmaWNhdGlvbiwgcGVyaGFwcyBvcHRpbWl6YXRpb24sIG9yIGJ1ZyBmaXggcmVsYXRlZCB0byBWQkxBTksgc3luY2hyb25pemF0aW9uLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGUga25vY2stb24gZWZmZWN0cy4gQW55IGNoYW5nZSBpbiB0aG9zZSB3YWl0IGZ1bmN0aW9ucyBjYW4gY2FzY2FkZSB0aHJvdWdoIGEgbG90IG9mIGNvZGUuXG5cbk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYC4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBhc3Nlc3MgdGhlIHBhdGNoJ3MgaW1wYWN0LiBJcyBpdCB1c2VkIGluIGNyaXRpY2FsIHBhdGhzIGZvciByZW5kZXJpbmcgb3IgbW9kZXNldHRpbmc/IElzIGl0IHVzZWQgaW4gaW5mcmVxdWVudCBzY2VuYXJpb3M/IFRoYXQgd2lsbCBkcmFtYXRpY2FsbHkgYWZmZWN0IGhvdyBzZXJpb3VzbHkgSSBuZWVkIHRvIHRha2UgdGhlc2UgY2hhbmdlcy4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgYGdpdCBncmVwYCBvciBzaW1pbGFyIHRvIGZpbmQgYWxsIG9jY3VycmVuY2VzIGFuZCB0aGVuIGRpZyBpbnRvIHRoZSByZWxldmFudCBjb2RlIHNlZ21lbnRzLiBMZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY4NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjI0LjE2OTQ0NTM3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODc3NDUwODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEyOTU9RVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X21vZGVzZXRfZHBtcyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5Ny0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTI5ODogKiBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKCkgLSBXYWl0IGZvciB0aGUgbmV4dCBWQkxBTksgdG8gb2NjdXJcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTI5OS0gKiBAY2xpZW50OiBEUk0gY2xpZW50XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMtMTMwOC0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTMwOTppbnQgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdW5zaWduZWQgaW50IGNydGNfaW5kZXgpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzgtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYzoxMzM5OkVYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzNDAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTMxNT1zdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2ZiX2RpcnR5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyNi1cXHRpZiAoY3J0Y19pbmRleCBcXHUwMDNlPSAwKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MzI3OlxcdFxcdGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmsoXFx1MDAyNmhlbHBlci1cXHUwMDNlY2xpZW50LCBjcnRjX2luZGV4KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTMyOC1cXHRtdXRleF91bmxvY2soXFx1MDAyNmhlbHBlci1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTk4ND1pbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAwOS1cXHRcXHQgKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjEwMTA6XFx0XFx0cmV0ID0gZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFuayhcXHUwMDI2ZmJfaGVscGVyLVxcdTAwM2VjbGllbnQsIDApO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAxMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MjQuNTU3Mzk2NTYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4OTAyMjc0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWYmxhbmsgU3luY2hyb25pemF0aW9uIGluIHRoZSBEUk0gU3Vic3lzdGVtKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdmJsYW5rIHN5bmNocm9uaXphdGlvbiBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChEUk0pIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBpcyBhIGtleSBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGVtcGxveWVkIHdpdGhpbiBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgYW5kIGBkcm1fZmJfaGVscGVyX2lvY3RsYC4gVGhhdCBsYXN0IG9uZSBpcyBpbnRlcmVzdGluZzsgaXQgbWVhbnMgd2UgY2FuIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyB2Ymxhbmsgd2FpdCB0aHJvdWdoIGFuIGlvY3RsIGNhbGwgZGlyZWN0bHkgb24gdGhlIGZyYW1lYnVmZmVyIGRldmljZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLlxuXG5UbyBnZXQgYSBicm9hZGVyIHBpY3R1cmUgb2YgdmJsYW5rIG1hbmFnZW1lbnQsIEknbGwgbm93IHNoaWZ0IG15IGZvY3VzIHRvIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBJdCdzIGV4cG9ydGVkLCBzbyBpdCdzIGEgY3JpdGljYWwgc3luY2hyb25pemF0aW9uIHBvaW50LiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHRyYWNlIGl0cyB1c2FnZSB0aHJvdWdob3V0IHRoZSBEUk0gY29kZSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIGhvdyB2Ymxhbmsgc3luY2hyb25pemF0aW9uIGlzIGltcGxlbWVudGVkIGFuZCB3aGVyZSBpdHMgaW1wYWN0cyBhcmUgZmVsdC4gVGhpcyBzaG91bGQgcmV2ZWFsIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdmFyaW91cyBEUk0gY29tcG9uZW50cyBhbmQgdGhlaXIgcmVsaWFuY2Ugb24gdGhpcyBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjE4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6MjguNTQ2NDIyMzg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTkzMDI0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYz0yMjg3PXN0YXRpYyB2b2lkIGRybV9kcF9hdXhfY3JjX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jLTIzMDAtXFx0d2hpbGUgKGNydGMtXFx1MDAzZWNyYy5vcGVuZWQpIHtcXG5kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmM6MjMwMTpcXHRcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jLTIzMDItXFx0XFx0aWYgKCFjcnRjLVxcdTAwM2VjcmMub3BlbmVkKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jPTEzMDk9aW50IGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHVuc2lnbmVkIGludCBjcnRjX2luZGV4KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzAtXFx0aWYgKCFyZXQpIHtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmM6MTMzMTpcXHRcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jLTEzMzItXFx0XFx0ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaD0xMTc9dTY0IGRybV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoxMTg6aW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0xMTktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jPTEyOTg9RVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTMwMC0vKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwMTogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwgLSB3YWl0IGZvciBvbmUgdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzAyLSAqIEBjcnRjOiBEUk0gY3J0Y1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzA4LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI2LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMyNzogKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzI4LSAqIEBjcnRjOiBEUk0gY3J0Y1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzM1LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMzNjppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzQ2LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTM0NzpcXHRyZXQgPSBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzQ4LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzU0LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jOjEzNTU6RVhQT1JUX1NZTUJPTChkcm1fY3J0Y193YWl0X29uZV92YmxhbmspO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmMtMTM1Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0Yy5jPTY3PXZvaWQgaW50ZWxfY3J0Y193YWl0X2Zvcl9uZXh0X3ZibGFuayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy02OC17XFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnRjLmM6Njk6XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZjcnRjLVxcdTAwM2ViYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydGMuYy03MC19XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYz0yMTM9c3RhdGljIGludCBpbmdlbmljX2RybV91cGRhdGVfcGl4Y2xrKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjItXFx0XFx0cHJpdi1cXHUwMDNldXBkYXRlX2Nsa19yYXRlID0gdHJ1ZTtcXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYzoyMjM6XFx0XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZwcml2LVxcdTAwM2VjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vaW5nZW5pYy9pbmdlbmljLWRybS1kcnYuYy0yMjQtXFx0XFx0cmV0dXJuIE5PVElGWV9PSztcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfY3J0Yy5jPTgwNT1zdGF0aWMgdm9pZCBtdGtfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzYtXFx0LyogV2FpdCBmb3IgcGxhbmVzIHRvIGJlIGRpc2FibGVkICovXFxuZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19jcnRjLmM6ODM3OlxcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTtcXG5kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2NydGMuYy04MzgtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9jcnRjLmM9MzY9c3RhdGljIHZvaWQgc3RpX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jLTQ0LVxcbmRyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2NydGMuYzo0NTpcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XFxuZHJpdmVycy9ncHUvZHJtL3N0aS9zdGlfY3J0Yy5jLTQ2LX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jPTE3NzE9c3RhdGljIGludCB0ZWdyYV9kY19zaG93X2NyYyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzg4LVxcbmRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jOjE3ODk6XFx0ZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKFxcdTAwMjZkYy1cXHUwMDNlYmFzZSk7XFxuZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmM6MTc5MDpcXHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoXFx1MDAyNmRjLVxcdTAwM2ViYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYy0xNzkxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjoyOS4wMDgzNjMyNzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjM0MDU3OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERSTSB2YmxhbmsgUmVmZXJlbmNlIEJ1ZyBhbmQgU29sdXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGFkZHJlc3NpbmcgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBidWcgaW4gdGhlIERSTSAoRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyKSBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGdvb2QsIGJlY2F1c2UgdGhlc2UgbG93LWxldmVsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgY2FuIGJlIGEgbmlnaHRtYXJlIHRvIGRlYnVnIGluIHRoZSBmaWVsZC4gSXQgbG9va3MgbGlrZSBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2Agd2FzIHVubmVjZXNzYXJpbHkgY2FsbGluZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCwgd2hpY2ggdGhlbiBjYWxscyBgZHJtX3ZibGFua19nZXRgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbHJlYWR5IHRha2VzIGNhcmUgb2YgZ2V0dGluZyBhbmQgcHV0dGluZyB0aGUgdmJsYW5rIHJlZmVyZW5jZSB1c2luZyBgZHJtX2NydGNfdmJsYW5rX2dldGAuIFRoaXMgY3JlYXRlcyBhbiBpbWJhbGFuY2UsIGFuZCB0aGF0J3MgYSByZWNpcGUgZm9yIGFsbCBzb3J0cyBvZiB0aW1pbmcgaXNzdWVzLCBkZWFkbG9ja3MsIG9yIHJlc291cmNlIGxlYWtzLlxuXG5UaGUgc29sdXRpb24gbG9va3MgY2xlYW4uIFRoZXkndmUgZmFjdG9yZWQgb3V0IHRoZSB2YmxhbmsgcmVmZXJlbmNlIG1hbmFnZW1lbnQgaW50byBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiB1c2VkIGJ5IGJvdGggYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgKHdoaWNoIHJldGFpbnMgdGhlIGdldC9wdXQpIGFuZCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgKHdoaWNoIGFscmVhZHkgaGFuZGxlcyBpdCkuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgd2F5IHRvIHNpbXBsaWZ5IHRoZSBjb2RlIGFuZCBwcmV2ZW50IHRoZSByZWZlcmVuY2UgZG91YmxlLWRpcHBpbmcuXG5cblRoZSBxdWVzdGlvbiBub3cgYmVjb21lcywgaXMgdGhpcyBjb2RlIHBhdGggYWN0dWFsbHkgcmVhY2hhYmxlPyBJIGtub3cgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIHVzZWQgYnkgRFJNIGNsaWVudHMsIHBhcnRpY3VsYXJseSB0aG9zZSBpbXBsZW1lbnRpbmcgZnJhbWUgYnVmZmVyIGRldmljZSAoZmJkZXYpIGVtdWxhdGlvbi4gSSByZWNhbGwgYGRybV9mYl9oZWxwZXJfaW9jdGxgIHVzaW5nIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBmb3IgYEZCSU9fV0FJVEZPUlZTWU5DYC4gQmluZ28sIHRoYXQgbWFrZXMgaXQgcmVhY2hhYmxlIGFuZCBkZWZpbml0ZWx5IHRlc3RhYmxlISBJIHNob3VsZCBmb2N1cyBvbiB0ZXN0aW5nIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIHRvIHZlcmlmeSB0aGF0IHRoZSBmaXggYWRkcmVzc2VzIHRoZSBpc3N1ZSBjb3JyZWN0bHkuIEFsc28sIGBkcm1fZmJfaGVscGVyX2lvY3RsYCBhbmQgYGRybV9mYl9oZWxwZXJfZmJfZGlydHlgIGFyZSBnb29kIGNhbmRpZGF0ZXMgdG8gdGVzdCB0b28sIGdpdmVuIHRoZWlyIHJlbGF0aW9uc2hpcCB0byBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuXG5cbkFscmlnaHQsIEknbGwgcHVsbCB1cCBgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuY2AgYW5kIGNoZWNrIGlmIHRoYXQgY29kZSBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IG9yIHJlcXVpcmVzIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCdsbCBpbmZsdWVuY2UgaG93IGRpZmZpY3VsdCBpdCBpcyB0byBzZXQgdXAgYSB0ZXN0IGVudmlyb25tZW50IHRvIGV4ZXJjaXNlIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjA0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjM2LjY0MjQyNDI4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2MDkxNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJtX2ZiX2hlbHBlci5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTU5PWRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9QQU5FTF9CUklER0UpICs9IGJyaWRnZS9wYW5lbC5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2MDpkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJfaGVscGVyLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTYxLW9iai0kKENPTkZJR19EUk1fS01TX0hFTFBFUikgKz0gZHJtX2ttc19oZWxwZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjozNi42ODcwNDA1MjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NzgwMDYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgd2hvIHdvcmtzIHdpdGggdGhpcyBjb2RlIHJlZ3VsYXJseTpcblxuKipNeSBEZWR1Y3Rpb25zIG9uIERSTSBGcmFtZWJ1ZmZlciBFbXVsYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgc3lzdGVtIGlzIHRlbGxpbmcgbWUgdGhhdCBJIG5lZWQgYENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OYCBmb3IgYGRybV9mYl9oZWxwZXIub2AuIFRoYXQgbWFrZXMgc2Vuc2U7IHRoZSBmcmFtZWJ1ZmZlciBlbXVsYXRpb24gbW9kdWxlIGlzIHRoZSBicmlkZ2UgYmV0d2VlbiB0aGUgb2xkIGZyYW1lYnVmZmVyIGNvZGUgYW5kIHRoZSBuZXdlciBEUk0gd29ybGQuIEl0J3MgZXNzZW50aWFsbHkgcHJvdmlkaW5nIGEgbGVnYWN5IGludGVyZmFjZS4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX0RSTV9DTElFTlRgIGlzIGVuYWJsZWQuIEl0J3MgYWxtb3N0IGFsd2F5cyBhIGdpdmVuLCBidXQgc29tZXRpbWVzIGEgZGVwZW5kZW5jeSBnZXRzIG1pc3NlZCBhbmQgaXQgcGF5cyB0byBjb25maXJtLiBJdCBpcyB0aGUgY29yZSBvZiBjbGllbnQgZHJpdmVycy4gSSBzaG91bGQgYWxzbyBzZWUgaWYgYENPTkZJR19EUk1fS01TX0hFTFBFUmAgaXMgYWxzbyBlbmFibGVkLiBJdCBwcm92aWRlcyB2YXJpb3VzIGtlcm5lbCBtb2RlIHNldHRpbmcgaGVscGVycy4gSXQgaXMgcHJvYmFibHkgaW1wb3J0YW50IHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjQwLjM2NDg0MzgyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzNjExMDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fRkJERVZfRU1VTEFUSU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjo0MC40MTMyMTM2MTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2ODE3MjcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UndmUgZGVzY3JpYmVkOlxuXG4qKkRSTSBGQkRFViBFbXVsYXRpb24gQ2hlY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHN0YXR1cyBvZiBmcmFtZWJ1ZmZlciBkZXZpY2UgZW11bGF0aW9uIHdpdGhpbiB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBjb21lcyB0byBtaW5kLCBhcyBhbHdheXMsIGlzIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBEUk0gY2xpZW50cy4gSSdtIGdvaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIGBEUk1fRkJERVZfRU1VTEFUSU9OYC4gVGltZSB0byBzZWUgaWYgaXQncyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUuIERlcGVuZGluZyBvbiB0aGF0LCBJIGNhbiBpbmZlciB0aGUgY3VycmVudCBzdGF0ZSBhbmQsIGRlcGVuZGluZyBvbiB0aGUga2VybmVsIHZlcnNpb24sIG1ha2UgYXBwcm9wcmlhdGUgY29uY2x1c2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5MDMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNjo0My40ODEzODg4MTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzU5MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fRkJERVZfRU1VTEFUSU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZz0yOD1tZW51IFxcXCJTdXBwb3J0ZWQgRFJNIGNsaWVudHNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMwLVxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWc6MzE6Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cXG5kcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjQzLjUyODc1MzAyNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODcyOTA3MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25zaWRlcmF0aW9ucywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdlbGwtdmVyc2VkIGluIHRoaXMgYXJlYTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgRFJNL0ZyYW1lYnVmZmVyIEVtdWxhdGlvbioqXG5cbkFscmlnaHQsIHRoaW5raW5nIGFib3V0IHRoaXMgRFJNIHNldHVwLCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBlbmFibGluZyBgRFJNX0ZCREVWX0VNVUxBVElPTmAgaXMgYSBzb2xpZCBtb3ZlLiBJdCdzIGEga2V5IHBpZWNlIGluIGFsbG93aW5nIHRoZSBEUk0gc3Vic3lzdGVtIHRvIHBsYXkgbmljZWx5IHdpdGggdGhlIGxlZ2FjeSBmcmFtZWJ1ZmZlciBkZXZpY2UgZHJpdmVycywgd2hpY2ggaXMgb2Z0ZW4gY3J1Y2lhbCBmb3Igd2lkZXIgY29tcGF0aWJpbGl0eSBhbmQgZ3JhY2VmdWwgZmFsbGJhY2suIFRoZW4sIG5hdHVyYWxseSwgSSdkIGJyaW5nIGluIGBEUk1fS01TX0hFTFBFUmAgYW5kIHRoZSBgRFJNYCBkcml2ZXIgaXRzZWxmOyB0aG9zZSBhcmUgZm91bmRhdGlvbmFsIHRvIGFueSBLTVMvRFJNIGltcGxlbWVudGF0aW9uLCBvZiBjb3Vyc2UuIFdpdGhvdXQgdGhlbSwgeW91J3JlIG5vdCBnZXR0aW5nIGFueXdoZXJlLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiBpbiBteSBtaW5kIGlzIGFsd2F5cyB0byBjaGVjayB0aGUgY29tcGlsYXRpb24gb2YgY2VydGFpbiBzcGVjaWZpYyBmaWxlcy4gTm93LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgZHJtX2NsaWVudF9tb2Rlc2V0LmNgIGlzIGNvbXBpbGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlcmUncyBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW52b2x2ZWQuIFRoYXQgb25lJ3MgcGFydGljdWxhcmx5IGltcG9ydGFudCwgYmVjYXVzZSBpdCBvZnRlbiBoYW5kbGVzIHRoZSBoaWdoZXItbGV2ZWwgY2xpZW50IG1vZGUgc2V0dGluZyBmdW5jdGlvbmFsaXR5LCBhbmQgSSB3b3VsZCB3YW50IHRoYXQgaW5jbHVkZWQgaW4gbXkgc3RhbmRhcmQgY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDIzNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjQ4LjQwMTY2MjkyNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3MDcxMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJtX2NsaWVudF9tb2Rlc2V0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT03Nj1kcm0tJChDT05GSUdfRFJNX0NMSUVOVCkgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTc4LVxcdGRybV9jbGllbnRfZXZlbnQubyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjc5OlxcdGRybV9jbGllbnRfbW9kZXNldC5vIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtODAtXFx0ZHJtX2NsaWVudF9zeXNycS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjQ4LjQ0NzM3MzgyNFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk0MzI5MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgLSBEUk0gQ2xpZW50KipcblxuUmlnaHQsIHNvIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRlcGVuZGVuY3kgaGVyZSDigJMgaXQncyBzdWdnZXN0aW5nIHRoYXQgYENPTkZJR19EUk1fQ0xJRU5UYCBpcyBhIGNyaXRpY2FsIHJlcXVpcmVtZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZHJpbGwgZG93biBpbnRvIHRoZSBLY29uZmlnIHN0cnVjdHVyZSB0byBjb25maXJtIHdoYXQgdGhpcyBhY3R1YWxseSBlbnRhaWxzLiBTcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgRFJNX0NMSUVOVGAgd2l0aGluIGBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ2AuIFRoaXMgd2lsbCBwcm92aWRlIHRoZSBjcnVjaWFsIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGFsbG93IG1lIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgcGFydGljdWxhciBjb25maWcgc2V0dGluZyBhbmQgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCBpdCwgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gc2VlIGlmIGl0J3MgdGllZCB0byBhbnkgc3BlY2lmaWMgRFJNIGRyaXZlciBvciBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY2MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjUxLjk0MTcwNTUyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NDEzMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9DTElFTlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MTU4PWNvbmZpZyBEUk1fREVCVUdfTU9ERVNFVF9MT0NLXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTczOmNvbmZpZyBEUk1fQ0xJRU5UXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTc0LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6NTEuOTg5MTUzNTgyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzQzOTQ5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgSGlkZGVuIEJvb2xlYW4gRmxhZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSd2ZSBnb3QgYSBodW5jaC4gVGhpcyBzbWVsbHMgbGlrZSBhIGhpZGRlbiBib29sZWFuLCBsaWtlbHkgY29udHJvbGxlZCBieSBgRFJNX0ZCREVWX0VNVUxBVElPTmAuIE15IGd1dCB0ZWxscyBtZSB0aGF0J3MgdGhlIGtleS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGlzIHN1c3BpY2lvbiwgYW5kIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYmV0dGVyLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYERSTV9GQkRFVl9FTVVMQVRJT05gLiBMZXQncyBzZWUgd2hhdCB0aGF0IGZsYWcgZW5hYmxlcyBvciBkaXNhYmxlcywgYW5kIHRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGFuc3dlciBJIGFtIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk3NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE2OjU1LjIyMzU1MTEwOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MzMwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vY2xpZW50cy9LY29uZmlnPTI4PW1lbnUgXFxcIlN1cHBvcnRlZCBEUk0gY2xpZW50c1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMzAtXFxuZHJpdmVycy9ncHUvZHJtL2NsaWVudHMvS2NvbmZpZzozMTpjb25maWcgRFJNX0ZCREVWX0VNVUxBVElPTlxcbmRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWctMzItXFx0Ym9vbCBcXFwiRW5hYmxlIGxlZ2FjeSBmYmRldiBzdXBwb3J0IGZvciB5b3VyIG1vZGVzZXR0aW5nIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTY6NTUuMjcxMzg4ODE3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxOTY2MzI5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiBhbmQgdGFyZ2V0ZWQgYXQgYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkFuYWx5emluZyB0aGUgRFJNX0ZCREVWX0VNVUxBVElPTiBCbG9jayoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBEUk1fRkJERVZfRU1VTEFUSU9OYCBibG9jay4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aGF0J3MgaGFwcGVuaW5nIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSBncmFzcCBhbGwgdGhlIGltcGxpY2F0aW9ucy4gVGhpcyBpc24ndCBqdXN0IGFib3V0IHRoZSBzdXJmYWNlIGxldmVsOyBJIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIHVuZGVybHlpbmcgbWVjaGFuaWNzIG9mIGhvdyB0aGlzIGVtdWxhdGlvbiB3b3JrcyBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgRFJNL0tNUyBzdGFjay4gV2hhdCBhcmUgdGhlIGtleSBmdW5jdGlvbmFsaXRpZXMgYmVpbmcgZW11bGF0ZWQ/IFdoaWNoIHNwZWNpZmljIEZCREVWIGJlaGF2aW9ycyBhcmUgYmVpbmcgcmVwbGljYXRlZCwgYW5kIHdoeSBpcyB0aGlzIGVtdWxhdGlvbiBuZWNlc3NhcnkgaW4gdGhpcyBzcGVjaWZpYyBjb250ZXh0P1xuXG5JIHdhbnQgdG8gbG9vayBmb3IgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyB0aGF0IG1pZ2h0IGFyaXNlLiBUaGlzIGVtdWxhdGlvbiBsYXllciBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgYSBwZXJmb3JtYW5jZSBvdmVyaGVhZCB0aGF0IHdlIG11c3QgdW5kZXJzdGFuZCBhbmQgbWl0aWdhdGUuIEknbSBhbHNvIGN1cmlvdXMgYWJvdXQgdGhlIHNwZWNpZmljIHVzZSBjYXNlcyBkcml2aW5nIHRoaXMgaW1wbGVtZW50YXRpb24uIElzIGl0IHByaW1hcmlseSBmb3IgbGVnYWN5IGFwcGxpY2F0aW9ucywgb3IgYXJlIHRoZXJlIG90aGVyIHJlYXNvbnMgdGhpcyBlbXVsYXRpb24gaXMgY2hvc2VuP1xuXG5JIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY3J1Y2lhbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9uIGNhbGxzIGludm9sdmVkIGluIHRoaXMgYmxvY2suIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvZGUgYW5kIGFuYWx5emUgdGhlbSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgaG9va3Mgb3IgaW50ZXJhY3Rpb25zIHdpdGggdGhlIERSTSBjb3JlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvc3NpYmxlIHJhY2VzLCByZXNvdXJjZSBjb250ZW50aW9uIGlzc3VlcywgYW5kIGhvdyBlcnJvciBjb25kaXRpb25zIGFyZSBoYW5kbGVkLiBBbHNvLCBpdCBpcyBnb2luZyB0byBiZSBpbXBvcnRhbnQgdG8gdGhpbmsgYWJvdXQgdGhlIGltcGFjdCBvZiB0aGlzIGJsb2NrIG9uIHRoZSBncmFwaGljcyBzdGFjaydzIG92ZXJhbGwgc3RhYmlsaXR5LlxuXG5TcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgZGV2aWF0aW9ucyBmcm9tIHRoZSBzdGFuZGFyZCBEUk0vS01TIGJlaGF2aW9yLiBXaGF0IGNvcm5lcnMgYXJlIGJlaW5nIGN1dCBoZXJlLCBhbmQgd2hhdCBhcmUgdGhlIHRyYWRlLW9mZnM/IEkgd2FudCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgZW11bGF0aW9uIGlzIGEgd2VsbC1kZWZpbmVkIGFic3RyYWN0aW9uIG9yIGEgbW9yZSBjb21wbGV4IHdvcmstYXJvdW5kLiBUaGUgZG9jdW1lbnRhdGlvbiBzaG91bGQgYmUgZGV0YWlsZWQgZW5vdWdoIHRvIGV4cGxhaW4gYW55IGFyY2hpdGVjdHVyYWwgZGVjaXNpb25zLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdGhvcm91Z2hseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgdGhpcyBibG9jayBoYXMgZm9yIGRyaXZlciBtYWludGFpbmFiaWxpdHkuIFdpbGwgdGhpcyBjb21wbGljYXRlIGZ1dHVyZSB1cGRhdGVzIG9yIHByZXZlbnQgdGhlIGFkb3B0aW9uIG9mIG5ldywgYWR2YW5jZWQgZmVhdHVyZXM/IEknbGwgbmVlZCB0byBhc3Nlc3MgdGhlIGxldmVsIG9mIGNvZGUgY29tcGxleGl0eSBhbmQgcG90ZW50aWFsIGZvciBjcmVhdGluZyBhIG1haW50ZW5hbmNlIGJ1cmRlbiBkb3duIHRoZSByb2FkLiBUaGlzIG92ZXJhbGwgYXNzZXNzbWVudCB3aWxsIG5lZWQgdG8gaW5mb3JtIG15IHZpZXcgb24gaXRzIGRlc2lnbiBhbmQgaG93IGl0IGlzIGludGVncmF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjY3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MDAuNDY4MDI1NTk3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzE6XFx0Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT05cXG4gIDMyOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBsZWdhY3kgZmJkZXYgc3VwcG9ydCBmb3IgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXJcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIERSTV9DTElFTlRfU0VMRUNUSU9OXFxuICAzNDpcXHRcXHRzZWxlY3QgRFJNX0NMSUVOVFxcbiAgMzU6XFx0XFx0c2VsZWN0IERSTV9DTElFTlRfU0VUVVBcXG4gIDM2OlxcdFxcdHNlbGVjdCBGUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZIGlmIEZSQU1FQlVGRkVSX0NPTlNPTEVcXG4gIDM3OlxcdFxcdGRlZmF1bHQgRkJcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEgbmVlZCBmb3IgdGhlIGxlZ2FjeSBmYmRldlxcbiAgNDA6XFx0XFx0ICBzdXBwb3J0LiBOb3RlIHRoYXQgdGhpcyBzdXBwb3J0IGFsc28gcHJvdmlkZXMgdGhlIGxpbnV4IGNvbnNvbGVcXG4gIDQxOlxcdFxcdCAgc3VwcG9ydCBvbiB0b3Agb2YgeW91ciBtb2Rlc2V0dGluZyBkcml2ZXIuXFxuICA0MjpcXHRcXG4gIDQzOlxcdFxcdCAgSWYgaW4gZG91YnQsIHNheSBcXFwiWVxcXCIuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGNvbmZpZyBEUk1fRkJERVZfT1ZFUkFMTE9DXFxuICA0NjpcXHRcXHRpbnQgXFxcIk92ZXJhbGxvY2F0aW9uIG9mIHRoZSBmYmRldiBidWZmZXJcXFwiXFxuICA0NzpcXHRcXHRkZXBlbmRzIG9uIERSTV9GQkRFVl9FTVVMQVRJT05cXG4gIDQ4OlxcdFxcdGRlZmF1bHQgMTAwXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIERlZmluZXMgdGhlIGZiZGV2IGJ1ZmZlciBvdmVyYWxsb2NhdGlvbiBpbiBwZXJjZW50LiBEZWZhdWx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjAwLjQ2ODA5OTI0N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjcxMTYwMDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgZGlzdGlsbGVkIHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzLCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIGBEUk1fRkJERVZfRU1VTEFUSU9OYCBpbXBsaWVzIGEgZGVwZW5kZW5jeSBvbiBgRFJNX0NMSUVOVGAuIEdvdCBpdC4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGluY2x1ZGUgYm90aCBgRFJNX0ZCREVWX0VNVUxBVElPTmAgYW5kIHRoZSBjb3JlIGBEUk1gIGRyaXZlciBpdHNlbGYuIFRoYXQncyBmdW5kYW1lbnRhbC4gTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdmlydHVhbCBHUFUgZHJpdmVycyBmb3IgdGVzdGluZyB0aGlzLiBTaG91bGQgd2UgdXNlIGBEUk1fVktNU2Agb3IgbWF5YmUgYERSTV9WSVJUSU9fR1BVYD8gRWl0aGVyIHdvdWxkIGJlIGEgZ29vZCBjaG9pY2UgZm9yIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgaWYgYERSTV9WS01TYCBpcyBldmVuIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBHb3R0YSBtYWtlIHN1cmUgd2UgaGF2ZSBhIHZpYWJsZSBvcHRpb24gaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNjgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjA0LjEzOTI2MTg3MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxNjAyMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9WS01TXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yLVxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6Mzpjb25maWcgRFJNX1ZLTVNcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgS01TIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjE5OmNvbmZpZyBEUk1fVktNU19LVU5JVF9URVNUXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIFZLTVNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MDQuMTg2NDI2MzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MTc0NDEzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgVmlydHVhbCBLTVMgRHJpdmVycyoqXG5cbkFscmlnaHQsIHNvIGBEUk1fVktNU2AgLSB0aGF0J3MgYSB2aXJ0dWFsIEtNUyBkcml2ZXIsIG5vIHF1ZXN0aW9uLiBOb3csIEkgbmVlZCB0byBjb21wYXJlIHRoaXMgd2l0aCBgRFJNX1ZJUlRJT19HUFVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgdHdvIHJlbGF0ZS4gSXQncyBhIGNvbW1vbiBhcmVhIG9mIGRyaXZlciBkZXZlbG9wbWVudCBhbmQgSSBuZWVkIHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3QgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjA3LjU2ODE3NDAxM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3MTMzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9WSVJUSU9fR1BVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc6Mjpjb25maWcgRFJNX1ZJUlRJT19HUFVcXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIEdQVSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMTUtXFxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnOjE2OmNvbmZpZyBEUk1fVklSVElPX0dQVV9LTVNcXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctMTctXFx0Ym9vbCBcXFwiVmlydGlvIEdQVSBkcml2ZXIgbW9kZXNldHRpbmcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MDcuNjIxODkyNjMxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyMTAyODIwNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gRFJNIFZibGFuayBTeW5jaHJvbml6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZXZhbHVhdGluZyBzb21lIGtlcm5lbCBEUk0gY29kZSwgYW5kIEkgc2VlIHRoYXQgZW5hYmxpbmcgYERSTV9WS01TYCBhbmQgYERSTV9WSVJUSU9fR1BVYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IHByaW1hcnkgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHZibGFuayBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcywgc28gSSdtIGdvaW5nIHRvIHN1bW1hcml6ZSB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFuZCBob3cgdGhleSByZWxhdGUgdG8gZWFjaCBvdGhlci5cblxuSSd2ZSBpZGVudGlmaWVkIHRoZXNlIGFzIHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBpbnZlc3RpZ2F0ZTogYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCwgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBJIHNlZSB0aGF0IGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzLCBpbnRlcmVzdGluZ2x5LCBub3QgZGlyZWN0bHkgZXhwb3J0ZWQuIEhvd2V2ZXIsIGl0J3MgY2FsbGVkIGJ5IHRoZSB0d28gZXhwb3J0ZWQgZnVuY3Rpb25zLCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBhbmQgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBBaCwgaXQgaXM7IGBFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmspO2AuIEdvb2QuIFNpbWlsYXJseSwgSSBzZWUgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AgaXMgYWxzbyBleHBvcnRlZDogYEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtgLiBJJ2xsIGtlZXAgYW4gZXllIG9uIGhvdyB0aGVzZSBhcmUgdXNlZCBpbiByZWxhdGlvbiB0byBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMuIEFzIGZvciBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCwgYWx0aG91Z2ggaXQncyBub3QgZXhwb3J0ZWQsIGl0IGlzIGluIGBkcm1fdmJsYW5rLmNgLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBpdCBpcyBub3Qgc3RhdGljLlxuXG5JIGFsc28gc2VlIHRoYXQgYGRybV9mYl9oZWxwZXJfaW9jdGxgIGFuZCBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgc2VlbSB0byBiZSByZWxldmFudCBiZWNhdXNlIHRoZXkgY2FsbCBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFNvIEknbGwgY2hlY2sgdGhvc2UgYXMgd2VsbC4gYGRybV9mYl9oZWxwZXJfaW9jdGxgIGlzIGV4cG9ydGVkIGFuZCBgZHJtX2ZiX2hlbHBlcl9mYl9kaXJ0eWAgaXMgc3RhdGljLlxuXG5MZXQgbWUgY29uc29saWRhdGUgdGhlIGZvY3VzIHN5bWJvbHM6XG5cbiogICBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2BcbiogICBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYFxuKiAgIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgXG4qICAgYGRybV9mYl9oZWxwZXJfaW9jdGxgXG5cbkFuZCB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3MgYXJlOlxuXG4qICAgYERSTWBcbiogICBgRFJNX0ZCREVWX0VNVUxBVElPTmBcbiogICBgRFJNX1ZLTVNgXG4qICAgYERSTV9WSVJUSU9fR1BVYFxuXG5KdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrLi4uIExldCBtZSBjb25maXJtIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgIGlzIG5vdCBzdGF0aWMuIE5vcGUsIGl0IGlzIGRlY2xhcmVkIGluIGBkcm1faW50ZXJuYWwuaGAuIEV4Y2VsbGVudC4gVGhhdCBjb25maXJtcyBpdCBhbmQgZ2l2ZXMgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODM1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjE0LjgzMjE3Nzk0M1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1MjE3MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM9MTI5OD1FWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19wdXQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYy0xMzA4LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmM6MTMwOTppbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jLTEzMTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNzoxNC44ODA3MDQ1NzJaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0ODI2MzIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEeW5hbWljIE5hdHVyZSoqXG5cblJpZ2h0LCBzbyBpdCdzIGNsZWFyOiB3ZSdyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nICpkeW5hbWljKiBoZXJlLCBub3QgYSBmaXhlZCBzdGF0ZS4gVGhhdCdzIGEgZnVuZGFtZW50YWwgYXNzdW1wdGlvbiB3ZSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gV2UgY2FuJ3QgdHJlYXQgdGhpcyBsaWtlIHNvbWUga2luZCBvZiBpbW11dGFibGUgY29uc3RhbnQuIFRoaXMgZHluYW1pc20gaW1wYWN0cyBvdXIgYXBwcm9hY2ggdG8gdGhlIHByb2JsZW0gYW5kIGFueSBwb3RlbnRpYWwgc29sdXRpb25zLlxuXG5Ob3csIHdpdGggdGhpcyBpbiBtaW5kLCBsZXQncyBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJJ20gZ29pbmcgdG8gcXVpY2tseSByZXZpZXcgYGRybV9mYl9oZWxwZXJfaW9jdGxgIGFuZCBzZWUgaG93IGl0IHJlZmxlY3RzIHRoaXMgZHluYW1pYyBjaGFyYWN0ZXJpc3RpYy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaG93IGNoYW5nZXMgbWlnaHQgcHJvcGFnYXRlIHRocm91Z2ggdGhhdCBpb2N0bC4gSSdsbCBmb2N1cyBvbiBob3cgdGhlIGNhbGxzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIHJlbGF0ZSB0byBzdGF0ZSBjaGFuZ2VzLCBhbmQgd2hhdCBoYXBwZW5zIHdoZW4gdGhhdCBzdGF0ZSBpc24ndCBhcyBkZWZpbmVkIGluaXRpYWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQxMzEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNzoxOC43Mjg5NzAwNDFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5Nzc5OTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRybV9mYl9oZWxwZXJfaW9jdGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jPTk3Mz1FWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfc2V0Y21hcCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTk3NS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjk3NjogKiBkcm1fZmJfaGVscGVyX2lvY3RsIC0gbGVnYWN5IGlvY3RsIGltcGxlbWVudGF0aW9uXFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy05NzctICogQGluZm86IGZiZGV2IHJlZ2lzdGVyZWQgYnkgdGhlIGhlbHBlclxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy05ODMtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYzo5ODQ6aW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYy05ODUtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jLTEwMTctfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmM6MTAxODpFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaW9jdGwpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMtMTAxOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MTguNzc4NzU0M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDM0ODIzNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVmJsYW5rIFJlZmVyZW5jZSBDb3VudGluZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBhIHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgcHJvYmxlbS4gVGhhdCdzIGEgY2xhc3NpYyBpc3N1ZSBpbiBEUk0sIEkga25vdyB0aGUgdGVycml0b3J5IHdlbGwuIFRoZSBmaXggc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgdGhpcyBuZXcgZnVuY3Rpb24sIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLiBFc3NlbnRpYWxseSwgaXQgcHJldmVudHMgdGhlIHN5c3RlbSBmcm9tIGdyYWJiaW5nIGFuICpleHRyYSogdmJsYW5rIHJlZmVyZW5jZSB3aGVuIGl0IGFscmVhZHkgaGFzIG9uZS4gU21hcnQuXG5cbkkgY2FuIHNlZSB3aGVyZSB0aGlzIGNvbWVzIGludG8gcGxheTsgaXQncyB1c2VkIHdpdGhpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYW5kIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGVzZSBhcmUgaW1wb3J0YW50IGZ1bmN0aW9ucywgYXMgdGhleSBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBEUk0gaW9jdGxzLCBvciB0aGUgRkJERVYgZW11bGF0aW9uIGxheWVycyAobGlrZSBgRkJJT19XQUlURk9SVlNZTkNgIHVzaW5nIGBkcm1fZmJfaGVscGVyX2lvY3RsYCksIHdoaWNoIG1lYW5zIGl0IGNhbiBoYXZlIHNvbWUgdGFuZ2libGUgdXNlciBpbXBhY3QuXG5cblRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgYSBtaW5vciB0d2VhazsgdGhpcyBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQuIEkgdGhpbmsgSSdsbCBjYWxsIGl0IGBzZXQtcmVzdWx0c2AsIGFzIHRoaXMgc2VlbXMgbGlrZSBhIHJlYWwgaW1wYWN0IHRvIHRoZSBjb2RlLlxuSSB3b3VsZCB3YW50IHRvIHRlc3QgdGhpcyBjaGFuZ2UgdGhvcm91Z2hseSwgYW5kLCB0aGUgZ29vZCBuZXdzIGlzLCBJIGNhbiB0ZXN0IGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMgVktNUywgdmlydGlvLWdwdSwgdGhvc2UgdmlydHVhbCBEUk0gZHJpdmVycyBhcmUgbXkgZnJpZW5kcyBoZXJlLiBJJ2xsIG1ha2Ugc3VyZSB0byBwdXQgaXQgdGhyb3VnaCBpdHMgcGFjZXMgaW4gdGhvc2Ugc2V0dGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjYwLCJPdXRwdXRUb2tlbnMiOjI1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNzoyNC44MTM1ODUzODZaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI0NjQxMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRFJNX0ZCREVWX0VNVUxBVElPTlwiLFxuICAgIFwiRFJNX1ZLTVNcIixcbiAgICBcIkRSTV9WSVJUSU9fR1BVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua1wiLFxuICAgIFwiZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxcIixcbiAgICBcImRybV9mYl9oZWxwZXJfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHZibGFuayByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgYnkgaW50cm9kdWNpbmcgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgd2hpY2ggYXZvaWRzIHRha2luZyBhbiBleHRyYSB2YmxhbmsgcmVmZXJlbmNlIHdoZW4gb25lIGlzIGFscmVhZHkgaGVsZC4gVGhpcyBpcyB1c2VkIGluIGBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rYCBhbmQgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBEUk0gaW9jdGxzIGFuZCBmYmRldiBlbXVsYXRpb24gKGUuZy4sIGBGQklPX1dBSVRGT1JWU1lOQ2AgdmlhIGBkcm1fZmJfaGVscGVyX2lvY3RsYCkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgRFJNIGRyaXZlcnMgbGlrZSBWS01TIG9yIHZpcnRpby1ncHUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNXCIsXG4gICAgXCJEUk1fRkJERVZfRU1VTEFUSU9OXCIsXG4gICAgXCJEUk1fVktNU1wiLFxuICAgIFwiRFJNX1ZJUlRJT19HUFVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rXCIsXG4gICAgXCJkcm1fY3J0Y193YWl0X29uZV92YmxhbmtcIixcbiAgICBcImRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbFwiLFxuICAgIFwiZHJtX2ZiX2hlbHBlcl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdmJsYW5rIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZSBieSBpbnRyb2R1Y2luZyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB3aGljaCBhdm9pZHMgdGFraW5nIGFuIGV4dHJhIHZibGFuayByZWZlcmVuY2Ugd2hlbiBvbmUgaXMgYWxyZWFkeSBoZWxkLiBUaGlzIGlzIHVzZWQgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgIGFuZCBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdmlhIERSTSBpb2N0bHMgYW5kIGZiZGV2IGVtdWxhdGlvbiAoZS5nLiwgYEZCSU9fV0FJVEZPUlZTWU5DYCB2aWEgYGRybV9mYl9oZWxwZXJfaW9jdGxgKS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBhbmQgY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdmlydHVhbCBEUk0gZHJpdmVycyBsaWtlIFZLTVMgb3IgdmlydGlvLWdwdS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MTc6MjQuOTE2MDU4NDEzWiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA5NzI5NzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjI0LjkxNjgxNjQyM1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTA5NjUwMTUzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgIGJ5IGV4dHJhY3RpbmcgaXRzIGNvcmUgbG9naWMgaW50byBhIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rX2ludGVybmFsYCB0byBhdm9pZCB0YWtpbmcgYSByZWR1bmRhbnQgdmJsYW5rIHJlZmVyZW5jZSBpbiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AuIFRoZSBjaGFuZ2VzIG9ubHkgaW52b2x2ZSBjb250cm9sIGZsb3csIHdhaXQgcXVldWVzLCBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhbGxvY2F0ZWQsIG5vIG1lbW9yeSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKGUuZy4sIHVzZS1hZnRlci1mcmVlIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIExPQ0tERVAuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjcwODY5OTM0OWEyMTgzOTg4ZDg4NjdlYzZmNjEzOTE5MWVjYmU2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTQ6MTY6MTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbmluZGV4IDAwODBhOGU5NTU2YTUuLjdmZjBmMjRhMGY1MDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuY1xuQEAgLTEzMjgsNyArMTMyOCw3IEBAIGludCBkcm1fY2xpZW50X21vZGVzZXRfd2FpdF9mb3JfdmJsYW5rKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LCB1bnNpZ25lZCBpXG4gXHQgKi9cbiBcdHJldCA9IGRybV9jcnRjX3ZibGFua19nZXQoY3J0Yyk7XG4gXHRpZiAoIXJldCkge1xuLVx0XHRkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7XG4rXHRcdGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcdFx0ZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbmluZGV4IGY4OTNiMWUzYTU5NmUuLjZmZDMzNjcyZDIwNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmhcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaFxuQEAgLTExNSw2ICsxMTUsNyBAQCB2b2lkIGRybV92YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4gaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiB2b2lkIGRybV92YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTtcbiB1NjQgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7XG4raW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpO1xuIFxuIC8qIGRybV92Ymxhbmtfd29yay5jICovXG4gc3RhdGljIGlubGluZSB2b2lkIGRybV92YmxhbmtfZmx1c2hfd29ya2VyKHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuaylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuY1xuaW5kZXggZjkwZmIyZDEzZTQyMy4uZTJiZjVlZDY1NzAwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fdmJsYW5rLmNcbkBAIC0xMjk3LDYgKzEyOTcsMzIgQEAgdm9pZCBkcm1fY3J0Y192YmxhbmtfcHV0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB9XG4gRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTtcbiBcbisvKlxuKyAqIGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbCAtIHdhaXQgZm9yIG9uZSB2YmxhbmtcbisgKiBAY3J0YzogRFJNIGNydGNcbisgKlxuKyAqIFRoaXMgd2FpdHMgZm9yIG9uZSB2YmxhbmsgdG8gcGFzcyBvbiBAY3J0YywgdXNpbmcgdGhlIGlycSBkcml2ZXIgaW50ZXJmYWNlcy5cbisgKiBFdmVyeSBjYWxsZXIgbXVzdCBob2xkIGEgdmJsYW5rIHJlZmVyZW5jZSBhY3Jvc3MgdGhlIGNvbXBsZXRlIHdhaXQuXG4rICpcbisgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIG9uIGZhaWx1cmVzLlxuKyAqL1xuK2ludCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWwoc3RydWN0IGRybV9jcnRjICpjcnRjKVxuK3tcbitcdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcbitcdGludCBwaXBlID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7XG4rXHRzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSBkcm1fY3J0Y192YmxhbmtfY3J0YyhjcnRjKTtcbitcdGludCByZXQ7XG4rXHR1NjQgbGFzdDtcbitcbitcdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG4rXG4rXHRyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQodmJsYW5rLVx1MDAzZXF1ZXVlLFxuK1x0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuK1x0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCkpO1xuK1xuK1x0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xuK31cbitcbiAvKipcbiAgKiBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUgdmJsYW5rXG4gICogQGNydGM6IERSTSBjcnRjXG5AQCAtMTMxMSwyNiArMTMzNywyMCBAQCBpbnQgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YylcbiB7XG4gXHRzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy1cdTAwM2VkZXY7XG4gXHRpbnQgcGlwZSA9IGRybV9jcnRjX2luZGV4KGNydGMpO1xuLVx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG4gXHRpbnQgcmV0O1xuLVx0dTY0IGxhc3Q7XG4gXG4gXHRyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIHBpcGUpO1xuIFx0aWYgKGRybV9XQVJOKGRldiwgcmV0LCBcInZibGFuayBub3QgYXZhaWxhYmxlIG9uIGNydGMgJWksIHJldD0laVxcblwiLFxuIFx0XHQgICAgIHBpcGUsIHJldCkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4tXHRsYXN0ID0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpO1xuLVxuLVx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cdTAwM2VxdWV1ZSxcbi1cdFx0XHRcdCBsYXN0ICE9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSxcbi1cdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKDEwMDApKTtcbitcdHJldCA9IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChjcnRjKTtcbiBcbi1cdGRybV9XQVJOKGRldiwgcmV0ID09IDAsIFwidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcXG5cIiwgcGlwZSk7XG4rXHRkcm1fV0FSTihkZXYsIHJldCA9PSAtRVRJTUVET1VULCBcInZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVpXFxuXCIsIHBpcGUpO1xuIFxuIFx0ZHJtX3ZibGFua19wdXQoZGV2LCBwaXBlKTtcbiBcbi1cdHJldHVybiByZXQgPyAwIDogLUVUSU1FRE9VVDtcbitcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjE3OjI0LjkxNjgxNzgzM1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTA5NjQ3ODI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERSTSBQYXRjaCBmb3IgUG90ZW50aWFsIEtNU0FOIENvbmNlcm5zKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBNeSBpbml0aWFsIHJlYWQgaW5kaWNhdGVzIGl0J3MgZXh0cmFjdGluZyBhIG5ldyBpbnRlcm5hbCBmdW5jdGlvbiwgYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAsIGZyb20gdGhlIGV4aXN0aW5nIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtgLiBUaGUgY29yZSBpZGVhIGlzIHRvIGVsaW1pbmF0ZSBhIHJlZHVuZGFudCB2YmxhbmsgcmVmZXJlbmNlIGFjcXVpc2l0aW9uLiBgZHJtX2NsaWVudF9tb2Rlc2V0X3dhaXRfZm9yX3ZibGFua2AgYWxyZWFkeSBjYWxscyBgZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKWAgc28gd2h5IGNhbGwgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIHNhbWUgYGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSlgPyBJdCB3YXMgbGlrZWx5IGNhdXNpbmcgYW4gaXNzdWUgb3IgYmVpbmcgb3B0aW1pemVkLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUsIGVzcGVjaWFsbHkgd2l0aCBrZXJuZWwgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHJlZmFjdG9yaW5nIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzLiBIb3dldmVyLCBsb29raW5nIGF0IHRoZSBjb2RlIGFuZCB0aGUgdmFyaWFibGVzIGludm9sdmVkIOKAkyBwb2ludGVycywgaW50ZWdlcnMsIGFuZCBhIHdhaXQgcXVldWUg4oCTIGl0IHNlZW1zIHVubGlrZWx5LiBUaGVyZSdzIG5vIG9idmlvdXMgcGF0aCB3aGVyZSB1bmluaXRpYWxpemVkIGRhdGEgaXMgYmVpbmcgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBObyBjb21wbGV4IHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCBvciB1c2VkIGluIGNvbmRpdGlvbmFsIGxvZ2ljLCBhbmQgdGhlIG5ldyBmdW5jdGlvbiBpdHNlbGYsIGBkcm1fY3J0Y193YWl0X29uZV92YmxhbmtfaW50ZXJuYWxgLCBqdXN0IHVzZXMgYSBgd2FpdF9ldmVudF90aW1lb3V0YCBhbmQgZ2V0cyB0aGUgdmJsYW5rIGNvdW50LiBJdCdzIGVzc2VudGlhbGx5IGEgc3RyYWlnaHRmb3J3YXJkIHdhaXQuXG5cbkxldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgY29kZS5cblxuYGBgY1xuaW50IGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpXG57XG5cdHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLVx1MDAzZWRldjtcblx0aW50IHBpcGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTtcblx0c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gZHJtX2NydGNfdmJsYW5rX2NydGMoY3J0Yyk7XG5cdGludCByZXQ7XG5cdHU2NCBsYXN0O1xuXG5cdGxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7XG5cblx0cmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHZibGFuay1cdTAwM2VxdWV1ZSxcblx0XHRcdFx0IGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIHBpcGUpLFxuXHRcdFx0XHQgbXNlY3NfdG9famlmZmllcygxMDAwKSk7XG5cblx0cmV0dXJuIHJldCA/IDAgOiAtRVRJTUVET1VUO1xufVxuYGBgXG5cbk9rYXksIEknbSBzYXRpc2ZpZWQuIEl0J3MganVzdCBhIGB3YWl0X2V2ZW50X3RpbWVvdXRgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbiB1c2UuIFRoZXJlJ3Mgbm8gcmlzay4gSSdtIGdvaW5nIHRvIHNldCBgTmVlZHNLTVNBTiA9IGZhbHNlYCBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE0OSwiT3V0cHV0VG9rZW5zIjoxNzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDoxNzozNi4wMTMyOTkzNzNaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBgZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5rYCBieSBleHRyYWN0aW5nIGl0cyBjb3JlIGxvZ2ljIGludG8gYSBuZXcgaW50ZXJuYWwgZnVuY3Rpb24gYGRybV9jcnRjX3dhaXRfb25lX3ZibGFua19pbnRlcm5hbGAgdG8gYXZvaWQgdGFraW5nIGEgcmVkdW5kYW50IHZibGFuayByZWZlcmVuY2UgaW4gYGRybV9jbGllbnRfbW9kZXNldF93YWl0X2Zvcl92YmxhbmtgLiBUaGUgY2hhbmdlcyBvbmx5IGludm9sdmUgY29udHJvbCBmbG93LCB3YWl0IHF1ZXVlcywgYW5kIHJlZmVyZW5jZSBjb3VudGluZy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkLCBubyBtZW1vcnkgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBMT0NLREVQLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow6nn9r[1] Phase: Succeeded StartedAt: 2026-08-07 14:17:47 +0000 UTC FinishedAt: 2026-08-07 14:17:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 14:17:47 +0000 UTC FinishedAt: 2026-08-07 14:17:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2] Phase: Succeeded StartedAt: 2026-08-07 14:17:47 +0000 UTC FinishedAt: 2026-08-07 18:01:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 14:17:47 +0000 UTC FinishedAt: 2026-08-07 18:01:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 14:17:47 +0000 UTC FinishedAt: 2026-08-07 14:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 14:17:47 +0000 UTC FinishedAt: 2026-08-07 14:17:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow6nn9r/series-workflow6nn9r-convert-artifact-3658012738/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 14:17:57 +0000 UTC FinishedAt: 2026-08-07 14:35:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 14:17:57 +0000 UTC FinishedAt: 2026-08-07 14:35:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2d6fc4a8-6e14-4cfd-86ac-97d0b23bb5bd,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-workflow6nn9r/series-workflow6nn9r-convert-artifact-3658012738/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": "1af4272b-abff-49b3-b698-8eea2fc78fc7", "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-workflow6nn9r/series-workflow6nn9r-build-action-3313210112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 14:17:57 +0000 UTC FinishedAt: 2026-08-07 14:35:01 +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:*2d6fc4a8-6e14-4cfd-86ac-97d0b23bb5bd,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-workflow6nn9r/series-workflow6nn9r-convert-artifact-3658012738/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": "1af4272b-abff-49b3-b698-8eea2fc78fc7", "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-workflow6nn9r/series-workflow6nn9r-build-action-3313210112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 14:35:11 +0000 UTC FinishedAt: 2026-08-07 14:35:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 14:35:11 +0000 UTC FinishedAt: 2026-08-07 14:35:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 14:35:11 +0000 UTC FinishedAt: 2026-08-07 14:35:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 14:35:11 +0000 UTC FinishedAt: 2026-08-07 14:35:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow6nn9r/series-workflow6nn9r-convert-artifact-296893085/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 14:35:33 +0000 UTC FinishedAt: 2026-08-07 14:37:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 14:35:33 +0000 UTC FinishedAt: 2026-08-07 14:37:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1af4272b-abff-49b3-b698-8eea2fc78fc7,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-workflow6nn9r/series-workflow6nn9r-build-action-3313210112/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-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 14:37:42 +0000 UTC FinishedAt: 2026-08-07 14:37:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 14:37:42 +0000 UTC FinishedAt: 2026-08-07 14:37:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 14:37:42 +0000 UTC FinishedAt: 2026-08-07 14:57:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 14:37:42 +0000 UTC FinishedAt: 2026-08-07 14:57:15 +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:*2d6fc4a8-6e14-4cfd-86ac-97d0b23bb5bd,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-workflow6nn9r/series-workflow6nn9r-convert-artifact-296893085/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": "668c5256-c501-4430-bb1f-a741c6816bf5", "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-workflow6nn9r/series-workflow6nn9r-build-action-1559431033/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 14:37:42 +0000 UTC FinishedAt: 2026-08-07 14:57:05 +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:*2d6fc4a8-6e14-4cfd-86ac-97d0b23bb5bd,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-workflow6nn9r/series-workflow6nn9r-convert-artifact-296893085/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": "668c5256-c501-4430-bb1f-a741c6816bf5", "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-workflow6nn9r/series-workflow6nn9r-build-action-1559431033/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 14:57:15 +0000 UTC FinishedAt: 2026-08-07 14:57:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 14:57:15 +0000 UTC FinishedAt: 2026-08-07 14:57:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 14:57:15 +0000 UTC FinishedAt: 2026-08-07 14:59:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 14:57:15 +0000 UTC FinishedAt: 2026-08-07 14:59:13 +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:*668c5256-c501-4430-bb1f-a741c6816bf5,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-workflow6nn9r/series-workflow6nn9r-build-action-1559431033/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-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 14:59:24 +0000 UTC FinishedAt: 2026-08-07 18:01:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 14:59:24 +0000 UTC FinishedAt: 2026-08-07 18:01:34 +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":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"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:*1af4272b-abff-49b3-b698-8eea2fc78fc7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*668c5256-c501-4430-bb1f-a741c6816bf5,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-workflow6nn9r/series-workflow6nn9r-build-action-3313210112/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-workflow6nn9r/series-workflow6nn9r-build-action-1559431033/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 14:59:24 +0000 UTC FinishedAt: 2026-08-07 14:59:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 14:59:24 +0000 UTC FinishedAt: 2026-08-07 14:59:31 +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":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"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-workflow6nn9r/series-workflow6nn9r-convert-artifact-4227631138/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 14:59:24 +0000 UTC FinishedAt: 2026-08-07 14:59:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 14:59:24 +0000 UTC FinishedAt: 2026-08-07 14:59:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 14:59:24 +0000 UTC FinishedAt: 2026-08-07 14:59:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 14:59:34 +0000 UTC FinishedAt: 2026-08-07 18:01:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6nn9r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["drm_client_modeset_wait_for_vblank","drm_crtc_wait_one_vblank","drm_crtc_wait_one_vblank_internal","drm_fb_helper_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","DRM_FBDEV_EMULATION","DRM_VKMS","DRM_VIRTIO_GPU"],"series_id":"ab1b8d03-a1ab-4a03-84f0-97f3f311f976","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 14:59:34 +0000 UTC FinishedAt: 2026-08-07 18:01:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1af4272b-abff-49b3-b698-8eea2fc78fc7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*668c5256-c501-4430-bb1f-a741c6816bf5,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-workflow6nn9r/series-workflow6nn9r-build-action-3313210112/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-workflow6nn9r/series-workflow6nn9r-build-action-1559431033/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-workflow6nn9r/series-workflow6nn9r-convert-artifact-4227631138/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,}