Name: series-workflowzfmbv Phase: Succeeded StartedAt: 2026-06-30 16:09:47 +0000 UTC FinishedAt: 2026-06-30 20:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[0] Phase: Succeeded StartedAt: 2026-06-30 16:09:47 +0000 UTC FinishedAt: 2026-06-30 16:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 16:09:47 +0000 UTC FinishedAt: 2026-06-30 16:24:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INFINIBAND", "INFINIBAND_USER_ACCESS", "INFINIBAND_ON_DEMAND_PAGING", "MLX5_CORE", "MLX5_INFINIBAND", "INFINIBAND_MTHCA", "INFINIBAND_RDMAVT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INFINIBAND", "INFINIBAND_USER_ACCESS", "INFINIBAND_ON_DEMAND_PAGING", "MLX5_CORE", "MLX5_INFINIBAND", "INFINIBAND_MTHCA", "INFINIBAND_RDMAVT" ], "series_id": "d7c82731-60ea-4bb0-ae0a-206b22c240ad" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__ib_umem_get_va", "mlx5_ib_mr_wqe_pfault_handler", "mthca_array_set", "mthca_reg_user_mr", "get_map_page" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9VU0VSX0FDQ0VTUyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfSU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX01USENBJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUkRNQVZUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYl91bWVtX2dldF92YSYjMzQ7LAogICAgJiMzNDttbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0OywKICAgICYjMzQ7bXRoY2FfcmVnX3VzZXJfbXImIzM0OywKICAgICYjMzQ7Z2V0X21hcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKF9fZ2V0X2ZyZWVfcGFnZSwgZ2V0X3plcm9lZF9wYWdlKSB0byB0aGUgc2xhYiBhbGxvY2F0b3IgKGttYWxsb2MsIGt6YWxsb2MpIGFjcm9zcyBtdWx0aXBsZSBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBidWdzIGlmIHRoZSBoYXJkd2FyZSBvciBkcml2ZXIgY29kZSBhc3N1bWVzIHBhZ2UgYWxpZ25tZW50IG9yIHNwZWNpZmljIG1lbW9yeSBsYXlvdXQgcHJvcGVydGllcyBndWFyYW50ZWVkIGJ5IHRoZSBwYWdlIGFsbG9jYXRvciBidXQgbm90IGJ5IHRoZSBzbGFiIGFsbG9jYXRvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNlYmU4MzYyODEzZjkwYjgzNjAwNzE5ODhmMTUzMGUzZjVhNmFiZjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAxNjoxNjo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNcbmluZGV4IDczNDk4NzIzYTVkNTVlLi41YzQyNDk3ZjMyZTI2MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jXG5AQCAtMjA5LDcgJiM0MzsyMDksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuIFxuIFx0bW1ncmFiKG1tKTtcbiBcbi1cdHBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpO1xuJiM0MztcdHBhZ2VfbGlzdCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcGFnZV9saXN0KSB7XG4gXHRcdHJldCA9IC1FTk9NRU07XG4gXHRcdGdvdG8gdW1lbV9rZnJlZTtcbkBAIC0yNjksNyAmIzQzOzI2OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfdW1lbSAqX19pYl91bWVtX2dldF92YShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsXG4gXHRfX2liX3VtZW1fcmVsZWFzZShkZXZpY2UsIHVtZW0sIDApO1xuIFx0YXRvbWljNjRfc3ViKGliX3VtZW1fbnVtX3BhZ2VzKHVtZW0pLCBcdTAwMjZtbS1cdTAwM2VwaW5uZWRfdm0pO1xuIG91dDpcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcGFnZV9saXN0KTtcbiYjNDM7XHRrZnJlZShwYWdlX2xpc3QpO1xuIHVtZW1fa2ZyZWU6XG4gXHRpZiAocmV0KSB7XG4gXHRcdG1tZHJvcCh1bWVtLVx1MDAzZW93bmluZ19tbSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuY1xuaW5kZXggMWJhZGVjOWJmNTI3MDguLjkwNzA2ZmY3MTAyYTNiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jXG5AQCAtMzgsNiAmIzQzOzM4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9obW0tZG1hLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2ktcDJwZG1hLmhcdTAwM2VcbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7bWx4NV9pYi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7Y21kLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt1bXIuaFwmIzM0O1xuQEAgLTE0MTQsNyAmIzQzOzE0MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbiBcdFx0Z290byByZXNvbHZlX3BhZ2VfZmF1bHQ7XG4gXHR9XG4gXG4tXHR3cWVfc3RhcnQgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTtcbiYjNDM7XHR3cWVfc3RhcnQgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXdxZV9zdGFydCkge1xuIFx0XHRtbHg1X2liX2VycihkZXYsIFwmIzM0O0Vycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBJTyBwYWdlIGZhdWx0IGhhbmRsaW5nLlxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gcmVzb2x2ZV9wYWdlX2ZhdWx0O1xuQEAgLTE0NzUsNyAmIzQzOzE0NzYsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbiBcdFx0ICAgIHBmYXVsdC1cdTAwM2V3cWUud3FfbnVtLCByZXN1bWVfd2l0aF9lcnJvcixcbiBcdFx0ICAgIHBmYXVsdC1cdTAwM2V0eXBlKTtcbiBcdG1seDVfY29yZV9yZXNfcHV0KHJlcyk7XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpd3FlX3N0YXJ0KTtcbiYjNDM7XHRrZnJlZSh3cWVfc3RhcnQpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3JkbWFfcGZhdWx0X2hhbmRsZXIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jXG5pbmRleCBkZWRjMzAxMjM1YTBkYy4uMTE3YTA3MGU3ODRlYTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuY1xuQEAgLTEyNiw3ICYjNDM7MTI2LDcgQEAgaW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKVxuIFxuIFx0LyogQWxsb2NhdGUgd2l0aCBHRlBfQVRPTUlDIGJlY2F1c2Ugd2UmIzM5O2xsIGJlIGNhbGxlZCB3aXRoIGxvY2tzIGhlbGQuICovXG4gXHRpZiAoIWFycmF5LVx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlKVxuLVx0XHRhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSA9ICh2b2lkICoqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0FUT01JQyk7XG4mIzQzO1x0XHRhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfQVRPTUlDKTtcbiBcbiBcdGlmICghYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTE0Miw3ICYjNDM7MTQyLDcgQEAgdm9pZCBtdGhjYV9hcnJheV9jbGVhcihzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgpXG4gXHRpbnQgcCA9IChpbmRleCAqIHNpemVvZiAodm9pZCAqKSkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXG4gXHRpZiAoLS1hcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0udXNlZCA9PSAwKSB7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpO1xuJiM0MztcdFx0a2ZyZWUoYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpO1xuIFx0XHRhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSA9IE5VTEw7XG4gXHR9IGVsc2VcbiBcdFx0YXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2VbaW5kZXggXHUwMDI2IE1USENBX0FSUkFZX01BU0tdID0gTlVMTDtcbkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIHZvaWQgbXRoY2FfYXJyYXlfY2xlYW51cChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgbmVudClcbiBcdGludCBpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgKG5lbnQgKiBzaXplb2YgKHZvaWQgKikgJiM0MzsgUEFHRV9TSVpFIC0gMSkgLyBQQUdFX1NJWkU7ICYjNDM7JiM0MztpKVxuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtpXS5wYWdlKTtcbiYjNDM7XHRcdGtmcmVlKGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtpXS5wYWdlKTtcbiBcbiBcdGtmcmVlKGFycmF5LVx1MDAzZXBhZ2VfbGlzdCk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmNcbmluZGV4IGY5MGY2N2FmYzhmYWJlLi5jOWVjOWNhMGFhYTYwZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuY1xuQEAgLTg5NSw3ICYjNDM7ODk1LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLFxuIFx0XHRnb3RvIGVycl91bWVtO1xuIFx0fVxuIFxuLVx0cGFnZXMgPSAodTY0ICopIF9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTtcbiYjNDM7XHRwYWdlcyA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcGFnZXMpIHtcbiBcdFx0ZXJyID0gLUVOT01FTTtcbiBcdFx0Z290byBlcnJfbXR0O1xuQEAgLTkyNCw3ICYjNDM7OTI0LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLFxuIFx0aWYgKGkpXG4gXHRcdGVyciA9IG10aGNhX3dyaXRlX210dChkZXYsIG1yLVx1MDAzZW10dCwgbiwgcGFnZXMsIGkpO1xuIG10dF9kb25lOlxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBwYWdlcyk7XG4mIzQzO1x0a2ZyZWUocGFnZXMpO1xuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfbXR0O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY1xuaW5kZXggNzBlN2QwOGZkY2U2OTIuLmM0MGNjZTY5ZTk0NTdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNcbkBAIC0yNjMsNyAmIzQzOzI2Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB3c3NfZXhjZWVkc190aHJlc2hvbGQoc3RydWN0IHJ2dF93c3MgKndzcylcbiBzdGF0aWMgdm9pZCBnZXRfbWFwX3BhZ2Uoc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdCxcbiBcdFx0XHQgc3RydWN0IHJ2dF9xcG5fbWFwICptYXApXG4ge1xuLVx0dW5zaWduZWQgbG9uZyBwYWdlID0gZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUwpO1xuJiM0MztcdHZvaWQgKnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XG4gXG4gXHQvKlxuIFx0ICogRnJlZSB0aGUgcGFnZSBpZiBzb21lb25lIHJhY2VkIHdpdGggdXMgaW5zdGFsbGluZyBpdC5cbkBAIC0yNzEsOSAmIzQzOzI3MSw5IEBAIHN0YXRpYyB2b2lkIGdldF9tYXBfcGFnZShzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNnFwdC1cdTAwM2Vsb2NrKTtcbiBcdGlmIChtYXAtXHUwMDNlcGFnZSlcbi1cdFx0ZnJlZV9wYWdlKHBhZ2UpO1xuJiM0MztcdFx0a2ZyZWUocGFnZSk7XG4gXHRlbHNlXG4tXHRcdG1hcC1cdTAwM2VwYWdlID0gKHZvaWQgKilwYWdlO1xuJiM0MztcdFx0bWFwLVx1MDAzZXBhZ2UgPSBwYWdlO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2cXB0LVx1MDAzZWxvY2spO1xuIH1cbiBcbkBAIC0zNDMsNyAmIzQzOzM0Myw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcXBuX3RhYmxlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQpXG4gXHRpbnQgaTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocXB0LVx1MDAzZW1hcCk7IGkmIzQzOyYjNDM7KVxuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcXB0LVx1MDAzZW1hcFtpXS5wYWdlKTtcbiYjNDM7XHRcdGtmcmVlKHFwdC1cdTAwM2VtYXBbaV0ucGFnZSk7XG4gfVxuIFxuIC8qKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9VU0VSX0FDQ0VTUyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfSU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX01USENBJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUkRNQVZUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYl91bWVtX2dldF92YSYjMzQ7LAogICAgJiMzNDttbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0OywKICAgICYjMzQ7bXRoY2FfcmVnX3VzZXJfbXImIzM0OywKICAgICYjMzQ7Z2V0X21hcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKF9fZ2V0X2ZyZWVfcGFnZSwgZ2V0X3plcm9lZF9wYWdlKSB0byB0aGUgc2xhYiBhbGxvY2F0b3IgKGttYWxsb2MsIGt6YWxsb2MpIGFjcm9zcyBtdWx0aXBsZSBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBidWdzIGlmIHRoZSBoYXJkd2FyZSBvciBkcml2ZXIgY29kZSBhc3N1bWVzIHBhZ2UgYWxpZ25tZW50IG9yIHNwZWNpZmljIG1lbW9yeSBsYXlvdXQgcHJvcGVydGllcyBndWFyYW50ZWVkIGJ5IHRoZSBwYWdlIGFsbG9jYXRvciBidXQgbm90IGJ5IHRoZSBzbGFiIGFsbG9jYXRvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2ViZTgzNjI4MTNmOTBiODM2MDA3MTk4OGYxNTMwZTNmNWE2YWJmOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDE2OjE2OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jCmluZGV4IDczNDk4NzIzYTVkNTVlLi41YzQyNDk3ZjMyZTI2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYwpAQCAtMjA5LDcgJiM0MzsyMDksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLAogCiAJbW1ncmFiKG1tKTsKIAotCXBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwomIzQzOwlwYWdlX2xpc3QgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwYWdlX2xpc3QpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byB1bWVtX2tmcmVlOwpAQCAtMjY5LDcgJiM0MzsyNjksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLAogCV9faWJfdW1lbV9yZWxlYXNlKGRldmljZSwgdW1lbSwgMCk7CiAJYXRvbWljNjRfc3ViKGliX3VtZW1fbnVtX3BhZ2VzKHVtZW0pLCAmYW1wO21tLSZndDtwaW5uZWRfdm0pOwogb3V0OgotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcGFnZV9saXN0KTsKJiM0MzsJa2ZyZWUocGFnZV9saXN0KTsKIHVtZW1fa2ZyZWU6CiAJaWYgKHJldCkgewogCQltbWRyb3AodW1lbS0mZ3Q7b3duaW5nX21tKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMKaW5kZXggMWJhZGVjOWJmNTI3MDguLjkwNzA2ZmY3MTAyYTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYwpAQCAtMzgsNiAmIzQzOzM4LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9obW0tZG1hLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGNpLXAycGRtYS5oJmd0OwogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKICNpbmNsdWRlICYjMzQ7bWx4NV9pYi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y21kLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt1bXIuaCYjMzQ7CkBAIC0xNDE0LDcgJiM0MzsxNDE1LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsCiAJCWdvdG8gcmVzb2x2ZV9wYWdlX2ZhdWx0OwogCX0KIAotCXdxZV9zdGFydCA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwomIzQzOwl3cWVfc3RhcnQgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF3cWVfc3RhcnQpIHsKIAkJbWx4NV9pYl9lcnIoZGV2LCAmIzM0O0Vycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBJTyBwYWdlIGZhdWx0IGhhbmRsaW5nLlxuJiMzNDspOwogCQlnb3RvIHJlc29sdmVfcGFnZV9mYXVsdDsKQEAgLTE0NzUsNyAmIzQzOzE0NzYsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwKIAkJICAgIHBmYXVsdC0mZ3Q7d3FlLndxX251bSwgcmVzdW1lX3dpdGhfZXJyb3IsCiAJCSAgICBwZmF1bHQtJmd0O3R5cGUpOwogCW1seDVfY29yZV9yZXNfcHV0KHJlcyk7Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXdxZV9zdGFydCk7CiYjNDM7CWtmcmVlKHdxZV9zdGFydCk7CiB9CiAKIHN0YXRpYyB2b2lkIG1seDVfaWJfbXJfcmRtYV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYwppbmRleCBkZWRjMzAxMjM1YTBkYy4uMTE3YTA3MGU3ODRlYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmMKQEAgLTEyNiw3ICYjNDM7MTI2LDcgQEAgaW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKQogCiAJLyogQWxsb2NhdGUgd2l0aCBHRlBfQVRPTUlDIGJlY2F1c2Ugd2UmIzM5O2xsIGJlIGNhbGxlZCB3aXRoIGxvY2tzIGhlbGQuICovCiAJaWYgKCFhcnJheS0mZ3Q7cGFnZV9saXN0W3BdLnBhZ2UpCi0JCWFycmF5LSZndDtwYWdlX2xpc3RbcF0ucGFnZSA9ICh2b2lkICoqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0FUT01JQyk7CiYjNDM7CQlhcnJheS0mZ3Q7cGFnZV9saXN0W3BdLnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0FUT01JQyk7CiAKIAlpZiAoIWFycmF5LSZndDtwYWdlX2xpc3RbcF0ucGFnZSkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC0xNDIsNyAmIzQzOzE0Miw3IEBAIHZvaWQgbXRoY2FfYXJyYXlfY2xlYXIoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KQogCWludCBwID0gKGluZGV4ICogc2l6ZW9mICh2b2lkICopKSAmZ3Q7Jmd0OyBQQUdFX1NISUZUOwogCiAJaWYgKC0tYXJyYXktJmd0O3BhZ2VfbGlzdFtwXS51c2VkID09IDApIHsKLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhcnJheS0mZ3Q7cGFnZV9saXN0W3BdLnBhZ2UpOwomIzQzOwkJa2ZyZWUoYXJyYXktJmd0O3BhZ2VfbGlzdFtwXS5wYWdlKTsKIAkJYXJyYXktJmd0O3BhZ2VfbGlzdFtwXS5wYWdlID0gTlVMTDsKIAl9IGVsc2UKIAkJYXJyYXktJmd0O3BhZ2VfbGlzdFtwXS5wYWdlW2luZGV4ICZhbXA7IE1USENBX0FSUkFZX01BU0tdID0gTlVMTDsKQEAgLTE3NCw3ICYjNDM7MTc0LDcgQEAgdm9pZCBtdGhjYV9hcnJheV9jbGVhbnVwKHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBuZW50KQogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IChuZW50ICogc2l6ZW9mICh2b2lkICopICYjNDM7IFBBR0VfU0laRSAtIDEpIC8gUEFHRV9TSVpFOyAmIzQzOyYjNDM7aSkKLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhcnJheS0mZ3Q7cGFnZV9saXN0W2ldLnBhZ2UpOwomIzQzOwkJa2ZyZWUoYXJyYXktJmd0O3BhZ2VfbGlzdFtpXS5wYWdlKTsKIAogCWtmcmVlKGFycmF5LSZndDtwYWdlX2xpc3QpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYwppbmRleCBmOTBmNjdhZmM4ZmFiZS4uYzllYzljYTBhYWE2MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jCkBAIC04OTUsNyAmIzQzOzg5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCwKIAkJZ290byBlcnJfdW1lbTsKIAl9CiAKLQlwYWdlcyA9ICh1NjQgKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwomIzQzOwlwYWdlcyA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXBhZ2VzKSB7CiAJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gZXJyX210dDsKQEAgLTkyNCw3ICYjNDM7OTI0LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLAogCWlmIChpKQogCQllcnIgPSBtdGhjYV93cml0ZV9tdHQoZGV2LCBtci0mZ3Q7bXR0LCBuLCBwYWdlcywgaSk7CiBtdHRfZG9uZToKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIHBhZ2VzKTsKJiM0MzsJa2ZyZWUocGFnZXMpOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyX210dDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jCmluZGV4IDcwZTdkMDhmZGNlNjkyLi5jNDBjY2U2OWU5NDU3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYwpAQCAtMjYzLDcgJiM0MzsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgd3NzX2V4Y2VlZHNfdGhyZXNob2xkKHN0cnVjdCBydnRfd3NzICp3c3MpCiBzdGF0aWMgdm9pZCBnZXRfbWFwX3BhZ2Uoc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdCwKIAkJCSBzdHJ1Y3QgcnZ0X3Fwbl9tYXAgKm1hcCkKIHsKLQl1bnNpZ25lZCBsb25nIHBhZ2UgPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7CiYjNDM7CXZvaWQgKnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7CiAKIAkvKgogCSAqIEZyZWUgdGhlIHBhZ2UgaWYgc29tZW9uZSByYWNlZCB3aXRoIHVzIGluc3RhbGxpbmcgaXQuCkBAIC0yNzEsOSAmIzQzOzI3MSw5IEBAIHN0YXRpYyB2b2lkIGdldF9tYXBfcGFnZShzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LAogCiAJc3Bpbl9sb2NrKCZhbXA7cXB0LSZndDtsb2NrKTsKIAlpZiAobWFwLSZndDtwYWdlKQotCQlmcmVlX3BhZ2UocGFnZSk7CiYjNDM7CQlrZnJlZShwYWdlKTsKIAllbHNlCi0JCW1hcC0mZ3Q7cGFnZSA9ICh2b2lkICopcGFnZTsKJiM0MzsJCW1hcC0mZ3Q7cGFnZSA9IHBhZ2U7CiAJc3Bpbl91bmxvY2soJmFtcDtxcHQtJmd0O2xvY2spOwogfQogCkBAIC0zNDMsNyAmIzQzOzM0Myw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcXBuX3RhYmxlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQpCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShxcHQtJmd0O21hcCk7IGkmIzQzOyYjNDM7KQotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcXB0LSZndDttYXBbaV0ucGFnZSk7CiYjNDM7CQlrZnJlZShxcHQtJmd0O21hcFtpXS5wYWdlKTsKIH0KIAogLyoqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyByZXBsYWNpbmcgdGhlIG9sZCBwYWdlIGFsbG9jYXRvciBmdW5jdGlvbnMsIGBfX2dldF9mcmVlX3BhZ2UoKWAgYW5kIGBnZXRfemVyb2VkX3BhZ2UoKWAsIHdpdGggYGttYWxsb2MoKWAgYW5kIGBremFsbG9jKClgIHdpdGggYGtmcmVlKClgIGZvciBmcmVlaW5nLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIG1vdmUgZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgdG8gdGhlIHNsYWIgYWxsb2NhdG9yIOKAkyBhIHNpZ25pZmljYW50IGludGVybmFsIHNoaWZ0LiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyB2YXJpb3VzIEluZmluaWJhbmQgZHJpdmVyczogYHVtZW0uY2AsIGBvZHAuY2AsIGBtdGhjYV9hbGxvY2F0b3IuY2AsIGBtdGhjYV9wcm92aWRlci5jYCwgYW5kIGBxcC5jYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8mIzM0OyBJdCYjMzk7cyBhIG1lbW9yeSBhbGxvY2F0aW9uIGNoYW5nZTsgaXQgZG9lc24mIzM5O3QgKmFkZCogbmV3IGZlYXR1cmVzIG9yIGludHJvZHVjZSBub3ZlbCBsb2dpYy4gSXQgY2hhbmdlcyB0aGUgKmhvdyogb2YgYWxsb2NhdGlvbiwgdGhvdWdoLiBDb3VsZCB3ZSBiZSBvcGVuaW5nIHRoZSBkb29yIHRvIGJ1Z3MgaWYgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGltcGxpY2l0IGFzc3VtcHRpb25zIGFib3V0IHBhZ2UgYWxpZ25tZW50LCBvciBvdGhlciBudWFuY2VzIG9mIHRoZSBwYWdlIGFsbG9jYXRvciB0aGF0IHRoZSBzbGFiIGFsbG9jYXRvciBoYW5kbGVzIGRpZmZlcmVudGx5PyBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBpZiBrbWFsbG9jIGd1YXJhbnRlZXMgcGFnZSBhbGlnbm1lbnQuCgpIb2xkIG9uLi4uIGlzIGBrbWFsbG9jKFBBR0VfU0laRSlgIGd1YXJhbnRlZWQgcGFnZS1hbGlnbmVkPyBObywgbm90IHN0cmljdGx5LCByaWdodD8gYGttYWxsb2NgIGNhbiBiZSBwYWdlLWFsaWduZWQgZm9yIGBQQUdFX1NJWkVgLCBidXQgaXQmIzM5O3Mgbm90IGEgaGFyZCBndWFyYW50ZWUuIEkgdGhpbmsuLi4geWVhaCwgaW4gU0xVQiwgaWYgYFBBR0VfU0laRWAgaXMgYSBwb3dlciBvZiAyIGFuZCBhYm92ZSBzb21lIHRocmVzaG9sZCwgaXQgKnVzdWFsbHkqIGlzLCBidXQgdGhlIEFQSSBkb2VzbiYjMzk7dCBwcm9taXNlIGl0IHdpdGhvdXQgdXNpbmcgYF9fR0ZQX0NPTVBgIG9yIHNpbWlsYXIgZmxhZ3MuIFByYWN0aWNhbGx5LCBJIHRoaW5rIHdlICpkbyogdXN1YWxseSBnZXQgcGFnZSBhbGlnbm1lbnQgZm9yIGttYWxsb2Mgb2YgUEFHRV9TSVpFLgoKU28sIGRvZXMgdGhhdCBldmVuIG1hdHRlciBoZXJlPyBNYXliZS4gV2UgbmVlZCB0byBzZWUgaWYgYW55IHNwZWNpZmljIGZ1bmN0aW9ucyB3b3VsZCBiZSB3b3J0aCB0YXJnZXRpbmcgd2l0aCBmdXp6aW5nLiBMZXQgbWUgZ28gaHVudGluZyBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiB0byBmb2N1cyBvbi4KCkxldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBfX2liX3VtZW1fZ2V0X3ZhYCBpbiBgZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jYC4gV2FpdC4uLiBkb2VzbiYjMzk7dCB0aGF0IGZ1bmN0aW9uIG5vdCBleGlzdCBpbiBtb2Rlcm4ga2VybmVscz8gSSYjMzk7bGwgdXNlIGdyZXBwZXIgdG8gc2VlIGlmIGl0IHN0aWxsIGV4aXN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2liX3VtZW1fZ2V0X3ZhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0xNjA9RVhQT1JUX1NZTUJPTChpYl91bWVtX2ZpbmRfYmVzdF9wZ3N6KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0xNjEtXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmM6MTYyOnN0YXRpYyBzdHJ1Y3QgaWJfdW1lbSAqX19pYl91bWVtX2dldF92YShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMTYzLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBzaXplLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0yODk9c3RydWN0IGliX3VtZW0gKmliX3VtZW1fZ2V0X2Rlc2Moc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTAtXHRjYXNlIElCX1VWRVJCU19CVUZGRVJfVFlQRV9WQTpcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYzozMTE6XHRcdHJldHVybiBfX2liX3VtZW1fZ2V0X3ZhKGRldmljZSwgZGVzYy1cdTAwM2VhZGRyLCBkZXNjLVx1MDAzZWxlbmd0aCxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTItXHRcdFx0XHRcdGFjY2Vzcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEzMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBjb25maXJtaW5nIHRoYXQgYF9faWJfdW1lbV9nZXRfdmFgIGlzIGluZGVlZCBhIGZ1bmN0aW9uIHdlJiMzOTtyZSB1c2luZy4gTm93LCBhIGtleSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBtaW5kIHJpZ2h0IGF3YXkgaXMgdGhlIHJlbGF0aW9uc2hpcCB0byB0aGUgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYC4gVW5kZXJzdGFuZGluZyBob3cgdGhlc2UgdHdvIGludGVyYWN0LCBpZiBhdCBhbGwsIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgbWVtb3J5IHJlZ2lzdHJhdGlvbiBhbmQgV29yayBRdWV1ZSBFbGVtZW50IChXUUUpIHByb2Nlc3MuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgbGluayBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jPTEzODQ9c3RhdGljIGlubGluZSBzdHJ1Y3QgbWx4NV9pYl9zcnEgKnJlc190b19zcnEoc3RydWN0IG1seDVfY29yZV9yc2NfY29tbW9uICpyZXMpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTM5MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jOjEzOTI6c3RhdGljIHZvaWQgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xMzkzLVx0XHRcdFx0XHQgIHN0cnVjdCBtbHg1X3BhZ2VmYXVsdCAqcGZhdWx0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jPTE2MTg9c3RhdGljIHZvaWQgbWx4NV9pYl9wZmF1bHQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X3BhZ2VmYXVsdCAqcGZhdWx0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjMtXHRjYXNlIE1MWDVfUEZBVUxUX1NVQlRZUEVfV1FFOlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM6MTYyNDpcdFx0bWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoZGV2LCBwZmF1bHQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTYyNS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY2MQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYG10aGNhX2FycmF5X3NldGAqKgoKSG1tLCBgbXRoY2FfYXJyYXlfc2V0YC4uLiB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBJJiMzOTt2ZSBiZWVuIGNvbnNpZGVyaW5nLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGluIFtpbnNlcnQgc3BlY2lmaWMgYXBwbGljYXRpb24vY29udGV4dCByZWxldmFudCB0byB0aGUgdXNlciYjMzk7cyBmaWVsZCwgZS5nLiwgJiMzNDtoaWdoLXBlcmZvcm1hbmNlIHNwYXJzZSBtYXRyaXggb3BlcmF0aW9ucyYjMzQ7IG9yICYjMzQ7bWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ2llcyBmb3IgZW1iZWRkZWQgc3lzdGVtcyYjMzQ7XS4gV2hhdCBzcGVjaWZpY2FsbHkgYXJlIGl0cyBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzZXM/IEkmIzM5O20gdHJ5aW5nIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBkZXRhaWxzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiwgb3IgcGVyaGFwcywgaXRzIGRvY3VtZW50YXRpb24g4oCTIHRoZSBjcml0aWNhbCBhc3BlY3RzIHJlbGF0ZWQgdG8gZGF0YSBzdHJ1Y3R1cmVzLCBsb2NraW5nIG1lY2hhbmlzbXMsIG9yIGV2ZW4gcG90ZW50aWFsIGNhY2hlIGNvaGVyZW5jeSBpc3N1ZXMuIFRoZSBuYW1lIHN1Z2dlc3RzIGFuIGFycmF5IHNldHRpbmcsIGJ1dCB0aGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBzbyB3aGF0JiMzOTtzIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZT8gSSYjMzk7bSBpbnN0YW50bHkgY29uc2lkZXJpbmcgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcyBhbmQgaG93IHRoZXkgc3RhY2sgdXAuIElzIHRoaXMgdGhlICpyaWdodCogdG9vbCBmb3IgKnRoaXMqIGpvYiwgb3IgYW0gSSBvdmVybG9va2luZyBzb21ldGhpbmcgY3J1Y2lhbD8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIHRpbWUgY29tcGxleGl0eSBmb3IgdmFyaW91cyB1c2UgY2FzZXMgYW5kIG1lbW9yeSB1dGlsaXphdGlvbiBwYXR0ZXJucywgZXNwZWNpYWxseSBlZGdlIGNhc2VzLiBXaGF0IGFib3V0IGl0cyBpbXBhY3Qgb24gb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2U/IEEgcXVpY2sgbWVudGFsIGNvbXBhcmlzb24gd2l0aCBvdGhlciBmdW5jdGlvbnMgb3IgYXBwcm9hY2hlcyBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIHRvIHNlZSB3aGF0IHRoaXMgZnVuY3Rpb24gcmVhbGx5IG9mZmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jPTExMz12b2lkICptdGhjYV9hcnJheV9nZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmM6MTIzOmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjQte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jPTc2OD1pbnQgbXRoY2FfaW5pdF9jcShzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsIGludCBuZW50LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1MC1cdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2LVx1MDAzZWNxX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2NxLmM6ODUxOlx0ZXJyID0gbXRoY2FfYXJyYXlfc2V0KFx1MDAyNmRldi1cdTAwM2VjcV90YWJsZS5jcSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1Mi1cdFx0XHQgICAgICBjcS1cdTAwM2VjcW4gXHUwMDI2IChkZXYtXHUwMDNlbGltaXRzLm51bV9jcXMgLSAxKSwgY3EpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9kZXYuaD00MTg9dm9pZCAqbXRoY2FfYXJyYXlfZ2V0KHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2Lmg6NDE5OmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2LmgtNDIwLXZvaWQgbXRoY2FfYXJyYXlfY2xlYXIoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYz0xMjkxPWludCBtdGhjYV9hbGxvY19xcChzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTMyOC1cdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2LVx1MDAzZXFwX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTMyOTpcdG10aGNhX2FycmF5X3NldChcdTAwMjZkZXYtXHUwMDNlcXBfdGFibGUucXAsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzMwLVx0XHRcdHFwLVx1MDAzZXFwbiBcdTAwMjYgKGRldi1cdTAwM2VsaW1pdHMubnVtX3FwcyAtIDEpLCBxcCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM9MTM2Nj1pbnQgbXRoY2FfYWxsb2Nfc3FwKHN0cnVjdCBtdGhjYV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzk1LVx0ZWxzZVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTM5NjpcdFx0bXRoY2FfYXJyYXlfc2V0KFx1MDAyNmRldi1cdTAwM2VxcF90YWJsZS5xcCwgbXFwbiwgcXApO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTM5Ny1cdHNwaW5fdW5sb2NrX2lycShcdTAwMjZkZXYtXHUwMDNlcXBfdGFibGUubG9jayk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jPTIwNj1pbnQgbXRoY2FfYWxsb2Nfc3JxKHN0cnVjdCBtdGhjYV9kZXYgKmRldiwgc3RydWN0IG10aGNhX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjgzLVx0c3Bpbl9sb2NrX2lycShcdTAwMjZkZXYtXHUwMDNlc3JxX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jOjI4NDpcdGlmIChtdGhjYV9hcnJheV9zZXQoXHUwMDI2ZGV2LVx1MDAzZXNycV90YWJsZS5zcnEsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjg1LVx0XHRcdCAgICBzcnEtXHUwMDNlc3JxbiBcdTAwMjYgKGRldi1cdTAwM2VsaW1pdHMubnVtX3NycXMgLSAxKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDE5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgbXRoY2FfcmVnX3VzZXJfbXJgIFZhcmlhYmxlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gdGhlIGBtdGhjYV9yZWdfdXNlcl9tcmAgdmFyaWFibGUuIFRoYXQgb25lJiMzOTtzIGdvdCBteSBhdHRlbnRpb24uIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgaGVyZT8gSnVzdCBzZWVpbmcgdGhlIG5hbWUsIG15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc2NlbmFyaW9zLiBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgY3Jvc3MtcmVmZXJlbmNpbmcgdGhpcyB3aXRoIG15IGtub3dsZWRnZSBvZiBbWW91ciBGaWVsZCAtIGUuZy4sIG1lbW9yeSBtYW5hZ2VtZW50LCByZWdpc3RlciBhbGxvY2F0aW9uLCBzeXN0ZW0gY2FsbHMsIGV0Yy5dLiBJcyBpdCBhIHVzZXItbW9kZSBtZW1vcnkgcmVnaW9uPyBQb3NzaWJseSByZWxhdGVkIHRvIGEgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZT8gT3IgaXMgaXQgcGFydCBvZiBhIGxhcmdlciBmcmFtZXdvcmsgZm9yIHNvbWV0aGluZyBJJiMzOTttIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aD8gSXQmIzM5O3MgdGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcGVkIGludG8gbXkgaGVhZC4gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210aGNhX3JlZ191c2VyX21yJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jPTgyNT1zdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9nZXRfZG1hX21yKHN0cnVjdCBpYl9wZCAqcGQsIGludCBhY2MpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMtODQ3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM6ODQ4OnN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTg0OS1cdFx0XHRcdCAgICAgICB1NjQgdmlydCwgaW50IGFjYywgc3RydWN0IGliX2RtYWggKmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM9MTA4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbXRoY2FfZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy0xMTIwLVx0LnF1ZXJ5X3FwID0gbXRoY2FfcXVlcnlfcXAsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYzoxMTIxOlx0LnJlZ191c2VyX21yID0gbXRoY2FfcmVnX3VzZXJfbXIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy0xMTIyLVx0LnJlc2l6ZV91c2VyX2NxID0gbXRoY2FfcmVzaXplX2NxLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjA1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWx2aW5nIGludG8gdGhlIEluZmluaWJhbmQgUkRNQSBWaXJ0dWFsIFRyYW5zcG9ydCAoUkRNYXZ0KSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIEluZmluaWJhbmQgc3RhY2ssIHNwZWNpZmljYWxseSB0aGUgUkRNYXZ0IGRyaXZlci4gTXkgbWluZCYjMzk7cyBpbW1lZGlhdGVseSBkcmF3biB0byBhIHNwZWNpZmljIGZ1bmN0aW9uOiBgZ2V0X21hcF9wYWdlYC4gV2hlcmUgaXMgdGhhdCBsb2NhdGVkPyBBaCwgaXQmIzM5O3MgcmlnaHQgaW4gYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY2AuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtYXBwaW5nIG9mIG1lbW9yeSBwYWdlcyBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgUkRNYXZ0JiMzOTtzIHF1ZXVlIHBhaXIgKFFQKSBjb250ZXh0LiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgaXMgaGFuZGxpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHVzZXIgc3BhY2UgdmlydHVhbCBhZGRyZXNzZXMgYW5kIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBwaHlzaWNhbCBhZGRyZXNzZXMgd2l0aGluIHRoZSBJbmZpbmliYW5kIGZhYnJpYy4gSXMgaXQgdXNpbmcgdGhlIHN0YW5kYXJkIERNQSBtZWNoYW5pc21zLCBvciBhcmUgdGhlcmUgb3B0aW1pemF0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHZpcnR1YWwgdHJhbnNwb3J0IGxheWVyPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgUVAgb3BlcmF0aW9ucyBhbmQgaG93IGl0IGNvbnRyaWJ1dGVzIHRvIGVmZmljaWVudCBkYXRhIHRyYW5zZmVyLiBUaGlzIHNlZW1zIGxpa2UgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGluIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIHRoaXMgc29mdHdhcmUgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dldF9tYXBfcGFnZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM9MjU4PXN0YXRpYyBpbmxpbmUgYm9vbCB3c3NfZXhjZWVkc190aHJlc2hvbGQoc3RydWN0IHJ2dF93c3MgKndzcylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtMjYyLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jOjI2MzpzdGF0aWMgdm9pZCBnZXRfbWFwX3BhZ2Uoc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdCxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0yNjQtXHRcdFx0IHN0cnVjdCBydnRfcXBuX21hcCAqbWFwKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz0yODU9c3RhdGljIGludCBpbml0X3Fwbl90YWJsZShzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTMxOC1cdFx0aWYgKCFtYXAtXHUwMDNlcGFnZSkge1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jOjMxOTpcdFx0XHRnZXRfbWFwX3BhZ2UocXB0LCBtYXApO1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTMyMC1cdFx0XHRpZiAoIW1hcC1cdTAwM2VwYWdlKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTQ4OD1zdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTUyMy1cdFx0aWYgKHVubGlrZWx5KCFtYXAtXHUwMDNlcGFnZSkpIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo1MjQ6XHRcdFx0Z2V0X21hcF9wYWdlKHFwdCwgbWFwKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy01MjUtXHRcdFx0aWYgKHVubGlrZWx5KCFtYXAtXHUwMDNlcGFnZSkpXG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jPTEzNz1zdHJ1Y3QgaGZzX2JtYXBfY3R4IHtcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTQ4LSAqL1xuZnMvaGZzcGx1cy9idHJlZS5jOjE0OTpzdGF0aWMgc3RydWN0IHBhZ2UgKmhmc19ibWFwX2dldF9tYXBfcGFnZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLFxuZnMvaGZzcGx1cy9idHJlZS5jLTE1MC1cdFx0XHRcdFx0ICBzdHJ1Y3QgaGZzX2JtYXBfY3R4ICpjdHgsXG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jPTE5Nj1zdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYy0yMDEtXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjAyOlx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcdTAwMjZjdHgsIG5vZGVfYml0X2lkeCAvIEJJVFNfUEVSX0JZVEUpO1xuZnMvaGZzcGx1cy9idHJlZS5jLTIwMy1cdGlmIChJU19FUlIocGFnZSkpXG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jPTIyMj1zdGF0aWMgaW50IGhmc19ibWFwX2NsZWFyX2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYy0yMjctXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjI4Olx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcdTAwMjZjdHgsIG5vZGVfYml0X2lkeCAvIEJJVFNfUEVSX0JZVEUpO1xuZnMvaGZzcGx1cy9idHJlZS5jLTIyOS1cdGlmIChJU19FUlIocGFnZSkpXG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jPTUyOD1zdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm1hcF9hbGxvYyhzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlKVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYy01NDctXG5mcy9oZnNwbHVzL2J0cmVlLmM6NTQ4Olx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcdTAwMjZjdHgsIDApO1xuZnMvaGZzcGx1cy9idHJlZS5jLTU0OS1cdGlmIChJU19FUlIocGFnZSkpIHtcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtNTk4LVxuZnMvaGZzcGx1cy9idHJlZS5jOjU5OTpcdFx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcdTAwMjZjdHgsIDApO1xuZnMvaGZzcGx1cy9idHJlZS5jLTYwMC1cdFx0aWYgKElTX0VSUihwYWdlKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTI5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluZmluaWJhbmQgRHJpdmVyIFVwZGF0ZXM6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBhIGNsdXN0ZXIgb2YgY2hhbmdlcyByZWxhdGVkIHRvIEluZmluaWJhbmQgZHJpdmVycy4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZXJlJiMzOTtzIGEgcmVuYW1pbmc6IGBpYl91bWVtX2dldF9kZXNjYCBpcyBub3cgYF9faWJfdW1lbV9nZXRfdmFgLiBUaGF0JiMzOTtzIGxpa2VseSBhIHJlZmFjdG9yaW5nLCBwb3NzaWJseSB0byBjbGFyaWZ5IHRoZSBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlIG9yIHNjb3BlIOKAkyBwcm9iYWJseSBnb29kIHByYWN0aWNlIG92ZXJhbGwuIFRoZW4gdGhlcmUmIzM5O3MgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYCwgd2hpY2ggaXMgcHJvYmFibHkgYSBoYW5kbGVyIGZvciBtZW1vcnkgcmVnaW9uIHdyaXRlIHF1ZXVlIGVudHJ5IHBhZ2UgZmF1bHRzIHdpdGhpbiB0aGUgTUxYNSBJbmZpbmliYW5kIGRyaXZlciwgYWx3YXlzIGltcG9ydGFudCBmb3IgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS4gSSBhbHNvIHNlZSBgbXRoY2FfYXJyYXlfc2V0YCwgYG10aGNhX3JlZ191c2VyX21yYCwgYW5kIGBnZXRfbWFwX3BhZ2VgIHdpdGhpbiBgcmRtYXZ0YCwgdGhlc2UgYXJlIGFsbCBkZWVwIGluIHRoZSBndXRzIG9mIHRoZSB1c2VyLXNwYWNlIG1lbW9yeSByZWdpc3RyYXRpb24gaGFuZGxpbmcgZm9yIEluZmluaWJhbmQuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgdG91Y2hpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIEluZmluaWJhbmQgc3RhY2suIFNlZW1zIGxpa2UgYSBmb2N1cyBvbiB1c2VyLXNwYWNlIG1lbW9yeSBoYW5kbGluZywgb3IgbWF5YmUgaW1wcm92ZWQgZmF1bHQgaGFuZGxpbmcgaXMgaW4gcHJvZ3Jlc3MuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBjb25maWdzOiBgQ09ORklHX0lORklOSUJBTkRgLCBgQ09ORklHX0lORklOSUJBTkRfVVNFUl9NRU1gLCBgQ09ORklHX01MWDVfSU5GSU5JQkFORGAsIGBDT05GSUdfSU5GSU5JQkFORF9NVEhDQWAsIGFuZCBgQ09ORklHX0lORklOSUJBTkRfUkRNQVZUYC4gVGhlc2UgY29uZmlybSB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMsIGZvY3VzaW5nIG9uIEluZmluaWJhbmQgYXMgYSB3aG9sZSwgc3BlY2lmaWNhbGx5IGluY2x1ZGluZyBNTFg1IGFuZCBNVEhDQSBkcml2ZXJzLCBhbmQgdGhlIFJETUFWVCBpbXBsZW1lbnRhdGlvbi4KCk5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgY29uZmlncyBhcmUgcmVsYXRlZC4gSSB3aWxsIGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBJbmZpbmliYW5kIGNvbmZpZ3VyYXRpb24gc3BhY2UuIFRoaXMgaXMgd2hlcmUgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogb2YgdGhlc2UgY2hhbmdlcyBtb3JlIGZ1bGx5LCBlc3BlY2lhbGx5IGhvdyB0aGUgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJTkZJTklCQU5EJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyOm1lbnVjb25maWcgSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE2PWlmIElORklOSUJBTkRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE3LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MTg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NQURcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgTUFEIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjI4OmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTM5LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDA6Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NfQ09SRVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTAtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MTpjb25maWcgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7SW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02My1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjY0OmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtSRE1BL0NNXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNzEtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo3Mjpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TX0NPTkZJR0ZTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cdGJvb2xcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04MC1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjgxOmNvbmZpZyBJTkZJTklCQU5EX1ZJUlRfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04Mi1cdGRlZl9ib29sICFISUdITUVNXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9CTkdfUkVcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gTmV4dCBnZW5lcmF0aW9uIFJvQ0UgSENBIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9yZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9yZS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfQk5YVF9SRVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JueHRfcmUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gTmV0eHRyZW1lIEhDQSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfQ1hHQjRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDaGVsc2lvIFQ0L1Q1IFJETUEgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VmYS9LY29uZmlnLTYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZWZhL0tjb25maWc6Nzpjb25maWcgSU5GSU5JQkFORF9FRkFcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lZmEvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7QW1hem9uIEVsYXN0aWMgRmFicmljIEFkYXB0ZXIgKEVGQSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0VSRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QWxpYmFiYSBFbGFzdGljIFJETUEgQWRhcHRlciAoRVJETUEpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSEZJMVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q29ybmVsaXMgT1BYIEdlbjEgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSE5TX0hJUDA4XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0hpc2lsaWNvbiBIaXAwOCBGYW1pbHkgUm9DRSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lvbmljL0tjb25maWctMy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pb25pYy9LY29uZmlnOjQ6Y29uZmlnIElORklOSUJBTkRfSU9OSUNcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pb25pYy9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgUGVuc2FuZG8gRFNDIFJETUEvUm9DRSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lyZG1hL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pcmRtYS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSVJETUFcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pcmRtYS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBFdGhlcm5ldCBQcm90b2NvbCBEcml2ZXIgZm9yIFJETUFcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9NVEhDQVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01lbGxhbm94IEhDQSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWctOS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnOjEwOmNvbmZpZyBJTkZJTklCQU5EX01USENBX0RFQlVHXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9vY3JkbWEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L29jcmRtYS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfT0NSRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvb2NyZG1hL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0VtdWxleCBPbmUgQ29ubmVjdCBIQ0Egc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9RRURSXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRTG9naWMgUm9DRSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3VzbmljL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9VU05JQ1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3VzbmljL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZlcmJzIHN1cHBvcnQgZm9yIENpc2NvIFZJQ1wmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9WTVdBUkVfUFZSRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgUGFyYXZpcnR1YWxpemVkIFJETUEgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9SRE1BVlRcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UkRNQSB2ZXJicyB0cmFuc3BvcnQgbGlicmFyeVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVAtb3Zlci1JbmZpbmlCYW5kXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTExLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjEyOmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0NNXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMTMtXHRib29sIFwmIzM0O0lQLW92ZXItSW5maW5pQmFuZCBDb25uZWN0ZWQgTW9kZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTI2LVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjI3OmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0RFQlVHXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMjgtXHRib29sIFwmIzM0O0lQLW92ZXItSW5maW5pQmFuZCBkZWJ1Z2dpbmdcJiMzNDsgaWYgRVhQRVJUXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQxLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjQyOmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0RFQlVHX0RBVEFcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7SVAtb3Zlci1JbmZpbmlCYW5kIGRhdGEgcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9JU0VSXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7aVNDU0kgRXh0ZW5zaW9ucyBmb3IgUkRNQSAoaVNFUilcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJUXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O2lTQ1NJIEV4dGVuc2lvbnMgZm9yIFJETUEgKGlTRVIpIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMi1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjM6Y29uZmlnIElORklOSUJBTkRfUlRSU1xuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctNi1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjc6Y29uZmlnIElORklOSUJBTkRfUlRSU19DTElFTlRcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTgtXHR0cmlzdGF0ZSBcJiMzNDtSVFJTIGNsaWVudCBtb2R1bGVcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy0xNy1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjE4OmNvbmZpZyBJTkZJTklCQU5EX1JUUlNfU0VSVkVSXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O1JUUlMgc2VydmVyIG1vZHVsZVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9TUlBcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfU1JQVFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDgxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoIGZvciBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgd2l0aGluIHNldmVyYWwgSW5maW5pYmFuZCBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyB3b3J0aCBteSB0aW1lIHRvIGZ1eno/JiMzNDsgVGhlIGFuc3dlciBpcyBhIGNsZWFyIHllcy4gVGhlIGNvcmUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIGBfX2dldF9mcmVlX3BhZ2VgIHRvIGBrbWFsbG9jYC4gTm93LCBgX19nZXRfZnJlZV9wYWdlYCBnaXZlcyB1cyBhIHBhZ2UtYWxpZ25lZCBhZGRyZXNzLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGNlcnRhaW4gRE1BIG9wZXJhdGlvbnMgYW5kIGhhcmR3YXJlIHJlcXVpcmVtZW50cy4gYGttYWxsb2NgLCBvbiB0aGUgb3RoZXIgaGFuZCwgKmRvZXNuJiMzOTt0KiBndWFyYW50ZWUgcGFnZSBhbGlnbm1lbnQsIGV2ZW4gZm9yIGBQQUdFX1NJWkVgIGFsbG9jYXRpb25zLCBhbHRob3VnaCBpbiBwcmFjdGljZSBpdCBvZnRlbiBtaWdodCBiZS4KClRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gVGhlIGhhcmR3YXJlLCBvciB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmLCBtaWdodCAqZXhwZWN0KiBwYWdlLWFsaWduZWQgbWVtb3J5LiBGb3IgZXhhbXBsZSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgbXRoY2FfYXJyYXlfc2V0YC4gRG9lcyB0aGF0IGZ1bmN0aW9uIHJlcXVpcmUgaXRzIHBvaW50ZXIgYXJyYXkgdG8gYmUgcGFnZS1hbGlnbmVkPyBMZXQmIzM5O3MgZGlnIGRlZXBlcjogYG10aGNhX3JlZ191c2VyX21yYCBhbGxvY2F0ZXMgYHBhZ2VzID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO2AgYW5kIHRoZW4gcGFzc2VzIHRoaXMgbWVtb3J5IHRvIGBtdGhjYV93cml0ZV9tdHRgLiBEb2VzIGBtdGhjYV93cml0ZV9tdHRgIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgcGFnZSBhbGlnbm1lbnQ/IFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIFRoZW4gdGhlcmUgaXMgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYCBhbGxvY2F0ZXMgYHdxZV9zdGFydCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtgIGFuZCBgX19pYl91bWVtX2dldF92YWAgYWxsb2NhdGVzIGBwYWdlX2xpc3QgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7YCBhbG9uZyB3aXRoIGBnZXRfbWFwX3BhZ2VgIGluIGByZG1hdnRgLCBhbGxvY2F0aW5nIGBwYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO2AuIEFsbCBvZiB0aGVzZSBjb3VsZCBiZSB0YXJnZXRzLgoKVGhpcyBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBhIHByaW1lIHNwb3QgZm9yIGludHJvZHVjaW5nIGJ1Z3MsIGVzcGVjaWFsbHkgaWYgdGhlIGhhcmR3YXJlIGV4cGVjdHMgcGFnZS1hbGlnbmVkIG1lbW9yeSBmb3IgRE1BLCBvciBpZiB0aGUgY29kZSBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCBwYWdlIGFsaWdubWVudC4gV2FpdCwgYSBuZXcgdGhvdWdodCwgSSByZW1lbWJlciB0aGF0IGBrbWFsbG9jYCBtZW1vcnkgaXNuJiMzOTt0ICpndWFyYW50ZWVkKiB0byBiZSBETUEtYWJsZSBpbiBhbGwgY2FzZXMsIG9yIGlzIHRoYXQgdHJ1ZT8gQWN0dWFsbHksIGBrbWFsbG9jYCAqaXMqIERNQS1hYmxlLCBidXQgdGhlIHBhZ2UgYWxpZ25tZW50IG1pZ2h0IGNyZWF0ZSBwcm9ibGVtcy4gSGFuZyBvbiwgd2FzbiYjMzk7dCBga21hbGxvYyhQQUdFX1NJWkUpYCBndWFyYW50ZWVkIHRvIGJlIHBoeXNpY2FsbHkgY29udGlndW91cz8gWWVzLCBpdCBpcywganVzdCBsaWtlIGBfX2dldF9mcmVlX3BhZ2VgLgoKT2theSwgYmFjayBvbiB0cmFjaywgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLgoKTm93LCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgd2UgdGFsa2luZyBhYm91dD8gYElORklOSUJBTkRgLCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGBJTkZJTklCQU5EX01USENBYCwgYE1MWDVfSU5GSU5JQkFORGAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLiBCdXQsIGBNTFg1X0lORklOSUJBTkRgIGlzIHRoZSBjb25maWcgZm9yIG1seDUgaWI7IGxldCBtZSBqdXN0IGNvbmZpcm0gaXRzIGV4YWN0IG5hbWUgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1MWDVfSU5GSU5JQkFORCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9LY29uZmlnOjI6Y29uZmlnIE1MWDVfSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzA3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMzA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgRm9jdXM6IEluZmluaWJhbmQgYW5kIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBJbmZpbmliYW5kIGFuZCBwb3NzaWJsZSBhcmVhcyBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci4gVGhlIGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBNTFg1X0lORklOSUJBTkRgIGRyaXZlciwgdGhhdCBpcyB0aGUgb2J2aW91cyBjaG9pY2UgdG8gbG9vayBhdCBmaXJzdC4gQW5kIHllcywgSSBuZWVkIHRvIHJlbWVtYmVyIGBJTkZJTklCQU5EX01USENBYCBhbmQgYElORklOSUJBTkRfUkRNQVZUYCBhcmUgYWxzbyBjcml0aWNhbCBjb21wb25lbnRzLiBMZXQmIzM5O3Mgbm90IGZvcmdldCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGFsbCBvZiB0aGVzZSBhcmUgaW1wb3J0YW50IGRyaXZlcnMgdG8gY29uc2lkZXIuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gc3BlY2lmaWMgZnVuY3Rpb25zLiBUaGUgZ3JlcHBlciBvdXRwdXQgbGVkIG1lIHRvIGBfX2liX3VtZW1fZ2V0X3ZhYC4gV2FpdCwgdGhhdCYjMzk7cyBzdGF0aWMgd2l0aGluIGBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNgLiBCdXQgc3l6a2FsbGVyICpjYW4qIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSYjMzk7cmUgZXhwb3NlZCBpbiB0aGUgZGVidWcgaW5mbywgc28gdGhhdCYjMzk7cyBhIHBvdGVudGlhbCB0YXJnZXQuIFRoaXMgaXMgdmVyeSBpbnRlcmVzdGluZyBiZWNhdXNlIHN5emthbGxlciYjMzk7cyBhYmlsaXR5IHRvIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnMgdGhhdCBhcmUgdXN1YWxseSBvdmVybG9va2VkIG1pZ2h0IHVuY292ZXIgbmV3IGJ1Z3MuCgpBbHNvIG9uIHRoZSBsaXN0IGFyZSBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLCBgbXRoY2FfYXJyYXlfc2V0YCwgYW5kIGBtdGhjYV9yZWdfdXNlcl9tcmAuIFRoZXNlIGFyZSBvdGhlciBpbXBvcnRhbnQgZnVuY3Rpb25zLgoKSSB3YXMgbG9va2luZyBhdCBgZ2V0X21hcF9wYWdlYCB3aGljaCBpcyBzdGF0aWMgd2l0aGluIGBkcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNgLiBJdCBpcyBjYWxsZWQgZnJvbSBgaW5pdF9xcG5fdGFibGVgIGFuZCBgYWxsb2NfcXBuYC4gU2luY2UgSSBhbSBhbHJlYWR5IGluIHRoZSBgcmRtYXZ0YCBhcmVhLCBgYWxsb2NfcXBuYCBtaWdodCBiZSBhIGJldHRlciBmb2N1cy4gSSBzaG91bGQgY2hlY2sgdGhhdCBvbmUgaW4gYHJkbWF2dGAgc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZm9jdXNpbmcgb24gdGhlIG1vc3QgcHJvbWlzaW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsbG9jX3FwbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWEuaD0xODM9c3RydWN0IGVyZG1hX2RldiB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hLmgtMjA3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hLmg6MjA4Olx0dTMyIG5leHRfYWxsb2NfcXBuO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hLmgtMjA5LVx0dTMyIG5leHRfYWxsb2NfY3FuO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYV9tYWluLmM9NTM3PXN0YXRpYyBpbnQgZXJkbWFfaWJfZGV2aWNlX2FkZChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jLTU3Ny1cdGRldi1cdTAwM2VuZXh0X2FsbG9jX2NxbiA9IDE7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jOjU3ODpcdGRldi1cdTAwM2VuZXh0X2FsbG9jX3FwbiA9IDE7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jLTU3OS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfdmVyYnMuYz05OTY9aW50IGVyZG1hX2NyZWF0ZV9xcChzdHJ1Y3QgaWJfcXAgKmlicXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmF0dHJzLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYV92ZXJicy5jLTEwMzMtXHRcdFx0XHQgICAgICBYQV9MSU1JVCgxLCBkZXYtXHUwMDNlYXR0cnMubWF4X3FwIC0gMSksXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfdmVyYnMuYzoxMDM0Olx0XHRcdFx0ICAgICAgXHUwMDI2ZGV2LVx1MDAzZW5leHRfYWxsb2NfcXBuLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYV92ZXJicy5jLTEwMzUtXHR9XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jPTIwMD1zdGF0aWMgdTggZ2V0X2xlYXN0X2xvYWRfYmFua2lkX2Zvcl9xcChzdHJ1Y3QgaG5zX3JvY2VfYmFuayAqYmFuaywgdTggdmFsaWRfcXBfYmFua19tYXNrKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYy0yMjEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM6MjIyOnN0YXRpYyBpbnQgYWxsb2NfcXBuX3dpdGhfYmFua2lkKHN0cnVjdCBobnNfcm9jZV9iYW5rICpiYW5rLCB1OCBiYW5raWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjIzLVx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgKnFwbilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM9MjUxPXN0YXRpYyB1OCBzZWxlY3RfcXBfYmFua2lkKHN0cnVjdCBobnNfcm9jZV9kZXYgKmhyX2Rldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjc4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jOjI3OTpzdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgaG5zX3JvY2VfZGV2ICpocl9kZXYsIHN0cnVjdCBobnNfcm9jZV9xcCAqaHJfcXAsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjgwLVx0XHQgICAgIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjkxLVx0XHRiYW5raWQgPSBzZWxlY3RfcXBfYmFua2lkKGhyX2RldiwgaW5pdF9hdHRyKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYzoyOTI6XHRcdHJldCA9IGFsbG9jX3Fwbl93aXRoX2JhbmtpZChcdTAwMjZxcF90YWJsZS1cdTAwM2ViYW5rW2JhbmtpZF0sIGJhbmtpZCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYy0yOTMtXHRcdFx0XHRcdCAgICBcdTAwMjZudW0pO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYz0xMTY1PXN0YXRpYyBpbnQgaG5zX3JvY2VfY3JlYXRlX3FwX2NvbW1vbihzdHJ1Y3QgaG5zX3JvY2VfZGV2ICpocl9kZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jLTEyMTAtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM6MTIxMTpcdHJldCA9IGFsbG9jX3Fwbihocl9kZXYsIGhyX3FwLCBpbml0X2F0dHIpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jLTEyMTItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTQ3MT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIG1rX3FwbihzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00NzctLyoqXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6NDc4OiAqIGFsbG9jX3FwbiAtIEFsbG9jYXRlIHRoZSBuZXh0IGF2YWlsYWJsZSBxcG4gb3IgemVyby9vbmUgZm9yIFFQIHR5cGVcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00NzktICpcdCAgICAgICBJQl9RUFRfU01JL0lCX1FQVF9HU0lcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDg3LSAqL1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jOjQ4ODpzdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDg5LVx0XHQgICAgIGVudW0gaWJfcXBfdHlwZSB0eXBlLCB1OCBwb3J0X251bSwgdTggZXhjbHVkZV9wcmVmaXgpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTQ5Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo0OTc6XHRpZiAocmRpLVx1MDAzZWRyaXZlcl9mLmFsbG9jX3FwbilcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo0OTg6XHRcdHJldHVybiByZGktXHUwMDNlZHJpdmVyX2YuYWxsb2NfcXBuKHJkaSwgcXB0LCB0eXBlLCBwb3J0X251bSk7XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDk5LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz0xMDI2PWludCBydnRfY3JlYXRlX3FwKHN0cnVjdCBpYl9xcCAqaWJxcCwgc3RydWN0IGliX3FwX2luaXRfYXR0ciAqaW5pdF9hdHRyLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0xMTYwLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jOjExNjE6XHRcdHJldCA9IGFsbG9jX3FwbihyZGksIFx1MDAyNnJkaS1cdTAwM2VxcF9kZXYtXHUwMDNlcXBuX3RhYmxlLFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTExNjItXHRcdFx0XHRpbml0X2F0dHItXHUwMDNlcXBfdHlwZSxcbi0tXG5pbmNsdWRlL3JkbWEvcmRtYV92dC5oPTE5OD1zdHJ1Y3QgcnZ0X2RyaXZlcl9wcm92aWRlZCB7XG4tLVxuaW5jbHVkZS9yZG1hL3JkbWFfdnQuaC0zNDAtXHQvKiBMZXQgdGhlIGRyaXZlciBwaWNrIHRoZSBuZXh0IHF1ZXVlIHBhaXIgbnVtYmVyKi9cbmluY2x1ZGUvcmRtYS9yZG1hX3Z0Lmg6MzQxOlx0aW50ICgqYWxsb2NfcXBuKShzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG5pbmNsdWRlL3JkbWEvcmRtYV92dC5oLTM0Mi1cdFx0XHQgZW51bSBpYl9xcF90eXBlIHR5cGUsIHUzMiBwb3J0X251bSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjIwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgSW52ZXN0aWdhdGlvbiBpbnRvIEtleSBJbmZpbmliYW5kIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb25zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBrZXkgc3ltYm9scyB3aXRoaW4gdGhlIEluZmluaWJhbmQgY29kZSB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgYW5kIHRoZW4gY29ycmVsYXRlIHRob3NlIHdpdGggcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCkZpcnN0LCBJIHNlZSBgYWxsb2NfcXBuYCB3aXRoaW4gYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY2AuIEl0JiMzOTtzIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdXNlIGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIGBydnRfY3JlYXRlX3FwYCBpcyBleHBvcnRlZC4gVGhhdCBzZWVtcyBsaWtlIGEgbXVjaCBiZXR0ZXIgZm9jdXMgc3ltYm9sIGZvciB0aGUgcmRtYXZ0IHBvcnRpb24sIHNvIEkmIzM5O2xsIHByaW9yaXRpemUgdGhhdC4KClRoZW4sIHRoZXJlJiMzOTtzIGBtdGhjYV9hcnJheV9zZXRgLiBBIHF1aWNrIGNoZWNrIHNob3dzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgbXRoY2FfaW5pdF9jcWAsIGBtdGhjYV9hbGxvY19xcGAsIGBtdGhjYV9hbGxvY19zcXBgLCBhbmQgYG10aGNhX2FsbG9jX3NycWAuIEdpdmVuIHRoYXQgdXNhZ2UsIGBtdGhjYV9hcnJheV9zZXRgIGxvb2tzIGxpa2UgYSBzb2xpZCBmb2N1cyBzeW1ib2wgZm9yIHRoZSBNZWxsYW5veC1zcGVjaWZpYyBjb2RlLgoKU2ltaWxhcmx5LCBgbXRoY2FfcmVnX3VzZXJfbXJgIGFwcGVhcnMgdG8gYmUgYW5vdGhlciBnb29kIGNhbmRpZGF0ZS4KCk1vdmluZyBvbiwgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYCBhbHNvIHN0YW5kcyBvdXQgYXMgYSBwcm9taXNpbmcgZm9jdXMgc3ltYm9sLgoKRmluYWxseSwgcmVnYXJkaW5nIHVzZXIgbWVtb3J5LCBgX19pYl91bWVtX2dldF92YWAgaXMgY2FsbGVkIGJ5IGBpYl91bWVtX2dldF9kZXNjYCwgc28gZWl0aGVyIG9mIHRob3NlIGlzIHN1aXRhYmxlLiBJJiMzOTtsbCBwcm9iYWJseSBjaGVjayBib3RoLgoKTm93LCBsZXQmIzM5O3MgcGl2b3QgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hpY2ggb25lcyBhcmUgaW52b2x2ZWQgaW4gdGhlc2UgY29kZSBwYXRocy4gSSYjMzk7dmUgbm90ZWQgYElORklOSUJBTkRgLCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGBJTkZJTklCQU5EX01USENBYCwgYE1MWDVfSU5GSU5JQkFORGAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLgoKV2FpdCwgYElORklOSUJBTkRfVVNFUl9NRU1gIGlzIGEgYm9vbGVhbi4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgdGhhdC4gQXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzPyBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gbm93IGN1cmlvdXMgd2hldGhlciBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCBoYXMgYW55IGJlYXJpbmcgb24gdGhlIG9wZXJhdGlvbiBvZiBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLiBUaGF0IHNlZW1zIGxpa2UgYW4gb2J2aW91cyBwbGFjZSB0byBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM9MTM4ND1zdGF0aWMgaW5saW5lIHN0cnVjdCBtbHg1X2liX3NycSAqcmVzX3RvX3NycShzdHJ1Y3QgbWx4NV9jb3JlX3JzY19jb21tb24gKnJlcylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xMzkxLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM6MTM5MjpzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTMtXHRcdFx0XHRcdCAgc3RydWN0IG1seDVfcGFnZWZhdWx0ICpwZmF1bHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM9MTYxOD1zdGF0aWMgdm9pZCBtbHg1X2liX3BmYXVsdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IG1seDVfcGFnZWZhdWx0ICpwZmF1bHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTYyMy1cdGNhc2UgTUxYNV9QRkFVTFRfU1VCVFlQRV9XUUU6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxNjI0Olx0XHRtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihkZXYsIHBmYXVsdCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xNjI1LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0MzkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgb2RwLmNgKioKCkFscmlnaHQsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHdoZXRoZXIgYG9kcC5jYCBpcyBiZWluZyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGVyZSYjMzk7cyBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBsaWtlIGAjaWZkZWZgLCBgI2lmYCwgb3Igc2ltaWxhciBndWFyZGluZyBpdHMgY29tcGlsYXRpb24gcGF0aC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJlc2VuY2UgKG9yIGFic2VuY2UpIG9mIHRoaXMgc3BlY2lmaWMgY29kZSBpcyBkZXBlbmRlbnQgb24gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3IgZW52aXJvbm1lbnQuIEl0IGRpY3RhdGVzIHRoZSBpbmNsdXNpb24gb3IgZXhjbHVzaW9uIG9mIHRoaXMgZmlsZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIEFyZSB0aGVyZSBmbGFncz8gQXJlIHRoZXJlIGRlZmluZXM/IEkgbmVlZCB0byBrbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZHBcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL01ha2VmaWxlPTIxPWliX2NvcmUtJChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgJiM0Mzs9IHVtZW0ubyB1bWVtX2RtYWJ1Zi5vXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9NYWtlZmlsZToyMjppYl9jb3JlLSQoQ09ORklHX0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lORykgJiM0Mzs9IHVtZW1fb2RwLm9cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL01ha2VmaWxlLTIzLWliX2NvcmUtJChDT05GSUdfSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFKSAmIzQzOz0gaWJfY29yZV91dmVyYnMub1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L01ha2VmaWxlPTQ9bWx4NV9pYi15IDo9IGFoLm8gXFxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9NYWtlZmlsZS0yNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L01ha2VmaWxlOjI4Om1seDVfaWItJChDT05GSUdfSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HKSAmIzQzOz0gb2RwLm9cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L01ha2VmaWxlLTI5LW1seDVfaWItJChDT05GSUdfTUxYNV9FU1dJVENIKSAmIzQzOz0gaWJfcmVwLm9cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlPTQ9cmRtYV9yeGUteSA6PSBcXFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGUtMjgtXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlOjI5OnJkbWFfcnhlLSQoQ09ORklHX0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lORykgJiM0Mzs9IHJ4ZV9vZHAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk4MgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19JTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdgIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgaW4gdGhpcyBjb250ZXh0LiBOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBzZXQgb2YgY29uZmlncyBhcmU6IGBJTkZJTklCQU5EYCwgYElORklOSUJBTkRfVVNFUl9NRU1gLCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCwgYE1MWDVfSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX01USENBYCwgYW5kIGBJTkZJTklCQU5EX1JETUFWVGAuCgpNeSBuZXh0IHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGRlcGVuZGVuY3kgb2YgYElORklOSUJBTkRfVVNFUl9NRU1gLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGltcGxpY2l0bHkgZW5hYmxlZCBkdWUgdG8gb3RoZXIgY29uZmlndXJhdGlvbnMsIG9yIGlmIGl0IHJlcXVpcmVzIGV4cGxpY2l0IHVzZXIgaW50ZXJ2ZW50aW9uLiBJdCYjMzk7cyBhIGJvb2xlYW4gY29uZmlndXJhdGlvbiwgc28gbGV0JiMzOTtzIHF1aWNrbHkgZXhhbWluZSBpdHMgZGVmaW5pdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gdG8gZmlndXJlIHRoaXMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00MD1jb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDEzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29uZmlnJiMzOTtzIEFjdGl2YXRpb24qKgoKT2theSwgc28gdGhpcyBjb25maWd1cmF0aW9uIGlzIGEgYm9vbGVhbiwgYW5kIGNydWNpYWxseSwgaXQgZG9lc24mIzM5O3QgaGF2ZSBhIGRpcmVjdCBwcm9tcHQuIFRoYXQgbWVhbnMgdGhlIHVzZXIgY2FuJiMzOTt0IHR1cm4gaXQgb24gb3Igb2ZmIGRpcmVjdGx5LiBJdHMgc3RhdGUgaXMgZGV0ZXJtaW5lZCBieSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zLiBUaGlzIG1lYW5zIGl0cyBiZWhhdmlvciBpcyBjb25kaXRpb25hbCBhbmQgZGVwZW5kZW50IG9uIHRoZSBzZXR0aW5ncyBvZiByZWxhdGVkIGl0ZW1zLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgcHJlY2lzZWx5IHdoYXQgb3RoZXIgY29uZmlncyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBvciBhY3RpdmF0aW5nIHRoaXMgcGFydGljdWxhciBvbmUuIEkgaGF2ZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBJTkZJTklCQU5EX1VTRVJfTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1OTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFVudXNlZCBJbmZpbmliYW5kIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCkhtbSwgSSYjMzk7bSBnZXR0aW5nIGEgbmFnZ2luZyBmZWVsaW5nLiBDb3VsZCBpdCBiZSB0aGF0IGBzZWxlY3QgSU5GSU5JQkFORF9VU0VSX01FTWAgaXMgYWN0dWFsbHkgKm5vdCogYmVpbmcgdXNlZCBhbnl3aGVyZT8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGJlZm9yZSBJIHNwZW5kIGFueSBtb3JlIHRpbWUgb24gaXQuIEEgcXVpY2sgY2hlY2sgc2VlbXMgd2FycmFudGVkLiBBbHJpZ2h0LCB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoYXQga2luZCBvZiBpbmZvcm1hdGlvbiwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBJbmZpbmliYW5kLCB3b3VsZCBkZWZpbml0ZWx5IGJlIHdpdGhpbiB0aGUgSW5maW5pYmFuZCBkcml2ZXIgY29uZmlndXJhdGlvbiBmaWxlcyB0aGVtc2VsdmVzLiBUaGVyZWZvcmUsIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnYCBmaWxlIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIGNvcnJlc3BvbmRpbmcgYGNvbmZpZ2Agc3ltYm9sIGFuZCB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGV2ZW4gYSBkaXJlY3QgY2FsbCB0byB0aGF0IGBzZWxlY3RgIHN0YXRlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SU5GSU5JQkFORF9VU0VSX01FTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00MD1jb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9NTE9Y29uZmlnIElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTItXHRib29sIFwmIzM0O0luZmluaUJhbmQgb24tZGVtYW5kIHBhZ2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MzpcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTQtXHRzZWxlY3QgTU1VX05PVElGSUVSXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvTWFrZWZpbGU9MjA9aWJfY29yZS0kKENPTkZJR19DR1JPVVBfUkRNQSkgJiM0Mzs9IGNncm91cC5vXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9NYWtlZmlsZToyMTppYl9jb3JlLSQoQ09ORklHX0lORklOSUJBTkRfVVNFUl9NRU0pICYjNDM7PSB1bWVtLm8gdW1lbV9kbWFidWYub1xuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvTWFrZWZpbGUtMjItaWJfY29yZS0kKENPTkZJR19JTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcpICYjNDM7PSB1bWVtX29kcC5vXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz04NTc9c3RydWN0IGliX21yICptbHg1X2liX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTg2NS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6ODY2Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNKSB8fFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy04NjctXHQgICAgKChhY2Nlc3NfZmxhZ3MgXHUwMDI2IElCX0FDQ0VTU19PTl9ERU1BTkQpIFx1MDAyNlx1MDAyNiBkbWFoKSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTEwMzg9c3RydWN0IGliX21yICptbHg1X2liX3JlZ191c2VyX21yX2RtYWJ1ZihzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgb2Zmc2V0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTA0Ny1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTA0ODpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgfHxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTA0OS1cdCAgICAhSVNfRU5BQkxFRChDT05GSUdfSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HKSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTExNjY9c3RydWN0IGliX21yICptbHg1X2liX3JlcmVnX3VzZXJfbXIoc3RydWN0IGliX21yICppYl9tciwgaW50IGZsYWdzLCB1NjQgc3RhcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMTc0LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxMTc1Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNKSB8fCBtci1cdTAwM2VkYXRhX2RpcmVjdCB8fFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMTc2LVx0ICAgIChtci1cdTAwM2VpYm1yLmZybXIua2V5Lmtlcm5lbF92ZW5kb3Jfa2V5IFx1MDAyNlxuLS1cbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg9Nzk9c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZTtcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmgtODAtXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oOjgxOiNpZmRlZiBDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTVxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC04Mi1cbi0tXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oPTE4MT1pbnQgaWJfdW1lbV9jaGVja19yZXJlZyhzdHJ1Y3QgaWJfdW1lbSAqdW1lbSwgaW50IGZsYWdzLCBpbnQgbmV3X2FjY2Vzc19mbGFncyk7XG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oLTE4Mi1cbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg6MTgzOiNlbHNlIC8qIENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNICovXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oLTE4NC1cbi0tXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oPTI5NT1zdGF0aWMgaW5saW5lIGludCBpYl91bWVtX2NoZWNrX3JlcmVnKHN0cnVjdCBpYl91bWVtICp1bWVtLCBpbnQgZmxhZ3MsXG4tLVxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC0zMDAtXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oOjMwMTojZW5kaWYgLyogQ09ORklHX0lORklOSUJBTkRfVVNFUl9NRU0gKi9cbmluY2x1ZGUvcmRtYS9pYl91bWVtLmgtMzAyLSNlbmRpZiAvKiBJQl9VTUVNX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MjEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBJbmZpbmliYW5kIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuIEkmIzM5O20gc2VlaW5nIGBJTkZJTklCQU5EX1VTRVJfTUVNYCBnZXQgc2VsZWN0ZWQsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIGJlaW5nIGRyaXZlbiBieSBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGRlcGVuZGVuY3kgaXNzdWUg4oCTIGFuZCBpdOKAmXMgYWx3YXlzIGNydWNpYWwgdG8gdmVyaWZ5IHRob3NlIHJlbGF0aW9uc2hpcHMuIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AgaXMgaW5kZWVkIHRoZSBkZWNpZGluZyBmYWN0b3IgaGVyZSwgdGhlIHBhcmVudCBvcHRpb24gdGhhdCYjMzk7cyB0cmlnZ2VyaW5nIHRoaXMgc2VsZWN0aW9uLiBMZXQmIzM5O3MgZGl2ZSBpbiBhbmQgY29uZmlybSB0aGF0IGRlcGVuZGVuY3kgY2hhaW4uIE5lZWQgdG8gZ28gYmFjayBhbmQgZXhhbWluZSBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0xOD1jb25maWcgSU5GSU5JQkFORF9VU0VSX01BRFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI3LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6Mjg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgYWNjZXNzICh2ZXJicyBhbmQgQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMzktXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0MDpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00MS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyOTMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgSW5maW5pYmFuZCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgSW5maW5pYmFuZCBkcml2ZXIgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBpdCYjMzk7cyBkZWZpbmVkLiBNeSBndXQgdGVsbHMgbWUgdGhhdCB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGJlIGxhaWQgb3V0IGluIHRoZSBgS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgbGluZSAyOCBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O2xsIGxpa2VseSBmaW5kIHRoZSB0b3AtbGV2ZWwgZGVmaW5pdGlvbnMgb3IgcGVyaGFwcyBhIHNlY3Rpb24gdGhhdCYjMzk7cyByZWxldmFudCB0byB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gdGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFzIHRvIHdoaWNoIG9wdGlvbnMgYXJlIGNyaXRpY2FsIGZvciBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhlIEluZmluaWJhbmQgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0XHRkZXBlbmRzIG9uIElORklOSUJBTkRcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgVXNlcnNwYWNlIEluZmluaUJhbmQgTWFuYWdlbWVudCBEYXRhZ3JhbSAoTUFEKSBzdXBwb3J0LiAgVGhpc1xuICAyMzpcdFx0ICBpcyB0aGUga2VybmVsIHNpZGUgb2YgdGhlIHVzZXJzcGFjZSBNQUQgc3VwcG9ydCwgd2hpY2ggYWxsb3dzXG4gIDI0Olx0XHQgIHVzZXJzcGFjZSBwcm9jZXNzZXMgdG8gc2VuZCBhbmQgcmVjZWl2ZSBNQURzLiBZb3Ugd2lsbCBhbHNvXG4gIDI1Olx0XHQgIG5lZWQgbGliaWJ1bWFkIGZyb20gcmRtYS1jb3JlXG4gIDI2Olx0XHQgIFx1MDAzY2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZVx1MDAzZS5cbiAgMjc6XHRcbiAgMjg6XHRjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xuICAyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgYWNjZXNzICh2ZXJicyBhbmQgQ00pXCYjMzQ7XG4gIDMwOlx0XHRkZXBlbmRzIG9uIE1NVVxuICAzMTpcdFx0aGVscFxuICAzMjpcdFx0ICBVc2Vyc3BhY2UgSW5maW5pQmFuZCBhY2Nlc3Mgc3VwcG9ydC4gIFRoaXMgZW5hYmxlcyB0aGVcbiAgMzM6XHRcdCAga2VybmVsIHNpZGUgb2YgdXNlcnNwYWNlIHZlcmJzIGFuZCB0aGUgdXNlcnNwYWNlXG4gIDM0Olx0XHQgIGNvbW11bmljYXRpb24gbWFuYWdlciAoQ00pLiAgVGhpcyBhbGxvd3MgdXNlcnNwYWNlIHByb2Nlc3Nlc1xuICAzNTpcdFx0ICB0byBzZXQgdXAgY29ubmVjdGlvbnMgYW5kIGRpcmVjdGx5IGFjY2VzcyBJbmZpbmlCYW5kXG4gIDM2Olx0XHQgIGhhcmR3YXJlIGZvciBmYXN0LXBhdGggb3BlcmF0aW9ucy4gIFlvdSB3aWxsIGFsc28gbmVlZFxuICAzNzpcdFx0ICBsaWJpYnZlcmJzLCBsaWJpYmNtIGFuZCBhIGhhcmR3YXJlIGRyaXZlciBsaWJyYXJ5IGZyb21cbiAgMzg6XHRcdCAgcmRtYS1jb3JlIFx1MDAzY2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZVx1MDAzZS5cbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXG4gIDQxOlx0XHRib29sXG4gIDQyOlx0XHRkZWZhdWx0IHkgaWYgSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cbiAgNDU6XHRcdGJvb2xcbiAgNDY6XHRcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXG4gIDQ3Olx0XHRkZXBlbmRzIG9uIE1NVVxuICA0ODpcdFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG4gIDQ5Olx0XHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5NDIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgSW5maW5pYmFuZCBNZW1vcnkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGBJTkZJTklCQU5EX1VTRVJfTUVNYCBkZWZhdWx0cyB0byBiZWluZyBlbmFibGVkICgmIzM0O3kmIzM0OykgaWYgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGlzbiYjMzk7dCBleHBsaWNpdGx5IGRpc2FibGVkICgmIzM0O24mIzM0OykgYW5kIHRoZSBNZW1vcnkgTWFuYWdlbWVudCBVbml0IChNTVUpIGlzIHByZXNlbnQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBJdCBtZWFucyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBlbmFibGUgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGluIG91ciBjdXJyZW50IHNldHVwLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgc2V0IGFwcHJvcHJpYXRlbHkuCgpBbmQgd2hpbGUgSSYjMzk7bSBoZXJlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AuIEkgcmVjYWxsIGl0JiMzOTtzIGEgYm9vbGVhbiBjb25maWcgb3B0aW9uLCBzbyBJIHNob3VsZCBzZWUgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhhdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgbG9va3MgbGlrZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFxuICA1MTpcdGNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcbiAgNTI6XHRcdGJvb2wgXCYjMzQ7SW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcJiMzNDtcbiAgNTM6XHRcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX01FTVxuICA1NDpcdFx0c2VsZWN0IE1NVV9OT1RJRklFUlxuICA1NTpcdFx0c2VsZWN0IElOVEVSVkFMX1RSRUVcbiAgNTY6XHRcdHNlbGVjdCBITU1fTUlSUk9SXG4gIDU3Olx0XHRkZWZhdWx0IHlcbiAgNTg6XHRcdGhlbHBcbiAgNTk6XHRcdCAgT24gZGVtYW5kIHBhZ2luZyBzdXBwb3J0IGZvciB0aGUgSW5maW5pQmFuZCBzdWJzeXN0ZW0uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzY0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gRW5hYmxpbmcgUHJvY2VzcyoqCgpPa2F5LCBzbyB0aGUgc3lzdGVtIGlzIGRlZmF1bHRpbmcgdG8gJiMzOTt5JiMzOTssIHdoaWNoIGlzIGdvb2QgdG8ga25vdyDigJMgaXQgZ2l2ZXMgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTm93LCB0byBlbmFibGUgdGhlIEluZmluaUJhbmQgZmVhdHVyZXMgSSBuZWVkLCBJIGhhdmUgdG8gZW5zdXJlIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgYXJlIHNldDogYElORklOSUJBTkRgLCBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AsIGBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdgLCBgTUxYNV9JTkZJTklCQU5EYCwgYElORklOSUJBTkRfTVRIQ0FgLCBhbmQgYElORklOSUJBTkRfUkRNQVZUYC4gVGhhdCBsaXN0IGlzIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZ2V0dGluZyB0aGluZ3MgbW92aW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24uIAoKU2luY2UgSSYjMzk7bSBlbmFibGluZyBgTUxYNV9JTkZJTklCQU5EYCwgSSBzaG91bGQgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBpbnZvbHZlZCBmb3IgdGhhdCBjb25maWd1cmF0aW9uLCB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBpc3N1ZXMgbGF0ZXIgb24uIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGhhbmRsZWQgZm9yIHRoYXQgcGFydGljdWxhciBiaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTFg1X0lORklOSUJBTkQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZzoyOmNvbmZpZyBNTFg1X0lORklOSUJBTkRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc3NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgdGhlIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9LY29uZmlnYCBmaWxlLCBwcmVzZW50ZWQgYXMgbXkgb3duIGludGVybmFsIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1MWDUgS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTUxYNSBJbmZpbmliYW5kIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBiZWluZyBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgaXQmIzM5O3Mgc3RydWN0dXJlZC4gVGhpcyBLY29uZmlnIGZpbGUgaXMgdGhlIGdhdGVrZWVwZXIsIHJlYWxseSwgZGVmaW5pbmcgd2hhdCBjYW4gYmUgdHdlYWtlZCBhdCBidWlsZCB0aW1lLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGZlYXR1cmVzIGZpcnN0LCB0aGUgY3J1Y2lhbCBidWlsZGluZyBibG9ja3MuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBpbmNsdXNpb25zIGJhc2VkIG9uIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBvdGhlciBkcml2ZXIgY29tcG9uZW50cz8KCknigJltIGltbWVkaWF0ZWx5IHNjYW5uaW5nIGZvciB0aGUgYENPTkZJR19NTFg1X0NPUkVgIG9wdGlvbiDigJMgdGhhdCYjMzk7cyBnb3R0YSBiZSB0aGUgcm9vdCwgdGhlIGZ1bmRhbWVudGFsIGVuYWJsZSBmb3IgdGhlIGRyaXZlciBpdHNlbGYuIFdoYXQgZWxzZSBoaW5nZXMgb24gdGhhdD8gT2theSwgZ29vZCwgaXTigJlzIGxvZ2ljYWxseSBvcmdhbml6ZWQsIHdpdGggZGVwZW5kZW5jaWVzIGNsZWFybHkgZGVmaW5lZC4gSSYjMzk7bSBjaGVja2luZyBmb3IgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgZmVhdHVyZXMuIEFyZSB0aGVyZSBvcHRpb25zIGZvciBlbmFibGluZyBzcGVjaWZpYyBoYXJkd2FyZSBvZmZsb2Fkcywgb3IgZmVhdHVyZXMgbGlrZSBwYWNrZXQgcGFjaW5nPyBBcmUgdGhlcmUgYW55IGV4cGVyaW1lbnRhbCBvciBkZWJ1ZyBvcHRpb25zPyBUaG9zZSBhcmUgaW1wb3J0YW50IHRvIHNwb3QsIHNvIEkga25vdyB3aGljaCBmbGFncyB0byBsb29rIG91dCBmb3Igd2hlbiBJJiMzOTttIGRlYnVnZ2luZyBhIG5ldyBpbnN0YWxsYXRpb24uCgpJJiMzOTttIGFsc28gbG9va2luZyBmb3IgZGV0YWlscyBvbiB3aGF0IGdldHMgYnVpbHQgaW50byB0aGUga2VybmVsIGJ5IGRlZmF1bHQsIHZlcnN1cyB3aGF0JiMzOTtzIG1vZHVsZS1lbmFibGVkLiBJcyB0aGVyZSBhIGNsZWFyIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgZXNzZW50aWFsIGJhc2UgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIG1vcmUgc3BlY2lhbGl6ZWQgb3IgcG90ZW50aWFsbHkgb3B0aW9uYWwgZmVhdHVyZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhIGhhbmRsZSBvbiBpbWFnZSBzaXplIGFuZCBib290LXVwIHRpbWUuCgpBbmQgZmluYWxseSwgSSYjMzk7bSBjaGVja2luZyB0aGUgaGVscCB0ZXh0IGZvciBlYWNoIG9wdGlvbi4gVGhlIGRlc2NyaXB0aW9ucyBuZWVkIHRvIGJlIGNsZWFyIGFuZCBjb25jaXNlLiBJZiBhIHVzZXIgaXMgY29uZnVzZWQgYnkgdGhlIHdvcmRpbmcsIHRoZW4gbXkgdGVhbSB3aWxsIGJlIHRoZSBvbmVzIHRoYXQgaGF2ZSB0byBleHBsYWluIGl0LiBBcmUgdGhleSB1c2luZyB0aGUgY29ycmVjdCB0ZXJtaW5vbG9neT8gRG9lcyB0aGUgaGVscCBzZWN0aW9uIHByb3ZpZGUgc3VmZmljaWVudCBjb250ZXh0IGZvciB1bmRlcnN0YW5kaW5nIHdoYXQgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGEgcGFydGljdWxhciBvcHRpb24gYWN0dWFsbHkgKmRvZXMqPyBPa2F5LCB0aGlzIGlzIGEgcHJldHR5IHNvbGlkIHN0YXJ0LiBOb3cgbGV0JiMzOTtzIGRpdmUgaW50byBzb21lIG9mIHRoZSBtb3JlIHNwZWNpZmljIHN1Yi1zZWN0aW9ucyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBpbiB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1MWDVfSU5GSU5JQkFORFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBsb3ctbGV2ZWwgSW5maW5pQmFuZCBzdXBwb3J0IGZvclxuICAgNzpcdFx0ICBNZWxsYW5veCBDb25uZWN0LUlCIFBDSSBFeHByZXNzIGhvc3QgY2hhbm5lbCBhZGFwdGVycyAoSENBcykuXG4gICA4Olx0XHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gdXNlIEluZmluaUJhbmQgcHJvdG9jb2xzIHN1Y2ggYXNcbiAgIDk6XHRcdCAgSVAtb3Zlci1JQiBvciBTUlAgd2l0aCB0aGVzZSBkZXZpY2VzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQzNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBkZXBlbmRlbmN5IG9uIGBNTFg1X0NPUkVgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBwcmFjdGljYWxseSBhIGdpdmVuIHdoZW4gd29ya2luZyB3aXRoIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhlcmVmb3JlLCB0byBlbnN1cmUgdGhhdCBgTUxYNV9DT1JFYCBpcyBkZWZpbml0ZWx5IGVuYWJsZWQgYXMgd2VsbC4gTm8gcG9pbnQgZ29pbmcgZG93biB0aGlzIHBhdGggaWYgdGhlIGZvdW5kYXRpb25hbCBjb21wb25lbnRzIGFyZW4mIzM5O3QgcHJlc2VudC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwcmVyZXF1aXNpdGUuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIHBvdGVudGlhbGx5IGltcG9ydGFudCBiYXNlIGNvbmZpZ3VyYXRpb25zLCB0aGlzIGlzIGEgZ29vZCBzcG90IHRvIHJlLWNoZWNrIGBJTkZJTklCQU5EX01USENBYC4gQmVzdCB0byB2ZXJpZnkgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRoZSBJbmZpbmlCYW5kIHN0YWNrIGJlZm9yZSB3ZSBjb250aW51ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBJTkZJTklCQU5EX01USENBXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBIQ0Egc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBpcyBhIGxvdy1sZXZlbCBkcml2ZXIgZm9yIE1lbGxhbm94IEluZmluaUhvc3QgaG9zdFxuICAgNzpcdFx0ICBjaGFubmVsIGFkYXB0ZXJzIChIQ0FzKSwgaW5jbHVkaW5nIHRoZSBNVDIzMTA4IFBDSS1YIEhDQVxuICAgODpcdFx0ICAoXCYjMzQ7VGF2b3JcJiMzNDspIGFuZCB0aGUgTVQyNTIwOCBQQ0kgRXhwcmVzcyBIQ0EgKFwmIzM0O0FyYmVsXCYjMzQ7KS5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgSU5GSU5JQkFORF9NVEhDQV9ERUJVR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg0NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgUkRNQSBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gdGhlIGFyY2hpdGVjdHVyZSBJJiMzOTttIHdvcmtpbmcgd2l0aCBpcyBjbGVhcmx5IGdvaW5nIHRvIGhpbmdlIG9uIHRoZSBgUENJYCBzZXR1cC4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgY3JpdGljYWwgZmFjdG9yIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBIb3cgdGhlIHN5c3RlbSBsZXZlcmFnZXMgdGhlIGBQQ0lgIGJ1cyBpcyBnb2luZyB0byBoZWF2aWx5IGluZmx1ZW5jZSB0aGUgUkRNQSBwZXJmb3JtYW5jZSBhbmQgc2NhbGFiaWxpdHkgSSBjYW4gcmVhbGlzdGljYWxseSBleHBlY3QuIEl0JiMzOTtzIHRoZSBib3R0bGVuZWNrIG9yIHRoZSBoaWdod2F5LCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSBSRE1BIGNhcGFiaWxpdGllcy4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IENhbiB3ZSBsZXZlcmFnZSBgSU5GSU5JQkFORF9SRE1BVlRgPyBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIElmIHdlJiMzOTtyZSBsdWNreSBlbm91Z2ggdG8gaGF2ZSB0aGF0IGF2YWlsYWJsZSwgdGhlIHBvdGVudGlhbCBmb3IgemVyby1jb3B5LCBlZmZpY2llbnQgZGF0YSB0cmFuc2ZlcnMgaXMgc2lnbmlmaWNhbnQuIGBJTkZJTklCQU5EX1JETUFWVGAgaXMgbGlrZWx5IHRvIGJlIGEgZ2FtZS1jaGFuZ2VyIGlmIGl0IGlzIHN1cHBvcnRlZC4gV2hldGhlciB0aGlzIGlzIGFuIGFyY2hpdGVjdHVyYWwgaW1wZXJhdGl2ZSwgb3IgYSBuaWNlLXRvLWhhdmUsIHdpbGwgZGVwZW5kIGhlYXZpbHkgb24gdGhlIHByb2JsZW0gYXQgaGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgSU5GSU5JQkFORF9SRE1BVlRcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JETUEgdmVyYnMgdHJhbnNwb3J0IGxpYnJhcnlcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9WSVJUX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBYODZfNjRcbiAgIDY6XHRcdGRlcGVuZHMgb24gUENJXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHRUaGlzIGlzIGEgY29tbW9uIHNvZnR3YXJlIHZlcmJzIHByb3ZpZGVyIGZvciBSRE1BIG5ldHdvcmtzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI0NgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIEluZmluaWJhbmQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEluZmluaWJhbmQgY29kZSwgYW5kIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGNoZWNraW5nIGFyZSB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIGhpbmdlcyBvbiBgSU5GSU5JQkFORF9WSVJUX0RNQWAsIGBYODZfNjRgLCBhbmQgYFBDSWAuIEEgcXVpY2sgbG9vayBjb25maXJtcyB0aGF0IGBJTkZJTklCQU5EX1ZJUlRfRE1BYCBkZWZhdWx0cyB0byBlbmFibGVkIG9uIDY0LWJpdCBzeXN0ZW1zIGJlY2F1c2UgaXQmIzM5O3MgYSBkZWZfYm9vbCAhSElHSE1FTS4gR29vZCwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4KCk5leHQsIEkgbmVlZCB0byBrbm93IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgSSBuZWVkOiBgSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCwgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AsIGBNTFg1X0NPUkVgLCBgTUxYNV9JTkZJTklCQU5EYCwgYElORklOSUJBTkRfTVRIQ0FgLCBhbmQgYElORklOSUJBTkRfUkRNQVZUYC4gR290IGl0LiBOb3csIHdoaWNoIHN5bWJvbHMgYXJlIHdlIGZvY3VzaW5nIG9uPwoKTGV0JiMzOTtzIHNlZS4gTXkgY3VycmVudCBzeW1ib2xzIGFyZToKKiAgIGBfX2liX3VtZW1fZ2V0X3ZhYC4gV2FpdCwgaXQmIzM5O3Mgc3RhdGljPyBDYW4gc3l6a2FsbGVyIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnM/IFllcywgYnV0IG1heWJlIGBpYl91bWVtX2dldF9kZXNjYCBpcyBiZXR0ZXI/IE5vLCBgX19pYl91bWVtX2dldF92YWAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIG1vZGlmaWVkLiBPSywgSSYjMzk7bGwgc3RpY2sgd2l0aCBgX19pYl91bWVtX2dldF92YWAuCiogICBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgCiogICBgbXRoY2FfYXJyYXlfc2V0YAoqICAgYG10aGNhX3JlZ191c2VyX21yYAoqICAgYGdldF9tYXBfcGFnZWAgKHRoaXMgb25lJiMzOTtzIHN0YXRpYyBpbiBgcmRtYXZ0L3FwLmNgLiBTaG91bGQgSSB1c2UgYHJ2dF9jcmVhdGVfcXBgIGFzIHdlbGwsIG9yIGp1c3QgYGdldF9tYXBfcGFnZWA/KS4KCldhaXQsIGBnZXRfbWFwX3BhZ2VgIGlzIHN0YXRpYy4gSSB0aGluayBJJiMzOTtsbCBnbyB3aXRoIGBydnRfY3JlYXRlX3FwYCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBleHBvcnRlZCBmdW5jdGlvbiB0aGF0IGNhbGxzIGBhbGxvY19xcG5gIHdoaWNoIGNhbGxzIGBnZXRfbWFwX3BhZ2VgLiBXYWl0LCBhbHNvIGBnZXRfbWFwX3BhZ2VgIGlzIGNhbGxlZCBmcm9tIGBpbml0X3Fwbl90YWJsZWAuIEkgdGhpbmsgSSYjMzk7bGwganVzdCB1c2UgYGdldF9tYXBfcGFnZWAKCkFscmlnaHQsIGxldCBtZSByZXZpc2l0IHRoaXMgcGF0Y2guIEkgc2VlIHRoZSBrZXkgY2hhbmdlOgoKYGBgYwotCXBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwomIzQzOwlwYWdlX2xpc3QgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7Ci4uLgotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcGFnZV9saXN0KTsKJiM0MzsJa2ZyZWUocGFnZV9saXN0KTsKYGBgCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBzaGlmdC4gSXQmIzM5O3Mgbm93IHVzaW5nIHRoZSBzbGFiIGFsbG9jYXRvciBpbnN0ZWFkIG9mIHRoZSBwYWdlIGFsbG9jYXRvci4gVGhhdCBjb3VsZCBpbXBhY3QgbWVtb3J5IGxheW91dCwgYWxpZ25tZW50LCBhbmQgcG90ZW50aWFsbHkgY2F1c2UgaXNzdWVzIGlmIHRoZSBjb2RlIG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHBhZ2UgYWxpZ25tZW50LiBBIHN1YnRsZSBjaGFuZ2UsIGJ1dCBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBmbGFnLgoKTm93LCBhbnkgb3RoZXIgY29uZmlnIHJlcXVpcmVtZW50cz8gTGV0JiMzOTtzIGNoZWNrOgoqICAgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGlzIGRlZmluaXRlbHkgbmVlZGVkIGZvciBgSU5GSU5JQkFORF9VU0VSX01FTWAuCiogICBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCBmb3IgYG9kcC5jYC4KKiAgIGBNTFg1X0NPUkVgIGZvciBgTUxYNV9JTkZJTklCQU5EYC4KKiAgIGBNTFg1X0lORklOSUJBTkRgIGZvciBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLgoqICAgYElORklOSUJBTkRfTVRIQ0FgIGZvciBib3RoIGBtdGhjYV9hcnJheV9zZXRgIGFuZCBgbXRoY2FfcmVnX3VzZXJfbXJgLgoqICAgQW5kIGZpbmFsbHksIGBJTkZJTklCQU5EX1JETUFWVGAgZm9yIGBnZXRfbWFwX3BhZ2VgLgoKU28sIHRoZSBmb2N1cyBzeW1ib2xzIGFyZToKKiAgIGBfX2liX3VtZW1fZ2V0X3ZhYAoqICAgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYAoqICAgYG10aGNhX2FycmF5X3NldGAKKiAgIGBtdGhjYV9yZWdfdXNlcl9tcmAKKiAgIGBnZXRfbWFwX3BhZ2VgCgpXYWl0LCBgZ2V0X21hcF9wYWdlYCBpcyBwcmV0dHkgZ2VuZXJpYy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGEgdW5pcXVlIGZ1bmN0aW9uIG5hbWUgdG8gYXZvaWQgY29uZmxpY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnZXRfbWFwX3BhZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTI1OD1zdGF0aWMgaW5saW5lIGJvb2wgd3NzX2V4Y2VlZHNfdGhyZXNob2xkKHN0cnVjdCBydnRfd3NzICp3c3MpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTI2Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzoyNjM6c3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtMjY0LVx0XHRcdCBzdHJ1Y3QgcnZ0X3Fwbl9tYXAgKm1hcClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM9Mjg1PXN0YXRpYyBpbnQgaW5pdF9xcG5fdGFibGUoc3RydWN0IHJ2dF9kZXZfaW5mbyAqcmRpLCBzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0zMTgtXHRcdGlmICghbWFwLVx1MDAzZXBhZ2UpIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzozMTk6XHRcdFx0Z2V0X21hcF9wYWdlKHFwdCwgbWFwKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0zMjAtXHRcdFx0aWYgKCFtYXAtXHUwMDNlcGFnZSkge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz00ODg9c3RhdGljIGludCBhbGxvY19xcG4oc3RydWN0IHJ2dF9kZXZfaW5mbyAqcmRpLCBzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy01MjMtXHRcdGlmICh1bmxpa2VseSghbWFwLVx1MDAzZXBhZ2UpKSB7XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6NTI0Olx0XHRcdGdldF9tYXBfcGFnZShxcHQsIG1hcCk7XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTI1LVx0XHRcdGlmICh1bmxpa2VseSghbWFwLVx1MDAzZXBhZ2UpKVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYz0xMzc9c3RydWN0IGhmc19ibWFwX2N0eCB7XG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jLTE0OC0gKi9cbmZzL2hmc3BsdXMvYnRyZWUuYzoxNDk6c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcbmZzL2hmc3BsdXMvYnRyZWUuYy0xNTAtXHRcdFx0XHRcdCAgc3RydWN0IGhmc19ibWFwX2N0eCAqY3R4LFxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYz0xOTY9c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtMjAxLVxuZnMvaGZzcGx1cy9idHJlZS5jOjIwMjpcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcbmZzL2hmc3BsdXMvYnRyZWUuYy0yMDMtXHRpZiAoSVNfRVJSKHBhZ2UpKVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYz0yMjI9c3RhdGljIGludCBoZnNfYm1hcF9jbGVhcl9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtMjI3LVxuZnMvaGZzcGx1cy9idHJlZS5jOjIyODpcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcbmZzL2hmc3BsdXMvYnRyZWUuYy0yMjktXHRpZiAoSVNfRVJSKHBhZ2UpKVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYz01Mjg9c3RydWN0IGhmc19ibm9kZSAqaGZzX2JtYXBfYWxsb2Moc3RydWN0IGhmc19idHJlZSAqdHJlZSlcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtNTQ3LVxuZnMvaGZzcGx1cy9idHJlZS5jOjU0ODpcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCAwKTtcbmZzL2hmc3BsdXMvYnRyZWUuYy01NDktXHRpZiAoSVNfRVJSKHBhZ2UpKSB7XG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jLTU5OC1cbmZzL2hmc3BsdXMvYnRyZWUuYzo1OTk6XHRcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCAwKTtcbmZzL2hmc3BsdXMvYnRyZWUuYy02MDAtXHRcdGlmIChJU19FUlIocGFnZSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5NjkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkRpZ2dpbmcgaW50byB0aGlzIENvZGUgU25pcHBldCoqCgpPa2F5LCB0aGlzIHVzYWdlIG9mIGBnZXRfbWFwX3BhZ2VgIGlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyBub3QgKmV2ZXJ5d2hlcmUqOyBpdCYjMzk7cyBwcmV0dHkgaXNvbGF0ZWQsIHNob3dpbmcgdXAgb25seSBpbiBgcmRtYXZ0L3FwLmNgIGFuZCBgaGZzcGx1cy9idHJlZS5jYCwgc3BlY2lmaWNhbGx5IGFzIGBoZnNfYm1hcF9nZXRfbWFwX3BhZ2VgLiBUaGlzIHN1Z2dlc3RzIGl0JiMzOTtzIGEgYml0IHNwZWNpYWxpemVkLiBJIHRoaW5rIEkgd2lsbCBrZWVwIHRoaXMgbmFtZS4KCk5vdywgYmVmb3JlIEkgcHJvY2VlZCB0b28gZmFyLCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcmVsYXRlcyB0byB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50LiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiB0aGF0IGZsb3cuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB3aGF0IGBfX2liX3VtZW1fZ2V0X3ZhYCBpcyBkb2luZyBhbmQgd2hhdCBpdHMgaW5wdXRzIGFuZCBvdXRwdXRzIGFyZS4gR290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAgY29ycmVjdGx5IGluIHRlcm1zIG9mIG1lbW9yeSByZWdpb25zIGFuZCBhZGRyZXNzIHRyYW5zbGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2liX3VtZW1fZ2V0X3ZhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0xNjA9RVhQT1JUX1NZTUJPTChpYl91bWVtX2ZpbmRfYmVzdF9wZ3N6KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0xNjEtXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmM6MTYyOnN0YXRpYyBzdHJ1Y3QgaWJfdW1lbSAqX19pYl91bWVtX2dldF92YShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMTYzLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBzaXplLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0yODk9c3RydWN0IGliX3VtZW0gKmliX3VtZW1fZ2V0X2Rlc2Moc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTAtXHRjYXNlIElCX1VWRVJCU19CVUZGRVJfVFlQRV9WQTpcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYzozMTE6XHRcdHJldHVybiBfX2liX3VtZW1fZ2V0X3ZhKGRldmljZSwgZGVzYy1cdTAwM2VhZGRyLCBkZXNjLVx1MDAzZWxlbmd0aCxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTItXHRcdFx0XHRcdGFjY2Vzcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTI4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVW5pcXVlIEhhbmRsaW5nIFZlcmlmaWNhdGlvbioqCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBUaGUgc2l0dWF0aW9uIGRvZXMgc2VlbSByYXRoZXIgZGlzdGluY3RpdmUuIEdpdmVuIHRoZSBjb250ZXh0LCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBtZW1vcnkgcmVnaXN0cmF0aW9uIGFuZCB3b3JrIHF1ZXVlIGVsZW1lbnRzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHBhZ2UgZmF1bHRzIGFyZSBoYW5kbGVkLiBUaGUga2V5IGFyZWEgdG8gZXhhbWluZSBpcyBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLiBJIHdhbnQgdG8gaW1tZWRpYXRlbHkgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBJdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCB0aGUgc3VidGxldGllcyBvZiB0aGlzIHBlY3VsaWFyIHNjZW5hcmlvLiBXZSBuZWVkIHRvIGRpc3NlY3QgaXRzIGxvZ2ljIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcyB1bnVzdWFsIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xMzg0PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1seDVfaWJfc3JxICpyZXNfdG9fc3JxKHN0cnVjdCBtbHg1X2NvcmVfcnNjX2NvbW1vbiAqcmVzKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxMzkyOnN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTM5My1cdFx0XHRcdFx0ICBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xNjE4PXN0YXRpYyB2b2lkIG1seDVfaWJfcGZhdWx0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xNjIzLVx0Y2FzZSBNTFg1X1BGQVVMVF9TVUJUWVBFX1dRRTpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jOjE2MjQ6XHRcdG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKGRldiwgcGZhdWx0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzA2NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgVW5pcXVlbmVzcyBhbmQgTWV0aG9kaWNhbCBWZXJpZmljYXRpb24qKgoKWWVzLCB0aGF0IG9ic2VydmF0aW9uIGFib3V0IGl0cyB1bmlxdWVuZXNzLi4uIGl0IHJlc29uYXRlcy4gV2UmIzM5O3ZlIGdvdCBzb21ldGhpbmcgZGlzdGluY3QgaGVyZSwgYSBwb2ludCBvZiBkaWZmZXJlbnRpYXRpb24uIEl0JiMzOTtzIG5vdCBqdXN0IGEgc3VidGxlIHZhcmlhdGlvbjsgaXQmIzM5O3Mgc2lnbmlmaWNhbnQuIEJ1dCwgYXMgd2l0aCBhbnl0aGluZyBncm91bmRicmVha2luZywgd2UgY2FuJiMzOTt0IHJlbHkgc29sZWx5IG9uIGludHVpdGlvbi4gV2UgbmVlZCB0byBiZSByaWdvcm91c2x5IHRob3JvdWdoLgoKVGhhdCBicmluZ3MgbWUgdG8gdGhlIG5leHQgdGhvdWdodC4gTGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSBuZWVkIHRvIGltbWVkaWF0ZWx5IGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG10aGNhX2FycmF5X3NldGAuIFRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IHRoZSBjcnV4IG9mIHRoaXMgZGlzdGluY3RpdmUgYmVoYXZpb3VyIGFuZCBzaG91bGQgYmUgZXhhbWluZWQuIElzIHRoZSBsb2dpYyBzb3VuZD8gQXJlIHRoZXJlIGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cz8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBlZGdlIGNhc2VzPyBXZSBjYW5ub3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIExldCYjMzk7cyBkaWcgZGVlcCwgYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY3JpdGljYWwgZXllLCBhbmQgZW5zdXJlIGl0cyBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCB0aGUgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eSwgYW5kIGhhcyBiZWVuIHRlc3RlZCB0byBtZWV0IHRoZSBwZXJmb3JtYW5jZSBuZWVkcyBvZiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jPTExMz12b2lkICptdGhjYV9hcnJheV9nZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmM6MTIzOmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjQte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jPTc2OD1pbnQgbXRoY2FfaW5pdF9jcShzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsIGludCBuZW50LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1MC1cdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2LVx1MDAzZWNxX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2NxLmM6ODUxOlx0ZXJyID0gbXRoY2FfYXJyYXlfc2V0KFx1MDAyNmRldi1cdTAwM2VjcV90YWJsZS5jcSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1Mi1cdFx0XHQgICAgICBjcS1cdTAwM2VjcW4gXHUwMDI2IChkZXYtXHUwMDNlbGltaXRzLm51bV9jcXMgLSAxKSwgY3EpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9kZXYuaD00MTg9dm9pZCAqbXRoY2FfYXJyYXlfZ2V0KHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2Lmg6NDE5OmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2LmgtNDIwLXZvaWQgbXRoY2FfYXJyYXlfY2xlYXIoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYz0xMjkxPWludCBtdGhjYV9hbGxvY19xcChzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTMyOC1cdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2LVx1MDAzZXFwX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTMyOTpcdG10aGNhX2FycmF5X3NldChcdTAwMjZkZXYtXHUwMDNlcXBfdGFibGUucXAsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzMwLVx0XHRcdHFwLVx1MDAzZXFwbiBcdTAwMjYgKGRldi1cdTAwM2VsaW1pdHMubnVtX3FwcyAtIDEpLCBxcCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM9MTM2Nj1pbnQgbXRoY2FfYWxsb2Nfc3FwKHN0cnVjdCBtdGhjYV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzk1LVx0ZWxzZVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTM5NjpcdFx0bXRoY2FfYXJyYXlfc2V0KFx1MDAyNmRldi1cdTAwM2VxcF90YWJsZS5xcCwgbXFwbiwgcXApO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTM5Ny1cdHNwaW5fdW5sb2NrX2lycShcdTAwMjZkZXYtXHUwMDNlcXBfdGFibGUubG9jayk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jPTIwNj1pbnQgbXRoY2FfYWxsb2Nfc3JxKHN0cnVjdCBtdGhjYV9kZXYgKmRldiwgc3RydWN0IG10aGNhX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjgzLVx0c3Bpbl9sb2NrX2lycShcdTAwMjZkZXYtXHUwMDNlc3JxX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jOjI4NDpcdGlmIChtdGhjYV9hcnJheV9zZXQoXHUwMDI2ZGV2LVx1MDAzZXNycV90YWJsZS5zcnEsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjg1LVx0XHRcdCAgICBzcnEtXHUwMDNlc3JxbiBcdTAwMjYgKGRldi1cdTAwM2VsaW1pdHMubnVtX3NycXMgLSAxKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNzQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgVW5pcXVlbmVzcyBhbmQgRGF0YSBJbnRlZ3JpdHkqKgoKT2theSwgc28gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMsIGluZGVlZCwgdW5pcXVlLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwLiBOb3csIGJlZm9yZSBJIHByb2NlZWQgd2l0aCBhbnkgYW5hbHlzaXMgb3IgYXBwbGljYXRpb24sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCAmIzM5O3VuaXF1ZSYjMzk7IHN0YXR1cy4gTXkgaW1tZWRpYXRlIHJlZmxleCBpcyB0byBkaXZlIGludG8gdGhlIGRhdGEuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbXRoY2FfcmVnX3VzZXJfbXJgLiBUaGlzIHZhcmlhYmxlIG9yIHJlZ2lzdGVyIHByb2JhYmx5IGhvbGRzIGNyaXRpY2FsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlICYjMzQ7dW5pcXVlJiMzNDsgZWxlbWVudCDigJMgcGVyaGFwcyBhIHVzZXIgcmVnaXN0cmF0aW9uIG1hcmtlciBvciBzb21lIGZvcm0gb2YgaWRlbnRpZmllci4gSSBuZWVkIHRvIGVuc3VyZSBpdHMgaW50ZWdyaXR5IGFuZCBob3cgaXQmIzM5O3MgZGVmaW5lZCBhbmQgdXNlZC4gQSBxdWljayBpbnNwZWN0aW9uIG9mIHRoaXMgd2lsbCBjb25maXJtIChvciByZWZ1dGUhKSBteSBpbml0aWFsIGFzc2Vzc21lbnQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCBmb3IgZHVwbGljYXRpb24sIG92ZXJ3cml0aW5nIG9yIGNvcnJ1cHRpb24gaW4gdGhhdCBhcmVhLiBJdCBhbGwgY29tZXMgZG93biB0byB0aGUgcmVsaWFiaWxpdHkgb2YgdGhhdCBkYXRhIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGhjYV9yZWdfdXNlcl9tciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYz04MjU9c3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfZ2V0X2RtYV9tcihzdHJ1Y3QgaWJfcGQgKnBkLCBpbnQgYWNjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTg0Ny1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jOjg0ODpzdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9yZWdfdXNlcl9tcihzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgc3RhcnQsIHU2NCBsZW5ndGgsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy04NDktXHRcdFx0XHQgICAgICAgdTY0IHZpcnQsIGludCBhY2MsIHN0cnVjdCBpYl9kbWFoICpkbWFoLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jPTEwODY9c3RhdGljIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIG10aGNhX2Rldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMtMTEyMC1cdC5xdWVyeV9xcCA9IG10aGNhX3F1ZXJ5X3FwLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM6MTEyMTpcdC5yZWdfdXNlcl9tciA9IG10aGNhX3JlZ191c2VyX21yLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMtMTEyMi1cdC5yZXNpemVfdXNlcl9jcSA9IG10aGNhX3Jlc2l6ZV9jcSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5ODYKCQkJCQkJCW91dHB1dDogMjMyCgkJCQkJCQl0aG91Z2h0czogMzU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEluZmluaWJhbmQgRHJpdmVyIE1lbW9yeSBBbGxvY2F0aW9uIENoYW5nZSoqCgpPa2F5LCB0aGlzIGlzIGludGVyZXN0aW5nLCBhIGRlZmluaXRlIGRlcGFydHVyZSBmcm9tIHRoZSBub3JtLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBrZXkgZnVuY3Rpb25zIGhpZ2hsaWdodGVkIGFyZSBgX19pYl91bWVtX2dldF92YWAsIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAsIGBtdGhjYV9hcnJheV9zZXRgLCBgbXRoY2FfcmVnX3VzZXJfbXJgLCBhbmQgYGdldF9tYXBfcGFnZWAuIEkmIzM5O20gaW1tZWRpYXRlbHkgcGlja2luZyB1cCBvbiB0aG9zZSwgYXMgdGhleSByZXByZXNlbnQgdGhlIGNvcmUgdG91Y2hwb2ludHMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgpOb3csIHRoZSBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMuIFdlJiMzOTtyZSBsb29raW5nIGF0IGBJTkZJTklCQU5EYCwgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgLCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCwgYE1MWDVfQ09SRWAsIGBNTFg1X0lORklOSUJBTkRgLCBgSU5GSU5JQkFORF9NVEhDQWAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLiBJJiMzOTttIG5vdGluZyB0aGUgaW50ZXJwbGF5OyBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxhY2UuIEhvbGQgb24uLi4gSSYjMzk7bSByZW1pbmRlZCB0aGF0IGBJTkZJTklCQU5EX1VTRVJfTUVNYCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgYnkgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGFuZCBgTU1VYCwgc28gd2hpbGUgaXQmIzM5O3MgcmVkdW5kYW50LCBsaXN0aW5nIGl0IGRvZXNuJiMzOTt0IGh1cnQuIEkmIzM5O2xsIHN0aWxsIGluY2x1ZGUgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGFuZCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYC4KCkFscmlnaHQsIHRpbWUgZm9yIGEgc2FuaXR5IGNoZWNrIG9uIG15IG93biByZWFzb25pbmcuIFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIHN3aXRjaCBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciwgZnVuY3Rpb25zIGxpa2UgYF9fZ2V0X2ZyZWVfcGFnZWAgYW5kIGBnZXRfemVyb2VkX3BhZ2VgLCB0byB0aGUgc2xhYiBhbGxvY2F0b3IsIGBrbWFsbG9jYCBhbmQgYGt6YWxsb2NgLCB3aXRoaW4gc2V2ZXJhbCBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludC4gVGhlIHBhZ2UgYWxsb2NhdG9yIGhhcyBjZXJ0YWluIGd1YXJhbnRlZXMgYWJvdXQgbWVtb3J5IGFsaWdubWVudCBhbmQgbGF5b3V0IHRoYXQgdGhlIHNsYWIgYWxsb2NhdG9yIGRvZXNuJiMzOTt0IG5lY2Vzc2FyaWx5IG9mZmVyLiBUaGUgY29kZSAqY291bGQqIGJlIHJlbHlpbmcgb24gdGhvc2UgaW1wbGljaXQgYXNzdW1wdGlvbnMsIGFuZCB0aGUgc3dpdGNoIGNvdWxkIGludHJvZHVjZSBzdWJ0bGUgcmVncmVzc2lvbnMuIEV2ZW4gaWYgSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIGV4cGxpY2l0bHkgd3JvbmcsIHRoaXMgaXMgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gcnVuIGl0IHRocm91Z2ggYSByaWdvcm91cyBmdXp6aW5nIGNhbXBhaWduIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gaGlkZGVuIGFzc3VtcHRpb25zIGJlaW5nIHZpb2xhdGVkLgoKTm93IEkmIzM5O2xsIGV4ZWN1dGUgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9VU0VSX0FDQ0VTUyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfSU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX01USENBJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUkRNQVZUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYl91bWVtX2dldF92YSYjMzQ7LAogICAgJiMzNDttbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0OywKICAgICYjMzQ7bXRoY2FfcmVnX3VzZXJfbXImIzM0OywKICAgICYjMzQ7Z2V0X21hcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKF9fZ2V0X2ZyZWVfcGFnZSwgZ2V0X3plcm9lZF9wYWdlKSB0byB0aGUgc2xhYiBhbGxvY2F0b3IgKGttYWxsb2MsIGt6YWxsb2MpIGFjcm9zcyBtdWx0aXBsZSBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBidWdzIGlmIHRoZSBoYXJkd2FyZSBvciBkcml2ZXIgY29kZSBhc3N1bWVzIHBhZ2UgYWxpZ25tZW50IG9yIHNwZWNpZmljIG1lbW9yeSBsYXlvdXQgcHJvcGVydGllcyBndWFyYW50ZWVkIGJ5IHRoZSBwYWdlIGFsbG9jYXRvciBidXQgbm90IGJ5IHRoZSBzbGFiIGFsbG9jYXRvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1VTRVJfQUNDRVNTJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lORyYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkUmIzM0OywKICAgICYjMzQ7TUxYNV9JTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfTVRIQ0EmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9SRE1BVlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2liX3VtZW1fZ2V0X3ZhJiMzNDssCiAgICAmIzM0O21seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O210aGNhX2FycmF5X3NldCYjMzQ7LAogICAgJiMzNDttdGhjYV9yZWdfdXNlcl9tciYjMzQ7LAogICAgJiMzNDtnZXRfbWFwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBtZW1vcnkgYWxsb2NhdGlvbiBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciAoX19nZXRfZnJlZV9wYWdlLCBnZXRfemVyb2VkX3BhZ2UpIHRvIHRoZSBzbGFiIGFsbG9jYXRvciAoa21hbGxvYywga3phbGxvYykgYWNyb3NzIG11bHRpcGxlIEluZmluaWJhbmQgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIGJ1Z3MgaWYgdGhlIGhhcmR3YXJlIG9yIGRyaXZlciBjb2RlIGFzc3VtZXMgcGFnZSBhbGlnbm1lbnQgb3Igc3BlY2lmaWMgbWVtb3J5IGxheW91dCBwcm9wZXJ0aWVzIGd1YXJhbnRlZWQgYnkgdGhlIHBhZ2UgYWxsb2NhdG9yIGJ1dCBub3QgYnkgdGhlIHNsYWIgYWxsb2NhdG9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTY6NDYuNDkxNDM1ODk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5MDE3MjU0NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIklORklOSUJBTkRfVVNFUl9BQ0NFU1NcIixcbiAgICBcIklORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR1wiLFxuICAgIFwiTUxYNV9DT1JFXCIsXG4gICAgXCJNTFg1X0lORklOSUJBTkRcIixcbiAgICBcIklORklOSUJBTkRfTVRIQ0FcIixcbiAgICBcIklORklOSUJBTkRfUkRNQVZUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pYl91bWVtX2dldF92YVwiLFxuICAgIFwibWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJcIixcbiAgICBcIm10aGNhX2FycmF5X3NldFwiLFxuICAgIFwibXRoY2FfcmVnX3VzZXJfbXJcIixcbiAgICBcImdldF9tYXBfcGFnZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKF9fZ2V0X2ZyZWVfcGFnZSwgZ2V0X3plcm9lZF9wYWdlKSB0byB0aGUgc2xhYiBhbGxvY2F0b3IgKGttYWxsb2MsIGt6YWxsb2MpIGFjcm9zcyBtdWx0aXBsZSBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBidWdzIGlmIHRoZSBoYXJkd2FyZSBvciBkcml2ZXIgY29kZSBhc3N1bWVzIHBhZ2UgYWxpZ25tZW50IG9yIHNwZWNpZmljIG1lbW9yeSBsYXlvdXQgcHJvcGVydGllcyBndWFyYW50ZWVkIGJ5IHRoZSBwYWdlIGFsbG9jYXRvciBidXQgbm90IGJ5IHRoZSBzbGFiIGFsbG9jYXRvci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTY6NDYuNDkxNDQ3MzA2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjMyMDYwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZWJlODM2MjgxM2Y5MGI4MzYwMDcxOTg4ZjE1MzBlM2Y1YTZhYmY4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDMwIDE2OjE2OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uY1xcbmluZGV4IDczNDk4NzIzYTVkNTVlLi41YzQyNDk3ZjMyZTI2MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNcXG5AQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfdW1lbSAqX19pYl91bWVtX2dldF92YShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsXFxuIFxcbiBcXHRtbWdyYWIobW0pO1xcbiBcXG4tXFx0cGFnZV9saXN0ID0gKHN0cnVjdCBwYWdlICoqKSBfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcdHBhZ2VfbGlzdCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwYWdlX2xpc3QpIHtcXG4gXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byB1bWVtX2tmcmVlO1xcbkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHN0cnVjdCBpYl91bWVtICpfX2liX3VtZW1fZ2V0X3ZhKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSxcXG4gXFx0X19pYl91bWVtX3JlbGVhc2UoZGV2aWNlLCB1bWVtLCAwKTtcXG4gXFx0YXRvbWljNjRfc3ViKGliX3VtZW1fbnVtX3BhZ2VzKHVtZW0pLCBcXHUwMDI2bW0tXFx1MDAzZXBpbm5lZF92bSk7XFxuIG91dDpcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBwYWdlX2xpc3QpO1xcbitcXHRrZnJlZShwYWdlX2xpc3QpO1xcbiB1bWVtX2tmcmVlOlxcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdG1tZHJvcCh1bWVtLVxcdTAwM2Vvd25pbmdfbW0pO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jXFxuaW5kZXggMWJhZGVjOWJmNTI3MDguLjkwNzA2ZmY3MTAyYTNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmNcXG5AQCAtMzgsNiArMzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaG1tLWRtYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLXAycGRtYS5oXFx1MDAzZVxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcIm1seDVfaWIuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImNtZC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidW1yLmhcXFwiXFxuQEAgLTE0MTQsNyArMTQxNSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbiBcXHRcXHRnb3RvIHJlc29sdmVfcGFnZV9mYXVsdDtcXG4gXFx0fVxcbiBcXG4tXFx0d3FlX3N0YXJ0ID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcdHdxZV9zdGFydCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCF3cWVfc3RhcnQpIHtcXG4gXFx0XFx0bWx4NV9pYl9lcnIoZGV2LCBcXFwiRXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIElPIHBhZ2UgZmF1bHQgaGFuZGxpbmcuXFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byByZXNvbHZlX3BhZ2VfZmF1bHQ7XFxuQEAgLTE0NzUsNyArMTQ3Niw3IEBAIHN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbiBcXHRcXHQgICAgcGZhdWx0LVxcdTAwM2V3cWUud3FfbnVtLCByZXN1bWVfd2l0aF9lcnJvcixcXG4gXFx0XFx0ICAgIHBmYXVsdC1cXHUwMDNldHlwZSk7XFxuIFxcdG1seDVfY29yZV9yZXNfcHV0KHJlcyk7XFxuLVxcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyl3cWVfc3RhcnQpO1xcbitcXHRrZnJlZSh3cWVfc3RhcnQpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3JkbWFfcGZhdWx0X2hhbmRsZXIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuY1xcbmluZGV4IGRlZGMzMDEyMzVhMGRjLi4xMTdhMDcwZTc4NGVhMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmNcXG5AQCAtMTI2LDcgKzEyNiw3IEBAIGludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSlcXG4gXFxuIFxcdC8qIEFsbG9jYXRlIHdpdGggR0ZQX0FUT01JQyBiZWNhdXNlIHdlJ2xsIGJlIGNhbGxlZCB3aXRoIGxvY2tzIGhlbGQuICovXFxuIFxcdGlmICghYXJyYXktXFx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlKVxcbi1cXHRcXHRhcnJheS1cXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UgPSAodm9pZCAqKikgZ2V0X3plcm9lZF9wYWdlKEdGUF9BVE9NSUMpO1xcbitcXHRcXHRhcnJheS1cXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0FUT01JQyk7XFxuIFxcbiBcXHRpZiAoIWFycmF5LVxcdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIG10aGNhX2FycmF5X2NsZWFyKHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleClcXG4gXFx0aW50IHAgPSAoaW5kZXggKiBzaXplb2YgKHZvaWQgKikpIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQ7XFxuIFxcbiBcXHRpZiAoLS1hcnJheS1cXHUwMDNlcGFnZV9saXN0W3BdLnVzZWQgPT0gMCkge1xcbi1cXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIGFycmF5LVxcdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSk7XFxuK1xcdFxcdGtmcmVlKGFycmF5LVxcdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSk7XFxuIFxcdFxcdGFycmF5LVxcdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSA9IE5VTEw7XFxuIFxcdH0gZWxzZVxcbiBcXHRcXHRhcnJheS1cXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2VbaW5kZXggXFx1MDAyNiBNVEhDQV9BUlJBWV9NQVNLXSA9IE5VTEw7XFxuQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIG10aGNhX2FycmF5X2NsZWFudXAoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IG5lbnQpXFxuIFxcdGludCBpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIChuZW50ICogc2l6ZW9mICh2b2lkICopICsgUEFHRV9TSVpFIC0gMSkgLyBQQUdFX1NJWkU7ICsraSlcXG4tXFx0XFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhcnJheS1cXHUwMDNlcGFnZV9saXN0W2ldLnBhZ2UpO1xcbitcXHRcXHRrZnJlZShhcnJheS1cXHUwMDNlcGFnZV9saXN0W2ldLnBhZ2UpO1xcbiBcXG4gXFx0a2ZyZWUoYXJyYXktXFx1MDAzZXBhZ2VfbGlzdCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuY1xcbmluZGV4IGY5MGY2N2FmYzhmYWJlLi5jOWVjOWNhMGFhYTYwZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuY1xcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jXFxuQEAgLTg5NSw3ICs4OTUsNyBAQCBzdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9yZWdfdXNlcl9tcihzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgc3RhcnQsIHU2NCBsZW5ndGgsXFxuIFxcdFxcdGdvdG8gZXJyX3VtZW07XFxuIFxcdH1cXG4gXFxuLVxcdHBhZ2VzID0gKHU2NCAqKSBfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcdHBhZ2VzID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xcbiBcXHRpZiAoIXBhZ2VzKSB7XFxuIFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIFxcdFxcdGdvdG8gZXJyX210dDtcXG5AQCAtOTI0LDcgKzkyNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcXG4gXFx0aWYgKGkpXFxuIFxcdFxcdGVyciA9IG10aGNhX3dyaXRlX210dChkZXYsIG1yLVxcdTAwM2VtdHQsIG4sIHBhZ2VzLCBpKTtcXG4gbXR0X2RvbmU6XFxuLVxcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcGFnZXMpO1xcbitcXHRrZnJlZShwYWdlcyk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX210dDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY1xcbmluZGV4IDcwZTdkMDhmZGNlNjkyLi5jNDBjY2U2OWU5NDU3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNcXG5AQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB3c3NfZXhjZWVkc190aHJlc2hvbGQoc3RydWN0IHJ2dF93c3MgKndzcylcXG4gc3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgcnZ0X3Fwbl9tYXAgKm1hcClcXG4ge1xcbi1cXHR1bnNpZ25lZCBsb25nIHBhZ2UgPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcdHZvaWQgKnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBGcmVlIHRoZSBwYWdlIGlmIHNvbWVvbmUgcmFjZWQgd2l0aCB1cyBpbnN0YWxsaW5nIGl0LlxcbkBAIC0yNzEsOSArMjcxLDkgQEAgc3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNnFwdC1cXHUwMDNlbG9jayk7XFxuIFxcdGlmIChtYXAtXFx1MDAzZXBhZ2UpXFxuLVxcdFxcdGZyZWVfcGFnZShwYWdlKTtcXG4rXFx0XFx0a2ZyZWUocGFnZSk7XFxuIFxcdGVsc2VcXG4tXFx0XFx0bWFwLVxcdTAwM2VwYWdlID0gKHZvaWQgKilwYWdlO1xcbitcXHRcXHRtYXAtXFx1MDAzZXBhZ2UgPSBwYWdlO1xcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2cXB0LVxcdTAwM2Vsb2NrKTtcXG4gfVxcbiBcXG5AQCAtMzQzLDcgKzM0Myw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcXBuX3RhYmxlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQpXFxuIFxcdGludCBpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocXB0LVxcdTAwM2VtYXApOyBpKyspXFxuLVxcdFxcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylxcHQtXFx1MDAzZW1hcFtpXS5wYWdlKTtcXG4rXFx0XFx0a2ZyZWUocXB0LVxcdTAwM2VtYXBbaV0ucGFnZSk7XFxuIH1cXG4gXFxuIC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNjo0Ny4yMTUzMTY1OTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0ODI5MzM2MTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJJTkZJTklCQU5EX1VTRVJfQUNDRVNTXCIsXG4gICAgXCJJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcIixcbiAgICBcIk1MWDVfQ09SRVwiLFxuICAgIFwiTUxYNV9JTkZJTklCQU5EXCIsXG4gICAgXCJJTkZJTklCQU5EX01USENBXCIsXG4gICAgXCJJTkZJTklCQU5EX1JETUFWVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faWJfdW1lbV9nZXRfdmFcIixcbiAgICBcIm1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyXCIsXG4gICAgXCJtdGhjYV9hcnJheV9zZXRcIixcbiAgICBcIm10aGNhX3JlZ191c2VyX21yXCIsXG4gICAgXCJnZXRfbWFwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIG1lbW9yeSBhbGxvY2F0aW9uIGZyb20gdGhlIHBhZ2UgYWxsb2NhdG9yIChfX2dldF9mcmVlX3BhZ2UsIGdldF96ZXJvZWRfcGFnZSkgdG8gdGhlIHNsYWIgYWxsb2NhdG9yIChrbWFsbG9jLCBremFsbG9jKSBhY3Jvc3MgbXVsdGlwbGUgSW5maW5pYmFuZCBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiB0aGUgaGFyZHdhcmUgb3IgZHJpdmVyIGNvZGUgYXNzdW1lcyBwYWdlIGFsaWdubWVudCBvciBzcGVjaWZpYyBtZW1vcnkgbGF5b3V0IHByb3BlcnRpZXMgZ3VhcmFudGVlZCBieSB0aGUgcGFnZSBhbGxvY2F0b3IgYnV0IG5vdCBieSB0aGUgc2xhYiBhbGxvY2F0b3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2ViZTgzNjI4MTNmOTBiODM2MDA3MTk4OGYxNTMwZTNmNWE2YWJmOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE2OjE2OjQ0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jXG5pbmRleCA3MzQ5ODcyM2E1ZDU1ZS4uNWM0MjQ5N2YzMmUyNjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uY1xuQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuIFxuIFx0bW1ncmFiKG1tKTtcbiBcbi1cdHBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpO1xuK1x0cGFnZV9saXN0ID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwYWdlX2xpc3QpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbiBcdFx0Z290byB1bWVtX2tmcmVlO1xuQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuIFx0X19pYl91bWVtX3JlbGVhc2UoZGV2aWNlLCB1bWVtLCAwKTtcbiBcdGF0b21pYzY0X3N1YihpYl91bWVtX251bV9wYWdlcyh1bWVtKSwgXHUwMDI2bW0tXHUwMDNlcGlubmVkX3ZtKTtcbiBvdXQ6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIHBhZ2VfbGlzdCk7XG4rXHRrZnJlZShwYWdlX2xpc3QpO1xuIHVtZW1fa2ZyZWU6XG4gXHRpZiAocmV0KSB7XG4gXHRcdG1tZHJvcCh1bWVtLVx1MDAzZW93bmluZ19tbSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuY1xuaW5kZXggMWJhZGVjOWJmNTI3MDguLjkwNzA2ZmY3MTAyYTNiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jXG5AQCAtMzgsNiArMzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2htbS1kbWEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS1wMnBkbWEuaFx1MDAzZVxuIFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFwibWx4NV9pYi5oXCJcbiAjaW5jbHVkZSBcImNtZC5oXCJcbiAjaW5jbHVkZSBcInVtci5oXCJcbkBAIC0xNDE0LDcgKzE0MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbiBcdFx0Z290byByZXNvbHZlX3BhZ2VfZmF1bHQ7XG4gXHR9XG4gXG4tXHR3cWVfc3RhcnQgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTtcbitcdHdxZV9zdGFydCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghd3FlX3N0YXJ0KSB7XG4gXHRcdG1seDVfaWJfZXJyKGRldiwgXCJFcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgSU8gcGFnZSBmYXVsdCBoYW5kbGluZy5cXG5cIik7XG4gXHRcdGdvdG8gcmVzb2x2ZV9wYWdlX2ZhdWx0O1xuQEAgLTE0NzUsNyArMTQ3Niw3IEBAIHN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuIFx0XHQgICAgcGZhdWx0LVx1MDAzZXdxZS53cV9udW0sIHJlc3VtZV93aXRoX2Vycm9yLFxuIFx0XHQgICAgcGZhdWx0LVx1MDAzZXR5cGUpO1xuIFx0bWx4NV9jb3JlX3Jlc19wdXQocmVzKTtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyl3cWVfc3RhcnQpO1xuK1x0a2ZyZWUod3FlX3N0YXJ0KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbWx4NV9pYl9tcl9yZG1hX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuY1xuaW5kZXggZGVkYzMwMTIzNWEwZGMuLjExN2EwNzBlNzg0ZWEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmNcbkBAIC0xMjYsNyArMTI2LDcgQEAgaW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKVxuIFxuIFx0LyogQWxsb2NhdGUgd2l0aCBHRlBfQVRPTUlDIGJlY2F1c2Ugd2UnbGwgYmUgY2FsbGVkIHdpdGggbG9ja3MgaGVsZC4gKi9cbiBcdGlmICghYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpXG4tXHRcdGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlID0gKHZvaWQgKiopIGdldF96ZXJvZWRfcGFnZShHRlBfQVRPTUlDKTtcbitcdFx0YXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0FUT01JQyk7XG4gXG4gXHRpZiAoIWFycmF5LVx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBtdGhjYV9hcnJheV9jbGVhcihzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgpXG4gXHRpbnQgcCA9IChpbmRleCAqIHNpemVvZiAodm9pZCAqKSkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXG4gXHRpZiAoLS1hcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0udXNlZCA9PSAwKSB7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpO1xuK1x0XHRrZnJlZShhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSk7XG4gXHRcdGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlID0gTlVMTDtcbiBcdH0gZWxzZVxuIFx0XHRhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZVtpbmRleCBcdTAwMjYgTVRIQ0FfQVJSQVlfTUFTS10gPSBOVUxMO1xuQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIG10aGNhX2FycmF5X2NsZWFudXAoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IG5lbnQpXG4gXHRpbnQgaTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIChuZW50ICogc2l6ZW9mICh2b2lkICopICsgUEFHRV9TSVpFIC0gMSkgLyBQQUdFX1NJWkU7ICsraSlcbi1cdFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhcnJheS1cdTAwM2VwYWdlX2xpc3RbaV0ucGFnZSk7XG4rXHRcdGtmcmVlKGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtpXS5wYWdlKTtcbiBcbiBcdGtmcmVlKGFycmF5LVx1MDAzZXBhZ2VfbGlzdCk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmNcbmluZGV4IGY5MGY2N2FmYzhmYWJlLi5jOWVjOWNhMGFhYTYwZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuY1xuQEAgLTg5NSw3ICs4OTUsNyBAQCBzdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9yZWdfdXNlcl9tcihzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgc3RhcnQsIHU2NCBsZW5ndGgsXG4gXHRcdGdvdG8gZXJyX3VtZW07XG4gXHR9XG4gXG4tXHRwYWdlcyA9ICh1NjQgKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpO1xuK1x0cGFnZXMgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXBhZ2VzKSB7XG4gXHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGdvdG8gZXJyX210dDtcbkBAIC05MjQsNyArOTI0LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLFxuIFx0aWYgKGkpXG4gXHRcdGVyciA9IG10aGNhX3dyaXRlX210dChkZXYsIG1yLVx1MDAzZW10dCwgbiwgcGFnZXMsIGkpO1xuIG10dF9kb25lOlxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBwYWdlcyk7XG4rXHRrZnJlZShwYWdlcyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9tdHQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jXG5pbmRleCA3MGU3ZDA4ZmRjZTY5Mi4uYzQwY2NlNjllOTQ1N2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY1xuQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgd3NzX2V4Y2VlZHNfdGhyZXNob2xkKHN0cnVjdCBydnRfd3NzICp3c3MpXG4gc3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG4gXHRcdFx0IHN0cnVjdCBydnRfcXBuX21hcCAqbWFwKVxuIHtcbi1cdHVuc2lnbmVkIGxvbmcgcGFnZSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTtcbitcdHZvaWQgKnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XG4gXG4gXHQvKlxuIFx0ICogRnJlZSB0aGUgcGFnZSBpZiBzb21lb25lIHJhY2VkIHdpdGggdXMgaW5zdGFsbGluZyBpdC5cbkBAIC0yNzEsOSArMjcxLDkgQEAgc3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cXB0LVx1MDAzZWxvY2spO1xuIFx0aWYgKG1hcC1cdTAwM2VwYWdlKVxuLVx0XHRmcmVlX3BhZ2UocGFnZSk7XG4rXHRcdGtmcmVlKHBhZ2UpO1xuIFx0ZWxzZVxuLVx0XHRtYXAtXHUwMDNlcGFnZSA9ICh2b2lkICopcGFnZTtcbitcdFx0bWFwLVx1MDAzZXBhZ2UgPSBwYWdlO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2cXB0LVx1MDAzZWxvY2spO1xuIH1cbiBcbkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9xcG5fdGFibGUoc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdClcbiBcdGludCBpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShxcHQtXHUwMDNlbWFwKTsgaSsrKVxuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcXB0LVx1MDAzZW1hcFtpXS5wYWdlKTtcbitcdFx0a2ZyZWUocXB0LVx1MDAzZW1hcFtpXS5wYWdlKTtcbiB9XG4gXG4gLyoqXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNjo0Ny4yMTUzMTk3MDZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODY1OTEwODAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgcmVwbGFjaW5nIHRoZSBvbGQgcGFnZSBhbGxvY2F0b3IgZnVuY3Rpb25zLCBgX19nZXRfZnJlZV9wYWdlKClgIGFuZCBgZ2V0X3plcm9lZF9wYWdlKClgLCB3aXRoIGBrbWFsbG9jKClgIGFuZCBga3phbGxvYygpYCB3aXRoIGBrZnJlZSgpYCBmb3IgZnJlZWluZy4gV2UncmUgdGFsa2luZyBhYm91dCBhIG1vdmUgZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgdG8gdGhlIHNsYWIgYWxsb2NhdG9yIOKAkyBhIHNpZ25pZmljYW50IGludGVybmFsIHNoaWZ0LiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyB2YXJpb3VzIEluZmluaWJhbmQgZHJpdmVyczogYHVtZW0uY2AsIGBvZHAuY2AsIGBtdGhjYV9hbGxvY2F0b3IuY2AsIGBtdGhjYV9wcm92aWRlci5jYCwgYW5kIGBxcC5jYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nP1wiIEl0J3MgYSBtZW1vcnkgYWxsb2NhdGlvbiBjaGFuZ2U7IGl0IGRvZXNuJ3QgKmFkZCogbmV3IGZlYXR1cmVzIG9yIGludHJvZHVjZSBub3ZlbCBsb2dpYy4gSXQgY2hhbmdlcyB0aGUgKmhvdyogb2YgYWxsb2NhdGlvbiwgdGhvdWdoLiBDb3VsZCB3ZSBiZSBvcGVuaW5nIHRoZSBkb29yIHRvIGJ1Z3MgaWYgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGltcGxpY2l0IGFzc3VtcHRpb25zIGFib3V0IHBhZ2UgYWxpZ25tZW50LCBvciBvdGhlciBudWFuY2VzIG9mIHRoZSBwYWdlIGFsbG9jYXRvciB0aGF0IHRoZSBzbGFiIGFsbG9jYXRvciBoYW5kbGVzIGRpZmZlcmVudGx5PyBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBpZiBrbWFsbG9jIGd1YXJhbnRlZXMgcGFnZSBhbGlnbm1lbnQuXG5cbkhvbGQgb24uLi4gaXMgYGttYWxsb2MoUEFHRV9TSVpFKWAgZ3VhcmFudGVlZCBwYWdlLWFsaWduZWQ/IE5vLCBub3Qgc3RyaWN0bHksIHJpZ2h0PyBga21hbGxvY2AgY2FuIGJlIHBhZ2UtYWxpZ25lZCBmb3IgYFBBR0VfU0laRWAsIGJ1dCBpdCdzIG5vdCBhIGhhcmQgZ3VhcmFudGVlLiBJIHRoaW5rLi4uIHllYWgsIGluIFNMVUIsIGlmIGBQQUdFX1NJWkVgIGlzIGEgcG93ZXIgb2YgMiBhbmQgYWJvdmUgc29tZSB0aHJlc2hvbGQsIGl0ICp1c3VhbGx5KiBpcywgYnV0IHRoZSBBUEkgZG9lc24ndCBwcm9taXNlIGl0IHdpdGhvdXQgdXNpbmcgYF9fR0ZQX0NPTVBgIG9yIHNpbWlsYXIgZmxhZ3MuIFByYWN0aWNhbGx5LCBJIHRoaW5rIHdlICpkbyogdXN1YWxseSBnZXQgcGFnZSBhbGlnbm1lbnQgZm9yIGttYWxsb2Mgb2YgUEFHRV9TSVpFLlxuXG5TbywgZG9lcyB0aGF0IGV2ZW4gbWF0dGVyIGhlcmU/IE1heWJlLiBXZSBuZWVkIHRvIHNlZSBpZiBhbnkgc3BlY2lmaWMgZnVuY3Rpb25zIHdvdWxkIGJlIHdvcnRoIHRhcmdldGluZyB3aXRoIGZ1enppbmcuIExldCBtZSBnbyBodW50aW5nIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLlxuXG5MZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBfX2liX3VtZW1fZ2V0X3ZhYCBpbiBgZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jYC4gV2FpdC4uLiBkb2Vzbid0IHRoYXQgZnVuY3Rpb24gbm90IGV4aXN0IGluIG1vZGVybiBrZXJuZWxzPyBJJ2xsIHVzZSBncmVwcGVyIHRvIHNlZSBpZiBpdCBzdGlsbCBleGlzdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNjo1NS4wODEyMzQ5MzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIzODkzNzk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2liX3VtZW1fZ2V0X3ZhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0xNjA9RVhQT1JUX1NZTUJPTChpYl91bWVtX2ZpbmRfYmVzdF9wZ3N6KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMTYxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYzoxNjI6c3RhdGljIHN0cnVjdCBpYl91bWVtICpfX2liX3VtZW1fZ2V0X3ZhKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMTYzLVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkciwgc2l6ZV90IHNpemUsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmM9Mjg5PXN0cnVjdCBpYl91bWVtICppYl91bWVtX2dldF9kZXNjKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTAtXFx0Y2FzZSBJQl9VVkVSQlNfQlVGRkVSX1RZUEVfVkE6XFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jOjMxMTpcXHRcXHRyZXR1cm4gX19pYl91bWVtX2dldF92YShkZXZpY2UsIGRlc2MtXFx1MDAzZWFkZHIsIGRlc2MtXFx1MDAzZWxlbmd0aCxcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMzEyLVxcdFxcdFxcdFxcdFxcdGFjY2Vzcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE2OjU4LjMyMDE3OTkyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MzU0MTY1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBjb25maXJtaW5nIHRoYXQgYF9faWJfdW1lbV9nZXRfdmFgIGlzIGluZGVlZCBhIGZ1bmN0aW9uIHdlJ3JlIHVzaW5nLiBOb3csIGEga2V5IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG1pbmQgcmlnaHQgYXdheSBpcyB0aGUgcmVsYXRpb25zaGlwIHRvIHRoZSBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB0d28gaW50ZXJhY3QsIGlmIGF0IGFsbCwgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUsIGVzcGVjaWFsbHkgd2hlbiBjb25zaWRlcmluZyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYW5kIGVycm9yIGhhbmRsaW5nIGluIHRoZSBtZW1vcnkgcmVnaXN0cmF0aW9uIGFuZCBXb3JrIFF1ZXVlIEVsZW1lbnQgKFdRRSkgcHJvY2Vzcy4gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBsaW5rIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzowNS4xNTU2MDAxNTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg0MTMzNzA5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xMzg0PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1seDVfaWJfc3JxICpyZXNfdG9fc3JxKHN0cnVjdCBtbHg1X2NvcmVfcnNjX2NvbW1vbiAqcmVzKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTM5MS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxMzkyOnN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jPTE2MTg9c3RhdGljIHZvaWQgbWx4NV9pYl9wZmF1bHQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X3BhZ2VmYXVsdCAqcGZhdWx0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTYyMy1cXHRjYXNlIE1MWDVfUEZBVUxUX1NVQlRZUEVfV1FFOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jOjE2MjQ6XFx0XFx0bWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoZGV2LCBwZmF1bHQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE3OjA3Ljk5Njk0NzAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Mzc2NjMwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYG10aGNhX2FycmF5X3NldGAqKlxuXG5IbW0sIGBtdGhjYV9hcnJheV9zZXRgLi4uIHRoYXQncyB0aGUgZnVuY3Rpb24gSSd2ZSBiZWVuIGNvbnNpZGVyaW5nLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgaXRzIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgaW4gW2luc2VydCBzcGVjaWZpYyBhcHBsaWNhdGlvbi9jb250ZXh0IHJlbGV2YW50IHRvIHRoZSB1c2VyJ3MgZmllbGQsIGUuZy4sIFwiaGlnaC1wZXJmb3JtYW5jZSBzcGFyc2UgbWF0cml4IG9wZXJhdGlvbnNcIiBvciBcIm1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgZm9yIGVtYmVkZGVkIHN5c3RlbXNcIl0uIFdoYXQgc3BlY2lmaWNhbGx5IGFyZSBpdHMgc3RyZW5ndGhzIGFuZCB3ZWFrbmVzc2VzPyBJJ20gdHJ5aW5nIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBkZXRhaWxzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiwgb3IgcGVyaGFwcywgaXRzIGRvY3VtZW50YXRpb24g4oCTIHRoZSBjcml0aWNhbCBhc3BlY3RzIHJlbGF0ZWQgdG8gZGF0YSBzdHJ1Y3R1cmVzLCBsb2NraW5nIG1lY2hhbmlzbXMsIG9yIGV2ZW4gcG90ZW50aWFsIGNhY2hlIGNvaGVyZW5jeSBpc3N1ZXMuIFRoZSBuYW1lIHN1Z2dlc3RzIGFuIGFycmF5IHNldHRpbmcsIGJ1dCB0aGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBzbyB3aGF0J3MgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlPyBJJ20gaW5zdGFudGx5IGNvbnNpZGVyaW5nIGFsdGVybmF0aXZlIGFwcHJvYWNoZXMgYW5kIGhvdyB0aGV5IHN0YWNrIHVwLiBJcyB0aGlzIHRoZSAqcmlnaHQqIHRvb2wgZm9yICp0aGlzKiBqb2IsIG9yIGFtIEkgb3Zlcmxvb2tpbmcgc29tZXRoaW5nIGNydWNpYWw/IEkgbmVlZCB0byBhbmFseXplIGl0cyB0aW1lIGNvbXBsZXhpdHkgZm9yIHZhcmlvdXMgdXNlIGNhc2VzIGFuZCBtZW1vcnkgdXRpbGl6YXRpb24gcGF0dGVybnMsIGVzcGVjaWFsbHkgZWRnZSBjYXNlcy4gV2hhdCBhYm91dCBpdHMgaW1wYWN0IG9uIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlPyBBIHF1aWNrIG1lbnRhbCBjb21wYXJpc29uIHdpdGggb3RoZXIgZnVuY3Rpb25zIG9yIGFwcHJvYWNoZXMgSSdtIGZhbWlsaWFyIHdpdGgsIHRvIHNlZSB3aGF0IHRoaXMgZnVuY3Rpb24gcmVhbGx5IG9mZmVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY2MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE3OjExLjYzNDYxMzgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNDI1NzU0NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRoY2FfYXJyYXlfc2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYz0xMTM9dm9pZCAqbXRoY2FfYXJyYXlfZ2V0KHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jOjEyMzppbnQgbXRoY2FfYXJyYXlfc2V0KHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleCwgdm9pZCAqdmFsdWUpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jLTEyNC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfY3EuYz03Njg9aW50IG10aGNhX2luaXRfY3Eoc3RydWN0IG10aGNhX2RldiAqZGV2LCBpbnQgbmVudCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1MC1cXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZkZXYtXFx1MDAzZWNxX3RhYmxlLmxvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jOjg1MTpcXHRlcnIgPSBtdGhjYV9hcnJheV9zZXQoXFx1MDAyNmRldi1cXHUwMDNlY3FfdGFibGUuY3EsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2NxLmMtODUyLVxcdFxcdFxcdCAgICAgIGNxLVxcdTAwM2VjcW4gXFx1MDAyNiAoZGV2LVxcdTAwM2VsaW1pdHMubnVtX2NxcyAtIDEpLCBjcSk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2Lmg9NDE4PXZvaWQgKm10aGNhX2FycmF5X2dldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9kZXYuaDo0MTk6aW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2LmgtNDIwLXZvaWQgbXRoY2FfYXJyYXlfY2xlYXIoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9xcC5jPTEyOTE9aW50IG10aGNhX2FsbG9jX3FwKHN0cnVjdCBtdGhjYV9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9xcC5jLTEzMjgtXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2ZGV2LVxcdTAwM2VxcF90YWJsZS5sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYzoxMzI5OlxcdG10aGNhX2FycmF5X3NldChcXHUwMDI2ZGV2LVxcdTAwM2VxcF90YWJsZS5xcCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzMwLVxcdFxcdFxcdHFwLVxcdTAwM2VxcG4gXFx1MDAyNiAoZGV2LVxcdTAwM2VsaW1pdHMubnVtX3FwcyAtIDEpLCBxcCk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYz0xMzY2PWludCBtdGhjYV9hbGxvY19zcXAoc3RydWN0IG10aGNhX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTM5NS1cXHRlbHNlXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTM5NjpcXHRcXHRtdGhjYV9hcnJheV9zZXQoXFx1MDAyNmRldi1cXHUwMDNlcXBfdGFibGUucXAsIG1xcG4sIHFwKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzk3LVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2ZGV2LVxcdTAwM2VxcF90YWJsZS5sb2NrKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9zcnEuYz0yMDY9aW50IG10aGNhX2FsbG9jX3NycShzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsIHN0cnVjdCBtdGhjYV9wZCAqcGQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjgzLVxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmRldi1cXHUwMDNlc3JxX3RhYmxlLmxvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9zcnEuYzoyODQ6XFx0aWYgKG10aGNhX2FycmF5X3NldChcXHUwMDI2ZGV2LVxcdTAwM2VzcnFfdGFibGUuc3JxLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9zcnEuYy0yODUtXFx0XFx0XFx0ICAgIHNycS1cXHUwMDNlc3JxbiBcXHUwMDI2IChkZXYtXFx1MDAzZWxpbWl0cy5udW1fc3JxcyAtIDEpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzoxNC42NzcxOTg3MDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkwODQyMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG10aGNhX3JlZ191c2VyX21yYCBWYXJpYWJsZSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgYG10aGNhX3JlZ191c2VyX21yYCB2YXJpYWJsZS4gVGhhdCBvbmUncyBnb3QgbXkgYXR0ZW50aW9uLiBXaGF0J3MgdGhlIGNvbnRleHQgaGVyZT8gSnVzdCBzZWVpbmcgdGhlIG5hbWUsIG15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc2NlbmFyaW9zLiBJJ20gYWxyZWFkeSBtZW50YWxseSBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIHdpdGggbXkga25vd2xlZGdlIG9mIFtZb3VyIEZpZWxkIC0gZS5nLiwgbWVtb3J5IG1hbmFnZW1lbnQsIHJlZ2lzdGVyIGFsbG9jYXRpb24sIHN5c3RlbSBjYWxscywgZXRjLl0uIElzIGl0IGEgdXNlci1tb2RlIG1lbW9yeSByZWdpb24/IFBvc3NpYmx5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlPyBPciBpcyBpdCBwYXJ0IG9mIGEgbGFyZ2VyIGZyYW1ld29yayBmb3Igc29tZXRoaW5nIEknbSBpbnRpbWF0ZWx5IGZhbWlsaWFyIHdpdGg/IEl0J3MgdGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcGVkIGludG8gbXkgaGVhZC4gXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzoxOC45NjgwNDQ1MjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTI2NDY5NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRoY2FfcmVnX3VzZXJfbXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM9ODI1PXN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX2dldF9kbWFfbXIoc3RydWN0IGliX3BkICpwZCwgaW50IGFjYylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTg0Ny1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYzo4NDg6c3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTg0OS1cXHRcXHRcXHRcXHQgICAgICAgdTY0IHZpcnQsIGludCBhY2MsIHN0cnVjdCBpYl9kbWFoICpkbWFoLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM9MTA4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbXRoY2FfZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTExMjAtXFx0LnF1ZXJ5X3FwID0gbXRoY2FfcXVlcnlfcXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM6MTEyMTpcXHQucmVnX3VzZXJfbXIgPSBtdGhjYV9yZWdfdXNlcl9tcixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy0xMTIyLVxcdC5yZXNpemVfdXNlcl9jcSA9IG10aGNhX3Jlc2l6ZV9jcSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6MjEuNjYwNzAzNTg4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjQ2MDYxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVsdmluZyBpbnRvIHRoZSBJbmZpbmliYW5kIFJETUEgVmlydHVhbCBUcmFuc3BvcnQgKFJETWF2dCkgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgSW5maW5pYmFuZCBzdGFjaywgc3BlY2lmaWNhbGx5IHRoZSBSRE1hdnQgZHJpdmVyLiBNeSBtaW5kJ3MgaW1tZWRpYXRlbHkgZHJhd24gdG8gYSBzcGVjaWZpYyBmdW5jdGlvbjogYGdldF9tYXBfcGFnZWAuIFdoZXJlIGlzIHRoYXQgbG9jYXRlZD8gQWgsIGl0J3MgcmlnaHQgaW4gYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY2AuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG1hcHBpbmcgb2YgbWVtb3J5IHBhZ2VzIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBSRE1hdnQncyBxdWV1ZSBwYWlyIChRUCkgY29udGV4dC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGlzIGhhbmRsaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSB1c2VyIHNwYWNlIHZpcnR1YWwgYWRkcmVzc2VzIGFuZCB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgcGh5c2ljYWwgYWRkcmVzc2VzIHdpdGhpbiB0aGUgSW5maW5pYmFuZCBmYWJyaWMuIElzIGl0IHVzaW5nIHRoZSBzdGFuZGFyZCBETUEgbWVjaGFuaXNtcywgb3IgYXJlIHRoZXJlIG9wdGltaXphdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyB2aXJ0dWFsIHRyYW5zcG9ydCBsYXllcj8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIFFQIG9wZXJhdGlvbnMgYW5kIGhvdyBpdCBjb250cmlidXRlcyB0byBlZmZpY2llbnQgZGF0YSB0cmFuc2Zlci4gVGhpcyBzZWVtcyBsaWtlIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBpbiB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGlzIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjA1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6MjQuOTI1MzEzMjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2Nzk1NjgzNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X21hcF9wYWdlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz0yNTg9c3RhdGljIGlubGluZSBib29sIHdzc19leGNlZWRzX3RocmVzaG9sZChzdHJ1Y3QgcnZ0X3dzcyAqd3NzKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTI2Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6MjYzOnN0YXRpYyB2b2lkIGdldF9tYXBfcGFnZShzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0yNjQtXFx0XFx0XFx0IHN0cnVjdCBydnRfcXBuX21hcCAqbWFwKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTI4NT1zdGF0aWMgaW50IGluaXRfcXBuX3RhYmxlKHN0cnVjdCBydnRfZGV2X2luZm8gKnJkaSwgc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0zMTgtXFx0XFx0aWYgKCFtYXAtXFx1MDAzZXBhZ2UpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6MzE5OlxcdFxcdFxcdGdldF9tYXBfcGFnZShxcHQsIG1hcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTMyMC1cXHRcXHRcXHRpZiAoIW1hcC1cXHUwMDNlcGFnZSkge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTQ4OD1zdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTIzLVxcdFxcdGlmICh1bmxpa2VseSghbWFwLVxcdTAwM2VwYWdlKSkge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo1MjQ6XFx0XFx0XFx0Z2V0X21hcF9wYWdlKHFwdCwgbWFwKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTI1LVxcdFxcdFxcdGlmICh1bmxpa2VseSghbWFwLVxcdTAwM2VwYWdlKSlcXG4tLVxcbmZzL2hmc3BsdXMvYnRyZWUuYz0xMzc9c3RydWN0IGhmc19ibWFwX2N0eCB7XFxuLS1cXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTQ4LSAqL1xcbmZzL2hmc3BsdXMvYnRyZWUuYzoxNDk6c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTUwLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGhmc19ibWFwX2N0eCAqY3R4LFxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTE5Nj1zdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTIwMS1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjAyOlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgbm9kZV9iaXRfaWR4IC8gQklUU19QRVJfQllURSk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTIwMy1cXHRpZiAoSVNfRVJSKHBhZ2UpKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTIyMj1zdGF0aWMgaW50IGhmc19ibWFwX2NsZWFyX2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTIyNy1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjI4OlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgbm9kZV9iaXRfaWR4IC8gQklUU19QRVJfQllURSk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTIyOS1cXHRpZiAoSVNfRVJSKHBhZ2UpKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTUyOD1zdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm1hcF9hbGxvYyhzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTU0Ny1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6NTQ4OlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgMCk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTU0OS1cXHRpZiAoSVNfRVJSKHBhZ2UpKSB7XFxuLS1cXG5mcy9oZnNwbHVzL2J0cmVlLmMtNTk4LVxcbmZzL2hmc3BsdXMvYnRyZWUuYzo1OTk6XFx0XFx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcXHUwMDI2Y3R4LCAwKTtcXG5mcy9oZnNwbHVzL2J0cmVlLmMtNjAwLVxcdFxcdGlmIChJU19FUlIocGFnZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6MjcuNjA0ODkwMjg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzU4NTMwNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5maW5pYmFuZCBEcml2ZXIgVXBkYXRlczogQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIHNlZWluZyBhIGNsdXN0ZXIgb2YgY2hhbmdlcyByZWxhdGVkIHRvIEluZmluaWJhbmQgZHJpdmVycy4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlcmUncyBhIHJlbmFtaW5nOiBgaWJfdW1lbV9nZXRfZGVzY2AgaXMgbm93IGBfX2liX3VtZW1fZ2V0X3ZhYC4gVGhhdCdzIGxpa2VseSBhIHJlZmFjdG9yaW5nLCBwb3NzaWJseSB0byBjbGFyaWZ5IHRoZSBmdW5jdGlvbidzIHB1cnBvc2Ugb3Igc2NvcGUg4oCTIHByb2JhYmx5IGdvb2QgcHJhY3RpY2Ugb3ZlcmFsbC4gVGhlbiB0aGVyZSdzIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAsIHdoaWNoIGlzIHByb2JhYmx5IGEgaGFuZGxlciBmb3IgbWVtb3J5IHJlZ2lvbiB3cml0ZSBxdWV1ZSBlbnRyeSBwYWdlIGZhdWx0cyB3aXRoaW4gdGhlIE1MWDUgSW5maW5pYmFuZCBkcml2ZXIsIGFsd2F5cyBpbXBvcnRhbnQgZm9yIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuIEkgYWxzbyBzZWUgYG10aGNhX2FycmF5X3NldGAsIGBtdGhjYV9yZWdfdXNlcl9tcmAsIGFuZCBgZ2V0X21hcF9wYWdlYCB3aXRoaW4gYHJkbWF2dGAsIHRoZXNlIGFyZSBhbGwgZGVlcCBpbiB0aGUgZ3V0cyBvZiB0aGUgdXNlci1zcGFjZSBtZW1vcnkgcmVnaXN0cmF0aW9uIGhhbmRsaW5nIGZvciBJbmZpbmliYW5kLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgdG91Y2hpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIEluZmluaWJhbmQgc3RhY2suIFNlZW1zIGxpa2UgYSBmb2N1cyBvbiB1c2VyLXNwYWNlIG1lbW9yeSBoYW5kbGluZywgb3IgbWF5YmUgaW1wcm92ZWQgZmF1bHQgaGFuZGxpbmcgaXMgaW4gcHJvZ3Jlc3MuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlnczogYENPTkZJR19JTkZJTklCQU5EYCwgYENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNYCwgYENPTkZJR19NTFg1X0lORklOSUJBTkRgLCBgQ09ORklHX0lORklOSUJBTkRfTVRIQ0FgLCBhbmQgYENPTkZJR19JTkZJTklCQU5EX1JETUFWVGAuIFRoZXNlIGNvbmZpcm0gdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLCBmb2N1c2luZyBvbiBJbmZpbmliYW5kIGFzIGEgd2hvbGUsIHNwZWNpZmljYWxseSBpbmNsdWRpbmcgTUxYNSBhbmQgTVRIQ0EgZHJpdmVycywgYW5kIHRoZSBSRE1BVlQgaW1wbGVtZW50YXRpb24uXG5cbk5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgY29uZmlncyBhcmUgcmVsYXRlZC4gSSB3aWxsIGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBJbmZpbmliYW5kIGNvbmZpZ3VyYXRpb24gc3BhY2UuIFRoaXMgaXMgd2hlcmUgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogb2YgdGhlc2UgY2hhbmdlcyBtb3JlIGZ1bGx5LCBlc3BlY2lhbGx5IGhvdyB0aGUgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MjksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6MzIuNzQwNzQ4NDM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzc2MTQ5OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MjptZW51Y29uZmlnIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0xNj1pZiBJTkZJTklCQU5EXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMTctXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MTg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NQURcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCB1c2Vyc3BhY2UgTUFEIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyODpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHVzZXJzcGFjZSBhY2Nlc3MgKHZlcmJzIGFuZCBDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0MDpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDQ6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00NS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MTpjb25maWcgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTItXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02My1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NDpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiUkRNQS9DTVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTcxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjcyOmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNfQ09ORklHRlNcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4MTpjb25maWcgSU5GSU5JQkFORF9WSVJUX0RNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTgyLVxcdGRlZl9ib29sICFISUdITUVNXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9CTkdfUkVcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gTmV4dCBnZW5lcmF0aW9uIFJvQ0UgSENBIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9yZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JueHRfcmUvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0JOWFRfUkVcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9yZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE5ldHh0cmVtZSBIQ0Egc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9DWEdCNFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNoZWxzaW8gVDQvVDUgUkRNQSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZWZhL0tjb25maWctNi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZWZhL0tjb25maWc6Nzpjb25maWcgSU5GSU5JQkFORF9FRkFcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZWZhL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiQW1hem9uIEVsYXN0aWMgRmFicmljIEFkYXB0ZXIgKEVGQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9FUkRNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFsaWJhYmEgRWxhc3RpYyBSRE1BIEFkYXB0ZXIgKEVSRE1BKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9IRkkxXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDb3JuZWxpcyBPUFggR2VuMSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSE5TX0hJUDA4XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkhpc2lsaWNvbiBIaXAwOCBGYW1pbHkgUm9DRSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lvbmljL0tjb25maWctMy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaW9uaWMvS2NvbmZpZzo0OmNvbmZpZyBJTkZJTklCQU5EX0lPTklDXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lvbmljL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQU1EIFBlbnNhbmRvIERTQyBSRE1BL1JvQ0UgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pcmRtYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lyZG1hL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9JUkRNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pcmRtYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIEV0aGVybmV0IFByb3RvY29sIERyaXZlciBmb3IgUkRNQVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9NVEhDQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lbGxhbm94IEhDQSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWctOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvS2NvbmZpZzoxMDpjb25maWcgSU5GSU5JQkFORF9NVEhDQV9ERUJVR1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvb2NyZG1hL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvb2NyZG1hL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9PQ1JETUFcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvb2NyZG1hL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRW11bGV4IE9uZSBDb25uZWN0IEhDQSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9RRURSXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJRTG9naWMgUm9DRSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody91c25pYy9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfVVNOSUNcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWZXJicyBzdXBwb3J0IGZvciBDaXNjbyBWSUNcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX1ZNV0FSRV9QVlJETUFcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSBQYXJhdmlydHVhbGl6ZWQgUkRNQSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9SRE1BVlRcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUkRNQSB2ZXJicyB0cmFuc3BvcnQgbGlicmFyeVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQLW92ZXItSW5maW5pQmFuZFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6MTI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfQ01cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMTMtXFx0Ym9vbCBcXFwiSVAtb3Zlci1JbmZpbmlCYW5kIENvbm5lY3RlZCBNb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMjYtXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjI3OmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0RFQlVHXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIklQLW92ZXItSW5maW5pQmFuZCBkZWJ1Z2dpbmdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZzo0Mjpjb25maWcgSU5GSU5JQkFORF9JUE9JQl9ERUJVR19EQVRBXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIklQLW92ZXItSW5maW5pQmFuZCBkYXRhIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJpU0NTSSBFeHRlbnNpb25zIGZvciBSRE1BIChpU0VSKVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJUXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcImlTQ1NJIEV4dGVuc2lvbnMgZm9yIFJETUEgKGlTRVIpIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMi1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzozOmNvbmZpZyBJTkZJTklCQU5EX1JUUlNcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy00LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy02LVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjc6Y29uZmlnIElORklOSUJBTkRfUlRSU19DTElFTlRcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJSVFJTIGNsaWVudCBtb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzoxODpjb25maWcgSU5GSU5JQkFORF9SVFJTX1NFUlZFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJSVFJTIHNlcnZlciBtb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX1NSUFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCBTQ1NJIFJETUEgUHJvdG9jb2xcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfU1JQVFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sIHRhcmdldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzozNS41MTY5MTMyMjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI5OTI5MDM3ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIHdpdGhpbiBzZXZlcmFsIEluZmluaWJhbmQgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgd29ydGggbXkgdGltZSB0byBmdXp6P1wiIFRoZSBhbnN3ZXIgaXMgYSBjbGVhciB5ZXMuIFRoZSBjb3JlIGNoYW5nZSBpcyBzd2l0Y2hpbmcgZnJvbSBgX19nZXRfZnJlZV9wYWdlYCB0byBga21hbGxvY2AuIE5vdywgYF9fZ2V0X2ZyZWVfcGFnZWAgZ2l2ZXMgdXMgYSBwYWdlLWFsaWduZWQgYWRkcmVzcywgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBjZXJ0YWluIERNQSBvcGVyYXRpb25zIGFuZCBoYXJkd2FyZSByZXF1aXJlbWVudHMuIGBrbWFsbG9jYCwgb24gdGhlIG90aGVyIGhhbmQsICpkb2Vzbid0KiBndWFyYW50ZWUgcGFnZSBhbGlnbm1lbnQsIGV2ZW4gZm9yIGBQQUdFX1NJWkVgIGFsbG9jYXRpb25zLCBhbHRob3VnaCBpbiBwcmFjdGljZSBpdCBvZnRlbiBtaWdodCBiZS5cblxuVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBUaGUgaGFyZHdhcmUsIG9yIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYsIG1pZ2h0ICpleHBlY3QqIHBhZ2UtYWxpZ25lZCBtZW1vcnkuIEZvciBleGFtcGxlLCBJJ20gdGhpbmtpbmcgYWJvdXQgYG10aGNhX2FycmF5X3NldGAuIERvZXMgdGhhdCBmdW5jdGlvbiByZXF1aXJlIGl0cyBwb2ludGVyIGFycmF5IHRvIGJlIHBhZ2UtYWxpZ25lZD8gTGV0J3MgZGlnIGRlZXBlcjogYG10aGNhX3JlZ191c2VyX21yYCBhbGxvY2F0ZXMgYHBhZ2VzID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO2AgYW5kIHRoZW4gcGFzc2VzIHRoaXMgbWVtb3J5IHRvIGBtdGhjYV93cml0ZV9tdHRgLiBEb2VzIGBtdGhjYV93cml0ZV9tdHRgIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgcGFnZSBhbGlnbm1lbnQ/IFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIFRoZW4gdGhlcmUgaXMgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYCBhbGxvY2F0ZXMgYHdxZV9zdGFydCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtgIGFuZCBgX19pYl91bWVtX2dldF92YWAgYWxsb2NhdGVzIGBwYWdlX2xpc3QgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7YCBhbG9uZyB3aXRoIGBnZXRfbWFwX3BhZ2VgIGluIGByZG1hdnRgLCBhbGxvY2F0aW5nIGBwYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO2AuIEFsbCBvZiB0aGVzZSBjb3VsZCBiZSB0YXJnZXRzLlxuXG5UaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgYSBwcmltZSBzcG90IGZvciBpbnRyb2R1Y2luZyBidWdzLCBlc3BlY2lhbGx5IGlmIHRoZSBoYXJkd2FyZSBleHBlY3RzIHBhZ2UtYWxpZ25lZCBtZW1vcnkgZm9yIERNQSwgb3IgaWYgdGhlIGNvZGUgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgcGFnZSBhbGlnbm1lbnQuIFdhaXQsIGEgbmV3IHRob3VnaHQsIEkgcmVtZW1iZXIgdGhhdCBga21hbGxvY2AgbWVtb3J5IGlzbid0ICpndWFyYW50ZWVkKiB0byBiZSBETUEtYWJsZSBpbiBhbGwgY2FzZXMsIG9yIGlzIHRoYXQgdHJ1ZT8gQWN0dWFsbHksIGBrbWFsbG9jYCAqaXMqIERNQS1hYmxlLCBidXQgdGhlIHBhZ2UgYWxpZ25tZW50IG1pZ2h0IGNyZWF0ZSBwcm9ibGVtcy4gSGFuZyBvbiwgd2Fzbid0IGBrbWFsbG9jKFBBR0VfU0laRSlgIGd1YXJhbnRlZWQgdG8gYmUgcGh5c2ljYWxseSBjb250aWd1b3VzPyBZZXMsIGl0IGlzLCBqdXN0IGxpa2UgYF9fZ2V0X2ZyZWVfcGFnZWAuXG5cbk9rYXksIGJhY2sgb24gdHJhY2ssIHRoaXMgaXMgd29ydGggZnV6emluZy5cblxuTm93LCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgd2UgdGFsa2luZyBhYm91dD8gYElORklOSUJBTkRgLCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGBJTkZJTklCQU5EX01USENBYCwgYE1MWDVfSU5GSU5JQkFORGAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLiBCdXQsIGBNTFg1X0lORklOSUJBTkRgIGlzIHRoZSBjb25maWcgZm9yIG1seDUgaWI7IGxldCBtZSBqdXN0IGNvbmZpcm0gaXRzIGV4YWN0IG5hbWUgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0ODEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6NDguNTA5ODIyMzI1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTczMzU3NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTFg1X0lORklOSUJBTkRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L0tjb25maWc6Mjpjb25maWcgTUxYNV9JTkZJTklCQU5EXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE3OjUxLjY4MzE5Mzg1NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjYxOTI4OTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgRm9jdXM6IEluZmluaWJhbmQgYW5kIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgSW5maW5pYmFuZCBhbmQgcG9zc2libGUgYXJlYXMgZm9yIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgTUxYNV9JTkZJTklCQU5EYCBkcml2ZXIsIHRoYXQgaXMgdGhlIG9idmlvdXMgY2hvaWNlIHRvIGxvb2sgYXQgZmlyc3QuIEFuZCB5ZXMsIEkgbmVlZCB0byByZW1lbWJlciBgSU5GSU5JQkFORF9NVEhDQWAgYW5kIGBJTkZJTklCQU5EX1JETUFWVGAgYXJlIGFsc28gY3JpdGljYWwgY29tcG9uZW50cy4gTGV0J3Mgbm90IGZvcmdldCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGFsbCBvZiB0aGVzZSBhcmUgaW1wb3J0YW50IGRyaXZlcnMgdG8gY29uc2lkZXIuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHNwZWNpZmljIGZ1bmN0aW9ucy4gVGhlIGdyZXBwZXIgb3V0cHV0IGxlZCBtZSB0byBgX19pYl91bWVtX2dldF92YWAuIFdhaXQsIHRoYXQncyBzdGF0aWMgd2l0aGluIGBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNgLiBCdXQgc3l6a2FsbGVyICpjYW4qIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSdyZSBleHBvc2VkIGluIHRoZSBkZWJ1ZyBpbmZvLCBzbyB0aGF0J3MgYSBwb3RlbnRpYWwgdGFyZ2V0LiBUaGlzIGlzIHZlcnkgaW50ZXJlc3RpbmcgYmVjYXVzZSBzeXprYWxsZXIncyBhYmlsaXR5IHRvIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnMgdGhhdCBhcmUgdXN1YWxseSBvdmVybG9va2VkIG1pZ2h0IHVuY292ZXIgbmV3IGJ1Z3MuXG5cbkFsc28gb24gdGhlIGxpc3QgYXJlIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAsIGBtdGhjYV9hcnJheV9zZXRgLCBhbmQgYG10aGNhX3JlZ191c2VyX21yYC4gVGhlc2UgYXJlIG90aGVyIGltcG9ydGFudCBmdW5jdGlvbnMuXG5cbkkgd2FzIGxvb2tpbmcgYXQgYGdldF9tYXBfcGFnZWAgd2hpY2ggaXMgc3RhdGljIHdpdGhpbiBgZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jYC4gSXQgaXMgY2FsbGVkIGZyb20gYGluaXRfcXBuX3RhYmxlYCBhbmQgYGFsbG9jX3FwbmAuIFNpbmNlIEkgYW0gYWxyZWFkeSBpbiB0aGUgYHJkbWF2dGAgYXJlYSwgYGFsbG9jX3FwbmAgbWlnaHQgYmUgYSBiZXR0ZXIgZm9jdXMuIEkgc2hvdWxkIGNoZWNrIHRoYXQgb25lIGluIGByZG1hdnRgIHNwZWNpZmljYWxseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGZvY3VzaW5nIG9uIHRoZSBtb3N0IHByb21pc2luZyB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzcwNywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzo1Ny45NDUxMjc5MDNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTcwMTY1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWxsb2NfcXBuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYS5oPTE4Mz1zdHJ1Y3QgZXJkbWFfZGV2IHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYS5oLTIwNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWEuaDoyMDg6XFx0dTMyIG5leHRfYWxsb2NfcXBuO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYS5oLTIwOS1cXHR1MzIgbmV4dF9hbGxvY19jcW47XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jPTUzNz1zdGF0aWMgaW50IGVyZG1hX2liX2RldmljZV9hZGQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jLTU3Ny1cXHRkZXYtXFx1MDAzZW5leHRfYWxsb2NfY3FuID0gMTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jOjU3ODpcXHRkZXYtXFx1MDAzZW5leHRfYWxsb2NfcXBuID0gMTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jLTU3OS1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYV92ZXJicy5jPTk5Nj1pbnQgZXJkbWFfY3JlYXRlX3FwKHN0cnVjdCBpYl9xcCAqaWJxcCwgc3RydWN0IGliX3FwX2luaXRfYXR0ciAqYXR0cnMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfdmVyYnMuYy0xMDMzLVxcdFxcdFxcdFxcdCAgICAgIFhBX0xJTUlUKDEsIGRldi1cXHUwMDNlYXR0cnMubWF4X3FwIC0gMSksXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hX3ZlcmJzLmM6MTAzNDpcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2ZGV2LVxcdTAwM2VuZXh0X2FsbG9jX3FwbiwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hX3ZlcmJzLmMtMTAzNS1cXHR9XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM9MjAwPXN0YXRpYyB1OCBnZXRfbGVhc3RfbG9hZF9iYW5raWRfZm9yX3FwKHN0cnVjdCBobnNfcm9jZV9iYW5rICpiYW5rLCB1OCB2YWxpZF9xcF9iYW5rX21hc2spXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjIxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYzoyMjI6c3RhdGljIGludCBhbGxvY19xcG5fd2l0aF9iYW5raWQoc3RydWN0IGhuc19yb2NlX2JhbmsgKmJhbmssIHU4IGJhbmtpZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjIzLVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nICpxcG4pXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM9MjUxPXN0YXRpYyB1OCBzZWxlY3RfcXBfYmFua2lkKHN0cnVjdCBobnNfcm9jZV9kZXYgKmhyX2RldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYy0yNzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jOjI3OTpzdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgaG5zX3JvY2VfZGV2ICpocl9kZXYsIHN0cnVjdCBobnNfcm9jZV9xcCAqaHJfcXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jLTI4MC1cXHRcXHQgICAgIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYy0yOTEtXFx0XFx0YmFua2lkID0gc2VsZWN0X3FwX2JhbmtpZChocl9kZXYsIGluaXRfYXR0cik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jOjI5MjpcXHRcXHRyZXQgPSBhbGxvY19xcG5fd2l0aF9iYW5raWQoXFx1MDAyNnFwX3RhYmxlLVxcdTAwM2ViYW5rW2JhbmtpZF0sIGJhbmtpZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjkzLVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2bnVtKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYz0xMTY1PXN0YXRpYyBpbnQgaG5zX3JvY2VfY3JlYXRlX3FwX2NvbW1vbihzdHJ1Y3QgaG5zX3JvY2VfZGV2ICpocl9kZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMTIxMC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM6MTIxMTpcXHRyZXQgPSBhbGxvY19xcG4oaHJfZGV2LCBocl9xcCwgaW5pdF9hdHRyKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMTIxMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM9NDcxPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbWtfcXBuKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDc3LS8qKlxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo0Nzg6ICogYWxsb2NfcXBuIC0gQWxsb2NhdGUgdGhlIG5leHQgYXZhaWxhYmxlIHFwbiBvciB6ZXJvL29uZSBmb3IgUVAgdHlwZVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00NzktICpcXHQgICAgICAgSUJfUVBUX1NNSS9JQl9RUFRfR1NJXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDg3LSAqL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo0ODg6c3RhdGljIGludCBhbGxvY19xcG4oc3RydWN0IHJ2dF9kZXZfaW5mbyAqcmRpLCBzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00ODktXFx0XFx0ICAgICBlbnVtIGliX3FwX3R5cGUgdHlwZSwgdTggcG9ydF9udW0sIHU4IGV4Y2x1ZGVfcHJlZml4KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTQ5Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6NDk3OlxcdGlmIChyZGktXFx1MDAzZWRyaXZlcl9mLmFsbG9jX3FwbilcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6NDk4OlxcdFxcdHJldHVybiByZGktXFx1MDAzZWRyaXZlcl9mLmFsbG9jX3FwbihyZGksIHFwdCwgdHlwZSwgcG9ydF9udW0pO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00OTktXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM9MTAyNj1pbnQgcnZ0X2NyZWF0ZV9xcChzdHJ1Y3QgaWJfcXAgKmlicXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0xMTYwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzoxMTYxOlxcdFxcdHJldCA9IGFsbG9jX3FwbihyZGksIFxcdTAwMjZyZGktXFx1MDAzZXFwX2Rldi1cXHUwMDNlcXBuX3RhYmxlLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0xMTYyLVxcdFxcdFxcdFxcdGluaXRfYXR0ci1cXHUwMDNlcXBfdHlwZSxcXG4tLVxcbmluY2x1ZGUvcmRtYS9yZG1hX3Z0Lmg9MTk4PXN0cnVjdCBydnRfZHJpdmVyX3Byb3ZpZGVkIHtcXG4tLVxcbmluY2x1ZGUvcmRtYS9yZG1hX3Z0LmgtMzQwLVxcdC8qIExldCB0aGUgZHJpdmVyIHBpY2sgdGhlIG5leHQgcXVldWUgcGFpciBudW1iZXIqL1xcbmluY2x1ZGUvcmRtYS9yZG1hX3Z0Lmg6MzQxOlxcdGludCAoKmFsbG9jX3Fwbikoc3RydWN0IHJ2dF9kZXZfaW5mbyAqcmRpLCBzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxcbmluY2x1ZGUvcmRtYS9yZG1hX3Z0LmgtMzQyLVxcdFxcdFxcdCBlbnVtIGliX3FwX3R5cGUgdHlwZSwgdTMyIHBvcnRfbnVtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6MDAuODYyMTYyNzQ4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MTIyMjMwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBJbnZlc3RpZ2F0aW9uIGludG8gS2V5IEluZmluaWJhbmQgU3ltYm9scyBhbmQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBrZXkgc3ltYm9scyB3aXRoaW4gdGhlIEluZmluaWJhbmQgY29kZSB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgYW5kIHRoZW4gY29ycmVsYXRlIHRob3NlIHdpdGggcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuRmlyc3QsIEkgc2VlIGBhbGxvY19xcG5gIHdpdGhpbiBgZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jYC4gSXQncyBzdGF0aWMsIHNvIEkgY2FuJ3QgZGlyZWN0bHkgdXNlIGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIGBydnRfY3JlYXRlX3FwYCBpcyBleHBvcnRlZC4gVGhhdCBzZWVtcyBsaWtlIGEgbXVjaCBiZXR0ZXIgZm9jdXMgc3ltYm9sIGZvciB0aGUgcmRtYXZ0IHBvcnRpb24sIHNvIEknbGwgcHJpb3JpdGl6ZSB0aGF0LlxuXG5UaGVuLCB0aGVyZSdzIGBtdGhjYV9hcnJheV9zZXRgLiBBIHF1aWNrIGNoZWNrIHNob3dzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgbXRoY2FfaW5pdF9jcWAsIGBtdGhjYV9hbGxvY19xcGAsIGBtdGhjYV9hbGxvY19zcXBgLCBhbmQgYG10aGNhX2FsbG9jX3NycWAuIEdpdmVuIHRoYXQgdXNhZ2UsIGBtdGhjYV9hcnJheV9zZXRgIGxvb2tzIGxpa2UgYSBzb2xpZCBmb2N1cyBzeW1ib2wgZm9yIHRoZSBNZWxsYW5veC1zcGVjaWZpYyBjb2RlLlxuXG5TaW1pbGFybHksIGBtdGhjYV9yZWdfdXNlcl9tcmAgYXBwZWFycyB0byBiZSBhbm90aGVyIGdvb2QgY2FuZGlkYXRlLlxuXG5Nb3Zpbmcgb24sIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAgYWxzbyBzdGFuZHMgb3V0IGFzIGEgcHJvbWlzaW5nIGZvY3VzIHN5bWJvbC5cblxuRmluYWxseSwgcmVnYXJkaW5nIHVzZXIgbWVtb3J5LCBgX19pYl91bWVtX2dldF92YWAgaXMgY2FsbGVkIGJ5IGBpYl91bWVtX2dldF9kZXNjYCwgc28gZWl0aGVyIG9mIHRob3NlIGlzIHN1aXRhYmxlLiBJJ2xsIHByb2JhYmx5IGNoZWNrIGJvdGguXG5cbk5vdywgbGV0J3MgcGl2b3QgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hpY2ggb25lcyBhcmUgaW52b2x2ZWQgaW4gdGhlc2UgY29kZSBwYXRocy4gSSd2ZSBub3RlZCBgSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX1VTRVJfTUVNYCwgYElORklOSUJBTkRfTVRIQ0FgLCBgTUxYNV9JTkZJTklCQU5EYCwgYW5kIGBJTkZJTklCQU5EX1JETUFWVGAuXG5cbldhaXQsIGBJTkZJTklCQU5EX1VTRVJfTUVNYCBpcyBhIGJvb2xlYW4uIEkgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IHRoYXQuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncz8gSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQuXG5cblNwZWNpZmljYWxseSwgSSdtIG5vdyBjdXJpb3VzIHdoZXRoZXIgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AgaGFzIGFueSBiZWFyaW5nIG9uIHRoZSBvcGVyYXRpb24gb2YgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYC4gVGhhdCBzZWVtcyBsaWtlIGFuIG9idmlvdXMgcGxhY2UgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjIwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjA3LjY3NDM5MDQ2MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA0MDg4NTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xMzg0PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1seDVfaWJfc3JxICpyZXNfdG9fc3JxKHN0cnVjdCBtbHg1X2NvcmVfcnNjX2NvbW1vbiAqcmVzKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTM5MS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxMzkyOnN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jPTE2MTg9c3RhdGljIHZvaWQgbWx4NV9pYl9wZmF1bHQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X3BhZ2VmYXVsdCAqcGZhdWx0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTYyMy1cXHRjYXNlIE1MWDVfUEZBVUxUX1NVQlRZUEVfV1FFOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jOjE2MjQ6XFx0XFx0bWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoZGV2LCBwZmF1bHQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjExLjcxNTI4NDQzN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODAyODAyNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgb2RwLmNgKipcblxuQWxyaWdodCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgd2hldGhlciBgb2RwLmNgIGlzIGJlaW5nIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHkuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiBoZXJlLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUncyBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBsaWtlIGAjaWZkZWZgLCBgI2lmYCwgb3Igc2ltaWxhciBndWFyZGluZyBpdHMgY29tcGlsYXRpb24gcGF0aC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJlc2VuY2UgKG9yIGFic2VuY2UpIG9mIHRoaXMgc3BlY2lmaWMgY29kZSBpcyBkZXBlbmRlbnQgb24gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3IgZW52aXJvbm1lbnQuIEl0IGRpY3RhdGVzIHRoZSBpbmNsdXNpb24gb3IgZXhjbHVzaW9uIG9mIHRoaXMgZmlsZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIEFyZSB0aGVyZSBmbGFncz8gQXJlIHRoZXJlIGRlZmluZXM/IEkgbmVlZCB0byBrbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQzOSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjE0LjUxODA5MDU3NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIwNDkzMTI3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZHBcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvTWFrZWZpbGU9MjE9aWJfY29yZS0kKENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNKSArPSB1bWVtLm8gdW1lbV9kbWFidWYub1xcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL01ha2VmaWxlOjIyOmliX2NvcmUtJChDT05GSUdfSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HKSArPSB1bWVtX29kcC5vXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvTWFrZWZpbGUtMjMtaWJfY29yZS0kKENPTkZJR19JTkZJTklCQU5EX1VTRVJfQUNDRVNTX0NPUkUpICs9IGliX2NvcmVfdXZlcmJzLm9cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L01ha2VmaWxlPTQ9bWx4NV9pYi15IDo9IGFoLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvTWFrZWZpbGUtMjctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvTWFrZWZpbGU6Mjg6bWx4NV9pYi0kKENPTkZJR19JTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcpICs9IG9kcC5vXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvTWFrZWZpbGUtMjktbWx4NV9pYi0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICs9IGliX3JlcC5vXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlPTQ9cmRtYV9yeGUteSA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlLTI4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGU6Mjk6cmRtYV9yeGUtJChDT05GSUdfSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HKSArPSByeGVfb2RwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6MTcuNzIzMDM0MTYxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTczMjg2NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHX0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AgaXMgZGVmaW5pdGVseSByZXF1aXJlZCBpbiB0aGlzIGNvbnRleHQuIE5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgc2V0IG9mIGNvbmZpZ3MgYXJlOiBgSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX1VTRVJfTUVNYCwgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AsIGBNTFg1X0lORklOSUJBTkRgLCBgSU5GSU5JQkFORF9NVEhDQWAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLlxuXG5NeSBuZXh0IHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGRlcGVuZGVuY3kgb2YgYElORklOSUJBTkRfVVNFUl9NRU1gLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgaW1wbGljaXRseSBlbmFibGVkIGR1ZSB0byBvdGhlciBjb25maWd1cmF0aW9ucywgb3IgaWYgaXQgcmVxdWlyZXMgZXhwbGljaXQgdXNlciBpbnRlcnZlbnRpb24uIEl0J3MgYSBib29sZWFuIGNvbmZpZ3VyYXRpb24sIHNvIGxldCdzIHF1aWNrbHkgZXhhbWluZSBpdHMgZGVmaW5pdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gdG8gZmlndXJlIHRoaXMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk4MiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxODoyMS40ODAzNjcwNjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MjkyOTAxODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9NDA9Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NfQ09SRVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDQ6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00NS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjI0LjQwOTY2NjAyN1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI1MDgzNTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENvbmZpZydzIEFjdGl2YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgYSBib29sZWFuLCBhbmQgY3J1Y2lhbGx5LCBpdCBkb2Vzbid0IGhhdmUgYSBkaXJlY3QgcHJvbXB0LiBUaGF0IG1lYW5zIHRoZSB1c2VyIGNhbid0IHR1cm4gaXQgb24gb3Igb2ZmIGRpcmVjdGx5LiBJdHMgc3RhdGUgaXMgZGV0ZXJtaW5lZCBieSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zLiBUaGlzIG1lYW5zIGl0cyBiZWhhdmlvciBpcyBjb25kaXRpb25hbCBhbmQgZGVwZW5kZW50IG9uIHRoZSBzZXR0aW5ncyBvZiByZWxhdGVkIGl0ZW1zLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgcHJlY2lzZWx5IHdoYXQgb3RoZXIgY29uZmlncyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBvciBhY3RpdmF0aW5nIHRoaXMgcGFydGljdWxhciBvbmUuIEkgaGF2ZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODQxMywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjI4LjIzNDc1MzAzM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5MjEzOTQxNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IElORklOSUJBTkRfVVNFUl9NRU1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjMxLjAyNjkwMzQyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjkyNDA2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFVudXNlZCBJbmZpbmliYW5kIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuSG1tLCBJJ20gZ2V0dGluZyBhIG5hZ2dpbmcgZmVlbGluZy4gQ291bGQgaXQgYmUgdGhhdCBgc2VsZWN0IElORklOSUJBTkRfVVNFUl9NRU1gIGlzIGFjdHVhbGx5ICpub3QqIGJlaW5nIHVzZWQgYW55d2hlcmU/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBiZWZvcmUgSSBzcGVuZCBhbnkgbW9yZSB0aW1lIG9uIGl0LiBBIHF1aWNrIGNoZWNrIHNlZW1zIHdhcnJhbnRlZC4gQWxyaWdodCwgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGF0IGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgSW5maW5pYmFuZCwgd291bGQgZGVmaW5pdGVseSBiZSB3aXRoaW4gdGhlIEluZmluaWJhbmQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhlbXNlbHZlcy4gVGhlcmVmb3JlLCBJJ2xsIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnYCBmaWxlIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIGNvcnJlc3BvbmRpbmcgYGNvbmZpZ2Agc3ltYm9sIGFuZCB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGV2ZW4gYSBkaXJlY3QgY2FsbCB0byB0aGF0IGBzZWxlY3RgIHN0YXRlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg1OTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxODozNC4yNTYxNDgyMTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMTY2MDg2NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSU5GSU5JQkFORF9VU0VSX01FTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00MD1jb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00My1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTUxPWNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG9uLWRlbWFuZCBwYWdpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MzpcXHRkZXBlbmRzIG9uIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01NC1cXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9NYWtlZmlsZT0yMD1pYl9jb3JlLSQoQ09ORklHX0NHUk9VUF9SRE1BKSArPSBjZ3JvdXAub1xcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL01ha2VmaWxlOjIxOmliX2NvcmUtJChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgKz0gdW1lbS5vIHVtZW1fZG1hYnVmLm9cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9NYWtlZmlsZS0yMi1pYl9jb3JlLSQoQ09ORklHX0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lORykgKz0gdW1lbV9vZHAub1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz04NTc9c3RydWN0IGliX21yICptbHg1X2liX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtODY1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6ODY2OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgfHxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTg2Ny1cXHQgICAgKChhY2Nlc3NfZmxhZ3MgXFx1MDAyNiBJQl9BQ0NFU1NfT05fREVNQU5EKSBcXHUwMDI2XFx1MDAyNiBkbWFoKSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM9MTAzOD1zdHJ1Y3QgaWJfbXIgKm1seDVfaWJfcmVnX3VzZXJfbXJfZG1hYnVmKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwNDctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxMDQ4OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgfHxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwNDktXFx0ICAgICFJU19FTkFCTEVEKENPTkZJR19JTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcpKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz0xMTY2PXN0cnVjdCBpYl9tciAqbWx4NV9pYl9yZXJlZ191c2VyX21yKHN0cnVjdCBpYl9tciAqaWJfbXIsIGludCBmbGFncywgdTY0IHN0YXJ0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMTc0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTE3NTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0lORklOSUJBTkRfVVNFUl9NRU0pIHx8IG1yLVxcdTAwM2VkYXRhX2RpcmVjdCB8fFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTE3Ni1cXHQgICAgKG1yLVxcdTAwM2VpYm1yLmZybXIua2V5Lmtlcm5lbF92ZW5kb3Jfa2V5IFxcdTAwMjZcXG4tLVxcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg9Nzk9c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZTtcXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oLTgwLVxcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg6ODE6I2lmZGVmIENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC04Mi1cXG4tLVxcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg9MTgxPWludCBpYl91bWVtX2NoZWNrX3JlcmVnKHN0cnVjdCBpYl91bWVtICp1bWVtLCBpbnQgZmxhZ3MsIGludCBuZXdfYWNjZXNzX2ZsYWdzKTtcXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oLTE4Mi1cXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oOjE4MzojZWxzZSAvKiBDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSAqL1xcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmgtMTg0LVxcbi0tXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaD0yOTU9c3RhdGljIGlubGluZSBpbnQgaWJfdW1lbV9jaGVja19yZXJlZyhzdHJ1Y3QgaWJfdW1lbSAqdW1lbSwgaW50IGZsYWdzLFxcbi0tXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC0zMDAtXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaDozMDE6I2VuZGlmIC8qIENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNICovXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC0zMDItI2VuZGlmIC8qIElCX1VNRU1fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxODozNy4zNzI3NjU0MloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk3NjQxNTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEluZmluaWJhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJJ20gc2VlaW5nIGBJTkZJTklCQU5EX1VTRVJfTUVNYCBnZXQgc2VsZWN0ZWQsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0J3MgYmVpbmcgZHJpdmVuIGJ5IGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYC4gVGhhdCdzIGEgY2xhc3NpYyBkZXBlbmRlbmN5IGlzc3VlIOKAkyBhbmQgaXTigJlzIGFsd2F5cyBjcnVjaWFsIHRvIHZlcmlmeSB0aG9zZSByZWxhdGlvbnNoaXBzLiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGlzIGluZGVlZCB0aGUgZGVjaWRpbmcgZmFjdG9yIGhlcmUsIHRoZSBwYXJlbnQgb3B0aW9uIHRoYXQncyB0cmlnZ2VyaW5nIHRoaXMgc2VsZWN0aW9uLiBMZXQncyBkaXZlIGluIGFuZCBjb25maXJtIHRoYXQgZGVwZW5kZW5jeSBjaGFpbi4gTmVlZCB0byBnbyBiYWNrIGFuZCBleGFtaW5lIGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTIxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6NDAuNzcwNDEzMDI4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUxODQ5NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE4PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUFEXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyODpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHVzZXJzcGFjZSBhY2Nlc3MgKHZlcmJzIGFuZCBDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0MDpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxODo0My41MjIyNzM3ODlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxODEyODA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEluZmluaWJhbmQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgSW5maW5pYmFuZCBkcml2ZXIgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBpdCdzIGRlZmluZWQuIE15IGd1dCB0ZWxscyBtZSB0aGF0IHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgbGFpZCBvdXQgaW4gdGhlIGBLY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcmllbmNlLCBsaW5lIDI4IGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSdsbCBsaWtlbHkgZmluZCB0aGUgdG9wLWxldmVsIGRlZmluaXRpb25zIG9yIHBlcmhhcHMgYSBzZWN0aW9uIHRoYXQncyByZWxldmFudCB0byB3aGF0IEknbSBsb29raW5nIGZvci4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFzIHRvIHdoaWNoIG9wdGlvbnMgYXJlIGNyaXRpY2FsIGZvciBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhlIEluZmluaWJhbmQgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjkzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6NDkuNzQwNDA3MDgyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMDpcXHRcXHRkZXBlbmRzIG9uIElORklOSUJBTkRcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgVXNlcnNwYWNlIEluZmluaUJhbmQgTWFuYWdlbWVudCBEYXRhZ3JhbSAoTUFEKSBzdXBwb3J0LiAgVGhpc1xcbiAgMjM6XFx0XFx0ICBpcyB0aGUga2VybmVsIHNpZGUgb2YgdGhlIHVzZXJzcGFjZSBNQUQgc3VwcG9ydCwgd2hpY2ggYWxsb3dzXFxuICAyNDpcXHRcXHQgIHVzZXJzcGFjZSBwcm9jZXNzZXMgdG8gc2VuZCBhbmQgcmVjZWl2ZSBNQURzLiBZb3Ugd2lsbCBhbHNvXFxuICAyNTpcXHRcXHQgIG5lZWQgbGliaWJ1bWFkIGZyb20gcmRtYS1jb3JlXFxuICAyNjpcXHRcXHQgIFxcdTAwM2NodHRwczovL2dpdGh1Yi5jb20vbGludXgtcmRtYS9yZG1hLWNvcmVcXHUwMDNlLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVxcXCJcXG4gIDMwOlxcdFxcdGRlcGVuZHMgb24gTU1VXFxuICAzMTpcXHRcXHRoZWxwXFxuICAzMjpcXHRcXHQgIFVzZXJzcGFjZSBJbmZpbmlCYW5kIGFjY2VzcyBzdXBwb3J0LiAgVGhpcyBlbmFibGVzIHRoZVxcbiAgMzM6XFx0XFx0ICBrZXJuZWwgc2lkZSBvZiB1c2Vyc3BhY2UgdmVyYnMgYW5kIHRoZSB1c2Vyc3BhY2VcXG4gIDM0OlxcdFxcdCAgY29tbXVuaWNhdGlvbiBtYW5hZ2VyIChDTSkuICBUaGlzIGFsbG93cyB1c2Vyc3BhY2UgcHJvY2Vzc2VzXFxuICAzNTpcXHRcXHQgIHRvIHNldCB1cCBjb25uZWN0aW9ucyBhbmQgZGlyZWN0bHkgYWNjZXNzIEluZmluaUJhbmRcXG4gIDM2OlxcdFxcdCAgaGFyZHdhcmUgZm9yIGZhc3QtcGF0aCBvcGVyYXRpb25zLiAgWW91IHdpbGwgYWxzbyBuZWVkXFxuICAzNzpcXHRcXHQgIGxpYmlidmVyYnMsIGxpYmliY20gYW5kIGEgaGFyZHdhcmUgZHJpdmVyIGxpYnJhcnkgZnJvbVxcbiAgMzg6XFx0XFx0ICByZG1hLWNvcmUgXFx1MDAzY2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZVxcdTAwM2UuXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTX0NPUkVcXG4gIDQxOlxcdFxcdGJvb2xcXG4gIDQyOlxcdFxcdGRlZmF1bHQgeSBpZiBJTkZJTklCQU5EX1VTRVJfQUNDRVNTICE9IG5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cXG4gIDQ1OlxcdFxcdGJvb2xcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXFxuICA0NzpcXHRcXHRkZXBlbmRzIG9uIE1NVVxcbiAgNDg6XFx0XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuICA0OTpcXHRcXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6NDkuNzQwNTQ5MzYyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNzM0ODY0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIEluZmluaWJhbmQgTWVtb3J5IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgYElORklOSUJBTkRfVVNFUl9NRU1gIGRlZmF1bHRzIHRvIGJlaW5nIGVuYWJsZWQgKFwieVwiKSBpZiBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AgaXNuJ3QgZXhwbGljaXRseSBkaXNhYmxlZCAoXCJuXCIpIGFuZCB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdCAoTU1VKSBpcyBwcmVzZW50LiBUaGF0J3MgZ29vZCB0byBrbm93LiBJdCBtZWFucyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBlbmFibGUgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGluIG91ciBjdXJyZW50IHNldHVwLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBzZXQgYXBwcm9wcmlhdGVseS5cblxuQW5kIHdoaWxlIEknbSBoZXJlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AuIEkgcmVjYWxsIGl0J3MgYSBib29sZWFuIGNvbmZpZyBvcHRpb24sIHNvIEkgc2hvdWxkIHNlZSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGF0LiBMZXQncyBzZWUgd2hhdCB0aGF0IGxvb2tzIGxpa2UuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NDIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjU2LjgxNDAzOTMxMVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MDpcXHRcXG4gIDUxOlxcdGNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcXG4gIDUyOlxcdFxcdGJvb2wgXFxcIkluZmluaUJhbmQgb24tZGVtYW5kIHBhZ2luZyBzdXBwb3J0XFxcIlxcbiAgNTM6XFx0XFx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX1VTRVJfTUVNXFxuICA1NDpcXHRcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuICA1NTpcXHRcXHRzZWxlY3QgSU5URVJWQUxfVFJFRVxcbiAgNTY6XFx0XFx0c2VsZWN0IEhNTV9NSVJST1JcXG4gIDU3OlxcdFxcdGRlZmF1bHQgeVxcbiAgNTg6XFx0XFx0aGVscFxcbiAgNTk6XFx0XFx0ICBPbiBkZW1hbmQgcGFnaW5nIHN1cHBvcnQgZm9yIHRoZSBJbmZpbmlCYW5kIHN1YnN5c3RlbS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6NTYuODE0MTIzOTUxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NTIxMzExNTczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIEVuYWJsaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyB0aGUgc3lzdGVtIGlzIGRlZmF1bHRpbmcgdG8gJ3knLCB3aGljaCBpcyBnb29kIHRvIGtub3cg4oCTIGl0IGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIE5vdywgdG8gZW5hYmxlIHRoZSBJbmZpbmlCYW5kIGZlYXR1cmVzIEkgbmVlZCwgSSBoYXZlIHRvIGVuc3VyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQ6IGBJTkZJTklCQU5EYCwgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgLCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCwgYE1MWDVfSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX01USENBYCwgYW5kIGBJTkZJTklCQU5EX1JETUFWVGAuIFRoYXQgbGlzdCBpcyBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGdldHRpbmcgdGhpbmdzIG1vdmluZyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBcblxuU2luY2UgSSdtIGVuYWJsaW5nIGBNTFg1X0lORklOSUJBTkRgLCBJIHNob3VsZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbmNpZXMgaW52b2x2ZWQgZm9yIHRoYXQgY29uZmlndXJhdGlvbiwgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgaXNzdWVzIGxhdGVyIG9uLiBMZXQncyBzZWUgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGhhbmRsZWQgZm9yIHRoYXQgcGFydGljdWxhciBiaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzY0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6MTIuMDI3MjQ0MzQ5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzAyMDI0OTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTFg1X0lORklOSUJBTkRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L0tjb25maWc6Mjpjb25maWcgTUxYNV9JTkZJTklCQU5EXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjIzOjE0LjMyOTI3OTc3NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA3NDcyOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgcmVhZGluZyB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L0tjb25maWdgIGZpbGUsIHByZXNlbnRlZCBhcyBteSBvd24gaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNTFg1IEtjb25maWcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTUxYNSBJbmZpbmliYW5kIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgZ2F0ZWtlZXBlciwgcmVhbGx5LCBkZWZpbmluZyB3aGF0IGNhbiBiZSB0d2Vha2VkIGF0IGJ1aWxkIHRpbWUuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBmZWF0dXJlcyBmaXJzdCwgdGhlIGNydWNpYWwgYnVpbGRpbmcgYmxvY2tzLiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgaW5jbHVzaW9ucyBiYXNlZCBvbiBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgb3Igb3RoZXIgZHJpdmVyIGNvbXBvbmVudHM/XG5cbknigJltIGltbWVkaWF0ZWx5IHNjYW5uaW5nIGZvciB0aGUgYENPTkZJR19NTFg1X0NPUkVgIG9wdGlvbiDigJMgdGhhdCdzIGdvdHRhIGJlIHRoZSByb290LCB0aGUgZnVuZGFtZW50YWwgZW5hYmxlIGZvciB0aGUgZHJpdmVyIGl0c2VsZi4gV2hhdCBlbHNlIGhpbmdlcyBvbiB0aGF0PyBPa2F5LCBnb29kLCBpdOKAmXMgbG9naWNhbGx5IG9yZ2FuaXplZCwgd2l0aCBkZXBlbmRlbmNpZXMgY2xlYXJseSBkZWZpbmVkLiBJJ20gY2hlY2tpbmcgZm9yIGFueSBvYnZpb3VzIHBlcmZvcm1hbmNlIGZlYXR1cmVzLiBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgZW5hYmxpbmcgc3BlY2lmaWMgaGFyZHdhcmUgb2ZmbG9hZHMsIG9yIGZlYXR1cmVzIGxpa2UgcGFja2V0IHBhY2luZz8gQXJlIHRoZXJlIGFueSBleHBlcmltZW50YWwgb3IgZGVidWcgb3B0aW9ucz8gVGhvc2UgYXJlIGltcG9ydGFudCB0byBzcG90LCBzbyBJIGtub3cgd2hpY2ggZmxhZ3MgdG8gbG9vayBvdXQgZm9yIHdoZW4gSSdtIGRlYnVnZ2luZyBhIG5ldyBpbnN0YWxsYXRpb24uXG5cbkknbSBhbHNvIGxvb2tpbmcgZm9yIGRldGFpbHMgb24gd2hhdCBnZXRzIGJ1aWx0IGludG8gdGhlIGtlcm5lbCBieSBkZWZhdWx0LCB2ZXJzdXMgd2hhdCdzIG1vZHVsZS1lbmFibGVkLiBJcyB0aGVyZSBhIGNsZWFyIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgZXNzZW50aWFsIGJhc2UgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIG1vcmUgc3BlY2lhbGl6ZWQgb3IgcG90ZW50aWFsbHkgb3B0aW9uYWwgZmVhdHVyZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhIGhhbmRsZSBvbiBpbWFnZSBzaXplIGFuZCBib290LXVwIHRpbWUuXG5cbkFuZCBmaW5hbGx5LCBJJ20gY2hlY2tpbmcgdGhlIGhlbHAgdGV4dCBmb3IgZWFjaCBvcHRpb24uIFRoZSBkZXNjcmlwdGlvbnMgbmVlZCB0byBiZSBjbGVhciBhbmQgY29uY2lzZS4gSWYgYSB1c2VyIGlzIGNvbmZ1c2VkIGJ5IHRoZSB3b3JkaW5nLCB0aGVuIG15IHRlYW0gd2lsbCBiZSB0aGUgb25lcyB0aGF0IGhhdmUgdG8gZXhwbGFpbiBpdC4gQXJlIHRoZXkgdXNpbmcgdGhlIGNvcnJlY3QgdGVybWlub2xvZ3k/IERvZXMgdGhlIGhlbHAgc2VjdGlvbiBwcm92aWRlIHN1ZmZpY2llbnQgY29udGV4dCBmb3IgdW5kZXJzdGFuZGluZyB3aGF0IGVuYWJsaW5nIG9yIGRpc2FibGluZyBhIHBhcnRpY3VsYXIgb3B0aW9uIGFjdHVhbGx5ICpkb2VzKj8gT2theSwgdGhpcyBpcyBhIHByZXR0eSBzb2xpZCBzdGFydC4gTm93IGxldCdzIGRpdmUgaW50byBzb21lIG9mIHRoZSBtb3JlIHNwZWNpZmljIHN1Yi1zZWN0aW9ucyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBpbiB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3NzUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzoxOS4wMzY3NTU2ODRaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1MWDVfSU5GSU5JQkFORFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgTUxYNV9DT1JFXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGxvdy1sZXZlbCBJbmZpbmlCYW5kIHN1cHBvcnQgZm9yXFxuICAgNzpcXHRcXHQgIE1lbGxhbm94IENvbm5lY3QtSUIgUENJIEV4cHJlc3MgaG9zdCBjaGFubmVsIGFkYXB0ZXJzIChIQ0FzKS5cXG4gICA4OlxcdFxcdCAgVGhpcyBpcyByZXF1aXJlZCB0byB1c2UgSW5maW5pQmFuZCBwcm90b2NvbHMgc3VjaCBhc1xcbiAgIDk6XFx0XFx0ICBJUC1vdmVyLUlCIG9yIFNSUCB3aXRoIHRoZXNlIGRldmljZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjIzOjE5LjAzNjgzMjg2NFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDM5NjU4MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgVmVyaWZpY2F0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRlcGVuZGVuY3kgb24gYE1MWDVfQ09SRWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgcHJhY3RpY2FsbHkgYSBnaXZlbiB3aGVuIHdvcmtpbmcgd2l0aCBNZWxsYW5veCBoYXJkd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoZXJlZm9yZSwgdG8gZW5zdXJlIHRoYXQgYE1MWDVfQ09SRWAgaXMgZGVmaW5pdGVseSBlbmFibGVkIGFzIHdlbGwuIE5vIHBvaW50IGdvaW5nIGRvd24gdGhpcyBwYXRoIGlmIHRoZSBmb3VuZGF0aW9uYWwgY29tcG9uZW50cyBhcmVuJ3QgcHJlc2VudC4gSXQncyBhIGZ1bmRhbWVudGFsIHByZXJlcXVpc2l0ZS5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgaW1wb3J0YW50IGJhc2UgY29uZmlndXJhdGlvbnMsIHRoaXMgaXMgYSBnb29kIHNwb3QgdG8gcmUtY2hlY2sgYElORklOSUJBTkRfTVRIQ0FgLiBCZXN0IHRvIHZlcmlmeSBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEluZmluaUJhbmQgc3RhY2sgYmVmb3JlIHdlIGNvbnRpbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQzNCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6MjUuNDc2NDk2MTM1WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgSU5GSU5JQkFORF9NVEhDQVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1lbGxhbm94IEhDQSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBpcyBhIGxvdy1sZXZlbCBkcml2ZXIgZm9yIE1lbGxhbm94IEluZmluaUhvc3QgaG9zdFxcbiAgIDc6XFx0XFx0ICBjaGFubmVsIGFkYXB0ZXJzIChIQ0FzKSwgaW5jbHVkaW5nIHRoZSBNVDIzMTA4IFBDSS1YIEhDQVxcbiAgIDg6XFx0XFx0ICAoXFxcIlRhdm9yXFxcIikgYW5kIHRoZSBNVDI1MjA4IFBDSSBFeHByZXNzIEhDQSAoXFxcIkFyYmVsXFxcIikuXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBJTkZJTklCQU5EX01USENBX0RFQlVHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjIzOjI1LjQ3NjU3MjI3NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQxNzM1NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFJETUEgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgc28gdGhlIGFyY2hpdGVjdHVyZSBJJ20gd29ya2luZyB3aXRoIGlzIGNsZWFybHkgZ29pbmcgdG8gaGluZ2Ugb24gdGhlIGBQQ0lgIHNldHVwLiBUaGF0J3MgdGhlIGZpcnN0IGNyaXRpY2FsIGZhY3RvciBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gSG93IHRoZSBzeXN0ZW0gbGV2ZXJhZ2VzIHRoZSBgUENJYCBidXMgaXMgZ29pbmcgdG8gaGVhdmlseSBpbmZsdWVuY2UgdGhlIFJETUEgcGVyZm9ybWFuY2UgYW5kIHNjYWxhYmlsaXR5IEkgY2FuIHJlYWxpc3RpY2FsbHkgZXhwZWN0LiBJdCdzIHRoZSBib3R0bGVuZWNrIG9yIHRoZSBoaWdod2F5LCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gaW50byB0aGUgUkRNQSBjYXBhYmlsaXRpZXMuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgbGV2ZXJhZ2UgYElORklOSUJBTkRfUkRNQVZUYD8gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIElmIHdlJ3JlIGx1Y2t5IGVub3VnaCB0byBoYXZlIHRoYXQgYXZhaWxhYmxlLCB0aGUgcG90ZW50aWFsIGZvciB6ZXJvLWNvcHksIGVmZmljaWVudCBkYXRhIHRyYW5zZmVycyBpcyBzaWduaWZpY2FudC4gYElORklOSUJBTkRfUkRNQVZUYCBpcyBsaWtlbHkgdG8gYmUgYSBnYW1lLWNoYW5nZXIgaWYgaXQgaXMgc3VwcG9ydGVkLiBXaGV0aGVyIHRoaXMgaXMgYW4gYXJjaGl0ZWN0dXJhbCBpbXBlcmF0aXZlLCBvciBhIG5pY2UtdG8taGF2ZSwgd2lsbCBkZXBlbmQgaGVhdmlseSBvbiB0aGUgcHJvYmxlbSBhdCBoYW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg0NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6MjkuMDE4MzEwNjA4WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIElORklOSUJBTkRfUkRNQVZUXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUkRNQSB2ZXJicyB0cmFuc3BvcnQgbGlicmFyeVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9WSVJUX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHRUaGlzIGlzIGEgY29tbW9uIHNvZnR3YXJlIHZlcmJzIHByb3ZpZGVyIGZvciBSRE1BIG5ldHdvcmtzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzoyOS4wMTgzOTY0MjhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3MjQ2ODQwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBJbmZpbmliYW5kIFBhdGNoKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgSW5maW5pYmFuZCBjb2RlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIEknbSBjaGVja2luZyBhcmUgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBoaW5nZXMgb24gYElORklOSUJBTkRfVklSVF9ETUFgLCBgWDg2XzY0YCwgYW5kIGBQQ0lgLiBBIHF1aWNrIGxvb2sgY29uZmlybXMgdGhhdCBgSU5GSU5JQkFORF9WSVJUX0RNQWAgZGVmYXVsdHMgdG8gZW5hYmxlZCBvbiA2NC1iaXQgc3lzdGVtcyBiZWNhdXNlIGl0J3MgYSBkZWZfYm9vbCAhSElHSE1FTS4gR29vZCwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy5cblxuTmV4dCwgSSBuZWVkIHRvIGtub3cgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBJIG5lZWQ6IGBJTkZJTklCQU5EYCwgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgLCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCwgYE1MWDVfQ09SRWAsIGBNTFg1X0lORklOSUJBTkRgLCBgSU5GSU5JQkFORF9NVEhDQWAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLiBHb3QgaXQuIE5vdywgd2hpY2ggc3ltYm9scyBhcmUgd2UgZm9jdXNpbmcgb24/XG5cbkxldCdzIHNlZS4gTXkgY3VycmVudCBzeW1ib2xzIGFyZTpcbiogICBgX19pYl91bWVtX2dldF92YWAuIFdhaXQsIGl0J3Mgc3RhdGljPyBDYW4gc3l6a2FsbGVyIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnM/IFllcywgYnV0IG1heWJlIGBpYl91bWVtX2dldF9kZXNjYCBpcyBiZXR0ZXI/IE5vLCBgX19pYl91bWVtX2dldF92YWAgaXMgdGhlIG9uZSB0aGF0J3MgbW9kaWZpZWQuIE9LLCBJJ2xsIHN0aWNrIHdpdGggYF9faWJfdW1lbV9nZXRfdmFgLlxuKiAgIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmBcbiogICBgbXRoY2FfYXJyYXlfc2V0YFxuKiAgIGBtdGhjYV9yZWdfdXNlcl9tcmBcbiogICBgZ2V0X21hcF9wYWdlYCAodGhpcyBvbmUncyBzdGF0aWMgaW4gYHJkbWF2dC9xcC5jYC4gU2hvdWxkIEkgdXNlIGBydnRfY3JlYXRlX3FwYCBhcyB3ZWxsLCBvciBqdXN0IGBnZXRfbWFwX3BhZ2VgPykuXG5cbldhaXQsIGBnZXRfbWFwX3BhZ2VgIGlzIHN0YXRpYy4gSSB0aGluayBJJ2xsIGdvIHdpdGggYHJ2dF9jcmVhdGVfcXBgIGJlY2F1c2UgaXQncyB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24gdGhhdCBjYWxscyBgYWxsb2NfcXBuYCB3aGljaCBjYWxscyBgZ2V0X21hcF9wYWdlYC4gV2FpdCwgYWxzbyBgZ2V0X21hcF9wYWdlYCBpcyBjYWxsZWQgZnJvbSBgaW5pdF9xcG5fdGFibGVgLiBJIHRoaW5rIEknbGwganVzdCB1c2UgYGdldF9tYXBfcGFnZWBcblxuQWxyaWdodCwgbGV0IG1lIHJldmlzaXQgdGhpcyBwYXRjaC4gSSBzZWUgdGhlIGtleSBjaGFuZ2U6XG5cbmBgYGNcbi1cdHBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpO1xuK1x0cGFnZV9saXN0ID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xuLi4uXG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIHBhZ2VfbGlzdCk7XG4rXHRrZnJlZShwYWdlX2xpc3QpO1xuYGBgXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIHNoaWZ0LiBJdCdzIG5vdyB1c2luZyB0aGUgc2xhYiBhbGxvY2F0b3IgaW5zdGVhZCBvZiB0aGUgcGFnZSBhbGxvY2F0b3IuIFRoYXQgY291bGQgaW1wYWN0IG1lbW9yeSBsYXlvdXQsIGFsaWdubWVudCwgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGlzc3VlcyBpZiB0aGUgY29kZSBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCBwYWdlIGFsaWdubWVudC4gQSBzdWJ0bGUgY2hhbmdlLCBidXQgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gZmxhZy5cblxuTm93LCBhbnkgb3RoZXIgY29uZmlnIHJlcXVpcmVtZW50cz8gTGV0J3MgY2hlY2s6XG4qICAgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGlzIGRlZmluaXRlbHkgbmVlZGVkIGZvciBgSU5GSU5JQkFORF9VU0VSX01FTWAuXG4qICAgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AgZm9yIGBvZHAuY2AuXG4qICAgYE1MWDVfQ09SRWAgZm9yIGBNTFg1X0lORklOSUJBTkRgLlxuKiAgIGBNTFg1X0lORklOSUJBTkRgIGZvciBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLlxuKiAgIGBJTkZJTklCQU5EX01USENBYCBmb3IgYm90aCBgbXRoY2FfYXJyYXlfc2V0YCBhbmQgYG10aGNhX3JlZ191c2VyX21yYC5cbiogICBBbmQgZmluYWxseSwgYElORklOSUJBTkRfUkRNQVZUYCBmb3IgYGdldF9tYXBfcGFnZWAuXG5cblNvLCB0aGUgZm9jdXMgc3ltYm9scyBhcmU6XG4qICAgYF9faWJfdW1lbV9nZXRfdmFgXG4qICAgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYFxuKiAgIGBtdGhjYV9hcnJheV9zZXRgXG4qICAgYG10aGNhX3JlZ191c2VyX21yYFxuKiAgIGBnZXRfbWFwX3BhZ2VgXG5cbldhaXQsIGBnZXRfbWFwX3BhZ2VgIGlzIHByZXR0eSBnZW5lcmljLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBhIHVuaXF1ZSBmdW5jdGlvbiBuYW1lIHRvIGF2b2lkIGNvbmZsaWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyNDYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzozOS43NDMwODUxMDFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzQyMTYyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X21hcF9wYWdlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz0yNTg9c3RhdGljIGlubGluZSBib29sIHdzc19leGNlZWRzX3RocmVzaG9sZChzdHJ1Y3QgcnZ0X3dzcyAqd3NzKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTI2Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6MjYzOnN0YXRpYyB2b2lkIGdldF9tYXBfcGFnZShzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0yNjQtXFx0XFx0XFx0IHN0cnVjdCBydnRfcXBuX21hcCAqbWFwKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTI4NT1zdGF0aWMgaW50IGluaXRfcXBuX3RhYmxlKHN0cnVjdCBydnRfZGV2X2luZm8gKnJkaSwgc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0zMTgtXFx0XFx0aWYgKCFtYXAtXFx1MDAzZXBhZ2UpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6MzE5OlxcdFxcdFxcdGdldF9tYXBfcGFnZShxcHQsIG1hcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTMyMC1cXHRcXHRcXHRpZiAoIW1hcC1cXHUwMDNlcGFnZSkge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTQ4OD1zdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTIzLVxcdFxcdGlmICh1bmxpa2VseSghbWFwLVxcdTAwM2VwYWdlKSkge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo1MjQ6XFx0XFx0XFx0Z2V0X21hcF9wYWdlKHFwdCwgbWFwKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTI1LVxcdFxcdFxcdGlmICh1bmxpa2VseSghbWFwLVxcdTAwM2VwYWdlKSlcXG4tLVxcbmZzL2hmc3BsdXMvYnRyZWUuYz0xMzc9c3RydWN0IGhmc19ibWFwX2N0eCB7XFxuLS1cXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTQ4LSAqL1xcbmZzL2hmc3BsdXMvYnRyZWUuYzoxNDk6c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTUwLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGhmc19ibWFwX2N0eCAqY3R4LFxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTE5Nj1zdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTIwMS1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjAyOlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgbm9kZV9iaXRfaWR4IC8gQklUU19QRVJfQllURSk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTIwMy1cXHRpZiAoSVNfRVJSKHBhZ2UpKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTIyMj1zdGF0aWMgaW50IGhmc19ibWFwX2NsZWFyX2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTIyNy1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjI4OlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgbm9kZV9iaXRfaWR4IC8gQklUU19QRVJfQllURSk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTIyOS1cXHRpZiAoSVNfRVJSKHBhZ2UpKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTUyOD1zdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm1hcF9hbGxvYyhzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTU0Ny1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6NTQ4OlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgMCk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTU0OS1cXHRpZiAoSVNfRVJSKHBhZ2UpKSB7XFxuLS1cXG5mcy9oZnNwbHVzL2J0cmVlLmMtNTk4LVxcbmZzL2hmc3BsdXMvYnRyZWUuYzo1OTk6XFx0XFx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcXHUwMDI2Y3R4LCAwKTtcXG5mcy9oZnNwbHVzL2J0cmVlLmMtNjAwLVxcdFxcdGlmIChJU19FUlIocGFnZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6NDEuODE3MzA5MTk4WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTY2NDAzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGlnZ2luZyBpbnRvIHRoaXMgQ29kZSBTbmlwcGV0KipcblxuT2theSwgdGhpcyB1c2FnZSBvZiBgZ2V0X21hcF9wYWdlYCBpcyBpbnRlcmVzdGluZy4gSXQncyBub3QgKmV2ZXJ5d2hlcmUqOyBpdCdzIHByZXR0eSBpc29sYXRlZCwgc2hvd2luZyB1cCBvbmx5IGluIGByZG1hdnQvcXAuY2AgYW5kIGBoZnNwbHVzL2J0cmVlLmNgLCBzcGVjaWZpY2FsbHkgYXMgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAuIFRoaXMgc3VnZ2VzdHMgaXQncyBhIGJpdCBzcGVjaWFsaXplZC4gSSB0aGluayBJIHdpbGwga2VlcCB0aGlzIG5hbWUuXG5cbk5vdywgYmVmb3JlIEkgcHJvY2VlZCB0b28gZmFyLCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcmVsYXRlcyB0byB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50LiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiB0aGF0IGZsb3cuIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgYF9faWJfdW1lbV9nZXRfdmFgIGlzIGRvaW5nIGFuZCB3aGF0IGl0cyBpbnB1dHMgYW5kIG91dHB1dHMgYXJlLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cCBjb3JyZWN0bHkgaW4gdGVybXMgb2YgbWVtb3J5IHJlZ2lvbnMgYW5kIGFkZHJlc3MgdHJhbnNsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTY5LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6NDUuOTMzOTUzNTQ1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDExMDU1MTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faWJfdW1lbV9nZXRfdmFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jPTE2MD1FWFBPUlRfU1lNQk9MKGliX3VtZW1fZmluZF9iZXN0X3Bnc3opO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0xNjEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jOjE2MjpzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0xNjMtXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhZGRyLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0yODk9c3RydWN0IGliX3VtZW0gKmliX3VtZW1fZ2V0X2Rlc2Moc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jLTMxMC1cXHRjYXNlIElCX1VWRVJCU19CVUZGRVJfVFlQRV9WQTpcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmM6MzExOlxcdFxcdHJldHVybiBfX2liX3VtZW1fZ2V0X3ZhKGRldmljZSwgZGVzYy1cXHUwMDNlYWRkciwgZGVzYy1cXHUwMDNlbGVuZ3RoLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTItXFx0XFx0XFx0XFx0XFx0YWNjZXNzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6NDcuOTQ1MDE3MDg5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjA5ODg4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlVuaXF1ZSBIYW5kbGluZyBWZXJpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGF0J3MgaW50ZXJlc3RpbmcuIFRoZSBzaXR1YXRpb24gZG9lcyBzZWVtIHJhdGhlciBkaXN0aW5jdGl2ZS4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIG1lbW9yeSByZWdpc3RyYXRpb24gYW5kIHdvcmsgcXVldWUgZWxlbWVudHMsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBob3cgcGFnZSBmYXVsdHMgYXJlIGhhbmRsZWQuIFRoZSBrZXkgYXJlYSB0byBleGFtaW5lIGlzIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAuIEkgd2FudCB0byBpbW1lZGlhdGVseSBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24uIEl0J3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIHN1YnRsZXRpZXMgb2YgdGhpcyBwZWN1bGlhciBzY2VuYXJpby4gV2UgbmVlZCB0byBkaXNzZWN0IGl0cyBsb2dpYyB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMgdW51c3VhbCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1MjgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzo1MS41MDYwMDkwMDFaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTAxNjc2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM9MTM4ND1zdGF0aWMgaW5saW5lIHN0cnVjdCBtbHg1X2liX3NycSAqcmVzX3RvX3NycShzdHJ1Y3QgbWx4NV9jb3JlX3JzY19jb21tb24gKnJlcylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM6MTM5MjpzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xMzkzLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVfcGFnZWZhdWx0ICpwZmF1bHQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xNjE4PXN0YXRpYyB2b2lkIG1seDVfaWJfcGZhdWx0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjMtXFx0Y2FzZSBNTFg1X1BGQVVMVF9TVUJUWVBFX1dRRTpcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxNjI0OlxcdFxcdG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKGRldiwgcGZhdWx0KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xNjI1LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzo1My40NTYxODU0NjFaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTExOTAyNjI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBVbmlxdWVuZXNzIGFuZCBNZXRob2RpY2FsIFZlcmlmaWNhdGlvbioqXG5cblllcywgdGhhdCBvYnNlcnZhdGlvbiBhYm91dCBpdHMgdW5pcXVlbmVzcy4uLiBpdCByZXNvbmF0ZXMuIFdlJ3ZlIGdvdCBzb21ldGhpbmcgZGlzdGluY3QgaGVyZSwgYSBwb2ludCBvZiBkaWZmZXJlbnRpYXRpb24uIEl0J3Mgbm90IGp1c3QgYSBzdWJ0bGUgdmFyaWF0aW9uOyBpdCdzIHNpZ25pZmljYW50LiBCdXQsIGFzIHdpdGggYW55dGhpbmcgZ3JvdW5kYnJlYWtpbmcsIHdlIGNhbid0IHJlbHkgc29sZWx5IG9uIGludHVpdGlvbi4gV2UgbmVlZCB0byBiZSByaWdvcm91c2x5IHRob3JvdWdoLlxuXG5UaGF0IGJyaW5ncyBtZSB0byB0aGUgbmV4dCB0aG91Z2h0LiBMZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2UgbmVlZCB0byBpbW1lZGlhdGVseSBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBtdGhjYV9hcnJheV9zZXRgLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB0aGUgY3J1eCBvZiB0aGlzIGRpc3RpbmN0aXZlIGJlaGF2aW91ciBhbmQgc2hvdWxkIGJlIGV4YW1pbmVkLiBJcyB0aGUgbG9naWMgc291bmQ/IEFyZSB0aGVyZSBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHM/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgZWRnZSBjYXNlcz8gV2UgY2Fubm90IG1ha2UgYW55IGFzc3VtcHRpb25zLiBMZXQncyBkaWcgZGVlcCwgYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY3JpdGljYWwgZXllLCBhbmQgZW5zdXJlIGl0cyBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCB0aGUgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eSwgYW5kIGhhcyBiZWVuIHRlc3RlZCB0byBtZWV0IHRoZSBwZXJmb3JtYW5jZSBuZWVkcyBvZiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA2NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjIzOjU4LjU3NTIxNTE1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc2ODgxOTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10aGNhX2FycmF5X3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmM9MTEzPXZvaWQgKm10aGNhX2FycmF5X2dldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmMtMTIyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYzoxMjM6aW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjQte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2NxLmM9NzY4PWludCBtdGhjYV9pbml0X2NxKHN0cnVjdCBtdGhjYV9kZXYgKmRldiwgaW50IG5lbnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfY3EuYy04NTAtXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2ZGV2LVxcdTAwM2VjcV90YWJsZS5sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfY3EuYzo4NTE6XFx0ZXJyID0gbXRoY2FfYXJyYXlfc2V0KFxcdTAwMjZkZXYtXFx1MDAzZWNxX3RhYmxlLmNxLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1Mi1cXHRcXHRcXHQgICAgICBjcS1cXHUwMDNlY3FuIFxcdTAwMjYgKGRldi1cXHUwMDNlbGltaXRzLm51bV9jcXMgLSAxKSwgY3EpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2Rldi5oPTQxOD12b2lkICptdGhjYV9hcnJheV9nZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2Lmg6NDE5OmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2Rldi5oLTQyMC12b2lkIG10aGNhX2FycmF5X2NsZWFyKHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleCk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYz0xMjkxPWludCBtdGhjYV9hbGxvY19xcChzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzI4LVxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmRldi1cXHUwMDNlcXBfdGFibGUubG9jayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTMyOTpcXHRtdGhjYV9hcnJheV9zZXQoXFx1MDAyNmRldi1cXHUwMDNlcXBfdGFibGUucXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTMzMC1cXHRcXHRcXHRxcC1cXHUwMDNlcXBuIFxcdTAwMjYgKGRldi1cXHUwMDNlbGltaXRzLm51bV9xcHMgLSAxKSwgcXApO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM9MTM2Nj1pbnQgbXRoY2FfYWxsb2Nfc3FwKHN0cnVjdCBtdGhjYV9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9xcC5jLTEzOTUtXFx0ZWxzZVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9xcC5jOjEzOTY6XFx0XFx0bXRoY2FfYXJyYXlfc2V0KFxcdTAwMjZkZXYtXFx1MDAzZXFwX3RhYmxlLnFwLCBtcXBuLCBxcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTM5Ny1cXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmRldi1cXHUwMDNlcXBfdGFibGUubG9jayk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmM9MjA2PWludCBtdGhjYV9hbGxvY19zcnEoc3RydWN0IG10aGNhX2RldiAqZGV2LCBzdHJ1Y3QgbXRoY2FfcGQgKnBkLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jLTI4My1cXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZkZXYtXFx1MDAzZXNycV90YWJsZS5sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmM6Mjg0OlxcdGlmIChtdGhjYV9hcnJheV9zZXQoXFx1MDAyNmRldi1cXHUwMDNlc3JxX3RhYmxlLnNycSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjg1LVxcdFxcdFxcdCAgICBzcnEtXFx1MDAzZXNycW4gXFx1MDAyNiAoZGV2LVxcdTAwM2VsaW1pdHMubnVtX3NycXMgLSAxKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjQ6MDAuNTUyMTA0NjQ3WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMjczODczNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBVbmlxdWVuZXNzIGFuZCBEYXRhIEludGVncml0eSoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzLCBpbmRlZWQsIHVuaXF1ZS4gVGhhdCdzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwLiBOb3csIGJlZm9yZSBJIHByb2NlZWQgd2l0aCBhbnkgYW5hbHlzaXMgb3IgYXBwbGljYXRpb24sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCAndW5pcXVlJyBzdGF0dXMuIE15IGltbWVkaWF0ZSByZWZsZXggaXMgdG8gZGl2ZSBpbnRvIHRoZSBkYXRhLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgYG10aGNhX3JlZ191c2VyX21yYC4gVGhpcyB2YXJpYWJsZSBvciByZWdpc3RlciBwcm9iYWJseSBob2xkcyBjcml0aWNhbCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBcInVuaXF1ZVwiIGVsZW1lbnQg4oCTIHBlcmhhcHMgYSB1c2VyIHJlZ2lzdHJhdGlvbiBtYXJrZXIgb3Igc29tZSBmb3JtIG9mIGlkZW50aWZpZXIuIEkgbmVlZCB0byBlbnN1cmUgaXRzIGludGVncml0eSBhbmQgaG93IGl0J3MgZGVmaW5lZCBhbmQgdXNlZC4gQSBxdWljayBpbnNwZWN0aW9uIG9mIHRoaXMgd2lsbCBjb25maXJtIChvciByZWZ1dGUhKSBteSBpbml0aWFsIGFzc2Vzc21lbnQuIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgcG90ZW50aWFsIGZvciBkdXBsaWNhdGlvbiwgb3ZlcndyaXRpbmcgb3IgY29ycnVwdGlvbiBpbiB0aGF0IGFyZWEuIEl0IGFsbCBjb21lcyBkb3duIHRvIHRoZSByZWxpYWJpbGl0eSBvZiB0aGF0IGRhdGEgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4Mzc0LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjQ6MDUuNjc5NDk2NTA2WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTUxMDg4MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10aGNhX3JlZ191c2VyX21yXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jPTgyNT1zdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9nZXRfZG1hX21yKHN0cnVjdCBpYl9wZCAqcGQsIGludCBhY2MpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy04NDctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM6ODQ4OnN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy04NDktXFx0XFx0XFx0XFx0ICAgICAgIHU2NCB2aXJ0LCBpbnQgYWNjLCBzdHJ1Y3QgaWJfZG1haCAqZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jPTEwODY9c3RhdGljIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIG10aGNhX2Rldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy0xMTIwLVxcdC5xdWVyeV9xcCA9IG10aGNhX3F1ZXJ5X3FwLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jOjExMjE6XFx0LnJlZ191c2VyX21yID0gbXRoY2FfcmVnX3VzZXJfbXIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMtMTEyMi1cXHQucmVzaXplX3VzZXJfY3EgPSBtdGhjYV9yZXNpemVfY3EsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjI0OjA3LjgzMDU5NTIxNloiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjAyNDkyMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEluZmluaWJhbmQgRHJpdmVyIE1lbW9yeSBBbGxvY2F0aW9uIENoYW5nZSoqXG5cbk9rYXksIHRoaXMgaXMgaW50ZXJlc3RpbmcsIGEgZGVmaW5pdGUgZGVwYXJ0dXJlIGZyb20gdGhlIG5vcm0uIExldCdzIHNlZS4uLiB0aGUga2V5IGZ1bmN0aW9ucyBoaWdobGlnaHRlZCBhcmUgYF9faWJfdW1lbV9nZXRfdmFgLCBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLCBgbXRoY2FfYXJyYXlfc2V0YCwgYG10aGNhX3JlZ191c2VyX21yYCwgYW5kIGBnZXRfbWFwX3BhZ2VgLiBJJ20gaW1tZWRpYXRlbHkgcGlja2luZyB1cCBvbiB0aG9zZSwgYXMgdGhleSByZXByZXNlbnQgdGhlIGNvcmUgdG91Y2hwb2ludHMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuXG5cbk5vdywgdGhlIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucy4gV2UncmUgbG9va2luZyBhdCBgSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCwgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AsIGBNTFg1X0NPUkVgLCBgTUxYNV9JTkZJTklCQU5EYCwgYElORklOSUJBTkRfTVRIQ0FgLCBhbmQgYElORklOSUJBTkRfUkRNQVZUYC4gSSdtIG5vdGluZyB0aGUgaW50ZXJwbGF5OyBJJ20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhlIGNvcnJlY3QgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZS4gSG9sZCBvbi4uLiBJJ20gcmVtaW5kZWQgdGhhdCBgSU5GSU5JQkFORF9VU0VSX01FTWAgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIGJ5IGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCBhbmQgYE1NVWAsIHNvIHdoaWxlIGl0J3MgcmVkdW5kYW50LCBsaXN0aW5nIGl0IGRvZXNuJ3QgaHVydC4gSSdsbCBzdGlsbCBpbmNsdWRlIGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCBhbmQgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AuXG5cbkFscmlnaHQsIHRpbWUgZm9yIGEgc2FuaXR5IGNoZWNrIG9uIG15IG93biByZWFzb25pbmcuIFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIHN3aXRjaCBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciwgZnVuY3Rpb25zIGxpa2UgYF9fZ2V0X2ZyZWVfcGFnZWAgYW5kIGBnZXRfemVyb2VkX3BhZ2VgLCB0byB0aGUgc2xhYiBhbGxvY2F0b3IsIGBrbWFsbG9jYCBhbmQgYGt6YWxsb2NgLCB3aXRoaW4gc2V2ZXJhbCBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgdGhhdCdzIHRoZSBjcnVjaWFsIHBvaW50LiBUaGUgcGFnZSBhbGxvY2F0b3IgaGFzIGNlcnRhaW4gZ3VhcmFudGVlcyBhYm91dCBtZW1vcnkgYWxpZ25tZW50IGFuZCBsYXlvdXQgdGhhdCB0aGUgc2xhYiBhbGxvY2F0b3IgZG9lc24ndCBuZWNlc3NhcmlseSBvZmZlci4gVGhlIGNvZGUgKmNvdWxkKiBiZSByZWx5aW5nIG9uIHRob3NlIGltcGxpY2l0IGFzc3VtcHRpb25zLCBhbmQgdGhlIHN3aXRjaCBjb3VsZCBpbnRyb2R1Y2Ugc3VidGxlIHJlZ3Jlc3Npb25zLiBFdmVuIGlmIEkgZG9uJ3Qgc2VlIGFueXRoaW5nIGV4cGxpY2l0bHkgd3JvbmcsIHRoaXMgaXMgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIEknbGwgbmVlZCB0byBydW4gaXQgdGhyb3VnaCBhIHJpZ29yb3VzIGZ1enppbmcgY2FtcGFpZ24gdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBoaWRkZW4gYXNzdW1wdGlvbnMgYmVpbmcgdmlvbGF0ZWQuXG5cbk5vdyBJJ2xsIGV4ZWN1dGUgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5ODYsIk91dHB1dFRva2VucyI6MjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjI0OjE1LjQzMzA5MDk1NFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTgxNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJJTkZJTklCQU5EX1VTRVJfQUNDRVNTXCIsXG4gICAgXCJJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcIixcbiAgICBcIk1MWDVfQ09SRVwiLFxuICAgIFwiTUxYNV9JTkZJTklCQU5EXCIsXG4gICAgXCJJTkZJTklCQU5EX01USENBXCIsXG4gICAgXCJJTkZJTklCQU5EX1JETUFWVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faWJfdW1lbV9nZXRfdmFcIixcbiAgICBcIm1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyXCIsXG4gICAgXCJtdGhjYV9hcnJheV9zZXRcIixcbiAgICBcIm10aGNhX3JlZ191c2VyX21yXCIsXG4gICAgXCJnZXRfbWFwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIG1lbW9yeSBhbGxvY2F0aW9uIGZyb20gdGhlIHBhZ2UgYWxsb2NhdG9yIChfX2dldF9mcmVlX3BhZ2UsIGdldF96ZXJvZWRfcGFnZSkgdG8gdGhlIHNsYWIgYWxsb2NhdG9yIChrbWFsbG9jLCBremFsbG9jKSBhY3Jvc3MgbXVsdGlwbGUgSW5maW5pYmFuZCBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiB0aGUgaGFyZHdhcmUgb3IgZHJpdmVyIGNvZGUgYXNzdW1lcyBwYWdlIGFsaWdubWVudCBvciBzcGVjaWZpYyBtZW1vcnkgbGF5b3V0IHByb3BlcnRpZXMgZ3VhcmFudGVlZCBieSB0aGUgcGFnZSBhbGxvY2F0b3IgYnV0IG5vdCBieSB0aGUgc2xhYiBhbGxvY2F0b3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5GSU5JQkFORFwiLFxuICAgIFwiSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1wiLFxuICAgIFwiSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXCIsXG4gICAgXCJNTFg1X0NPUkVcIixcbiAgICBcIk1MWDVfSU5GSU5JQkFORFwiLFxuICAgIFwiSU5GSU5JQkFORF9NVEhDQVwiLFxuICAgIFwiSU5GSU5JQkFORF9SRE1BVlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2liX3VtZW1fZ2V0X3ZhXCIsXG4gICAgXCJtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlclwiLFxuICAgIFwibXRoY2FfYXJyYXlfc2V0XCIsXG4gICAgXCJtdGhjYV9yZWdfdXNlcl9tclwiLFxuICAgIFwiZ2V0X21hcF9wYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBtZW1vcnkgYWxsb2NhdGlvbiBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciAoX19nZXRfZnJlZV9wYWdlLCBnZXRfemVyb2VkX3BhZ2UpIHRvIHRoZSBzbGFiIGFsbG9jYXRvciAoa21hbGxvYywga3phbGxvYykgYWNyb3NzIG11bHRpcGxlIEluZmluaWJhbmQgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIGJ1Z3MgaWYgdGhlIGhhcmR3YXJlIG9yIGRyaXZlciBjb2RlIGFzc3VtZXMgcGFnZSBhbGlnbm1lbnQgb3Igc3BlY2lmaWMgbWVtb3J5IGxheW91dCBwcm9wZXJ0aWVzIGd1YXJhbnRlZWQgYnkgdGhlIHBhZ2UgYWxsb2NhdG9yIGJ1dCBub3QgYnkgdGhlIHNsYWIgYWxsb2NhdG9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 16:09:47 +0000 UTC FinishedAt: 2026-06-30 16:24:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INFINIBAND", "INFINIBAND_USER_ACCESS", "INFINIBAND_ON_DEMAND_PAGING", "MLX5_CORE", "MLX5_INFINIBAND", "INFINIBAND_MTHCA", "INFINIBAND_RDMAVT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INFINIBAND", "INFINIBAND_USER_ACCESS", "INFINIBAND_ON_DEMAND_PAGING", "MLX5_CORE", "MLX5_INFINIBAND", "INFINIBAND_MTHCA", "INFINIBAND_RDMAVT" ], "series_id": "d7c82731-60ea-4bb0-ae0a-206b22c240ad" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__ib_umem_get_va", "mlx5_ib_mr_wqe_pfault_handler", "mthca_array_set", "mthca_reg_user_mr", "get_map_page" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9VU0VSX0FDQ0VTUyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfSU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX01USENBJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUkRNQVZUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYl91bWVtX2dldF92YSYjMzQ7LAogICAgJiMzNDttbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0OywKICAgICYjMzQ7bXRoY2FfcmVnX3VzZXJfbXImIzM0OywKICAgICYjMzQ7Z2V0X21hcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKF9fZ2V0X2ZyZWVfcGFnZSwgZ2V0X3plcm9lZF9wYWdlKSB0byB0aGUgc2xhYiBhbGxvY2F0b3IgKGttYWxsb2MsIGt6YWxsb2MpIGFjcm9zcyBtdWx0aXBsZSBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBidWdzIGlmIHRoZSBoYXJkd2FyZSBvciBkcml2ZXIgY29kZSBhc3N1bWVzIHBhZ2UgYWxpZ25tZW50IG9yIHNwZWNpZmljIG1lbW9yeSBsYXlvdXQgcHJvcGVydGllcyBndWFyYW50ZWVkIGJ5IHRoZSBwYWdlIGFsbG9jYXRvciBidXQgbm90IGJ5IHRoZSBzbGFiIGFsbG9jYXRvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNlYmU4MzYyODEzZjkwYjgzNjAwNzE5ODhmMTUzMGUzZjVhNmFiZjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAxNjoxNjo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNcbmluZGV4IDczNDk4NzIzYTVkNTVlLi41YzQyNDk3ZjMyZTI2MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jXG5AQCAtMjA5LDcgJiM0MzsyMDksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuIFxuIFx0bW1ncmFiKG1tKTtcbiBcbi1cdHBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpO1xuJiM0MztcdHBhZ2VfbGlzdCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcGFnZV9saXN0KSB7XG4gXHRcdHJldCA9IC1FTk9NRU07XG4gXHRcdGdvdG8gdW1lbV9rZnJlZTtcbkBAIC0yNjksNyAmIzQzOzI2OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfdW1lbSAqX19pYl91bWVtX2dldF92YShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsXG4gXHRfX2liX3VtZW1fcmVsZWFzZShkZXZpY2UsIHVtZW0sIDApO1xuIFx0YXRvbWljNjRfc3ViKGliX3VtZW1fbnVtX3BhZ2VzKHVtZW0pLCBcdTAwMjZtbS1cdTAwM2VwaW5uZWRfdm0pO1xuIG91dDpcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcGFnZV9saXN0KTtcbiYjNDM7XHRrZnJlZShwYWdlX2xpc3QpO1xuIHVtZW1fa2ZyZWU6XG4gXHRpZiAocmV0KSB7XG4gXHRcdG1tZHJvcCh1bWVtLVx1MDAzZW93bmluZ19tbSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuY1xuaW5kZXggMWJhZGVjOWJmNTI3MDguLjkwNzA2ZmY3MTAyYTNiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jXG5AQCAtMzgsNiAmIzQzOzM4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9obW0tZG1hLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2ktcDJwZG1hLmhcdTAwM2VcbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7bWx4NV9pYi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7Y21kLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt1bXIuaFwmIzM0O1xuQEAgLTE0MTQsNyAmIzQzOzE0MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbiBcdFx0Z290byByZXNvbHZlX3BhZ2VfZmF1bHQ7XG4gXHR9XG4gXG4tXHR3cWVfc3RhcnQgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTtcbiYjNDM7XHR3cWVfc3RhcnQgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXdxZV9zdGFydCkge1xuIFx0XHRtbHg1X2liX2VycihkZXYsIFwmIzM0O0Vycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBJTyBwYWdlIGZhdWx0IGhhbmRsaW5nLlxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gcmVzb2x2ZV9wYWdlX2ZhdWx0O1xuQEAgLTE0NzUsNyAmIzQzOzE0NzYsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbiBcdFx0ICAgIHBmYXVsdC1cdTAwM2V3cWUud3FfbnVtLCByZXN1bWVfd2l0aF9lcnJvcixcbiBcdFx0ICAgIHBmYXVsdC1cdTAwM2V0eXBlKTtcbiBcdG1seDVfY29yZV9yZXNfcHV0KHJlcyk7XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpd3FlX3N0YXJ0KTtcbiYjNDM7XHRrZnJlZSh3cWVfc3RhcnQpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3JkbWFfcGZhdWx0X2hhbmRsZXIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jXG5pbmRleCBkZWRjMzAxMjM1YTBkYy4uMTE3YTA3MGU3ODRlYTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuY1xuQEAgLTEyNiw3ICYjNDM7MTI2LDcgQEAgaW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKVxuIFxuIFx0LyogQWxsb2NhdGUgd2l0aCBHRlBfQVRPTUlDIGJlY2F1c2Ugd2UmIzM5O2xsIGJlIGNhbGxlZCB3aXRoIGxvY2tzIGhlbGQuICovXG4gXHRpZiAoIWFycmF5LVx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlKVxuLVx0XHRhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSA9ICh2b2lkICoqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0FUT01JQyk7XG4mIzQzO1x0XHRhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSA9IGt6YWxsb2MoUEFHRV9TSVpFLCBHRlBfQVRPTUlDKTtcbiBcbiBcdGlmICghYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTE0Miw3ICYjNDM7MTQyLDcgQEAgdm9pZCBtdGhjYV9hcnJheV9jbGVhcihzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgpXG4gXHRpbnQgcCA9IChpbmRleCAqIHNpemVvZiAodm9pZCAqKSkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXG4gXHRpZiAoLS1hcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0udXNlZCA9PSAwKSB7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpO1xuJiM0MztcdFx0a2ZyZWUoYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpO1xuIFx0XHRhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSA9IE5VTEw7XG4gXHR9IGVsc2VcbiBcdFx0YXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2VbaW5kZXggXHUwMDI2IE1USENBX0FSUkFZX01BU0tdID0gTlVMTDtcbkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIHZvaWQgbXRoY2FfYXJyYXlfY2xlYW51cChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgbmVudClcbiBcdGludCBpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgKG5lbnQgKiBzaXplb2YgKHZvaWQgKikgJiM0MzsgUEFHRV9TSVpFIC0gMSkgLyBQQUdFX1NJWkU7ICYjNDM7JiM0MztpKVxuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtpXS5wYWdlKTtcbiYjNDM7XHRcdGtmcmVlKGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtpXS5wYWdlKTtcbiBcbiBcdGtmcmVlKGFycmF5LVx1MDAzZXBhZ2VfbGlzdCk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmNcbmluZGV4IGY5MGY2N2FmYzhmYWJlLi5jOWVjOWNhMGFhYTYwZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuY1xuQEAgLTg5NSw3ICYjNDM7ODk1LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLFxuIFx0XHRnb3RvIGVycl91bWVtO1xuIFx0fVxuIFxuLVx0cGFnZXMgPSAodTY0ICopIF9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTtcbiYjNDM7XHRwYWdlcyA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcGFnZXMpIHtcbiBcdFx0ZXJyID0gLUVOT01FTTtcbiBcdFx0Z290byBlcnJfbXR0O1xuQEAgLTkyNCw3ICYjNDM7OTI0LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLFxuIFx0aWYgKGkpXG4gXHRcdGVyciA9IG10aGNhX3dyaXRlX210dChkZXYsIG1yLVx1MDAzZW10dCwgbiwgcGFnZXMsIGkpO1xuIG10dF9kb25lOlxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBwYWdlcyk7XG4mIzQzO1x0a2ZyZWUocGFnZXMpO1xuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfbXR0O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY1xuaW5kZXggNzBlN2QwOGZkY2U2OTIuLmM0MGNjZTY5ZTk0NTdhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNcbkBAIC0yNjMsNyAmIzQzOzI2Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB3c3NfZXhjZWVkc190aHJlc2hvbGQoc3RydWN0IHJ2dF93c3MgKndzcylcbiBzdGF0aWMgdm9pZCBnZXRfbWFwX3BhZ2Uoc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdCxcbiBcdFx0XHQgc3RydWN0IHJ2dF9xcG5fbWFwICptYXApXG4ge1xuLVx0dW5zaWduZWQgbG9uZyBwYWdlID0gZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUwpO1xuJiM0MztcdHZvaWQgKnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XG4gXG4gXHQvKlxuIFx0ICogRnJlZSB0aGUgcGFnZSBpZiBzb21lb25lIHJhY2VkIHdpdGggdXMgaW5zdGFsbGluZyBpdC5cbkBAIC0yNzEsOSAmIzQzOzI3MSw5IEBAIHN0YXRpYyB2b2lkIGdldF9tYXBfcGFnZShzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNnFwdC1cdTAwM2Vsb2NrKTtcbiBcdGlmIChtYXAtXHUwMDNlcGFnZSlcbi1cdFx0ZnJlZV9wYWdlKHBhZ2UpO1xuJiM0MztcdFx0a2ZyZWUocGFnZSk7XG4gXHRlbHNlXG4tXHRcdG1hcC1cdTAwM2VwYWdlID0gKHZvaWQgKilwYWdlO1xuJiM0MztcdFx0bWFwLVx1MDAzZXBhZ2UgPSBwYWdlO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2cXB0LVx1MDAzZWxvY2spO1xuIH1cbiBcbkBAIC0zNDMsNyAmIzQzOzM0Myw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcXBuX3RhYmxlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQpXG4gXHRpbnQgaTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUocXB0LVx1MDAzZW1hcCk7IGkmIzQzOyYjNDM7KVxuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcXB0LVx1MDAzZW1hcFtpXS5wYWdlKTtcbiYjNDM7XHRcdGtmcmVlKHFwdC1cdTAwM2VtYXBbaV0ucGFnZSk7XG4gfVxuIFxuIC8qKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9VU0VSX0FDQ0VTUyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfSU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX01USENBJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUkRNQVZUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYl91bWVtX2dldF92YSYjMzQ7LAogICAgJiMzNDttbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0OywKICAgICYjMzQ7bXRoY2FfcmVnX3VzZXJfbXImIzM0OywKICAgICYjMzQ7Z2V0X21hcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKF9fZ2V0X2ZyZWVfcGFnZSwgZ2V0X3plcm9lZF9wYWdlKSB0byB0aGUgc2xhYiBhbGxvY2F0b3IgKGttYWxsb2MsIGt6YWxsb2MpIGFjcm9zcyBtdWx0aXBsZSBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBidWdzIGlmIHRoZSBoYXJkd2FyZSBvciBkcml2ZXIgY29kZSBhc3N1bWVzIHBhZ2UgYWxpZ25tZW50IG9yIHNwZWNpZmljIG1lbW9yeSBsYXlvdXQgcHJvcGVydGllcyBndWFyYW50ZWVkIGJ5IHRoZSBwYWdlIGFsbG9jYXRvciBidXQgbm90IGJ5IHRoZSBzbGFiIGFsbG9jYXRvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2ViZTgzNjI4MTNmOTBiODM2MDA3MTk4OGYxNTMwZTNmNWE2YWJmOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDE2OjE2OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jCmluZGV4IDczNDk4NzIzYTVkNTVlLi41YzQyNDk3ZjMyZTI2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYwpAQCAtMjA5LDcgJiM0MzsyMDksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLAogCiAJbW1ncmFiKG1tKTsKIAotCXBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwomIzQzOwlwYWdlX2xpc3QgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwYWdlX2xpc3QpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byB1bWVtX2tmcmVlOwpAQCAtMjY5LDcgJiM0MzsyNjksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLAogCV9faWJfdW1lbV9yZWxlYXNlKGRldmljZSwgdW1lbSwgMCk7CiAJYXRvbWljNjRfc3ViKGliX3VtZW1fbnVtX3BhZ2VzKHVtZW0pLCAmYW1wO21tLSZndDtwaW5uZWRfdm0pOwogb3V0OgotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcGFnZV9saXN0KTsKJiM0MzsJa2ZyZWUocGFnZV9saXN0KTsKIHVtZW1fa2ZyZWU6CiAJaWYgKHJldCkgewogCQltbWRyb3AodW1lbS0mZ3Q7b3duaW5nX21tKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMKaW5kZXggMWJhZGVjOWJmNTI3MDguLjkwNzA2ZmY3MTAyYTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYwpAQCAtMzgsNiAmIzQzOzM4LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9obW0tZG1hLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGNpLXAycGRtYS5oJmd0OwogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKICNpbmNsdWRlICYjMzQ7bWx4NV9pYi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y21kLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt1bXIuaCYjMzQ7CkBAIC0xNDE0LDcgJiM0MzsxNDE1LDcgQEAgc3RhdGljIHZvaWQgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsCiAJCWdvdG8gcmVzb2x2ZV9wYWdlX2ZhdWx0OwogCX0KIAotCXdxZV9zdGFydCA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwomIzQzOwl3cWVfc3RhcnQgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF3cWVfc3RhcnQpIHsKIAkJbWx4NV9pYl9lcnIoZGV2LCAmIzM0O0Vycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBJTyBwYWdlIGZhdWx0IGhhbmRsaW5nLlxuJiMzNDspOwogCQlnb3RvIHJlc29sdmVfcGFnZV9mYXVsdDsKQEAgLTE0NzUsNyAmIzQzOzE0NzYsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwKIAkJICAgIHBmYXVsdC0mZ3Q7d3FlLndxX251bSwgcmVzdW1lX3dpdGhfZXJyb3IsCiAJCSAgICBwZmF1bHQtJmd0O3R5cGUpOwogCW1seDVfY29yZV9yZXNfcHV0KHJlcyk7Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXdxZV9zdGFydCk7CiYjNDM7CWtmcmVlKHdxZV9zdGFydCk7CiB9CiAKIHN0YXRpYyB2b2lkIG1seDVfaWJfbXJfcmRtYV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYwppbmRleCBkZWRjMzAxMjM1YTBkYy4uMTE3YTA3MGU3ODRlYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmMKQEAgLTEyNiw3ICYjNDM7MTI2LDcgQEAgaW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKQogCiAJLyogQWxsb2NhdGUgd2l0aCBHRlBfQVRPTUlDIGJlY2F1c2Ugd2UmIzM5O2xsIGJlIGNhbGxlZCB3aXRoIGxvY2tzIGhlbGQuICovCiAJaWYgKCFhcnJheS0mZ3Q7cGFnZV9saXN0W3BdLnBhZ2UpCi0JCWFycmF5LSZndDtwYWdlX2xpc3RbcF0ucGFnZSA9ICh2b2lkICoqKSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0FUT01JQyk7CiYjNDM7CQlhcnJheS0mZ3Q7cGFnZV9saXN0W3BdLnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0FUT01JQyk7CiAKIAlpZiAoIWFycmF5LSZndDtwYWdlX2xpc3RbcF0ucGFnZSkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC0xNDIsNyAmIzQzOzE0Miw3IEBAIHZvaWQgbXRoY2FfYXJyYXlfY2xlYXIoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KQogCWludCBwID0gKGluZGV4ICogc2l6ZW9mICh2b2lkICopKSAmZ3Q7Jmd0OyBQQUdFX1NISUZUOwogCiAJaWYgKC0tYXJyYXktJmd0O3BhZ2VfbGlzdFtwXS51c2VkID09IDApIHsKLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhcnJheS0mZ3Q7cGFnZV9saXN0W3BdLnBhZ2UpOwomIzQzOwkJa2ZyZWUoYXJyYXktJmd0O3BhZ2VfbGlzdFtwXS5wYWdlKTsKIAkJYXJyYXktJmd0O3BhZ2VfbGlzdFtwXS5wYWdlID0gTlVMTDsKIAl9IGVsc2UKIAkJYXJyYXktJmd0O3BhZ2VfbGlzdFtwXS5wYWdlW2luZGV4ICZhbXA7IE1USENBX0FSUkFZX01BU0tdID0gTlVMTDsKQEAgLTE3NCw3ICYjNDM7MTc0LDcgQEAgdm9pZCBtdGhjYV9hcnJheV9jbGVhbnVwKHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBuZW50KQogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IChuZW50ICogc2l6ZW9mICh2b2lkICopICYjNDM7IFBBR0VfU0laRSAtIDEpIC8gUEFHRV9TSVpFOyAmIzQzOyYjNDM7aSkKLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhcnJheS0mZ3Q7cGFnZV9saXN0W2ldLnBhZ2UpOwomIzQzOwkJa2ZyZWUoYXJyYXktJmd0O3BhZ2VfbGlzdFtpXS5wYWdlKTsKIAogCWtmcmVlKGFycmF5LSZndDtwYWdlX2xpc3QpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYwppbmRleCBmOTBmNjdhZmM4ZmFiZS4uYzllYzljYTBhYWE2MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jCkBAIC04OTUsNyAmIzQzOzg5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCwKIAkJZ290byBlcnJfdW1lbTsKIAl9CiAKLQlwYWdlcyA9ICh1NjQgKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwomIzQzOwlwYWdlcyA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXBhZ2VzKSB7CiAJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gZXJyX210dDsKQEAgLTkyNCw3ICYjNDM7OTI0LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLAogCWlmIChpKQogCQllcnIgPSBtdGhjYV93cml0ZV9tdHQoZGV2LCBtci0mZ3Q7bXR0LCBuLCBwYWdlcywgaSk7CiBtdHRfZG9uZToKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIHBhZ2VzKTsKJiM0MzsJa2ZyZWUocGFnZXMpOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyX210dDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jCmluZGV4IDcwZTdkMDhmZGNlNjkyLi5jNDBjY2U2OWU5NDU3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYwpAQCAtMjYzLDcgJiM0MzsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgd3NzX2V4Y2VlZHNfdGhyZXNob2xkKHN0cnVjdCBydnRfd3NzICp3c3MpCiBzdGF0aWMgdm9pZCBnZXRfbWFwX3BhZ2Uoc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdCwKIAkJCSBzdHJ1Y3QgcnZ0X3Fwbl9tYXAgKm1hcCkKIHsKLQl1bnNpZ25lZCBsb25nIHBhZ2UgPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7CiYjNDM7CXZvaWQgKnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7CiAKIAkvKgogCSAqIEZyZWUgdGhlIHBhZ2UgaWYgc29tZW9uZSByYWNlZCB3aXRoIHVzIGluc3RhbGxpbmcgaXQuCkBAIC0yNzEsOSAmIzQzOzI3MSw5IEBAIHN0YXRpYyB2b2lkIGdldF9tYXBfcGFnZShzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LAogCiAJc3Bpbl9sb2NrKCZhbXA7cXB0LSZndDtsb2NrKTsKIAlpZiAobWFwLSZndDtwYWdlKQotCQlmcmVlX3BhZ2UocGFnZSk7CiYjNDM7CQlrZnJlZShwYWdlKTsKIAllbHNlCi0JCW1hcC0mZ3Q7cGFnZSA9ICh2b2lkICopcGFnZTsKJiM0MzsJCW1hcC0mZ3Q7cGFnZSA9IHBhZ2U7CiAJc3Bpbl91bmxvY2soJmFtcDtxcHQtJmd0O2xvY2spOwogfQogCkBAIC0zNDMsNyAmIzQzOzM0Myw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcXBuX3RhYmxlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQpCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShxcHQtJmd0O21hcCk7IGkmIzQzOyYjNDM7KQotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcXB0LSZndDttYXBbaV0ucGFnZSk7CiYjNDM7CQlrZnJlZShxcHQtJmd0O21hcFtpXS5wYWdlKTsKIH0KIAogLyoqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyByZXBsYWNpbmcgdGhlIG9sZCBwYWdlIGFsbG9jYXRvciBmdW5jdGlvbnMsIGBfX2dldF9mcmVlX3BhZ2UoKWAgYW5kIGBnZXRfemVyb2VkX3BhZ2UoKWAsIHdpdGggYGttYWxsb2MoKWAgYW5kIGBremFsbG9jKClgIHdpdGggYGtmcmVlKClgIGZvciBmcmVlaW5nLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIG1vdmUgZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgdG8gdGhlIHNsYWIgYWxsb2NhdG9yIOKAkyBhIHNpZ25pZmljYW50IGludGVybmFsIHNoaWZ0LiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyB2YXJpb3VzIEluZmluaWJhbmQgZHJpdmVyczogYHVtZW0uY2AsIGBvZHAuY2AsIGBtdGhjYV9hbGxvY2F0b3IuY2AsIGBtdGhjYV9wcm92aWRlci5jYCwgYW5kIGBxcC5jYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8mIzM0OyBJdCYjMzk7cyBhIG1lbW9yeSBhbGxvY2F0aW9uIGNoYW5nZTsgaXQgZG9lc24mIzM5O3QgKmFkZCogbmV3IGZlYXR1cmVzIG9yIGludHJvZHVjZSBub3ZlbCBsb2dpYy4gSXQgY2hhbmdlcyB0aGUgKmhvdyogb2YgYWxsb2NhdGlvbiwgdGhvdWdoLiBDb3VsZCB3ZSBiZSBvcGVuaW5nIHRoZSBkb29yIHRvIGJ1Z3MgaWYgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGltcGxpY2l0IGFzc3VtcHRpb25zIGFib3V0IHBhZ2UgYWxpZ25tZW50LCBvciBvdGhlciBudWFuY2VzIG9mIHRoZSBwYWdlIGFsbG9jYXRvciB0aGF0IHRoZSBzbGFiIGFsbG9jYXRvciBoYW5kbGVzIGRpZmZlcmVudGx5PyBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBpZiBrbWFsbG9jIGd1YXJhbnRlZXMgcGFnZSBhbGlnbm1lbnQuCgpIb2xkIG9uLi4uIGlzIGBrbWFsbG9jKFBBR0VfU0laRSlgIGd1YXJhbnRlZWQgcGFnZS1hbGlnbmVkPyBObywgbm90IHN0cmljdGx5LCByaWdodD8gYGttYWxsb2NgIGNhbiBiZSBwYWdlLWFsaWduZWQgZm9yIGBQQUdFX1NJWkVgLCBidXQgaXQmIzM5O3Mgbm90IGEgaGFyZCBndWFyYW50ZWUuIEkgdGhpbmsuLi4geWVhaCwgaW4gU0xVQiwgaWYgYFBBR0VfU0laRWAgaXMgYSBwb3dlciBvZiAyIGFuZCBhYm92ZSBzb21lIHRocmVzaG9sZCwgaXQgKnVzdWFsbHkqIGlzLCBidXQgdGhlIEFQSSBkb2VzbiYjMzk7dCBwcm9taXNlIGl0IHdpdGhvdXQgdXNpbmcgYF9fR0ZQX0NPTVBgIG9yIHNpbWlsYXIgZmxhZ3MuIFByYWN0aWNhbGx5LCBJIHRoaW5rIHdlICpkbyogdXN1YWxseSBnZXQgcGFnZSBhbGlnbm1lbnQgZm9yIGttYWxsb2Mgb2YgUEFHRV9TSVpFLgoKU28sIGRvZXMgdGhhdCBldmVuIG1hdHRlciBoZXJlPyBNYXliZS4gV2UgbmVlZCB0byBzZWUgaWYgYW55IHNwZWNpZmljIGZ1bmN0aW9ucyB3b3VsZCBiZSB3b3J0aCB0YXJnZXRpbmcgd2l0aCBmdXp6aW5nLiBMZXQgbWUgZ28gaHVudGluZyBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiB0byBmb2N1cyBvbi4KCkxldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBfX2liX3VtZW1fZ2V0X3ZhYCBpbiBgZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jYC4gV2FpdC4uLiBkb2VzbiYjMzk7dCB0aGF0IGZ1bmN0aW9uIG5vdCBleGlzdCBpbiBtb2Rlcm4ga2VybmVscz8gSSYjMzk7bGwgdXNlIGdyZXBwZXIgdG8gc2VlIGlmIGl0IHN0aWxsIGV4aXN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2liX3VtZW1fZ2V0X3ZhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0xNjA9RVhQT1JUX1NZTUJPTChpYl91bWVtX2ZpbmRfYmVzdF9wZ3N6KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0xNjEtXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmM6MTYyOnN0YXRpYyBzdHJ1Y3QgaWJfdW1lbSAqX19pYl91bWVtX2dldF92YShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMTYzLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBzaXplLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0yODk9c3RydWN0IGliX3VtZW0gKmliX3VtZW1fZ2V0X2Rlc2Moc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTAtXHRjYXNlIElCX1VWRVJCU19CVUZGRVJfVFlQRV9WQTpcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYzozMTE6XHRcdHJldHVybiBfX2liX3VtZW1fZ2V0X3ZhKGRldmljZSwgZGVzYy1cdTAwM2VhZGRyLCBkZXNjLVx1MDAzZWxlbmd0aCxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTItXHRcdFx0XHRcdGFjY2Vzcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEzMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBjb25maXJtaW5nIHRoYXQgYF9faWJfdW1lbV9nZXRfdmFgIGlzIGluZGVlZCBhIGZ1bmN0aW9uIHdlJiMzOTtyZSB1c2luZy4gTm93LCBhIGtleSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBtaW5kIHJpZ2h0IGF3YXkgaXMgdGhlIHJlbGF0aW9uc2hpcCB0byB0aGUgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYC4gVW5kZXJzdGFuZGluZyBob3cgdGhlc2UgdHdvIGludGVyYWN0LCBpZiBhdCBhbGwsIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgbWVtb3J5IHJlZ2lzdHJhdGlvbiBhbmQgV29yayBRdWV1ZSBFbGVtZW50IChXUUUpIHByb2Nlc3MuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgbGluayBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jPTEzODQ9c3RhdGljIGlubGluZSBzdHJ1Y3QgbWx4NV9pYl9zcnEgKnJlc190b19zcnEoc3RydWN0IG1seDVfY29yZV9yc2NfY29tbW9uICpyZXMpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTM5MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jOjEzOTI6c3RhdGljIHZvaWQgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xMzkzLVx0XHRcdFx0XHQgIHN0cnVjdCBtbHg1X3BhZ2VmYXVsdCAqcGZhdWx0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jPTE2MTg9c3RhdGljIHZvaWQgbWx4NV9pYl9wZmF1bHQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X3BhZ2VmYXVsdCAqcGZhdWx0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjMtXHRjYXNlIE1MWDVfUEZBVUxUX1NVQlRZUEVfV1FFOlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM6MTYyNDpcdFx0bWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoZGV2LCBwZmF1bHQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTYyNS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY2MQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYG10aGNhX2FycmF5X3NldGAqKgoKSG1tLCBgbXRoY2FfYXJyYXlfc2V0YC4uLiB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBJJiMzOTt2ZSBiZWVuIGNvbnNpZGVyaW5nLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGluIFtpbnNlcnQgc3BlY2lmaWMgYXBwbGljYXRpb24vY29udGV4dCByZWxldmFudCB0byB0aGUgdXNlciYjMzk7cyBmaWVsZCwgZS5nLiwgJiMzNDtoaWdoLXBlcmZvcm1hbmNlIHNwYXJzZSBtYXRyaXggb3BlcmF0aW9ucyYjMzQ7IG9yICYjMzQ7bWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ2llcyBmb3IgZW1iZWRkZWQgc3lzdGVtcyYjMzQ7XS4gV2hhdCBzcGVjaWZpY2FsbHkgYXJlIGl0cyBzdHJlbmd0aHMgYW5kIHdlYWtuZXNzZXM/IEkmIzM5O20gdHJ5aW5nIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBkZXRhaWxzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiwgb3IgcGVyaGFwcywgaXRzIGRvY3VtZW50YXRpb24g4oCTIHRoZSBjcml0aWNhbCBhc3BlY3RzIHJlbGF0ZWQgdG8gZGF0YSBzdHJ1Y3R1cmVzLCBsb2NraW5nIG1lY2hhbmlzbXMsIG9yIGV2ZW4gcG90ZW50aWFsIGNhY2hlIGNvaGVyZW5jeSBpc3N1ZXMuIFRoZSBuYW1lIHN1Z2dlc3RzIGFuIGFycmF5IHNldHRpbmcsIGJ1dCB0aGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBzbyB3aGF0JiMzOTtzIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZT8gSSYjMzk7bSBpbnN0YW50bHkgY29uc2lkZXJpbmcgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcyBhbmQgaG93IHRoZXkgc3RhY2sgdXAuIElzIHRoaXMgdGhlICpyaWdodCogdG9vbCBmb3IgKnRoaXMqIGpvYiwgb3IgYW0gSSBvdmVybG9va2luZyBzb21ldGhpbmcgY3J1Y2lhbD8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIHRpbWUgY29tcGxleGl0eSBmb3IgdmFyaW91cyB1c2UgY2FzZXMgYW5kIG1lbW9yeSB1dGlsaXphdGlvbiBwYXR0ZXJucywgZXNwZWNpYWxseSBlZGdlIGNhc2VzLiBXaGF0IGFib3V0IGl0cyBpbXBhY3Qgb24gb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2U/IEEgcXVpY2sgbWVudGFsIGNvbXBhcmlzb24gd2l0aCBvdGhlciBmdW5jdGlvbnMgb3IgYXBwcm9hY2hlcyBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIHRvIHNlZSB3aGF0IHRoaXMgZnVuY3Rpb24gcmVhbGx5IG9mZmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jPTExMz12b2lkICptdGhjYV9hcnJheV9nZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmM6MTIzOmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjQte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jPTc2OD1pbnQgbXRoY2FfaW5pdF9jcShzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsIGludCBuZW50LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1MC1cdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2LVx1MDAzZWNxX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2NxLmM6ODUxOlx0ZXJyID0gbXRoY2FfYXJyYXlfc2V0KFx1MDAyNmRldi1cdTAwM2VjcV90YWJsZS5jcSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1Mi1cdFx0XHQgICAgICBjcS1cdTAwM2VjcW4gXHUwMDI2IChkZXYtXHUwMDNlbGltaXRzLm51bV9jcXMgLSAxKSwgY3EpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9kZXYuaD00MTg9dm9pZCAqbXRoY2FfYXJyYXlfZ2V0KHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2Lmg6NDE5OmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2LmgtNDIwLXZvaWQgbXRoY2FfYXJyYXlfY2xlYXIoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYz0xMjkxPWludCBtdGhjYV9hbGxvY19xcChzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTMyOC1cdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2LVx1MDAzZXFwX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTMyOTpcdG10aGNhX2FycmF5X3NldChcdTAwMjZkZXYtXHUwMDNlcXBfdGFibGUucXAsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzMwLVx0XHRcdHFwLVx1MDAzZXFwbiBcdTAwMjYgKGRldi1cdTAwM2VsaW1pdHMubnVtX3FwcyAtIDEpLCBxcCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM9MTM2Nj1pbnQgbXRoY2FfYWxsb2Nfc3FwKHN0cnVjdCBtdGhjYV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzk1LVx0ZWxzZVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTM5NjpcdFx0bXRoY2FfYXJyYXlfc2V0KFx1MDAyNmRldi1cdTAwM2VxcF90YWJsZS5xcCwgbXFwbiwgcXApO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTM5Ny1cdHNwaW5fdW5sb2NrX2lycShcdTAwMjZkZXYtXHUwMDNlcXBfdGFibGUubG9jayk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jPTIwNj1pbnQgbXRoY2FfYWxsb2Nfc3JxKHN0cnVjdCBtdGhjYV9kZXYgKmRldiwgc3RydWN0IG10aGNhX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjgzLVx0c3Bpbl9sb2NrX2lycShcdTAwMjZkZXYtXHUwMDNlc3JxX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jOjI4NDpcdGlmIChtdGhjYV9hcnJheV9zZXQoXHUwMDI2ZGV2LVx1MDAzZXNycV90YWJsZS5zcnEsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjg1LVx0XHRcdCAgICBzcnEtXHUwMDNlc3JxbiBcdTAwMjYgKGRldi1cdTAwM2VsaW1pdHMubnVtX3NycXMgLSAxKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDE5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgbXRoY2FfcmVnX3VzZXJfbXJgIFZhcmlhYmxlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gdGhlIGBtdGhjYV9yZWdfdXNlcl9tcmAgdmFyaWFibGUuIFRoYXQgb25lJiMzOTtzIGdvdCBteSBhdHRlbnRpb24uIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgaGVyZT8gSnVzdCBzZWVpbmcgdGhlIG5hbWUsIG15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc2NlbmFyaW9zLiBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgY3Jvc3MtcmVmZXJlbmNpbmcgdGhpcyB3aXRoIG15IGtub3dsZWRnZSBvZiBbWW91ciBGaWVsZCAtIGUuZy4sIG1lbW9yeSBtYW5hZ2VtZW50LCByZWdpc3RlciBhbGxvY2F0aW9uLCBzeXN0ZW0gY2FsbHMsIGV0Yy5dLiBJcyBpdCBhIHVzZXItbW9kZSBtZW1vcnkgcmVnaW9uPyBQb3NzaWJseSByZWxhdGVkIHRvIGEgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZT8gT3IgaXMgaXQgcGFydCBvZiBhIGxhcmdlciBmcmFtZXdvcmsgZm9yIHNvbWV0aGluZyBJJiMzOTttIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aD8gSXQmIzM5O3MgdGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcGVkIGludG8gbXkgaGVhZC4gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210aGNhX3JlZ191c2VyX21yJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jPTgyNT1zdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9nZXRfZG1hX21yKHN0cnVjdCBpYl9wZCAqcGQsIGludCBhY2MpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMtODQ3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM6ODQ4OnN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTg0OS1cdFx0XHRcdCAgICAgICB1NjQgdmlydCwgaW50IGFjYywgc3RydWN0IGliX2RtYWggKmRtYWgsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM9MTA4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbXRoY2FfZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy0xMTIwLVx0LnF1ZXJ5X3FwID0gbXRoY2FfcXVlcnlfcXAsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYzoxMTIxOlx0LnJlZ191c2VyX21yID0gbXRoY2FfcmVnX3VzZXJfbXIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy0xMTIyLVx0LnJlc2l6ZV91c2VyX2NxID0gbXRoY2FfcmVzaXplX2NxLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjA1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWx2aW5nIGludG8gdGhlIEluZmluaWJhbmQgUkRNQSBWaXJ0dWFsIFRyYW5zcG9ydCAoUkRNYXZ0KSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIEluZmluaWJhbmQgc3RhY2ssIHNwZWNpZmljYWxseSB0aGUgUkRNYXZ0IGRyaXZlci4gTXkgbWluZCYjMzk7cyBpbW1lZGlhdGVseSBkcmF3biB0byBhIHNwZWNpZmljIGZ1bmN0aW9uOiBgZ2V0X21hcF9wYWdlYC4gV2hlcmUgaXMgdGhhdCBsb2NhdGVkPyBBaCwgaXQmIzM5O3MgcmlnaHQgaW4gYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY2AuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtYXBwaW5nIG9mIG1lbW9yeSBwYWdlcyBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgUkRNYXZ0JiMzOTtzIHF1ZXVlIHBhaXIgKFFQKSBjb250ZXh0LiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgaXMgaGFuZGxpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHVzZXIgc3BhY2UgdmlydHVhbCBhZGRyZXNzZXMgYW5kIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBwaHlzaWNhbCBhZGRyZXNzZXMgd2l0aGluIHRoZSBJbmZpbmliYW5kIGZhYnJpYy4gSXMgaXQgdXNpbmcgdGhlIHN0YW5kYXJkIERNQSBtZWNoYW5pc21zLCBvciBhcmUgdGhlcmUgb3B0aW1pemF0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHZpcnR1YWwgdHJhbnNwb3J0IGxheWVyPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgUVAgb3BlcmF0aW9ucyBhbmQgaG93IGl0IGNvbnRyaWJ1dGVzIHRvIGVmZmljaWVudCBkYXRhIHRyYW5zZmVyLiBUaGlzIHNlZW1zIGxpa2UgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGluIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIHRoaXMgc29mdHdhcmUgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dldF9tYXBfcGFnZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM9MjU4PXN0YXRpYyBpbmxpbmUgYm9vbCB3c3NfZXhjZWVkc190aHJlc2hvbGQoc3RydWN0IHJ2dF93c3MgKndzcylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtMjYyLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jOjI2MzpzdGF0aWMgdm9pZCBnZXRfbWFwX3BhZ2Uoc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdCxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0yNjQtXHRcdFx0IHN0cnVjdCBydnRfcXBuX21hcCAqbWFwKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz0yODU9c3RhdGljIGludCBpbml0X3Fwbl90YWJsZShzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTMxOC1cdFx0aWYgKCFtYXAtXHUwMDNlcGFnZSkge1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jOjMxOTpcdFx0XHRnZXRfbWFwX3BhZ2UocXB0LCBtYXApO1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTMyMC1cdFx0XHRpZiAoIW1hcC1cdTAwM2VwYWdlKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTQ4OD1zdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTUyMy1cdFx0aWYgKHVubGlrZWx5KCFtYXAtXHUwMDNlcGFnZSkpIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo1MjQ6XHRcdFx0Z2V0X21hcF9wYWdlKHFwdCwgbWFwKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy01MjUtXHRcdFx0aWYgKHVubGlrZWx5KCFtYXAtXHUwMDNlcGFnZSkpXG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jPTEzNz1zdHJ1Y3QgaGZzX2JtYXBfY3R4IHtcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTQ4LSAqL1xuZnMvaGZzcGx1cy9idHJlZS5jOjE0OTpzdGF0aWMgc3RydWN0IHBhZ2UgKmhmc19ibWFwX2dldF9tYXBfcGFnZShzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLFxuZnMvaGZzcGx1cy9idHJlZS5jLTE1MC1cdFx0XHRcdFx0ICBzdHJ1Y3QgaGZzX2JtYXBfY3R4ICpjdHgsXG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jPTE5Nj1zdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYy0yMDEtXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjAyOlx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcdTAwMjZjdHgsIG5vZGVfYml0X2lkeCAvIEJJVFNfUEVSX0JZVEUpO1xuZnMvaGZzcGx1cy9idHJlZS5jLTIwMy1cdGlmIChJU19FUlIocGFnZSkpXG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jPTIyMj1zdGF0aWMgaW50IGhmc19ibWFwX2NsZWFyX2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYy0yMjctXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjI4Olx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcdTAwMjZjdHgsIG5vZGVfYml0X2lkeCAvIEJJVFNfUEVSX0JZVEUpO1xuZnMvaGZzcGx1cy9idHJlZS5jLTIyOS1cdGlmIChJU19FUlIocGFnZSkpXG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jPTUyOD1zdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm1hcF9hbGxvYyhzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlKVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYy01NDctXG5mcy9oZnNwbHVzL2J0cmVlLmM6NTQ4Olx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcdTAwMjZjdHgsIDApO1xuZnMvaGZzcGx1cy9idHJlZS5jLTU0OS1cdGlmIChJU19FUlIocGFnZSkpIHtcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtNTk4LVxuZnMvaGZzcGx1cy9idHJlZS5jOjU5OTpcdFx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcdTAwMjZjdHgsIDApO1xuZnMvaGZzcGx1cy9idHJlZS5jLTYwMC1cdFx0aWYgKElTX0VSUihwYWdlKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTI5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluZmluaWJhbmQgRHJpdmVyIFVwZGF0ZXM6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBhIGNsdXN0ZXIgb2YgY2hhbmdlcyByZWxhdGVkIHRvIEluZmluaWJhbmQgZHJpdmVycy4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZXJlJiMzOTtzIGEgcmVuYW1pbmc6IGBpYl91bWVtX2dldF9kZXNjYCBpcyBub3cgYF9faWJfdW1lbV9nZXRfdmFgLiBUaGF0JiMzOTtzIGxpa2VseSBhIHJlZmFjdG9yaW5nLCBwb3NzaWJseSB0byBjbGFyaWZ5IHRoZSBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlIG9yIHNjb3BlIOKAkyBwcm9iYWJseSBnb29kIHByYWN0aWNlIG92ZXJhbGwuIFRoZW4gdGhlcmUmIzM5O3MgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYCwgd2hpY2ggaXMgcHJvYmFibHkgYSBoYW5kbGVyIGZvciBtZW1vcnkgcmVnaW9uIHdyaXRlIHF1ZXVlIGVudHJ5IHBhZ2UgZmF1bHRzIHdpdGhpbiB0aGUgTUxYNSBJbmZpbmliYW5kIGRyaXZlciwgYWx3YXlzIGltcG9ydGFudCBmb3IgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS4gSSBhbHNvIHNlZSBgbXRoY2FfYXJyYXlfc2V0YCwgYG10aGNhX3JlZ191c2VyX21yYCwgYW5kIGBnZXRfbWFwX3BhZ2VgIHdpdGhpbiBgcmRtYXZ0YCwgdGhlc2UgYXJlIGFsbCBkZWVwIGluIHRoZSBndXRzIG9mIHRoZSB1c2VyLXNwYWNlIG1lbW9yeSByZWdpc3RyYXRpb24gaGFuZGxpbmcgZm9yIEluZmluaWJhbmQuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgdG91Y2hpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIEluZmluaWJhbmQgc3RhY2suIFNlZW1zIGxpa2UgYSBmb2N1cyBvbiB1c2VyLXNwYWNlIG1lbW9yeSBoYW5kbGluZywgb3IgbWF5YmUgaW1wcm92ZWQgZmF1bHQgaGFuZGxpbmcgaXMgaW4gcHJvZ3Jlc3MuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBjb25maWdzOiBgQ09ORklHX0lORklOSUJBTkRgLCBgQ09ORklHX0lORklOSUJBTkRfVVNFUl9NRU1gLCBgQ09ORklHX01MWDVfSU5GSU5JQkFORGAsIGBDT05GSUdfSU5GSU5JQkFORF9NVEhDQWAsIGFuZCBgQ09ORklHX0lORklOSUJBTkRfUkRNQVZUYC4gVGhlc2UgY29uZmlybSB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMsIGZvY3VzaW5nIG9uIEluZmluaWJhbmQgYXMgYSB3aG9sZSwgc3BlY2lmaWNhbGx5IGluY2x1ZGluZyBNTFg1IGFuZCBNVEhDQSBkcml2ZXJzLCBhbmQgdGhlIFJETUFWVCBpbXBsZW1lbnRhdGlvbi4KCk5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgY29uZmlncyBhcmUgcmVsYXRlZC4gSSB3aWxsIGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBJbmZpbmliYW5kIGNvbmZpZ3VyYXRpb24gc3BhY2UuIFRoaXMgaXMgd2hlcmUgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogb2YgdGhlc2UgY2hhbmdlcyBtb3JlIGZ1bGx5LCBlc3BlY2lhbGx5IGhvdyB0aGUgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJTkZJTklCQU5EJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyOm1lbnVjb25maWcgSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE2PWlmIElORklOSUJBTkRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE3LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MTg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NQURcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgTUFEIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjI4OmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTM5LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDA6Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NfQ09SRVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTAtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MTpjb25maWcgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7SW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02My1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjY0OmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtSRE1BL0NNXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNzEtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo3Mjpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TX0NPTkZJR0ZTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cdGJvb2xcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04MC1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjgxOmNvbmZpZyBJTkZJTklCQU5EX1ZJUlRfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04Mi1cdGRlZl9ib29sICFISUdITUVNXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9CTkdfUkVcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gTmV4dCBnZW5lcmF0aW9uIFJvQ0UgSENBIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9yZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9yZS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfQk5YVF9SRVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JueHRfcmUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gTmV0eHRyZW1lIEhDQSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfQ1hHQjRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDaGVsc2lvIFQ0L1Q1IFJETUEgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VmYS9LY29uZmlnLTYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZWZhL0tjb25maWc6Nzpjb25maWcgSU5GSU5JQkFORF9FRkFcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lZmEvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7QW1hem9uIEVsYXN0aWMgRmFicmljIEFkYXB0ZXIgKEVGQSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0VSRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QWxpYmFiYSBFbGFzdGljIFJETUEgQWRhcHRlciAoRVJETUEpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSEZJMVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q29ybmVsaXMgT1BYIEdlbjEgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSE5TX0hJUDA4XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0hpc2lsaWNvbiBIaXAwOCBGYW1pbHkgUm9DRSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lvbmljL0tjb25maWctMy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pb25pYy9LY29uZmlnOjQ6Y29uZmlnIElORklOSUJBTkRfSU9OSUNcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pb25pYy9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgUGVuc2FuZG8gRFNDIFJETUEvUm9DRSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lyZG1hL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pcmRtYS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSVJETUFcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pcmRtYS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBFdGhlcm5ldCBQcm90b2NvbCBEcml2ZXIgZm9yIFJETUFcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9NVEhDQVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01lbGxhbm94IEhDQSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWctOS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnOjEwOmNvbmZpZyBJTkZJTklCQU5EX01USENBX0RFQlVHXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9vY3JkbWEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L29jcmRtYS9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfT0NSRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvb2NyZG1hL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0VtdWxleCBPbmUgQ29ubmVjdCBIQ0Egc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9RRURSXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRTG9naWMgUm9DRSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3VzbmljL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9VU05JQ1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L3VzbmljL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZlcmJzIHN1cHBvcnQgZm9yIENpc2NvIFZJQ1wmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9WTVdBUkVfUFZSRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtWTXdhcmUgUGFyYXZpcnR1YWxpemVkIFJETUEgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9SRE1BVlRcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UkRNQSB2ZXJicyB0cmFuc3BvcnQgbGlicmFyeVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVAtb3Zlci1JbmZpbmlCYW5kXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTExLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjEyOmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0NNXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMTMtXHRib29sIFwmIzM0O0lQLW92ZXItSW5maW5pQmFuZCBDb25uZWN0ZWQgTW9kZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTI2LVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjI3OmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0RFQlVHXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMjgtXHRib29sIFwmIzM0O0lQLW92ZXItSW5maW5pQmFuZCBkZWJ1Z2dpbmdcJiMzNDsgaWYgRVhQRVJUXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQxLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjQyOmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0RFQlVHX0RBVEFcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7SVAtb3Zlci1JbmZpbmlCYW5kIGRhdGEgcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9JU0VSXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7aVNDU0kgRXh0ZW5zaW9ucyBmb3IgUkRNQSAoaVNFUilcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJUXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O2lTQ1NJIEV4dGVuc2lvbnMgZm9yIFJETUEgKGlTRVIpIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMi1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjM6Y29uZmlnIElORklOSUJBTkRfUlRSU1xuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctNi1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjc6Y29uZmlnIElORklOSUJBTkRfUlRSU19DTElFTlRcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTgtXHR0cmlzdGF0ZSBcJiMzNDtSVFJTIGNsaWVudCBtb2R1bGVcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy0xNy1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjE4OmNvbmZpZyBJTkZJTklCQU5EX1JUUlNfU0VSVkVSXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O1JUUlMgc2VydmVyIG1vZHVsZVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9TUlBcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfU1JQVFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDgxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoIGZvciBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgd2l0aGluIHNldmVyYWwgSW5maW5pYmFuZCBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyB3b3J0aCBteSB0aW1lIHRvIGZ1eno/JiMzNDsgVGhlIGFuc3dlciBpcyBhIGNsZWFyIHllcy4gVGhlIGNvcmUgY2hhbmdlIGlzIHN3aXRjaGluZyBmcm9tIGBfX2dldF9mcmVlX3BhZ2VgIHRvIGBrbWFsbG9jYC4gTm93LCBgX19nZXRfZnJlZV9wYWdlYCBnaXZlcyB1cyBhIHBhZ2UtYWxpZ25lZCBhZGRyZXNzLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGNlcnRhaW4gRE1BIG9wZXJhdGlvbnMgYW5kIGhhcmR3YXJlIHJlcXVpcmVtZW50cy4gYGttYWxsb2NgLCBvbiB0aGUgb3RoZXIgaGFuZCwgKmRvZXNuJiMzOTt0KiBndWFyYW50ZWUgcGFnZSBhbGlnbm1lbnQsIGV2ZW4gZm9yIGBQQUdFX1NJWkVgIGFsbG9jYXRpb25zLCBhbHRob3VnaCBpbiBwcmFjdGljZSBpdCBvZnRlbiBtaWdodCBiZS4KClRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gVGhlIGhhcmR3YXJlLCBvciB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmLCBtaWdodCAqZXhwZWN0KiBwYWdlLWFsaWduZWQgbWVtb3J5LiBGb3IgZXhhbXBsZSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgbXRoY2FfYXJyYXlfc2V0YC4gRG9lcyB0aGF0IGZ1bmN0aW9uIHJlcXVpcmUgaXRzIHBvaW50ZXIgYXJyYXkgdG8gYmUgcGFnZS1hbGlnbmVkPyBMZXQmIzM5O3MgZGlnIGRlZXBlcjogYG10aGNhX3JlZ191c2VyX21yYCBhbGxvY2F0ZXMgYHBhZ2VzID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO2AgYW5kIHRoZW4gcGFzc2VzIHRoaXMgbWVtb3J5IHRvIGBtdGhjYV93cml0ZV9tdHRgLiBEb2VzIGBtdGhjYV93cml0ZV9tdHRgIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgcGFnZSBhbGlnbm1lbnQ/IFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIFRoZW4gdGhlcmUgaXMgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYCBhbGxvY2F0ZXMgYHdxZV9zdGFydCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtgIGFuZCBgX19pYl91bWVtX2dldF92YWAgYWxsb2NhdGVzIGBwYWdlX2xpc3QgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7YCBhbG9uZyB3aXRoIGBnZXRfbWFwX3BhZ2VgIGluIGByZG1hdnRgLCBhbGxvY2F0aW5nIGBwYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO2AuIEFsbCBvZiB0aGVzZSBjb3VsZCBiZSB0YXJnZXRzLgoKVGhpcyBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBhIHByaW1lIHNwb3QgZm9yIGludHJvZHVjaW5nIGJ1Z3MsIGVzcGVjaWFsbHkgaWYgdGhlIGhhcmR3YXJlIGV4cGVjdHMgcGFnZS1hbGlnbmVkIG1lbW9yeSBmb3IgRE1BLCBvciBpZiB0aGUgY29kZSBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCBwYWdlIGFsaWdubWVudC4gV2FpdCwgYSBuZXcgdGhvdWdodCwgSSByZW1lbWJlciB0aGF0IGBrbWFsbG9jYCBtZW1vcnkgaXNuJiMzOTt0ICpndWFyYW50ZWVkKiB0byBiZSBETUEtYWJsZSBpbiBhbGwgY2FzZXMsIG9yIGlzIHRoYXQgdHJ1ZT8gQWN0dWFsbHksIGBrbWFsbG9jYCAqaXMqIERNQS1hYmxlLCBidXQgdGhlIHBhZ2UgYWxpZ25tZW50IG1pZ2h0IGNyZWF0ZSBwcm9ibGVtcy4gSGFuZyBvbiwgd2FzbiYjMzk7dCBga21hbGxvYyhQQUdFX1NJWkUpYCBndWFyYW50ZWVkIHRvIGJlIHBoeXNpY2FsbHkgY29udGlndW91cz8gWWVzLCBpdCBpcywganVzdCBsaWtlIGBfX2dldF9mcmVlX3BhZ2VgLgoKT2theSwgYmFjayBvbiB0cmFjaywgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLgoKTm93LCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgd2UgdGFsa2luZyBhYm91dD8gYElORklOSUJBTkRgLCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGBJTkZJTklCQU5EX01USENBYCwgYE1MWDVfSU5GSU5JQkFORGAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLiBCdXQsIGBNTFg1X0lORklOSUJBTkRgIGlzIHRoZSBjb25maWcgZm9yIG1seDUgaWI7IGxldCBtZSBqdXN0IGNvbmZpcm0gaXRzIGV4YWN0IG5hbWUgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1MWDVfSU5GSU5JQkFORCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9LY29uZmlnOjI6Y29uZmlnIE1MWDVfSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzA3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMzA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgRm9jdXM6IEluZmluaWJhbmQgYW5kIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBJbmZpbmliYW5kIGFuZCBwb3NzaWJsZSBhcmVhcyBmb3IgZnV6emluZyB3aXRoIHN5emthbGxlci4gVGhlIGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBNTFg1X0lORklOSUJBTkRgIGRyaXZlciwgdGhhdCBpcyB0aGUgb2J2aW91cyBjaG9pY2UgdG8gbG9vayBhdCBmaXJzdC4gQW5kIHllcywgSSBuZWVkIHRvIHJlbWVtYmVyIGBJTkZJTklCQU5EX01USENBYCBhbmQgYElORklOSUJBTkRfUkRNQVZUYCBhcmUgYWxzbyBjcml0aWNhbCBjb21wb25lbnRzLiBMZXQmIzM5O3Mgbm90IGZvcmdldCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGFsbCBvZiB0aGVzZSBhcmUgaW1wb3J0YW50IGRyaXZlcnMgdG8gY29uc2lkZXIuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gc3BlY2lmaWMgZnVuY3Rpb25zLiBUaGUgZ3JlcHBlciBvdXRwdXQgbGVkIG1lIHRvIGBfX2liX3VtZW1fZ2V0X3ZhYC4gV2FpdCwgdGhhdCYjMzk7cyBzdGF0aWMgd2l0aGluIGBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNgLiBCdXQgc3l6a2FsbGVyICpjYW4qIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSYjMzk7cmUgZXhwb3NlZCBpbiB0aGUgZGVidWcgaW5mbywgc28gdGhhdCYjMzk7cyBhIHBvdGVudGlhbCB0YXJnZXQuIFRoaXMgaXMgdmVyeSBpbnRlcmVzdGluZyBiZWNhdXNlIHN5emthbGxlciYjMzk7cyBhYmlsaXR5IHRvIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnMgdGhhdCBhcmUgdXN1YWxseSBvdmVybG9va2VkIG1pZ2h0IHVuY292ZXIgbmV3IGJ1Z3MuCgpBbHNvIG9uIHRoZSBsaXN0IGFyZSBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLCBgbXRoY2FfYXJyYXlfc2V0YCwgYW5kIGBtdGhjYV9yZWdfdXNlcl9tcmAuIFRoZXNlIGFyZSBvdGhlciBpbXBvcnRhbnQgZnVuY3Rpb25zLgoKSSB3YXMgbG9va2luZyBhdCBgZ2V0X21hcF9wYWdlYCB3aGljaCBpcyBzdGF0aWMgd2l0aGluIGBkcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNgLiBJdCBpcyBjYWxsZWQgZnJvbSBgaW5pdF9xcG5fdGFibGVgIGFuZCBgYWxsb2NfcXBuYC4gU2luY2UgSSBhbSBhbHJlYWR5IGluIHRoZSBgcmRtYXZ0YCBhcmVhLCBgYWxsb2NfcXBuYCBtaWdodCBiZSBhIGJldHRlciBmb2N1cy4gSSBzaG91bGQgY2hlY2sgdGhhdCBvbmUgaW4gYHJkbWF2dGAgc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZm9jdXNpbmcgb24gdGhlIG1vc3QgcHJvbWlzaW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsbG9jX3FwbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWEuaD0xODM9c3RydWN0IGVyZG1hX2RldiB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hLmgtMjA3LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hLmg6MjA4Olx0dTMyIG5leHRfYWxsb2NfcXBuO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hLmgtMjA5LVx0dTMyIG5leHRfYWxsb2NfY3FuO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYV9tYWluLmM9NTM3PXN0YXRpYyBpbnQgZXJkbWFfaWJfZGV2aWNlX2FkZChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jLTU3Ny1cdGRldi1cdTAwM2VuZXh0X2FsbG9jX2NxbiA9IDE7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jOjU3ODpcdGRldi1cdTAwM2VuZXh0X2FsbG9jX3FwbiA9IDE7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jLTU3OS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfdmVyYnMuYz05OTY9aW50IGVyZG1hX2NyZWF0ZV9xcChzdHJ1Y3QgaWJfcXAgKmlicXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmF0dHJzLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYV92ZXJicy5jLTEwMzMtXHRcdFx0XHQgICAgICBYQV9MSU1JVCgxLCBkZXYtXHUwMDNlYXR0cnMubWF4X3FwIC0gMSksXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfdmVyYnMuYzoxMDM0Olx0XHRcdFx0ICAgICAgXHUwMDI2ZGV2LVx1MDAzZW5leHRfYWxsb2NfcXBuLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYV92ZXJicy5jLTEwMzUtXHR9XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jPTIwMD1zdGF0aWMgdTggZ2V0X2xlYXN0X2xvYWRfYmFua2lkX2Zvcl9xcChzdHJ1Y3QgaG5zX3JvY2VfYmFuayAqYmFuaywgdTggdmFsaWRfcXBfYmFua19tYXNrKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYy0yMjEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM6MjIyOnN0YXRpYyBpbnQgYWxsb2NfcXBuX3dpdGhfYmFua2lkKHN0cnVjdCBobnNfcm9jZV9iYW5rICpiYW5rLCB1OCBiYW5raWQsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjIzLVx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgKnFwbilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM9MjUxPXN0YXRpYyB1OCBzZWxlY3RfcXBfYmFua2lkKHN0cnVjdCBobnNfcm9jZV9kZXYgKmhyX2Rldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjc4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jOjI3OTpzdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgaG5zX3JvY2VfZGV2ICpocl9kZXYsIHN0cnVjdCBobnNfcm9jZV9xcCAqaHJfcXAsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjgwLVx0XHQgICAgIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cilcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjkxLVx0XHRiYW5raWQgPSBzZWxlY3RfcXBfYmFua2lkKGhyX2RldiwgaW5pdF9hdHRyKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYzoyOTI6XHRcdHJldCA9IGFsbG9jX3Fwbl93aXRoX2JhbmtpZChcdTAwMjZxcF90YWJsZS1cdTAwM2ViYW5rW2JhbmtpZF0sIGJhbmtpZCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYy0yOTMtXHRcdFx0XHRcdCAgICBcdTAwMjZudW0pO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYz0xMTY1PXN0YXRpYyBpbnQgaG5zX3JvY2VfY3JlYXRlX3FwX2NvbW1vbihzdHJ1Y3QgaG5zX3JvY2VfZGV2ICpocl9kZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jLTEyMTAtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM6MTIxMTpcdHJldCA9IGFsbG9jX3Fwbihocl9kZXYsIGhyX3FwLCBpbml0X2F0dHIpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jLTEyMTItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTQ3MT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIG1rX3FwbihzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00NzctLyoqXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6NDc4OiAqIGFsbG9jX3FwbiAtIEFsbG9jYXRlIHRoZSBuZXh0IGF2YWlsYWJsZSBxcG4gb3IgemVyby9vbmUgZm9yIFFQIHR5cGVcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00NzktICpcdCAgICAgICBJQl9RUFRfU01JL0lCX1FQVF9HU0lcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDg3LSAqL1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jOjQ4ODpzdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDg5LVx0XHQgICAgIGVudW0gaWJfcXBfdHlwZSB0eXBlLCB1OCBwb3J0X251bSwgdTggZXhjbHVkZV9wcmVmaXgpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTQ5Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo0OTc6XHRpZiAocmRpLVx1MDAzZWRyaXZlcl9mLmFsbG9jX3FwbilcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo0OTg6XHRcdHJldHVybiByZGktXHUwMDNlZHJpdmVyX2YuYWxsb2NfcXBuKHJkaSwgcXB0LCB0eXBlLCBwb3J0X251bSk7XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDk5LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz0xMDI2PWludCBydnRfY3JlYXRlX3FwKHN0cnVjdCBpYl9xcCAqaWJxcCwgc3RydWN0IGliX3FwX2luaXRfYXR0ciAqaW5pdF9hdHRyLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0xMTYwLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jOjExNjE6XHRcdHJldCA9IGFsbG9jX3FwbihyZGksIFx1MDAyNnJkaS1cdTAwM2VxcF9kZXYtXHUwMDNlcXBuX3RhYmxlLFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTExNjItXHRcdFx0XHRpbml0X2F0dHItXHUwMDNlcXBfdHlwZSxcbi0tXG5pbmNsdWRlL3JkbWEvcmRtYV92dC5oPTE5OD1zdHJ1Y3QgcnZ0X2RyaXZlcl9wcm92aWRlZCB7XG4tLVxuaW5jbHVkZS9yZG1hL3JkbWFfdnQuaC0zNDAtXHQvKiBMZXQgdGhlIGRyaXZlciBwaWNrIHRoZSBuZXh0IHF1ZXVlIHBhaXIgbnVtYmVyKi9cbmluY2x1ZGUvcmRtYS9yZG1hX3Z0Lmg6MzQxOlx0aW50ICgqYWxsb2NfcXBuKShzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG5pbmNsdWRlL3JkbWEvcmRtYV92dC5oLTM0Mi1cdFx0XHQgZW51bSBpYl9xcF90eXBlIHR5cGUsIHUzMiBwb3J0X251bSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MjIwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgSW52ZXN0aWdhdGlvbiBpbnRvIEtleSBJbmZpbmliYW5kIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb25zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBrZXkgc3ltYm9scyB3aXRoaW4gdGhlIEluZmluaWJhbmQgY29kZSB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgYW5kIHRoZW4gY29ycmVsYXRlIHRob3NlIHdpdGggcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCkZpcnN0LCBJIHNlZSBgYWxsb2NfcXBuYCB3aXRoaW4gYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY2AuIEl0JiMzOTtzIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdXNlIGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIGBydnRfY3JlYXRlX3FwYCBpcyBleHBvcnRlZC4gVGhhdCBzZWVtcyBsaWtlIGEgbXVjaCBiZXR0ZXIgZm9jdXMgc3ltYm9sIGZvciB0aGUgcmRtYXZ0IHBvcnRpb24sIHNvIEkmIzM5O2xsIHByaW9yaXRpemUgdGhhdC4KClRoZW4sIHRoZXJlJiMzOTtzIGBtdGhjYV9hcnJheV9zZXRgLiBBIHF1aWNrIGNoZWNrIHNob3dzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgbXRoY2FfaW5pdF9jcWAsIGBtdGhjYV9hbGxvY19xcGAsIGBtdGhjYV9hbGxvY19zcXBgLCBhbmQgYG10aGNhX2FsbG9jX3NycWAuIEdpdmVuIHRoYXQgdXNhZ2UsIGBtdGhjYV9hcnJheV9zZXRgIGxvb2tzIGxpa2UgYSBzb2xpZCBmb2N1cyBzeW1ib2wgZm9yIHRoZSBNZWxsYW5veC1zcGVjaWZpYyBjb2RlLgoKU2ltaWxhcmx5LCBgbXRoY2FfcmVnX3VzZXJfbXJgIGFwcGVhcnMgdG8gYmUgYW5vdGhlciBnb29kIGNhbmRpZGF0ZS4KCk1vdmluZyBvbiwgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYCBhbHNvIHN0YW5kcyBvdXQgYXMgYSBwcm9taXNpbmcgZm9jdXMgc3ltYm9sLgoKRmluYWxseSwgcmVnYXJkaW5nIHVzZXIgbWVtb3J5LCBgX19pYl91bWVtX2dldF92YWAgaXMgY2FsbGVkIGJ5IGBpYl91bWVtX2dldF9kZXNjYCwgc28gZWl0aGVyIG9mIHRob3NlIGlzIHN1aXRhYmxlLiBJJiMzOTtsbCBwcm9iYWJseSBjaGVjayBib3RoLgoKTm93LCBsZXQmIzM5O3MgcGl2b3QgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hpY2ggb25lcyBhcmUgaW52b2x2ZWQgaW4gdGhlc2UgY29kZSBwYXRocy4gSSYjMzk7dmUgbm90ZWQgYElORklOSUJBTkRgLCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGBJTkZJTklCQU5EX01USENBYCwgYE1MWDVfSU5GSU5JQkFORGAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLgoKV2FpdCwgYElORklOSUJBTkRfVVNFUl9NRU1gIGlzIGEgYm9vbGVhbi4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgdGhhdC4gQXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzPyBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gbm93IGN1cmlvdXMgd2hldGhlciBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCBoYXMgYW55IGJlYXJpbmcgb24gdGhlIG9wZXJhdGlvbiBvZiBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLiBUaGF0IHNlZW1zIGxpa2UgYW4gb2J2aW91cyBwbGFjZSB0byBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM9MTM4ND1zdGF0aWMgaW5saW5lIHN0cnVjdCBtbHg1X2liX3NycSAqcmVzX3RvX3NycShzdHJ1Y3QgbWx4NV9jb3JlX3JzY19jb21tb24gKnJlcylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xMzkxLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM6MTM5MjpzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTMtXHRcdFx0XHRcdCAgc3RydWN0IG1seDVfcGFnZWZhdWx0ICpwZmF1bHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM9MTYxOD1zdGF0aWMgdm9pZCBtbHg1X2liX3BmYXVsdChzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldiwgc3RydWN0IG1seDVfcGFnZWZhdWx0ICpwZmF1bHQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTYyMy1cdGNhc2UgTUxYNV9QRkFVTFRfU1VCVFlQRV9XUUU6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxNjI0Olx0XHRtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihkZXYsIHBmYXVsdCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xNjI1LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0MzkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgb2RwLmNgKioKCkFscmlnaHQsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHdoZXRoZXIgYG9kcC5jYCBpcyBiZWluZyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBUaGF0JiMzOTtzIHRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiB0aGVyZSYjMzk7cyBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBsaWtlIGAjaWZkZWZgLCBgI2lmYCwgb3Igc2ltaWxhciBndWFyZGluZyBpdHMgY29tcGlsYXRpb24gcGF0aC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJlc2VuY2UgKG9yIGFic2VuY2UpIG9mIHRoaXMgc3BlY2lmaWMgY29kZSBpcyBkZXBlbmRlbnQgb24gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3IgZW52aXJvbm1lbnQuIEl0IGRpY3RhdGVzIHRoZSBpbmNsdXNpb24gb3IgZXhjbHVzaW9uIG9mIHRoaXMgZmlsZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIEFyZSB0aGVyZSBmbGFncz8gQXJlIHRoZXJlIGRlZmluZXM/IEkgbmVlZCB0byBrbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZHBcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL01ha2VmaWxlPTIxPWliX2NvcmUtJChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgJiM0Mzs9IHVtZW0ubyB1bWVtX2RtYWJ1Zi5vXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9NYWtlZmlsZToyMjppYl9jb3JlLSQoQ09ORklHX0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lORykgJiM0Mzs9IHVtZW1fb2RwLm9cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL01ha2VmaWxlLTIzLWliX2NvcmUtJChDT05GSUdfSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFKSAmIzQzOz0gaWJfY29yZV91dmVyYnMub1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L01ha2VmaWxlPTQ9bWx4NV9pYi15IDo9IGFoLm8gXFxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9NYWtlZmlsZS0yNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L01ha2VmaWxlOjI4Om1seDVfaWItJChDT05GSUdfSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HKSAmIzQzOz0gb2RwLm9cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L01ha2VmaWxlLTI5LW1seDVfaWItJChDT05GSUdfTUxYNV9FU1dJVENIKSAmIzQzOz0gaWJfcmVwLm9cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlPTQ9cmRtYV9yeGUteSA6PSBcXFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGUtMjgtXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlOjI5OnJkbWFfcnhlLSQoQ09ORklHX0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lORykgJiM0Mzs9IHJ4ZV9vZHAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk4MgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19JTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdgIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQgaW4gdGhpcyBjb250ZXh0LiBOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBzZXQgb2YgY29uZmlncyBhcmU6IGBJTkZJTklCQU5EYCwgYElORklOSUJBTkRfVVNFUl9NRU1gLCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCwgYE1MWDVfSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX01USENBYCwgYW5kIGBJTkZJTklCQU5EX1JETUFWVGAuCgpNeSBuZXh0IHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGRlcGVuZGVuY3kgb2YgYElORklOSUJBTkRfVVNFUl9NRU1gLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGltcGxpY2l0bHkgZW5hYmxlZCBkdWUgdG8gb3RoZXIgY29uZmlndXJhdGlvbnMsIG9yIGlmIGl0IHJlcXVpcmVzIGV4cGxpY2l0IHVzZXIgaW50ZXJ2ZW50aW9uLiBJdCYjMzk7cyBhIGJvb2xlYW4gY29uZmlndXJhdGlvbiwgc28gbGV0JiMzOTtzIHF1aWNrbHkgZXhhbWluZSBpdHMgZGVmaW5pdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gdG8gZmlndXJlIHRoaXMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00MD1jb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDEzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29uZmlnJiMzOTtzIEFjdGl2YXRpb24qKgoKT2theSwgc28gdGhpcyBjb25maWd1cmF0aW9uIGlzIGEgYm9vbGVhbiwgYW5kIGNydWNpYWxseSwgaXQgZG9lc24mIzM5O3QgaGF2ZSBhIGRpcmVjdCBwcm9tcHQuIFRoYXQgbWVhbnMgdGhlIHVzZXIgY2FuJiMzOTt0IHR1cm4gaXQgb24gb3Igb2ZmIGRpcmVjdGx5LiBJdHMgc3RhdGUgaXMgZGV0ZXJtaW5lZCBieSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zLiBUaGlzIG1lYW5zIGl0cyBiZWhhdmlvciBpcyBjb25kaXRpb25hbCBhbmQgZGVwZW5kZW50IG9uIHRoZSBzZXR0aW5ncyBvZiByZWxhdGVkIGl0ZW1zLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgcHJlY2lzZWx5IHdoYXQgb3RoZXIgY29uZmlncyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBvciBhY3RpdmF0aW5nIHRoaXMgcGFydGljdWxhciBvbmUuIEkgaGF2ZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBJTkZJTklCQU5EX1VTRVJfTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1OTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFVudXNlZCBJbmZpbmliYW5kIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCkhtbSwgSSYjMzk7bSBnZXR0aW5nIGEgbmFnZ2luZyBmZWVsaW5nLiBDb3VsZCBpdCBiZSB0aGF0IGBzZWxlY3QgSU5GSU5JQkFORF9VU0VSX01FTWAgaXMgYWN0dWFsbHkgKm5vdCogYmVpbmcgdXNlZCBhbnl3aGVyZT8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGJlZm9yZSBJIHNwZW5kIGFueSBtb3JlIHRpbWUgb24gaXQuIEEgcXVpY2sgY2hlY2sgc2VlbXMgd2FycmFudGVkLiBBbHJpZ2h0LCB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIHRoYXQga2luZCBvZiBpbmZvcm1hdGlvbiwgZXNwZWNpYWxseSBpbiB0aGUgY29udGV4dCBvZiBJbmZpbmliYW5kLCB3b3VsZCBkZWZpbml0ZWx5IGJlIHdpdGhpbiB0aGUgSW5maW5pYmFuZCBkcml2ZXIgY29uZmlndXJhdGlvbiBmaWxlcyB0aGVtc2VsdmVzLiBUaGVyZWZvcmUsIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnYCBmaWxlIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIGNvcnJlc3BvbmRpbmcgYGNvbmZpZ2Agc3ltYm9sIGFuZCB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGV2ZW4gYSBkaXJlY3QgY2FsbCB0byB0aGF0IGBzZWxlY3RgIHN0YXRlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SU5GSU5JQkFORF9VU0VSX01FTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00MD1jb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9NTE9Y29uZmlnIElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTItXHRib29sIFwmIzM0O0luZmluaUJhbmQgb24tZGVtYW5kIHBhZ2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MzpcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTQtXHRzZWxlY3QgTU1VX05PVElGSUVSXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvTWFrZWZpbGU9MjA9aWJfY29yZS0kKENPTkZJR19DR1JPVVBfUkRNQSkgJiM0Mzs9IGNncm91cC5vXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9NYWtlZmlsZToyMTppYl9jb3JlLSQoQ09ORklHX0lORklOSUJBTkRfVVNFUl9NRU0pICYjNDM7PSB1bWVtLm8gdW1lbV9kbWFidWYub1xuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvTWFrZWZpbGUtMjItaWJfY29yZS0kKENPTkZJR19JTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcpICYjNDM7PSB1bWVtX29kcC5vXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz04NTc9c3RydWN0IGliX21yICptbHg1X2liX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTg2NS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6ODY2Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNKSB8fFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy04NjctXHQgICAgKChhY2Nlc3NfZmxhZ3MgXHUwMDI2IElCX0FDQ0VTU19PTl9ERU1BTkQpIFx1MDAyNlx1MDAyNiBkbWFoKSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTEwMzg9c3RydWN0IGliX21yICptbHg1X2liX3JlZ191c2VyX21yX2RtYWJ1ZihzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgb2Zmc2V0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTA0Ny1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTA0ODpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgfHxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTA0OS1cdCAgICAhSVNfRU5BQkxFRChDT05GSUdfSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HKSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jPTExNjY9c3RydWN0IGliX21yICptbHg1X2liX3JlcmVnX3VzZXJfbXIoc3RydWN0IGliX21yICppYl9tciwgaW50IGZsYWdzLCB1NjQgc3RhcnQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMTc0LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxMTc1Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNKSB8fCBtci1cdTAwM2VkYXRhX2RpcmVjdCB8fFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMTc2LVx0ICAgIChtci1cdTAwM2VpYm1yLmZybXIua2V5Lmtlcm5lbF92ZW5kb3Jfa2V5IFx1MDAyNlxuLS1cbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg9Nzk9c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZTtcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmgtODAtXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oOjgxOiNpZmRlZiBDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTVxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC04Mi1cbi0tXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oPTE4MT1pbnQgaWJfdW1lbV9jaGVja19yZXJlZyhzdHJ1Y3QgaWJfdW1lbSAqdW1lbSwgaW50IGZsYWdzLCBpbnQgbmV3X2FjY2Vzc19mbGFncyk7XG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oLTE4Mi1cbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg6MTgzOiNlbHNlIC8qIENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNICovXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oLTE4NC1cbi0tXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oPTI5NT1zdGF0aWMgaW5saW5lIGludCBpYl91bWVtX2NoZWNrX3JlcmVnKHN0cnVjdCBpYl91bWVtICp1bWVtLCBpbnQgZmxhZ3MsXG4tLVxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC0zMDAtXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oOjMwMTojZW5kaWYgLyogQ09ORklHX0lORklOSUJBTkRfVVNFUl9NRU0gKi9cbmluY2x1ZGUvcmRtYS9pYl91bWVtLmgtMzAyLSNlbmRpZiAvKiBJQl9VTUVNX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MjEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBJbmZpbmliYW5kIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuIEkmIzM5O20gc2VlaW5nIGBJTkZJTklCQU5EX1VTRVJfTUVNYCBnZXQgc2VsZWN0ZWQsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIGJlaW5nIGRyaXZlbiBieSBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGRlcGVuZGVuY3kgaXNzdWUg4oCTIGFuZCBpdOKAmXMgYWx3YXlzIGNydWNpYWwgdG8gdmVyaWZ5IHRob3NlIHJlbGF0aW9uc2hpcHMuIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AgaXMgaW5kZWVkIHRoZSBkZWNpZGluZyBmYWN0b3IgaGVyZSwgdGhlIHBhcmVudCBvcHRpb24gdGhhdCYjMzk7cyB0cmlnZ2VyaW5nIHRoaXMgc2VsZWN0aW9uLiBMZXQmIzM5O3MgZGl2ZSBpbiBhbmQgY29uZmlybSB0aGF0IGRlcGVuZGVuY3kgY2hhaW4uIE5lZWQgdG8gZ28gYmFjayBhbmQgZXhhbWluZSBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0xOD1jb25maWcgSU5GSU5JQkFORF9VU0VSX01BRFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI3LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6Mjg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgYWNjZXNzICh2ZXJicyBhbmQgQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMzktXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0MDpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00MS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyOTMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgSW5maW5pYmFuZCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgSW5maW5pYmFuZCBkcml2ZXIgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBpdCYjMzk7cyBkZWZpbmVkLiBNeSBndXQgdGVsbHMgbWUgdGhhdCB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGJlIGxhaWQgb3V0IGluIHRoZSBgS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgbGluZSAyOCBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O2xsIGxpa2VseSBmaW5kIHRoZSB0b3AtbGV2ZWwgZGVmaW5pdGlvbnMgb3IgcGVyaGFwcyBhIHNlY3Rpb24gdGhhdCYjMzk7cyByZWxldmFudCB0byB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gdGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFzIHRvIHdoaWNoIG9wdGlvbnMgYXJlIGNyaXRpY2FsIGZvciBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhlIEluZmluaWJhbmQgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0XHRkZXBlbmRzIG9uIElORklOSUJBTkRcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgVXNlcnNwYWNlIEluZmluaUJhbmQgTWFuYWdlbWVudCBEYXRhZ3JhbSAoTUFEKSBzdXBwb3J0LiAgVGhpc1xuICAyMzpcdFx0ICBpcyB0aGUga2VybmVsIHNpZGUgb2YgdGhlIHVzZXJzcGFjZSBNQUQgc3VwcG9ydCwgd2hpY2ggYWxsb3dzXG4gIDI0Olx0XHQgIHVzZXJzcGFjZSBwcm9jZXNzZXMgdG8gc2VuZCBhbmQgcmVjZWl2ZSBNQURzLiBZb3Ugd2lsbCBhbHNvXG4gIDI1Olx0XHQgIG5lZWQgbGliaWJ1bWFkIGZyb20gcmRtYS1jb3JlXG4gIDI2Olx0XHQgIFx1MDAzY2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZVx1MDAzZS5cbiAgMjc6XHRcbiAgMjg6XHRjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xuICAyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgYWNjZXNzICh2ZXJicyBhbmQgQ00pXCYjMzQ7XG4gIDMwOlx0XHRkZXBlbmRzIG9uIE1NVVxuICAzMTpcdFx0aGVscFxuICAzMjpcdFx0ICBVc2Vyc3BhY2UgSW5maW5pQmFuZCBhY2Nlc3Mgc3VwcG9ydC4gIFRoaXMgZW5hYmxlcyB0aGVcbiAgMzM6XHRcdCAga2VybmVsIHNpZGUgb2YgdXNlcnNwYWNlIHZlcmJzIGFuZCB0aGUgdXNlcnNwYWNlXG4gIDM0Olx0XHQgIGNvbW11bmljYXRpb24gbWFuYWdlciAoQ00pLiAgVGhpcyBhbGxvd3MgdXNlcnNwYWNlIHByb2Nlc3Nlc1xuICAzNTpcdFx0ICB0byBzZXQgdXAgY29ubmVjdGlvbnMgYW5kIGRpcmVjdGx5IGFjY2VzcyBJbmZpbmlCYW5kXG4gIDM2Olx0XHQgIGhhcmR3YXJlIGZvciBmYXN0LXBhdGggb3BlcmF0aW9ucy4gIFlvdSB3aWxsIGFsc28gbmVlZFxuICAzNzpcdFx0ICBsaWJpYnZlcmJzLCBsaWJpYmNtIGFuZCBhIGhhcmR3YXJlIGRyaXZlciBsaWJyYXJ5IGZyb21cbiAgMzg6XHRcdCAgcmRtYS1jb3JlIFx1MDAzY2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZVx1MDAzZS5cbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXG4gIDQxOlx0XHRib29sXG4gIDQyOlx0XHRkZWZhdWx0IHkgaWYgSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cbiAgNDU6XHRcdGJvb2xcbiAgNDY6XHRcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXG4gIDQ3Olx0XHRkZXBlbmRzIG9uIE1NVVxuICA0ODpcdFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG4gIDQ5Olx0XHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5NDIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgSW5maW5pYmFuZCBNZW1vcnkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IGBJTkZJTklCQU5EX1VTRVJfTUVNYCBkZWZhdWx0cyB0byBiZWluZyBlbmFibGVkICgmIzM0O3kmIzM0OykgaWYgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGlzbiYjMzk7dCBleHBsaWNpdGx5IGRpc2FibGVkICgmIzM0O24mIzM0OykgYW5kIHRoZSBNZW1vcnkgTWFuYWdlbWVudCBVbml0IChNTVUpIGlzIHByZXNlbnQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBJdCBtZWFucyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBlbmFibGUgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGluIG91ciBjdXJyZW50IHNldHVwLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgc2V0IGFwcHJvcHJpYXRlbHkuCgpBbmQgd2hpbGUgSSYjMzk7bSBoZXJlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AuIEkgcmVjYWxsIGl0JiMzOTtzIGEgYm9vbGVhbiBjb25maWcgb3B0aW9uLCBzbyBJIHNob3VsZCBzZWUgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhhdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgbG9va3MgbGlrZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MDpcdFxuICA1MTpcdGNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcbiAgNTI6XHRcdGJvb2wgXCYjMzQ7SW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcJiMzNDtcbiAgNTM6XHRcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX01FTVxuICA1NDpcdFx0c2VsZWN0IE1NVV9OT1RJRklFUlxuICA1NTpcdFx0c2VsZWN0IElOVEVSVkFMX1RSRUVcbiAgNTY6XHRcdHNlbGVjdCBITU1fTUlSUk9SXG4gIDU3Olx0XHRkZWZhdWx0IHlcbiAgNTg6XHRcdGhlbHBcbiAgNTk6XHRcdCAgT24gZGVtYW5kIHBhZ2luZyBzdXBwb3J0IGZvciB0aGUgSW5maW5pQmFuZCBzdWJzeXN0ZW0uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzY0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gRW5hYmxpbmcgUHJvY2VzcyoqCgpPa2F5LCBzbyB0aGUgc3lzdGVtIGlzIGRlZmF1bHRpbmcgdG8gJiMzOTt5JiMzOTssIHdoaWNoIGlzIGdvb2QgdG8ga25vdyDigJMgaXQgZ2l2ZXMgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gTm93LCB0byBlbmFibGUgdGhlIEluZmluaUJhbmQgZmVhdHVyZXMgSSBuZWVkLCBJIGhhdmUgdG8gZW5zdXJlIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgYXJlIHNldDogYElORklOSUJBTkRgLCBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AsIGBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdgLCBgTUxYNV9JTkZJTklCQU5EYCwgYElORklOSUJBTkRfTVRIQ0FgLCBhbmQgYElORklOSUJBTkRfUkRNQVZUYC4gVGhhdCBsaXN0IGlzIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZ2V0dGluZyB0aGluZ3MgbW92aW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24uIAoKU2luY2UgSSYjMzk7bSBlbmFibGluZyBgTUxYNV9JTkZJTklCQU5EYCwgSSBzaG91bGQgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVuY2llcyBpbnZvbHZlZCBmb3IgdGhhdCBjb25maWd1cmF0aW9uLCB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCBpc3N1ZXMgbGF0ZXIgb24uIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGhhbmRsZWQgZm9yIHRoYXQgcGFydGljdWxhciBiaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTFg1X0lORklOSUJBTkQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZzoyOmNvbmZpZyBNTFg1X0lORklOSUJBTkRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc3NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgdGhlIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9LY29uZmlnYCBmaWxlLCBwcmVzZW50ZWQgYXMgbXkgb3duIGludGVybmFsIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1MWDUgS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTUxYNSBJbmZpbmliYW5kIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBiZWluZyBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgaXQmIzM5O3Mgc3RydWN0dXJlZC4gVGhpcyBLY29uZmlnIGZpbGUgaXMgdGhlIGdhdGVrZWVwZXIsIHJlYWxseSwgZGVmaW5pbmcgd2hhdCBjYW4gYmUgdHdlYWtlZCBhdCBidWlsZCB0aW1lLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb3JlIGZlYXR1cmVzIGZpcnN0LCB0aGUgY3J1Y2lhbCBidWlsZGluZyBibG9ja3MuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBpbmNsdXNpb25zIGJhc2VkIG9uIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBvdGhlciBkcml2ZXIgY29tcG9uZW50cz8KCknigJltIGltbWVkaWF0ZWx5IHNjYW5uaW5nIGZvciB0aGUgYENPTkZJR19NTFg1X0NPUkVgIG9wdGlvbiDigJMgdGhhdCYjMzk7cyBnb3R0YSBiZSB0aGUgcm9vdCwgdGhlIGZ1bmRhbWVudGFsIGVuYWJsZSBmb3IgdGhlIGRyaXZlciBpdHNlbGYuIFdoYXQgZWxzZSBoaW5nZXMgb24gdGhhdD8gT2theSwgZ29vZCwgaXTigJlzIGxvZ2ljYWxseSBvcmdhbml6ZWQsIHdpdGggZGVwZW5kZW5jaWVzIGNsZWFybHkgZGVmaW5lZC4gSSYjMzk7bSBjaGVja2luZyBmb3IgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgZmVhdHVyZXMuIEFyZSB0aGVyZSBvcHRpb25zIGZvciBlbmFibGluZyBzcGVjaWZpYyBoYXJkd2FyZSBvZmZsb2Fkcywgb3IgZmVhdHVyZXMgbGlrZSBwYWNrZXQgcGFjaW5nPyBBcmUgdGhlcmUgYW55IGV4cGVyaW1lbnRhbCBvciBkZWJ1ZyBvcHRpb25zPyBUaG9zZSBhcmUgaW1wb3J0YW50IHRvIHNwb3QsIHNvIEkga25vdyB3aGljaCBmbGFncyB0byBsb29rIG91dCBmb3Igd2hlbiBJJiMzOTttIGRlYnVnZ2luZyBhIG5ldyBpbnN0YWxsYXRpb24uCgpJJiMzOTttIGFsc28gbG9va2luZyBmb3IgZGV0YWlscyBvbiB3aGF0IGdldHMgYnVpbHQgaW50byB0aGUga2VybmVsIGJ5IGRlZmF1bHQsIHZlcnN1cyB3aGF0JiMzOTtzIG1vZHVsZS1lbmFibGVkLiBJcyB0aGVyZSBhIGNsZWFyIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgZXNzZW50aWFsIGJhc2UgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIG1vcmUgc3BlY2lhbGl6ZWQgb3IgcG90ZW50aWFsbHkgb3B0aW9uYWwgZmVhdHVyZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhIGhhbmRsZSBvbiBpbWFnZSBzaXplIGFuZCBib290LXVwIHRpbWUuCgpBbmQgZmluYWxseSwgSSYjMzk7bSBjaGVja2luZyB0aGUgaGVscCB0ZXh0IGZvciBlYWNoIG9wdGlvbi4gVGhlIGRlc2NyaXB0aW9ucyBuZWVkIHRvIGJlIGNsZWFyIGFuZCBjb25jaXNlLiBJZiBhIHVzZXIgaXMgY29uZnVzZWQgYnkgdGhlIHdvcmRpbmcsIHRoZW4gbXkgdGVhbSB3aWxsIGJlIHRoZSBvbmVzIHRoYXQgaGF2ZSB0byBleHBsYWluIGl0LiBBcmUgdGhleSB1c2luZyB0aGUgY29ycmVjdCB0ZXJtaW5vbG9neT8gRG9lcyB0aGUgaGVscCBzZWN0aW9uIHByb3ZpZGUgc3VmZmljaWVudCBjb250ZXh0IGZvciB1bmRlcnN0YW5kaW5nIHdoYXQgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGEgcGFydGljdWxhciBvcHRpb24gYWN0dWFsbHkgKmRvZXMqPyBPa2F5LCB0aGlzIGlzIGEgcHJldHR5IHNvbGlkIHN0YXJ0LiBOb3cgbGV0JiMzOTtzIGRpdmUgaW50byBzb21lIG9mIHRoZSBtb3JlIHNwZWNpZmljIHN1Yi1zZWN0aW9ucyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBpbiB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1MWDVfSU5GSU5JQkFORFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBsb3ctbGV2ZWwgSW5maW5pQmFuZCBzdXBwb3J0IGZvclxuICAgNzpcdFx0ICBNZWxsYW5veCBDb25uZWN0LUlCIFBDSSBFeHByZXNzIGhvc3QgY2hhbm5lbCBhZGFwdGVycyAoSENBcykuXG4gICA4Olx0XHQgIFRoaXMgaXMgcmVxdWlyZWQgdG8gdXNlIEluZmluaUJhbmQgcHJvdG9jb2xzIHN1Y2ggYXNcbiAgIDk6XHRcdCAgSVAtb3Zlci1JQiBvciBTUlAgd2l0aCB0aGVzZSBkZXZpY2VzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQzNAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVwZW5kZW5jaWVzIGFuZCBWZXJpZmljYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBkZXBlbmRlbmN5IG9uIGBNTFg1X0NPUkVgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBwcmFjdGljYWxseSBhIGdpdmVuIHdoZW4gd29ya2luZyB3aXRoIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhlcmVmb3JlLCB0byBlbnN1cmUgdGhhdCBgTUxYNV9DT1JFYCBpcyBkZWZpbml0ZWx5IGVuYWJsZWQgYXMgd2VsbC4gTm8gcG9pbnQgZ29pbmcgZG93biB0aGlzIHBhdGggaWYgdGhlIGZvdW5kYXRpb25hbCBjb21wb25lbnRzIGFyZW4mIzM5O3QgcHJlc2VudC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwcmVyZXF1aXNpdGUuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIHBvdGVudGlhbGx5IGltcG9ydGFudCBiYXNlIGNvbmZpZ3VyYXRpb25zLCB0aGlzIGlzIGEgZ29vZCBzcG90IHRvIHJlLWNoZWNrIGBJTkZJTklCQU5EX01USENBYC4gQmVzdCB0byB2ZXJpZnkgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRoZSBJbmZpbmlCYW5kIHN0YWNrIGJlZm9yZSB3ZSBjb250aW51ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBJTkZJTklCQU5EX01USENBXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWxsYW5veCBIQ0Egc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBpcyBhIGxvdy1sZXZlbCBkcml2ZXIgZm9yIE1lbGxhbm94IEluZmluaUhvc3QgaG9zdFxuICAgNzpcdFx0ICBjaGFubmVsIGFkYXB0ZXJzIChIQ0FzKSwgaW5jbHVkaW5nIHRoZSBNVDIzMTA4IFBDSS1YIEhDQVxuICAgODpcdFx0ICAoXCYjMzQ7VGF2b3JcJiMzNDspIGFuZCB0aGUgTVQyNTIwOCBQQ0kgRXhwcmVzcyBIQ0EgKFwmIzM0O0FyYmVsXCYjMzQ7KS5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgSU5GSU5JQkFORF9NVEhDQV9ERUJVR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg0NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgUkRNQSBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gdGhlIGFyY2hpdGVjdHVyZSBJJiMzOTttIHdvcmtpbmcgd2l0aCBpcyBjbGVhcmx5IGdvaW5nIHRvIGhpbmdlIG9uIHRoZSBgUENJYCBzZXR1cC4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgY3JpdGljYWwgZmFjdG9yIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBIb3cgdGhlIHN5c3RlbSBsZXZlcmFnZXMgdGhlIGBQQ0lgIGJ1cyBpcyBnb2luZyB0byBoZWF2aWx5IGluZmx1ZW5jZSB0aGUgUkRNQSBwZXJmb3JtYW5jZSBhbmQgc2NhbGFiaWxpdHkgSSBjYW4gcmVhbGlzdGljYWxseSBleHBlY3QuIEl0JiMzOTtzIHRoZSBib3R0bGVuZWNrIG9yIHRoZSBoaWdod2F5LCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZSBSRE1BIGNhcGFiaWxpdGllcy4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IENhbiB3ZSBsZXZlcmFnZSBgSU5GSU5JQkFORF9SRE1BVlRgPyBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIElmIHdlJiMzOTtyZSBsdWNreSBlbm91Z2ggdG8gaGF2ZSB0aGF0IGF2YWlsYWJsZSwgdGhlIHBvdGVudGlhbCBmb3IgemVyby1jb3B5LCBlZmZpY2llbnQgZGF0YSB0cmFuc2ZlcnMgaXMgc2lnbmlmaWNhbnQuIGBJTkZJTklCQU5EX1JETUFWVGAgaXMgbGlrZWx5IHRvIGJlIGEgZ2FtZS1jaGFuZ2VyIGlmIGl0IGlzIHN1cHBvcnRlZC4gV2hldGhlciB0aGlzIGlzIGFuIGFyY2hpdGVjdHVyYWwgaW1wZXJhdGl2ZSwgb3IgYSBuaWNlLXRvLWhhdmUsIHdpbGwgZGVwZW5kIGhlYXZpbHkgb24gdGhlIHByb2JsZW0gYXQgaGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgSU5GSU5JQkFORF9SRE1BVlRcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JETUEgdmVyYnMgdHJhbnNwb3J0IGxpYnJhcnlcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9WSVJUX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBYODZfNjRcbiAgIDY6XHRcdGRlcGVuZHMgb24gUENJXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHRUaGlzIGlzIGEgY29tbW9uIHNvZnR3YXJlIHZlcmJzIHByb3ZpZGVyIGZvciBSRE1BIG5ldHdvcmtzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI0NgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIEluZmluaWJhbmQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEluZmluaWJhbmQgY29kZSwgYW5kIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGNoZWNraW5nIGFyZSB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIGhpbmdlcyBvbiBgSU5GSU5JQkFORF9WSVJUX0RNQWAsIGBYODZfNjRgLCBhbmQgYFBDSWAuIEEgcXVpY2sgbG9vayBjb25maXJtcyB0aGF0IGBJTkZJTklCQU5EX1ZJUlRfRE1BYCBkZWZhdWx0cyB0byBlbmFibGVkIG9uIDY0LWJpdCBzeXN0ZW1zIGJlY2F1c2UgaXQmIzM5O3MgYSBkZWZfYm9vbCAhSElHSE1FTS4gR29vZCwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4KCk5leHQsIEkgbmVlZCB0byBrbm93IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgSSBuZWVkOiBgSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCwgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AsIGBNTFg1X0NPUkVgLCBgTUxYNV9JTkZJTklCQU5EYCwgYElORklOSUJBTkRfTVRIQ0FgLCBhbmQgYElORklOSUJBTkRfUkRNQVZUYC4gR290IGl0LiBOb3csIHdoaWNoIHN5bWJvbHMgYXJlIHdlIGZvY3VzaW5nIG9uPwoKTGV0JiMzOTtzIHNlZS4gTXkgY3VycmVudCBzeW1ib2xzIGFyZToKKiAgIGBfX2liX3VtZW1fZ2V0X3ZhYC4gV2FpdCwgaXQmIzM5O3Mgc3RhdGljPyBDYW4gc3l6a2FsbGVyIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnM/IFllcywgYnV0IG1heWJlIGBpYl91bWVtX2dldF9kZXNjYCBpcyBiZXR0ZXI/IE5vLCBgX19pYl91bWVtX2dldF92YWAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIG1vZGlmaWVkLiBPSywgSSYjMzk7bGwgc3RpY2sgd2l0aCBgX19pYl91bWVtX2dldF92YWAuCiogICBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgCiogICBgbXRoY2FfYXJyYXlfc2V0YAoqICAgYG10aGNhX3JlZ191c2VyX21yYAoqICAgYGdldF9tYXBfcGFnZWAgKHRoaXMgb25lJiMzOTtzIHN0YXRpYyBpbiBgcmRtYXZ0L3FwLmNgLiBTaG91bGQgSSB1c2UgYHJ2dF9jcmVhdGVfcXBgIGFzIHdlbGwsIG9yIGp1c3QgYGdldF9tYXBfcGFnZWA/KS4KCldhaXQsIGBnZXRfbWFwX3BhZ2VgIGlzIHN0YXRpYy4gSSB0aGluayBJJiMzOTtsbCBnbyB3aXRoIGBydnRfY3JlYXRlX3FwYCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBleHBvcnRlZCBmdW5jdGlvbiB0aGF0IGNhbGxzIGBhbGxvY19xcG5gIHdoaWNoIGNhbGxzIGBnZXRfbWFwX3BhZ2VgLiBXYWl0LCBhbHNvIGBnZXRfbWFwX3BhZ2VgIGlzIGNhbGxlZCBmcm9tIGBpbml0X3Fwbl90YWJsZWAuIEkgdGhpbmsgSSYjMzk7bGwganVzdCB1c2UgYGdldF9tYXBfcGFnZWAKCkFscmlnaHQsIGxldCBtZSByZXZpc2l0IHRoaXMgcGF0Y2guIEkgc2VlIHRoZSBrZXkgY2hhbmdlOgoKYGBgYwotCXBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwomIzQzOwlwYWdlX2xpc3QgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7Ci4uLgotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcGFnZV9saXN0KTsKJiM0MzsJa2ZyZWUocGFnZV9saXN0KTsKYGBgCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBzaGlmdC4gSXQmIzM5O3Mgbm93IHVzaW5nIHRoZSBzbGFiIGFsbG9jYXRvciBpbnN0ZWFkIG9mIHRoZSBwYWdlIGFsbG9jYXRvci4gVGhhdCBjb3VsZCBpbXBhY3QgbWVtb3J5IGxheW91dCwgYWxpZ25tZW50LCBhbmQgcG90ZW50aWFsbHkgY2F1c2UgaXNzdWVzIGlmIHRoZSBjb2RlIG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHBhZ2UgYWxpZ25tZW50LiBBIHN1YnRsZSBjaGFuZ2UsIGJ1dCBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBmbGFnLgoKTm93LCBhbnkgb3RoZXIgY29uZmlnIHJlcXVpcmVtZW50cz8gTGV0JiMzOTtzIGNoZWNrOgoqICAgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGlzIGRlZmluaXRlbHkgbmVlZGVkIGZvciBgSU5GSU5JQkFORF9VU0VSX01FTWAuCiogICBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCBmb3IgYG9kcC5jYC4KKiAgIGBNTFg1X0NPUkVgIGZvciBgTUxYNV9JTkZJTklCQU5EYC4KKiAgIGBNTFg1X0lORklOSUJBTkRgIGZvciBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLgoqICAgYElORklOSUJBTkRfTVRIQ0FgIGZvciBib3RoIGBtdGhjYV9hcnJheV9zZXRgIGFuZCBgbXRoY2FfcmVnX3VzZXJfbXJgLgoqICAgQW5kIGZpbmFsbHksIGBJTkZJTklCQU5EX1JETUFWVGAgZm9yIGBnZXRfbWFwX3BhZ2VgLgoKU28sIHRoZSBmb2N1cyBzeW1ib2xzIGFyZToKKiAgIGBfX2liX3VtZW1fZ2V0X3ZhYAoqICAgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYAoqICAgYG10aGNhX2FycmF5X3NldGAKKiAgIGBtdGhjYV9yZWdfdXNlcl9tcmAKKiAgIGBnZXRfbWFwX3BhZ2VgCgpXYWl0LCBgZ2V0X21hcF9wYWdlYCBpcyBwcmV0dHkgZ2VuZXJpYy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGEgdW5pcXVlIGZ1bmN0aW9uIG5hbWUgdG8gYXZvaWQgY29uZmxpY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnZXRfbWFwX3BhZ2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTI1OD1zdGF0aWMgaW5saW5lIGJvb2wgd3NzX2V4Y2VlZHNfdGhyZXNob2xkKHN0cnVjdCBydnRfd3NzICp3c3MpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTI2Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzoyNjM6c3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtMjY0LVx0XHRcdCBzdHJ1Y3QgcnZ0X3Fwbl9tYXAgKm1hcClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM9Mjg1PXN0YXRpYyBpbnQgaW5pdF9xcG5fdGFibGUoc3RydWN0IHJ2dF9kZXZfaW5mbyAqcmRpLCBzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0zMTgtXHRcdGlmICghbWFwLVx1MDAzZXBhZ2UpIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzozMTk6XHRcdFx0Z2V0X21hcF9wYWdlKHFwdCwgbWFwKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0zMjAtXHRcdFx0aWYgKCFtYXAtXHUwMDNlcGFnZSkge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz00ODg9c3RhdGljIGludCBhbGxvY19xcG4oc3RydWN0IHJ2dF9kZXZfaW5mbyAqcmRpLCBzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy01MjMtXHRcdGlmICh1bmxpa2VseSghbWFwLVx1MDAzZXBhZ2UpKSB7XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6NTI0Olx0XHRcdGdldF9tYXBfcGFnZShxcHQsIG1hcCk7XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTI1LVx0XHRcdGlmICh1bmxpa2VseSghbWFwLVx1MDAzZXBhZ2UpKVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYz0xMzc9c3RydWN0IGhmc19ibWFwX2N0eCB7XG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jLTE0OC0gKi9cbmZzL2hmc3BsdXMvYnRyZWUuYzoxNDk6c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcbmZzL2hmc3BsdXMvYnRyZWUuYy0xNTAtXHRcdFx0XHRcdCAgc3RydWN0IGhmc19ibWFwX2N0eCAqY3R4LFxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYz0xOTY9c3RhdGljIGJvb2wgaGZzX2JtYXBfdGVzdF9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtMjAxLVxuZnMvaGZzcGx1cy9idHJlZS5jOjIwMjpcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcbmZzL2hmc3BsdXMvYnRyZWUuYy0yMDMtXHRpZiAoSVNfRVJSKHBhZ2UpKVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYz0yMjI9c3RhdGljIGludCBoZnNfYm1hcF9jbGVhcl9iaXQoc3RydWN0IGhmc19ibm9kZSAqbm9kZSwgdTMyIG5vZGVfYml0X2lkeClcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtMjI3LVxuZnMvaGZzcGx1cy9idHJlZS5jOjIyODpcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCBub2RlX2JpdF9pZHggLyBCSVRTX1BFUl9CWVRFKTtcbmZzL2hmc3BsdXMvYnRyZWUuYy0yMjktXHRpZiAoSVNfRVJSKHBhZ2UpKVxuLS1cbmZzL2hmc3BsdXMvYnRyZWUuYz01Mjg9c3RydWN0IGhmc19ibm9kZSAqaGZzX2JtYXBfYWxsb2Moc3RydWN0IGhmc19idHJlZSAqdHJlZSlcbi0tXG5mcy9oZnNwbHVzL2J0cmVlLmMtNTQ3LVxuZnMvaGZzcGx1cy9idHJlZS5jOjU0ODpcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCAwKTtcbmZzL2hmc3BsdXMvYnRyZWUuYy01NDktXHRpZiAoSVNfRVJSKHBhZ2UpKSB7XG4tLVxuZnMvaGZzcGx1cy9idHJlZS5jLTU5OC1cbmZzL2hmc3BsdXMvYnRyZWUuYzo1OTk6XHRcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXHUwMDI2Y3R4LCAwKTtcbmZzL2hmc3BsdXMvYnRyZWUuYy02MDAtXHRcdGlmIChJU19FUlIocGFnZSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU5NjkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkRpZ2dpbmcgaW50byB0aGlzIENvZGUgU25pcHBldCoqCgpPa2F5LCB0aGlzIHVzYWdlIG9mIGBnZXRfbWFwX3BhZ2VgIGlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyBub3QgKmV2ZXJ5d2hlcmUqOyBpdCYjMzk7cyBwcmV0dHkgaXNvbGF0ZWQsIHNob3dpbmcgdXAgb25seSBpbiBgcmRtYXZ0L3FwLmNgIGFuZCBgaGZzcGx1cy9idHJlZS5jYCwgc3BlY2lmaWNhbGx5IGFzIGBoZnNfYm1hcF9nZXRfbWFwX3BhZ2VgLiBUaGlzIHN1Z2dlc3RzIGl0JiMzOTtzIGEgYml0IHNwZWNpYWxpemVkLiBJIHRoaW5rIEkgd2lsbCBrZWVwIHRoaXMgbmFtZS4KCk5vdywgYmVmb3JlIEkgcHJvY2VlZCB0b28gZmFyLCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcmVsYXRlcyB0byB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50LiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiB0aGF0IGZsb3cuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB3aGF0IGBfX2liX3VtZW1fZ2V0X3ZhYCBpcyBkb2luZyBhbmQgd2hhdCBpdHMgaW5wdXRzIGFuZCBvdXRwdXRzIGFyZS4gR290dGEgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAgY29ycmVjdGx5IGluIHRlcm1zIG9mIG1lbW9yeSByZWdpb25zIGFuZCBhZGRyZXNzIHRyYW5zbGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2liX3VtZW1fZ2V0X3ZhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0xNjA9RVhQT1JUX1NZTUJPTChpYl91bWVtX2ZpbmRfYmVzdF9wZ3N6KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0xNjEtXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmM6MTYyOnN0YXRpYyBzdHJ1Y3QgaWJfdW1lbSAqX19pYl91bWVtX2dldF92YShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMTYzLVx0XHRcdFx0XHR1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBzaXplLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0yODk9c3RydWN0IGliX3VtZW0gKmliX3VtZW1fZ2V0X2Rlc2Moc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTAtXHRjYXNlIElCX1VWRVJCU19CVUZGRVJfVFlQRV9WQTpcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYzozMTE6XHRcdHJldHVybiBfX2liX3VtZW1fZ2V0X3ZhKGRldmljZSwgZGVzYy1cdTAwM2VhZGRyLCBkZXNjLVx1MDAzZWxlbmd0aCxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTItXHRcdFx0XHRcdGFjY2Vzcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NTI4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVW5pcXVlIEhhbmRsaW5nIFZlcmlmaWNhdGlvbioqCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBUaGUgc2l0dWF0aW9uIGRvZXMgc2VlbSByYXRoZXIgZGlzdGluY3RpdmUuIEdpdmVuIHRoZSBjb250ZXh0LCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBtZW1vcnkgcmVnaXN0cmF0aW9uIGFuZCB3b3JrIHF1ZXVlIGVsZW1lbnRzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHBhZ2UgZmF1bHRzIGFyZSBoYW5kbGVkLiBUaGUga2V5IGFyZWEgdG8gZXhhbWluZSBpcyBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLiBJIHdhbnQgdG8gaW1tZWRpYXRlbHkgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uLiBJdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCB0aGUgc3VidGxldGllcyBvZiB0aGlzIHBlY3VsaWFyIHNjZW5hcmlvLiBXZSBuZWVkIHRvIGRpc3NlY3QgaXRzIGxvZ2ljIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcyB1bnVzdWFsIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xMzg0PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1seDVfaWJfc3JxICpyZXNfdG9fc3JxKHN0cnVjdCBtbHg1X2NvcmVfcnNjX2NvbW1vbiAqcmVzKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxMzkyOnN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTM5My1cdFx0XHRcdFx0ICBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xNjE4PXN0YXRpYyB2b2lkIG1seDVfaWJfcGZhdWx0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xNjIzLVx0Y2FzZSBNTFg1X1BGQVVMVF9TVUJUWVBFX1dRRTpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jOjE2MjQ6XHRcdG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKGRldiwgcGZhdWx0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjUtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzA2NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgVW5pcXVlbmVzcyBhbmQgTWV0aG9kaWNhbCBWZXJpZmljYXRpb24qKgoKWWVzLCB0aGF0IG9ic2VydmF0aW9uIGFib3V0IGl0cyB1bmlxdWVuZXNzLi4uIGl0IHJlc29uYXRlcy4gV2UmIzM5O3ZlIGdvdCBzb21ldGhpbmcgZGlzdGluY3QgaGVyZSwgYSBwb2ludCBvZiBkaWZmZXJlbnRpYXRpb24uIEl0JiMzOTtzIG5vdCBqdXN0IGEgc3VidGxlIHZhcmlhdGlvbjsgaXQmIzM5O3Mgc2lnbmlmaWNhbnQuIEJ1dCwgYXMgd2l0aCBhbnl0aGluZyBncm91bmRicmVha2luZywgd2UgY2FuJiMzOTt0IHJlbHkgc29sZWx5IG9uIGludHVpdGlvbi4gV2UgbmVlZCB0byBiZSByaWdvcm91c2x5IHRob3JvdWdoLgoKVGhhdCBicmluZ3MgbWUgdG8gdGhlIG5leHQgdGhvdWdodC4gTGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSBuZWVkIHRvIGltbWVkaWF0ZWx5IGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG10aGNhX2FycmF5X3NldGAuIFRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IHRoZSBjcnV4IG9mIHRoaXMgZGlzdGluY3RpdmUgYmVoYXZpb3VyIGFuZCBzaG91bGQgYmUgZXhhbWluZWQuIElzIHRoZSBsb2dpYyBzb3VuZD8gQXJlIHRoZXJlIGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cz8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBlZGdlIGNhc2VzPyBXZSBjYW5ub3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIExldCYjMzk7cyBkaWcgZGVlcCwgYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY3JpdGljYWwgZXllLCBhbmQgZW5zdXJlIGl0cyBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCB0aGUgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eSwgYW5kIGhhcyBiZWVuIHRlc3RlZCB0byBtZWV0IHRoZSBwZXJmb3JtYW5jZSBuZWVkcyBvZiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jPTExMz12b2lkICptdGhjYV9hcnJheV9nZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmM6MTIzOmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjQte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jPTc2OD1pbnQgbXRoY2FfaW5pdF9jcShzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsIGludCBuZW50LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1MC1cdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2LVx1MDAzZWNxX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2NxLmM6ODUxOlx0ZXJyID0gbXRoY2FfYXJyYXlfc2V0KFx1MDAyNmRldi1cdTAwM2VjcV90YWJsZS5jcSxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1Mi1cdFx0XHQgICAgICBjcS1cdTAwM2VjcW4gXHUwMDI2IChkZXYtXHUwMDNlbGltaXRzLm51bV9jcXMgLSAxKSwgY3EpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9kZXYuaD00MTg9dm9pZCAqbXRoY2FfYXJyYXlfZ2V0KHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2Lmg6NDE5OmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2LmgtNDIwLXZvaWQgbXRoY2FfYXJyYXlfY2xlYXIoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYz0xMjkxPWludCBtdGhjYV9hbGxvY19xcChzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTMyOC1cdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2LVx1MDAzZXFwX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTMyOTpcdG10aGNhX2FycmF5X3NldChcdTAwMjZkZXYtXHUwMDNlcXBfdGFibGUucXAsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzMwLVx0XHRcdHFwLVx1MDAzZXFwbiBcdTAwMjYgKGRldi1cdTAwM2VsaW1pdHMubnVtX3FwcyAtIDEpLCBxcCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM9MTM2Nj1pbnQgbXRoY2FfYWxsb2Nfc3FwKHN0cnVjdCBtdGhjYV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzk1LVx0ZWxzZVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTM5NjpcdFx0bXRoY2FfYXJyYXlfc2V0KFx1MDAyNmRldi1cdTAwM2VxcF90YWJsZS5xcCwgbXFwbiwgcXApO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTM5Ny1cdHNwaW5fdW5sb2NrX2lycShcdTAwMjZkZXYtXHUwMDNlcXBfdGFibGUubG9jayk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jPTIwNj1pbnQgbXRoY2FfYWxsb2Nfc3JxKHN0cnVjdCBtdGhjYV9kZXYgKmRldiwgc3RydWN0IG10aGNhX3BkICpwZCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjgzLVx0c3Bpbl9sb2NrX2lycShcdTAwMjZkZXYtXHUwMDNlc3JxX3RhYmxlLmxvY2spO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jOjI4NDpcdGlmIChtdGhjYV9hcnJheV9zZXQoXHUwMDI2ZGV2LVx1MDAzZXNycV90YWJsZS5zcnEsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjg1LVx0XHRcdCAgICBzcnEtXHUwMDNlc3JxbiBcdTAwMjYgKGRldi1cdTAwM2VsaW1pdHMubnVtX3NycXMgLSAxKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNzQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgVW5pcXVlbmVzcyBhbmQgRGF0YSBJbnRlZ3JpdHkqKgoKT2theSwgc28gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMsIGluZGVlZCwgdW5pcXVlLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwLiBOb3csIGJlZm9yZSBJIHByb2NlZWQgd2l0aCBhbnkgYW5hbHlzaXMgb3IgYXBwbGljYXRpb24sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCAmIzM5O3VuaXF1ZSYjMzk7IHN0YXR1cy4gTXkgaW1tZWRpYXRlIHJlZmxleCBpcyB0byBkaXZlIGludG8gdGhlIGRhdGEuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbXRoY2FfcmVnX3VzZXJfbXJgLiBUaGlzIHZhcmlhYmxlIG9yIHJlZ2lzdGVyIHByb2JhYmx5IGhvbGRzIGNyaXRpY2FsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlICYjMzQ7dW5pcXVlJiMzNDsgZWxlbWVudCDigJMgcGVyaGFwcyBhIHVzZXIgcmVnaXN0cmF0aW9uIG1hcmtlciBvciBzb21lIGZvcm0gb2YgaWRlbnRpZmllci4gSSBuZWVkIHRvIGVuc3VyZSBpdHMgaW50ZWdyaXR5IGFuZCBob3cgaXQmIzM5O3MgZGVmaW5lZCBhbmQgdXNlZC4gQSBxdWljayBpbnNwZWN0aW9uIG9mIHRoaXMgd2lsbCBjb25maXJtIChvciByZWZ1dGUhKSBteSBpbml0aWFsIGFzc2Vzc21lbnQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCBmb3IgZHVwbGljYXRpb24sIG92ZXJ3cml0aW5nIG9yIGNvcnJ1cHRpb24gaW4gdGhhdCBhcmVhLiBJdCBhbGwgY29tZXMgZG93biB0byB0aGUgcmVsaWFiaWxpdHkgb2YgdGhhdCBkYXRhIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGhjYV9yZWdfdXNlcl9tciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYz04MjU9c3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfZ2V0X2RtYV9tcihzdHJ1Y3QgaWJfcGQgKnBkLCBpbnQgYWNjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTg0Ny1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jOjg0ODpzdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9yZWdfdXNlcl9tcihzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgc3RhcnQsIHU2NCBsZW5ndGgsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy04NDktXHRcdFx0XHQgICAgICAgdTY0IHZpcnQsIGludCBhY2MsIHN0cnVjdCBpYl9kbWFoICpkbWFoLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jPTEwODY9c3RhdGljIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIG10aGNhX2Rldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMtMTEyMC1cdC5xdWVyeV9xcCA9IG10aGNhX3F1ZXJ5X3FwLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM6MTEyMTpcdC5yZWdfdXNlcl9tciA9IG10aGNhX3JlZ191c2VyX21yLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMtMTEyMi1cdC5yZXNpemVfdXNlcl9jcSA9IG10aGNhX3Jlc2l6ZV9jcSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5ODYKCQkJCQkJCW91dHB1dDogMjMyCgkJCQkJCQl0aG91Z2h0czogMzU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEluZmluaWJhbmQgRHJpdmVyIE1lbW9yeSBBbGxvY2F0aW9uIENoYW5nZSoqCgpPa2F5LCB0aGlzIGlzIGludGVyZXN0aW5nLCBhIGRlZmluaXRlIGRlcGFydHVyZSBmcm9tIHRoZSBub3JtLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBrZXkgZnVuY3Rpb25zIGhpZ2hsaWdodGVkIGFyZSBgX19pYl91bWVtX2dldF92YWAsIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAsIGBtdGhjYV9hcnJheV9zZXRgLCBgbXRoY2FfcmVnX3VzZXJfbXJgLCBhbmQgYGdldF9tYXBfcGFnZWAuIEkmIzM5O20gaW1tZWRpYXRlbHkgcGlja2luZyB1cCBvbiB0aG9zZSwgYXMgdGhleSByZXByZXNlbnQgdGhlIGNvcmUgdG91Y2hwb2ludHMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgpOb3csIHRoZSBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMuIFdlJiMzOTtyZSBsb29raW5nIGF0IGBJTkZJTklCQU5EYCwgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgLCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCwgYE1MWDVfQ09SRWAsIGBNTFg1X0lORklOSUJBTkRgLCBgSU5GSU5JQkFORF9NVEhDQWAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLiBJJiMzOTttIG5vdGluZyB0aGUgaW50ZXJwbGF5OyBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxhY2UuIEhvbGQgb24uLi4gSSYjMzk7bSByZW1pbmRlZCB0aGF0IGBJTkZJTklCQU5EX1VTRVJfTUVNYCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgYnkgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGFuZCBgTU1VYCwgc28gd2hpbGUgaXQmIzM5O3MgcmVkdW5kYW50LCBsaXN0aW5nIGl0IGRvZXNuJiMzOTt0IGh1cnQuIEkmIzM5O2xsIHN0aWxsIGluY2x1ZGUgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGFuZCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYC4KCkFscmlnaHQsIHRpbWUgZm9yIGEgc2FuaXR5IGNoZWNrIG9uIG15IG93biByZWFzb25pbmcuIFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIHN3aXRjaCBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciwgZnVuY3Rpb25zIGxpa2UgYF9fZ2V0X2ZyZWVfcGFnZWAgYW5kIGBnZXRfemVyb2VkX3BhZ2VgLCB0byB0aGUgc2xhYiBhbGxvY2F0b3IsIGBrbWFsbG9jYCBhbmQgYGt6YWxsb2NgLCB3aXRoaW4gc2V2ZXJhbCBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgdGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludC4gVGhlIHBhZ2UgYWxsb2NhdG9yIGhhcyBjZXJ0YWluIGd1YXJhbnRlZXMgYWJvdXQgbWVtb3J5IGFsaWdubWVudCBhbmQgbGF5b3V0IHRoYXQgdGhlIHNsYWIgYWxsb2NhdG9yIGRvZXNuJiMzOTt0IG5lY2Vzc2FyaWx5IG9mZmVyLiBUaGUgY29kZSAqY291bGQqIGJlIHJlbHlpbmcgb24gdGhvc2UgaW1wbGljaXQgYXNzdW1wdGlvbnMsIGFuZCB0aGUgc3dpdGNoIGNvdWxkIGludHJvZHVjZSBzdWJ0bGUgcmVncmVzc2lvbnMuIEV2ZW4gaWYgSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIGV4cGxpY2l0bHkgd3JvbmcsIHRoaXMgaXMgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gcnVuIGl0IHRocm91Z2ggYSByaWdvcm91cyBmdXp6aW5nIGNhbXBhaWduIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gaGlkZGVuIGFzc3VtcHRpb25zIGJlaW5nIHZpb2xhdGVkLgoKTm93IEkmIzM5O2xsIGV4ZWN1dGUgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTY6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9VU0VSX0FDQ0VTUyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfSU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX01USENBJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUkRNQVZUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pYl91bWVtX2dldF92YSYjMzQ7LAogICAgJiMzNDttbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlciYjMzQ7LAogICAgJiMzNDttdGhjYV9hcnJheV9zZXQmIzM0OywKICAgICYjMzQ7bXRoY2FfcmVnX3VzZXJfbXImIzM0OywKICAgICYjMzQ7Z2V0X21hcF9wYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKF9fZ2V0X2ZyZWVfcGFnZSwgZ2V0X3plcm9lZF9wYWdlKSB0byB0aGUgc2xhYiBhbGxvY2F0b3IgKGttYWxsb2MsIGt6YWxsb2MpIGFjcm9zcyBtdWx0aXBsZSBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBidWdzIGlmIHRoZSBoYXJkd2FyZSBvciBkcml2ZXIgY29kZSBhc3N1bWVzIHBhZ2UgYWxpZ25tZW50IG9yIHNwZWNpZmljIG1lbW9yeSBsYXlvdXQgcHJvcGVydGllcyBndWFyYW50ZWVkIGJ5IHRoZSBwYWdlIGFsbG9jYXRvciBidXQgbm90IGJ5IHRoZSBzbGFiIGFsbG9jYXRvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1VTRVJfQUNDRVNTJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lORyYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkUmIzM0OywKICAgICYjMzQ7TUxYNV9JTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfTVRIQ0EmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9SRE1BVlQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2liX3VtZW1fZ2V0X3ZhJiMzNDssCiAgICAmIzM0O21seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyJiMzNDssCiAgICAmIzM0O210aGNhX2FycmF5X3NldCYjMzQ7LAogICAgJiMzNDttdGhjYV9yZWdfdXNlcl9tciYjMzQ7LAogICAgJiMzNDtnZXRfbWFwX3BhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBtZW1vcnkgYWxsb2NhdGlvbiBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciAoX19nZXRfZnJlZV9wYWdlLCBnZXRfemVyb2VkX3BhZ2UpIHRvIHRoZSBzbGFiIGFsbG9jYXRvciAoa21hbGxvYywga3phbGxvYykgYWNyb3NzIG11bHRpcGxlIEluZmluaWJhbmQgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIGJ1Z3MgaWYgdGhlIGhhcmR3YXJlIG9yIGRyaXZlciBjb2RlIGFzc3VtZXMgcGFnZSBhbGlnbm1lbnQgb3Igc3BlY2lmaWMgbWVtb3J5IGxheW91dCBwcm9wZXJ0aWVzIGd1YXJhbnRlZWQgYnkgdGhlIHBhZ2UgYWxsb2NhdG9yIGJ1dCBub3QgYnkgdGhlIHNsYWIgYWxsb2NhdG9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTY6NDYuNDkxNDM1ODk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5MDE3MjU0NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIklORklOSUJBTkRfVVNFUl9BQ0NFU1NcIixcbiAgICBcIklORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR1wiLFxuICAgIFwiTUxYNV9DT1JFXCIsXG4gICAgXCJNTFg1X0lORklOSUJBTkRcIixcbiAgICBcIklORklOSUJBTkRfTVRIQ0FcIixcbiAgICBcIklORklOSUJBTkRfUkRNQVZUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pYl91bWVtX2dldF92YVwiLFxuICAgIFwibWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJcIixcbiAgICBcIm10aGNhX2FycmF5X3NldFwiLFxuICAgIFwibXRoY2FfcmVnX3VzZXJfbXJcIixcbiAgICBcImdldF9tYXBfcGFnZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgbWVtb3J5IGFsbG9jYXRpb24gZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgKF9fZ2V0X2ZyZWVfcGFnZSwgZ2V0X3plcm9lZF9wYWdlKSB0byB0aGUgc2xhYiBhbGxvY2F0b3IgKGttYWxsb2MsIGt6YWxsb2MpIGFjcm9zcyBtdWx0aXBsZSBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNvdWxkIGludHJvZHVjZSBidWdzIGlmIHRoZSBoYXJkd2FyZSBvciBkcml2ZXIgY29kZSBhc3N1bWVzIHBhZ2UgYWxpZ25tZW50IG9yIHNwZWNpZmljIG1lbW9yeSBsYXlvdXQgcHJvcGVydGllcyBndWFyYW50ZWVkIGJ5IHRoZSBwYWdlIGFsbG9jYXRvciBidXQgbm90IGJ5IHRoZSBzbGFiIGFsbG9jYXRvci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTY6NDYuNDkxNDQ3MzA2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjMyMDYwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZWJlODM2MjgxM2Y5MGI4MzYwMDcxOTg4ZjE1MzBlM2Y1YTZhYmY4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDMwIDE2OjE2OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uY1xcbmluZGV4IDczNDk4NzIzYTVkNTVlLi41YzQyNDk3ZjMyZTI2MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNcXG5AQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfdW1lbSAqX19pYl91bWVtX2dldF92YShzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsXFxuIFxcbiBcXHRtbWdyYWIobW0pO1xcbiBcXG4tXFx0cGFnZV9saXN0ID0gKHN0cnVjdCBwYWdlICoqKSBfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcdHBhZ2VfbGlzdCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwYWdlX2xpc3QpIHtcXG4gXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gXFx0XFx0Z290byB1bWVtX2tmcmVlO1xcbkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHN0cnVjdCBpYl91bWVtICpfX2liX3VtZW1fZ2V0X3ZhKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSxcXG4gXFx0X19pYl91bWVtX3JlbGVhc2UoZGV2aWNlLCB1bWVtLCAwKTtcXG4gXFx0YXRvbWljNjRfc3ViKGliX3VtZW1fbnVtX3BhZ2VzKHVtZW0pLCBcXHUwMDI2bW0tXFx1MDAzZXBpbm5lZF92bSk7XFxuIG91dDpcXG4tXFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBwYWdlX2xpc3QpO1xcbitcXHRrZnJlZShwYWdlX2xpc3QpO1xcbiB1bWVtX2tmcmVlOlxcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdG1tZHJvcCh1bWVtLVxcdTAwM2Vvd25pbmdfbW0pO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jXFxuaW5kZXggMWJhZGVjOWJmNTI3MDguLjkwNzA2ZmY3MTAyYTNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmNcXG5AQCAtMzgsNiArMzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaG1tLWRtYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLXAycGRtYS5oXFx1MDAzZVxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcIm1seDVfaWIuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImNtZC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidW1yLmhcXFwiXFxuQEAgLTE0MTQsNyArMTQxNSw3IEBAIHN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbiBcXHRcXHRnb3RvIHJlc29sdmVfcGFnZV9mYXVsdDtcXG4gXFx0fVxcbiBcXG4tXFx0d3FlX3N0YXJ0ID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcdHdxZV9zdGFydCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCF3cWVfc3RhcnQpIHtcXG4gXFx0XFx0bWx4NV9pYl9lcnIoZGV2LCBcXFwiRXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIElPIHBhZ2UgZmF1bHQgaGFuZGxpbmcuXFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byByZXNvbHZlX3BhZ2VfZmF1bHQ7XFxuQEAgLTE0NzUsNyArMTQ3Niw3IEBAIHN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbiBcXHRcXHQgICAgcGZhdWx0LVxcdTAwM2V3cWUud3FfbnVtLCByZXN1bWVfd2l0aF9lcnJvcixcXG4gXFx0XFx0ICAgIHBmYXVsdC1cXHUwMDNldHlwZSk7XFxuIFxcdG1seDVfY29yZV9yZXNfcHV0KHJlcyk7XFxuLVxcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyl3cWVfc3RhcnQpO1xcbitcXHRrZnJlZSh3cWVfc3RhcnQpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3JkbWFfcGZhdWx0X2hhbmRsZXIoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuY1xcbmluZGV4IGRlZGMzMDEyMzVhMGRjLi4xMTdhMDcwZTc4NGVhMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmNcXG5AQCAtMTI2LDcgKzEyNiw3IEBAIGludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSlcXG4gXFxuIFxcdC8qIEFsbG9jYXRlIHdpdGggR0ZQX0FUT01JQyBiZWNhdXNlIHdlJ2xsIGJlIGNhbGxlZCB3aXRoIGxvY2tzIGhlbGQuICovXFxuIFxcdGlmICghYXJyYXktXFx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlKVxcbi1cXHRcXHRhcnJheS1cXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UgPSAodm9pZCAqKikgZ2V0X3plcm9lZF9wYWdlKEdGUF9BVE9NSUMpO1xcbitcXHRcXHRhcnJheS1cXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0FUT01JQyk7XFxuIFxcbiBcXHRpZiAoIWFycmF5LVxcdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIG10aGNhX2FycmF5X2NsZWFyKHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleClcXG4gXFx0aW50IHAgPSAoaW5kZXggKiBzaXplb2YgKHZvaWQgKikpIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQ7XFxuIFxcbiBcXHRpZiAoLS1hcnJheS1cXHUwMDNlcGFnZV9saXN0W3BdLnVzZWQgPT0gMCkge1xcbi1cXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIGFycmF5LVxcdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSk7XFxuK1xcdFxcdGtmcmVlKGFycmF5LVxcdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSk7XFxuIFxcdFxcdGFycmF5LVxcdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSA9IE5VTEw7XFxuIFxcdH0gZWxzZVxcbiBcXHRcXHRhcnJheS1cXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2VbaW5kZXggXFx1MDAyNiBNVEhDQV9BUlJBWV9NQVNLXSA9IE5VTEw7XFxuQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIG10aGNhX2FycmF5X2NsZWFudXAoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IG5lbnQpXFxuIFxcdGludCBpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIChuZW50ICogc2l6ZW9mICh2b2lkICopICsgUEFHRV9TSVpFIC0gMSkgLyBQQUdFX1NJWkU7ICsraSlcXG4tXFx0XFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhcnJheS1cXHUwMDNlcGFnZV9saXN0W2ldLnBhZ2UpO1xcbitcXHRcXHRrZnJlZShhcnJheS1cXHUwMDNlcGFnZV9saXN0W2ldLnBhZ2UpO1xcbiBcXG4gXFx0a2ZyZWUoYXJyYXktXFx1MDAzZXBhZ2VfbGlzdCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuY1xcbmluZGV4IGY5MGY2N2FmYzhmYWJlLi5jOWVjOWNhMGFhYTYwZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuY1xcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jXFxuQEAgLTg5NSw3ICs4OTUsNyBAQCBzdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9yZWdfdXNlcl9tcihzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgc3RhcnQsIHU2NCBsZW5ndGgsXFxuIFxcdFxcdGdvdG8gZXJyX3VtZW07XFxuIFxcdH1cXG4gXFxuLVxcdHBhZ2VzID0gKHU2NCAqKSBfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcdHBhZ2VzID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xcbiBcXHRpZiAoIXBhZ2VzKSB7XFxuIFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIFxcdFxcdGdvdG8gZXJyX210dDtcXG5AQCAtOTI0LDcgKzkyNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcXG4gXFx0aWYgKGkpXFxuIFxcdFxcdGVyciA9IG10aGNhX3dyaXRlX210dChkZXYsIG1yLVxcdTAwM2VtdHQsIG4sIHBhZ2VzLCBpKTtcXG4gbXR0X2RvbmU6XFxuLVxcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgcGFnZXMpO1xcbitcXHRrZnJlZShwYWdlcyk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX210dDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY1xcbmluZGV4IDcwZTdkMDhmZGNlNjkyLi5jNDBjY2U2OWU5NDU3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNcXG5AQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB3c3NfZXhjZWVkc190aHJlc2hvbGQoc3RydWN0IHJ2dF93c3MgKndzcylcXG4gc3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgcnZ0X3Fwbl9tYXAgKm1hcClcXG4ge1xcbi1cXHR1bnNpZ25lZCBsb25nIHBhZ2UgPSBnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7XFxuK1xcdHZvaWQgKnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBGcmVlIHRoZSBwYWdlIGlmIHNvbWVvbmUgcmFjZWQgd2l0aCB1cyBpbnN0YWxsaW5nIGl0LlxcbkBAIC0yNzEsOSArMjcxLDkgQEAgc3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNnFwdC1cXHUwMDNlbG9jayk7XFxuIFxcdGlmIChtYXAtXFx1MDAzZXBhZ2UpXFxuLVxcdFxcdGZyZWVfcGFnZShwYWdlKTtcXG4rXFx0XFx0a2ZyZWUocGFnZSk7XFxuIFxcdGVsc2VcXG4tXFx0XFx0bWFwLVxcdTAwM2VwYWdlID0gKHZvaWQgKilwYWdlO1xcbitcXHRcXHRtYXAtXFx1MDAzZXBhZ2UgPSBwYWdlO1xcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2cXB0LVxcdTAwM2Vsb2NrKTtcXG4gfVxcbiBcXG5AQCAtMzQzLDcgKzM0Myw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcXBuX3RhYmxlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQpXFxuIFxcdGludCBpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocXB0LVxcdTAwM2VtYXApOyBpKyspXFxuLVxcdFxcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylxcHQtXFx1MDAzZW1hcFtpXS5wYWdlKTtcXG4rXFx0XFx0a2ZyZWUocXB0LVxcdTAwM2VtYXBbaV0ucGFnZSk7XFxuIH1cXG4gXFxuIC8qKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNjo0Ny4yMTUzMTY1OTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0ODI5MzM2MTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJJTkZJTklCQU5EX1VTRVJfQUNDRVNTXCIsXG4gICAgXCJJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcIixcbiAgICBcIk1MWDVfQ09SRVwiLFxuICAgIFwiTUxYNV9JTkZJTklCQU5EXCIsXG4gICAgXCJJTkZJTklCQU5EX01USENBXCIsXG4gICAgXCJJTkZJTklCQU5EX1JETUFWVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faWJfdW1lbV9nZXRfdmFcIixcbiAgICBcIm1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyXCIsXG4gICAgXCJtdGhjYV9hcnJheV9zZXRcIixcbiAgICBcIm10aGNhX3JlZ191c2VyX21yXCIsXG4gICAgXCJnZXRfbWFwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIG1lbW9yeSBhbGxvY2F0aW9uIGZyb20gdGhlIHBhZ2UgYWxsb2NhdG9yIChfX2dldF9mcmVlX3BhZ2UsIGdldF96ZXJvZWRfcGFnZSkgdG8gdGhlIHNsYWIgYWxsb2NhdG9yIChrbWFsbG9jLCBremFsbG9jKSBhY3Jvc3MgbXVsdGlwbGUgSW5maW5pYmFuZCBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiB0aGUgaGFyZHdhcmUgb3IgZHJpdmVyIGNvZGUgYXNzdW1lcyBwYWdlIGFsaWdubWVudCBvciBzcGVjaWZpYyBtZW1vcnkgbGF5b3V0IHByb3BlcnRpZXMgZ3VhcmFudGVlZCBieSB0aGUgcGFnZSBhbGxvY2F0b3IgYnV0IG5vdCBieSB0aGUgc2xhYiBhbGxvY2F0b3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2ViZTgzNjI4MTNmOTBiODM2MDA3MTk4OGYxNTMwZTNmNWE2YWJmOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE2OjE2OjQ0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jXG5pbmRleCA3MzQ5ODcyM2E1ZDU1ZS4uNWM0MjQ5N2YzMmUyNjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uY1xuQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuIFxuIFx0bW1ncmFiKG1tKTtcbiBcbi1cdHBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpO1xuK1x0cGFnZV9saXN0ID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwYWdlX2xpc3QpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbiBcdFx0Z290byB1bWVtX2tmcmVlO1xuQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxuIFx0X19pYl91bWVtX3JlbGVhc2UoZGV2aWNlLCB1bWVtLCAwKTtcbiBcdGF0b21pYzY0X3N1YihpYl91bWVtX251bV9wYWdlcyh1bWVtKSwgXHUwMDI2bW0tXHUwMDNlcGlubmVkX3ZtKTtcbiBvdXQ6XG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIHBhZ2VfbGlzdCk7XG4rXHRrZnJlZShwYWdlX2xpc3QpO1xuIHVtZW1fa2ZyZWU6XG4gXHRpZiAocmV0KSB7XG4gXHRcdG1tZHJvcCh1bWVtLVx1MDAzZW93bmluZ19tbSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuY1xuaW5kZXggMWJhZGVjOWJmNTI3MDguLjkwNzA2ZmY3MTAyYTNiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jXG5AQCAtMzgsNiArMzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2htbS1kbWEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS1wMnBkbWEuaFx1MDAzZVxuIFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFwibWx4NV9pYi5oXCJcbiAjaW5jbHVkZSBcImNtZC5oXCJcbiAjaW5jbHVkZSBcInVtci5oXCJcbkBAIC0xNDE0LDcgKzE0MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcbiBcdFx0Z290byByZXNvbHZlX3BhZ2VfZmF1bHQ7XG4gXHR9XG4gXG4tXHR3cWVfc3RhcnQgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTtcbitcdHdxZV9zdGFydCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghd3FlX3N0YXJ0KSB7XG4gXHRcdG1seDVfaWJfZXJyKGRldiwgXCJFcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgSU8gcGFnZSBmYXVsdCBoYW5kbGluZy5cXG5cIik7XG4gXHRcdGdvdG8gcmVzb2x2ZV9wYWdlX2ZhdWx0O1xuQEAgLTE0NzUsNyArMTQ3Niw3IEBAIHN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuIFx0XHQgICAgcGZhdWx0LVx1MDAzZXdxZS53cV9udW0sIHJlc3VtZV93aXRoX2Vycm9yLFxuIFx0XHQgICAgcGZhdWx0LVx1MDAzZXR5cGUpO1xuIFx0bWx4NV9jb3JlX3Jlc19wdXQocmVzKTtcbi1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyl3cWVfc3RhcnQpO1xuK1x0a2ZyZWUod3FlX3N0YXJ0KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbWx4NV9pYl9tcl9yZG1hX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuY1xuaW5kZXggZGVkYzMwMTIzNWEwZGMuLjExN2EwNzBlNzg0ZWEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmNcbkBAIC0xMjYsNyArMTI2LDcgQEAgaW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKVxuIFxuIFx0LyogQWxsb2NhdGUgd2l0aCBHRlBfQVRPTUlDIGJlY2F1c2Ugd2UnbGwgYmUgY2FsbGVkIHdpdGggbG9ja3MgaGVsZC4gKi9cbiBcdGlmICghYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpXG4tXHRcdGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlID0gKHZvaWQgKiopIGdldF96ZXJvZWRfcGFnZShHRlBfQVRPTUlDKTtcbitcdFx0YXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0FUT01JQyk7XG4gXG4gXHRpZiAoIWFycmF5LVx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBtdGhjYV9hcnJheV9jbGVhcihzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgpXG4gXHRpbnQgcCA9IChpbmRleCAqIHNpemVvZiAodm9pZCAqKSkgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXG4gXHRpZiAoLS1hcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0udXNlZCA9PSAwKSB7XG4tXHRcdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZykgYXJyYXktXHUwMDNlcGFnZV9saXN0W3BdLnBhZ2UpO1xuK1x0XHRrZnJlZShhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZSk7XG4gXHRcdGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtwXS5wYWdlID0gTlVMTDtcbiBcdH0gZWxzZVxuIFx0XHRhcnJheS1cdTAwM2VwYWdlX2xpc3RbcF0ucGFnZVtpbmRleCBcdTAwMjYgTVRIQ0FfQVJSQVlfTUFTS10gPSBOVUxMO1xuQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIG10aGNhX2FycmF5X2NsZWFudXAoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IG5lbnQpXG4gXHRpbnQgaTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIChuZW50ICogc2l6ZW9mICh2b2lkICopICsgUEFHRV9TSVpFIC0gMSkgLyBQQUdFX1NJWkU7ICsraSlcbi1cdFx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBhcnJheS1cdTAwM2VwYWdlX2xpc3RbaV0ucGFnZSk7XG4rXHRcdGtmcmVlKGFycmF5LVx1MDAzZXBhZ2VfbGlzdFtpXS5wYWdlKTtcbiBcbiBcdGtmcmVlKGFycmF5LVx1MDAzZXBhZ2VfbGlzdCk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmNcbmluZGV4IGY5MGY2N2FmYzhmYWJlLi5jOWVjOWNhMGFhYTYwZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuY1xuQEAgLTg5NSw3ICs4OTUsNyBAQCBzdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9yZWdfdXNlcl9tcihzdHJ1Y3QgaWJfcGQgKnBkLCB1NjQgc3RhcnQsIHU2NCBsZW5ndGgsXG4gXHRcdGdvdG8gZXJyX3VtZW07XG4gXHR9XG4gXG4tXHRwYWdlcyA9ICh1NjQgKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpO1xuK1x0cGFnZXMgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXBhZ2VzKSB7XG4gXHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdGdvdG8gZXJyX210dDtcbkBAIC05MjQsNyArOTI0LDcgQEAgc3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLFxuIFx0aWYgKGkpXG4gXHRcdGVyciA9IG10aGNhX3dyaXRlX210dChkZXYsIG1yLVx1MDAzZW10dCwgbiwgcGFnZXMsIGkpO1xuIG10dF9kb25lOlxuLVx0ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBwYWdlcyk7XG4rXHRrZnJlZShwYWdlcyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9tdHQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jXG5pbmRleCA3MGU3ZDA4ZmRjZTY5Mi4uYzQwY2NlNjllOTQ1N2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY1xuQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgd3NzX2V4Y2VlZHNfdGhyZXNob2xkKHN0cnVjdCBydnRfd3NzICp3c3MpXG4gc3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG4gXHRcdFx0IHN0cnVjdCBydnRfcXBuX21hcCAqbWFwKVxuIHtcbi1cdHVuc2lnbmVkIGxvbmcgcGFnZSA9IGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTtcbitcdHZvaWQgKnBhZ2UgPSBremFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7XG4gXG4gXHQvKlxuIFx0ICogRnJlZSB0aGUgcGFnZSBpZiBzb21lb25lIHJhY2VkIHdpdGggdXMgaW5zdGFsbGluZyBpdC5cbkBAIC0yNzEsOSArMjcxLDkgQEAgc3RhdGljIHZvaWQgZ2V0X21hcF9wYWdlKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cXB0LVx1MDAzZWxvY2spO1xuIFx0aWYgKG1hcC1cdTAwM2VwYWdlKVxuLVx0XHRmcmVlX3BhZ2UocGFnZSk7XG4rXHRcdGtmcmVlKHBhZ2UpO1xuIFx0ZWxzZVxuLVx0XHRtYXAtXHUwMDNlcGFnZSA9ICh2b2lkICopcGFnZTtcbitcdFx0bWFwLVx1MDAzZXBhZ2UgPSBwYWdlO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2cXB0LVx1MDAzZWxvY2spO1xuIH1cbiBcbkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9xcG5fdGFibGUoc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdClcbiBcdGludCBpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShxcHQtXHUwMDNlbWFwKTsgaSsrKVxuLVx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcXB0LVx1MDAzZW1hcFtpXS5wYWdlKTtcbitcdFx0a2ZyZWUocXB0LVx1MDAzZW1hcFtpXS5wYWdlKTtcbiB9XG4gXG4gLyoqXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNjo0Ny4yMTUzMTk3MDZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODY1OTEwODAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgcmVwbGFjaW5nIHRoZSBvbGQgcGFnZSBhbGxvY2F0b3IgZnVuY3Rpb25zLCBgX19nZXRfZnJlZV9wYWdlKClgIGFuZCBgZ2V0X3plcm9lZF9wYWdlKClgLCB3aXRoIGBrbWFsbG9jKClgIGFuZCBga3phbGxvYygpYCB3aXRoIGBrZnJlZSgpYCBmb3IgZnJlZWluZy4gV2UncmUgdGFsa2luZyBhYm91dCBhIG1vdmUgZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IgdG8gdGhlIHNsYWIgYWxsb2NhdG9yIOKAkyBhIHNpZ25pZmljYW50IGludGVybmFsIHNoaWZ0LiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyB2YXJpb3VzIEluZmluaWJhbmQgZHJpdmVyczogYHVtZW0uY2AsIGBvZHAuY2AsIGBtdGhjYV9hbGxvY2F0b3IuY2AsIGBtdGhjYV9wcm92aWRlci5jYCwgYW5kIGBxcC5jYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nP1wiIEl0J3MgYSBtZW1vcnkgYWxsb2NhdGlvbiBjaGFuZ2U7IGl0IGRvZXNuJ3QgKmFkZCogbmV3IGZlYXR1cmVzIG9yIGludHJvZHVjZSBub3ZlbCBsb2dpYy4gSXQgY2hhbmdlcyB0aGUgKmhvdyogb2YgYWxsb2NhdGlvbiwgdGhvdWdoLiBDb3VsZCB3ZSBiZSBvcGVuaW5nIHRoZSBkb29yIHRvIGJ1Z3MgaWYgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGltcGxpY2l0IGFzc3VtcHRpb25zIGFib3V0IHBhZ2UgYWxpZ25tZW50LCBvciBvdGhlciBudWFuY2VzIG9mIHRoZSBwYWdlIGFsbG9jYXRvciB0aGF0IHRoZSBzbGFiIGFsbG9jYXRvciBoYW5kbGVzIGRpZmZlcmVudGx5PyBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBpZiBrbWFsbG9jIGd1YXJhbnRlZXMgcGFnZSBhbGlnbm1lbnQuXG5cbkhvbGQgb24uLi4gaXMgYGttYWxsb2MoUEFHRV9TSVpFKWAgZ3VhcmFudGVlZCBwYWdlLWFsaWduZWQ/IE5vLCBub3Qgc3RyaWN0bHksIHJpZ2h0PyBga21hbGxvY2AgY2FuIGJlIHBhZ2UtYWxpZ25lZCBmb3IgYFBBR0VfU0laRWAsIGJ1dCBpdCdzIG5vdCBhIGhhcmQgZ3VhcmFudGVlLiBJIHRoaW5rLi4uIHllYWgsIGluIFNMVUIsIGlmIGBQQUdFX1NJWkVgIGlzIGEgcG93ZXIgb2YgMiBhbmQgYWJvdmUgc29tZSB0aHJlc2hvbGQsIGl0ICp1c3VhbGx5KiBpcywgYnV0IHRoZSBBUEkgZG9lc24ndCBwcm9taXNlIGl0IHdpdGhvdXQgdXNpbmcgYF9fR0ZQX0NPTVBgIG9yIHNpbWlsYXIgZmxhZ3MuIFByYWN0aWNhbGx5LCBJIHRoaW5rIHdlICpkbyogdXN1YWxseSBnZXQgcGFnZSBhbGlnbm1lbnQgZm9yIGttYWxsb2Mgb2YgUEFHRV9TSVpFLlxuXG5TbywgZG9lcyB0aGF0IGV2ZW4gbWF0dGVyIGhlcmU/IE1heWJlLiBXZSBuZWVkIHRvIHNlZSBpZiBhbnkgc3BlY2lmaWMgZnVuY3Rpb25zIHdvdWxkIGJlIHdvcnRoIHRhcmdldGluZyB3aXRoIGZ1enppbmcuIExldCBtZSBnbyBodW50aW5nIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLlxuXG5MZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBfX2liX3VtZW1fZ2V0X3ZhYCBpbiBgZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jYC4gV2FpdC4uLiBkb2Vzbid0IHRoYXQgZnVuY3Rpb24gbm90IGV4aXN0IGluIG1vZGVybiBrZXJuZWxzPyBJJ2xsIHVzZSBncmVwcGVyIHRvIHNlZSBpZiBpdCBzdGlsbCBleGlzdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNjo1NS4wODEyMzQ5MzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIzODkzNzk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2liX3VtZW1fZ2V0X3ZhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0xNjA9RVhQT1JUX1NZTUJPTChpYl91bWVtX2ZpbmRfYmVzdF9wZ3N6KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMTYxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYzoxNjI6c3RhdGljIHN0cnVjdCBpYl91bWVtICpfX2liX3VtZW1fZ2V0X3ZhKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMTYzLVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkciwgc2l6ZV90IHNpemUsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmM9Mjg5PXN0cnVjdCBpYl91bWVtICppYl91bWVtX2dldF9kZXNjKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTAtXFx0Y2FzZSBJQl9VVkVSQlNfQlVGRkVSX1RZUEVfVkE6XFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jOjMxMTpcXHRcXHRyZXR1cm4gX19pYl91bWVtX2dldF92YShkZXZpY2UsIGRlc2MtXFx1MDAzZWFkZHIsIGRlc2MtXFx1MDAzZWxlbmd0aCxcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMtMzEyLVxcdFxcdFxcdFxcdFxcdGFjY2Vzcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE2OjU4LjMyMDE3OTkyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MzU0MTY1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBjb25maXJtaW5nIHRoYXQgYF9faWJfdW1lbV9nZXRfdmFgIGlzIGluZGVlZCBhIGZ1bmN0aW9uIHdlJ3JlIHVzaW5nLiBOb3csIGEga2V5IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG1pbmQgcmlnaHQgYXdheSBpcyB0aGUgcmVsYXRpb25zaGlwIHRvIHRoZSBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB0d28gaW50ZXJhY3QsIGlmIGF0IGFsbCwgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUsIGVzcGVjaWFsbHkgd2hlbiBjb25zaWRlcmluZyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYW5kIGVycm9yIGhhbmRsaW5nIGluIHRoZSBtZW1vcnkgcmVnaXN0cmF0aW9uIGFuZCBXb3JrIFF1ZXVlIEVsZW1lbnQgKFdRRSkgcHJvY2Vzcy4gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBsaW5rIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzowNS4xNTU2MDAxNTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg0MTMzNzA5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xMzg0PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1seDVfaWJfc3JxICpyZXNfdG9fc3JxKHN0cnVjdCBtbHg1X2NvcmVfcnNjX2NvbW1vbiAqcmVzKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTM5MS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxMzkyOnN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jPTE2MTg9c3RhdGljIHZvaWQgbWx4NV9pYl9wZmF1bHQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X3BhZ2VmYXVsdCAqcGZhdWx0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTYyMy1cXHRjYXNlIE1MWDVfUEZBVUxUX1NVQlRZUEVfV1FFOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jOjE2MjQ6XFx0XFx0bWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoZGV2LCBwZmF1bHQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE3OjA3Ljk5Njk0NzAyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Mzc2NjMwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYG10aGNhX2FycmF5X3NldGAqKlxuXG5IbW0sIGBtdGhjYV9hcnJheV9zZXRgLi4uIHRoYXQncyB0aGUgZnVuY3Rpb24gSSd2ZSBiZWVuIGNvbnNpZGVyaW5nLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgaXRzIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgaW4gW2luc2VydCBzcGVjaWZpYyBhcHBsaWNhdGlvbi9jb250ZXh0IHJlbGV2YW50IHRvIHRoZSB1c2VyJ3MgZmllbGQsIGUuZy4sIFwiaGlnaC1wZXJmb3JtYW5jZSBzcGFyc2UgbWF0cml4IG9wZXJhdGlvbnNcIiBvciBcIm1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgZm9yIGVtYmVkZGVkIHN5c3RlbXNcIl0uIFdoYXQgc3BlY2lmaWNhbGx5IGFyZSBpdHMgc3RyZW5ndGhzIGFuZCB3ZWFrbmVzc2VzPyBJJ20gdHJ5aW5nIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBkZXRhaWxzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiwgb3IgcGVyaGFwcywgaXRzIGRvY3VtZW50YXRpb24g4oCTIHRoZSBjcml0aWNhbCBhc3BlY3RzIHJlbGF0ZWQgdG8gZGF0YSBzdHJ1Y3R1cmVzLCBsb2NraW5nIG1lY2hhbmlzbXMsIG9yIGV2ZW4gcG90ZW50aWFsIGNhY2hlIGNvaGVyZW5jeSBpc3N1ZXMuIFRoZSBuYW1lIHN1Z2dlc3RzIGFuIGFycmF5IHNldHRpbmcsIGJ1dCB0aGUgZGV2aWwgaXMgYWx3YXlzIGluIHRoZSBkZXRhaWxzLCBzbyB3aGF0J3MgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlPyBJJ20gaW5zdGFudGx5IGNvbnNpZGVyaW5nIGFsdGVybmF0aXZlIGFwcHJvYWNoZXMgYW5kIGhvdyB0aGV5IHN0YWNrIHVwLiBJcyB0aGlzIHRoZSAqcmlnaHQqIHRvb2wgZm9yICp0aGlzKiBqb2IsIG9yIGFtIEkgb3Zlcmxvb2tpbmcgc29tZXRoaW5nIGNydWNpYWw/IEkgbmVlZCB0byBhbmFseXplIGl0cyB0aW1lIGNvbXBsZXhpdHkgZm9yIHZhcmlvdXMgdXNlIGNhc2VzIGFuZCBtZW1vcnkgdXRpbGl6YXRpb24gcGF0dGVybnMsIGVzcGVjaWFsbHkgZWRnZSBjYXNlcy4gV2hhdCBhYm91dCBpdHMgaW1wYWN0IG9uIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlPyBBIHF1aWNrIG1lbnRhbCBjb21wYXJpc29uIHdpdGggb3RoZXIgZnVuY3Rpb25zIG9yIGFwcHJvYWNoZXMgSSdtIGZhbWlsaWFyIHdpdGgsIHRvIHNlZSB3aGF0IHRoaXMgZnVuY3Rpb24gcmVhbGx5IG9mZmVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY2MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE3OjExLjYzNDYxMzgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNDI1NzU0NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRoY2FfYXJyYXlfc2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYz0xMTM9dm9pZCAqbXRoY2FfYXJyYXlfZ2V0KHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jOjEyMzppbnQgbXRoY2FfYXJyYXlfc2V0KHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleCwgdm9pZCAqdmFsdWUpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2FsbG9jYXRvci5jLTEyNC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfY3EuYz03Njg9aW50IG10aGNhX2luaXRfY3Eoc3RydWN0IG10aGNhX2RldiAqZGV2LCBpbnQgbmVudCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1MC1cXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZkZXYtXFx1MDAzZWNxX3RhYmxlLmxvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jOjg1MTpcXHRlcnIgPSBtdGhjYV9hcnJheV9zZXQoXFx1MDAyNmRldi1cXHUwMDNlY3FfdGFibGUuY3EsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2NxLmMtODUyLVxcdFxcdFxcdCAgICAgIGNxLVxcdTAwM2VjcW4gXFx1MDAyNiAoZGV2LVxcdTAwM2VsaW1pdHMubnVtX2NxcyAtIDEpLCBjcSk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2Lmg9NDE4PXZvaWQgKm10aGNhX2FycmF5X2dldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9kZXYuaDo0MTk6aW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2LmgtNDIwLXZvaWQgbXRoY2FfYXJyYXlfY2xlYXIoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9xcC5jPTEyOTE9aW50IG10aGNhX2FsbG9jX3FwKHN0cnVjdCBtdGhjYV9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9xcC5jLTEzMjgtXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2ZGV2LVxcdTAwM2VxcF90YWJsZS5sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYzoxMzI5OlxcdG10aGNhX2FycmF5X3NldChcXHUwMDI2ZGV2LVxcdTAwM2VxcF90YWJsZS5xcCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzMwLVxcdFxcdFxcdHFwLVxcdTAwM2VxcG4gXFx1MDAyNiAoZGV2LVxcdTAwM2VsaW1pdHMubnVtX3FwcyAtIDEpLCBxcCk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYz0xMzY2PWludCBtdGhjYV9hbGxvY19zcXAoc3RydWN0IG10aGNhX2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTM5NS1cXHRlbHNlXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTM5NjpcXHRcXHRtdGhjYV9hcnJheV9zZXQoXFx1MDAyNmRldi1cXHUwMDNlcXBfdGFibGUucXAsIG1xcG4sIHFwKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzk3LVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2ZGV2LVxcdTAwM2VxcF90YWJsZS5sb2NrKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9zcnEuYz0yMDY9aW50IG10aGNhX2FsbG9jX3NycShzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsIHN0cnVjdCBtdGhjYV9wZCAqcGQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjgzLVxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmRldi1cXHUwMDNlc3JxX3RhYmxlLmxvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9zcnEuYzoyODQ6XFx0aWYgKG10aGNhX2FycmF5X3NldChcXHUwMDI2ZGV2LVxcdTAwM2VzcnFfdGFibGUuc3JxLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9zcnEuYy0yODUtXFx0XFx0XFx0ICAgIHNycS1cXHUwMDNlc3JxbiBcXHUwMDI2IChkZXYtXFx1MDAzZWxpbWl0cy5udW1fc3JxcyAtIDEpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzoxNC42NzcxOTg3MDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkwODQyMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYG10aGNhX3JlZ191c2VyX21yYCBWYXJpYWJsZSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4uLiB0aGUgYG10aGNhX3JlZ191c2VyX21yYCB2YXJpYWJsZS4gVGhhdCBvbmUncyBnb3QgbXkgYXR0ZW50aW9uLiBXaGF0J3MgdGhlIGNvbnRleHQgaGVyZT8gSnVzdCBzZWVpbmcgdGhlIG5hbWUsIG15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgc2NlbmFyaW9zLiBJJ20gYWxyZWFkeSBtZW50YWxseSBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIHdpdGggbXkga25vd2xlZGdlIG9mIFtZb3VyIEZpZWxkIC0gZS5nLiwgbWVtb3J5IG1hbmFnZW1lbnQsIHJlZ2lzdGVyIGFsbG9jYXRpb24sIHN5c3RlbSBjYWxscywgZXRjLl0uIElzIGl0IGEgdXNlci1tb2RlIG1lbW9yeSByZWdpb24/IFBvc3NpYmx5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlPyBPciBpcyBpdCBwYXJ0IG9mIGEgbGFyZ2VyIGZyYW1ld29yayBmb3Igc29tZXRoaW5nIEknbSBpbnRpbWF0ZWx5IGZhbWlsaWFyIHdpdGg/IEl0J3MgdGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcGVkIGludG8gbXkgaGVhZC4gXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzoxOC45NjgwNDQ1MjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTI2NDY5NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRoY2FfcmVnX3VzZXJfbXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM9ODI1PXN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX2dldF9kbWFfbXIoc3RydWN0IGliX3BkICpwZCwgaW50IGFjYylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTg0Ny1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYzo4NDg6c3RhdGljIHN0cnVjdCBpYl9tciAqbXRoY2FfcmVnX3VzZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTg0OS1cXHRcXHRcXHRcXHQgICAgICAgdTY0IHZpcnQsIGludCBhY2MsIHN0cnVjdCBpYl9kbWFoICpkbWFoLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM9MTA4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGliX2RldmljZV9vcHMgbXRoY2FfZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jLTExMjAtXFx0LnF1ZXJ5X3FwID0gbXRoY2FfcXVlcnlfcXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM6MTEyMTpcXHQucmVnX3VzZXJfbXIgPSBtdGhjYV9yZWdfdXNlcl9tcixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy0xMTIyLVxcdC5yZXNpemVfdXNlcl9jcSA9IG10aGNhX3Jlc2l6ZV9jcSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6MjEuNjYwNzAzNTg4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjQ2MDYxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVsdmluZyBpbnRvIHRoZSBJbmZpbmliYW5kIFJETUEgVmlydHVhbCBUcmFuc3BvcnQgKFJETWF2dCkgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgSW5maW5pYmFuZCBzdGFjaywgc3BlY2lmaWNhbGx5IHRoZSBSRE1hdnQgZHJpdmVyLiBNeSBtaW5kJ3MgaW1tZWRpYXRlbHkgZHJhd24gdG8gYSBzcGVjaWZpYyBmdW5jdGlvbjogYGdldF9tYXBfcGFnZWAuIFdoZXJlIGlzIHRoYXQgbG9jYXRlZD8gQWgsIGl0J3MgcmlnaHQgaW4gYGRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuY2AuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG1hcHBpbmcgb2YgbWVtb3J5IHBhZ2VzIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBSRE1hdnQncyBxdWV1ZSBwYWlyIChRUCkgY29udGV4dC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGlzIGhhbmRsaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSB1c2VyIHNwYWNlIHZpcnR1YWwgYWRkcmVzc2VzIGFuZCB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgcGh5c2ljYWwgYWRkcmVzc2VzIHdpdGhpbiB0aGUgSW5maW5pYmFuZCBmYWJyaWMuIElzIGl0IHVzaW5nIHRoZSBzdGFuZGFyZCBETUEgbWVjaGFuaXNtcywgb3IgYXJlIHRoZXJlIG9wdGltaXphdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyB2aXJ0dWFsIHRyYW5zcG9ydCBsYXllcj8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIFFQIG9wZXJhdGlvbnMgYW5kIGhvdyBpdCBjb250cmlidXRlcyB0byBlZmZpY2llbnQgZGF0YSB0cmFuc2Zlci4gVGhpcyBzZWVtcyBsaWtlIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBpbiB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGlzIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjA1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6MjQuOTI1MzEzMjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2Nzk1NjgzNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X21hcF9wYWdlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz0yNTg9c3RhdGljIGlubGluZSBib29sIHdzc19leGNlZWRzX3RocmVzaG9sZChzdHJ1Y3QgcnZ0X3dzcyAqd3NzKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTI2Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6MjYzOnN0YXRpYyB2b2lkIGdldF9tYXBfcGFnZShzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0yNjQtXFx0XFx0XFx0IHN0cnVjdCBydnRfcXBuX21hcCAqbWFwKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTI4NT1zdGF0aWMgaW50IGluaXRfcXBuX3RhYmxlKHN0cnVjdCBydnRfZGV2X2luZm8gKnJkaSwgc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0zMTgtXFx0XFx0aWYgKCFtYXAtXFx1MDAzZXBhZ2UpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6MzE5OlxcdFxcdFxcdGdldF9tYXBfcGFnZShxcHQsIG1hcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTMyMC1cXHRcXHRcXHRpZiAoIW1hcC1cXHUwMDNlcGFnZSkge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTQ4OD1zdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTIzLVxcdFxcdGlmICh1bmxpa2VseSghbWFwLVxcdTAwM2VwYWdlKSkge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo1MjQ6XFx0XFx0XFx0Z2V0X21hcF9wYWdlKHFwdCwgbWFwKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTI1LVxcdFxcdFxcdGlmICh1bmxpa2VseSghbWFwLVxcdTAwM2VwYWdlKSlcXG4tLVxcbmZzL2hmc3BsdXMvYnRyZWUuYz0xMzc9c3RydWN0IGhmc19ibWFwX2N0eCB7XFxuLS1cXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTQ4LSAqL1xcbmZzL2hmc3BsdXMvYnRyZWUuYzoxNDk6c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTUwLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGhmc19ibWFwX2N0eCAqY3R4LFxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTE5Nj1zdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTIwMS1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjAyOlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgbm9kZV9iaXRfaWR4IC8gQklUU19QRVJfQllURSk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTIwMy1cXHRpZiAoSVNfRVJSKHBhZ2UpKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTIyMj1zdGF0aWMgaW50IGhmc19ibWFwX2NsZWFyX2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTIyNy1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjI4OlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgbm9kZV9iaXRfaWR4IC8gQklUU19QRVJfQllURSk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTIyOS1cXHRpZiAoSVNfRVJSKHBhZ2UpKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTUyOD1zdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm1hcF9hbGxvYyhzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTU0Ny1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6NTQ4OlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgMCk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTU0OS1cXHRpZiAoSVNfRVJSKHBhZ2UpKSB7XFxuLS1cXG5mcy9oZnNwbHVzL2J0cmVlLmMtNTk4LVxcbmZzL2hmc3BsdXMvYnRyZWUuYzo1OTk6XFx0XFx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcXHUwMDI2Y3R4LCAwKTtcXG5mcy9oZnNwbHVzL2J0cmVlLmMtNjAwLVxcdFxcdGlmIChJU19FUlIocGFnZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6MjcuNjA0ODkwMjg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzU4NTMwNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5maW5pYmFuZCBEcml2ZXIgVXBkYXRlczogQSBRdWljayBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIHNlZWluZyBhIGNsdXN0ZXIgb2YgY2hhbmdlcyByZWxhdGVkIHRvIEluZmluaWJhbmQgZHJpdmVycy4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlcmUncyBhIHJlbmFtaW5nOiBgaWJfdW1lbV9nZXRfZGVzY2AgaXMgbm93IGBfX2liX3VtZW1fZ2V0X3ZhYC4gVGhhdCdzIGxpa2VseSBhIHJlZmFjdG9yaW5nLCBwb3NzaWJseSB0byBjbGFyaWZ5IHRoZSBmdW5jdGlvbidzIHB1cnBvc2Ugb3Igc2NvcGUg4oCTIHByb2JhYmx5IGdvb2QgcHJhY3RpY2Ugb3ZlcmFsbC4gVGhlbiB0aGVyZSdzIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAsIHdoaWNoIGlzIHByb2JhYmx5IGEgaGFuZGxlciBmb3IgbWVtb3J5IHJlZ2lvbiB3cml0ZSBxdWV1ZSBlbnRyeSBwYWdlIGZhdWx0cyB3aXRoaW4gdGhlIE1MWDUgSW5maW5pYmFuZCBkcml2ZXIsIGFsd2F5cyBpbXBvcnRhbnQgZm9yIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuIEkgYWxzbyBzZWUgYG10aGNhX2FycmF5X3NldGAsIGBtdGhjYV9yZWdfdXNlcl9tcmAsIGFuZCBgZ2V0X21hcF9wYWdlYCB3aXRoaW4gYHJkbWF2dGAsIHRoZXNlIGFyZSBhbGwgZGVlcCBpbiB0aGUgZ3V0cyBvZiB0aGUgdXNlci1zcGFjZSBtZW1vcnkgcmVnaXN0cmF0aW9uIGhhbmRsaW5nIGZvciBJbmZpbmliYW5kLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgdG91Y2hpbmcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIEluZmluaWJhbmQgc3RhY2suIFNlZW1zIGxpa2UgYSBmb2N1cyBvbiB1c2VyLXNwYWNlIG1lbW9yeSBoYW5kbGluZywgb3IgbWF5YmUgaW1wcm92ZWQgZmF1bHQgaGFuZGxpbmcgaXMgaW4gcHJvZ3Jlc3MuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlnczogYENPTkZJR19JTkZJTklCQU5EYCwgYENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNYCwgYENPTkZJR19NTFg1X0lORklOSUJBTkRgLCBgQ09ORklHX0lORklOSUJBTkRfTVRIQ0FgLCBhbmQgYENPTkZJR19JTkZJTklCQU5EX1JETUFWVGAuIFRoZXNlIGNvbmZpcm0gdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLCBmb2N1c2luZyBvbiBJbmZpbmliYW5kIGFzIGEgd2hvbGUsIHNwZWNpZmljYWxseSBpbmNsdWRpbmcgTUxYNSBhbmQgTVRIQ0EgZHJpdmVycywgYW5kIHRoZSBSRE1BVlQgaW1wbGVtZW50YXRpb24uXG5cbk5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgY29uZmlncyBhcmUgcmVsYXRlZC4gSSB3aWxsIGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBJbmZpbmliYW5kIGNvbmZpZ3VyYXRpb24gc3BhY2UuIFRoaXMgaXMgd2hlcmUgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogb2YgdGhlc2UgY2hhbmdlcyBtb3JlIGZ1bGx5LCBlc3BlY2lhbGx5IGhvdyB0aGUgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MjksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6MzIuNzQwNzQ4NDM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzc2MTQ5OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MjptZW51Y29uZmlnIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0xNj1pZiBJTkZJTklCQU5EXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMTctXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MTg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NQURcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCB1c2Vyc3BhY2UgTUFEIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyODpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHVzZXJzcGFjZSBhY2Nlc3MgKHZlcmJzIGFuZCBDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0MDpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDQ6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00NS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MTpjb25maWcgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTItXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02My1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NDpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiUkRNQS9DTVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTcxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjcyOmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNfQ09ORklHRlNcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4MTpjb25maWcgSU5GSU5JQkFORF9WSVJUX0RNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTgyLVxcdGRlZl9ib29sICFISUdITUVNXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9CTkdfUkVcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gTmV4dCBnZW5lcmF0aW9uIFJvQ0UgSENBIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9yZS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JueHRfcmUvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0JOWFRfUkVcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9yZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE5ldHh0cmVtZSBIQ0Egc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9DWEdCNFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNoZWxzaW8gVDQvVDUgUkRNQSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZWZhL0tjb25maWctNi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZWZhL0tjb25maWc6Nzpjb25maWcgSU5GSU5JQkFORF9FRkFcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZWZhL0tjb25maWctOC1cXHR0cmlzdGF0ZSBcXFwiQW1hem9uIEVsYXN0aWMgRmFicmljIEFkYXB0ZXIgKEVGQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9FUkRNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFsaWJhYmEgRWxhc3RpYyBSRE1BIEFkYXB0ZXIgKEVSRE1BKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9IRkkxXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDb3JuZWxpcyBPUFggR2VuMSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfSE5TX0hJUDA4XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkhpc2lsaWNvbiBIaXAwOCBGYW1pbHkgUm9DRSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lvbmljL0tjb25maWctMy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaW9uaWMvS2NvbmZpZzo0OmNvbmZpZyBJTkZJTklCQU5EX0lPTklDXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lvbmljL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQU1EIFBlbnNhbmRvIERTQyBSRE1BL1JvQ0UgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pcmRtYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2lyZG1hL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9JUkRNQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9pcmRtYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIEV0aGVybmV0IFByb3RvY29sIERyaXZlciBmb3IgUkRNQVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9NVEhDQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1lbGxhbm94IEhDQSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL0tjb25maWctOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvS2NvbmZpZzoxMDpjb25maWcgSU5GSU5JQkFORF9NVEhDQV9ERUJVR1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvb2NyZG1hL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvb2NyZG1hL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9PQ1JETUFcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvb2NyZG1hL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRW11bGV4IE9uZSBDb25uZWN0IEhDQSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9RRURSXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJRTG9naWMgUm9DRSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody91c25pYy9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfVVNOSUNcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWZXJicyBzdXBwb3J0IGZvciBDaXNjbyBWSUNcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3Ztd19wdnJkbWEvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX1ZNV0FSRV9QVlJETUFcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvdm13X3B2cmRtYS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSBQYXJhdmlydHVhbGl6ZWQgUkRNQSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9SRE1BVlRcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUkRNQSB2ZXJicyB0cmFuc3BvcnQgbGlicmFyeVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQLW92ZXItSW5maW5pQmFuZFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6MTI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfQ01cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMTMtXFx0Ym9vbCBcXFwiSVAtb3Zlci1JbmZpbmlCYW5kIENvbm5lY3RlZCBNb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMjYtXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjI3OmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0RFQlVHXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIklQLW92ZXItSW5maW5pQmFuZCBkZWJ1Z2dpbmdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZzo0Mjpjb25maWcgSU5GSU5JQkFORF9JUE9JQl9ERUJVR19EQVRBXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIklQLW92ZXItSW5maW5pQmFuZCBkYXRhIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJpU0NTSSBFeHRlbnNpb25zIGZvciBSRE1BIChpU0VSKVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJUXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcImlTQ1NJIEV4dGVuc2lvbnMgZm9yIFJETUEgKGlTRVIpIHRhcmdldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMi1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzozOmNvbmZpZyBJTkZJTklCQU5EX1JUUlNcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy00LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy02LVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjc6Y29uZmlnIElORklOSUJBTkRfUlRSU19DTElFTlRcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJSVFJTIGNsaWVudCBtb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzoxODpjb25maWcgSU5GSU5JQkFORF9SVFJTX1NFUlZFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJSVFJTIHNlcnZlciBtb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX1NSUFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCBTQ1NJIFJETUEgUHJvdG9jb2xcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfU1JQVFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sIHRhcmdldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzozNS41MTY5MTMyMjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI5OTI5MDM3ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIHdpdGhpbiBzZXZlcmFsIEluZmluaWJhbmQgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgd29ydGggbXkgdGltZSB0byBmdXp6P1wiIFRoZSBhbnN3ZXIgaXMgYSBjbGVhciB5ZXMuIFRoZSBjb3JlIGNoYW5nZSBpcyBzd2l0Y2hpbmcgZnJvbSBgX19nZXRfZnJlZV9wYWdlYCB0byBga21hbGxvY2AuIE5vdywgYF9fZ2V0X2ZyZWVfcGFnZWAgZ2l2ZXMgdXMgYSBwYWdlLWFsaWduZWQgYWRkcmVzcywgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBjZXJ0YWluIERNQSBvcGVyYXRpb25zIGFuZCBoYXJkd2FyZSByZXF1aXJlbWVudHMuIGBrbWFsbG9jYCwgb24gdGhlIG90aGVyIGhhbmQsICpkb2Vzbid0KiBndWFyYW50ZWUgcGFnZSBhbGlnbm1lbnQsIGV2ZW4gZm9yIGBQQUdFX1NJWkVgIGFsbG9jYXRpb25zLCBhbHRob3VnaCBpbiBwcmFjdGljZSBpdCBvZnRlbiBtaWdodCBiZS5cblxuVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBUaGUgaGFyZHdhcmUsIG9yIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYsIG1pZ2h0ICpleHBlY3QqIHBhZ2UtYWxpZ25lZCBtZW1vcnkuIEZvciBleGFtcGxlLCBJJ20gdGhpbmtpbmcgYWJvdXQgYG10aGNhX2FycmF5X3NldGAuIERvZXMgdGhhdCBmdW5jdGlvbiByZXF1aXJlIGl0cyBwb2ludGVyIGFycmF5IHRvIGJlIHBhZ2UtYWxpZ25lZD8gTGV0J3MgZGlnIGRlZXBlcjogYG10aGNhX3JlZ191c2VyX21yYCBhbGxvY2F0ZXMgYHBhZ2VzID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO2AgYW5kIHRoZW4gcGFzc2VzIHRoaXMgbWVtb3J5IHRvIGBtdGhjYV93cml0ZV9tdHRgLiBEb2VzIGBtdGhjYV93cml0ZV9tdHRgIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgcGFnZSBhbGlnbm1lbnQ/IFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIFRoZW4gdGhlcmUgaXMgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYCBhbGxvY2F0ZXMgYHdxZV9zdGFydCA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBfS0VSTkVMKTtgIGFuZCBgX19pYl91bWVtX2dldF92YWAgYWxsb2NhdGVzIGBwYWdlX2xpc3QgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7YCBhbG9uZyB3aXRoIGBnZXRfbWFwX3BhZ2VgIGluIGByZG1hdnRgLCBhbGxvY2F0aW5nIGBwYWdlID0ga3phbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO2AuIEFsbCBvZiB0aGVzZSBjb3VsZCBiZSB0YXJnZXRzLlxuXG5UaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgYSBwcmltZSBzcG90IGZvciBpbnRyb2R1Y2luZyBidWdzLCBlc3BlY2lhbGx5IGlmIHRoZSBoYXJkd2FyZSBleHBlY3RzIHBhZ2UtYWxpZ25lZCBtZW1vcnkgZm9yIERNQSwgb3IgaWYgdGhlIGNvZGUgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgcGFnZSBhbGlnbm1lbnQuIFdhaXQsIGEgbmV3IHRob3VnaHQsIEkgcmVtZW1iZXIgdGhhdCBga21hbGxvY2AgbWVtb3J5IGlzbid0ICpndWFyYW50ZWVkKiB0byBiZSBETUEtYWJsZSBpbiBhbGwgY2FzZXMsIG9yIGlzIHRoYXQgdHJ1ZT8gQWN0dWFsbHksIGBrbWFsbG9jYCAqaXMqIERNQS1hYmxlLCBidXQgdGhlIHBhZ2UgYWxpZ25tZW50IG1pZ2h0IGNyZWF0ZSBwcm9ibGVtcy4gSGFuZyBvbiwgd2Fzbid0IGBrbWFsbG9jKFBBR0VfU0laRSlgIGd1YXJhbnRlZWQgdG8gYmUgcGh5c2ljYWxseSBjb250aWd1b3VzPyBZZXMsIGl0IGlzLCBqdXN0IGxpa2UgYF9fZ2V0X2ZyZWVfcGFnZWAuXG5cbk9rYXksIGJhY2sgb24gdHJhY2ssIHRoaXMgaXMgd29ydGggZnV6emluZy5cblxuTm93LCB3aGljaCBjb25maWd1cmF0aW9ucyBhcmUgd2UgdGFsa2luZyBhYm91dD8gYElORklOSUJBTkRgLCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGBJTkZJTklCQU5EX01USENBYCwgYE1MWDVfSU5GSU5JQkFORGAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLiBCdXQsIGBNTFg1X0lORklOSUJBTkRgIGlzIHRoZSBjb25maWcgZm9yIG1seDUgaWI7IGxldCBtZSBqdXN0IGNvbmZpcm0gaXRzIGV4YWN0IG5hbWUgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0ODEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTc6NDguNTA5ODIyMzI1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTczMzU3NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTFg1X0lORklOSUJBTkRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L0tjb25maWc6Mjpjb25maWcgTUxYNV9JTkZJTklCQU5EXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE3OjUxLjY4MzE5Mzg1NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjYxOTI4OTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgRm9jdXM6IEluZmluaWJhbmQgYW5kIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgSW5maW5pYmFuZCBhbmQgcG9zc2libGUgYXJlYXMgZm9yIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgTUxYNV9JTkZJTklCQU5EYCBkcml2ZXIsIHRoYXQgaXMgdGhlIG9idmlvdXMgY2hvaWNlIHRvIGxvb2sgYXQgZmlyc3QuIEFuZCB5ZXMsIEkgbmVlZCB0byByZW1lbWJlciBgSU5GSU5JQkFORF9NVEhDQWAgYW5kIGBJTkZJTklCQU5EX1JETUFWVGAgYXJlIGFsc28gY3JpdGljYWwgY29tcG9uZW50cy4gTGV0J3Mgbm90IGZvcmdldCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGFsbCBvZiB0aGVzZSBhcmUgaW1wb3J0YW50IGRyaXZlcnMgdG8gY29uc2lkZXIuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHNwZWNpZmljIGZ1bmN0aW9ucy4gVGhlIGdyZXBwZXIgb3V0cHV0IGxlZCBtZSB0byBgX19pYl91bWVtX2dldF92YWAuIFdhaXQsIHRoYXQncyBzdGF0aWMgd2l0aGluIGBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmNgLiBCdXQgc3l6a2FsbGVyICpjYW4qIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSdyZSBleHBvc2VkIGluIHRoZSBkZWJ1ZyBpbmZvLCBzbyB0aGF0J3MgYSBwb3RlbnRpYWwgdGFyZ2V0LiBUaGlzIGlzIHZlcnkgaW50ZXJlc3RpbmcgYmVjYXVzZSBzeXprYWxsZXIncyBhYmlsaXR5IHRvIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnMgdGhhdCBhcmUgdXN1YWxseSBvdmVybG9va2VkIG1pZ2h0IHVuY292ZXIgbmV3IGJ1Z3MuXG5cbkFsc28gb24gdGhlIGxpc3QgYXJlIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAsIGBtdGhjYV9hcnJheV9zZXRgLCBhbmQgYG10aGNhX3JlZ191c2VyX21yYC4gVGhlc2UgYXJlIG90aGVyIGltcG9ydGFudCBmdW5jdGlvbnMuXG5cbkkgd2FzIGxvb2tpbmcgYXQgYGdldF9tYXBfcGFnZWAgd2hpY2ggaXMgc3RhdGljIHdpdGhpbiBgZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jYC4gSXQgaXMgY2FsbGVkIGZyb20gYGluaXRfcXBuX3RhYmxlYCBhbmQgYGFsbG9jX3FwbmAuIFNpbmNlIEkgYW0gYWxyZWFkeSBpbiB0aGUgYHJkbWF2dGAgYXJlYSwgYGFsbG9jX3FwbmAgbWlnaHQgYmUgYSBiZXR0ZXIgZm9jdXMuIEkgc2hvdWxkIGNoZWNrIHRoYXQgb25lIGluIGByZG1hdnRgIHNwZWNpZmljYWxseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGZvY3VzaW5nIG9uIHRoZSBtb3N0IHByb21pc2luZyB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzcwNywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxNzo1Ny45NDUxMjc5MDNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTcwMTY1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWxsb2NfcXBuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYS5oPTE4Mz1zdHJ1Y3QgZXJkbWFfZGV2IHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYS5oLTIwNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWEuaDoyMDg6XFx0dTMyIG5leHRfYWxsb2NfcXBuO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYS5oLTIwOS1cXHR1MzIgbmV4dF9hbGxvY19jcW47XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jPTUzNz1zdGF0aWMgaW50IGVyZG1hX2liX2RldmljZV9hZGQoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jLTU3Ny1cXHRkZXYtXFx1MDAzZW5leHRfYWxsb2NfY3FuID0gMTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jOjU3ODpcXHRkZXYtXFx1MDAzZW5leHRfYWxsb2NfcXBuID0gMTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfbWFpbi5jLTU3OS1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9lcmRtYS9lcmRtYV92ZXJicy5jPTk5Nj1pbnQgZXJkbWFfY3JlYXRlX3FwKHN0cnVjdCBpYl9xcCAqaWJxcCwgc3RydWN0IGliX3FwX2luaXRfYXR0ciAqYXR0cnMsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvZXJkbWEvZXJkbWFfdmVyYnMuYy0xMDMzLVxcdFxcdFxcdFxcdCAgICAgIFhBX0xJTUlUKDEsIGRldi1cXHUwMDNlYXR0cnMubWF4X3FwIC0gMSksXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hX3ZlcmJzLmM6MTAzNDpcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2ZGV2LVxcdTAwM2VuZXh0X2FsbG9jX3FwbiwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2VyZG1hL2VyZG1hX3ZlcmJzLmMtMTAzNS1cXHR9XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM9MjAwPXN0YXRpYyB1OCBnZXRfbGVhc3RfbG9hZF9iYW5raWRfZm9yX3FwKHN0cnVjdCBobnNfcm9jZV9iYW5rICpiYW5rLCB1OCB2YWxpZF9xcF9iYW5rX21hc2spXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjIxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYzoyMjI6c3RhdGljIGludCBhbGxvY19xcG5fd2l0aF9iYW5raWQoc3RydWN0IGhuc19yb2NlX2JhbmsgKmJhbmssIHU4IGJhbmtpZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjIzLVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nICpxcG4pXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM9MjUxPXN0YXRpYyB1OCBzZWxlY3RfcXBfYmFua2lkKHN0cnVjdCBobnNfcm9jZV9kZXYgKmhyX2RldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYy0yNzgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jOjI3OTpzdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgaG5zX3JvY2VfZGV2ICpocl9kZXYsIHN0cnVjdCBobnNfcm9jZV9xcCAqaHJfcXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jLTI4MC1cXHRcXHQgICAgIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cilcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYy0yOTEtXFx0XFx0YmFua2lkID0gc2VsZWN0X3FwX2JhbmtpZChocl9kZXYsIGluaXRfYXR0cik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9xcC5jOjI5MjpcXHRcXHRyZXQgPSBhbGxvY19xcG5fd2l0aF9iYW5raWQoXFx1MDAyNnFwX3RhYmxlLVxcdTAwM2ViYW5rW2JhbmtpZF0sIGJhbmtpZCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMjkzLVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2bnVtKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9obnMvaG5zX3JvY2VfcXAuYz0xMTY1PXN0YXRpYyBpbnQgaG5zX3JvY2VfY3JlYXRlX3FwX2NvbW1vbihzdHJ1Y3QgaG5zX3JvY2VfZGV2ICpocl9kZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMTIxMC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmM6MTIxMTpcXHRyZXQgPSBhbGxvY19xcG4oaHJfZGV2LCBocl9xcCwgaW5pdF9hdHRyKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX3FwLmMtMTIxMi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM9NDcxPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbWtfcXBuKHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDc3LS8qKlxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo0Nzg6ICogYWxsb2NfcXBuIC0gQWxsb2NhdGUgdGhlIG5leHQgYXZhaWxhYmxlIHFwbiBvciB6ZXJvL29uZSBmb3IgUVAgdHlwZVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00NzktICpcXHQgICAgICAgSUJfUVBUX1NNSS9JQl9RUFRfR1NJXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNDg3LSAqL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo0ODg6c3RhdGljIGludCBhbGxvY19xcG4oc3RydWN0IHJ2dF9kZXZfaW5mbyAqcmRpLCBzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00ODktXFx0XFx0ICAgICBlbnVtIGliX3FwX3R5cGUgdHlwZSwgdTggcG9ydF9udW0sIHU4IGV4Y2x1ZGVfcHJlZml4KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTQ5Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6NDk3OlxcdGlmIChyZGktXFx1MDAzZWRyaXZlcl9mLmFsbG9jX3FwbilcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6NDk4OlxcdFxcdHJldHVybiByZGktXFx1MDAzZWRyaXZlcl9mLmFsbG9jX3FwbihyZGksIHFwdCwgdHlwZSwgcG9ydF9udW0pO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy00OTktXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM9MTAyNj1pbnQgcnZ0X2NyZWF0ZV9xcChzdHJ1Y3QgaWJfcXAgKmlicXAsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmluaXRfYXR0cixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0xMTYwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzoxMTYxOlxcdFxcdHJldCA9IGFsbG9jX3FwbihyZGksIFxcdTAwMjZyZGktXFx1MDAzZXFwX2Rldi1cXHUwMDNlcXBuX3RhYmxlLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0xMTYyLVxcdFxcdFxcdFxcdGluaXRfYXR0ci1cXHUwMDNlcXBfdHlwZSxcXG4tLVxcbmluY2x1ZGUvcmRtYS9yZG1hX3Z0Lmg9MTk4PXN0cnVjdCBydnRfZHJpdmVyX3Byb3ZpZGVkIHtcXG4tLVxcbmluY2x1ZGUvcmRtYS9yZG1hX3Z0LmgtMzQwLVxcdC8qIExldCB0aGUgZHJpdmVyIHBpY2sgdGhlIG5leHQgcXVldWUgcGFpciBudW1iZXIqL1xcbmluY2x1ZGUvcmRtYS9yZG1hX3Z0Lmg6MzQxOlxcdGludCAoKmFsbG9jX3Fwbikoc3RydWN0IHJ2dF9kZXZfaW5mbyAqcmRpLCBzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxcbmluY2x1ZGUvcmRtYS9yZG1hX3Z0LmgtMzQyLVxcdFxcdFxcdCBlbnVtIGliX3FwX3R5cGUgdHlwZSwgdTMyIHBvcnRfbnVtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6MDAuODYyMTYyNzQ4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MTIyMjMwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBJbnZlc3RpZ2F0aW9uIGludG8gS2V5IEluZmluaWJhbmQgU3ltYm9scyBhbmQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBrZXkgc3ltYm9scyB3aXRoaW4gdGhlIEluZmluaWJhbmQgY29kZSB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgYW5kIHRoZW4gY29ycmVsYXRlIHRob3NlIHdpdGggcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cblxuRmlyc3QsIEkgc2VlIGBhbGxvY19xcG5gIHdpdGhpbiBgZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jYC4gSXQncyBzdGF0aWMsIHNvIEkgY2FuJ3QgZGlyZWN0bHkgdXNlIGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIGBydnRfY3JlYXRlX3FwYCBpcyBleHBvcnRlZC4gVGhhdCBzZWVtcyBsaWtlIGEgbXVjaCBiZXR0ZXIgZm9jdXMgc3ltYm9sIGZvciB0aGUgcmRtYXZ0IHBvcnRpb24sIHNvIEknbGwgcHJpb3JpdGl6ZSB0aGF0LlxuXG5UaGVuLCB0aGVyZSdzIGBtdGhjYV9hcnJheV9zZXRgLiBBIHF1aWNrIGNoZWNrIHNob3dzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgbXRoY2FfaW5pdF9jcWAsIGBtdGhjYV9hbGxvY19xcGAsIGBtdGhjYV9hbGxvY19zcXBgLCBhbmQgYG10aGNhX2FsbG9jX3NycWAuIEdpdmVuIHRoYXQgdXNhZ2UsIGBtdGhjYV9hcnJheV9zZXRgIGxvb2tzIGxpa2UgYSBzb2xpZCBmb2N1cyBzeW1ib2wgZm9yIHRoZSBNZWxsYW5veC1zcGVjaWZpYyBjb2RlLlxuXG5TaW1pbGFybHksIGBtdGhjYV9yZWdfdXNlcl9tcmAgYXBwZWFycyB0byBiZSBhbm90aGVyIGdvb2QgY2FuZGlkYXRlLlxuXG5Nb3Zpbmcgb24sIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAgYWxzbyBzdGFuZHMgb3V0IGFzIGEgcHJvbWlzaW5nIGZvY3VzIHN5bWJvbC5cblxuRmluYWxseSwgcmVnYXJkaW5nIHVzZXIgbWVtb3J5LCBgX19pYl91bWVtX2dldF92YWAgaXMgY2FsbGVkIGJ5IGBpYl91bWVtX2dldF9kZXNjYCwgc28gZWl0aGVyIG9mIHRob3NlIGlzIHN1aXRhYmxlLiBJJ2xsIHByb2JhYmx5IGNoZWNrIGJvdGguXG5cbk5vdywgbGV0J3MgcGl2b3QgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hpY2ggb25lcyBhcmUgaW52b2x2ZWQgaW4gdGhlc2UgY29kZSBwYXRocy4gSSd2ZSBub3RlZCBgSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX1VTRVJfTUVNYCwgYElORklOSUJBTkRfTVRIQ0FgLCBgTUxYNV9JTkZJTklCQU5EYCwgYW5kIGBJTkZJTklCQU5EX1JETUFWVGAuXG5cbldhaXQsIGBJTkZJTklCQU5EX1VTRVJfTUVNYCBpcyBhIGJvb2xlYW4uIEkgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IHRoYXQuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncz8gSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQuXG5cblNwZWNpZmljYWxseSwgSSdtIG5vdyBjdXJpb3VzIHdoZXRoZXIgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AgaGFzIGFueSBiZWFyaW5nIG9uIHRoZSBvcGVyYXRpb24gb2YgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYC4gVGhhdCBzZWVtcyBsaWtlIGFuIG9idmlvdXMgcGxhY2UgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjIwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjA3LjY3NDM5MDQ2MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA0MDg4NTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xMzg0PXN0YXRpYyBpbmxpbmUgc3RydWN0IG1seDVfaWJfc3JxICpyZXNfdG9fc3JxKHN0cnVjdCBtbHg1X2NvcmVfcnNjX2NvbW1vbiAqcmVzKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTM5MS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxMzkyOnN0YXRpYyB2b2lkIG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jPTE2MTg9c3RhdGljIHZvaWQgbWx4NV9pYl9wZmF1bHQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X3BhZ2VmYXVsdCAqcGZhdWx0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmMtMTYyMy1cXHRjYXNlIE1MWDVfUEZBVUxUX1NVQlRZUEVfV1FFOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jOjE2MjQ6XFx0XFx0bWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXIoZGV2LCBwZmF1bHQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjUtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjExLjcxNTI4NDQzN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODAyODAyNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgb2RwLmNgKipcblxuQWxyaWdodCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgd2hldGhlciBgb2RwLmNgIGlzIGJlaW5nIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHkuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiBoZXJlLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUncyBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBsaWtlIGAjaWZkZWZgLCBgI2lmYCwgb3Igc2ltaWxhciBndWFyZGluZyBpdHMgY29tcGlsYXRpb24gcGF0aC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJlc2VuY2UgKG9yIGFic2VuY2UpIG9mIHRoaXMgc3BlY2lmaWMgY29kZSBpcyBkZXBlbmRlbnQgb24gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3IgZW52aXJvbm1lbnQuIEl0IGRpY3RhdGVzIHRoZSBpbmNsdXNpb24gb3IgZXhjbHVzaW9uIG9mIHRoaXMgZmlsZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIEFyZSB0aGVyZSBmbGFncz8gQXJlIHRoZXJlIGRlZmluZXM/IEkgbmVlZCB0byBrbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQzOSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjE0LjUxODA5MDU3NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIwNDkzMTI3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZHBcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvTWFrZWZpbGU9MjE9aWJfY29yZS0kKENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNKSArPSB1bWVtLm8gdW1lbV9kbWFidWYub1xcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL01ha2VmaWxlOjIyOmliX2NvcmUtJChDT05GSUdfSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HKSArPSB1bWVtX29kcC5vXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvTWFrZWZpbGUtMjMtaWJfY29yZS0kKENPTkZJR19JTkZJTklCQU5EX1VTRVJfQUNDRVNTX0NPUkUpICs9IGliX2NvcmVfdXZlcmJzLm9cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L01ha2VmaWxlPTQ9bWx4NV9pYi15IDo9IGFoLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvTWFrZWZpbGUtMjctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvTWFrZWZpbGU6Mjg6bWx4NV9pYi0kKENPTkZJR19JTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcpICs9IG9kcC5vXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvTWFrZWZpbGUtMjktbWx4NV9pYi0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICs9IGliX3JlcC5vXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlPTQ9cmRtYV9yeGUteSA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlLTI4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGU6Mjk6cmRtYV9yeGUtJChDT05GSUdfSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HKSArPSByeGVfb2RwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6MTcuNzIzMDM0MTYxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTczMjg2NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHX0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AgaXMgZGVmaW5pdGVseSByZXF1aXJlZCBpbiB0aGlzIGNvbnRleHQuIE5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgc2V0IG9mIGNvbmZpZ3MgYXJlOiBgSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX1VTRVJfTUVNYCwgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AsIGBNTFg1X0lORklOSUJBTkRgLCBgSU5GSU5JQkFORF9NVEhDQWAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLlxuXG5NeSBuZXh0IHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGRlcGVuZGVuY3kgb2YgYElORklOSUJBTkRfVVNFUl9NRU1gLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgaW1wbGljaXRseSBlbmFibGVkIGR1ZSB0byBvdGhlciBjb25maWd1cmF0aW9ucywgb3IgaWYgaXQgcmVxdWlyZXMgZXhwbGljaXQgdXNlciBpbnRlcnZlbnRpb24uIEl0J3MgYSBib29sZWFuIGNvbmZpZ3VyYXRpb24sIHNvIGxldCdzIHF1aWNrbHkgZXhhbWluZSBpdHMgZGVmaW5pdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gdG8gZmlndXJlIHRoaXMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk4MiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxODoyMS40ODAzNjcwNjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MjkyOTAxODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9NDA9Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NfQ09SRVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDQ6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00NS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjI0LjQwOTY2NjAyN1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI1MDgzNTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENvbmZpZydzIEFjdGl2YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgYSBib29sZWFuLCBhbmQgY3J1Y2lhbGx5LCBpdCBkb2Vzbid0IGhhdmUgYSBkaXJlY3QgcHJvbXB0LiBUaGF0IG1lYW5zIHRoZSB1c2VyIGNhbid0IHR1cm4gaXQgb24gb3Igb2ZmIGRpcmVjdGx5LiBJdHMgc3RhdGUgaXMgZGV0ZXJtaW5lZCBieSAqb3RoZXIqIGNvbmZpZ3VyYXRpb25zLiBUaGlzIG1lYW5zIGl0cyBiZWhhdmlvciBpcyBjb25kaXRpb25hbCBhbmQgZGVwZW5kZW50IG9uIHRoZSBzZXR0aW5ncyBvZiByZWxhdGVkIGl0ZW1zLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkZXRlcm1pbmUgcHJlY2lzZWx5IHdoYXQgb3RoZXIgY29uZmlncyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBvciBhY3RpdmF0aW5nIHRoaXMgcGFydGljdWxhciBvbmUuIEkgaGF2ZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODQxMywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjI4LjIzNDc1MzAzM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5MjEzOTQxNywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IElORklOSUJBTkRfVVNFUl9NRU1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjMxLjAyNjkwMzQyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMjkyNDA2NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFVudXNlZCBJbmZpbmliYW5kIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuSG1tLCBJJ20gZ2V0dGluZyBhIG5hZ2dpbmcgZmVlbGluZy4gQ291bGQgaXQgYmUgdGhhdCBgc2VsZWN0IElORklOSUJBTkRfVVNFUl9NRU1gIGlzIGFjdHVhbGx5ICpub3QqIGJlaW5nIHVzZWQgYW55d2hlcmU/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBiZWZvcmUgSSBzcGVuZCBhbnkgbW9yZSB0aW1lIG9uIGl0LiBBIHF1aWNrIGNoZWNrIHNlZW1zIHdhcnJhbnRlZC4gQWxyaWdodCwgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGF0IGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgSW5maW5pYmFuZCwgd291bGQgZGVmaW5pdGVseSBiZSB3aXRoaW4gdGhlIEluZmluaWJhbmQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhlbXNlbHZlcy4gVGhlcmVmb3JlLCBJJ2xsIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnYCBmaWxlIGFuZCBzZWUgaWYgSSBjYW4gZmluZCBhIGNvcnJlc3BvbmRpbmcgYGNvbmZpZ2Agc3ltYm9sIGFuZCB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLCBvciBwZXJoYXBzIGV2ZW4gYSBkaXJlY3QgY2FsbCB0byB0aGF0IGBzZWxlY3RgIHN0YXRlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg1OTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxODozNC4yNTYxNDgyMTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMTY2MDg2NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSU5GSU5JQkFORF9VU0VSX01FTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00MD1jb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00My1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTUxPWNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG9uLWRlbWFuZCBwYWdpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MzpcXHRkZXBlbmRzIG9uIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01NC1cXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9NYWtlZmlsZT0yMD1pYl9jb3JlLSQoQ09ORklHX0NHUk9VUF9SRE1BKSArPSBjZ3JvdXAub1xcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL01ha2VmaWxlOjIxOmliX2NvcmUtJChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgKz0gdW1lbS5vIHVtZW1fZG1hYnVmLm9cXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS9NYWtlZmlsZS0yMi1pYl9jb3JlLSQoQ09ORklHX0lORklOSUJBTkRfT05fREVNQU5EX1BBR0lORykgKz0gdW1lbV9vZHAub1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz04NTc9c3RydWN0IGliX21yICptbHg1X2liX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtODY1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6ODY2OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgfHxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTg2Ny1cXHQgICAgKChhY2Nlc3NfZmxhZ3MgXFx1MDAyNiBJQl9BQ0NFU1NfT05fREVNQU5EKSBcXHUwMDI2XFx1MDAyNiBkbWFoKSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM9MTAzOD1zdHJ1Y3QgaWJfbXIgKm1seDVfaWJfcmVnX3VzZXJfbXJfZG1hYnVmKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwNDctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYzoxMDQ4OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSkgfHxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tci5jLTEwNDktXFx0ICAgICFJU19FTkFCTEVEKENPTkZJR19JTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkcpKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYz0xMTY2PXN0cnVjdCBpYl9tciAqbWx4NV9pYl9yZXJlZ191c2VyX21yKHN0cnVjdCBpYl9tciAqaWJfbXIsIGludCBmbGFncywgdTY0IHN0YXJ0LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYy0xMTc0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmM6MTE3NTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0lORklOSUJBTkRfVVNFUl9NRU0pIHx8IG1yLVxcdTAwM2VkYXRhX2RpcmVjdCB8fFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMtMTE3Ni1cXHQgICAgKG1yLVxcdTAwM2VpYm1yLmZybXIua2V5Lmtlcm5lbF92ZW5kb3Jfa2V5IFxcdTAwMjZcXG4tLVxcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg9Nzk9c3RydWN0IHV2ZXJic19hdHRyX2J1bmRsZTtcXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oLTgwLVxcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg6ODE6I2lmZGVmIENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC04Mi1cXG4tLVxcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmg9MTgxPWludCBpYl91bWVtX2NoZWNrX3JlcmVnKHN0cnVjdCBpYl91bWVtICp1bWVtLCBpbnQgZmxhZ3MsIGludCBuZXdfYWNjZXNzX2ZsYWdzKTtcXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oLTE4Mi1cXG5pbmNsdWRlL3JkbWEvaWJfdW1lbS5oOjE4MzojZWxzZSAvKiBDT05GSUdfSU5GSU5JQkFORF9VU0VSX01FTSAqL1xcbmluY2x1ZGUvcmRtYS9pYl91bWVtLmgtMTg0LVxcbi0tXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaD0yOTU9c3RhdGljIGlubGluZSBpbnQgaWJfdW1lbV9jaGVja19yZXJlZyhzdHJ1Y3QgaWJfdW1lbSAqdW1lbSwgaW50IGZsYWdzLFxcbi0tXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC0zMDAtXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaDozMDE6I2VuZGlmIC8qIENPTkZJR19JTkZJTklCQU5EX1VTRVJfTUVNICovXFxuaW5jbHVkZS9yZG1hL2liX3VtZW0uaC0zMDItI2VuZGlmIC8qIElCX1VNRU1fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxODozNy4zNzI3NjU0MloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk3NjQxNTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEluZmluaWJhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJJ20gc2VlaW5nIGBJTkZJTklCQU5EX1VTRVJfTUVNYCBnZXQgc2VsZWN0ZWQsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0J3MgYmVpbmcgZHJpdmVuIGJ5IGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYC4gVGhhdCdzIGEgY2xhc3NpYyBkZXBlbmRlbmN5IGlzc3VlIOKAkyBhbmQgaXTigJlzIGFsd2F5cyBjcnVjaWFsIHRvIHZlcmlmeSB0aG9zZSByZWxhdGlvbnNoaXBzLiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGlzIGluZGVlZCB0aGUgZGVjaWRpbmcgZmFjdG9yIGhlcmUsIHRoZSBwYXJlbnQgb3B0aW9uIHRoYXQncyB0cmlnZ2VyaW5nIHRoaXMgc2VsZWN0aW9uLiBMZXQncyBkaXZlIGluIGFuZCBjb25maXJtIHRoYXQgZGVwZW5kZW5jeSBjaGFpbi4gTmVlZCB0byBnbyBiYWNrIGFuZCBleGFtaW5lIGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTIxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6NDAuNzcwNDEzMDI4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUxODQ5NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE4PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUFEXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyODpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHVzZXJzcGFjZSBhY2Nlc3MgKHZlcmJzIGFuZCBDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0MDpjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU19DT1JFXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoxODo0My41MjIyNzM3ODlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxODEyODA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEluZmluaWJhbmQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgSW5maW5pYmFuZCBkcml2ZXIgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IGhvdyBpdCdzIGRlZmluZWQuIE15IGd1dCB0ZWxscyBtZSB0aGF0IHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgbGFpZCBvdXQgaW4gdGhlIGBLY29uZmlnYCBmaWxlLiBHaXZlbiBteSBleHBlcmllbmNlLCBsaW5lIDI4IGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSdsbCBsaWtlbHkgZmluZCB0aGUgdG9wLWxldmVsIGRlZmluaXRpb25zIG9yIHBlcmhhcHMgYSBzZWN0aW9uIHRoYXQncyByZWxldmFudCB0byB3aGF0IEknbSBsb29raW5nIGZvci4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIGFzIHRvIHdoaWNoIG9wdGlvbnMgYXJlIGNyaXRpY2FsIGZvciBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhlIEluZmluaWJhbmQgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjkzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6NDkuNzQwNDA3MDgyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMDpcXHRcXHRkZXBlbmRzIG9uIElORklOSUJBTkRcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgVXNlcnNwYWNlIEluZmluaUJhbmQgTWFuYWdlbWVudCBEYXRhZ3JhbSAoTUFEKSBzdXBwb3J0LiAgVGhpc1xcbiAgMjM6XFx0XFx0ICBpcyB0aGUga2VybmVsIHNpZGUgb2YgdGhlIHVzZXJzcGFjZSBNQUQgc3VwcG9ydCwgd2hpY2ggYWxsb3dzXFxuICAyNDpcXHRcXHQgIHVzZXJzcGFjZSBwcm9jZXNzZXMgdG8gc2VuZCBhbmQgcmVjZWl2ZSBNQURzLiBZb3Ugd2lsbCBhbHNvXFxuICAyNTpcXHRcXHQgIG5lZWQgbGliaWJ1bWFkIGZyb20gcmRtYS1jb3JlXFxuICAyNjpcXHRcXHQgIFxcdTAwM2NodHRwczovL2dpdGh1Yi5jb20vbGludXgtcmRtYS9yZG1hLWNvcmVcXHUwMDNlLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1xcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVxcXCJcXG4gIDMwOlxcdFxcdGRlcGVuZHMgb24gTU1VXFxuICAzMTpcXHRcXHRoZWxwXFxuICAzMjpcXHRcXHQgIFVzZXJzcGFjZSBJbmZpbmlCYW5kIGFjY2VzcyBzdXBwb3J0LiAgVGhpcyBlbmFibGVzIHRoZVxcbiAgMzM6XFx0XFx0ICBrZXJuZWwgc2lkZSBvZiB1c2Vyc3BhY2UgdmVyYnMgYW5kIHRoZSB1c2Vyc3BhY2VcXG4gIDM0OlxcdFxcdCAgY29tbXVuaWNhdGlvbiBtYW5hZ2VyIChDTSkuICBUaGlzIGFsbG93cyB1c2Vyc3BhY2UgcHJvY2Vzc2VzXFxuICAzNTpcXHRcXHQgIHRvIHNldCB1cCBjb25uZWN0aW9ucyBhbmQgZGlyZWN0bHkgYWNjZXNzIEluZmluaUJhbmRcXG4gIDM2OlxcdFxcdCAgaGFyZHdhcmUgZm9yIGZhc3QtcGF0aCBvcGVyYXRpb25zLiAgWW91IHdpbGwgYWxzbyBuZWVkXFxuICAzNzpcXHRcXHQgIGxpYmlidmVyYnMsIGxpYmliY20gYW5kIGEgaGFyZHdhcmUgZHJpdmVyIGxpYnJhcnkgZnJvbVxcbiAgMzg6XFx0XFx0ICByZG1hLWNvcmUgXFx1MDAzY2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZVxcdTAwM2UuXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTX0NPUkVcXG4gIDQxOlxcdFxcdGJvb2xcXG4gIDQyOlxcdFxcdGRlZmF1bHQgeSBpZiBJTkZJTklCQU5EX1VTRVJfQUNDRVNTICE9IG5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cXG4gIDQ1OlxcdFxcdGJvb2xcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXFxuICA0NzpcXHRcXHRkZXBlbmRzIG9uIE1NVVxcbiAgNDg6XFx0XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuICA0OTpcXHRcXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6NDkuNzQwNTQ5MzYyWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNzM0ODY0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIEluZmluaWJhbmQgTWVtb3J5IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgYElORklOSUJBTkRfVVNFUl9NRU1gIGRlZmF1bHRzIHRvIGJlaW5nIGVuYWJsZWQgKFwieVwiKSBpZiBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AgaXNuJ3QgZXhwbGljaXRseSBkaXNhYmxlZCAoXCJuXCIpIGFuZCB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdCAoTU1VKSBpcyBwcmVzZW50LiBUaGF0J3MgZ29vZCB0byBrbm93LiBJdCBtZWFucyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBlbmFibGUgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGluIG91ciBjdXJyZW50IHNldHVwLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBzZXQgYXBwcm9wcmlhdGVseS5cblxuQW5kIHdoaWxlIEknbSBoZXJlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AuIEkgcmVjYWxsIGl0J3MgYSBib29sZWFuIGNvbmZpZyBvcHRpb24sIHNvIEkgc2hvdWxkIHNlZSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGF0LiBMZXQncyBzZWUgd2hhdCB0aGF0IGxvb2tzIGxpa2UuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NDIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjE4OjU2LjgxNDAzOTMxMVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MDpcXHRcXG4gIDUxOlxcdGNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcXG4gIDUyOlxcdFxcdGJvb2wgXFxcIkluZmluaUJhbmQgb24tZGVtYW5kIHBhZ2luZyBzdXBwb3J0XFxcIlxcbiAgNTM6XFx0XFx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX1VTRVJfTUVNXFxuICA1NDpcXHRcXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuICA1NTpcXHRcXHRzZWxlY3QgSU5URVJWQUxfVFJFRVxcbiAgNTY6XFx0XFx0c2VsZWN0IEhNTV9NSVJST1JcXG4gIDU3OlxcdFxcdGRlZmF1bHQgeVxcbiAgNTg6XFx0XFx0aGVscFxcbiAgNTk6XFx0XFx0ICBPbiBkZW1hbmQgcGFnaW5nIHN1cHBvcnQgZm9yIHRoZSBJbmZpbmlCYW5kIHN1YnN5c3RlbS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MTg6NTYuODE0MTIzOTUxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NTIxMzExNTczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIEVuYWJsaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyB0aGUgc3lzdGVtIGlzIGRlZmF1bHRpbmcgdG8gJ3knLCB3aGljaCBpcyBnb29kIHRvIGtub3cg4oCTIGl0IGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIE5vdywgdG8gZW5hYmxlIHRoZSBJbmZpbmlCYW5kIGZlYXR1cmVzIEkgbmVlZCwgSSBoYXZlIHRvIGVuc3VyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQ6IGBJTkZJTklCQU5EYCwgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgLCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCwgYE1MWDVfSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX01USENBYCwgYW5kIGBJTkZJTklCQU5EX1JETUFWVGAuIFRoYXQgbGlzdCBpcyBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGdldHRpbmcgdGhpbmdzIG1vdmluZyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLiBcblxuU2luY2UgSSdtIGVuYWJsaW5nIGBNTFg1X0lORklOSUJBTkRgLCBJIHNob3VsZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbmNpZXMgaW52b2x2ZWQgZm9yIHRoYXQgY29uZmlndXJhdGlvbiwgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgaXNzdWVzIGxhdGVyIG9uLiBMZXQncyBzZWUgd2hhdCBlbHNlIG5lZWRzIHRvIGJlIGhhbmRsZWQgZm9yIHRoYXQgcGFydGljdWxhciBiaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzY0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6MTIuMDI3MjQ0MzQ5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzAyMDI0OTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTFg1X0lORklOSUJBTkRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L0tjb25maWc6Mjpjb25maWcgTUxYNV9JTkZJTklCQU5EXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNZWxsYW5veCA1dGggZ2VuZXJhdGlvbiBuZXR3b3JrIGFkYXB0ZXJzIChDb25uZWN0WCBzZXJpZXMpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjIzOjE0LjMyOTI3OTc3NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA3NDcyOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgcmVhZGluZyB0aGUgYGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L0tjb25maWdgIGZpbGUsIHByZXNlbnRlZCBhcyBteSBvd24gaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNTFg1IEtjb25maWcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTUxYNSBJbmZpbmliYW5kIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgZ2F0ZWtlZXBlciwgcmVhbGx5LCBkZWZpbmluZyB3aGF0IGNhbiBiZSB0d2Vha2VkIGF0IGJ1aWxkIHRpbWUuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBmZWF0dXJlcyBmaXJzdCwgdGhlIGNydWNpYWwgYnVpbGRpbmcgYmxvY2tzLiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgaW5jbHVzaW9ucyBiYXNlZCBvbiBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgb3Igb3RoZXIgZHJpdmVyIGNvbXBvbmVudHM/XG5cbknigJltIGltbWVkaWF0ZWx5IHNjYW5uaW5nIGZvciB0aGUgYENPTkZJR19NTFg1X0NPUkVgIG9wdGlvbiDigJMgdGhhdCdzIGdvdHRhIGJlIHRoZSByb290LCB0aGUgZnVuZGFtZW50YWwgZW5hYmxlIGZvciB0aGUgZHJpdmVyIGl0c2VsZi4gV2hhdCBlbHNlIGhpbmdlcyBvbiB0aGF0PyBPa2F5LCBnb29kLCBpdOKAmXMgbG9naWNhbGx5IG9yZ2FuaXplZCwgd2l0aCBkZXBlbmRlbmNpZXMgY2xlYXJseSBkZWZpbmVkLiBJJ20gY2hlY2tpbmcgZm9yIGFueSBvYnZpb3VzIHBlcmZvcm1hbmNlIGZlYXR1cmVzLiBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgZW5hYmxpbmcgc3BlY2lmaWMgaGFyZHdhcmUgb2ZmbG9hZHMsIG9yIGZlYXR1cmVzIGxpa2UgcGFja2V0IHBhY2luZz8gQXJlIHRoZXJlIGFueSBleHBlcmltZW50YWwgb3IgZGVidWcgb3B0aW9ucz8gVGhvc2UgYXJlIGltcG9ydGFudCB0byBzcG90LCBzbyBJIGtub3cgd2hpY2ggZmxhZ3MgdG8gbG9vayBvdXQgZm9yIHdoZW4gSSdtIGRlYnVnZ2luZyBhIG5ldyBpbnN0YWxsYXRpb24uXG5cbkknbSBhbHNvIGxvb2tpbmcgZm9yIGRldGFpbHMgb24gd2hhdCBnZXRzIGJ1aWx0IGludG8gdGhlIGtlcm5lbCBieSBkZWZhdWx0LCB2ZXJzdXMgd2hhdCdzIG1vZHVsZS1lbmFibGVkLiBJcyB0aGVyZSBhIGNsZWFyIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgZXNzZW50aWFsIGJhc2UgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIG1vcmUgc3BlY2lhbGl6ZWQgb3IgcG90ZW50aWFsbHkgb3B0aW9uYWwgZmVhdHVyZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gaGF2ZSBhIGhhbmRsZSBvbiBpbWFnZSBzaXplIGFuZCBib290LXVwIHRpbWUuXG5cbkFuZCBmaW5hbGx5LCBJJ20gY2hlY2tpbmcgdGhlIGhlbHAgdGV4dCBmb3IgZWFjaCBvcHRpb24uIFRoZSBkZXNjcmlwdGlvbnMgbmVlZCB0byBiZSBjbGVhciBhbmQgY29uY2lzZS4gSWYgYSB1c2VyIGlzIGNvbmZ1c2VkIGJ5IHRoZSB3b3JkaW5nLCB0aGVuIG15IHRlYW0gd2lsbCBiZSB0aGUgb25lcyB0aGF0IGhhdmUgdG8gZXhwbGFpbiBpdC4gQXJlIHRoZXkgdXNpbmcgdGhlIGNvcnJlY3QgdGVybWlub2xvZ3k/IERvZXMgdGhlIGhlbHAgc2VjdGlvbiBwcm92aWRlIHN1ZmZpY2llbnQgY29udGV4dCBmb3IgdW5kZXJzdGFuZGluZyB3aGF0IGVuYWJsaW5nIG9yIGRpc2FibGluZyBhIHBhcnRpY3VsYXIgb3B0aW9uIGFjdHVhbGx5ICpkb2VzKj8gT2theSwgdGhpcyBpcyBhIHByZXR0eSBzb2xpZCBzdGFydC4gTm93IGxldCdzIGRpdmUgaW50byBzb21lIG9mIHRoZSBtb3JlIHNwZWNpZmljIHN1Yi1zZWN0aW9ucyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBpbiB0aGUgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3NzUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzoxOS4wMzY3NTU2ODRaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1MWDVfSU5GSU5JQkFORFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgTUxYNV9DT1JFXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGxvdy1sZXZlbCBJbmZpbmlCYW5kIHN1cHBvcnQgZm9yXFxuICAgNzpcXHRcXHQgIE1lbGxhbm94IENvbm5lY3QtSUIgUENJIEV4cHJlc3MgaG9zdCBjaGFubmVsIGFkYXB0ZXJzIChIQ0FzKS5cXG4gICA4OlxcdFxcdCAgVGhpcyBpcyByZXF1aXJlZCB0byB1c2UgSW5maW5pQmFuZCBwcm90b2NvbHMgc3VjaCBhc1xcbiAgIDk6XFx0XFx0ICBJUC1vdmVyLUlCIG9yIFNSUCB3aXRoIHRoZXNlIGRldmljZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjIzOjE5LjAzNjgzMjg2NFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDM5NjU4MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlcGVuZGVuY2llcyBhbmQgVmVyaWZpY2F0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGRlcGVuZGVuY3kgb24gYE1MWDVfQ09SRWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgcHJhY3RpY2FsbHkgYSBnaXZlbiB3aGVuIHdvcmtpbmcgd2l0aCBNZWxsYW5veCBoYXJkd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoZXJlZm9yZSwgdG8gZW5zdXJlIHRoYXQgYE1MWDVfQ09SRWAgaXMgZGVmaW5pdGVseSBlbmFibGVkIGFzIHdlbGwuIE5vIHBvaW50IGdvaW5nIGRvd24gdGhpcyBwYXRoIGlmIHRoZSBmb3VuZGF0aW9uYWwgY29tcG9uZW50cyBhcmVuJ3QgcHJlc2VudC4gSXQncyBhIGZ1bmRhbWVudGFsIHByZXJlcXVpc2l0ZS5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgaW1wb3J0YW50IGJhc2UgY29uZmlndXJhdGlvbnMsIHRoaXMgaXMgYSBnb29kIHNwb3QgdG8gcmUtY2hlY2sgYElORklOSUJBTkRfTVRIQ0FgLiBCZXN0IHRvIHZlcmlmeSBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEluZmluaUJhbmQgc3RhY2sgYmVmb3JlIHdlIGNvbnRpbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQzNCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6MjUuNDc2NDk2MTM1WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgSU5GSU5JQkFORF9NVEhDQVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk1lbGxhbm94IEhDQSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBpcyBhIGxvdy1sZXZlbCBkcml2ZXIgZm9yIE1lbGxhbm94IEluZmluaUhvc3QgaG9zdFxcbiAgIDc6XFx0XFx0ICBjaGFubmVsIGFkYXB0ZXJzIChIQ0FzKSwgaW5jbHVkaW5nIHRoZSBNVDIzMTA4IFBDSS1YIEhDQVxcbiAgIDg6XFx0XFx0ICAoXFxcIlRhdm9yXFxcIikgYW5kIHRoZSBNVDI1MjA4IFBDSSBFeHByZXNzIEhDQSAoXFxcIkFyYmVsXFxcIikuXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBJTkZJTklCQU5EX01USENBX0RFQlVHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjIzOjI1LjQ3NjU3MjI3NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQxNzM1NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFJETUEgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgc28gdGhlIGFyY2hpdGVjdHVyZSBJJ20gd29ya2luZyB3aXRoIGlzIGNsZWFybHkgZ29pbmcgdG8gaGluZ2Ugb24gdGhlIGBQQ0lgIHNldHVwLiBUaGF0J3MgdGhlIGZpcnN0IGNyaXRpY2FsIGZhY3RvciBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gSG93IHRoZSBzeXN0ZW0gbGV2ZXJhZ2VzIHRoZSBgUENJYCBidXMgaXMgZ29pbmcgdG8gaGVhdmlseSBpbmZsdWVuY2UgdGhlIFJETUEgcGVyZm9ybWFuY2UgYW5kIHNjYWxhYmlsaXR5IEkgY2FuIHJlYWxpc3RpY2FsbHkgZXhwZWN0LiBJdCdzIHRoZSBib3R0bGVuZWNrIG9yIHRoZSBoaWdod2F5LCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gaW50byB0aGUgUkRNQSBjYXBhYmlsaXRpZXMuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gd2UgbGV2ZXJhZ2UgYElORklOSUJBTkRfUkRNQVZUYD8gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIElmIHdlJ3JlIGx1Y2t5IGVub3VnaCB0byBoYXZlIHRoYXQgYXZhaWxhYmxlLCB0aGUgcG90ZW50aWFsIGZvciB6ZXJvLWNvcHksIGVmZmljaWVudCBkYXRhIHRyYW5zZmVycyBpcyBzaWduaWZpY2FudC4gYElORklOSUJBTkRfUkRNQVZUYCBpcyBsaWtlbHkgdG8gYmUgYSBnYW1lLWNoYW5nZXIgaWYgaXQgaXMgc3VwcG9ydGVkLiBXaGV0aGVyIHRoaXMgaXMgYW4gYXJjaGl0ZWN0dXJhbCBpbXBlcmF0aXZlLCBvciBhIG5pY2UtdG8taGF2ZSwgd2lsbCBkZXBlbmQgaGVhdmlseSBvbiB0aGUgcHJvYmxlbSBhdCBoYW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg0NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6MjkuMDE4MzEwNjA4WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIElORklOSUJBTkRfUkRNQVZUXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUkRNQSB2ZXJicyB0cmFuc3BvcnQgbGlicmFyeVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9WSVJUX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHRUaGlzIGlzIGEgY29tbW9uIHNvZnR3YXJlIHZlcmJzIHByb3ZpZGVyIGZvciBSRE1BIG5ldHdvcmtzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzoyOS4wMTgzOTY0MjhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3MjQ2ODQwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBJbmZpbmliYW5kIFBhdGNoKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgSW5maW5pYmFuZCBjb2RlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIEknbSBjaGVja2luZyBhcmUgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBoaW5nZXMgb24gYElORklOSUJBTkRfVklSVF9ETUFgLCBgWDg2XzY0YCwgYW5kIGBQQ0lgLiBBIHF1aWNrIGxvb2sgY29uZmlybXMgdGhhdCBgSU5GSU5JQkFORF9WSVJUX0RNQWAgZGVmYXVsdHMgdG8gZW5hYmxlZCBvbiA2NC1iaXQgc3lzdGVtcyBiZWNhdXNlIGl0J3MgYSBkZWZfYm9vbCAhSElHSE1FTS4gR29vZCwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy5cblxuTmV4dCwgSSBuZWVkIHRvIGtub3cgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBJIG5lZWQ6IGBJTkZJTklCQU5EYCwgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgLCBgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HYCwgYE1MWDVfQ09SRWAsIGBNTFg1X0lORklOSUJBTkRgLCBgSU5GSU5JQkFORF9NVEhDQWAsIGFuZCBgSU5GSU5JQkFORF9SRE1BVlRgLiBHb3QgaXQuIE5vdywgd2hpY2ggc3ltYm9scyBhcmUgd2UgZm9jdXNpbmcgb24/XG5cbkxldCdzIHNlZS4gTXkgY3VycmVudCBzeW1ib2xzIGFyZTpcbiogICBgX19pYl91bWVtX2dldF92YWAuIFdhaXQsIGl0J3Mgc3RhdGljPyBDYW4gc3l6a2FsbGVyIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnM/IFllcywgYnV0IG1heWJlIGBpYl91bWVtX2dldF9kZXNjYCBpcyBiZXR0ZXI/IE5vLCBgX19pYl91bWVtX2dldF92YWAgaXMgdGhlIG9uZSB0aGF0J3MgbW9kaWZpZWQuIE9LLCBJJ2xsIHN0aWNrIHdpdGggYF9faWJfdW1lbV9nZXRfdmFgLlxuKiAgIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmBcbiogICBgbXRoY2FfYXJyYXlfc2V0YFxuKiAgIGBtdGhjYV9yZWdfdXNlcl9tcmBcbiogICBgZ2V0X21hcF9wYWdlYCAodGhpcyBvbmUncyBzdGF0aWMgaW4gYHJkbWF2dC9xcC5jYC4gU2hvdWxkIEkgdXNlIGBydnRfY3JlYXRlX3FwYCBhcyB3ZWxsLCBvciBqdXN0IGBnZXRfbWFwX3BhZ2VgPykuXG5cbldhaXQsIGBnZXRfbWFwX3BhZ2VgIGlzIHN0YXRpYy4gSSB0aGluayBJJ2xsIGdvIHdpdGggYHJ2dF9jcmVhdGVfcXBgIGJlY2F1c2UgaXQncyB0aGUgZXhwb3J0ZWQgZnVuY3Rpb24gdGhhdCBjYWxscyBgYWxsb2NfcXBuYCB3aGljaCBjYWxscyBgZ2V0X21hcF9wYWdlYC4gV2FpdCwgYWxzbyBgZ2V0X21hcF9wYWdlYCBpcyBjYWxsZWQgZnJvbSBgaW5pdF9xcG5fdGFibGVgLiBJIHRoaW5rIEknbGwganVzdCB1c2UgYGdldF9tYXBfcGFnZWBcblxuQWxyaWdodCwgbGV0IG1lIHJldmlzaXQgdGhpcyBwYXRjaC4gSSBzZWUgdGhlIGtleSBjaGFuZ2U6XG5cbmBgYGNcbi1cdHBhZ2VfbGlzdCA9IChzdHJ1Y3QgcGFnZSAqKikgX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpO1xuK1x0cGFnZV9saXN0ID0ga21hbGxvYyhQQUdFX1NJWkUsIEdGUF9LRVJORUwpO1xuLi4uXG4tXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIHBhZ2VfbGlzdCk7XG4rXHRrZnJlZShwYWdlX2xpc3QpO1xuYGBgXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIHNoaWZ0LiBJdCdzIG5vdyB1c2luZyB0aGUgc2xhYiBhbGxvY2F0b3IgaW5zdGVhZCBvZiB0aGUgcGFnZSBhbGxvY2F0b3IuIFRoYXQgY291bGQgaW1wYWN0IG1lbW9yeSBsYXlvdXQsIGFsaWdubWVudCwgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGlzc3VlcyBpZiB0aGUgY29kZSBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCBwYWdlIGFsaWdubWVudC4gQSBzdWJ0bGUgY2hhbmdlLCBidXQgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gZmxhZy5cblxuTm93LCBhbnkgb3RoZXIgY29uZmlnIHJlcXVpcmVtZW50cz8gTGV0J3MgY2hlY2s6XG4qICAgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgIGlzIGRlZmluaXRlbHkgbmVlZGVkIGZvciBgSU5GSU5JQkFORF9VU0VSX01FTWAuXG4qICAgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AgZm9yIGBvZHAuY2AuXG4qICAgYE1MWDVfQ09SRWAgZm9yIGBNTFg1X0lORklOSUJBTkRgLlxuKiAgIGBNTFg1X0lORklOSUJBTkRgIGZvciBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLlxuKiAgIGBJTkZJTklCQU5EX01USENBYCBmb3IgYm90aCBgbXRoY2FfYXJyYXlfc2V0YCBhbmQgYG10aGNhX3JlZ191c2VyX21yYC5cbiogICBBbmQgZmluYWxseSwgYElORklOSUJBTkRfUkRNQVZUYCBmb3IgYGdldF9tYXBfcGFnZWAuXG5cblNvLCB0aGUgZm9jdXMgc3ltYm9scyBhcmU6XG4qICAgYF9faWJfdW1lbV9nZXRfdmFgXG4qICAgYG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyYFxuKiAgIGBtdGhjYV9hcnJheV9zZXRgXG4qICAgYG10aGNhX3JlZ191c2VyX21yYFxuKiAgIGBnZXRfbWFwX3BhZ2VgXG5cbldhaXQsIGBnZXRfbWFwX3BhZ2VgIGlzIHByZXR0eSBnZW5lcmljLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBhIHVuaXF1ZSBmdW5jdGlvbiBuYW1lIHRvIGF2b2lkIGNvbmZsaWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyNDYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzozOS43NDMwODUxMDFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzQyMTYyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X21hcF9wYWdlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYz0yNTg9c3RhdGljIGlubGluZSBib29sIHdzc19leGNlZWRzX3RocmVzaG9sZChzdHJ1Y3QgcnZ0X3dzcyAqd3NzKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTI2Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6MjYzOnN0YXRpYyB2b2lkIGdldF9tYXBfcGFnZShzdHJ1Y3QgcnZ0X3Fwbl90YWJsZSAqcXB0LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0yNjQtXFx0XFx0XFx0IHN0cnVjdCBydnRfcXBuX21hcCAqbWFwKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTI4NT1zdGF0aWMgaW50IGluaXRfcXBuX3RhYmxlKHN0cnVjdCBydnRfZGV2X2luZm8gKnJkaSwgc3RydWN0IHJ2dF9xcG5fdGFibGUgKnFwdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYy0zMTgtXFx0XFx0aWYgKCFtYXAtXFx1MDAzZXBhZ2UpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmM6MzE5OlxcdFxcdFxcdGdldF9tYXBfcGFnZShxcHQsIG1hcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jLTMyMC1cXHRcXHRcXHRpZiAoIW1hcC1cXHUwMDNlcGFnZSkge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9xcC5jPTQ4OD1zdGF0aWMgaW50IGFsbG9jX3FwbihzdHJ1Y3QgcnZ0X2Rldl9pbmZvICpyZGksIHN0cnVjdCBydnRfcXBuX3RhYmxlICpxcHQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTIzLVxcdFxcdGlmICh1bmxpa2VseSghbWFwLVxcdTAwM2VwYWdlKSkge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvcXAuYzo1MjQ6XFx0XFx0XFx0Z2V0X21hcF9wYWdlKHFwdCwgbWFwKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L3FwLmMtNTI1LVxcdFxcdFxcdGlmICh1bmxpa2VseSghbWFwLVxcdTAwM2VwYWdlKSlcXG4tLVxcbmZzL2hmc3BsdXMvYnRyZWUuYz0xMzc9c3RydWN0IGhmc19ibWFwX2N0eCB7XFxuLS1cXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTQ4LSAqL1xcbmZzL2hmc3BsdXMvYnRyZWUuYzoxNDk6c3RhdGljIHN0cnVjdCBwYWdlICpoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uoc3RydWN0IGhmc19ibm9kZSAqbm9kZSxcXG5mcy9oZnNwbHVzL2J0cmVlLmMtMTUwLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGhmc19ibWFwX2N0eCAqY3R4LFxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTE5Nj1zdGF0aWMgYm9vbCBoZnNfYm1hcF90ZXN0X2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTIwMS1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjAyOlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgbm9kZV9iaXRfaWR4IC8gQklUU19QRVJfQllURSk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTIwMy1cXHRpZiAoSVNfRVJSKHBhZ2UpKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTIyMj1zdGF0aWMgaW50IGhmc19ibWFwX2NsZWFyX2JpdChzdHJ1Y3QgaGZzX2Jub2RlICpub2RlLCB1MzIgbm9kZV9iaXRfaWR4KVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTIyNy1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6MjI4OlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgbm9kZV9iaXRfaWR4IC8gQklUU19QRVJfQllURSk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTIyOS1cXHRpZiAoSVNfRVJSKHBhZ2UpKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jPTUyOD1zdHJ1Y3QgaGZzX2Jub2RlICpoZnNfYm1hcF9hbGxvYyhzdHJ1Y3QgaGZzX2J0cmVlICp0cmVlKVxcbi0tXFxuZnMvaGZzcGx1cy9idHJlZS5jLTU0Ny1cXG5mcy9oZnNwbHVzL2J0cmVlLmM6NTQ4OlxcdHBhZ2UgPSBoZnNfYm1hcF9nZXRfbWFwX3BhZ2Uobm9kZSwgXFx1MDAyNmN0eCwgMCk7XFxuZnMvaGZzcGx1cy9idHJlZS5jLTU0OS1cXHRpZiAoSVNfRVJSKHBhZ2UpKSB7XFxuLS1cXG5mcy9oZnNwbHVzL2J0cmVlLmMtNTk4LVxcbmZzL2hmc3BsdXMvYnRyZWUuYzo1OTk6XFx0XFx0cGFnZSA9IGhmc19ibWFwX2dldF9tYXBfcGFnZShub2RlLCBcXHUwMDI2Y3R4LCAwKTtcXG5mcy9oZnNwbHVzL2J0cmVlLmMtNjAwLVxcdFxcdGlmIChJU19FUlIocGFnZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6NDEuODE3MzA5MTk4WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTY2NDAzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGlnZ2luZyBpbnRvIHRoaXMgQ29kZSBTbmlwcGV0KipcblxuT2theSwgdGhpcyB1c2FnZSBvZiBgZ2V0X21hcF9wYWdlYCBpcyBpbnRlcmVzdGluZy4gSXQncyBub3QgKmV2ZXJ5d2hlcmUqOyBpdCdzIHByZXR0eSBpc29sYXRlZCwgc2hvd2luZyB1cCBvbmx5IGluIGByZG1hdnQvcXAuY2AgYW5kIGBoZnNwbHVzL2J0cmVlLmNgLCBzcGVjaWZpY2FsbHkgYXMgYGhmc19ibWFwX2dldF9tYXBfcGFnZWAuIFRoaXMgc3VnZ2VzdHMgaXQncyBhIGJpdCBzcGVjaWFsaXplZC4gSSB0aGluayBJIHdpbGwga2VlcCB0aGlzIG5hbWUuXG5cbk5vdywgYmVmb3JlIEkgcHJvY2VlZCB0b28gZmFyLCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcmVsYXRlcyB0byB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50LiBMZXQgbWUgcXVpY2tseSByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiB0aGF0IGZsb3cuIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgYF9faWJfdW1lbV9nZXRfdmFgIGlzIGRvaW5nIGFuZCB3aGF0IGl0cyBpbnB1dHMgYW5kIG91dHB1dHMgYXJlLiBHb3R0YSBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cCBjb3JyZWN0bHkgaW4gdGVybXMgb2YgbWVtb3J5IHJlZ2lvbnMgYW5kIGFkZHJlc3MgdHJhbnNsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTY5LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6NDUuOTMzOTUzNTQ1WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDExMDU1MTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faWJfdW1lbV9nZXRfdmFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jPTE2MD1FWFBPUlRfU1lNQk9MKGliX3VtZW1fZmluZF9iZXN0X3Bnc3opO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0xNjEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jOjE2MjpzdGF0aWMgc3RydWN0IGliX3VtZW0gKl9faWJfdW1lbV9nZXRfdmEoc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0xNjMtXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhZGRyLCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYz0yODk9c3RydWN0IGliX3VtZW0gKmliX3VtZW1fZ2V0X2Rlc2Moc3RydWN0IGliX2RldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jLTMxMC1cXHRjYXNlIElCX1VWRVJCU19CVUZGRVJfVFlQRV9WQTpcXG5kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmM6MzExOlxcdFxcdHJldHVybiBfX2liX3VtZW1fZ2V0X3ZhKGRldmljZSwgZGVzYy1cXHUwMDNlYWRkciwgZGVzYy1cXHUwMDNlbGVuZ3RoLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYy0zMTItXFx0XFx0XFx0XFx0XFx0YWNjZXNzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjM6NDcuOTQ1MDE3MDg5WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjA5ODg4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlVuaXF1ZSBIYW5kbGluZyBWZXJpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGF0J3MgaW50ZXJlc3RpbmcuIFRoZSBzaXR1YXRpb24gZG9lcyBzZWVtIHJhdGhlciBkaXN0aW5jdGl2ZS4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIG1lbW9yeSByZWdpc3RyYXRpb24gYW5kIHdvcmsgcXVldWUgZWxlbWVudHMsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBob3cgcGFnZSBmYXVsdHMgYXJlIGhhbmRsZWQuIFRoZSBrZXkgYXJlYSB0byBleGFtaW5lIGlzIGBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcmAuIEkgd2FudCB0byBpbW1lZGlhdGVseSBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24uIEl0J3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIHN1YnRsZXRpZXMgb2YgdGhpcyBwZWN1bGlhciBzY2VuYXJpby4gV2UgbmVlZCB0byBkaXNzZWN0IGl0cyBsb2dpYyB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMgdW51c3VhbCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1MjgsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzo1MS41MDYwMDkwMDFaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTAxNjc2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM9MTM4ND1zdGF0aWMgaW5saW5lIHN0cnVjdCBtbHg1X2liX3NycSAqcmVzX3RvX3NycShzdHJ1Y3QgbWx4NV9jb3JlX3JzY19jb21tb24gKnJlcylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTEzOTEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvb2RwLmM6MTM5MjpzdGF0aWMgdm9pZCBtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlcihzdHJ1Y3QgbWx4NV9pYl9kZXYgKmRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xMzkzLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVfcGFnZWZhdWx0ICpwZmF1bHQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYz0xNjE4PXN0YXRpYyB2b2lkIG1seDVfaWJfcGZhdWx0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9wYWdlZmF1bHQgKnBmYXVsdClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L29kcC5jLTE2MjMtXFx0Y2FzZSBNTFg1X1BGQVVMVF9TVUJUWVBFX1dRRTpcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYzoxNjI0OlxcdFxcdG1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyKGRldiwgcGZhdWx0KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9vZHAuYy0xNjI1LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNjoyMzo1My40NTYxODU0NjFaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTExOTAyNjI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBVbmlxdWVuZXNzIGFuZCBNZXRob2RpY2FsIFZlcmlmaWNhdGlvbioqXG5cblllcywgdGhhdCBvYnNlcnZhdGlvbiBhYm91dCBpdHMgdW5pcXVlbmVzcy4uLiBpdCByZXNvbmF0ZXMuIFdlJ3ZlIGdvdCBzb21ldGhpbmcgZGlzdGluY3QgaGVyZSwgYSBwb2ludCBvZiBkaWZmZXJlbnRpYXRpb24uIEl0J3Mgbm90IGp1c3QgYSBzdWJ0bGUgdmFyaWF0aW9uOyBpdCdzIHNpZ25pZmljYW50LiBCdXQsIGFzIHdpdGggYW55dGhpbmcgZ3JvdW5kYnJlYWtpbmcsIHdlIGNhbid0IHJlbHkgc29sZWx5IG9uIGludHVpdGlvbi4gV2UgbmVlZCB0byBiZSByaWdvcm91c2x5IHRob3JvdWdoLlxuXG5UaGF0IGJyaW5ncyBtZSB0byB0aGUgbmV4dCB0aG91Z2h0LiBMZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2UgbmVlZCB0byBpbW1lZGlhdGVseSBkb3VibGUtY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBtdGhjYV9hcnJheV9zZXRgLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB0aGUgY3J1eCBvZiB0aGlzIGRpc3RpbmN0aXZlIGJlaGF2aW91ciBhbmQgc2hvdWxkIGJlIGV4YW1pbmVkLiBJcyB0aGUgbG9naWMgc291bmQ/IEFyZSB0aGVyZSBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHM/IFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgZWRnZSBjYXNlcz8gV2UgY2Fubm90IG1ha2UgYW55IGFzc3VtcHRpb25zLiBMZXQncyBkaWcgZGVlcCwgYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY3JpdGljYWwgZXllLCBhbmQgZW5zdXJlIGl0cyBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCB0aGUgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eSwgYW5kIGhhcyBiZWVuIHRlc3RlZCB0byBtZWV0IHRoZSBwZXJmb3JtYW5jZSBuZWVkcyBvZiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA2NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjIzOjU4LjU3NTIxNTE1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc2ODgxOTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10aGNhX2FycmF5X3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmM9MTEzPXZvaWQgKm10aGNhX2FycmF5X2dldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfYWxsb2NhdG9yLmMtMTIyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYzoxMjM6aW50IG10aGNhX2FycmF5X3NldChzdHJ1Y3QgbXRoY2FfYXJyYXkgKmFycmF5LCBpbnQgaW5kZXgsIHZvaWQgKnZhbHVlKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9hbGxvY2F0b3IuYy0xMjQte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2NxLmM9NzY4PWludCBtdGhjYV9pbml0X2NxKHN0cnVjdCBtdGhjYV9kZXYgKmRldiwgaW50IG5lbnQsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfY3EuYy04NTAtXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2ZGV2LVxcdTAwM2VjcV90YWJsZS5sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfY3EuYzo4NTE6XFx0ZXJyID0gbXRoY2FfYXJyYXlfc2V0KFxcdTAwMjZkZXYtXFx1MDAzZWNxX3RhYmxlLmNxLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9jcS5jLTg1Mi1cXHRcXHRcXHQgICAgICBjcS1cXHUwMDNlY3FuIFxcdTAwMjYgKGRldi1cXHUwMDNlbGltaXRzLm51bV9jcXMgLSAxKSwgY3EpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2Rldi5oPTQxOD12b2lkICptdGhjYV9hcnJheV9nZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfZGV2Lmg6NDE5OmludCBtdGhjYV9hcnJheV9zZXQoc3RydWN0IG10aGNhX2FycmF5ICphcnJheSwgaW50IGluZGV4LCB2b2lkICp2YWx1ZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX2Rldi5oLTQyMC12b2lkIG10aGNhX2FycmF5X2NsZWFyKHN0cnVjdCBtdGhjYV9hcnJheSAqYXJyYXksIGludCBpbmRleCk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYz0xMjkxPWludCBtdGhjYV9hbGxvY19xcChzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcXAuYy0xMzI4LVxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmRldi1cXHUwMDNlcXBfdGFibGUubG9jayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM6MTMyOTpcXHRtdGhjYV9hcnJheV9zZXQoXFx1MDAyNmRldi1cXHUwMDNlcXBfdGFibGUucXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTMzMC1cXHRcXHRcXHRxcC1cXHUwMDNlcXBuIFxcdTAwMjYgKGRldi1cXHUwMDNlbGltaXRzLm51bV9xcHMgLSAxKSwgcXApO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmM9MTM2Nj1pbnQgbXRoY2FfYWxsb2Nfc3FwKHN0cnVjdCBtdGhjYV9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9xcC5jLTEzOTUtXFx0ZWxzZVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9xcC5jOjEzOTY6XFx0XFx0bXRoY2FfYXJyYXlfc2V0KFxcdTAwMjZkZXYtXFx1MDAzZXFwX3RhYmxlLnFwLCBtcXBuLCBxcCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3FwLmMtMTM5Ny1cXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmRldi1cXHUwMDNlcXBfdGFibGUubG9jayk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmM9MjA2PWludCBtdGhjYV9hbGxvY19zcnEoc3RydWN0IG10aGNhX2RldiAqZGV2LCBzdHJ1Y3QgbXRoY2FfcGQgKnBkLFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3NycS5jLTI4My1cXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZkZXYtXFx1MDAzZXNycV90YWJsZS5sb2NrKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmM6Mjg0OlxcdGlmIChtdGhjYV9hcnJheV9zZXQoXFx1MDAyNmRldi1cXHUwMDNlc3JxX3RhYmxlLnNycSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2Ffc3JxLmMtMjg1LVxcdFxcdFxcdCAgICBzcnEtXFx1MDAzZXNycW4gXFx1MDAyNiAoZGV2LVxcdTAwM2VsaW1pdHMubnVtX3NycXMgLSAxKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjQ6MDAuNTUyMTA0NjQ3WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMjczODczNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBVbmlxdWVuZXNzIGFuZCBEYXRhIEludGVncml0eSoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzLCBpbmRlZWQsIHVuaXF1ZS4gVGhhdCdzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwLiBOb3csIGJlZm9yZSBJIHByb2NlZWQgd2l0aCBhbnkgYW5hbHlzaXMgb3IgYXBwbGljYXRpb24sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCAndW5pcXVlJyBzdGF0dXMuIE15IGltbWVkaWF0ZSByZWZsZXggaXMgdG8gZGl2ZSBpbnRvIHRoZSBkYXRhLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgYG10aGNhX3JlZ191c2VyX21yYC4gVGhpcyB2YXJpYWJsZSBvciByZWdpc3RlciBwcm9iYWJseSBob2xkcyBjcml0aWNhbCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSBcInVuaXF1ZVwiIGVsZW1lbnQg4oCTIHBlcmhhcHMgYSB1c2VyIHJlZ2lzdHJhdGlvbiBtYXJrZXIgb3Igc29tZSBmb3JtIG9mIGlkZW50aWZpZXIuIEkgbmVlZCB0byBlbnN1cmUgaXRzIGludGVncml0eSBhbmQgaG93IGl0J3MgZGVmaW5lZCBhbmQgdXNlZC4gQSBxdWljayBpbnNwZWN0aW9uIG9mIHRoaXMgd2lsbCBjb25maXJtIChvciByZWZ1dGUhKSBteSBpbml0aWFsIGFzc2Vzc21lbnQuIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgcG90ZW50aWFsIGZvciBkdXBsaWNhdGlvbiwgb3ZlcndyaXRpbmcgb3IgY29ycnVwdGlvbiBpbiB0aGF0IGFyZWEuIEl0IGFsbCBjb21lcyBkb3duIHRvIHRoZSByZWxpYWJpbGl0eSBvZiB0aGF0IGRhdGEgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4Mzc0LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTY6MjQ6MDUuNjc5NDk2NTA2WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTUxMDg4MjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10aGNhX3JlZ191c2VyX21yXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jPTgyNT1zdGF0aWMgc3RydWN0IGliX21yICptdGhjYV9nZXRfZG1hX21yKHN0cnVjdCBpYl9wZCAqcGQsIGludCBhY2MpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy04NDctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmM6ODQ4OnN0YXRpYyBzdHJ1Y3QgaWJfbXIgKm10aGNhX3JlZ191c2VyX21yKHN0cnVjdCBpYl9wZCAqcGQsIHU2NCBzdGFydCwgdTY0IGxlbmd0aCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy04NDktXFx0XFx0XFx0XFx0ICAgICAgIHU2NCB2aXJ0LCBpbnQgYWNjLCBzdHJ1Y3QgaWJfZG1haCAqZG1haCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jPTEwODY9c3RhdGljIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2Vfb3BzIG10aGNhX2Rldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2EvbXRoY2FfcHJvdmlkZXIuYy0xMTIwLVxcdC5xdWVyeV9xcCA9IG10aGNhX3F1ZXJ5X3FwLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9wcm92aWRlci5jOjExMjE6XFx0LnJlZ191c2VyX21yID0gbXRoY2FfcmVnX3VzZXJfbXIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNhX3Byb3ZpZGVyLmMtMTEyMi1cXHQucmVzaXplX3VzZXJfY3EgPSBtdGhjYV9yZXNpemVfY3EsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjI0OjA3LjgzMDU5NTIxNloiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjAyNDkyMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEluZmluaWJhbmQgRHJpdmVyIE1lbW9yeSBBbGxvY2F0aW9uIENoYW5nZSoqXG5cbk9rYXksIHRoaXMgaXMgaW50ZXJlc3RpbmcsIGEgZGVmaW5pdGUgZGVwYXJ0dXJlIGZyb20gdGhlIG5vcm0uIExldCdzIHNlZS4uLiB0aGUga2V5IGZ1bmN0aW9ucyBoaWdobGlnaHRlZCBhcmUgYF9faWJfdW1lbV9nZXRfdmFgLCBgbWx4NV9pYl9tcl93cWVfcGZhdWx0X2hhbmRsZXJgLCBgbXRoY2FfYXJyYXlfc2V0YCwgYG10aGNhX3JlZ191c2VyX21yYCwgYW5kIGBnZXRfbWFwX3BhZ2VgLiBJJ20gaW1tZWRpYXRlbHkgcGlja2luZyB1cCBvbiB0aG9zZSwgYXMgdGhleSByZXByZXNlbnQgdGhlIGNvcmUgdG91Y2hwb2ludHMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuXG5cbk5vdywgdGhlIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucy4gV2UncmUgbG9va2luZyBhdCBgSU5GSU5JQkFORGAsIGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCwgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AsIGBNTFg1X0NPUkVgLCBgTUxYNV9JTkZJTklCQU5EYCwgYElORklOSUJBTkRfTVRIQ0FgLCBhbmQgYElORklOSUJBTkRfUkRNQVZUYC4gSSdtIG5vdGluZyB0aGUgaW50ZXJwbGF5OyBJJ20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgdGhlIGNvcnJlY3QgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZS4gSG9sZCBvbi4uLiBJJ20gcmVtaW5kZWQgdGhhdCBgSU5GSU5JQkFORF9VU0VSX01FTWAgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIGJ5IGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCBhbmQgYE1NVWAsIHNvIHdoaWxlIGl0J3MgcmVkdW5kYW50LCBsaXN0aW5nIGl0IGRvZXNuJ3QgaHVydC4gSSdsbCBzdGlsbCBpbmNsdWRlIGBJTkZJTklCQU5EX1VTRVJfQUNDRVNTYCBhbmQgYElORklOSUJBTkRfT05fREVNQU5EX1BBR0lOR2AuXG5cbkFscmlnaHQsIHRpbWUgZm9yIGEgc2FuaXR5IGNoZWNrIG9uIG15IG93biByZWFzb25pbmcuIFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIHN3aXRjaCBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciwgZnVuY3Rpb25zIGxpa2UgYF9fZ2V0X2ZyZWVfcGFnZWAgYW5kIGBnZXRfemVyb2VkX3BhZ2VgLCB0byB0aGUgc2xhYiBhbGxvY2F0b3IsIGBrbWFsbG9jYCBhbmQgYGt6YWxsb2NgLCB3aXRoaW4gc2V2ZXJhbCBJbmZpbmliYW5kIGRyaXZlcnMuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgdGhhdCdzIHRoZSBjcnVjaWFsIHBvaW50LiBUaGUgcGFnZSBhbGxvY2F0b3IgaGFzIGNlcnRhaW4gZ3VhcmFudGVlcyBhYm91dCBtZW1vcnkgYWxpZ25tZW50IGFuZCBsYXlvdXQgdGhhdCB0aGUgc2xhYiBhbGxvY2F0b3IgZG9lc24ndCBuZWNlc3NhcmlseSBvZmZlci4gVGhlIGNvZGUgKmNvdWxkKiBiZSByZWx5aW5nIG9uIHRob3NlIGltcGxpY2l0IGFzc3VtcHRpb25zLCBhbmQgdGhlIHN3aXRjaCBjb3VsZCBpbnRyb2R1Y2Ugc3VidGxlIHJlZ3Jlc3Npb25zLiBFdmVuIGlmIEkgZG9uJ3Qgc2VlIGFueXRoaW5nIGV4cGxpY2l0bHkgd3JvbmcsIHRoaXMgaXMgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQgKmRlbWFuZHMqIGZ1enppbmcuIEknbGwgbmVlZCB0byBydW4gaXQgdGhyb3VnaCBhIHJpZ29yb3VzIGZ1enppbmcgY2FtcGFpZ24gdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBoaWRkZW4gYXNzdW1wdGlvbnMgYmVpbmcgdmlvbGF0ZWQuXG5cbk5vdyBJJ2xsIGV4ZWN1dGUgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5ODYsIk91dHB1dFRva2VucyI6MjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE2OjI0OjE1LjQzMzA5MDk1NFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTgxNjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJJTkZJTklCQU5EX1VTRVJfQUNDRVNTXCIsXG4gICAgXCJJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcIixcbiAgICBcIk1MWDVfQ09SRVwiLFxuICAgIFwiTUxYNV9JTkZJTklCQU5EXCIsXG4gICAgXCJJTkZJTklCQU5EX01USENBXCIsXG4gICAgXCJJTkZJTklCQU5EX1JETUFWVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faWJfdW1lbV9nZXRfdmFcIixcbiAgICBcIm1seDVfaWJfbXJfd3FlX3BmYXVsdF9oYW5kbGVyXCIsXG4gICAgXCJtdGhjYV9hcnJheV9zZXRcIixcbiAgICBcIm10aGNhX3JlZ191c2VyX21yXCIsXG4gICAgXCJnZXRfbWFwX3BhZ2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIG1lbW9yeSBhbGxvY2F0aW9uIGZyb20gdGhlIHBhZ2UgYWxsb2NhdG9yIChfX2dldF9mcmVlX3BhZ2UsIGdldF96ZXJvZWRfcGFnZSkgdG8gdGhlIHNsYWIgYWxsb2NhdG9yIChrbWFsbG9jLCBremFsbG9jKSBhY3Jvc3MgbXVsdGlwbGUgSW5maW5pYmFuZCBkcml2ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgYnVncyBpZiB0aGUgaGFyZHdhcmUgb3IgZHJpdmVyIGNvZGUgYXNzdW1lcyBwYWdlIGFsaWdubWVudCBvciBzcGVjaWZpYyBtZW1vcnkgbGF5b3V0IHByb3BlcnRpZXMgZ3VhcmFudGVlZCBieSB0aGUgcGFnZSBhbGxvY2F0b3IgYnV0IG5vdCBieSB0aGUgc2xhYiBhbGxvY2F0b3IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5GSU5JQkFORFwiLFxuICAgIFwiSU5GSU5JQkFORF9VU0VSX0FDQ0VTU1wiLFxuICAgIFwiSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXCIsXG4gICAgXCJNTFg1X0NPUkVcIixcbiAgICBcIk1MWDVfSU5GSU5JQkFORFwiLFxuICAgIFwiSU5GSU5JQkFORF9NVEhDQVwiLFxuICAgIFwiSU5GSU5JQkFORF9SRE1BVlRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2liX3VtZW1fZ2V0X3ZhXCIsXG4gICAgXCJtbHg1X2liX21yX3dxZV9wZmF1bHRfaGFuZGxlclwiLFxuICAgIFwibXRoY2FfYXJyYXlfc2V0XCIsXG4gICAgXCJtdGhjYV9yZWdfdXNlcl9tclwiLFxuICAgIFwiZ2V0X21hcF9wYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBtZW1vcnkgYWxsb2NhdGlvbiBmcm9tIHRoZSBwYWdlIGFsbG9jYXRvciAoX19nZXRfZnJlZV9wYWdlLCBnZXRfemVyb2VkX3BhZ2UpIHRvIHRoZSBzbGFiIGFsbG9jYXRvciAoa21hbGxvYywga3phbGxvYykgYWNyb3NzIG11bHRpcGxlIEluZmluaWJhbmQgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY291bGQgaW50cm9kdWNlIGJ1Z3MgaWYgdGhlIGhhcmR3YXJlIG9yIGRyaXZlciBjb2RlIGFzc3VtZXMgcGFnZSBhbGlnbm1lbnQgb3Igc3BlY2lmaWMgbWVtb3J5IGxheW91dCBwcm9wZXJ0aWVzIGd1YXJhbnRlZWQgYnkgdGhlIHBhZ2UgYWxsb2NhdG9yIGJ1dCBub3QgYnkgdGhlIHNsYWIgYWxsb2NhdG9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[1] Phase: Succeeded StartedAt: 2026-06-30 16:24:27 +0000 UTC FinishedAt: 2026-06-30 16:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 16:24:27 +0000 UTC FinishedAt: 2026-06-30 16:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2] Phase: Succeeded StartedAt: 2026-06-30 16:24:27 +0000 UTC FinishedAt: 2026-06-30 20:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 16:24:27 +0000 UTC FinishedAt: 2026-06-30 20:46:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 16:24:27 +0000 UTC FinishedAt: 2026-06-30 16:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 16:24:27 +0000 UTC FinishedAt: 2026-06-30 16:24:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzfmbv/series-workflowzfmbv-convert-artifact-396534702/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 16:24:37 +0000 UTC FinishedAt: 2026-06-30 17:04:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 16:24:37 +0000 UTC FinishedAt: 2026-06-30 17:04:39 +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:*ce69839b-264b-40ee-8f2a-6c3d5454dda7,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-workflowzfmbv/series-workflowzfmbv-convert-artifact-396534702/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": "40b9745b-c24f-4216-841d-85a642ad9181", "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-workflowzfmbv/series-workflowzfmbv-build-action-2024851220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 16:24:37 +0000 UTC FinishedAt: 2026-06-30 17:04:29 +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:*ce69839b-264b-40ee-8f2a-6c3d5454dda7,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-workflowzfmbv/series-workflowzfmbv-convert-artifact-396534702/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": "40b9745b-c24f-4216-841d-85a642ad9181", "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-workflowzfmbv/series-workflowzfmbv-build-action-2024851220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 17:04:39 +0000 UTC FinishedAt: 2026-06-30 17:04:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 17:04:39 +0000 UTC FinishedAt: 2026-06-30 17:04:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 17:04:39 +0000 UTC FinishedAt: 2026-06-30 17:05:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 17:04:39 +0000 UTC FinishedAt: 2026-06-30 17:04:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzfmbv/series-workflowzfmbv-convert-artifact-1656948385/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 17:05:02 +0000 UTC FinishedAt: 2026-06-30 17:07:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 17:05:02 +0000 UTC FinishedAt: 2026-06-30 17:07:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*40b9745b-c24f-4216-841d-85a642ad9181,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-workflowzfmbv/series-workflowzfmbv-build-action-2024851220/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-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 17:07:23 +0000 UTC FinishedAt: 2026-06-30 17:07:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 17:07:23 +0000 UTC FinishedAt: 2026-06-30 17:07:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 17:07:23 +0000 UTC FinishedAt: 2026-06-30 17:42:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 17:07:23 +0000 UTC FinishedAt: 2026-06-30 17:42:52 +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:*ce69839b-264b-40ee-8f2a-6c3d5454dda7,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-workflowzfmbv/series-workflowzfmbv-convert-artifact-1656948385/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": "b18d7b6f-142b-473b-8fb5-2e8c838504fb", "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-workflowzfmbv/series-workflowzfmbv-build-action-3644666285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 17:07:23 +0000 UTC FinishedAt: 2026-06-30 17:42:42 +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:*ce69839b-264b-40ee-8f2a-6c3d5454dda7,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-workflowzfmbv/series-workflowzfmbv-convert-artifact-1656948385/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": "b18d7b6f-142b-473b-8fb5-2e8c838504fb", "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-workflowzfmbv/series-workflowzfmbv-build-action-3644666285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 17:42:52 +0000 UTC FinishedAt: 2026-06-30 17:42:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 17:42:52 +0000 UTC FinishedAt: 2026-06-30 17:42:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 17:42:52 +0000 UTC FinishedAt: 2026-06-30 17:45:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 17:42:52 +0000 UTC FinishedAt: 2026-06-30 17:45:01 +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:*b18d7b6f-142b-473b-8fb5-2e8c838504fb,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-workflowzfmbv/series-workflowzfmbv-build-action-3644666285/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-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 17:45:11 +0000 UTC FinishedAt: 2026-06-30 20:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 17:45:11 +0000 UTC FinishedAt: 2026-06-30 20:46:44 +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":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},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:*40b9745b-c24f-4216-841d-85a642ad9181,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b18d7b6f-142b-473b-8fb5-2e8c838504fb,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-workflowzfmbv/series-workflowzfmbv-build-action-2024851220/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-workflowzfmbv/series-workflowzfmbv-build-action-3644666285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 17:45:11 +0000 UTC FinishedAt: 2026-06-30 17:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 17:45:11 +0000 UTC FinishedAt: 2026-06-30 17:45:26 +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":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},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-workflowzfmbv/series-workflowzfmbv-convert-artifact-4059149110/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 17:45:11 +0000 UTC FinishedAt: 2026-06-30 17:45:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 17:45:11 +0000 UTC FinishedAt: 2026-06-30 17:45:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 17:45:11 +0000 UTC FinishedAt: 2026-06-30 17:45:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 17:45:34 +0000 UTC FinishedAt: 2026-06-30 20:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfmbv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__ib_umem_get_va","mlx5_ib_mr_wqe_pfault_handler","mthca_array_set","mthca_reg_user_mr","get_map_page"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["INFINIBAND","INFINIBAND_USER_ACCESS","INFINIBAND_ON_DEMAND_PAGING","MLX5_CORE","MLX5_INFINIBAND","INFINIBAND_MTHCA","INFINIBAND_RDMAVT"],"series_id":"d7c82731-60ea-4bb0-ae0a-206b22c240ad","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 17:45:34 +0000 UTC FinishedAt: 2026-06-30 20:46:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*40b9745b-c24f-4216-841d-85a642ad9181,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b18d7b6f-142b-473b-8fb5-2e8c838504fb,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-workflowzfmbv/series-workflowzfmbv-build-action-2024851220/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-workflowzfmbv/series-workflowzfmbv-build-action-3644666285/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-workflowzfmbv/series-workflowzfmbv-convert-artifact-4059149110/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,}