Name: series-workflowc2zg9 Phase: Succeeded StartedAt: 2026-07-30 14:05:41 +0000 UTC FinishedAt: 2026-07-30 15:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[0] Phase: Succeeded StartedAt: 2026-07-30 14:05:41 +0000 UTC FinishedAt: 2026-07-30 14:25:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 14:05:41 +0000 UTC FinishedAt: 2026-07-30 14:25:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ed6dc972c19ff9ffca504f5739848da4275219e3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "USB_USBNET", "USB_LAN78XX", "USB_NET_AX8817X" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ed6dc972c19ff9ffca504f5739848da4275219e3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "USB_USBNET", "USB_LAN78XX", "USB_NET_AX8817X" ], "series_id": "aea618b8-1439-46cb-840c-18355cbaa4e4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_open", "phylink_expects_phy", "phylink_connect_phy", "phylink_of_phy_connect", "phylink_fwnode_phy_connect" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfb3BlbiYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2V4cGVjdHNfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19vZl9waHlfY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBQSFkgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIHBoeWxpbmsgZnJhbWV3b3JrLiBUaGUgc3RtbWFjIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSAoU1RNTUFDX1BDSSksIGFuZCBwaHlsaW5rIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMgaW5jbHVkaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycyAoVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3WCkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgZHVtbXkgVVNCIEhDRC4gVGhlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBQSFkgaXMgZXhwZWN0ZWQgb3IgYXR0YWNoZWQsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJmZTgzYWVkOGYzZjlhYmIzYTQ4ZGEwNzdjMmU2YTFhYTE2YjViYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAxNDoyMzoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggNTYyZDIwODMwYjk0OS4uNTc1MTMyYjljZGJmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0xMzQ3LDYgJiM0MzsxMzQ3LDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4gXG4gXHRcdGlmIChhZGRyIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdC8qIElmIGEgY3VzdG9tIFBDUyBpcyBpbiB1c2UsIG5vIFBIWSBpcyBuZWVkZWQgKi9cbiYjNDM7XHRcdFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0XHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O25vIHBoeSBmb3VuZFxcblwmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNTlkZmUzNWFmYTU0Zi4uZmQ0ZTgwZWVlZGE3MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xOTY0LDkgJiM0MzsxOTY0LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbiAgKi9cbiBib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIHtcbi1cdGlmIChwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCB8fFxuLVx0ICAgIChwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQgXHUwMDI2XHUwMDI2XG4tXHQgICAgIHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSkpKVxuJiM0MztcdGlmIChwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuQEAgLTIyMDUsOSAmIzQzOzIyMDMsNyBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4ge1xuIFx0dTMyIGZsYWdzID0gMDtcbiBcbi1cdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEIHx8XG4tXHRcdCAgICAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fSU5CQU5EIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgIHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihpbnRlcmZhY2UpIFx1MDAyNlx1MDAyNiAhcGwtXHUwMDNlc2ZwX2J1cykpKVxuJiM0MztcdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRpZiAocGwtXHUwMDNlcGh5ZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX29wZW4mIzM0OywKICAgICYjMzQ7cGh5bGlua19leHBlY3RzX3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIHRoZSBzdG1tYWMgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgZ2VuZXJpYyBwaHlsaW5rIGZyYW1ld29yay4gVGhlIHN0bW1hYyBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgKFNUTU1BQ19QQ0kpLCBhbmQgcGh5bGluayBpcyByZWFjaGFibGUgdmlhIHZhcmlvdXMgbmV0d29yayBkcml2ZXJzIGluY2x1ZGluZyBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgKFVTQl9MQU43OFhYLCBVU0JfTkVUX0FYODgxN1gpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15IFVTQiBIQ0QuIFRoZSBjaGFuZ2VzIGFsdGVyIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgUEhZIGlzIGV4cGVjdGVkIG9yIGF0dGFjaGVkLCB3aGljaCBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZmU4M2FlZDhmM2Y5YWJiM2E0OGRhMDc3YzJlNmExYWExNmI1YmFjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMTQ6MjM6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCA1NjJkMjA4MzBiOTQ5Li41NzUxMzJiOWNkYmY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTEzNDcsNiAmIzQzOzEzNDcsMTAgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjsKIAogCQlpZiAoYWRkciAmbHQ7IDApIHsKJiM0MzsJCQkvKiBJZiBhIGN1c3RvbSBQQ1MgaXMgaW4gdXNlLCBubyBQSFkgaXMgbmVlZGVkICovCiYjNDM7CQkJaWYgKHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcykKJiM0MzsJCQkJcmV0dXJuIDA7CiYjNDM7CiAJCQluZXRkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtubyBwaHkgZm91bmRcbiYjMzQ7KTsKIAkJCXJldHVybiAtRU5PREVWOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCA1OWRmZTM1YWZhNTRmLi5mZDRlODBlZWVkYTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKQEAgLTE5NjQsOSAmIzQzOzE5NjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpOwogICovCiBib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKQogewotCWlmIChwbC0mZ3Q7Y2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQgfHwKLQkgICAgKHBsLSZndDtjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQgJmFtcDsmYW1wOwotCSAgICAgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KHBsLSZndDtsaW5rX2ludGVyZmFjZSkpKQomIzQzOwlpZiAocGwtJmd0O2NmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKQogCQlyZXR1cm4gZmFsc2U7CiAJcmV0dXJuIHRydWU7CiB9CkBAIC0yMjA1LDkgJiM0MzsyMjAzLDcgQEAgc3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogewogCXUzMiBmbGFncyA9IDA7CiAKLQlpZiAoV0FSTl9PTihwbC0mZ3Q7Y2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQgfHwKLQkJICAgIChwbC0mZ3Q7Y2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fSU5CQU5EICZhbXA7JmFtcDsKLQkJICAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3ooaW50ZXJmYWNlKSAmYW1wOyZhbXA7ICFwbC0mZ3Q7c2ZwX2J1cykpKQomIzQzOwlpZiAoV0FSTl9PTihwbC0mZ3Q7Y2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlmIChwbC0mZ3Q7cGh5ZGV2KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTIzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgc3RtbWFjX21haW4uY2AgYW5kIGBwaHlsaW5rLmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIGBzdG1tYWNfaW5pdF9waHlgLCB3aGVyZSBpdCBub3cgcmV0dXJucyAwIGlmIGBwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3NgIGlzIHNldCB3aGVuIGBhZGRyYCBpcyBuZWdhdGl2ZS4gSW50dWl0aXZlbHksIHRoaXMgc3VnZ2VzdHMgd2UmIzM5O3JlIGhhbmRsaW5nIHNvbWUga2luZCBvZiBlcnJvciBjYXNlIG9yIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyIChQQ1MpIG9mIHRoZSBQSFkgbGluay4gVGhlIHBhdGNoIGFsc28gdHdlYWtzIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBhbmQgYHBoeWxpbmtfYXR0YWNoX3BoeWAgd2l0aGluIGBwaHlsaW5rLmNgLCByZW1vdmluZyBjb25kaXRpb25hbCBsb2dpYyBjb25uZWN0ZWQgdG8gYE1MT19BTl9JTkJBTkRgIGFuZCBgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6YC4gVGhpcyBzdWdnZXN0cyB0aGVyZSYjMzk7cyBhIGNoYW5nZSBpbiBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIGluLWJhbmQgYXV0b25lZ290aWF0aW9uIGFuZCA4MDIuM3ogY29tcGF0aWJpbGl0eS4KCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eS4gSXMgdGhpcyBjb2RlIGV2ZW4gKmV4ZXJjaXNhYmxlKiBpbiBhIHR5cGljYWwgUUVNVSBzZXR1cD8gYHN0bW1hY2AgaXMgU1RNaWNyb2VsZWN0cm9uaWNzJiMzOTsgRXRoZXJuZXQgZHJpdmVyIOKAkyBpdCYjMzk7cyBvZnRlbiBhIHN0YXBsZSBpbiBBUk0gU29Dcy4gUUVNVSBkb2VzIGhhdmUgQVJNIGJvYXJkIG1vZGVscyB3aXRoIGBzdG1tYWNgLCBidXQgaXQmIzM5O3MgbGVzcyBjb21tb24gdG8gc2VlIGl0IGluIHN0YW5kYXJkIHg4Nl82NCBRRU1VIGNvbmZpZ3VyYXRpb25zLiBPbiB0aGUgb3RoZXIgaGFuZCwgYHBoeWxpbmtgIGlzIGEgKmdlbmVyaWMqIGZyYW1ld29yay4gTWFueSBuZXR3b3JrIGRyaXZlcnMgdXNlIGl0LCBzbyBpdOKAmXMgbGlrZWx5IHRvIGJlIHJlYWNoZWQuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gYHBoeWxpbmtfZXhwZWN0c19waHlgIGFuZCBgcGh5bGlua19hdHRhY2hfcGh5YC4gSG1tLCBgcGh5bGlua19leHBlY3RzX3BoeWAgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgb3RoZXIgZHJpdmVycyBhcmUgY2FsbGluZyBpdCBkaXJlY3RseS4gVGhhdCYjMzk7cyBnb29kLiBCdXQgYHBoeWxpbmtfYXR0YWNoX3BoeWAuLi4gdGhlIGRpZmYgaXMgc2F5aW5nIGl04oCZcyBzdGF0aWMuIEhhbmcgb27igKZpdCYjMzk7cyBkZWZpbmVkIGFzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgdGhlbiB0aGVyZSBpcyBhIGNhbGwgdG8gYHBoeWxpbmtfY29ubmVjdF9waHlgIHdoaWNoIHRoZW4gY2FsbHMgYHBoeWxpbmtfYXR0YWNoX3BoeWAuIFRoaXMgbWVhbnMgdGhlIHBhdGNoIG1pZ2h0IGFmZmVjdCBkcml2ZXJzIHRoYXQgdXNlIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YC4gVGltZSB0byBjaGVjayB0aGUgY2FsbGVycyBvZiBgcGh5bGlua19leHBlY3RzX3BoeWAgdG8gZ2V0IHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19leHBlY3RzX3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEzMTY9c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzMjY6XHRpZiAoIXBoeWxpbmtfZXhwZWN0c19waHkocHJpdi1cdTAwM2VwaHlsaW5rKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTMyNy1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU2LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTU3OiAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk1OC0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2NC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk2NTpib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTY2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NzAtfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTcxOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXhwZWN0c19waHkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTcyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI4NT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI5Mi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI5MzpcdGlmICghcGh5bGlua19leHBlY3RzX3BoeShwbCkpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyOTQtXHRcdHJldHVybiAwO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcyNj12b2lkIHBoeWxpbmtfZGVzdHJveShzdHJ1Y3QgcGh5bGluayAqKTtcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyNzpib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKTtcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTc2CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUEhZTElOSyBSZWFjaGFiaWxpdHkgaW4gUUVNVSoqCgpPa2F5LCBzbyBgcGh5bGlua19leHBlY3RzX3BoeWAgc2hvd3MgdXAgaW4gYHN0bW1hY19pbml0X3BoeWAgYW5kIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAuIFRoZSBsYXR0ZXIgaXMgdXNlZCBwcmV0dHkgYnJvYWRseSBhY3Jvc3MgdmFyaW91cyBkcml2ZXJzLCBzbyB0aGlzIHdhcnJhbnRzIHNvbWUgZGVlcGVyIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGFjdHVhbGx5IGhpdCBgcGh5bGlua2AgaW4gYSBRRU1VIGVudmlyb25tZW50LgoKTGV0JiMzOTtzIHF1aWNrbHkgc2NhbiB0aGUgY29tbW9uIHN1c3BlY3RzLiBEb2VzIGB2aXJ0aW9fbmV0YCB1c2UgYHBoeWxpbmtgPyBOb3BlLiBXaGF0IGFib3V0IGBlMTAwMGVgPyBTdGlsbCBuby4gT2theSwgYGlnYmA/IE5vcGUgYWdhaW4uIEFscmlnaHQsIGhvdyBhYm91dCBgdXNibmV0YD8gTmFkYS4KCkhtbSwgbGV0IG1lIGNvbnNpZGVyIERTQSwgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZS4gQWhhISBZZXMsIGBkc2FgIHV0aWxpemVzIGBwaHlsaW5rYC4gTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIEkgc2ltdWxhdGUgYSBgZHNhYCBzZXR1cCBpbiBRRU1VPyBJIGJlbGlldmUgc28uIEkgbWlnaHQgYmUgYWJsZSB0byB1c2UgYGRzYV9sb29wYCBvciBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gbGlrZSBgbWFjYmAuIFRoYXQmIzM5O3MgZW5jb3VyYWdpbmcuCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IGdlYXJzIGFuZCBqdXN0IGNoZWNrIHdoYXQgYWxsIGlzIHVzaW5nIGBwaHlsaW5rYCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjMtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXHUwMDI2cGh5bGlua19vcHMpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjUtXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05ODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Mi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5OS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9ODQ3PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk0MjplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzE0OmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTcwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE1MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjY0PXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyNDpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzkxPXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ4MzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDg0LVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgwPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxMi1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzExODpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE5LVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE1PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzAtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM4PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDY5LSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzEtICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2Nz1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTEtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5My0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODI5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMjogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMzLSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0Ni0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0NzpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTMzLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNDpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM3LSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTM4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzktICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTctICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTU4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTktICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIxOS0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyMS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjU2LSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1OC0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjc1LSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNzY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3Ny0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzNS0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzM2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMzctICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNjY9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM3NS0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzc2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNzctICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDA4PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQxOC0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQxOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDIwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDgxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4NC0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0ODU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUxNT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUxOC0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyMC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU0ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NDctICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTQ4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NDktICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1ODY9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTkzLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTk0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTUtICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjQ4LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjUwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY3My0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY3NS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE2LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcxNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE4LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzUzLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzU0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NTUtICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODI9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjg5Ny0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjg5ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yODk5LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTA9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3MS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5NzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3My0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTM4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDEtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQzLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTYzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNjYtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTY3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNjgtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTgyLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg0LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI2NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI2OS0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3MS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTEtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjkyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTMtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMxND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzE3LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzE4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMTktICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ4OD1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDYtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTA3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDgtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTgxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1ODUtICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1ODY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU4Ny0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYwNj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxMC0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxMi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM2Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzY3LSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM2ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzY5LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00Mzg0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4OC0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzODk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5MC0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjEtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIzLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqLFxuLS1cbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE2MTYtXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxubmV0L2RzYS9wb3J0LmMtMTYxOC17XG4tLVxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cbm5ldC9kc2EvcG9ydC5jOjE2NDc6XHRwbCA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmRwLVx1MDAzZXBsX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShkcC1cdTAwM2VkbiksIG1vZGUsXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVx0XHRcdCAgICBtYWNfb3BzKTtcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjczLVxubmV0L2RzYS9wb3J0LmM6MTY3NDpcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcbm5ldC9kc2EvcG9ydC5jLTE2NzUtXHRpZiAoZXJyKVxuLS1cbm5ldC9kc2EvcG9ydC5oPTEwMD1pbnQgZHNhX3BvcnRfbXJwX2RlbF9yaW5nX3JvbGUoY29uc3Qgc3RydWN0IGRzYV9wb3J0ICpkcCxcbm5ldC9kc2EvcG9ydC5oLTEwMS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcmluZ19yb2xlX21ycCAqbXJwKTtcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XG5uZXQvZHNhL3BvcnQuaC0xMDMtdm9pZCBkc2FfcG9ydF9waHlsaW5rX2Rlc3Ryb3koc3RydWN0IGRzYV9wb3J0ICpkcCk7XG4tLVxubmV0L2RzYS91c2VyLmM9MjY1NT1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXG4tLVxubmV0L2RzYS91c2VyLmMtMjY3NC1cbm5ldC9kc2EvdXNlci5jOjI2NzU6XHRyZXQgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XG5uZXQvZHNhL3VzZXIuYy0yNjc2LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjEzMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBgcGh5bGlua2AgLSBBIEZ1enppbmcgVGFyZ2V0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIGBwaHlsaW5rYC4gSSBzZWUgaXQmIzM5O3MgcmVmZXJlbmNlZCBpbiBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCBhbmQgYGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNgLiBBbHJpZ2h0LCBVU0IgbmV0IGRldmljZXMsIGJvdGggb2Ygd2hpY2ggYXJlIHJlYWRpbHkgYXZhaWxhYmxlIGZvciBmdXp6aW5nISBJIGNhbiBlbXVsYXRlIHRoZW0gaW4gUUVNVSB1c2luZyBlaXRoZXIgVVNCIHBhc3N0aHJvdWdoIG9yIGV2ZW4gdGhvc2UgaGFuZHkgZHVtbXkgVVNCIGRldmljZXMsIHdoaWNoIGFyZSBwZXJmZWN0IGZvciB1c2Ugd2l0aCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enplciAodGhlIGBkdW1teV9oY2RgIHN0dWZmKS4gQW5kIGxldCYjMzk7cyBub3QgZm9yZ2V0IGBuZXQvZHNhL3BvcnQuY2AsIHRoYXQgdXNlcyBpdCBhcyB3ZWxsLCBhbmQgYGRzYV9sb29wYCBnaXZlcyB1cyBhIGNvbnZlbmllbnQgdGVzdGluZyBwYXRoIHRoZXJlLiBTbywgYHBoeWxpbmtgIGlzIGFic29sdXRlbHkgcmVhY2hhYmxlIGFuZCBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igc29tZSBmdXp6aW5nIGF0dGVudGlvbi4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgLCBzbyBJIGNhbiBzZWUgd2hlcmUgaXQgbWlnaHQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLgoKSG1tLCB3YWl0IGEgc2Vjb25kLi4uIHRoZSBwYXRjaCBhbHNvIGFmZmVjdHMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBOb3csIGBzdG1tYWNgLi4uIGlzICp0aGF0KiByZWFjaGFibGU/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBgc3RtbWFjYCBjYW4gYmUgYnVpbHQgYXMgYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHRvIHNlZSBob3cgYWNjZXNzaWJsZSBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTI9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1Olx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTYtXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxMDQKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmU6CgoqKkNvbm5lY3RpbmcgdGhlIERvdHM6IHN0bW1hYywgUENJLCBhbmQgRnV6emluZyBPcHBvcnR1bml0aWVzKioKClJpZ2h0LCBzbyBgc3RtbWFjYCBoYXMgYSBQQ0kgZHJpdmVyISBGb3VuZCBpdCwgYHN0bW1hY19wY2kuY2AuIFRoaXMgaXMgaW50cmlndWluZy4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBQQ0ktYmFzZWQgaW1tZWRpYXRlbHkgb3BlbnMgdXAgYSBuZXcgYXZlbnVlIGZvciBmdXp6aW5nLiBJZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIsIHRoYXQgbWVhbnMgaXQgY2FuIGJlIHByb2JlZCBhbmQgaW50ZXJhY3RlZCB3aXRoIHZpYSB0aGUgUENJIGJ1cywgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgdGhlIHN5emthbGxlciBQQ0kgZnV6emVyIGVtdWxhdGVzLiBUaGlzIGlzIGV4Y2VsbGVudCBuZXdzLCBiZWNhdXNlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBgc3RtbWFjYCB2aWEgYSBQQ0kgaW50ZXJmYWNlLCB3ZSBjYW4gbGV2ZXJhZ2UgdGhlIFBDSSBmdXp6ZXImIzM5O3MgY2FwYWJpbGl0aWVzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgUENJIElEcyBgc3RtbWFjX3BjaS5jYCBiaW5kcyB0by4gVGhhdCBpbmZvcm1hdGlvbiB3aWxsIGJlIHRoZSBrZXkgdG8gZGVzaWduaW5nIGVmZmVjdGl2ZSBQQ0kgZnV6emluZyBjYW1wYWlnbnMgYWdhaW5zdCB0aGlzIGRyaXZlci4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRob3NlIElEcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9JRF9TVE1JQ1JPX01BQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaC04NjEtI2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTUlDUk9fU1BJX0hTXHQweENDMDhcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oOjg2MjojZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNSUNST19NQUNcdDB4Q0MwOVxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtODYzLSNkZWZpbmUgUENJX0RFVklDRV9JRF9TVE1JQ1JPX1NESU9fRU1NQyAweENDMEFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1MzcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFBDSSBEcml2ZXIgUGF0Y2gqKgoKUmlnaHQsIHNjcmF0Y2ggdGhhdC4gSSBkb24mIzM5O3QgbmVlZCB0byBkaXZlIGludG8gdGhlIHByZWNpc2UgUENJIElEIGRldGFpbHMgcmlnaHQgbm93LiBUaGUgZmFjdCB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyIGlzIGVub3VnaCB0byBuYXJyb3cgdGhlIHNjb3BlLiBUaGUgcGF0Y2ggcmVmZXJlbmNlcyBgc3RtbWFjX2luaXRfcGh5YCB3aXRoaW4gYHN0bW1hY19tYWluLmNgLCBzbyBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkZXRlcm1pbmUgKndoZW4qIGBzdG1tYWNfaW5pdF9waHlgIGlzIGJlaW5nIGludm9rZWQuIElzIHRoaXMgZnVuY3Rpb24gcGFydCBvZiB0aGUgaW5pdGlhbCBwcm9iZSBzZXF1ZW5jZSwgb3IgaXMgaXQgdHJpZ2dlcmVkIGR5bmFtaWNhbGx5IHdoZW4gdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGJyb3VnaHQgb25saW5lLCBvciBib3RoPyBUaGlzIHVuZGVyc3RhbmRpbmcgd2lsbCBmcmFtZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGltaW5nIG9mIHRoZSBjaGFuZ2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBwYXRoIGxvb2tzIGxpa2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19pbml0X3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEyODM9c3RhdGljIHZvaWQgc3RtbWFjX2NoZWNrX3Bjc19tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMDgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzMDk6ICogc3RtbWFjX2luaXRfcGh5IC0gUEhZIGluaXRpYWxpemF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMTAtICogQGRldjogbmV0IGRldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMTUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzMTY6c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTMxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTkxPXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMDk6XHRyZXQgPSBzdG1tYWNfaW5pdF9waHkoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIxMC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjE3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNIE1BQyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGlzIFNUTSBNQUMgZHJpdmVyLiBJIHNlZSB0aGlzIGNvZGUgaXMgcmVhY2hlZCB3aXRoaW4gYHN0bW1hY19vcGVuYCwgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgYC5uZG9fb3BlbmAgY2FsbGJhY2suIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBjaGFuZ2VzIEkmIzM5O20gbG9va2luZyBhdCBpbiBgc3RtbWFjX2luaXRfcGh5YCBhcmUgZGVmaW5pdGVseSBnZXR0aW5nIGhpdCB3aGVuZXZlciB0aGUgbmV0d29yayBpbnRlcmZhY2UgY29tZXMgdXAsIHNheSwgd2hlbiBJIHJ1biBgaXAgbGluayBzZXQgZXRoMCB1cGAuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKTm93LCBteSBmb2N1cyBzaGlmdHMgdG8gYHBoeWxpbmtfZXhwZWN0c19waHlgIGFuZCBgcGh5bGlua19hdHRhY2hfcGh5YC4gSSBzZWUgdGhhdCBgcGh5bGlua19leHBlY3RzX3BoeWAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSB3aXRoaW4gYHN0bW1hY19pbml0X3BoeWAsIHdoaWNoIGNvbmZpcm1zIGl0IGlzIGdldHRpbmcgc2V0IHVwIHJpZ2h0LgoKYHBoeWxpbmtfYXR0YWNoX3BoeWAgc2VlbXMgdG8gYmUgY2FsbGVkIGluIGEgZmV3IHBsYWNlcywgbmFtZWx5IGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC4gVGhlc2UgYXJlIGFsbCB0eXBpY2FsbHkgdHJpZ2dlcmVkIGJ5IHZhcmlvdXMgZHJpdmVycyB3aGVuIHRoZXkgZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhIFBIWS4KCk5leHQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEZvciB0aGUgYHN0bW1hY2AgZHJpdmVyIGl0c2VsZiwgaXQgbG9va3MgbGlrZSBJIG5lZWQgYm90aCBgQ09ORklHX1NUTU1BQ19FVEhgIGFuZCBgQ09ORklHX1NUTU1BQ19QQ0lgLiBBbmQgZm9yIGBwaHlsaW5rYCwgSSBuZWVkIGBDT05GSUdfUEhZTElOS2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJiMzOTtsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcyB0byB2ZXJpZnkgdGhlIGV4YWN0IGltcGxpY2F0aW9ucyBvZiB0aG9zZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19FVEgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5MDUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkV4YW1pbmluZyBLY29uZmlnIERlcGVuZGVuY2llcyBmb3IgdGhlIFNUTU1BQyBEcml2ZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHJlYWQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbG9naWMgaXMgaG91c2VkLCBzbyB0aGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgb3V0IHdoYXQgb3RoZXIgZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgbXVzdCBiZSBlbmFibGVkIG9yIHByZXNlbnQgZm9yIFNUTU1BQyB0byBidWlsZCBjb3JyZWN0bHkuIFRpbWUgdG8gc2VlIHdoYXQgSSBjYW4gbGVhcm4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRpZiBTVE1NQUNfUExBVEZPUk1cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cJiMzNDtcbiAgNDY6XHRcdHNlbGVjdCBDUkMzMlxuICA0NzpcdFx0c2VsZWN0IE1JSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICA0OTpcdFx0aGVscFxuICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc3OAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWx2aW5nIGludG8gdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGRpdmluZyBiYWNrIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGZpbmRpbmcgdGhlIGRlZmluaXRpb24gZm9yIGBTVE1NQUNfUENJYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgS2NvbmZpZyBmaWxlIHNob3VsZCBob3VzZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFNUTWljcm9lbGVjdHJvbmljcyYjMzk7IFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aGVuIHVzZWQgaW4gYSBQQ0kgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgdmFyaWFudCBpcyBjb25maWd1cmVkIOKAkyB3aGV0aGVyIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCwgaWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBmZWF0dXJlcywgb3IgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBwYXJhbWV0ZXJzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGRldGVybWluZSBob3cgdG8gaW50ZWdyYXRlIGl0IGludG8gYSBkZXNpZ24uIEZyb20gZXhwZXJpZW5jZSwgSSBrbm93IHRoYXQgb2Z0ZW4gdGhlIFBDSSB2ZXJzaW9uIG9mIGEgZHJpdmVyIGhhcyBkaWZmZXJlbnQgY29uc2lkZXJhdGlvbnMgZHVlIHRvIGJ1cyBzcGVjaWZpYyBpbnRlcnJ1cHQsIGFkZHJlc3Mgc3BhY2UsIGV0Yy4gVW5kZXJzdGFuZGluZyB0aGUgZmluZXIgcG9pbnRzIG9mIGBTVE1NQUNfUENJYCYjMzk7cyBjb25maWd1cmF0aW9uIGlzIGtleSBmb3IgY29ycmVjdGx5IGJ1aWxkaW5nIGFuZCBjb25maWd1cmluZyBhbiBlbWJlZGRlZCBzeXN0ZW0gb3IgZHJpdmVyIG1vZHVsZSB0aGF0IHVzZXMgYSBTVE1NQUMgb3ZlciBhIFBDSSBjb25uZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXG4gMjUxOlx0XHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI1MjpcdFxuIDI1MzpcdGNvbmZpZyBEV01BQ19TVElcbiAyNTQ6XHRcdHRyaXN0YXRlIFwmIzM0O1NUaSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyNTU6XHRcdGRlZmF1bHQgQVJDSF9TVElcbiAyNTY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NUSSB8fCBDT01QSUxFX1RFU1QpXG4gMjU3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI1ODpcdFx0aGVscFxuIDI1OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUaSBTT0NzLlxuIDI2MDpcdFxuIDI2MTpcdFx0ICBUaGlzIHNlbGVjdHMgU1RpIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAyNjI6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUaSBzZXJpZXNcbiAyNjM6XHRcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjY0Olx0XG4gMjY1Olx0Y29uZmlnIERXTUFDX1NUTTMyXG4gMjY2Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE0zMiBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMjY3Olx0XHRkZWZhdWx0IEFSQ0hfU1RNMzJcbiAyNjg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RNMzIgfHwgQ09NUElMRV9URVNUKVxuIDI2OTpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyNzA6XHRcdGhlbHBcbiAyNzE6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBTVE0zMiBTT0NzLlxuIDI3MjpcdFxuIDI3MzpcdFx0ICBUaGlzIHNlbGVjdHMgU1RNMzIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDI3NDpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RNMzIgc2VyaWVzXG4gMjc1Olx0XHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI3NjpcdFxuIDI3NzpcdGNvbmZpZyBEV01BQ19TVU5YSVxuIDI3ODpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDI3OTpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMjgwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMjgxOlx0XHRoZWxwXG4gMjgyOlx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBMjAvQTMxIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMjgzOlx0XG4gMjg0Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMjg1Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXG4gMjg2Olx0XHQgIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyODc6XHRcbiAyODg6XHRjb25maWcgRFdNQUNfU1VOOElcbiAyODk6XHRcdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyOTA6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDI5MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDI5MjpcdFx0c2VsZWN0IE1ESU9fQlVTX01VWFxuIDI5MzpcdFx0aGVscFxuIDI5NDpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgSDMgQTgzVCBBNjQgRU1BQyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyOTU6XHRcbiAyOTY6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAyOTc6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XG4gMjk4Olx0XHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyOTk6XHRcbiAzMDA6XHRjb25maWcgRFdNQUNfU1VONTVJXG4gMzAxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3VwcG9ydFwmIzM0O1xuIDMwMjpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMzAzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMzA0Olx0XHRzZWxlY3QgTURJT19CVVNfTVVYXG4gMzA1Olx0XHRoZWxwXG4gMzA2Olx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBNTIzL1Q1MjcgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVycy5cbiAzMDc6XHRcbiAzMDg6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAzMDk6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xuIDMxMDpcdFx0ICBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzExOlx0XG4gMzEyOlx0Y29uZmlnIERXTUFDX1RIRUFEXG4gMzEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtULUhFQUQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDMxNDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxuIDMxNTpcdFx0aGVscFxuIDMxNjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcbiAzMTc6XHRcbiAzMTg6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDMxOTpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIFQtSEVBRCBUSDE1MjBcbiAzMjA6XHRcdCAgZXRoZXJuZXQgY29udHJvbGxlci5cbiAzMjE6XHRcbiAzMjI6XHRjb25maWcgRFdNQUNfSU1YOFxuIDMyMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIElNWDggRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDMyNDpcdFx0ZGVmYXVsdCBBUkNIX01YQ1xuIDMyNTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVClcbiAzMjY6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMzI3Olx0XHRoZWxwXG4gMzI4Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIGkuTVg4IFNPQ3MuXG4gMzI5Olx0XG4gMzMwOlx0XHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDMzMTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuIDMzMjpcdFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzMzOlx0XG4gMzM0Olx0Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbiAzMzU6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IENPTU1PTl9DTEtcbiAzMzc6XHRcdGhlbHBcbiAzMzg6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gSW50ZWwgU29Dc1xuIDMzOTpcdFxuIDM0MDpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAzNDE6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcbiAzNDI6XHRcdCAgU29DLlxuIDM0MzpcdFxuIDM0NDpcdGNvbmZpZyBEV01BQ19MT09OR1NPTjFcbiAzNDU6XHRcdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uMSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAzNDY6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXG4gMzQ3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcbiAzNDg6XHRcdGhlbHBcbiAzNDk6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTY3MwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIFNUTU1BQ19QQ0kgaW4gS2NvbmZpZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgU1RNTUFDX1BDSWAgaXMgZGVmaW5lZCwgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFBDSSBpbnRlcmZhY2Ugb2YgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIE15IGJlc3Qgc3RhcnRpbmcgcG9pbnQgaXMgZ29pbmcgdG8gYmUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgYSBLY29uZmlnIG9wdGlvbiBnaXZlbiB0aGUgbGlrZWx5IG5hbWUgc3RydWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NUTU1BQ19QQ0kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD05OD1UaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBgQ09ORklHX1NUTU1BQ19FVEhgYDpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtOTktIC0gYGBDT05GSUdfU1RNTUFDX1BMQVRGT1JNYGA6IGlzIHRvIGVuYWJsZSB0aGUgcGxhdGZvcm0gZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDoxMDA6IC0gYGBDT05GSUdfU1RNTUFDX1BDSWBgOiBpcyB0byBlbmFibGUgdGhlIHBjaSBkcml2ZXIuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTEwMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXHQmIzQzOz0gc3RtbWFjX2xpYnBjaS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfU1RNTUFDX1BDSSlcdCYjNDM7PSBzdG1tYWMtcGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcdCYjNDM7PSBkd21hYy1pbnRlbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjYwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSB0aGlua2luZywgbGluZSA0MDcgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiB0aGVzZSBmaWxlcy4gVGhhdCBzZWN0aW9uIGlzIGxpa2VseSBnb2luZyB0byBob2xkIHNvbWUgaW1wb3J0YW50IGNsdWVzIGFib3V0IHdoYXQgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkmIzM5O3JlIGVuYWJsZWQsIGFuZCBwb3RlbnRpYWxseSBhbnkgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgdmFyaW91cyBQSFkgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvcHRpb25zLCBvciBtYXliZSBldmVuIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1RNTUFDIGl0c2VsZi4gTGV0JiMzOTtzIGdldCB0byB0aGUgc3BlY2lmaWNzIGFuZCBzZWUgd2hhdCYjMzk7cyBvbiBvZmZlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4gMzk1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcbiAzOTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4gMzk3Olx0XG4gMzk4Olx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuIDM5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDQwMTpcdFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbiA0MDI6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDAzOlx0XHRoZWxwXG4gNDA0Olx0XHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxuIDQwNTpcdFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgU1RNTUFDX1BDSVxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MTA6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDQxMTpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MTI6XHRcdGhlbHBcbiA0MTM6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gNDE0Olx0XHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxuIDQxNTpcdFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXG4gNDE2Olx0XG4gNDE3Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gNDE4Olx0XG4gNDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gNDIwOlx0ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDA0CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgU1RNTUFDYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGNvbmZpZ3VyYXRpb25zLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIEhtbSwgaXQgc2VlbXMgYFBIWUxJTktgIGlzIGRpcmVjdGx5IHRpZWQgdG8gYFNUTU1BQ19FVEhgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBvZnRlbiBzZWUgdGhhdCBjb25maWd1cmF0aW9uLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gYHBoeWxpbmtgIGlzbiYjMzk7dCBleGNsdXNpdmUgdG8gdGhlIFNUTU1BQyB3b3JsZC4gSSBzZWUgdGhhdCBgcGh5bGlua2AgaXMgYWxzbyByZWZlcmVuY2VkIGJ5IHRoZSBBU0lYIFVTQiBMQU4gY2hpcHMsIHNwZWNpZmljYWxseSBgVVNCX0xBTjc4WFhgIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gVGhhdCBtZWFucyBJIHNob3VsZCBhbHNvIGNoZWNrIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgdG8gc2VlIHRoZSBjb25kaXRpb25zIG9mIHRob3NlIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0xBTjc4WFgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9OTk9Y29uZmlnIFVTQl9SVEw4MTUyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTEyLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTEzOmNvbmZpZyBVU0JfTEFONzhYWFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE0LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDAyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBVU0IgbmV0d29yayBkcml2ZXJzIGFyZSBjb25maWd1cmVkIGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIGFyb3VuZCBsaW5lIDExMy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIFVTQiBuZXR3b3JrIGRyaXZlciBzdWJzeXN0ZW0uIEl0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdldCBhIGZlZWwgZm9yIHRoZSBjb25maWd1cmFibGUgZWxlbWVudHMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrIGFuZCBVU0IgY29yZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgcmVsZXZhbnQgYENPTkZJR19gIG9wdGlvbnMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBmZWF0dXJlcywgYW5kIHBlcmhhcHMgc29tZSBoZWxwZnVsIGNvbW1lbnRzIHRoYXQgY2xhcmlmeSB0aGUgcHVycG9zZSBvZiBlYWNoIHNldHRpbmcuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaWYgbmVlZGVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDExMTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcjgxNTIuXG4gMTEyOlx0XG4gMTEzOlx0Y29uZmlnIFVTQl9MQU43OFhYXG4gMTE0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgTEFONzhYWCBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbiAxMTU6XHRcdHNlbGVjdCBNSUlcbiAxMTY6XHRcdHNlbGVjdCBQSFlMSU5LXG4gMTE3Olx0XHRzZWxlY3QgTUlDUk9DSElQX1BIWVxuIDExODpcdFx0c2VsZWN0IENSQzMyXG4gMTE5Olx0XHRpbXBseSBORVRfU0VMRlRFU1RTXG4gMTIwOlx0XHRoZWxwXG4gMTIxOlx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgTWljcm9jaGlwIExBTjc4WFggYmFzZWQgVVNCIDJcbiAxMjI6XHRcdCAgXHUwMDI2IFVTQiAzIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJzLlxuIDEyMzpcdFx0ICBMQU43ODAwIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlclxuIDEyNDpcdFx0ICBMQU43ODUwIDogVVNCIDIgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlclxuIDEyNTpcdFx0ICBMQU43ODAxIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlciAoTUFDIG9ubHkpXG4gMTI2Olx0XG4gMTI3Olx0XHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxuIDEyODpcdFxuIDEyOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwMTAKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipRdWljayBQSFkgTGF5ZXIgQ29uc2lkZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgVVNCIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgYFVTQl9MQU43OFhYYCBkcml2ZXIgY2xlYXJseSBob29rcyBpbnRvIGBQSFlMSU5LYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBhbmQgbWFrZXMgc2Vuc2U7IHRoZSBMQU43OFhYIGxpa2VseSByZWxpZXMgb24gYSBQSFkgYWJzdHJhY3Rpb24uIEJ1dCB3aGF0IGFib3V0IHRoZSBgVVNCX05FVF9BWDg4MTdYYCBkcml2ZXI/IEkgbmVlZCB0byBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24uIERvZXMgaXQgYWxzbyB1c2UgYFBIWUxJTktgLCBvciBkb2VzIGl0IG1hbmFnZSB0aGUgUEhZIGxheWVyIGRpcmVjdGx5PyBVbmRlcnN0YW5kaW5nIHRoaXMgZGlzdGluY3Rpb24gaXMgY3J1Y2lhbCBmb3IgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkgbXVzdCBsb29rIGludG8gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9ORVRfQVg4ODE3WCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMzI9Y29uZmlnIFVTQl9VU0JORVRcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjUtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxNjY6Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVx0dHJpc3RhdGUgXCYjMzQ7QVNJWCBBWDg4eHh4IEJhc2VkIFVTQiAyLjAgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzMTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgVVNCIE5ldHdvcmtpbmcgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgVVNCIG5ldHdvcmtpbmcuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBzb21lIG9mIHRoZXNlIG9wdGlvbnMsIHNvIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gU3BlY2lmaWNhbGx5LCBJIHJlY2FsbCB0aGVyZSBiZWluZyBhIGNydWNpYWwgc2VjdGlvbiBhcm91bmQgbGluZSAxNjYgdGhhdCBkZWFscyB3aXRoIHRoZSBjb3JlIFVTQiBuZXR3b3JrIGRldmljZSBvcHRpb25zLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBiZWdpbi4gSSYjMzk7bSBhaW1pbmcgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGRpZmZlcmVudCBkcml2ZXJzIGFuZCB0aGUgY29uZmlndXJhYmlsaXR5IGV4cG9zZWQgdG8gdGhlIHVzZXIuIFRoaXMgaXMgcHJvYmFibHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBteSBjdXJyZW50IHRhc2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MDpcdFxuIDE2MTpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgXHUwMDNjaHR0cDovL3d3dy5saW51eC11c2Iub3JnL3VzYm5ldC9cdTAwM2UuXG4gMTYyOlx0XG4gMTYzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE2NDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdXNibmV0LlxuIDE2NTpcdFxuIDE2NjpcdGNvbmZpZyBVU0JfTkVUX0FYODgxN1hcbiAxNjc6XHRcdHRyaXN0YXRlIFwmIzM0O0FTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4gMTY4Olx0XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbiAxNjk6XHRcdHNlbGVjdCBDUkMzMlxuIDE3MDpcdFx0c2VsZWN0IFBIWUxJTktcbiAxNzE6XHRcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcbiAxNzI6XHRcdGltcGx5IE5FVF9TRUxGVEVTVFNcbiAxNzM6XHRcdGRlZmF1bHQgeVxuIDE3NDpcdFx0aGVscFxuIDE3NTpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIEFTSVggQVg4OHh4eCBiYXNlZCBVU0IgMi4wXG4gMTc2Olx0XHQgIDEwLzEwMCBFdGhlcm5ldCBhZGFwdGVycy5cbiAxNzc6XHRcbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgc2hvdWxkIHdvcmsgd2l0aCBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIGRldmljZXM6XG4gMTc5Olx0XHQgICAgKiBBdGVuIFVDMjEwVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgyMwoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDM3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9uYWwgQ2hhbmdlcyBpbiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGBVU0JfTkVUX0FYODgxN1hgIGFsc28gcHVsbHMgaW4gYFBIWUxJTktgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuIE5vdywgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGBwaHlsaW5rX2V4cGVjdHNfcGh5YD8gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBnZXQgdG91Y2hlZCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEFoLCB5ZXMsIHRoZSBwYXRjaCByZW1vdmVzIHRoZSBjaGVjayBgKHBsLSZndDtjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQgJmFtcDsmYW1wOyBwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3oocGwtJmd0O2xpbmtfaW50ZXJmYWNlKSlgIGZyb20gYm90aCBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgLiBUaGlzIG1lYW5zIHRoZSBmdW5jdGlvbiB3aWxsIG5vdyByZXR1cm4gdHJ1ZSBmb3IgYE1MT19BTl9JTkJBTkRgIHdpdGggYW4gYDgwMjN6YCBpbnRlcmZhY2UgbW9kZSwgd2hlcmVhcyBiZWZvcmUsIGl0IHdvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UuIERlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGVyZS4KCkxldCYjMzk7cyBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIGBzdG1tYWNfaW5pdF9waHlgLiBTY2FubmluZyB0aGUgY29kZSBhZ2Fpbi4uLgoKYGBgYwoJCWlmIChhZGRyICZsdDsgMCkgewoJCQkvKiBJZiBhIGN1c3RvbSBQQ1MgaXMgaW4gdXNlLCBubyBQSFkgaXMgbmVlZGVkICovCgkJCWlmIChwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCgkJCQlyZXR1cm4gMDsKCgkJCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O25vIHBoeSBmb3VuZFxuJiMzNDspOwoJCQlyZXR1cm4gLUVOT0RFVjsKCQl9CmBgYAoKT2theSwgdGhlIHNhbWUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgYWxzbyBwcmVzZW50IGluIGBzdG1tYWNfaW5pdF9waHlgLgoKUmlnaHQsIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBnaXZpbmcgYSB0aG9yb3VnaCBmdXp6aW5nLiBXZSBzaG91bGQgZW5hYmxlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIEhhbmcgb24sIHRob3VnaC4gYFNUTU1BQ19QQ0lgIGRlcGVuZHMgb24gYENPTU1PTl9DTEtgLiBJJiMzOTtsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT01NT05fQ0xLYCBpcyBhdmFpbGFibGUgaW4gdGhlIHg4Nl82NCBlbnZpcm9ubWVudC4gV2UgY2FuJiMzOTt0IHdhc3RlIHRpbWUgb24gYSBjb25maWd1cmF0aW9uIHRoYXQgd29uJiMzOTt0IGJ1aWxkLiBMZXQgbWUgY2hlY2suLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENPTU1PTl9DTEsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwOTYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnPTIxMD1jb25maWcgSEFWRV9BVDkxX1VTQl9DTEtcbi0tXG5hcmNoL2FybS9tYWNoLWF0OTEvS2NvbmZpZy0yMTItXG5hcmNoL2FybS9tYWNoLWF0OTEvS2NvbmZpZzoyMTM6Y29uZmlnIENPTU1PTl9DTEtfQVQ5MVxuYXJjaC9hcm0vbWFjaC1hdDkxL0tjb25maWctMjE0LVx0Ym9vbFxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWc9MTI9Y29uZmlnIEhBVkVfTEVHQUNZX0NMSyAjIFRPRE86IFJlbW92ZSBvbmNlIGFsbCBsZWdhY3kgdXNlcnMgYXJlIG1pZ3JhdGVkXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjE6bWVudWNvbmZpZyBDT01NT05fQ0xLXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtDb21tb24gQ2xvY2sgRnJhbWV3b3JrXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZz0zND1pZiBDT01NT05fQ0xLXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzozNjpjb25maWcgQ09NTU9OX0NMS19XTTgzMVhcbmRyaXZlcnMvY2xrL0tjb25maWctMzctXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFdNODMxeC8yeCBQTUlDc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWc9NTM9Y29uZmlnIExNSzA0ODMyXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy02MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NjE6Y29uZmlnIENPTU1PTl9DTEtfQVBQTEVfTkNPXG5kcml2ZXJzL2Nsay9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBBcHBsZSBTb0MgTkNPc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNjgtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjY5OmNvbmZpZyBDT01NT05fQ0xLX01BWDc3Njg2XG5kcml2ZXJzL2Nsay9LY29uZmlnLTcwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNYXhpbSA3NzYyMC83NzY4Ni83NzgwMiBNRkRcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTc1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo3Njpjb25maWcgQ09NTU9OX0NMS19NQVg5NDg1XG5kcml2ZXJzL2Nsay9LY29uZmlnLTc3LVx0dHJpc3RhdGUgXCYjMzQ7TWF4aW0gOTQ4NSBQcm9ncmFtbWFibGUgQ2xvY2sgR2VuZXJhdG9yXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy04MS1cbmRyaXZlcnMvY2xrL0tjb25maWc6ODI6Y29uZmlnIENPTU1PTl9DTEtfUks4MDhcbmRyaXZlcnMvY2xrL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFJLODA1L1JLODA4L1JLODA5L1JLODE3L1JLODE4XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy04OS1cbmRyaXZlcnMvY2xrL0tjb25maWc6OTA6Y29uZmlnIENPTU1PTl9DTEtfUlAxXG5kcml2ZXJzL2Nsay9LY29uZmlnLTkxLVx0dHJpc3RhdGUgXCYjMzQ7UmFzcGJlcnJ5IFBpIFJQMS1iYXNlZCBjbG9jayBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy05OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6OTk6Y29uZmlnIENPTU1PTl9DTEtfSEk2NTVYXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEwMC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgSGk2NTV4XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTA4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxMDk6Y29uZmlnIENPTU1PTl9DTEtfU0NNSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMTAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgY29udHJvbGxlZCB2aWEgU0NNSSBpbnRlcmZhY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTExOC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTE5OmNvbmZpZyBDT01NT05fQ0xLX1NDUElcbmRyaXZlcnMvY2xrL0tjb25maWctMTIwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGNvbnRyb2xsZWQgdmlhIFNDUEkgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMjgtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjEyOTpjb25maWcgQ09NTU9OX0NMS19TSTUzNDFcbmRyaXZlcnMvY2xrL0tjb25maWctMTMwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTM0MSBhbmQgNTM0MCBBL0IvQy9EIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEzOS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTQwOmNvbmZpZyBDT01NT05fQ0xLX1NJNTM1MVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNDEtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzUxQS9CL0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0Ny1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTQ4OmNvbmZpZyBDT01NT05fQ0xLX1NJNTE0XG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0OS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDUxNCBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNTYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE1Nzpjb25maWcgQ09NTU9OX0NMS19TSTU0NFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNTgtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1NDQgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTY0LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNjU6Y29uZmlnIENPTU1PTl9DTEtfU0k1NzBcbmRyaXZlcnMvY2xrL0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTcwIGFuZCBjb21wYXRpYmxlIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3My1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTc0OmNvbmZpZyBDT01NT05fQ0xLX0JNMTg4MFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNzUtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQml0bWFpbiBCTTE4ODAgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODAtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE4MTpjb25maWcgQ09NTU9OX0NMS19DRENFNzA2XG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4Mi1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgVEkgQ0RDRTcwNiBjbG9jayBzeW50aGVzaXplclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTg3LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxODg6Y29uZmlnIENPTU1PTl9DTEtfVFBTNjg0NzBcbmRyaXZlcnMvY2xrL0tjb25maWctMTg5LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgRHJpdmVyIGZvciBUSSBUUFM2ODQ3MCBQTUlDXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xOTUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE5Njpjb25maWcgQ09NTU9OX0NMS19DRENFOTI1XG5kcml2ZXJzL2Nsay9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgVEkgQ0RDRTkxMy85MjUvOTM3Lzk0OSBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTItXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIxMzpjb25maWcgQ09NTU9OX0NMS19DUzIwMDBfQ1BcbmRyaXZlcnMvY2xrL0tjb25maWctMjE0LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBDUzIwMDAgRnJhY3Rpb25hbC1OIENsb2NrIFN5bnRoZXNpemVyIFx1MDAyNiBDbG9jayBNdWx0aXBsaWVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTktXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIyMDpjb25maWcgQ09NTU9OX0NMS19FTjc1MjNcbmRyaXZlcnMvY2xrL0tjb25maWctMjIxLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEFpcm9oYS9FY29OZXQgU29DIHN5c3RlbSBjbG9ja3NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIyOC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjI5OmNvbmZpZyBDT01NT05fQ0xLX0VQOTNYWFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIENpcnJ1cyBMb2dpYyBlcDkzeHggU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIzNzpjb25maWcgQ09NTU9OX0NMS19FWUVRXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciB0aGUgTW9iaWxleWUgRXllUSBwbGF0Zm9ybVwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMjQ3LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoyNDg6Y29uZmlnIENPTU1PTl9DTEtfRlNMX0ZMRVhTUElcbmRyaXZlcnMvY2xrL0tjb25maWctMjQ5LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBGbGV4U1BJIG9uIExheWVyc2NhcGUgU29Dc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMjU1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoyNTY6Y29uZmlnIENPTU1PTl9DTEtfRlNMX1NBSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNTctXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQkNMSyBvZiBGcmVlc2NhbGUgU0FJIGNvcmVzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNjctXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI2ODpjb25maWcgQ09NTU9OX0NMS19HRU1JTklcbmRyaXZlcnMvY2xrL0tjb25maWctMjY5LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNzYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI3Nzpjb25maWcgQ09NTU9OX0NMS19MQU45NjZYXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgQ2xvY2sgQ29udHJvbGxlciBkcml2ZXIgZm9yIExBTjk2NlggU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yODYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI4Nzpjb25maWcgQ09NTU9OX0NMS19TMk1QUzExXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI4OC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgUzJNUFMxWC9TNU04NzY3IE1GRFwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWc9MzA0PWNvbmZpZyBDTEtfVFdMNjA0MFxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzExLVxuZHJpdmVycy9jbGsvS2NvbmZpZzozMTI6Y29uZmlnIENPTU1PTl9DTEtfQVhJX0NMS0dFTlxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMTMtXHR0cmlzdGF0ZSBcJiMzNDtBWEkgY2xrZ2VuIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWc9MzI4PWNvbmZpZyBDTEtfTFMxMDI4QV9QTExESUdcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMzNy1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzM4OmNvbmZpZyBDT01NT05fQ0xLX1hHRU5FXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMzOS1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBBUE0gWEdlbmUgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNDQtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM0NTpjb25maWcgQ09NTU9OX0NMS19MT0NITkFHQVJcbmRyaXZlcnMvY2xrL0tjb25maWctMzQ2LVx0dHJpc3RhdGUgXCYjMzQ7Q2lycnVzIExvZ2ljIExvY2huYWdhciBjbG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM1MS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzUyOmNvbmZpZyBDT01NT05fQ0xLX05QQ004WFhcbmRyaXZlcnMvY2xrL0tjb25maWctMzUzLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciB0aGUgTlBDTThYWCBTb0MgRmFtaWx5XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNjAtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM2MTpjb25maWcgQ09NTU9OX0NMS19MT09OR1NPTjJcbmRyaXZlcnMvY2xrL0tjb25maWctMzYyLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIExvb25nc29uLTIgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNjktXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM3MDpjb25maWcgQ09NTU9OX0NMS19OWFBcbmRyaXZlcnMvY2xrL0tjb25maWctMzcxLVx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBBUkNIX0xQQzMyWFgpXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM3Nzpjb25maWcgQ09NTU9OX0NMS19QQUxNQVNcbmRyaXZlcnMvY2xrL0tjb25maWctMzc4LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBUSSBQYWxtYXMgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzgzLVxuZHJpdmVycy9jbGsvS2NvbmZpZzozODQ6Y29uZmlnIENPTU1PTl9DTEtfUFdNXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4NS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgUFdNcyB1c2VkIGFzIGNsb2NrIG91dHB1dHNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM5MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzkxOmNvbmZpZyBDT01NT05fQ0xLX1BYQVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTItXHRkZWZfYm9vbCBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiBBUkNIX1BYQVxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzk1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzozOTY6Y29uZmlnIENPTU1PTl9DTEtfUlM5X1BDSUVcbmRyaXZlcnMvY2xrL0tjb25maWctMzk3LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIDktc2VyaWVzIFBDSWUgY2xvY2sgZ2VuZXJhdG9yc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDA0LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0MDU6Y29uZmlnIENPTU1PTl9DTEtfU0k1MjFYWFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MDYtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNreVdvcmtzIFNpNTIxeHggUENJZSBjbG9jayBnZW5lcmF0b3JzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MTMtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQxNDpjb25maWcgQ09NTU9OX0NMS19WQzNcbmRyaXZlcnMvY2xrL0tjb25maWctNDE1LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhQ2xvY2sgMyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjItXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQyMzpjb25maWcgQ09NTU9OX0NMS19WQzVcbmRyaXZlcnMvY2xrL0tjb25maWctNDI0LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBJRFQgVmVyc2FDbG9jayA1LDYgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDMxLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0MzI6Y29uZmlnIENPTU1PTl9DTEtfVkM3XG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgUmVuZXNhcyBWZXJzYWNsb2NrIDcgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDQwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NDE6Y29uZmlnIENPTU1PTl9DTEtfU1RNMzJGXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ0Mi1cdGRlZl9ib29sIENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IChNQUNIX1NUTTMyRjQyOSB8fCBNQUNIX1NUTTMyRjQ2OSB8fCBNQUNIX1NUTTMyRjc0Nilcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ0NS1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDQ2OmNvbmZpZyBDT01NT05fQ0xLX1NUTTMySDdcbmRyaXZlcnMvY2xrL0tjb25maWctNDQ3LVx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgTUFDSF9TVE0zMkg3NDNcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDUxOmNvbmZpZyBDT01NT05fQ0xLX01NUDJcbmRyaXZlcnMvY2xrL0tjb25maWctNDUyLVx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKE1BQ0hfTU1QMl9EVCB8fCBNQUNIX01NUDNfRFQpXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ1Njpjb25maWcgQ09NTU9OX0NMS19NTVAyX0FVRElPXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1Ny0gICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTU1QMiBBdWRpbyBzdWJzeXN0ZW1cJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2MS1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDYyOmNvbmZpZyBDT01NT05fQ0xLX0JENzE4WFhcbmRyaXZlcnMvY2xrL0tjb25maWctNDYzLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciAzMksgY2xrIGdhdGVzIG9uIFJPSE0gUE1JQ3NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDY5OmNvbmZpZyBDT01NT05fQ0xLX0ZJWEVEX01NSU9cbmRyaXZlcnMvY2xrL0tjb25maWctNDcwLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lbW9yeSBNYXBwZWQgRml4ZWQgdmFsdWVzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00NzUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ3Njpjb25maWcgQ09NTU9OX0NMS19LMjEwXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ3Ny1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMTAgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODItXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ4Mzpjb25maWcgQ09NTU9OX0NMS19LMjMwXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4NC1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMzAgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODgtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ4OTpjb25maWcgQ09NTU9OX0NMS19TUDcwMjFcbmRyaXZlcnMvY2xrL0tjb25maWctNDkwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTdW5wbHVzIFNQNzAyMSBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ5OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDk5OmNvbmZpZyBDT01NT05fQ0xLX1JQTUlcbmRyaXZlcnMvY2xrL0tjb25maWctNTAwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGJhc2VkIG9uIFJJU0MtViBSUE1JXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWctMi1cbmRyaXZlcnMvY2xrL2FzcGVlZC9LY29uZmlnOjM6Y29uZmlnIENPTU1PTl9DTEtfQVNQRUVEXG5kcml2ZXJzL2Nsay9hc3BlZWQvS2NvbmZpZy00LSAgICAgICAgYm9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEFzcGVlZCBCTUMgU29Dc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9LY29uZmlnLTE0LVxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWc6MTU6Y29uZmlnIENPTU1PTl9DTEtfQVNUMjcwMFxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWctMTYtICAgICAgICBib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQVNUMjcwMCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9iY20vS2NvbmZpZz00OT1jb25maWcgQ0xLX0JDTV9LT05BXG4tLVxuZHJpdmVycy9jbGsvYmNtL0tjb25maWctNTctXG5kcml2ZXJzL2Nsay9iY20vS2NvbmZpZzo1ODpjb25maWcgQ09NTU9OX0NMS19JUFJPQ1xuZHJpdmVycy9jbGsvYmNtL0tjb25maWctNTktXHRib29sXG4tLVxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy0yLVxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZzozOmNvbmZpZyBDT01NT05fQ0xLX0VTV0lOXG5kcml2ZXJzL2Nsay9lc3dpbi9LY29uZmlnLTQtXHRib29sXG5kcml2ZXJzL2Nsay9lc3dpbi9LY29uZmlnLTUtXG5kcml2ZXJzL2Nsay9lc3dpbi9LY29uZmlnOjY6Y29uZmlnIENPTU1PTl9DTEtfRUlDNzcwMFxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7RUlDNzcwMCBDbG9jayBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6Mjpjb25maWcgQ09NTU9OX0NMS19ISTM1MTZDVjMwMFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0hJMzUxNkNWMzAwIENsb2NrIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTktXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzoxMDpjb25maWcgQ09NTU9OX0NMS19ISTM1MTlcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7SGkzNTE5IENsb2NrIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTE3LVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6MTg6Y29uZmlnIENPTU1PTl9DTEtfSEkzNTU5QVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMTktXHRib29sIFwmIzM0O0hpMzU1OUEgQ2xvY2sgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMjUtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzoyNjpjb25maWcgQ09NTU9OX0NMS19ISTM2NjBcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTI3LVx0Ym9vbCBcJiMzNDtIaTM2NjAgQ2xvY2sgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMzItXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzozMzpjb25maWcgQ09NTU9OX0NMS19ISTM2NzBcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtIaTM2NzAgQ2xvY2sgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMzktXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzo0MDpjb25maWcgQ09NTU9OX0NMS19ISTM3OThDVjIwMFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctNDEtXHR0cmlzdGF0ZSBcJiMzNDtIaTM3OThDVjIwMCBDbG9jayBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy00Ny1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnOjQ4OmNvbmZpZyBDT01NT05fQ0xLX0hJNjIyMFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctNDktXHRib29sIFwmIzM0O0hpNjIyMCBDbG9jayBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9pbWd0ZWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9jbGsvaW1ndGVjL0tjb25maWc6Mjpjb25maWcgQ09NTU9OX0NMS19CT1NUT05cbmRyaXZlcnMvY2xrL2ltZ3RlYy9LY29uZmlnLTMtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTUlQUyBCb3N0b24gYm9hcmRzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsva2V5c3RvbmUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9jbGsva2V5c3RvbmUvS2NvbmZpZzoyOmNvbmZpZyBDT01NT05fQ0xLX0tFWVNUT05FXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXJzIGZvciBLZXlzdG9uZSBiYXNlZCBTT0NzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZz01PW1lbnUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTctXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjg6Y29uZmlnIENPTU1PTl9DTEtfTUVESUFURUtcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctOS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMy1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTQ6Y29uZmlnIENPTU1PTl9DTEtfTUVESUFURUtfRkhDVExcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTUtXHRib29sIFwmIzM0O2Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgRkhDVEwgaGFyZHdhcmUgY29udHJvbFwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjAtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIxOmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDFcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyOTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfTU1TWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzAtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzAxIG1tc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNC1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzU6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzAxX0lNR1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDEgaW1nc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy00MC1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6NDE6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzAxX1ZERUNTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNDItXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzAxIHZkZWNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTQ2LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo0Nzpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfSElGU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBoaWZzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTUyLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo1Mzpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfRVRIU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTU0LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBldGhzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTU4LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo1OTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfQkRQU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTYwLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBiZHBzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTY0LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo2NTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfQVVEU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTY2LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhdGVrIE1UMjcwMSBhdWRzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTcwLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo3MTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfRzNEU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTcyLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBnM2RzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTc2LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo3Nzpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMlwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctODQtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjg1OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9CRFBTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctODYtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBiZHBzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTkwLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo5MTpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJfSU1HU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTkyLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTIgaW1nc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05Ni1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6OTc6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX0pQR0RFQ1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05OC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzEyIGpwZ2RlY3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTAyLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMDM6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX01GR0NGR1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBtZmdjZmdcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEwOC1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTA5OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9NTVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMTAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBtbXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTE0LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMTU6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX1ZERUNTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTE2LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTIgdmRlY3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTIwLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMjE6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX1ZFTkNTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTIgdmVuY3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTI2LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMjc6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzM1XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEyOC1cdHRyaXN0YXRlIFwmIzM0O01haW4gY2xvY2sgZHJpdmVycyBmb3IgTWVkaWFUZWsgTVQ2NzM1XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMzUtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjEzNjpjb25maWcgQ09NTU9OX0NMS19NVDY3MzVfSU1HU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEzNy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IGltZ3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTQyLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxNDM6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzM1X01GR0NGR1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNDQtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjczNSBtZmdjZmdcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE0OS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTUwOmNvbmZpZyBDT01NT05fQ0xLX01UNjczNV9WREVDU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IHZkZWNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTU3OmNvbmZpZyBDT01NT05fQ0xLX01UNjczNV9WRU5DU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1OC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IHZlbmNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE2My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTY0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNjUtICAgICAgIGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NjVcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTcyOmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NV9BVURJT1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNzMtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IGF1ZGlvc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNzctXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE3ODpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfQ0FNU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE3OS0gICAgICAgdHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NjUgY2Ftc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xODMtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE4NDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfR0NFU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE4NS0gICAgICAgdHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NjUgZ2Nlc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xODktXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE5MDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTU1TWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTkxLSAgICAgICB0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtbXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTk1LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxOTY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X0lNR1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xOTctICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IGltZ3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjAxLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMDI6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X1ZDT0RFQ1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMDMtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IHZjb2RlY3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjA3LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMDg6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01GR1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMDktICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1mZ3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjEzLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMTQ6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkwQVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMTUtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkwYXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjE5LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMjA6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkwQlNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMjEtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkwYnN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjI1LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMjY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkxQVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMjctICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkxYXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjMxLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMzI6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkxQlNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMzMtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkxYnN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjM3LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMzg6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkyQVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMzktICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkyYXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjQzLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyNDQ6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkyQlNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNDUtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkyYnN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjQ5LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyNTA6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI1MS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNTctXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI1ODpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfTU1TWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjU5LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgbW1zeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI2My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MjY0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9JTUdTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjY1LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgaW1nc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNjktXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI3MDpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfSVBFU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI3MS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5IGlwZXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjc1LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyNzY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5X0NBTVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNzctXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc3OSBjYW1zeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4MS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MjgyOmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9WREVDU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4My1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5IHZkZWNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4Ny1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6Mjg4OmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9WRU5DU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4OS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5IHZlbmNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI5My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6Mjk0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9NRkdDRkdcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjk1LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgbWZnY2ZnXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yOTktXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMwMDpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfQVVEU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMwMS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWF0ZWsgTVQ2Nzc5IGF1ZHN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzA1LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozMDY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk1XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMwNy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zMTUtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMxNjpjb25maWcgQ09NTU9OX0NMS19NVDY3OTVfTUZHQ0ZHXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMxNy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1IG1mZ2NmZ1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzIyLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozMjM6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk1X01NU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMyNC0gICAgICAgdHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTUgbW1zeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMyOS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzMwOmNvbmZpZyBDT01NT05fQ0xLX01UNjc5NV9WREVDU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMzMS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1IFZERUNTWVNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMzNi1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzM3OmNvbmZpZyBDT01NT05fQ0xLX01UNjc5NV9WRU5DU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMzOC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1IFZFTkNTWVNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTM0My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzQ0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc5N1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNDUtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk3XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNTEtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjM1Mjpjb25maWcgQ09NTU9OX0NMS19NVDY3OTdfTU1TWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzUzLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTcgbW1zeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTM1Ny1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzU4OmNvbmZpZyBDT01NT05fQ0xLX01UNjc5N19JTUdTWVNcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQ4NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgQ09NTU9OX0NMS2AgaXMgdGhlIENvbW1vbiBDbG9jayBGcmFtZXdvcmsmIzM5O3MgZ2VuZXJpYyBjb25maWcuIEl0JiMzOTtzIHBlcnZhc2l2ZSwgZXNwZWNpYWxseSBvbiBhcmNoaXRlY3R1cmVzIGxpa2UgeDg2XzY0OyBpdCYjMzk7cyBwcmFjdGljYWxseSBiYWtlZCBpbiwgb2Z0ZW4gYnkgaW5oZXJpdGFuY2UuICBKdXN0IHRvIGJlIHN1cmUsIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgQ09NTU9OX0NMS2AgaXMgYSBgYm9vbGAgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgZW5hYmxlZCBpbiB0aGUgc3l6a2FsbGVyJiMzOTtzIHg4Nl82NCBjb25maWcuCgpOb3csIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIHN5emthbGxlciBjb25maWcsIEkmIzM5O2xsIGZvY3VzIGRpcmVjdGx5IG9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkganVzdCBuZWVkIHRvIG91dHB1dCB0aGUgKm11c3QtaGF2ZXMqLiBPa2F5LCB0aG9zZSB3b3VsZCBiZToKCiogICBgU1RNTUFDX0VUSGAKKiAgIGBTVE1NQUNfUENJYAoqICAgYFVTQl9MQU43OFhYYAoqICAgYFVTQl9ORVRfQVg4ODE3WGAKCldhaXQgYSBzZWNvbmQsIGBVU0JfTkVUX0FYODgxN1hgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQl9VU0JORVRgLiBCdXQsIGRvZXMgYFVTQl9MQU43OFhYYCBhbHNvIGRlcGVuZCBvbiBgVVNCX1VTQk5FVGA/IE5vLCBpdCYjMzk7cyBhIHNlbGYtY29udGFpbmVkIGRyaXZlci4gSSBzaG91bGQgY2hlY2sgYFVTQl9VU0JORVRgIGFueXdheSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9VU0JORVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTEzPWNvbmZpZyBVU0JfTEFONzhYWFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjEzMjpjb25maWcgVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTMzLVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGktcHVycG9zZSBVU0IgTmV0d29ya2luZyBGcmFtZXdvcmtcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxMDIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUEhZIENvbm5lY3Rpb24gRnVuY3Rpb25zKioKCkFscmlnaHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBpbmNvcnBvcmF0ZSBgVVNCX1VTQk5FVGAgaW50byB0aGlzIHJldmlldy4gRmlyc3QsIEkmIzM5O2xsIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIEkgc2hvdWxkIGZvY3VzIG9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgc3RtbWFjX2luaXRfcGh5YC4gVGhlbiwgSSBuZWVkIHRvIHJlbWVtYmVyIGBwaHlsaW5rX2V4cGVjdHNfcGh5YC4gSSB3YXMganVzdCByZXZpZXdpbmcgYHBoeWxpbmtfYXR0YWNoX3BoeWAg4oCTIGFoLCB0aGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyB0aGF0IG1pZ2h0IGNoYW5nZSB0aGluZ3MuIE5vdywgSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgKmNhbGwqIHRoYXQgc3RhdGljIGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGFuYWx5emUgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19vZl9waHlfY29ubmVjdGAsIGFuZCBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgLiBUaGVzZSBsb29rIGxpa2UgdGhlIHByaW1hcnkgZXhwb3J0ZWQgaW50ZXJmYWNlcyB0aGF0IGV2ZW50dWFsbHkgaW50ZXJhY3Qgd2l0aCBgcGh5bGlua19hdHRhY2hfcGh5YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTk4Mj1zdGF0aWMgaW50IG1hY2JfcGh5bGlua19jb25uZWN0KHN0cnVjdCBtYWNiICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk5OS1cdFx0LyogYXR0YWNoIHRoZSBtYWMgdG8gdGhlIHBoeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDAwOlx0XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGJwLVx1MDAzZXBoeWxpbmssIHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwMDEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMyMTQ9c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY29ubmVjdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjI3LVx0XHRcdC8qIGF0dGFjaCB0aGUgbWFjIHRvIHRoZSBwaHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjI4Olx0XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoYWRhcHRlci1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMjktXHRcdH0gZWxzZSBpZiAoKChhZGFwdGVyLVx1MDAzZWNzci5pZF9yZXYgXHUwMDI2IElEX1JFVl9JRF9NQVNLXykgPT1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEzMTY9c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzNjY6XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzY3LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jPTE0MDY9c3RhdGljIGludCB0bjQwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jLTE0MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jOjE0MTE6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaywgcHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz00NjI9c3RhdGljIGludCBuZ2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjQ3OTpcdGVyciA9IHBoeWxpbmtfY29ubmVjdF9waHkod3gtXHUwMDNlcGh5bGluaywgd3gtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy00ODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjMwMDpcdFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwaHlsaW5rLCB3eC1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0zMDEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIxOC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIxOTogKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjAtICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzItICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMzM6aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTItfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjUzOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjU0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2MS0gKiBDb25uZWN0IHRoZSBwaHkgc3BlY2lmaWVkIGluIHRoZSBkZXZpY2Ugbm9kZSBAZG4gdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2MjogKiBzcGVjaWZpZWQgYnkgQHBsLiBBY3Rpb25zIHNwZWNpZmllZCBpbiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgd2lsbCBiZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBlcmZvcm1lZC5cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzAzPXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X3BoeShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMy1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MTQ6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaywgcHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI4NTg9c3RhdGljIGludCBsYW43OHh4X3BoeV9pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkwMS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjkwMjpcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoZGV2LVx1MDAzZXBoeWxpbmssIHBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDMtXHRpZiAocmV0KSB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzI3PWJvb2wgcGh5bGlua19leHBlY3RzX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI4LVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzI5OmludCBwaHlsaW5rX2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICosIHN0cnVjdCBwaHlfZGV2aWNlICopO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzMwLWludCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICosIHN0cnVjdCBkZXZpY2Vfbm9kZSAqLCB1MzIgZmxhZ3MpO1xuLS1cbm5ldC9kc2EvdXNlci5jPTI2Mzg9c3RhdGljIGludCBkc2FfdXNlcl9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYsIGludCBhZGRyLFxuLS1cbm5ldC9kc2EvdXNlci5jLTI2NTEtXG5uZXQvZHNhL3VzZXIuYzoyNjUyOlx0cmV0dXJuIHBoeWxpbmtfY29ubmVjdF9waHkoZHAtXHUwMDNlcGwsIHVzZXJfZGV2LVx1MDAzZXBoeWRldik7XG5uZXQvZHNhL3VzZXIuYy0yNjUzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNjQKCQkJCQkJCW91dHB1dDogMjM0CgkJCQkJCQl0aG91Z2h0czogMTk5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBQSFkgSW5pdGlhbGl6YXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhlIGNvZGUgcGF0aHMgaW52b2x2ZWQuIE15IHByaW1hcnkgZm9jdXMgaXMgb24gaG93IGl0IGNoYW5nZXMgUEhZIChQaHlzaWNhbCBMYXllcikgaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIGBwaHlsaW5rYCBmcmFtZXdvcmsuIEkgc3RhcnRlZCBieSBpZGVudGlmeWluZyBrZXkgZnVuY3Rpb25zIHRoYXQgc2VlbSBjZW50cmFsIHRvIHRoZSBjaGFuZ2U6IGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCBpcyB1c2VkIGJyb2FkbHksIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBpcyBgc3RtbWFjX2luaXRfcGh5YC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgdGFyZ2V0cyBhcmUgbm90IGlubGluZWQsIHRoZXJlZm9yZSBmb2N1cyBvbiB0aGUgY2FsbGVycy4KClRoZSBtb3JlIEkgbG9vaywgYHN0bW1hY19pbml0X3BoeWAgaXMgc3RhdGljIGFuZCBpdCBjYWxscyBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmVuJiMzOTt0IHN0YXRpYy4gYHN0bW1hY19vcGVuYCB3aWxsIGJlIG15IGJlc3QgZm9jdXMgc3ltYm9sLiBgcGh5bGlua19leHBlY3RzX3BoeWAgaXMgZXhwb3J0ZWQsIGFzIGFyZSBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCwgYW5kIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAsIHRoZXJlZm9yZSB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgc28gdGhlIGNhbGxlcnMgb2YgdGhvc2UgYXJlIGludGVyZXN0aW5nLgoKU28gdGhlIG1haW4gZnVuY3Rpb25zIG9yIGVudHJ5IHBvaW50cyBJIHdpbGwgZm9jdXMgb24gYXJlIHRoZXNlOgoqICAgYHN0bW1hY19vcGVuYAoqICAgYHBoeWxpbmtfZXhwZWN0c19waHlgCiogICBgcGh5bGlua19jb25uZWN0X3BoeWAKKiAgIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YAoqICAgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YAoKSSBuZWVkIHRvIGNvbmZpcm0gd2hpY2ggY29uZmlndXJhdGlvbnMgd2lsbCBlbmFibGUgdGhlIHJlbGV2YW50IGNvZGUuIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYFVTQl9VU0JORVRgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AuIFN5emthbGxlciYjMzk7cyBkdW1teSBVU0IgSENEIHdpbGwgbWFrZSB0aGUgVVNCIGRldmljZXMgcmVhY2hhYmxlLgoKSSB3YW50IHRvIGNvbmZpcm0gYHN0bW1hY2AgaXMgcmVhY2hhYmxlIHZpYSBgU1RNTUFDX1BDSWAuIEkgc2hvdWxkIGFkZCBgU1RNTUFDX1BMQVRGT1JNYCBhcyB3ZWxsLCBhcyB0aGF0IGlzIHBsYXRmb3JtLWJhc2VkIGRldmljZS4KClRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBhbHRlcnMgUEhZIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBJIG5lZWQgdG8gYmUgYWJsZSB0byBleGVyY2lzZSB0aGlzIGxvZ2ljLCBhbmQgSSB3aWxsIGJlIGFibGUgdG8gZG8gdGhpcyB0aHJvdWdoIHRoZSBgc3RtbWFjYCBkcml2ZXIgKHJlYWNoYWJsZSB2aWEgUENJIGFuZCBwbGF0Zm9ybSBkZXZpY2VzKSBhbmQgbmV0d29yayBkcml2ZXJzIGZvciBVU0IgRXRoZXJuZXQgYWRhcHRlcnMuIFRoZSBwYXRjaCBhZmZlY3RzIGhvdyBhbmQgd2hlbiBhIFBIWSBpcyBleHBlY3RlZCBhbmQgYXR0YWNoZWQuIFRoYXQgaXMgdGhlIGZ1bmN0aW9uYWwgY29yZSwgSSYjMzk7bGwgZm9jdXMgb24gdGhlIGVudHJ5IHBvaW50cyB3aGljaCBjYWxsIHRoZSBmdW5jdGlvbnMgY2hhbmdlZCBpbiB0aGUgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX29wZW4mIzM0OywKICAgICYjMzQ7cGh5bGlua19leHBlY3RzX3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIHRoZSBzdG1tYWMgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgZ2VuZXJpYyBwaHlsaW5rIGZyYW1ld29yay4gVGhlIHN0bW1hYyBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgKFNUTU1BQ19QQ0kpLCBhbmQgcGh5bGluayBpcyByZWFjaGFibGUgdmlhIHZhcmlvdXMgbmV0d29yayBkcml2ZXJzIGluY2x1ZGluZyBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgKFVTQl9MQU43OFhYLCBVU0JfTkVUX0FYODgxN1gpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15IFVTQiBIQ0QuIFRoZSBjaGFuZ2VzIGFsdGVyIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgUEhZIGlzIGV4cGVjdGVkIG9yIGF0dGFjaGVkLCB3aGljaCBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfb3BlbiYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2V4cGVjdHNfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19vZl9waHlfY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBQSFkgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIHBoeWxpbmsgZnJhbWV3b3JrLiBUaGUgc3RtbWFjIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSAoU1RNTUFDX1BDSSksIGFuZCBwaHlsaW5rIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMgaW5jbHVkaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycyAoVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3WCkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgZHVtbXkgVVNCIEhDRC4gVGhlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBQSFkgaXMgZXhwZWN0ZWQgb3IgYXR0YWNoZWQsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjE3LjYyMjU2ODcyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTE0MjM0OTEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlVTQl9VU0JORVRcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfb3BlblwiLFxuICAgIFwicGh5bGlua19leHBlY3RzX3BoeVwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19vZl9waHlfY29ubmVjdFwiLFxuICAgIFwicGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQSFkgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIHBoeWxpbmsgZnJhbWV3b3JrLiBUaGUgc3RtbWFjIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSAoU1RNTUFDX1BDSSksIGFuZCBwaHlsaW5rIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMgaW5jbHVkaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycyAoVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3WCkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgZHVtbXkgVVNCIEhDRC4gVGhlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBQSFkgaXMgZXhwZWN0ZWQgb3IgYXR0YWNoZWQsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjM6MTcuNjIyNTc0Mjk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTIwNzU3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZmU4M2FlZDhmM2Y5YWJiM2E0OGRhMDc3YzJlNmExYWExNmI1YmFjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDMwIDE0OjIzOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggNTYyZDIwODMwYjk0OS4uNTc1MTMyYjljZGJmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC0xMzQ3LDYgKzEzNDcsMTAgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcXG4gXFxuIFxcdFxcdGlmIChhZGRyIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHQvKiBJZiBhIGN1c3RvbSBQQ1MgaXMgaW4gdXNlLCBubyBQSFkgaXMgbmVlZGVkICovXFxuK1xcdFxcdFxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0XFx0XFx0bmV0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJubyBwaHkgZm91bmRcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDU5ZGZlMzVhZmE1NGYuLmZkNGU4MGVlZWRhNzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMTk2NCw5ICsxOTY0LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcXG4gICovXFxuIGJvb2wgcGh5bGlua19leHBlY3RzX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXFxuIHtcXG4tXFx0aWYgKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCB8fFxcbi1cXHQgICAgKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3oocGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlKSkpXFxuK1xcdGlmIChwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG5AQCAtMjIwNSw5ICsyMjAzLDcgQEAgc3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiB7XFxuIFxcdHUzMiBmbGFncyA9IDA7XFxuIFxcbi1cXHRpZiAoV0FSTl9PTihwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQgfHxcXG4tXFx0XFx0ICAgIChwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fSU5CQU5EIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICAgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KGludGVyZmFjZSkgXFx1MDAyNlxcdTAwMjYgIXBsLVxcdTAwM2VzZnBfYnVzKSkpXFxuK1xcdGlmIChXQVJOX09OKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjE4LjA3NTQ5MDQ1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMDY4OTQwODg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlVTQl9VU0JORVRcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfb3BlblwiLFxuICAgIFwicGh5bGlua19leHBlY3RzX3BoeVwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19vZl9waHlfY29ubmVjdFwiLFxuICAgIFwicGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQSFkgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIHBoeWxpbmsgZnJhbWV3b3JrLiBUaGUgc3RtbWFjIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSAoU1RNTUFDX1BDSSksIGFuZCBwaHlsaW5rIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMgaW5jbHVkaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycyAoVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3WCkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgZHVtbXkgVVNCIEhDRC4gVGhlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBQSFkgaXMgZXhwZWN0ZWQgb3IgYXR0YWNoZWQsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmZlODNhZWQ4ZjNmOWFiYjNhNDhkYTA3N2MyZTZhMWFhMTZiNWJhY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDE0OjIzOjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDU2MmQyMDgzMGI5NDkuLjU3NTEzMmI5Y2RiZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMTM0Nyw2ICsxMzQ3LDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4gXG4gXHRcdGlmIChhZGRyIFx1MDAzYyAwKSB7XG4rXHRcdFx0LyogSWYgYSBjdXN0b20gUENTIGlzIGluIHVzZSwgbm8gUEhZIGlzIG5lZWRlZCAqL1xuK1x0XHRcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuK1x0XHRcdFx0cmV0dXJuIDA7XG4rXG4gXHRcdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJubyBwaHkgZm91bmRcXG5cIik7XG4gXHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNTlkZmUzNWFmYTU0Zi4uZmQ0ZTgwZWVlZGE3MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xOTY0LDkgKzE5NjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xuICAqL1xuIGJvb2wgcGh5bGlua19leHBlY3RzX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4ge1xuLVx0aWYgKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEIHx8XG4tXHQgICAgKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0lOQkFORCBcdTAwMjZcdTAwMjZcbi1cdCAgICAgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlKSkpXG4rXHRpZiAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdHJldHVybiB0cnVlO1xuIH1cbkBAIC0yMjA1LDkgKzIyMDMsNyBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4ge1xuIFx0dTMyIGZsYWdzID0gMDtcbiBcbi1cdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEIHx8XG4tXHRcdCAgICAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fSU5CQU5EIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgIHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihpbnRlcmZhY2UpIFx1MDAyNlx1MDAyNiAhcGwtXHUwMDNlc2ZwX2J1cykpKVxuK1x0aWYgKFdBUk5fT04ocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdGlmIChwbC1cdTAwM2VwaHlkZXYpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzoxOC4wNzU0OTE4ODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDc5MDg2ODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYHN0bW1hY19tYWluLmNgIGFuZCBgcGh5bGluay5jYCwgc3BlY2lmaWNhbGx5LiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBgc3RtbWFjX2luaXRfcGh5YCwgd2hlcmUgaXQgbm93IHJldHVybnMgMCBpZiBgcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjc2AgaXMgc2V0IHdoZW4gYGFkZHJgIGlzIG5lZ2F0aXZlLiBJbnR1aXRpdmVseSwgdGhpcyBzdWdnZXN0cyB3ZSdyZSBoYW5kbGluZyBzb21lIGtpbmQgb2YgZXJyb3IgY2FzZSBvciBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoUENTKSBvZiB0aGUgUEhZIGxpbmsuIFRoZSBwYXRjaCBhbHNvIHR3ZWFrcyBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgIHdpdGhpbiBgcGh5bGluay5jYCwgcmVtb3ZpbmcgY29uZGl0aW9uYWwgbG9naWMgY29ubmVjdGVkIHRvIGBNTE9fQU5fSU5CQU5EYCBhbmQgYHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzemAuIFRoaXMgc3VnZ2VzdHMgdGhlcmUncyBhIGNoYW5nZSBpbiBob3cgd2UncmUgaGFuZGxpbmcgaW4tYmFuZCBhdXRvbmVnb3RpYXRpb24gYW5kIDgwMi4zeiBjb21wYXRpYmlsaXR5LlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyByZWFjaGFiaWxpdHkuIElzIHRoaXMgY29kZSBldmVuICpleGVyY2lzYWJsZSogaW4gYSB0eXBpY2FsIFFFTVUgc2V0dXA/IGBzdG1tYWNgIGlzIFNUTWljcm9lbGVjdHJvbmljcycgRXRoZXJuZXQgZHJpdmVyIOKAkyBpdCdzIG9mdGVuIGEgc3RhcGxlIGluIEFSTSBTb0NzLiBRRU1VIGRvZXMgaGF2ZSBBUk0gYm9hcmQgbW9kZWxzIHdpdGggYHN0bW1hY2AsIGJ1dCBpdCdzIGxlc3MgY29tbW9uIHRvIHNlZSBpdCBpbiBzdGFuZGFyZCB4ODZfNjQgUUVNVSBjb25maWd1cmF0aW9ucy4gT24gdGhlIG90aGVyIGhhbmQsIGBwaHlsaW5rYCBpcyBhICpnZW5lcmljKiBmcmFtZXdvcmsuIE1hbnkgbmV0d29yayBkcml2ZXJzIHVzZSBpdCwgc28gaXTigJlzIGxpa2VseSB0byBiZSByZWFjaGVkLlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gaW50byBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgLiBIbW0sIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBpcyBleHBvcnRlZCwgbWVhbmluZyBvdGhlciBkcml2ZXJzIGFyZSBjYWxsaW5nIGl0IGRpcmVjdGx5LiBUaGF0J3MgZ29vZC4gQnV0IGBwaHlsaW5rX2F0dGFjaF9waHlgLi4uIHRoZSBkaWZmIGlzIHNheWluZyBpdOKAmXMgc3RhdGljLiBIYW5nIG9u4oCmaXQncyBkZWZpbmVkIGFzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgdGhlbiB0aGVyZSBpcyBhIGNhbGwgdG8gYHBoeWxpbmtfY29ubmVjdF9waHlgIHdoaWNoIHRoZW4gY2FsbHMgYHBoeWxpbmtfYXR0YWNoX3BoeWAuIFRoaXMgbWVhbnMgdGhlIHBhdGNoIG1pZ2h0IGFmZmVjdCBkcml2ZXJzIHRoYXQgdXNlIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YC4gVGltZSB0byBjaGVjayB0aGUgY2FsbGVycyBvZiBgcGh5bGlua19leHBlY3RzX3BoeWAgdG8gZ2V0IHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzoyNi4xNTQ1ODE1MDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3NDI2MDIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2V4cGVjdHNfcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTMxNj1zdGF0aWMgaW50IHN0bW1hY19pbml0X3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTMyNjpcXHRpZiAoIXBoeWxpbmtfZXhwZWN0c19waHkocHJpdi1cXHUwMDNlcGh5bGluaykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzI3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTYtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTU3OiAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTgtICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjQtICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTY1OmJvb2wgcGh5bGlua19leHBlY3RzX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk3MC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTcxOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXhwZWN0c19waHkpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI4NT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjkyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI5MzpcXHRpZiAoIXBoeWxpbmtfZXhwZWN0c19waHkocGwpKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI5NC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcyNj12b2lkIHBoeWxpbmtfZGVzdHJveShzdHJ1Y3QgcGh5bGluayAqKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3Mjc6Ym9vbCBwaHlsaW5rX2V4cGVjdHNfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzoyOC4xMjg4NDczMDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTgwMDIyMDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUEhZTElOSyBSZWFjaGFiaWxpdHkgaW4gUUVNVSoqXG5cbk9rYXksIHNvIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBzaG93cyB1cCBpbiBgc3RtbWFjX2luaXRfcGh5YCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC4gVGhlIGxhdHRlciBpcyB1c2VkIHByZXR0eSBicm9hZGx5IGFjcm9zcyB2YXJpb3VzIGRyaXZlcnMsIHNvIHRoaXMgd2FycmFudHMgc29tZSBkZWVwZXIgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gYWN0dWFsbHkgaGl0IGBwaHlsaW5rYCBpbiBhIFFFTVUgZW52aXJvbm1lbnQuXG5cbkxldCdzIHF1aWNrbHkgc2NhbiB0aGUgY29tbW9uIHN1c3BlY3RzLiBEb2VzIGB2aXJ0aW9fbmV0YCB1c2UgYHBoeWxpbmtgPyBOb3BlLiBXaGF0IGFib3V0IGBlMTAwMGVgPyBTdGlsbCBuby4gT2theSwgYGlnYmA/IE5vcGUgYWdhaW4uIEFscmlnaHQsIGhvdyBhYm91dCBgdXNibmV0YD8gTmFkYS5cblxuSG1tLCBsZXQgbWUgY29uc2lkZXIgRFNBLCBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlLiBBaGEhIFllcywgYGRzYWAgdXRpbGl6ZXMgYHBoeWxpbmtgLiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSBzaW11bGF0ZSBhIGBkc2FgIHNldHVwIGluIFFFTVU/IEkgYmVsaWV2ZSBzby4gSSBtaWdodCBiZSBhYmxlIHRvIHVzZSBgZHNhX2xvb3BgIG9yIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBsaWtlIGBtYWNiYC4gVGhhdCdzIGVuY291cmFnaW5nLlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gc2hpZnQgZ2VhcnMgYW5kIGp1c3QgY2hlY2sgd2hhdCBhbGwgaXMgdXNpbmcgYHBoeWxpbmtgIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk3NiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzozMi4xMDg4NzIwMThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxODYyMTE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2NyZWF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzYzLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzY0OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIG5vZGUsIHBoeV9tb2RlLCBcXHUwMDI2cGh5bGlua19vcHMpO1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzY1LVxcdGlmIChJU19FUlIocGh5bGluaykpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE0MTY6XFx0cHJpdi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cXHRcXHRcXHRcXHQgICAgICAgb2ZfZndub2RlX2hhbmRsZShwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xMDc0PXN0YXRpYyBpbnQgYWc3MXh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMTA5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWctXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBhZy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMTAtXFx0XFx0XFx0XFx0IGFnLVxcdTAwM2VwaHlfaWZfbW9kZSwgXFx1MDAyNmFnNzF4eF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwODY6XFx0YnAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBicC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODctXFx0XFx0XFx0XFx0ICAgICBicC1cXHUwMDNlcGh5X2ludGVyZmFjZSwgXFx1MDAyNm1hY2JfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0yMDE9c3RhdGljIGludCBkcGFhX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXFx0bWFjX2Rldi1cXHUwMDNldXBkYXRlX3NwZWVkID0gZHBhYV9ldGhfY2dyX3NldF9zcGVlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcXHRtYWNfZGV2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hY19kZXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc2LVxcdFxcdFxcdFxcdFxcdCAgZGV2X2Z3bm9kZShtYWNfZGV2LVxcdTAwM2VkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVxcdFxcdFxcdFxcdCBkcG1hY19ub2RlLCBtYWMtXFx1MDAzZWlmX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19wbF9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkyLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBwaHlsaW5rXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTk4OmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk5LVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz04NDc9c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzA6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX21hY19waHlsaW5rX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMxLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMyOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cXHRlbmV0Y19waHlsaW5rX2Rlc3Ryb3kocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTQyOmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMTQ6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzOS1cXHRcXHRcXHRcXHQgcGYtXFx1MDAzZWlmX21vZGUsIG9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jPTg1Mz1zdGF0aWMgaW50IGZzX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6OTMzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmVwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShmZXAtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNmZzX2VuZXRfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jPTM0MTk9c3RhdGljIGludCB1Y2NfZ2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM6MzU3NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnVnZXRoLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzUtXFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2UsIFxcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM9NTQ4MD1zdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NTk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM6NTU5OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU2MDAtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTY4NDA9c3RhdGljIGludCBtdnBwMl9wb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjcxNDg6XFx0XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0OS1cXHRcXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdnBwMl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcXHRcXHRwaHlfbGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlfY29uZmlnLCBmd25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE4LVxcdFxcdFxcdFxcdFxcdCAgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk3MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjgzNTpcXHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM2LVxcdFxcdGZyZWVfbmV0ZGV2KG5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oPTExMT1pbnQgZmJuaWNfcGh5bGlua19nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oOjExMzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTQtdm9pZCBmYm5pY19waHlsaW5rX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZmJuaWNfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE4NzogKiBmYm5pY19waHlsaW5rX2NyZWF0ZSAtIFBoeWxpbmsgZGV2aWNlIGNyZWF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg4LSAqIEBuZXRkZXY6IE5ldHdvcmsgRGV2aWNlIHN0cnVjdCB0byBhdHRhY2ggcGh5bGluayBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5Ni0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTk3OmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmJuLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzMtXFx0XFx0XFx0XFx0IGZibmljX3BoeWxpbmtfc2VsZWN0X2ludGVyZmFjZShmYm4tXFx1MDAzZWF1aSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW43NDN4X3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTUwOnN0YXRpYyBpbnQgbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTk0LVxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2NjQ9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzI0OlxcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjUtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTc5MT1zdGF0aWMgaW50IGxhbjk2NnhfcHJvYmVfcG9ydChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgdTMyIHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM6ODU2OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVxcdFxcdFxcdFxcdCBwb3J0bnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnNweDVfcG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM5MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShjb25maWctXFx1MDAzZW5vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTc3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBvY2Vsb3RfcGh5bGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE3ODA6c3RhdGljIGludCBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpwb3J0bnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4MjE6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIyLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xODQzPWludCBvY2Vsb3RfcHJvYmVfcG9ydChzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LCBzdHJ1Y3QgcmVnbWFwICp0YXJnZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4ODA6XFx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4ODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTM5MT1zdGF0aWMgaW50IHN0bW1hY19waHlsaW5rX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE0ODM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ4NC1cXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgUEhZX0lOVEVSRkFDRV9NT0RFX1hBVUksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjQtXFx0XFx0XFx0XFx0IFxcdTAwMjZ0bjQwX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydC1cXHUwMDNlc2xhdmUucG9ydF9ucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM9MTMwPXN0YXRpYyBpbnQgbmdiZV9waHlsaW5rX2luaXQoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jOjE1MDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXFx1MDAyNm5nYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE1MS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz00ODA9aW50IHR4Z2JlX3BoeWxpbmtfaW5pdF9hbWwoc3RydWN0IHR4Z2JlICp0eGdiZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NTExOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wc19hbWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEyLVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzoyOTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnR4Z2JlX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjk0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTI3OTU9c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTE4OlxcdGxwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmxwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTktXFx0XFx0XFx0XFx0ICAgICBscC1cXHUwMDNlcGh5X21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXFx0XFx0cmV0ID0gUFRSX0VSUihscC1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTIzOlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInBoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTI0LVxcdFxcdGdvdG8gY2xlYW51cF9tZGlvO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz01MTU9c3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX21hY19hbmRfcGNzKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMwLVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcXHRcXHQvKiBUaGUgUENTLCBpZiBwcmVzZW50LCBtdXN0IGJlIHNldHVwIGJlZm9yZSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXFx0XFx0ICogaGFzIGJlZW4gY2FsbGVkLiBJZiB0aGUgb3BzIGlzIG5vdCBpbml0aWFsaXNlZCwgcHJpbnQgYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOD1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDY5LSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA3MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzEtICogQHBjczogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2Nz1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5MS0gKiBwaHlsaW5rX3NldF9maXhlZF9saW5rKCkgLSBzZXQgdGhlIGZpeGVkIGxpbmtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkzLSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgyOT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzI6ICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzMtICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ2LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0NzpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ4LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTMzLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MzQ6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNy0gKiBwaHlsaW5rX2Rlc3Ryb3koKSAtIGNsZWFudXAgYW5kIGRlc3Ryb3kgdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5Mzg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk1Ny0gKiBwaHlsaW5rX2V4cGVjdHNfcGh5KCkgLSBEZXRlcm1pbmUgaWYgcGh5bGluayBleHBlY3RzIGEgcGh5IHRvIGJlIGF0dGFjaGVkXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTU4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk1OS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjAxPXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIxOS0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjIwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyMS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTYtICogcGh5bGlua19vZl9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgRFQgbW9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjU4LSAqIEBkbjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX29mX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3NS0gKiBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgZndub2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI3NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzctICogQGZ3bm9kZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBmd25vZGVfaGFuZGxlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzNS0gKiAgIGluc3RhbmNlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMzNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMzctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM2Nj1zdGF0aWMgdm9pZCBwaHlsaW5rX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgdXAsIGNvbnN0IGNoYXIgKndoYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNzUtICogcGh5bGlua19tYWNfY2hhbmdlKCkgLSBub3RpZnkgcGh5bGluayBvZiBhIGNoYW5nZSBpbiBNQUMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzNzY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzc3LSAqIEB1cDogaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmsgaXMgY3VycmVudGx5IHVwLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDA4PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDE4LSAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQxOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQ4MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0YXJ0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4NC0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDg1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4Ni0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTE1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RvcCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MTgtICogcGh5bGlua19yeF9jbGtfc3RvcF9ibG9jaygpIC0gYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrIGluIExQSVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUxOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU0ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU0Ny0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2soKSAtIHVuYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTQ4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU0OS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTg2PXN0YXRpYyBib29sIHBoeWxpbmtfcGh5X3BtX3NwZWVkX2N0cmwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTkzLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU5NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTUtICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NDU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdXNwZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY0OC0gKiBwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKCkgLSBwcmVwYXJlIHRvIHJlc3VtZSBhIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjQ5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjczLSAqIHBoeWxpbmtfcmVzdW1lKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSByZXN1bWUgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjc1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3MTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE2LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MTc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE4LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyB0byBob2xkIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NTMtICogcGh5bGlua19ldGh0b29sX3NldF93b2woKSAtIHNldCB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzU0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc1NS0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjg4Mj1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9rc2V0dGluZ3MoY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI4OTctICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQoKSAtIGdldCB0aGUgY3VycmVudCBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyODk4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjg5OS0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHRvIGhvbGQgbGluayBzZXR0aW5nc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTUwPXN0YXRpYyBib29sIHBoeWxpbmtfdmFsaWRhdGVfcGNzX2luYmFuZF9hdXRvbmVnKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3MS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3My0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGZvciB0aGUgZGVzaXJlZCBtb2Rlc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTM4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0MS0gKiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCgpIC0gcmVzdGFydCBuZWdvdGlhdGlvblxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE2Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNjYtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE2NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNjgtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODItICogcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKCkgLSBzZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODQtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjY1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNjktICogICBjb3VudGVyXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjcwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5MS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSgpIC0gcmVhZCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjkyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5My0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzE0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMxNy0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSgpIC0gc2V0IHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzE5LSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0ODg9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDYtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUwNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDgtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBpZnJlcSBmb3Igc29ja2V0IGlvY3Rsc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTgxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU4NS0gKiAgIGxpbmsgcGFydG5lcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1ODY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTg3LSAqIEBzeW5jOiBwZXJmb3JtIGFjdGlvbiBzeW5jaHJvbm91c2x5XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM2MDY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zcGVlZF9kb3duKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxMC0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjExOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxMi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzYzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM2Ny0gKlxcdFxcdFxcdFxcdCB3aGljaCBsb3NlcyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM2ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNjktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM4ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4OC0gKlxcdFxcdFxcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzg5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMS1cXHRcXHRcXHRcXHQgcGh5X2lmX21vZGUsIFxcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MzgtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQwLVxcdFxcdFxcdFxcdCBkZXYtXFx1MDAzZWludGVyZmFjZSwgXFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMy1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKixcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTYxNi1cXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxcbm5ldC9kc2EvcG9ydC5jLTE2MTgte1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cXG5uZXQvZHNhL3BvcnQuYzoxNjQ3OlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmRwLVxcdTAwM2VwbF9jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUoZHAtXFx1MDAzZWRuKSwgbW9kZSxcXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVxcdFxcdFxcdCAgICBtYWNfb3BzKTtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2NjU9c3RhdGljIGludCBkc2Ffc2hhcmVkX3BvcnRfcGh5bGlua19yZWdpc3RlcihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTY3My1cXG5uZXQvZHNhL3BvcnQuYzoxNjc0OlxcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcXG5uZXQvZHNhL3BvcnQuYy0xNjc1LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvZHNhL3BvcnQuaD0xMDA9aW50IGRzYV9wb3J0X21ycF9kZWxfcmluZ19yb2xlKGNvbnN0IHN0cnVjdCBkc2FfcG9ydCAqZHAsXFxubmV0L2RzYS9wb3J0LmgtMTAxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9yaW5nX3JvbGVfbXJwICptcnApO1xcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XFxubmV0L2RzYS9wb3J0LmgtMTAzLXZvaWQgZHNhX3BvcnRfcGh5bGlua19kZXN0cm95KHN0cnVjdCBkc2FfcG9ydCAqZHApO1xcbi0tXFxubmV0L2RzYS91c2VyLmM9MjY1NT1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNjc0LVxcbm5ldC9kc2EvdXNlci5jOjI2NzU6XFx0cmV0ID0gZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoZHApO1xcbm5ldC9kc2EvdXNlci5jLTI2NzYtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjM6MzMuNzI3NTEwNDk2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxMDYzMjcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBgcGh5bGlua2AgLSBBIEZ1enppbmcgVGFyZ2V0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGJyYWluIHplcm9lcyBpbiBvbiBgcGh5bGlua2AuIEkgc2VlIGl0J3MgcmVmZXJlbmNlZCBpbiBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCBhbmQgYGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNgLiBBbHJpZ2h0LCBVU0IgbmV0IGRldmljZXMsIGJvdGggb2Ygd2hpY2ggYXJlIHJlYWRpbHkgYXZhaWxhYmxlIGZvciBmdXp6aW5nISBJIGNhbiBlbXVsYXRlIHRoZW0gaW4gUUVNVSB1c2luZyBlaXRoZXIgVVNCIHBhc3N0aHJvdWdoIG9yIGV2ZW4gdGhvc2UgaGFuZHkgZHVtbXkgVVNCIGRldmljZXMsIHdoaWNoIGFyZSBwZXJmZWN0IGZvciB1c2Ugd2l0aCBzeXprYWxsZXIncyBVU0IgZnV6emVyICh0aGUgYGR1bW15X2hjZGAgc3R1ZmYpLiBBbmQgbGV0J3Mgbm90IGZvcmdldCBgbmV0L2RzYS9wb3J0LmNgLCB0aGF0IHVzZXMgaXQgYXMgd2VsbCwgYW5kIGBkc2FfbG9vcGAgZ2l2ZXMgdXMgYSBjb252ZW5pZW50IHRlc3RpbmcgcGF0aCB0aGVyZS4gU28sIGBwaHlsaW5rYCBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIHNvbWUgZnV6emluZyBhdHRlbnRpb24uIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYHBoeWxpbmtfZXhwZWN0c19waHlgIGFuZCBgcGh5bGlua19hdHRhY2hfcGh5YCwgc28gSSBjYW4gc2VlIHdoZXJlIGl0IG1pZ2h0IG5lZWQgc3BlY2lhbCBoYW5kbGluZy5cblxuSG1tLCB3YWl0IGEgc2Vjb25kLi4uIHRoZSBwYXRjaCBhbHNvIGFmZmVjdHMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBOb3csIGBzdG1tYWNgLi4uIGlzICp0aGF0KiByZWFjaGFibGU/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBgc3RtbWFjYCBjYW4gYmUgYnVpbHQgYXMgYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHRvIHNlZSBob3cgYWNjZXNzaWJsZSBpdCBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYxMzEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjM6MzkuNDM4MTQ2NDE1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Njg5NjM0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3BjaV9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExODpzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1OlxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNi1cXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjQxLjAwNzExNjA1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2Nzk3Mzg2NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmU6XG5cbioqQ29ubmVjdGluZyB0aGUgRG90czogc3RtbWFjLCBQQ0ksIGFuZCBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5SaWdodCwgc28gYHN0bW1hY2AgaGFzIGEgUENJIGRyaXZlciEgRm91bmQgaXQsIGBzdG1tYWNfcGNpLmNgLiBUaGlzIGlzIGludHJpZ3VpbmcuIFRoZSBmYWN0IHRoYXQgaXQncyBQQ0ktYmFzZWQgaW1tZWRpYXRlbHkgb3BlbnMgdXAgYSBuZXcgYXZlbnVlIGZvciBmdXp6aW5nLiBJZiBpdCdzIGEgUENJIGRyaXZlciwgdGhhdCBtZWFucyBpdCBjYW4gYmUgcHJvYmVkIGFuZCBpbnRlcmFjdGVkIHdpdGggdmlhIHRoZSBQQ0kgYnVzLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCB0aGUgc3l6a2FsbGVyIFBDSSBmdXp6ZXIgZW11bGF0ZXMuIFRoaXMgaXMgZXhjZWxsZW50IG5ld3MsIGJlY2F1c2UgaWYgd2UgY2FuIHRyaWdnZXIgdGhlIGBzdG1tYWNgIHZpYSBhIFBDSSBpbnRlcmZhY2UsIHdlIGNhbiBsZXZlcmFnZSB0aGUgUENJIGZ1enplcidzIGNhcGFiaWxpdGllcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIFBDSSBJRHMgYHN0bW1hY19wY2kuY2AgYmluZHMgdG8uIFRoYXQgaW5mb3JtYXRpb24gd2lsbCBiZSB0aGUga2V5IHRvIGRlc2lnbmluZyBlZmZlY3RpdmUgUENJIGZ1enppbmcgY2FtcGFpZ25zIGFnYWluc3QgdGhpcyBkcml2ZXIuIExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRob3NlIElEcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxMDQsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzo0NS42ODY4NTY5MTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ5NzE3ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRV9JRF9TVE1JQ1JPX01BQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaC04NjEtI2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTUlDUk9fU1BJX0hTXFx0MHhDQzA4XFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmg6ODYyOiNkZWZpbmUgUENJX0RFVklDRV9JRF9TVE1JQ1JPX01BQ1xcdDB4Q0MwOVxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTg2My0jZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNSUNST19TRElPX0VNTUMgMHhDQzBBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjQ3LjI0MTgzODg4OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA5MTIxMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFBDSSBEcml2ZXIgUGF0Y2gqKlxuXG5SaWdodCwgc2NyYXRjaCB0aGF0LiBJIGRvbid0IG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBwcmVjaXNlIFBDSSBJRCBkZXRhaWxzIHJpZ2h0IG5vdy4gVGhlIGZhY3QgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyIGlzIGVub3VnaCB0byBuYXJyb3cgdGhlIHNjb3BlLiBUaGUgcGF0Y2ggcmVmZXJlbmNlcyBgc3RtbWFjX2luaXRfcGh5YCB3aXRoaW4gYHN0bW1hY19tYWluLmNgLCBzbyBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkZXRlcm1pbmUgKndoZW4qIGBzdG1tYWNfaW5pdF9waHlgIGlzIGJlaW5nIGludm9rZWQuIElzIHRoaXMgZnVuY3Rpb24gcGFydCBvZiB0aGUgaW5pdGlhbCBwcm9iZSBzZXF1ZW5jZSwgb3IgaXMgaXQgdHJpZ2dlcmVkIGR5bmFtaWNhbGx5IHdoZW4gdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGJyb3VnaHQgb25saW5lLCBvciBib3RoPyBUaGlzIHVuZGVyc3RhbmRpbmcgd2lsbCBmcmFtZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGltaW5nIG9mIHRoZSBjaGFuZ2UuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIHBhdGggbG9va3MgbGlrZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1MzcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzo1MS43NTA5NjI1OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjA4MDk1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2luaXRfcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTI4Mz1zdGF0aWMgdm9pZCBzdG1tYWNfY2hlY2tfcGNzX21vZGUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzA4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTMwOTogKiBzdG1tYWNfaW5pdF9waHkgLSBQSFkgaW5pdGlhbGl6YXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMTAtICogQGRldjogbmV0IGRldmljZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTMxNS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzMTY6c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTkxPXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMDk6XFx0cmV0ID0gc3RtbWFjX2luaXRfcGh5KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjEwLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjUzLjMxMTc3ODMxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzI0NDA3NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU1RNIE1BQyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBTVE0gTUFDIGRyaXZlci4gSSBzZWUgdGhpcyBjb2RlIGlzIHJlYWNoZWQgd2l0aGluIGBzdG1tYWNfb3BlbmAsIHNwZWNpZmljYWxseSBkdXJpbmcgdGhlIGAubmRvX29wZW5gIGNhbGxiYWNrLiBUaGlzIGNvbmZpcm1zIHRoYXQgdGhlc2UgY2hhbmdlcyBJJ20gbG9va2luZyBhdCBpbiBgc3RtbWFjX2luaXRfcGh5YCBhcmUgZGVmaW5pdGVseSBnZXR0aW5nIGhpdCB3aGVuZXZlciB0aGUgbmV0d29yayBpbnRlcmZhY2UgY29tZXMgdXAsIHNheSwgd2hlbiBJIHJ1biBgaXAgbGluayBzZXQgZXRoMCB1cGAuIFRoYXQncyBnb29kIHRvIGtub3cuXG5cbk5vdywgbXkgZm9jdXMgc2hpZnRzIHRvIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBhbmQgYHBoeWxpbmtfYXR0YWNoX3BoeWAuIEkgc2VlIHRoYXQgYHBoeWxpbmtfZXhwZWN0c19waHlgIGlzIGRlZmluaXRlbHkgY2FsbGVkIGZyb20gd2l0aGluIGBzdG1tYWNfaW5pdF9waHlgLCB3aGljaCBjb25maXJtcyBpdCBpcyBnZXR0aW5nIHNldCB1cCByaWdodC5cblxuYHBoeWxpbmtfYXR0YWNoX3BoeWAgc2VlbXMgdG8gYmUgY2FsbGVkIGluIGEgZmV3IHBsYWNlcywgbmFtZWx5IGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC4gVGhlc2UgYXJlIGFsbCB0eXBpY2FsbHkgdHJpZ2dlcmVkIGJ5IHZhcmlvdXMgZHJpdmVycyB3aGVuIHRoZXkgZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhIFBIWS5cblxuTmV4dCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gRm9yIHRoZSBgc3RtbWFjYCBkcml2ZXIgaXRzZWxmLCBpdCBsb29rcyBsaWtlIEkgbmVlZCBib3RoIGBDT05GSUdfU1RNTUFDX0VUSGAgYW5kIGBDT05GSUdfU1RNTUFDX1BDSWAuIEFuZCBmb3IgYHBoeWxpbmtgLCBJIG5lZWQgYENPTkZJR19QSFlMSU5LYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEknbGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZXMgdG8gdmVyaWZ5IHRoZSBleGFjdCBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjE3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjU5LjAzNjE4ODE4NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4MTI5MzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX0VUSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjAwLjYxNzQ4Nzg4MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzE1NTc5ODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkV4YW1pbmluZyBLY29uZmlnIERlcGVuZGVuY2llcyBmb3IgdGhlIFNUTU1BQyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBkcml2ZXIncyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHJlYWQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbG9naWMgaXMgaG91c2VkLCBzbyB0aGlzIGlzIHdoZXJlIEknbGwgZmluZCBvdXQgd2hhdCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyBtdXN0IGJlIGVuYWJsZWQgb3IgcHJlc2VudCBmb3IgU1RNTUFDIHRvIGJ1aWxkIGNvcnJlY3RseS4gVGltZSB0byBzZWUgd2hhdCBJIGNhbiBsZWFybi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5MDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDowNy4zMzMwNzA0MzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjA3LjMzMzE1MTA3M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzgzMTk0OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVsdmluZyBpbnRvIHRoZSBTVE1NQUMgUENJIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGJhY2sgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUuIEknbSBmb2N1c2luZyBvbiBmaW5kaW5nIHRoZSBkZWZpbml0aW9uIGZvciBgU1RNTUFDX1BDSWAuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIEtjb25maWcgZmlsZSBzaG91bGQgaG91c2UgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MnIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aGVuIHVzZWQgaW4gYSBQQ0kgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgdmFyaWFudCBpcyBjb25maWd1cmVkIOKAkyB3aGV0aGVyIGl0J3MgZW5hYmxlZCBieSBkZWZhdWx0LCBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGZlYXR1cmVzLCBvciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHBhcmFtZXRlcnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gZGV0ZXJtaW5lIGhvdyB0byBpbnRlZ3JhdGUgaXQgaW50byBhIGRlc2lnbi4gRnJvbSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBvZnRlbiB0aGUgUENJIHZlcnNpb24gb2YgYSBkcml2ZXIgaGFzIGRpZmZlcmVudCBjb25zaWRlcmF0aW9ucyBkdWUgdG8gYnVzIHNwZWNpZmljIGludGVycnVwdCwgYWRkcmVzcyBzcGFjZSwgZXRjLiBVbmRlcnN0YW5kaW5nIHRoZSBmaW5lciBwb2ludHMgb2YgYFNUTU1BQ19QQ0lgJ3MgY29uZmlndXJhdGlvbiBpcyBrZXkgZm9yIGNvcnJlY3RseSBidWlsZGluZyBhbmQgY29uZmlndXJpbmcgYW4gZW1iZWRkZWQgc3lzdGVtIG9yIGRyaXZlciBtb2R1bGUgdGhhdCB1c2VzIGEgU1RNTUFDIG92ZXIgYSBQQ0kgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NzgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjEyLjcxNjM1MDI5MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDI1MTpcXHRcXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyNTI6XFx0XFxuIDI1MzpcXHRjb25maWcgRFdNQUNfU1RJXFxuIDI1NDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RpIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjU1OlxcdFxcdGRlZmF1bHQgQVJDSF9TVElcXG4gMjU2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcXG4gMjU3OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDI1ODpcXHRcXHRoZWxwXFxuIDI1OTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gU1RpIFNPQ3MuXFxuIDI2MDpcXHRcXG4gMjYxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDI2MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXFxuIDI2MzpcXHRcXHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyNjQ6XFx0XFxuIDI2NTpcXHRjb25maWcgRFdNQUNfU1RNMzJcXG4gMjY2OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE0zMiBEV01BQyBzdXBwb3J0XFxcIlxcbiAyNjc6XFx0XFx0ZGVmYXVsdCBBUkNIX1NUTTMyXFxuIDI2ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXFxuIDI2OTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNzA6XFx0XFx0aGVscFxcbiAyNzE6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG4gMjc0OlxcdFxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xcbiAyNzU6XFx0XFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjc2OlxcdFxcbiAyNzc6XFx0Y29uZmlnIERXTUFDX1NVTlhJXFxuIDI3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjc5OlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAyODA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI4MTpcXHRcXHRoZWxwXFxuIDI4MjpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBMjAvQTMxIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI4MzpcXHRcXG4gMjg0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjg1OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcXG4gMjg2OlxcdFxcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyODc6XFx0XFxuIDI4ODpcXHRjb25maWcgRFdNQUNfU1VOOElcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuOGkgR01BQyBzdXBwb3J0XFxcIlxcbiAyOTA6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDI5MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMjkyOlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMjkzOlxcdFxcdGhlbHBcXG4gMjk0OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEgzIEE4M1QgQTY0IEVNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjk3OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuIDI5ODpcXHRcXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjk5OlxcdFxcbiAzMDA6XFx0Y29uZmlnIERXTUFDX1NVTjU1SVxcbiAzMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbiAzMDI6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDMwMzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMzA0OlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMzA1OlxcdFxcdGhlbHBcXG4gMzA2OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAzMDc6XFx0XFxuIDMwODpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDMwOTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcXG4gMzEwOlxcdFxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMTE6XFx0XFxuIDMxMjpcXHRjb25maWcgRFdNQUNfVEhFQURcXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJULUhFQUQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzE0OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIFQtSEVBRCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDMxOTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxcbiAzMjA6XFx0XFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMjE6XFx0XFxuIDMyMjpcXHRjb25maWcgRFdNQUNfSU1YOFxcbiAzMjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBJTVg4IERXTUFDIHN1cHBvcnRcXFwiXFxuIDMyNDpcXHRcXHRkZWZhdWx0IEFSQ0hfTVhDXFxuIDMyNTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXFxuIDMyNjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAzMjc6XFx0XFx0aGVscFxcbiAzMjg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBpLk1YOCBTT0NzLlxcbiAzMjk6XFx0XFxuIDMzMDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAzMzE6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxcbiAzMzI6XFx0XFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDMzMzpcXHRcXG4gMzM0OlxcdGNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuIDMzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzM2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbiAzMzc6XFx0XFx0aGVscFxcbiAzMzg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBJbnRlbCBTb0NzXFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDM0MTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIEludGVsIEtlZW0gQmF5XFxuIDM0MjpcXHRcXHQgIFNvQy5cXG4gMzQzOlxcdFxcbiAzNDQ6XFx0Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbiAzNDU6XFx0XFx0dHJpc3RhdGUgXFxcIkxvb25nc29uMSBHTUFDIHN1cHBvcnRcXFwiXFxuIDM0NjpcXHRcXHRkZWZhdWx0IE1BQ0hfTE9PTkdTT04zMlxcbiAzNDc6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcXG4gMzQ4OlxcdFxcdGhlbHBcXG4gMzQ5OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDoxMi43MTY0NzY3NTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2MzMxNjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgU1RNTUFDX1BDSSBpbiBLY29uZmlnKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgYFNUTU1BQ19QQ0lgIGlzIGRlZmluZWQsIGxpa2VseSByZWxhdGVkIHRvIHRoZSBQQ0kgaW50ZXJmYWNlIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBNeSBiZXN0IHN0YXJ0aW5nIHBvaW50IGlzIGdvaW5nIHRvIGJlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUuIEknbSBhc3N1bWluZyBpdCdzIGEgS2NvbmZpZyBvcHRpb24gZ2l2ZW4gdGhlIGxpa2VseSBuYW1lIHN0cnVjdHVyZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjczLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDoxNS45Nzk3OTYyODNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzM3NjAzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1RNTUFDX1BDSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTk4PVRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYGBDT05GSUdfU1RNTUFDX0VUSGBgOlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtOTktIC0gYGBDT05GSUdfU1RNTUFDX1BMQVRGT1JNYGA6IGlzIHRvIGVuYWJsZSB0aGUgcGxhdGZvcm0gZHJpdmVyLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTAwOiAtIGBgQ09ORklHX1NUTU1BQ19QQ0lgYDogaXMgdG8gZW5hYmxlIHRoZSBwY2kgZHJpdmVyLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTQ5PW9iai0kKENPTkZJR19TVE1NQUNfTElCUENJKVxcdCs9IHN0bW1hY19saWJwY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVxcdCs9IHN0bW1hYy1wY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcXHQrPSBkd21hYy1pbnRlbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjE3LjQ1MzU2NDgyM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTUxMDIxNzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSdtIHRoaW5raW5nLCBsaW5lIDQwNyBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgZ2l2ZW4gdGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZXNlIGZpbGVzLiBUaGF0IHNlY3Rpb24gaXMgbGlrZWx5IGdvaW5nIHRvIGhvbGQgc29tZSBpbXBvcnRhbnQgY2x1ZXMgYWJvdXQgd2hhdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLCBob3cgdGhleSdyZSBlbmFibGVkLCBhbmQgcG90ZW50aWFsbHkgYW55IGRlcGVuZGVuY2llcyBvciBidWlsZC10aW1lIGNvbnNpZGVyYXRpb25zIGZvciB0aGlzIHBhcnRpY3VsYXIgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgdmFyaW91cyBQSFkgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvcHRpb25zLCBvciBtYXliZSBldmVuIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1RNTUFDIGl0c2VsZi4gTGV0J3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3MgYW5kIHNlZSB3aGF0J3Mgb24gb2ZmZXIgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjYwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6MjAuNjA0NTg4NTA4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzkwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbiAzOTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDQyMDpcXHRlbmRpZiAjIFNUTU1BQ19FVEhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6MjAuNjA0NjcwODE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTU5MTA5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgU1RNTUFDYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGNvbmZpZ3VyYXRpb25zLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIEhtbSwgaXQgc2VlbXMgYFBIWUxJTktgIGlzIGRpcmVjdGx5IHRpZWQgdG8gYFNUTU1BQ19FVEhgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBvZnRlbiBzZWUgdGhhdCBjb25maWd1cmF0aW9uLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gYHBoeWxpbmtgIGlzbid0IGV4Y2x1c2l2ZSB0byB0aGUgU1RNTUFDIHdvcmxkLiBJIHNlZSB0aGF0IGBwaHlsaW5rYCBpcyBhbHNvIHJlZmVyZW5jZWQgYnkgdGhlIEFTSVggVVNCIExBTiBjaGlwcywgc3BlY2lmaWNhbGx5IGBVU0JfTEFONzhYWGAgYW5kIGBVU0JfTkVUX0FYODgxN1hgLiBUaGF0IG1lYW5zIEkgc2hvdWxkIGFsc28gY2hlY2sgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCB0byBzZWUgdGhlIGNvbmRpdGlvbnMgb2YgdGhvc2UgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDA0LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6MjQuNDAwNTg0MDYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY1MjMwMDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfTEFONzhYWFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz05OT1jb25maWcgVVNCX1JUTDgxNTJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExMi1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTM6Y29uZmlnIFVTQl9MQU43OFhYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE0LVxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgTEFONzhYWCBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjI1Ljg2NTgxOTAzNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjIwODMxODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgVVNCIG5ldHdvcmsgZHJpdmVycyBhcmUgY29uZmlndXJlZCBpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZS4gSSdtIGdvaW5nIHRvIGZvY3VzIGFyb3VuZCBsaW5lIDExMy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIFVTQiBuZXR3b3JrIGRyaXZlciBzdWJzeXN0ZW0uIEl0J3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIGNvbmZpZ3VyYWJsZSBlbGVtZW50cyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2sgYW5kIFVTQiBjb3JlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHJlbGV2YW50IGBDT05GSUdfYCBvcHRpb25zLCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZmVhdHVyZXMsIGFuZCBwZXJoYXBzIHNvbWUgaGVscGZ1bCBjb21tZW50cyB0aGF0IGNsYXJpZnkgdGhlIHB1cnBvc2Ugb2YgZWFjaCBzZXR0aW5nLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGlmIG5lZWRlZC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjM0MDIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDoyOS40ODY2NTI4ODZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTEwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDExMTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByODE1Mi5cXG4gMTEyOlxcdFxcbiAxMTM6XFx0Y29uZmlnIFVTQl9MQU43OFhYXFxuIDExNDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcbiAxMTU6XFx0XFx0c2VsZWN0IE1JSVxcbiAxMTY6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gMTE3OlxcdFxcdHNlbGVjdCBNSUNST0NISVBfUEhZXFxuIDExODpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gMTE5OlxcdFxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG4gMTIwOlxcdFxcdGhlbHBcXG4gMTIxOlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBNaWNyb2NoaXAgTEFONzhYWCBiYXNlZCBVU0IgMlxcbiAxMjI6XFx0XFx0ICBcXHUwMDI2IFVTQiAzIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJzLlxcbiAxMjM6XFx0XFx0ICBMQU43ODAwIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlclxcbiAxMjQ6XFx0XFx0ICBMQU43ODUwIDogVVNCIDIgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlclxcbiAxMjU6XFx0XFx0ICBMQU43ODAxIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlciAoTUFDIG9ubHkpXFxuIDEyNjpcXHRcXG4gMTI3OlxcdFxcdCAgUHJvcGVyIFBIWSBkcml2ZXIgaXMgcmVxdWlyZWQgZm9yIExBTjc4MDEuXFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjI5LjQ4NjcyNTMyNloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTUyODA4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipRdWljayBQSFkgTGF5ZXIgQ29uc2lkZXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIFVTQiBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9ucy4gVGhlIGBVU0JfTEFONzhYWGAgZHJpdmVyIGNsZWFybHkgaG9va3MgaW50byBgUEhZTElOS2AuIFRoYXQncyBzdGFuZGFyZCBhbmQgbWFrZXMgc2Vuc2U7IHRoZSBMQU43OFhYIGxpa2VseSByZWxpZXMgb24gYSBQSFkgYWJzdHJhY3Rpb24uIEJ1dCB3aGF0IGFib3V0IHRoZSBgVVNCX05FVF9BWDg4MTdYYCBkcml2ZXI/IEkgbmVlZCB0byBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24uIERvZXMgaXQgYWxzbyB1c2UgYFBIWUxJTktgLCBvciBkb2VzIGl0IG1hbmFnZSB0aGUgUEhZIGxheWVyIGRpcmVjdGx5PyBVbmRlcnN0YW5kaW5nIHRoaXMgZGlzdGluY3Rpb24gaXMgY3J1Y2lhbCBmb3IgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkgbXVzdCBsb29rIGludG8gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwMTAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjMyLjYzOTUzNTgxMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2OTY4NTYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX05FVF9BWDg4MTdYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY1LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6MzQuMTA5MjI3MDQxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTc2OTUxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgVVNCIG5ldHdvcmtpbmcuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBzb21lIG9mIHRoZXNlIG9wdGlvbnMsIHNvIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBTcGVjaWZpY2FsbHksIEkgcmVjYWxsIHRoZXJlIGJlaW5nIGEgY3J1Y2lhbCBzZWN0aW9uIGFyb3VuZCBsaW5lIDE2NiB0aGF0IGRlYWxzIHdpdGggdGhlIGNvcmUgVVNCIG5ldHdvcmsgZGV2aWNlIG9wdGlvbnMsIGFuZCB0aGF0J3Mgd2hlcmUgSSdsbCBiZWdpbi4gSSdtIGFpbWluZyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IGRyaXZlcnMgYW5kIHRoZSBjb25maWd1cmFiaWxpdHkgZXhwb3NlZCB0byB0aGUgdXNlci4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGN1cnJlbnQgdGFzay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQzMTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDozNy45MDY5MjQ4MzZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTYwOlxcdFxcbiAxNjE6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgXFx1MDAzY2h0dHA6Ly93d3cubGludXgtdXNiLm9yZy91c2JuZXQvXFx1MDAzZS5cXG4gMTYyOlxcdFxcbiAxNjM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTY0OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVzYm5ldC5cXG4gMTY1OlxcdFxcbiAxNjY6XFx0Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFxcbiAxNjc6XFx0XFx0dHJpc3RhdGUgXFxcIkFTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcbiAxNjg6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuIDE2OTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gMTcwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuIDE3MTpcXHRcXHRzZWxlY3QgQVg4ODc5NkJfUEhZXFxuIDE3MjpcXHRcXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuIDE3MzpcXHRcXHRkZWZhdWx0IHlcXG4gMTc0OlxcdFxcdGhlbHBcXG4gMTc1OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBBU0lYIEFYODh4eHggYmFzZWQgVVNCIDIuMFxcbiAxNzY6XFx0XFx0ICAxMC8xMDAgRXRoZXJuZXQgYWRhcHRlcnMuXFxuIDE3NzpcXHRcXG4gMTc4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc2hvdWxkIHdvcmsgd2l0aCBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIGRldmljZXM6XFxuIDE3OTpcXHRcXHQgICAgKiBBdGVuIFVDMjEwVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDozNy45MDcwMDcwNjZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIzNzIzODIzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9uYWwgQ2hhbmdlcyBpbiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYFVTQl9ORVRfQVg4ODE3WGAgYWxzbyBwdWxscyBpbiBgUEhZTElOS2AuIFRoYXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLiBOb3csIHdoYXQncyBnb2luZyBvbiB3aXRoIGBwaHlsaW5rX2V4cGVjdHNfcGh5YD8gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBnZXQgdG91Y2hlZCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEFoLCB5ZXMsIHRoZSBwYXRjaCByZW1vdmVzIHRoZSBjaGVjayBgKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0lOQkFORCBcdTAwMjZcdTAwMjYgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlKSlgIGZyb20gYm90aCBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgLiBUaGlzIG1lYW5zIHRoZSBmdW5jdGlvbiB3aWxsIG5vdyByZXR1cm4gdHJ1ZSBmb3IgYE1MT19BTl9JTkJBTkRgIHdpdGggYW4gYDgwMjN6YCBpbnRlcmZhY2UgbW9kZSwgd2hlcmVhcyBiZWZvcmUsIGl0IHdvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UuIERlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGVyZS5cblxuTGV0J3MgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiBgc3RtbWFjX2luaXRfcGh5YC4gU2Nhbm5pbmcgdGhlIGNvZGUgYWdhaW4uLi5cblxuYGBgY1xuXHRcdGlmIChhZGRyIFx1MDAzYyAwKSB7XG5cdFx0XHQvKiBJZiBhIGN1c3RvbSBQQ1MgaXMgaW4gdXNlLCBubyBQSFkgaXMgbmVlZGVkICovXG5cdFx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcblx0XHRcdFx0cmV0dXJuIDA7XG5cblx0XHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwibm8gcGh5IGZvdW5kXFxuXCIpO1xuXHRcdFx0cmV0dXJuIC1FTk9ERVY7XG5cdFx0fVxuYGBgXG5cbk9rYXksIHRoZSBzYW1lIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIGFsc28gcHJlc2VudCBpbiBgc3RtbWFjX2luaXRfcGh5YC5cblxuUmlnaHQsIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBnaXZpbmcgYSB0aG9yb3VnaCBmdXp6aW5nLiBXZSBzaG91bGQgZW5hYmxlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIEhhbmcgb24sIHRob3VnaC4gYFNUTU1BQ19QQ0lgIGRlcGVuZHMgb24gYENPTU1PTl9DTEtgLiBJJ2xsIGhhdmUgdG8gZG91YmxlLWNoZWNrIHRoYXQgYENPTU1PTl9DTEtgIGlzIGF2YWlsYWJsZSBpbiB0aGUgeDg2XzY0IGVudmlyb25tZW50LiBXZSBjYW4ndCB3YXN0ZSB0aW1lIG9uIGEgY29uZmlndXJhdGlvbiB0aGF0IHdvbid0IGJ1aWxkLiBMZXQgbWUgY2hlY2suLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4MjMsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDo0NC4xNDQyNDc4MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NjA2MzIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ09NTU9OX0NMS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwOTYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnPTIxMD1jb25maWcgSEFWRV9BVDkxX1VTQl9DTEtcXG4tLVxcbmFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnLTIxMi1cXG5hcmNoL2FybS9tYWNoLWF0OTEvS2NvbmZpZzoyMTM6Y29uZmlnIENPTU1PTl9DTEtfQVQ5MVxcbmFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnLTIxNC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnPTEyPWNvbmZpZyBIQVZFX0xFR0FDWV9DTEsgIyBUT0RPOiBSZW1vdmUgb25jZSBhbGwgbGVnYWN5IHVzZXJzIGFyZSBtaWdyYXRlZFxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIxOm1lbnVjb25maWcgQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL0tjb25maWctMjItXFx0Ym9vbCBcXFwiQ29tbW9uIENsb2NrIEZyYW1ld29ya1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWc9MzQ9aWYgQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL0tjb25maWctMzUtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozNjpjb25maWcgQ09NTU9OX0NMS19XTTgzMVhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFdNODMxeC8yeCBQTUlDc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWc9NTM9Y29uZmlnIExNSzA0ODMyXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NjE6Y29uZmlnIENPTU1PTl9DTEtfQVBQTEVfTkNPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBcHBsZSBTb0MgTkNPc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNjgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo2OTpjb25maWcgQ09NTU9OX0NMS19NQVg3NzY4NlxcbmRyaXZlcnMvY2xrL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWF4aW0gNzc2MjAvNzc2ODYvNzc4MDIgTUZEXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy03NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjc2OmNvbmZpZyBDT01NT05fQ0xLX01BWDk0ODVcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTc3LVxcdHRyaXN0YXRlIFxcXCJNYXhpbSA5NDg1IFByb2dyYW1tYWJsZSBDbG9jayBHZW5lcmF0b3JcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgxLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6ODI6Y29uZmlnIENPTU1PTl9DTEtfUks4MDhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFJLODA1L1JLODA4L1JLODA5L1JLODE3L1JLODE4XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy04OS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjkwOmNvbmZpZyBDT01NT05fQ0xLX1JQMVxcbmRyaXZlcnMvY2xrL0tjb25maWctOTEtXFx0dHJpc3RhdGUgXFxcIlJhc3BiZXJyeSBQaSBSUDEtYmFzZWQgY2xvY2sgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctOTgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo5OTpjb25maWcgQ09NTU9OX0NMS19ISTY1NVhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEwMC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBIaTY1NXhcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMDgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxMDk6Y29uZmlnIENPTU1PTl9DTEtfU0NNSVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTEwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgY29udHJvbGxlZCB2aWEgU0NNSSBpbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTExOC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjExOTpjb25maWcgQ09NTU9OX0NMS19TQ1BJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMjAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBjb250cm9sbGVkIHZpYSBTQ1BJIGludGVyZmFjZVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTI4LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTI5OmNvbmZpZyBDT01NT05fQ0xLX1NJNTM0MVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTMwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzQxIGFuZCA1MzQwIEEvQi9DL0QgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTM5LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTQwOmNvbmZpZyBDT01NT05fQ0xLX1NJNTM1MVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTQxLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzUxQS9CL0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0Ny1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE0ODpjb25maWcgQ09NTU9OX0NMS19TSTUxNFxcbmRyaXZlcnMvY2xrL0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MTQgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTU2LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTU3OmNvbmZpZyBDT01NT05fQ0xLX1NJNTQ0XFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNTgtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDU0NCBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNjU6Y29uZmlnIENPTU1PTl9DTEtfU0k1NzBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTcwIGFuZCBjb21wYXRpYmxlIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3My1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE3NDpjb25maWcgQ09NTU9OX0NMS19CTTE4ODBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3NS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIEJpdG1haW4gQk0xODgwIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTgwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTgxOmNvbmZpZyBDT01NT05fQ0xLX0NEQ0U3MDZcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBUSSBDRENFNzA2IGNsb2NrIHN5bnRoZXNpemVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODctXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxODg6Y29uZmlnIENPTU1PTl9DTEtfVFBTNjg0NzBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4OS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgRHJpdmVyIGZvciBUSSBUUFM2ODQ3MCBQTUlDXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxOTY6Y29uZmlnIENPTU1PTl9DTEtfQ0RDRTkyNVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTk3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFRJIENEQ0U5MTMvOTI1LzkzNy85NDkgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjEyLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MjEzOmNvbmZpZyBDT01NT05fQ0xLX0NTMjAwMF9DUFxcbmRyaXZlcnMvY2xrL0tjb25maWctMjE0LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIENTMjAwMCBGcmFjdGlvbmFsLU4gQ2xvY2sgU3ludGhlc2l6ZXIgXFx1MDAyNiBDbG9jayBNdWx0aXBsaWVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTktXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjA6Y29uZmlnIENPTU1PTl9DTEtfRU43NTIzXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjEtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBaXJvaGEvRWNvTmV0IFNvQyBzeXN0ZW0gY2xvY2tzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjk6Y29uZmlnIENPTU1PTl9DTEtfRVA5M1hYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgQ2lycnVzIExvZ2ljIGVwOTN4eCBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzNi1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIzNzpjb25maWcgQ09NTU9OX0NMS19FWUVRXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciB0aGUgTW9iaWxleWUgRXllUSBwbGF0Zm9ybVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjQ3LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MjQ4OmNvbmZpZyBDT01NT05fQ0xLX0ZTTF9GTEVYU1BJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNDktXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgRmxleFNQSSBvbiBMYXllcnNjYXBlIFNvQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI1NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI1Njpjb25maWcgQ09NTU9OX0NMS19GU0xfU0FJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNTctXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBCQ0xLIG9mIEZyZWVzY2FsZSBTQUkgY29yZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2Ny1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI2ODpjb25maWcgQ09NTU9OX0NMS19HRU1JTklcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2OS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNzYtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyNzc6Y29uZmlnIENPTU1PTl9DTEtfTEFOOTY2WFxcbmRyaXZlcnMvY2xrL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIENsb2NrIENvbnRyb2xsZXIgZHJpdmVyIGZvciBMQU45NjZYIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjg2LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6Mjg3OmNvbmZpZyBDT01NT05fQ0xLX1MyTVBTMTFcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI4OC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBTMk1QUzFYL1M1TTg3NjcgTUZEXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMDQ9Y29uZmlnIENMS19UV0w2MDQwXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMxMS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjMxMjpjb25maWcgQ09NTU9OX0NMS19BWElfQ0xLR0VOXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMTMtXFx0dHJpc3RhdGUgXFxcIkFYSSBjbGtnZW4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMjg9Y29uZmlnIENMS19MUzEwMjhBX1BMTERJR1xcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMzctXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozMzg6Y29uZmlnIENPTU1PTl9DTEtfWEdFTkVcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMzOS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIEFQTSBYR2VuZSBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM0NTpjb25maWcgQ09NTU9OX0NMS19MT0NITkFHQVJcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiQ2lycnVzIExvZ2ljIExvY2huYWdhciBjbG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM1MS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM1Mjpjb25maWcgQ09NTU9OX0NMS19OUENNOFhYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNTMtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgdGhlIE5QQ004WFggU29DIEZhbWlseVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzYwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MzYxOmNvbmZpZyBDT01NT05fQ0xLX0xPT05HU09OMlxcbmRyaXZlcnMvY2xrL0tjb25maWctMzYyLVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTG9vbmdzb24tMiBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM2OS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM3MDpjb25maWcgQ09NTU9OX0NMS19OWFBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3MS1cXHRkZWZfYm9vbCBDT01NT05fQ0xLIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xQQzE4WFggfHwgQVJDSF9MUEMzMlhYKVxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozNzc6Y29uZmlnIENPTU1PTl9DTEtfUEFMTUFTXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzgtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgVEkgUGFsbWFzIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4My1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM4NDpjb25maWcgQ09NTU9OX0NMS19QV01cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4NS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBQV01zIHVzZWQgYXMgY2xvY2sgb3V0cHV0c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzkwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MzkxOmNvbmZpZyBDT01NT05fQ0xLX1BYQVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzkyLVxcdGRlZl9ib29sIENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgQVJDSF9QWEFcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzk1LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6Mzk2OmNvbmZpZyBDT01NT05fQ0xLX1JTOV9QQ0lFXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTctXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgUmVuZXNhcyA5LXNlcmllcyBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQwNC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQwNTpjb25maWcgQ09NTU9OX0NMS19TSTUyMVhYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MDYtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU2t5V29ya3MgU2k1MjF4eCBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxMy1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQxNDpjb25maWcgQ09NTU9OX0NMS19WQzNcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxNS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhQ2xvY2sgMyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjItXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0MjM6Y29uZmlnIENPTU1PTl9DTEtfVkM1XFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjQtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgSURUIFZlcnNhQ2xvY2sgNSw2IGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQzMjpjb25maWcgQ09NTU9OX0NMS19WQzdcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMy1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhY2xvY2sgNyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDAtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NDE6Y29uZmlnIENPTU1PTl9DTEtfU1RNMzJGXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDItXFx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoTUFDSF9TVE0zMkY0MjkgfHwgTUFDSF9TVE0zMkY0NjkgfHwgTUFDSF9TVE0zMkY3NDYpXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ0NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ0Njpjb25maWcgQ09NTU9OX0NMS19TVE0zMkg3XFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDctXFx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiBNQUNIX1NUTTMySDc0M1xcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTAtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NTE6Y29uZmlnIENPTU1PTl9DTEtfTU1QMlxcbmRyaXZlcnMvY2xrL0tjb25maWctNDUyLVxcdGRlZl9ib29sIENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgKE1BQ0hfTU1QMl9EVCB8fCBNQUNIX01NUDNfRFQpXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ1Njpjb25maWcgQ09NTU9OX0NMS19NTVAyX0FVRElPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTctICAgICAgICB0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNTVAyIEF1ZGlvIHN1YnN5c3RlbVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNDYxLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NDYyOmNvbmZpZyBDT01NT05fQ0xLX0JENzE4WFhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2My1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciAzMksgY2xrIGdhdGVzIG9uIFJPSE0gUE1JQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2OC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ2OTpjb25maWcgQ09NTU9OX0NMS19GSVhFRF9NTUlPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NzAtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZW1vcnkgTWFwcGVkIEZpeGVkIHZhbHVlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNDc1LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NDc2OmNvbmZpZyBDT01NT05fQ0xLX0syMTBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ3Ny1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIHRoZSBDYW5hYW4gS2VuZHJ5dGUgSzIxMCBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4Mi1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ4Mzpjb25maWcgQ09NTU9OX0NMS19LMjMwXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODQtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMzAgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0ODk6Y29uZmlnIENPTU1PTl9DTEtfU1A3MDIxXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU3VucGx1cyBTUDcwMjEgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0OTk6Y29uZmlnIENPTU1PTl9DTEtfUlBNSVxcbmRyaXZlcnMvY2xrL0tjb25maWctNTAwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgYmFzZWQgb24gUklTQy1WIFJQTUlcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvS2NvbmZpZy0yLVxcbmRyaXZlcnMvY2xrL2FzcGVlZC9LY29uZmlnOjM6Y29uZmlnIENPTU1PTl9DTEtfQVNQRUVEXFxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWctNC0gICAgICAgIGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgQXNwZWVkIEJNQyBTb0NzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWctMTQtXFxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWc6MTU6Y29uZmlnIENPTU1PTl9DTEtfQVNUMjcwMFxcbmRyaXZlcnMvY2xrL2FzcGVlZC9LY29uZmlnLTE2LSAgICAgICAgYm9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBU1QyNzAwIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9LY29uZmlnPTQ5PWNvbmZpZyBDTEtfQkNNX0tPTkFcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvY2xrL2JjbS9LY29uZmlnOjU4OmNvbmZpZyBDT01NT05fQ0xLX0lQUk9DXFxuZHJpdmVycy9jbGsvYmNtL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy0yLVxcbmRyaXZlcnMvY2xrL2Vzd2luL0tjb25maWc6Mzpjb25maWcgQ09NTU9OX0NMS19FU1dJTlxcbmRyaXZlcnMvY2xrL2Vzd2luL0tjb25maWctNC1cXHRib29sXFxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy01LVxcbmRyaXZlcnMvY2xrL2Vzd2luL0tjb25maWc6Njpjb25maWcgQ09NTU9OX0NMS19FSUM3NzAwXFxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJFSUM3NzAwIENsb2NrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6Mjpjb25maWcgQ09NTU9OX0NMS19ISTM1MTZDVjMwMFxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkhJMzUxNkNWMzAwIENsb2NrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTktXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6MTA6Y29uZmlnIENPTU1PTl9DTEtfSEkzNTE5XFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIkhpMzUxOSBDbG9jayBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy0xNy1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzoxODpjb25maWcgQ09NTU9OX0NMS19ISTM1NTlBXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMTktXFx0Ym9vbCBcXFwiSGkzNTU5QSBDbG9jayBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy0yNS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzoyNjpjb25maWcgQ09NTU9OX0NMS19ISTM2NjBcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJIaTM2NjAgQ2xvY2sgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMzItXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6MzM6Y29uZmlnIENPTU1PTl9DTEtfSEkzNjcwXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiSGkzNjcwIENsb2NrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTM5LVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnOjQwOmNvbmZpZyBDT01NT05fQ0xLX0hJMzc5OENWMjAwXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctNDEtXFx0dHJpc3RhdGUgXFxcIkhpMzc5OENWMjAwIENsb2NrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnOjQ4OmNvbmZpZyBDT01NT05fQ0xLX0hJNjIyMFxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTQ5LVxcdGJvb2wgXFxcIkhpNjIyMCBDbG9jayBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9pbWd0ZWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvY2xrL2ltZ3RlYy9LY29uZmlnOjI6Y29uZmlnIENPTU1PTl9DTEtfQk9TVE9OXFxuZHJpdmVycy9jbGsvaW1ndGVjL0tjb25maWctMy1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1JUFMgQm9zdG9uIGJvYXJkc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2tleXN0b25lL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9LY29uZmlnOjI6Y29uZmlnIENPTU1PTl9DTEtfS0VZU1RPTkVcXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlcnMgZm9yIEtleXN0b25lIGJhc2VkIFNPQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnPTU9bWVudSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTctXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo4OmNvbmZpZyBDT01NT05fQ0xLX01FRElBVEVLXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTQ6Y29uZmlnIENPTU1PTl9DTEtfTUVESUFURUtfRkhDVExcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1LVxcdGJvb2wgXFxcImNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgRkhDVEwgaGFyZHdhcmUgY29udHJvbFxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjAtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIyLVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzAxXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI5OmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMV9NTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDEgbW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTM0LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzU6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzAxX0lNR1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDEgaW1nc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy00MC1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjQxOmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMV9WREVDU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSB2ZGVjc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjQ3OmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMV9ISUZTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzAxIGhpZnN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNTItXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo1Mzpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfRVRIU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy01NC1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBldGhzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTU4LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6NTk6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzAxX0JEUFNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNjAtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDEgYmRwc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy02NC1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjY1OmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMV9BVURTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWF0ZWsgTVQyNzAxIGF1ZHN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNzAtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo3MTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfRzNEU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy03Mi1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBnM2RzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTc2LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6Nzc6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTg0LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6ODU6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX0JEUFNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctODYtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzEyIGJkcHN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctOTAtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo5MTpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJfSU1HU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTIgaW1nc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05Ni1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjk3OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9KUEdERUNTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTk4LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBqcGdkZWNzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEwMi1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjEwMzpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJfTUZHQ0ZHXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzEyIG1mZ2NmZ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTA4LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTA5OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9NTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTEwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBtbXN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTE0LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTE1OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9WREVDU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzEyIHZkZWNzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjEyMTpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJfVkVOQ1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTIyLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiB2ZW5jc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMjYtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMjc6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzM1XFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMjgtXFx0dHJpc3RhdGUgXFxcIk1haW4gY2xvY2sgZHJpdmVycyBmb3IgTWVkaWFUZWsgTVQ2NzM1XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMzUtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMzY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzM1X0lNR1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTM3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjczNSBpbWdzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE0Mi1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE0Mzpjb25maWcgQ09NTU9OX0NMS19NVDY3MzVfTUZHQ0ZHXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNDQtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IG1mZ2NmZ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTQ5LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTUwOmNvbmZpZyBDT01NT05fQ0xLX01UNjczNV9WREVDU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNTEtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IHZkZWNzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1Ni1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE1Nzpjb25maWcgQ09NTU9OX0NMS19NVDY3MzVfVkVOQ1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTU4LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjczNSB2ZW5jc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNjMtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxNjQ6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1XFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNjUtICAgICAgIGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxNzI6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X0FVRElPU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNzMtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBhdWRpb3N5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTc3LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTc4OmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NV9DQU1TWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE3OS0gICAgICAgdHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IGNhbXN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTgzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTg0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NV9HQ0VTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE4NS0gICAgICAgdHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IGdjZXN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTg5LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTkwOmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NV9NTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTkxLSAgICAgICB0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NjUgbW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE5NS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE5Njpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfSU1HU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xOTctICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBpbWdzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIwMS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIwMjpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfVkNPREVDU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMDMtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSB2Y29kZWNzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIwNy1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIwODpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUZHU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMDktICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtZmdzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIxMy1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIxNDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTBBU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMTUtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMGFzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIxOS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIyMDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTBCU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMjEtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMGJzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIyNS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIyNjpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTFBU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMjctICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMWFzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIzMS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIzMjpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTFCU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMzMtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMWJzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIzNy1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIzODpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTJBU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMzktICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMmFzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI0My1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI0NDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTJCU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNDUtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMmJzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI0OS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI1MDpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI1MS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzlcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI1Ny1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI1ODpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfTU1TWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgbW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI2My1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI2NDpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfSU1HU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNjUtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5IGltZ3N5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjY5LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MjcwOmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9JUEVTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI3MS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgaXBlc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNzUtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyNzY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5X0NBTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjc3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc3OSBjYW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4MS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI4Mjpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfVkRFQ1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjgzLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc3OSB2ZGVjc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yODctXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyODg6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5X1ZFTkNTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgdmVuY3N5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjkzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6Mjk0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9NRkdDRkdcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI5NS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgbWZnY2ZnXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yOTktXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozMDA6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5X0FVRFNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzAxLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhdGVrIE1UNjc3OSBhdWRzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMwNS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMwNjpjb25maWcgQ09NTU9OX0NMS19NVDY3OTVcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMwNy1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTVcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMxNS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMxNjpjb25maWcgQ09NTU9OX0NMS19NVDY3OTVfTUZHQ0ZHXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zMTctXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1IG1mZ2NmZ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzIyLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzIzOmNvbmZpZyBDT01NT05fQ0xLX01UNjc5NV9NTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzI0LSAgICAgICB0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTUgbW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMyOS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMzMDpjb25maWcgQ09NTU9OX0NMS19NVDY3OTVfVkRFQ1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzMxLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc5NSBWREVDU1lTXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zMzYtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozMzc6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk1X1ZFTkNTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMzOC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTUgVkVOQ1NZU1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzQzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzQ0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc5N1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzQ1LVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk3XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNTEtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozNTI6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk3X01NU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNTMtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk3IG1tc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNTctXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozNTg6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk3X0lNR1NZU1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDo0NS43MTAzMTk4N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzIzNjA3NTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgQ09NTU9OX0NMS2AgaXMgdGhlIENvbW1vbiBDbG9jayBGcmFtZXdvcmsncyBnZW5lcmljIGNvbmZpZy4gSXQncyBwZXJ2YXNpdmUsIGVzcGVjaWFsbHkgb24gYXJjaGl0ZWN0dXJlcyBsaWtlIHg4Nl82NDsgaXQncyBwcmFjdGljYWxseSBiYWtlZCBpbiwgb2Z0ZW4gYnkgaW5oZXJpdGFuY2UuICBKdXN0IHRvIGJlIHN1cmUsIEknbGwgY29uZmlybSB0aGF0IGBDT01NT05fQ0xLYCBpcyBhIGBib29sYCBhbmQgaXQncyBkZWZpbml0ZWx5IGVuYWJsZWQgaW4gdGhlIHN5emthbGxlcidzIHg4Nl82NCBjb25maWcuXG5cbk5vdywgaW5zdGVhZCBvZiBjaGVja2luZyB0aGUgc3l6a2FsbGVyIGNvbmZpZywgSSdsbCBmb2N1cyBkaXJlY3RseSBvbiB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIGp1c3QgbmVlZCB0byBvdXRwdXQgdGhlICptdXN0LWhhdmVzKi4gT2theSwgdGhvc2Ugd291bGQgYmU6XG5cbiogICBgU1RNTUFDX0VUSGBcbiogICBgU1RNTUFDX1BDSWBcbiogICBgVVNCX0xBTjc4WFhgXG4qICAgYFVTQl9ORVRfQVg4ODE3WGBcblxuV2FpdCBhIHNlY29uZCwgYFVTQl9ORVRfQVg4ODE3WGAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCX1VTQk5FVGAuIEJ1dCwgZG9lcyBgVVNCX0xBTjc4WFhgIGFsc28gZGVwZW5kIG9uIGBVU0JfVVNCTkVUYD8gTm8sIGl0J3MgYSBzZWxmLWNvbnRhaW5lZCBkcml2ZXIuIEkgc2hvdWxkIGNoZWNrIGBVU0JfVVNCTkVUYCBhbnl3YXksIGp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDg2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjUxLjQzMzkzMDkyNloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4MjM2MjY1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1VTQk5FVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMTM9Y29uZmlnIFVTQl9MQU43OFhYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTMyOmNvbmZpZyBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTMzLVxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6NTMuMDE2MzAyOTQyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzkxOTQ4OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgUEhZIENvbm5lY3Rpb24gRnVuY3Rpb25zKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGluY29ycG9yYXRlIGBVU0JfVVNCTkVUYCBpbnRvIHRoaXMgcmV2aWV3LiBGaXJzdCwgSSdsbCBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBmb2N1cyBvbi4gTGV0J3Mgc3RhcnQgd2l0aCBgc3RtbWFjX2luaXRfcGh5YC4gVGhlbiwgSSBuZWVkIHRvIHJlbWVtYmVyIGBwaHlsaW5rX2V4cGVjdHNfcGh5YC4gSSB3YXMganVzdCByZXZpZXdpbmcgYHBoeWxpbmtfYXR0YWNoX3BoeWAg4oCTIGFoLCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHNvIHRoYXQgbWlnaHQgY2hhbmdlIHRoaW5ncy4gTm93LCBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBmdW5jdGlvbnMgdGhhdCAqY2FsbCogdGhhdCBzdGF0aWMgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBhbmFseXplIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC4gVGhlc2UgbG9vayBsaWtlIHRoZSBwcmltYXJ5IGV4cG9ydGVkIGludGVyZmFjZXMgdGhhdCBldmVudHVhbGx5IGludGVyYWN0IHdpdGggYHBoeWxpbmtfYXR0YWNoX3BoeWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTAyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjU2LjU5NTQ5OTY1NFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxNjMxMDI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9OTgyPXN0YXRpYyBpbnQgbWFjYl9waHlsaW5rX2Nvbm5lY3Qoc3RydWN0IG1hY2IgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05OTktXFx0XFx0LyogYXR0YWNoIHRoZSBtYWMgdG8gdGhlIHBoeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTAwMDpcXHRcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGJwLVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTAwMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzIxND1zdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jb25uZWN0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzIyNy1cXHRcXHRcXHQvKiBhdHRhY2ggdGhlIG1hYyB0byB0aGUgcGh5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMyMjg6XFx0XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShhZGFwdGVyLVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjI5LVxcdFxcdH0gZWxzZSBpZiAoKChhZGFwdGVyLVxcdTAwM2Vjc3IuaWRfcmV2IFxcdTAwMjYgSURfUkVWX0lEX01BU0tfKSA9PVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzE2PXN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxMzY2OlxcdFxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluaywgcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNjctXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwLmM9MTQwNj1zdGF0aWMgaW50IHRuNDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwLmM6MTQxMTpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz00NjI9c3RhdGljIGludCBuZ2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy00NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjQ3OTpcXHRlcnIgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHd4LVxcdTAwM2VwaHlsaW5rLCB3eC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNDgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzozMDA6XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwaHlsaW5rLCB3eC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTMwMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjE4LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIxOTogKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjIwLSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjMyLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzMzppbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1Mi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjUzOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2MS0gKiBDb25uZWN0IHRoZSBwaHkgc3BlY2lmaWVkIGluIHRoZSBkZXZpY2Ugbm9kZSBAZG4gdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjI6ICogc3BlY2lmaWVkIGJ5IEBwbC4gQWN0aW9ucyBzcGVjaWZpZWQgaW4gcGh5bGlua19jb25uZWN0X3BoeSgpIHdpbGwgYmVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogcGVyZm9ybWVkLlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTcwMz1zdGF0aWMgaW50IGF4ODg3NzJfaW5pdF9waHkoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzE0OlxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluaywgcHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzE1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjg1OD1zdGF0aWMgaW50IGxhbjc4eHhfcGh5X2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDEtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyOTAyOlxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoZGV2LVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkwMy1cXHRpZiAocmV0KSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03Mjc9Ym9vbCBwaHlsaW5rX2V4cGVjdHNfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI4LVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyOTppbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqLCBzdHJ1Y3QgcGh5X2RldmljZSAqKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzAtaW50IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKiwgc3RydWN0IGRldmljZV9ub2RlICosIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvZHNhL3VzZXIuYz0yNjM4PXN0YXRpYyBpbnQgZHNhX3VzZXJfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2LCBpbnQgYWRkcixcXG4tLVxcbm5ldC9kc2EvdXNlci5jLTI2NTEtXFxubmV0L2RzYS91c2VyLmM6MjY1MjpcXHRyZXR1cm4gcGh5bGlua19jb25uZWN0X3BoeShkcC1cXHUwMDNlcGwsIHVzZXJfZGV2LVxcdTAwM2VwaHlkZXYpO1xcbm5ldC9kc2EvdXNlci5jLTI2NTMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDo1OC44MTE4MTQ1NjJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk3OTg5NTQ5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUEhZIEluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgY29kZSBwYXRocyBpbnZvbHZlZC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgaXQgY2hhbmdlcyBQSFkgKFBoeXNpY2FsIExheWVyKSBpbml0aWFsaXphdGlvbiB3aXRoaW4gdGhlIGBzdG1tYWNgIGRyaXZlciBhbmQgdGhlIGdlbmVyaWMgYHBoeWxpbmtgIGZyYW1ld29yay4gSSBzdGFydGVkIGJ5IGlkZW50aWZ5aW5nIGtleSBmdW5jdGlvbnMgdGhhdCBzZWVtIGNlbnRyYWwgdG8gdGhlIGNoYW5nZTogYHBoeWxpbmtfY29ubmVjdF9waHlgIGlzIHVzZWQgYnJvYWRseSwgc28gdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgaXMgYHN0bW1hY19pbml0X3BoeWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHRhcmdldHMgYXJlIG5vdCBpbmxpbmVkLCB0aGVyZWZvcmUgZm9jdXMgb24gdGhlIGNhbGxlcnMuXG5cblRoZSBtb3JlIEkgbG9vaywgYHN0bW1hY19pbml0X3BoeWAgaXMgc3RhdGljIGFuZCBpdCBjYWxscyBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmVuJ3Qgc3RhdGljLiBgc3RtbWFjX29wZW5gIHdpbGwgYmUgbXkgYmVzdCBmb2N1cyBzeW1ib2wuIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBpcyBleHBvcnRlZCwgYXMgYXJlIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCwgdGhlcmVmb3JlIHRoZXkgYXJlbid0IGlubGluZWQsIHNvIHRoZSBjYWxsZXJzIG9mIHRob3NlIGFyZSBpbnRlcmVzdGluZy5cblxuU28gdGhlIG1haW4gZnVuY3Rpb25zIG9yIGVudHJ5IHBvaW50cyBJIHdpbGwgZm9jdXMgb24gYXJlIHRoZXNlOlxuKiAgIGBzdG1tYWNfb3BlbmBcbiogICBgcGh5bGlua19leHBlY3RzX3BoeWBcbiogICBgcGh5bGlua19jb25uZWN0X3BoeWBcbiogICBgcGh5bGlua19vZl9waHlfY29ubmVjdGBcbiogICBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgXG5cbkkgbmVlZCB0byBjb25maXJtIHdoaWNoIGNvbmZpZ3VyYXRpb25zIHdpbGwgZW5hYmxlIHRoZSByZWxldmFudCBjb2RlLiBMb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIEknbGwgbmVlZCB0byBlbmFibGUgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYFVTQl9VU0JORVRgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AuIFN5emthbGxlcidzIGR1bW15IFVTQiBIQ0Qgd2lsbCBtYWtlIHRoZSBVU0IgZGV2aWNlcyByZWFjaGFibGUuXG5cbkkgd2FudCB0byBjb25maXJtIGBzdG1tYWNgIGlzIHJlYWNoYWJsZSB2aWEgYFNUTU1BQ19QQ0lgLiBJIHNob3VsZCBhZGQgYFNUTU1BQ19QTEFURk9STWAgYXMgd2VsbCwgYXMgdGhhdCBpcyBwbGF0Zm9ybS1iYXNlZCBkZXZpY2UuXG5cblRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBhbHRlcnMgUEhZIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBJIG5lZWQgdG8gYmUgYWJsZSB0byBleGVyY2lzZSB0aGlzIGxvZ2ljLCBhbmQgSSB3aWxsIGJlIGFibGUgdG8gZG8gdGhpcyB0aHJvdWdoIHRoZSBgc3RtbWFjYCBkcml2ZXIgKHJlYWNoYWJsZSB2aWEgUENJIGFuZCBwbGF0Zm9ybSBkZXZpY2VzKSBhbmQgbmV0d29yayBkcml2ZXJzIGZvciBVU0IgRXRoZXJuZXQgYWRhcHRlcnMuIFRoZSBwYXRjaCBhZmZlY3RzIGhvdyBhbmQgd2hlbiBhIFBIWSBpcyBleHBlY3RlZCBhbmQgYXR0YWNoZWQuIFRoYXQgaXMgdGhlIGZ1bmN0aW9uYWwgY29yZSwgSSdsbCBmb2N1cyBvbiB0aGUgZW50cnkgcG9pbnRzIHdoaWNoIGNhbGwgdGhlIGZ1bmN0aW9ucyBjaGFuZ2VkIGluIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNjQsIk91dHB1dFRva2VucyI6MjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNToxOC42MTA3NzI3OTlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQxMjA4NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX0xBTjc4WFhcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19vcGVuXCIsXG4gICAgXCJwaHlsaW5rX2V4cGVjdHNfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX29mX3BoeV9jb25uZWN0XCIsXG4gICAgXCJwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBIWSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIGdlbmVyaWMgcGh5bGluayBmcmFtZXdvcmsuIFRoZSBzdG1tYWMgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgUENJIChTVE1NQUNfUENJKSwgYW5kIHBoeWxpbmsgaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycyBpbmNsdWRpbmcgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIChVU0JfTEFONzhYWCwgVVNCX05FVF9BWDg4MTdYKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBkdW1teSBVU0IgSENELiBUaGUgY2hhbmdlcyBhbHRlciB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIFBIWSBpcyBleHBlY3RlZCBvciBhdHRhY2hlZCwgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX0xBTjc4WFhcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19vcGVuXCIsXG4gICAgXCJwaHlsaW5rX2V4cGVjdHNfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX29mX3BoeV9jb25uZWN0XCIsXG4gICAgXCJwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBIWSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIGdlbmVyaWMgcGh5bGluayBmcmFtZXdvcmsuIFRoZSBzdG1tYWMgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgUENJIChTVE1NQUNfUENJKSwgYW5kIHBoeWxpbmsgaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycyBpbmNsdWRpbmcgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIChVU0JfTEFONzhYWCwgVVNCX05FVF9BWDg4MTdYKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBkdW1teSBVU0IgSENELiBUaGUgY2hhbmdlcyBhbHRlciB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIFBIWSBpcyBleHBlY3RlZCBvciBhdHRhY2hlZCwgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowc2zg9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 14:05:41 +0000 UTC FinishedAt: 2026-07-30 14:25:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ed6dc972c19ff9ffca504f5739848da4275219e3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "USB_USBNET", "USB_LAN78XX", "USB_NET_AX8817X" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "ed6dc972c19ff9ffca504f5739848da4275219e3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI", "STMMAC_PLATFORM", "USB_USBNET", "USB_LAN78XX", "USB_NET_AX8817X" ], "series_id": "aea618b8-1439-46cb-840c-18355cbaa4e4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_open", "phylink_expects_phy", "phylink_connect_phy", "phylink_of_phy_connect", "phylink_fwnode_phy_connect" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfb3BlbiYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2V4cGVjdHNfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19vZl9waHlfY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBQSFkgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIHBoeWxpbmsgZnJhbWV3b3JrLiBUaGUgc3RtbWFjIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSAoU1RNTUFDX1BDSSksIGFuZCBwaHlsaW5rIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMgaW5jbHVkaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycyAoVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3WCkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgZHVtbXkgVVNCIEhDRC4gVGhlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBQSFkgaXMgZXhwZWN0ZWQgb3IgYXR0YWNoZWQsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJmZTgzYWVkOGYzZjlhYmIzYTQ4ZGEwNzdjMmU2YTFhYTE2YjViYWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAzMCAxNDoyMzoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggNTYyZDIwODMwYjk0OS4uNTc1MTMyYjljZGJmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0xMzQ3LDYgJiM0MzsxMzQ3LDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4gXG4gXHRcdGlmIChhZGRyIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdC8qIElmIGEgY3VzdG9tIFBDUyBpcyBpbiB1c2UsIG5vIFBIWSBpcyBuZWVkZWQgKi9cbiYjNDM7XHRcdFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlcGh5bGlua19wY3MpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0XHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O25vIHBoeSBmb3VuZFxcblwmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNTlkZmUzNWFmYTU0Zi4uZmQ0ZTgwZWVlZGE3MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xOTY0LDkgJiM0MzsxOTY0LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbiAgKi9cbiBib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuIHtcbi1cdGlmIChwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCB8fFxuLVx0ICAgIChwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQgXHUwMDI2XHUwMDI2XG4tXHQgICAgIHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSkpKVxuJiM0MztcdGlmIChwbC1cdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuQEAgLTIyMDUsOSAmIzQzOzIyMDMsNyBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4ge1xuIFx0dTMyIGZsYWdzID0gMDtcbiBcbi1cdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEIHx8XG4tXHRcdCAgICAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fSU5CQU5EIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgIHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihpbnRlcmZhY2UpIFx1MDAyNlx1MDAyNiAhcGwtXHUwMDNlc2ZwX2J1cykpKVxuJiM0MztcdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRpZiAocGwtXHUwMDNlcGh5ZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX29wZW4mIzM0OywKICAgICYjMzQ7cGh5bGlua19leHBlY3RzX3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIHRoZSBzdG1tYWMgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgZ2VuZXJpYyBwaHlsaW5rIGZyYW1ld29yay4gVGhlIHN0bW1hYyBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgKFNUTU1BQ19QQ0kpLCBhbmQgcGh5bGluayBpcyByZWFjaGFibGUgdmlhIHZhcmlvdXMgbmV0d29yayBkcml2ZXJzIGluY2x1ZGluZyBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgKFVTQl9MQU43OFhYLCBVU0JfTkVUX0FYODgxN1gpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15IFVTQiBIQ0QuIFRoZSBjaGFuZ2VzIGFsdGVyIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgUEhZIGlzIGV4cGVjdGVkIG9yIGF0dGFjaGVkLCB3aGljaCBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZmU4M2FlZDhmM2Y5YWJiM2E0OGRhMDc3YzJlNmExYWExNmI1YmFjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMTQ6MjM6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCA1NjJkMjA4MzBiOTQ5Li41NzUxMzJiOWNkYmY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTEzNDcsNiAmIzQzOzEzNDcsMTAgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjsKIAogCQlpZiAoYWRkciAmbHQ7IDApIHsKJiM0MzsJCQkvKiBJZiBhIGN1c3RvbSBQQ1MgaXMgaW4gdXNlLCBubyBQSFkgaXMgbmVlZGVkICovCiYjNDM7CQkJaWYgKHByaXYtJmd0O2h3LSZndDtwaHlsaW5rX3BjcykKJiM0MzsJCQkJcmV0dXJuIDA7CiYjNDM7CiAJCQluZXRkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtubyBwaHkgZm91bmRcbiYjMzQ7KTsKIAkJCXJldHVybiAtRU5PREVWOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwppbmRleCA1OWRmZTM1YWZhNTRmLi5mZDRlODBlZWVkYTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKQEAgLTE5NjQsOSAmIzQzOzE5NjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpOwogICovCiBib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKQogewotCWlmIChwbC0mZ3Q7Y2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQgfHwKLQkgICAgKHBsLSZndDtjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQgJmFtcDsmYW1wOwotCSAgICAgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KHBsLSZndDtsaW5rX2ludGVyZmFjZSkpKQomIzQzOwlpZiAocGwtJmd0O2NmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKQogCQlyZXR1cm4gZmFsc2U7CiAJcmV0dXJuIHRydWU7CiB9CkBAIC0yMjA1LDkgJiM0MzsyMjAzLDcgQEAgc3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogewogCXUzMiBmbGFncyA9IDA7CiAKLQlpZiAoV0FSTl9PTihwbC0mZ3Q7Y2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQgfHwKLQkJICAgIChwbC0mZ3Q7Y2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fSU5CQU5EICZhbXA7JmFtcDsKLQkJICAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3ooaW50ZXJmYWNlKSAmYW1wOyZhbXA7ICFwbC0mZ3Q7c2ZwX2J1cykpKQomIzQzOwlpZiAoV0FSTl9PTihwbC0mZ3Q7Y2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlmIChwbC0mZ3Q7cGh5ZGV2KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTIzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgc3RtbWFjX21haW4uY2AgYW5kIGBwaHlsaW5rLmNgLCBzcGVjaWZpY2FsbHkuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIGBzdG1tYWNfaW5pdF9waHlgLCB3aGVyZSBpdCBub3cgcmV0dXJucyAwIGlmIGBwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3NgIGlzIHNldCB3aGVuIGBhZGRyYCBpcyBuZWdhdGl2ZS4gSW50dWl0aXZlbHksIHRoaXMgc3VnZ2VzdHMgd2UmIzM5O3JlIGhhbmRsaW5nIHNvbWUga2luZCBvZiBlcnJvciBjYXNlIG9yIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyIChQQ1MpIG9mIHRoZSBQSFkgbGluay4gVGhlIHBhdGNoIGFsc28gdHdlYWtzIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBhbmQgYHBoeWxpbmtfYXR0YWNoX3BoeWAgd2l0aGluIGBwaHlsaW5rLmNgLCByZW1vdmluZyBjb25kaXRpb25hbCBsb2dpYyBjb25uZWN0ZWQgdG8gYE1MT19BTl9JTkJBTkRgIGFuZCBgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6YC4gVGhpcyBzdWdnZXN0cyB0aGVyZSYjMzk7cyBhIGNoYW5nZSBpbiBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIGluLWJhbmQgYXV0b25lZ290aWF0aW9uIGFuZCA4MDIuM3ogY29tcGF0aWJpbGl0eS4KCk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHJlYWNoYWJpbGl0eS4gSXMgdGhpcyBjb2RlIGV2ZW4gKmV4ZXJjaXNhYmxlKiBpbiBhIHR5cGljYWwgUUVNVSBzZXR1cD8gYHN0bW1hY2AgaXMgU1RNaWNyb2VsZWN0cm9uaWNzJiMzOTsgRXRoZXJuZXQgZHJpdmVyIOKAkyBpdCYjMzk7cyBvZnRlbiBhIHN0YXBsZSBpbiBBUk0gU29Dcy4gUUVNVSBkb2VzIGhhdmUgQVJNIGJvYXJkIG1vZGVscyB3aXRoIGBzdG1tYWNgLCBidXQgaXQmIzM5O3MgbGVzcyBjb21tb24gdG8gc2VlIGl0IGluIHN0YW5kYXJkIHg4Nl82NCBRRU1VIGNvbmZpZ3VyYXRpb25zLiBPbiB0aGUgb3RoZXIgaGFuZCwgYHBoeWxpbmtgIGlzIGEgKmdlbmVyaWMqIGZyYW1ld29yay4gTWFueSBuZXR3b3JrIGRyaXZlcnMgdXNlIGl0LCBzbyBpdOKAmXMgbGlrZWx5IHRvIGJlIHJlYWNoZWQuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gYHBoeWxpbmtfZXhwZWN0c19waHlgIGFuZCBgcGh5bGlua19hdHRhY2hfcGh5YC4gSG1tLCBgcGh5bGlua19leHBlY3RzX3BoeWAgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgb3RoZXIgZHJpdmVycyBhcmUgY2FsbGluZyBpdCBkaXJlY3RseS4gVGhhdCYjMzk7cyBnb29kLiBCdXQgYHBoeWxpbmtfYXR0YWNoX3BoeWAuLi4gdGhlIGRpZmYgaXMgc2F5aW5nIGl04oCZcyBzdGF0aWMuIEhhbmcgb27igKZpdCYjMzk7cyBkZWZpbmVkIGFzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgdGhlbiB0aGVyZSBpcyBhIGNhbGwgdG8gYHBoeWxpbmtfY29ubmVjdF9waHlgIHdoaWNoIHRoZW4gY2FsbHMgYHBoeWxpbmtfYXR0YWNoX3BoeWAuIFRoaXMgbWVhbnMgdGhlIHBhdGNoIG1pZ2h0IGFmZmVjdCBkcml2ZXJzIHRoYXQgdXNlIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YC4gVGltZSB0byBjaGVjayB0aGUgY2FsbGVycyBvZiBgcGh5bGlua19leHBlY3RzX3BoeWAgdG8gZ2V0IHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19leHBlY3RzX3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEzMTY9c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzMjY6XHRpZiAoIXBoeWxpbmtfZXhwZWN0c19waHkocHJpdi1cdTAwM2VwaHlsaW5rKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTMyNy1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU2LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTU3OiAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk1OC0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2NC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk2NTpib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTY2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NzAtfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTcxOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXhwZWN0c19waHkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTcyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI4NT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI5Mi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI5MzpcdGlmICghcGh5bGlua19leHBlY3RzX3BoeShwbCkpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyOTQtXHRcdHJldHVybiAwO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcyNj12b2lkIHBoeWxpbmtfZGVzdHJveShzdHJ1Y3QgcGh5bGluayAqKTtcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyNzpib29sIHBoeWxpbmtfZXhwZWN0c19waHkoc3RydWN0IHBoeWxpbmsgKnBsKTtcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTc2CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUEhZTElOSyBSZWFjaGFiaWxpdHkgaW4gUUVNVSoqCgpPa2F5LCBzbyBgcGh5bGlua19leHBlY3RzX3BoeWAgc2hvd3MgdXAgaW4gYHN0bW1hY19pbml0X3BoeWAgYW5kIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAuIFRoZSBsYXR0ZXIgaXMgdXNlZCBwcmV0dHkgYnJvYWRseSBhY3Jvc3MgdmFyaW91cyBkcml2ZXJzLCBzbyB0aGlzIHdhcnJhbnRzIHNvbWUgZGVlcGVyIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGFjdHVhbGx5IGhpdCBgcGh5bGlua2AgaW4gYSBRRU1VIGVudmlyb25tZW50LgoKTGV0JiMzOTtzIHF1aWNrbHkgc2NhbiB0aGUgY29tbW9uIHN1c3BlY3RzLiBEb2VzIGB2aXJ0aW9fbmV0YCB1c2UgYHBoeWxpbmtgPyBOb3BlLiBXaGF0IGFib3V0IGBlMTAwMGVgPyBTdGlsbCBuby4gT2theSwgYGlnYmA/IE5vcGUgYWdhaW4uIEFscmlnaHQsIGhvdyBhYm91dCBgdXNibmV0YD8gTmFkYS4KCkhtbSwgbGV0IG1lIGNvbnNpZGVyIERTQSwgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZS4gQWhhISBZZXMsIGBkc2FgIHV0aWxpemVzIGBwaHlsaW5rYC4gTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIEkgc2ltdWxhdGUgYSBgZHNhYCBzZXR1cCBpbiBRRU1VPyBJIGJlbGlldmUgc28uIEkgbWlnaHQgYmUgYWJsZSB0byB1c2UgYGRzYV9sb29wYCBvciBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gbGlrZSBgbWFjYmAuIFRoYXQmIzM5O3MgZW5jb3VyYWdpbmcuCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IGdlYXJzIGFuZCBqdXN0IGNoZWNrIHdoYXQgYWxsIGlzIHVzaW5nIGBwaHlsaW5rYCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjMtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXHUwMDI2cGh5bGlua19vcHMpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjUtXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05ODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Mi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5OS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9ODQ3PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk0MjplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzE0OmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTcwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE1MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjY0PXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyNDpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzkxPXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ4MzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDg0LVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgwPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxMi1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzExODpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE5LVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE1PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzAtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM4PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDY5LSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzEtICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2Nz1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTEtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5My0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODI5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMjogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMzLSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0Ni0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0NzpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTMzLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNDpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM3LSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTM4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzktICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTctICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTU4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTktICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIxOS0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyMS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjU2LSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1OC0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjc1LSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNzY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3Ny0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzNS0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzM2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMzctICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNjY9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM3NS0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzc2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNzctICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDA4PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQxOC0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQxOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDIwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDgxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4NC0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0ODU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUxNT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUxOC0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyMC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU0ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NDctICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTQ4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NDktICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1ODY9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTkzLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTk0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTUtICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjQ4LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjUwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY3My0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY3NS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE2LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcxNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE4LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzUzLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzU0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NTUtICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODI9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjg5Ny0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjg5ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yODk5LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTA9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3MS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5NzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3My0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTM4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDEtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQzLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTYzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNjYtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTY3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNjgtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTgyLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg0LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI2NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI2OS0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3MS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTEtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjkyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTMtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMxND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzE3LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzE4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMTktICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ4OD1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDYtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTA3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDgtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTgxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1ODUtICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1ODY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU4Ny0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYwNj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxMC0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxMi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM2Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzY3LSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM2ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzY5LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00Mzg0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4OC0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzODk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5MC0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjEtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIzLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqLFxuLS1cbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE2MTYtXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxubmV0L2RzYS9wb3J0LmMtMTYxOC17XG4tLVxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cbm5ldC9kc2EvcG9ydC5jOjE2NDc6XHRwbCA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmRwLVx1MDAzZXBsX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShkcC1cdTAwM2VkbiksIG1vZGUsXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVx0XHRcdCAgICBtYWNfb3BzKTtcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjczLVxubmV0L2RzYS9wb3J0LmM6MTY3NDpcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcbm5ldC9kc2EvcG9ydC5jLTE2NzUtXHRpZiAoZXJyKVxuLS1cbm5ldC9kc2EvcG9ydC5oPTEwMD1pbnQgZHNhX3BvcnRfbXJwX2RlbF9yaW5nX3JvbGUoY29uc3Qgc3RydWN0IGRzYV9wb3J0ICpkcCxcbm5ldC9kc2EvcG9ydC5oLTEwMS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcmluZ19yb2xlX21ycCAqbXJwKTtcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XG5uZXQvZHNhL3BvcnQuaC0xMDMtdm9pZCBkc2FfcG9ydF9waHlsaW5rX2Rlc3Ryb3koc3RydWN0IGRzYV9wb3J0ICpkcCk7XG4tLVxubmV0L2RzYS91c2VyLmM9MjY1NT1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXG4tLVxubmV0L2RzYS91c2VyLmMtMjY3NC1cbm5ldC9kc2EvdXNlci5jOjI2NzU6XHRyZXQgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XG5uZXQvZHNhL3VzZXIuYy0yNjc2LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjEzMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBgcGh5bGlua2AgLSBBIEZ1enppbmcgVGFyZ2V0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIGBwaHlsaW5rYC4gSSBzZWUgaXQmIzM5O3MgcmVmZXJlbmNlZCBpbiBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCBhbmQgYGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNgLiBBbHJpZ2h0LCBVU0IgbmV0IGRldmljZXMsIGJvdGggb2Ygd2hpY2ggYXJlIHJlYWRpbHkgYXZhaWxhYmxlIGZvciBmdXp6aW5nISBJIGNhbiBlbXVsYXRlIHRoZW0gaW4gUUVNVSB1c2luZyBlaXRoZXIgVVNCIHBhc3N0aHJvdWdoIG9yIGV2ZW4gdGhvc2UgaGFuZHkgZHVtbXkgVVNCIGRldmljZXMsIHdoaWNoIGFyZSBwZXJmZWN0IGZvciB1c2Ugd2l0aCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enplciAodGhlIGBkdW1teV9oY2RgIHN0dWZmKS4gQW5kIGxldCYjMzk7cyBub3QgZm9yZ2V0IGBuZXQvZHNhL3BvcnQuY2AsIHRoYXQgdXNlcyBpdCBhcyB3ZWxsLCBhbmQgYGRzYV9sb29wYCBnaXZlcyB1cyBhIGNvbnZlbmllbnQgdGVzdGluZyBwYXRoIHRoZXJlLiBTbywgYHBoeWxpbmtgIGlzIGFic29sdXRlbHkgcmVhY2hhYmxlIGFuZCBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igc29tZSBmdXp6aW5nIGF0dGVudGlvbi4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgLCBzbyBJIGNhbiBzZWUgd2hlcmUgaXQgbWlnaHQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLgoKSG1tLCB3YWl0IGEgc2Vjb25kLi4uIHRoZSBwYXRjaCBhbHNvIGFmZmVjdHMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBOb3csIGBzdG1tYWNgLi4uIGlzICp0aGF0KiByZWFjaGFibGU/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBgc3RtbWFjYCBjYW4gYmUgYnVpbHQgYXMgYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHRvIHNlZSBob3cgYWNjZXNzaWJsZSBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTI9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1Olx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTYtXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxMDQKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmU6CgoqKkNvbm5lY3RpbmcgdGhlIERvdHM6IHN0bW1hYywgUENJLCBhbmQgRnV6emluZyBPcHBvcnR1bml0aWVzKioKClJpZ2h0LCBzbyBgc3RtbWFjYCBoYXMgYSBQQ0kgZHJpdmVyISBGb3VuZCBpdCwgYHN0bW1hY19wY2kuY2AuIFRoaXMgaXMgaW50cmlndWluZy4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBQQ0ktYmFzZWQgaW1tZWRpYXRlbHkgb3BlbnMgdXAgYSBuZXcgYXZlbnVlIGZvciBmdXp6aW5nLiBJZiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIsIHRoYXQgbWVhbnMgaXQgY2FuIGJlIHByb2JlZCBhbmQgaW50ZXJhY3RlZCB3aXRoIHZpYSB0aGUgUENJIGJ1cywgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgdGhlIHN5emthbGxlciBQQ0kgZnV6emVyIGVtdWxhdGVzLiBUaGlzIGlzIGV4Y2VsbGVudCBuZXdzLCBiZWNhdXNlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBgc3RtbWFjYCB2aWEgYSBQQ0kgaW50ZXJmYWNlLCB3ZSBjYW4gbGV2ZXJhZ2UgdGhlIFBDSSBmdXp6ZXImIzM5O3MgY2FwYWJpbGl0aWVzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgUENJIElEcyBgc3RtbWFjX3BjaS5jYCBiaW5kcyB0by4gVGhhdCBpbmZvcm1hdGlvbiB3aWxsIGJlIHRoZSBrZXkgdG8gZGVzaWduaW5nIGVmZmVjdGl2ZSBQQ0kgZnV6emluZyBjYW1wYWlnbnMgYWdhaW5zdCB0aGlzIGRyaXZlci4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRob3NlIElEcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9JRF9TVE1JQ1JPX01BQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaC04NjEtI2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTUlDUk9fU1BJX0hTXHQweENDMDhcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oOjg2MjojZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNSUNST19NQUNcdDB4Q0MwOVxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmgtODYzLSNkZWZpbmUgUENJX0RFVklDRV9JRF9TVE1JQ1JPX1NESU9fRU1NQyAweENDMEFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1MzcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFBDSSBEcml2ZXIgUGF0Y2gqKgoKUmlnaHQsIHNjcmF0Y2ggdGhhdC4gSSBkb24mIzM5O3QgbmVlZCB0byBkaXZlIGludG8gdGhlIHByZWNpc2UgUENJIElEIGRldGFpbHMgcmlnaHQgbm93LiBUaGUgZmFjdCB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyIGlzIGVub3VnaCB0byBuYXJyb3cgdGhlIHNjb3BlLiBUaGUgcGF0Y2ggcmVmZXJlbmNlcyBgc3RtbWFjX2luaXRfcGh5YCB3aXRoaW4gYHN0bW1hY19tYWluLmNgLCBzbyBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkZXRlcm1pbmUgKndoZW4qIGBzdG1tYWNfaW5pdF9waHlgIGlzIGJlaW5nIGludm9rZWQuIElzIHRoaXMgZnVuY3Rpb24gcGFydCBvZiB0aGUgaW5pdGlhbCBwcm9iZSBzZXF1ZW5jZSwgb3IgaXMgaXQgdHJpZ2dlcmVkIGR5bmFtaWNhbGx5IHdoZW4gdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGJyb3VnaHQgb25saW5lLCBvciBib3RoPyBUaGlzIHVuZGVyc3RhbmRpbmcgd2lsbCBmcmFtZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGltaW5nIG9mIHRoZSBjaGFuZ2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBwYXRoIGxvb2tzIGxpa2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19pbml0X3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEyODM9c3RhdGljIHZvaWQgc3RtbWFjX2NoZWNrX3Bjc19tb2RlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMDgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzMDk6ICogc3RtbWFjX2luaXRfcGh5IC0gUEhZIGluaXRpYWxpemF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMTAtICogQGRldjogbmV0IGRldmljZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMTUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzMTY6c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTMxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTkxPXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMDk6XHRyZXQgPSBzdG1tYWNfaW5pdF9waHkoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIxMC1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjE3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNIE1BQyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGlzIFNUTSBNQUMgZHJpdmVyLiBJIHNlZSB0aGlzIGNvZGUgaXMgcmVhY2hlZCB3aXRoaW4gYHN0bW1hY19vcGVuYCwgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgYC5uZG9fb3BlbmAgY2FsbGJhY2suIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBjaGFuZ2VzIEkmIzM5O20gbG9va2luZyBhdCBpbiBgc3RtbWFjX2luaXRfcGh5YCBhcmUgZGVmaW5pdGVseSBnZXR0aW5nIGhpdCB3aGVuZXZlciB0aGUgbmV0d29yayBpbnRlcmZhY2UgY29tZXMgdXAsIHNheSwgd2hlbiBJIHJ1biBgaXAgbGluayBzZXQgZXRoMCB1cGAuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKTm93LCBteSBmb2N1cyBzaGlmdHMgdG8gYHBoeWxpbmtfZXhwZWN0c19waHlgIGFuZCBgcGh5bGlua19hdHRhY2hfcGh5YC4gSSBzZWUgdGhhdCBgcGh5bGlua19leHBlY3RzX3BoeWAgaXMgZGVmaW5pdGVseSBjYWxsZWQgZnJvbSB3aXRoaW4gYHN0bW1hY19pbml0X3BoeWAsIHdoaWNoIGNvbmZpcm1zIGl0IGlzIGdldHRpbmcgc2V0IHVwIHJpZ2h0LgoKYHBoeWxpbmtfYXR0YWNoX3BoeWAgc2VlbXMgdG8gYmUgY2FsbGVkIGluIGEgZmV3IHBsYWNlcywgbmFtZWx5IGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC4gVGhlc2UgYXJlIGFsbCB0eXBpY2FsbHkgdHJpZ2dlcmVkIGJ5IHZhcmlvdXMgZHJpdmVycyB3aGVuIHRoZXkgZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhIFBIWS4KCk5leHQsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEZvciB0aGUgYHN0bW1hY2AgZHJpdmVyIGl0c2VsZiwgaXQgbG9va3MgbGlrZSBJIG5lZWQgYm90aCBgQ09ORklHX1NUTU1BQ19FVEhgIGFuZCBgQ09ORklHX1NUTU1BQ19QQ0lgLiBBbmQgZm9yIGBwaHlsaW5rYCwgSSBuZWVkIGBDT05GSUdfUEhZTElOS2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJiMzOTtsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBLY29uZmlnYCBmaWxlcyB0byB2ZXJpZnkgdGhlIGV4YWN0IGltcGxpY2F0aW9ucyBvZiB0aG9zZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19FVEgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5MDUKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkV4YW1pbmluZyBLY29uZmlnIERlcGVuZGVuY2llcyBmb3IgdGhlIFNUTU1BQyBEcml2ZXIqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHJlYWQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbG9naWMgaXMgaG91c2VkLCBzbyB0aGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgb3V0IHdoYXQgb3RoZXIgZmVhdHVyZXMgb3IgY29uZmlndXJhdGlvbnMgbXVzdCBiZSBlbmFibGVkIG9yIHByZXNlbnQgZm9yIFNUTU1BQyB0byBidWlsZCBjb3JyZWN0bHkuIFRpbWUgdG8gc2VlIHdoYXQgSSBjYW4gbGVhcm4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRpZiBTVE1NQUNfUExBVEZPUk1cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cJiMzNDtcbiAgNDY6XHRcdHNlbGVjdCBDUkMzMlxuICA0NzpcdFx0c2VsZWN0IE1JSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICA0OTpcdFx0aGVscFxuICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc3OAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWx2aW5nIGludG8gdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGRpdmluZyBiYWNrIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGZpbmRpbmcgdGhlIGRlZmluaXRpb24gZm9yIGBTVE1NQUNfUENJYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgS2NvbmZpZyBmaWxlIHNob3VsZCBob3VzZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFNUTWljcm9lbGVjdHJvbmljcyYjMzk7IFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aGVuIHVzZWQgaW4gYSBQQ0kgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgdmFyaWFudCBpcyBjb25maWd1cmVkIOKAkyB3aGV0aGVyIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCwgaWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBmZWF0dXJlcywgb3IgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBwYXJhbWV0ZXJzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGRldGVybWluZSBob3cgdG8gaW50ZWdyYXRlIGl0IGludG8gYSBkZXNpZ24uIEZyb20gZXhwZXJpZW5jZSwgSSBrbm93IHRoYXQgb2Z0ZW4gdGhlIFBDSSB2ZXJzaW9uIG9mIGEgZHJpdmVyIGhhcyBkaWZmZXJlbnQgY29uc2lkZXJhdGlvbnMgZHVlIHRvIGJ1cyBzcGVjaWZpYyBpbnRlcnJ1cHQsIGFkZHJlc3Mgc3BhY2UsIGV0Yy4gVW5kZXJzdGFuZGluZyB0aGUgZmluZXIgcG9pbnRzIG9mIGBTVE1NQUNfUENJYCYjMzk7cyBjb25maWd1cmF0aW9uIGlzIGtleSBmb3IgY29ycmVjdGx5IGJ1aWxkaW5nIGFuZCBjb25maWd1cmluZyBhbiBlbWJlZGRlZCBzeXN0ZW0gb3IgZHJpdmVyIG1vZHVsZSB0aGF0IHVzZXMgYSBTVE1NQUMgb3ZlciBhIFBDSSBjb25uZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXG4gMjUxOlx0XHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI1MjpcdFxuIDI1MzpcdGNvbmZpZyBEV01BQ19TVElcbiAyNTQ6XHRcdHRyaXN0YXRlIFwmIzM0O1NUaSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyNTU6XHRcdGRlZmF1bHQgQVJDSF9TVElcbiAyNTY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NUSSB8fCBDT01QSUxFX1RFU1QpXG4gMjU3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI1ODpcdFx0aGVscFxuIDI1OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUaSBTT0NzLlxuIDI2MDpcdFxuIDI2MTpcdFx0ICBUaGlzIHNlbGVjdHMgU1RpIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAyNjI6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUaSBzZXJpZXNcbiAyNjM6XHRcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjY0Olx0XG4gMjY1Olx0Y29uZmlnIERXTUFDX1NUTTMyXG4gMjY2Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE0zMiBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMjY3Olx0XHRkZWZhdWx0IEFSQ0hfU1RNMzJcbiAyNjg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RNMzIgfHwgQ09NUElMRV9URVNUKVxuIDI2OTpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyNzA6XHRcdGhlbHBcbiAyNzE6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBTVE0zMiBTT0NzLlxuIDI3MjpcdFxuIDI3MzpcdFx0ICBUaGlzIHNlbGVjdHMgU1RNMzIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDI3NDpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RNMzIgc2VyaWVzXG4gMjc1Olx0XHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI3NjpcdFxuIDI3NzpcdGNvbmZpZyBEV01BQ19TVU5YSVxuIDI3ODpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDI3OTpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMjgwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMjgxOlx0XHRoZWxwXG4gMjgyOlx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBMjAvQTMxIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMjgzOlx0XG4gMjg0Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMjg1Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXG4gMjg2Olx0XHQgIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyODc6XHRcbiAyODg6XHRjb25maWcgRFdNQUNfU1VOOElcbiAyODk6XHRcdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyOTA6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDI5MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDI5MjpcdFx0c2VsZWN0IE1ESU9fQlVTX01VWFxuIDI5MzpcdFx0aGVscFxuIDI5NDpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgSDMgQTgzVCBBNjQgRU1BQyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyOTU6XHRcbiAyOTY6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAyOTc6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XG4gMjk4Olx0XHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyOTk6XHRcbiAzMDA6XHRjb25maWcgRFdNQUNfU1VONTVJXG4gMzAxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3VwcG9ydFwmIzM0O1xuIDMwMjpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMzAzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMzA0Olx0XHRzZWxlY3QgTURJT19CVVNfTVVYXG4gMzA1Olx0XHRoZWxwXG4gMzA2Olx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBNTIzL1Q1MjcgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVycy5cbiAzMDc6XHRcbiAzMDg6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAzMDk6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEE1MjMvVDUyN1xuIDMxMDpcdFx0ICBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzExOlx0XG4gMzEyOlx0Y29uZmlnIERXTUFDX1RIRUFEXG4gMzEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtULUhFQUQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDMxNDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxuIDMxNTpcdFx0aGVscFxuIDMxNjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcbiAzMTc6XHRcbiAzMTg6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDMxOTpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIFQtSEVBRCBUSDE1MjBcbiAzMjA6XHRcdCAgZXRoZXJuZXQgY29udHJvbGxlci5cbiAzMjE6XHRcbiAzMjI6XHRjb25maWcgRFdNQUNfSU1YOFxuIDMyMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIElNWDggRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDMyNDpcdFx0ZGVmYXVsdCBBUkNIX01YQ1xuIDMyNTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVClcbiAzMjY6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMzI3Olx0XHRoZWxwXG4gMzI4Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIGkuTVg4IFNPQ3MuXG4gMzI5Olx0XG4gMzMwOlx0XHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDMzMTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuIDMzMjpcdFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzMzOlx0XG4gMzM0Olx0Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbiAzMzU6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IENPTU1PTl9DTEtcbiAzMzc6XHRcdGhlbHBcbiAzMzg6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gSW50ZWwgU29Dc1xuIDMzOTpcdFxuIDM0MDpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAzNDE6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcbiAzNDI6XHRcdCAgU29DLlxuIDM0MzpcdFxuIDM0NDpcdGNvbmZpZyBEV01BQ19MT09OR1NPTjFcbiAzNDU6XHRcdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uMSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAzNDY6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXG4gMzQ3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcbiAzNDg6XHRcdGhlbHBcbiAzNDk6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTY3MwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIFNUTU1BQ19QQ0kgaW4gS2NvbmZpZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgU1RNTUFDX1BDSWAgaXMgZGVmaW5lZCwgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFBDSSBpbnRlcmZhY2Ugb2YgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIE15IGJlc3Qgc3RhcnRpbmcgcG9pbnQgaXMgZ29pbmcgdG8gYmUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgYSBLY29uZmlnIG9wdGlvbiBnaXZlbiB0aGUgbGlrZWx5IG5hbWUgc3RydWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NUTU1BQ19QQ0kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD05OD1UaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBgQ09ORklHX1NUTU1BQ19FVEhgYDpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtOTktIC0gYGBDT05GSUdfU1RNTUFDX1BMQVRGT1JNYGA6IGlzIHRvIGVuYWJsZSB0aGUgcGxhdGZvcm0gZHJpdmVyLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDoxMDA6IC0gYGBDT05GSUdfU1RNTUFDX1BDSWBgOiBpcyB0byBlbmFibGUgdGhlIHBjaSBkcml2ZXIuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTEwMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXHQmIzQzOz0gc3RtbWFjX2xpYnBjaS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfU1RNTUFDX1BDSSlcdCYjNDM7PSBzdG1tYWMtcGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcdCYjNDM7PSBkd21hYy1pbnRlbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjYwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSB0aGlua2luZywgbGluZSA0MDcgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiB0aGVzZSBmaWxlcy4gVGhhdCBzZWN0aW9uIGlzIGxpa2VseSBnb2luZyB0byBob2xkIHNvbWUgaW1wb3J0YW50IGNsdWVzIGFib3V0IHdoYXQgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkmIzM5O3JlIGVuYWJsZWQsIGFuZCBwb3RlbnRpYWxseSBhbnkgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgdmFyaW91cyBQSFkgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvcHRpb25zLCBvciBtYXliZSBldmVuIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1RNTUFDIGl0c2VsZi4gTGV0JiMzOTtzIGdldCB0byB0aGUgc3BlY2lmaWNzIGFuZCBzZWUgd2hhdCYjMzk7cyBvbiBvZmZlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4gMzk1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcbiAzOTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4gMzk3Olx0XG4gMzk4Olx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuIDM5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuIDQwMTpcdFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcbiA0MDI6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDAzOlx0XHRoZWxwXG4gNDA0Olx0XHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxuIDQwNTpcdFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cbiA0MDY6XHRcbiA0MDc6XHRjb25maWcgU1RNTUFDX1BDSVxuIDQwODpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuIDQwOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MTA6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDQxMTpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MTI6XHRcdGhlbHBcbiA0MTM6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gNDE0Olx0XHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxuIDQxNTpcdFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXG4gNDE2Olx0XG4gNDE3Olx0XHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXG4gNDE4Olx0XG4gNDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gNDIwOlx0ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDA0CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgU1RNTUFDYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGNvbmZpZ3VyYXRpb25zLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIEhtbSwgaXQgc2VlbXMgYFBIWUxJTktgIGlzIGRpcmVjdGx5IHRpZWQgdG8gYFNUTU1BQ19FVEhgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBvZnRlbiBzZWUgdGhhdCBjb25maWd1cmF0aW9uLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gYHBoeWxpbmtgIGlzbiYjMzk7dCBleGNsdXNpdmUgdG8gdGhlIFNUTU1BQyB3b3JsZC4gSSBzZWUgdGhhdCBgcGh5bGlua2AgaXMgYWxzbyByZWZlcmVuY2VkIGJ5IHRoZSBBU0lYIFVTQiBMQU4gY2hpcHMsIHNwZWNpZmljYWxseSBgVVNCX0xBTjc4WFhgIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gVGhhdCBtZWFucyBJIHNob3VsZCBhbHNvIGNoZWNrIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgdG8gc2VlIHRoZSBjb25kaXRpb25zIG9mIHRob3NlIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0xBTjc4WFgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9OTk9Y29uZmlnIFVTQl9SVEw4MTUyXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTEyLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTEzOmNvbmZpZyBVU0JfTEFONzhYWFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE0LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDAyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFVTQiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBVU0IgbmV0d29yayBkcml2ZXJzIGFyZSBjb25maWd1cmVkIGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIGFyb3VuZCBsaW5lIDExMy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIFVTQiBuZXR3b3JrIGRyaXZlciBzdWJzeXN0ZW0uIEl0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdldCBhIGZlZWwgZm9yIHRoZSBjb25maWd1cmFibGUgZWxlbWVudHMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrIGFuZCBVU0IgY29yZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgcmVsZXZhbnQgYENPTkZJR19gIG9wdGlvbnMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBmZWF0dXJlcywgYW5kIHBlcmhhcHMgc29tZSBoZWxwZnVsIGNvbW1lbnRzIHRoYXQgY2xhcmlmeSB0aGUgcHVycG9zZSBvZiBlYWNoIHNldHRpbmcuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaWYgbmVlZGVkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDExMTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcjgxNTIuXG4gMTEyOlx0XG4gMTEzOlx0Y29uZmlnIFVTQl9MQU43OFhYXG4gMTE0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgTEFONzhYWCBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbiAxMTU6XHRcdHNlbGVjdCBNSUlcbiAxMTY6XHRcdHNlbGVjdCBQSFlMSU5LXG4gMTE3Olx0XHRzZWxlY3QgTUlDUk9DSElQX1BIWVxuIDExODpcdFx0c2VsZWN0IENSQzMyXG4gMTE5Olx0XHRpbXBseSBORVRfU0VMRlRFU1RTXG4gMTIwOlx0XHRoZWxwXG4gMTIxOlx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgTWljcm9jaGlwIExBTjc4WFggYmFzZWQgVVNCIDJcbiAxMjI6XHRcdCAgXHUwMDI2IFVTQiAzIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJzLlxuIDEyMzpcdFx0ICBMQU43ODAwIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlclxuIDEyNDpcdFx0ICBMQU43ODUwIDogVVNCIDIgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlclxuIDEyNTpcdFx0ICBMQU43ODAxIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlciAoTUFDIG9ubHkpXG4gMTI2Olx0XG4gMTI3Olx0XHQgIFByb3BlciBQSFkgZHJpdmVyIGlzIHJlcXVpcmVkIGZvciBMQU43ODAxLlxuIDEyODpcdFxuIDEyOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwMTAKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipRdWljayBQSFkgTGF5ZXIgQ29uc2lkZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgVVNCIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgYFVTQl9MQU43OFhYYCBkcml2ZXIgY2xlYXJseSBob29rcyBpbnRvIGBQSFlMSU5LYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBhbmQgbWFrZXMgc2Vuc2U7IHRoZSBMQU43OFhYIGxpa2VseSByZWxpZXMgb24gYSBQSFkgYWJzdHJhY3Rpb24uIEJ1dCB3aGF0IGFib3V0IHRoZSBgVVNCX05FVF9BWDg4MTdYYCBkcml2ZXI/IEkgbmVlZCB0byBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24uIERvZXMgaXQgYWxzbyB1c2UgYFBIWUxJTktgLCBvciBkb2VzIGl0IG1hbmFnZSB0aGUgUEhZIGxheWVyIGRpcmVjdGx5PyBVbmRlcnN0YW5kaW5nIHRoaXMgZGlzdGluY3Rpb24gaXMgY3J1Y2lhbCBmb3IgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkgbXVzdCBsb29rIGludG8gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9ORVRfQVg4ODE3WCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMzI9Y29uZmlnIFVTQl9VU0JORVRcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjUtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxNjY6Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVx0dHJpc3RhdGUgXCYjMzQ7QVNJWCBBWDg4eHh4IEJhc2VkIFVTQiAyLjAgRXRoZXJuZXQgQWRhcHRlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzMTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgVVNCIE5ldHdvcmtpbmcgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgVVNCIG5ldHdvcmtpbmcuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBzb21lIG9mIHRoZXNlIG9wdGlvbnMsIHNvIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gU3BlY2lmaWNhbGx5LCBJIHJlY2FsbCB0aGVyZSBiZWluZyBhIGNydWNpYWwgc2VjdGlvbiBhcm91bmQgbGluZSAxNjYgdGhhdCBkZWFscyB3aXRoIHRoZSBjb3JlIFVTQiBuZXR3b3JrIGRldmljZSBvcHRpb25zLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBiZWdpbi4gSSYjMzk7bSBhaW1pbmcgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGRpZmZlcmVudCBkcml2ZXJzIGFuZCB0aGUgY29uZmlndXJhYmlsaXR5IGV4cG9zZWQgdG8gdGhlIHVzZXIuIFRoaXMgaXMgcHJvYmFibHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBteSBjdXJyZW50IHRhc2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MDpcdFxuIDE2MTpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgXHUwMDNjaHR0cDovL3d3dy5saW51eC11c2Iub3JnL3VzYm5ldC9cdTAwM2UuXG4gMTYyOlx0XG4gMTYzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE2NDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdXNibmV0LlxuIDE2NTpcdFxuIDE2NjpcdGNvbmZpZyBVU0JfTkVUX0FYODgxN1hcbiAxNjc6XHRcdHRyaXN0YXRlIFwmIzM0O0FTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4gMTY4Olx0XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbiAxNjk6XHRcdHNlbGVjdCBDUkMzMlxuIDE3MDpcdFx0c2VsZWN0IFBIWUxJTktcbiAxNzE6XHRcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcbiAxNzI6XHRcdGltcGx5IE5FVF9TRUxGVEVTVFNcbiAxNzM6XHRcdGRlZmF1bHQgeVxuIDE3NDpcdFx0aGVscFxuIDE3NTpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIEFTSVggQVg4OHh4eCBiYXNlZCBVU0IgMi4wXG4gMTc2Olx0XHQgIDEwLzEwMCBFdGhlcm5ldCBhZGFwdGVycy5cbiAxNzc6XHRcbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgc2hvdWxkIHdvcmsgd2l0aCBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIGRldmljZXM6XG4gMTc5Olx0XHQgICAgKiBBdGVuIFVDMjEwVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgyMwoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDM3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9uYWwgQ2hhbmdlcyBpbiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGBVU0JfTkVUX0FYODgxN1hgIGFsc28gcHVsbHMgaW4gYFBIWUxJTktgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuIE5vdywgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGBwaHlsaW5rX2V4cGVjdHNfcGh5YD8gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBnZXQgdG91Y2hlZCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEFoLCB5ZXMsIHRoZSBwYXRjaCByZW1vdmVzIHRoZSBjaGVjayBgKHBsLSZndDtjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQgJmFtcDsmYW1wOyBwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3oocGwtJmd0O2xpbmtfaW50ZXJmYWNlKSlgIGZyb20gYm90aCBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgLiBUaGlzIG1lYW5zIHRoZSBmdW5jdGlvbiB3aWxsIG5vdyByZXR1cm4gdHJ1ZSBmb3IgYE1MT19BTl9JTkJBTkRgIHdpdGggYW4gYDgwMjN6YCBpbnRlcmZhY2UgbW9kZSwgd2hlcmVhcyBiZWZvcmUsIGl0IHdvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UuIERlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGVyZS4KCkxldCYjMzk7cyBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIGBzdG1tYWNfaW5pdF9waHlgLiBTY2FubmluZyB0aGUgY29kZSBhZ2Fpbi4uLgoKYGBgYwoJCWlmIChhZGRyICZsdDsgMCkgewoJCQkvKiBJZiBhIGN1c3RvbSBQQ1MgaXMgaW4gdXNlLCBubyBQSFkgaXMgbmVlZGVkICovCgkJCWlmIChwcml2LSZndDtody0mZ3Q7cGh5bGlua19wY3MpCgkJCQlyZXR1cm4gMDsKCgkJCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O25vIHBoeSBmb3VuZFxuJiMzNDspOwoJCQlyZXR1cm4gLUVOT0RFVjsKCQl9CmBgYAoKT2theSwgdGhlIHNhbWUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgYWxzbyBwcmVzZW50IGluIGBzdG1tYWNfaW5pdF9waHlgLgoKUmlnaHQsIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBnaXZpbmcgYSB0aG9yb3VnaCBmdXp6aW5nLiBXZSBzaG91bGQgZW5hYmxlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIEhhbmcgb24sIHRob3VnaC4gYFNUTU1BQ19QQ0lgIGRlcGVuZHMgb24gYENPTU1PTl9DTEtgLiBJJiMzOTtsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT01NT05fQ0xLYCBpcyBhdmFpbGFibGUgaW4gdGhlIHg4Nl82NCBlbnZpcm9ubWVudC4gV2UgY2FuJiMzOTt0IHdhc3RlIHRpbWUgb24gYSBjb25maWd1cmF0aW9uIHRoYXQgd29uJiMzOTt0IGJ1aWxkLiBMZXQgbWUgY2hlY2suLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENPTU1PTl9DTEsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwOTYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnPTIxMD1jb25maWcgSEFWRV9BVDkxX1VTQl9DTEtcbi0tXG5hcmNoL2FybS9tYWNoLWF0OTEvS2NvbmZpZy0yMTItXG5hcmNoL2FybS9tYWNoLWF0OTEvS2NvbmZpZzoyMTM6Y29uZmlnIENPTU1PTl9DTEtfQVQ5MVxuYXJjaC9hcm0vbWFjaC1hdDkxL0tjb25maWctMjE0LVx0Ym9vbFxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWc9MTI9Y29uZmlnIEhBVkVfTEVHQUNZX0NMSyAjIFRPRE86IFJlbW92ZSBvbmNlIGFsbCBsZWdhY3kgdXNlcnMgYXJlIG1pZ3JhdGVkXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjE6bWVudWNvbmZpZyBDT01NT05fQ0xLXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtDb21tb24gQ2xvY2sgRnJhbWV3b3JrXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZz0zND1pZiBDT01NT05fQ0xLXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzozNjpjb25maWcgQ09NTU9OX0NMS19XTTgzMVhcbmRyaXZlcnMvY2xrL0tjb25maWctMzctXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFdNODMxeC8yeCBQTUlDc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWc9NTM9Y29uZmlnIExNSzA0ODMyXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy02MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NjE6Y29uZmlnIENPTU1PTl9DTEtfQVBQTEVfTkNPXG5kcml2ZXJzL2Nsay9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBBcHBsZSBTb0MgTkNPc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNjgtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjY5OmNvbmZpZyBDT01NT05fQ0xLX01BWDc3Njg2XG5kcml2ZXJzL2Nsay9LY29uZmlnLTcwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNYXhpbSA3NzYyMC83NzY4Ni83NzgwMiBNRkRcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTc1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo3Njpjb25maWcgQ09NTU9OX0NMS19NQVg5NDg1XG5kcml2ZXJzL2Nsay9LY29uZmlnLTc3LVx0dHJpc3RhdGUgXCYjMzQ7TWF4aW0gOTQ4NSBQcm9ncmFtbWFibGUgQ2xvY2sgR2VuZXJhdG9yXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy04MS1cbmRyaXZlcnMvY2xrL0tjb25maWc6ODI6Y29uZmlnIENPTU1PTl9DTEtfUks4MDhcbmRyaXZlcnMvY2xrL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFJLODA1L1JLODA4L1JLODA5L1JLODE3L1JLODE4XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy04OS1cbmRyaXZlcnMvY2xrL0tjb25maWc6OTA6Y29uZmlnIENPTU1PTl9DTEtfUlAxXG5kcml2ZXJzL2Nsay9LY29uZmlnLTkxLVx0dHJpc3RhdGUgXCYjMzQ7UmFzcGJlcnJ5IFBpIFJQMS1iYXNlZCBjbG9jayBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy05OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6OTk6Y29uZmlnIENPTU1PTl9DTEtfSEk2NTVYXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEwMC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgSGk2NTV4XCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTA4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxMDk6Y29uZmlnIENPTU1PTl9DTEtfU0NNSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMTAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgY29udHJvbGxlZCB2aWEgU0NNSSBpbnRlcmZhY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTExOC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTE5OmNvbmZpZyBDT01NT05fQ0xLX1NDUElcbmRyaXZlcnMvY2xrL0tjb25maWctMTIwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGNvbnRyb2xsZWQgdmlhIFNDUEkgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMjgtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjEyOTpjb25maWcgQ09NTU9OX0NMS19TSTUzNDFcbmRyaXZlcnMvY2xrL0tjb25maWctMTMwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTM0MSBhbmQgNTM0MCBBL0IvQy9EIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEzOS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTQwOmNvbmZpZyBDT01NT05fQ0xLX1NJNTM1MVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNDEtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzUxQS9CL0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0Ny1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTQ4OmNvbmZpZyBDT01NT05fQ0xLX1NJNTE0XG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0OS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDUxNCBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNTYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE1Nzpjb25maWcgQ09NTU9OX0NMS19TSTU0NFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNTgtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1NDQgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTY0LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNjU6Y29uZmlnIENPTU1PTl9DTEtfU0k1NzBcbmRyaXZlcnMvY2xrL0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTcwIGFuZCBjb21wYXRpYmxlIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3My1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTc0OmNvbmZpZyBDT01NT05fQ0xLX0JNMTg4MFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNzUtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQml0bWFpbiBCTTE4ODAgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODAtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE4MTpjb25maWcgQ09NTU9OX0NMS19DRENFNzA2XG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4Mi1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgVEkgQ0RDRTcwNiBjbG9jayBzeW50aGVzaXplclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTg3LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxODg6Y29uZmlnIENPTU1PTl9DTEtfVFBTNjg0NzBcbmRyaXZlcnMvY2xrL0tjb25maWctMTg5LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgRHJpdmVyIGZvciBUSSBUUFM2ODQ3MCBQTUlDXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xOTUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE5Njpjb25maWcgQ09NTU9OX0NMS19DRENFOTI1XG5kcml2ZXJzL2Nsay9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgVEkgQ0RDRTkxMy85MjUvOTM3Lzk0OSBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTItXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIxMzpjb25maWcgQ09NTU9OX0NMS19DUzIwMDBfQ1BcbmRyaXZlcnMvY2xrL0tjb25maWctMjE0LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBDUzIwMDAgRnJhY3Rpb25hbC1OIENsb2NrIFN5bnRoZXNpemVyIFx1MDAyNiBDbG9jayBNdWx0aXBsaWVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTktXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIyMDpjb25maWcgQ09NTU9OX0NMS19FTjc1MjNcbmRyaXZlcnMvY2xrL0tjb25maWctMjIxLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEFpcm9oYS9FY29OZXQgU29DIHN5c3RlbSBjbG9ja3NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIyOC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjI5OmNvbmZpZyBDT01NT05fQ0xLX0VQOTNYWFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIENpcnJ1cyBMb2dpYyBlcDkzeHggU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIzNzpjb25maWcgQ09NTU9OX0NMS19FWUVRXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciB0aGUgTW9iaWxleWUgRXllUSBwbGF0Zm9ybVwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMjQ3LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoyNDg6Y29uZmlnIENPTU1PTl9DTEtfRlNMX0ZMRVhTUElcbmRyaXZlcnMvY2xrL0tjb25maWctMjQ5LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBGbGV4U1BJIG9uIExheWVyc2NhcGUgU29Dc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMjU1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoyNTY6Y29uZmlnIENPTU1PTl9DTEtfRlNMX1NBSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNTctXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQkNMSyBvZiBGcmVlc2NhbGUgU0FJIGNvcmVzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNjctXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI2ODpjb25maWcgQ09NTU9OX0NMS19HRU1JTklcbmRyaXZlcnMvY2xrL0tjb25maWctMjY5LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNzYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI3Nzpjb25maWcgQ09NTU9OX0NMS19MQU45NjZYXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgQ2xvY2sgQ29udHJvbGxlciBkcml2ZXIgZm9yIExBTjk2NlggU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yODYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI4Nzpjb25maWcgQ09NTU9OX0NMS19TMk1QUzExXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI4OC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgUzJNUFMxWC9TNU04NzY3IE1GRFwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWc9MzA0PWNvbmZpZyBDTEtfVFdMNjA0MFxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzExLVxuZHJpdmVycy9jbGsvS2NvbmZpZzozMTI6Y29uZmlnIENPTU1PTl9DTEtfQVhJX0NMS0dFTlxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMTMtXHR0cmlzdGF0ZSBcJiMzNDtBWEkgY2xrZ2VuIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWc9MzI4PWNvbmZpZyBDTEtfTFMxMDI4QV9QTExESUdcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMzNy1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzM4OmNvbmZpZyBDT01NT05fQ0xLX1hHRU5FXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMzOS1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBBUE0gWEdlbmUgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNDQtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM0NTpjb25maWcgQ09NTU9OX0NMS19MT0NITkFHQVJcbmRyaXZlcnMvY2xrL0tjb25maWctMzQ2LVx0dHJpc3RhdGUgXCYjMzQ7Q2lycnVzIExvZ2ljIExvY2huYWdhciBjbG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM1MS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzUyOmNvbmZpZyBDT01NT05fQ0xLX05QQ004WFhcbmRyaXZlcnMvY2xrL0tjb25maWctMzUzLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciB0aGUgTlBDTThYWCBTb0MgRmFtaWx5XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNjAtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM2MTpjb25maWcgQ09NTU9OX0NMS19MT09OR1NPTjJcbmRyaXZlcnMvY2xrL0tjb25maWctMzYyLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIExvb25nc29uLTIgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNjktXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM3MDpjb25maWcgQ09NTU9OX0NMS19OWFBcbmRyaXZlcnMvY2xrL0tjb25maWctMzcxLVx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBBUkNIX0xQQzMyWFgpXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzYtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM3Nzpjb25maWcgQ09NTU9OX0NMS19QQUxNQVNcbmRyaXZlcnMvY2xrL0tjb25maWctMzc4LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBUSSBQYWxtYXMgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzgzLVxuZHJpdmVycy9jbGsvS2NvbmZpZzozODQ6Y29uZmlnIENPTU1PTl9DTEtfUFdNXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4NS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgUFdNcyB1c2VkIGFzIGNsb2NrIG91dHB1dHNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM5MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzkxOmNvbmZpZyBDT01NT05fQ0xLX1BYQVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTItXHRkZWZfYm9vbCBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiBBUkNIX1BYQVxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzk1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzozOTY6Y29uZmlnIENPTU1PTl9DTEtfUlM5X1BDSUVcbmRyaXZlcnMvY2xrL0tjb25maWctMzk3LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIDktc2VyaWVzIFBDSWUgY2xvY2sgZ2VuZXJhdG9yc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDA0LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0MDU6Y29uZmlnIENPTU1PTl9DTEtfU0k1MjFYWFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MDYtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNreVdvcmtzIFNpNTIxeHggUENJZSBjbG9jayBnZW5lcmF0b3JzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MTMtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQxNDpjb25maWcgQ09NTU9OX0NMS19WQzNcbmRyaXZlcnMvY2xrL0tjb25maWctNDE1LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhQ2xvY2sgMyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjItXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQyMzpjb25maWcgQ09NTU9OX0NMS19WQzVcbmRyaXZlcnMvY2xrL0tjb25maWctNDI0LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBJRFQgVmVyc2FDbG9jayA1LDYgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDMxLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0MzI6Y29uZmlnIENPTU1PTl9DTEtfVkM3XG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgUmVuZXNhcyBWZXJzYWNsb2NrIDcgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDQwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NDE6Y29uZmlnIENPTU1PTl9DTEtfU1RNMzJGXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ0Mi1cdGRlZl9ib29sIENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IChNQUNIX1NUTTMyRjQyOSB8fCBNQUNIX1NUTTMyRjQ2OSB8fCBNQUNIX1NUTTMyRjc0Nilcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ0NS1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDQ2OmNvbmZpZyBDT01NT05fQ0xLX1NUTTMySDdcbmRyaXZlcnMvY2xrL0tjb25maWctNDQ3LVx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgTUFDSF9TVE0zMkg3NDNcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDUxOmNvbmZpZyBDT01NT05fQ0xLX01NUDJcbmRyaXZlcnMvY2xrL0tjb25maWctNDUyLVx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKE1BQ0hfTU1QMl9EVCB8fCBNQUNIX01NUDNfRFQpXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ1Njpjb25maWcgQ09NTU9OX0NMS19NTVAyX0FVRElPXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1Ny0gICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTU1QMiBBdWRpbyBzdWJzeXN0ZW1cJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2MS1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDYyOmNvbmZpZyBDT01NT05fQ0xLX0JENzE4WFhcbmRyaXZlcnMvY2xrL0tjb25maWctNDYzLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciAzMksgY2xrIGdhdGVzIG9uIFJPSE0gUE1JQ3NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDY5OmNvbmZpZyBDT01NT05fQ0xLX0ZJWEVEX01NSU9cbmRyaXZlcnMvY2xrL0tjb25maWctNDcwLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lbW9yeSBNYXBwZWQgRml4ZWQgdmFsdWVzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00NzUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ3Njpjb25maWcgQ09NTU9OX0NMS19LMjEwXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ3Ny1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMTAgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODItXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ4Mzpjb25maWcgQ09NTU9OX0NMS19LMjMwXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4NC1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMzAgU29DXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODgtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ4OTpjb25maWcgQ09NTU9OX0NMS19TUDcwMjFcbmRyaXZlcnMvY2xrL0tjb25maWctNDkwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTdW5wbHVzIFNQNzAyMSBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ5OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDk5OmNvbmZpZyBDT01NT05fQ0xLX1JQTUlcbmRyaXZlcnMvY2xrL0tjb25maWctNTAwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGJhc2VkIG9uIFJJU0MtViBSUE1JXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWctMi1cbmRyaXZlcnMvY2xrL2FzcGVlZC9LY29uZmlnOjM6Y29uZmlnIENPTU1PTl9DTEtfQVNQRUVEXG5kcml2ZXJzL2Nsay9hc3BlZWQvS2NvbmZpZy00LSAgICAgICAgYm9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEFzcGVlZCBCTUMgU29Dc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9LY29uZmlnLTE0LVxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWc6MTU6Y29uZmlnIENPTU1PTl9DTEtfQVNUMjcwMFxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWctMTYtICAgICAgICBib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQVNUMjcwMCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9iY20vS2NvbmZpZz00OT1jb25maWcgQ0xLX0JDTV9LT05BXG4tLVxuZHJpdmVycy9jbGsvYmNtL0tjb25maWctNTctXG5kcml2ZXJzL2Nsay9iY20vS2NvbmZpZzo1ODpjb25maWcgQ09NTU9OX0NMS19JUFJPQ1xuZHJpdmVycy9jbGsvYmNtL0tjb25maWctNTktXHRib29sXG4tLVxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy0yLVxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZzozOmNvbmZpZyBDT01NT05fQ0xLX0VTV0lOXG5kcml2ZXJzL2Nsay9lc3dpbi9LY29uZmlnLTQtXHRib29sXG5kcml2ZXJzL2Nsay9lc3dpbi9LY29uZmlnLTUtXG5kcml2ZXJzL2Nsay9lc3dpbi9LY29uZmlnOjY6Y29uZmlnIENPTU1PTl9DTEtfRUlDNzcwMFxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7RUlDNzcwMCBDbG9jayBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6Mjpjb25maWcgQ09NTU9OX0NMS19ISTM1MTZDVjMwMFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0hJMzUxNkNWMzAwIENsb2NrIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTktXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzoxMDpjb25maWcgQ09NTU9OX0NMS19ISTM1MTlcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7SGkzNTE5IENsb2NrIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTE3LVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6MTg6Y29uZmlnIENPTU1PTl9DTEtfSEkzNTU5QVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMTktXHRib29sIFwmIzM0O0hpMzU1OUEgQ2xvY2sgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMjUtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzoyNjpjb25maWcgQ09NTU9OX0NMS19ISTM2NjBcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTI3LVx0Ym9vbCBcJiMzNDtIaTM2NjAgQ2xvY2sgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMzItXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzozMzpjb25maWcgQ09NTU9OX0NMS19ISTM2NzBcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtIaTM2NzAgQ2xvY2sgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMzktXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzo0MDpjb25maWcgQ09NTU9OX0NMS19ISTM3OThDVjIwMFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctNDEtXHR0cmlzdGF0ZSBcJiMzNDtIaTM3OThDVjIwMCBDbG9jayBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy00Ny1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnOjQ4OmNvbmZpZyBDT01NT05fQ0xLX0hJNjIyMFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctNDktXHRib29sIFwmIzM0O0hpNjIyMCBDbG9jayBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9pbWd0ZWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9jbGsvaW1ndGVjL0tjb25maWc6Mjpjb25maWcgQ09NTU9OX0NMS19CT1NUT05cbmRyaXZlcnMvY2xrL2ltZ3RlYy9LY29uZmlnLTMtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTUlQUyBCb3N0b24gYm9hcmRzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsva2V5c3RvbmUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9jbGsva2V5c3RvbmUvS2NvbmZpZzoyOmNvbmZpZyBDT01NT05fQ0xLX0tFWVNUT05FXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXJzIGZvciBLZXlzdG9uZSBiYXNlZCBTT0NzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZz01PW1lbnUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTctXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjg6Y29uZmlnIENPTU1PTl9DTEtfTUVESUFURUtcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctOS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMy1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTQ6Y29uZmlnIENPTU1PTl9DTEtfTUVESUFURUtfRkhDVExcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTUtXHRib29sIFwmIzM0O2Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgRkhDVEwgaGFyZHdhcmUgY29udHJvbFwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjAtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIxOmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMi1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDFcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyOTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfTU1TWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzAtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzAxIG1tc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNC1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzU6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzAxX0lNR1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDEgaW1nc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy00MC1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6NDE6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzAxX1ZERUNTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNDItXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzAxIHZkZWNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTQ2LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo0Nzpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfSElGU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBoaWZzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTUyLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo1Mzpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfRVRIU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTU0LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBldGhzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTU4LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo1OTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfQkRQU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTYwLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBiZHBzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTY0LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo2NTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfQVVEU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTY2LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhdGVrIE1UMjcwMSBhdWRzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTcwLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo3MTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfRzNEU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTcyLVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBnM2RzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTc2LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo3Nzpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMlwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctODQtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjg1OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9CRFBTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctODYtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBiZHBzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTkwLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo5MTpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJfSU1HU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTkyLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTIgaW1nc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05Ni1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6OTc6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX0pQR0RFQ1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05OC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzEyIGpwZ2RlY3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTAyLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMDM6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX01GR0NGR1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBtZmdjZmdcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEwOC1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTA5OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9NTVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMTAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBtbXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTE0LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMTU6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX1ZERUNTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTE2LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTIgdmRlY3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTIwLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMjE6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX1ZFTkNTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTIyLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTIgdmVuY3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTI2LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMjc6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzM1XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEyOC1cdHRyaXN0YXRlIFwmIzM0O01haW4gY2xvY2sgZHJpdmVycyBmb3IgTWVkaWFUZWsgTVQ2NzM1XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMzUtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjEzNjpjb25maWcgQ09NTU9OX0NMS19NVDY3MzVfSU1HU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEzNy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IGltZ3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTQyLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxNDM6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzM1X01GR0NGR1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNDQtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjczNSBtZmdjZmdcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE0OS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTUwOmNvbmZpZyBDT01NT05fQ0xLX01UNjczNV9WREVDU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IHZkZWNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTU3OmNvbmZpZyBDT01NT05fQ0xLX01UNjczNV9WRU5DU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1OC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IHZlbmNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE2My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTY0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNjUtICAgICAgIGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NjVcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTcyOmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NV9BVURJT1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNzMtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IGF1ZGlvc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNzctXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE3ODpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfQ0FNU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE3OS0gICAgICAgdHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NjUgY2Ftc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xODMtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE4NDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfR0NFU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE4NS0gICAgICAgdHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NjUgZ2Nlc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xODktXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE5MDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTU1TWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTkxLSAgICAgICB0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtbXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTk1LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxOTY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X0lNR1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xOTctICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IGltZ3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjAxLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMDI6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X1ZDT0RFQ1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMDMtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IHZjb2RlY3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjA3LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMDg6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01GR1NZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMDktICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1mZ3N5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjEzLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMTQ6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkwQVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMTUtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkwYXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjE5LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMjA6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkwQlNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMjEtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkwYnN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjI1LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMjY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkxQVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMjctICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkxYXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjMxLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMzI6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkxQlNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMzMtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkxYnN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjM3LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMzg6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkyQVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMzktICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkyYXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjQzLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyNDQ6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X01JUEkyQlNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNDUtICAgICAgIHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IG1pcGkyYnN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjQ5LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyNTA6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI1MS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNTctXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI1ODpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfTU1TWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjU5LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgbW1zeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI2My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MjY0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9JTUdTWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjY1LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgaW1nc3lzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNjktXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI3MDpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfSVBFU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI3MS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5IGlwZXN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjc1LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyNzY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5X0NBTVNZU1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNzctXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc3OSBjYW1zeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4MS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MjgyOmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9WREVDU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4My1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5IHZkZWNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4Ny1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6Mjg4OmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9WRU5DU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4OS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5IHZlbmNzeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI5My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6Mjk0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9NRkdDRkdcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjk1LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgbWZnY2ZnXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yOTktXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMwMDpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfQVVEU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMwMS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWF0ZWsgTVQ2Nzc5IGF1ZHN5c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzA1LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozMDY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk1XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMwNy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zMTUtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMxNjpjb25maWcgQ09NTU9OX0NMS19NVDY3OTVfTUZHQ0ZHXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMxNy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1IG1mZ2NmZ1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzIyLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozMjM6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk1X01NU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMyNC0gICAgICAgdHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTUgbW1zeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMyOS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzMwOmNvbmZpZyBDT01NT05fQ0xLX01UNjc5NV9WREVDU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMzMS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1IFZERUNTWVNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMzNi1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzM3OmNvbmZpZyBDT01NT05fQ0xLX01UNjc5NV9WRU5DU1lTXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMzOC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1IFZFTkNTWVNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTM0My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzQ0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc5N1xuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNDUtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk3XCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNTEtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjM1Mjpjb25maWcgQ09NTU9OX0NMS19NVDY3OTdfTU1TWVNcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzUzLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTcgbW1zeXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTM1Ny1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzU4OmNvbmZpZyBDT01NT05fQ0xLX01UNjc5N19JTUdTWVNcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxNDoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQ4NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgQ09NTU9OX0NMS2AgaXMgdGhlIENvbW1vbiBDbG9jayBGcmFtZXdvcmsmIzM5O3MgZ2VuZXJpYyBjb25maWcuIEl0JiMzOTtzIHBlcnZhc2l2ZSwgZXNwZWNpYWxseSBvbiBhcmNoaXRlY3R1cmVzIGxpa2UgeDg2XzY0OyBpdCYjMzk7cyBwcmFjdGljYWxseSBiYWtlZCBpbiwgb2Z0ZW4gYnkgaW5oZXJpdGFuY2UuICBKdXN0IHRvIGJlIHN1cmUsIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgQ09NTU9OX0NMS2AgaXMgYSBgYm9vbGAgYW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgZW5hYmxlZCBpbiB0aGUgc3l6a2FsbGVyJiMzOTtzIHg4Nl82NCBjb25maWcuCgpOb3csIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIHN5emthbGxlciBjb25maWcsIEkmIzM5O2xsIGZvY3VzIGRpcmVjdGx5IG9uIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEkganVzdCBuZWVkIHRvIG91dHB1dCB0aGUgKm11c3QtaGF2ZXMqLiBPa2F5LCB0aG9zZSB3b3VsZCBiZToKCiogICBgU1RNTUFDX0VUSGAKKiAgIGBTVE1NQUNfUENJYAoqICAgYFVTQl9MQU43OFhYYAoqICAgYFVTQl9ORVRfQVg4ODE3WGAKCldhaXQgYSBzZWNvbmQsIGBVU0JfTkVUX0FYODgxN1hgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQl9VU0JORVRgLiBCdXQsIGRvZXMgYFVTQl9MQU43OFhYYCBhbHNvIGRlcGVuZCBvbiBgVVNCX1VTQk5FVGA/IE5vLCBpdCYjMzk7cyBhIHNlbGYtY29udGFpbmVkIGRyaXZlci4gSSBzaG91bGQgY2hlY2sgYFVTQl9VU0JORVRgIGFueXdheSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9VU0JORVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTEzPWNvbmZpZyBVU0JfTEFONzhYWFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjEzMjpjb25maWcgVVNCX1VTQk5FVFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTMzLVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGktcHVycG9zZSBVU0IgTmV0d29ya2luZyBGcmFtZXdvcmtcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxMDIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUEhZIENvbm5lY3Rpb24gRnVuY3Rpb25zKioKCkFscmlnaHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBpbmNvcnBvcmF0ZSBgVVNCX1VTQk5FVGAgaW50byB0aGlzIHJldmlldy4gRmlyc3QsIEkmIzM5O2xsIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIEkgc2hvdWxkIGZvY3VzIG9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgc3RtbWFjX2luaXRfcGh5YC4gVGhlbiwgSSBuZWVkIHRvIHJlbWVtYmVyIGBwaHlsaW5rX2V4cGVjdHNfcGh5YC4gSSB3YXMganVzdCByZXZpZXdpbmcgYHBoeWxpbmtfYXR0YWNoX3BoeWAg4oCTIGFoLCB0aGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCBzbyB0aGF0IG1pZ2h0IGNoYW5nZSB0aGluZ3MuIE5vdywgSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgKmNhbGwqIHRoYXQgc3RhdGljIGZ1bmN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGFuYWx5emUgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19vZl9waHlfY29ubmVjdGAsIGFuZCBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgLiBUaGVzZSBsb29rIGxpa2UgdGhlIHByaW1hcnkgZXhwb3J0ZWQgaW50ZXJmYWNlcyB0aGF0IGV2ZW50dWFsbHkgaW50ZXJhY3Qgd2l0aCBgcGh5bGlua19hdHRhY2hfcGh5YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTk4Mj1zdGF0aWMgaW50IG1hY2JfcGh5bGlua19jb25uZWN0KHN0cnVjdCBtYWNiICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk5OS1cdFx0LyogYXR0YWNoIHRoZSBtYWMgdG8gdGhlIHBoeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDAwOlx0XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGJwLVx1MDAzZXBoeWxpbmssIHBoeWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwMDEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMyMTQ9c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY29ubmVjdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjI3LVx0XHRcdC8qIGF0dGFjaCB0aGUgbWFjIHRvIHRoZSBwaHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjI4Olx0XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoYWRhcHRlci1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMjktXHRcdH0gZWxzZSBpZiAoKChhZGFwdGVyLVx1MDAzZWNzci5pZF9yZXYgXHUwMDI2IElEX1JFVl9JRF9NQVNLXykgPT1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEzMTY9c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzNjY6XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzY3LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jPTE0MDY9c3RhdGljIGludCB0bjQwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jLTE0MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MC5jOjE0MTE6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaywgcHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz00NjI9c3RhdGljIGludCBuZ2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjQ3OTpcdGVyciA9IHBoeWxpbmtfY29ubmVjdF9waHkod3gtXHUwMDNlcGh5bGluaywgd3gtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy00ODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjMwMDpcdFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwaHlsaW5rLCB3eC1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0zMDEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIxOC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIxOTogKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjAtICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzItICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMzM6aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTItfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjUzOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjU0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2MS0gKiBDb25uZWN0IHRoZSBwaHkgc3BlY2lmaWVkIGluIHRoZSBkZXZpY2Ugbm9kZSBAZG4gdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2MjogKiBzcGVjaWZpZWQgYnkgQHBsLiBBY3Rpb25zIHNwZWNpZmllZCBpbiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgd2lsbCBiZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBlcmZvcm1lZC5cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzAzPXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X3BoeShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMy1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MTQ6XHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluaywgcHJpdi1cdTAwM2VwaHlkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI4NTg9c3RhdGljIGludCBsYW43OHh4X3BoeV9pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkwMS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjkwMjpcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoZGV2LVx1MDAzZXBoeWxpbmssIHBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDMtXHRpZiAocmV0KSB7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzI3PWJvb2wgcGh5bGlua19leHBlY3RzX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI4LVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzI5OmludCBwaHlsaW5rX2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICosIHN0cnVjdCBwaHlfZGV2aWNlICopO1xuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzMwLWludCBwaHlsaW5rX29mX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICosIHN0cnVjdCBkZXZpY2Vfbm9kZSAqLCB1MzIgZmxhZ3MpO1xuLS1cbm5ldC9kc2EvdXNlci5jPTI2Mzg9c3RhdGljIGludCBkc2FfdXNlcl9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYsIGludCBhZGRyLFxuLS1cbm5ldC9kc2EvdXNlci5jLTI2NTEtXG5uZXQvZHNhL3VzZXIuYzoyNjUyOlx0cmV0dXJuIHBoeWxpbmtfY29ubmVjdF9waHkoZHAtXHUwMDNlcGwsIHVzZXJfZGV2LVx1MDAzZXBoeWRldik7XG5uZXQvZHNhL3VzZXIuYy0yNjUzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNjQKCQkJCQkJCW91dHB1dDogMjM0CgkJCQkJCQl0aG91Z2h0czogMTk5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBQSFkgSW5pdGlhbGl6YXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhlIGNvZGUgcGF0aHMgaW52b2x2ZWQuIE15IHByaW1hcnkgZm9jdXMgaXMgb24gaG93IGl0IGNoYW5nZXMgUEhZIChQaHlzaWNhbCBMYXllcikgaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBgc3RtbWFjYCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIGBwaHlsaW5rYCBmcmFtZXdvcmsuIEkgc3RhcnRlZCBieSBpZGVudGlmeWluZyBrZXkgZnVuY3Rpb25zIHRoYXQgc2VlbSBjZW50cmFsIHRvIHRoZSBjaGFuZ2U6IGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCBpcyB1c2VkIGJyb2FkbHksIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBpcyBgc3RtbWFjX2luaXRfcGh5YC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgdGFyZ2V0cyBhcmUgbm90IGlubGluZWQsIHRoZXJlZm9yZSBmb2N1cyBvbiB0aGUgY2FsbGVycy4KClRoZSBtb3JlIEkgbG9vaywgYHN0bW1hY19pbml0X3BoeWAgaXMgc3RhdGljIGFuZCBpdCBjYWxscyBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmVuJiMzOTt0IHN0YXRpYy4gYHN0bW1hY19vcGVuYCB3aWxsIGJlIG15IGJlc3QgZm9jdXMgc3ltYm9sLiBgcGh5bGlua19leHBlY3RzX3BoeWAgaXMgZXhwb3J0ZWQsIGFzIGFyZSBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCwgYW5kIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAsIHRoZXJlZm9yZSB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgc28gdGhlIGNhbGxlcnMgb2YgdGhvc2UgYXJlIGludGVyZXN0aW5nLgoKU28gdGhlIG1haW4gZnVuY3Rpb25zIG9yIGVudHJ5IHBvaW50cyBJIHdpbGwgZm9jdXMgb24gYXJlIHRoZXNlOgoqICAgYHN0bW1hY19vcGVuYAoqICAgYHBoeWxpbmtfZXhwZWN0c19waHlgCiogICBgcGh5bGlua19jb25uZWN0X3BoeWAKKiAgIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YAoqICAgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YAoKSSBuZWVkIHRvIGNvbmZpcm0gd2hpY2ggY29uZmlndXJhdGlvbnMgd2lsbCBlbmFibGUgdGhlIHJlbGV2YW50IGNvZGUuIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYFVTQl9VU0JORVRgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AuIFN5emthbGxlciYjMzk7cyBkdW1teSBVU0IgSENEIHdpbGwgbWFrZSB0aGUgVVNCIGRldmljZXMgcmVhY2hhYmxlLgoKSSB3YW50IHRvIGNvbmZpcm0gYHN0bW1hY2AgaXMgcmVhY2hhYmxlIHZpYSBgU1RNTUFDX1BDSWAuIEkgc2hvdWxkIGFkZCBgU1RNTUFDX1BMQVRGT1JNYCBhcyB3ZWxsLCBhcyB0aGF0IGlzIHBsYXRmb3JtLWJhc2VkIGRldmljZS4KClRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBhbHRlcnMgUEhZIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBJIG5lZWQgdG8gYmUgYWJsZSB0byBleGVyY2lzZSB0aGlzIGxvZ2ljLCBhbmQgSSB3aWxsIGJlIGFibGUgdG8gZG8gdGhpcyB0aHJvdWdoIHRoZSBgc3RtbWFjYCBkcml2ZXIgKHJlYWNoYWJsZSB2aWEgUENJIGFuZCBwbGF0Zm9ybSBkZXZpY2VzKSBhbmQgbmV0d29yayBkcml2ZXJzIGZvciBVU0IgRXRoZXJuZXQgYWRhcHRlcnMuIFRoZSBwYXRjaCBhZmZlY3RzIGhvdyBhbmQgd2hlbiBhIFBIWSBpcyBleHBlY3RlZCBhbmQgYXR0YWNoZWQuIFRoYXQgaXMgdGhlIGZ1bmN0aW9uYWwgY29yZSwgSSYjMzk7bGwgZm9jdXMgb24gdGhlIGVudHJ5IHBvaW50cyB3aGljaCBjYWxsIHRoZSBmdW5jdGlvbnMgY2hhbmdlZCBpbiB0aGUgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE0OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX29wZW4mIzM0OywKICAgICYjMzQ7cGh5bGlua19leHBlY3RzX3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZIGluaXRpYWxpemF0aW9uIGxvZ2ljIGluIHRoZSBzdG1tYWMgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgZ2VuZXJpYyBwaHlsaW5rIGZyYW1ld29yay4gVGhlIHN0bW1hYyBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgKFNUTU1BQ19QQ0kpLCBhbmQgcGh5bGluayBpcyByZWFjaGFibGUgdmlhIHZhcmlvdXMgbmV0d29yayBkcml2ZXJzIGluY2x1ZGluZyBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgKFVTQl9MQU43OFhYLCBVU0JfTkVUX0FYODgxN1gpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15IFVTQiBIQ0QuIFRoZSBjaGFuZ2VzIGFsdGVyIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgUEhZIGlzIGV4cGVjdGVkIG9yIGF0dGFjaGVkLCB3aGljaCBpcyBmdW5jdGlvbmFsIGNvcmUgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUExBVEZPUk0mIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfb3BlbiYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2V4cGVjdHNfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19vZl9waHlfY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBQSFkgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIHBoeWxpbmsgZnJhbWV3b3JrLiBUaGUgc3RtbWFjIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSAoU1RNTUFDX1BDSSksIGFuZCBwaHlsaW5rIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMgaW5jbHVkaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycyAoVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3WCkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgZHVtbXkgVVNCIEhDRC4gVGhlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBQSFkgaXMgZXhwZWN0ZWQgb3IgYXR0YWNoZWQsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjE3LjYyMjU2ODcyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTE0MjM0OTEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlVTQl9VU0JORVRcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfb3BlblwiLFxuICAgIFwicGh5bGlua19leHBlY3RzX3BoeVwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19vZl9waHlfY29ubmVjdFwiLFxuICAgIFwicGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQSFkgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIHBoeWxpbmsgZnJhbWV3b3JrLiBUaGUgc3RtbWFjIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSAoU1RNTUFDX1BDSSksIGFuZCBwaHlsaW5rIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMgaW5jbHVkaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycyAoVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3WCkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgZHVtbXkgVVNCIEhDRC4gVGhlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBQSFkgaXMgZXhwZWN0ZWQgb3IgYXR0YWNoZWQsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjM6MTcuNjIyNTc0Mjk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTIwNzU3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiZmU4M2FlZDhmM2Y5YWJiM2E0OGRhMDc3YzJlNmExYWExNmI1YmFjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDMwIDE0OjIzOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggNTYyZDIwODMwYjk0OS4uNTc1MTMyYjljZGJmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC0xMzQ3LDYgKzEzNDcsMTAgQEAgc3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcXG4gXFxuIFxcdFxcdGlmIChhZGRyIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHQvKiBJZiBhIGN1c3RvbSBQQ1MgaXMgaW4gdXNlLCBubyBQSFkgaXMgbmVlZGVkICovXFxuK1xcdFxcdFxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlcGh5bGlua19wY3MpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0XFx0XFx0bmV0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJubyBwaHkgZm91bmRcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDU5ZGZlMzVhZmE1NGYuLmZkNGU4MGVlZWRhNzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMTk2NCw5ICsxOTY0LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcXG4gICovXFxuIGJvb2wgcGh5bGlua19leHBlY3RzX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXFxuIHtcXG4tXFx0aWYgKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCB8fFxcbi1cXHQgICAgKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9JTkJBTkQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3oocGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlKSkpXFxuK1xcdGlmIChwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG5AQCAtMjIwNSw5ICsyMjAzLDcgQEAgc3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiB7XFxuIFxcdHUzMiBmbGFncyA9IDA7XFxuIFxcbi1cXHRpZiAoV0FSTl9PTihwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQgfHxcXG4tXFx0XFx0ICAgIChwbC1cXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fSU5CQU5EIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICAgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KGludGVyZmFjZSkgXFx1MDAyNlxcdTAwMjYgIXBsLVxcdTAwM2VzZnBfYnVzKSkpXFxuK1xcdGlmIChXQVJOX09OKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0aWYgKHBsLVxcdTAwM2VwaHlkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjE4LjA3NTQ5MDQ1OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMDY4OTQwODg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlVTQl9VU0JORVRcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfb3BlblwiLFxuICAgIFwicGh5bGlua19leHBlY3RzX3BoeVwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19vZl9waHlfY29ubmVjdFwiLFxuICAgIFwicGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQSFkgaW5pdGlhbGl6YXRpb24gbG9naWMgaW4gdGhlIHN0bW1hYyBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBnZW5lcmljIHBoeWxpbmsgZnJhbWV3b3JrLiBUaGUgc3RtbWFjIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFBDSSAoU1RNTUFDX1BDSSksIGFuZCBwaHlsaW5rIGlzIHJlYWNoYWJsZSB2aWEgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMgaW5jbHVkaW5nIFVTQiBFdGhlcm5ldCBhZGFwdGVycyAoVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3WCkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgZHVtbXkgVVNCIEhDRC4gVGhlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBQSFkgaXMgZXhwZWN0ZWQgb3IgYXR0YWNoZWQsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmZlODNhZWQ4ZjNmOWFiYjNhNDhkYTA3N2MyZTZhMWFhMTZiNWJhY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDE0OjIzOjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDU2MmQyMDgzMGI5NDkuLjU3NTEzMmI5Y2RiZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMTM0Nyw2ICsxMzQ3LDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4gXG4gXHRcdGlmIChhZGRyIFx1MDAzYyAwKSB7XG4rXHRcdFx0LyogSWYgYSBjdXN0b20gUENTIGlzIGluIHVzZSwgbm8gUEhZIGlzIG5lZWRlZCAqL1xuK1x0XHRcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZXBoeWxpbmtfcGNzKVxuK1x0XHRcdFx0cmV0dXJuIDA7XG4rXG4gXHRcdFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJubyBwaHkgZm91bmRcXG5cIik7XG4gXHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNTlkZmUzNWFmYTU0Zi4uZmQ0ZTgwZWVlZGE3MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xOTY0LDkgKzE5NjQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xuICAqL1xuIGJvb2wgcGh5bGlua19leHBlY3RzX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4ge1xuLVx0aWYgKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEIHx8XG4tXHQgICAgKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0lOQkFORCBcdTAwMjZcdTAwMjZcbi1cdCAgICAgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlKSkpXG4rXHRpZiAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdHJldHVybiB0cnVlO1xuIH1cbkBAIC0yMjA1LDkgKzIyMDMsNyBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4ge1xuIFx0dTMyIGZsYWdzID0gMDtcbiBcbi1cdGlmIChXQVJOX09OKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEIHx8XG4tXHRcdCAgICAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fSU5CQU5EIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgIHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihpbnRlcmZhY2UpIFx1MDAyNlx1MDAyNiAhcGwtXHUwMDNlc2ZwX2J1cykpKVxuK1x0aWYgKFdBUk5fT04ocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdGlmIChwbC1cdTAwM2VwaHlkZXYpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzoxOC4wNzU0OTE4ODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDc5MDg2ODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYHN0bW1hY19tYWluLmNgIGFuZCBgcGh5bGluay5jYCwgc3BlY2lmaWNhbGx5LiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBgc3RtbWFjX2luaXRfcGh5YCwgd2hlcmUgaXQgbm93IHJldHVybnMgMCBpZiBgcHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjc2AgaXMgc2V0IHdoZW4gYGFkZHJgIGlzIG5lZ2F0aXZlLiBJbnR1aXRpdmVseSwgdGhpcyBzdWdnZXN0cyB3ZSdyZSBoYW5kbGluZyBzb21lIGtpbmQgb2YgZXJyb3IgY2FzZSBvciBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gdGhlIFBoeXNpY2FsIENvZGluZyBTdWJsYXllciAoUENTKSBvZiB0aGUgUEhZIGxpbmsuIFRoZSBwYXRjaCBhbHNvIHR3ZWFrcyBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgIHdpdGhpbiBgcGh5bGluay5jYCwgcmVtb3ZpbmcgY29uZGl0aW9uYWwgbG9naWMgY29ubmVjdGVkIHRvIGBNTE9fQU5fSU5CQU5EYCBhbmQgYHBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzemAuIFRoaXMgc3VnZ2VzdHMgdGhlcmUncyBhIGNoYW5nZSBpbiBob3cgd2UncmUgaGFuZGxpbmcgaW4tYmFuZCBhdXRvbmVnb3RpYXRpb24gYW5kIDgwMi4zeiBjb21wYXRpYmlsaXR5LlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyByZWFjaGFiaWxpdHkuIElzIHRoaXMgY29kZSBldmVuICpleGVyY2lzYWJsZSogaW4gYSB0eXBpY2FsIFFFTVUgc2V0dXA/IGBzdG1tYWNgIGlzIFNUTWljcm9lbGVjdHJvbmljcycgRXRoZXJuZXQgZHJpdmVyIOKAkyBpdCdzIG9mdGVuIGEgc3RhcGxlIGluIEFSTSBTb0NzLiBRRU1VIGRvZXMgaGF2ZSBBUk0gYm9hcmQgbW9kZWxzIHdpdGggYHN0bW1hY2AsIGJ1dCBpdCdzIGxlc3MgY29tbW9uIHRvIHNlZSBpdCBpbiBzdGFuZGFyZCB4ODZfNjQgUUVNVSBjb25maWd1cmF0aW9ucy4gT24gdGhlIG90aGVyIGhhbmQsIGBwaHlsaW5rYCBpcyBhICpnZW5lcmljKiBmcmFtZXdvcmsuIE1hbnkgbmV0d29yayBkcml2ZXJzIHVzZSBpdCwgc28gaXTigJlzIGxpa2VseSB0byBiZSByZWFjaGVkLlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gaW50byBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgLiBIbW0sIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBpcyBleHBvcnRlZCwgbWVhbmluZyBvdGhlciBkcml2ZXJzIGFyZSBjYWxsaW5nIGl0IGRpcmVjdGx5LiBUaGF0J3MgZ29vZC4gQnV0IGBwaHlsaW5rX2F0dGFjaF9waHlgLi4uIHRoZSBkaWZmIGlzIHNheWluZyBpdOKAmXMgc3RhdGljLiBIYW5nIG9u4oCmaXQncyBkZWZpbmVkIGFzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgdGhlbiB0aGVyZSBpcyBhIGNhbGwgdG8gYHBoeWxpbmtfY29ubmVjdF9waHlgIHdoaWNoIHRoZW4gY2FsbHMgYHBoeWxpbmtfYXR0YWNoX3BoeWAuIFRoaXMgbWVhbnMgdGhlIHBhdGNoIG1pZ2h0IGFmZmVjdCBkcml2ZXJzIHRoYXQgdXNlIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YC4gVGltZSB0byBjaGVjayB0aGUgY2FsbGVycyBvZiBgcGh5bGlua19leHBlY3RzX3BoeWAgdG8gZ2V0IHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzoyNi4xNTQ1ODE1MDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3NDI2MDIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2V4cGVjdHNfcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTMxNj1zdGF0aWMgaW50IHN0bW1hY19pbml0X3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTMyNjpcXHRpZiAoIXBoeWxpbmtfZXhwZWN0c19waHkocHJpdi1cXHUwMDNlcGh5bGluaykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzI3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTYtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTU3OiAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTgtICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjQtICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTY1OmJvb2wgcGh5bGlua19leHBlY3RzX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk3MC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTcxOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXhwZWN0c19waHkpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI4NT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjkyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI5MzpcXHRpZiAoIXBoeWxpbmtfZXhwZWN0c19waHkocGwpKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI5NC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcyNj12b2lkIHBoeWxpbmtfZGVzdHJveShzdHJ1Y3QgcGh5bGluayAqKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3Mjc6Ym9vbCBwaHlsaW5rX2V4cGVjdHNfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzoyOC4xMjg4NDczMDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTgwMDIyMDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUEhZTElOSyBSZWFjaGFiaWxpdHkgaW4gUUVNVSoqXG5cbk9rYXksIHNvIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBzaG93cyB1cCBpbiBgc3RtbWFjX2luaXRfcGh5YCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC4gVGhlIGxhdHRlciBpcyB1c2VkIHByZXR0eSBicm9hZGx5IGFjcm9zcyB2YXJpb3VzIGRyaXZlcnMsIHNvIHRoaXMgd2FycmFudHMgc29tZSBkZWVwZXIgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gYWN0dWFsbHkgaGl0IGBwaHlsaW5rYCBpbiBhIFFFTVUgZW52aXJvbm1lbnQuXG5cbkxldCdzIHF1aWNrbHkgc2NhbiB0aGUgY29tbW9uIHN1c3BlY3RzLiBEb2VzIGB2aXJ0aW9fbmV0YCB1c2UgYHBoeWxpbmtgPyBOb3BlLiBXaGF0IGFib3V0IGBlMTAwMGVgPyBTdGlsbCBuby4gT2theSwgYGlnYmA/IE5vcGUgYWdhaW4uIEFscmlnaHQsIGhvdyBhYm91dCBgdXNibmV0YD8gTmFkYS5cblxuSG1tLCBsZXQgbWUgY29uc2lkZXIgRFNBLCBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlLiBBaGEhIFllcywgYGRzYWAgdXRpbGl6ZXMgYHBoeWxpbmtgLiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSBzaW11bGF0ZSBhIGBkc2FgIHNldHVwIGluIFFFTVU/IEkgYmVsaWV2ZSBzby4gSSBtaWdodCBiZSBhYmxlIHRvIHVzZSBgZHNhX2xvb3BgIG9yIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBsaWtlIGBtYWNiYC4gVGhhdCdzIGVuY291cmFnaW5nLlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gc2hpZnQgZ2VhcnMgYW5kIGp1c3QgY2hlY2sgd2hhdCBhbGwgaXMgdXNpbmcgYHBoeWxpbmtgIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk3NiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzozMi4xMDg4NzIwMThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxODYyMTE4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2NyZWF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzYzLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzY0OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIG5vZGUsIHBoeV9tb2RlLCBcXHUwMDI2cGh5bGlua19vcHMpO1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzY1LVxcdGlmIChJU19FUlIocGh5bGluaykpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE0MTY6XFx0cHJpdi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cXHRcXHRcXHRcXHQgICAgICAgb2ZfZndub2RlX2hhbmRsZShwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xMDc0PXN0YXRpYyBpbnQgYWc3MXh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMTA5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWctXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBhZy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMTAtXFx0XFx0XFx0XFx0IGFnLVxcdTAwM2VwaHlfaWZfbW9kZSwgXFx1MDAyNmFnNzF4eF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwODY6XFx0YnAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBicC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODctXFx0XFx0XFx0XFx0ICAgICBicC1cXHUwMDNlcGh5X2ludGVyZmFjZSwgXFx1MDAyNm1hY2JfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0yMDE9c3RhdGljIGludCBkcGFhX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXFx0bWFjX2Rldi1cXHUwMDNldXBkYXRlX3NwZWVkID0gZHBhYV9ldGhfY2dyX3NldF9zcGVlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcXHRtYWNfZGV2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hY19kZXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc2LVxcdFxcdFxcdFxcdFxcdCAgZGV2X2Z3bm9kZShtYWNfZGV2LVxcdTAwM2VkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVxcdFxcdFxcdFxcdCBkcG1hY19ub2RlLCBtYWMtXFx1MDAzZWlmX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19wbF9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkyLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBwaHlsaW5rXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTk4OmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk5LVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz04NDc9c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzA6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX21hY19waHlsaW5rX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMxLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMyOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cXHRlbmV0Y19waHlsaW5rX2Rlc3Ryb3kocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTQyOmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMTQ6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzOS1cXHRcXHRcXHRcXHQgcGYtXFx1MDAzZWlmX21vZGUsIG9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jPTg1Mz1zdGF0aWMgaW50IGZzX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6OTMzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmVwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShmZXAtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNmZzX2VuZXRfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jPTM0MTk9c3RhdGljIGludCB1Y2NfZ2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM6MzU3NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnVnZXRoLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzUtXFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2UsIFxcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM9NTQ4MD1zdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NTk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM6NTU5OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU2MDAtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTY4NDA9c3RhdGljIGludCBtdnBwMl9wb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjcxNDg6XFx0XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0OS1cXHRcXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdnBwMl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcXHRcXHRwaHlfbGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlfY29uZmlnLCBmd25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE4LVxcdFxcdFxcdFxcdFxcdCAgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk3MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjgzNTpcXHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM2LVxcdFxcdGZyZWVfbmV0ZGV2KG5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oPTExMT1pbnQgZmJuaWNfcGh5bGlua19nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oOjExMzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTQtdm9pZCBmYm5pY19waHlsaW5rX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZmJuaWNfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE4NzogKiBmYm5pY19waHlsaW5rX2NyZWF0ZSAtIFBoeWxpbmsgZGV2aWNlIGNyZWF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg4LSAqIEBuZXRkZXY6IE5ldHdvcmsgRGV2aWNlIHN0cnVjdCB0byBhdHRhY2ggcGh5bGluayBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5Ni0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTk3OmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmJuLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzMtXFx0XFx0XFx0XFx0IGZibmljX3BoeWxpbmtfc2VsZWN0X2ludGVyZmFjZShmYm4tXFx1MDAzZWF1aSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW43NDN4X3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTUwOnN0YXRpYyBpbnQgbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTk0LVxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2NjQ9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzI0OlxcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjUtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTc5MT1zdGF0aWMgaW50IGxhbjk2NnhfcHJvYmVfcG9ydChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgdTMyIHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM6ODU2OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVxcdFxcdFxcdFxcdCBwb3J0bnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnNweDVfcG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM5MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShjb25maWctXFx1MDAzZW5vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTc3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBvY2Vsb3RfcGh5bGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE3ODA6c3RhdGljIGludCBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpwb3J0bnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4MjE6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIyLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xODQzPWludCBvY2Vsb3RfcHJvYmVfcG9ydChzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LCBzdHJ1Y3QgcmVnbWFwICp0YXJnZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4ODA6XFx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4ODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTM5MT1zdGF0aWMgaW50IHN0bW1hY19waHlsaW5rX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE0ODM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ4NC1cXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgUEhZX0lOVEVSRkFDRV9NT0RFX1hBVUksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjQtXFx0XFx0XFx0XFx0IFxcdTAwMjZ0bjQwX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydC1cXHUwMDNlc2xhdmUucG9ydF9ucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM9MTMwPXN0YXRpYyBpbnQgbmdiZV9waHlsaW5rX2luaXQoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jOjE1MDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXFx1MDAyNm5nYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE1MS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz00ODA9aW50IHR4Z2JlX3BoeWxpbmtfaW5pdF9hbWwoc3RydWN0IHR4Z2JlICp0eGdiZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NTExOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wc19hbWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEyLVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzoyOTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnR4Z2JlX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjk0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTI3OTU9c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTE4OlxcdGxwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmxwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTktXFx0XFx0XFx0XFx0ICAgICBscC1cXHUwMDNlcGh5X21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXFx0XFx0cmV0ID0gUFRSX0VSUihscC1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTIzOlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInBoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTI0LVxcdFxcdGdvdG8gY2xlYW51cF9tZGlvO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz01MTU9c3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX21hY19hbmRfcGNzKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMwLVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcXHRcXHQvKiBUaGUgUENTLCBpZiBwcmVzZW50LCBtdXN0IGJlIHNldHVwIGJlZm9yZSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXFx0XFx0ICogaGFzIGJlZW4gY2FsbGVkLiBJZiB0aGUgb3BzIGlzIG5vdCBpbml0aWFsaXNlZCwgcHJpbnQgYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOD1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDY5LSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA3MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzEtICogQHBjczogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2Nz1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5MS0gKiBwaHlsaW5rX3NldF9maXhlZF9saW5rKCkgLSBzZXQgdGhlIGZpeGVkIGxpbmtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkzLSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgyOT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzI6ICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzMtICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ2LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0NzpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ4LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTMzLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MzQ6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNy0gKiBwaHlsaW5rX2Rlc3Ryb3koKSAtIGNsZWFudXAgYW5kIGRlc3Ryb3kgdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5Mzg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk1Ny0gKiBwaHlsaW5rX2V4cGVjdHNfcGh5KCkgLSBEZXRlcm1pbmUgaWYgcGh5bGluayBleHBlY3RzIGEgcGh5IHRvIGJlIGF0dGFjaGVkXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTU4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk1OS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjAxPXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIxOS0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjIwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyMS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTYtICogcGh5bGlua19vZl9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgRFQgbW9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjU4LSAqIEBkbjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX29mX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3NS0gKiBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgZndub2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI3NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzctICogQGZ3bm9kZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBmd25vZGVfaGFuZGxlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzNS0gKiAgIGluc3RhbmNlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMzNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMzctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM2Nj1zdGF0aWMgdm9pZCBwaHlsaW5rX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgdXAsIGNvbnN0IGNoYXIgKndoYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNzUtICogcGh5bGlua19tYWNfY2hhbmdlKCkgLSBub3RpZnkgcGh5bGluayBvZiBhIGNoYW5nZSBpbiBNQUMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzNzY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzc3LSAqIEB1cDogaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmsgaXMgY3VycmVudGx5IHVwLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDA4PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDE4LSAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQxOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQ4MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0YXJ0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4NC0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDg1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4Ni0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTE1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RvcCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MTgtICogcGh5bGlua19yeF9jbGtfc3RvcF9ibG9jaygpIC0gYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrIGluIExQSVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUxOTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU0ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU0Ny0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2soKSAtIHVuYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTQ4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU0OS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTg2PXN0YXRpYyBib29sIHBoeWxpbmtfcGh5X3BtX3NwZWVkX2N0cmwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTkzLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU5NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTUtICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NDU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdXNwZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY0OC0gKiBwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKCkgLSBwcmVwYXJlIHRvIHJlc3VtZSBhIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjQ5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjczLSAqIHBoeWxpbmtfcmVzdW1lKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSByZXN1bWUgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjc1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3MTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE2LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MTc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE4LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyB0byBob2xkIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NTMtICogcGh5bGlua19ldGh0b29sX3NldF93b2woKSAtIHNldCB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzU0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc1NS0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjg4Mj1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9rc2V0dGluZ3MoY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI4OTctICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQoKSAtIGdldCB0aGUgY3VycmVudCBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyODk4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjg5OS0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHRvIGhvbGQgbGluayBzZXR0aW5nc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTUwPXN0YXRpYyBib29sIHBoeWxpbmtfdmFsaWRhdGVfcGNzX2luYmFuZF9hdXRvbmVnKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3MS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3My0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGZvciB0aGUgZGVzaXJlZCBtb2Rlc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTM4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0MS0gKiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCgpIC0gcmVzdGFydCBuZWdvdGlhdGlvblxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE2Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNjYtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE2NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNjgtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODItICogcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKCkgLSBzZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODQtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjY1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNjktICogICBjb3VudGVyXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjcwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5MS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSgpIC0gcmVhZCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjkyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5My0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzE0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMxNy0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSgpIC0gc2V0IHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzE5LSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0ODg9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDYtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUwNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MDgtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBpZnJlcSBmb3Igc29ja2V0IGlvY3Rsc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTgxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU4NS0gKiAgIGxpbmsgcGFydG5lcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1ODY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTg3LSAqIEBzeW5jOiBwZXJmb3JtIGFjdGlvbiBzeW5jaHJvbm91c2x5XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM2MDY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zcGVlZF9kb3duKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxMC0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjExOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxMi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzYzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM2Ny0gKlxcdFxcdFxcdFxcdCB3aGljaCBsb3NlcyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM2ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNjktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM4ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4OC0gKlxcdFxcdFxcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzg5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMS1cXHRcXHRcXHRcXHQgcGh5X2lmX21vZGUsIFxcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MzgtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQwLVxcdFxcdFxcdFxcdCBkZXYtXFx1MDAzZWludGVyZmFjZSwgXFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMy1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKixcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTYxNi1cXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxcbm5ldC9kc2EvcG9ydC5jLTE2MTgte1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cXG5uZXQvZHNhL3BvcnQuYzoxNjQ3OlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmRwLVxcdTAwM2VwbF9jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUoZHAtXFx1MDAzZWRuKSwgbW9kZSxcXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVxcdFxcdFxcdCAgICBtYWNfb3BzKTtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2NjU9c3RhdGljIGludCBkc2Ffc2hhcmVkX3BvcnRfcGh5bGlua19yZWdpc3RlcihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTY3My1cXG5uZXQvZHNhL3BvcnQuYzoxNjc0OlxcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcXG5uZXQvZHNhL3BvcnQuYy0xNjc1LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvZHNhL3BvcnQuaD0xMDA9aW50IGRzYV9wb3J0X21ycF9kZWxfcmluZ19yb2xlKGNvbnN0IHN0cnVjdCBkc2FfcG9ydCAqZHAsXFxubmV0L2RzYS9wb3J0LmgtMTAxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9yaW5nX3JvbGVfbXJwICptcnApO1xcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XFxubmV0L2RzYS9wb3J0LmgtMTAzLXZvaWQgZHNhX3BvcnRfcGh5bGlua19kZXN0cm95KHN0cnVjdCBkc2FfcG9ydCAqZHApO1xcbi0tXFxubmV0L2RzYS91c2VyLmM9MjY1NT1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNjc0LVxcbm5ldC9kc2EvdXNlci5jOjI2NzU6XFx0cmV0ID0gZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoZHApO1xcbm5ldC9kc2EvdXNlci5jLTI2NzYtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjM6MzMuNzI3NTEwNDk2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxMDYzMjcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyBgcGh5bGlua2AgLSBBIEZ1enppbmcgVGFyZ2V0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGJyYWluIHplcm9lcyBpbiBvbiBgcGh5bGlua2AuIEkgc2VlIGl0J3MgcmVmZXJlbmNlZCBpbiBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCBhbmQgYGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNgLiBBbHJpZ2h0LCBVU0IgbmV0IGRldmljZXMsIGJvdGggb2Ygd2hpY2ggYXJlIHJlYWRpbHkgYXZhaWxhYmxlIGZvciBmdXp6aW5nISBJIGNhbiBlbXVsYXRlIHRoZW0gaW4gUUVNVSB1c2luZyBlaXRoZXIgVVNCIHBhc3N0aHJvdWdoIG9yIGV2ZW4gdGhvc2UgaGFuZHkgZHVtbXkgVVNCIGRldmljZXMsIHdoaWNoIGFyZSBwZXJmZWN0IGZvciB1c2Ugd2l0aCBzeXprYWxsZXIncyBVU0IgZnV6emVyICh0aGUgYGR1bW15X2hjZGAgc3R1ZmYpLiBBbmQgbGV0J3Mgbm90IGZvcmdldCBgbmV0L2RzYS9wb3J0LmNgLCB0aGF0IHVzZXMgaXQgYXMgd2VsbCwgYW5kIGBkc2FfbG9vcGAgZ2l2ZXMgdXMgYSBjb252ZW5pZW50IHRlc3RpbmcgcGF0aCB0aGVyZS4gU28sIGBwaHlsaW5rYCBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIHNvbWUgZnV6emluZyBhdHRlbnRpb24uIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYHBoeWxpbmtfZXhwZWN0c19waHlgIGFuZCBgcGh5bGlua19hdHRhY2hfcGh5YCwgc28gSSBjYW4gc2VlIHdoZXJlIGl0IG1pZ2h0IG5lZWQgc3BlY2lhbCBoYW5kbGluZy5cblxuSG1tLCB3YWl0IGEgc2Vjb25kLi4uIHRoZSBwYXRjaCBhbHNvIGFmZmVjdHMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBOb3csIGBzdG1tYWNgLi4uIGlzICp0aGF0KiByZWFjaGFibGU/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBgc3RtbWFjYCBjYW4gYmUgYnVpbHQgYXMgYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIHRvIHNlZSBob3cgYWNjZXNzaWJsZSBpdCBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYxMzEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjM6MzkuNDM4MTQ2NDE1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Njg5NjM0MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3BjaV9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExODpzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1OlxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNi1cXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjQxLjAwNzExNjA1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2Nzk3Mzg2NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmU6XG5cbioqQ29ubmVjdGluZyB0aGUgRG90czogc3RtbWFjLCBQQ0ksIGFuZCBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5SaWdodCwgc28gYHN0bW1hY2AgaGFzIGEgUENJIGRyaXZlciEgRm91bmQgaXQsIGBzdG1tYWNfcGNpLmNgLiBUaGlzIGlzIGludHJpZ3VpbmcuIFRoZSBmYWN0IHRoYXQgaXQncyBQQ0ktYmFzZWQgaW1tZWRpYXRlbHkgb3BlbnMgdXAgYSBuZXcgYXZlbnVlIGZvciBmdXp6aW5nLiBJZiBpdCdzIGEgUENJIGRyaXZlciwgdGhhdCBtZWFucyBpdCBjYW4gYmUgcHJvYmVkIGFuZCBpbnRlcmFjdGVkIHdpdGggdmlhIHRoZSBQQ0kgYnVzLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCB0aGUgc3l6a2FsbGVyIFBDSSBmdXp6ZXIgZW11bGF0ZXMuIFRoaXMgaXMgZXhjZWxsZW50IG5ld3MsIGJlY2F1c2UgaWYgd2UgY2FuIHRyaWdnZXIgdGhlIGBzdG1tYWNgIHZpYSBhIFBDSSBpbnRlcmZhY2UsIHdlIGNhbiBsZXZlcmFnZSB0aGUgUENJIGZ1enplcidzIGNhcGFiaWxpdGllcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIFBDSSBJRHMgYHN0bW1hY19wY2kuY2AgYmluZHMgdG8uIFRoYXQgaW5mb3JtYXRpb24gd2lsbCBiZSB0aGUga2V5IHRvIGRlc2lnbmluZyBlZmZlY3RpdmUgUENJIGZ1enppbmcgY2FtcGFpZ25zIGFnYWluc3QgdGhpcyBkcml2ZXIuIExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRob3NlIElEcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxMDQsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzo0NS42ODY4NTY5MTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ5NzE3ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRV9JRF9TVE1JQ1JPX01BQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaC04NjEtI2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTUlDUk9fU1BJX0hTXFx0MHhDQzA4XFxuaW5jbHVkZS9saW51eC9wY2lfaWRzLmg6ODYyOiNkZWZpbmUgUENJX0RFVklDRV9JRF9TVE1JQ1JPX01BQ1xcdDB4Q0MwOVxcbmluY2x1ZGUvbGludXgvcGNpX2lkcy5oLTg2My0jZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNSUNST19TRElPX0VNTUMgMHhDQzBBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjQ3LjI0MTgzODg4OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA5MTIxMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFBDSSBEcml2ZXIgUGF0Y2gqKlxuXG5SaWdodCwgc2NyYXRjaCB0aGF0LiBJIGRvbid0IG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBwcmVjaXNlIFBDSSBJRCBkZXRhaWxzIHJpZ2h0IG5vdy4gVGhlIGZhY3QgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBQQ0kgZHJpdmVyIGlzIGVub3VnaCB0byBuYXJyb3cgdGhlIHNjb3BlLiBUaGUgcGF0Y2ggcmVmZXJlbmNlcyBgc3RtbWFjX2luaXRfcGh5YCB3aXRoaW4gYHN0bW1hY19tYWluLmNgLCBzbyBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBkZXRlcm1pbmUgKndoZW4qIGBzdG1tYWNfaW5pdF9waHlgIGlzIGJlaW5nIGludm9rZWQuIElzIHRoaXMgZnVuY3Rpb24gcGFydCBvZiB0aGUgaW5pdGlhbCBwcm9iZSBzZXF1ZW5jZSwgb3IgaXMgaXQgdHJpZ2dlcmVkIGR5bmFtaWNhbGx5IHdoZW4gdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGJyb3VnaHQgb25saW5lLCBvciBib3RoPyBUaGlzIHVuZGVyc3RhbmRpbmcgd2lsbCBmcmFtZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGltaW5nIG9mIHRoZSBjaGFuZ2UuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIHBhdGggbG9va3MgbGlrZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1MzcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyMzo1MS43NTA5NjI1OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjA4MDk1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX2luaXRfcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTI4Mz1zdGF0aWMgdm9pZCBzdG1tYWNfY2hlY2tfcGNzX21vZGUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMzA4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTMwOTogKiBzdG1tYWNfaW5pdF9waHkgLSBQSFkgaW5pdGlhbGl6YXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMTAtICogQGRldjogbmV0IGRldmljZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTMxNS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEzMTY6c3RhdGljIGludCBzdG1tYWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTkxPXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMDk6XFx0cmV0ID0gc3RtbWFjX2luaXRfcGh5KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjEwLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjUzLjMxMTc3ODMxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzI0NDA3NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU1RNIE1BQyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBTVE0gTUFDIGRyaXZlci4gSSBzZWUgdGhpcyBjb2RlIGlzIHJlYWNoZWQgd2l0aGluIGBzdG1tYWNfb3BlbmAsIHNwZWNpZmljYWxseSBkdXJpbmcgdGhlIGAubmRvX29wZW5gIGNhbGxiYWNrLiBUaGlzIGNvbmZpcm1zIHRoYXQgdGhlc2UgY2hhbmdlcyBJJ20gbG9va2luZyBhdCBpbiBgc3RtbWFjX2luaXRfcGh5YCBhcmUgZGVmaW5pdGVseSBnZXR0aW5nIGhpdCB3aGVuZXZlciB0aGUgbmV0d29yayBpbnRlcmZhY2UgY29tZXMgdXAsIHNheSwgd2hlbiBJIHJ1biBgaXAgbGluayBzZXQgZXRoMCB1cGAuIFRoYXQncyBnb29kIHRvIGtub3cuXG5cbk5vdywgbXkgZm9jdXMgc2hpZnRzIHRvIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBhbmQgYHBoeWxpbmtfYXR0YWNoX3BoeWAuIEkgc2VlIHRoYXQgYHBoeWxpbmtfZXhwZWN0c19waHlgIGlzIGRlZmluaXRlbHkgY2FsbGVkIGZyb20gd2l0aGluIGBzdG1tYWNfaW5pdF9waHlgLCB3aGljaCBjb25maXJtcyBpdCBpcyBnZXR0aW5nIHNldCB1cCByaWdodC5cblxuYHBoeWxpbmtfYXR0YWNoX3BoeWAgc2VlbXMgdG8gYmUgY2FsbGVkIGluIGEgZmV3IHBsYWNlcywgbmFtZWx5IGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC4gVGhlc2UgYXJlIGFsbCB0eXBpY2FsbHkgdHJpZ2dlcmVkIGJ5IHZhcmlvdXMgZHJpdmVycyB3aGVuIHRoZXkgZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhIFBIWS5cblxuTmV4dCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gRm9yIHRoZSBgc3RtbWFjYCBkcml2ZXIgaXRzZWxmLCBpdCBsb29rcyBsaWtlIEkgbmVlZCBib3RoIGBDT05GSUdfU1RNTUFDX0VUSGAgYW5kIGBDT05GSUdfU1RNTUFDX1BDSWAuIEFuZCBmb3IgYHBoeWxpbmtgLCBJIG5lZWQgYENPTkZJR19QSFlMSU5LYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEknbGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZXMgdG8gdmVyaWZ5IHRoZSBleGFjdCBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MjE3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjIzOjU5LjAzNjE4ODE4NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4MTI5MzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX0VUSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjAwLjYxNzQ4Nzg4MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzE1NTc5ODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkV4YW1pbmluZyBLY29uZmlnIERlcGVuZGVuY2llcyBmb3IgdGhlIFNUTU1BQyBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgd2l0aGluIHRoZSBkcml2ZXIncyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHJlYWQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbG9naWMgaXMgaG91c2VkLCBzbyB0aGlzIGlzIHdoZXJlIEknbGwgZmluZCBvdXQgd2hhdCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyBtdXN0IGJlIGVuYWJsZWQgb3IgcHJlc2VudCBmb3IgU1RNTUFDIHRvIGJ1aWxkIGNvcnJlY3RseS4gVGltZSB0byBzZWUgd2hhdCBJIGNhbiBsZWFybi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5MDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDowNy4zMzMwNzA0MzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRpZiBTVE1NQUNfUExBVEZPUk1cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuICA0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4gIDQ2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgNDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICA0OTpcXHRcXHRoZWxwXFxuICA1MDpcXHRcXHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjA3LjMzMzE1MTA3M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzgzMTk0OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVsdmluZyBpbnRvIHRoZSBTVE1NQUMgUENJIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGJhY2sgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUuIEknbSBmb2N1c2luZyBvbiBmaW5kaW5nIHRoZSBkZWZpbml0aW9uIGZvciBgU1RNTUFDX1BDSWAuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIEtjb25maWcgZmlsZSBzaG91bGQgaG91c2UgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MnIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aGVuIHVzZWQgaW4gYSBQQ0kgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgdmFyaWFudCBpcyBjb25maWd1cmVkIOKAkyB3aGV0aGVyIGl0J3MgZW5hYmxlZCBieSBkZWZhdWx0LCBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGZlYXR1cmVzLCBvciBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHBhcmFtZXRlcnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gZGV0ZXJtaW5lIGhvdyB0byBpbnRlZ3JhdGUgaXQgaW50byBhIGRlc2lnbi4gRnJvbSBleHBlcmllbmNlLCBJIGtub3cgdGhhdCBvZnRlbiB0aGUgUENJIHZlcnNpb24gb2YgYSBkcml2ZXIgaGFzIGRpZmZlcmVudCBjb25zaWRlcmF0aW9ucyBkdWUgdG8gYnVzIHNwZWNpZmljIGludGVycnVwdCwgYWRkcmVzcyBzcGFjZSwgZXRjLiBVbmRlcnN0YW5kaW5nIHRoZSBmaW5lciBwb2ludHMgb2YgYFNUTU1BQ19QQ0lgJ3MgY29uZmlndXJhdGlvbiBpcyBrZXkgZm9yIGNvcnJlY3RseSBidWlsZGluZyBhbmQgY29uZmlndXJpbmcgYW4gZW1iZWRkZWQgc3lzdGVtIG9yIGRyaXZlciBtb2R1bGUgdGhhdCB1c2VzIGEgU1RNTUFDIG92ZXIgYSBQQ0kgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3NzgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjEyLjcxNjM1MDI5MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjM2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDI1MTpcXHRcXHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyNTI6XFx0XFxuIDI1MzpcXHRjb25maWcgRFdNQUNfU1RJXFxuIDI1NDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RpIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjU1OlxcdFxcdGRlZmF1bHQgQVJDSF9TVElcXG4gMjU2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RJIHx8IENPTVBJTEVfVEVTVClcXG4gMjU3OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDI1ODpcXHRcXHRoZWxwXFxuIDI1OTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gU1RpIFNPQ3MuXFxuIDI2MDpcXHRcXG4gMjYxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDI2MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXFxuIDI2MzpcXHRcXHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyNjQ6XFx0XFxuIDI2NTpcXHRjb25maWcgRFdNQUNfU1RNMzJcXG4gMjY2OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE0zMiBEV01BQyBzdXBwb3J0XFxcIlxcbiAyNjc6XFx0XFx0ZGVmYXVsdCBBUkNIX1NUTTMyXFxuIDI2ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXFxuIDI2OTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNzA6XFx0XFx0aGVscFxcbiAyNzE6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG4gMjc0OlxcdFxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xcbiAyNzU6XFx0XFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjc2OlxcdFxcbiAyNzc6XFx0Y29uZmlnIERXTUFDX1NVTlhJXFxuIDI3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjc5OlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAyODA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI4MTpcXHRcXHRoZWxwXFxuIDI4MjpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBMjAvQTMxIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI4MzpcXHRcXG4gMjg0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjg1OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcXG4gMjg2OlxcdFxcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyODc6XFx0XFxuIDI4ODpcXHRjb25maWcgRFdNQUNfU1VOOElcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuOGkgR01BQyBzdXBwb3J0XFxcIlxcbiAyOTA6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDI5MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMjkyOlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMjkzOlxcdFxcdGhlbHBcXG4gMjk0OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEgzIEE4M1QgQTY0IEVNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjk3OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuIDI5ODpcXHRcXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjk5OlxcdFxcbiAzMDA6XFx0Y29uZmlnIERXTUFDX1NVTjU1SVxcbiAzMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbiAzMDI6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDMwMzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMzA0OlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMzA1OlxcdFxcdGhlbHBcXG4gMzA2OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAzMDc6XFx0XFxuIDMwODpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDMwOTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcXG4gMzEwOlxcdFxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMTE6XFx0XFxuIDMxMjpcXHRjb25maWcgRFdNQUNfVEhFQURcXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJULUhFQUQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzE0OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIFQtSEVBRCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDMxOTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxcbiAzMjA6XFx0XFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMjE6XFx0XFxuIDMyMjpcXHRjb25maWcgRFdNQUNfSU1YOFxcbiAzMjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBJTVg4IERXTUFDIHN1cHBvcnRcXFwiXFxuIDMyNDpcXHRcXHRkZWZhdWx0IEFSQ0hfTVhDXFxuIDMyNTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXFxuIDMyNjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAzMjc6XFx0XFx0aGVscFxcbiAzMjg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBpLk1YOCBTT0NzLlxcbiAzMjk6XFx0XFxuIDMzMDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAzMzE6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxcbiAzMzI6XFx0XFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDMzMzpcXHRcXG4gMzM0OlxcdGNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuIDMzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzM2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbiAzMzc6XFx0XFx0aGVscFxcbiAzMzg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBJbnRlbCBTb0NzXFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDM0MTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIEludGVsIEtlZW0gQmF5XFxuIDM0MjpcXHRcXHQgIFNvQy5cXG4gMzQzOlxcdFxcbiAzNDQ6XFx0Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbiAzNDU6XFx0XFx0dHJpc3RhdGUgXFxcIkxvb25nc29uMSBHTUFDIHN1cHBvcnRcXFwiXFxuIDM0NjpcXHRcXHRkZWZhdWx0IE1BQ0hfTE9PTkdTT04zMlxcbiAzNDc6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcXG4gMzQ4OlxcdFxcdGhlbHBcXG4gMzQ5OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDoxMi43MTY0NzY3NTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2MzMxNjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgU1RNTUFDX1BDSSBpbiBLY29uZmlnKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgYFNUTU1BQ19QQ0lgIGlzIGRlZmluZWQsIGxpa2VseSByZWxhdGVkIHRvIHRoZSBQQ0kgaW50ZXJmYWNlIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBNeSBiZXN0IHN0YXJ0aW5nIHBvaW50IGlzIGdvaW5nIHRvIGJlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUuIEknbSBhc3N1bWluZyBpdCdzIGEgS2NvbmZpZyBvcHRpb24gZ2l2ZW4gdGhlIGxpa2VseSBuYW1lIHN0cnVjdHVyZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjczLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDoxNS45Nzk3OTYyODNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzM3NjAzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1RNTUFDX1BDSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0PTk4PVRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYGBDT05GSUdfU1RNTUFDX0VUSGBgOlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtOTktIC0gYGBDT05GSUdfU1RNTUFDX1BMQVRGT1JNYGA6IGlzIHRvIGVuYWJsZSB0aGUgcGxhdGZvcm0gZHJpdmVyLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTAwOiAtIGBgQ09ORklHX1NUTU1BQ19QQ0lgYDogaXMgdG8gZW5hYmxlIHRoZSBwY2kgZHJpdmVyLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTQ5PW9iai0kKENPTkZJR19TVE1NQUNfTElCUENJKVxcdCs9IHN0bW1hY19saWJwY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVxcdCs9IHN0bW1hYy1wY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUxLW9iai0kKENPTkZJR19EV01BQ19JTlRFTClcXHQrPSBkd21hYy1pbnRlbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjE3LjQ1MzU2NDgyM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTUxMDIxNzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSdtIHRoaW5raW5nLCBsaW5lIDQwNyBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgZ2l2ZW4gdGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZXNlIGZpbGVzLiBUaGF0IHNlY3Rpb24gaXMgbGlrZWx5IGdvaW5nIHRvIGhvbGQgc29tZSBpbXBvcnRhbnQgY2x1ZXMgYWJvdXQgd2hhdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLCBob3cgdGhleSdyZSBlbmFibGVkLCBhbmQgcG90ZW50aWFsbHkgYW55IGRlcGVuZGVuY2llcyBvciBidWlsZC10aW1lIGNvbnNpZGVyYXRpb25zIGZvciB0aGlzIHBhcnRpY3VsYXIgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgdmFyaW91cyBQSFkgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvcHRpb25zLCBvciBtYXliZSBldmVuIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1RNTUFDIGl0c2VsZi4gTGV0J3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3MgYW5kIHNlZSB3aGF0J3Mgb24gb2ZmZXIgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjYwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6MjAuNjA0NTg4NTA4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzkwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbiAzOTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDQyMDpcXHRlbmRpZiAjIFNUTU1BQ19FVEhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6MjAuNjA0NjcwODE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTU5MTA5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgU1RNTUFDYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGNvbmZpZ3VyYXRpb25zLiBUaG9zZSBhcmUgdGhlIG9uZXMgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIEhtbSwgaXQgc2VlbXMgYFBIWUxJTktgIGlzIGRpcmVjdGx5IHRpZWQgdG8gYFNUTU1BQ19FVEhgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBvZnRlbiBzZWUgdGhhdCBjb25maWd1cmF0aW9uLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gYHBoeWxpbmtgIGlzbid0IGV4Y2x1c2l2ZSB0byB0aGUgU1RNTUFDIHdvcmxkLiBJIHNlZSB0aGF0IGBwaHlsaW5rYCBpcyBhbHNvIHJlZmVyZW5jZWQgYnkgdGhlIEFTSVggVVNCIExBTiBjaGlwcywgc3BlY2lmaWNhbGx5IGBVU0JfTEFONzhYWGAgYW5kIGBVU0JfTkVUX0FYODgxN1hgLiBUaGF0IG1lYW5zIEkgc2hvdWxkIGFsc28gY2hlY2sgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCB0byBzZWUgdGhlIGNvbmRpdGlvbnMgb2YgdGhvc2UgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDA0LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6MjQuNDAwNTg0MDYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY1MjMwMDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfTEFONzhYWFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz05OT1jb25maWcgVVNCX1JUTDgxNTJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExMi1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTM6Y29uZmlnIFVTQl9MQU43OFhYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE0LVxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgTEFONzhYWCBCYXNlZCBVU0IgRXRoZXJuZXQgQWRhcHRlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjI1Ljg2NTgxOTAzNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjIwODMxODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgVVNCIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgVVNCIG5ldHdvcmsgZHJpdmVycyBhcmUgY29uZmlndXJlZCBpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZS4gSSdtIGdvaW5nIHRvIGZvY3VzIGFyb3VuZCBsaW5lIDExMy4gSG9wZWZ1bGx5LCB0aGlzIHNlY3Rpb24gd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGNvcmUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIFVTQiBuZXR3b3JrIGRyaXZlciBzdWJzeXN0ZW0uIEl0J3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIGNvbmZpZ3VyYWJsZSBlbGVtZW50cyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBicm9hZGVyIG5ldHdvcmsgc3RhY2sgYW5kIFVTQiBjb3JlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHJlbGV2YW50IGBDT05GSUdfYCBvcHRpb25zLCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZmVhdHVyZXMsIGFuZCBwZXJoYXBzIHNvbWUgaGVscGZ1bCBjb21tZW50cyB0aGF0IGNsYXJpZnkgdGhlIHB1cnBvc2Ugb2YgZWFjaCBzZXR0aW5nLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGlmIG5lZWRlZC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjM0MDIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDoyOS40ODY2NTI4ODZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTEwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDExMTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCByODE1Mi5cXG4gMTEyOlxcdFxcbiAxMTM6XFx0Y29uZmlnIFVTQl9MQU43OFhYXFxuIDExNDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWljcm9jaGlwIExBTjc4WFggQmFzZWQgVVNCIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcbiAxMTU6XFx0XFx0c2VsZWN0IE1JSVxcbiAxMTY6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gMTE3OlxcdFxcdHNlbGVjdCBNSUNST0NISVBfUEhZXFxuIDExODpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gMTE5OlxcdFxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG4gMTIwOlxcdFxcdGhlbHBcXG4gMTIxOlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBNaWNyb2NoaXAgTEFONzhYWCBiYXNlZCBVU0IgMlxcbiAxMjI6XFx0XFx0ICBcXHUwMDI2IFVTQiAzIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXJzLlxcbiAxMjM6XFx0XFx0ICBMQU43ODAwIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlclxcbiAxMjQ6XFx0XFx0ICBMQU43ODUwIDogVVNCIDIgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlclxcbiAxMjU6XFx0XFx0ICBMQU43ODAxIDogVVNCIDMgdG8gMTAvMTAwLzEwMDAgRXRoZXJuZXQgYWRhcHRlciAoTUFDIG9ubHkpXFxuIDEyNjpcXHRcXG4gMTI3OlxcdFxcdCAgUHJvcGVyIFBIWSBkcml2ZXIgaXMgcmVxdWlyZWQgZm9yIExBTjc4MDEuXFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjI5LjQ4NjcyNTMyNloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTUyODA4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipRdWljayBQSFkgTGF5ZXIgQ29uc2lkZXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIFVTQiBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9ucy4gVGhlIGBVU0JfTEFONzhYWGAgZHJpdmVyIGNsZWFybHkgaG9va3MgaW50byBgUEhZTElOS2AuIFRoYXQncyBzdGFuZGFyZCBhbmQgbWFrZXMgc2Vuc2U7IHRoZSBMQU43OFhYIGxpa2VseSByZWxpZXMgb24gYSBQSFkgYWJzdHJhY3Rpb24uIEJ1dCB3aGF0IGFib3V0IHRoZSBgVVNCX05FVF9BWDg4MTdYYCBkcml2ZXI/IEkgbmVlZCB0byBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24uIERvZXMgaXQgYWxzbyB1c2UgYFBIWUxJTktgLCBvciBkb2VzIGl0IG1hbmFnZSB0aGUgUEhZIGxheWVyIGRpcmVjdGx5PyBVbmRlcnN0YW5kaW5nIHRoaXMgZGlzdGluY3Rpb24gaXMgY3J1Y2lhbCBmb3IgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkgbXVzdCBsb29rIGludG8gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwMTAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjMyLjYzOTUzNTgxMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2OTY4NTYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX05FVF9BWDg4MTdYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTEzMj1jb25maWcgVVNCX1VTQk5FVFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY1LVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE2Njpjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY3LVxcdHRyaXN0YXRlIFxcXCJBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6MzQuMTA5MjI3MDQxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTc2OTUxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBVU0IgTmV0d29ya2luZyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgVVNCIG5ldHdvcmtpbmcuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBzb21lIG9mIHRoZXNlIG9wdGlvbnMsIHNvIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBTcGVjaWZpY2FsbHksIEkgcmVjYWxsIHRoZXJlIGJlaW5nIGEgY3J1Y2lhbCBzZWN0aW9uIGFyb3VuZCBsaW5lIDE2NiB0aGF0IGRlYWxzIHdpdGggdGhlIGNvcmUgVVNCIG5ldHdvcmsgZGV2aWNlIG9wdGlvbnMsIGFuZCB0aGF0J3Mgd2hlcmUgSSdsbCBiZWdpbi4gSSdtIGFpbWluZyB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IGRyaXZlcnMgYW5kIHRoZSBjb25maWd1cmFiaWxpdHkgZXhwb3NlZCB0byB0aGUgdXNlci4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGN1cnJlbnQgdGFzay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQzMTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDozNy45MDY5MjQ4MzZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTYwOlxcdFxcbiAxNjE6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgXFx1MDAzY2h0dHA6Ly93d3cubGludXgtdXNiLm9yZy91c2JuZXQvXFx1MDAzZS5cXG4gMTYyOlxcdFxcbiAxNjM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTY0OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHVzYm5ldC5cXG4gMTY1OlxcdFxcbiAxNjY6XFx0Y29uZmlnIFVTQl9ORVRfQVg4ODE3WFxcbiAxNjc6XFx0XFx0dHJpc3RhdGUgXFxcIkFTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcbiAxNjg6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuIDE2OTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gMTcwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuIDE3MTpcXHRcXHRzZWxlY3QgQVg4ODc5NkJfUEhZXFxuIDE3MjpcXHRcXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuIDE3MzpcXHRcXHRkZWZhdWx0IHlcXG4gMTc0OlxcdFxcdGhlbHBcXG4gMTc1OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBBU0lYIEFYODh4eHggYmFzZWQgVVNCIDIuMFxcbiAxNzY6XFx0XFx0ICAxMC8xMDAgRXRoZXJuZXQgYWRhcHRlcnMuXFxuIDE3NzpcXHRcXG4gMTc4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc2hvdWxkIHdvcmsgd2l0aCBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIGRldmljZXM6XFxuIDE3OTpcXHRcXHQgICAgKiBBdGVuIFVDMjEwVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDozNy45MDcwMDcwNjZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIzNzIzODIzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9uYWwgQ2hhbmdlcyBpbiBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYFVTQl9ORVRfQVg4ODE3WGAgYWxzbyBwdWxscyBpbiBgUEhZTElOS2AuIFRoYXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLiBOb3csIHdoYXQncyBnb2luZyBvbiB3aXRoIGBwaHlsaW5rX2V4cGVjdHNfcGh5YD8gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBnZXQgdG91Y2hlZCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEFoLCB5ZXMsIHRoZSBwYXRjaCByZW1vdmVzIHRoZSBjaGVjayBgKHBsLVx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0lOQkFORCBcdTAwMjZcdTAwMjYgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlKSlgIGZyb20gYm90aCBgcGh5bGlua19leHBlY3RzX3BoeWAgYW5kIGBwaHlsaW5rX2F0dGFjaF9waHlgLiBUaGlzIG1lYW5zIHRoZSBmdW5jdGlvbiB3aWxsIG5vdyByZXR1cm4gdHJ1ZSBmb3IgYE1MT19BTl9JTkJBTkRgIHdpdGggYW4gYDgwMjN6YCBpbnRlcmZhY2UgbW9kZSwgd2hlcmVhcyBiZWZvcmUsIGl0IHdvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UuIERlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGVyZS5cblxuTGV0J3MgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiBgc3RtbWFjX2luaXRfcGh5YC4gU2Nhbm5pbmcgdGhlIGNvZGUgYWdhaW4uLi5cblxuYGBgY1xuXHRcdGlmIChhZGRyIFx1MDAzYyAwKSB7XG5cdFx0XHQvKiBJZiBhIGN1c3RvbSBQQ1MgaXMgaW4gdXNlLCBubyBQSFkgaXMgbmVlZGVkICovXG5cdFx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2VwaHlsaW5rX3Bjcylcblx0XHRcdFx0cmV0dXJuIDA7XG5cblx0XHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwibm8gcGh5IGZvdW5kXFxuXCIpO1xuXHRcdFx0cmV0dXJuIC1FTk9ERVY7XG5cdFx0fVxuYGBgXG5cbk9rYXksIHRoZSBzYW1lIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIGFsc28gcHJlc2VudCBpbiBgc3RtbWFjX2luaXRfcGh5YC5cblxuUmlnaHQsIHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBnaXZpbmcgYSB0aG9yb3VnaCBmdXp6aW5nLiBXZSBzaG91bGQgZW5hYmxlIGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIEhhbmcgb24sIHRob3VnaC4gYFNUTU1BQ19QQ0lgIGRlcGVuZHMgb24gYENPTU1PTl9DTEtgLiBJJ2xsIGhhdmUgdG8gZG91YmxlLWNoZWNrIHRoYXQgYENPTU1PTl9DTEtgIGlzIGF2YWlsYWJsZSBpbiB0aGUgeDg2XzY0IGVudmlyb25tZW50LiBXZSBjYW4ndCB3YXN0ZSB0aW1lIG9uIGEgY29uZmlndXJhdGlvbiB0aGF0IHdvbid0IGJ1aWxkLiBMZXQgbWUgY2hlY2suLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4MjMsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDo0NC4xNDQyNDc4MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NjA2MzIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ09NTU9OX0NMS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwOTYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnPTIxMD1jb25maWcgSEFWRV9BVDkxX1VTQl9DTEtcXG4tLVxcbmFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnLTIxMi1cXG5hcmNoL2FybS9tYWNoLWF0OTEvS2NvbmZpZzoyMTM6Y29uZmlnIENPTU1PTl9DTEtfQVQ5MVxcbmFyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnLTIxNC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnPTEyPWNvbmZpZyBIQVZFX0xFR0FDWV9DTEsgIyBUT0RPOiBSZW1vdmUgb25jZSBhbGwgbGVnYWN5IHVzZXJzIGFyZSBtaWdyYXRlZFxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIxOm1lbnVjb25maWcgQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL0tjb25maWctMjItXFx0Ym9vbCBcXFwiQ29tbW9uIENsb2NrIEZyYW1ld29ya1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWc9MzQ9aWYgQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL0tjb25maWctMzUtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozNjpjb25maWcgQ09NTU9OX0NMS19XTTgzMVhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFdNODMxeC8yeCBQTUlDc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWc9NTM9Y29uZmlnIExNSzA0ODMyXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NjE6Y29uZmlnIENPTU1PTl9DTEtfQVBQTEVfTkNPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBcHBsZSBTb0MgTkNPc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNjgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo2OTpjb25maWcgQ09NTU9OX0NMS19NQVg3NzY4NlxcbmRyaXZlcnMvY2xrL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWF4aW0gNzc2MjAvNzc2ODYvNzc4MDIgTUZEXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy03NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjc2OmNvbmZpZyBDT01NT05fQ0xLX01BWDk0ODVcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTc3LVxcdHRyaXN0YXRlIFxcXCJNYXhpbSA5NDg1IFByb2dyYW1tYWJsZSBDbG9jayBHZW5lcmF0b3JcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgxLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6ODI6Y29uZmlnIENPTU1PTl9DTEtfUks4MDhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFJLODA1L1JLODA4L1JLODA5L1JLODE3L1JLODE4XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy04OS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjkwOmNvbmZpZyBDT01NT05fQ0xLX1JQMVxcbmRyaXZlcnMvY2xrL0tjb25maWctOTEtXFx0dHJpc3RhdGUgXFxcIlJhc3BiZXJyeSBQaSBSUDEtYmFzZWQgY2xvY2sgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctOTgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo5OTpjb25maWcgQ09NTU9OX0NMS19ISTY1NVhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEwMC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBIaTY1NXhcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMDgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxMDk6Y29uZmlnIENPTU1PTl9DTEtfU0NNSVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTEwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgY29udHJvbGxlZCB2aWEgU0NNSSBpbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTExOC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjExOTpjb25maWcgQ09NTU9OX0NMS19TQ1BJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMjAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBjb250cm9sbGVkIHZpYSBTQ1BJIGludGVyZmFjZVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTI4LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTI5OmNvbmZpZyBDT01NT05fQ0xLX1NJNTM0MVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTMwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzQxIGFuZCA1MzQwIEEvQi9DL0QgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTM5LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTQwOmNvbmZpZyBDT01NT05fQ0xLX1NJNTM1MVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTQxLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzUxQS9CL0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0Ny1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE0ODpjb25maWcgQ09NTU9OX0NMS19TSTUxNFxcbmRyaXZlcnMvY2xrL0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MTQgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTU2LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTU3OmNvbmZpZyBDT01NT05fQ0xLX1NJNTQ0XFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNTgtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDU0NCBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNjU6Y29uZmlnIENPTU1PTl9DTEtfU0k1NzBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTcwIGFuZCBjb21wYXRpYmxlIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3My1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE3NDpjb25maWcgQ09NTU9OX0NMS19CTTE4ODBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3NS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIEJpdG1haW4gQk0xODgwIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTgwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTgxOmNvbmZpZyBDT01NT05fQ0xLX0NEQ0U3MDZcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBUSSBDRENFNzA2IGNsb2NrIHN5bnRoZXNpemVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODctXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxODg6Y29uZmlnIENPTU1PTl9DTEtfVFBTNjg0NzBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4OS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgRHJpdmVyIGZvciBUSSBUUFM2ODQ3MCBQTUlDXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxOTY6Y29uZmlnIENPTU1PTl9DTEtfQ0RDRTkyNVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTk3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFRJIENEQ0U5MTMvOTI1LzkzNy85NDkgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjEyLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MjEzOmNvbmZpZyBDT01NT05fQ0xLX0NTMjAwMF9DUFxcbmRyaXZlcnMvY2xrL0tjb25maWctMjE0LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIENTMjAwMCBGcmFjdGlvbmFsLU4gQ2xvY2sgU3ludGhlc2l6ZXIgXFx1MDAyNiBDbG9jayBNdWx0aXBsaWVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTktXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjA6Y29uZmlnIENPTU1PTl9DTEtfRU43NTIzXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjEtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBaXJvaGEvRWNvTmV0IFNvQyBzeXN0ZW0gY2xvY2tzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjk6Y29uZmlnIENPTU1PTl9DTEtfRVA5M1hYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgQ2lycnVzIExvZ2ljIGVwOTN4eCBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzNi1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIzNzpjb25maWcgQ09NTU9OX0NMS19FWUVRXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciB0aGUgTW9iaWxleWUgRXllUSBwbGF0Zm9ybVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjQ3LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MjQ4OmNvbmZpZyBDT01NT05fQ0xLX0ZTTF9GTEVYU1BJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNDktXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgRmxleFNQSSBvbiBMYXllcnNjYXBlIFNvQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI1NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI1Njpjb25maWcgQ09NTU9OX0NMS19GU0xfU0FJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNTctXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBCQ0xLIG9mIEZyZWVzY2FsZSBTQUkgY29yZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2Ny1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI2ODpjb25maWcgQ09NTU9OX0NMS19HRU1JTklcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2OS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNzYtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyNzc6Y29uZmlnIENPTU1PTl9DTEtfTEFOOTY2WFxcbmRyaXZlcnMvY2xrL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIENsb2NrIENvbnRyb2xsZXIgZHJpdmVyIGZvciBMQU45NjZYIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjg2LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6Mjg3OmNvbmZpZyBDT01NT05fQ0xLX1MyTVBTMTFcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI4OC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBTMk1QUzFYL1M1TTg3NjcgTUZEXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMDQ9Y29uZmlnIENMS19UV0w2MDQwXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMxMS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjMxMjpjb25maWcgQ09NTU9OX0NMS19BWElfQ0xLR0VOXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMTMtXFx0dHJpc3RhdGUgXFxcIkFYSSBjbGtnZW4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMjg9Y29uZmlnIENMS19MUzEwMjhBX1BMTERJR1xcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMzctXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozMzg6Y29uZmlnIENPTU1PTl9DTEtfWEdFTkVcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMzOS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIEFQTSBYR2VuZSBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM0NTpjb25maWcgQ09NTU9OX0NMS19MT0NITkFHQVJcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiQ2lycnVzIExvZ2ljIExvY2huYWdhciBjbG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM1MS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM1Mjpjb25maWcgQ09NTU9OX0NMS19OUENNOFhYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNTMtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgdGhlIE5QQ004WFggU29DIEZhbWlseVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzYwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MzYxOmNvbmZpZyBDT01NT05fQ0xLX0xPT05HU09OMlxcbmRyaXZlcnMvY2xrL0tjb25maWctMzYyLVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTG9vbmdzb24tMiBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM2OS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM3MDpjb25maWcgQ09NTU9OX0NMS19OWFBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3MS1cXHRkZWZfYm9vbCBDT01NT05fQ0xLIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xQQzE4WFggfHwgQVJDSF9MUEMzMlhYKVxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozNzc6Y29uZmlnIENPTU1PTl9DTEtfUEFMTUFTXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzgtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgVEkgUGFsbWFzIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4My1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM4NDpjb25maWcgQ09NTU9OX0NMS19QV01cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4NS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBQV01zIHVzZWQgYXMgY2xvY2sgb3V0cHV0c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzkwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MzkxOmNvbmZpZyBDT01NT05fQ0xLX1BYQVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzkyLVxcdGRlZl9ib29sIENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgQVJDSF9QWEFcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzk1LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6Mzk2OmNvbmZpZyBDT01NT05fQ0xLX1JTOV9QQ0lFXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTctXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgUmVuZXNhcyA5LXNlcmllcyBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQwNC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQwNTpjb25maWcgQ09NTU9OX0NMS19TSTUyMVhYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MDYtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU2t5V29ya3MgU2k1MjF4eCBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxMy1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQxNDpjb25maWcgQ09NTU9OX0NMS19WQzNcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxNS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhQ2xvY2sgMyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjItXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0MjM6Y29uZmlnIENPTU1PTl9DTEtfVkM1XFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjQtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgSURUIFZlcnNhQ2xvY2sgNSw2IGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQzMjpjb25maWcgQ09NTU9OX0NMS19WQzdcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMy1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhY2xvY2sgNyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDAtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NDE6Y29uZmlnIENPTU1PTl9DTEtfU1RNMzJGXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDItXFx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoTUFDSF9TVE0zMkY0MjkgfHwgTUFDSF9TVE0zMkY0NjkgfHwgTUFDSF9TVE0zMkY3NDYpXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ0NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ0Njpjb25maWcgQ09NTU9OX0NMS19TVE0zMkg3XFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDctXFx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiBNQUNIX1NUTTMySDc0M1xcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTAtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NTE6Y29uZmlnIENPTU1PTl9DTEtfTU1QMlxcbmRyaXZlcnMvY2xrL0tjb25maWctNDUyLVxcdGRlZl9ib29sIENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgKE1BQ0hfTU1QMl9EVCB8fCBNQUNIX01NUDNfRFQpXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ1Njpjb25maWcgQ09NTU9OX0NMS19NTVAyX0FVRElPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTctICAgICAgICB0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNTVAyIEF1ZGlvIHN1YnN5c3RlbVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNDYxLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NDYyOmNvbmZpZyBDT01NT05fQ0xLX0JENzE4WFhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2My1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciAzMksgY2xrIGdhdGVzIG9uIFJPSE0gUE1JQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2OC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ2OTpjb25maWcgQ09NTU9OX0NMS19GSVhFRF9NTUlPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NzAtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZW1vcnkgTWFwcGVkIEZpeGVkIHZhbHVlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNDc1LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NDc2OmNvbmZpZyBDT01NT05fQ0xLX0syMTBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ3Ny1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIHRoZSBDYW5hYW4gS2VuZHJ5dGUgSzIxMCBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4Mi1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ4Mzpjb25maWcgQ09NTU9OX0NMS19LMjMwXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODQtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMzAgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0ODk6Y29uZmlnIENPTU1PTl9DTEtfU1A3MDIxXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU3VucGx1cyBTUDcwMjEgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0OTk6Y29uZmlnIENPTU1PTl9DTEtfUlBNSVxcbmRyaXZlcnMvY2xrL0tjb25maWctNTAwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgYmFzZWQgb24gUklTQy1WIFJQTUlcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvS2NvbmZpZy0yLVxcbmRyaXZlcnMvY2xrL2FzcGVlZC9LY29uZmlnOjM6Y29uZmlnIENPTU1PTl9DTEtfQVNQRUVEXFxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWctNC0gICAgICAgIGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgQXNwZWVkIEJNQyBTb0NzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWctMTQtXFxuZHJpdmVycy9jbGsvYXNwZWVkL0tjb25maWc6MTU6Y29uZmlnIENPTU1PTl9DTEtfQVNUMjcwMFxcbmRyaXZlcnMvY2xrL2FzcGVlZC9LY29uZmlnLTE2LSAgICAgICAgYm9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBU1QyNzAwIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9LY29uZmlnPTQ5PWNvbmZpZyBDTEtfQkNNX0tPTkFcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvY2xrL2JjbS9LY29uZmlnOjU4OmNvbmZpZyBDT01NT05fQ0xLX0lQUk9DXFxuZHJpdmVycy9jbGsvYmNtL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy0yLVxcbmRyaXZlcnMvY2xrL2Vzd2luL0tjb25maWc6Mzpjb25maWcgQ09NTU9OX0NMS19FU1dJTlxcbmRyaXZlcnMvY2xrL2Vzd2luL0tjb25maWctNC1cXHRib29sXFxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy01LVxcbmRyaXZlcnMvY2xrL2Vzd2luL0tjb25maWc6Njpjb25maWcgQ09NTU9OX0NMS19FSUM3NzAwXFxuZHJpdmVycy9jbGsvZXN3aW4vS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJFSUM3NzAwIENsb2NrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6Mjpjb25maWcgQ09NTU9OX0NMS19ISTM1MTZDVjMwMFxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkhJMzUxNkNWMzAwIENsb2NrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTktXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6MTA6Y29uZmlnIENPTU1PTl9DTEtfSEkzNTE5XFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIkhpMzUxOSBDbG9jayBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy0xNy1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzoxODpjb25maWcgQ09NTU9OX0NMS19ISTM1NTlBXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMTktXFx0Ym9vbCBcXFwiSGkzNTU5QSBDbG9jayBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy0yNS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZzoyNjpjb25maWcgQ09NTU9OX0NMS19ISTM2NjBcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJIaTM2NjAgQ2xvY2sgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMzItXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWc6MzM6Y29uZmlnIENPTU1PTl9DTEtfSEkzNjcwXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiSGkzNjcwIENsb2NrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTM5LVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnOjQwOmNvbmZpZyBDT01NT05fQ0xLX0hJMzc5OENWMjAwXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL0tjb25maWctNDEtXFx0dHJpc3RhdGUgXFxcIkhpMzc5OENWMjAwIENsb2NrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnOjQ4OmNvbmZpZyBDT01NT05fQ0xLX0hJNjIyMFxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9LY29uZmlnLTQ5LVxcdGJvb2wgXFxcIkhpNjIyMCBDbG9jayBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9pbWd0ZWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvY2xrL2ltZ3RlYy9LY29uZmlnOjI6Y29uZmlnIENPTU1PTl9DTEtfQk9TVE9OXFxuZHJpdmVycy9jbGsvaW1ndGVjL0tjb25maWctMy1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1JUFMgQm9zdG9uIGJvYXJkc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL2tleXN0b25lL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9LY29uZmlnOjI6Y29uZmlnIENPTU1PTl9DTEtfS0VZU1RPTkVcXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlcnMgZm9yIEtleXN0b25lIGJhc2VkIFNPQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnPTU9bWVudSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTctXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo4OmNvbmZpZyBDT01NT05fQ0xLX01FRElBVEVLXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTQ6Y29uZmlnIENPTU1PTl9DTEtfTUVESUFURUtfRkhDVExcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1LVxcdGJvb2wgXFxcImNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgRkhDVEwgaGFyZHdhcmUgY29udHJvbFxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjAtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyMTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIyLVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzAxXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI5OmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMV9NTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDEgbW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTM0LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzU6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzAxX0lNR1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDEgaW1nc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy00MC1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjQxOmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMV9WREVDU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSB2ZGVjc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjQ3OmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMV9ISUZTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzAxIGhpZnN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNTItXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo1Mzpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfRVRIU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy01NC1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBldGhzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTU4LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6NTk6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzAxX0JEUFNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNjAtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MDEgYmRwc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy02NC1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjY1OmNvbmZpZyBDT01NT05fQ0xLX01UMjcwMV9BVURTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWF0ZWsgTVQyNzAxIGF1ZHN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctNzAtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo3MTpjb25maWcgQ09NTU9OX0NMS19NVDI3MDFfRzNEU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy03Mi1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcwMSBnM2RzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTc2LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6Nzc6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTg0LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6ODU6Y29uZmlnIENPTU1PTl9DTEtfTVQyNzEyX0JEUFNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctODYtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzEyIGJkcHN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctOTAtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzo5MTpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJfSU1HU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDI3MTIgaW1nc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy05Ni1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjk3OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9KUEdERUNTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTk4LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBqcGdkZWNzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEwMi1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjEwMzpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJfTUZHQ0ZHXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMDQtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzEyIG1mZ2NmZ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTA4LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTA5OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9NTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTEwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiBtbXN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTE0LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTE1OmNvbmZpZyBDT01NT05fQ0xLX01UMjcxMl9WREVDU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQyNzEyIHZkZWNzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjEyMTpjb25maWcgQ09NTU9OX0NMS19NVDI3MTJfVkVOQ1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTIyLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UMjcxMiB2ZW5jc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMjYtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMjc6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzM1XFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMjgtXFx0dHJpc3RhdGUgXFxcIk1haW4gY2xvY2sgZHJpdmVycyBmb3IgTWVkaWFUZWsgTVQ2NzM1XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xMzUtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxMzY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzM1X0lNR1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTM3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjczNSBpbWdzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE0Mi1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE0Mzpjb25maWcgQ09NTU9OX0NMS19NVDY3MzVfTUZHQ0ZHXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNDQtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IG1mZ2NmZ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTQ5LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTUwOmNvbmZpZyBDT01NT05fQ0xLX01UNjczNV9WREVDU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNTEtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzM1IHZkZWNzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE1Ni1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE1Nzpjb25maWcgQ09NTU9OX0NMS19NVDY3MzVfVkVOQ1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTU4LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjczNSB2ZW5jc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNjMtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxNjQ6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1XFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNjUtICAgICAgIGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoxNzI6Y29uZmlnIENPTU1PTl9DTEtfTVQ2NzY1X0FVRElPU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xNzMtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBhdWRpb3N5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTc3LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTc4OmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NV9DQU1TWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE3OS0gICAgICAgdHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IGNhbXN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTgzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTg0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NV9HQ0VTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE4NS0gICAgICAgdHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2NzY1IGdjZXN5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTg5LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MTkwOmNvbmZpZyBDT01NT05fQ0xLX01UNjc2NV9NTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMTkxLSAgICAgICB0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NjUgbW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTE5NS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjE5Njpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfSU1HU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0xOTctICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBpbWdzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIwMS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIwMjpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfVkNPREVDU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMDMtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSB2Y29kZWNzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIwNy1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIwODpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUZHU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMDktICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtZmdzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIxMy1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIxNDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTBBU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMTUtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMGFzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIxOS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIyMDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTBCU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMjEtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMGJzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIyNS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIyNjpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTFBU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMjctICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMWFzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIzMS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIzMjpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTFCU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMzMtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMWJzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTIzNy1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjIzODpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTJBU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yMzktICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMmFzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI0My1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI0NDpjb25maWcgQ09NTU9OX0NMS19NVDY3NjVfTUlQSTJCU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNDUtICAgICAgIHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc2NSBtaXBpMmJzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI0OS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI1MDpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI1MS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzlcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI1Ny1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI1ODpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfTU1TWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgbW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI2My1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI2NDpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfSU1HU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNjUtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzc5IGltZ3N5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjY5LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MjcwOmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9JUEVTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI3MS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgaXBlc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yNzUtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyNzY6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5X0NBTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjc3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc3OSBjYW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4MS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjI4Mjpjb25maWcgQ09NTU9OX0NMS19NVDY3NzlfVkRFQ1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjgzLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc3OSB2ZGVjc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yODctXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzoyODg6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5X1ZFTkNTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgdmVuY3N5c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMjkzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6Mjk0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc3OV9NRkdDRkdcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTI5NS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3NzkgbWZnY2ZnXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0yOTktXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozMDA6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzc5X0FVRFNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzAxLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhdGVrIE1UNjc3OSBhdWRzeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMwNS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMwNjpjb25maWcgQ09NTU9OX0NMS19NVDY3OTVcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMwNy1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTVcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMxNS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMxNjpjb25maWcgQ09NTU9OX0NMS19NVDY3OTVfTUZHQ0ZHXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zMTctXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk1IG1mZ2NmZ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzIyLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzIzOmNvbmZpZyBDT01NT05fQ0xLX01UNjc5NV9NTVNZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzI0LSAgICAgICB0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTUgbW1zeXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMyOS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnOjMzMDpjb25maWcgQ09NTU9OX0NMS19NVDY3OTVfVkRFQ1NZU1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzMxLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIE1lZGlhVGVrIE1UNjc5NSBWREVDU1lTXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zMzYtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozMzc6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk1X1ZFTkNTWVNcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9LY29uZmlnLTMzOC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZWRpYVRlayBNVDY3OTUgVkVOQ1NZU1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzQzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWc6MzQ0OmNvbmZpZyBDT01NT05fQ0xLX01UNjc5N1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL0tjb25maWctMzQ1LVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk3XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNTEtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozNTI6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk3X01NU1lTXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNTMtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWVkaWFUZWsgTVQ2Nzk3IG1tc3lzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZy0zNTctXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvS2NvbmZpZzozNTg6Y29uZmlnIENPTU1PTl9DTEtfTVQ2Nzk3X0lNR1NZU1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDo0NS43MTAzMTk4N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzIzNjA3NTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgQ09NTU9OX0NMS2AgaXMgdGhlIENvbW1vbiBDbG9jayBGcmFtZXdvcmsncyBnZW5lcmljIGNvbmZpZy4gSXQncyBwZXJ2YXNpdmUsIGVzcGVjaWFsbHkgb24gYXJjaGl0ZWN0dXJlcyBsaWtlIHg4Nl82NDsgaXQncyBwcmFjdGljYWxseSBiYWtlZCBpbiwgb2Z0ZW4gYnkgaW5oZXJpdGFuY2UuICBKdXN0IHRvIGJlIHN1cmUsIEknbGwgY29uZmlybSB0aGF0IGBDT01NT05fQ0xLYCBpcyBhIGBib29sYCBhbmQgaXQncyBkZWZpbml0ZWx5IGVuYWJsZWQgaW4gdGhlIHN5emthbGxlcidzIHg4Nl82NCBjb25maWcuXG5cbk5vdywgaW5zdGVhZCBvZiBjaGVja2luZyB0aGUgc3l6a2FsbGVyIGNvbmZpZywgSSdsbCBmb2N1cyBkaXJlY3RseSBvbiB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJIGp1c3QgbmVlZCB0byBvdXRwdXQgdGhlICptdXN0LWhhdmVzKi4gT2theSwgdGhvc2Ugd291bGQgYmU6XG5cbiogICBgU1RNTUFDX0VUSGBcbiogICBgU1RNTUFDX1BDSWBcbiogICBgVVNCX0xBTjc4WFhgXG4qICAgYFVTQl9ORVRfQVg4ODE3WGBcblxuV2FpdCBhIHNlY29uZCwgYFVTQl9ORVRfQVg4ODE3WGAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCX1VTQk5FVGAuIEJ1dCwgZG9lcyBgVVNCX0xBTjc4WFhgIGFsc28gZGVwZW5kIG9uIGBVU0JfVVNCTkVUYD8gTm8sIGl0J3MgYSBzZWxmLWNvbnRhaW5lZCBkcml2ZXIuIEkgc2hvdWxkIGNoZWNrIGBVU0JfVVNCTkVUYCBhbnl3YXksIGp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDg2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjUxLjQzMzkzMDkyNloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4MjM2MjY1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1VTQk5FVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMTM9Y29uZmlnIFVTQl9MQU43OFhYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTMyOmNvbmZpZyBVU0JfVVNCTkVUXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTMzLVxcdHRyaXN0YXRlIFxcXCJNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTQ6MjQ6NTMuMDE2MzAyOTQyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzkxOTQ4OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgUEhZIENvbm5lY3Rpb24gRnVuY3Rpb25zKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGluY29ycG9yYXRlIGBVU0JfVVNCTkVUYCBpbnRvIHRoaXMgcmV2aWV3LiBGaXJzdCwgSSdsbCBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBmb2N1cyBvbi4gTGV0J3Mgc3RhcnQgd2l0aCBgc3RtbWFjX2luaXRfcGh5YC4gVGhlbiwgSSBuZWVkIHRvIHJlbWVtYmVyIGBwaHlsaW5rX2V4cGVjdHNfcGh5YC4gSSB3YXMganVzdCByZXZpZXdpbmcgYHBoeWxpbmtfYXR0YWNoX3BoeWAg4oCTIGFoLCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHNvIHRoYXQgbWlnaHQgY2hhbmdlIHRoaW5ncy4gTm93LCBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSBmdW5jdGlvbnMgdGhhdCAqY2FsbCogdGhhdCBzdGF0aWMgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBhbmFseXplIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC4gVGhlc2UgbG9vayBsaWtlIHRoZSBwcmltYXJ5IGV4cG9ydGVkIGludGVyZmFjZXMgdGhhdCBldmVudHVhbGx5IGludGVyYWN0IHdpdGggYHBoeWxpbmtfYXR0YWNoX3BoeWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTAyLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE0OjI0OjU2LjU5NTQ5OTY1NFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxNjMxMDI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9OTgyPXN0YXRpYyBpbnQgbWFjYl9waHlsaW5rX2Nvbm5lY3Qoc3RydWN0IG1hY2IgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05OTktXFx0XFx0LyogYXR0YWNoIHRoZSBtYWMgdG8gdGhlIHBoeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTAwMDpcXHRcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KGJwLVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTAwMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzIxND1zdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jb25uZWN0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzIyNy1cXHRcXHRcXHQvKiBhdHRhY2ggdGhlIG1hYyB0byB0aGUgcGh5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMyMjg6XFx0XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShhZGFwdGVyLVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjI5LVxcdFxcdH0gZWxzZSBpZiAoKChhZGFwdGVyLVxcdTAwM2Vjc3IuaWRfcmV2IFxcdTAwMjYgSURfUkVWX0lEX01BU0tfKSA9PVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzE2PXN0YXRpYyBpbnQgc3RtbWFjX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxMzY2OlxcdFxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluaywgcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEzNjctXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwLmM9MTQwNj1zdGF0aWMgaW50IHRuNDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwLmM6MTQxMTpcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDAuYy0xNDEyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz00NjI9c3RhdGljIGludCBuZ2JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy00NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjQ3OTpcXHRlcnIgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHd4LVxcdTAwM2VwaHlsaW5rLCB3eC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNDgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzozMDA6XFx0XFx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwaHlsaW5rLCB3eC1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTMwMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjE4LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIxOTogKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjIwLSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjMyLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzMzppbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1Mi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjUzOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2MS0gKiBDb25uZWN0IHRoZSBwaHkgc3BlY2lmaWVkIGluIHRoZSBkZXZpY2Ugbm9kZSBAZG4gdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjI6ICogc3BlY2lmaWVkIGJ5IEBwbC4gQWN0aW9ucyBzcGVjaWZpZWQgaW4gcGh5bGlua19jb25uZWN0X3BoeSgpIHdpbGwgYmVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogcGVyZm9ybWVkLlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTcwMz1zdGF0aWMgaW50IGF4ODg3NzJfaW5pdF9waHkoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzE0OlxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluaywgcHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzE1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjg1OD1zdGF0aWMgaW50IGxhbjc4eHhfcGh5X2luaXQoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI5MDEtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyOTAyOlxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkoZGV2LVxcdTAwM2VwaHlsaW5rLCBwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjkwMy1cXHRpZiAocmV0KSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03Mjc9Ym9vbCBwaHlsaW5rX2V4cGVjdHNfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCk7XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzI4LVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyOTppbnQgcGh5bGlua19jb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqLCBzdHJ1Y3QgcGh5X2RldmljZSAqKTtcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MzAtaW50IHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKiwgc3RydWN0IGRldmljZV9ub2RlICosIHUzMiBmbGFncyk7XFxuLS1cXG5uZXQvZHNhL3VzZXIuYz0yNjM4PXN0YXRpYyBpbnQgZHNhX3VzZXJfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2LCBpbnQgYWRkcixcXG4tLVxcbm5ldC9kc2EvdXNlci5jLTI2NTEtXFxubmV0L2RzYS91c2VyLmM6MjY1MjpcXHRyZXR1cm4gcGh5bGlua19jb25uZWN0X3BoeShkcC1cXHUwMDNlcGwsIHVzZXJfZGV2LVxcdTAwM2VwaHlkZXYpO1xcbm5ldC9kc2EvdXNlci5jLTI2NTMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNDo1OC44MTE4MTQ1NjJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk3OTg5NTQ5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUEhZIEluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgY29kZSBwYXRocyBpbnZvbHZlZC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgaXQgY2hhbmdlcyBQSFkgKFBoeXNpY2FsIExheWVyKSBpbml0aWFsaXphdGlvbiB3aXRoaW4gdGhlIGBzdG1tYWNgIGRyaXZlciBhbmQgdGhlIGdlbmVyaWMgYHBoeWxpbmtgIGZyYW1ld29yay4gSSBzdGFydGVkIGJ5IGlkZW50aWZ5aW5nIGtleSBmdW5jdGlvbnMgdGhhdCBzZWVtIGNlbnRyYWwgdG8gdGhlIGNoYW5nZTogYHBoeWxpbmtfY29ubmVjdF9waHlgIGlzIHVzZWQgYnJvYWRseSwgc28gdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgaXMgYHN0bW1hY19pbml0X3BoeWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHRhcmdldHMgYXJlIG5vdCBpbmxpbmVkLCB0aGVyZWZvcmUgZm9jdXMgb24gdGhlIGNhbGxlcnMuXG5cblRoZSBtb3JlIEkgbG9vaywgYHN0bW1hY19pbml0X3BoeWAgaXMgc3RhdGljIGFuZCBpdCBjYWxscyBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmVuJ3Qgc3RhdGljLiBgc3RtbWFjX29wZW5gIHdpbGwgYmUgbXkgYmVzdCBmb2N1cyBzeW1ib2wuIGBwaHlsaW5rX2V4cGVjdHNfcGh5YCBpcyBleHBvcnRlZCwgYXMgYXJlIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YCwgdGhlcmVmb3JlIHRoZXkgYXJlbid0IGlubGluZWQsIHNvIHRoZSBjYWxsZXJzIG9mIHRob3NlIGFyZSBpbnRlcmVzdGluZy5cblxuU28gdGhlIG1haW4gZnVuY3Rpb25zIG9yIGVudHJ5IHBvaW50cyBJIHdpbGwgZm9jdXMgb24gYXJlIHRoZXNlOlxuKiAgIGBzdG1tYWNfb3BlbmBcbiogICBgcGh5bGlua19leHBlY3RzX3BoeWBcbiogICBgcGh5bGlua19jb25uZWN0X3BoeWBcbiogICBgcGh5bGlua19vZl9waHlfY29ubmVjdGBcbiogICBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgXG5cbkkgbmVlZCB0byBjb25maXJtIHdoaWNoIGNvbmZpZ3VyYXRpb25zIHdpbGwgZW5hYmxlIHRoZSByZWxldmFudCBjb2RlLiBMb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIEknbGwgbmVlZCB0byBlbmFibGUgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBTVE1NQUNfRVRIYCwgYFNUTU1BQ19QQ0lgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYFVTQl9VU0JORVRgLCBgVVNCX0xBTjc4WFhgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIGBTVE1NQUNfUENJYCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBgQ09NTU9OX0NMS2AuIFN5emthbGxlcidzIGR1bW15IFVTQiBIQ0Qgd2lsbCBtYWtlIHRoZSBVU0IgZGV2aWNlcyByZWFjaGFibGUuXG5cbkkgd2FudCB0byBjb25maXJtIGBzdG1tYWNgIGlzIHJlYWNoYWJsZSB2aWEgYFNUTU1BQ19QQ0lgLiBJIHNob3VsZCBhZGQgYFNUTU1BQ19QTEFURk9STWAgYXMgd2VsbCwgYXMgdGhhdCBpcyBwbGF0Zm9ybS1iYXNlZCBkZXZpY2UuXG5cblRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBhbHRlcnMgUEhZIGluaXRpYWxpemF0aW9uIGxvZ2ljLiBJIG5lZWQgdG8gYmUgYWJsZSB0byBleGVyY2lzZSB0aGlzIGxvZ2ljLCBhbmQgSSB3aWxsIGJlIGFibGUgdG8gZG8gdGhpcyB0aHJvdWdoIHRoZSBgc3RtbWFjYCBkcml2ZXIgKHJlYWNoYWJsZSB2aWEgUENJIGFuZCBwbGF0Zm9ybSBkZXZpY2VzKSBhbmQgbmV0d29yayBkcml2ZXJzIGZvciBVU0IgRXRoZXJuZXQgYWRhcHRlcnMuIFRoZSBwYXRjaCBhZmZlY3RzIGhvdyBhbmQgd2hlbiBhIFBIWSBpcyBleHBlY3RlZCBhbmQgYXR0YWNoZWQuIFRoYXQgaXMgdGhlIGZ1bmN0aW9uYWwgY29yZSwgSSdsbCBmb2N1cyBvbiB0aGUgZW50cnkgcG9pbnRzIHdoaWNoIGNhbGwgdGhlIGZ1bmN0aW9ucyBjaGFuZ2VkIGluIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNjQsIk91dHB1dFRva2VucyI6MjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxNDoyNToxOC42MTA3NzI3OTlaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQxMjA4NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX0xBTjc4WFhcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19vcGVuXCIsXG4gICAgXCJwaHlsaW5rX2V4cGVjdHNfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX29mX3BoeV9jb25uZWN0XCIsXG4gICAgXCJwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBIWSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIGdlbmVyaWMgcGh5bGluayBmcmFtZXdvcmsuIFRoZSBzdG1tYWMgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgUENJIChTVE1NQUNfUENJKSwgYW5kIHBoeWxpbmsgaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycyBpbmNsdWRpbmcgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIChVU0JfTEFONzhYWCwgVVNCX05FVF9BWDg4MTdYKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBkdW1teSBVU0IgSENELiBUaGUgY2hhbmdlcyBhbHRlciB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIFBIWSBpcyBleHBlY3RlZCBvciBhdHRhY2hlZCwgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIixcbiAgICBcIlNUTU1BQ19QTEFURk9STVwiLFxuICAgIFwiVVNCX1VTQk5FVFwiLFxuICAgIFwiVVNCX0xBTjc4WFhcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19vcGVuXCIsXG4gICAgXCJwaHlsaW5rX2V4cGVjdHNfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX29mX3BoeV9jb25uZWN0XCIsXG4gICAgXCJwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBIWSBpbml0aWFsaXphdGlvbiBsb2dpYyBpbiB0aGUgc3RtbWFjIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIGdlbmVyaWMgcGh5bGluayBmcmFtZXdvcmsuIFRoZSBzdG1tYWMgZHJpdmVyIGlzIHJlYWNoYWJsZSB2aWEgUENJIChTVE1NQUNfUENJKSwgYW5kIHBoeWxpbmsgaXMgcmVhY2hhYmxlIHZpYSB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycyBpbmNsdWRpbmcgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIChVU0JfTEFONzhYWCwgVVNCX05FVF9BWDg4MTdYKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBkdW1teSBVU0IgSENELiBUaGUgY2hhbmdlcyBhbHRlciB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIFBIWSBpcyBleHBlY3RlZCBvciBhdHRhY2hlZCwgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowc2zg9[1] Phase: Succeeded StartedAt: 2026-07-30 14:25:28 +0000 UTC FinishedAt: 2026-07-30 14:25:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 14:25:28 +0000 UTC FinishedAt: 2026-07-30 14:25:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2] Phase: Succeeded StartedAt: 2026-07-30 14:25:28 +0000 UTC FinishedAt: 2026-07-30 15:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 14:25:28 +0000 UTC FinishedAt: 2026-07-30 15:59:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 14:25:28 +0000 UTC FinishedAt: 2026-07-30 14:25:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 14:25:28 +0000 UTC FinishedAt: 2026-07-30 14:25:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc2zg9/series-workflowc2zg9-convert-artifact-2075557695/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 14:25:38 +0000 UTC FinishedAt: 2026-07-30 14:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 14:25:38 +0000 UTC FinishedAt: 2026-07-30 14:45:47 +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:*2aa0728a-3247-413f-8a34-c4f2e9a99203,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-workflowc2zg9/series-workflowc2zg9-convert-artifact-2075557695/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": "bd021fc1-9f47-4873-a5fb-43dcebf263de", "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-workflowc2zg9/series-workflowc2zg9-build-action-3124660677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 14:25:38 +0000 UTC FinishedAt: 2026-07-30 14:45:26 +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:*2aa0728a-3247-413f-8a34-c4f2e9a99203,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-workflowc2zg9/series-workflowc2zg9-convert-artifact-2075557695/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": "bd021fc1-9f47-4873-a5fb-43dcebf263de", "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-workflowc2zg9/series-workflowc2zg9-build-action-3124660677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 14:45:47 +0000 UTC FinishedAt: 2026-07-30 14:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 14:45:47 +0000 UTC FinishedAt: 2026-07-30 14:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 14:45:47 +0000 UTC FinishedAt: 2026-07-30 14:45:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 14:45:47 +0000 UTC FinishedAt: 2026-07-30 14:45:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc2zg9/series-workflowc2zg9-convert-artifact-14138446/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 14:45:57 +0000 UTC FinishedAt: 2026-07-30 14:48:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 14:45:57 +0000 UTC FinishedAt: 2026-07-30 14:48:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bd021fc1-9f47-4873-a5fb-43dcebf263de,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-workflowc2zg9/series-workflowc2zg9-build-action-3124660677/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-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 14:48:10 +0000 UTC FinishedAt: 2026-07-30 14:48:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 14:48:10 +0000 UTC FinishedAt: 2026-07-30 14:48:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 14:48:10 +0000 UTC FinishedAt: 2026-07-30 15:07:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 14:48:10 +0000 UTC FinishedAt: 2026-07-30 15:07:22 +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:*2aa0728a-3247-413f-8a34-c4f2e9a99203,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-workflowc2zg9/series-workflowc2zg9-convert-artifact-14138446/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": "a1fdf39d-5b40-47f1-a602-3c6404d7c54b", "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-workflowc2zg9/series-workflowc2zg9-build-action-336485858/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 14:48:10 +0000 UTC FinishedAt: 2026-07-30 15:07:12 +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:*2aa0728a-3247-413f-8a34-c4f2e9a99203,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-workflowc2zg9/series-workflowc2zg9-convert-artifact-14138446/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": "a1fdf39d-5b40-47f1-a602-3c6404d7c54b", "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-workflowc2zg9/series-workflowc2zg9-build-action-336485858/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 15:07:22 +0000 UTC FinishedAt: 2026-07-30 15:07:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 15:07:22 +0000 UTC FinishedAt: 2026-07-30 15:07:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 15:07:22 +0000 UTC FinishedAt: 2026-07-30 15:09:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 15:07:22 +0000 UTC FinishedAt: 2026-07-30 15:09:36 +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:*a1fdf39d-5b40-47f1-a602-3c6404d7c54b,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-workflowc2zg9/series-workflowc2zg9-build-action-336485858/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-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 15:09:46 +0000 UTC FinishedAt: 2026-07-30 15:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 15:09:46 +0000 UTC FinishedAt: 2026-07-30 15:59:18 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*bd021fc1-9f47-4873-a5fb-43dcebf263de,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a1fdf39d-5b40-47f1-a602-3c6404d7c54b,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-workflowc2zg9/series-workflowc2zg9-build-action-3124660677/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-workflowc2zg9/series-workflowc2zg9-build-action-336485858/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 15:09:46 +0000 UTC FinishedAt: 2026-07-30 15:09:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 15:09:46 +0000 UTC FinishedAt: 2026-07-30 15:09:50 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc2zg9/series-workflowc2zg9-convert-artifact-4042834547/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 15:09:46 +0000 UTC FinishedAt: 2026-07-30 15:09:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 15:09:46 +0000 UTC FinishedAt: 2026-07-30 15:09:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 15:09:46 +0000 UTC FinishedAt: 2026-07-30 15:09:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 15:09:56 +0000 UTC FinishedAt: 2026-07-30 15:59:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc2zg9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_open","phylink_expects_phy","phylink_connect_phy","phylink_of_phy_connect","phylink_fwnode_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ed6dc972c19ff9ffca504f5739848da4275219e3","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI","STMMAC_PLATFORM","USB_USBNET","USB_LAN78XX","USB_NET_AX8817X"],"series_id":"aea618b8-1439-46cb-840c-18355cbaa4e4","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 15:09:56 +0000 UTC FinishedAt: 2026-07-30 15:59:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bd021fc1-9f47-4873-a5fb-43dcebf263de,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a1fdf39d-5b40-47f1-a602-3c6404d7c54b,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-workflowc2zg9/series-workflowc2zg9-build-action-3124660677/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-workflowc2zg9/series-workflowc2zg9-build-action-336485858/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-workflowc2zg9/series-workflowc2zg9-convert-artifact-4042834547/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,}