Name: series-workflow4r828 Phase: Failed StartedAt: 2026-08-27 14:01:50 +0000 UTC FinishedAt: 2026-08-27 15:34:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r828[0] Phase: Succeeded StartedAt: 2026-08-27 14:01:50 +0000 UTC FinishedAt: 2026-08-27 15:34:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r828[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 14:01:50 +0000 UTC FinishedAt: 2026-08-27 15:34:34 +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+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MThtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIHRhYmxlIHBhcnNpbmcgaW4gdGhlIE1lZGlhVGVrIFdpLUZpIGRyaXZlciAobXQ3NikuIFRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZHJpdmVyIHN1Y2Nlc3NmdWxseSByZWFkcyB0aGUgXCYjMzQ7TVRHU1wmIzM0OyBBQ1BJIG9iamVjdCBmcm9tIHRoZSBzeXN0ZW0mIzM5O3MgQUNQSSB0YWJsZXMuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB2aXJ0dWFsIGRldmljZXMgZG8gbm90IGhhdmUgdGhlc2Ugc3BlY2lmaWMgQUNQSSBoYW5kbGVzIG9yIHRhYmxlcywgY2F1c2luZyB0aGUgQUNQSSByZWFkIHRvIGZhaWwgYW5kIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gZWFybHkgYmVmb3JlIHJlYWNoaW5nIHRoZSBtb2RpZmllZCBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5OWY2YmJmODAxNWI4YzIzOTI0MGEzZWE0ZWQ0YmZkZDg4NmVkZWYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTU6MTU6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcbmluZGV4IDk0NmRkNzk1NmU0YTAuLmZhNTM5Y2RlNTJiNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXG5AQCAtMjgwLDcgJiM0MzsyODAsMTUgQEAgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbiBcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiBcbiBcdGdlb19wb3dlciA9IChiYW5kX3B3ciAmIzQzOyBpZHgpLVx1MDAzZXB3cjtcbi1cdGR5bl9wb3dlciAmIzQzOz0gKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0O1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQVNVUyAoYW5kIHNvbWUgb3RoZXIgT0VNKSBBQ1BJIE1UR1MgdGFibGVzIGZpbGwgdW51c2VkIGdlb1xuJiM0MztcdCAqIHNsb3RzIHdpdGggMHhGRi4gV2luZG93cyB0cmVhdHMgdGhhdCBhcyBcJiMzNDtubyBjYXBcJiMzNDsuIExpbnV4IHRvb2tcbiYjNDM7XHQgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJiMzOTtkIGV2ZXJ5IHJhdGUgZG93biB0byB+MyBkQm0gdG1hYy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKHU4KWdlb19wb3dlciA9PSAweGZmKVxuJiM0MztcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiYjNDM7XHRpZiAoKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0ICE9IDB4ZmYpXG4mIzQzO1x0XHRkeW5fcG93ZXIgJiM0Mzs9IChiYW5kX3B3ciAmIzQzOyBpZHgpLVx1MDAzZW9mZnNldDtcbiBcbiBcdHJldHVybiBtaW4oZ2VvX3Bvd2VyLCBkeW5fcG93ZXIpO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xOG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIHRhYmxlIHBhcnNpbmcgaW4gdGhlIE1lZGlhVGVrIFdpLUZpIGRyaXZlciAobXQ3NikuIFRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZHJpdmVyIHN1Y2Nlc3NmdWxseSByZWFkcyB0aGUgXCYjMzQ7TVRHU1wmIzM0OyBBQ1BJIG9iamVjdCBmcm9tIHRoZSBzeXN0ZW0mIzM5O3MgQUNQSSB0YWJsZXMuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB2aXJ0dWFsIGRldmljZXMgZG8gbm90IGhhdmUgdGhlc2Ugc3BlY2lmaWMgQUNQSSBoYW5kbGVzIG9yIHRhYmxlcywgY2F1c2luZyB0aGUgQUNQSSByZWFkIHRvIGZhaWwgYW5kIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gZWFybHkgYmVmb3JlIHJlYWNoaW5nIHRoZSBtb2RpZmllZCBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5OWY2YmJmODAxNWI4YzIzOTI0MGEzZWE0ZWQ0YmZkZDg4NmVkZWYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjcgMTU6MTU6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYwppbmRleCA5NDZkZDc5NTZlNGEwLi5mYTUzOWNkZTUyYjU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMKQEAgLTI4MCw3ICYjNDM7MjgwLDE1IEBAIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksCiAJCXJldHVybiBkeW5fcG93ZXI7CiAKIAlnZW9fcG93ZXIgPSAoYmFuZF9wd3IgJiM0MzsgaWR4KS0mZ3Q7cHdyOwotCWR5bl9wb3dlciAmIzQzOz0gKGJhbmRfcHdyICYjNDM7IGlkeCktJmd0O29mZnNldDsKJiM0MzsJLyoKJiM0MzsJICogQVNVUyAoYW5kIHNvbWUgb3RoZXIgT0VNKSBBQ1BJIE1UR1MgdGFibGVzIGZpbGwgdW51c2VkIGdlbwomIzQzOwkgKiBzbG90cyB3aXRoIDB4RkYuIFdpbmRvd3MgdHJlYXRzIHRoYXQgYXMgJiMzNDtubyBjYXAmIzM0Oy4gTGludXggdG9vawomIzQzOwkgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJiMzOTtkIGV2ZXJ5IHJhdGUgZG93biB0byB+MyBkQm0gdG1hYy4KJiM0MzsJICovCiYjNDM7CWlmICgodTgpZ2VvX3Bvd2VyID09IDB4ZmYpCiYjNDM7CQlyZXR1cm4gZHluX3Bvd2VyOwomIzQzOwlpZiAoKGJhbmRfcHdyICYjNDM7IGlkeCktJmd0O29mZnNldCAhPSAweGZmKQomIzQzOwkJZHluX3Bvd2VyICYjNDM7PSAoYmFuZF9wd3IgJiM0MzsgaWR4KS0mZ3Q7b2Zmc2V0OwogCiAJcmV0dXJuIG1pbihnZW9fcG93ZXIsIGR5bl9wb3dlcik7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIEFDUEkgU0FSIENvZGUgaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNgLiBJdCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGlzc3VlIGluIHRoZSBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIGZ1bmN0aW9uLCB3aGVyZSBhIGAweGZmYCB2YWx1ZSBpcyBiZWluZyBpbmNvcnJlY3RseSBpbnRlcnByZXRlZCBhcyBgLTEgZEJtYCwgbGVhZGluZyB0byBwb3dlciBjYXBwaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGNvZGUgaW4gYSBRRU1VIGVudmlyb25tZW50PwoKVGhpcyBpcyBwYXJ0IG9mIHRoZSBNZWRpYVRlayBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgQUNQSSBTQVIgdGFibGUgcGFyc2luZy4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCBteSBndXQgdGVsbHMgbWUgdGhpcyBpcyB1c3VhbGx5IHRpZWQgdG8gYWN0dWFsIGhhcmR3YXJlLiBJcyBgbXQ3NmAgZW11bGF0ZWQ/IE5vLCBpdCYjMzk7cyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBUaG91Z2ggSSByZW1lbWJlciBgbWFjODAyMTFfaHdzaW1gLCB0aGF0JiMzOTtzIGRpZmZlcmVudC4gVGhhdCBzaW11bGF0ZXMgYSB3aXJlbGVzcyBkZXZpY2UsIGJ1dCBub3QgdGhpcyBzcGVjaWZpYyBkcml2ZXIuCgpTbywgdGhlIG5leHQgcXVlc3Rpb24gYmVjb21lczogaXMgaXQgKnBvc3NpYmxlKiB0byB0cmlnZ2VyIHRoaXMgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCBjb2RlIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IEl0IHNlZW1zIHVubGlrZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGNhbGxpbmcgaXQsIHNvIEkgc2hvdWxkIHJlYWxseSBsb29rIGF0IHRoZSBjYWxsZXJzIG9mIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgdG8gdW5kZXJzdGFuZCBob3cgaXQgaXMgaW52b2tlZCBpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyeF9hc2FyX2dldF9nZW9fcHdyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MjMzPXN0YXRpYyBzOFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMzQ6bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM1LVx0XHRcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHM4IGR5bl9wb3dlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5Nz1tdDc5MnhfYXNhcl9yYW5nZV9wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzI2Olx0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMyNy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgKioKCk9rYXksIHNvIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgaXMgY2FsbGVkIHRocm91Z2ggYG10NzkyeF9hc2FyX3JhbmdlX3B3cmAsIGFuZCB0aGF0JiMzOTtzIHByb2JhYmx5IHRyaWdnZXJlZCB3aGVuIHNldHRpbmcgdHJhbnNtaXNzaW9uIHBvd2VyLCB3aGljaCBpcyBhIGtleSBhcmVhIGZvciBmdXp6aW5nLiBOb3csIHRoaXMgaXMgcGFydCBvZiB0aGUgYG10NzZgIGRyaXZlciBzdWl0ZSwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgaGFyZHdhcmUtc3BlY2lmaWMsIHNwZWNpZmljYWxseSBNZWRpYVRlayBXaS1GaSBjYXJkcy4gV2Uga25vdyB0aGlzIG1lYW5zIGVpdGhlciBQQ0llIG9yIFVTQiBpbXBsZW1lbnRhdGlvbnMuIFRoZSB1c3VhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2UgdXNlIGFyZW4mIzM5O3QgZ29pbmcgdG8gY3V0IGl0LCBhdCBsZWFzdCBub3QgZGlyZWN0bHkuIEkgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBjb252aW5jaW5nIFVTQiBlbXVsYXRpb24uIFdlIGRvbiYjMzk7dCBoYXZlIGEgTWVkaWFUZWsgV2ktRmkgVVNCIGdhZGdldCBzZXQgdXAgaW4gb3VyIHN5emthbGxlci9RRU1VIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCldhaXQgYSBzZWNvbmTigKYgd2FzbiYjMzk7dCBgbXQ3OTIxdWAgYSBVU0IgZHJpdmVyPyAqVGhhdCogY2hhbmdlcyB0aGluZ3MuIENvdWxkIHdlIHJlYWNoIHRoaXMgdGhyb3VnaCBVU0IgZnV6emluZyB0aGVuPyBUaGlzIGlzIHdvcnRoIGludmVzdGlnYXRpbmcuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29tcGlsYXRpb24gYW5kIGNoZWNrIGlmIGBtdDc5MnhfYWNwaV9zYXIuY2AgaXMgYWN0dWFsbHkgY29tcGlsZWQgZm9yIFVTQi4gVGhpcyBpcyBhIHZlcnkgcHJvbWlzaW5nIGxlYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTJ4X2FjcGlfc2FyLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT00MD1tdDc5MngtbGliLXkgOj0gbXQ3OTJ4X2NvcmUubyBtdDc5MnhfbWFjLm8gbXQ3OTJ4X3RyYWNlLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDEtXHRcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQyOm10NzkyeC1saWItJChDT05GSUdfQUNQSSkgJiM0Mzs9IG10NzkyeF9hY3BpX3Nhci5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQzLW10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzMzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCk9rYXksIHNvIGBtdDc5MnhfYWNwaV9zYXIub2AgaXMgZGVmaW5pdGVseSBhIGNvbXBvbmVudCBvZiB0aGUgYG10NzkyeC1saWJgIG1vZHVsZSwgYW5kIHRoYXQgbGlicmFyeSBpcyBmdW5kYW1lbnRhbCB0byB0aGUgb3BlcmF0aW9uIG9mIGJvdGggdGhlIGBtdDc5MjF1YCAoVVNCKSBhbmQgYG10NzkyMWVgIChQQ0llKSB2YXJpYW50cy4gVGhhdCYjMzk7cyBnb29kIHRvIGVzdGFibGlzaC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgY2FuIHdlIGV4cGxvaXQgdGhlIEFDUEkgU0FSIHRhYmxlIGhhbmRsaW5nIHRocm91Z2ggdGhlIFVTQiBpbnRlcmZhY2U/IEl0JiMzOTtzIGFuIGludGVyZXN0aW5nIGF2ZW51ZSB0byBleHBsb3JlLiBXZSBrbm93IHRoYXQgdGhlIEFDUEkgU0FSIGRhdGEgaXNuJiMzOTt0IGp1c3QgcHVsbGVkIGZyb20gdGhpbiBhaXI7IGl0JiMzOTtzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgc3lzdGVtJiMzOTtzIEFDUEkgdGFibGVzLiBNZXRob2RzIGxpa2UgYGFjcGlfZXZhbHVhdGVfb2JqZWN0YCBhcmUgbGlrZWx5IGludm9sdmVkIGluIHRoZSBwcm9jZXNzLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byBgbXQ3OTJ4X2FjcGlfc2FyLmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKnByZWNpc2VseSogaG93IHRoYXQgbW9kdWxlIGludGVyZmFjZXMgd2l0aCBhbmQgcmV0cmlldmVzIHRoZSBBQ1BJIGRhdGEuIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdyBmcm9tIEFDUEkgdG8gdGhlIG1vZHVsZSBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyB0byBpbnRyb2R1Y2UgYW5kIGZ1enogdGhpcyBkYXRhIHZpYSBhIFVTQiBjb25uZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWNwaV9ldmFsdWF0ZV9vYmplY3QuKm10NzkyeCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzNwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlLCBzdGFydGluZyB3aXRoIGEgKipib2xkZWQgaGVhZGVyKio6CgoqKkRpZ2dpbmcgaW50byB0aGUgQUNQSSBEYXRhIEFjcXVpc2l0aW9uIGluIG10NzkyeF9hY3BpX3Nhci5jKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGhvdyBgbXQ3OTJ4X2FjcGlfc2FyLmNgIGhhbmRsZXMgQUNQSSBkYXRhLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBTQVIgKFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSkgbWVhc3VyZW1lbnRzIGFyZSBoYW5kbGVkLCBhbmQgdWx0aW1hdGVseSwgaG93IHBvd2VyIG1hbmFnZW1lbnQgYW5kIHJlZ3VsYXRvcnkgY29tcGxpYW5jZSBwbGF5IG91dCBpbiB0aGlzIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGFjcXVpc2l0aW9uIHBhdGgsIHBpbnBvaW50aW5nIHdoZXJlIHRoZSBBQ1BJIGluZm9ybWF0aW9uIGlzIGZldGNoZWQsIHZhbGlkYXRlZCwgYW5kIHRoZW4gc3Vic2VxdWVudGx5IHVzZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhleSYjMzk7cmUgZm9sbG93aW5nIHN0YW5kYXJkIEFDUEkgbWV0aG9kcyBvciBlbXBsb3lpbmcgc29tZSB2ZW5kb3Itc3BlY2lmaWMgcXVpcmtzLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIHNvdXJjZSB3aWxsIGNsYXJpZnkgdGhlIHZhbGlkaXR5IG9mIHRoZSBkYXRhIHRoZXkmIzM5O3JlIHVzaW5nIHRvIGNvbnRyb2wgdGhlIHBvd2VyIHRyYW5zbWl0IGxldmVscy4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGlzLCBhbmQgaWYgaXQmIzM5O3MgdXAgdG8gcGFyIHdpdGggdGhlIHJlbGV2YW50IEFDUEkgc3BlY2lmaWNhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgaGFuZGxpbmcgZXJyb3JzIGFuZCBlZGdlIGNhc2VzIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWNwaV9ldmFsdWF0ZV9vYmplY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MzA9bXQ3OTJ4X2FjcGlfcmVhZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqbWV0aG9kLCB1OCAqKnRibCwgdTMyICpsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDg6XHRzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE5VTEwsIE5VTEwsIFx1MDAyNmJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ5LVx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQyCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEFDUEkgVGFibGUgSW50ZXJhY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgY2xlYXJseSB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCBBQ1BJIHRhYmxlcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGl0JiMzOTtzIHJlYWRpbmcgdGhvc2UgdGFibGVzIHRvIGdldCBzeXN0ZW0gaW5mb3JtYXRpb24uJiMzNDsgSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2hpY2gsIGxldCYjMzk7cyBiZSBob25lc3QsIGlzIHdoZXJlIEkmIzM5O2xsIHByb2JhYmx5IGJlIHRlc3RpbmcgdGhpcyBpbml0aWFsbHkgd2l0aCBRRU1VLCB0aGUgQUNQSSB0YWJsZXMgKmFyZSogcHJvdmlkZWQgYnkgdGhlIGh5cGVydmlzb3IgaXRzZWxmLiBVbmxlc3MgSSYjMzk7dmUgdGFrZW4gc3BlY2lmaWMgc3RlcHMgdG8gaW5qZWN0IGN1c3RvbSB0YWJsZXMsIG9yIEkmIzM5O20gZG9pbmcgc29tZXRoaW5nIGNsZXZlciB0byBtb2NrIHRoZSBBQ1BJIGV2YWx1YXRpb24gcHJvY2VzcywgdGhpcyB0aGluZyBpcyBqdXN0IGdvaW5nIHRvIGJhaWwgb3V0IHdoZW4gaXQgY2FuJiMzOTt0IGZpbmQgdGhlIGV4cGVjdGVkIEFDUEkgb2JqZWN0LCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuIFRoZSBjb2RlIHdpbGwgc2ltcGx5IHJldHVybiBlYXJseSwgYW5kIHRoYXQmIzM5O3Mgbm90IGdvb2QuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgbXQ3OTJ4X2FjcGlfcmVhZGAgYW5kIHNlZSB3aGF0IHRoYXQmIzM5O3MgYWN0dWFsbHkgZG9pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGF0dGVtcHRpbmcgdG8gYWNjZXNzIHRoZSBBQ1BJIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0LyogQ29weXJpZ2h0IChDKSAyMDIzIE1lZGlhVGVrIEluYy4gKi9cbiAgIDM6XHRcbiAgIDQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9hY3BpLmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcJiMzNDttdDc5MnguaFwmIzM0O1xuICAgNjpcdFxuICAgNzpcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9hbGxbXSA9IHtcbiAgIDg6XHRcdFwmIzM0OzAwXCYjMzQ7LCBcJiMzNDtFVVwmIzM0OywgXCYjMzQ7QVJcJiMzNDssIFwmIzM0O0FVXCYjMzQ7LCBcJiMzNDtBWlwmIzM0OywgXCYjMzQ7QllcJiMzNDssIFwmIzM0O0JPXCYjMzQ7LCBcJiMzNDtCUlwmIzM0OyxcbiAgIDk6XHRcdFwmIzM0O0NBXCYjMzQ7LCBcJiMzNDtDTFwmIzM0OywgXCYjMzQ7Q05cJiMzNDssIFwmIzM0O0lEXCYjMzQ7LCBcJiMzNDtKUFwmIzM0OywgXCYjMzQ7TVlcJiMzNDssIFwmIzM0O01YXCYjMzQ7LCBcJiMzNDtNRVwmIzM0OyxcbiAgMTA6XHRcdFwmIzM0O01BXCYjMzQ7LCBcJiMzNDtOWlwmIzM0OywgXCYjMzQ7TkdcJiMzNDssIFwmIzM0O1BIXCYjMzQ7LCBcJiMzNDtSVVwmIzM0OywgXCYjMzQ7UlNcJiMzNDssIFwmIzM0O1NHXCYjMzQ7LCBcJiMzNDtLUlwmIzM0OyxcbiAgMTE6XHRcdFwmIzM0O1RXXCYjMzQ7LCBcJiMzNDtUSFwmIzM0OywgXCYjMzQ7VUFcJiMzNDssIFwmIzM0O0dCXCYjMzQ7LCBcJiMzNDtVU1wmIzM0OywgXCYjMzQ7Vk5cJiMzNDssIFwmIzM0O0tIXCYjMzQ7LCBcJiMzNDtQWVwmIzM0OyxcbiAgMTI6XHR9O1xuICAxMzpcdFxuICAxNDpcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9ldVtdID0ge1xuICAxNTpcdFx0XCYjMzQ7QURcJiMzNDssIFwmIzM0O0FUXCYjMzQ7LCBcJiMzNDtCRVwmIzM0OywgXCYjMzQ7QkdcJiMzNDssIFwmIzM0O0NZXCYjMzQ7LCBcJiMzNDtDWlwmIzM0OywgXCYjMzQ7SFJcJiMzNDssIFwmIzM0O0RLXCYjMzQ7LFxuICAxNjpcdFx0XCYjMzQ7RUVcJiMzNDssIFwmIzM0O0ZJXCYjMzQ7LCBcJiMzNDtGUlwmIzM0OywgXCYjMzQ7REVcJiMzNDssIFwmIzM0O0dSXCYjMzQ7LCBcJiMzNDtIVVwmIzM0OywgXCYjMzQ7SVNcJiMzNDssIFwmIzM0O0lFXCYjMzQ7LFxuICAxNzpcdFx0XCYjMzQ7SVRcJiMzNDssIFwmIzM0O0xWXCYjMzQ7LCBcJiMzNDtMSVwmIzM0OywgXCYjMzQ7TFRcJiMzNDssIFwmIzM0O0xVXCYjMzQ7LCBcJiMzNDtNQ1wmIzM0OywgXCYjMzQ7TVRcJiMzNDssIFwmIzM0O05MXCYjMzQ7LFxuICAxODpcdFx0XCYjMzQ7Tk9cJiMzNDssIFwmIzM0O1BMXCYjMzQ7LCBcJiMzNDtQVFwmIzM0OywgXCYjMzQ7Uk9cJiMzNDssIFwmIzM0O1NLXCYjMzQ7LCBcJiMzNDtTSVwmIzM0OywgXCYjMzQ7RVNcJiMzNDssIFwmIzM0O1NFXCYjMzQ7LFxuICAxOTpcdFx0XCYjMzQ7Q0hcJiMzNDssXG4gIDIwOlx0fTtcbiAgMjE6XHRcbiAgMjI6XHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNjX2xpc3RfYmVbXSA9IHtcbiAgMjM6XHRcdFwmIzM0O0FSXCYjMzQ7LCBcJiMzNDtCUlwmIzM0OywgXCYjMzQ7QllcJiMzNDssIFwmIzM0O0NMXCYjMzQ7LCBcJiMzNDtJUVwmIzM0OywgXCYjMzQ7TVhcJiMzNDssIFwmIzM0O09NXCYjMzQ7LCBcJiMzNDtSVVwmIzM0OyxcbiAgMjQ6XHRcdFwmIzM0O1JXXCYjMzQ7LCBcJiMzNDtWTlwmIzM0OywgXCYjMzQ7S1JcJiMzNDssIFwmIzM0O1VBXCYjMzQ7LCBcJiMzNDtcJiMzNDssIFwmIzM0O1wmIzM0OywgXCYjMzQ7XCYjMzQ7LCBcJiMzNDtcJiMzNDssXG4gIDI1Olx0XHRcJiMzNDtFVVwmIzM0OywgXCYjMzQ7QVRcJiMzNDssIFwmIzM0O0NOXCYjMzQ7LCBcJiMzNDtDQVwmIzM0OywgXCYjMzQ7VFdcJiMzNDssIFwmIzM0O05aXCYjMzQ7LCBcJiMzNDtQSFwmIzM0OywgXCYjMzQ7VUtcJiMzNDssXG4gIDI2Olx0XHRcJiMzNDtVU1wmIzM0OyxcbiAgMjc6XHR9O1xuICAyODpcdFxuICAyOTpcdHN0YXRpYyBpbnRcbiAgMzA6XHRtdDc5MnhfYWNwaV9yZWFkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICptZXRob2QsIHU4ICoqdGJsLCB1MzIgKmxlbilcbiAgMzE6XHR7XG4gIDMyOlx0XHRzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmID0geyBBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTCB9O1xuICAzMzpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gIDM0Olx0XHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3Jvb3Q7XG4gIDM1Olx0XHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XG4gIDM2Olx0XHRhY3BpX3N0YXR1cyBzdGF0dXM7XG4gIDM3Olx0XHR1MzIgaSA9IDA7XG4gIDM4Olx0XHRpbnQgcmV0O1xuICAzOTpcdFxuICA0MDpcdFx0cm9vdCA9IEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KTtcbiAgNDE6XHRcdGlmICghcm9vdClcbiAgNDI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuICA0MzpcdFxuICA0NDpcdFx0c3RhdHVzID0gYWNwaV9nZXRfaGFuZGxlKHJvb3QsIG1ldGhvZCwgXHUwMDI2aGFuZGxlKTtcbiAgNDU6XHRcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcbiAgNDY6XHRcdFx0cmV0dXJuIC1FSU87XG4gIDQ3Olx0XG4gIDQ4Olx0XHRzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE5VTEwsIE5VTEwsIFx1MDAyNmJ1Zik7XG4gIDQ5Olx0XHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpXG4gIDUwOlx0XHRcdHJldHVybiAtRUlPO1xuICA1MTpcdFxuICA1MjpcdFx0c2FyX3Jvb3QgPSBidWYucG9pbnRlcjtcbiAgNTM6XHRcdGlmIChzYXJfcm9vdC1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9QQUNLQUdFIHx8XG4gIDU0Olx0XHQgICAgc2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5jb3VudCBcdTAwM2MgNCB8fFxuICA1NTpcdFx0ICAgIHNhcl9yb290LVx1MDAzZXBhY2thZ2UuZWxlbWVudHNbMF0udHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xuICA1NjpcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtzYXIgY250ID0gJWRcXG5cJiMzNDssXG4gIDU3Olx0XHRcdFx0c2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5jb3VudCk7XG4gIDU4Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gIDU5Olx0XHRcdGdvdG8gZnJlZTtcbiAgNjA6XHRcdH1cbiAgNjE6XHRcbiAgNjI6XHRcdGlmICghKnRibCkge1xuICA2MzpcdFx0XHQqdGJsID0gZGV2bV9remFsbG9jKG1kZXYtXHUwMDNlZGV2LCBzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmNvdW50LFxuICA2NDpcdFx0XHRcdFx0ICAgIEdGUF9LRVJORUwpO1xuICA2NTpcdFx0XHRpZiAoISp0YmwpIHtcbiAgNjY6XHRcdFx0XHRyZXQgPSAtRU5PTUVNO1xuICA2NzpcdFx0XHRcdGdvdG8gZnJlZTtcbiAgNjg6XHRcdFx0fVxuICA2OTpcdFx0fVxuICA3MDpcdFxuICA3MTpcdFx0aWYgKGxlbilcbiAgNzI6XHRcdFx0KmxlbiA9IHNhcl9yb290LVx1MDAzZXBhY2thZ2UuY291bnQ7XG4gIDczOlx0XG4gIDc0Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmNvdW50OyBpJiM0MzsmIzQzOykge1xuICA3NTpcdFx0XHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3VuaXQgPSBcdTAwMjZzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmVsZW1lbnRzW2ldO1xuICA3NjpcdFxuICA3NzpcdFx0XHRpZiAoc2FyX3VuaXQtXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUilcbiAgNzg6XHRcdFx0XHRicmVhaztcbiAgNzk6XHRcbiAgODA6XHRcdFx0KigqdGJsICYjNDM7IGkpID0gKHU4KXNhcl91bml0LVx1MDAzZWludGVnZXIudmFsdWU7XG4gIDgxOlx0XHR9XG4gIDgyOlx0XG4gIDgzOlx0XHRyZXQgPSBpID09IHNhcl9yb290LVx1MDAzZXBhY2thZ2UuY291bnQgPyAwIDogLUVJTlZBTDtcbiAgODQ6XHRmcmVlOlxuICA4NTpcdFx0a2ZyZWUoc2FyX3Jvb3QpO1xuICA4NjpcdFxuICA4NzpcdFx0cmV0dXJuIHJldDtcbiAgODg6XHR9XG4gIDg5Olx0XG4gIDkwOlx0LyogTVRDTCA6IENvdW50cnkgTGlzdCBUYWJsZSBmb3IgNkcgYmFuZCAqL1xuICA5MTpcdC8qIE1UQ0wgOiBDb3VudHJ5IExpc3QgVGFibGUgZm9yIDZHIGJhbmQgYW5kIDExQkUgKi9cbiAgOTI6XHRzdGF0aWMgaW50XG4gIDkzOlx0bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggKnZlcnNpb24pXG4gIDk0Olx0e1xuICA5NTpcdFx0aW50IGxlbiwgcmV0O1xuICA5NjpcdFxuICA5NzpcdFx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01UQ0wsIHRhYmxlLCBcdTAwMjZsZW4pO1xuICA5ODpcdFx0aWYgKHJldClcbiAgOTk6XHRcdFx0cmV0dXJuIHJldDtcbiAxMDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyMgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIG10NzkyeCBBQ1BJIFJlYWQgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG10NzkyeF9hY3BpX3JlYWRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBncmFiIGFuIEFDUEkgaGFuZGxlIGZyb20gYG1kZXYtJmd0O2RldmAsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHJlcHJlc2VudHMgdGhlIHBoeXNpY2FsIGRldmljZSwgZWl0aGVyIFBDSWUgb3IgVVNCLiBOb3csIHRoZSBpbW1lZGlhdGUgaXNzdWUgaXMgdGhhdCBpbiBRRU1VLCB3ZSBkb24mIzM5O3QgaGF2ZSBhIE1lZGlhVGVrIFdpLUZpIGRldmljZSBwcmVzZW50LCBzbyB0aGVyZSBpcyBubyByZWFsIEFDUEkgaGFuZGxlIHRvIGdldC4gRXZlbiBpZiBJIHdlcmUgdG8gc29tZWhvdyBtb2NrIHRoZSBkZXZpY2UsIGluamVjdGluZyB0aGUgcmVsZXZhbnQgQUNQSSB0YWJsZXMgaW50byBzeXprYWxsZXIgZm9yIHRlc3Rpbmcgc2VlbXMgbGlrZSBhIG5vbi1zdGFydGVyIHJpZ2h0IG5vdy4gCgpCdXQgaG9sZCBvbiwgaXMgdGhlcmUgKmFueSogd2F5IHRoaXMgY29kZSBwYXRoIGNvdWxkIGJlIGhpdD8gSSYjMzk7bSBkZWFsaW5nIHdpdGggdGhlIGBtdDc5MjFlYCwgYG10NzkyMXVgLCBgbXQ3OTI1ZWAsIGFuZCBgbXQ3OTI1dWAgZHJpdmVycy4gU3l6a2FsbGVyLCB3aXRoIGl0cyBhYmlsaXR5IHRvIGVtdWxhdGUgVVNCIGRldmljZXMgdXNpbmcgYGR1bW15X2hjZGAgYW5kIGByYXctZ2FkZ2V0YCwgY291bGQgY29uY2VpdmFibHkgY3JlYXRlIGEgVVNCIGRldmljZSB0aGF0IGJpbmRzIHRvIGBtdDc5MjF1YCBvciBgbXQ3OTI1dWAuIFRoYXQgKmNvdWxkKiBiZSBhIHdheSB0byB0cmlnZ2VyIHRoZSBjb2RlLCByaWdodD8gSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGF0IGBtdDc5MjF1YCBpcyBpbmRlZWQgYSBVU0IgZHJpdmVyLCB0byBzZWUgaWYgdGhhdCBwYXRoIGlzIGV2ZW4gdmlhYmxlLiBOZWVkIHRvIGNoZWNrIGlmIHRoaXMgaXMgcG9zc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMXUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTVQ3OTIxUykgJiM0Mzs9IG10NzkyMXMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVQ3OTIxVSkgJiM0Mzs9IG10NzkyMXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGUtNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZT0xMT1tdDc5MjFzLXkgOj0gc2Rpby5vIHNkaW9fbWFjLm8gc2Rpb19tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6MTI6bXQ3OTIxdS15IDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNTpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3OTIxdV9kZXZpY2VfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE2LVx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NzkwMiwgMHhmZiwgMHhmZiwgMHhmZiksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzY6bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM3LVx0XHRcdCBpbnQgY21kLCBpbnQgKnNlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjY1OnN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTcwLVx0XHQudGFpbHJvb20gPSBNVF9VU0JfVEFJTF9TSVpFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6NzE6XHRcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNzItXHRcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjFfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6ODk6c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE1MDpzdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTUxLVx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTcxLVx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTcyOlx0XHQubWN1X2luaXQgPSBtdDc5MjF1X21jdV9pbml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTczLVx0XHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3NDpcdFx0LnJlc2V0ID0gbXQ3OTIxdV9tYWNfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzUtXHR9O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTI2My0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoyNjQ6c3RhdGljIGludCBtdDc5MjF1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTI2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MjkxOnN0YXRpYyBpbnQgbXQ3OTIxdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0yOTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjMzNDpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXQ3OTIxdV9kZXZpY2VfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzM1LU1PRFVMRV9GSVJNV0FSRShNVDc5MjFfRklSTVdBUkVfV00pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM2PU1PRFVMRV9GSVJNV0FSRShNVDc5MjFfUk9NX1BBVENIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjMzODpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTIxdV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMzktXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQwOlx0LmlkX3RhYmxlXHQ9IG10NzkyMXVfZGV2aWNlX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQxOlx0LnByb2JlXHRcdD0gbXQ3OTIxdV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0Mi1cdC5kaXNjb25uZWN0XHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0My0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDQ6XHQuc3VzcGVuZFx0PSBtdDc5MjF1X3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDU6XHQucmVzdW1lXHRcdD0gbXQ3OTIxdV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDY6XHQucmVzZXRfcmVzdW1lXHQ9IG10NzkyMXVfcmVzdW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQ3LSNlbmRpZiAvKiBDT05GSUdfUE0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTAtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNjQKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAyMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBQ1BJIEludGVyYWN0aW9uIG9mIHRoZSBgbXQ3OTIxdWAgVVNCIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG10NzkyMXVgLCB3aGljaCBJIGtub3cgaXMgYSBVU0IgZHJpdmVyLCBhbmQgSSB1bmRlcnN0YW5kIHRoYXQgc3l6a2FsbGVyIGNhbiBiZSB1c2VkIHRvIGZ1enogVVNCIGRldmljZXMuIFRoZSBxdWVzdGlvbiB0aGF0JiMzOTtzIHBpcXVpbmcgbXkgaW50ZXJlc3QgaXMgd2hldGhlciBvciBub3QgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggQUNQSSB0YWJsZXMuIFRoZSBjb2RlIHN1Z2dlc3RzIGl0IG1pZ2h0LCB0aHJvdWdoIGBtdDc5MnhfYWNwaV9yZWFkYC4gVGhpcyBmdW5jdGlvbiBjYWxscyBgYWNwaV9nZXRfaGFuZGxlYCwgdXNpbmcgYEFDUElfSEFORExFKG1kZXYtJmd0O2RldilgLiBSaWdodCwgc28gZm9yIGEgVVNCIGRldmljZSwgYG1kZXYtJmd0O2RldmAgaXMgdGhlIGRldmljZSBzdHJ1Y3R1cmUgb2YgdGhlIFVTQiBpbnRlcmZhY2UsIGAmYW1wO3VzYl9pbnRmLSZndDtkZXZgLiBOb3csIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4uLiBkb2VzIGEgVVNCIGludGVyZmFjZSBkZXZpY2UgZXZlbiAqaGF2ZSogYW4gQUNQSSBoYW5kbGU/CgpUeXBpY2FsbHksIEFDUEkgaGFuZGxlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHBsYXRmb3JtIGRldmljZXMsIFBDSSBkZXZpY2VzLCBvciwgaW4gc29tZSBjYXNlcywgSTJDL1NQSSBkZXZpY2VzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgVVNCIGRldmljZXMgYXJlIHVzdWFsbHkgbm90IGRlc2NyaWJlZCB3aXRoaW4gQUNQSSB1bmxlc3MgdGhleSBhcmUgc3BlY2lmaWNhbGx5IGhhcmR3aXJlZCBhbmQgdGhlIGluZm9ybWF0aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBEU0RULiBFdmVuIHdoZW4gZW11bGF0aW5nIFVTQiBkZXZpY2VzIGluIFFFTVUsIHRoZSB2aXJ0dWFsIGRldmljZXMgSSYjMzk7dmUgY3JlYXRlZCBkb24mIzM5O3QgZXhwb3NlIGFuIEFDUEkgaGFuZGxlLiBUaGF0IG1lYW5zIGBBQ1BJX0hBTkRMRShtZGV2LSZndDtkZXYpYCBpcyB2ZXJ5IGxpa2VseSBnb2luZyB0byByZXR1cm4gTlVMTCBpbiB0aGlzIGNvbnRleHQuIExldCYjMzk7cyBzdGVwIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBgbXQ3OTJ4X2FjcGlfcmVhZGAgY29kZSB0byBjb25maXJtIHRoaXMgaHVuY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRtdDc5MnhfYWNwaV9yZWFkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICptZXRob2QsIHU4ICoqdGJsLCB1MzIgKmxlbilcbiAgMzE6XHR7XG4gIDMyOlx0XHRzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmID0geyBBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTCB9O1xuICAzMzpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gIDM0Olx0XHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3Jvb3Q7XG4gIDM1Olx0XHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XG4gIDM2Olx0XHRhY3BpX3N0YXR1cyBzdGF0dXM7XG4gIDM3Olx0XHR1MzIgaSA9IDA7XG4gIDM4Olx0XHRpbnQgcmV0O1xuICAzOTpcdFxuICA0MDpcdFx0cm9vdCA9IEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KTtcbiAgNDE6XHRcdGlmICghcm9vdClcbiAgNDI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuICA0MzpcdFxuICA0NDpcdFx0c3RhdHVzID0gYWNwaV9nZXRfaGFuZGxlKHJvb3QsIG1ldGhvZCwgXHUwMDI2aGFuZGxlKTtcbiAgNDU6XHRcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcbiAgNDY6XHRcdFx0cmV0dXJuIC1FSU87XG4gIDQ3Olx0XG4gIDQ4Olx0XHRzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE5VTEwsIE5VTEwsIFx1MDAyNmJ1Zik7XG4gIDQ5Olx0XHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDkwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtdDc5MnhfYWNwaV9yZWFkIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc5MnhfYWNwaV9yZWFkYCBmdW5jdGlvbiwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgTlVMTCBjaGVjayBvbiBgcm9vdGAuIElmIGByb290YCBpcyBOVUxMLCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIGAtRU9QTk9UU1VQUGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZDsgdGhlIGZ1bmN0aW9uIHNpbXBseSB3b24mIzM5O3Qgd29yayBpbiB0aGF0IGNhc2UuIFRoYXQgbWVhbnMgaWYgd2UgZW5jb3VudGVyIGEgYG10NzkyeF9hY3BpX3JlYWRgIGNhbGwsIGFuZCBpdOKAmXMgcmV0dXJuaW5nIGAtRU9QTk9UU1VQUGAsIGEgbGlrZWx5IGN1bHByaXQgY291bGQgYmUgdGhlIGByb290YCB2YXJpYWJsZSBiZWluZyBOVUxMLCBvciBzb21laG93IGJlY29taW5nIHNvIGR1cmluZyB0aGUgY2FsbC4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSBiZWluZyAqdXNlZCo/IEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBjYWxscyB0byBgbXQ3OTJ4X2FjcGlfcmVhZGAgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGlzIGVycm9yIGNvbmRpdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYW5kIHdoYXQgdGhvc2UgY29udGV4dHMgbG9vayBsaWtlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfYWNwaV9yZWFkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMDptdDc5MnhfYWNwaV9yZWFkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICptZXRob2QsIHU4ICoqdGJsLCB1MzIgKmxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9OTM9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggKnZlcnNpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy05Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6OTc6XHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVRDTCwgdGFibGUsIFx1MDAyNmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTk4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTExMz1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRkcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMTg6XHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVREUywgdGFibGUsIFx1MDAyNmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTExOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNDg9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggdmVyc2lvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTUyOlx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01UR1MsIHRhYmxlLCBcdTAwMjZsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTc5PW10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE4MzpcdHJldCA9IG10NzkyeF9hY3BpX3JlYWQoZGV2LCBNVDc5MnhfQUNQSV9NVEZHLCB0YWJsZSwgXHUwMDI2bGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTg0LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNDQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRXJyb3IgUHJvcGFnYXRpb24gaW4gTVQ3OTJ4IEFDUEkgUmVhZHMqKgoKQWxyaWdodCwgSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfKmAgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCB0aGV5JiMzOTtyZSBwcm9iYWJseSBqdXN0IHdyYXBwZXJzIGFyb3VuZCBgbXQ3OTJ4X2FjcGlfcmVhZGAuIEFuZCBpdCBsb29rcyBsaWtlIEkmIzM5O20gcmlnaHQ6IHRoZXkgYWxsIGltbWVkaWF0ZWx5IHJldHVybiBhbiBlcnJvciBpZiB0aGF0IGxvd2VyLWxldmVsIGZ1bmN0aW9uIGZhaWxzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwYXR0ZXJuLiBJdCYjMzk7cyBjbGVhbiBpbiBwcmluY2lwbGUgYnV0IGNhbiBwb3RlbnRpYWxseSBtYXNrIHRoZSAqc291cmNlKiBvZiB0aGUgaXNzdWUuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IHdoZXJlIGFyZSB0aGVzZSB3cmFwcGVyIGZ1bmN0aW9ucyAqY2FsbGVkKj8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsLiBJdCYjMzk7cyB0aW1lIHRvIHRyYWNlIHRoZSB1c2FnZSB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBBQ1BJIHJlYWQgcHJvY2Vzcy4gS25vd2luZyB0aGUgdXBzdHJlYW0gY29udGV4dCBpcyB3aGF0IG1hdHRlcnMuIFRoaXMgd2lsbCB0ZWxsIG1lICp3aHkqIHRoZSByZWFkIGlzIGhhcHBlbmluZyBhbmQgd2hhdCB0aGUgZmFsbG91dCB3aWxsIGJlIGlmIGl0IGZhaWxzLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE0Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE0ODptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjE0LVx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMTU6XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWdlbywgYXNhci1cdTAwM2V2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTYtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTgwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqSW5pdGlhbCBUaG91Z2h0cyBvbiBtdDc5MnhfaW5pdF9hY3BpX3NhcioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgYG10NzkyeF9pbml0X2FjcGlfc2FyYC4gSW1tZWRpYXRlbHksIHRoZSAmIzM0O0FDUEkmIzM0OyBpbiB0aGUgbmFtZSBjYXRjaGVzIG15IGV5ZS4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyByZWxhdGVkIHRvIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFBvd2VyIEludGVyZmFjZSBhbmQsIG1vcmUgc3BlY2lmaWNhbGx5LCBhIFNBUiB2YWx1ZS4gU0FSIHVzdWFsbHkgcmVmZXJzIHRvIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAtIHNvIHdlJiMzOTtyZSBsaWtlbHkgaW4gdGhlIHJlYWxtIG9mIHJhZGlvIGZyZXF1ZW5jeSBlbWlzc2lvbnMgYW5kIHJlZ3VsYXRvcnkgY29tcGxpYW5jZS4gVGhlICYjMzQ7bXQ3OTJ4JiMzNDsgcGFydCB0ZWxscyBtZSB3ZSYjMzk7cmUgd2l0aGluIHRoZSBNZWRpYVRlayBmYW1pbHksIHByb2JhYmx5IGEgV2lGaSBvciBwb3RlbnRpYWxseSBCbHVldG9vdGggY29udHJvbGxlci4gVGhpcyBzcGVjaWZpYyBmdW5jdGlvbiwgcHJlc3VtYWJseSBhIHBhcnQgb2YgdGhlIGluaXQgcHJvY2VzcywgaXMgd2hlcmUgdGhlIHN5c3RlbSBnZXRzIFNBUiBpbmZvcm1hdGlvbiwgbGlrZWx5IGluIHJlbGF0aW9uIHRvIHRoZSBkZXZpY2UuIEkgYmV0IHRoaXMgaXMgd2hlcmUgdGhlIGNvZGUgcmVhZHMgZnJvbSB0aGUgQUNQSSB0YWJsZXMgdG8gcmV0cmlldmUgdGhlIHBlcm1pc3NpYmxlIFJGIHBvd2VyIGxldmVscyBvciBzb21lIGZvcm0gb2YgY29udHJvbCBwYXJhbWV0ZXIuIE15IGd1ZXNzIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBkdXJpbmcgZWFybHkgc3lzdGVtIHN0YXJ0dXAsIGFzIHBhcnQgb2YgZGV2aWNlIGRyaXZlciBpbml0aWFsaXphdGlvbi4gVGhpcyBhbGwgc3VnZ2VzdHMgYSBjcml0aWNhbCBwaWVjZSBpbiBjb25maWd1cmluZyB0aGUgUkYgcG93ZXIgb3V0cHV0IG9mIHRoZSBkZXZpY2UgdG8gbWVldCB0aGUgcmVxdWlyZWQgcmVndWxhdG9yeSByZXF1aXJlbWVudHMuIFRoaXMgaXMgd2hlcmUgd2UgZW5zdXJlIHRoZSBkZXZpY2UgYWRoZXJlcyB0byBzYWZldHkgc3RhbmRhcmRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfaW5pdF9hY3BpX3NhciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMjE6XHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MTI4Nj1pbnQgbXQ3OTIxX3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMjk2LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjEyOTc6XHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTI5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjQzPWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTI6XHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTg3OT1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xODg5LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE4OTA6XHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTg5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTYzMD1pbnQgbXQ3OTJ4ZV9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjMyLSNpZmRlZiBDT05GSUdfQUNQSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzQ6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02MzUtdTggbXQ3OTJ4X2FjcGlfZ2V0X2ZsYWdzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MzY9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjM3LSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjYzODpzdGF0aWMgaW5saW5lIGludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02Mzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2NDM6c3RhdGljIGlubGluZSBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjQ0LVx0XHRcdFx0XHQgICAgIGJvb2wgc2V0X2RlZmF1bHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNzk9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Zmcoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTkzOmludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjMwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjk6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMzMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozNTQ6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTA1CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBBQ1BJIFNBUiBJbml0aWFsaXphdGlvbiBmb3IgTVQ3OTJ4IERldmljZXMqKgoKT2theSwgc28gYG10NzkyeF9pbml0X2FjcGlfc2FyYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRoYXQgbWFrZXMgc2Vuc2U7IHdlIHdhbnQgdG8gc2V0IHVwIHRoZSBTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUgKFNBUikgdGFibGVzIGVhcmx5IG9uLiBOb3csIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0IGBtdDc5MnhfYWNwaV9yZWFkYCBpcyB2ZXJ5IGxpa2VseSB0byBmYWlsIHJpZ2h0IG9mZiB0aGUgYmF0IGJlY2F1c2UgdGhlIEFDUEkgaGFuZGxlIGBBQ1BJX0hBTkRMRShtZGV2LSZndDtkZXYpYCBpcywgaW4gYWxsIHByb2JhYmlsaXR5LCBnb2luZyB0byBiZSBOVUxMLiBUaGlzLCBvZiBjb3Vyc2UsIGRpcmVjdGx5IGRlcGVuZHMgb24gdGhlIGhhcmR3YXJlIGFuZCB0aGUgQUNQSSBjb25maWd1cmF0aW9uLCBhbmQgSSBhbSBhbHJlYWR5IHBpY3R1cmluZyB0aGUgbGlrZWx5IHNjZW5hcmlvcyB0aGF0IGxlYWQgdG8gYEFDUElfSEFORExFYCBiZWluZyBOVUxMLgoKSWYgYG10NzkyeF9hY3BpX3JlYWRgIGZhaWxzLCBhbmQgSSBiZXQgaXQgd2lsbCwgYG10NzkyeF9pbml0X2FjcGlfc2FyYCBpcyBkZXNpZ25lZCB0byBlaXRoZXIgcmV0dXJuIGVhcmx5IG9yLCBldmVuIHdvcnNlLCBmYWlsIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIFNBUiB0YWJsZXMuIFNvLCB0aGlzIHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgZnVuY3Rpb24gaXRzZWxmIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgaGFuZGxlcyB0aGlzIGxpa2VseSBmYWlsdXJlIHNjZW5hcmlvLiBJIG5lZWQgdG8gZmlndXJlIG91dDogRG9lcyBpdCBqdXN0IHJldHVybiBzaWxlbnRseT8gRG9lcyBpdCBsb2cgYW4gZXJyb3I/IERvZXMgaXQgdHJ5IGFub3RoZXIgZmFsbGJhY2sgbWV0aG9kPyBVbmRlcnN0YW5kaW5nIHRoZSBlcnJvciBoYW5kbGluZyBoZXJlIGlzIGNyaXRpY2FsIHRvIGVuc3VyaW5nIHRoZSBTQVIgY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSwgZXZlbiBpbiBzaXR1YXRpb25zIHdoZXJlIEFDUEkgaW5mb3JtYXRpb24gaXNuJiMzOTt0IHJlYWRpbHkgYXZhaWxhYmxlIG9yIGFjY2Vzc2libGUuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gcmlnaHQgYXdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTM6XHRpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXIoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiAxOTQ6XHR7XG4gMTk1Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyO1xuIDE5NjpcdFx0aW50IHJldDtcbiAxOTc6XHRcbiAxOTg6XHRcdGFzYXIgPSBkZXZtX2t6YWxsb2MoZGV2LVx1MDAzZW10NzYuZGV2LCBzaXplb2YoKmFzYXIpLCBHRlBfS0VSTkVMKTtcbiAxOTk6XHRcdGlmICghYXNhcilcbiAyMDA6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjAxOlx0XG4gMjAyOlx0XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWNvdW50cnlsaXN0LCBcdTAwMjZhc2FyLVx1MDAzZXZlcik7XG4gMjAzOlx0XHRpZiAocmV0KSB7XG4gMjA0Olx0XHRcdGRldm1fa2ZyZWUoZGV2LVx1MDAzZW10NzYuZGV2LCBhc2FyLVx1MDAzZWNvdW50cnlsaXN0KTtcbiAyMDU6XHRcdFx0YXNhci1cdTAwM2Vjb3VudHJ5bGlzdCA9IE5VTEw7XG4gMjA2Olx0XHR9XG4gMjA3Olx0XG4gMjA4Olx0XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRkcyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWR5biwgYXNhci1cdTAwM2V2ZXIpO1xuIDIwOTpcdFx0aWYgKHJldCkge1xuIDIxMDpcdFx0XHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgYXNhci1cdTAwM2VkeW4pO1xuIDIxMTpcdFx0XHRhc2FyLVx1MDAzZWR5biA9IE5VTEw7XG4gMjEyOlx0XHR9XG4gMjEzOlx0XG4gMjE0Olx0XHQvKiBNVEdTIGlzIG9wdGlvbmFsICovXG4gMjE1Olx0XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWdlbywgYXNhci1cdTAwM2V2ZXIpO1xuIDIxNjpcdFx0aWYgKHJldCkge1xuIDIxNzpcdFx0XHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgYXNhci1cdTAwM2VnZW8pO1xuIDIxODpcdFx0XHRhc2FyLVx1MDAzZWdlbyA9IE5VTEw7XG4gMjE5Olx0XHR9XG4gMjIwOlx0XG4gMjIxOlx0XHQvKiBNVEZHIGlzIG9wdGlvbmFsICovXG4gMjIyOlx0XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRmZyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWZnKTtcbiAyMjM6XHRcdGlmIChyZXQpIHtcbiAyMjQ6XHRcdFx0ZGV2bV9rZnJlZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXHUwMDNlZmcpO1xuIDIyNTpcdFx0XHRhc2FyLVx1MDAzZWZnID0gTlVMTDtcbiAyMjY6XHRcdH1cbiAyMjc6XHRcdGRldi1cdTAwM2VwaHkuYWNwaXNhciA9IGFzYXI7XG4gMjI4Olx0XG4gMjI5Olx0XHRyZXR1cm4gMDtcbiAyMzA6XHR9XG4gMjMxOlx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfYWNwaV9zYXIpO1xuIDIzMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI2NwoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6CgoqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBOdWxsIFBvaW50ZXIgRGVyZWZlcmVuY2UgaW4gTVQ3OTJ4IEFDUEkgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRnc2AgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgcG90ZW50aWFsIGZvciBgYXNhci0mZ3Q7Z2VvYCB0byBiZSBzZXQgdG8gTlVMTCBpZiB0aGF0IGZ1bmN0aW9uIGZhaWxzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyByZWQgZmxhZy4gIFdlIGtub3cgdGhhdCBmYWlsdXJlIGluIHRoaXMgZnVuY3Rpb24gaGFzIHNlcmlvdXMgaW1wbGljYXRpb25zLgoKTm93LCBteSBmb2N1cyBoYXMgc2hpZnRlZCB0byBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgLiBUaGlzIGlzIHdoZXJlIHRoZSBwYXRjaCBpcyBsb2NhdGVkLCBJIG5lZWQgdG8gY2hlY2sgd2hlcmUgYGFzYXItJmd0O2dlb2AgaXMgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBmdW5jdGlvbi4gIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHdlIGFyZSBsaWtlbHkgc2VlaW5nIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHRoZXJlLiBUaGF0IGlzIGlmIGBhc2FyLSZndDtnZW9gIGlzIGluZGVlZCBudWxsIGFmdGVyIHRoZSBwcmV2aW91cyBmdW5jdGlvbiBmYWlscywgYW5kIGlmIHdlIGF0dGVtcHQgdG8gdXNlIHRoaXMgbnVsbCBwb2ludGVyIHdpdGhpbiBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIHdpdGhvdXQgYSBwcm9wZXIgbnVsbCBjaGVjaywgd2UgaGF2ZSBhIGRlZmluaXRlIGJ1Zy4gSSBoYXZlIHRvIHNlZSBob3cgd2UgaGFuZGxlIGBhc2FyLSZndDtnZW9gIGluIHRoaXMgY2FsbCwgYW5kIHdoYXQgc2FmZWd1YXJkcyBhcmUgaW4gcGxhY2UgKG9yIG1pc3NpbmcpIGFyb3VuZCB0aGF0IHN0cnVjdHVyZS4gSSBrbm93IGV4YWN0bHkgd2hhdCBJIGFtIGxvb2tpbmcgZm9yOyB0aGlzIGlzIGEgY2xlYXIgcGF0aCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwcm9ibGVtLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMzpcdHN0YXRpYyBzOFxuIDIzNDpcdG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXG4gMjM1Olx0XHRcdFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZCwgczggZHluX3Bvd2VyKVxuIDIzNjpcdHtcbiAyMzc6XHRcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbiAyMzg6XHRcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCAqYmFuZF9wd3I7XG4gMjM5Olx0XHRzOCBnZW9fcG93ZXI7XG4gMjQwOlx0XHR1OCBpZHgsIG1heDtcbiAyNDE6XHRcbiAyNDI6XHRcdGlmICghYXNhci1cdTAwM2VnZW8pXG4gMjQzOlx0XHRcdHJldHVybiBkeW5fcG93ZXI7XG4gMjQ0Olx0XG4gMjQ1Olx0XHRzd2l0Y2ggKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWRldi1cdTAwM2VyZWdpb24pIHtcbiAyNDY6XHRcdGNhc2UgTkw4MDIxMV9ERlNfRkNDOlxuIDI0NzpcdFx0XHRpZHggPSAwO1xuIDI0ODpcdFx0XHRicmVhaztcbiAyNDk6XHRcdGNhc2UgTkw4MDIxMV9ERlNfRVRTSTpcbiAyNTA6XHRcdFx0aWR4ID0gMTtcbiAyNTE6XHRcdFx0YnJlYWs7XG4gMjUyOlx0XHRkZWZhdWx0OiAvKiBXVyAqL1xuIDI1MzpcdFx0XHRpZHggPSAyO1xuIDI1NDpcdFx0XHRicmVhaztcbiAyNTU6XHRcdH1cbiAyNTY6XHRcbiAyNTc6XHRcdGlmIChhc2FyLVx1MDAzZXZlciA9PSAxKSB7XG4gMjU4Olx0XHRcdGJhbmRfcHdyID0gXHUwMDI2YXNhci1cdTAwM2VnZW8tXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcbiAyNTk6XHRcdFx0bWF4ID0gQVJSQVlfU0laRShhc2FyLVx1MDAzZWdlby1cdTAwM2V0YmxbaWR4XS5iYW5kKTtcbiAyNjA6XHRcdH0gZWxzZSB7XG4gMjYxOlx0XHRcdGJhbmRfcHdyID0gXHUwMDI2YXNhci1cdTAwM2VnZW9fdjItXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcbiAyNjI6XHRcdFx0bWF4ID0gQVJSQVlfU0laRShhc2FyLVx1MDAzZWdlb192Mi1cdTAwM2V0YmxbaWR4XS5iYW5kKTtcbiAyNjM6XHRcdH1cbiAyNjQ6XHRcbiAyNjU6XHRcdHN3aXRjaCAoYmFuZCkge1xuIDI2NjpcdFx0Y2FzZSBOTDgwMjExX0JBTkRfMkdIWjpcbiAyNjc6XHRcdFx0aWR4ID0gMDtcbiAyNjg6XHRcdFx0YnJlYWs7XG4gMjY5Olx0XHRjYXNlIE5MODAyMTFfQkFORF81R0haOlxuIDI3MDpcdFx0XHRpZHggPSAxO1xuIDI3MTpcdFx0XHRicmVhaztcbiAyNzI6XHRcdGNhc2UgTkw4MDIxMV9CQU5EXzZHSFo6XG4gMjczOlx0XHRcdGlkeCA9IDI7XG4gMjc0Olx0XHRcdGJyZWFrO1xuIDI3NTpcdFx0ZGVmYXVsdDpcbiAyNzY6XHRcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiAyNzc6XHRcdH1cbiAyNzg6XHRcbiAyNzk6XHRcdGlmIChpZHggXHUwMDNlPSBtYXgpXG4gMjgwOlx0XHRcdHJldHVybiBkeW5fcG93ZXI7XG4gMjgxOlx0XG4gMjgyOlx0XHRnZW9fcG93ZXIgPSAoYmFuZF9wd3IgJiM0MzsgaWR4KS1cdTAwM2Vwd3I7XG4gMjgzOlx0XHQvKlxuIDI4NDpcdFx0ICogQVNVUyAoYW5kIHNvbWUgb3RoZXIgT0VNKSBBQ1BJIE1UR1MgdGFibGVzIGZpbGwgdW51c2VkIGdlb1xuIDI4NTpcdFx0ICogc2xvdHMgd2l0aCAweEZGLiBXaW5kb3dzIHRyZWF0cyB0aGF0IGFzIFwmIzM0O25vIGNhcFwmIzM0Oy4gTGludXggdG9va1xuIDI4NjpcdFx0ICogaXQgYXMgczggLTEgZEJtIGFuZCBtaW4oKSYjMzk7ZCBldmVyeSByYXRlIGRvd24gdG8gfjMgZEJtIHRtYWMuXG4gMjg3Olx0XHQgKi9cbiAyODg6XHRcdGlmICgodTgpZ2VvX3Bvd2VyID09IDB4ZmYpXG4gMjg5Olx0XHRcdHJldHVybiBkeW5fcG93ZXI7XG4gMjkwOlx0XHRpZiAoKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0ICE9IDB4ZmYpXG4gMjkxOlx0XHRcdGR5bl9wb3dlciAmIzQzOz0gKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0O1xuIDI5MjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjU2MwoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUmIzM5O3MgUmVhY2hhYmlsaXR5KioKCk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgY29kZSBwYXRoLiBJZiBgIWFzYXItJmd0O2dlb2AgaXMgdHJ1ZSDigJMgd2hpY2ggaGluZ2VzIG9uIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRnc2AgZmFpbGluZyDigJMgaXQgYmFpbHMgb3V0IHJpZ2h0IGF3YXkgYXQgbGluZSAyNDIsIHJldHVybmluZyBgZHluX3Bvd2VyYC4gVGhlIGZhaWx1cmUgb2YgdGhhdCBmdW5jdGlvbiwgYXMgSSB1bmRlcnN0YW5kIGl0LCBzdGVtcyBmcm9tIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRnc2AgY2FsbGluZyBgbXQ3OTJ4X2FjcGlfcmVhZGAuIEFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgYWNwaV9nZXRfaGFuZGxlYCwgdXNpbmcgYEFDUElfSEFORExFKG1kZXYtJmd0O2RldilgLiBOb3csIGZvciBhIHZpcnR1YWwgVVNCIGRldmljZSwgdGhhdCBgQUNQSV9IQU5ETEVgIGlzIGdvaW5nIHRvIGJlIE5VTEwuIFNvLCBgbXQ3OTJ4X2FjcGlfcmVhZGAgaXMgZ29pbmcgdG8gY3JhcCBvdXQgYW5kIHJldHVybiBgLUVPUE5PVFNVUFBgLgoKVGhhdCBtZWFucyBgYXNhci0mZ3Q7Z2VvYCByZW1haW5zIE5VTEwuIFRoZXJlZm9yZSwgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCBhbHdheXMgZXhpdHMgZWFybHkgYXQgbGluZSAyNDIuIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSBtb2RpZmljYXRpb24gSSBtYWRlIGF0IGxpbmUgMjg4IGlzIG5ldmVyIGdvaW5nIHRvIGJlIGV4ZWN1dGVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIEl0JiMzOTtzIHNpbXBseSB1bnJlYWNoYWJsZS4gSSBtZWFuLCBldmVuIGlmIEkgY291bGQgc29tZWhvdyBtb2NrIHRoZSBBQ1BJIGhhbmRsZSB0byBnZXQgcGFzdCB0aGUgaW5pdGlhbCBOVUxMIGNoZWNrLCBzeXprYWxsZXIgZG9lc24mIzM5O3Qgb2ZmZXIgYSBtZWNoYW5pc20gdG8gaW5qZWN0IEFDUEkgdGFibGVzIHNwZWNpZmljYWxseSBmb3IgYSBVU0IgZGV2aWNlLiBUaGlzIGZ1cnRoZXIgc29saWRpZmllcyBteSBjb25jbHVzaW9uIHRoYXQgdGhpcyBjb2RlIGJyYW5jaCBpcyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgb3RoZXIgd2F5IGBhc2FyLSZndDtnZW9gIGNvdWxkIGJlIHBvcHVsYXRlZCwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXNhci1cdTAwM2VnZW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xOTM9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXHQvKiBNVEdTIGlzIG9wdGlvbmFsICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIxNTpcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVx1MDAyNmFzYXItXHUwMDNlZ2VvLCBhc2FyLVx1MDAzZXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIxNi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE3Olx0XHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgYXNhci1cdTAwM2VnZW8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMTg6XHRcdGFzYXItXHUwMDNlZ2VvID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjE5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MjM0PW10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI0MjpcdGlmICghYXNhci1cdTAwM2VnZW8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI0My1cdFx0cmV0dXJuIGR5bl9wb3dlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI1Ny1cdGlmIChhc2FyLVx1MDAzZXZlciA9PSAxKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI1ODpcdFx0YmFuZF9wd3IgPSBcdTAwMjZhc2FyLVx1MDAzZWdlby1cdTAwM2V0YmxbaWR4XS5iYW5kWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyNTk6XHRcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cdTAwM2VnZW8tXHUwMDNldGJsW2lkeF0uYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI2MC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI2MTpcdFx0YmFuZF9wd3IgPSBcdTAwMjZhc2FyLVx1MDAzZWdlb192Mi1cdTAwM2V0YmxbaWR4XS5iYW5kWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyNjI6XHRcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cdTAwM2VnZW9fdjItXHUwMDNldGJsW2lkeF0uYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI2My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwNDEKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogMzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoaXMgQ29kZSBpcyBVbmZ1enphYmxlKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGRlYWw6IEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyB0aGUgYG10NzZgIE1lZGlhVGVrIFdpLUZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIGZ1bmN0aW9uLiBUaGUgbW9kaWZpY2F0aW9uIGlzIHN1cHBvc2VkIHRvIGRlYWwgd2l0aCBhIHNwZWNpZmljIGlzc3VlIHJlbGF0ZWQgdG8gaG93IFNBUiAoU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlKSB2YWx1ZXMgYXJlIGhhbmRsZWQgd2hlbiByZWFkIGZyb20gQUNQSSB0YWJsZXMuIEJ1dCBoZXJlJiMzOTtzIHRoZSBjYXRjaCDigJMgdGhlIGVudGlyZSBjb2RlIHBhdGggaXMgZ2F0ZWQgYmVoaW5kIGEgc3VjY2Vzc2Z1bCByZWFkIG9mIHRoZSAmIzM0O01UR1MmIzM0OyBBQ1BJIG9iamVjdC4KClRoYXQgcmVhZCBoYXBwZW5zIHdpdGhpbiBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgIHZpYSB0aGUgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBmdW5jdGlvbi4gVGhlIHByb2JsZW0/IEFDUEkgdGFibGVzLCBpbiBtb3N0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHRoZSBRRU1VIHNldHVwIGNvbW1vbmx5IHVzZWQgZm9yIGZ1enppbmcsIGFyZSBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBoeXBlcnZpc29yIG9yIGZpcm13YXJlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQsIHNpbmNlIHdlIGFyZW4mIzM5O3QgaW5qZWN0aW5nIGN1c3RvbSBBQ1BJIHRhYmxlcyB2aWEgYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIgKHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBwcmFjdGljZSksIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSB1bnJlYWNoYWJsZS4KClRvIHJlaXRlcmF0ZSwgdGhlc2UgQUNQSSBvYmplY3RzIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIG15IGFuYWx5c2lzIGluZGljYXRlcyB0aGF0IHRoZSBkcml2ZXIgaXMgcmVsaWFudCBvbiB0aGUgc3lzdGVtJiMzOTtzIEFDUEkgdGFibGVzIHRvIHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgYmVmb3JlIGl0IGNhbiBldmVuIHJlYWNoIHRoZSBjb2RlLiBBbHNvLCB0aGlzIGRyaXZlciBhcHBlYXJzIHRvIGJlIGhhcmR3YXJlIHNwZWNpZmljIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSAoUENJZS9VU0IpLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmNsdWRpbmcgdGhhdCB0aGlzIG1vZGlmaWVkIGNvZGUgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gb3VyIGN1cnJlbnQgZnV6emluZyBzZXR1cCwgc28gSSYjMzk7bSBtYXJraW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBqdXN0IG5vdCBwcmFjdGljYWwgb3IgZWZmaWNpZW50IHRvIHB1cnN1ZSB0aGlzIGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgdGFibGUgcGFyc2luZyBpbiB0aGUgTWVkaWFUZWsgV2ktRmkgZHJpdmVyIChtdDc2KS4gVGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIGlmIHRoZSBkcml2ZXIgc3VjY2Vzc2Z1bGx5IHJlYWRzIHRoZSBcJiMzNDtNVEdTXCYjMzQ7IEFDUEkgb2JqZWN0IGZyb20gdGhlIHN5c3RlbSYjMzk7cyBBQ1BJIHRhYmxlcy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHZpcnR1YWwgZGV2aWNlcyBkbyBub3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBBQ1BJIGhhbmRsZXMgb3IgdGFibGVzLCBjYXVzaW5nIHRoZSBBQ1BJIHJlYWQgdG8gZmFpbCBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBlYXJseSBiZWZvcmUgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1lZGlhVGVrIFdpLUZpIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgdGFibGUgcGFyc2luZyBpbiB0aGUgTWVkaWFUZWsgV2ktRmkgZHJpdmVyIChtdDc2KS4gVGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIGlmIHRoZSBkcml2ZXIgc3VjY2Vzc2Z1bGx5IHJlYWRzIHRoZSBcJiMzNDtNVEdTXCYjMzQ7IEFDUEkgb2JqZWN0IGZyb20gdGhlIHN5c3RlbSYjMzk7cyBBQ1BJIHRhYmxlcy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHZpcnR1YWwgZGV2aWNlcyBkbyBub3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBBQ1BJIGhhbmRsZXMgb3IgdGFibGVzLCBjYXVzaW5nIHRoZSBBQ1BJIHJlYWQgdG8gZmFpbCBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBlYXJseSBiZWZvcmUgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1lZGlhVGVrIFdpLUZpIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjE1OjI1LjI5MDU3OTE3MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzc4MDAzNjcxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiB0YWJsZSBwYXJzaW5nIGluIHRoZSBNZWRpYVRlayBXaS1GaSBkcml2ZXIgKG10NzYpLiBUaGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgaWYgdGhlIGRyaXZlciBzdWNjZXNzZnVsbHkgcmVhZHMgdGhlIFxcXCJNVEdTXFxcIiBBQ1BJIG9iamVjdCBmcm9tIHRoZSBzeXN0ZW0ncyBBQ1BJIHRhYmxlcy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHZpcnR1YWwgZGV2aWNlcyBkbyBub3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBBQ1BJIGhhbmRsZXMgb3IgdGFibGVzLCBjYXVzaW5nIHRoZSBBQ1BJIHJlYWQgdG8gZmFpbCBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBlYXJseSBiZWZvcmUgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1lZGlhVGVrIFdpLUZpIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MTU6MjUuMjkwNTg1MzQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQyMjQwMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTlmNmJiZjgwMTViOGMyMzkyNDBhM2VhNGVkNGJmZGQ4ODZlZGVmMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxNToxNToyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xcbmluZGV4IDk0NmRkNzk1NmU0YTAuLmZhNTM5Y2RlNTJiNTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcXG5AQCAtMjgwLDcgKzI4MCwxNSBAQCBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbiBcXHRcXHRyZXR1cm4gZHluX3Bvd2VyO1xcbiBcXG4gXFx0Z2VvX3Bvd2VyID0gKGJhbmRfcHdyICsgaWR4KS1cXHUwMDNlcHdyO1xcbi1cXHRkeW5fcG93ZXIgKz0gKGJhbmRfcHdyICsgaWR4KS1cXHUwMDNlb2Zmc2V0O1xcbitcXHQvKlxcbitcXHQgKiBBU1VTIChhbmQgc29tZSBvdGhlciBPRU0pIEFDUEkgTVRHUyB0YWJsZXMgZmlsbCB1bnVzZWQgZ2VvXFxuK1xcdCAqIHNsb3RzIHdpdGggMHhGRi4gV2luZG93cyB0cmVhdHMgdGhhdCBhcyBcXFwibm8gY2FwXFxcIi4gTGludXggdG9va1xcbitcXHQgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJ2QgZXZlcnkgcmF0ZSBkb3duIHRvIH4zIGRCbSB0bWFjLlxcbitcXHQgKi9cXG4rXFx0aWYgKCh1OClnZW9fcG93ZXIgPT0gMHhmZilcXG4rXFx0XFx0cmV0dXJuIGR5bl9wb3dlcjtcXG4rXFx0aWYgKChiYW5kX3B3ciArIGlkeCktXFx1MDAzZW9mZnNldCAhPSAweGZmKVxcbitcXHRcXHRkeW5fcG93ZXIgKz0gKGJhbmRfcHdyICsgaWR4KS1cXHUwMDNlb2Zmc2V0O1xcbiBcXG4gXFx0cmV0dXJuIG1pbihnZW9fcG93ZXIsIGR5bl9wb3dlcik7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MTU6MjYuODMzNDIyMzk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTEzNjI1NzUxMjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgdGFibGUgcGFyc2luZyBpbiB0aGUgTWVkaWFUZWsgV2ktRmkgZHJpdmVyIChtdDc2KS4gVGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIGlmIHRoZSBkcml2ZXIgc3VjY2Vzc2Z1bGx5IHJlYWRzIHRoZSBcXFwiTVRHU1xcXCIgQUNQSSBvYmplY3QgZnJvbSB0aGUgc3lzdGVtJ3MgQUNQSSB0YWJsZXMuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB2aXJ0dWFsIGRldmljZXMgZG8gbm90IGhhdmUgdGhlc2Ugc3BlY2lmaWMgQUNQSSBoYW5kbGVzIG9yIHRhYmxlcywgY2F1c2luZyB0aGUgQUNQSSByZWFkIHRvIGZhaWwgYW5kIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gZWFybHkgYmVmb3JlIHJlYWNoaW5nIHRoZSBtb2RpZmllZCBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDk5ZjZiYmY4MDE1YjhjMjM5MjQwYTNlYTRlZDRiZmRkODg2ZWRlZjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxNToxNToyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXG5pbmRleCA5NDZkZDc5NTZlNGEwLi5mYTUzOWNkZTUyYjU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuQEAgLTI4MCw3ICsyODAsMTUgQEAgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbiBcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiBcbiBcdGdlb19wb3dlciA9IChiYW5kX3B3ciArIGlkeCktXHUwMDNlcHdyO1xuLVx0ZHluX3Bvd2VyICs9IChiYW5kX3B3ciArIGlkeCktXHUwMDNlb2Zmc2V0O1xuK1x0LypcbitcdCAqIEFTVVMgKGFuZCBzb21lIG90aGVyIE9FTSkgQUNQSSBNVEdTIHRhYmxlcyBmaWxsIHVudXNlZCBnZW9cbitcdCAqIHNsb3RzIHdpdGggMHhGRi4gV2luZG93cyB0cmVhdHMgdGhhdCBhcyBcIm5vIGNhcFwiLiBMaW51eCB0b29rXG4rXHQgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJ2QgZXZlcnkgcmF0ZSBkb3duIHRvIH4zIGRCbSB0bWFjLlxuK1x0ICovXG4rXHRpZiAoKHU4KWdlb19wb3dlciA9PSAweGZmKVxuK1x0XHRyZXR1cm4gZHluX3Bvd2VyO1xuK1x0aWYgKChiYW5kX3B3ciArIGlkeCktXHUwMDNlb2Zmc2V0ICE9IDB4ZmYpXG4rXHRcdGR5bl9wb3dlciArPSAoYmFuZF9wd3IgKyBpZHgpLVx1MDAzZW9mZnNldDtcbiBcbiBcdHJldHVybiBtaW4oZ2VvX3Bvd2VyLCBkeW5fcG93ZXIpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjE1OjI2LjgzMzQyMzUyN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjc5NjU2OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBBQ1BJIFNBUiBDb2RlIGluIFFFTVUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY2AuIEl0IHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgaXNzdWUgaW4gdGhlIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgZnVuY3Rpb24sIHdoZXJlIGEgYDB4ZmZgIHZhbHVlIGlzIGJlaW5nIGluY29ycmVjdGx5IGludGVycHJldGVkIGFzIGAtMSBkQm1gLCBsZWFkaW5nIHRvIHBvd2VyIGNhcHBpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgY29kZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/XG5cblRoaXMgaXMgcGFydCBvZiB0aGUgTWVkaWFUZWsgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIEFDUEkgU0FSIHRhYmxlIHBhcnNpbmcuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgbXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgdXN1YWxseSB0aWVkIHRvIGFjdHVhbCBoYXJkd2FyZS4gSXMgYG10NzZgIGVtdWxhdGVkPyBObywgaXQncyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgaXNuJ3QgaXQ/IFRob3VnaCBJIHJlbWVtYmVyIGBtYWM4MDIxMV9od3NpbWAsIHRoYXQncyBkaWZmZXJlbnQuIFRoYXQgc2ltdWxhdGVzIGEgd2lyZWxlc3MgZGV2aWNlLCBidXQgbm90IHRoaXMgc3BlY2lmaWMgZHJpdmVyLlxuXG5TbywgdGhlIG5leHQgcXVlc3Rpb24gYmVjb21lczogaXMgaXQgKnBvc3NpYmxlKiB0byB0cmlnZ2VyIHRoaXMgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCBjb2RlIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IEl0IHNlZW1zIHVubGlrZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgY2FsbGluZyBpdCwgc28gSSBzaG91bGQgcmVhbGx5IGxvb2sgYXQgdGhlIGNhbGxlcnMgb2YgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpcyBpbnZva2VkIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjUsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToxNjozNy41MTMxMDM1NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgzNDQ3Nzk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3clwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTIzMz1zdGF0aWMgczhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIzNDptdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM1LVxcdFxcdFxcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHM4IGR5bl9wb3dlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjY6XFx0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToxNjo0MS4zNDc1ODYxNTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjY0Nzg2OTQ5MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCoqXG5cbk9rYXksIHNvIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgaXMgY2FsbGVkIHRocm91Z2ggYG10NzkyeF9hc2FyX3JhbmdlX3B3cmAsIGFuZCB0aGF0J3MgcHJvYmFibHkgdHJpZ2dlcmVkIHdoZW4gc2V0dGluZyB0cmFuc21pc3Npb24gcG93ZXIsIHdoaWNoIGlzIGEga2V5IGFyZWEgZm9yIGZ1enppbmcuIE5vdywgdGhpcyBpcyBwYXJ0IG9mIHRoZSBgbXQ3NmAgZHJpdmVyIHN1aXRlLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBoYXJkd2FyZS1zcGVjaWZpYywgc3BlY2lmaWNhbGx5IE1lZGlhVGVrIFdpLUZpIGNhcmRzLiBXZSBrbm93IHRoaXMgbWVhbnMgZWl0aGVyIFBDSWUgb3IgVVNCIGltcGxlbWVudGF0aW9ucy4gVGhlIHVzdWFsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3ZSB1c2UgYXJlbid0IGdvaW5nIHRvIGN1dCBpdCwgYXQgbGVhc3Qgbm90IGRpcmVjdGx5LiBJIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGF0IGxlYXN0IGEgY29udmluY2luZyBVU0IgZW11bGF0aW9uLiBXZSBkb24ndCBoYXZlIGEgTWVkaWFUZWsgV2ktRmkgVVNCIGdhZGdldCBzZXQgdXAgaW4gb3VyIHN5emthbGxlci9RRU1VIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQncyBhIGRlYWQgZW5kLlxuXG5XYWl0IGEgc2Vjb25k4oCmIHdhc24ndCBgbXQ3OTIxdWAgYSBVU0IgZHJpdmVyPyAqVGhhdCogY2hhbmdlcyB0aGluZ3MuIENvdWxkIHdlIHJlYWNoIHRoaXMgdGhyb3VnaCBVU0IgZnV6emluZyB0aGVuPyBUaGlzIGlzIHdvcnRoIGludmVzdGlnYXRpbmcuIExldCdzIGRpZyBpbnRvIHRoZSBjb21waWxhdGlvbiBhbmQgY2hlY2sgaWYgYG10NzkyeF9hY3BpX3Nhci5jYCBpcyBhY3R1YWxseSBjb21waWxlZCBmb3IgVVNCLiBUaGlzIGlzIGEgdmVyeSBwcm9taXNpbmcgbGVhZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2NCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToxODo0Ny44MjYyODQ1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTIxNzUxNzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyeF9hY3BpX3Nhci5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NDA9bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQxLVxcdFxcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MjptdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICs9IG10NzkyeF9hY3BpX3Nhci5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00My1tdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjE4OjUxLjk0ODA0Mjk2NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NjQwMTM2NjEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNpdHVhdGlvbioqXG5cbk9rYXksIHNvIGBtdDc5MnhfYWNwaV9zYXIub2AgaXMgZGVmaW5pdGVseSBhIGNvbXBvbmVudCBvZiB0aGUgYG10NzkyeC1saWJgIG1vZHVsZSwgYW5kIHRoYXQgbGlicmFyeSBpcyBmdW5kYW1lbnRhbCB0byB0aGUgb3BlcmF0aW9uIG9mIGJvdGggdGhlIGBtdDc5MjF1YCAoVVNCKSBhbmQgYG10NzkyMWVgIChQQ0llKSB2YXJpYW50cy4gVGhhdCdzIGdvb2QgdG8gZXN0YWJsaXNoLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBjYW4gd2UgZXhwbG9pdCB0aGUgQUNQSSBTQVIgdGFibGUgaGFuZGxpbmcgdGhyb3VnaCB0aGUgVVNCIGludGVyZmFjZT8gSXQncyBhbiBpbnRlcmVzdGluZyBhdmVudWUgdG8gZXhwbG9yZS4gV2Uga25vdyB0aGF0IHRoZSBBQ1BJIFNBUiBkYXRhIGlzbid0IGp1c3QgcHVsbGVkIGZyb20gdGhpbiBhaXI7IGl0J3MgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBzeXN0ZW0ncyBBQ1BJIHRhYmxlcy4gTWV0aG9kcyBsaWtlIGBhY3BpX2V2YWx1YXRlX29iamVjdGAgYXJlIGxpa2VseSBpbnZvbHZlZCBpbiB0aGUgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gYG10NzkyeF9hY3BpX3Nhci5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpwcmVjaXNlbHkqIGhvdyB0aGF0IG1vZHVsZSBpbnRlcmZhY2VzIHdpdGggYW5kIHJldHJpZXZlcyB0aGUgQUNQSSBkYXRhLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgZnJvbSBBQ1BJIHRvIHRoZSBtb2R1bGUgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdG8gaW50cm9kdWNlIGFuZCBmdXp6IHRoaXMgZGF0YSB2aWEgYSBVU0IgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczMywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyMzowOC4zNDk0MTE1NTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAxODg3MTY0NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWNwaV9ldmFsdWF0ZV9vYmplY3QuKm10NzkyeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MjM6MTIuMzY4Mjk0NDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjczODMyNTQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWUsIHN0YXJ0aW5nIHdpdGggYSAqKmJvbGRlZCBoZWFkZXIqKjpcblxuKipEaWdnaW5nIGludG8gdGhlIEFDUEkgRGF0YSBBY3F1aXNpdGlvbiBpbiBtdDc5MnhfYWNwaV9zYXIuYyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGhvdyBgbXQ3OTJ4X2FjcGlfc2FyLmNgIGhhbmRsZXMgQUNQSSBkYXRhLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBTQVIgKFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSkgbWVhc3VyZW1lbnRzIGFyZSBoYW5kbGVkLCBhbmQgdWx0aW1hdGVseSwgaG93IHBvd2VyIG1hbmFnZW1lbnQgYW5kIHJlZ3VsYXRvcnkgY29tcGxpYW5jZSBwbGF5IG91dCBpbiB0aGlzIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGFjcXVpc2l0aW9uIHBhdGgsIHBpbnBvaW50aW5nIHdoZXJlIHRoZSBBQ1BJIGluZm9ybWF0aW9uIGlzIGZldGNoZWQsIHZhbGlkYXRlZCwgYW5kIHRoZW4gc3Vic2VxdWVudGx5IHVzZWQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGV5J3JlIGZvbGxvd2luZyBzdGFuZGFyZCBBQ1BJIG1ldGhvZHMgb3IgZW1wbG95aW5nIHNvbWUgdmVuZG9yLXNwZWNpZmljIHF1aXJrcy4gVW5kZXJzdGFuZGluZyB0aGUgZGF0YSBzb3VyY2Ugd2lsbCBjbGFyaWZ5IHRoZSB2YWxpZGl0eSBvZiB0aGUgZGF0YSB0aGV5J3JlIHVzaW5nIHRvIGNvbnRyb2wgdGhlIHBvd2VyIHRyYW5zbWl0IGxldmVscy4gTGV0J3Mgc2VlIGhvdyB0aGV5J3ZlIHN0cnVjdHVyZWQgdGhpcywgYW5kIGlmIGl0J3MgdXAgdG8gcGFyIHdpdGggdGhlIHJlbGV2YW50IEFDUEkgc3BlY2lmaWNhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhleSdyZSBoYW5kbGluZyBlcnJvcnMgYW5kIGVkZ2UgY2FzZXMgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTM3LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MjM6MzkuMTA2NjIyODQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk3NzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3BpX2V2YWx1YXRlX29iamVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MzA9bXQ3OTJ4X2FjcGlfcmVhZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqbWV0aG9kLCB1OCAqKnRibCwgdTMyICpsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDg6XFx0c3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCBOVUxMLCBOVUxMLCBcXHUwMDI2YnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ5LVxcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MjM6MzkuMTY2NjMzOTI2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDIyMjU1MDc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQUNQSSBUYWJsZSBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBjbGVhcmx5IHRyeWluZyB0byBpbnRlcmFjdCB3aXRoIEFDUEkgdGFibGVzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgaXQncyByZWFkaW5nIHRob3NlIHRhYmxlcyB0byBnZXQgc3lzdGVtIGluZm9ybWF0aW9uLlwiIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHdoaWNoLCBsZXQncyBiZSBob25lc3QsIGlzIHdoZXJlIEknbGwgcHJvYmFibHkgYmUgdGVzdGluZyB0aGlzIGluaXRpYWxseSB3aXRoIFFFTVUsIHRoZSBBQ1BJIHRhYmxlcyAqYXJlKiBwcm92aWRlZCBieSB0aGUgaHlwZXJ2aXNvciBpdHNlbGYuIFVubGVzcyBJJ3ZlIHRha2VuIHNwZWNpZmljIHN0ZXBzIHRvIGluamVjdCBjdXN0b20gdGFibGVzLCBvciBJJ20gZG9pbmcgc29tZXRoaW5nIGNsZXZlciB0byBtb2NrIHRoZSBBQ1BJIGV2YWx1YXRpb24gcHJvY2VzcywgdGhpcyB0aGluZyBpcyBqdXN0IGdvaW5nIHRvIGJhaWwgb3V0IHdoZW4gaXQgY2FuJ3QgZmluZCB0aGUgZXhwZWN0ZWQgQUNQSSBvYmplY3QsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJ2QgZXhwZWN0LiBUaGUgY29kZSB3aWxsIHNpbXBseSByZXR1cm4gZWFybHksIGFuZCB0aGF0J3Mgbm90IGdvb2QuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgbXQ3OTJ4X2FjcGlfcmVhZGAgYW5kIHNlZSB3aGF0IHRoYXQncyBhY3R1YWxseSBkb2luZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQncyBhdHRlbXB0aW5nIHRvIGFjY2VzcyB0aGUgQUNQSSBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQyLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MjU6MTkuMzg5MTg4OTA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdC8qIENvcHlyaWdodCAoQykgMjAyMyBNZWRpYVRlayBJbmMuICovXFxuICAgMzpcXHRcXG4gICA0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9hY3BpLmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXFwibXQ3OTJ4LmhcXFwiXFxuICAgNjpcXHRcXG4gICA3OlxcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9hbGxbXSA9IHtcXG4gICA4OlxcdFxcdFxcXCIwMFxcXCIsIFxcXCJFVVxcXCIsIFxcXCJBUlxcXCIsIFxcXCJBVVxcXCIsIFxcXCJBWlxcXCIsIFxcXCJCWVxcXCIsIFxcXCJCT1xcXCIsIFxcXCJCUlxcXCIsXFxuICAgOTpcXHRcXHRcXFwiQ0FcXFwiLCBcXFwiQ0xcXFwiLCBcXFwiQ05cXFwiLCBcXFwiSURcXFwiLCBcXFwiSlBcXFwiLCBcXFwiTVlcXFwiLCBcXFwiTVhcXFwiLCBcXFwiTUVcXFwiLFxcbiAgMTA6XFx0XFx0XFxcIk1BXFxcIiwgXFxcIk5aXFxcIiwgXFxcIk5HXFxcIiwgXFxcIlBIXFxcIiwgXFxcIlJVXFxcIiwgXFxcIlJTXFxcIiwgXFxcIlNHXFxcIiwgXFxcIktSXFxcIixcXG4gIDExOlxcdFxcdFxcXCJUV1xcXCIsIFxcXCJUSFxcXCIsIFxcXCJVQVxcXCIsIFxcXCJHQlxcXCIsIFxcXCJVU1xcXCIsIFxcXCJWTlxcXCIsIFxcXCJLSFxcXCIsIFxcXCJQWVxcXCIsXFxuICAxMjpcXHR9O1xcbiAgMTM6XFx0XFxuICAxNDpcXHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNjX2xpc3RfZXVbXSA9IHtcXG4gIDE1OlxcdFxcdFxcXCJBRFxcXCIsIFxcXCJBVFxcXCIsIFxcXCJCRVxcXCIsIFxcXCJCR1xcXCIsIFxcXCJDWVxcXCIsIFxcXCJDWlxcXCIsIFxcXCJIUlxcXCIsIFxcXCJES1xcXCIsXFxuICAxNjpcXHRcXHRcXFwiRUVcXFwiLCBcXFwiRklcXFwiLCBcXFwiRlJcXFwiLCBcXFwiREVcXFwiLCBcXFwiR1JcXFwiLCBcXFwiSFVcXFwiLCBcXFwiSVNcXFwiLCBcXFwiSUVcXFwiLFxcbiAgMTc6XFx0XFx0XFxcIklUXFxcIiwgXFxcIkxWXFxcIiwgXFxcIkxJXFxcIiwgXFxcIkxUXFxcIiwgXFxcIkxVXFxcIiwgXFxcIk1DXFxcIiwgXFxcIk1UXFxcIiwgXFxcIk5MXFxcIixcXG4gIDE4OlxcdFxcdFxcXCJOT1xcXCIsIFxcXCJQTFxcXCIsIFxcXCJQVFxcXCIsIFxcXCJST1xcXCIsIFxcXCJTS1xcXCIsIFxcXCJTSVxcXCIsIFxcXCJFU1xcXCIsIFxcXCJTRVxcXCIsXFxuICAxOTpcXHRcXHRcXFwiQ0hcXFwiLFxcbiAgMjA6XFx0fTtcXG4gIDIxOlxcdFxcbiAgMjI6XFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY19saXN0X2JlW10gPSB7XFxuICAyMzpcXHRcXHRcXFwiQVJcXFwiLCBcXFwiQlJcXFwiLCBcXFwiQllcXFwiLCBcXFwiQ0xcXFwiLCBcXFwiSVFcXFwiLCBcXFwiTVhcXFwiLCBcXFwiT01cXFwiLCBcXFwiUlVcXFwiLFxcbiAgMjQ6XFx0XFx0XFxcIlJXXFxcIiwgXFxcIlZOXFxcIiwgXFxcIktSXFxcIiwgXFxcIlVBXFxcIiwgXFxcIlxcXCIsIFxcXCJcXFwiLCBcXFwiXFxcIiwgXFxcIlxcXCIsXFxuICAyNTpcXHRcXHRcXFwiRVVcXFwiLCBcXFwiQVRcXFwiLCBcXFwiQ05cXFwiLCBcXFwiQ0FcXFwiLCBcXFwiVFdcXFwiLCBcXFwiTlpcXFwiLCBcXFwiUEhcXFwiLCBcXFwiVUtcXFwiLFxcbiAgMjY6XFx0XFx0XFxcIlVTXFxcIixcXG4gIDI3OlxcdH07XFxuICAyODpcXHRcXG4gIDI5OlxcdHN0YXRpYyBpbnRcXG4gIDMwOlxcdG10NzkyeF9hY3BpX3JlYWQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKm1ldGhvZCwgdTggKip0YmwsIHUzMiAqbGVuKVxcbiAgMzE6XFx0e1xcbiAgMzI6XFx0XFx0c3RydWN0IGFjcGlfYnVmZmVyIGJ1ZiA9IHsgQUNQSV9BTExPQ0FURV9CVUZGRVIsIE5VTEwgfTtcXG4gIDMzOlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuICAzNDpcXHRcXHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3Jvb3Q7XFxuICAzNTpcXHRcXHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XFxuICAzNjpcXHRcXHRhY3BpX3N0YXR1cyBzdGF0dXM7XFxuICAzNzpcXHRcXHR1MzIgaSA9IDA7XFxuICAzODpcXHRcXHRpbnQgcmV0O1xcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHRyb290ID0gQUNQSV9IQU5ETEUobWRldi1cXHUwMDNlZGV2KTtcXG4gIDQxOlxcdFxcdGlmICghcm9vdClcXG4gIDQyOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0c3RhdHVzID0gYWNwaV9nZXRfaGFuZGxlKHJvb3QsIG1ldGhvZCwgXFx1MDAyNmhhbmRsZSk7XFxuICA0NTpcXHRcXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpXFxuICA0NjpcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gIDQ3OlxcdFxcbiAgNDg6XFx0XFx0c3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCBOVUxMLCBOVUxMLCBcXHUwMDI2YnVmKTtcXG4gIDQ5OlxcdFxcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcXG4gIDUwOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiAgNTE6XFx0XFxuICA1MjpcXHRcXHRzYXJfcm9vdCA9IGJ1Zi5wb2ludGVyO1xcbiAgNTM6XFx0XFx0aWYgKHNhcl9yb290LVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9QQUNLQUdFIHx8XFxuICA1NDpcXHRcXHQgICAgc2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuY291bnQgXFx1MDAzYyA0IHx8XFxuICA1NTpcXHRcXHQgICAgc2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuZWxlbWVudHNbMF0udHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xcbiAgNTY6XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJzYXIgY250ID0gJWRcXFxcblxcXCIsXFxuICA1NzpcXHRcXHRcXHRcXHRzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudCk7XFxuICA1ODpcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAgNTk6XFx0XFx0XFx0Z290byBmcmVlO1xcbiAgNjA6XFx0XFx0fVxcbiAgNjE6XFx0XFxuICA2MjpcXHRcXHRpZiAoISp0YmwpIHtcXG4gIDYzOlxcdFxcdFxcdCp0YmwgPSBkZXZtX2t6YWxsb2MobWRldi1cXHUwMDNlZGV2LCBzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudCxcXG4gIDY0OlxcdFxcdFxcdFxcdFxcdCAgICBHRlBfS0VSTkVMKTtcXG4gIDY1OlxcdFxcdFxcdGlmICghKnRibCkge1xcbiAgNjY6XFx0XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gIDY3OlxcdFxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gIDY4OlxcdFxcdFxcdH1cXG4gIDY5OlxcdFxcdH1cXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0aWYgKGxlbilcXG4gIDcyOlxcdFxcdFxcdCpsZW4gPSBzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudDtcXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNhcl9yb290LVxcdTAwM2VwYWNrYWdlLmNvdW50OyBpKyspIHtcXG4gIDc1OlxcdFxcdFxcdHVuaW9uIGFjcGlfb2JqZWN0ICpzYXJfdW5pdCA9IFxcdTAwMjZzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5lbGVtZW50c1tpXTtcXG4gIDc2OlxcdFxcbiAgNzc6XFx0XFx0XFx0aWYgKHNhcl91bml0LVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKVxcbiAgNzg6XFx0XFx0XFx0XFx0YnJlYWs7XFxuICA3OTpcXHRcXG4gIDgwOlxcdFxcdFxcdCooKnRibCArIGkpID0gKHU4KXNhcl91bml0LVxcdTAwM2VpbnRlZ2VyLnZhbHVlO1xcbiAgODE6XFx0XFx0fVxcbiAgODI6XFx0XFxuICA4MzpcXHRcXHRyZXQgPSBpID09IHNhcl9yb290LVxcdTAwM2VwYWNrYWdlLmNvdW50ID8gMCA6IC1FSU5WQUw7XFxuICA4NDpcXHRmcmVlOlxcbiAgODU6XFx0XFx0a2ZyZWUoc2FyX3Jvb3QpO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHRyZXR1cm4gcmV0O1xcbiAgODg6XFx0fVxcbiAgODk6XFx0XFxuICA5MDpcXHQvKiBNVENMIDogQ291bnRyeSBMaXN0IFRhYmxlIGZvciA2RyBiYW5kICovXFxuICA5MTpcXHQvKiBNVENMIDogQ291bnRyeSBMaXN0IFRhYmxlIGZvciA2RyBiYW5kIGFuZCAxMUJFICovXFxuICA5MjpcXHRzdGF0aWMgaW50XFxuICA5MzpcXHRtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCAqdmVyc2lvbilcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdGludCBsZW4sIHJldDtcXG4gIDk2OlxcdFxcbiAgOTc6XFx0XFx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01UQ0wsIHRhYmxlLCBcXHUwMDI2bGVuKTtcXG4gIDk4OlxcdFxcdGlmIChyZXQpXFxuICA5OTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjI1OjE5LjM4OTM0MTk2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDYwOTgzMzk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIG10NzkyeCBBQ1BJIFJlYWQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtdDc5MnhfYWNwaV9yZWFkYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gZ3JhYiBhbiBBQ1BJIGhhbmRsZSBmcm9tIGBtZGV2LVx1MDAzZWRldmAsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHJlcHJlc2VudHMgdGhlIHBoeXNpY2FsIGRldmljZSwgZWl0aGVyIFBDSWUgb3IgVVNCLiBOb3csIHRoZSBpbW1lZGlhdGUgaXNzdWUgaXMgdGhhdCBpbiBRRU1VLCB3ZSBkb24ndCBoYXZlIGEgTWVkaWFUZWsgV2ktRmkgZGV2aWNlIHByZXNlbnQsIHNvIHRoZXJlIGlzIG5vIHJlYWwgQUNQSSBoYW5kbGUgdG8gZ2V0LiBFdmVuIGlmIEkgd2VyZSB0byBzb21laG93IG1vY2sgdGhlIGRldmljZSwgaW5qZWN0aW5nIHRoZSByZWxldmFudCBBQ1BJIHRhYmxlcyBpbnRvIHN5emthbGxlciBmb3IgdGVzdGluZyBzZWVtcyBsaWtlIGEgbm9uLXN0YXJ0ZXIgcmlnaHQgbm93LiBcblxuQnV0IGhvbGQgb24sIGlzIHRoZXJlICphbnkqIHdheSB0aGlzIGNvZGUgcGF0aCBjb3VsZCBiZSBoaXQ/IEknbSBkZWFsaW5nIHdpdGggdGhlIGBtdDc5MjFlYCwgYG10NzkyMXVgLCBgbXQ3OTI1ZWAsIGFuZCBgbXQ3OTI1dWAgZHJpdmVycy4gU3l6a2FsbGVyLCB3aXRoIGl0cyBhYmlsaXR5IHRvIGVtdWxhdGUgVVNCIGRldmljZXMgdXNpbmcgYGR1bW15X2hjZGAgYW5kIGByYXctZ2FkZ2V0YCwgY291bGQgY29uY2VpdmFibHkgY3JlYXRlIGEgVVNCIGRldmljZSB0aGF0IGJpbmRzIHRvIGBtdDc5MjF1YCBvciBgbXQ3OTI1dWAuIFRoYXQgKmNvdWxkKiBiZSBhIHdheSB0byB0cmlnZ2VyIHRoZSBjb2RlLCByaWdodD8gSSdkIGJldHRlciBjb25maXJtIHRoYXQgYG10NzkyMXVgIGlzIGluZGVlZCBhIFVTQiBkcml2ZXIsIHRvIHNlZSBpZiB0aGF0IHBhdGggaXMgZXZlbiB2aWFibGUuIE5lZWQgdG8gY2hlY2sgaWYgdGhpcyBpcyBwb3NzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUyMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjI1OjQzLjk5OTE3OTc1NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk2MzUzMzIwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjF1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX01UNzkyMVMpICs9IG10NzkyMXMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01UNzkyMVUpICs9IG10NzkyMXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlLTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZT0xMT1tdDc5MjFzLXkgOj0gc2Rpby5vIHNkaW9fbWFjLm8gc2Rpb19tY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjEyOm10NzkyMXUteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG10NzkyMXVfZGV2aWNlX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTYtXFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NzkwMiwgMHhmZiwgMHhmZiwgMHhmZiksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zNT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzY6bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNy1cXHRcXHRcXHQgaW50IGNtZCwgaW50ICpzZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo2NTpzdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy02Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy03MC1cXHRcXHQudGFpbHJvb20gPSBNVF9VU0JfVEFJTF9TSVpFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjcxOlxcdFxcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTcyLVxcdFxcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjFfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6ODk6c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNTA6c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNTEtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3MS1cXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTcyOlxcdFxcdC5tY3VfaW5pdCA9IG10NzkyMXVfbWN1X2luaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTczLVxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3NDpcXHRcXHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzUtXFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTI2My0jaWZkZWYgQ09ORklHX1BNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MjY0OnN0YXRpYyBpbnQgbXQ3OTIxdV9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3Qgc3RhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTI5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoyOTE6c3RhdGljIGludCBtdDc5MjF1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0yOTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjMzNDpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXQ3OTIxdV9kZXZpY2VfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzNS1NT0RVTEVfRklSTVdBUkUoTVQ3OTIxX0ZJUk1XQVJFX1dNKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzY9TU9EVUxFX0ZJUk1XQVJFKE1UNzkyMV9ST01fUEFUQ0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozMzg6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzOS1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQwOlxcdC5pZF90YWJsZVxcdD0gbXQ3OTIxdV9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQxOlxcdC5wcm9iZVxcdFxcdD0gbXQ3OTIxdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDItXFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDMtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0NDpcXHQuc3VzcGVuZFxcdD0gbXQ3OTIxdV9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0NTpcXHQucmVzdW1lXFx0XFx0PSBtdDc5MjF1X3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDY6XFx0LnJlc2V0X3Jlc3VtZVxcdD0gbXQ3OTIxdV9yZXN1bWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQ3LSNlbmRpZiAvKiBDT05GSUdfUE0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzUyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyNTo0Ni45NjI3MTczNjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5NjA5OTUwNzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQUNQSSBJbnRlcmFjdGlvbiBvZiB0aGUgYG10NzkyMXVgIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbXQ3OTIxdWAsIHdoaWNoIEkga25vdyBpcyBhIFVTQiBkcml2ZXIsIGFuZCBJIHVuZGVyc3RhbmQgdGhhdCBzeXprYWxsZXIgY2FuIGJlIHVzZWQgdG8gZnV6eiBVU0IgZGV2aWNlcy4gVGhlIHF1ZXN0aW9uIHRoYXQncyBwaXF1aW5nIG15IGludGVyZXN0IGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIEFDUEkgdGFibGVzLiBUaGUgY29kZSBzdWdnZXN0cyBpdCBtaWdodCwgdGhyb3VnaCBgbXQ3OTJ4X2FjcGlfcmVhZGAuIFRoaXMgZnVuY3Rpb24gY2FsbHMgYGFjcGlfZ2V0X2hhbmRsZWAsIHVzaW5nIGBBQ1BJX0hBTkRMRShtZGV2LVx1MDAzZWRldilgLiBSaWdodCwgc28gZm9yIGEgVVNCIGRldmljZSwgYG1kZXYtXHUwMDNlZGV2YCBpcyB0aGUgZGV2aWNlIHN0cnVjdHVyZSBvZiB0aGUgVVNCIGludGVyZmFjZSwgYFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldmAuIE5vdywgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLi4uIGRvZXMgYSBVU0IgaW50ZXJmYWNlIGRldmljZSBldmVuICpoYXZlKiBhbiBBQ1BJIGhhbmRsZT9cblxuVHlwaWNhbGx5LCBBQ1BJIGhhbmRsZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBwbGF0Zm9ybSBkZXZpY2VzLCBQQ0kgZGV2aWNlcywgb3IsIGluIHNvbWUgY2FzZXMsIEkyQy9TUEkgZGV2aWNlcy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IFVTQiBkZXZpY2VzIGFyZSB1c3VhbGx5IG5vdCBkZXNjcmliZWQgd2l0aGluIEFDUEkgdW5sZXNzIHRoZXkgYXJlIHNwZWNpZmljYWxseSBoYXJkd2lyZWQgYW5kIHRoZSBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCBpbiB0aGUgRFNEVC4gRXZlbiB3aGVuIGVtdWxhdGluZyBVU0IgZGV2aWNlcyBpbiBRRU1VLCB0aGUgdmlydHVhbCBkZXZpY2VzIEkndmUgY3JlYXRlZCBkb24ndCBleHBvc2UgYW4gQUNQSSBoYW5kbGUuIFRoYXQgbWVhbnMgYEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KWAgaXMgdmVyeSBsaWtlbHkgZ29pbmcgdG8gcmV0dXJuIE5VTEwgaW4gdGhpcyBjb250ZXh0LiBMZXQncyBzdGVwIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBgbXQ3OTJ4X2FjcGlfcmVhZGAgY29kZSB0byBjb25maXJtIHRoaXMgaHVuY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjQsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6Mjc6MzYuNTcyNjcwNzYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0bXQ3OTJ4X2FjcGlfcmVhZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqbWV0aG9kLCB1OCAqKnRibCwgdTMyICpsZW4pXFxuICAzMTpcXHR7XFxuICAzMjpcXHRcXHRzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmID0geyBBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTCB9O1xcbiAgMzM6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4gIDM0OlxcdFxcdHVuaW9uIGFjcGlfb2JqZWN0ICpzYXJfcm9vdDtcXG4gIDM1OlxcdFxcdGFjcGlfaGFuZGxlIHJvb3QsIGhhbmRsZTtcXG4gIDM2OlxcdFxcdGFjcGlfc3RhdHVzIHN0YXR1cztcXG4gIDM3OlxcdFxcdHUzMiBpID0gMDtcXG4gIDM4OlxcdFxcdGludCByZXQ7XFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdHJvb3QgPSBBQ1BJX0hBTkRMRShtZGV2LVxcdTAwM2VkZXYpO1xcbiAgNDE6XFx0XFx0aWYgKCFyb290KVxcbiAgNDI6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiAgNDM6XFx0XFxuICA0NDpcXHRcXHRzdGF0dXMgPSBhY3BpX2dldF9oYW5kbGUocm9vdCwgbWV0aG9kLCBcXHUwMDI2aGFuZGxlKTtcXG4gIDQ1OlxcdFxcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcXG4gIDQ2OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHRzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE5VTEwsIE5VTEwsIFxcdTAwMjZidWYpO1xcbiAgNDk6XFx0XFx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyNzozNi41NzI3NDI3NTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3OTYzODM0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtdDc5MnhfYWNwaV9yZWFkIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3OTJ4X2FjcGlfcmVhZGAgZnVuY3Rpb24sIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIE5VTEwgY2hlY2sgb24gYHJvb3RgLiBJZiBgcm9vdGAgaXMgTlVMTCwgaXQgaW1tZWRpYXRlbHkgcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZDsgdGhlIGZ1bmN0aW9uIHNpbXBseSB3b24ndCB3b3JrIGluIHRoYXQgY2FzZS4gVGhhdCBtZWFucyBpZiB3ZSBlbmNvdW50ZXIgYSBgbXQ3OTJ4X2FjcGlfcmVhZGAgY2FsbCwgYW5kIGl04oCZcyByZXR1cm5pbmcgYC1FT1BOT1RTVVBQYCwgYSBsaWtlbHkgY3VscHJpdCBjb3VsZCBiZSB0aGUgYHJvb3RgIHZhcmlhYmxlIGJlaW5nIE5VTEwsIG9yIHNvbWVob3cgYmVjb21pbmcgc28gZHVyaW5nIHRoZSBjYWxsLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIHRoaXMuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY2FsbHMgdG8gYG10NzkyeF9hY3BpX3JlYWRgIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhpcyBlcnJvciBjb25kaXRpb24uIExldCdzIHNlZSB3aGVyZSBpdCdzIGJlaW5nIGNhbGxlZCBhbmQgd2hhdCB0aG9zZSBjb250ZXh0cyBsb29rIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDkwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyODoyOS4zNjkxMjk0MzJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NTQzOTgyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTJ4X2FjcGlfcmVhZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjMwOm10NzkyeF9hY3BpX3JlYWQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKm1ldGhvZCwgdTggKip0YmwsIHUzMiAqbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz05Mz1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCAqdmVyc2lvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo5NzpcXHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVRDTCwgdGFibGUsIFxcdTAwMjZsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtOTgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTEzPW10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUsIHU4IHZlcnNpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTExNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjExODpcXHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVREUywgdGFibGUsIFxcdTAwMjZsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE0OD1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxNTI6XFx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01UR1MsIHRhYmxlLCBcXHUwMDI2bGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE1My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNzk9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Zmcoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTgzOlxcdHJldCA9IG10NzkyeF9hY3BpX3JlYWQoZGV2LCBNVDc5MnhfQUNQSV9NVEZHLCB0YWJsZSwgXFx1MDAyNmxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xODQtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6Mjg6MzIuMjIzNTM0NzI3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MzUzOTA4ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBFcnJvciBQcm9wYWdhdGlvbiBpbiBNVDc5MnggQUNQSSBSZWFkcyoqXG5cbkFscmlnaHQsIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfKmAgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCB0aGV5J3JlIHByb2JhYmx5IGp1c3Qgd3JhcHBlcnMgYXJvdW5kIGBtdDc5MnhfYWNwaV9yZWFkYC4gQW5kIGl0IGxvb2tzIGxpa2UgSSdtIHJpZ2h0OiB0aGV5IGFsbCBpbW1lZGlhdGVseSByZXR1cm4gYW4gZXJyb3IgaWYgdGhhdCBsb3dlci1sZXZlbCBmdW5jdGlvbiBmYWlscy4gVGhhdCdzIGEgY2xhc3NpYyBwYXR0ZXJuLiBJdCdzIGNsZWFuIGluIHByaW5jaXBsZSBidXQgY2FuIHBvdGVudGlhbGx5IG1hc2sgdGhlICpzb3VyY2UqIG9mIHRoZSBpc3N1ZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiB3aGVyZSBhcmUgdGhlc2Ugd3JhcHBlciBmdW5jdGlvbnMgKmNhbGxlZCo/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4gSXQncyB0aW1lIHRvIHRyYWNlIHRoZSB1c2FnZSB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBBQ1BJIHJlYWQgcHJvY2Vzcy4gS25vd2luZyB0aGUgdXBzdHJlYW0gY29udGV4dCBpcyB3aGF0IG1hdHRlcnMuIFRoaXMgd2lsbCB0ZWxsIG1lICp3aHkqIHRoZSByZWFkIGlzIGhhcHBlbmluZyBhbmQgd2hhdCB0aGUgZmFsbG91dCB3aWxsIGJlIGlmIGl0IGZhaWxzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6Mjk6NDEuNTc3NDQ2NTA2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODk0MTkyODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTQ3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE0ODptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE1OlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VnZW8sIGFzYXItXFx1MDAzZXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyOTo0NC40NzE2NDY2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzAwODc4MTM0NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0J3MgZ29pbmcgb24sIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqSW5pdGlhbCBUaG91Z2h0cyBvbiBtdDc5MnhfaW5pdF9hY3BpX3NhcioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAuIEltbWVkaWF0ZWx5LCB0aGUgXCJBQ1BJXCIgaW4gdGhlIG5hbWUgY2F0Y2hlcyBteSBleWUuIFRoaXMgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyByZWxhdGVkIHRvIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFBvd2VyIEludGVyZmFjZSBhbmQsIG1vcmUgc3BlY2lmaWNhbGx5LCBhIFNBUiB2YWx1ZS4gU0FSIHVzdWFsbHkgcmVmZXJzIHRvIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAtIHNvIHdlJ3JlIGxpa2VseSBpbiB0aGUgcmVhbG0gb2YgcmFkaW8gZnJlcXVlbmN5IGVtaXNzaW9ucyBhbmQgcmVndWxhdG9yeSBjb21wbGlhbmNlLiBUaGUgXCJtdDc5MnhcIiBwYXJ0IHRlbGxzIG1lIHdlJ3JlIHdpdGhpbiB0aGUgTWVkaWFUZWsgZmFtaWx5LCBwcm9iYWJseSBhIFdpRmkgb3IgcG90ZW50aWFsbHkgQmx1ZXRvb3RoIGNvbnRyb2xsZXIuIFRoaXMgc3BlY2lmaWMgZnVuY3Rpb24sIHByZXN1bWFibHkgYSBwYXJ0IG9mIHRoZSBpbml0IHByb2Nlc3MsIGlzIHdoZXJlIHRoZSBzeXN0ZW0gZ2V0cyBTQVIgaW5mb3JtYXRpb24sIGxpa2VseSBpbiByZWxhdGlvbiB0byB0aGUgZGV2aWNlLiBJIGJldCB0aGlzIGlzIHdoZXJlIHRoZSBjb2RlIHJlYWRzIGZyb20gdGhlIEFDUEkgdGFibGVzIHRvIHJldHJpZXZlIHRoZSBwZXJtaXNzaWJsZSBSRiBwb3dlciBsZXZlbHMgb3Igc29tZSBmb3JtIG9mIGNvbnRyb2wgcGFyYW1ldGVyLiBNeSBndWVzcyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgZHVyaW5nIGVhcmx5IHN5c3RlbSBzdGFydHVwLCBhcyBwYXJ0IG9mIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIFRoaXMgYWxsIHN1Z2dlc3RzIGEgY3JpdGljYWwgcGllY2UgaW4gY29uZmlndXJpbmcgdGhlIFJGIHBvd2VyIG91dHB1dCBvZiB0aGUgZGV2aWNlIHRvIG1lZXQgdGhlIHJlcXVpcmVkIHJlZ3VsYXRvcnkgcmVxdWlyZW1lbnRzLiBUaGlzIGlzIHdoZXJlIHdlIGVuc3VyZSB0aGUgZGV2aWNlIGFkaGVyZXMgdG8gc2FmZXR5IHN0YW5kYXJkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5ODAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNTozMTo1NC41NTk0NjI2M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxOTE5MTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MnhfaW5pdF9hY3BpX3NhclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMjE6XFx0bXQ3OTJ4X2luaXRfYWNwaV9zYXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTEyODY9aW50IG10NzkyMV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMjk2LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTI5NzpcXHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTEyOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjQzPWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTI6XFx0bXQ3OTJ4X2luaXRfYWNwaV9zYXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE4Nzk9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xODg5LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTg5MDpcXHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE4OTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTYzMD1pbnQgbXQ3OTJ4ZV9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02MzItI2lmZGVmIENPTkZJR19BQ1BJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NjM0OmludCBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBib29sIHNldF9kZWZhdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTYzNS11OCBtdDc5MnhfYWNwaV9nZXRfZmxhZ3Moc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MzY9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTYzNy0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NjM4OnN0YXRpYyBpbmxpbmUgaW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2NDM6c3RhdGljIGlubGluZSBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTY0NC1cXHRcXHRcXHRcXHRcXHQgICAgIGJvb2wgc2V0X2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE3OT1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRmZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxOTM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMzAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjk6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTMtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzU0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM1NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzE6NTYuNTc4NjYwNDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI4ODQ1MTQ3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB3aGF0J3MgaGFwcGVuaW5nLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBBQ1BJIFNBUiBJbml0aWFsaXphdGlvbiBmb3IgTVQ3OTJ4IERldmljZXMqKlxuXG5Pa2F5LCBzbyBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGRldmljZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gVGhhdCBtYWtlcyBzZW5zZTsgd2Ugd2FudCB0byBzZXQgdXAgdGhlIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAoU0FSKSB0YWJsZXMgZWFybHkgb24uIE5vdywgdGhlIHBvdGVudGlhbCBwcm9ibGVtIGlzIHRoYXQgYG10NzkyeF9hY3BpX3JlYWRgIGlzIHZlcnkgbGlrZWx5IHRvIGZhaWwgcmlnaHQgb2ZmIHRoZSBiYXQgYmVjYXVzZSB0aGUgQUNQSSBoYW5kbGUgYEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KWAgaXMsIGluIGFsbCBwcm9iYWJpbGl0eSwgZ29pbmcgdG8gYmUgTlVMTC4gVGhpcywgb2YgY291cnNlLCBkaXJlY3RseSBkZXBlbmRzIG9uIHRoZSBoYXJkd2FyZSBhbmQgdGhlIEFDUEkgY29uZmlndXJhdGlvbiwgYW5kIEkgYW0gYWxyZWFkeSBwaWN0dXJpbmcgdGhlIGxpa2VseSBzY2VuYXJpb3MgdGhhdCBsZWFkIHRvIGBBQ1BJX0hBTkRMRWAgYmVpbmcgTlVMTC5cblxuSWYgYG10NzkyeF9hY3BpX3JlYWRgIGZhaWxzLCBhbmQgSSBiZXQgaXQgd2lsbCwgYG10NzkyeF9pbml0X2FjcGlfc2FyYCBpcyBkZXNpZ25lZCB0byBlaXRoZXIgcmV0dXJuIGVhcmx5IG9yLCBldmVuIHdvcnNlLCBmYWlsIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIFNBUiB0YWJsZXMuIFNvLCB0aGlzIHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgZnVuY3Rpb24gaXRzZWxmIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgaGFuZGxlcyB0aGlzIGxpa2VseSBmYWlsdXJlIHNjZW5hcmlvLiBJIG5lZWQgdG8gZmlndXJlIG91dDogRG9lcyBpdCBqdXN0IHJldHVybiBzaWxlbnRseT8gRG9lcyBpdCBsb2cgYW4gZXJyb3I/IERvZXMgaXQgdHJ5IGFub3RoZXIgZmFsbGJhY2sgbWV0aG9kPyBVbmRlcnN0YW5kaW5nIHRoZSBlcnJvciBoYW5kbGluZyBoZXJlIGlzIGNyaXRpY2FsIHRvIGVuc3VyaW5nIHRoZSBTQVIgY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSwgZXZlbiBpbiBzaXR1YXRpb25zIHdoZXJlIEFDUEkgaW5mb3JtYXRpb24gaXNuJ3QgcmVhZGlseSBhdmFpbGFibGUgb3IgYWNjZXNzaWJsZS4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIHJpZ2h0IGF3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTA1LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzI6MzkuNDYzMTc3MzU1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTkzLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTkzOlxcdGludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiAxOTQ6XFx0e1xcbiAxOTU6XFx0XFx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqYXNhcjtcXG4gMTk2OlxcdFxcdGludCByZXQ7XFxuIDE5NzpcXHRcXG4gMTk4OlxcdFxcdGFzYXIgPSBkZXZtX2t6YWxsb2MoZGV2LVxcdTAwM2VtdDc2LmRldiwgc2l6ZW9mKCphc2FyKSwgR0ZQX0tFUk5FTCk7XFxuIDE5OTpcXHRcXHRpZiAoIWFzYXIpXFxuIDIwMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woZGV2LCAodTggKiopXFx1MDAyNmFzYXItXFx1MDAzZWNvdW50cnlsaXN0LCBcXHUwMDI2YXNhci1cXHUwMDNldmVyKTtcXG4gMjAzOlxcdFxcdGlmIChyZXQpIHtcXG4gMjA0OlxcdFxcdFxcdGRldm1fa2ZyZWUoZGV2LVxcdTAwM2VtdDc2LmRldiwgYXNhci1cXHUwMDNlY291bnRyeWxpc3QpO1xcbiAyMDU6XFx0XFx0XFx0YXNhci1cXHUwMDNlY291bnRyeWxpc3QgPSBOVUxMO1xcbiAyMDY6XFx0XFx0fVxcbiAyMDc6XFx0XFxuIDIwODpcXHRcXHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRkcyhkZXYsICh1OCAqKilcXHUwMDI2YXNhci1cXHUwMDNlZHluLCBhc2FyLVxcdTAwM2V2ZXIpO1xcbiAyMDk6XFx0XFx0aWYgKHJldCkge1xcbiAyMTA6XFx0XFx0XFx0ZGV2bV9rZnJlZShkZXYtXFx1MDAzZW10NzYuZGV2LCBhc2FyLVxcdTAwM2VkeW4pO1xcbiAyMTE6XFx0XFx0XFx0YXNhci1cXHUwMDNlZHluID0gTlVMTDtcXG4gMjEyOlxcdFxcdH1cXG4gMjEzOlxcdFxcbiAyMTQ6XFx0XFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xcbiAyMTU6XFx0XFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3MoZGV2LCAodTggKiopXFx1MDAyNmFzYXItXFx1MDAzZWdlbywgYXNhci1cXHUwMDNldmVyKTtcXG4gMjE2OlxcdFxcdGlmIChyZXQpIHtcXG4gMjE3OlxcdFxcdFxcdGRldm1fa2ZyZWUoZGV2LVxcdTAwM2VtdDc2LmRldiwgYXNhci1cXHUwMDNlZ2VvKTtcXG4gMjE4OlxcdFxcdFxcdGFzYXItXFx1MDAzZWdlbyA9IE5VTEw7XFxuIDIxOTpcXHRcXHR9XFxuIDIyMDpcXHRcXG4gMjIxOlxcdFxcdC8qIE1URkcgaXMgb3B0aW9uYWwgKi9cXG4gMjIyOlxcdFxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VmZyk7XFxuIDIyMzpcXHRcXHRpZiAocmV0KSB7XFxuIDIyNDpcXHRcXHRcXHRkZXZtX2tmcmVlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXFx1MDAzZWZnKTtcXG4gMjI1OlxcdFxcdFxcdGFzYXItXFx1MDAzZWZnID0gTlVMTDtcXG4gMjI2OlxcdFxcdH1cXG4gMjI3OlxcdFxcdGRldi1cXHUwMDNlcGh5LmFjcGlzYXIgPSBhc2FyO1xcbiAyMjg6XFx0XFxuIDIyOTpcXHRcXHRyZXR1cm4gMDtcXG4gMjMwOlxcdH1cXG4gMjMxOlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcXG4gMjMyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNTozMjozOS40NjMyNTIwNjVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI3MDEwMDQwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhpbmdzOlxuXG4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBOdWxsIFBvaW50ZXIgRGVyZWZlcmVuY2UgaW4gTVQ3OTJ4IEFDUEkgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3NgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIHBvdGVudGlhbCBmb3IgYGFzYXItXHUwMDNlZ2VvYCB0byBiZSBzZXQgdG8gTlVMTCBpZiB0aGF0IGZ1bmN0aW9uIGZhaWxzLiBUaGF0J3MgYSBjbGFzc2ljIHJlZCBmbGFnLiAgV2Uga25vdyB0aGF0IGZhaWx1cmUgaW4gdGhpcyBmdW5jdGlvbiBoYXMgc2VyaW91cyBpbXBsaWNhdGlvbnMuXG5cbk5vdywgbXkgZm9jdXMgaGFzIHNoaWZ0ZWQgdG8gYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYC4gVGhpcyBpcyB3aGVyZSB0aGUgcGF0Y2ggaXMgbG9jYXRlZCwgSSBuZWVkIHRvIGNoZWNrIHdoZXJlIGBhc2FyLVx1MDAzZWdlb2AgaXMgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBmdW5jdGlvbi4gIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHdlIGFyZSBsaWtlbHkgc2VlaW5nIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHRoZXJlLiBUaGF0IGlzIGlmIGBhc2FyLVx1MDAzZWdlb2AgaXMgaW5kZWVkIG51bGwgYWZ0ZXIgdGhlIHByZXZpb3VzIGZ1bmN0aW9uIGZhaWxzLCBhbmQgaWYgd2UgYXR0ZW1wdCB0byB1c2UgdGhpcyBudWxsIHBvaW50ZXIgd2l0aGluIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgd2l0aG91dCBhIHByb3BlciBudWxsIGNoZWNrLCB3ZSBoYXZlIGEgZGVmaW5pdGUgYnVnLiBJIGhhdmUgdG8gc2VlIGhvdyB3ZSBoYW5kbGUgYGFzYXItXHUwMDNlZ2VvYCBpbiB0aGlzIGNhbGwsIGFuZCB3aGF0IHNhZmVndWFyZHMgYXJlIGluIHBsYWNlIChvciBtaXNzaW5nKSBhcm91bmQgdGhhdCBzdHJ1Y3R1cmUuIEkga25vdyBleGFjdGx5IHdoYXQgSSBhbSBsb29raW5nIGZvcjsgdGhpcyBpcyBhIGNsZWFyIHBhdGggdG8gdW5kZXJzdGFuZGluZyB0aGUgcHJvYmxlbS4gTGV0J3MgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI2NywiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzM6MDIuMTY0MjU4Mzk4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjMzLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjMzOlxcdHN0YXRpYyBzOFxcbiAyMzQ6XFx0bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG4gMjM1OlxcdFxcdFxcdFxcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHM4IGR5bl9wb3dlcilcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFzYXIgPSBwaHktXFx1MDAzZWFjcGlzYXI7XFxuIDIzODpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgKmJhbmRfcHdyO1xcbiAyMzk6XFx0XFx0czggZ2VvX3Bvd2VyO1xcbiAyNDA6XFx0XFx0dTggaWR4LCBtYXg7XFxuIDI0MTpcXHRcXG4gMjQyOlxcdFxcdGlmICghYXNhci1cXHUwMDNlZ2VvKVxcbiAyNDM6XFx0XFx0XFx0cmV0dXJuIGR5bl9wb3dlcjtcXG4gMjQ0OlxcdFxcbiAyNDU6XFx0XFx0c3dpdGNoIChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWRldi1cXHUwMDNlcmVnaW9uKSB7XFxuIDI0NjpcXHRcXHRjYXNlIE5MODAyMTFfREZTX0ZDQzpcXG4gMjQ3OlxcdFxcdFxcdGlkeCA9IDA7XFxuIDI0ODpcXHRcXHRcXHRicmVhaztcXG4gMjQ5OlxcdFxcdGNhc2UgTkw4MDIxMV9ERlNfRVRTSTpcXG4gMjUwOlxcdFxcdFxcdGlkeCA9IDE7XFxuIDI1MTpcXHRcXHRcXHRicmVhaztcXG4gMjUyOlxcdFxcdGRlZmF1bHQ6IC8qIFdXICovXFxuIDI1MzpcXHRcXHRcXHRpZHggPSAyO1xcbiAyNTQ6XFx0XFx0XFx0YnJlYWs7XFxuIDI1NTpcXHRcXHR9XFxuIDI1NjpcXHRcXG4gMjU3OlxcdFxcdGlmIChhc2FyLVxcdTAwM2V2ZXIgPT0gMSkge1xcbiAyNTg6XFx0XFx0XFx0YmFuZF9wd3IgPSBcXHUwMDI2YXNhci1cXHUwMDNlZ2VvLVxcdTAwM2V0YmxbaWR4XS5iYW5kWzBdO1xcbiAyNTk6XFx0XFx0XFx0bWF4ID0gQVJSQVlfU0laRShhc2FyLVxcdTAwM2VnZW8tXFx1MDAzZXRibFtpZHhdLmJhbmQpO1xcbiAyNjA6XFx0XFx0fSBlbHNlIHtcXG4gMjYxOlxcdFxcdFxcdGJhbmRfcHdyID0gXFx1MDAyNmFzYXItXFx1MDAzZWdlb192Mi1cXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcXG4gMjYyOlxcdFxcdFxcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cXHUwMDNlZ2VvX3YyLVxcdTAwM2V0YmxbaWR4XS5iYW5kKTtcXG4gMjYzOlxcdFxcdH1cXG4gMjY0OlxcdFxcbiAyNjU6XFx0XFx0c3dpdGNoIChiYW5kKSB7XFxuIDI2NjpcXHRcXHRjYXNlIE5MODAyMTFfQkFORF8yR0haOlxcbiAyNjc6XFx0XFx0XFx0aWR4ID0gMDtcXG4gMjY4OlxcdFxcdFxcdGJyZWFrO1xcbiAyNjk6XFx0XFx0Y2FzZSBOTDgwMjExX0JBTkRfNUdIWjpcXG4gMjcwOlxcdFxcdFxcdGlkeCA9IDE7XFxuIDI3MTpcXHRcXHRcXHRicmVhaztcXG4gMjcyOlxcdFxcdGNhc2UgTkw4MDIxMV9CQU5EXzZHSFo6XFxuIDI3MzpcXHRcXHRcXHRpZHggPSAyO1xcbiAyNzQ6XFx0XFx0XFx0YnJlYWs7XFxuIDI3NTpcXHRcXHRkZWZhdWx0OlxcbiAyNzY6XFx0XFx0XFx0cmV0dXJuIGR5bl9wb3dlcjtcXG4gMjc3OlxcdFxcdH1cXG4gMjc4OlxcdFxcbiAyNzk6XFx0XFx0aWYgKGlkeCBcXHUwMDNlPSBtYXgpXFxuIDI4MDpcXHRcXHRcXHRyZXR1cm4gZHluX3Bvd2VyO1xcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRnZW9fcG93ZXIgPSAoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2Vwd3I7XFxuIDI4MzpcXHRcXHQvKlxcbiAyODQ6XFx0XFx0ICogQVNVUyAoYW5kIHNvbWUgb3RoZXIgT0VNKSBBQ1BJIE1UR1MgdGFibGVzIGZpbGwgdW51c2VkIGdlb1xcbiAyODU6XFx0XFx0ICogc2xvdHMgd2l0aCAweEZGLiBXaW5kb3dzIHRyZWF0cyB0aGF0IGFzIFxcXCJubyBjYXBcXFwiLiBMaW51eCB0b29rXFxuIDI4NjpcXHRcXHQgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJ2QgZXZlcnkgcmF0ZSBkb3duIHRvIH4zIGRCbSB0bWFjLlxcbiAyODc6XFx0XFx0ICovXFxuIDI4ODpcXHRcXHRpZiAoKHU4KWdlb19wb3dlciA9PSAweGZmKVxcbiAyODk6XFx0XFx0XFx0cmV0dXJuIGR5bl9wb3dlcjtcXG4gMjkwOlxcdFxcdGlmICgoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2VvZmZzZXQgIT0gMHhmZilcXG4gMjkxOlxcdFxcdFxcdGR5bl9wb3dlciArPSAoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2VvZmZzZXQ7XFxuIDI5MjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzM6MDIuMTY0MzUzMzc4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0ODgxMTk0NTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29kZSdzIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgY29kZSBwYXRoLiBJZiBgIWFzYXItXHUwMDNlZ2VvYCBpcyB0cnVlIOKAkyB3aGljaCBoaW5nZXMgb24gYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBmYWlsaW5nIOKAkyBpdCBiYWlscyBvdXQgcmlnaHQgYXdheSBhdCBsaW5lIDI0MiwgcmV0dXJuaW5nIGBkeW5fcG93ZXJgLiBUaGUgZmFpbHVyZSBvZiB0aGF0IGZ1bmN0aW9uLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHN0ZW1zIGZyb20gYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBjYWxsaW5nIGBtdDc5MnhfYWNwaV9yZWFkYC4gQW5kIHRoYXQsIGluIHR1cm4sIGNhbGxzIGBhY3BpX2dldF9oYW5kbGVgLCB1c2luZyBgQUNQSV9IQU5ETEUobWRldi1cdTAwM2VkZXYpYC4gTm93LCBmb3IgYSB2aXJ0dWFsIFVTQiBkZXZpY2UsIHRoYXQgYEFDUElfSEFORExFYCBpcyBnb2luZyB0byBiZSBOVUxMLiBTbywgYG10NzkyeF9hY3BpX3JlYWRgIGlzIGdvaW5nIHRvIGNyYXAgb3V0IGFuZCByZXR1cm4gYC1FT1BOT1RTVVBQYC5cblxuVGhhdCBtZWFucyBgYXNhci1cdTAwM2VnZW9gIHJlbWFpbnMgTlVMTC4gVGhlcmVmb3JlLCBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIGFsd2F5cyBleGl0cyBlYXJseSBhdCBsaW5lIDI0Mi4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIG1vZGlmaWNhdGlvbiBJIG1hZGUgYXQgbGluZSAyODggaXMgbmV2ZXIgZ29pbmcgdG8gYmUgZXhlY3V0ZWQgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgUUVNVS4gSXQncyBzaW1wbHkgdW5yZWFjaGFibGUuIEkgbWVhbiwgZXZlbiBpZiBJIGNvdWxkIHNvbWVob3cgbW9jayB0aGUgQUNQSSBoYW5kbGUgdG8gZ2V0IHBhc3QgdGhlIGluaXRpYWwgTlVMTCBjaGVjaywgc3l6a2FsbGVyIGRvZXNuJ3Qgb2ZmZXIgYSBtZWNoYW5pc20gdG8gaW5qZWN0IEFDUEkgdGFibGVzIHNwZWNpZmljYWxseSBmb3IgYSBVU0IgZGV2aWNlLiBUaGlzIGZ1cnRoZXIgc29saWRpZmllcyBteSBjb25jbHVzaW9uIHRoYXQgdGhpcyBjb2RlIGJyYW5jaCBpcyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBvdGhlciB3YXkgYGFzYXItXHUwMDNlZ2VvYCBjb3VsZCBiZSBwb3B1bGF0ZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTYzLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzM6NDcuMDQ1NTUxODdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MjI5NjEyNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXNhci1cXHUwMDNlZ2VvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE1OlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VnZW8sIGFzYXItXFx1MDAzZXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE3OlxcdFxcdGRldm1fa2ZyZWUoZGV2LVxcdTAwM2VtdDc2LmRldiwgYXNhci1cXHUwMDNlZ2VvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIxODpcXHRcXHRhc2FyLVxcdTAwM2VnZW8gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjE5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MjM0PW10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI0MjpcXHRpZiAoIWFzYXItXFx1MDAzZWdlbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI0My1cXHRcXHRyZXR1cm4gZHluX3Bvd2VyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yNTctXFx0aWYgKGFzYXItXFx1MDAzZXZlciA9PSAxKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyNTg6XFx0XFx0YmFuZF9wd3IgPSBcXHUwMDI2YXNhci1cXHUwMDNlZ2VvLVxcdTAwM2V0YmxbaWR4XS5iYW5kWzBdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjU5OlxcdFxcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cXHUwMDNlZ2VvLVxcdTAwM2V0YmxbaWR4XS5iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI2MC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjYxOlxcdFxcdGJhbmRfcHdyID0gXFx1MDAyNmFzYXItXFx1MDAzZWdlb192Mi1cXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI2MjpcXHRcXHRtYXggPSBBUlJBWV9TSVpFKGFzYXItXFx1MDAzZWdlb192Mi1cXHUwMDNldGJsW2lkeF0uYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yNjMtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNTozMzo0OS44Njg1MjIzODdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMjIzODc1MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVGhpcyBDb2RlIGlzIFVuZnV6emFibGUqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWw6IEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIHRoZSBgbXQ3NmAgTWVkaWFUZWsgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgZnVuY3Rpb24uIFRoZSBtb2RpZmljYXRpb24gaXMgc3VwcG9zZWQgdG8gZGVhbCB3aXRoIGEgc3BlY2lmaWMgaXNzdWUgcmVsYXRlZCB0byBob3cgU0FSIChTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUpIHZhbHVlcyBhcmUgaGFuZGxlZCB3aGVuIHJlYWQgZnJvbSBBQ1BJIHRhYmxlcy4gQnV0IGhlcmUncyB0aGUgY2F0Y2gg4oCTIHRoZSBlbnRpcmUgY29kZSBwYXRoIGlzIGdhdGVkIGJlaGluZCBhIHN1Y2Nlc3NmdWwgcmVhZCBvZiB0aGUgXCJNVEdTXCIgQUNQSSBvYmplY3QuXG5cblRoYXQgcmVhZCBoYXBwZW5zIHdpdGhpbiBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgIHZpYSB0aGUgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBmdW5jdGlvbi4gVGhlIHByb2JsZW0/IEFDUEkgdGFibGVzLCBpbiBtb3N0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHRoZSBRRU1VIHNldHVwIGNvbW1vbmx5IHVzZWQgZm9yIGZ1enppbmcsIGFyZSBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBoeXBlcnZpc29yIG9yIGZpcm13YXJlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQsIHNpbmNlIHdlIGFyZW4ndCBpbmplY3RpbmcgY3VzdG9tIEFDUEkgdGFibGVzIHZpYSBhIGZ1enplciBsaWtlIHN5emthbGxlciAod2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIHByYWN0aWNlKSwgdGhpcyBjb2RlIHBhdGggaXMgc2ltcGx5IHVucmVhY2hhYmxlLlxuXG5UbyByZWl0ZXJhdGUsIHRoZXNlIEFDUEkgb2JqZWN0cyBhcmUgbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBteSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgZHJpdmVyIGlzIHJlbGlhbnQgb24gdGhlIHN5c3RlbSdzIEFDUEkgdGFibGVzIHRvIHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgYmVmb3JlIGl0IGNhbiBldmVuIHJlYWNoIHRoZSBjb2RlLiBBbHNvLCB0aGlzIGRyaXZlciBhcHBlYXJzIHRvIGJlIGhhcmR3YXJlIHNwZWNpZmljIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSAoUENJZS9VU0IpLlxuXG5UaGVyZWZvcmUsIEknbSBjb25jbHVkaW5nIHRoYXQgdGhpcyBtb2RpZmllZCBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG91ciBjdXJyZW50IGZ1enppbmcgc2V0dXAsIHNvIEknbSBtYXJraW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCdzIGp1c3Qgbm90IHByYWN0aWNhbCBvciBlZmZpY2llbnQgdG8gcHVyc3VlIHRoaXMgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwNDEsIk91dHB1dFRva2VucyI6MTQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjM0OjIzLjA5MDkxMjU4N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIHRhYmxlIHBhcnNpbmcgaW4gdGhlIE1lZGlhVGVrIFdpLUZpIGRyaXZlciAobXQ3NikuIFRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZHJpdmVyIHN1Y2Nlc3NmdWxseSByZWFkcyB0aGUgXFxcIk1UR1NcXFwiIEFDUEkgb2JqZWN0IGZyb20gdGhlIHN5c3RlbSdzIEFDUEkgdGFibGVzLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdmlydHVhbCBkZXZpY2VzIGRvIG5vdCBoYXZlIHRoZXNlIHNwZWNpZmljIEFDUEkgaGFuZGxlcyBvciB0YWJsZXMsIGNhdXNpbmcgdGhlIEFDUEkgcmVhZCB0byBmYWlsIGFuZCB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIGVhcmx5IGJlZm9yZSByZWFjaGluZyB0aGUgbW9kaWZpZWQgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWVkaWFUZWsgV2ktRmkgaGFyZHdhcmUgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiB0YWJsZSBwYXJzaW5nIGluIHRoZSBNZWRpYVRlayBXaS1GaSBkcml2ZXIgKG10NzYpLiBUaGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgaWYgdGhlIGRyaXZlciBzdWNjZXNzZnVsbHkgcmVhZHMgdGhlIFxcXCJNVEdTXFxcIiBBQ1BJIG9iamVjdCBmcm9tIHRoZSBzeXN0ZW0ncyBBQ1BJIHRhYmxlcy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHZpcnR1YWwgZGV2aWNlcyBkbyBub3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBBQ1BJIGhhbmRsZXMgb3IgdGFibGVzLCBjYXVzaW5nIHRoZSBBQ1BJIHJlYWQgdG8gZmFpbCBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBlYXJseSBiZWZvcmUgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1lZGlhVGVrIFdpLUZpIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzQ6MjMuMDkwOTM2OTI3WiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow4r828[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 14:01:50 +0000 UTC FinishedAt: 2026-08-27 15:34:24 +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+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MThtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIHRhYmxlIHBhcnNpbmcgaW4gdGhlIE1lZGlhVGVrIFdpLUZpIGRyaXZlciAobXQ3NikuIFRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZHJpdmVyIHN1Y2Nlc3NmdWxseSByZWFkcyB0aGUgXCYjMzQ7TVRHU1wmIzM0OyBBQ1BJIG9iamVjdCBmcm9tIHRoZSBzeXN0ZW0mIzM5O3MgQUNQSSB0YWJsZXMuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB2aXJ0dWFsIGRldmljZXMgZG8gbm90IGhhdmUgdGhlc2Ugc3BlY2lmaWMgQUNQSSBoYW5kbGVzIG9yIHRhYmxlcywgY2F1c2luZyB0aGUgQUNQSSByZWFkIHRvIGZhaWwgYW5kIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gZWFybHkgYmVmb3JlIHJlYWNoaW5nIHRoZSBtb2RpZmllZCBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5OWY2YmJmODAxNWI4YzIzOTI0MGEzZWE0ZWQ0YmZkZDg4NmVkZWYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTU6MTU6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcbmluZGV4IDk0NmRkNzk1NmU0YTAuLmZhNTM5Y2RlNTJiNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXG5AQCAtMjgwLDcgJiM0MzsyODAsMTUgQEAgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbiBcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiBcbiBcdGdlb19wb3dlciA9IChiYW5kX3B3ciAmIzQzOyBpZHgpLVx1MDAzZXB3cjtcbi1cdGR5bl9wb3dlciAmIzQzOz0gKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0O1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQVNVUyAoYW5kIHNvbWUgb3RoZXIgT0VNKSBBQ1BJIE1UR1MgdGFibGVzIGZpbGwgdW51c2VkIGdlb1xuJiM0MztcdCAqIHNsb3RzIHdpdGggMHhGRi4gV2luZG93cyB0cmVhdHMgdGhhdCBhcyBcJiMzNDtubyBjYXBcJiMzNDsuIExpbnV4IHRvb2tcbiYjNDM7XHQgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJiMzOTtkIGV2ZXJ5IHJhdGUgZG93biB0byB+MyBkQm0gdG1hYy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKHU4KWdlb19wb3dlciA9PSAweGZmKVxuJiM0MztcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiYjNDM7XHRpZiAoKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0ICE9IDB4ZmYpXG4mIzQzO1x0XHRkeW5fcG93ZXIgJiM0Mzs9IChiYW5kX3B3ciAmIzQzOyBpZHgpLVx1MDAzZW9mZnNldDtcbiBcbiBcdHJldHVybiBtaW4oZ2VvX3Bvd2VyLCBkeW5fcG93ZXIpO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xOG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIHRhYmxlIHBhcnNpbmcgaW4gdGhlIE1lZGlhVGVrIFdpLUZpIGRyaXZlciAobXQ3NikuIFRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZHJpdmVyIHN1Y2Nlc3NmdWxseSByZWFkcyB0aGUgXCYjMzQ7TVRHU1wmIzM0OyBBQ1BJIG9iamVjdCBmcm9tIHRoZSBzeXN0ZW0mIzM5O3MgQUNQSSB0YWJsZXMuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB2aXJ0dWFsIGRldmljZXMgZG8gbm90IGhhdmUgdGhlc2Ugc3BlY2lmaWMgQUNQSSBoYW5kbGVzIG9yIHRhYmxlcywgY2F1c2luZyB0aGUgQUNQSSByZWFkIHRvIGZhaWwgYW5kIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gZWFybHkgYmVmb3JlIHJlYWNoaW5nIHRoZSBtb2RpZmllZCBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5OWY2YmJmODAxNWI4YzIzOTI0MGEzZWE0ZWQ0YmZkZDg4NmVkZWYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjcgMTU6MTU6MjMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYwppbmRleCA5NDZkZDc5NTZlNGEwLi5mYTUzOWNkZTUyYjU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMKQEAgLTI4MCw3ICYjNDM7MjgwLDE1IEBAIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksCiAJCXJldHVybiBkeW5fcG93ZXI7CiAKIAlnZW9fcG93ZXIgPSAoYmFuZF9wd3IgJiM0MzsgaWR4KS0mZ3Q7cHdyOwotCWR5bl9wb3dlciAmIzQzOz0gKGJhbmRfcHdyICYjNDM7IGlkeCktJmd0O29mZnNldDsKJiM0MzsJLyoKJiM0MzsJICogQVNVUyAoYW5kIHNvbWUgb3RoZXIgT0VNKSBBQ1BJIE1UR1MgdGFibGVzIGZpbGwgdW51c2VkIGdlbwomIzQzOwkgKiBzbG90cyB3aXRoIDB4RkYuIFdpbmRvd3MgdHJlYXRzIHRoYXQgYXMgJiMzNDtubyBjYXAmIzM0Oy4gTGludXggdG9vawomIzQzOwkgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJiMzOTtkIGV2ZXJ5IHJhdGUgZG93biB0byB+MyBkQm0gdG1hYy4KJiM0MzsJICovCiYjNDM7CWlmICgodTgpZ2VvX3Bvd2VyID09IDB4ZmYpCiYjNDM7CQlyZXR1cm4gZHluX3Bvd2VyOwomIzQzOwlpZiAoKGJhbmRfcHdyICYjNDM7IGlkeCktJmd0O29mZnNldCAhPSAweGZmKQomIzQzOwkJZHluX3Bvd2VyICYjNDM7PSAoYmFuZF9wd3IgJiM0MzsgaWR4KS0mZ3Q7b2Zmc2V0OwogCiAJcmV0dXJuIG1pbihnZW9fcG93ZXIsIGR5bl9wb3dlcik7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhY2hpbmcgdGhlIEFDUEkgU0FSIENvZGUgaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNgLiBJdCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGlzc3VlIGluIHRoZSBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIGZ1bmN0aW9uLCB3aGVyZSBhIGAweGZmYCB2YWx1ZSBpcyBiZWluZyBpbmNvcnJlY3RseSBpbnRlcnByZXRlZCBhcyBgLTEgZEJtYCwgbGVhZGluZyB0byBwb3dlciBjYXBwaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGNvZGUgaW4gYSBRRU1VIGVudmlyb25tZW50PwoKVGhpcyBpcyBwYXJ0IG9mIHRoZSBNZWRpYVRlayBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgQUNQSSBTQVIgdGFibGUgcGFyc2luZy4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtLCBteSBndXQgdGVsbHMgbWUgdGhpcyBpcyB1c3VhbGx5IHRpZWQgdG8gYWN0dWFsIGhhcmR3YXJlLiBJcyBgbXQ3NmAgZW11bGF0ZWQ/IE5vLCBpdCYjMzk7cyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBUaG91Z2ggSSByZW1lbWJlciBgbWFjODAyMTFfaHdzaW1gLCB0aGF0JiMzOTtzIGRpZmZlcmVudC4gVGhhdCBzaW11bGF0ZXMgYSB3aXJlbGVzcyBkZXZpY2UsIGJ1dCBub3QgdGhpcyBzcGVjaWZpYyBkcml2ZXIuCgpTbywgdGhlIG5leHQgcXVlc3Rpb24gYmVjb21lczogaXMgaXQgKnBvc3NpYmxlKiB0byB0cmlnZ2VyIHRoaXMgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCBjb2RlIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IEl0IHNlZW1zIHVubGlrZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGNhbGxpbmcgaXQsIHNvIEkgc2hvdWxkIHJlYWxseSBsb29rIGF0IHRoZSBjYWxsZXJzIG9mIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgdG8gdW5kZXJzdGFuZCBob3cgaXQgaXMgaW52b2tlZCBpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyeF9hc2FyX2dldF9nZW9fcHdyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MjMzPXN0YXRpYyBzOFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMzQ6bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM1LVx0XHRcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHM4IGR5bl9wb3dlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5Nz1tdDc5MnhfYXNhcl9yYW5nZV9wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzI2Olx0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMyNy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDE4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgKioKCk9rYXksIHNvIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgaXMgY2FsbGVkIHRocm91Z2ggYG10NzkyeF9hc2FyX3JhbmdlX3B3cmAsIGFuZCB0aGF0JiMzOTtzIHByb2JhYmx5IHRyaWdnZXJlZCB3aGVuIHNldHRpbmcgdHJhbnNtaXNzaW9uIHBvd2VyLCB3aGljaCBpcyBhIGtleSBhcmVhIGZvciBmdXp6aW5nLiBOb3csIHRoaXMgaXMgcGFydCBvZiB0aGUgYG10NzZgIGRyaXZlciBzdWl0ZSwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgaGFyZHdhcmUtc3BlY2lmaWMsIHNwZWNpZmljYWxseSBNZWRpYVRlayBXaS1GaSBjYXJkcy4gV2Uga25vdyB0aGlzIG1lYW5zIGVpdGhlciBQQ0llIG9yIFVTQiBpbXBsZW1lbnRhdGlvbnMuIFRoZSB1c3VhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2UgdXNlIGFyZW4mIzM5O3QgZ29pbmcgdG8gY3V0IGl0LCBhdCBsZWFzdCBub3QgZGlyZWN0bHkuIEkgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBjb252aW5jaW5nIFVTQiBlbXVsYXRpb24uIFdlIGRvbiYjMzk7dCBoYXZlIGEgTWVkaWFUZWsgV2ktRmkgVVNCIGdhZGdldCBzZXQgdXAgaW4gb3VyIHN5emthbGxlci9RRU1VIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCldhaXQgYSBzZWNvbmTigKYgd2FzbiYjMzk7dCBgbXQ3OTIxdWAgYSBVU0IgZHJpdmVyPyAqVGhhdCogY2hhbmdlcyB0aGluZ3MuIENvdWxkIHdlIHJlYWNoIHRoaXMgdGhyb3VnaCBVU0IgZnV6emluZyB0aGVuPyBUaGlzIGlzIHdvcnRoIGludmVzdGlnYXRpbmcuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29tcGlsYXRpb24gYW5kIGNoZWNrIGlmIGBtdDc5MnhfYWNwaV9zYXIuY2AgaXMgYWN0dWFsbHkgY29tcGlsZWQgZm9yIFVTQi4gVGhpcyBpcyBhIHZlcnkgcHJvbWlzaW5nIGxlYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTJ4X2FjcGlfc2FyLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT00MD1tdDc5MngtbGliLXkgOj0gbXQ3OTJ4X2NvcmUubyBtdDc5MnhfbWFjLm8gbXQ3OTJ4X3RyYWNlLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUtNDEtXHRcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjQyOm10NzkyeC1saWItJChDT05GSUdfQUNQSSkgJiM0Mzs9IG10NzkyeF9hY3BpX3Nhci5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQzLW10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzMzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCk9rYXksIHNvIGBtdDc5MnhfYWNwaV9zYXIub2AgaXMgZGVmaW5pdGVseSBhIGNvbXBvbmVudCBvZiB0aGUgYG10NzkyeC1saWJgIG1vZHVsZSwgYW5kIHRoYXQgbGlicmFyeSBpcyBmdW5kYW1lbnRhbCB0byB0aGUgb3BlcmF0aW9uIG9mIGJvdGggdGhlIGBtdDc5MjF1YCAoVVNCKSBhbmQgYG10NzkyMWVgIChQQ0llKSB2YXJpYW50cy4gVGhhdCYjMzk7cyBnb29kIHRvIGVzdGFibGlzaC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgY2FuIHdlIGV4cGxvaXQgdGhlIEFDUEkgU0FSIHRhYmxlIGhhbmRsaW5nIHRocm91Z2ggdGhlIFVTQiBpbnRlcmZhY2U/IEl0JiMzOTtzIGFuIGludGVyZXN0aW5nIGF2ZW51ZSB0byBleHBsb3JlLiBXZSBrbm93IHRoYXQgdGhlIEFDUEkgU0FSIGRhdGEgaXNuJiMzOTt0IGp1c3QgcHVsbGVkIGZyb20gdGhpbiBhaXI7IGl0JiMzOTtzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgc3lzdGVtJiMzOTtzIEFDUEkgdGFibGVzLiBNZXRob2RzIGxpa2UgYGFjcGlfZXZhbHVhdGVfb2JqZWN0YCBhcmUgbGlrZWx5IGludm9sdmVkIGluIHRoZSBwcm9jZXNzLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byBgbXQ3OTJ4X2FjcGlfc2FyLmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKnByZWNpc2VseSogaG93IHRoYXQgbW9kdWxlIGludGVyZmFjZXMgd2l0aCBhbmQgcmV0cmlldmVzIHRoZSBBQ1BJIGRhdGEuIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvdyBmcm9tIEFDUEkgdG8gdGhlIG1vZHVsZSBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyB0byBpbnRyb2R1Y2UgYW5kIGZ1enogdGhpcyBkYXRhIHZpYSBhIFVTQiBjb25uZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWNwaV9ldmFsdWF0ZV9vYmplY3QuKm10NzkyeCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzNwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlLCBzdGFydGluZyB3aXRoIGEgKipib2xkZWQgaGVhZGVyKio6CgoqKkRpZ2dpbmcgaW50byB0aGUgQUNQSSBEYXRhIEFjcXVpc2l0aW9uIGluIG10NzkyeF9hY3BpX3Nhci5jKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGhvdyBgbXQ3OTJ4X2FjcGlfc2FyLmNgIGhhbmRsZXMgQUNQSSBkYXRhLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBTQVIgKFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSkgbWVhc3VyZW1lbnRzIGFyZSBoYW5kbGVkLCBhbmQgdWx0aW1hdGVseSwgaG93IHBvd2VyIG1hbmFnZW1lbnQgYW5kIHJlZ3VsYXRvcnkgY29tcGxpYW5jZSBwbGF5IG91dCBpbiB0aGlzIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGFjcXVpc2l0aW9uIHBhdGgsIHBpbnBvaW50aW5nIHdoZXJlIHRoZSBBQ1BJIGluZm9ybWF0aW9uIGlzIGZldGNoZWQsIHZhbGlkYXRlZCwgYW5kIHRoZW4gc3Vic2VxdWVudGx5IHVzZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhleSYjMzk7cmUgZm9sbG93aW5nIHN0YW5kYXJkIEFDUEkgbWV0aG9kcyBvciBlbXBsb3lpbmcgc29tZSB2ZW5kb3Itc3BlY2lmaWMgcXVpcmtzLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIHNvdXJjZSB3aWxsIGNsYXJpZnkgdGhlIHZhbGlkaXR5IG9mIHRoZSBkYXRhIHRoZXkmIzM5O3JlIHVzaW5nIHRvIGNvbnRyb2wgdGhlIHBvd2VyIHRyYW5zbWl0IGxldmVscy4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGlzLCBhbmQgaWYgaXQmIzM5O3MgdXAgdG8gcGFyIHdpdGggdGhlIHJlbGV2YW50IEFDUEkgc3BlY2lmaWNhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgaGFuZGxpbmcgZXJyb3JzIGFuZCBlZGdlIGNhc2VzIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWNwaV9ldmFsdWF0ZV9vYmplY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MzA9bXQ3OTJ4X2FjcGlfcmVhZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqbWV0aG9kLCB1OCAqKnRibCwgdTMyICpsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDg6XHRzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE5VTEwsIE5VTEwsIFx1MDAyNmJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ5LVx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjQyCgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEFDUEkgVGFibGUgSW50ZXJhY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgY2xlYXJseSB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCBBQ1BJIHRhYmxlcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGl0JiMzOTtzIHJlYWRpbmcgdGhvc2UgdGFibGVzIHRvIGdldCBzeXN0ZW0gaW5mb3JtYXRpb24uJiMzNDsgSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2hpY2gsIGxldCYjMzk7cyBiZSBob25lc3QsIGlzIHdoZXJlIEkmIzM5O2xsIHByb2JhYmx5IGJlIHRlc3RpbmcgdGhpcyBpbml0aWFsbHkgd2l0aCBRRU1VLCB0aGUgQUNQSSB0YWJsZXMgKmFyZSogcHJvdmlkZWQgYnkgdGhlIGh5cGVydmlzb3IgaXRzZWxmLiBVbmxlc3MgSSYjMzk7dmUgdGFrZW4gc3BlY2lmaWMgc3RlcHMgdG8gaW5qZWN0IGN1c3RvbSB0YWJsZXMsIG9yIEkmIzM5O20gZG9pbmcgc29tZXRoaW5nIGNsZXZlciB0byBtb2NrIHRoZSBBQ1BJIGV2YWx1YXRpb24gcHJvY2VzcywgdGhpcyB0aGluZyBpcyBqdXN0IGdvaW5nIHRvIGJhaWwgb3V0IHdoZW4gaXQgY2FuJiMzOTt0IGZpbmQgdGhlIGV4cGVjdGVkIEFDUEkgb2JqZWN0LCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuIFRoZSBjb2RlIHdpbGwgc2ltcGx5IHJldHVybiBlYXJseSwgYW5kIHRoYXQmIzM5O3Mgbm90IGdvb2QuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgbXQ3OTJ4X2FjcGlfcmVhZGAgYW5kIHNlZSB3aGF0IHRoYXQmIzM5O3MgYWN0dWFsbHkgZG9pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGF0dGVtcHRpbmcgdG8gYWNjZXNzIHRoZSBBQ1BJIGRhdGEuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0LyogQ29weXJpZ2h0IChDKSAyMDIzIE1lZGlhVGVrIEluYy4gKi9cbiAgIDM6XHRcbiAgIDQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9hY3BpLmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcJiMzNDttdDc5MnguaFwmIzM0O1xuICAgNjpcdFxuICAgNzpcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9hbGxbXSA9IHtcbiAgIDg6XHRcdFwmIzM0OzAwXCYjMzQ7LCBcJiMzNDtFVVwmIzM0OywgXCYjMzQ7QVJcJiMzNDssIFwmIzM0O0FVXCYjMzQ7LCBcJiMzNDtBWlwmIzM0OywgXCYjMzQ7QllcJiMzNDssIFwmIzM0O0JPXCYjMzQ7LCBcJiMzNDtCUlwmIzM0OyxcbiAgIDk6XHRcdFwmIzM0O0NBXCYjMzQ7LCBcJiMzNDtDTFwmIzM0OywgXCYjMzQ7Q05cJiMzNDssIFwmIzM0O0lEXCYjMzQ7LCBcJiMzNDtKUFwmIzM0OywgXCYjMzQ7TVlcJiMzNDssIFwmIzM0O01YXCYjMzQ7LCBcJiMzNDtNRVwmIzM0OyxcbiAgMTA6XHRcdFwmIzM0O01BXCYjMzQ7LCBcJiMzNDtOWlwmIzM0OywgXCYjMzQ7TkdcJiMzNDssIFwmIzM0O1BIXCYjMzQ7LCBcJiMzNDtSVVwmIzM0OywgXCYjMzQ7UlNcJiMzNDssIFwmIzM0O1NHXCYjMzQ7LCBcJiMzNDtLUlwmIzM0OyxcbiAgMTE6XHRcdFwmIzM0O1RXXCYjMzQ7LCBcJiMzNDtUSFwmIzM0OywgXCYjMzQ7VUFcJiMzNDssIFwmIzM0O0dCXCYjMzQ7LCBcJiMzNDtVU1wmIzM0OywgXCYjMzQ7Vk5cJiMzNDssIFwmIzM0O0tIXCYjMzQ7LCBcJiMzNDtQWVwmIzM0OyxcbiAgMTI6XHR9O1xuICAxMzpcdFxuICAxNDpcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9ldVtdID0ge1xuICAxNTpcdFx0XCYjMzQ7QURcJiMzNDssIFwmIzM0O0FUXCYjMzQ7LCBcJiMzNDtCRVwmIzM0OywgXCYjMzQ7QkdcJiMzNDssIFwmIzM0O0NZXCYjMzQ7LCBcJiMzNDtDWlwmIzM0OywgXCYjMzQ7SFJcJiMzNDssIFwmIzM0O0RLXCYjMzQ7LFxuICAxNjpcdFx0XCYjMzQ7RUVcJiMzNDssIFwmIzM0O0ZJXCYjMzQ7LCBcJiMzNDtGUlwmIzM0OywgXCYjMzQ7REVcJiMzNDssIFwmIzM0O0dSXCYjMzQ7LCBcJiMzNDtIVVwmIzM0OywgXCYjMzQ7SVNcJiMzNDssIFwmIzM0O0lFXCYjMzQ7LFxuICAxNzpcdFx0XCYjMzQ7SVRcJiMzNDssIFwmIzM0O0xWXCYjMzQ7LCBcJiMzNDtMSVwmIzM0OywgXCYjMzQ7TFRcJiMzNDssIFwmIzM0O0xVXCYjMzQ7LCBcJiMzNDtNQ1wmIzM0OywgXCYjMzQ7TVRcJiMzNDssIFwmIzM0O05MXCYjMzQ7LFxuICAxODpcdFx0XCYjMzQ7Tk9cJiMzNDssIFwmIzM0O1BMXCYjMzQ7LCBcJiMzNDtQVFwmIzM0OywgXCYjMzQ7Uk9cJiMzNDssIFwmIzM0O1NLXCYjMzQ7LCBcJiMzNDtTSVwmIzM0OywgXCYjMzQ7RVNcJiMzNDssIFwmIzM0O1NFXCYjMzQ7LFxuICAxOTpcdFx0XCYjMzQ7Q0hcJiMzNDssXG4gIDIwOlx0fTtcbiAgMjE6XHRcbiAgMjI6XHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNjX2xpc3RfYmVbXSA9IHtcbiAgMjM6XHRcdFwmIzM0O0FSXCYjMzQ7LCBcJiMzNDtCUlwmIzM0OywgXCYjMzQ7QllcJiMzNDssIFwmIzM0O0NMXCYjMzQ7LCBcJiMzNDtJUVwmIzM0OywgXCYjMzQ7TVhcJiMzNDssIFwmIzM0O09NXCYjMzQ7LCBcJiMzNDtSVVwmIzM0OyxcbiAgMjQ6XHRcdFwmIzM0O1JXXCYjMzQ7LCBcJiMzNDtWTlwmIzM0OywgXCYjMzQ7S1JcJiMzNDssIFwmIzM0O1VBXCYjMzQ7LCBcJiMzNDtcJiMzNDssIFwmIzM0O1wmIzM0OywgXCYjMzQ7XCYjMzQ7LCBcJiMzNDtcJiMzNDssXG4gIDI1Olx0XHRcJiMzNDtFVVwmIzM0OywgXCYjMzQ7QVRcJiMzNDssIFwmIzM0O0NOXCYjMzQ7LCBcJiMzNDtDQVwmIzM0OywgXCYjMzQ7VFdcJiMzNDssIFwmIzM0O05aXCYjMzQ7LCBcJiMzNDtQSFwmIzM0OywgXCYjMzQ7VUtcJiMzNDssXG4gIDI2Olx0XHRcJiMzNDtVU1wmIzM0OyxcbiAgMjc6XHR9O1xuICAyODpcdFxuICAyOTpcdHN0YXRpYyBpbnRcbiAgMzA6XHRtdDc5MnhfYWNwaV9yZWFkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICptZXRob2QsIHU4ICoqdGJsLCB1MzIgKmxlbilcbiAgMzE6XHR7XG4gIDMyOlx0XHRzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmID0geyBBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTCB9O1xuICAzMzpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gIDM0Olx0XHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3Jvb3Q7XG4gIDM1Olx0XHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XG4gIDM2Olx0XHRhY3BpX3N0YXR1cyBzdGF0dXM7XG4gIDM3Olx0XHR1MzIgaSA9IDA7XG4gIDM4Olx0XHRpbnQgcmV0O1xuICAzOTpcdFxuICA0MDpcdFx0cm9vdCA9IEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KTtcbiAgNDE6XHRcdGlmICghcm9vdClcbiAgNDI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuICA0MzpcdFxuICA0NDpcdFx0c3RhdHVzID0gYWNwaV9nZXRfaGFuZGxlKHJvb3QsIG1ldGhvZCwgXHUwMDI2aGFuZGxlKTtcbiAgNDU6XHRcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcbiAgNDY6XHRcdFx0cmV0dXJuIC1FSU87XG4gIDQ3Olx0XG4gIDQ4Olx0XHRzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE5VTEwsIE5VTEwsIFx1MDAyNmJ1Zik7XG4gIDQ5Olx0XHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpXG4gIDUwOlx0XHRcdHJldHVybiAtRUlPO1xuICA1MTpcdFxuICA1MjpcdFx0c2FyX3Jvb3QgPSBidWYucG9pbnRlcjtcbiAgNTM6XHRcdGlmIChzYXJfcm9vdC1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9QQUNLQUdFIHx8XG4gIDU0Olx0XHQgICAgc2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5jb3VudCBcdTAwM2MgNCB8fFxuICA1NTpcdFx0ICAgIHNhcl9yb290LVx1MDAzZXBhY2thZ2UuZWxlbWVudHNbMF0udHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xuICA1NjpcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtzYXIgY250ID0gJWRcXG5cJiMzNDssXG4gIDU3Olx0XHRcdFx0c2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5jb3VudCk7XG4gIDU4Olx0XHRcdHJldCA9IC1FSU5WQUw7XG4gIDU5Olx0XHRcdGdvdG8gZnJlZTtcbiAgNjA6XHRcdH1cbiAgNjE6XHRcbiAgNjI6XHRcdGlmICghKnRibCkge1xuICA2MzpcdFx0XHQqdGJsID0gZGV2bV9remFsbG9jKG1kZXYtXHUwMDNlZGV2LCBzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmNvdW50LFxuICA2NDpcdFx0XHRcdFx0ICAgIEdGUF9LRVJORUwpO1xuICA2NTpcdFx0XHRpZiAoISp0YmwpIHtcbiAgNjY6XHRcdFx0XHRyZXQgPSAtRU5PTUVNO1xuICA2NzpcdFx0XHRcdGdvdG8gZnJlZTtcbiAgNjg6XHRcdFx0fVxuICA2OTpcdFx0fVxuICA3MDpcdFxuICA3MTpcdFx0aWYgKGxlbilcbiAgNzI6XHRcdFx0KmxlbiA9IHNhcl9yb290LVx1MDAzZXBhY2thZ2UuY291bnQ7XG4gIDczOlx0XG4gIDc0Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmNvdW50OyBpJiM0MzsmIzQzOykge1xuICA3NTpcdFx0XHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3VuaXQgPSBcdTAwMjZzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmVsZW1lbnRzW2ldO1xuICA3NjpcdFxuICA3NzpcdFx0XHRpZiAoc2FyX3VuaXQtXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUilcbiAgNzg6XHRcdFx0XHRicmVhaztcbiAgNzk6XHRcbiAgODA6XHRcdFx0KigqdGJsICYjNDM7IGkpID0gKHU4KXNhcl91bml0LVx1MDAzZWludGVnZXIudmFsdWU7XG4gIDgxOlx0XHR9XG4gIDgyOlx0XG4gIDgzOlx0XHRyZXQgPSBpID09IHNhcl9yb290LVx1MDAzZXBhY2thZ2UuY291bnQgPyAwIDogLUVJTlZBTDtcbiAgODQ6XHRmcmVlOlxuICA4NTpcdFx0a2ZyZWUoc2FyX3Jvb3QpO1xuICA4NjpcdFxuICA4NzpcdFx0cmV0dXJuIHJldDtcbiAgODg6XHR9XG4gIDg5Olx0XG4gIDkwOlx0LyogTVRDTCA6IENvdW50cnkgTGlzdCBUYWJsZSBmb3IgNkcgYmFuZCAqL1xuICA5MTpcdC8qIE1UQ0wgOiBDb3VudHJ5IExpc3QgVGFibGUgZm9yIDZHIGJhbmQgYW5kIDExQkUgKi9cbiAgOTI6XHRzdGF0aWMgaW50XG4gIDkzOlx0bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggKnZlcnNpb24pXG4gIDk0Olx0e1xuICA5NTpcdFx0aW50IGxlbiwgcmV0O1xuICA5NjpcdFxuICA5NzpcdFx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01UQ0wsIHRhYmxlLCBcdTAwMjZsZW4pO1xuICA5ODpcdFx0aWYgKHJldClcbiAgOTk6XHRcdFx0cmV0dXJuIHJldDtcbiAxMDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyMgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIG10NzkyeCBBQ1BJIFJlYWQgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG10NzkyeF9hY3BpX3JlYWRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBncmFiIGFuIEFDUEkgaGFuZGxlIGZyb20gYG1kZXYtJmd0O2RldmAsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHJlcHJlc2VudHMgdGhlIHBoeXNpY2FsIGRldmljZSwgZWl0aGVyIFBDSWUgb3IgVVNCLiBOb3csIHRoZSBpbW1lZGlhdGUgaXNzdWUgaXMgdGhhdCBpbiBRRU1VLCB3ZSBkb24mIzM5O3QgaGF2ZSBhIE1lZGlhVGVrIFdpLUZpIGRldmljZSBwcmVzZW50LCBzbyB0aGVyZSBpcyBubyByZWFsIEFDUEkgaGFuZGxlIHRvIGdldC4gRXZlbiBpZiBJIHdlcmUgdG8gc29tZWhvdyBtb2NrIHRoZSBkZXZpY2UsIGluamVjdGluZyB0aGUgcmVsZXZhbnQgQUNQSSB0YWJsZXMgaW50byBzeXprYWxsZXIgZm9yIHRlc3Rpbmcgc2VlbXMgbGlrZSBhIG5vbi1zdGFydGVyIHJpZ2h0IG5vdy4gCgpCdXQgaG9sZCBvbiwgaXMgdGhlcmUgKmFueSogd2F5IHRoaXMgY29kZSBwYXRoIGNvdWxkIGJlIGhpdD8gSSYjMzk7bSBkZWFsaW5nIHdpdGggdGhlIGBtdDc5MjFlYCwgYG10NzkyMXVgLCBgbXQ3OTI1ZWAsIGFuZCBgbXQ3OTI1dWAgZHJpdmVycy4gU3l6a2FsbGVyLCB3aXRoIGl0cyBhYmlsaXR5IHRvIGVtdWxhdGUgVVNCIGRldmljZXMgdXNpbmcgYGR1bW15X2hjZGAgYW5kIGByYXctZ2FkZ2V0YCwgY291bGQgY29uY2VpdmFibHkgY3JlYXRlIGEgVVNCIGRldmljZSB0aGF0IGJpbmRzIHRvIGBtdDc5MjF1YCBvciBgbXQ3OTI1dWAuIFRoYXQgKmNvdWxkKiBiZSBhIHdheSB0byB0cmlnZ2VyIHRoZSBjb2RlLCByaWdodD8gSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGF0IGBtdDc5MjF1YCBpcyBpbmRlZWQgYSBVU0IgZHJpdmVyLCB0byBzZWUgaWYgdGhhdCBwYXRoIGlzIGV2ZW4gdmlhYmxlLiBOZWVkIHRvIGNoZWNrIGlmIHRoaXMgaXMgcG9zc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMXUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTVQ3OTIxUykgJiM0Mzs9IG10NzkyMXMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVQ3OTIxVSkgJiM0Mzs9IG10NzkyMXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGUtNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZT0xMT1tdDc5MjFzLXkgOj0gc2Rpby5vIHNkaW9fbWFjLm8gc2Rpb19tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6MTI6bXQ3OTIxdS15IDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNTpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3OTIxdV9kZXZpY2VfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE2LVx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NzkwMiwgMHhmZiwgMHhmZiwgMHhmZiksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzY6bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM3LVx0XHRcdCBpbnQgY21kLCBpbnQgKnNlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjY1OnN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTcwLVx0XHQudGFpbHJvb20gPSBNVF9VU0JfVEFJTF9TSVpFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6NzE6XHRcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNzItXHRcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjFfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6ODk6c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE1MDpzdGF0aWMgaW50IG10NzkyMXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTUxLVx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTcxLVx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTcyOlx0XHQubWN1X2luaXQgPSBtdDc5MjF1X21jdV9pbml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTczLVx0XHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3NDpcdFx0LnJlc2V0ID0gbXQ3OTIxdV9tYWNfcmVzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzUtXHR9O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTI2My0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoyNjQ6c3RhdGljIGludCBtdDc5MjF1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTI2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MjkxOnN0YXRpYyBpbnQgbXQ3OTIxdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0yOTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjMzNDpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXQ3OTIxdV9kZXZpY2VfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzM1LU1PRFVMRV9GSVJNV0FSRShNVDc5MjFfRklSTVdBUkVfV00pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzM2PU1PRFVMRV9GSVJNV0FSRShNVDc5MjFfUk9NX1BBVENIKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjMzODpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTIxdV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMzktXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQwOlx0LmlkX3RhYmxlXHQ9IG10NzkyMXVfZGV2aWNlX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQxOlx0LnByb2JlXHRcdD0gbXQ3OTIxdV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0Mi1cdC5kaXNjb25uZWN0XHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0My0jaWZkZWYgQ09ORklHX1BNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDQ6XHQuc3VzcGVuZFx0PSBtdDc5MjF1X3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDU6XHQucmVzdW1lXHRcdD0gbXQ3OTIxdV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDY6XHQucmVzZXRfcmVzdW1lXHQ9IG10NzkyMXVfcmVzdW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQ3LSNlbmRpZiAvKiBDT05GSUdfUE0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTAtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNjQKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAyMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBQ1BJIEludGVyYWN0aW9uIG9mIHRoZSBgbXQ3OTIxdWAgVVNCIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG10NzkyMXVgLCB3aGljaCBJIGtub3cgaXMgYSBVU0IgZHJpdmVyLCBhbmQgSSB1bmRlcnN0YW5kIHRoYXQgc3l6a2FsbGVyIGNhbiBiZSB1c2VkIHRvIGZ1enogVVNCIGRldmljZXMuIFRoZSBxdWVzdGlvbiB0aGF0JiMzOTtzIHBpcXVpbmcgbXkgaW50ZXJlc3QgaXMgd2hldGhlciBvciBub3QgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggQUNQSSB0YWJsZXMuIFRoZSBjb2RlIHN1Z2dlc3RzIGl0IG1pZ2h0LCB0aHJvdWdoIGBtdDc5MnhfYWNwaV9yZWFkYC4gVGhpcyBmdW5jdGlvbiBjYWxscyBgYWNwaV9nZXRfaGFuZGxlYCwgdXNpbmcgYEFDUElfSEFORExFKG1kZXYtJmd0O2RldilgLiBSaWdodCwgc28gZm9yIGEgVVNCIGRldmljZSwgYG1kZXYtJmd0O2RldmAgaXMgdGhlIGRldmljZSBzdHJ1Y3R1cmUgb2YgdGhlIFVTQiBpbnRlcmZhY2UsIGAmYW1wO3VzYl9pbnRmLSZndDtkZXZgLiBOb3csIHRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4uLiBkb2VzIGEgVVNCIGludGVyZmFjZSBkZXZpY2UgZXZlbiAqaGF2ZSogYW4gQUNQSSBoYW5kbGU/CgpUeXBpY2FsbHksIEFDUEkgaGFuZGxlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHBsYXRmb3JtIGRldmljZXMsIFBDSSBkZXZpY2VzLCBvciwgaW4gc29tZSBjYXNlcywgSTJDL1NQSSBkZXZpY2VzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgVVNCIGRldmljZXMgYXJlIHVzdWFsbHkgbm90IGRlc2NyaWJlZCB3aXRoaW4gQUNQSSB1bmxlc3MgdGhleSBhcmUgc3BlY2lmaWNhbGx5IGhhcmR3aXJlZCBhbmQgdGhlIGluZm9ybWF0aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBEU0RULiBFdmVuIHdoZW4gZW11bGF0aW5nIFVTQiBkZXZpY2VzIGluIFFFTVUsIHRoZSB2aXJ0dWFsIGRldmljZXMgSSYjMzk7dmUgY3JlYXRlZCBkb24mIzM5O3QgZXhwb3NlIGFuIEFDUEkgaGFuZGxlLiBUaGF0IG1lYW5zIGBBQ1BJX0hBTkRMRShtZGV2LSZndDtkZXYpYCBpcyB2ZXJ5IGxpa2VseSBnb2luZyB0byByZXR1cm4gTlVMTCBpbiB0aGlzIGNvbnRleHQuIExldCYjMzk7cyBzdGVwIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBgbXQ3OTJ4X2FjcGlfcmVhZGAgY29kZSB0byBjb25maXJtIHRoaXMgaHVuY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRtdDc5MnhfYWNwaV9yZWFkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICptZXRob2QsIHU4ICoqdGJsLCB1MzIgKmxlbilcbiAgMzE6XHR7XG4gIDMyOlx0XHRzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmID0geyBBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTCB9O1xuICAzMzpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZW10NzY7XG4gIDM0Olx0XHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3Jvb3Q7XG4gIDM1Olx0XHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XG4gIDM2Olx0XHRhY3BpX3N0YXR1cyBzdGF0dXM7XG4gIDM3Olx0XHR1MzIgaSA9IDA7XG4gIDM4Olx0XHRpbnQgcmV0O1xuICAzOTpcdFxuICA0MDpcdFx0cm9vdCA9IEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KTtcbiAgNDE6XHRcdGlmICghcm9vdClcbiAgNDI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuICA0MzpcdFxuICA0NDpcdFx0c3RhdHVzID0gYWNwaV9nZXRfaGFuZGxlKHJvb3QsIG1ldGhvZCwgXHUwMDI2aGFuZGxlKTtcbiAgNDU6XHRcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcbiAgNDY6XHRcdFx0cmV0dXJuIC1FSU87XG4gIDQ3Olx0XG4gIDQ4Olx0XHRzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE5VTEwsIE5VTEwsIFx1MDAyNmJ1Zik7XG4gIDQ5Olx0XHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDkwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtdDc5MnhfYWNwaV9yZWFkIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc5MnhfYWNwaV9yZWFkYCBmdW5jdGlvbiwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgTlVMTCBjaGVjayBvbiBgcm9vdGAuIElmIGByb290YCBpcyBOVUxMLCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIGAtRU9QTk9UU1VQUGAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZDsgdGhlIGZ1bmN0aW9uIHNpbXBseSB3b24mIzM5O3Qgd29yayBpbiB0aGF0IGNhc2UuIFRoYXQgbWVhbnMgaWYgd2UgZW5jb3VudGVyIGEgYG10NzkyeF9hY3BpX3JlYWRgIGNhbGwsIGFuZCBpdOKAmXMgcmV0dXJuaW5nIGAtRU9QTk9UU1VQUGAsIGEgbGlrZWx5IGN1bHByaXQgY291bGQgYmUgdGhlIGByb290YCB2YXJpYWJsZSBiZWluZyBOVUxMLCBvciBzb21laG93IGJlY29taW5nIHNvIGR1cmluZyB0aGUgY2FsbC4KCk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSBiZWluZyAqdXNlZCo/IEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBjYWxscyB0byBgbXQ3OTJ4X2FjcGlfcmVhZGAgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGlzIGVycm9yIGNvbmRpdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYW5kIHdoYXQgdGhvc2UgY29udGV4dHMgbG9vayBsaWtlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfYWNwaV9yZWFkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMDptdDc5MnhfYWNwaV9yZWFkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICptZXRob2QsIHU4ICoqdGJsLCB1MzIgKmxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9OTM9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggKnZlcnNpb24pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy05Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6OTc6XHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVRDTCwgdGFibGUsIFx1MDAyNmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTk4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTExMz1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRkcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMTg6XHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVREUywgdGFibGUsIFx1MDAyNmxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTExOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNDg9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggdmVyc2lvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTUyOlx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01UR1MsIHRhYmxlLCBcdTAwMjZsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTc5PW10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE4MzpcdHJldCA9IG10NzkyeF9hY3BpX3JlYWQoZGV2LCBNVDc5MnhfQUNQSV9NVEZHLCB0YWJsZSwgXHUwMDI2bGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTg0LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNDQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRXJyb3IgUHJvcGFnYXRpb24gaW4gTVQ3OTJ4IEFDUEkgUmVhZHMqKgoKQWxyaWdodCwgSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfKmAgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCB0aGV5JiMzOTtyZSBwcm9iYWJseSBqdXN0IHdyYXBwZXJzIGFyb3VuZCBgbXQ3OTJ4X2FjcGlfcmVhZGAuIEFuZCBpdCBsb29rcyBsaWtlIEkmIzM5O20gcmlnaHQ6IHRoZXkgYWxsIGltbWVkaWF0ZWx5IHJldHVybiBhbiBlcnJvciBpZiB0aGF0IGxvd2VyLWxldmVsIGZ1bmN0aW9uIGZhaWxzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwYXR0ZXJuLiBJdCYjMzk7cyBjbGVhbiBpbiBwcmluY2lwbGUgYnV0IGNhbiBwb3RlbnRpYWxseSBtYXNrIHRoZSAqc291cmNlKiBvZiB0aGUgaXNzdWUuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IHdoZXJlIGFyZSB0aGVzZSB3cmFwcGVyIGZ1bmN0aW9ucyAqY2FsbGVkKj8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsLiBJdCYjMzk7cyB0aW1lIHRvIHRyYWNlIHRoZSB1c2FnZSB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBBQ1BJIHJlYWQgcHJvY2Vzcy4gS25vd2luZyB0aGUgdXBzdHJlYW0gY29udGV4dCBpcyB3aGF0IG1hdHRlcnMuIFRoaXMgd2lsbCB0ZWxsIG1lICp3aHkqIHRoZSByZWFkIGlzIGhhcHBlbmluZyBhbmQgd2hhdCB0aGUgZmFsbG91dCB3aWxsIGJlIGlmIGl0IGZhaWxzLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE0Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE0ODptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjE0LVx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMTU6XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWdlbywgYXNhci1cdTAwM2V2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTYtXHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTgwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBwZXJzcGVjdGl2ZToKCioqSW5pdGlhbCBUaG91Z2h0cyBvbiBtdDc5MnhfaW5pdF9hY3BpX3NhcioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBmdW5jdGlvbiwgYG10NzkyeF9pbml0X2FjcGlfc2FyYC4gSW1tZWRpYXRlbHksIHRoZSAmIzM0O0FDUEkmIzM0OyBpbiB0aGUgbmFtZSBjYXRjaGVzIG15IGV5ZS4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyByZWxhdGVkIHRvIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFBvd2VyIEludGVyZmFjZSBhbmQsIG1vcmUgc3BlY2lmaWNhbGx5LCBhIFNBUiB2YWx1ZS4gU0FSIHVzdWFsbHkgcmVmZXJzIHRvIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAtIHNvIHdlJiMzOTtyZSBsaWtlbHkgaW4gdGhlIHJlYWxtIG9mIHJhZGlvIGZyZXF1ZW5jeSBlbWlzc2lvbnMgYW5kIHJlZ3VsYXRvcnkgY29tcGxpYW5jZS4gVGhlICYjMzQ7bXQ3OTJ4JiMzNDsgcGFydCB0ZWxscyBtZSB3ZSYjMzk7cmUgd2l0aGluIHRoZSBNZWRpYVRlayBmYW1pbHksIHByb2JhYmx5IGEgV2lGaSBvciBwb3RlbnRpYWxseSBCbHVldG9vdGggY29udHJvbGxlci4gVGhpcyBzcGVjaWZpYyBmdW5jdGlvbiwgcHJlc3VtYWJseSBhIHBhcnQgb2YgdGhlIGluaXQgcHJvY2VzcywgaXMgd2hlcmUgdGhlIHN5c3RlbSBnZXRzIFNBUiBpbmZvcm1hdGlvbiwgbGlrZWx5IGluIHJlbGF0aW9uIHRvIHRoZSBkZXZpY2UuIEkgYmV0IHRoaXMgaXMgd2hlcmUgdGhlIGNvZGUgcmVhZHMgZnJvbSB0aGUgQUNQSSB0YWJsZXMgdG8gcmV0cmlldmUgdGhlIHBlcm1pc3NpYmxlIFJGIHBvd2VyIGxldmVscyBvciBzb21lIGZvcm0gb2YgY29udHJvbCBwYXJhbWV0ZXIuIE15IGd1ZXNzIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBkdXJpbmcgZWFybHkgc3lzdGVtIHN0YXJ0dXAsIGFzIHBhcnQgb2YgZGV2aWNlIGRyaXZlciBpbml0aWFsaXphdGlvbi4gVGhpcyBhbGwgc3VnZ2VzdHMgYSBjcml0aWNhbCBwaWVjZSBpbiBjb25maWd1cmluZyB0aGUgUkYgcG93ZXIgb3V0cHV0IG9mIHRoZSBkZXZpY2UgdG8gbWVldCB0aGUgcmVxdWlyZWQgcmVndWxhdG9yeSByZXF1aXJlbWVudHMuIFRoaXMgaXMgd2hlcmUgd2UgZW5zdXJlIHRoZSBkZXZpY2UgYWRoZXJlcyB0byBzYWZldHkgc3RhbmRhcmRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MnhfaW5pdF9hY3BpX3NhciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMjE6XHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MTI4Nj1pbnQgbXQ3OTIxX3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMjk2LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjEyOTc6XHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTI5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjQzPWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTI6XHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTg3OT1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xODg5LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE4OTA6XHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTg5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTYzMD1pbnQgbXQ3OTJ4ZV9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjMyLSNpZmRlZiBDT05GSUdfQUNQSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzQ6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02MzUtdTggbXQ3OTJ4X2FjcGlfZ2V0X2ZsYWdzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MzY9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjM3LSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjYzODpzdGF0aWMgaW5saW5lIGludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02Mzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2NDM6c3RhdGljIGlubGluZSBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjQ0LVx0XHRcdFx0XHQgICAgIGJvb2wgc2V0X2RlZmF1bHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNzk9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Zmcoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTkzOmludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjMwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjk6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMzMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozNTQ6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTA1CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBBQ1BJIFNBUiBJbml0aWFsaXphdGlvbiBmb3IgTVQ3OTJ4IERldmljZXMqKgoKT2theSwgc28gYG10NzkyeF9pbml0X2FjcGlfc2FyYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBkZXZpY2UgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRoYXQgbWFrZXMgc2Vuc2U7IHdlIHdhbnQgdG8gc2V0IHVwIHRoZSBTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUgKFNBUikgdGFibGVzIGVhcmx5IG9uLiBOb3csIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0IGBtdDc5MnhfYWNwaV9yZWFkYCBpcyB2ZXJ5IGxpa2VseSB0byBmYWlsIHJpZ2h0IG9mZiB0aGUgYmF0IGJlY2F1c2UgdGhlIEFDUEkgaGFuZGxlIGBBQ1BJX0hBTkRMRShtZGV2LSZndDtkZXYpYCBpcywgaW4gYWxsIHByb2JhYmlsaXR5LCBnb2luZyB0byBiZSBOVUxMLiBUaGlzLCBvZiBjb3Vyc2UsIGRpcmVjdGx5IGRlcGVuZHMgb24gdGhlIGhhcmR3YXJlIGFuZCB0aGUgQUNQSSBjb25maWd1cmF0aW9uLCBhbmQgSSBhbSBhbHJlYWR5IHBpY3R1cmluZyB0aGUgbGlrZWx5IHNjZW5hcmlvcyB0aGF0IGxlYWQgdG8gYEFDUElfSEFORExFYCBiZWluZyBOVUxMLgoKSWYgYG10NzkyeF9hY3BpX3JlYWRgIGZhaWxzLCBhbmQgSSBiZXQgaXQgd2lsbCwgYG10NzkyeF9pbml0X2FjcGlfc2FyYCBpcyBkZXNpZ25lZCB0byBlaXRoZXIgcmV0dXJuIGVhcmx5IG9yLCBldmVuIHdvcnNlLCBmYWlsIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIFNBUiB0YWJsZXMuIFNvLCB0aGlzIHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgZnVuY3Rpb24gaXRzZWxmIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgaGFuZGxlcyB0aGlzIGxpa2VseSBmYWlsdXJlIHNjZW5hcmlvLiBJIG5lZWQgdG8gZmlndXJlIG91dDogRG9lcyBpdCBqdXN0IHJldHVybiBzaWxlbnRseT8gRG9lcyBpdCBsb2cgYW4gZXJyb3I/IERvZXMgaXQgdHJ5IGFub3RoZXIgZmFsbGJhY2sgbWV0aG9kPyBVbmRlcnN0YW5kaW5nIHRoZSBlcnJvciBoYW5kbGluZyBoZXJlIGlzIGNyaXRpY2FsIHRvIGVuc3VyaW5nIHRoZSBTQVIgY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSwgZXZlbiBpbiBzaXR1YXRpb25zIHdoZXJlIEFDUEkgaW5mb3JtYXRpb24gaXNuJiMzOTt0IHJlYWRpbHkgYXZhaWxhYmxlIG9yIGFjY2Vzc2libGUuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gcmlnaHQgYXdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTM6XHRpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXIoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiAxOTQ6XHR7XG4gMTk1Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyO1xuIDE5NjpcdFx0aW50IHJldDtcbiAxOTc6XHRcbiAxOTg6XHRcdGFzYXIgPSBkZXZtX2t6YWxsb2MoZGV2LVx1MDAzZW10NzYuZGV2LCBzaXplb2YoKmFzYXIpLCBHRlBfS0VSTkVMKTtcbiAxOTk6XHRcdGlmICghYXNhcilcbiAyMDA6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjAxOlx0XG4gMjAyOlx0XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWNvdW50cnlsaXN0LCBcdTAwMjZhc2FyLVx1MDAzZXZlcik7XG4gMjAzOlx0XHRpZiAocmV0KSB7XG4gMjA0Olx0XHRcdGRldm1fa2ZyZWUoZGV2LVx1MDAzZW10NzYuZGV2LCBhc2FyLVx1MDAzZWNvdW50cnlsaXN0KTtcbiAyMDU6XHRcdFx0YXNhci1cdTAwM2Vjb3VudHJ5bGlzdCA9IE5VTEw7XG4gMjA2Olx0XHR9XG4gMjA3Olx0XG4gMjA4Olx0XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRkcyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWR5biwgYXNhci1cdTAwM2V2ZXIpO1xuIDIwOTpcdFx0aWYgKHJldCkge1xuIDIxMDpcdFx0XHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgYXNhci1cdTAwM2VkeW4pO1xuIDIxMTpcdFx0XHRhc2FyLVx1MDAzZWR5biA9IE5VTEw7XG4gMjEyOlx0XHR9XG4gMjEzOlx0XG4gMjE0Olx0XHQvKiBNVEdTIGlzIG9wdGlvbmFsICovXG4gMjE1Olx0XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWdlbywgYXNhci1cdTAwM2V2ZXIpO1xuIDIxNjpcdFx0aWYgKHJldCkge1xuIDIxNzpcdFx0XHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgYXNhci1cdTAwM2VnZW8pO1xuIDIxODpcdFx0XHRhc2FyLVx1MDAzZWdlbyA9IE5VTEw7XG4gMjE5Olx0XHR9XG4gMjIwOlx0XG4gMjIxOlx0XHQvKiBNVEZHIGlzIG9wdGlvbmFsICovXG4gMjIyOlx0XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRmZyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWZnKTtcbiAyMjM6XHRcdGlmIChyZXQpIHtcbiAyMjQ6XHRcdFx0ZGV2bV9rZnJlZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXHUwMDNlZmcpO1xuIDIyNTpcdFx0XHRhc2FyLVx1MDAzZWZnID0gTlVMTDtcbiAyMjY6XHRcdH1cbiAyMjc6XHRcdGRldi1cdTAwM2VwaHkuYWNwaXNhciA9IGFzYXI7XG4gMjI4Olx0XG4gMjI5Olx0XHRyZXR1cm4gMDtcbiAyMzA6XHR9XG4gMjMxOlx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfYWNwaV9zYXIpO1xuIDIzMjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI2NwoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6CgoqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBOdWxsIFBvaW50ZXIgRGVyZWZlcmVuY2UgaW4gTVQ3OTJ4IEFDUEkgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRnc2AgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgcG90ZW50aWFsIGZvciBgYXNhci0mZ3Q7Z2VvYCB0byBiZSBzZXQgdG8gTlVMTCBpZiB0aGF0IGZ1bmN0aW9uIGZhaWxzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyByZWQgZmxhZy4gIFdlIGtub3cgdGhhdCBmYWlsdXJlIGluIHRoaXMgZnVuY3Rpb24gaGFzIHNlcmlvdXMgaW1wbGljYXRpb25zLgoKTm93LCBteSBmb2N1cyBoYXMgc2hpZnRlZCB0byBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgLiBUaGlzIGlzIHdoZXJlIHRoZSBwYXRjaCBpcyBsb2NhdGVkLCBJIG5lZWQgdG8gY2hlY2sgd2hlcmUgYGFzYXItJmd0O2dlb2AgaXMgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBmdW5jdGlvbi4gIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHdlIGFyZSBsaWtlbHkgc2VlaW5nIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHRoZXJlLiBUaGF0IGlzIGlmIGBhc2FyLSZndDtnZW9gIGlzIGluZGVlZCBudWxsIGFmdGVyIHRoZSBwcmV2aW91cyBmdW5jdGlvbiBmYWlscywgYW5kIGlmIHdlIGF0dGVtcHQgdG8gdXNlIHRoaXMgbnVsbCBwb2ludGVyIHdpdGhpbiBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIHdpdGhvdXQgYSBwcm9wZXIgbnVsbCBjaGVjaywgd2UgaGF2ZSBhIGRlZmluaXRlIGJ1Zy4gSSBoYXZlIHRvIHNlZSBob3cgd2UgaGFuZGxlIGBhc2FyLSZndDtnZW9gIGluIHRoaXMgY2FsbCwgYW5kIHdoYXQgc2FmZWd1YXJkcyBhcmUgaW4gcGxhY2UgKG9yIG1pc3NpbmcpIGFyb3VuZCB0aGF0IHN0cnVjdHVyZS4gSSBrbm93IGV4YWN0bHkgd2hhdCBJIGFtIGxvb2tpbmcgZm9yOyB0aGlzIGlzIGEgY2xlYXIgcGF0aCB0byB1bmRlcnN0YW5kaW5nIHRoZSBwcm9ibGVtLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMzpcdHN0YXRpYyBzOFxuIDIzNDpcdG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXG4gMjM1Olx0XHRcdFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZCwgczggZHluX3Bvd2VyKVxuIDIzNjpcdHtcbiAyMzc6XHRcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbiAyMzg6XHRcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCAqYmFuZF9wd3I7XG4gMjM5Olx0XHRzOCBnZW9fcG93ZXI7XG4gMjQwOlx0XHR1OCBpZHgsIG1heDtcbiAyNDE6XHRcbiAyNDI6XHRcdGlmICghYXNhci1cdTAwM2VnZW8pXG4gMjQzOlx0XHRcdHJldHVybiBkeW5fcG93ZXI7XG4gMjQ0Olx0XG4gMjQ1Olx0XHRzd2l0Y2ggKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWRldi1cdTAwM2VyZWdpb24pIHtcbiAyNDY6XHRcdGNhc2UgTkw4MDIxMV9ERlNfRkNDOlxuIDI0NzpcdFx0XHRpZHggPSAwO1xuIDI0ODpcdFx0XHRicmVhaztcbiAyNDk6XHRcdGNhc2UgTkw4MDIxMV9ERlNfRVRTSTpcbiAyNTA6XHRcdFx0aWR4ID0gMTtcbiAyNTE6XHRcdFx0YnJlYWs7XG4gMjUyOlx0XHRkZWZhdWx0OiAvKiBXVyAqL1xuIDI1MzpcdFx0XHRpZHggPSAyO1xuIDI1NDpcdFx0XHRicmVhaztcbiAyNTU6XHRcdH1cbiAyNTY6XHRcbiAyNTc6XHRcdGlmIChhc2FyLVx1MDAzZXZlciA9PSAxKSB7XG4gMjU4Olx0XHRcdGJhbmRfcHdyID0gXHUwMDI2YXNhci1cdTAwM2VnZW8tXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcbiAyNTk6XHRcdFx0bWF4ID0gQVJSQVlfU0laRShhc2FyLVx1MDAzZWdlby1cdTAwM2V0YmxbaWR4XS5iYW5kKTtcbiAyNjA6XHRcdH0gZWxzZSB7XG4gMjYxOlx0XHRcdGJhbmRfcHdyID0gXHUwMDI2YXNhci1cdTAwM2VnZW9fdjItXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcbiAyNjI6XHRcdFx0bWF4ID0gQVJSQVlfU0laRShhc2FyLVx1MDAzZWdlb192Mi1cdTAwM2V0YmxbaWR4XS5iYW5kKTtcbiAyNjM6XHRcdH1cbiAyNjQ6XHRcbiAyNjU6XHRcdHN3aXRjaCAoYmFuZCkge1xuIDI2NjpcdFx0Y2FzZSBOTDgwMjExX0JBTkRfMkdIWjpcbiAyNjc6XHRcdFx0aWR4ID0gMDtcbiAyNjg6XHRcdFx0YnJlYWs7XG4gMjY5Olx0XHRjYXNlIE5MODAyMTFfQkFORF81R0haOlxuIDI3MDpcdFx0XHRpZHggPSAxO1xuIDI3MTpcdFx0XHRicmVhaztcbiAyNzI6XHRcdGNhc2UgTkw4MDIxMV9CQU5EXzZHSFo6XG4gMjczOlx0XHRcdGlkeCA9IDI7XG4gMjc0Olx0XHRcdGJyZWFrO1xuIDI3NTpcdFx0ZGVmYXVsdDpcbiAyNzY6XHRcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiAyNzc6XHRcdH1cbiAyNzg6XHRcbiAyNzk6XHRcdGlmIChpZHggXHUwMDNlPSBtYXgpXG4gMjgwOlx0XHRcdHJldHVybiBkeW5fcG93ZXI7XG4gMjgxOlx0XG4gMjgyOlx0XHRnZW9fcG93ZXIgPSAoYmFuZF9wd3IgJiM0MzsgaWR4KS1cdTAwM2Vwd3I7XG4gMjgzOlx0XHQvKlxuIDI4NDpcdFx0ICogQVNVUyAoYW5kIHNvbWUgb3RoZXIgT0VNKSBBQ1BJIE1UR1MgdGFibGVzIGZpbGwgdW51c2VkIGdlb1xuIDI4NTpcdFx0ICogc2xvdHMgd2l0aCAweEZGLiBXaW5kb3dzIHRyZWF0cyB0aGF0IGFzIFwmIzM0O25vIGNhcFwmIzM0Oy4gTGludXggdG9va1xuIDI4NjpcdFx0ICogaXQgYXMgczggLTEgZEJtIGFuZCBtaW4oKSYjMzk7ZCBldmVyeSByYXRlIGRvd24gdG8gfjMgZEJtIHRtYWMuXG4gMjg3Olx0XHQgKi9cbiAyODg6XHRcdGlmICgodTgpZ2VvX3Bvd2VyID09IDB4ZmYpXG4gMjg5Olx0XHRcdHJldHVybiBkeW5fcG93ZXI7XG4gMjkwOlx0XHRpZiAoKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0ICE9IDB4ZmYpXG4gMjkxOlx0XHRcdGR5bl9wb3dlciAmIzQzOz0gKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0O1xuIDI5MjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxNTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjU2MwoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUmIzM5O3MgUmVhY2hhYmlsaXR5KioKCk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgY29kZSBwYXRoLiBJZiBgIWFzYXItJmd0O2dlb2AgaXMgdHJ1ZSDigJMgd2hpY2ggaGluZ2VzIG9uIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRnc2AgZmFpbGluZyDigJMgaXQgYmFpbHMgb3V0IHJpZ2h0IGF3YXkgYXQgbGluZSAyNDIsIHJldHVybmluZyBgZHluX3Bvd2VyYC4gVGhlIGZhaWx1cmUgb2YgdGhhdCBmdW5jdGlvbiwgYXMgSSB1bmRlcnN0YW5kIGl0LCBzdGVtcyBmcm9tIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRnc2AgY2FsbGluZyBgbXQ3OTJ4X2FjcGlfcmVhZGAuIEFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgYWNwaV9nZXRfaGFuZGxlYCwgdXNpbmcgYEFDUElfSEFORExFKG1kZXYtJmd0O2RldilgLiBOb3csIGZvciBhIHZpcnR1YWwgVVNCIGRldmljZSwgdGhhdCBgQUNQSV9IQU5ETEVgIGlzIGdvaW5nIHRvIGJlIE5VTEwuIFNvLCBgbXQ3OTJ4X2FjcGlfcmVhZGAgaXMgZ29pbmcgdG8gY3JhcCBvdXQgYW5kIHJldHVybiBgLUVPUE5PVFNVUFBgLgoKVGhhdCBtZWFucyBgYXNhci0mZ3Q7Z2VvYCByZW1haW5zIE5VTEwuIFRoZXJlZm9yZSwgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCBhbHdheXMgZXhpdHMgZWFybHkgYXQgbGluZSAyNDIuIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSBtb2RpZmljYXRpb24gSSBtYWRlIGF0IGxpbmUgMjg4IGlzIG5ldmVyIGdvaW5nIHRvIGJlIGV4ZWN1dGVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIEl0JiMzOTtzIHNpbXBseSB1bnJlYWNoYWJsZS4gSSBtZWFuLCBldmVuIGlmIEkgY291bGQgc29tZWhvdyBtb2NrIHRoZSBBQ1BJIGhhbmRsZSB0byBnZXQgcGFzdCB0aGUgaW5pdGlhbCBOVUxMIGNoZWNrLCBzeXprYWxsZXIgZG9lc24mIzM5O3Qgb2ZmZXIgYSBtZWNoYW5pc20gdG8gaW5qZWN0IEFDUEkgdGFibGVzIHNwZWNpZmljYWxseSBmb3IgYSBVU0IgZGV2aWNlLiBUaGlzIGZ1cnRoZXIgc29saWRpZmllcyBteSBjb25jbHVzaW9uIHRoYXQgdGhpcyBjb2RlIGJyYW5jaCBpcyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgb3RoZXIgd2F5IGBhc2FyLSZndDtnZW9gIGNvdWxkIGJlIHBvcHVsYXRlZCwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXNhci1cdTAwM2VnZW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xOTM9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXHQvKiBNVEdTIGlzIG9wdGlvbmFsICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIxNTpcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVx1MDAyNmFzYXItXHUwMDNlZ2VvLCBhc2FyLVx1MDAzZXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIxNi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE3Olx0XHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgYXNhci1cdTAwM2VnZW8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMTg6XHRcdGFzYXItXHUwMDNlZ2VvID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjE5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MjM0PW10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI0MjpcdGlmICghYXNhci1cdTAwM2VnZW8pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI0My1cdFx0cmV0dXJuIGR5bl9wb3dlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI1Ny1cdGlmIChhc2FyLVx1MDAzZXZlciA9PSAxKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI1ODpcdFx0YmFuZF9wd3IgPSBcdTAwMjZhc2FyLVx1MDAzZWdlby1cdTAwM2V0YmxbaWR4XS5iYW5kWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyNTk6XHRcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cdTAwM2VnZW8tXHUwMDNldGJsW2lkeF0uYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI2MC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI2MTpcdFx0YmFuZF9wd3IgPSBcdTAwMjZhc2FyLVx1MDAzZWdlb192Mi1cdTAwM2V0YmxbaWR4XS5iYW5kWzBdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyNjI6XHRcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cdTAwM2VnZW9fdjItXHUwMDNldGJsW2lkeF0uYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI2My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwNDEKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogMzExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoaXMgQ29kZSBpcyBVbmZ1enphYmxlKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGRlYWw6IEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyB0aGUgYG10NzZgIE1lZGlhVGVrIFdpLUZpIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIGZ1bmN0aW9uLiBUaGUgbW9kaWZpY2F0aW9uIGlzIHN1cHBvc2VkIHRvIGRlYWwgd2l0aCBhIHNwZWNpZmljIGlzc3VlIHJlbGF0ZWQgdG8gaG93IFNBUiAoU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlKSB2YWx1ZXMgYXJlIGhhbmRsZWQgd2hlbiByZWFkIGZyb20gQUNQSSB0YWJsZXMuIEJ1dCBoZXJlJiMzOTtzIHRoZSBjYXRjaCDigJMgdGhlIGVudGlyZSBjb2RlIHBhdGggaXMgZ2F0ZWQgYmVoaW5kIGEgc3VjY2Vzc2Z1bCByZWFkIG9mIHRoZSAmIzM0O01UR1MmIzM0OyBBQ1BJIG9iamVjdC4KClRoYXQgcmVhZCBoYXBwZW5zIHdpdGhpbiBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgIHZpYSB0aGUgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBmdW5jdGlvbi4gVGhlIHByb2JsZW0/IEFDUEkgdGFibGVzLCBpbiBtb3N0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHRoZSBRRU1VIHNldHVwIGNvbW1vbmx5IHVzZWQgZm9yIGZ1enppbmcsIGFyZSBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBoeXBlcnZpc29yIG9yIGZpcm13YXJlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQsIHNpbmNlIHdlIGFyZW4mIzM5O3QgaW5qZWN0aW5nIGN1c3RvbSBBQ1BJIHRhYmxlcyB2aWEgYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIgKHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBwcmFjdGljZSksIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSB1bnJlYWNoYWJsZS4KClRvIHJlaXRlcmF0ZSwgdGhlc2UgQUNQSSBvYmplY3RzIGFyZSBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIG15IGFuYWx5c2lzIGluZGljYXRlcyB0aGF0IHRoZSBkcml2ZXIgaXMgcmVsaWFudCBvbiB0aGUgc3lzdGVtJiMzOTtzIEFDUEkgdGFibGVzIHRvIHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgYmVmb3JlIGl0IGNhbiBldmVuIHJlYWNoIHRoZSBjb2RlLiBBbHNvLCB0aGlzIGRyaXZlciBhcHBlYXJzIHRvIGJlIGhhcmR3YXJlIHNwZWNpZmljIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSAoUENJZS9VU0IpLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmNsdWRpbmcgdGhhdCB0aGlzIG1vZGlmaWVkIGNvZGUgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gb3VyIGN1cnJlbnQgZnV6emluZyBzZXR1cCwgc28gSSYjMzk7bSBtYXJraW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBqdXN0IG5vdCBwcmFjdGljYWwgb3IgZWZmaWNpZW50IHRvIHB1cnN1ZSB0aGlzIGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgdGFibGUgcGFyc2luZyBpbiB0aGUgTWVkaWFUZWsgV2ktRmkgZHJpdmVyIChtdDc2KS4gVGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIGlmIHRoZSBkcml2ZXIgc3VjY2Vzc2Z1bGx5IHJlYWRzIHRoZSBcJiMzNDtNVEdTXCYjMzQ7IEFDUEkgb2JqZWN0IGZyb20gdGhlIHN5c3RlbSYjMzk7cyBBQ1BJIHRhYmxlcy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHZpcnR1YWwgZGV2aWNlcyBkbyBub3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBBQ1BJIGhhbmRsZXMgb3IgdGFibGVzLCBjYXVzaW5nIHRoZSBBQ1BJIHJlYWQgdG8gZmFpbCBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBlYXJseSBiZWZvcmUgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1lZGlhVGVrIFdpLUZpIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgdGFibGUgcGFyc2luZyBpbiB0aGUgTWVkaWFUZWsgV2ktRmkgZHJpdmVyIChtdDc2KS4gVGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIGlmIHRoZSBkcml2ZXIgc3VjY2Vzc2Z1bGx5IHJlYWRzIHRoZSBcJiMzNDtNVEdTXCYjMzQ7IEFDUEkgb2JqZWN0IGZyb20gdGhlIHN5c3RlbSYjMzk7cyBBQ1BJIHRhYmxlcy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHZpcnR1YWwgZGV2aWNlcyBkbyBub3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBBQ1BJIGhhbmRsZXMgb3IgdGFibGVzLCBjYXVzaW5nIHRoZSBBQ1BJIHJlYWQgdG8gZmFpbCBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBlYXJseSBiZWZvcmUgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1lZGlhVGVrIFdpLUZpIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTU6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjE1OjI1LjI5MDU3OTE3MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzc4MDAzNjcxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiB0YWJsZSBwYXJzaW5nIGluIHRoZSBNZWRpYVRlayBXaS1GaSBkcml2ZXIgKG10NzYpLiBUaGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgaWYgdGhlIGRyaXZlciBzdWNjZXNzZnVsbHkgcmVhZHMgdGhlIFxcXCJNVEdTXFxcIiBBQ1BJIG9iamVjdCBmcm9tIHRoZSBzeXN0ZW0ncyBBQ1BJIHRhYmxlcy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHZpcnR1YWwgZGV2aWNlcyBkbyBub3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBBQ1BJIGhhbmRsZXMgb3IgdGFibGVzLCBjYXVzaW5nIHRoZSBBQ1BJIHJlYWQgdG8gZmFpbCBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBlYXJseSBiZWZvcmUgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1lZGlhVGVrIFdpLUZpIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MTU6MjUuMjkwNTg1MzQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQyMjQwMzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTlmNmJiZjgwMTViOGMyMzkyNDBhM2VhNGVkNGJmZGQ4ODZlZGVmMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxNToxNToyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xcbmluZGV4IDk0NmRkNzk1NmU0YTAuLmZhNTM5Y2RlNTJiNTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcXG5AQCAtMjgwLDcgKzI4MCwxNSBAQCBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbiBcXHRcXHRyZXR1cm4gZHluX3Bvd2VyO1xcbiBcXG4gXFx0Z2VvX3Bvd2VyID0gKGJhbmRfcHdyICsgaWR4KS1cXHUwMDNlcHdyO1xcbi1cXHRkeW5fcG93ZXIgKz0gKGJhbmRfcHdyICsgaWR4KS1cXHUwMDNlb2Zmc2V0O1xcbitcXHQvKlxcbitcXHQgKiBBU1VTIChhbmQgc29tZSBvdGhlciBPRU0pIEFDUEkgTVRHUyB0YWJsZXMgZmlsbCB1bnVzZWQgZ2VvXFxuK1xcdCAqIHNsb3RzIHdpdGggMHhGRi4gV2luZG93cyB0cmVhdHMgdGhhdCBhcyBcXFwibm8gY2FwXFxcIi4gTGludXggdG9va1xcbitcXHQgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJ2QgZXZlcnkgcmF0ZSBkb3duIHRvIH4zIGRCbSB0bWFjLlxcbitcXHQgKi9cXG4rXFx0aWYgKCh1OClnZW9fcG93ZXIgPT0gMHhmZilcXG4rXFx0XFx0cmV0dXJuIGR5bl9wb3dlcjtcXG4rXFx0aWYgKChiYW5kX3B3ciArIGlkeCktXFx1MDAzZW9mZnNldCAhPSAweGZmKVxcbitcXHRcXHRkeW5fcG93ZXIgKz0gKGJhbmRfcHdyICsgaWR4KS1cXHUwMDNlb2Zmc2V0O1xcbiBcXG4gXFx0cmV0dXJuIG1pbihnZW9fcG93ZXIsIGR5bl9wb3dlcik7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MTU6MjYuODMzNDIyMzk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTEzNjI1NzUxMjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgdGFibGUgcGFyc2luZyBpbiB0aGUgTWVkaWFUZWsgV2ktRmkgZHJpdmVyIChtdDc2KS4gVGhpcyBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIGlmIHRoZSBkcml2ZXIgc3VjY2Vzc2Z1bGx5IHJlYWRzIHRoZSBcXFwiTVRHU1xcXCIgQUNQSSBvYmplY3QgZnJvbSB0aGUgc3lzdGVtJ3MgQUNQSSB0YWJsZXMuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB2aXJ0dWFsIGRldmljZXMgZG8gbm90IGhhdmUgdGhlc2Ugc3BlY2lmaWMgQUNQSSBoYW5kbGVzIG9yIHRhYmxlcywgY2F1c2luZyB0aGUgQUNQSSByZWFkIHRvIGZhaWwgYW5kIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gZWFybHkgYmVmb3JlIHJlYWNoaW5nIHRoZSBtb2RpZmllZCBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDk5ZjZiYmY4MDE1YjhjMjM5MjQwYTNlYTRlZDRiZmRkODg2ZWRlZjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxNToxNToyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXG5pbmRleCA5NDZkZDc5NTZlNGEwLi5mYTUzOWNkZTUyYjU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuQEAgLTI4MCw3ICsyODAsMTUgQEAgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbiBcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiBcbiBcdGdlb19wb3dlciA9IChiYW5kX3B3ciArIGlkeCktXHUwMDNlcHdyO1xuLVx0ZHluX3Bvd2VyICs9IChiYW5kX3B3ciArIGlkeCktXHUwMDNlb2Zmc2V0O1xuK1x0LypcbitcdCAqIEFTVVMgKGFuZCBzb21lIG90aGVyIE9FTSkgQUNQSSBNVEdTIHRhYmxlcyBmaWxsIHVudXNlZCBnZW9cbitcdCAqIHNsb3RzIHdpdGggMHhGRi4gV2luZG93cyB0cmVhdHMgdGhhdCBhcyBcIm5vIGNhcFwiLiBMaW51eCB0b29rXG4rXHQgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJ2QgZXZlcnkgcmF0ZSBkb3duIHRvIH4zIGRCbSB0bWFjLlxuK1x0ICovXG4rXHRpZiAoKHU4KWdlb19wb3dlciA9PSAweGZmKVxuK1x0XHRyZXR1cm4gZHluX3Bvd2VyO1xuK1x0aWYgKChiYW5kX3B3ciArIGlkeCktXHUwMDNlb2Zmc2V0ICE9IDB4ZmYpXG4rXHRcdGR5bl9wb3dlciArPSAoYmFuZF9wd3IgKyBpZHgpLVx1MDAzZW9mZnNldDtcbiBcbiBcdHJldHVybiBtaW4oZ2VvX3Bvd2VyLCBkeW5fcG93ZXIpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjE1OjI2LjgzMzQyMzUyN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjc5NjU2OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBBQ1BJIFNBUiBDb2RlIGluIFFFTVUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY2AuIEl0IHNlZW1zIHRvIGJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgaXNzdWUgaW4gdGhlIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgZnVuY3Rpb24sIHdoZXJlIGEgYDB4ZmZgIHZhbHVlIGlzIGJlaW5nIGluY29ycmVjdGx5IGludGVycHJldGVkIGFzIGAtMSBkQm1gLCBsZWFkaW5nIHRvIHBvd2VyIGNhcHBpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgY29kZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/XG5cblRoaXMgaXMgcGFydCBvZiB0aGUgTWVkaWFUZWsgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIEFDUEkgU0FSIHRhYmxlIHBhcnNpbmcuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgbXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgdXN1YWxseSB0aWVkIHRvIGFjdHVhbCBoYXJkd2FyZS4gSXMgYG10NzZgIGVtdWxhdGVkPyBObywgaXQncyBhIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgaXNuJ3QgaXQ/IFRob3VnaCBJIHJlbWVtYmVyIGBtYWM4MDIxMV9od3NpbWAsIHRoYXQncyBkaWZmZXJlbnQuIFRoYXQgc2ltdWxhdGVzIGEgd2lyZWxlc3MgZGV2aWNlLCBidXQgbm90IHRoaXMgc3BlY2lmaWMgZHJpdmVyLlxuXG5TbywgdGhlIG5leHQgcXVlc3Rpb24gYmVjb21lczogaXMgaXQgKnBvc3NpYmxlKiB0byB0cmlnZ2VyIHRoaXMgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCBjb2RlIHdpdGhvdXQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IEl0IHNlZW1zIHVubGlrZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgY2FsbGluZyBpdCwgc28gSSBzaG91bGQgcmVhbGx5IGxvb2sgYXQgdGhlIGNhbGxlcnMgb2YgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpcyBpbnZva2VkIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjUsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToxNjozNy41MTMxMDM1NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgzNDQ3Nzk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3clwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTIzMz1zdGF0aWMgczhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIzNDptdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM1LVxcdFxcdFxcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHM4IGR5bl9wb3dlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjY6XFx0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToxNjo0MS4zNDc1ODYxNTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjY0Nzg2OTQ5MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCoqXG5cbk9rYXksIHNvIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgaXMgY2FsbGVkIHRocm91Z2ggYG10NzkyeF9hc2FyX3JhbmdlX3B3cmAsIGFuZCB0aGF0J3MgcHJvYmFibHkgdHJpZ2dlcmVkIHdoZW4gc2V0dGluZyB0cmFuc21pc3Npb24gcG93ZXIsIHdoaWNoIGlzIGEga2V5IGFyZWEgZm9yIGZ1enppbmcuIE5vdywgdGhpcyBpcyBwYXJ0IG9mIHRoZSBgbXQ3NmAgZHJpdmVyIHN1aXRlLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBoYXJkd2FyZS1zcGVjaWZpYywgc3BlY2lmaWNhbGx5IE1lZGlhVGVrIFdpLUZpIGNhcmRzLiBXZSBrbm93IHRoaXMgbWVhbnMgZWl0aGVyIFBDSWUgb3IgVVNCIGltcGxlbWVudGF0aW9ucy4gVGhlIHVzdWFsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3ZSB1c2UgYXJlbid0IGdvaW5nIHRvIGN1dCBpdCwgYXQgbGVhc3Qgbm90IGRpcmVjdGx5LiBJIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGF0IGxlYXN0IGEgY29udmluY2luZyBVU0IgZW11bGF0aW9uLiBXZSBkb24ndCBoYXZlIGEgTWVkaWFUZWsgV2ktRmkgVVNCIGdhZGdldCBzZXQgdXAgaW4gb3VyIHN5emthbGxlci9RRU1VIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQncyBhIGRlYWQgZW5kLlxuXG5XYWl0IGEgc2Vjb25k4oCmIHdhc24ndCBgbXQ3OTIxdWAgYSBVU0IgZHJpdmVyPyAqVGhhdCogY2hhbmdlcyB0aGluZ3MuIENvdWxkIHdlIHJlYWNoIHRoaXMgdGhyb3VnaCBVU0IgZnV6emluZyB0aGVuPyBUaGlzIGlzIHdvcnRoIGludmVzdGlnYXRpbmcuIExldCdzIGRpZyBpbnRvIHRoZSBjb21waWxhdGlvbiBhbmQgY2hlY2sgaWYgYG10NzkyeF9hY3BpX3Nhci5jYCBpcyBhY3R1YWxseSBjb21waWxlZCBmb3IgVVNCLiBUaGlzIGlzIGEgdmVyeSBwcm9taXNpbmcgbGVhZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2NCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToxODo0Ny44MjYyODQ1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTIxNzUxNzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyeF9hY3BpX3Nhci5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NDA9bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlLTQxLVxcdFxcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo0MjptdDc5MngtbGliLSQoQ09ORklHX0FDUEkpICs9IG10NzkyeF9hY3BpX3Nhci5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZS00My1tdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjE4OjUxLjk0ODA0Mjk2NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NjQwMTM2NjEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNpdHVhdGlvbioqXG5cbk9rYXksIHNvIGBtdDc5MnhfYWNwaV9zYXIub2AgaXMgZGVmaW5pdGVseSBhIGNvbXBvbmVudCBvZiB0aGUgYG10NzkyeC1saWJgIG1vZHVsZSwgYW5kIHRoYXQgbGlicmFyeSBpcyBmdW5kYW1lbnRhbCB0byB0aGUgb3BlcmF0aW9uIG9mIGJvdGggdGhlIGBtdDc5MjF1YCAoVVNCKSBhbmQgYG10NzkyMWVgIChQQ0llKSB2YXJpYW50cy4gVGhhdCdzIGdvb2QgdG8gZXN0YWJsaXNoLiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzLCBjYW4gd2UgZXhwbG9pdCB0aGUgQUNQSSBTQVIgdGFibGUgaGFuZGxpbmcgdGhyb3VnaCB0aGUgVVNCIGludGVyZmFjZT8gSXQncyBhbiBpbnRlcmVzdGluZyBhdmVudWUgdG8gZXhwbG9yZS4gV2Uga25vdyB0aGF0IHRoZSBBQ1BJIFNBUiBkYXRhIGlzbid0IGp1c3QgcHVsbGVkIGZyb20gdGhpbiBhaXI7IGl0J3MgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBzeXN0ZW0ncyBBQ1BJIHRhYmxlcy4gTWV0aG9kcyBsaWtlIGBhY3BpX2V2YWx1YXRlX29iamVjdGAgYXJlIGxpa2VseSBpbnZvbHZlZCBpbiB0aGUgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGlnIGludG8gYG10NzkyeF9hY3BpX3Nhci5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpwcmVjaXNlbHkqIGhvdyB0aGF0IG1vZHVsZSBpbnRlcmZhY2VzIHdpdGggYW5kIHJldHJpZXZlcyB0aGUgQUNQSSBkYXRhLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3cgZnJvbSBBQ1BJIHRvIHRoZSBtb2R1bGUgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdG8gaW50cm9kdWNlIGFuZCBmdXp6IHRoaXMgZGF0YSB2aWEgYSBVU0IgY29ubmVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczMywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyMzowOC4zNDk0MTE1NTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAxODg3MTY0NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWNwaV9ldmFsdWF0ZV9vYmplY3QuKm10NzkyeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MjM6MTIuMzY4Mjk0NDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjczODMyNTQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWUsIHN0YXJ0aW5nIHdpdGggYSAqKmJvbGRlZCBoZWFkZXIqKjpcblxuKipEaWdnaW5nIGludG8gdGhlIEFDUEkgRGF0YSBBY3F1aXNpdGlvbiBpbiBtdDc5MnhfYWNwaV9zYXIuYyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIGhvdyBgbXQ3OTJ4X2FjcGlfc2FyLmNgIGhhbmRsZXMgQUNQSSBkYXRhLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBTQVIgKFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSkgbWVhc3VyZW1lbnRzIGFyZSBoYW5kbGVkLCBhbmQgdWx0aW1hdGVseSwgaG93IHBvd2VyIG1hbmFnZW1lbnQgYW5kIHJlZ3VsYXRvcnkgY29tcGxpYW5jZSBwbGF5IG91dCBpbiB0aGlzIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkYXRhIGFjcXVpc2l0aW9uIHBhdGgsIHBpbnBvaW50aW5nIHdoZXJlIHRoZSBBQ1BJIGluZm9ybWF0aW9uIGlzIGZldGNoZWQsIHZhbGlkYXRlZCwgYW5kIHRoZW4gc3Vic2VxdWVudGx5IHVzZWQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGV5J3JlIGZvbGxvd2luZyBzdGFuZGFyZCBBQ1BJIG1ldGhvZHMgb3IgZW1wbG95aW5nIHNvbWUgdmVuZG9yLXNwZWNpZmljIHF1aXJrcy4gVW5kZXJzdGFuZGluZyB0aGUgZGF0YSBzb3VyY2Ugd2lsbCBjbGFyaWZ5IHRoZSB2YWxpZGl0eSBvZiB0aGUgZGF0YSB0aGV5J3JlIHVzaW5nIHRvIGNvbnRyb2wgdGhlIHBvd2VyIHRyYW5zbWl0IGxldmVscy4gTGV0J3Mgc2VlIGhvdyB0aGV5J3ZlIHN0cnVjdHVyZWQgdGhpcywgYW5kIGlmIGl0J3MgdXAgdG8gcGFyIHdpdGggdGhlIHJlbGV2YW50IEFDUEkgc3BlY2lmaWNhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhleSdyZSBoYW5kbGluZyBlcnJvcnMgYW5kIGVkZ2UgY2FzZXMgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTM3LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MjM6MzkuMTA2NjIyODQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTk3NzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3BpX2V2YWx1YXRlX29iamVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MzA9bXQ3OTJ4X2FjcGlfcmVhZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqbWV0aG9kLCB1OCAqKnRibCwgdTMyICpsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDg6XFx0c3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCBOVUxMLCBOVUxMLCBcXHUwMDI2YnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ5LVxcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MjM6MzkuMTY2NjMzOTI2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDIyMjU1MDc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQUNQSSBUYWJsZSBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBjbGVhcmx5IHRyeWluZyB0byBpbnRlcmFjdCB3aXRoIEFDUEkgdGFibGVzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgaXQncyByZWFkaW5nIHRob3NlIHRhYmxlcyB0byBnZXQgc3lzdGVtIGluZm9ybWF0aW9uLlwiIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHdoaWNoLCBsZXQncyBiZSBob25lc3QsIGlzIHdoZXJlIEknbGwgcHJvYmFibHkgYmUgdGVzdGluZyB0aGlzIGluaXRpYWxseSB3aXRoIFFFTVUsIHRoZSBBQ1BJIHRhYmxlcyAqYXJlKiBwcm92aWRlZCBieSB0aGUgaHlwZXJ2aXNvciBpdHNlbGYuIFVubGVzcyBJJ3ZlIHRha2VuIHNwZWNpZmljIHN0ZXBzIHRvIGluamVjdCBjdXN0b20gdGFibGVzLCBvciBJJ20gZG9pbmcgc29tZXRoaW5nIGNsZXZlciB0byBtb2NrIHRoZSBBQ1BJIGV2YWx1YXRpb24gcHJvY2VzcywgdGhpcyB0aGluZyBpcyBqdXN0IGdvaW5nIHRvIGJhaWwgb3V0IHdoZW4gaXQgY2FuJ3QgZmluZCB0aGUgZXhwZWN0ZWQgQUNQSSBvYmplY3QsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJ2QgZXhwZWN0LiBUaGUgY29kZSB3aWxsIHNpbXBseSByZXR1cm4gZWFybHksIGFuZCB0aGF0J3Mgbm90IGdvb2QuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgbXQ3OTJ4X2FjcGlfcmVhZGAgYW5kIHNlZSB3aGF0IHRoYXQncyBhY3R1YWxseSBkb2luZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQncyBhdHRlbXB0aW5nIHRvIGFjY2VzcyB0aGUgQUNQSSBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjQyLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MjU6MTkuMzg5MTg4OTA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdC8qIENvcHlyaWdodCAoQykgMjAyMyBNZWRpYVRlayBJbmMuICovXFxuICAgMzpcXHRcXG4gICA0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9hY3BpLmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXFwibXQ3OTJ4LmhcXFwiXFxuICAgNjpcXHRcXG4gICA3OlxcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9hbGxbXSA9IHtcXG4gICA4OlxcdFxcdFxcXCIwMFxcXCIsIFxcXCJFVVxcXCIsIFxcXCJBUlxcXCIsIFxcXCJBVVxcXCIsIFxcXCJBWlxcXCIsIFxcXCJCWVxcXCIsIFxcXCJCT1xcXCIsIFxcXCJCUlxcXCIsXFxuICAgOTpcXHRcXHRcXFwiQ0FcXFwiLCBcXFwiQ0xcXFwiLCBcXFwiQ05cXFwiLCBcXFwiSURcXFwiLCBcXFwiSlBcXFwiLCBcXFwiTVlcXFwiLCBcXFwiTVhcXFwiLCBcXFwiTUVcXFwiLFxcbiAgMTA6XFx0XFx0XFxcIk1BXFxcIiwgXFxcIk5aXFxcIiwgXFxcIk5HXFxcIiwgXFxcIlBIXFxcIiwgXFxcIlJVXFxcIiwgXFxcIlJTXFxcIiwgXFxcIlNHXFxcIiwgXFxcIktSXFxcIixcXG4gIDExOlxcdFxcdFxcXCJUV1xcXCIsIFxcXCJUSFxcXCIsIFxcXCJVQVxcXCIsIFxcXCJHQlxcXCIsIFxcXCJVU1xcXCIsIFxcXCJWTlxcXCIsIFxcXCJLSFxcXCIsIFxcXCJQWVxcXCIsXFxuICAxMjpcXHR9O1xcbiAgMTM6XFx0XFxuICAxNDpcXHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNjX2xpc3RfZXVbXSA9IHtcXG4gIDE1OlxcdFxcdFxcXCJBRFxcXCIsIFxcXCJBVFxcXCIsIFxcXCJCRVxcXCIsIFxcXCJCR1xcXCIsIFxcXCJDWVxcXCIsIFxcXCJDWlxcXCIsIFxcXCJIUlxcXCIsIFxcXCJES1xcXCIsXFxuICAxNjpcXHRcXHRcXFwiRUVcXFwiLCBcXFwiRklcXFwiLCBcXFwiRlJcXFwiLCBcXFwiREVcXFwiLCBcXFwiR1JcXFwiLCBcXFwiSFVcXFwiLCBcXFwiSVNcXFwiLCBcXFwiSUVcXFwiLFxcbiAgMTc6XFx0XFx0XFxcIklUXFxcIiwgXFxcIkxWXFxcIiwgXFxcIkxJXFxcIiwgXFxcIkxUXFxcIiwgXFxcIkxVXFxcIiwgXFxcIk1DXFxcIiwgXFxcIk1UXFxcIiwgXFxcIk5MXFxcIixcXG4gIDE4OlxcdFxcdFxcXCJOT1xcXCIsIFxcXCJQTFxcXCIsIFxcXCJQVFxcXCIsIFxcXCJST1xcXCIsIFxcXCJTS1xcXCIsIFxcXCJTSVxcXCIsIFxcXCJFU1xcXCIsIFxcXCJTRVxcXCIsXFxuICAxOTpcXHRcXHRcXFwiQ0hcXFwiLFxcbiAgMjA6XFx0fTtcXG4gIDIxOlxcdFxcbiAgMjI6XFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY19saXN0X2JlW10gPSB7XFxuICAyMzpcXHRcXHRcXFwiQVJcXFwiLCBcXFwiQlJcXFwiLCBcXFwiQllcXFwiLCBcXFwiQ0xcXFwiLCBcXFwiSVFcXFwiLCBcXFwiTVhcXFwiLCBcXFwiT01cXFwiLCBcXFwiUlVcXFwiLFxcbiAgMjQ6XFx0XFx0XFxcIlJXXFxcIiwgXFxcIlZOXFxcIiwgXFxcIktSXFxcIiwgXFxcIlVBXFxcIiwgXFxcIlxcXCIsIFxcXCJcXFwiLCBcXFwiXFxcIiwgXFxcIlxcXCIsXFxuICAyNTpcXHRcXHRcXFwiRVVcXFwiLCBcXFwiQVRcXFwiLCBcXFwiQ05cXFwiLCBcXFwiQ0FcXFwiLCBcXFwiVFdcXFwiLCBcXFwiTlpcXFwiLCBcXFwiUEhcXFwiLCBcXFwiVUtcXFwiLFxcbiAgMjY6XFx0XFx0XFxcIlVTXFxcIixcXG4gIDI3OlxcdH07XFxuICAyODpcXHRcXG4gIDI5OlxcdHN0YXRpYyBpbnRcXG4gIDMwOlxcdG10NzkyeF9hY3BpX3JlYWQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKm1ldGhvZCwgdTggKip0YmwsIHUzMiAqbGVuKVxcbiAgMzE6XFx0e1xcbiAgMzI6XFx0XFx0c3RydWN0IGFjcGlfYnVmZmVyIGJ1ZiA9IHsgQUNQSV9BTExPQ0FURV9CVUZGRVIsIE5VTEwgfTtcXG4gIDMzOlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuICAzNDpcXHRcXHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3Jvb3Q7XFxuICAzNTpcXHRcXHRhY3BpX2hhbmRsZSByb290LCBoYW5kbGU7XFxuICAzNjpcXHRcXHRhY3BpX3N0YXR1cyBzdGF0dXM7XFxuICAzNzpcXHRcXHR1MzIgaSA9IDA7XFxuICAzODpcXHRcXHRpbnQgcmV0O1xcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHRyb290ID0gQUNQSV9IQU5ETEUobWRldi1cXHUwMDNlZGV2KTtcXG4gIDQxOlxcdFxcdGlmICghcm9vdClcXG4gIDQyOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0c3RhdHVzID0gYWNwaV9nZXRfaGFuZGxlKHJvb3QsIG1ldGhvZCwgXFx1MDAyNmhhbmRsZSk7XFxuICA0NTpcXHRcXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpXFxuICA0NjpcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gIDQ3OlxcdFxcbiAgNDg6XFx0XFx0c3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCBOVUxMLCBOVUxMLCBcXHUwMDI2YnVmKTtcXG4gIDQ5OlxcdFxcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcXG4gIDUwOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiAgNTE6XFx0XFxuICA1MjpcXHRcXHRzYXJfcm9vdCA9IGJ1Zi5wb2ludGVyO1xcbiAgNTM6XFx0XFx0aWYgKHNhcl9yb290LVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9QQUNLQUdFIHx8XFxuICA1NDpcXHRcXHQgICAgc2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuY291bnQgXFx1MDAzYyA0IHx8XFxuICA1NTpcXHRcXHQgICAgc2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuZWxlbWVudHNbMF0udHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikge1xcbiAgNTY6XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJzYXIgY250ID0gJWRcXFxcblxcXCIsXFxuICA1NzpcXHRcXHRcXHRcXHRzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudCk7XFxuICA1ODpcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiAgNTk6XFx0XFx0XFx0Z290byBmcmVlO1xcbiAgNjA6XFx0XFx0fVxcbiAgNjE6XFx0XFxuICA2MjpcXHRcXHRpZiAoISp0YmwpIHtcXG4gIDYzOlxcdFxcdFxcdCp0YmwgPSBkZXZtX2t6YWxsb2MobWRldi1cXHUwMDNlZGV2LCBzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudCxcXG4gIDY0OlxcdFxcdFxcdFxcdFxcdCAgICBHRlBfS0VSTkVMKTtcXG4gIDY1OlxcdFxcdFxcdGlmICghKnRibCkge1xcbiAgNjY6XFx0XFx0XFx0XFx0cmV0ID0gLUVOT01FTTtcXG4gIDY3OlxcdFxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gIDY4OlxcdFxcdFxcdH1cXG4gIDY5OlxcdFxcdH1cXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0aWYgKGxlbilcXG4gIDcyOlxcdFxcdFxcdCpsZW4gPSBzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudDtcXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNhcl9yb290LVxcdTAwM2VwYWNrYWdlLmNvdW50OyBpKyspIHtcXG4gIDc1OlxcdFxcdFxcdHVuaW9uIGFjcGlfb2JqZWN0ICpzYXJfdW5pdCA9IFxcdTAwMjZzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5lbGVtZW50c1tpXTtcXG4gIDc2OlxcdFxcbiAgNzc6XFx0XFx0XFx0aWYgKHNhcl91bml0LVxcdTAwM2V0eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKVxcbiAgNzg6XFx0XFx0XFx0XFx0YnJlYWs7XFxuICA3OTpcXHRcXG4gIDgwOlxcdFxcdFxcdCooKnRibCArIGkpID0gKHU4KXNhcl91bml0LVxcdTAwM2VpbnRlZ2VyLnZhbHVlO1xcbiAgODE6XFx0XFx0fVxcbiAgODI6XFx0XFxuICA4MzpcXHRcXHRyZXQgPSBpID09IHNhcl9yb290LVxcdTAwM2VwYWNrYWdlLmNvdW50ID8gMCA6IC1FSU5WQUw7XFxuICA4NDpcXHRmcmVlOlxcbiAgODU6XFx0XFx0a2ZyZWUoc2FyX3Jvb3QpO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHRyZXR1cm4gcmV0O1xcbiAgODg6XFx0fVxcbiAgODk6XFx0XFxuICA5MDpcXHQvKiBNVENMIDogQ291bnRyeSBMaXN0IFRhYmxlIGZvciA2RyBiYW5kICovXFxuICA5MTpcXHQvKiBNVENMIDogQ291bnRyeSBMaXN0IFRhYmxlIGZvciA2RyBiYW5kIGFuZCAxMUJFICovXFxuICA5MjpcXHRzdGF0aWMgaW50XFxuICA5MzpcXHRtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCAqdmVyc2lvbilcXG4gIDk0OlxcdHtcXG4gIDk1OlxcdFxcdGludCBsZW4sIHJldDtcXG4gIDk2OlxcdFxcbiAgOTc6XFx0XFx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01UQ0wsIHRhYmxlLCBcXHUwMDI2bGVuKTtcXG4gIDk4OlxcdFxcdGlmIChyZXQpXFxuICA5OTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjI1OjE5LjM4OTM0MTk2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDYwOTgzMzk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkgaW4gdGhlIG10NzkyeCBBQ1BJIFJlYWQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtdDc5MnhfYWNwaV9yZWFkYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gZ3JhYiBhbiBBQ1BJIGhhbmRsZSBmcm9tIGBtZGV2LVx1MDAzZWRldmAsIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHJlcHJlc2VudHMgdGhlIHBoeXNpY2FsIGRldmljZSwgZWl0aGVyIFBDSWUgb3IgVVNCLiBOb3csIHRoZSBpbW1lZGlhdGUgaXNzdWUgaXMgdGhhdCBpbiBRRU1VLCB3ZSBkb24ndCBoYXZlIGEgTWVkaWFUZWsgV2ktRmkgZGV2aWNlIHByZXNlbnQsIHNvIHRoZXJlIGlzIG5vIHJlYWwgQUNQSSBoYW5kbGUgdG8gZ2V0LiBFdmVuIGlmIEkgd2VyZSB0byBzb21laG93IG1vY2sgdGhlIGRldmljZSwgaW5qZWN0aW5nIHRoZSByZWxldmFudCBBQ1BJIHRhYmxlcyBpbnRvIHN5emthbGxlciBmb3IgdGVzdGluZyBzZWVtcyBsaWtlIGEgbm9uLXN0YXJ0ZXIgcmlnaHQgbm93LiBcblxuQnV0IGhvbGQgb24sIGlzIHRoZXJlICphbnkqIHdheSB0aGlzIGNvZGUgcGF0aCBjb3VsZCBiZSBoaXQ/IEknbSBkZWFsaW5nIHdpdGggdGhlIGBtdDc5MjFlYCwgYG10NzkyMXVgLCBgbXQ3OTI1ZWAsIGFuZCBgbXQ3OTI1dWAgZHJpdmVycy4gU3l6a2FsbGVyLCB3aXRoIGl0cyBhYmlsaXR5IHRvIGVtdWxhdGUgVVNCIGRldmljZXMgdXNpbmcgYGR1bW15X2hjZGAgYW5kIGByYXctZ2FkZ2V0YCwgY291bGQgY29uY2VpdmFibHkgY3JlYXRlIGEgVVNCIGRldmljZSB0aGF0IGJpbmRzIHRvIGBtdDc5MjF1YCBvciBgbXQ3OTI1dWAuIFRoYXQgKmNvdWxkKiBiZSBhIHdheSB0byB0cmlnZ2VyIHRoZSBjb2RlLCByaWdodD8gSSdkIGJldHRlciBjb25maXJtIHRoYXQgYG10NzkyMXVgIGlzIGluZGVlZCBhIFVTQiBkcml2ZXIsIHRvIHNlZSBpZiB0aGF0IHBhdGggaXMgZXZlbiB2aWFibGUuIE5lZWQgdG8gY2hlY2sgaWYgdGhpcyBpcyBwb3NzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUyMiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjI1OjQzLjk5OTE3OTc1NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk2MzUzMzIwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjF1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX01UNzkyMVMpICs9IG10NzkyMXMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01UNzkyMVUpICs9IG10NzkyMXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlLTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZT0xMT1tdDc5MjFzLXkgOj0gc2Rpby5vIHNkaW9fbWFjLm8gc2Rpb19tY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjEyOm10NzkyMXUteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG10NzkyMXVfZGV2aWNlX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTYtXFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NzkwMiwgMHhmZiwgMHhmZiwgMHhmZiksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zNT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzY6bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNy1cXHRcXHRcXHQgaW50IGNtZCwgaW50ICpzZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo2NTpzdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy02Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy03MC1cXHRcXHQudGFpbHJvb20gPSBNVF9VU0JfVEFJTF9TSVpFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjcxOlxcdFxcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTcyLVxcdFxcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjFfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6ODk6c3RhdGljIGludCBtdDc5MjF1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxNTA6c3RhdGljIGludCBtdDc5MjF1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNTEtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTE3MS1cXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MTcyOlxcdFxcdC5tY3VfaW5pdCA9IG10NzkyMXVfbWN1X2luaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMTczLVxcdFxcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjE3NDpcXHRcXHQucmVzZXQgPSBtdDc5MjF1X21hY19yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xNzUtXFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTI2My0jaWZkZWYgQ09ORklHX1BNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MjY0OnN0YXRpYyBpbnQgbXQ3OTIxdV9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3Qgc3RhdGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTI5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoyOTE6c3RhdGljIGludCBtdDc5MjF1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0yOTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjMzNDpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXQ3OTIxdV9kZXZpY2VfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzNS1NT0RVTEVfRklSTVdBUkUoTVQ3OTIxX0ZJUk1XQVJFX1dNKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzY9TU9EVUxFX0ZJUk1XQVJFKE1UNzkyMV9ST01fUEFUQ0gpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozMzg6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMzOS1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQwOlxcdC5pZF90YWJsZVxcdD0gbXQ3OTIxdV9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzQxOlxcdC5wcm9iZVxcdFxcdD0gbXQ3OTIxdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDItXFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDMtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0NDpcXHQuc3VzcGVuZFxcdD0gbXQ3OTIxdV9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM0NTpcXHQucmVzdW1lXFx0XFx0PSBtdDc5MjF1X3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDY6XFx0LnJlc2V0X3Jlc3VtZVxcdD0gbXQ3OTIxdV9yZXN1bWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQ3LSNlbmRpZiAvKiBDT05GSUdfUE0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjM1MTptb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzUyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyNTo0Ni45NjI3MTczNjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5NjA5OTUwNzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQUNQSSBJbnRlcmFjdGlvbiBvZiB0aGUgYG10NzkyMXVgIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbXQ3OTIxdWAsIHdoaWNoIEkga25vdyBpcyBhIFVTQiBkcml2ZXIsIGFuZCBJIHVuZGVyc3RhbmQgdGhhdCBzeXprYWxsZXIgY2FuIGJlIHVzZWQgdG8gZnV6eiBVU0IgZGV2aWNlcy4gVGhlIHF1ZXN0aW9uIHRoYXQncyBwaXF1aW5nIG15IGludGVyZXN0IGlzIHdoZXRoZXIgb3Igbm90IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIEFDUEkgdGFibGVzLiBUaGUgY29kZSBzdWdnZXN0cyBpdCBtaWdodCwgdGhyb3VnaCBgbXQ3OTJ4X2FjcGlfcmVhZGAuIFRoaXMgZnVuY3Rpb24gY2FsbHMgYGFjcGlfZ2V0X2hhbmRsZWAsIHVzaW5nIGBBQ1BJX0hBTkRMRShtZGV2LVx1MDAzZWRldilgLiBSaWdodCwgc28gZm9yIGEgVVNCIGRldmljZSwgYG1kZXYtXHUwMDNlZGV2YCBpcyB0aGUgZGV2aWNlIHN0cnVjdHVyZSBvZiB0aGUgVVNCIGludGVyZmFjZSwgYFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldmAuIE5vdywgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLi4uIGRvZXMgYSBVU0IgaW50ZXJmYWNlIGRldmljZSBldmVuICpoYXZlKiBhbiBBQ1BJIGhhbmRsZT9cblxuVHlwaWNhbGx5LCBBQ1BJIGhhbmRsZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBwbGF0Zm9ybSBkZXZpY2VzLCBQQ0kgZGV2aWNlcywgb3IsIGluIHNvbWUgY2FzZXMsIEkyQy9TUEkgZGV2aWNlcy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IFVTQiBkZXZpY2VzIGFyZSB1c3VhbGx5IG5vdCBkZXNjcmliZWQgd2l0aGluIEFDUEkgdW5sZXNzIHRoZXkgYXJlIHNwZWNpZmljYWxseSBoYXJkd2lyZWQgYW5kIHRoZSBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCBpbiB0aGUgRFNEVC4gRXZlbiB3aGVuIGVtdWxhdGluZyBVU0IgZGV2aWNlcyBpbiBRRU1VLCB0aGUgdmlydHVhbCBkZXZpY2VzIEkndmUgY3JlYXRlZCBkb24ndCBleHBvc2UgYW4gQUNQSSBoYW5kbGUuIFRoYXQgbWVhbnMgYEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KWAgaXMgdmVyeSBsaWtlbHkgZ29pbmcgdG8gcmV0dXJuIE5VTEwgaW4gdGhpcyBjb250ZXh0LiBMZXQncyBzdGVwIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBgbXQ3OTJ4X2FjcGlfcmVhZGAgY29kZSB0byBjb25maXJtIHRoaXMgaHVuY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjQsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6Mjc6MzYuNTcyNjcwNzYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0bXQ3OTJ4X2FjcGlfcmVhZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqbWV0aG9kLCB1OCAqKnRibCwgdTMyICpsZW4pXFxuICAzMTpcXHR7XFxuICAzMjpcXHRcXHRzdHJ1Y3QgYWNwaV9idWZmZXIgYnVmID0geyBBQ1BJX0FMTE9DQVRFX0JVRkZFUiwgTlVMTCB9O1xcbiAgMzM6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbXQ3NjtcXG4gIDM0OlxcdFxcdHVuaW9uIGFjcGlfb2JqZWN0ICpzYXJfcm9vdDtcXG4gIDM1OlxcdFxcdGFjcGlfaGFuZGxlIHJvb3QsIGhhbmRsZTtcXG4gIDM2OlxcdFxcdGFjcGlfc3RhdHVzIHN0YXR1cztcXG4gIDM3OlxcdFxcdHUzMiBpID0gMDtcXG4gIDM4OlxcdFxcdGludCByZXQ7XFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdHJvb3QgPSBBQ1BJX0hBTkRMRShtZGV2LVxcdTAwM2VkZXYpO1xcbiAgNDE6XFx0XFx0aWYgKCFyb290KVxcbiAgNDI6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiAgNDM6XFx0XFxuICA0NDpcXHRcXHRzdGF0dXMgPSBhY3BpX2dldF9oYW5kbGUocm9vdCwgbWV0aG9kLCBcXHUwMDI2aGFuZGxlKTtcXG4gIDQ1OlxcdFxcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcXG4gIDQ2OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHRzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsIE5VTEwsIE5VTEwsIFxcdTAwMjZidWYpO1xcbiAgNDk6XFx0XFx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyNzozNi41NzI3NDI3NTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3OTYzODM0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtdDc5MnhfYWNwaV9yZWFkIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXQ3OTJ4X2FjcGlfcmVhZGAgZnVuY3Rpb24sIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIE5VTEwgY2hlY2sgb24gYHJvb3RgLiBJZiBgcm9vdGAgaXMgTlVMTCwgaXQgaW1tZWRpYXRlbHkgcmV0dXJucyBgLUVPUE5PVFNVUFBgLiBUaGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZDsgdGhlIGZ1bmN0aW9uIHNpbXBseSB3b24ndCB3b3JrIGluIHRoYXQgY2FzZS4gVGhhdCBtZWFucyBpZiB3ZSBlbmNvdW50ZXIgYSBgbXQ3OTJ4X2FjcGlfcmVhZGAgY2FsbCwgYW5kIGl04oCZcyByZXR1cm5pbmcgYC1FT1BOT1RTVVBQYCwgYSBsaWtlbHkgY3VscHJpdCBjb3VsZCBiZSB0aGUgYHJvb3RgIHZhcmlhYmxlIGJlaW5nIE5VTEwsIG9yIHNvbWVob3cgYmVjb21pbmcgc28gZHVyaW5nIHRoZSBjYWxsLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIHRoaXMuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgYmVpbmcgKnVzZWQqPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY2FsbHMgdG8gYG10NzkyeF9hY3BpX3JlYWRgIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhpcyBlcnJvciBjb25kaXRpb24uIExldCdzIHNlZSB3aGVyZSBpdCdzIGJlaW5nIGNhbGxlZCBhbmQgd2hhdCB0aG9zZSBjb250ZXh0cyBsb29rIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDkwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyODoyOS4zNjkxMjk0MzJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NTQzOTgyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTJ4X2FjcGlfcmVhZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjMwOm10NzkyeF9hY3BpX3JlYWQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKm1ldGhvZCwgdTggKip0YmwsIHUzMiAqbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz05Mz1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCAqdmVyc2lvbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo5NzpcXHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVRDTCwgdGFibGUsIFxcdTAwMjZsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtOTgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTEzPW10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUsIHU4IHZlcnNpb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTExNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjExODpcXHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVREUywgdGFibGUsIFxcdTAwMjZsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE0OD1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxNTI6XFx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01UR1MsIHRhYmxlLCBcXHUwMDI2bGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE1My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNzk9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Zmcoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTgzOlxcdHJldCA9IG10NzkyeF9hY3BpX3JlYWQoZGV2LCBNVDc5MnhfQUNQSV9NVEZHLCB0YWJsZSwgXFx1MDAyNmxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xODQtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6Mjg6MzIuMjIzNTM0NzI3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MzUzOTA4ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBFcnJvciBQcm9wYWdhdGlvbiBpbiBNVDc5MnggQUNQSSBSZWFkcyoqXG5cbkFscmlnaHQsIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIGBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfKmAgZnVuY3Rpb25zLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCB0aGV5J3JlIHByb2JhYmx5IGp1c3Qgd3JhcHBlcnMgYXJvdW5kIGBtdDc5MnhfYWNwaV9yZWFkYC4gQW5kIGl0IGxvb2tzIGxpa2UgSSdtIHJpZ2h0OiB0aGV5IGFsbCBpbW1lZGlhdGVseSByZXR1cm4gYW4gZXJyb3IgaWYgdGhhdCBsb3dlci1sZXZlbCBmdW5jdGlvbiBmYWlscy4gVGhhdCdzIGEgY2xhc3NpYyBwYXR0ZXJuLiBJdCdzIGNsZWFuIGluIHByaW5jaXBsZSBidXQgY2FuIHBvdGVudGlhbGx5IG1hc2sgdGhlICpzb3VyY2UqIG9mIHRoZSBpc3N1ZS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiB3aGVyZSBhcmUgdGhlc2Ugd3JhcHBlciBmdW5jdGlvbnMgKmNhbGxlZCo/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgaXMgY3J1Y2lhbC4gSXQncyB0aW1lIHRvIHRyYWNlIHRoZSB1c2FnZSB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBBQ1BJIHJlYWQgcHJvY2Vzcy4gS25vd2luZyB0aGUgdXBzdHJlYW0gY29udGV4dCBpcyB3aGF0IG1hdHRlcnMuIFRoaXMgd2lsbCB0ZWxsIG1lICp3aHkqIHRoZSByZWFkIGlzIGhhcHBlbmluZyBhbmQgd2hhdCB0aGUgZmFsbG91dCB3aWxsIGJlIGlmIGl0IGZhaWxzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6Mjk6NDEuNTc3NDQ2NTA2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODk0MTkyODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTQ3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE0ODptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE1OlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VnZW8sIGFzYXItXFx1MDAzZXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNToyOTo0NC40NzE2NDY2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzAwODc4MTM0NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0J3MgZ29pbmcgb24sIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqSW5pdGlhbCBUaG91Z2h0cyBvbiBtdDc5MnhfaW5pdF9hY3BpX3NhcioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24sIGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAuIEltbWVkaWF0ZWx5LCB0aGUgXCJBQ1BJXCIgaW4gdGhlIG5hbWUgY2F0Y2hlcyBteSBleWUuIFRoaXMgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyByZWxhdGVkIHRvIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFBvd2VyIEludGVyZmFjZSBhbmQsIG1vcmUgc3BlY2lmaWNhbGx5LCBhIFNBUiB2YWx1ZS4gU0FSIHVzdWFsbHkgcmVmZXJzIHRvIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAtIHNvIHdlJ3JlIGxpa2VseSBpbiB0aGUgcmVhbG0gb2YgcmFkaW8gZnJlcXVlbmN5IGVtaXNzaW9ucyBhbmQgcmVndWxhdG9yeSBjb21wbGlhbmNlLiBUaGUgXCJtdDc5MnhcIiBwYXJ0IHRlbGxzIG1lIHdlJ3JlIHdpdGhpbiB0aGUgTWVkaWFUZWsgZmFtaWx5LCBwcm9iYWJseSBhIFdpRmkgb3IgcG90ZW50aWFsbHkgQmx1ZXRvb3RoIGNvbnRyb2xsZXIuIFRoaXMgc3BlY2lmaWMgZnVuY3Rpb24sIHByZXN1bWFibHkgYSBwYXJ0IG9mIHRoZSBpbml0IHByb2Nlc3MsIGlzIHdoZXJlIHRoZSBzeXN0ZW0gZ2V0cyBTQVIgaW5mb3JtYXRpb24sIGxpa2VseSBpbiByZWxhdGlvbiB0byB0aGUgZGV2aWNlLiBJIGJldCB0aGlzIGlzIHdoZXJlIHRoZSBjb2RlIHJlYWRzIGZyb20gdGhlIEFDUEkgdGFibGVzIHRvIHJldHJpZXZlIHRoZSBwZXJtaXNzaWJsZSBSRiBwb3dlciBsZXZlbHMgb3Igc29tZSBmb3JtIG9mIGNvbnRyb2wgcGFyYW1ldGVyLiBNeSBndWVzcyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgZHVyaW5nIGVhcmx5IHN5c3RlbSBzdGFydHVwLCBhcyBwYXJ0IG9mIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIFRoaXMgYWxsIHN1Z2dlc3RzIGEgY3JpdGljYWwgcGllY2UgaW4gY29uZmlndXJpbmcgdGhlIFJGIHBvd2VyIG91dHB1dCBvZiB0aGUgZGV2aWNlIHRvIG1lZXQgdGhlIHJlcXVpcmVkIHJlZ3VsYXRvcnkgcmVxdWlyZW1lbnRzLiBUaGlzIGlzIHdoZXJlIHdlIGVuc3VyZSB0aGUgZGV2aWNlIGFkaGVyZXMgdG8gc2FmZXR5IHN0YW5kYXJkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5ODAsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNTozMTo1NC41NTk0NjI2M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxOTE5MTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MnhfaW5pdF9hY3BpX3NhclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMjE6XFx0bXQ3OTJ4X2luaXRfYWNwaV9zYXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTEyODY9aW50IG10NzkyMV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMjk2LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTI5NzpcXHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTEyOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjQzPWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTI6XFx0bXQ3OTJ4X2luaXRfYWNwaV9zYXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE4Nzk9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xODg5LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTg5MDpcXHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE4OTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTYzMD1pbnQgbXQ3OTJ4ZV9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02MzItI2lmZGVmIENPTkZJR19BQ1BJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NjM0OmludCBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBib29sIHNldF9kZWZhdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTYzNS11OCBtdDc5MnhfYWNwaV9nZXRfZmxhZ3Moc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MzY9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTYzNy0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NjM4OnN0YXRpYyBpbmxpbmUgaW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2NDM6c3RhdGljIGlubGluZSBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTY0NC1cXHRcXHRcXHRcXHRcXHQgICAgIGJvb2wgc2V0X2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE3OT1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRmZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxOTM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMzAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjk6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTMtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzU0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM1NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzE6NTYuNTc4NjYwNDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI4ODQ1MTQ3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB3aGF0J3MgaGFwcGVuaW5nLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBBQ1BJIFNBUiBJbml0aWFsaXphdGlvbiBmb3IgTVQ3OTJ4IERldmljZXMqKlxuXG5Pa2F5LCBzbyBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGRldmljZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gVGhhdCBtYWtlcyBzZW5zZTsgd2Ugd2FudCB0byBzZXQgdXAgdGhlIFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSAoU0FSKSB0YWJsZXMgZWFybHkgb24uIE5vdywgdGhlIHBvdGVudGlhbCBwcm9ibGVtIGlzIHRoYXQgYG10NzkyeF9hY3BpX3JlYWRgIGlzIHZlcnkgbGlrZWx5IHRvIGZhaWwgcmlnaHQgb2ZmIHRoZSBiYXQgYmVjYXVzZSB0aGUgQUNQSSBoYW5kbGUgYEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KWAgaXMsIGluIGFsbCBwcm9iYWJpbGl0eSwgZ29pbmcgdG8gYmUgTlVMTC4gVGhpcywgb2YgY291cnNlLCBkaXJlY3RseSBkZXBlbmRzIG9uIHRoZSBoYXJkd2FyZSBhbmQgdGhlIEFDUEkgY29uZmlndXJhdGlvbiwgYW5kIEkgYW0gYWxyZWFkeSBwaWN0dXJpbmcgdGhlIGxpa2VseSBzY2VuYXJpb3MgdGhhdCBsZWFkIHRvIGBBQ1BJX0hBTkRMRWAgYmVpbmcgTlVMTC5cblxuSWYgYG10NzkyeF9hY3BpX3JlYWRgIGZhaWxzLCBhbmQgSSBiZXQgaXQgd2lsbCwgYG10NzkyeF9pbml0X2FjcGlfc2FyYCBpcyBkZXNpZ25lZCB0byBlaXRoZXIgcmV0dXJuIGVhcmx5IG9yLCBldmVuIHdvcnNlLCBmYWlsIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIFNBUiB0YWJsZXMuIFNvLCB0aGlzIHdhcnJhbnRzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgZnVuY3Rpb24gaXRzZWxmIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgaGFuZGxlcyB0aGlzIGxpa2VseSBmYWlsdXJlIHNjZW5hcmlvLiBJIG5lZWQgdG8gZmlndXJlIG91dDogRG9lcyBpdCBqdXN0IHJldHVybiBzaWxlbnRseT8gRG9lcyBpdCBsb2cgYW4gZXJyb3I/IERvZXMgaXQgdHJ5IGFub3RoZXIgZmFsbGJhY2sgbWV0aG9kPyBVbmRlcnN0YW5kaW5nIHRoZSBlcnJvciBoYW5kbGluZyBoZXJlIGlzIGNyaXRpY2FsIHRvIGVuc3VyaW5nIHRoZSBTQVIgY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSwgZXZlbiBpbiBzaXR1YXRpb25zIHdoZXJlIEFDUEkgaW5mb3JtYXRpb24gaXNuJ3QgcmVhZGlseSBhdmFpbGFibGUgb3IgYWNjZXNzaWJsZS4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIHJpZ2h0IGF3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTA1LCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzI6MzkuNDYzMTc3MzU1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTkzLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTkzOlxcdGludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiAxOTQ6XFx0e1xcbiAxOTU6XFx0XFx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqYXNhcjtcXG4gMTk2OlxcdFxcdGludCByZXQ7XFxuIDE5NzpcXHRcXG4gMTk4OlxcdFxcdGFzYXIgPSBkZXZtX2t6YWxsb2MoZGV2LVxcdTAwM2VtdDc2LmRldiwgc2l6ZW9mKCphc2FyKSwgR0ZQX0tFUk5FTCk7XFxuIDE5OTpcXHRcXHRpZiAoIWFzYXIpXFxuIDIwMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMjAxOlxcdFxcbiAyMDI6XFx0XFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woZGV2LCAodTggKiopXFx1MDAyNmFzYXItXFx1MDAzZWNvdW50cnlsaXN0LCBcXHUwMDI2YXNhci1cXHUwMDNldmVyKTtcXG4gMjAzOlxcdFxcdGlmIChyZXQpIHtcXG4gMjA0OlxcdFxcdFxcdGRldm1fa2ZyZWUoZGV2LVxcdTAwM2VtdDc2LmRldiwgYXNhci1cXHUwMDNlY291bnRyeWxpc3QpO1xcbiAyMDU6XFx0XFx0XFx0YXNhci1cXHUwMDNlY291bnRyeWxpc3QgPSBOVUxMO1xcbiAyMDY6XFx0XFx0fVxcbiAyMDc6XFx0XFxuIDIwODpcXHRcXHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRkcyhkZXYsICh1OCAqKilcXHUwMDI2YXNhci1cXHUwMDNlZHluLCBhc2FyLVxcdTAwM2V2ZXIpO1xcbiAyMDk6XFx0XFx0aWYgKHJldCkge1xcbiAyMTA6XFx0XFx0XFx0ZGV2bV9rZnJlZShkZXYtXFx1MDAzZW10NzYuZGV2LCBhc2FyLVxcdTAwM2VkeW4pO1xcbiAyMTE6XFx0XFx0XFx0YXNhci1cXHUwMDNlZHluID0gTlVMTDtcXG4gMjEyOlxcdFxcdH1cXG4gMjEzOlxcdFxcbiAyMTQ6XFx0XFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xcbiAyMTU6XFx0XFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3MoZGV2LCAodTggKiopXFx1MDAyNmFzYXItXFx1MDAzZWdlbywgYXNhci1cXHUwMDNldmVyKTtcXG4gMjE2OlxcdFxcdGlmIChyZXQpIHtcXG4gMjE3OlxcdFxcdFxcdGRldm1fa2ZyZWUoZGV2LVxcdTAwM2VtdDc2LmRldiwgYXNhci1cXHUwMDNlZ2VvKTtcXG4gMjE4OlxcdFxcdFxcdGFzYXItXFx1MDAzZWdlbyA9IE5VTEw7XFxuIDIxOTpcXHRcXHR9XFxuIDIyMDpcXHRcXG4gMjIxOlxcdFxcdC8qIE1URkcgaXMgb3B0aW9uYWwgKi9cXG4gMjIyOlxcdFxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VmZyk7XFxuIDIyMzpcXHRcXHRpZiAocmV0KSB7XFxuIDIyNDpcXHRcXHRcXHRkZXZtX2tmcmVlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXFx1MDAzZWZnKTtcXG4gMjI1OlxcdFxcdFxcdGFzYXItXFx1MDAzZWZnID0gTlVMTDtcXG4gMjI2OlxcdFxcdH1cXG4gMjI3OlxcdFxcdGRldi1cXHUwMDNlcGh5LmFjcGlzYXIgPSBhc2FyO1xcbiAyMjg6XFx0XFxuIDIyOTpcXHRcXHRyZXR1cm4gMDtcXG4gMjMwOlxcdH1cXG4gMjMxOlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcXG4gMjMyOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNTozMjozOS40NjMyNTIwNjVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI3MDEwMDQwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhpbmdzOlxuXG4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBOdWxsIFBvaW50ZXIgRGVyZWZlcmVuY2UgaW4gTVQ3OTJ4IEFDUEkgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3NgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIHBvdGVudGlhbCBmb3IgYGFzYXItXHUwMDNlZ2VvYCB0byBiZSBzZXQgdG8gTlVMTCBpZiB0aGF0IGZ1bmN0aW9uIGZhaWxzLiBUaGF0J3MgYSBjbGFzc2ljIHJlZCBmbGFnLiAgV2Uga25vdyB0aGF0IGZhaWx1cmUgaW4gdGhpcyBmdW5jdGlvbiBoYXMgc2VyaW91cyBpbXBsaWNhdGlvbnMuXG5cbk5vdywgbXkgZm9jdXMgaGFzIHNoaWZ0ZWQgdG8gYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYC4gVGhpcyBpcyB3aGVyZSB0aGUgcGF0Y2ggaXMgbG9jYXRlZCwgSSBuZWVkIHRvIGNoZWNrIHdoZXJlIGBhc2FyLVx1MDAzZWdlb2AgaXMgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBmdW5jdGlvbi4gIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHdlIGFyZSBsaWtlbHkgc2VlaW5nIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHRoZXJlLiBUaGF0IGlzIGlmIGBhc2FyLVx1MDAzZWdlb2AgaXMgaW5kZWVkIG51bGwgYWZ0ZXIgdGhlIHByZXZpb3VzIGZ1bmN0aW9uIGZhaWxzLCBhbmQgaWYgd2UgYXR0ZW1wdCB0byB1c2UgdGhpcyBudWxsIHBvaW50ZXIgd2l0aGluIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgd2l0aG91dCBhIHByb3BlciBudWxsIGNoZWNrLCB3ZSBoYXZlIGEgZGVmaW5pdGUgYnVnLiBJIGhhdmUgdG8gc2VlIGhvdyB3ZSBoYW5kbGUgYGFzYXItXHUwMDNlZ2VvYCBpbiB0aGlzIGNhbGwsIGFuZCB3aGF0IHNhZmVndWFyZHMgYXJlIGluIHBsYWNlIChvciBtaXNzaW5nKSBhcm91bmQgdGhhdCBzdHJ1Y3R1cmUuIEkga25vdyBleGFjdGx5IHdoYXQgSSBhbSBsb29raW5nIGZvcjsgdGhpcyBpcyBhIGNsZWFyIHBhdGggdG8gdW5kZXJzdGFuZGluZyB0aGUgcHJvYmxlbS4gTGV0J3MgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI2NywiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzM6MDIuMTY0MjU4Mzk4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjMzLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjMzOlxcdHN0YXRpYyBzOFxcbiAyMzQ6XFx0bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG4gMjM1OlxcdFxcdFxcdFxcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHM4IGR5bl9wb3dlcilcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFzYXIgPSBwaHktXFx1MDAzZWFjcGlzYXI7XFxuIDIzODpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgKmJhbmRfcHdyO1xcbiAyMzk6XFx0XFx0czggZ2VvX3Bvd2VyO1xcbiAyNDA6XFx0XFx0dTggaWR4LCBtYXg7XFxuIDI0MTpcXHRcXG4gMjQyOlxcdFxcdGlmICghYXNhci1cXHUwMDNlZ2VvKVxcbiAyNDM6XFx0XFx0XFx0cmV0dXJuIGR5bl9wb3dlcjtcXG4gMjQ0OlxcdFxcbiAyNDU6XFx0XFx0c3dpdGNoIChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWRldi1cXHUwMDNlcmVnaW9uKSB7XFxuIDI0NjpcXHRcXHRjYXNlIE5MODAyMTFfREZTX0ZDQzpcXG4gMjQ3OlxcdFxcdFxcdGlkeCA9IDA7XFxuIDI0ODpcXHRcXHRcXHRicmVhaztcXG4gMjQ5OlxcdFxcdGNhc2UgTkw4MDIxMV9ERlNfRVRTSTpcXG4gMjUwOlxcdFxcdFxcdGlkeCA9IDE7XFxuIDI1MTpcXHRcXHRcXHRicmVhaztcXG4gMjUyOlxcdFxcdGRlZmF1bHQ6IC8qIFdXICovXFxuIDI1MzpcXHRcXHRcXHRpZHggPSAyO1xcbiAyNTQ6XFx0XFx0XFx0YnJlYWs7XFxuIDI1NTpcXHRcXHR9XFxuIDI1NjpcXHRcXG4gMjU3OlxcdFxcdGlmIChhc2FyLVxcdTAwM2V2ZXIgPT0gMSkge1xcbiAyNTg6XFx0XFx0XFx0YmFuZF9wd3IgPSBcXHUwMDI2YXNhci1cXHUwMDNlZ2VvLVxcdTAwM2V0YmxbaWR4XS5iYW5kWzBdO1xcbiAyNTk6XFx0XFx0XFx0bWF4ID0gQVJSQVlfU0laRShhc2FyLVxcdTAwM2VnZW8tXFx1MDAzZXRibFtpZHhdLmJhbmQpO1xcbiAyNjA6XFx0XFx0fSBlbHNlIHtcXG4gMjYxOlxcdFxcdFxcdGJhbmRfcHdyID0gXFx1MDAyNmFzYXItXFx1MDAzZWdlb192Mi1cXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcXG4gMjYyOlxcdFxcdFxcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cXHUwMDNlZ2VvX3YyLVxcdTAwM2V0YmxbaWR4XS5iYW5kKTtcXG4gMjYzOlxcdFxcdH1cXG4gMjY0OlxcdFxcbiAyNjU6XFx0XFx0c3dpdGNoIChiYW5kKSB7XFxuIDI2NjpcXHRcXHRjYXNlIE5MODAyMTFfQkFORF8yR0haOlxcbiAyNjc6XFx0XFx0XFx0aWR4ID0gMDtcXG4gMjY4OlxcdFxcdFxcdGJyZWFrO1xcbiAyNjk6XFx0XFx0Y2FzZSBOTDgwMjExX0JBTkRfNUdIWjpcXG4gMjcwOlxcdFxcdFxcdGlkeCA9IDE7XFxuIDI3MTpcXHRcXHRcXHRicmVhaztcXG4gMjcyOlxcdFxcdGNhc2UgTkw4MDIxMV9CQU5EXzZHSFo6XFxuIDI3MzpcXHRcXHRcXHRpZHggPSAyO1xcbiAyNzQ6XFx0XFx0XFx0YnJlYWs7XFxuIDI3NTpcXHRcXHRkZWZhdWx0OlxcbiAyNzY6XFx0XFx0XFx0cmV0dXJuIGR5bl9wb3dlcjtcXG4gMjc3OlxcdFxcdH1cXG4gMjc4OlxcdFxcbiAyNzk6XFx0XFx0aWYgKGlkeCBcXHUwMDNlPSBtYXgpXFxuIDI4MDpcXHRcXHRcXHRyZXR1cm4gZHluX3Bvd2VyO1xcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRnZW9fcG93ZXIgPSAoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2Vwd3I7XFxuIDI4MzpcXHRcXHQvKlxcbiAyODQ6XFx0XFx0ICogQVNVUyAoYW5kIHNvbWUgb3RoZXIgT0VNKSBBQ1BJIE1UR1MgdGFibGVzIGZpbGwgdW51c2VkIGdlb1xcbiAyODU6XFx0XFx0ICogc2xvdHMgd2l0aCAweEZGLiBXaW5kb3dzIHRyZWF0cyB0aGF0IGFzIFxcXCJubyBjYXBcXFwiLiBMaW51eCB0b29rXFxuIDI4NjpcXHRcXHQgKiBpdCBhcyBzOCAtMSBkQm0gYW5kIG1pbigpJ2QgZXZlcnkgcmF0ZSBkb3duIHRvIH4zIGRCbSB0bWFjLlxcbiAyODc6XFx0XFx0ICovXFxuIDI4ODpcXHRcXHRpZiAoKHU4KWdlb19wb3dlciA9PSAweGZmKVxcbiAyODk6XFx0XFx0XFx0cmV0dXJuIGR5bl9wb3dlcjtcXG4gMjkwOlxcdFxcdGlmICgoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2VvZmZzZXQgIT0gMHhmZilcXG4gMjkxOlxcdFxcdFxcdGR5bl9wb3dlciArPSAoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2VvZmZzZXQ7XFxuIDI5MjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzM6MDIuMTY0MzUzMzc4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0ODgxMTk0NTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29kZSdzIFJlYWNoYWJpbGl0eSoqXG5cbk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgY29kZSBwYXRoLiBJZiBgIWFzYXItXHUwMDNlZ2VvYCBpcyB0cnVlIOKAkyB3aGljaCBoaW5nZXMgb24gYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBmYWlsaW5nIOKAkyBpdCBiYWlscyBvdXQgcmlnaHQgYXdheSBhdCBsaW5lIDI0MiwgcmV0dXJuaW5nIGBkeW5fcG93ZXJgLiBUaGUgZmFpbHVyZSBvZiB0aGF0IGZ1bmN0aW9uLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHN0ZW1zIGZyb20gYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBjYWxsaW5nIGBtdDc5MnhfYWNwaV9yZWFkYC4gQW5kIHRoYXQsIGluIHR1cm4sIGNhbGxzIGBhY3BpX2dldF9oYW5kbGVgLCB1c2luZyBgQUNQSV9IQU5ETEUobWRldi1cdTAwM2VkZXYpYC4gTm93LCBmb3IgYSB2aXJ0dWFsIFVTQiBkZXZpY2UsIHRoYXQgYEFDUElfSEFORExFYCBpcyBnb2luZyB0byBiZSBOVUxMLiBTbywgYG10NzkyeF9hY3BpX3JlYWRgIGlzIGdvaW5nIHRvIGNyYXAgb3V0IGFuZCByZXR1cm4gYC1FT1BOT1RTVVBQYC5cblxuVGhhdCBtZWFucyBgYXNhci1cdTAwM2VnZW9gIHJlbWFpbnMgTlVMTC4gVGhlcmVmb3JlLCBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIGFsd2F5cyBleGl0cyBlYXJseSBhdCBsaW5lIDI0Mi4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIG1vZGlmaWNhdGlvbiBJIG1hZGUgYXQgbGluZSAyODggaXMgbmV2ZXIgZ29pbmcgdG8gYmUgZXhlY3V0ZWQgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgUUVNVS4gSXQncyBzaW1wbHkgdW5yZWFjaGFibGUuIEkgbWVhbiwgZXZlbiBpZiBJIGNvdWxkIHNvbWVob3cgbW9jayB0aGUgQUNQSSBoYW5kbGUgdG8gZ2V0IHBhc3QgdGhlIGluaXRpYWwgTlVMTCBjaGVjaywgc3l6a2FsbGVyIGRvZXNuJ3Qgb2ZmZXIgYSBtZWNoYW5pc20gdG8gaW5qZWN0IEFDUEkgdGFibGVzIHNwZWNpZmljYWxseSBmb3IgYSBVU0IgZGV2aWNlLiBUaGlzIGZ1cnRoZXIgc29saWRpZmllcyBteSBjb25jbHVzaW9uIHRoYXQgdGhpcyBjb2RlIGJyYW5jaCBpcyBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBvdGhlciB3YXkgYGFzYXItXHUwMDNlZ2VvYCBjb3VsZCBiZSBwb3B1bGF0ZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTYzLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzM6NDcuMDQ1NTUxODdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MjI5NjEyNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXNhci1cXHUwMDNlZ2VvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE1OlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VnZW8sIGFzYXItXFx1MDAzZXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE3OlxcdFxcdGRldm1fa2ZyZWUoZGV2LVxcdTAwM2VtdDc2LmRldiwgYXNhci1cXHUwMDNlZ2VvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIxODpcXHRcXHRhc2FyLVxcdTAwM2VnZW8gPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjE5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MjM0PW10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI0MjpcXHRpZiAoIWFzYXItXFx1MDAzZWdlbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI0My1cXHRcXHRyZXR1cm4gZHluX3Bvd2VyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yNTctXFx0aWYgKGFzYXItXFx1MDAzZXZlciA9PSAxKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyNTg6XFx0XFx0YmFuZF9wd3IgPSBcXHUwMDI2YXNhci1cXHUwMDNlZ2VvLVxcdTAwM2V0YmxbaWR4XS5iYW5kWzBdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjU5OlxcdFxcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cXHUwMDNlZ2VvLVxcdTAwM2V0YmxbaWR4XS5iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTI2MC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjYxOlxcdFxcdGJhbmRfcHdyID0gXFx1MDAyNmFzYXItXFx1MDAzZWdlb192Mi1cXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjI2MjpcXHRcXHRtYXggPSBBUlJBWV9TSVpFKGFzYXItXFx1MDAzZWdlb192Mi1cXHUwMDNldGJsW2lkeF0uYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yNjMtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxNTozMzo0OS44Njg1MjIzODdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMjIzODc1MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVGhpcyBDb2RlIGlzIFVuZnV6emFibGUqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWw6IEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIHRoZSBgbXQ3NmAgTWVkaWFUZWsgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgZnVuY3Rpb24uIFRoZSBtb2RpZmljYXRpb24gaXMgc3VwcG9zZWQgdG8gZGVhbCB3aXRoIGEgc3BlY2lmaWMgaXNzdWUgcmVsYXRlZCB0byBob3cgU0FSIChTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUpIHZhbHVlcyBhcmUgaGFuZGxlZCB3aGVuIHJlYWQgZnJvbSBBQ1BJIHRhYmxlcy4gQnV0IGhlcmUncyB0aGUgY2F0Y2gg4oCTIHRoZSBlbnRpcmUgY29kZSBwYXRoIGlzIGdhdGVkIGJlaGluZCBhIHN1Y2Nlc3NmdWwgcmVhZCBvZiB0aGUgXCJNVEdTXCIgQUNQSSBvYmplY3QuXG5cblRoYXQgcmVhZCBoYXBwZW5zIHdpdGhpbiBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgIHZpYSB0aGUgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBmdW5jdGlvbi4gVGhlIHByb2JsZW0/IEFDUEkgdGFibGVzLCBpbiBtb3N0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIHRoZSBRRU1VIHNldHVwIGNvbW1vbmx5IHVzZWQgZm9yIGZ1enppbmcsIGFyZSBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBoeXBlcnZpc29yIG9yIGZpcm13YXJlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQsIHNpbmNlIHdlIGFyZW4ndCBpbmplY3RpbmcgY3VzdG9tIEFDUEkgdGFibGVzIHZpYSBhIGZ1enplciBsaWtlIHN5emthbGxlciAod2hpY2ggaXMgcHJldHR5IHN0YW5kYXJkIHByYWN0aWNlKSwgdGhpcyBjb2RlIHBhdGggaXMgc2ltcGx5IHVucmVhY2hhYmxlLlxuXG5UbyByZWl0ZXJhdGUsIHRoZXNlIEFDUEkgb2JqZWN0cyBhcmUgbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBteSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgZHJpdmVyIGlzIHJlbGlhbnQgb24gdGhlIHN5c3RlbSdzIEFDUEkgdGFibGVzIHRvIHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgYmVmb3JlIGl0IGNhbiBldmVuIHJlYWNoIHRoZSBjb2RlLiBBbHNvLCB0aGlzIGRyaXZlciBhcHBlYXJzIHRvIGJlIGhhcmR3YXJlIHNwZWNpZmljIGFuZCByZXF1aXJlcyBwaHlzaWNhbCBNZWRpYVRlayBXaS1GaSBoYXJkd2FyZSAoUENJZS9VU0IpLlxuXG5UaGVyZWZvcmUsIEknbSBjb25jbHVkaW5nIHRoYXQgdGhpcyBtb2RpZmllZCBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG91ciBjdXJyZW50IGZ1enppbmcgc2V0dXAsIHNvIEknbSBtYXJraW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCdzIGp1c3Qgbm90IHByYWN0aWNhbCBvciBlZmZpY2llbnQgdG8gcHVyc3VlIHRoaXMgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwNDEsIk91dHB1dFRva2VucyI6MTQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE1OjM0OjIzLjA5MDkxMjU4N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIHRhYmxlIHBhcnNpbmcgaW4gdGhlIE1lZGlhVGVrIFdpLUZpIGRyaXZlciAobXQ3NikuIFRoaXMgY29kZSBpcyBvbmx5IHJlYWNoYWJsZSBpZiB0aGUgZHJpdmVyIHN1Y2Nlc3NmdWxseSByZWFkcyB0aGUgXFxcIk1UR1NcXFwiIEFDUEkgb2JqZWN0IGZyb20gdGhlIHN5c3RlbSdzIEFDUEkgdGFibGVzLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdmlydHVhbCBkZXZpY2VzIGRvIG5vdCBoYXZlIHRoZXNlIHNwZWNpZmljIEFDUEkgaGFuZGxlcyBvciB0YWJsZXMsIGNhdXNpbmcgdGhlIEFDUEkgcmVhZCB0byBmYWlsIGFuZCB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIGVhcmx5IGJlZm9yZSByZWFjaGluZyB0aGUgbW9kaWZpZWQgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWVkaWFUZWsgV2ktRmkgaGFyZHdhcmUgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiB0YWJsZSBwYXJzaW5nIGluIHRoZSBNZWRpYVRlayBXaS1GaSBkcml2ZXIgKG10NzYpLiBUaGlzIGNvZGUgaXMgb25seSByZWFjaGFibGUgaWYgdGhlIGRyaXZlciBzdWNjZXNzZnVsbHkgcmVhZHMgdGhlIFxcXCJNVEdTXFxcIiBBQ1BJIG9iamVjdCBmcm9tIHRoZSBzeXN0ZW0ncyBBQ1BJIHRhYmxlcy4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHZpcnR1YWwgZGV2aWNlcyBkbyBub3QgaGF2ZSB0aGVzZSBzcGVjaWZpYyBBQ1BJIGhhbmRsZXMgb3IgdGFibGVzLCBjYXVzaW5nIHRoZSBBQ1BJIHJlYWQgdG8gZmFpbCBhbmQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBlYXJseSBiZWZvcmUgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1lZGlhVGVrIFdpLUZpIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTU6MzQ6MjMuMDkwOTM2OTI3WiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow4r828[1] Phase: Running StartedAt: 2026-08-27 15:34:34 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4r828[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-27 15:34:34 +0000 UTC FinishedAt: 2026-08-27 15:34:38 +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,}