Name: series-workflow95hfx Phase: Failed StartedAt: 2026-08-13 17:57:20 +0000 UTC FinishedAt: 2026-08-13 18:58:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95hfx[0] Phase: Succeeded StartedAt: 2026-08-13 17:57:20 +0000 UTC FinishedAt: 2026-08-13 18:57:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95hfx[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 17:57:20 +0000 UTC FinishedAt: 2026-08-13 18:57:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDlrIGRyaXZlciAoeG1pdC5jKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEF0aGVyb3MgODAyLjExbiBQQ0kvUENJZS9BSEIgd2lyZWxlc3MgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0ICh1bmxpa2UgYXRoOWtfaHRjKS4gVGh1cywgaXQgaXMgaW1wb3NzaWJsZSB0byBtZWFuaW5nZnVsbHkgZnV6eiB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUwY2JlZTczMWQ0ODIxMDJhYzY4MDJmZGFjNTkzZThkYzU5MjM1M2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxODo1NjoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xuaW5kZXggODlkOGIzMTc4Nzg0Ni4uMzQxM2JiNDkwNmQ0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbkBAIC0xNjgsNyAmIzQzOzE2OCw3IEBAIHN0YXRpYyBib29sIGF0aF9tZXJnZV9yYXRldGJsKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBhdGhfYnVmICpiZixcbiBcdGlmICghc3RhKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlKHN0YS1cdTAwM2VyYXRlcyk7XG4mIzQzO1x0cmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZV9iaChzdGEtXHUwMDNlcmF0ZXMpO1xuIFx0aWYgKCFyYXRldGJsKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGg5ayBkcml2ZXIgKHhtaXQuYyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUvQUhCIHdpcmVsZXNzIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCAodW5saWtlIGF0aDlrX2h0YykuIFRodXMsIGl0IGlzIGltcG9zc2libGUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MGNiZWU3MzFkNDgyMTAyYWM2ODAyZmRhYzU5M2U4ZGM1OTIzNTNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMTMgMTg6NTY6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYwppbmRleCA4OWQ4YjMxNzg3ODQ2Li4zNDEzYmI0OTA2ZDRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMKQEAgLTE2OCw3ICYjNDM7MTY4LDcgQEAgc3RhdGljIGJvb2wgYXRoX21lcmdlX3JhdGV0Ymwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IGF0aF9idWYgKmJmLAogCWlmICghc3RhKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlKHN0YS0mZ3Q7cmF0ZXMpOwomIzQzOwlyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlX2JoKHN0YS0mZ3Q7cmF0ZXMpOwogCWlmICghcmF0ZXRibCkKIAkJcmV0dXJuIGZhbHNlOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWFraW5nIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY2AuIEl0JiMzOTtzIGp1c3Qgc3dhcHBpbmcgb3V0IGByY3VfZGVyZWZlcmVuY2Uoc3RhLSZndDtyYXRlcylgIGZvciBgcmN1X2RlcmVmZXJlbmNlX2JoKHN0YS0mZ3Q7cmF0ZXMpYC4gTXkgZXhwZXJ0IGludHVpdGlvbiBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgbG9ja2RlcCBmaXggb3IgUkNVIGJ1ZyBmaXguIFByb2JhYmx5IGEgZ29vZCB0aGluZywgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gSSBmdXp6IHRoaXM/IE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGBhdGg5a2AgaXMgZXZlbiBmdXp6YWJsZS4gSXQmIzM5O3MgYSB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIHJhaXNlcyBzb21lIHF1ZXN0aW9ucyByaWdodCBhd2F5LgoKVGhlIGJpZ2dlc3QgaHVyZGxlIHdpdGggd2lyZWxlc3MgZHJpdmVycyBpcyBvZnRlbiBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGV2ZW4gKnJlYWNoKiB0aGUgcmVsZXZhbnQgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBOb3JtYWxseSwgYGF0aDlrYCBuZWVkcyBhY3R1YWwgQXRoZXJvcyA4MDIuMTFuIGhhcmR3YXJlLCB3aGljaCBpcyBhIHByb2JsZW0uIEJ1dCB3YWl0Li4uIGlzbiYjMzk7dCBgYXRoOWtgIGEgUENJL1BDSWUgZHJpdmVyPyBPciBpcyB0aGVyZSBhIFVTQiB2YXJpYW50LCBgYXRoOWtfaHRjYD8KCkFoLCByaWdodCwgYG1hYzgwMjExX2h3c2ltYCBpcyBzb2Z0d2FyZS1lbXVsYXRlZCwgYnV0ICpgYXRoOWtgKiBpcyBzcGVjaWZpY2FsbHkgZm9yIGhhcmR3YXJlLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgQXRoZXJvcyBjYXJkcywgc28gdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBCdXQgaG9sZCBvbiEgSWYgaXQmIzM5O3MgYGF0aDlrX2h0Y2AsIHdoaWNoIGlzIGEgKlVTQiogZHJpdmVyLCB0aGVuIHRoYXQgb3BlbnMgdGhpbmdzIHVwLiBVU0IgZGV2aWNlcyAqY2FuKiBiZSBlbXVsYXRlZCEgV2UgY2FuIHVzZSBVU0IgZ2FkZ2V0IG9yIHZoY2kgKGxpa2Ugc3l6a2FsbGVyIHVzZXMgZm9yIFVTQiBmdXp6aW5nISkuCgpSaWdodCwgc28gdGhlIG5leHQgc3RlcCBpcyBjcnlzdGFsIGNsZWFyLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGB4bWl0LmNgIGlzIGFjdHVhbGx5IHVzZWQgYnkgYGF0aDlrX2h0Y2AgdG8gc2VlIGlmIHRoaXMgaXMgYW4gaW50ZXJlc3RpbmcgYXZlbnVlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3htaXRcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cdFx0cmVjdi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzpcdFx0eG1pdC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtOC1cdFx0bGluay5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipDaGVja2luZyBgYXRoOWtfaHRjYCYjMzk7cyBUcmFuc21pc3Npb24gUGF0aCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIGBhdGg5a19odGNgIGRyaXZlciB1dGlsaXplcyB0aGUgYHhtaXQuY2AgZmlsZSBmb3IgaXRzIHRyYW5zbWlzc2lvbiBvcGVyYXRpb25zLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGRlYnVnZ2luZyBzdGVwLCBhbmQgSSYjMzk7ZCB0eXBpY2FsbHkgZG8gdGhpcyBieSBkaWdnaW5nIHRocm91Z2ggdGhlIHNvdXJjZSBjb2RlLCBidXQgbGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGNoZWNrIHdvdWxkIGJlIHRoZSBiZXN0LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBzdGFuZGFyZCBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfaHRjLXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02Nj1hdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSAmIzQzOz0gY29tbW9uLXNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2ODphdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY5LVx0XHRoaWZfdXNiLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYXRoOWtfaHRjIE1vZHVsZSBDb21waWxhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgeG1pdC5vYCBpcyBiZWluZyBpbmNsdWRlZCBpbiB0aGUgYGF0aDlrX2h0Y2AgbW9kdWxlLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhpcyBpcyBhbiBhdGg5ay1yZWxhdGVkIGNvbXBvbmVudCwgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSByZWxldmFudCBNYWtlZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZWAuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uIGFuZCBhbnkgYXNzb2NpYXRlZCBvYmplY3QgZmlsZSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgZm9yIGhvdyB0aGUgYGF0aDlrX2h0Y2AgbW9kdWxlIGlzIGJ1aWx0IGFuZCB3aGV0aGVyIGB4bWl0Lm9gIGlzIGV4cGxpY2l0bHkgbGlzdGVkIG9yIHB1bGxlZCBpbiB0aHJvdWdoIHNvbWUgb3RoZXIgbWVjaGFuaXNtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIE1ha2VmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0YXRoOWsteSAmIzQzOz1cdGJlYWNvbi5vIFxcXG4gICAzOlx0XHRcdGdwaW8ubyBcXFxuICAgNDpcdFx0XHRpbml0Lm8gXFxcbiAgIDU6XHRcdFx0bWFpbi5vIFxcXG4gICA2Olx0XHRcdHJlY3YubyBcXFxuICAgNzpcdFx0XHR4bWl0Lm8gXFxcbiAgIDg6XHRcdFx0bGluay5vIFxcXG4gICA5Olx0XHRcdGFudGVubmEubyBcXFxuICAxMDpcdFx0XHRjaGFubmVsLm9cbiAgMTE6XHRcbiAgMTI6XHRhdGg5ay0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgJiM0Mzs9IG1jaS5vXG4gIDEzOlx0YXRoOWstJChDT05GSUdfQVRIOUtfUENJKSAmIzQzOz0gcGNpLm9cbiAgMTQ6XHRhdGg5ay0kKENPTkZJR19BVEg5S19BSEIpICYjNDM7PSBhaGIub1xuICAxNTpcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19ERUJVR0ZTKSAmIzQzOz0gZGZzX2RlYnVnLm9cbiAgMTY6XHRhdGg5ay0kKENPTkZJR19BVEg5S19ERlNfQ0VSVElGSUVEKSAmIzQzOz0gZGZzLm9cbiAgMTc6XHRhdGg5ay0kKENPTkZJR19BVEg5S19UWDk5KSAmIzQzOz0gdHg5OS5vXG4gIDE4Olx0YXRoOWstJChDT05GSUdfQVRIOUtfV09XKSAmIzQzOz0gd293Lm9cbiAgMTk6XHRhdGg5ay0kKENPTkZJR19BVEg5S19IV1JORykgJiM0Mzs9IHJuZy5vXG4gIDIwOlx0XG4gIDIxOlx0YXRoOWstJChDT05GSUdfQVRIOUtfREVCVUdGUykgJiM0Mzs9IGRlYnVnLm9cbiAgMjI6XHRcbiAgMjM6XHRhdGg5ay0kKENPTkZJR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MpICYjNDM7PSBkZWJ1Z19zdGEub1xuICAyNDpcdFxuICAyNTpcdG9iai0kKENPTkZJR19BVEg5SykgJiM0Mzs9IGF0aDlrLm9cbiAgMjY6XHRcbiAgMjc6XHRhdGg5a19ody15Oj1cdFxcXG4gIDI4Olx0XHRcdGFyOTAwMl9ody5vIFxcXG4gIDI5Olx0XHRcdGFyOTAwM19ody5vIFxcXG4gIDMwOlx0XHRcdGh3Lm8gXFxcbiAgMzE6XHRcdFx0YXI5MDAzX3BoeS5vIFxcXG4gIDMyOlx0XHRcdGFyOTAwMl9waHkubyBcXFxuICAzMzpcdFx0XHRhcjUwMDhfcGh5Lm8gXFxcbiAgMzQ6XHRcdFx0YXI5MDAyX2NhbGliLm8gXFxcbiAgMzU6XHRcdFx0YXI5MDAzX2NhbGliLm8gXFxcbiAgMzY6XHRcdFx0Y2FsaWIubyBcXFxuICAzNzpcdFx0XHRlZXByb20ubyBcXFxuICAzODpcdFx0XHRlZXByb21fZGVmLm8gXFxcbiAgMzk6XHRcdFx0ZWVwcm9tXzRrLm8gXFxcbiAgNDA6XHRcdFx0ZWVwcm9tXzkyODcubyBcXFxuICA0MTpcdFx0XHRhbmkubyBcXFxuICA0MjpcdFx0XHRtYWMubyBcXFxuICA0MzpcdFx0XHRhcjkwMDJfbWFjLm8gXFxcbiAgNDQ6XHRcdFx0YXI5MDAzX21hYy5vIFxcXG4gIDQ1Olx0XHRcdGFyOTAwM19lZXByb20ubyBcXFxuICA0NjpcdFx0XHRhcjkwMDNfcGFwcmQub1xuICA0NzpcdFxuICA0ODpcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1dPVykgJiM0Mzs9IGFyOTAwM193b3cub1xuICA0OTpcdFxuICA1MDpcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0JUQ09FWF9TVVBQT1JUKSAmIzQzOz0gYnRjb2V4Lm8gXFxcbiAgNTE6XHRcdFx0XHRcdFx0ICAgYXI5MDAzX21jaS5vIFxcXG4gIDUyOlx0XHRcdFx0XHRcdCAgIGFyOTAwM19haWMub1xuICA1MzpcdFxuICA1NDpcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSAmIzQzOz0gYXI5MDAzX3J0dC5vXG4gIDU1Olx0XG4gIDU2Olx0YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSAmIzQzOz0gZHluYWNrLm9cbiAgNTc6XHRcbiAgNTg6XHRvYmotJChDT05GSUdfQVRIOUtfSFcpICYjNDM7PSBhdGg5a19ody5vXG4gIDU5Olx0XG4gIDYwOlx0b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgJiM0Mzs9IGF0aDlrX2NvbW1vbi5vXG4gIDYxOlx0YXRoOWtfY29tbW9uLXk6PVx0Y29tbW9uLm8gXFxcbiAgNjI6XHRcdFx0XHRjb21tb24taW5pdC5vIFxcXG4gIDYzOlx0XHRcdFx0Y29tbW9uLWJlYWNvbi5vIFxcXG4gIDY0Olx0XG4gIDY1Olx0YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9ERUJVRykgJiM0Mzs9IGNvbW1vbi1kZWJ1Zy5vXG4gIDY2Olx0YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTCkgJiM0Mzs9IGNvbW1vbi1zcGVjdHJhbC5vXG4gIDY3Olx0XG4gIDY4Olx0YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbiAgNjk6XHRcdFx0aGlmX3VzYi5vIFxcXG4gIDcwOlx0XHRcdHdtaS5vIFxcXG4gIDcxOlx0XHRcdGh0Y19kcnZfdHhyeC5vIFxcXG4gIDcyOlx0XHRcdGh0Y19kcnZfbWFpbi5vIFxcXG4gIDczOlx0XHRcdGh0Y19kcnZfYmVhY29uLm8gXFxcbiAgNzQ6XHRcdFx0aHRjX2Rydl9pbml0Lm8gXFxcbiAgNzU6XHRcdFx0aHRjX2Rydl9ncGlvLm9cbiAgNzY6XHRcbiAgNzc6XHRhdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbiAgNzg6XHRcbiAgNzk6XHRvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbiAgODA6XHRcbiAgODE6XHRvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgJiM0Mzs9IGF0aDlrX3BjaV9vd2xfbG9hZGVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzEwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg5ayBNb2R1bGUgU3RydWN0dXJlKioKCk9rYXksIHNvIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBnb3QgaW4gbXkgaGVhZCBhYm91dCB0aGUgYGF0aDlrYCBmYW1pbHkgb2YgZHJpdmVycy4gSSYjMzk7bSBzZWVpbmcgdGhhdCBgeG1pdC5vYCBpcyBleGNsdXNpdmVseSBwYXJ0IG9mIHRoZSBgYXRoOWsteWAgYnVpbGQsIHdoaWNoIGl0c2VsZiBpcyBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBtb25vbGl0aGljIGBhdGg5ay5vYCBtb2R1bGUuICBUaGF0JiMzOTtzIG15IGZpcnN0IG9ic2VydmF0aW9uOiBgeG1pdC5vYCBpcyAqZW1iZWRkZWQqIHdpdGhpbiB0aGUgY29yZSBgYXRoOWsub2AgZHJpdmVyLiBBbmQgYGF0aDlrLm9gLCBvZiBjb3Vyc2UsIGlzIG9ubHkgYnVpbHQgaWYgdGhlIGBDT05GSUdfQVRIOUtgIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSBtb2R1bGFyaXR5IHBlcnNwZWN0aXZlLgoKTm93LCB3ZSBhbHNvIGhhdmUgYGF0aDlrX2h0Yy5vYCB3aGljaCwgbG9naWNhbGx5LCBpcyBidWlsdCB3aGVuIGBDT05GSUdfQVRIOUtfSFRDYCBpcyBzZXQuICBIb3dldmVyLCB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuICBgYXRoOWtfaHRjYCBkb2VzbiYjMzk7dCBzZWVtIHRvIGluY2x1ZGUgYHhtaXQub2AuIEl0IGhhcyBpdHMgb3duLCBkaXN0aW5jdCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiBoYW5kbGVyIGluIGBodGNfZHJ2X3R4cngub2AuIFNvLCB0byBiZSBjbGVhciwgYGF0aDlrX2h0Y2AgaXMgY29tcGxldGVseSBpc29sYXRlZCBmcm9tIHRoZSBgeG1pdC5vYCBjb2RlIGJhc2UuCgpUaGlzIGxlYWRzIG1lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgYHhtaXQuY2AgLSB0aGUgc291cmNlIGNvZGUgZm9yIGB4bWl0Lm9gIC0gaXMgKmV4Y2x1c2l2ZWx5KiB1dGlsaXplZCBieSB0aGUgUENJL0FIQiB2YXJpYW50IG9mIHRoZSBkcml2ZXIg4oCTIHRoZSBzdGFuZGFyZCBgYXRoOWtgIGRyaXZlciwgYW5kIHRoYXQgaXQgaXMgbm90IHVzZWQgaW4gdGhlIEhUQyBiYXNlZCBhdGg5a19odGMgZHJpdmVyLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGRlZmluaXRpdmVseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBteSBsb2dpYyBpcyBzb3VuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eG1pdFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgJiM0Mzs9XHRiZWFjb24ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02LVx0XHRyZWN2Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3Olx0XHR4bWl0Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04LVx0XHRsaW5rLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM0MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGBhdGg5a2AqKgoKT2theSwgc28gSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgYGF0aDlrYCBhbmQgaXRzIGhhcmR3YXJlIGludGVyZmFjZSBzdXBwb3J0LiBEb2VzIHRoaXMgZHJpdmVyICpvbmx5KiBjb3ZlciBQQ0kgYW5kIEFIQiwgb3IgZG9lcyBpdCBoYW5kbGUgbW9yZT8gVGltZSB0byBjaGVjayB0aGUgc291cmNlLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBUaGlzIHNob3VsZCBjbGFyaWZ5IHdoYXQgdHlwZXMgb2YgYnVzc2VzIGFuZCBpbnRlcmZhY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aC4gSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBwcmV0dHkgZ29vZCBhbnN3ZXIgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIEFUSDlLX0hXXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdGNvbmZpZyBBVEg5S19DT01NT05cbiAgIDU6XHRcdHRyaXN0YXRlXG4gICA2Olx0XHRzZWxlY3QgQVRIX0NPTU1PTlxuICAgNzpcdGNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcbiAgIDg6XHRcdGJvb2xcbiAgIDk6XHRjb25maWcgQVRIOUtfREZTX0RFQlVHRlNcbiAgMTA6XHRcdGRlZl9ib29sIHlcbiAgMTE6XHRcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxuICAxNDpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG4gIDE1Olx0XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG4gIDE2Olx0XHRkZWZhdWx0IHlcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU2F5IFksIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgYXRoOWsvYXRoOWtfaHRjIHJhZGlvcyB0b2dldGhlciB3aXRoXG4gIDE5Olx0XHQgIEJsdWV0b290aCBtb2R1bGVzIGluIHRoZSBzYW1lIHN5c3RlbS5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgQVRIOUtcbiAgMjI6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDI0Olx0XHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuICAyNTpcdFx0c2VsZWN0IEFUSDlLX0hXXG4gIDI2Olx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgMjk6XHRcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMW4gQVI1MDA4LCBBUjkwMDEgYW5kIEFSOTAwMiBmYW1pbHlcbiAgMzA6XHRcdCAgb2YgY2hpcHNldHMuIEZvciBhIHNwZWNpZmljIGxpc3Qgb2Ygc3VwcG9ydGVkIGV4dGVybmFsXG4gIDMxOlx0XHQgIGNhcmRzLCBsYXB0b3BzIHRoYXQgYWxyZWFkeSBzaGlwIHdpdGggdGhlc2UgY2FyZHMgYW5kXG4gIDMyOlx0XHQgIEFQcyB0aGF0IGNvbWUgd2l0aCB0aGVzZSBjYXJkcyByZWZlciB0byBhdGg5ayB3aWtpXG4gIDMzOlx0XHQgIHByb2R1Y3RzIHBhZ2U6XG4gIDM0Olx0XG4gIDM1Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoOWsvcHJvZHVjdHNcbiAgMzY6XHRcbiAgMzc6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGg5ay5cbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgQVRIOUtfUENJXG4gIDQwOlx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgUENJL1BDSWUgYnVzIHN1cHBvcnRcJiMzNDtcbiAgNDE6XHRcdGRlZmF1bHQgeVxuICA0MjpcdFx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgUENJXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgc3VwcG9ydCBpbiBhdGg5ay5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgU2F5IFksIGlmIHlvdSBoYXZlIGEgY29tcGF0aWJsZSBQQ0kvUENJZSB3aXJlbGVzcyBjYXJkLlxuICA0NzpcdFxuICA0ODpcdGNvbmZpZyBBVEg5S19BSEJcbiAgNDk6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBBSEIgYnVzIHN1cHBvcnRcJiMzNDtcbiAgNTA6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IE9GXG4gIDUxOlx0XHRkZWZhdWx0IG5cbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgQUhCIGJ1cyBzdXBwb3J0IGluIGF0aDlrLlxuICA1NDpcdFxuICA1NTpcdFx0ICBTYXkgWSwgaWYgeW91IGhhdmUgYSBTb0Mgd2l0aCBhIGNvbXBhdGlibGUgYnVpbHQtaW5cbiAgNTY6XHRcdCAgd2lyZWxlc3MgTUFDLiBTYXkgTiBpZiB1bnN1cmUuXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIEFUSDlLX0RFQlVHRlNcbiAgNTk6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcJiMzNDtcbiAgNjA6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IERFQlVHX0ZTIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG4gIDYxOlx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4gIDYyOlx0XHRoZWxwXG4gIDYzOlx0XHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWsmIzM5O3Mgc3RhdGlzdGljcyBmb3JcbiAgNjQ6XHRcdCAgaW50ZXJydXB0cywgcmF0ZSBjb250cm9sLCBldGMuXG4gIDY1Olx0XG4gIDY2Olx0XHQgIEFsc28gcmVxdWlyZWQgZm9yIGNoYW5naW5nIGRlYnVnIG1lc3NhZ2UgZmxhZ3MgYXQgcnVuIHRpbWUgYW5kIGZvclxuICA2NzpcdFx0ICBUWDk5LlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBBVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1NcbiAgNzA6XHRcdGJvb2wgXCYjMzQ7RGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4gIDcxOlx0XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBBVEg5S19ERUJVR0ZTIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuICA3MjpcdFx0ZGVmYXVsdCBuXG4gIDczOlx0XHRoZWxwXG4gIDc0Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgZGV0YWlsZWQgc3RhdGlzdGljcyBmb3IgYXNzb2NpYXRpb24gc3RhdGlvbnMuXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIEFUSDlLX1RYOTlcbiAgNzc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBUWDk5IHRlc3Rpbmcgc3VwcG9ydFwmIzM0O1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgNzk6XHRcdGRlZmF1bHQgblxuICA4MDpcdFx0aGVscFxuICA4MTpcdFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIG9uIHN5c3RlbXMgdW5kZXJnb2luZ1xuICA4MjpcdFx0ICBjZXJ0aWZpY2F0aW9uIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24gaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LlxuICA4MzpcdFx0ICBFbmFibGluZyB0aGlzIHdpbGwgb25seSBlbmFibGUgVFg5OSBzdXBwb3J0LCBhbGwgb3RoZXIgbW9kZXMgb2ZcbiAgODQ6XHRcdCAgb3BlcmF0aW9uIHdpbGwgYmUgZGlzYWJsZWQuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRYOTkgc3VwcG9ydCBlbmFibGVzIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAoU0FSKSB0ZXN0aW5nLlxuICA4NzpcdFx0ICBTQVIgaXMgdGhlIHVuaXQgb2YgbWVhc3VyZW1lbnQgZm9yIHRoZSBhbW91bnQgb2YgcmFkaW8gZnJlcXVlbmN5KFJGKVxuICA4ODpcdFx0ICBhYnNvcmJlZCBieSB0aGUgYm9keSB3aGVuIHVzaW5nIGEgd2lyZWxlc3MgZGV2aWNlLiBUaGUgUkYgZXhwb3N1cmVcbiAgODk6XHRcdCAgbGltaXRzIHVzZWQgYXJlIGV4cHJlc3NlZCBpbiB0aGUgdGVybXMgb2YgU0FSLCB3aGljaCBpcyBhIG1lYXN1cmVcbiAgOTA6XHRcdCAgb2YgdGhlIGVsZWN0cmljIGFuZCBtYWduZXRpYyBmaWVsZCBzdHJlbmd0aCBhbmQgcG93ZXIgZGVuc2l0eSBmb3JcbiAgOTE6XHRcdCAgdHJhbnNtaXR0ZXJzIG9wZXJhdGluZyBhdCBmcmVxdWVuY2llcyBmcm9tIDMwMCBrSHogdG8gMTAwIEdIei5cbiAgOTI6XHRcdCAgUmVndWxhdG9yeSBib2RpZXMgYXJvdW5kIHRoZSB3b3JsZCByZXF1aXJlIHRoYXQgd2lyZWxlc3MgZGV2aWNlXG4gIDkzOlx0XHQgIGJlIGV2YWx1YXRlZCB0byBtZWV0IHRoZSBSRiBleHBvc3VyZSBsaW1pdHMgc2V0IGZvcnRoIGluIHRoZVxuICA5NDpcdFx0ICBnb3Zlcm5tZW50YWwgU0FSIHJlZ3VsYXRpb25zLlxuICA5NTpcdFxuICA5NjpcdGNvbmZpZyBBVEg5S19ERlNfQ0VSVElGSUVEXG4gIDk3Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbiAgOTg6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuICA5OTpcdFx0ZGVmYXVsdCBuXG4gMTAwOlx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5ODYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA3NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGF0aDlrYCBEcml2ZXI6IEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYXRoOWtgLCBhIFdpLUZpIGRyaXZlciwgYW5kIGltbWVkaWF0ZWx5IG15IG1pbmQgZ29lcyB0byBmdXp6aW5nLiBJdCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBIQVNfRE1BYCwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmNpZXMuIEl0IGFsc28gaGFzIGBBVEg5S19QQ0lgIGFuZCBgQVRIOUtfQUhCYCB2YXJpYW50cywgc28gdGhhdCBpbW1lZGlhdGVseSBpbmZvcm1zIHNvbWUgcG90ZW50aWFsIGZ1enppbmcgYXBwcm9hY2hlcy4gQ2FuIEkgZnV6eiBpdCBpbiBRRU1VPyBJIGtub3cgYG1hYzgwMjExX2h3c2ltYCBleGlzdHMsIHdoaWNoIGlzIGEgdmlydHVhbCBXaS1GaSBkcml2ZXIsIGJ1dCBgYXRoOWtgIGlzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlci4KCkNhbiBzeXprYWxsZXIgZnV6eiBgYXRoOWtgPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIFN5emthbGxlciB0eXBpY2FsbHkgdXNlcyBgc3l6X3BjaV9zZXR1cGAgZm9yIFBDSSBkZXZpY2VzLCBidXQgUUVNVSBkb2VzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlIEF0aGVyb3MgODAyLjExbiBjYXJkcy4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCByaWdodD8gWWVzISBJdCBjYW4gcHJvYmUgUENJIGNvbmZpZyBzcGFjZSBhbmQgcGVyZm9ybSBNTUlPIHJlYWRzL3dyaXRlcyBpZiB0aGUgZHJpdmVyIGlzIGxvYWRlZC4gQW5kIGBhdGg5a2AgaXMgaW5kZWVkIGEgUENJIGRyaXZlci4gVGhpcyBvcGVucyB1cCBhIGZ1enppbmcgYXZlbnVlLiBTbywgaXQgc2hvdWxkIGJlIHJlYWNoYWJsZSBpZiBzeXprYWxsZXIgaGFzIFBDSSBmdXp6aW5nIGVuYWJsZWQuIExldCBtZSBxdWlja2x5IGNvbmZpcm0uIFllcywgYHN5el9wY2lfc2V0dXBgLCBgc3l6X3BjaV9tbWlvX3dyaXRlYCBhcmUgYWxsIHByZXNlbnQuCgpCdXQgbm93LCBJJiMzOTttIGdldHRpbmcgYSBsaXR0bGUgc25hZy4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgaXNzdWVzIHdpdGggJiMzNDt2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBJcyBgYXRoOWtgIGluIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCYjMzk7cyBhIHN0YW5kYXJkIFdpLUZpIGRyaXZlciwgc28gSSBkb24mIzM5O3QgdGhpbmsgdGhhdCYjMzk7cyB0aGUgYmxvY2tlci4KCldhaXQgYSBzZWNvbmTigKYgdGhlIGZhY3QgdGhhdCB0aGVyZSYjMzk7cyBhIHBhdGNoIGFwcGxpZWQgYnkgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgIG1lYW5zIHN5emthbGxlciAqZm91bmQqIGEgYnVnIGhlcmUhIElmIGl0IGZvdW5kIGEgYnVnLCBpdCAqbXVzdCogYmUgZnV6emFibGUuIFRoZSBwcm9vZiBpcyBpbiB0aGUgcHVkZGluZy4gSSBuZWVkIHRvIGNoZWNrIHRoZSBidWcgcmVwb3J0IG9yIGhvdyBpdCB3YXMgZm91bmQsIGJ1dCB0aGUgcGF0Y2ggaXRzZWxmIGlzIHRoZSBnaXZlYXdheS4KCkkgaGF2ZSB0byBjb25zaWRlciB0aGUgcGF0aCBoZXJlLiBTeXprYWxsZXIgY2Fubm90IGJlIGZ1enppbmcgYGF0aDlrYCB2aWEgYG1hYzgwMjExX2h3c2ltYCBiZWNhdXNlIHRoYXQmIzM5O3MgYSAqdmlydHVhbCogZHJpdmVyLCBhbmQgYGF0aDlrYCBpcyBhICpoYXJkd2FyZSogZHJpdmVyLiBUaGVyZWZvcmUsIGhvdyBjb3VsZCBzeXprYWxsZXIgdHJpZ2dlciBgYXRoOWtgPyBQb3NzaWJseSB0aHJvdWdoIGBtYWM4MDIxMWAgaW5qZWN0aW9uPyBObywgdGhhdCB3b3VsZG4mIzM5O3Qgd29yayBiZWNhdXNlIGBhdGg5a2Agd29uJiMzOTt0IGJlIGxvYWRlZCB1bmxlc3MgdGhlIGhhcmR3YXJlIGlzIHByZXNlbnQgb3IgUENJIGlzIGZ1enplZC4KCkFoYSEgU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIhIEl0IGNhbiBzaW11bGF0ZSBhIFBDSSBkZXZpY2UgYW5kLCBiaW5nbywgSSYjMzk7bSBiYWNrIG9uIHRyYWNrLiBgYXRoOWtgIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYmVjYXVzZSBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFRoZSBlYXJsaWVyIGNhdmVhdCBhYm91dCBoYXJkd2FyZSBlbXVsYXRpb24gc2hvdWxkIGJlIG1vb3QuIGBhdGg5a2AgaXNuJiMzOTt0IGEgc3BlY2lhbCBjYXNlOyBpdCBpcyBhIHJlZ3VsYXIgV2ktRmkgZHJpdmVyLgoKU28sIGl0JiMzOTtzIGJhY2sgdG8gY2hlY2tpbmcgdGhlIHBhdGNoLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2UgaXRzZWxmOgpgYGBjCi0JcmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZShzdGEtJmd0O3JhdGVzKTsKJiM0MzsJcmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZV9iaChzdGEtJmd0O3JhdGVzKTsKYGBgClRoaXMgaXMgd2l0aGluIGBhdGhfbWVyZ2VfcmF0ZXRibGAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNgLiBUaGlzIGlzIGNsZWFybHkgYSBjb25jdXJyZW5jeSBpc3N1ZSwgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uLiBUaGUga2V5IGlzIGluIHRoZSBgcmN1X2RlcmVmZXJlbmNlYCB0byBgcmN1X2RlcmVmZXJlbmNlX2JoYCwgd2hpY2ggaXMgbGlrZWx5IGEgZml4IHJlbGF0ZWQgdG8gYWNjZXNzaW5nIHJhdGUgdGFibGUuCgpUaGVyZWZvcmUsIHN5emthbGxlciBpcyBzdWNjZXNzZnVsbHkgZnV6emluZyBhIHN0YW5kYXJkIFdpLUZpIGRyaXZlciB2aWEgaXRzIFBDSSBmdXp6ZXIsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2Ugbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfbWVyZ2VfcmF0ZXRibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xNTM9c3RhdGljIHZvaWQgYXRoX3NlbmRfYmFyKHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCB1MTYgc2Vxbm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE2MjpzdGF0aWMgYm9vbCBhdGhfbWVyZ2VfcmF0ZXRibChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE2My1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xOTg9c3RhdGljIHZvaWQgYXRoX3NldF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMDU6XHRpZiAoIWF0aF9tZXJnZV9yYXRldGJsKHN0YSwgYmYsIHR4X2luZm8pKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMDYtXHRcdGllZWU4MDIxMV9nZXRfdHhfcmF0ZXModmlmLCBzdGEsIGJmLVx1MDAzZWJmX21wZHUsIGJmLVx1MDAzZXJhdGVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTg3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IFVuZGVyc3RhbmRpbmcgb2YgUmF0ZSBUYWJsZSBNZXJnaW5nKioKCkFscmlnaHQsIHNvIHRoZSByZWxhdGlvbnNoaXAgaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJIHNlZSB0aGF0IGBhdGhfbWVyZ2VfcmF0ZXRibGAgaXMgZGlyZWN0bHkgdGllZCB0byBgYXRoX3NldF9yYXRlc2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgYSBmZXcgdGhpbmdzLiBGaXJzdCwgYGF0aF9zZXRfcmF0ZXNgIGlzIHByb2JhYmx5IHRoZSAqY2FsbGVyKiDigJMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBnZXR0aW5nIHRoaXMgcmF0ZSB0YWJsZSBidXNpbmVzcyBnb2luZy4gSXQgbGlrZWx5IG5lZWRzIHRvIHNldCBvciBtb2RpZnkgdGhlIHRyYW5zbWl0IHJhdGUgdGFibGVzLCBhbmQgdGhlcmVmb3JlLCBpdCByZWxpZXMgb24gYGF0aF9tZXJnZV9yYXRldGJsYCBhcyBhIGhlbHBlciBmdW5jdGlvbi4gU2Vjb25kLCB0aGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgdGhhdCBgYXRoX21lcmdlX3JhdGV0YmxgIGlzIHJlc3BvbnNpYmxlIGZvciAqbWVyZ2luZyogcmF0ZSB0YWJsZXMuIFRoaXMgaGludHMgdGhhdCB0aGUgc3lzdGVtIG1heSBkZWFsIHdpdGggbXVsdGlwbGUgcmF0ZSB0YWJsZXMsIHBlcmhhcHMgZm9yIGRpZmZlcmVudCBzY2VuYXJpb3Mgb3IgZGV2aWNlIGNhcGFiaWxpdGllcywgYW5kIHRoYXQgYGF0aF9zZXRfcmF0ZXNgIG5lZWRzIHRvIGNvbWJpbmUgdGhlbSBpbiBzb21lIHdheS4gSSYjMzk7ZCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gc2VlIGlmIHRoaXMgaXMgZm9yIG5ldyByYXRlIHRhYmxlcyBvciB0byB1cGRhdGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgcmF0ZSBzZWxlY3Rpb24gYWxnb3JpdGhtcyBhbmQgaG93IHRoZSBkcml2ZXIgYWRhcHRzIHRvIGNoYW5naW5nIGNoYW5uZWwgY29uZGl0aW9ucyBhbmQgY2xpZW50IGNhcGFiaWxpdGllcy4gVWx0aW1hdGVseSwgSSYjMzk7ZCBuZWVkIHRvIHZlcmlmeSB0aGUgY2FsbGluZyBjb250ZXh0LCBidXQgaXQmIzM5O3MgY2xlYXIgYGF0aF9tZXJnZV9yYXRldGJsYCBpcyBhIHN1cHBvcnRpbmcgZnVuY3Rpb24gdW5kZXIgdGhlIGBhdGhfc2V0X3JhdGVzYCBjb21tYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfc2V0X3JhdGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE2Mj1zdGF0aWMgYm9vbCBhdGhfbWVyZ2VfcmF0ZXRibChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE5ODpzdGF0aWMgdm9pZCBhdGhfc2V0X3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE5OS1cdFx0XHQgIHN0cnVjdCBhdGhfYnVmICpiZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE0OTY9YXRoX3R4X2Zvcm1fYnVyc3Qoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdHhxICp0eHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoxNTI1Olx0XHRhdGhfc2V0X3JhdGVzKHRpZC1cdTAwM2Vhbi1cdTAwM2V2aWYsIHRpZC1cdTAwM2Vhbi1cdTAwM2VzdGEsIGJmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTUyNi1cdH0gd2hpbGUgKDEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTUyOT1zdGF0aWMgaW50IGF0aF90eF9zY2hlZF9hZ2dyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTU1MjpcdGF0aF9zZXRfcmF0ZXModGlkLVx1MDAzZWFuLVx1MDAzZXZpZiwgdGlkLVx1MDAzZWFuLVx1MDAzZXN0YSwgYmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNTUzLVx0aWYgKGFnZ3IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xNjkwPXZvaWQgYXRoOWtfcmVsZWFzZV9idWZmZXJlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNzIxLVx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2YmYtXHUwMDNlbGlzdCwgXHUwMDI2YmZfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE3MjI6XHRcdFx0YXRoX3NldF9yYXRlcyh0aWQtXHUwMDNlYW4tXHUwMDNldmlmLCB0aWQtXHUwMDNlYW4tXHUwMDNlc3RhLCBiZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE3MjMtXHRcdFx0aWYgKGJmX2lzYW1wZHUoYmYpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjMyMz1pbnQgYXRoX3R4X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjM4MDpcdGF0aF9zZXRfcmF0ZXModmlmLCBzdGEsIGJmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM4MS1cdGF0aF90eF9zZW5kX25vcm1hbChzYywgdHhxLCB0aWQsIHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzg5PXZvaWQgYXRoX3R4X2NhYnEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yNDE3LVx0XHRiZi1cdTAwM2ViZl9sYXN0YmYgPSBiZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcdFx0YXRoX3NldF9yYXRlcyh2aWYsIE5VTEwsIGJmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjQxOS1cdFx0YXRoX2J1Zl9zZXRfcmF0ZShzYywgYmYsIFx1MDAyNmluZm8sIGZpLVx1MDAzZWZyYW1lbGVuLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yOTE0PWludCBhdGg5a190eDk5X3NlbmQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyOTQ3Olx0YXRoX3NldF9yYXRlcyhzYy1cdTAwM2V0eDk5X3ZpZiwgTlVMTCwgYmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ2MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IGBhdGhfdHhfc3RhcnRgIGluIGBhdGg5a2AqKgoKT2theSwgc28gdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXQgdHJhbnNtaXNzaW9uIGluIHRoaXMgQXRoZXJvcyBkcml2ZXIgaXMgYGF0aF90eF9zdGFydGAuICBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGZ1enogdGhpcyB3aXRoIHRoZSB1c3VhbCBzdXNwZWN0cz8mIzM0OyBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBmbGFncyBjb2RlIHRoYXQmIzM5O3MgdGllZCB0byBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gIGBhdGg5a2AsIHRoZSBBdGhlcm9zIDgwMi4xMW4gZHJpdmVyLCBpcyBhIFBDSWUgZGV2aWNlLiBJcyB0aGlzIGRyaXZlciB2ZW5kb3Igc3BlY2lmaWM/IE5vLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQgZm9yIFdpLUZpLgoKVGhlIGNvcmUgcXVlc3Rpb24gaXMgZW11bGFiaWxpdHkgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgZnVsbCBoYXJkd2FyZSByZXF1aXJlbWVudHMgb2YgYGF0aDlrYC4gIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLi4uIGFuZCBJIGluaXRpYWxseSB0aG91Z2h0ICYjMzQ7QmluZ28hJiMzNDsgYmVjYXVzZSBpdCBjYW4gc2ltdWxhdGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gSG93ZXZlciwgdGhlIHByb21wdCBoYXMgYSBuZWdhdGl2ZSBmaWx0ZXIhIEl0ICpleHBsaWNpdGx5KiBleGNsdWRlcyAmIzM0O3ZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiYjMzQ7IFdoaWxlIGBhdGg5a2AgaXMgbm90ICpleGFjdGx5KiBhICYjMzQ7c3dpdGNoLCYjMzQ7ICYjMzQ7U21hcnROSUMsJiMzNDsgb3IgJiMzNDtHUFUsJiMzNDsgaXQgRE9FUyByZXF1aXJlIGEgcGh5c2ljYWwgY2FyZC4gU28sIHRoaXMgbWlnaHQgYmUgYSBub24tc3RhcnRlci4KClN5emthbGxlciBkb2VzIGhhdmUgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2ktRmkgZnV6emluZywgYnV0IGBhdGg5a2AgKmlzbiYjMzk7dCogYG1hYzgwMjExX2h3c2ltYC4gQWxzbyB0aGVyZSBpcyBgYXRoOWtfaHRjYCwgd2hpY2ggaXMgYSBVU0IgZGV2aWNlIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBmdXp6ZXIuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggaXMgaW4gYHhtaXQuY2Agd2hpY2ggZG9lcyBub3QgZ2V0IGNvbXBpbGVkIGZvciBgYXRoOWtfaHRjYC4gSG1tLgoKVGhlIGtleSBpcyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LiBUaGUgc3l6a2FsbGVyIFBDSSBmdXp6ZXIgKmNvdWxkKiB0ZWNobmljYWxseSBwcm9iZSBhbmQgdHJ5IHRvIHJlYWNoIGBhdGhfdHhfc3RhcnRgLiBCdXQsIFBDSSBmdXp6aW5nIGlzIGdlbmVyYWxseSBzaGFsbG93IGFuZCBpdCYjMzk7cyBoaWdobHkgdW5saWtlbHkgdGhhdCB0aGUgc3l6a2FsbGVyIFBDSSBmdXp6ZXIgd2lsbCBiZSBhYmxlIHRvIGZ1bGx5IGluaXRpYWxpemUgdGhlIGNvbXBsaWNhdGVkIE1BQy9QSFkgc3RhdGUgbWFjaGluZSByZXF1aXJlZCB0byBnZXQgdGhpcyBkZXZpY2UgcmVnaXN0ZXJlZCBpbiBgbWFjODAyMTFgIGFuZCBhY3R1YWxseSBleGVjdXRlIHRoZSB0cmFuc21pc3Npb24gcGF0aC4KClNvLCBob3cgd2FzIHRoaXMgYnVnIGZvdW5kPyBUaGUgY29tbWl0IG1lc3NhZ2UgcmVmZXJlbmNlcyAmIzM0O3N5ei1jbHVzdGVyLCYjMzQ7IHdoaWNoIHN1Z2dlc3RzIGl0IHdhcyBmb3VuZCBieSBzeXprYWxsZXIuIEhvd2V2ZXIsIHN5emthbGxlciBkb2VzIHJ1biBvbiByZWFsIGhhcmR3YXJlLiAgVGhlIHByb21wdCB0aGVuIGV4cGxpY2l0bHkgZXhjbHVkZXMgcGF0aHMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7ICBTaW5jZSBgYXRoOWtgIHJlcXVpcmVzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQsIGFuZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgV2ktRmkgY2FyZHMuLi4gdGhlIG1hdGggaXMgc3RhcnRpbmcgdG8gYmVjb21lIGNsZWFyLgoKUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBgYXRoOWtgLiBJdCBoYXMgTklDIGVtdWxhdGlvbnMgbGlrZSBgbmUya19wY2lgLCBgZTEwMDBgLCBgcnRsODEzOWAsIGV0Yy4sIGJ1dCBub3RoaW5nIGZvciBXaS1GaS4gSXQgYXBwZWFycyB0aGF0IFdpLUZpIGZ1enppbmcgaW4gU3l6a2FsbGVyIGlzIGV4Y2x1c2l2ZWx5IHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYC4KClRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aCB0aGF0IHJlYWNoZXMgYGF0aF90eF9zdGFydGAgdGhyb3VnaCBgYXRoOWtgIGlzIGltcG9zc2libGUgdG8gdHJpZ2dlciB0aHJvdWdoIGVtdWxhdGlvbi4gSXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBjYXJkLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIEkgc2hvdWxkIGJlIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSnVzdCB0byBiZSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZSBjaGVjayB0aGF0IGB4bWl0LmNgIGlzbiYjMzk7dCBpbmNsdWRlZCBpbiBgYXRoOWtfaHRjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfaHRjLXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02Nj1hdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSAmIzQzOz0gY29tbW9uLXNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2ODphdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY5LVx0XHRoaWZfdXNiLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1NzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaWdnaW5nIGludG8gdGhlIEF0aGVyb3MgRHJpdmVyIE1ha2VmaWxlKioKCk9rYXksIHRpbWUgdG8gY2lyY2xlIGJhY2sgYW5kIGdpdmUgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGVgIGFub3RoZXIgbG9vay4gSSBzdXNwZWN0IHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgZmxhZyBvciB0YXJnZXQgSSBvdmVybG9va2VkLCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSByZWNlbnQga2VybmVsIHVwZGF0ZSBvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgdmFyaWFudC4gSSYjMzk7bSB0aGlua2luZyBJIG1pZ2h0IGhhdmUgbWlzc2VkIHNvbWV0aGluZyBzdWJ0bGUgaW4gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIG9yIG1heWJlIGEgZGVwZW5kZW5jeSB0aGF0IHdhcyBpbnRyb2R1Y2VkIG9yIGNoYW5nZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbuKAmXQgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBvbiBob3cgbW9kdWxlcyBhcmUgYnVpbHQgYW5kIGxpbmtlZCB3aXRoaW4gdGhlIGF0aDlrIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgc3RlcCB0aHJvdWdoIHRoZSBsb2dpYyBhZ2FpbiwgZG91YmxlLWNoZWNraW5nIHRoZSB2YXJpYWJsZXMsIGluY2x1ZGUgcGF0aHMsIGFuZCBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGNyb3NzLWNvbXBpbGF0aW9uIGNvbmZpZ3VyYXRpb25zLCBwYXJ0aWN1bGFybHkgaWYgdGhlcmUgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkaWZmZXJlbmNlcyBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBNYWtlZmlsZSBpcyBvcmNoZXN0cmF0ZWQgaW4gY29tcGFyaXNvbiB0byBvdGhlcnMgd2l0aGluIHRoZSBhdGg5ayBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3htaXRcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cdFx0cmVjdi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzpcdFx0eG1pdC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtOC1cdFx0bGluay5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTQ2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGB4bWl0Lm9gIOKAkyB0aGF0JiMzOTtzIG9ubHkgaW4gYGF0aDlrLXlgLCBhbmQgYGF0aDlrLXlgIGlzIGNvbXBpbGVkIGludG8gYGF0aDlrLm9gLiBgYXRoOWsub2AgaXMgdGhlIFBDSS9BSEIgZHJpdmVyLCByaWdodD8gSG1tLCBpcyB0aGVyZSBhbnkgb3RoZXIgd2F5IGBhdGg5ay5vYCBnZXRzIHVzZWQ/IE5vLCB0aGF0IGxvb2tzIHJpZ2h0OyBgb2JqLSQoQ09ORklHX0FUSDlLKSAmIzQzOz0gYXRoOWsub2AgY29uZmlybXMgYENPTkZJR19BVEg5S2AgaXMgdGhlIHByaW1hcnkgY29uZmlnIGZvciB0aGUgUENJL0FIQiBkcml2ZXIuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjb3VsZCB0aGlzIGRyaXZlciBzb21laG93IGJlIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQnV0LCBpdCYjMzk7cyBhICpoYXJkd2FyZSogZHJpdmVyLCBzbyBuby4gVGhhdCBmaXJtbHkgcHV0cyBpdCBpbnRvIHRoZSBjYXRlZ29yeSBvZiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsJiMzNDsgZXZlbiBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLgoKSG9sZCBvbiwgd2hhdCBhYm91dCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplcj8gVGhhdCB0aGluZyYjMzk7cyBwcmV0dHkgY2xldmVyLiBJdCB3b3JrcyBieSBpbnRlcmNlcHRpbmcgUENJIGNvbmZpZyBzcGFjZSByZWFkcy93cml0ZXMgYW5kIE1NSU8gcmVhZHMvd3JpdGVzLCBtZWFuaW5nIGl0ICpjb3VsZCogdGhlb3JldGljYWxseSB0cmlnZ2VyIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIG9mIGFueSBQQ0kgZHJpdmVyLiBDb3VsZCBpdCByZWFjaCBgYXRoX3R4X3N0YXJ0YD8gUmVtZW1iZXIsIGBhdGhfdHhfc3RhcnRgIGlzIGNhbGxlZCBieSBgbWFjODAyMTFgIHdoZW4gYSBwYWNrZXQgaXMgdHJhbnNtaXR0ZWQuIEZvciBgbWFjODAyMTFgIHRvIGV2ZW4gKmNhbGwqIGBhdGhfdHhfc3RhcnRgLCB0aGUgYGF0aDlrYCBkcml2ZXIgbmVlZHMgdG8gcmVnaXN0ZXIgYSBgd2lwaHlgIGFuZCBhIGBuZXRfZGV2aWNlYCBzdWNjZXNzZnVsbHksIGFuZCB0aGVuIHRoZSBpbnRlcmZhY2UgbmVlZHMgdG8gYmUgYnJvdWdodCB1cC4gVGhhdCBtZWFucyBgcHJvYmVgIGhhcyB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuIFRoYXQmIzM5O3MgYSBodWdlIGh1cmRsZSDigJMgaXQgaW52b2x2ZXMgcmVhZGluZyB0aGUgTUFDIGFkZHJlc3MgZnJvbSB0aGUgRUVQUk9NLCBpbml0aWFsaXppbmcgdGhlIFBIWSwgcmFkaW8gY2FsaWJyYXRpb24sIGFuZCBzbyBvbi4gSXQmIzM5O3MgaW5jcmVkaWJseSB1bmxpa2VseSB0aGF0IGEgZHVtYiBQQ0kgZnV6emVyIGNvdWxkIGZlZWQgaXQgdGhlIGV4YWN0IE1NSU8gc2VxdWVuY2UgbmVlZGVkIHRvIHNhdGlzZnkgYWxsIHRob3NlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGNoZWNrcyBhbmQgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyIHRoZSBkZXZpY2UuCgpFdmVuIGlmIGJ5IHNvbWUgbWlyYWNsZSBpdCAqY291bGQqLCB0aGUgcHJvbXB0IHNheXMgdGhpczogJiMzNDtDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIC4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBXaGlsZSBgYXRoOWtgIGlzbiYjMzk7dCBhIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSwgaXQgaXMgYSBkcml2ZXIgdGhhdCBhYnNvbHV0ZWx5IHJlcXVpcmVzIGEgKnBoeXNpY2FsKiBQQ0llIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFNvLCB0aGUgcmlnaHQgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4gaXMgdGhlcmUgKmFueSogUUVNVSBlbXVsYXRpb24gZm9yIGBhdGg5a2A/IE5vLCBub3RoaW5nLiBBbnkgb3RoZXIgc29mdHdhcmUgZW11bGF0aW9uPyBOb3BlLiBBbmQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyBgYXRoOWtfaHRjYCBzb21laG93IGluY2x1ZGluZyBgeG1pdC5jYD8gYGF0aDlrX2h0Y2AgdXNlcyBgaHRjX2Rydl90eHJ4LmNgIGZvciB0cmFuc21pdC9yZWNlaXZlLCBzbyB0aGF0IGlzIG5vdCB0aGUgY2FzZS4gT2theSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfbWVyZ2VfcmF0ZXRibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xNTM9c3RhdGljIHZvaWQgYXRoX3NlbmRfYmFyKHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCB1MTYgc2Vxbm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE2MjpzdGF0aWMgYm9vbCBhdGhfbWVyZ2VfcmF0ZXRibChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE2My1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xOTg9c3RhdGljIHZvaWQgYXRoX3NldF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMDU6XHRpZiAoIWF0aF9tZXJnZV9yYXRldGJsKHN0YSwgYmYsIHR4X2luZm8pKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMDYtXHRcdGllZWU4MDIxMV9nZXRfdHhfcmF0ZXModmlmLCBzdGEsIGJmLVx1MDAzZWJmX21wZHUsIGJmLVx1MDAzZXJhdGVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDU3NwoJCQkJCQkJb3V0cHV0OiAxMzgKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBgYXRoX21lcmdlX3JhdGV0YmxgIGlzIGV4Y2x1c2l2ZWx5IGluIGB4bWl0LmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGJvdW5kIHRvIHRoZSBQQ0kvQUhCIGRyaXZlci4gVGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIGxldCYjMzk7cyBzdGVwIHRocm91Z2ggdGhvc2UgYFdvcnRoRnV6emluZz1mYWxzZWAgY3JpdGVyaWEgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKKiAgIERvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzPyBOb3BlLCB0aGlzIGlzIGluIHRoZSBoZWFydCBvZiB0aGUgY29kZS4KKiAgIERlY29yYXRpdmUgY2hhbmdlcz8gTm8gd2F5LiBUaGlzIGlzIGZ1bmN0aW9uYWwuCiogICBOdW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3Mgd2l0aG91dCBmdW5jdGlvbmFsIGltcGFjdD8gRGVmaW5pdGVseSBub3QgdGhlIGNhc2UgaGVyZS4KKiAgIFVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/ICoqQmluZ28uKiogVGhlIGBhdGg5a2AgZHJpdmVyLCB0aGUgb25lIHRoaXMgY2hhbmdlIGltcGFjdHMsIG5lZWRzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQgb3IsIGluIHNvbWUgY2FzZXMsIEFIQi4gV2UgYXJlIG5vdCB0YWxraW5nIGFib3V0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGVtdWxhdGVkIGF0IGEgdXNhYmxlIGxldmVsIGluIHN0YW5kYXJkIFFFTVUuIFRoaW5ncyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldCBkb24mIzM5O3QgY3V0IGl0LiBUaGV5IGNhbiYjMzk7dCBzaW11bGF0ZSB0aGUgdW5kZXJseWluZyBBdGhlcm9zIGhhcmR3YXJlLgoqICAgVmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgZm9yIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVPyBUaGF0JiMzOTtzIGFsc28gaXJyZWxldmFudC4KKiAgIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3M/IE5vcGUsIG5vdCBhcHBsaWNhYmxlIGhlcmUuCgpBbHJpZ2h0LCBzbyB0aGUgY2xpbmNoZXIgaXMgdGhhdCB0aGUgYGF0aDlrYCBkcml2ZXIsIHRoZSB0YXJnZXQgb2YgdGhlIHBhdGNoLCBuZWVkcyAqcmVhbCogaGFyZHdhcmUsIHdoaWNoIG1lYW5zIGl0IG5lYXRseSBmaXRzIHRoZSAmIzM0O2ltcG9zc2libGUgdG8gcmVhY2gmIzM0OyBjYXRlZ29yeSBpbiBjb21tb24gdmlydHVhbGl6YXRpb24gc2V0dXBzLiBUaGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGNoYW5nZSBpcyBpbiBgeG1pdC5jYCB3aGljaCBJIGltbWVkaWF0ZWx5IHNlZSBpcyBhbiBpbmRpY2F0b3IgdGhhdCBpdCBpcyBsaWtlbHkgQUhCIG9yIFBDSS1zcGVjaWZpYywgYW5kIG5vdCBhIGNhbmRpZGF0ZSBmb3IgYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgcmVhc29uaW5nIHNlZW1zIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGg5ayBkcml2ZXIgKHhtaXQuYyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUvQUhCIHdpcmVsZXNzIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCAodW5saWtlIGF0aDlrX2h0YykuIFRodXMsIGl0IGlzIGltcG9zc2libGUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGg5ayBkcml2ZXIgKHhtaXQuYyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUvQUhCIHdpcmVsZXNzIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCAodW5saWtlIGF0aDlrX2h0YykuIFRodXMsIGl0IGlzIGltcG9zc2libGUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjoxNi40NTQ3ODI0NzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjkyNjY1MTY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGg5ayBkcml2ZXIgKHhtaXQuYyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUvQUhCIHdpcmVsZXNzIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCAodW5saWtlIGF0aDlrX2h0YykuIFRodXMsIGl0IGlzIGltcG9zc2libGUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjE2LjQ1NDc4OTUwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxMDM1NDUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUwY2JlZTczMWQ0ODIxMDJhYzY4MDJmZGFjNTkzZThkYzU5MjM1M2JcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMTg6NTY6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcXG5pbmRleCA4OWQ4YjMxNzg3ODQ2Li4zNDEzYmI0OTA2ZDRkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXFxuQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgYm9vbCBhdGhfbWVyZ2VfcmF0ZXRibChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYsXFxuIFxcdGlmICghc3RhKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHRyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlKHN0YS1cXHUwMDNlcmF0ZXMpO1xcbitcXHRyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlX2JoKHN0YS1cXHUwMDNlcmF0ZXMpO1xcbiBcXHRpZiAoIXJhdGV0YmwpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjE3Ljc2NTkwOTA3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg1NjE1NTA0ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoOWsgZHJpdmVyICh4bWl0LmMpLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgQXRoZXJvcyA4MDIuMTFuIFBDSS9QQ0llL0FIQiB3aXJlbGVzcyBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhlIGNvZGUgcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQgKHVubGlrZSBhdGg5a19odGMpLiBUaHVzLCBpdCBpcyBpbXBvc3NpYmxlIHRvIG1lYW5pbmdmdWxseSBmdXp6IHRoaXMgY29kZSBwYXRoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MGNiZWU3MzFkNDgyMTAyYWM2ODAyZmRhYzU5M2U4ZGM1OTIzNTNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTg6NTY6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xuaW5kZXggODlkOGIzMTc4Nzg0Ni4uMzQxM2JiNDkwNmQ0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGJvb2wgYXRoX21lcmdlX3JhdGV0Ymwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IGF0aF9idWYgKmJmLFxuIFx0aWYgKCFzdGEpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbi1cdHJhdGV0YmwgPSByY3VfZGVyZWZlcmVuY2Uoc3RhLVx1MDAzZXJhdGVzKTtcbitcdHJhdGV0YmwgPSByY3VfZGVyZWZlcmVuY2VfYmgoc3RhLVx1MDAzZXJhdGVzKTtcbiBcdGlmICghcmF0ZXRibClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6MTcuNzY1OTEwMjkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk3Mzk4NTQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgYSBzZWVtaW5nbHkgbWlub3IgY2hhbmdlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jYC4gSXQncyBqdXN0IHN3YXBwaW5nIG91dCBgcmN1X2RlcmVmZXJlbmNlKHN0YS1cdTAwM2VyYXRlcylgIGZvciBgcmN1X2RlcmVmZXJlbmNlX2JoKHN0YS1cdTAwM2VyYXRlcylgLiBNeSBleHBlcnQgaW50dWl0aW9uIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBsb2NrZGVwIGZpeCBvciBSQ1UgYnVnIGZpeC4gUHJvYmFibHkgYSBnb29kIHRoaW5nLCBidXQgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IENhbiBJIGZ1enogdGhpcz8gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIHRoZSBkcml2ZXIgYGF0aDlrYCBpcyBldmVuIGZ1enphYmxlLiBJdCdzIGEgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCByYWlzZXMgc29tZSBxdWVzdGlvbnMgcmlnaHQgYXdheS5cblxuVGhlIGJpZ2dlc3QgaHVyZGxlIHdpdGggd2lyZWxlc3MgZHJpdmVycyBpcyBvZnRlbiBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGV2ZW4gKnJlYWNoKiB0aGUgcmVsZXZhbnQgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBOb3JtYWxseSwgYGF0aDlrYCBuZWVkcyBhY3R1YWwgQXRoZXJvcyA4MDIuMTFuIGhhcmR3YXJlLCB3aGljaCBpcyBhIHByb2JsZW0uIEJ1dCB3YWl0Li4uIGlzbid0IGBhdGg5a2AgYSBQQ0kvUENJZSBkcml2ZXI/IE9yIGlzIHRoZXJlIGEgVVNCIHZhcmlhbnQsIGBhdGg5a19odGNgP1xuXG5BaCwgcmlnaHQsIGBtYWM4MDIxMV9od3NpbWAgaXMgc29mdHdhcmUtZW11bGF0ZWQsIGJ1dCAqYGF0aDlrYCogaXMgc3BlY2lmaWNhbGx5IGZvciBoYXJkd2FyZS4gUUVNVSBkb2Vzbid0IGVtdWxhdGUgQXRoZXJvcyBjYXJkcywgc28gdGhhdCdzIGEgZGVhZCBlbmQuIEJ1dCBob2xkIG9uISBJZiBpdCdzIGBhdGg5a19odGNgLCB3aGljaCBpcyBhICpVU0IqIGRyaXZlciwgdGhlbiB0aGF0IG9wZW5zIHRoaW5ncyB1cC4gVVNCIGRldmljZXMgKmNhbiogYmUgZW11bGF0ZWQhIFdlIGNhbiB1c2UgVVNCIGdhZGdldCBvciB2aGNpIChsaWtlIHN5emthbGxlciB1c2VzIGZvciBVU0IgZnV6emluZyEpLlxuXG5SaWdodCwgc28gdGhlIG5leHQgc3RlcCBpcyBjcnlzdGFsIGNsZWFyLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGB4bWl0LmNgIGlzIGFjdHVhbGx5IHVzZWQgYnkgYGF0aDlrX2h0Y2AgdG8gc2VlIGlmIHRoaXMgaXMgYW4gaW50ZXJlc3RpbmcgYXZlbnVlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6MjQuNzM5ODk3OTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMzMTU5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieG1pdFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgKz1cXHRiZWFjb24ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cXHRcXHRyZWN2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OlxcdFxcdHhtaXQubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgtXFx0XFx0bGluay5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6MjQuODIzMjE4MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIwMDg0MzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQ2hlY2tpbmcgYGF0aDlrX2h0Y2AncyBUcmFuc21pc3Npb24gUGF0aCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIHV0aWxpemVzIHRoZSBgeG1pdC5jYCBmaWxlIGZvciBpdHMgdHJhbnNtaXNzaW9uIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIHN0ZXAsIGFuZCBJJ2QgdHlwaWNhbGx5IGRvIHRoaXMgYnkgZGlnZ2luZyB0aHJvdWdoIHRoZSBzb3VyY2UgY29kZSwgYnV0IGxldCdzIHNlZS4uLiBhIHF1aWNrIGNoZWNrIHdvdWxkIGJlIHRoZSBiZXN0LiBJJ20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjI4LjA0MzMwNTA5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODY5NDYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a19odGMteVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02Nj1hdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Njg6YXRoOWtfaHRjLXkgKz1cXHRodGNfaHN0Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02OS1cXHRcXHRoaWZfdXNiLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjoyOC4wOTIwMTAyNzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk1OTkxODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBhdGg5a19odGMgTW9kdWxlIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHhtaXQub2AgaXMgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGBhdGg5a19odGNgIG1vZHVsZS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoaXMgaXMgYW4gYXRoOWstcmVsYXRlZCBjb21wb25lbnQsIGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgcmVsZXZhbnQgTWFrZWZpbGUuIFNwZWNpZmljYWxseSwgSSdsbCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZWAuIFRoYXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCB0aGUgbW9kdWxlIGRlZmluaXRpb24gYW5kIGFueSBhc3NvY2lhdGVkIG9iamVjdCBmaWxlIGRlcGVuZGVuY2llcy4gSSdtIGdvaW5nIHRvIGxvb2sgc3BlY2lmaWNhbGx5IGZvciBob3cgdGhlIGBhdGg5a19odGNgIG1vZHVsZSBpcyBidWlsdCBhbmQgd2hldGhlciBgeG1pdC5vYCBpcyBleHBsaWNpdGx5IGxpc3RlZCBvciBwdWxsZWQgaW4gdGhyb3VnaCBzb21lIG90aGVyIG1lY2hhbmlzbS4gTGV0J3Mgc2VlIHdoYXQgdGhlIE1ha2VmaWxlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNTAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjozMi4yODgwMDQ2MDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRhdGg5ay15ICs9XFx0YmVhY29uLm8gXFxcXFxcbiAgIDM6XFx0XFx0XFx0Z3Bpby5vIFxcXFxcXG4gICA0OlxcdFxcdFxcdGluaXQubyBcXFxcXFxuICAgNTpcXHRcXHRcXHRtYWluLm8gXFxcXFxcbiAgIDY6XFx0XFx0XFx0cmVjdi5vIFxcXFxcXG4gICA3OlxcdFxcdFxcdHhtaXQubyBcXFxcXFxuICAgODpcXHRcXHRcXHRsaW5rLm8gXFxcXFxcbiAgIDk6XFx0XFx0XFx0YW50ZW5uYS5vIFxcXFxcXG4gIDEwOlxcdFxcdFxcdGNoYW5uZWwub1xcbiAgMTE6XFx0XFxuICAxMjpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgKz0gbWNpLm9cXG4gIDEzOlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1BDSSkgKz0gcGNpLm9cXG4gIDE0OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0FIQikgKz0gYWhiLm9cXG4gIDE1OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19ERUJVR0ZTKSArPSBkZnNfZGVidWcub1xcbiAgMTY6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgKz0gZGZzLm9cXG4gIDE3OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1RYOTkpICs9IHR4OTkub1xcbiAgMTg6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfV09XKSArPSB3b3cub1xcbiAgMTk6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfSFdSTkcpICs9IHJuZy5vXFxuICAyMDpcXHRcXG4gIDIxOlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RFQlVHRlMpICs9IGRlYnVnLm9cXG4gIDIyOlxcdFxcbiAgMjM6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTKSArPSBkZWJ1Z19zdGEub1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRvYmotJChDT05GSUdfQVRIOUspICs9IGF0aDlrLm9cXG4gIDI2OlxcdFxcbiAgMjc6XFx0YXRoOWtfaHcteTo9XFx0XFxcXFxcbiAgMjg6XFx0XFx0XFx0YXI5MDAyX2h3Lm8gXFxcXFxcbiAgMjk6XFx0XFx0XFx0YXI5MDAzX2h3Lm8gXFxcXFxcbiAgMzA6XFx0XFx0XFx0aHcubyBcXFxcXFxuICAzMTpcXHRcXHRcXHRhcjkwMDNfcGh5Lm8gXFxcXFxcbiAgMzI6XFx0XFx0XFx0YXI5MDAyX3BoeS5vIFxcXFxcXG4gIDMzOlxcdFxcdFxcdGFyNTAwOF9waHkubyBcXFxcXFxuICAzNDpcXHRcXHRcXHRhcjkwMDJfY2FsaWIubyBcXFxcXFxuICAzNTpcXHRcXHRcXHRhcjkwMDNfY2FsaWIubyBcXFxcXFxuICAzNjpcXHRcXHRcXHRjYWxpYi5vIFxcXFxcXG4gIDM3OlxcdFxcdFxcdGVlcHJvbS5vIFxcXFxcXG4gIDM4OlxcdFxcdFxcdGVlcHJvbV9kZWYubyBcXFxcXFxuICAzOTpcXHRcXHRcXHRlZXByb21fNGsubyBcXFxcXFxuICA0MDpcXHRcXHRcXHRlZXByb21fOTI4Ny5vIFxcXFxcXG4gIDQxOlxcdFxcdFxcdGFuaS5vIFxcXFxcXG4gIDQyOlxcdFxcdFxcdG1hYy5vIFxcXFxcXG4gIDQzOlxcdFxcdFxcdGFyOTAwMl9tYWMubyBcXFxcXFxuICA0NDpcXHRcXHRcXHRhcjkwMDNfbWFjLm8gXFxcXFxcbiAgNDU6XFx0XFx0XFx0YXI5MDAzX2VlcHJvbS5vIFxcXFxcXG4gIDQ2OlxcdFxcdFxcdGFyOTAwM19wYXByZC5vXFxuICA0NzpcXHRcXG4gIDQ4OlxcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1dPVykgKz0gYXI5MDAzX3dvdy5vXFxuICA0OTpcXHRcXG4gIDUwOlxcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0JUQ09FWF9TVVBQT1JUKSArPSBidGNvZXgubyBcXFxcXFxuICA1MTpcXHRcXHRcXHRcXHRcXHRcXHQgICBhcjkwMDNfbWNpLm8gXFxcXFxcbiAgNTI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgYXI5MDAzX2FpYy5vXFxuICA1MzpcXHRcXG4gIDU0OlxcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSArPSBhcjkwMDNfcnR0Lm9cXG4gIDU1OlxcdFxcbiAgNTY6XFx0YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSArPSBkeW5hY2sub1xcbiAgNTc6XFx0XFxuICA1ODpcXHRvYmotJChDT05GSUdfQVRIOUtfSFcpICs9IGF0aDlrX2h3Lm9cXG4gIDU5OlxcdFxcbiAgNjA6XFx0b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgKz0gYXRoOWtfY29tbW9uLm9cXG4gIDYxOlxcdGF0aDlrX2NvbW1vbi15Oj1cXHRjb21tb24ubyBcXFxcXFxuICA2MjpcXHRcXHRcXHRcXHRjb21tb24taW5pdC5vIFxcXFxcXG4gIDYzOlxcdFxcdFxcdFxcdGNvbW1vbi1iZWFjb24ubyBcXFxcXFxuICA2NDpcXHRcXG4gIDY1OlxcdGF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fREVCVUcpICs9IGNvbW1vbi1kZWJ1Zy5vXFxuICA2NjpcXHRhdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbiAgNjc6XFx0XFxuICA2ODpcXHRhdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuICA2OTpcXHRcXHRcXHRoaWZfdXNiLm8gXFxcXFxcbiAgNzA6XFx0XFx0XFx0d21pLm8gXFxcXFxcbiAgNzE6XFx0XFx0XFx0aHRjX2Rydl90eHJ4Lm8gXFxcXFxcbiAgNzI6XFx0XFx0XFx0aHRjX2Rydl9tYWluLm8gXFxcXFxcbiAgNzM6XFx0XFx0XFx0aHRjX2Rydl9iZWFjb24ubyBcXFxcXFxuICA3NDpcXHRcXHRcXHRodGNfZHJ2X2luaXQubyBcXFxcXFxuICA3NTpcXHRcXHRcXHRodGNfZHJ2X2dwaW8ub1xcbiAgNzY6XFx0XFxuICA3NzpcXHRhdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICs9IGh0Y19kcnZfZGVidWcub1xcbiAgNzg6XFx0XFxuICA3OTpcXHRvYmotJChDT05GSUdfQVRIOUtfSFRDKSArPSBhdGg5a19odGMub1xcbiAgODA6XFx0XFxuICA4MTpcXHRvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgKz0gYXRoOWtfcGNpX293bF9sb2FkZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjozMi4yODgwNzcwNTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTgzNjE5NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg5ayBNb2R1bGUgU3RydWN0dXJlKipcblxuT2theSwgc28gaGVyZSdzIHdoYXQgSSd2ZSBnb3QgaW4gbXkgaGVhZCBhYm91dCB0aGUgYGF0aDlrYCBmYW1pbHkgb2YgZHJpdmVycy4gSSdtIHNlZWluZyB0aGF0IGB4bWl0Lm9gIGlzIGV4Y2x1c2l2ZWx5IHBhcnQgb2YgdGhlIGBhdGg5ay15YCBidWlsZCwgd2hpY2ggaXRzZWxmIGlzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIG1vbm9saXRoaWMgYGF0aDlrLm9gIG1vZHVsZS4gIFRoYXQncyBteSBmaXJzdCBvYnNlcnZhdGlvbjogYHhtaXQub2AgaXMgKmVtYmVkZGVkKiB3aXRoaW4gdGhlIGNvcmUgYGF0aDlrLm9gIGRyaXZlci4gQW5kIGBhdGg5ay5vYCwgb2YgY291cnNlLCBpcyBvbmx5IGJ1aWx0IGlmIHRoZSBgQ09ORklHX0FUSDlLYCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSBmcm9tIGEgbW9kdWxhcml0eSBwZXJzcGVjdGl2ZS5cblxuTm93LCB3ZSBhbHNvIGhhdmUgYGF0aDlrX2h0Yy5vYCB3aGljaCwgbG9naWNhbGx5LCBpcyBidWlsdCB3aGVuIGBDT05GSUdfQVRIOUtfSFRDYCBpcyBzZXQuICBIb3dldmVyLCB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuICBgYXRoOWtfaHRjYCBkb2Vzbid0IHNlZW0gdG8gaW5jbHVkZSBgeG1pdC5vYC4gSXQgaGFzIGl0cyBvd24sIGRpc3RpbmN0IHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uIGhhbmRsZXIgaW4gYGh0Y19kcnZfdHhyeC5vYC4gU28sIHRvIGJlIGNsZWFyLCBgYXRoOWtfaHRjYCBpcyBjb21wbGV0ZWx5IGlzb2xhdGVkIGZyb20gdGhlIGB4bWl0Lm9gIGNvZGUgYmFzZS5cblxuVGhpcyBsZWFkcyBtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IGB4bWl0LmNgIC0gdGhlIHNvdXJjZSBjb2RlIGZvciBgeG1pdC5vYCAtIGlzICpleGNsdXNpdmVseSogdXRpbGl6ZWQgYnkgdGhlIFBDSS9BSEIgdmFyaWFudCBvZiB0aGUgZHJpdmVyIOKAkyB0aGUgc3RhbmRhcmQgYGF0aDlrYCBkcml2ZXIsIGFuZCB0aGF0IGl0IGlzIG5vdCB1c2VkIGluIHRoZSBIVEMgYmFzZWQgYXRoOWtfaHRjIGRyaXZlci4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBkZWZpbml0aXZlbHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgbG9naWMgaXMgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MTAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjozNy4yNzE2OTg2NjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTg4NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhtaXRcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICs9XFx0YmVhY29uLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTYtXFx0XFx0cmVjdi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzpcXHRcXHR4bWl0Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04LVxcdFxcdGxpbmsubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjM3LjMxNjY5MjQzM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTIxODg2NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGBhdGg5a2AqKlxuXG5Pa2F5LCBzbyBJJ20gd29uZGVyaW5nIGFib3V0IGBhdGg5a2AgYW5kIGl0cyBoYXJkd2FyZSBpbnRlcmZhY2Ugc3VwcG9ydC4gRG9lcyB0aGlzIGRyaXZlciAqb25seSogY292ZXIgUENJIGFuZCBBSEIsIG9yIGRvZXMgaXQgaGFuZGxlIG1vcmU/IFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZS4gTGV0J3MgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgc2hvdWxkIGNsYXJpZnkgd2hhdCB0eXBlcyBvZiBidXNzZXMgYW5kIGludGVyZmFjZXMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoLiBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIHByZXR0eSBnb29kIGFuc3dlciB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM0MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjQyLjIzODU4MjAwM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRjb25maWcgQVRIOUtfSFdcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRjb25maWcgQVRIOUtfQ09NTU9OXFxuICAgNTpcXHRcXHR0cmlzdGF0ZVxcbiAgIDY6XFx0XFx0c2VsZWN0IEFUSF9DT01NT05cXG4gICA3OlxcdGNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcXG4gICA4OlxcdFxcdGJvb2xcXG4gICA5OlxcdGNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbiAgMTA6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIFxcdTAwMjZcXHUwMDI2IEFUSDlLX0RGU19DRVJUSUZJRURcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXFxuICAxNDpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbiAgMTY6XFx0XFx0ZGVmYXVsdCB5XFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFNheSBZLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGF0aDlrL2F0aDlrX2h0YyByYWRpb3MgdG9nZXRoZXIgd2l0aFxcbiAgMTk6XFx0XFx0ICBCbHVldG9vdGggbW9kdWxlcyBpbiB0aGUgc2FtZSBzeXN0ZW0uXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBBVEg5S1xcbiAgMjI6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAyNDpcXHRcXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbiAgMjU6XFx0XFx0c2VsZWN0IEFUSDlLX0hXXFxuICAyNjpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gIDI5OlxcdFxcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMW4gQVI1MDA4LCBBUjkwMDEgYW5kIEFSOTAwMiBmYW1pbHlcXG4gIDMwOlxcdFxcdCAgb2YgY2hpcHNldHMuIEZvciBhIHNwZWNpZmljIGxpc3Qgb2Ygc3VwcG9ydGVkIGV4dGVybmFsXFxuICAzMTpcXHRcXHQgIGNhcmRzLCBsYXB0b3BzIHRoYXQgYWxyZWFkeSBzaGlwIHdpdGggdGhlc2UgY2FyZHMgYW5kXFxuICAzMjpcXHRcXHQgIEFQcyB0aGF0IGNvbWUgd2l0aCB0aGVzZSBjYXJkcyByZWZlciB0byBhdGg5ayB3aWtpXFxuICAzMzpcXHRcXHQgIHByb2R1Y3RzIHBhZ2U6XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5ay9wcm9kdWN0c1xcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBhdGg5ay5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIEFUSDlLX1BDSVxcbiAgNDA6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFxcXCJcXG4gIDQxOlxcdFxcdGRlZmF1bHQgeVxcbiAgNDI6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDQzOlxcdFxcdGhlbHBcXG4gIDQ0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJIGJ1cyBzdXBwb3J0IGluIGF0aDlrLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgaGF2ZSBhIGNvbXBhdGlibGUgUENJL1BDSWUgd2lyZWxlc3MgY2FyZC5cXG4gIDQ3OlxcdFxcbiAgNDg6XFx0Y29uZmlnIEFUSDlLX0FIQlxcbiAgNDk6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBBSEIgYnVzIHN1cHBvcnRcXFwiXFxuICA1MDpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IE9GXFxuICA1MTpcXHRcXHRkZWZhdWx0IG5cXG4gIDUyOlxcdFxcdGhlbHBcXG4gIDUzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgQUhCIGJ1cyBzdXBwb3J0IGluIGF0aDlrLlxcbiAgNTQ6XFx0XFxuICA1NTpcXHRcXHQgIFNheSBZLCBpZiB5b3UgaGF2ZSBhIFNvQyB3aXRoIGEgY29tcGF0aWJsZSBidWlsdC1pblxcbiAgNTY6XFx0XFx0ICB3aXJlbGVzcyBNQUMuIFNheSBOIGlmIHVuc3VyZS5cXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG4gIDU5OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgZGVidWdnaW5nXFxcIlxcbiAgNjA6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBERUJVR19GUyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuICA2MTpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuICA2MjpcXHRcXHRoZWxwXFxuICA2MzpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWsncyBzdGF0aXN0aWNzIGZvclxcbiAgNjQ6XFx0XFx0ICBpbnRlcnJ1cHRzLCByYXRlIGNvbnRyb2wsIGV0Yy5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0ICBBbHNvIHJlcXVpcmVkIGZvciBjaGFuZ2luZyBkZWJ1ZyBtZXNzYWdlIGZsYWdzIGF0IHJ1biB0aW1lIGFuZCBmb3JcXG4gIDY3OlxcdFxcdCAgVFg5OS5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xcbiAgNzA6XFx0XFx0Ym9vbCBcXFwiRGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBBVEg5S19ERUJVR0ZTIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuICA3MjpcXHRcXHRkZWZhdWx0IG5cXG4gIDczOlxcdFxcdGhlbHBcXG4gIDc0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGZvciBhc3NvY2lhdGlvbiBzdGF0aW9ucy5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIEFUSDlLX1RYOTlcXG4gIDc3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgVFg5OSB0ZXN0aW5nIHN1cHBvcnRcXFwiXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA3OTpcXHRcXHRkZWZhdWx0IG5cXG4gIDgwOlxcdFxcdGhlbHBcXG4gIDgxOlxcdFxcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBvbiBzeXN0ZW1zIHVuZGVyZ29pbmdcXG4gIDgyOlxcdFxcdCAgY2VydGlmaWNhdGlvbiB0ZXN0aW5nIGFuZCBldmFsdWF0aW9uIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cXG4gIDgzOlxcdFxcdCAgRW5hYmxpbmcgdGhpcyB3aWxsIG9ubHkgZW5hYmxlIFRYOTkgc3VwcG9ydCwgYWxsIG90aGVyIG1vZGVzIG9mXFxuICA4NDpcXHRcXHQgIG9wZXJhdGlvbiB3aWxsIGJlIGRpc2FibGVkLlxcbiAgODU6XFx0XFxuICA4NjpcXHRcXHQgIFRYOTkgc3VwcG9ydCBlbmFibGVzIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAoU0FSKSB0ZXN0aW5nLlxcbiAgODc6XFx0XFx0ICBTQVIgaXMgdGhlIHVuaXQgb2YgbWVhc3VyZW1lbnQgZm9yIHRoZSBhbW91bnQgb2YgcmFkaW8gZnJlcXVlbmN5KFJGKVxcbiAgODg6XFx0XFx0ICBhYnNvcmJlZCBieSB0aGUgYm9keSB3aGVuIHVzaW5nIGEgd2lyZWxlc3MgZGV2aWNlLiBUaGUgUkYgZXhwb3N1cmVcXG4gIDg5OlxcdFxcdCAgbGltaXRzIHVzZWQgYXJlIGV4cHJlc3NlZCBpbiB0aGUgdGVybXMgb2YgU0FSLCB3aGljaCBpcyBhIG1lYXN1cmVcXG4gIDkwOlxcdFxcdCAgb2YgdGhlIGVsZWN0cmljIGFuZCBtYWduZXRpYyBmaWVsZCBzdHJlbmd0aCBhbmQgcG93ZXIgZGVuc2l0eSBmb3JcXG4gIDkxOlxcdFxcdCAgdHJhbnNtaXR0ZXJzIG9wZXJhdGluZyBhdCBmcmVxdWVuY2llcyBmcm9tIDMwMCBrSHogdG8gMTAwIEdIei5cXG4gIDkyOlxcdFxcdCAgUmVndWxhdG9yeSBib2RpZXMgYXJvdW5kIHRoZSB3b3JsZCByZXF1aXJlIHRoYXQgd2lyZWxlc3MgZGV2aWNlXFxuICA5MzpcXHRcXHQgIGJlIGV2YWx1YXRlZCB0byBtZWV0IHRoZSBSRiBleHBvc3VyZSBsaW1pdHMgc2V0IGZvcnRoIGluIHRoZVxcbiAgOTQ6XFx0XFx0ICBnb3Zlcm5tZW50YWwgU0FSIHJlZ3VsYXRpb25zLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxcbiAgOTc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG4gIDk4OlxcdFxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA5OTpcXHRcXHRkZWZhdWx0IG5cXG4gMTAwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6NDIuMjM4Njg1MDkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTk2Mjc5Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBhdGg5a2AgRHJpdmVyOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBhdGg5a2AsIGEgV2ktRmkgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBnb2VzIHRvIGZ1enppbmcuIEl0IGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYEhBU19ETUFgLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcy4gSXQgYWxzbyBoYXMgYEFUSDlLX1BDSWAgYW5kIGBBVEg5S19BSEJgIHZhcmlhbnRzLCBzbyB0aGF0IGltbWVkaWF0ZWx5IGluZm9ybXMgc29tZSBwb3RlbnRpYWwgZnV6emluZyBhcHByb2FjaGVzLiBDYW4gSSBmdXp6IGl0IGluIFFFTVU/IEkga25vdyBgbWFjODAyMTFfaHdzaW1gIGV4aXN0cywgd2hpY2ggaXMgYSB2aXJ0dWFsIFdpLUZpIGRyaXZlciwgYnV0IGBhdGg5a2AgaXMgYSAqcmVhbCogaGFyZHdhcmUgZHJpdmVyLlxuXG5DYW4gc3l6a2FsbGVyIGZ1enogYGF0aDlrYD8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uIFN5emthbGxlciB0eXBpY2FsbHkgdXNlcyBgc3l6X3BjaV9zZXR1cGAgZm9yIFBDSSBkZXZpY2VzLCBidXQgUUVNVSBkb2Vzbid0IGRpcmVjdGx5IGVtdWxhdGUgQXRoZXJvcyA4MDIuMTFuIGNhcmRzLiBIb3dldmVyLCB3YWl0IGEgbWludXRlLCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIHJpZ2h0PyBZZXMhIEl0IGNhbiBwcm9iZSBQQ0kgY29uZmlnIHNwYWNlIGFuZCBwZXJmb3JtIE1NSU8gcmVhZHMvd3JpdGVzIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiBBbmQgYGF0aDlrYCBpcyBpbmRlZWQgYSBQQ0kgZHJpdmVyLiBUaGlzIG9wZW5zIHVwIGEgZnV6emluZyBhdmVudWUuIFNvLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlIGlmIHN5emthbGxlciBoYXMgUENJIGZ1enppbmcgZW5hYmxlZC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybS4gWWVzLCBgc3l6X3BjaV9zZXR1cGAsIGBzeXpfcGNpX21taW9fd3JpdGVgIGFyZSBhbGwgcHJlc2VudC5cblxuQnV0IG5vdywgSSdtIGdldHRpbmcgYSBsaXR0bGUgc25hZy4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgaXNzdWVzIHdpdGggXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBJcyBgYXRoOWtgIGluIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCdzIGEgc3RhbmRhcmQgV2ktRmkgZHJpdmVyLCBzbyBJIGRvbid0IHRoaW5rIHRoYXQncyB0aGUgYmxvY2tlci5cblxuV2FpdCBhIHNlY29uZOKApiB0aGUgZmFjdCB0aGF0IHRoZXJlJ3MgYSBwYXRjaCBhcHBsaWVkIGJ5IGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAgbWVhbnMgc3l6a2FsbGVyICpmb3VuZCogYSBidWcgaGVyZSEgSWYgaXQgZm91bmQgYSBidWcsIGl0ICptdXN0KiBiZSBmdXp6YWJsZS4gVGhlIHByb29mIGlzIGluIHRoZSBwdWRkaW5nLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGJ1ZyByZXBvcnQgb3IgaG93IGl0IHdhcyBmb3VuZCwgYnV0IHRoZSBwYXRjaCBpdHNlbGYgaXMgdGhlIGdpdmVhd2F5LlxuXG5JIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBhdGggaGVyZS4gU3l6a2FsbGVyIGNhbm5vdCBiZSBmdXp6aW5nIGBhdGg5a2AgdmlhIGBtYWM4MDIxMV9od3NpbWAgYmVjYXVzZSB0aGF0J3MgYSAqdmlydHVhbCogZHJpdmVyLCBhbmQgYGF0aDlrYCBpcyBhICpoYXJkd2FyZSogZHJpdmVyLiBUaGVyZWZvcmUsIGhvdyBjb3VsZCBzeXprYWxsZXIgdHJpZ2dlciBgYXRoOWtgPyBQb3NzaWJseSB0aHJvdWdoIGBtYWM4MDIxMWAgaW5qZWN0aW9uPyBObywgdGhhdCB3b3VsZG4ndCB3b3JrIGJlY2F1c2UgYGF0aDlrYCB3b24ndCBiZSBsb2FkZWQgdW5sZXNzIHRoZSBoYXJkd2FyZSBpcyBwcmVzZW50IG9yIFBDSSBpcyBmdXp6ZWQuXG5cbkFoYSEgU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIhIEl0IGNhbiBzaW11bGF0ZSBhIFBDSSBkZXZpY2UgYW5kLCBiaW5nbywgSSdtIGJhY2sgb24gdHJhY2suIGBhdGg5a2AgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBiZWNhdXNlIGl0J3MgYSBQQ0kgZHJpdmVyLiBUaGUgZWFybGllciBjYXZlYXQgYWJvdXQgaGFyZHdhcmUgZW11bGF0aW9uIHNob3VsZCBiZSBtb290LiBgYXRoOWtgIGlzbid0IGEgc3BlY2lhbCBjYXNlOyBpdCBpcyBhIHJlZ3VsYXIgV2ktRmkgZHJpdmVyLlxuXG5TbywgaXQncyBiYWNrIHRvIGNoZWNraW5nIHRoZSBwYXRjaC4gSSdtIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2UgaXRzZWxmOlxuYGBgY1xuLVx0cmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZShzdGEtXHUwMDNlcmF0ZXMpO1xuK1x0cmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZV9iaChzdGEtXHUwMDNlcmF0ZXMpO1xuYGBgXG5UaGlzIGlzIHdpdGhpbiBgYXRoX21lcmdlX3JhdGV0YmxgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jYC4gVGhpcyBpcyBjbGVhcmx5IGEgY29uY3VycmVuY3kgaXNzdWUsIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbi4gVGhlIGtleSBpcyBpbiB0aGUgYHJjdV9kZXJlZmVyZW5jZWAgdG8gYHJjdV9kZXJlZmVyZW5jZV9iaGAsIHdoaWNoIGlzIGxpa2VseSBhIGZpeCByZWxhdGVkIHRvIGFjY2Vzc2luZyByYXRlIHRhYmxlLlxuXG5UaGVyZWZvcmUsIHN5emthbGxlciBpcyBzdWNjZXNzZnVsbHkgZnV6emluZyBhIHN0YW5kYXJkIFdpLUZpIGRyaXZlciB2aWEgaXRzIFBDSSBmdXp6ZXIsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2Ugbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTg2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6NTYuMjM0OTY4MzIxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA1NDM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGhfbWVyZ2VfcmF0ZXRibFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTUzPXN0YXRpYyB2b2lkIGF0aF9zZW5kX2JhcihzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwgdTE2IHNlcW5vKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoxNjI6c3RhdGljIGJvb2wgYXRoX21lcmdlX3JhdGV0Ymwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IGF0aF9idWYgKmJmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTYzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTk4PXN0YXRpYyB2b2lkIGF0aF9zZXRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjA1OlxcdGlmICghYXRoX21lcmdlX3JhdGV0Ymwoc3RhLCBiZiwgdHhfaW5mbykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMDYtXFx0XFx0aWVlZTgwMjExX2dldF90eF9yYXRlcyh2aWYsIHN0YSwgYmYtXFx1MDAzZWJmX21wZHUsIGJmLVxcdTAwM2VyYXRlcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6NTYuMjc4MDI4MDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2NTkyMjgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgVW5kZXJzdGFuZGluZyBvZiBSYXRlIFRhYmxlIE1lcmdpbmcqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgcmVsYXRpb25zaGlwIGhlcmUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSBzZWUgdGhhdCBgYXRoX21lcmdlX3JhdGV0YmxgIGlzIGRpcmVjdGx5IHRpZWQgdG8gYGF0aF9zZXRfcmF0ZXNgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGEgZmV3IHRoaW5ncy4gRmlyc3QsIGBhdGhfc2V0X3JhdGVzYCBpcyBwcm9iYWJseSB0aGUgKmNhbGxlciog4oCTIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgZ2V0dGluZyB0aGlzIHJhdGUgdGFibGUgYnVzaW5lc3MgZ29pbmcuIEl0IGxpa2VseSBuZWVkcyB0byBzZXQgb3IgbW9kaWZ5IHRoZSB0cmFuc21pdCByYXRlIHRhYmxlcywgYW5kIHRoZXJlZm9yZSwgaXQgcmVsaWVzIG9uIGBhdGhfbWVyZ2VfcmF0ZXRibGAgYXMgYSBoZWxwZXIgZnVuY3Rpb24uIFNlY29uZCwgdGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIHRoYXQgYGF0aF9tZXJnZV9yYXRldGJsYCBpcyByZXNwb25zaWJsZSBmb3IgKm1lcmdpbmcqIHJhdGUgdGFibGVzLiBUaGlzIGhpbnRzIHRoYXQgdGhlIHN5c3RlbSBtYXkgZGVhbCB3aXRoIG11bHRpcGxlIHJhdGUgdGFibGVzLCBwZXJoYXBzIGZvciBkaWZmZXJlbnQgc2NlbmFyaW9zIG9yIGRldmljZSBjYXBhYmlsaXRpZXMsIGFuZCB0aGF0IGBhdGhfc2V0X3JhdGVzYCBuZWVkcyB0byBjb21iaW5lIHRoZW0gaW4gc29tZSB3YXkuIEknZCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gc2VlIGlmIHRoaXMgaXMgZm9yIG5ldyByYXRlIHRhYmxlcyBvciB0byB1cGRhdGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgcmF0ZSBzZWxlY3Rpb24gYWxnb3JpdGhtcyBhbmQgaG93IHRoZSBkcml2ZXIgYWRhcHRzIHRvIGNoYW5naW5nIGNoYW5uZWwgY29uZGl0aW9ucyBhbmQgY2xpZW50IGNhcGFiaWxpdGllcy4gVWx0aW1hdGVseSwgSSdkIG5lZWQgdG8gdmVyaWZ5IHRoZSBjYWxsaW5nIGNvbnRleHQsIGJ1dCBpdCdzIGNsZWFyIGBhdGhfbWVyZ2VfcmF0ZXRibGAgaXMgYSBzdXBwb3J0aW5nIGZ1bmN0aW9uIHVuZGVyIHRoZSBgYXRoX3NldF9yYXRlc2AgY29tbWFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk4NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU3OjAwLjc0Mzk1MzY0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5NzkwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3NldF9yYXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTYyPXN0YXRpYyBib29sIGF0aF9tZXJnZV9yYXRldGJsKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBhdGhfYnVmICpiZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTk4OnN0YXRpYyB2b2lkIGF0aF9zZXRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE5OS1cXHRcXHRcXHQgIHN0cnVjdCBhdGhfYnVmICpiZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTQ5Nj1hdGhfdHhfZm9ybV9idXJzdChzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTUyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE1MjU6XFx0XFx0YXRoX3NldF9yYXRlcyh0aWQtXFx1MDAzZWFuLVxcdTAwM2V2aWYsIHRpZC1cXHUwMDNlYW4tXFx1MDAzZXN0YSwgYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTUyNi1cXHR9IHdoaWxlICgxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTUyOT1zdGF0aWMgaW50IGF0aF90eF9zY2hlZF9hZ2dyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTU1MjpcXHRhdGhfc2V0X3JhdGVzKHRpZC1cXHUwMDNlYW4tXFx1MDAzZXZpZiwgdGlkLVxcdTAwM2Vhbi1cXHUwMDNlc3RhLCBiZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNTUzLVxcdGlmIChhZ2dyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xNjkwPXZvaWQgYXRoOWtfcmVsZWFzZV9idWZmZXJlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE3MjEtXFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2YmYtXFx1MDAzZWxpc3QsIFxcdTAwMjZiZl9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE3MjI6XFx0XFx0XFx0YXRoX3NldF9yYXRlcyh0aWQtXFx1MDAzZWFuLVxcdTAwM2V2aWYsIHRpZC1cXHUwMDNlYW4tXFx1MDAzZXN0YSwgYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTcyMy1cXHRcXHRcXHRpZiAoYmZfaXNhbXBkdShiZikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIzMjM9aW50IGF0aF90eF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjIzODA6XFx0YXRoX3NldF9yYXRlcyh2aWYsIHN0YSwgYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM4MS1cXHRhdGhfdHhfc2VuZF9ub3JtYWwoc2MsIHR4cSwgdGlkLCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzg5PXZvaWQgYXRoX3R4X2NhYnEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTctXFx0XFx0YmYtXFx1MDAzZWJmX2xhc3RiZiA9IGJmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcXHRcXHRhdGhfc2V0X3JhdGVzKHZpZiwgTlVMTCwgYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjQxOS1cXHRcXHRhdGhfYnVmX3NldF9yYXRlKHNjLCBiZiwgXFx1MDAyNmluZm8sIGZpLVxcdTAwM2VmcmFtZWxlbiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yOTE0PWludCBhdGg5a190eDk5X3NlbmQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI5NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyOTQ3OlxcdGF0aF9zZXRfcmF0ZXMoc2MtXFx1MDAzZXR4OTlfdmlmLCBOVUxMLCBiZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NzowMC43ODg5Mzg1MjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcwMTUyMzYxMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IGBhdGhfdHhfc3RhcnRgIGluIGBhdGg5a2AqKlxuXG5Pa2F5LCBzbyB0aGUgZW50cnkgcG9pbnQgZm9yIHBhY2tldCB0cmFuc21pc3Npb24gaW4gdGhpcyBBdGhlcm9zIGRyaXZlciBpcyBgYXRoX3R4X3N0YXJ0YC4gIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJDYW4gd2UgZnV6eiB0aGlzIHdpdGggdGhlIHVzdWFsIHN1c3BlY3RzP1wiIExldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgZmxhZ3MgY29kZSB0aGF0J3MgdGllZCB0byBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gIGBhdGg5a2AsIHRoZSBBdGhlcm9zIDgwMi4xMW4gZHJpdmVyLCBpcyBhIFBDSWUgZGV2aWNlLiBJcyB0aGlzIGRyaXZlciB2ZW5kb3Igc3BlY2lmaWM/IE5vLCBpdCdzIHByZXR0eSBzdGFuZGFyZCBmb3IgV2ktRmkuXG5cblRoZSBjb3JlIHF1ZXN0aW9uIGlzIGVtdWxhYmlsaXR5IHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgZnVsbCBoYXJkd2FyZSByZXF1aXJlbWVudHMgb2YgYGF0aDlrYC4gIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLi4uIGFuZCBJIGluaXRpYWxseSB0aG91Z2h0IFwiQmluZ28hXCIgYmVjYXVzZSBpdCBjYW4gc2ltdWxhdGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gSG93ZXZlciwgdGhlIHByb21wdCBoYXMgYSBuZWdhdGl2ZSBmaWx0ZXIhIEl0ICpleHBsaWNpdGx5KiBleGNsdWRlcyBcInZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLlwiIFdoaWxlIGBhdGg5a2AgaXMgbm90ICpleGFjdGx5KiBhIFwic3dpdGNoLFwiIFwiU21hcnROSUMsXCIgb3IgXCJHUFUsXCIgaXQgRE9FUyByZXF1aXJlIGEgcGh5c2ljYWwgY2FyZC4gU28sIHRoaXMgbWlnaHQgYmUgYSBub24tc3RhcnRlci5cblxuU3l6a2FsbGVyIGRvZXMgaGF2ZSBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaSBmdXp6aW5nLCBidXQgYGF0aDlrYCAqaXNuJ3QqIGBtYWM4MDIxMV9od3NpbWAuIEFsc28gdGhlcmUgaXMgYGF0aDlrX2h0Y2AsIHdoaWNoIGlzIGEgVVNCIGRldmljZSB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0IgZnV6emVyLiBIb3dldmVyLCB0aGlzIHBhdGNoIGlzIGluIGB4bWl0LmNgIHdoaWNoIGRvZXMgbm90IGdldCBjb21waWxlZCBmb3IgYGF0aDlrX2h0Y2AuIEhtbS5cblxuVGhlIGtleSBpcyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LiBUaGUgc3l6a2FsbGVyIFBDSSBmdXp6ZXIgKmNvdWxkKiB0ZWNobmljYWxseSBwcm9iZSBhbmQgdHJ5IHRvIHJlYWNoIGBhdGhfdHhfc3RhcnRgLiBCdXQsIFBDSSBmdXp6aW5nIGlzIGdlbmVyYWxseSBzaGFsbG93IGFuZCBpdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHRoZSBzeXprYWxsZXIgUENJIGZ1enplciB3aWxsIGJlIGFibGUgdG8gZnVsbHkgaW5pdGlhbGl6ZSB0aGUgY29tcGxpY2F0ZWQgTUFDL1BIWSBzdGF0ZSBtYWNoaW5lIHJlcXVpcmVkIHRvIGdldCB0aGlzIGRldmljZSByZWdpc3RlcmVkIGluIGBtYWM4MDIxMWAgYW5kIGFjdHVhbGx5IGV4ZWN1dGUgdGhlIHRyYW5zbWlzc2lvbiBwYXRoLlxuXG5TbywgaG93IHdhcyB0aGlzIGJ1ZyBmb3VuZD8gVGhlIGNvbW1pdCBtZXNzYWdlIHJlZmVyZW5jZXMgXCJzeXotY2x1c3RlcixcIiB3aGljaCBzdWdnZXN0cyBpdCB3YXMgZm91bmQgYnkgc3l6a2FsbGVyLiBIb3dldmVyLCBzeXprYWxsZXIgZG9lcyBydW4gb24gcmVhbCBoYXJkd2FyZS4gIFRoZSBwcm9tcHQgdGhlbiBleHBsaWNpdGx5IGV4Y2x1ZGVzIHBhdGhzIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiAgU2luY2UgYGF0aDlrYCByZXF1aXJlcyBhICpwaHlzaWNhbCogUENJZSBjYXJkLCBhbmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgV2ktRmkgY2FyZHMuLi4gdGhlIG1hdGggaXMgc3RhcnRpbmcgdG8gYmVjb21lIGNsZWFyLlxuXG5RRU1VIGRvZXNuJ3Qgb2ZmZXIgYGF0aDlrYC4gSXQgaGFzIE5JQyBlbXVsYXRpb25zIGxpa2UgYG5lMmtfcGNpYCwgYGUxMDAwYCwgYHJ0bDgxMzlgLCBldGMuLCBidXQgbm90aGluZyBmb3IgV2ktRmkuIEl0IGFwcGVhcnMgdGhhdCBXaS1GaSBmdXp6aW5nIGluIFN5emthbGxlciBpcyBleGNsdXNpdmVseSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAuXG5cblRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aCB0aGF0IHJlYWNoZXMgYGF0aF90eF9zdGFydGAgdGhyb3VnaCBgYXRoOWtgIGlzIGltcG9zc2libGUgdG8gdHJpZ2dlciB0aHJvdWdoIGVtdWxhdGlvbi4gSXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBjYXJkLlxuXG5HaXZlbiBhbGwgb2YgdGhpcywgSSBzaG91bGQgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBKdXN0IHRvIGJlIHNhZmUsIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgdGhhdCBgeG1pdC5jYCBpc24ndCBpbmNsdWRlZCBpbiBgYXRoOWtfaHRjYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NjEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU3OjE3LjgwNDE3Nzg1MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3MzU5MzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2h0Yy15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY2PWF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwpICs9IGNvbW1vbi1zcGVjdHJhbC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2ODphdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY5LVxcdFxcdGhpZl91c2IubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU3OjE3LjkyMTU0NjI1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Njg5MDQ3NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQXRoZXJvcyBEcml2ZXIgTWFrZWZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGNpcmNsZSBiYWNrIGFuZCBnaXZlIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlYCBhbm90aGVyIGxvb2suIEkgc3VzcGVjdCB0aGVyZSdzIGEgc3BlY2lmaWMgZmxhZyBvciB0YXJnZXQgSSBvdmVybG9va2VkLCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSByZWNlbnQga2VybmVsIHVwZGF0ZSBvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgdmFyaWFudC4gSSdtIHRoaW5raW5nIEkgbWlnaHQgaGF2ZSBtaXNzZWQgc29tZXRoaW5nIHN1YnRsZSBpbiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcywgb3IgbWF5YmUgYSBkZXBlbmRlbmN5IHRoYXQgd2FzIGludHJvZHVjZWQgb3IgY2hhbmdlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVu4oCZdCBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIG9uIGhvdyBtb2R1bGVzIGFyZSBidWlsdCBhbmQgbGlua2VkIHdpdGhpbiB0aGUgYXRoOWsgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gY2FyZWZ1bGx5IHN0ZXAgdGhyb3VnaCB0aGUgbG9naWMgYWdhaW4sIGRvdWJsZS1jaGVja2luZyB0aGUgdmFyaWFibGVzLCBpbmNsdWRlIHBhdGhzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBjcm9zcy1jb21waWxhdGlvbiBjb25maWd1cmF0aW9ucywgcGFydGljdWxhcmx5IGlmIHRoZXJlIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGlmZmVyZW5jZXMgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgTWFrZWZpbGUgaXMgb3JjaGVzdHJhdGVkIGluIGNvbXBhcmlzb24gdG8gb3RoZXJzIHdpdGhpbiB0aGUgYXRoOWsgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU3OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU3OjIyLjc5MDQ1NDMzMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2OTg3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieG1pdFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgKz1cXHRiZWFjb24ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cXHRcXHRyZWN2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OlxcdFxcdHhtaXQubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgtXFx0XFx0bGluay5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6MjIuODQ4MTU4NDZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyNjU0NzE4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGB4bWl0Lm9gIOKAkyB0aGF0J3Mgb25seSBpbiBgYXRoOWsteWAsIGFuZCBgYXRoOWsteWAgaXMgY29tcGlsZWQgaW50byBgYXRoOWsub2AuIGBhdGg5ay5vYCBpcyB0aGUgUENJL0FIQiBkcml2ZXIsIHJpZ2h0PyBIbW0sIGlzIHRoZXJlIGFueSBvdGhlciB3YXkgYGF0aDlrLm9gIGdldHMgdXNlZD8gTm8sIHRoYXQgbG9va3MgcmlnaHQ7IGBvYmotJChDT05GSUdfQVRIOUspICs9IGF0aDlrLm9gIGNvbmZpcm1zIGBDT05GSUdfQVRIOUtgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZyBmb3IgdGhlIFBDSS9BSEIgZHJpdmVyLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjb3VsZCB0aGlzIGRyaXZlciBzb21laG93IGJlIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQnV0LCBpdCdzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHNvIG5vLiBUaGF0IGZpcm1seSBwdXRzIGl0IGludG8gdGhlIGNhdGVnb3J5IG9mIFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyxcIiBldmVuIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS5cblxuSG9sZCBvbiwgd2hhdCBhYm91dCBTeXprYWxsZXIncyBQQ0kgZnV6emVyPyBUaGF0IHRoaW5nJ3MgcHJldHR5IGNsZXZlci4gSXQgd29ya3MgYnkgaW50ZXJjZXB0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMvd3JpdGVzIGFuZCBNTUlPIHJlYWRzL3dyaXRlcywgbWVhbmluZyBpdCAqY291bGQqIHRoZW9yZXRpY2FsbHkgdHJpZ2dlciB0aGUgYHByb2JlYCBmdW5jdGlvbiBvZiBhbnkgUENJIGRyaXZlci4gQ291bGQgaXQgcmVhY2ggYGF0aF90eF9zdGFydGA/IFJlbWVtYmVyLCBgYXRoX3R4X3N0YXJ0YCBpcyBjYWxsZWQgYnkgYG1hYzgwMjExYCB3aGVuIGEgcGFja2V0IGlzIHRyYW5zbWl0dGVkLiBGb3IgYG1hYzgwMjExYCB0byBldmVuICpjYWxsKiBgYXRoX3R4X3N0YXJ0YCwgdGhlIGBhdGg5a2AgZHJpdmVyIG5lZWRzIHRvIHJlZ2lzdGVyIGEgYHdpcGh5YCBhbmQgYSBgbmV0X2RldmljZWAgc3VjY2Vzc2Z1bGx5LCBhbmQgdGhlbiB0aGUgaW50ZXJmYWNlIG5lZWRzIHRvIGJlIGJyb3VnaHQgdXAuIFRoYXQgbWVhbnMgYHByb2JlYCBoYXMgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LiBUaGF0J3MgYSBodWdlIGh1cmRsZSDigJMgaXQgaW52b2x2ZXMgcmVhZGluZyB0aGUgTUFDIGFkZHJlc3MgZnJvbSB0aGUgRUVQUk9NLCBpbml0aWFsaXppbmcgdGhlIFBIWSwgcmFkaW8gY2FsaWJyYXRpb24sIGFuZCBzbyBvbi4gSXQncyBpbmNyZWRpYmx5IHVubGlrZWx5IHRoYXQgYSBkdW1iIFBDSSBmdXp6ZXIgY291bGQgZmVlZCBpdCB0aGUgZXhhY3QgTU1JTyBzZXF1ZW5jZSBuZWVkZWQgdG8gc2F0aXNmeSBhbGwgdGhvc2UgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gY2hlY2tzIGFuZCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXIgdGhlIGRldmljZS5cblxuRXZlbiBpZiBieSBzb21lIG1pcmFjbGUgaXQgKmNvdWxkKiwgdGhlIHByb21wdCBzYXlzIHRoaXM6IFwiQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgV2hpbGUgYGF0aDlrYCBpc24ndCBhIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSwgaXQgaXMgYSBkcml2ZXIgdGhhdCBhYnNvbHV0ZWx5IHJlcXVpcmVzIGEgKnBoeXNpY2FsKiBQQ0llIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFNvLCB0aGUgcmlnaHQgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLiBpcyB0aGVyZSAqYW55KiBRRU1VIGVtdWxhdGlvbiBmb3IgYGF0aDlrYD8gTm8sIG5vdGhpbmcuIEFueSBvdGhlciBzb2Z0d2FyZSBlbXVsYXRpb24/IE5vcGUuIEFuZCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGlzIGBhdGg5a19odGNgIHNvbWVob3cgaW5jbHVkaW5nIGB4bWl0LmNgPyBgYXRoOWtfaHRjYCB1c2VzIGBodGNfZHJ2X3R4cnguY2AgZm9yIHRyYW5zbWl0L3JlY2VpdmUsIHNvIHRoYXQgaXMgbm90IHRoZSBjYXNlLiBPa2F5LCBJJ20gY29uZmlkZW50IGluIHNheWluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5NDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6MzMuMTEzNjMzMjE2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTI0MDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGhfbWVyZ2VfcmF0ZXRibFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTUzPXN0YXRpYyB2b2lkIGF0aF9zZW5kX2JhcihzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwgdTE2IHNlcW5vKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoxNjI6c3RhdGljIGJvb2wgYXRoX21lcmdlX3JhdGV0Ymwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IGF0aF9idWYgKmJmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTYzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTk4PXN0YXRpYyB2b2lkIGF0aF9zZXRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjA1OlxcdGlmICghYXRoX21lcmdlX3JhdGV0Ymwoc3RhLCBiZiwgdHhfaW5mbykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMDYtXFx0XFx0aWVlZTgwMjExX2dldF90eF9yYXRlcyh2aWYsIHN0YSwgYmYtXFx1MDAzZWJmX21wZHUsIGJmLVxcdTAwM2VyYXRlcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6MzMuMjEyODc4NDA1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTY4NTAwOTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBgYXRoX21lcmdlX3JhdGV0YmxgIGlzIGV4Y2x1c2l2ZWx5IGluIGB4bWl0LmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGJvdW5kIHRvIHRoZSBQQ0kvQUhCIGRyaXZlci4gVGhhdCdzIHRoZSBrZXkuIE5vdywgbGV0J3Mgc3RlcCB0aHJvdWdoIHRob3NlIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGNyaXRlcmlhIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuKiAgIERvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzPyBOb3BlLCB0aGlzIGlzIGluIHRoZSBoZWFydCBvZiB0aGUgY29kZS5cbiogICBEZWNvcmF0aXZlIGNoYW5nZXM/IE5vIHdheS4gVGhpcyBpcyBmdW5jdGlvbmFsLlxuKiAgIE51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0PyBEZWZpbml0ZWx5IG5vdCB0aGUgY2FzZSBoZXJlLlxuKiAgIFVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/ICoqQmluZ28uKiogVGhlIGBhdGg5a2AgZHJpdmVyLCB0aGUgb25lIHRoaXMgY2hhbmdlIGltcGFjdHMsIG5lZWRzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQgb3IsIGluIHNvbWUgY2FzZXMsIEFIQi4gV2UgYXJlIG5vdCB0YWxraW5nIGFib3V0IHNvbWV0aGluZyB0aGF0J3MgZW11bGF0ZWQgYXQgYSB1c2FibGUgbGV2ZWwgaW4gc3RhbmRhcmQgUUVNVS4gVGhpbmdzIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0IGRvbid0IGN1dCBpdC4gVGhleSBjYW4ndCBzaW11bGF0ZSB0aGUgdW5kZXJseWluZyBBdGhlcm9zIGhhcmR3YXJlLlxuKiAgIFZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVT8gVGhhdCdzIGFsc28gaXJyZWxldmFudC5cbiogICBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzPyBOb3BlLCBub3QgYXBwbGljYWJsZSBoZXJlLlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2xpbmNoZXIgaXMgdGhhdCB0aGUgYGF0aDlrYCBkcml2ZXIsIHRoZSB0YXJnZXQgb2YgdGhlIHBhdGNoLCBuZWVkcyAqcmVhbCogaGFyZHdhcmUsIHdoaWNoIG1lYW5zIGl0IG5lYXRseSBmaXRzIHRoZSBcImltcG9zc2libGUgdG8gcmVhY2hcIiBjYXRlZ29yeSBpbiBjb21tb24gdmlydHVhbGl6YXRpb24gc2V0dXBzLiBUaGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGNoYW5nZSBpcyBpbiBgeG1pdC5jYCB3aGljaCBJIGltbWVkaWF0ZWx5IHNlZSBpcyBhbiBpbmRpY2F0b3IgdGhhdCBpdCBpcyBsaWtlbHkgQUhCIG9yIFBDSS1zcGVjaWZpYywgYW5kIG5vdCBhIGNhbmRpZGF0ZSBmb3IgYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgcmVhc29uaW5nIHNlZW1zIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU3NywiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6NDMuMzgxMzgyMjQyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDlrIGRyaXZlciAoeG1pdC5jKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEF0aGVyb3MgODAyLjExbiBQQ0kvUENJZS9BSEIgd2lyZWxlc3MgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0ICh1bmxpa2UgYXRoOWtfaHRjKS4gVGh1cywgaXQgaXMgaW1wb3NzaWJsZSB0byBtZWFuaW5nZnVsbHkgZnV6eiB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDlrIGRyaXZlciAoeG1pdC5jKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEF0aGVyb3MgODAyLjExbiBQQ0kvUENJZS9BSEIgd2lyZWxlc3MgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0ICh1bmxpa2UgYXRoOWtfaHRjKS4gVGh1cywgaXQgaXMgaW1wb3NzaWJsZSB0byBtZWFuaW5nZnVsbHkgZnV6eiB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6NDMuMzgxNDE2NzMyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow95hfx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 17:57:20 +0000 UTC FinishedAt: 2026-08-13 18:57:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDlrIGRyaXZlciAoeG1pdC5jKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEF0aGVyb3MgODAyLjExbiBQQ0kvUENJZS9BSEIgd2lyZWxlc3MgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0ICh1bmxpa2UgYXRoOWtfaHRjKS4gVGh1cywgaXQgaXMgaW1wb3NzaWJsZSB0byBtZWFuaW5nZnVsbHkgZnV6eiB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUwY2JlZTczMWQ0ODIxMDJhYzY4MDJmZGFjNTkzZThkYzU5MjM1M2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxODo1NjoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xuaW5kZXggODlkOGIzMTc4Nzg0Ni4uMzQxM2JiNDkwNmQ0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbkBAIC0xNjgsNyAmIzQzOzE2OCw3IEBAIHN0YXRpYyBib29sIGF0aF9tZXJnZV9yYXRldGJsKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBhdGhfYnVmICpiZixcbiBcdGlmICghc3RhKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlKHN0YS1cdTAwM2VyYXRlcyk7XG4mIzQzO1x0cmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZV9iaChzdGEtXHUwMDNlcmF0ZXMpO1xuIFx0aWYgKCFyYXRldGJsKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGg5ayBkcml2ZXIgKHhtaXQuYyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUvQUhCIHdpcmVsZXNzIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCAodW5saWtlIGF0aDlrX2h0YykuIFRodXMsIGl0IGlzIGltcG9zc2libGUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MGNiZWU3MzFkNDgyMTAyYWM2ODAyZmRhYzU5M2U4ZGM1OTIzNTNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMTMgMTg6NTY6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYwppbmRleCA4OWQ4YjMxNzg3ODQ2Li4zNDEzYmI0OTA2ZDRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMKQEAgLTE2OCw3ICYjNDM7MTY4LDcgQEAgc3RhdGljIGJvb2wgYXRoX21lcmdlX3JhdGV0Ymwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IGF0aF9idWYgKmJmLAogCWlmICghc3RhKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlKHN0YS0mZ3Q7cmF0ZXMpOwomIzQzOwlyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlX2JoKHN0YS0mZ3Q7cmF0ZXMpOwogCWlmICghcmF0ZXRibCkKIAkJcmV0dXJuIGZhbHNlOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWFraW5nIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY2AuIEl0JiMzOTtzIGp1c3Qgc3dhcHBpbmcgb3V0IGByY3VfZGVyZWZlcmVuY2Uoc3RhLSZndDtyYXRlcylgIGZvciBgcmN1X2RlcmVmZXJlbmNlX2JoKHN0YS0mZ3Q7cmF0ZXMpYC4gTXkgZXhwZXJ0IGludHVpdGlvbiBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgbG9ja2RlcCBmaXggb3IgUkNVIGJ1ZyBmaXguIFByb2JhYmx5IGEgZ29vZCB0aGluZywgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBDYW4gSSBmdXp6IHRoaXM/IE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGBhdGg5a2AgaXMgZXZlbiBmdXp6YWJsZS4gSXQmIzM5O3MgYSB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIHJhaXNlcyBzb21lIHF1ZXN0aW9ucyByaWdodCBhd2F5LgoKVGhlIGJpZ2dlc3QgaHVyZGxlIHdpdGggd2lyZWxlc3MgZHJpdmVycyBpcyBvZnRlbiBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGV2ZW4gKnJlYWNoKiB0aGUgcmVsZXZhbnQgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBOb3JtYWxseSwgYGF0aDlrYCBuZWVkcyBhY3R1YWwgQXRoZXJvcyA4MDIuMTFuIGhhcmR3YXJlLCB3aGljaCBpcyBhIHByb2JsZW0uIEJ1dCB3YWl0Li4uIGlzbiYjMzk7dCBgYXRoOWtgIGEgUENJL1BDSWUgZHJpdmVyPyBPciBpcyB0aGVyZSBhIFVTQiB2YXJpYW50LCBgYXRoOWtfaHRjYD8KCkFoLCByaWdodCwgYG1hYzgwMjExX2h3c2ltYCBpcyBzb2Z0d2FyZS1lbXVsYXRlZCwgYnV0ICpgYXRoOWtgKiBpcyBzcGVjaWZpY2FsbHkgZm9yIGhhcmR3YXJlLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgQXRoZXJvcyBjYXJkcywgc28gdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBCdXQgaG9sZCBvbiEgSWYgaXQmIzM5O3MgYGF0aDlrX2h0Y2AsIHdoaWNoIGlzIGEgKlVTQiogZHJpdmVyLCB0aGVuIHRoYXQgb3BlbnMgdGhpbmdzIHVwLiBVU0IgZGV2aWNlcyAqY2FuKiBiZSBlbXVsYXRlZCEgV2UgY2FuIHVzZSBVU0IgZ2FkZ2V0IG9yIHZoY2kgKGxpa2Ugc3l6a2FsbGVyIHVzZXMgZm9yIFVTQiBmdXp6aW5nISkuCgpSaWdodCwgc28gdGhlIG5leHQgc3RlcCBpcyBjcnlzdGFsIGNsZWFyLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGB4bWl0LmNgIGlzIGFjdHVhbGx5IHVzZWQgYnkgYGF0aDlrX2h0Y2AgdG8gc2VlIGlmIHRoaXMgaXMgYW4gaW50ZXJlc3RpbmcgYXZlbnVlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3htaXRcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cdFx0cmVjdi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzpcdFx0eG1pdC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtOC1cdFx0bGluay5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipDaGVja2luZyBgYXRoOWtfaHRjYCYjMzk7cyBUcmFuc21pc3Npb24gUGF0aCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlIGBhdGg5a19odGNgIGRyaXZlciB1dGlsaXplcyB0aGUgYHhtaXQuY2AgZmlsZSBmb3IgaXRzIHRyYW5zbWlzc2lvbiBvcGVyYXRpb25zLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGRlYnVnZ2luZyBzdGVwLCBhbmQgSSYjMzk7ZCB0eXBpY2FsbHkgZG8gdGhpcyBieSBkaWdnaW5nIHRocm91Z2ggdGhlIHNvdXJjZSBjb2RlLCBidXQgbGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGNoZWNrIHdvdWxkIGJlIHRoZSBiZXN0LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBzdGFuZGFyZCBzdHJ1Y3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfaHRjLXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02Nj1hdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSAmIzQzOz0gY29tbW9uLXNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2ODphdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY5LVx0XHRoaWZfdXNiLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYXRoOWtfaHRjIE1vZHVsZSBDb21waWxhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgeG1pdC5vYCBpcyBiZWluZyBpbmNsdWRlZCBpbiB0aGUgYGF0aDlrX2h0Y2AgbW9kdWxlLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhpcyBpcyBhbiBhdGg5ay1yZWxhdGVkIGNvbXBvbmVudCwgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSByZWxldmFudCBNYWtlZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZWAuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uIGFuZCBhbnkgYXNzb2NpYXRlZCBvYmplY3QgZmlsZSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgZm9yIGhvdyB0aGUgYGF0aDlrX2h0Y2AgbW9kdWxlIGlzIGJ1aWx0IGFuZCB3aGV0aGVyIGB4bWl0Lm9gIGlzIGV4cGxpY2l0bHkgbGlzdGVkIG9yIHB1bGxlZCBpbiB0aHJvdWdoIHNvbWUgb3RoZXIgbWVjaGFuaXNtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIE1ha2VmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0YXRoOWsteSAmIzQzOz1cdGJlYWNvbi5vIFxcXG4gICAzOlx0XHRcdGdwaW8ubyBcXFxuICAgNDpcdFx0XHRpbml0Lm8gXFxcbiAgIDU6XHRcdFx0bWFpbi5vIFxcXG4gICA2Olx0XHRcdHJlY3YubyBcXFxuICAgNzpcdFx0XHR4bWl0Lm8gXFxcbiAgIDg6XHRcdFx0bGluay5vIFxcXG4gICA5Olx0XHRcdGFudGVubmEubyBcXFxuICAxMDpcdFx0XHRjaGFubmVsLm9cbiAgMTE6XHRcbiAgMTI6XHRhdGg5ay0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgJiM0Mzs9IG1jaS5vXG4gIDEzOlx0YXRoOWstJChDT05GSUdfQVRIOUtfUENJKSAmIzQzOz0gcGNpLm9cbiAgMTQ6XHRhdGg5ay0kKENPTkZJR19BVEg5S19BSEIpICYjNDM7PSBhaGIub1xuICAxNTpcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19ERUJVR0ZTKSAmIzQzOz0gZGZzX2RlYnVnLm9cbiAgMTY6XHRhdGg5ay0kKENPTkZJR19BVEg5S19ERlNfQ0VSVElGSUVEKSAmIzQzOz0gZGZzLm9cbiAgMTc6XHRhdGg5ay0kKENPTkZJR19BVEg5S19UWDk5KSAmIzQzOz0gdHg5OS5vXG4gIDE4Olx0YXRoOWstJChDT05GSUdfQVRIOUtfV09XKSAmIzQzOz0gd293Lm9cbiAgMTk6XHRhdGg5ay0kKENPTkZJR19BVEg5S19IV1JORykgJiM0Mzs9IHJuZy5vXG4gIDIwOlx0XG4gIDIxOlx0YXRoOWstJChDT05GSUdfQVRIOUtfREVCVUdGUykgJiM0Mzs9IGRlYnVnLm9cbiAgMjI6XHRcbiAgMjM6XHRhdGg5ay0kKENPTkZJR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MpICYjNDM7PSBkZWJ1Z19zdGEub1xuICAyNDpcdFxuICAyNTpcdG9iai0kKENPTkZJR19BVEg5SykgJiM0Mzs9IGF0aDlrLm9cbiAgMjY6XHRcbiAgMjc6XHRhdGg5a19ody15Oj1cdFxcXG4gIDI4Olx0XHRcdGFyOTAwMl9ody5vIFxcXG4gIDI5Olx0XHRcdGFyOTAwM19ody5vIFxcXG4gIDMwOlx0XHRcdGh3Lm8gXFxcbiAgMzE6XHRcdFx0YXI5MDAzX3BoeS5vIFxcXG4gIDMyOlx0XHRcdGFyOTAwMl9waHkubyBcXFxuICAzMzpcdFx0XHRhcjUwMDhfcGh5Lm8gXFxcbiAgMzQ6XHRcdFx0YXI5MDAyX2NhbGliLm8gXFxcbiAgMzU6XHRcdFx0YXI5MDAzX2NhbGliLm8gXFxcbiAgMzY6XHRcdFx0Y2FsaWIubyBcXFxuICAzNzpcdFx0XHRlZXByb20ubyBcXFxuICAzODpcdFx0XHRlZXByb21fZGVmLm8gXFxcbiAgMzk6XHRcdFx0ZWVwcm9tXzRrLm8gXFxcbiAgNDA6XHRcdFx0ZWVwcm9tXzkyODcubyBcXFxuICA0MTpcdFx0XHRhbmkubyBcXFxuICA0MjpcdFx0XHRtYWMubyBcXFxuICA0MzpcdFx0XHRhcjkwMDJfbWFjLm8gXFxcbiAgNDQ6XHRcdFx0YXI5MDAzX21hYy5vIFxcXG4gIDQ1Olx0XHRcdGFyOTAwM19lZXByb20ubyBcXFxuICA0NjpcdFx0XHRhcjkwMDNfcGFwcmQub1xuICA0NzpcdFxuICA0ODpcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1dPVykgJiM0Mzs9IGFyOTAwM193b3cub1xuICA0OTpcdFxuICA1MDpcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0JUQ09FWF9TVVBQT1JUKSAmIzQzOz0gYnRjb2V4Lm8gXFxcbiAgNTE6XHRcdFx0XHRcdFx0ICAgYXI5MDAzX21jaS5vIFxcXG4gIDUyOlx0XHRcdFx0XHRcdCAgIGFyOTAwM19haWMub1xuICA1MzpcdFxuICA1NDpcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSAmIzQzOz0gYXI5MDAzX3J0dC5vXG4gIDU1Olx0XG4gIDU2Olx0YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSAmIzQzOz0gZHluYWNrLm9cbiAgNTc6XHRcbiAgNTg6XHRvYmotJChDT05GSUdfQVRIOUtfSFcpICYjNDM7PSBhdGg5a19ody5vXG4gIDU5Olx0XG4gIDYwOlx0b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgJiM0Mzs9IGF0aDlrX2NvbW1vbi5vXG4gIDYxOlx0YXRoOWtfY29tbW9uLXk6PVx0Y29tbW9uLm8gXFxcbiAgNjI6XHRcdFx0XHRjb21tb24taW5pdC5vIFxcXG4gIDYzOlx0XHRcdFx0Y29tbW9uLWJlYWNvbi5vIFxcXG4gIDY0Olx0XG4gIDY1Olx0YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9ERUJVRykgJiM0Mzs9IGNvbW1vbi1kZWJ1Zy5vXG4gIDY2Olx0YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTCkgJiM0Mzs9IGNvbW1vbi1zcGVjdHJhbC5vXG4gIDY3Olx0XG4gIDY4Olx0YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbiAgNjk6XHRcdFx0aGlmX3VzYi5vIFxcXG4gIDcwOlx0XHRcdHdtaS5vIFxcXG4gIDcxOlx0XHRcdGh0Y19kcnZfdHhyeC5vIFxcXG4gIDcyOlx0XHRcdGh0Y19kcnZfbWFpbi5vIFxcXG4gIDczOlx0XHRcdGh0Y19kcnZfYmVhY29uLm8gXFxcbiAgNzQ6XHRcdFx0aHRjX2Rydl9pbml0Lm8gXFxcbiAgNzU6XHRcdFx0aHRjX2Rydl9ncGlvLm9cbiAgNzY6XHRcbiAgNzc6XHRhdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbiAgNzg6XHRcbiAgNzk6XHRvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbiAgODA6XHRcbiAgODE6XHRvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgJiM0Mzs9IGF0aDlrX3BjaV9vd2xfbG9hZGVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzEwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg5ayBNb2R1bGUgU3RydWN0dXJlKioKCk9rYXksIHNvIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBnb3QgaW4gbXkgaGVhZCBhYm91dCB0aGUgYGF0aDlrYCBmYW1pbHkgb2YgZHJpdmVycy4gSSYjMzk7bSBzZWVpbmcgdGhhdCBgeG1pdC5vYCBpcyBleGNsdXNpdmVseSBwYXJ0IG9mIHRoZSBgYXRoOWsteWAgYnVpbGQsIHdoaWNoIGl0c2VsZiBpcyBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBtb25vbGl0aGljIGBhdGg5ay5vYCBtb2R1bGUuICBUaGF0JiMzOTtzIG15IGZpcnN0IG9ic2VydmF0aW9uOiBgeG1pdC5vYCBpcyAqZW1iZWRkZWQqIHdpdGhpbiB0aGUgY29yZSBgYXRoOWsub2AgZHJpdmVyLiBBbmQgYGF0aDlrLm9gLCBvZiBjb3Vyc2UsIGlzIG9ubHkgYnVpbHQgaWYgdGhlIGBDT05GSUdfQVRIOUtgIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSBtb2R1bGFyaXR5IHBlcnNwZWN0aXZlLgoKTm93LCB3ZSBhbHNvIGhhdmUgYGF0aDlrX2h0Yy5vYCB3aGljaCwgbG9naWNhbGx5LCBpcyBidWlsdCB3aGVuIGBDT05GSUdfQVRIOUtfSFRDYCBpcyBzZXQuICBIb3dldmVyLCB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuICBgYXRoOWtfaHRjYCBkb2VzbiYjMzk7dCBzZWVtIHRvIGluY2x1ZGUgYHhtaXQub2AuIEl0IGhhcyBpdHMgb3duLCBkaXN0aW5jdCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiBoYW5kbGVyIGluIGBodGNfZHJ2X3R4cngub2AuIFNvLCB0byBiZSBjbGVhciwgYGF0aDlrX2h0Y2AgaXMgY29tcGxldGVseSBpc29sYXRlZCBmcm9tIHRoZSBgeG1pdC5vYCBjb2RlIGJhc2UuCgpUaGlzIGxlYWRzIG1lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgYHhtaXQuY2AgLSB0aGUgc291cmNlIGNvZGUgZm9yIGB4bWl0Lm9gIC0gaXMgKmV4Y2x1c2l2ZWx5KiB1dGlsaXplZCBieSB0aGUgUENJL0FIQiB2YXJpYW50IG9mIHRoZSBkcml2ZXIg4oCTIHRoZSBzdGFuZGFyZCBgYXRoOWtgIGRyaXZlciwgYW5kIHRoYXQgaXQgaXMgbm90IHVzZWQgaW4gdGhlIEhUQyBiYXNlZCBhdGg5a19odGMgZHJpdmVyLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGRlZmluaXRpdmVseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBteSBsb2dpYyBpcyBzb3VuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eG1pdFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgJiM0Mzs9XHRiZWFjb24ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02LVx0XHRyZWN2Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3Olx0XHR4bWl0Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04LVx0XHRsaW5rLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM0MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGBhdGg5a2AqKgoKT2theSwgc28gSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgYGF0aDlrYCBhbmQgaXRzIGhhcmR3YXJlIGludGVyZmFjZSBzdXBwb3J0LiBEb2VzIHRoaXMgZHJpdmVyICpvbmx5KiBjb3ZlciBQQ0kgYW5kIEFIQiwgb3IgZG9lcyBpdCBoYW5kbGUgbW9yZT8gVGltZSB0byBjaGVjayB0aGUgc291cmNlLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBUaGlzIHNob3VsZCBjbGFyaWZ5IHdoYXQgdHlwZXMgb2YgYnVzc2VzIGFuZCBpbnRlcmZhY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aC4gSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBwcmV0dHkgZ29vZCBhbnN3ZXIgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIEFUSDlLX0hXXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdGNvbmZpZyBBVEg5S19DT01NT05cbiAgIDU6XHRcdHRyaXN0YXRlXG4gICA2Olx0XHRzZWxlY3QgQVRIX0NPTU1PTlxuICAgNzpcdGNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcbiAgIDg6XHRcdGJvb2xcbiAgIDk6XHRjb25maWcgQVRIOUtfREZTX0RFQlVHRlNcbiAgMTA6XHRcdGRlZl9ib29sIHlcbiAgMTE6XHRcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxuICAxNDpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG4gIDE1Olx0XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG4gIDE2Olx0XHRkZWZhdWx0IHlcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU2F5IFksIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgYXRoOWsvYXRoOWtfaHRjIHJhZGlvcyB0b2dldGhlciB3aXRoXG4gIDE5Olx0XHQgIEJsdWV0b290aCBtb2R1bGVzIGluIHRoZSBzYW1lIHN5c3RlbS5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgQVRIOUtcbiAgMjI6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDI0Olx0XHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuICAyNTpcdFx0c2VsZWN0IEFUSDlLX0hXXG4gIDI2Olx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgMjk6XHRcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMW4gQVI1MDA4LCBBUjkwMDEgYW5kIEFSOTAwMiBmYW1pbHlcbiAgMzA6XHRcdCAgb2YgY2hpcHNldHMuIEZvciBhIHNwZWNpZmljIGxpc3Qgb2Ygc3VwcG9ydGVkIGV4dGVybmFsXG4gIDMxOlx0XHQgIGNhcmRzLCBsYXB0b3BzIHRoYXQgYWxyZWFkeSBzaGlwIHdpdGggdGhlc2UgY2FyZHMgYW5kXG4gIDMyOlx0XHQgIEFQcyB0aGF0IGNvbWUgd2l0aCB0aGVzZSBjYXJkcyByZWZlciB0byBhdGg5ayB3aWtpXG4gIDMzOlx0XHQgIHByb2R1Y3RzIHBhZ2U6XG4gIDM0Olx0XG4gIDM1Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoOWsvcHJvZHVjdHNcbiAgMzY6XHRcbiAgMzc6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGg5ay5cbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgQVRIOUtfUENJXG4gIDQwOlx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgUENJL1BDSWUgYnVzIHN1cHBvcnRcJiMzNDtcbiAgNDE6XHRcdGRlZmF1bHQgeVxuICA0MjpcdFx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgUENJXG4gIDQzOlx0XHRoZWxwXG4gIDQ0Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgc3VwcG9ydCBpbiBhdGg5ay5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgU2F5IFksIGlmIHlvdSBoYXZlIGEgY29tcGF0aWJsZSBQQ0kvUENJZSB3aXJlbGVzcyBjYXJkLlxuICA0NzpcdFxuICA0ODpcdGNvbmZpZyBBVEg5S19BSEJcbiAgNDk6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBBSEIgYnVzIHN1cHBvcnRcJiMzNDtcbiAgNTA6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IE9GXG4gIDUxOlx0XHRkZWZhdWx0IG5cbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgQUhCIGJ1cyBzdXBwb3J0IGluIGF0aDlrLlxuICA1NDpcdFxuICA1NTpcdFx0ICBTYXkgWSwgaWYgeW91IGhhdmUgYSBTb0Mgd2l0aCBhIGNvbXBhdGlibGUgYnVpbHQtaW5cbiAgNTY6XHRcdCAgd2lyZWxlc3MgTUFDLiBTYXkgTiBpZiB1bnN1cmUuXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIEFUSDlLX0RFQlVHRlNcbiAgNTk6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcJiMzNDtcbiAgNjA6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IERFQlVHX0ZTIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG4gIDYxOlx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4gIDYyOlx0XHRoZWxwXG4gIDYzOlx0XHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWsmIzM5O3Mgc3RhdGlzdGljcyBmb3JcbiAgNjQ6XHRcdCAgaW50ZXJydXB0cywgcmF0ZSBjb250cm9sLCBldGMuXG4gIDY1Olx0XG4gIDY2Olx0XHQgIEFsc28gcmVxdWlyZWQgZm9yIGNoYW5naW5nIGRlYnVnIG1lc3NhZ2UgZmxhZ3MgYXQgcnVuIHRpbWUgYW5kIGZvclxuICA2NzpcdFx0ICBUWDk5LlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBBVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1NcbiAgNzA6XHRcdGJvb2wgXCYjMzQ7RGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4gIDcxOlx0XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBBVEg5S19ERUJVR0ZTIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuICA3MjpcdFx0ZGVmYXVsdCBuXG4gIDczOlx0XHRoZWxwXG4gIDc0Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgZGV0YWlsZWQgc3RhdGlzdGljcyBmb3IgYXNzb2NpYXRpb24gc3RhdGlvbnMuXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIEFUSDlLX1RYOTlcbiAgNzc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBUWDk5IHRlc3Rpbmcgc3VwcG9ydFwmIzM0O1xuICA3ODpcdFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgNzk6XHRcdGRlZmF1bHQgblxuICA4MDpcdFx0aGVscFxuICA4MTpcdFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIG9uIHN5c3RlbXMgdW5kZXJnb2luZ1xuICA4MjpcdFx0ICBjZXJ0aWZpY2F0aW9uIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24gaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LlxuICA4MzpcdFx0ICBFbmFibGluZyB0aGlzIHdpbGwgb25seSBlbmFibGUgVFg5OSBzdXBwb3J0LCBhbGwgb3RoZXIgbW9kZXMgb2ZcbiAgODQ6XHRcdCAgb3BlcmF0aW9uIHdpbGwgYmUgZGlzYWJsZWQuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRYOTkgc3VwcG9ydCBlbmFibGVzIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAoU0FSKSB0ZXN0aW5nLlxuICA4NzpcdFx0ICBTQVIgaXMgdGhlIHVuaXQgb2YgbWVhc3VyZW1lbnQgZm9yIHRoZSBhbW91bnQgb2YgcmFkaW8gZnJlcXVlbmN5KFJGKVxuICA4ODpcdFx0ICBhYnNvcmJlZCBieSB0aGUgYm9keSB3aGVuIHVzaW5nIGEgd2lyZWxlc3MgZGV2aWNlLiBUaGUgUkYgZXhwb3N1cmVcbiAgODk6XHRcdCAgbGltaXRzIHVzZWQgYXJlIGV4cHJlc3NlZCBpbiB0aGUgdGVybXMgb2YgU0FSLCB3aGljaCBpcyBhIG1lYXN1cmVcbiAgOTA6XHRcdCAgb2YgdGhlIGVsZWN0cmljIGFuZCBtYWduZXRpYyBmaWVsZCBzdHJlbmd0aCBhbmQgcG93ZXIgZGVuc2l0eSBmb3JcbiAgOTE6XHRcdCAgdHJhbnNtaXR0ZXJzIG9wZXJhdGluZyBhdCBmcmVxdWVuY2llcyBmcm9tIDMwMCBrSHogdG8gMTAwIEdIei5cbiAgOTI6XHRcdCAgUmVndWxhdG9yeSBib2RpZXMgYXJvdW5kIHRoZSB3b3JsZCByZXF1aXJlIHRoYXQgd2lyZWxlc3MgZGV2aWNlXG4gIDkzOlx0XHQgIGJlIGV2YWx1YXRlZCB0byBtZWV0IHRoZSBSRiBleHBvc3VyZSBsaW1pdHMgc2V0IGZvcnRoIGluIHRoZVxuICA5NDpcdFx0ICBnb3Zlcm5tZW50YWwgU0FSIHJlZ3VsYXRpb25zLlxuICA5NTpcdFxuICA5NjpcdGNvbmZpZyBBVEg5S19ERlNfQ0VSVElGSUVEXG4gIDk3Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbiAgOTg6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuICA5OTpcdFx0ZGVmYXVsdCBuXG4gMTAwOlx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5ODYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA3NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGF0aDlrYCBEcml2ZXI6IEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgYXRoOWtgLCBhIFdpLUZpIGRyaXZlciwgYW5kIGltbWVkaWF0ZWx5IG15IG1pbmQgZ29lcyB0byBmdXp6aW5nLiBJdCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBIQVNfRE1BYCwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmNpZXMuIEl0IGFsc28gaGFzIGBBVEg5S19QQ0lgIGFuZCBgQVRIOUtfQUhCYCB2YXJpYW50cywgc28gdGhhdCBpbW1lZGlhdGVseSBpbmZvcm1zIHNvbWUgcG90ZW50aWFsIGZ1enppbmcgYXBwcm9hY2hlcy4gQ2FuIEkgZnV6eiBpdCBpbiBRRU1VPyBJIGtub3cgYG1hYzgwMjExX2h3c2ltYCBleGlzdHMsIHdoaWNoIGlzIGEgdmlydHVhbCBXaS1GaSBkcml2ZXIsIGJ1dCBgYXRoOWtgIGlzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlci4KCkNhbiBzeXprYWxsZXIgZnV6eiBgYXRoOWtgPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIFN5emthbGxlciB0eXBpY2FsbHkgdXNlcyBgc3l6X3BjaV9zZXR1cGAgZm9yIFBDSSBkZXZpY2VzLCBidXQgUUVNVSBkb2VzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlIEF0aGVyb3MgODAyLjExbiBjYXJkcy4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCByaWdodD8gWWVzISBJdCBjYW4gcHJvYmUgUENJIGNvbmZpZyBzcGFjZSBhbmQgcGVyZm9ybSBNTUlPIHJlYWRzL3dyaXRlcyBpZiB0aGUgZHJpdmVyIGlzIGxvYWRlZC4gQW5kIGBhdGg5a2AgaXMgaW5kZWVkIGEgUENJIGRyaXZlci4gVGhpcyBvcGVucyB1cCBhIGZ1enppbmcgYXZlbnVlLiBTbywgaXQgc2hvdWxkIGJlIHJlYWNoYWJsZSBpZiBzeXprYWxsZXIgaGFzIFBDSSBmdXp6aW5nIGVuYWJsZWQuIExldCBtZSBxdWlja2x5IGNvbmZpcm0uIFllcywgYHN5el9wY2lfc2V0dXBgLCBgc3l6X3BjaV9tbWlvX3dyaXRlYCBhcmUgYWxsIHByZXNlbnQuCgpCdXQgbm93LCBJJiMzOTttIGdldHRpbmcgYSBsaXR0bGUgc25hZy4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgaXNzdWVzIHdpdGggJiMzNDt2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBJcyBgYXRoOWtgIGluIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCYjMzk7cyBhIHN0YW5kYXJkIFdpLUZpIGRyaXZlciwgc28gSSBkb24mIzM5O3QgdGhpbmsgdGhhdCYjMzk7cyB0aGUgYmxvY2tlci4KCldhaXQgYSBzZWNvbmTigKYgdGhlIGZhY3QgdGhhdCB0aGVyZSYjMzk7cyBhIHBhdGNoIGFwcGxpZWQgYnkgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgIG1lYW5zIHN5emthbGxlciAqZm91bmQqIGEgYnVnIGhlcmUhIElmIGl0IGZvdW5kIGEgYnVnLCBpdCAqbXVzdCogYmUgZnV6emFibGUuIFRoZSBwcm9vZiBpcyBpbiB0aGUgcHVkZGluZy4gSSBuZWVkIHRvIGNoZWNrIHRoZSBidWcgcmVwb3J0IG9yIGhvdyBpdCB3YXMgZm91bmQsIGJ1dCB0aGUgcGF0Y2ggaXRzZWxmIGlzIHRoZSBnaXZlYXdheS4KCkkgaGF2ZSB0byBjb25zaWRlciB0aGUgcGF0aCBoZXJlLiBTeXprYWxsZXIgY2Fubm90IGJlIGZ1enppbmcgYGF0aDlrYCB2aWEgYG1hYzgwMjExX2h3c2ltYCBiZWNhdXNlIHRoYXQmIzM5O3MgYSAqdmlydHVhbCogZHJpdmVyLCBhbmQgYGF0aDlrYCBpcyBhICpoYXJkd2FyZSogZHJpdmVyLiBUaGVyZWZvcmUsIGhvdyBjb3VsZCBzeXprYWxsZXIgdHJpZ2dlciBgYXRoOWtgPyBQb3NzaWJseSB0aHJvdWdoIGBtYWM4MDIxMWAgaW5qZWN0aW9uPyBObywgdGhhdCB3b3VsZG4mIzM5O3Qgd29yayBiZWNhdXNlIGBhdGg5a2Agd29uJiMzOTt0IGJlIGxvYWRlZCB1bmxlc3MgdGhlIGhhcmR3YXJlIGlzIHByZXNlbnQgb3IgUENJIGlzIGZ1enplZC4KCkFoYSEgU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIhIEl0IGNhbiBzaW11bGF0ZSBhIFBDSSBkZXZpY2UgYW5kLCBiaW5nbywgSSYjMzk7bSBiYWNrIG9uIHRyYWNrLiBgYXRoOWtgIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgYmVjYXVzZSBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIFRoZSBlYXJsaWVyIGNhdmVhdCBhYm91dCBoYXJkd2FyZSBlbXVsYXRpb24gc2hvdWxkIGJlIG1vb3QuIGBhdGg5a2AgaXNuJiMzOTt0IGEgc3BlY2lhbCBjYXNlOyBpdCBpcyBhIHJlZ3VsYXIgV2ktRmkgZHJpdmVyLgoKU28sIGl0JiMzOTtzIGJhY2sgdG8gY2hlY2tpbmcgdGhlIHBhdGNoLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2UgaXRzZWxmOgpgYGBjCi0JcmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZShzdGEtJmd0O3JhdGVzKTsKJiM0MzsJcmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZV9iaChzdGEtJmd0O3JhdGVzKTsKYGBgClRoaXMgaXMgd2l0aGluIGBhdGhfbWVyZ2VfcmF0ZXRibGAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNgLiBUaGlzIGlzIGNsZWFybHkgYSBjb25jdXJyZW5jeSBpc3N1ZSwgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uLiBUaGUga2V5IGlzIGluIHRoZSBgcmN1X2RlcmVmZXJlbmNlYCB0byBgcmN1X2RlcmVmZXJlbmNlX2JoYCwgd2hpY2ggaXMgbGlrZWx5IGEgZml4IHJlbGF0ZWQgdG8gYWNjZXNzaW5nIHJhdGUgdGFibGUuCgpUaGVyZWZvcmUsIHN5emthbGxlciBpcyBzdWNjZXNzZnVsbHkgZnV6emluZyBhIHN0YW5kYXJkIFdpLUZpIGRyaXZlciB2aWEgaXRzIFBDSSBmdXp6ZXIsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2Ugbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfbWVyZ2VfcmF0ZXRibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xNTM9c3RhdGljIHZvaWQgYXRoX3NlbmRfYmFyKHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCB1MTYgc2Vxbm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE2MjpzdGF0aWMgYm9vbCBhdGhfbWVyZ2VfcmF0ZXRibChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE2My1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xOTg9c3RhdGljIHZvaWQgYXRoX3NldF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMDU6XHRpZiAoIWF0aF9tZXJnZV9yYXRldGJsKHN0YSwgYmYsIHR4X2luZm8pKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMDYtXHRcdGllZWU4MDIxMV9nZXRfdHhfcmF0ZXModmlmLCBzdGEsIGJmLVx1MDAzZWJmX21wZHUsIGJmLVx1MDAzZXJhdGVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTg3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IFVuZGVyc3RhbmRpbmcgb2YgUmF0ZSBUYWJsZSBNZXJnaW5nKioKCkFscmlnaHQsIHNvIHRoZSByZWxhdGlvbnNoaXAgaGVyZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJIHNlZSB0aGF0IGBhdGhfbWVyZ2VfcmF0ZXRibGAgaXMgZGlyZWN0bHkgdGllZCB0byBgYXRoX3NldF9yYXRlc2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgYSBmZXcgdGhpbmdzLiBGaXJzdCwgYGF0aF9zZXRfcmF0ZXNgIGlzIHByb2JhYmx5IHRoZSAqY2FsbGVyKiDigJMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBnZXR0aW5nIHRoaXMgcmF0ZSB0YWJsZSBidXNpbmVzcyBnb2luZy4gSXQgbGlrZWx5IG5lZWRzIHRvIHNldCBvciBtb2RpZnkgdGhlIHRyYW5zbWl0IHJhdGUgdGFibGVzLCBhbmQgdGhlcmVmb3JlLCBpdCByZWxpZXMgb24gYGF0aF9tZXJnZV9yYXRldGJsYCBhcyBhIGhlbHBlciBmdW5jdGlvbi4gU2Vjb25kLCB0aGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgdGhhdCBgYXRoX21lcmdlX3JhdGV0YmxgIGlzIHJlc3BvbnNpYmxlIGZvciAqbWVyZ2luZyogcmF0ZSB0YWJsZXMuIFRoaXMgaGludHMgdGhhdCB0aGUgc3lzdGVtIG1heSBkZWFsIHdpdGggbXVsdGlwbGUgcmF0ZSB0YWJsZXMsIHBlcmhhcHMgZm9yIGRpZmZlcmVudCBzY2VuYXJpb3Mgb3IgZGV2aWNlIGNhcGFiaWxpdGllcywgYW5kIHRoYXQgYGF0aF9zZXRfcmF0ZXNgIG5lZWRzIHRvIGNvbWJpbmUgdGhlbSBpbiBzb21lIHdheS4gSSYjMzk7ZCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gc2VlIGlmIHRoaXMgaXMgZm9yIG5ldyByYXRlIHRhYmxlcyBvciB0byB1cGRhdGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgcmF0ZSBzZWxlY3Rpb24gYWxnb3JpdGhtcyBhbmQgaG93IHRoZSBkcml2ZXIgYWRhcHRzIHRvIGNoYW5naW5nIGNoYW5uZWwgY29uZGl0aW9ucyBhbmQgY2xpZW50IGNhcGFiaWxpdGllcy4gVWx0aW1hdGVseSwgSSYjMzk7ZCBuZWVkIHRvIHZlcmlmeSB0aGUgY2FsbGluZyBjb250ZXh0LCBidXQgaXQmIzM5O3MgY2xlYXIgYGF0aF9tZXJnZV9yYXRldGJsYCBpcyBhIHN1cHBvcnRpbmcgZnVuY3Rpb24gdW5kZXIgdGhlIGBhdGhfc2V0X3JhdGVzYCBjb21tYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfc2V0X3JhdGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE2Mj1zdGF0aWMgYm9vbCBhdGhfbWVyZ2VfcmF0ZXRibChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE5ODpzdGF0aWMgdm9pZCBhdGhfc2V0X3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE5OS1cdFx0XHQgIHN0cnVjdCBhdGhfYnVmICpiZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE0OTY9YXRoX3R4X2Zvcm1fYnVyc3Qoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdHhxICp0eHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoxNTI1Olx0XHRhdGhfc2V0X3JhdGVzKHRpZC1cdTAwM2Vhbi1cdTAwM2V2aWYsIHRpZC1cdTAwM2Vhbi1cdTAwM2VzdGEsIGJmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTUyNi1cdH0gd2hpbGUgKDEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTUyOT1zdGF0aWMgaW50IGF0aF90eF9zY2hlZF9hZ2dyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTU1MjpcdGF0aF9zZXRfcmF0ZXModGlkLVx1MDAzZWFuLVx1MDAzZXZpZiwgdGlkLVx1MDAzZWFuLVx1MDAzZXN0YSwgYmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNTUzLVx0aWYgKGFnZ3IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xNjkwPXZvaWQgYXRoOWtfcmVsZWFzZV9idWZmZXJlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNzIxLVx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2YmYtXHUwMDNlbGlzdCwgXHUwMDI2YmZfcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE3MjI6XHRcdFx0YXRoX3NldF9yYXRlcyh0aWQtXHUwMDNlYW4tXHUwMDNldmlmLCB0aWQtXHUwMDNlYW4tXHUwMDNlc3RhLCBiZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE3MjMtXHRcdFx0aWYgKGJmX2lzYW1wZHUoYmYpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjMyMz1pbnQgYXRoX3R4X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjM4MDpcdGF0aF9zZXRfcmF0ZXModmlmLCBzdGEsIGJmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM4MS1cdGF0aF90eF9zZW5kX25vcm1hbChzYywgdHhxLCB0aWQsIHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzg5PXZvaWQgYXRoX3R4X2NhYnEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yNDE3LVx0XHRiZi1cdTAwM2ViZl9sYXN0YmYgPSBiZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcdFx0YXRoX3NldF9yYXRlcyh2aWYsIE5VTEwsIGJmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjQxOS1cdFx0YXRoX2J1Zl9zZXRfcmF0ZShzYywgYmYsIFx1MDAyNmluZm8sIGZpLVx1MDAzZWZyYW1lbGVuLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yOTE0PWludCBhdGg5a190eDk5X3NlbmQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyOTQ3Olx0YXRoX3NldF9yYXRlcyhzYy1cdTAwM2V0eDk5X3ZpZiwgTlVMTCwgYmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ2MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IGBhdGhfdHhfc3RhcnRgIGluIGBhdGg5a2AqKgoKT2theSwgc28gdGhlIGVudHJ5IHBvaW50IGZvciBwYWNrZXQgdHJhbnNtaXNzaW9uIGluIHRoaXMgQXRoZXJvcyBkcml2ZXIgaXMgYGF0aF90eF9zdGFydGAuICBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGZ1enogdGhpcyB3aXRoIHRoZSB1c3VhbCBzdXNwZWN0cz8mIzM0OyBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBmbGFncyBjb2RlIHRoYXQmIzM5O3MgdGllZCB0byBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gIGBhdGg5a2AsIHRoZSBBdGhlcm9zIDgwMi4xMW4gZHJpdmVyLCBpcyBhIFBDSWUgZGV2aWNlLiBJcyB0aGlzIGRyaXZlciB2ZW5kb3Igc3BlY2lmaWM/IE5vLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQgZm9yIFdpLUZpLgoKVGhlIGNvcmUgcXVlc3Rpb24gaXMgZW11bGFiaWxpdHkgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgZnVsbCBoYXJkd2FyZSByZXF1aXJlbWVudHMgb2YgYGF0aDlrYC4gIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLi4uIGFuZCBJIGluaXRpYWxseSB0aG91Z2h0ICYjMzQ7QmluZ28hJiMzNDsgYmVjYXVzZSBpdCBjYW4gc2ltdWxhdGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gSG93ZXZlciwgdGhlIHByb21wdCBoYXMgYSBuZWdhdGl2ZSBmaWx0ZXIhIEl0ICpleHBsaWNpdGx5KiBleGNsdWRlcyAmIzM0O3ZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiYjMzQ7IFdoaWxlIGBhdGg5a2AgaXMgbm90ICpleGFjdGx5KiBhICYjMzQ7c3dpdGNoLCYjMzQ7ICYjMzQ7U21hcnROSUMsJiMzNDsgb3IgJiMzNDtHUFUsJiMzNDsgaXQgRE9FUyByZXF1aXJlIGEgcGh5c2ljYWwgY2FyZC4gU28sIHRoaXMgbWlnaHQgYmUgYSBub24tc3RhcnRlci4KClN5emthbGxlciBkb2VzIGhhdmUgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2ktRmkgZnV6emluZywgYnV0IGBhdGg5a2AgKmlzbiYjMzk7dCogYG1hYzgwMjExX2h3c2ltYC4gQWxzbyB0aGVyZSBpcyBgYXRoOWtfaHRjYCwgd2hpY2ggaXMgYSBVU0IgZGV2aWNlIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBmdXp6ZXIuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggaXMgaW4gYHhtaXQuY2Agd2hpY2ggZG9lcyBub3QgZ2V0IGNvbXBpbGVkIGZvciBgYXRoOWtfaHRjYC4gSG1tLgoKVGhlIGtleSBpcyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LiBUaGUgc3l6a2FsbGVyIFBDSSBmdXp6ZXIgKmNvdWxkKiB0ZWNobmljYWxseSBwcm9iZSBhbmQgdHJ5IHRvIHJlYWNoIGBhdGhfdHhfc3RhcnRgLiBCdXQsIFBDSSBmdXp6aW5nIGlzIGdlbmVyYWxseSBzaGFsbG93IGFuZCBpdCYjMzk7cyBoaWdobHkgdW5saWtlbHkgdGhhdCB0aGUgc3l6a2FsbGVyIFBDSSBmdXp6ZXIgd2lsbCBiZSBhYmxlIHRvIGZ1bGx5IGluaXRpYWxpemUgdGhlIGNvbXBsaWNhdGVkIE1BQy9QSFkgc3RhdGUgbWFjaGluZSByZXF1aXJlZCB0byBnZXQgdGhpcyBkZXZpY2UgcmVnaXN0ZXJlZCBpbiBgbWFjODAyMTFgIGFuZCBhY3R1YWxseSBleGVjdXRlIHRoZSB0cmFuc21pc3Npb24gcGF0aC4KClNvLCBob3cgd2FzIHRoaXMgYnVnIGZvdW5kPyBUaGUgY29tbWl0IG1lc3NhZ2UgcmVmZXJlbmNlcyAmIzM0O3N5ei1jbHVzdGVyLCYjMzQ7IHdoaWNoIHN1Z2dlc3RzIGl0IHdhcyBmb3VuZCBieSBzeXprYWxsZXIuIEhvd2V2ZXIsIHN5emthbGxlciBkb2VzIHJ1biBvbiByZWFsIGhhcmR3YXJlLiAgVGhlIHByb21wdCB0aGVuIGV4cGxpY2l0bHkgZXhjbHVkZXMgcGF0aHMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7ICBTaW5jZSBgYXRoOWtgIHJlcXVpcmVzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQsIGFuZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgV2ktRmkgY2FyZHMuLi4gdGhlIG1hdGggaXMgc3RhcnRpbmcgdG8gYmVjb21lIGNsZWFyLgoKUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBgYXRoOWtgLiBJdCBoYXMgTklDIGVtdWxhdGlvbnMgbGlrZSBgbmUya19wY2lgLCBgZTEwMDBgLCBgcnRsODEzOWAsIGV0Yy4sIGJ1dCBub3RoaW5nIGZvciBXaS1GaS4gSXQgYXBwZWFycyB0aGF0IFdpLUZpIGZ1enppbmcgaW4gU3l6a2FsbGVyIGlzIGV4Y2x1c2l2ZWx5IHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYC4KClRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aCB0aGF0IHJlYWNoZXMgYGF0aF90eF9zdGFydGAgdGhyb3VnaCBgYXRoOWtgIGlzIGltcG9zc2libGUgdG8gdHJpZ2dlciB0aHJvdWdoIGVtdWxhdGlvbi4gSXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBjYXJkLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIEkgc2hvdWxkIGJlIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSnVzdCB0byBiZSBzYWZlLCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZSBjaGVjayB0aGF0IGB4bWl0LmNgIGlzbiYjMzk7dCBpbmNsdWRlZCBpbiBgYXRoOWtfaHRjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfaHRjLXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02Nj1hdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSAmIzQzOz0gY29tbW9uLXNwZWN0cmFsLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2ODphdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY5LVx0XHRoaWZfdXNiLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTg6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1NzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaWdnaW5nIGludG8gdGhlIEF0aGVyb3MgRHJpdmVyIE1ha2VmaWxlKioKCk9rYXksIHRpbWUgdG8gY2lyY2xlIGJhY2sgYW5kIGdpdmUgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGVgIGFub3RoZXIgbG9vay4gSSBzdXNwZWN0IHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgZmxhZyBvciB0YXJnZXQgSSBvdmVybG9va2VkLCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSByZWNlbnQga2VybmVsIHVwZGF0ZSBvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgdmFyaWFudC4gSSYjMzk7bSB0aGlua2luZyBJIG1pZ2h0IGhhdmUgbWlzc2VkIHNvbWV0aGluZyBzdWJ0bGUgaW4gdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIG9yIG1heWJlIGEgZGVwZW5kZW5jeSB0aGF0IHdhcyBpbnRyb2R1Y2VkIG9yIGNoYW5nZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbuKAmXQgbWFkZSBhbiBpbmNvcnJlY3QgYXNzdW1wdGlvbiBvbiBob3cgbW9kdWxlcyBhcmUgYnVpbHQgYW5kIGxpbmtlZCB3aXRoaW4gdGhlIGF0aDlrIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgc3RlcCB0aHJvdWdoIHRoZSBsb2dpYyBhZ2FpbiwgZG91YmxlLWNoZWNraW5nIHRoZSB2YXJpYWJsZXMsIGluY2x1ZGUgcGF0aHMsIGFuZCBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGNyb3NzLWNvbXBpbGF0aW9uIGNvbmZpZ3VyYXRpb25zLCBwYXJ0aWN1bGFybHkgaWYgdGhlcmUgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkaWZmZXJlbmNlcyBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBNYWtlZmlsZSBpcyBvcmNoZXN0cmF0ZWQgaW4gY29tcGFyaXNvbiB0byBvdGhlcnMgd2l0aGluIHRoZSBhdGg5ayBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3htaXRcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cdFx0cmVjdi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzpcdFx0eG1pdC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtOC1cdFx0bGluay5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTQ2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGB4bWl0Lm9gIOKAkyB0aGF0JiMzOTtzIG9ubHkgaW4gYGF0aDlrLXlgLCBhbmQgYGF0aDlrLXlgIGlzIGNvbXBpbGVkIGludG8gYGF0aDlrLm9gLiBgYXRoOWsub2AgaXMgdGhlIFBDSS9BSEIgZHJpdmVyLCByaWdodD8gSG1tLCBpcyB0aGVyZSBhbnkgb3RoZXIgd2F5IGBhdGg5ay5vYCBnZXRzIHVzZWQ/IE5vLCB0aGF0IGxvb2tzIHJpZ2h0OyBgb2JqLSQoQ09ORklHX0FUSDlLKSAmIzQzOz0gYXRoOWsub2AgY29uZmlybXMgYENPTkZJR19BVEg5S2AgaXMgdGhlIHByaW1hcnkgY29uZmlnIGZvciB0aGUgUENJL0FIQiBkcml2ZXIuCgpUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjb3VsZCB0aGlzIGRyaXZlciBzb21laG93IGJlIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQnV0LCBpdCYjMzk7cyBhICpoYXJkd2FyZSogZHJpdmVyLCBzbyBuby4gVGhhdCBmaXJtbHkgcHV0cyBpdCBpbnRvIHRoZSBjYXRlZ29yeSBvZiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsJiMzNDsgZXZlbiBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLgoKSG9sZCBvbiwgd2hhdCBhYm91dCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplcj8gVGhhdCB0aGluZyYjMzk7cyBwcmV0dHkgY2xldmVyLiBJdCB3b3JrcyBieSBpbnRlcmNlcHRpbmcgUENJIGNvbmZpZyBzcGFjZSByZWFkcy93cml0ZXMgYW5kIE1NSU8gcmVhZHMvd3JpdGVzLCBtZWFuaW5nIGl0ICpjb3VsZCogdGhlb3JldGljYWxseSB0cmlnZ2VyIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIG9mIGFueSBQQ0kgZHJpdmVyLiBDb3VsZCBpdCByZWFjaCBgYXRoX3R4X3N0YXJ0YD8gUmVtZW1iZXIsIGBhdGhfdHhfc3RhcnRgIGlzIGNhbGxlZCBieSBgbWFjODAyMTFgIHdoZW4gYSBwYWNrZXQgaXMgdHJhbnNtaXR0ZWQuIEZvciBgbWFjODAyMTFgIHRvIGV2ZW4gKmNhbGwqIGBhdGhfdHhfc3RhcnRgLCB0aGUgYGF0aDlrYCBkcml2ZXIgbmVlZHMgdG8gcmVnaXN0ZXIgYSBgd2lwaHlgIGFuZCBhIGBuZXRfZGV2aWNlYCBzdWNjZXNzZnVsbHksIGFuZCB0aGVuIHRoZSBpbnRlcmZhY2UgbmVlZHMgdG8gYmUgYnJvdWdodCB1cC4gVGhhdCBtZWFucyBgcHJvYmVgIGhhcyB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuIFRoYXQmIzM5O3MgYSBodWdlIGh1cmRsZSDigJMgaXQgaW52b2x2ZXMgcmVhZGluZyB0aGUgTUFDIGFkZHJlc3MgZnJvbSB0aGUgRUVQUk9NLCBpbml0aWFsaXppbmcgdGhlIFBIWSwgcmFkaW8gY2FsaWJyYXRpb24sIGFuZCBzbyBvbi4gSXQmIzM5O3MgaW5jcmVkaWJseSB1bmxpa2VseSB0aGF0IGEgZHVtYiBQQ0kgZnV6emVyIGNvdWxkIGZlZWQgaXQgdGhlIGV4YWN0IE1NSU8gc2VxdWVuY2UgbmVlZGVkIHRvIHNhdGlzZnkgYWxsIHRob3NlIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGNoZWNrcyBhbmQgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyIHRoZSBkZXZpY2UuCgpFdmVuIGlmIGJ5IHNvbWUgbWlyYWNsZSBpdCAqY291bGQqLCB0aGUgcHJvbXB0IHNheXMgdGhpczogJiMzNDtDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIC4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBXaGlsZSBgYXRoOWtgIGlzbiYjMzk7dCBhIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSwgaXQgaXMgYSBkcml2ZXIgdGhhdCBhYnNvbHV0ZWx5IHJlcXVpcmVzIGEgKnBoeXNpY2FsKiBQQ0llIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFNvLCB0aGUgcmlnaHQgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uLi4gaXMgdGhlcmUgKmFueSogUUVNVSBlbXVsYXRpb24gZm9yIGBhdGg5a2A/IE5vLCBub3RoaW5nLiBBbnkgb3RoZXIgc29mdHdhcmUgZW11bGF0aW9uPyBOb3BlLiBBbmQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBpcyBgYXRoOWtfaHRjYCBzb21laG93IGluY2x1ZGluZyBgeG1pdC5jYD8gYGF0aDlrX2h0Y2AgdXNlcyBgaHRjX2Rydl90eHJ4LmNgIGZvciB0cmFuc21pdC9yZWNlaXZlLCBzbyB0aGF0IGlzIG5vdCB0aGUgY2FzZS4gT2theSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfbWVyZ2VfcmF0ZXRibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xNTM9c3RhdGljIHZvaWQgYXRoX3NlbmRfYmFyKHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCB1MTYgc2Vxbm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE2MjpzdGF0aWMgYm9vbCBhdGhfbWVyZ2VfcmF0ZXRibChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE2My1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xOTg9c3RhdGljIHZvaWQgYXRoX3NldF9yYXRlcyhzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMDU6XHRpZiAoIWF0aF9tZXJnZV9yYXRldGJsKHN0YSwgYmYsIHR4X2luZm8pKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMDYtXHRcdGllZWU4MDIxMV9nZXRfdHhfcmF0ZXModmlmLCBzdGEsIGJmLVx1MDAzZWJmX21wZHUsIGJmLVx1MDAzZXJhdGVzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDU3NwoJCQkJCQkJb3V0cHV0OiAxMzgKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBgYXRoX21lcmdlX3JhdGV0YmxgIGlzIGV4Y2x1c2l2ZWx5IGluIGB4bWl0LmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGJvdW5kIHRvIHRoZSBQQ0kvQUhCIGRyaXZlci4gVGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIGxldCYjMzk7cyBzdGVwIHRocm91Z2ggdGhvc2UgYFdvcnRoRnV6emluZz1mYWxzZWAgY3JpdGVyaWEgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKKiAgIERvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzPyBOb3BlLCB0aGlzIGlzIGluIHRoZSBoZWFydCBvZiB0aGUgY29kZS4KKiAgIERlY29yYXRpdmUgY2hhbmdlcz8gTm8gd2F5LiBUaGlzIGlzIGZ1bmN0aW9uYWwuCiogICBOdW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3Mgd2l0aG91dCBmdW5jdGlvbmFsIGltcGFjdD8gRGVmaW5pdGVseSBub3QgdGhlIGNhc2UgaGVyZS4KKiAgIFVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/ICoqQmluZ28uKiogVGhlIGBhdGg5a2AgZHJpdmVyLCB0aGUgb25lIHRoaXMgY2hhbmdlIGltcGFjdHMsIG5lZWRzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQgb3IsIGluIHNvbWUgY2FzZXMsIEFIQi4gV2UgYXJlIG5vdCB0YWxraW5nIGFib3V0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGVtdWxhdGVkIGF0IGEgdXNhYmxlIGxldmVsIGluIHN0YW5kYXJkIFFFTVUuIFRoaW5ncyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgVVNCIGdhZGdldCBkb24mIzM5O3QgY3V0IGl0LiBUaGV5IGNhbiYjMzk7dCBzaW11bGF0ZSB0aGUgdW5kZXJseWluZyBBdGhlcm9zIGhhcmR3YXJlLgoqICAgVmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgZm9yIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVPyBUaGF0JiMzOTtzIGFsc28gaXJyZWxldmFudC4KKiAgIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3M/IE5vcGUsIG5vdCBhcHBsaWNhYmxlIGhlcmUuCgpBbHJpZ2h0LCBzbyB0aGUgY2xpbmNoZXIgaXMgdGhhdCB0aGUgYGF0aDlrYCBkcml2ZXIsIHRoZSB0YXJnZXQgb2YgdGhlIHBhdGNoLCBuZWVkcyAqcmVhbCogaGFyZHdhcmUsIHdoaWNoIG1lYW5zIGl0IG5lYXRseSBmaXRzIHRoZSAmIzM0O2ltcG9zc2libGUgdG8gcmVhY2gmIzM0OyBjYXRlZ29yeSBpbiBjb21tb24gdmlydHVhbGl6YXRpb24gc2V0dXBzLiBUaGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGNoYW5nZSBpcyBpbiBgeG1pdC5jYCB3aGljaCBJIGltbWVkaWF0ZWx5IHNlZSBpcyBhbiBpbmRpY2F0b3IgdGhhdCBpdCBpcyBsaWtlbHkgQUhCIG9yIFBDSS1zcGVjaWZpYywgYW5kIG5vdCBhIGNhbmRpZGF0ZSBmb3IgYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgcmVhc29uaW5nIHNlZW1zIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGg5ayBkcml2ZXIgKHhtaXQuYyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUvQUhCIHdpcmVsZXNzIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCAodW5saWtlIGF0aDlrX2h0YykuIFRodXMsIGl0IGlzIGltcG9zc2libGUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGg5ayBkcml2ZXIgKHhtaXQuYyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUvQUhCIHdpcmVsZXNzIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCAodW5saWtlIGF0aDlrX2h0YykuIFRodXMsIGl0IGlzIGltcG9zc2libGUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE4OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjoxNi40NTQ3ODI0NzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjkyNjY1MTY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGg5ayBkcml2ZXIgKHhtaXQuYyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUvQUhCIHdpcmVsZXNzIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIGFuZCB0aGUgY29kZSBwYXRoIGNhbm5vdCBiZSByZWFjaGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCAodW5saWtlIGF0aDlrX2h0YykuIFRodXMsIGl0IGlzIGltcG9zc2libGUgdG8gbWVhbmluZ2Z1bGx5IGZ1enogdGhpcyBjb2RlIHBhdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjE2LjQ1NDc4OTUwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxMDM1NDUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUwY2JlZTczMWQ0ODIxMDJhYzY4MDJmZGFjNTkzZThkYzU5MjM1M2JcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMTg6NTY6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcXG5pbmRleCA4OWQ4YjMxNzg3ODQ2Li4zNDEzYmI0OTA2ZDRkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXFxuQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgYm9vbCBhdGhfbWVyZ2VfcmF0ZXRibChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYsXFxuIFxcdGlmICghc3RhKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHRyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlKHN0YS1cXHUwMDNlcmF0ZXMpO1xcbitcXHRyYXRldGJsID0gcmN1X2RlcmVmZXJlbmNlX2JoKHN0YS1cXHUwMDNlcmF0ZXMpO1xcbiBcXHRpZiAoIXJhdGV0YmwpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjE3Ljc2NTkwOTA3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg1NjE1NTA0ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoOWsgZHJpdmVyICh4bWl0LmMpLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgQXRoZXJvcyA4MDIuMTFuIFBDSS9QQ0llL0FIQiB3aXJlbGVzcyBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBhbmQgdGhlIGNvZGUgcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQgKHVubGlrZSBhdGg5a19odGMpLiBUaHVzLCBpdCBpcyBpbXBvc3NpYmxlIHRvIG1lYW5pbmdmdWxseSBmdXp6IHRoaXMgY29kZSBwYXRoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MGNiZWU3MzFkNDgyMTAyYWM2ODAyZmRhYzU5M2U4ZGM1OTIzNTNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTg6NTY6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xuaW5kZXggODlkOGIzMTc4Nzg0Ni4uMzQxM2JiNDkwNmQ0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGJvb2wgYXRoX21lcmdlX3JhdGV0Ymwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IGF0aF9idWYgKmJmLFxuIFx0aWYgKCFzdGEpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbi1cdHJhdGV0YmwgPSByY3VfZGVyZWZlcmVuY2Uoc3RhLVx1MDAzZXJhdGVzKTtcbitcdHJhdGV0YmwgPSByY3VfZGVyZWZlcmVuY2VfYmgoc3RhLVx1MDAzZXJhdGVzKTtcbiBcdGlmICghcmF0ZXRibClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6MTcuNzY1OTEwMjkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk3Mzk4NTQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgYSBzZWVtaW5nbHkgbWlub3IgY2hhbmdlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jYC4gSXQncyBqdXN0IHN3YXBwaW5nIG91dCBgcmN1X2RlcmVmZXJlbmNlKHN0YS1cdTAwM2VyYXRlcylgIGZvciBgcmN1X2RlcmVmZXJlbmNlX2JoKHN0YS1cdTAwM2VyYXRlcylgLiBNeSBleHBlcnQgaW50dWl0aW9uIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBsb2NrZGVwIGZpeCBvciBSQ1UgYnVnIGZpeC4gUHJvYmFibHkgYSBnb29kIHRoaW5nLCBidXQgdGhlIHJlYWwgcXVlc3Rpb24gaXM6IENhbiBJIGZ1enogdGhpcz8gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIHRoZSBkcml2ZXIgYGF0aDlrYCBpcyBldmVuIGZ1enphYmxlLiBJdCdzIGEgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCByYWlzZXMgc29tZSBxdWVzdGlvbnMgcmlnaHQgYXdheS5cblxuVGhlIGJpZ2dlc3QgaHVyZGxlIHdpdGggd2lyZWxlc3MgZHJpdmVycyBpcyBvZnRlbiBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGV2ZW4gKnJlYWNoKiB0aGUgcmVsZXZhbnQgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBOb3JtYWxseSwgYGF0aDlrYCBuZWVkcyBhY3R1YWwgQXRoZXJvcyA4MDIuMTFuIGhhcmR3YXJlLCB3aGljaCBpcyBhIHByb2JsZW0uIEJ1dCB3YWl0Li4uIGlzbid0IGBhdGg5a2AgYSBQQ0kvUENJZSBkcml2ZXI/IE9yIGlzIHRoZXJlIGEgVVNCIHZhcmlhbnQsIGBhdGg5a19odGNgP1xuXG5BaCwgcmlnaHQsIGBtYWM4MDIxMV9od3NpbWAgaXMgc29mdHdhcmUtZW11bGF0ZWQsIGJ1dCAqYGF0aDlrYCogaXMgc3BlY2lmaWNhbGx5IGZvciBoYXJkd2FyZS4gUUVNVSBkb2Vzbid0IGVtdWxhdGUgQXRoZXJvcyBjYXJkcywgc28gdGhhdCdzIGEgZGVhZCBlbmQuIEJ1dCBob2xkIG9uISBJZiBpdCdzIGBhdGg5a19odGNgLCB3aGljaCBpcyBhICpVU0IqIGRyaXZlciwgdGhlbiB0aGF0IG9wZW5zIHRoaW5ncyB1cC4gVVNCIGRldmljZXMgKmNhbiogYmUgZW11bGF0ZWQhIFdlIGNhbiB1c2UgVVNCIGdhZGdldCBvciB2aGNpIChsaWtlIHN5emthbGxlciB1c2VzIGZvciBVU0IgZnV6emluZyEpLlxuXG5SaWdodCwgc28gdGhlIG5leHQgc3RlcCBpcyBjcnlzdGFsIGNsZWFyLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGB4bWl0LmNgIGlzIGFjdHVhbGx5IHVzZWQgYnkgYGF0aDlrX2h0Y2AgdG8gc2VlIGlmIHRoaXMgaXMgYW4gaW50ZXJlc3RpbmcgYXZlbnVlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6MjQuNzM5ODk3OTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMzMTU5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieG1pdFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgKz1cXHRiZWFjb24ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cXHRcXHRyZWN2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OlxcdFxcdHhtaXQubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgtXFx0XFx0bGluay5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6MjQuODIzMjE4MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjIwMDg0MzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQ2hlY2tpbmcgYGF0aDlrX2h0Y2AncyBUcmFuc21pc3Npb24gUGF0aCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIHV0aWxpemVzIHRoZSBgeG1pdC5jYCBmaWxlIGZvciBpdHMgdHJhbnNtaXNzaW9uIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIHN0ZXAsIGFuZCBJJ2QgdHlwaWNhbGx5IGRvIHRoaXMgYnkgZGlnZ2luZyB0aHJvdWdoIHRoZSBzb3VyY2UgY29kZSwgYnV0IGxldCdzIHNlZS4uLiBhIHF1aWNrIGNoZWNrIHdvdWxkIGJlIHRoZSBiZXN0LiBJJ20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjI4LjA0MzMwNTA5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODY5NDYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a19odGMteVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02Nj1hdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Njg6YXRoOWtfaHRjLXkgKz1cXHRodGNfaHN0Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02OS1cXHRcXHRoaWZfdXNiLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjoyOC4wOTIwMTAyNzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk1OTkxODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBhdGg5a19odGMgTW9kdWxlIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHhtaXQub2AgaXMgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGBhdGg5a19odGNgIG1vZHVsZS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoaXMgaXMgYW4gYXRoOWstcmVsYXRlZCBjb21wb25lbnQsIGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgcmVsZXZhbnQgTWFrZWZpbGUuIFNwZWNpZmljYWxseSwgSSdsbCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZWAuIFRoYXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCB0aGUgbW9kdWxlIGRlZmluaXRpb24gYW5kIGFueSBhc3NvY2lhdGVkIG9iamVjdCBmaWxlIGRlcGVuZGVuY2llcy4gSSdtIGdvaW5nIHRvIGxvb2sgc3BlY2lmaWNhbGx5IGZvciBob3cgdGhlIGBhdGg5a19odGNgIG1vZHVsZSBpcyBidWlsdCBhbmQgd2hldGhlciBgeG1pdC5vYCBpcyBleHBsaWNpdGx5IGxpc3RlZCBvciBwdWxsZWQgaW4gdGhyb3VnaCBzb21lIG90aGVyIG1lY2hhbmlzbS4gTGV0J3Mgc2VlIHdoYXQgdGhlIE1ha2VmaWxlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNTAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjozMi4yODgwMDQ2MDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRhdGg5ay15ICs9XFx0YmVhY29uLm8gXFxcXFxcbiAgIDM6XFx0XFx0XFx0Z3Bpby5vIFxcXFxcXG4gICA0OlxcdFxcdFxcdGluaXQubyBcXFxcXFxuICAgNTpcXHRcXHRcXHRtYWluLm8gXFxcXFxcbiAgIDY6XFx0XFx0XFx0cmVjdi5vIFxcXFxcXG4gICA3OlxcdFxcdFxcdHhtaXQubyBcXFxcXFxuICAgODpcXHRcXHRcXHRsaW5rLm8gXFxcXFxcbiAgIDk6XFx0XFx0XFx0YW50ZW5uYS5vIFxcXFxcXG4gIDEwOlxcdFxcdFxcdGNoYW5uZWwub1xcbiAgMTE6XFx0XFxuICAxMjpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgKz0gbWNpLm9cXG4gIDEzOlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1BDSSkgKz0gcGNpLm9cXG4gIDE0OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0FIQikgKz0gYWhiLm9cXG4gIDE1OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19ERUJVR0ZTKSArPSBkZnNfZGVidWcub1xcbiAgMTY6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgKz0gZGZzLm9cXG4gIDE3OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1RYOTkpICs9IHR4OTkub1xcbiAgMTg6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfV09XKSArPSB3b3cub1xcbiAgMTk6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfSFdSTkcpICs9IHJuZy5vXFxuICAyMDpcXHRcXG4gIDIxOlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RFQlVHRlMpICs9IGRlYnVnLm9cXG4gIDIyOlxcdFxcbiAgMjM6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTKSArPSBkZWJ1Z19zdGEub1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRvYmotJChDT05GSUdfQVRIOUspICs9IGF0aDlrLm9cXG4gIDI2OlxcdFxcbiAgMjc6XFx0YXRoOWtfaHcteTo9XFx0XFxcXFxcbiAgMjg6XFx0XFx0XFx0YXI5MDAyX2h3Lm8gXFxcXFxcbiAgMjk6XFx0XFx0XFx0YXI5MDAzX2h3Lm8gXFxcXFxcbiAgMzA6XFx0XFx0XFx0aHcubyBcXFxcXFxuICAzMTpcXHRcXHRcXHRhcjkwMDNfcGh5Lm8gXFxcXFxcbiAgMzI6XFx0XFx0XFx0YXI5MDAyX3BoeS5vIFxcXFxcXG4gIDMzOlxcdFxcdFxcdGFyNTAwOF9waHkubyBcXFxcXFxuICAzNDpcXHRcXHRcXHRhcjkwMDJfY2FsaWIubyBcXFxcXFxuICAzNTpcXHRcXHRcXHRhcjkwMDNfY2FsaWIubyBcXFxcXFxuICAzNjpcXHRcXHRcXHRjYWxpYi5vIFxcXFxcXG4gIDM3OlxcdFxcdFxcdGVlcHJvbS5vIFxcXFxcXG4gIDM4OlxcdFxcdFxcdGVlcHJvbV9kZWYubyBcXFxcXFxuICAzOTpcXHRcXHRcXHRlZXByb21fNGsubyBcXFxcXFxuICA0MDpcXHRcXHRcXHRlZXByb21fOTI4Ny5vIFxcXFxcXG4gIDQxOlxcdFxcdFxcdGFuaS5vIFxcXFxcXG4gIDQyOlxcdFxcdFxcdG1hYy5vIFxcXFxcXG4gIDQzOlxcdFxcdFxcdGFyOTAwMl9tYWMubyBcXFxcXFxuICA0NDpcXHRcXHRcXHRhcjkwMDNfbWFjLm8gXFxcXFxcbiAgNDU6XFx0XFx0XFx0YXI5MDAzX2VlcHJvbS5vIFxcXFxcXG4gIDQ2OlxcdFxcdFxcdGFyOTAwM19wYXByZC5vXFxuICA0NzpcXHRcXG4gIDQ4OlxcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1dPVykgKz0gYXI5MDAzX3dvdy5vXFxuICA0OTpcXHRcXG4gIDUwOlxcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0JUQ09FWF9TVVBQT1JUKSArPSBidGNvZXgubyBcXFxcXFxuICA1MTpcXHRcXHRcXHRcXHRcXHRcXHQgICBhcjkwMDNfbWNpLm8gXFxcXFxcbiAgNTI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgYXI5MDAzX2FpYy5vXFxuICA1MzpcXHRcXG4gIDU0OlxcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSArPSBhcjkwMDNfcnR0Lm9cXG4gIDU1OlxcdFxcbiAgNTY6XFx0YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSArPSBkeW5hY2sub1xcbiAgNTc6XFx0XFxuICA1ODpcXHRvYmotJChDT05GSUdfQVRIOUtfSFcpICs9IGF0aDlrX2h3Lm9cXG4gIDU5OlxcdFxcbiAgNjA6XFx0b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgKz0gYXRoOWtfY29tbW9uLm9cXG4gIDYxOlxcdGF0aDlrX2NvbW1vbi15Oj1cXHRjb21tb24ubyBcXFxcXFxuICA2MjpcXHRcXHRcXHRcXHRjb21tb24taW5pdC5vIFxcXFxcXG4gIDYzOlxcdFxcdFxcdFxcdGNvbW1vbi1iZWFjb24ubyBcXFxcXFxuICA2NDpcXHRcXG4gIDY1OlxcdGF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fREVCVUcpICs9IGNvbW1vbi1kZWJ1Zy5vXFxuICA2NjpcXHRhdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbiAgNjc6XFx0XFxuICA2ODpcXHRhdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuICA2OTpcXHRcXHRcXHRoaWZfdXNiLm8gXFxcXFxcbiAgNzA6XFx0XFx0XFx0d21pLm8gXFxcXFxcbiAgNzE6XFx0XFx0XFx0aHRjX2Rydl90eHJ4Lm8gXFxcXFxcbiAgNzI6XFx0XFx0XFx0aHRjX2Rydl9tYWluLm8gXFxcXFxcbiAgNzM6XFx0XFx0XFx0aHRjX2Rydl9iZWFjb24ubyBcXFxcXFxuICA3NDpcXHRcXHRcXHRodGNfZHJ2X2luaXQubyBcXFxcXFxuICA3NTpcXHRcXHRcXHRodGNfZHJ2X2dwaW8ub1xcbiAgNzY6XFx0XFxuICA3NzpcXHRhdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICs9IGh0Y19kcnZfZGVidWcub1xcbiAgNzg6XFx0XFxuICA3OTpcXHRvYmotJChDT05GSUdfQVRIOUtfSFRDKSArPSBhdGg5a19odGMub1xcbiAgODA6XFx0XFxuICA4MTpcXHRvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgKz0gYXRoOWtfcGNpX293bF9sb2FkZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjozMi4yODgwNzcwNTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTgzNjE5NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg5ayBNb2R1bGUgU3RydWN0dXJlKipcblxuT2theSwgc28gaGVyZSdzIHdoYXQgSSd2ZSBnb3QgaW4gbXkgaGVhZCBhYm91dCB0aGUgYGF0aDlrYCBmYW1pbHkgb2YgZHJpdmVycy4gSSdtIHNlZWluZyB0aGF0IGB4bWl0Lm9gIGlzIGV4Y2x1c2l2ZWx5IHBhcnQgb2YgdGhlIGBhdGg5ay15YCBidWlsZCwgd2hpY2ggaXRzZWxmIGlzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIG1vbm9saXRoaWMgYGF0aDlrLm9gIG1vZHVsZS4gIFRoYXQncyBteSBmaXJzdCBvYnNlcnZhdGlvbjogYHhtaXQub2AgaXMgKmVtYmVkZGVkKiB3aXRoaW4gdGhlIGNvcmUgYGF0aDlrLm9gIGRyaXZlci4gQW5kIGBhdGg5ay5vYCwgb2YgY291cnNlLCBpcyBvbmx5IGJ1aWx0IGlmIHRoZSBgQ09ORklHX0FUSDlLYCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZSBmcm9tIGEgbW9kdWxhcml0eSBwZXJzcGVjdGl2ZS5cblxuTm93LCB3ZSBhbHNvIGhhdmUgYGF0aDlrX2h0Yy5vYCB3aGljaCwgbG9naWNhbGx5LCBpcyBidWlsdCB3aGVuIGBDT05GSUdfQVRIOUtfSFRDYCBpcyBzZXQuICBIb3dldmVyLCB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuICBgYXRoOWtfaHRjYCBkb2Vzbid0IHNlZW0gdG8gaW5jbHVkZSBgeG1pdC5vYC4gSXQgaGFzIGl0cyBvd24sIGRpc3RpbmN0IHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uIGhhbmRsZXIgaW4gYGh0Y19kcnZfdHhyeC5vYC4gU28sIHRvIGJlIGNsZWFyLCBgYXRoOWtfaHRjYCBpcyBjb21wbGV0ZWx5IGlzb2xhdGVkIGZyb20gdGhlIGB4bWl0Lm9gIGNvZGUgYmFzZS5cblxuVGhpcyBsZWFkcyBtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IGB4bWl0LmNgIC0gdGhlIHNvdXJjZSBjb2RlIGZvciBgeG1pdC5vYCAtIGlzICpleGNsdXNpdmVseSogdXRpbGl6ZWQgYnkgdGhlIFBDSS9BSEIgdmFyaWFudCBvZiB0aGUgZHJpdmVyIOKAkyB0aGUgc3RhbmRhcmQgYGF0aDlrYCBkcml2ZXIsIGFuZCB0aGF0IGl0IGlzIG5vdCB1c2VkIGluIHRoZSBIVEMgYmFzZWQgYXRoOWtfaHRjIGRyaXZlci4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBkZWZpbml0aXZlbHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgbG9naWMgaXMgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MTAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NjozNy4yNzE2OTg2NjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTg4NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhtaXRcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICs9XFx0YmVhY29uLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTYtXFx0XFx0cmVjdi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzpcXHRcXHR4bWl0Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04LVxcdFxcdGxpbmsubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjM3LjMxNjY5MjQzM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTIxODg2NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIGBhdGg5a2AqKlxuXG5Pa2F5LCBzbyBJJ20gd29uZGVyaW5nIGFib3V0IGBhdGg5a2AgYW5kIGl0cyBoYXJkd2FyZSBpbnRlcmZhY2Ugc3VwcG9ydC4gRG9lcyB0aGlzIGRyaXZlciAqb25seSogY292ZXIgUENJIGFuZCBBSEIsIG9yIGRvZXMgaXQgaGFuZGxlIG1vcmU/IFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZS4gTGV0J3MgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgc2hvdWxkIGNsYXJpZnkgd2hhdCB0eXBlcyBvZiBidXNzZXMgYW5kIGludGVyZmFjZXMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoLiBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIHByZXR0eSBnb29kIGFuc3dlciB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM0MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU2OjQyLjIzODU4MjAwM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRjb25maWcgQVRIOUtfSFdcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRjb25maWcgQVRIOUtfQ09NTU9OXFxuICAgNTpcXHRcXHR0cmlzdGF0ZVxcbiAgIDY6XFx0XFx0c2VsZWN0IEFUSF9DT01NT05cXG4gICA3OlxcdGNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcXG4gICA4OlxcdFxcdGJvb2xcXG4gICA5OlxcdGNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbiAgMTA6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIFxcdTAwMjZcXHUwMDI2IEFUSDlLX0RGU19DRVJUSUZJRURcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXFxuICAxNDpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbiAgMTY6XFx0XFx0ZGVmYXVsdCB5XFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFNheSBZLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGF0aDlrL2F0aDlrX2h0YyByYWRpb3MgdG9nZXRoZXIgd2l0aFxcbiAgMTk6XFx0XFx0ICBCbHVldG9vdGggbW9kdWxlcyBpbiB0aGUgc2FtZSBzeXN0ZW0uXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBBVEg5S1xcbiAgMjI6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAyNDpcXHRcXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbiAgMjU6XFx0XFx0c2VsZWN0IEFUSDlLX0hXXFxuICAyNjpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gIDI5OlxcdFxcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMW4gQVI1MDA4LCBBUjkwMDEgYW5kIEFSOTAwMiBmYW1pbHlcXG4gIDMwOlxcdFxcdCAgb2YgY2hpcHNldHMuIEZvciBhIHNwZWNpZmljIGxpc3Qgb2Ygc3VwcG9ydGVkIGV4dGVybmFsXFxuICAzMTpcXHRcXHQgIGNhcmRzLCBsYXB0b3BzIHRoYXQgYWxyZWFkeSBzaGlwIHdpdGggdGhlc2UgY2FyZHMgYW5kXFxuICAzMjpcXHRcXHQgIEFQcyB0aGF0IGNvbWUgd2l0aCB0aGVzZSBjYXJkcyByZWZlciB0byBhdGg5ayB3aWtpXFxuICAzMzpcXHRcXHQgIHByb2R1Y3RzIHBhZ2U6XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5ay9wcm9kdWN0c1xcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBhdGg5ay5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIEFUSDlLX1BDSVxcbiAgNDA6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFxcXCJcXG4gIDQxOlxcdFxcdGRlZmF1bHQgeVxcbiAgNDI6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDQzOlxcdFxcdGhlbHBcXG4gIDQ0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJIGJ1cyBzdXBwb3J0IGluIGF0aDlrLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgaGF2ZSBhIGNvbXBhdGlibGUgUENJL1BDSWUgd2lyZWxlc3MgY2FyZC5cXG4gIDQ3OlxcdFxcbiAgNDg6XFx0Y29uZmlnIEFUSDlLX0FIQlxcbiAgNDk6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBBSEIgYnVzIHN1cHBvcnRcXFwiXFxuICA1MDpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IE9GXFxuICA1MTpcXHRcXHRkZWZhdWx0IG5cXG4gIDUyOlxcdFxcdGhlbHBcXG4gIDUzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgQUhCIGJ1cyBzdXBwb3J0IGluIGF0aDlrLlxcbiAgNTQ6XFx0XFxuICA1NTpcXHRcXHQgIFNheSBZLCBpZiB5b3UgaGF2ZSBhIFNvQyB3aXRoIGEgY29tcGF0aWJsZSBidWlsdC1pblxcbiAgNTY6XFx0XFx0ICB3aXJlbGVzcyBNQUMuIFNheSBOIGlmIHVuc3VyZS5cXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG4gIDU5OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgZGVidWdnaW5nXFxcIlxcbiAgNjA6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBERUJVR19GUyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuICA2MTpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuICA2MjpcXHRcXHRoZWxwXFxuICA2MzpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWsncyBzdGF0aXN0aWNzIGZvclxcbiAgNjQ6XFx0XFx0ICBpbnRlcnJ1cHRzLCByYXRlIGNvbnRyb2wsIGV0Yy5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0ICBBbHNvIHJlcXVpcmVkIGZvciBjaGFuZ2luZyBkZWJ1ZyBtZXNzYWdlIGZsYWdzIGF0IHJ1biB0aW1lIGFuZCBmb3JcXG4gIDY3OlxcdFxcdCAgVFg5OS5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xcbiAgNzA6XFx0XFx0Ym9vbCBcXFwiRGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBBVEg5S19ERUJVR0ZTIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuICA3MjpcXHRcXHRkZWZhdWx0IG5cXG4gIDczOlxcdFxcdGhlbHBcXG4gIDc0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGZvciBhc3NvY2lhdGlvbiBzdGF0aW9ucy5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIEFUSDlLX1RYOTlcXG4gIDc3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgVFg5OSB0ZXN0aW5nIHN1cHBvcnRcXFwiXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA3OTpcXHRcXHRkZWZhdWx0IG5cXG4gIDgwOlxcdFxcdGhlbHBcXG4gIDgxOlxcdFxcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBvbiBzeXN0ZW1zIHVuZGVyZ29pbmdcXG4gIDgyOlxcdFxcdCAgY2VydGlmaWNhdGlvbiB0ZXN0aW5nIGFuZCBldmFsdWF0aW9uIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cXG4gIDgzOlxcdFxcdCAgRW5hYmxpbmcgdGhpcyB3aWxsIG9ubHkgZW5hYmxlIFRYOTkgc3VwcG9ydCwgYWxsIG90aGVyIG1vZGVzIG9mXFxuICA4NDpcXHRcXHQgIG9wZXJhdGlvbiB3aWxsIGJlIGRpc2FibGVkLlxcbiAgODU6XFx0XFxuICA4NjpcXHRcXHQgIFRYOTkgc3VwcG9ydCBlbmFibGVzIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAoU0FSKSB0ZXN0aW5nLlxcbiAgODc6XFx0XFx0ICBTQVIgaXMgdGhlIHVuaXQgb2YgbWVhc3VyZW1lbnQgZm9yIHRoZSBhbW91bnQgb2YgcmFkaW8gZnJlcXVlbmN5KFJGKVxcbiAgODg6XFx0XFx0ICBhYnNvcmJlZCBieSB0aGUgYm9keSB3aGVuIHVzaW5nIGEgd2lyZWxlc3MgZGV2aWNlLiBUaGUgUkYgZXhwb3N1cmVcXG4gIDg5OlxcdFxcdCAgbGltaXRzIHVzZWQgYXJlIGV4cHJlc3NlZCBpbiB0aGUgdGVybXMgb2YgU0FSLCB3aGljaCBpcyBhIG1lYXN1cmVcXG4gIDkwOlxcdFxcdCAgb2YgdGhlIGVsZWN0cmljIGFuZCBtYWduZXRpYyBmaWVsZCBzdHJlbmd0aCBhbmQgcG93ZXIgZGVuc2l0eSBmb3JcXG4gIDkxOlxcdFxcdCAgdHJhbnNtaXR0ZXJzIG9wZXJhdGluZyBhdCBmcmVxdWVuY2llcyBmcm9tIDMwMCBrSHogdG8gMTAwIEdIei5cXG4gIDkyOlxcdFxcdCAgUmVndWxhdG9yeSBib2RpZXMgYXJvdW5kIHRoZSB3b3JsZCByZXF1aXJlIHRoYXQgd2lyZWxlc3MgZGV2aWNlXFxuICA5MzpcXHRcXHQgIGJlIGV2YWx1YXRlZCB0byBtZWV0IHRoZSBSRiBleHBvc3VyZSBsaW1pdHMgc2V0IGZvcnRoIGluIHRoZVxcbiAgOTQ6XFx0XFx0ICBnb3Zlcm5tZW50YWwgU0FSIHJlZ3VsYXRpb25zLlxcbiAgOTU6XFx0XFxuICA5NjpcXHRjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxcbiAgOTc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG4gIDk4OlxcdFxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA5OTpcXHRcXHRkZWZhdWx0IG5cXG4gMTAwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6NDIuMjM4Njg1MDkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTk2Mjc5Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBhdGg5a2AgRHJpdmVyOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBhdGg5a2AsIGEgV2ktRmkgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgbWluZCBnb2VzIHRvIGZ1enppbmcuIEl0IGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYEhBU19ETUFgLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcy4gSXQgYWxzbyBoYXMgYEFUSDlLX1BDSWAgYW5kIGBBVEg5S19BSEJgIHZhcmlhbnRzLCBzbyB0aGF0IGltbWVkaWF0ZWx5IGluZm9ybXMgc29tZSBwb3RlbnRpYWwgZnV6emluZyBhcHByb2FjaGVzLiBDYW4gSSBmdXp6IGl0IGluIFFFTVU/IEkga25vdyBgbWFjODAyMTFfaHdzaW1gIGV4aXN0cywgd2hpY2ggaXMgYSB2aXJ0dWFsIFdpLUZpIGRyaXZlciwgYnV0IGBhdGg5a2AgaXMgYSAqcmVhbCogaGFyZHdhcmUgZHJpdmVyLlxuXG5DYW4gc3l6a2FsbGVyIGZ1enogYGF0aDlrYD8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uIFN5emthbGxlciB0eXBpY2FsbHkgdXNlcyBgc3l6X3BjaV9zZXR1cGAgZm9yIFBDSSBkZXZpY2VzLCBidXQgUUVNVSBkb2Vzbid0IGRpcmVjdGx5IGVtdWxhdGUgQXRoZXJvcyA4MDIuMTFuIGNhcmRzLiBIb3dldmVyLCB3YWl0IGEgbWludXRlLCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIHJpZ2h0PyBZZXMhIEl0IGNhbiBwcm9iZSBQQ0kgY29uZmlnIHNwYWNlIGFuZCBwZXJmb3JtIE1NSU8gcmVhZHMvd3JpdGVzIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiBBbmQgYGF0aDlrYCBpcyBpbmRlZWQgYSBQQ0kgZHJpdmVyLiBUaGlzIG9wZW5zIHVwIGEgZnV6emluZyBhdmVudWUuIFNvLCBpdCBzaG91bGQgYmUgcmVhY2hhYmxlIGlmIHN5emthbGxlciBoYXMgUENJIGZ1enppbmcgZW5hYmxlZC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybS4gWWVzLCBgc3l6X3BjaV9zZXR1cGAsIGBzeXpfcGNpX21taW9fd3JpdGVgIGFyZSBhbGwgcHJlc2VudC5cblxuQnV0IG5vdywgSSdtIGdldHRpbmcgYSBsaXR0bGUgc25hZy4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgaXNzdWVzIHdpdGggXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBJcyBgYXRoOWtgIGluIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCdzIGEgc3RhbmRhcmQgV2ktRmkgZHJpdmVyLCBzbyBJIGRvbid0IHRoaW5rIHRoYXQncyB0aGUgYmxvY2tlci5cblxuV2FpdCBhIHNlY29uZOKApiB0aGUgZmFjdCB0aGF0IHRoZXJlJ3MgYSBwYXRjaCBhcHBsaWVkIGJ5IGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAgbWVhbnMgc3l6a2FsbGVyICpmb3VuZCogYSBidWcgaGVyZSEgSWYgaXQgZm91bmQgYSBidWcsIGl0ICptdXN0KiBiZSBmdXp6YWJsZS4gVGhlIHByb29mIGlzIGluIHRoZSBwdWRkaW5nLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGJ1ZyByZXBvcnQgb3IgaG93IGl0IHdhcyBmb3VuZCwgYnV0IHRoZSBwYXRjaCBpdHNlbGYgaXMgdGhlIGdpdmVhd2F5LlxuXG5JIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBhdGggaGVyZS4gU3l6a2FsbGVyIGNhbm5vdCBiZSBmdXp6aW5nIGBhdGg5a2AgdmlhIGBtYWM4MDIxMV9od3NpbWAgYmVjYXVzZSB0aGF0J3MgYSAqdmlydHVhbCogZHJpdmVyLCBhbmQgYGF0aDlrYCBpcyBhICpoYXJkd2FyZSogZHJpdmVyLiBUaGVyZWZvcmUsIGhvdyBjb3VsZCBzeXprYWxsZXIgdHJpZ2dlciBgYXRoOWtgPyBQb3NzaWJseSB0aHJvdWdoIGBtYWM4MDIxMWAgaW5qZWN0aW9uPyBObywgdGhhdCB3b3VsZG4ndCB3b3JrIGJlY2F1c2UgYGF0aDlrYCB3b24ndCBiZSBsb2FkZWQgdW5sZXNzIHRoZSBoYXJkd2FyZSBpcyBwcmVzZW50IG9yIFBDSSBpcyBmdXp6ZWQuXG5cbkFoYSEgU3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIhIEl0IGNhbiBzaW11bGF0ZSBhIFBDSSBkZXZpY2UgYW5kLCBiaW5nbywgSSdtIGJhY2sgb24gdHJhY2suIGBhdGg5a2AgaXMgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZyBiZWNhdXNlIGl0J3MgYSBQQ0kgZHJpdmVyLiBUaGUgZWFybGllciBjYXZlYXQgYWJvdXQgaGFyZHdhcmUgZW11bGF0aW9uIHNob3VsZCBiZSBtb290LiBgYXRoOWtgIGlzbid0IGEgc3BlY2lhbCBjYXNlOyBpdCBpcyBhIHJlZ3VsYXIgV2ktRmkgZHJpdmVyLlxuXG5TbywgaXQncyBiYWNrIHRvIGNoZWNraW5nIHRoZSBwYXRjaC4gSSdtIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2UgaXRzZWxmOlxuYGBgY1xuLVx0cmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZShzdGEtXHUwMDNlcmF0ZXMpO1xuK1x0cmF0ZXRibCA9IHJjdV9kZXJlZmVyZW5jZV9iaChzdGEtXHUwMDNlcmF0ZXMpO1xuYGBgXG5UaGlzIGlzIHdpdGhpbiBgYXRoX21lcmdlX3JhdGV0YmxgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jYC4gVGhpcyBpcyBjbGVhcmx5IGEgY29uY3VycmVuY3kgaXNzdWUsIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbi4gVGhlIGtleSBpcyBpbiB0aGUgYHJjdV9kZXJlZmVyZW5jZWAgdG8gYHJjdV9kZXJlZmVyZW5jZV9iaGAsIHdoaWNoIGlzIGxpa2VseSBhIGZpeCByZWxhdGVkIHRvIGFjY2Vzc2luZyByYXRlIHRhYmxlLlxuXG5UaGVyZWZvcmUsIHN5emthbGxlciBpcyBzdWNjZXNzZnVsbHkgZnV6emluZyBhIHN0YW5kYXJkIFdpLUZpIGRyaXZlciB2aWEgaXRzIFBDSSBmdXp6ZXIsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2Ugbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTg2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6NTYuMjM0OTY4MzIxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA1NDM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGhfbWVyZ2VfcmF0ZXRibFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTUzPXN0YXRpYyB2b2lkIGF0aF9zZW5kX2JhcihzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwgdTE2IHNlcW5vKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoxNjI6c3RhdGljIGJvb2wgYXRoX21lcmdlX3JhdGV0Ymwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IGF0aF9idWYgKmJmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTYzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTk4PXN0YXRpYyB2b2lkIGF0aF9zZXRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjA1OlxcdGlmICghYXRoX21lcmdlX3JhdGV0Ymwoc3RhLCBiZiwgdHhfaW5mbykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMDYtXFx0XFx0aWVlZTgwMjExX2dldF90eF9yYXRlcyh2aWYsIHN0YSwgYmYtXFx1MDAzZWJmX21wZHUsIGJmLVxcdTAwM2VyYXRlcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTY6NTYuMjc4MDI4MDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2NTkyMjgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgVW5kZXJzdGFuZGluZyBvZiBSYXRlIFRhYmxlIE1lcmdpbmcqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgcmVsYXRpb25zaGlwIGhlcmUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSBzZWUgdGhhdCBgYXRoX21lcmdlX3JhdGV0YmxgIGlzIGRpcmVjdGx5IHRpZWQgdG8gYGF0aF9zZXRfcmF0ZXNgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGEgZmV3IHRoaW5ncy4gRmlyc3QsIGBhdGhfc2V0X3JhdGVzYCBpcyBwcm9iYWJseSB0aGUgKmNhbGxlciog4oCTIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgZ2V0dGluZyB0aGlzIHJhdGUgdGFibGUgYnVzaW5lc3MgZ29pbmcuIEl0IGxpa2VseSBuZWVkcyB0byBzZXQgb3IgbW9kaWZ5IHRoZSB0cmFuc21pdCByYXRlIHRhYmxlcywgYW5kIHRoZXJlZm9yZSwgaXQgcmVsaWVzIG9uIGBhdGhfbWVyZ2VfcmF0ZXRibGAgYXMgYSBoZWxwZXIgZnVuY3Rpb24uIFNlY29uZCwgdGhlIG5hbWluZyBjb252ZW50aW9uIHN1Z2dlc3RzIHRoYXQgYGF0aF9tZXJnZV9yYXRldGJsYCBpcyByZXNwb25zaWJsZSBmb3IgKm1lcmdpbmcqIHJhdGUgdGFibGVzLiBUaGlzIGhpbnRzIHRoYXQgdGhlIHN5c3RlbSBtYXkgZGVhbCB3aXRoIG11bHRpcGxlIHJhdGUgdGFibGVzLCBwZXJoYXBzIGZvciBkaWZmZXJlbnQgc2NlbmFyaW9zIG9yIGRldmljZSBjYXBhYmlsaXRpZXMsIGFuZCB0aGF0IGBhdGhfc2V0X3JhdGVzYCBuZWVkcyB0byBjb21iaW5lIHRoZW0gaW4gc29tZSB3YXkuIEknZCBuZWVkIHRvIGRpZyBkZWVwZXIgdG8gc2VlIGlmIHRoaXMgaXMgZm9yIG5ldyByYXRlIHRhYmxlcyBvciB0byB1cGRhdGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgcmF0ZSBzZWxlY3Rpb24gYWxnb3JpdGhtcyBhbmQgaG93IHRoZSBkcml2ZXIgYWRhcHRzIHRvIGNoYW5naW5nIGNoYW5uZWwgY29uZGl0aW9ucyBhbmQgY2xpZW50IGNhcGFiaWxpdGllcy4gVWx0aW1hdGVseSwgSSdkIG5lZWQgdG8gdmVyaWZ5IHRoZSBjYWxsaW5nIGNvbnRleHQsIGJ1dCBpdCdzIGNsZWFyIGBhdGhfbWVyZ2VfcmF0ZXRibGAgaXMgYSBzdXBwb3J0aW5nIGZ1bmN0aW9uIHVuZGVyIHRoZSBgYXRoX3NldF9yYXRlc2AgY29tbWFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk4NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU3OjAwLjc0Mzk1MzY0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5NzkwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3NldF9yYXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTYyPXN0YXRpYyBib29sIGF0aF9tZXJnZV9yYXRldGJsKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBhdGhfYnVmICpiZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTk4OnN0YXRpYyB2b2lkIGF0aF9zZXRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE5OS1cXHRcXHRcXHQgIHN0cnVjdCBhdGhfYnVmICpiZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTQ5Nj1hdGhfdHhfZm9ybV9idXJzdChzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTUyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE1MjU6XFx0XFx0YXRoX3NldF9yYXRlcyh0aWQtXFx1MDAzZWFuLVxcdTAwM2V2aWYsIHRpZC1cXHUwMDNlYW4tXFx1MDAzZXN0YSwgYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTUyNi1cXHR9IHdoaWxlICgxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTUyOT1zdGF0aWMgaW50IGF0aF90eF9zY2hlZF9hZ2dyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTU1MjpcXHRhdGhfc2V0X3JhdGVzKHRpZC1cXHUwMDNlYW4tXFx1MDAzZXZpZiwgdGlkLVxcdTAwM2Vhbi1cXHUwMDNlc3RhLCBiZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNTUzLVxcdGlmIChhZ2dyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0xNjkwPXZvaWQgYXRoOWtfcmVsZWFzZV9idWZmZXJlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTE3MjEtXFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2YmYtXFx1MDAzZWxpc3QsIFxcdTAwMjZiZl9xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjE3MjI6XFx0XFx0XFx0YXRoX3NldF9yYXRlcyh0aWQtXFx1MDAzZWFuLVxcdTAwM2V2aWYsIHRpZC1cXHUwMDNlYW4tXFx1MDAzZXN0YSwgYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTcyMy1cXHRcXHRcXHRpZiAoYmZfaXNhbXBkdShiZikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIzMjM9aW50IGF0aF90eF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjIzODA6XFx0YXRoX3NldF9yYXRlcyh2aWYsIHN0YSwgYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM4MS1cXHRhdGhfdHhfc2VuZF9ub3JtYWwoc2MsIHR4cSwgdGlkLCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzg5PXZvaWQgYXRoX3R4X2NhYnEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTctXFx0XFx0YmYtXFx1MDAzZWJmX2xhc3RiZiA9IGJmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcXHRcXHRhdGhfc2V0X3JhdGVzKHZpZiwgTlVMTCwgYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjQxOS1cXHRcXHRhdGhfYnVmX3NldF9yYXRlKHNjLCBiZiwgXFx1MDAyNmluZm8sIGZpLVxcdTAwM2VmcmFtZWxlbiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yOTE0PWludCBhdGg5a190eDk5X3NlbmQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI5NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyOTQ3OlxcdGF0aF9zZXRfcmF0ZXMoc2MtXFx1MDAzZXR4OTlfdmlmLCBOVUxMLCBiZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxODo1NzowMC43ODg5Mzg1MjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcwMTUyMzYxMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IGBhdGhfdHhfc3RhcnRgIGluIGBhdGg5a2AqKlxuXG5Pa2F5LCBzbyB0aGUgZW50cnkgcG9pbnQgZm9yIHBhY2tldCB0cmFuc21pc3Npb24gaW4gdGhpcyBBdGhlcm9zIGRyaXZlciBpcyBgYXRoX3R4X3N0YXJ0YC4gIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJDYW4gd2UgZnV6eiB0aGlzIHdpdGggdGhlIHVzdWFsIHN1c3BlY3RzP1wiIExldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgZmxhZ3MgY29kZSB0aGF0J3MgdGllZCB0byBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gIGBhdGg5a2AsIHRoZSBBdGhlcm9zIDgwMi4xMW4gZHJpdmVyLCBpcyBhIFBDSWUgZGV2aWNlLiBJcyB0aGlzIGRyaXZlciB2ZW5kb3Igc3BlY2lmaWM/IE5vLCBpdCdzIHByZXR0eSBzdGFuZGFyZCBmb3IgV2ktRmkuXG5cblRoZSBjb3JlIHF1ZXN0aW9uIGlzIGVtdWxhYmlsaXR5IHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGUgZnVsbCBoYXJkd2FyZSByZXF1aXJlbWVudHMgb2YgYGF0aDlrYC4gIFN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLi4uIGFuZCBJIGluaXRpYWxseSB0aG91Z2h0IFwiQmluZ28hXCIgYmVjYXVzZSBpdCBjYW4gc2ltdWxhdGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gSG93ZXZlciwgdGhlIHByb21wdCBoYXMgYSBuZWdhdGl2ZSBmaWx0ZXIhIEl0ICpleHBsaWNpdGx5KiBleGNsdWRlcyBcInZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLlwiIFdoaWxlIGBhdGg5a2AgaXMgbm90ICpleGFjdGx5KiBhIFwic3dpdGNoLFwiIFwiU21hcnROSUMsXCIgb3IgXCJHUFUsXCIgaXQgRE9FUyByZXF1aXJlIGEgcGh5c2ljYWwgY2FyZC4gU28sIHRoaXMgbWlnaHQgYmUgYSBub24tc3RhcnRlci5cblxuU3l6a2FsbGVyIGRvZXMgaGF2ZSBgbWFjODAyMTFfaHdzaW1gIGZvciBXaS1GaSBmdXp6aW5nLCBidXQgYGF0aDlrYCAqaXNuJ3QqIGBtYWM4MDIxMV9od3NpbWAuIEFsc28gdGhlcmUgaXMgYGF0aDlrX2h0Y2AsIHdoaWNoIGlzIGEgVVNCIGRldmljZSB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0IgZnV6emVyLiBIb3dldmVyLCB0aGlzIHBhdGNoIGlzIGluIGB4bWl0LmNgIHdoaWNoIGRvZXMgbm90IGdldCBjb21waWxlZCBmb3IgYGF0aDlrX2h0Y2AuIEhtbS5cblxuVGhlIGtleSBpcyByZWFjaGFiaWxpdHkgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LiBUaGUgc3l6a2FsbGVyIFBDSSBmdXp6ZXIgKmNvdWxkKiB0ZWNobmljYWxseSBwcm9iZSBhbmQgdHJ5IHRvIHJlYWNoIGBhdGhfdHhfc3RhcnRgLiBCdXQsIFBDSSBmdXp6aW5nIGlzIGdlbmVyYWxseSBzaGFsbG93IGFuZCBpdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHRoZSBzeXprYWxsZXIgUENJIGZ1enplciB3aWxsIGJlIGFibGUgdG8gZnVsbHkgaW5pdGlhbGl6ZSB0aGUgY29tcGxpY2F0ZWQgTUFDL1BIWSBzdGF0ZSBtYWNoaW5lIHJlcXVpcmVkIHRvIGdldCB0aGlzIGRldmljZSByZWdpc3RlcmVkIGluIGBtYWM4MDIxMWAgYW5kIGFjdHVhbGx5IGV4ZWN1dGUgdGhlIHRyYW5zbWlzc2lvbiBwYXRoLlxuXG5TbywgaG93IHdhcyB0aGlzIGJ1ZyBmb3VuZD8gVGhlIGNvbW1pdCBtZXNzYWdlIHJlZmVyZW5jZXMgXCJzeXotY2x1c3RlcixcIiB3aGljaCBzdWdnZXN0cyBpdCB3YXMgZm91bmQgYnkgc3l6a2FsbGVyLiBIb3dldmVyLCBzeXprYWxsZXIgZG9lcyBydW4gb24gcmVhbCBoYXJkd2FyZS4gIFRoZSBwcm9tcHQgdGhlbiBleHBsaWNpdGx5IGV4Y2x1ZGVzIHBhdGhzIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIiAgU2luY2UgYGF0aDlrYCByZXF1aXJlcyBhICpwaHlzaWNhbCogUENJZSBjYXJkLCBhbmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgV2ktRmkgY2FyZHMuLi4gdGhlIG1hdGggaXMgc3RhcnRpbmcgdG8gYmVjb21lIGNsZWFyLlxuXG5RRU1VIGRvZXNuJ3Qgb2ZmZXIgYGF0aDlrYC4gSXQgaGFzIE5JQyBlbXVsYXRpb25zIGxpa2UgYG5lMmtfcGNpYCwgYGUxMDAwYCwgYHJ0bDgxMzlgLCBldGMuLCBidXQgbm90aGluZyBmb3IgV2ktRmkuIEl0IGFwcGVhcnMgdGhhdCBXaS1GaSBmdXp6aW5nIGluIFN5emthbGxlciBpcyBleGNsdXNpdmVseSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAuXG5cblRoZXJlZm9yZSwgdGhlIGNvZGUgcGF0aCB0aGF0IHJlYWNoZXMgYGF0aF90eF9zdGFydGAgdGhyb3VnaCBgYXRoOWtgIGlzIGltcG9zc2libGUgdG8gdHJpZ2dlciB0aHJvdWdoIGVtdWxhdGlvbi4gSXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBjYXJkLlxuXG5HaXZlbiBhbGwgb2YgdGhpcywgSSBzaG91bGQgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBKdXN0IHRvIGJlIHNhZmUsIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgdGhhdCBgeG1pdC5jYCBpc24ndCBpbmNsdWRlZCBpbiBgYXRoOWtfaHRjYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NjEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU3OjE3LjgwNDE3Nzg1MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3MzU5MzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2h0Yy15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY2PWF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwpICs9IGNvbW1vbi1zcGVjdHJhbC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2ODphdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY5LVxcdFxcdGhpZl91c2IubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU3OjE3LjkyMTU0NjI1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Njg5MDQ3NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQXRoZXJvcyBEcml2ZXIgTWFrZWZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGNpcmNsZSBiYWNrIGFuZCBnaXZlIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlYCBhbm90aGVyIGxvb2suIEkgc3VzcGVjdCB0aGVyZSdzIGEgc3BlY2lmaWMgZmxhZyBvciB0YXJnZXQgSSBvdmVybG9va2VkLCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSByZWNlbnQga2VybmVsIHVwZGF0ZSBvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgdmFyaWFudC4gSSdtIHRoaW5raW5nIEkgbWlnaHQgaGF2ZSBtaXNzZWQgc29tZXRoaW5nIHN1YnRsZSBpbiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcywgb3IgbWF5YmUgYSBkZXBlbmRlbmN5IHRoYXQgd2FzIGludHJvZHVjZWQgb3IgY2hhbmdlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVu4oCZdCBtYWRlIGFuIGluY29ycmVjdCBhc3N1bXB0aW9uIG9uIGhvdyBtb2R1bGVzIGFyZSBidWlsdCBhbmQgbGlua2VkIHdpdGhpbiB0aGUgYXRoOWsgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gY2FyZWZ1bGx5IHN0ZXAgdGhyb3VnaCB0aGUgbG9naWMgYWdhaW4sIGRvdWJsZS1jaGVja2luZyB0aGUgdmFyaWFibGVzLCBpbmNsdWRlIHBhdGhzLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBjcm9zcy1jb21waWxhdGlvbiBjb25maWd1cmF0aW9ucywgcGFydGljdWxhcmx5IGlmIHRoZXJlIGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGlmZmVyZW5jZXMgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgTWFrZWZpbGUgaXMgb3JjaGVzdHJhdGVkIGluIGNvbXBhcmlzb24gdG8gb3RoZXJzIHdpdGhpbiB0aGUgYXRoOWsgbW9kdWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU3OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE4OjU3OjIyLjc5MDQ1NDMzMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2OTg3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieG1pdFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgKz1cXHRiZWFjb24ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cXHRcXHRyZWN2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OlxcdFxcdHhtaXQubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgtXFx0XFx0bGluay5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6MjIuODQ4MTU4NDZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyNjU0NzE4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGB4bWl0Lm9gIOKAkyB0aGF0J3Mgb25seSBpbiBgYXRoOWsteWAsIGFuZCBgYXRoOWsteWAgaXMgY29tcGlsZWQgaW50byBgYXRoOWsub2AuIGBhdGg5ay5vYCBpcyB0aGUgUENJL0FIQiBkcml2ZXIsIHJpZ2h0PyBIbW0sIGlzIHRoZXJlIGFueSBvdGhlciB3YXkgYGF0aDlrLm9gIGdldHMgdXNlZD8gTm8sIHRoYXQgbG9va3MgcmlnaHQ7IGBvYmotJChDT05GSUdfQVRIOUspICs9IGF0aDlrLm9gIGNvbmZpcm1zIGBDT05GSUdfQVRIOUtgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZyBmb3IgdGhlIFBDSS9BSEIgZHJpdmVyLlxuXG5UaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjb3VsZCB0aGlzIGRyaXZlciBzb21laG93IGJlIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQnV0LCBpdCdzIGEgKmhhcmR3YXJlKiBkcml2ZXIsIHNvIG5vLiBUaGF0IGZpcm1seSBwdXRzIGl0IGludG8gdGhlIGNhdGVnb3J5IG9mIFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyxcIiBldmVuIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS5cblxuSG9sZCBvbiwgd2hhdCBhYm91dCBTeXprYWxsZXIncyBQQ0kgZnV6emVyPyBUaGF0IHRoaW5nJ3MgcHJldHR5IGNsZXZlci4gSXQgd29ya3MgYnkgaW50ZXJjZXB0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMvd3JpdGVzIGFuZCBNTUlPIHJlYWRzL3dyaXRlcywgbWVhbmluZyBpdCAqY291bGQqIHRoZW9yZXRpY2FsbHkgdHJpZ2dlciB0aGUgYHByb2JlYCBmdW5jdGlvbiBvZiBhbnkgUENJIGRyaXZlci4gQ291bGQgaXQgcmVhY2ggYGF0aF90eF9zdGFydGA/IFJlbWVtYmVyLCBgYXRoX3R4X3N0YXJ0YCBpcyBjYWxsZWQgYnkgYG1hYzgwMjExYCB3aGVuIGEgcGFja2V0IGlzIHRyYW5zbWl0dGVkLiBGb3IgYG1hYzgwMjExYCB0byBldmVuICpjYWxsKiBgYXRoX3R4X3N0YXJ0YCwgdGhlIGBhdGg5a2AgZHJpdmVyIG5lZWRzIHRvIHJlZ2lzdGVyIGEgYHdpcGh5YCBhbmQgYSBgbmV0X2RldmljZWAgc3VjY2Vzc2Z1bGx5LCBhbmQgdGhlbiB0aGUgaW50ZXJmYWNlIG5lZWRzIHRvIGJlIGJyb3VnaHQgdXAuIFRoYXQgbWVhbnMgYHByb2JlYCBoYXMgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LiBUaGF0J3MgYSBodWdlIGh1cmRsZSDigJMgaXQgaW52b2x2ZXMgcmVhZGluZyB0aGUgTUFDIGFkZHJlc3MgZnJvbSB0aGUgRUVQUk9NLCBpbml0aWFsaXppbmcgdGhlIFBIWSwgcmFkaW8gY2FsaWJyYXRpb24sIGFuZCBzbyBvbi4gSXQncyBpbmNyZWRpYmx5IHVubGlrZWx5IHRoYXQgYSBkdW1iIFBDSSBmdXp6ZXIgY291bGQgZmVlZCBpdCB0aGUgZXhhY3QgTU1JTyBzZXF1ZW5jZSBuZWVkZWQgdG8gc2F0aXNmeSBhbGwgdGhvc2UgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gY2hlY2tzIGFuZCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXIgdGhlIGRldmljZS5cblxuRXZlbiBpZiBieSBzb21lIG1pcmFjbGUgaXQgKmNvdWxkKiwgdGhlIHByb21wdCBzYXlzIHRoaXM6IFwiQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgV2hpbGUgYGF0aDlrYCBpc24ndCBhIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSwgaXQgaXMgYSBkcml2ZXIgdGhhdCBhYnNvbHV0ZWx5IHJlcXVpcmVzIGEgKnBoeXNpY2FsKiBQQ0llIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFNvLCB0aGUgcmlnaHQgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLiBpcyB0aGVyZSAqYW55KiBRRU1VIGVtdWxhdGlvbiBmb3IgYGF0aDlrYD8gTm8sIG5vdGhpbmcuIEFueSBvdGhlciBzb2Z0d2FyZSBlbXVsYXRpb24/IE5vcGUuIEFuZCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGlzIGBhdGg5a19odGNgIHNvbWVob3cgaW5jbHVkaW5nIGB4bWl0LmNgPyBgYXRoOWtfaHRjYCB1c2VzIGBodGNfZHJ2X3R4cnguY2AgZm9yIHRyYW5zbWl0L3JlY2VpdmUsIHNvIHRoYXQgaXMgbm90IHRoZSBjYXNlLiBPa2F5LCBJJ20gY29uZmlkZW50IGluIHNheWluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5NDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6MzMuMTEzNjMzMjE2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTI0MDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGhfbWVyZ2VfcmF0ZXRibFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTUzPXN0YXRpYyB2b2lkIGF0aF9zZW5kX2JhcihzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwgdTE2IHNlcW5vKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoxNjI6c3RhdGljIGJvb2wgYXRoX21lcmdlX3JhdGV0Ymwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IGF0aF9idWYgKmJmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTYzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MTk4PXN0YXRpYyB2b2lkIGF0aF9zZXRfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjA1OlxcdGlmICghYXRoX21lcmdlX3JhdGV0Ymwoc3RhLCBiZiwgdHhfaW5mbykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMDYtXFx0XFx0aWVlZTgwMjExX2dldF90eF9yYXRlcyh2aWYsIHN0YSwgYmYtXFx1MDAzZWJmX21wZHUsIGJmLVxcdTAwM2VyYXRlcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6MzMuMjEyODc4NDA1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTY4NTAwOTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBgYXRoX21lcmdlX3JhdGV0YmxgIGlzIGV4Y2x1c2l2ZWx5IGluIGB4bWl0LmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGJvdW5kIHRvIHRoZSBQQ0kvQUhCIGRyaXZlci4gVGhhdCdzIHRoZSBrZXkuIE5vdywgbGV0J3Mgc3RlcCB0aHJvdWdoIHRob3NlIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGNyaXRlcmlhIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuKiAgIERvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzPyBOb3BlLCB0aGlzIGlzIGluIHRoZSBoZWFydCBvZiB0aGUgY29kZS5cbiogICBEZWNvcmF0aXZlIGNoYW5nZXM/IE5vIHdheS4gVGhpcyBpcyBmdW5jdGlvbmFsLlxuKiAgIE51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0PyBEZWZpbml0ZWx5IG5vdCB0aGUgY2FzZSBoZXJlLlxuKiAgIFVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/ICoqQmluZ28uKiogVGhlIGBhdGg5a2AgZHJpdmVyLCB0aGUgb25lIHRoaXMgY2hhbmdlIGltcGFjdHMsIG5lZWRzIGEgKnBoeXNpY2FsKiBQQ0llIGNhcmQgb3IsIGluIHNvbWUgY2FzZXMsIEFIQi4gV2UgYXJlIG5vdCB0YWxraW5nIGFib3V0IHNvbWV0aGluZyB0aGF0J3MgZW11bGF0ZWQgYXQgYSB1c2FibGUgbGV2ZWwgaW4gc3RhbmRhcmQgUUVNVS4gVGhpbmdzIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0IGRvbid0IGN1dCBpdC4gVGhleSBjYW4ndCBzaW11bGF0ZSB0aGUgdW5kZXJseWluZyBBdGhlcm9zIGhhcmR3YXJlLlxuKiAgIFZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVT8gVGhhdCdzIGFsc28gaXJyZWxldmFudC5cbiogICBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzPyBOb3BlLCBub3QgYXBwbGljYWJsZSBoZXJlLlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2xpbmNoZXIgaXMgdGhhdCB0aGUgYGF0aDlrYCBkcml2ZXIsIHRoZSB0YXJnZXQgb2YgdGhlIHBhdGNoLCBuZWVkcyAqcmVhbCogaGFyZHdhcmUsIHdoaWNoIG1lYW5zIGl0IG5lYXRseSBmaXRzIHRoZSBcImltcG9zc2libGUgdG8gcmVhY2hcIiBjYXRlZ29yeSBpbiBjb21tb24gdmlydHVhbGl6YXRpb24gc2V0dXBzLiBUaGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGNoYW5nZSBpcyBpbiBgeG1pdC5jYCB3aGljaCBJIGltbWVkaWF0ZWx5IHNlZSBpcyBhbiBpbmRpY2F0b3IgdGhhdCBpdCBpcyBsaWtlbHkgQUhCIG9yIFBDSS1zcGVjaWZpYywgYW5kIG5vdCBhIGNhbmRpZGF0ZSBmb3IgYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgcmVhc29uaW5nIHNlZW1zIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU3NywiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6NDMuMzgxMzgyMjQyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDlrIGRyaXZlciAoeG1pdC5jKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEF0aGVyb3MgODAyLjExbiBQQ0kvUENJZS9BSEIgd2lyZWxlc3MgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0ICh1bmxpa2UgYXRoOWtfaHRjKS4gVGh1cywgaXQgaXMgaW1wb3NzaWJsZSB0byBtZWFuaW5nZnVsbHkgZnV6eiB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDlrIGRyaXZlciAoeG1pdC5jKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIEF0aGVyb3MgODAyLjExbiBQQ0kvUENJZS9BSEIgd2lyZWxlc3MgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgYW5kIHRoZSBjb2RlIHBhdGggY2Fubm90IGJlIHJlYWNoZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0ICh1bmxpa2UgYXRoOWtfaHRjKS4gVGh1cywgaXQgaXMgaW1wb3NzaWJsZSB0byBtZWFuaW5nZnVsbHkgZnV6eiB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTg6NTc6NDMuMzgxNDE2NzMyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow95hfx[1] Phase: Running StartedAt: 2026-08-13 18:57:53 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95hfx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-13 18:57:53 +0000 UTC FinishedAt: 2026-08-13 18:58:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}