ZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIvLnRyYXZpcy55bWwKaW5kZXggNGNkYWQzNy4uOTRiZjM4MiAxMDA2NDQKLS0tIGEvLnRyYXZpcy55bWwKKysrIGIvLnRyYXZpcy55bWwKQEAgLTgsMzMgKzgsMzcgQEAKICAgICAtIFRFU1Q9b2JqYwogICAgIC0gSk9CUz0xCiAgIG1hdHJpeDoKLSAgICAtIFNDSEVNRT0iUnhMaWJyYXJ5VW5pdFRlc3RzIiBXT1JLU1BBQ0U9IlRlc3RzLnhjd29ya3NwYWNlIgotICAgICAgVEVTVF9QQVRIPSJzcmMvb2JqZWN0aXZlLWMvdGVzdHMiIEJVSUxEX09OTFk9ImZhbHNlIgorICAgIC0gU0NIRU1FPSJSeExpYnJhcnlVbml0VGVzdHMiCisgICAgICBXT1JLU1BBQ0U9IlRlc3RzLnhjd29ya3NwYWNlIiBURVNUX1BBVEg9InNyYy9vYmplY3RpdmUtYy90ZXN0cyIgQlVJTERfT05MWT0iZmFsc2UiCiAgICAgICBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCi0gICAgLSBTQ0hFTUU9IkludGVyb3BUZXN0c0xvY2FsU1NMIiBXT1JLU1BBQ0U9IlRlc3RzLnhjd29ya3NwYWNlIgotICAgICAgVEVTVF9QQVRIPSJzcmMvb2JqZWN0aXZlLWMvdGVzdHMiIEJVSUxEX09OTFk9ImZhbHNlIiBJTlRFUk9QX1NFUlZFUj0idHJ1ZSIKLSAgICAtIFNDSEVNRT0iSW50ZXJvcFRlc3RzTG9jYWxDbGVhcnRleHQiIFdPUktTUEFDRT0iVGVzdHMueGN3b3Jrc3BhY2UiCi0gICAgICBURVNUX1BBVEg9InNyYy9vYmplY3RpdmUtYy90ZXN0cyIgIEJVSUxEX09OTFk9ImZhbHNlIgorICAgIC0gU0NIRU1FPSJJbnRlcm9wVGVzdHNMb2NhbFNTTCIKKyAgICAgIFdPUktTUEFDRT0iVGVzdHMueGN3b3Jrc3BhY2UiIFRFU1RfUEFUSD0ic3JjL29iamVjdGl2ZS1jL3Rlc3RzIiBCVUlMRF9PTkxZPSJmYWxzZSIKKyAgICAgIElOVEVST1BfU0VSVkVSPSJ0cnVlIgorICAgIC0gU0NIRU1FPSJJbnRlcm9wVGVzdHNMb2NhbENsZWFydGV4dCIKKyAgICAgIFdPUktTUEFDRT0iVGVzdHMueGN3b3Jrc3BhY2UiIFRFU1RfUEFUSD0ic3JjL29iamVjdGl2ZS1jL3Rlc3RzIiAgQlVJTERfT05MWT0iZmFsc2UiCiAgICAgICBJTlRFUk9QX1NFUlZFUj0idHJ1ZSIKICAgICAjIFRPRE8oamNhbml6YWxlcyk6IE1ha2UgdGVzdHMgYW4gYXBwIHByb2plY3QgKGluc3RlYWQgb2YgbGlicmFyeSksIHNvIHRoZSBmb2xsb3dpbmcgd2lsbCB3b3JrLgotICAgICMgLSBTQ0hFTUU9IkludGVyb3BUZXN0c1JlbW90ZSIgV09SS1NQQUNFPSJUZXN0cy54Y3dvcmtzcGFjZSIKLSAgICAjICAgVEVTVF9QQVRIPSJzcmMvb2JqZWN0aXZlLWMvdGVzdHMiIEJVSUxEX09OTFk9ImZhbHNlIgorICAgICMgLSBTQ0hFTUU9IkludGVyb3BUZXN0c1JlbW90ZSIKKyAgICAjICAgV09SS1NQQUNFPSJUZXN0cy54Y3dvcmtzcGFjZSIgVEVTVF9QQVRIPSJzcmMvb2JqZWN0aXZlLWMvdGVzdHMiIEJVSUxEX09OTFk9ImZhbHNlIgogICAgICMgICBJTlRFUk9QX1NFUlZFUj0idHJ1ZSIKLSAgICAtIFNDSEVNRT0iSGVsbG9Xb3JsZCIgV09SS1NQQUNFPSJIZWxsb1dvcmxkLnhjd29ya3NwYWNlIgotICAgICAgVEVTVF9QQVRIPSJleGFtcGxlcy9vYmplY3RpdmUtYy9oZWxsb3dvcmxkIiBCVUlMRF9PTkxZPSJ0cnVlIgorICAgIC0gU0NIRU1FPSJIZWxsb1dvcmxkIgorICAgICAgV09SS1NQQUNFPSJIZWxsb1dvcmxkLnhjd29ya3NwYWNlIiBURVNUX1BBVEg9ImV4YW1wbGVzL29iamVjdGl2ZS1jL2hlbGxvd29ybGQiCisgICAgICBCVUlMRF9PTkxZPSJ0cnVlIiBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCisgICAgLSBTQ0hFTUU9IlJvdXRlR3VpZGVDbGllbnQiCisgICAgICBXT1JLU1BBQ0U9IlJvdXRlR3VpZGVDbGllbnQueGN3b3Jrc3BhY2UiIFRFU1RfUEFUSD0iZXhhbXBsZXMvb2JqZWN0aXZlLWMvcm91dGVfZ3VpZGUiCisgICAgICBCVUlMRF9PTkxZPSJ0cnVlIiBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCisgICAgLSBTQ0hFTUU9IkF1dGhTYW1wbGUiCisgICAgICBXT1JLU1BBQ0U9IkF1dGhTYW1wbGUueGN3b3Jrc3BhY2UiIFRFU1RfUEFUSD0iZXhhbXBsZXMvb2JqZWN0aXZlLWMvYXV0aF9zYW1wbGUiCisgICAgICBCVUlMRF9PTkxZPSJ0cnVlIiBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCisgICAgLSBTQ0hFTUU9IlNhbXBsZSIKKyAgICAgIFdPUktTUEFDRT0iU2FtcGxlLnhjd29ya3NwYWNlIiBURVNUX1BBVEg9InNyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUiIEJVSUxEX09OTFk9InRydWUiCiAgICAgICBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCi0gICAgLSBTQ0hFTUU9IlJvdXRlR3VpZGVDbGllbnQiIFdPUktTUEFDRT0iUm91dGVHdWlkZUNsaWVudC54Y3dvcmtzcGFjZSIKLSAgICAgIFRFU1RfUEFUSD0iZXhhbXBsZXMvb2JqZWN0aXZlLWMvcm91dGVfZ3VpZGUiIEJVSUxEX09OTFk9InRydWUiCi0gICAgICBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCi0gICAgLSBTQ0hFTUU9IkF1dGhTYW1wbGUiIFdPUktTUEFDRT0iQXV0aFNhbXBsZS54Y3dvcmtzcGFjZSIKLSAgICAgIFRFU1RfUEFUSD0iZXhhbXBsZXMvb2JqZWN0aXZlLWMvYXV0aF9zYW1wbGUiIEJVSUxEX09OTFk9InRydWUiCi0gICAgICBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCi0gICAgLSBTQ0hFTUU9IlNhbXBsZSIgV09SS1NQQUNFPSJTYW1wbGUueGN3b3Jrc3BhY2UiCi0gICAgICBURVNUX1BBVEg9InNyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUiIEJVSUxEX09OTFk9InRydWUiCi0gICAgICBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCi0gICAgLSBTQ0hFTUU9IlN3aWZ0U2FtcGxlIiBXT1JLU1BBQ0U9IlN3aWZ0U2FtcGxlLnhjd29ya3NwYWNlIgotICAgICAgVEVTVF9QQVRIPSJzcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU3dpZnRTYW1wbGUiIEJVSUxEX09OTFk9InRydWUiCi0gICAgICBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiCisgICAgLSBTQ0hFTUU9IlNhbXBsZSIKKyAgICAgIFdPUktTUEFDRT0iU2FtcGxlLnhjd29ya3NwYWNlIiBURVNUX1BBVEg9InNyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUiIEJVSUxEX09OTFk9InRydWUiCisgICAgICBJTlRFUk9QX1NFUlZFUj0iZmFsc2UiIEZSQU1FV09SS1M9IllFUyIKKyAgICAtIFNDSEVNRT0iU3dpZnRTYW1wbGUiCisgICAgICBXT1JLU1BBQ0U9IlN3aWZ0U2FtcGxlLnhjd29ya3NwYWNlIiBURVNUX1BBVEg9InNyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZSIKKyAgICAgIEJVSUxEX09OTFk9InRydWUiIElOVEVST1BfU0VSVkVSPSJmYWxzZSIKIGJlZm9yZV9pbnN0YWxsOgogICAjIFVudGlsIFRyYXZpcyB1cGdyYWRlcyBmcm9tIENvY29hcG9kcyAwLjM5LCB3ZSBuZWVkIHRvIGRvIGl0IGhlcmUuCiAgIC0gcG9kIC0tdmVyc2lvbgpkaWZmIC0tZ2l0IGEvQlVJTEQgYi9CVUlMRAppbmRleCA4YTZkN2ZkLi4xNDdhZDFjIDEwMDY0NAotLS0gYS9CVUlMRAorKysgYi9CVUlMRApAQCAtMzAwLDE2ICszMDAsMTkgQEAKICAgICAic3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbF9jYWxsX2hvbGRlci5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbF9pbmRleC5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvdXJpX3BhcnNlci5oIiwKKyAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmgiLAogICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5oIiwKICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmgiLAogICAgICJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYWdncmVnYXRpb24uaCIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfcnBjX3N0YXRzLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5oIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmgiLAogICAgICJzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMiLAogICAgICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyIsCkBAIC00NzYsNiArNDc5LDcgQEAKICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDJfcG9zaXguYyIsCiAgICAgInNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jIiwKICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlX3Bvc2l4LmMiLAorICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmMiLAogICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvcGlja19maXJzdC9waWNrX2ZpcnN0LmMiLApAQCAtNDg0LDYgKzQ4OCw3IEBACiAgICAgInNyYy9jb3JlL2V4dC9yZXNvbHZlci9zb2NrYWRkci9zb2NrYWRkcl9yZXNvbHZlci5jIiwKICAgICAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmMiLAogICAgICJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMiLAorICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2NvbnRleHQuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYyIsCkBAIC00OTMsNiArNDk4LDcgQEAKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL29wZXJhdGlvbi5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvdHJhY2luZy5jIiwKICAgICAic3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfcGx1Z2luX3JlZ2lzdHJ5LmMiLAogICBdLApAQCAtMTAyMSwxNCArMTAyNywxNyBAQAogICAgICJzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy91cmlfcGFyc2VyLmgiLAogICAgICJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCIsCisgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5oIiwKICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfaW50ZXJmYWNlLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgiLAorICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyIsCiAgICAgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXRfdW5zZWN1cmUuYyIsCkBAIC0xMTcwLDEwICsxMTc5LDEyIEBACiAgICAgInNyYy9jb3JlL2V4dC9yZXNvbHZlci9zb2NrYWRkci9zb2NrYWRkcl9yZXNvbHZlci5jIiwKICAgICAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmMiLAogICAgICJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMiLAorICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmMiLAogICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvcGlja19maXJzdC9waWNrX2ZpcnN0LmMiLAogICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L3JvdW5kX3JvYmluL3JvdW5kX3JvYmluLmMiLAorICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2NvbnRleHQuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYyIsCkBAIC0xMTgzLDYgKzExOTQsNyBAQAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMiLAogICAgICJzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY191bnNlY3VyZV9wbHVnaW5fcmVnaXN0cnkuYyIsCiAgIF0sCkBAIC0xOTU2LDYgKzE5NjgsNyBAQAogICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMl9wb3NpeC5jIiwKICAgICAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMiLAogICAgICJzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGVfcG9zaXguYyIsCisgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jIiwKICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5jIiwKICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9waWNrX2ZpcnN0L3BpY2tfZmlyc3QuYyIsCkBAIC0xOTY0LDYgKzE5NzcsNyBAQAogICAgICJzcmMvY29yZS9leHQvcmVzb2x2ZXIvc29ja2FkZHIvc29ja2FkZHJfcmVzb2x2ZXIuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jIiwKICAgICAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMiLApAQCAtMTk3Myw2ICsxOTg3LDcgQEAKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmMiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL29wZXJhdGlvbi5jIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyIsCisgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYyIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvdHJhY2luZy5jIiwKICAgICAic3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfcGx1Z2luX3JlZ2lzdHJ5LmMiLAogICBdLApAQCAtMjE0OCwxNiArMjE2MywxOSBAQAogICAgICJzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2NhbGxfaG9sZGVyLmgiLAogICAgICJzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2luZGV4LmgiLAogICAgICJzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy91cmlfcGFyc2VyLmgiLAorICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmgiLAogICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5oIiwKICAgICAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oIiwKKyAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfaW50ZXJmYWNlLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaCIsCiAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5oIiwKICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgiLAorICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmgiLAogICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCIsCiAgIF0sCiAgIGluY2x1ZGVzID0gWwpkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAppbmRleCAxZjY0N2UwLi5kOTgzZDA2IDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysgYi9DTWFrZUxpc3RzLnR4dApAQCAtNDgsMjkgKzQ4LDExNSBAQAogc2V0KFBBQ0tBR0VfQlVHUkVQT1JUICJodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjL2lzc3Vlcy8iKQogcHJvamVjdCgke1BBQ0tBR0VfTkFNRX0gQyBDWFgpCiAKLWlmKE5PVCBCT1JJTkdTU0xfUk9PVF9ESVIpCi0gIHNldChCT1JJTkdTU0xfUk9PVF9ESVIgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3RoaXJkX3BhcnR5L2JvcmluZ3NzbCkKLWVuZGlmKCkKLWlmKE5PVCBQUk9UT0JVRl9ST09UX0RJUikKLSAgc2V0KFBST1RPQlVGX1JPT1RfRElSICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90aGlyZF9wYXJ0eS9wcm90b2J1ZikKLWVuZGlmKCkKLWlmKE5PVCBaTElCX1JPT1RfRElSKQotICBzZXQoWkxJQl9ST09UX0RJUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGhpcmRfcGFydHkvemxpYikKK3NldChnUlBDX1pMSUJfUFJPVklERVIgIm1vZHVsZSIgQ0FDSEUgU1RSSU5HICJQcm92aWRlciBvZiB6bGliIGxpYnJhcnkiKQorc2V0X3Byb3BlcnR5KENBQ0hFIGdSUENfWkxJQl9QUk9WSURFUiBQUk9QRVJUWSBTVFJJTkdTICJtb2R1bGUiICJwYWNrYWdlIikKKworc2V0KGdSUENfU1NMX1BST1ZJREVSICJtb2R1bGUiIENBQ0hFIFNUUklORyAiUHJvdmlkZXIgb2Ygc3NsIGxpYnJhcnkiKQorc2V0X3Byb3BlcnR5KENBQ0hFIGdSUENfU1NMX1BST1ZJREVSIFBST1BFUlRZIFNUUklOR1MgIm1vZHVsZSIgInBhY2thZ2UiKQorCitzZXQoZ1JQQ19QUk9UT0JVRl9QUk9WSURFUiAibW9kdWxlIiBDQUNIRSBTVFJJTkcgIlByb3ZpZGVyIG9mIHByb3RvYnVmIGxpYnJhcnkiKQorc2V0X3Byb3BlcnR5KENBQ0hFIGdSUENfUFJPVE9CVUZfUFJPVklERVIgUFJPUEVSVFkgU1RSSU5HUyAibW9kdWxlIiAicGFja2FnZSIpCisKK3NldChnUlBDX1VTRV9QUk9UT19MSVRFIE9GRiBDQUNIRSBCT09MICJVc2UgdGhlIHByb3RvYnVmLWxpdGUgbGlicmFyeSIpCisKK2lmIChnUlBDX1VTRV9QUk9UT19MSVRFKQorICBzZXQoX2dSUENfUFJPVE9CVUZfTElCUkFSWV9OQU1FICJsaWJwcm90b2J1Zi1saXRlIikKKyAgYWRkX2RlZmluaXRpb25zKCItREdSUENfVVNFX1BST1RPX0xJVEUiKQorZWxzZSgpCisgIHNldChfZ1JQQ19QUk9UT0JVRl9MSUJSQVJZX05BTUUgImxpYnByb3RvYnVmIikKIGVuZGlmKCkKIAotIyBCdWlsZGluZyB0aGUgcHJvdG9idWYgdGVzdHMgcmVxdWlyZSBnbW9jayB3aGF0IGlzIG5vdCBwYXJ0IG9mIGEgc3RhbmRhcmQgcHJvdG9idWYgY2hlY2tvdXQuCi0jIERpc2FibGUgdGhlbSB1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSByZXF1ZXN0ZWQgZnJvbSB0aGUgY21ha2UgY29tbWFuZCBsaW5lICh3aGVuIHdlIGFzc3VtZQotIyBnbW9jayBpcyBkb3dubG9hZGVkIHRvIHRoZSByaWdodCBsb2NhdGlvbiBpbnNpZGUgcHJvdG9idWYpLgotaWYoTk9UIHByb3RvYnVmX0JVSUxEX1RFU1RTKQotICBzZXQocHJvdG9idWZfQlVJTERfVEVTVFMgT0ZGIENBQ0hFIEJPT0wgIkJ1aWxkIHByb3RvYnVmIHRlc3RzIikKK2lmKCIke2dSUENfWkxJQl9QUk9WSURFUn0iIFNUUkVRVUFMICJtb2R1bGUiKQorICBpZihOT1QgWkxJQl9ST09UX0RJUikKKyAgICBzZXQoWkxJQl9ST09UX0RJUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGhpcmRfcGFydHkvemxpYikKKyAgZW5kaWYoKQorICBzZXQoWkxJQl9JTkNMVURFX0RJUiAiJHtaTElCX1JPT1RfRElSfSIpCisgIGlmKEVYSVNUUyAiJHtaTElCX1JPT1RfRElSfS9DTWFrZUxpc3RzLnR4dCIpCisgICAgICBhZGRfc3ViZGlyZWN0b3J5KCR7WkxJQl9ST09UX0RJUn0gdGhpcmRfcGFydHkvemxpYikKKyAgICAgIGlmKFRBUkdFVCB6bGlic3RhdGljKQorICAgICAgICAgIHNldChfZ1JQQ19aTElCX0xJQlJBUklFUyB6bGlic3RhdGljKQorICAgICAgZW5kaWYoKQorICBlbHNlKCkKKyAgICAgIG1lc3NhZ2UoV0FSTklORyAiZ1JQQ19aTElCX1BST1ZJREVSIGlzIFwibW9kdWxlXCIgYnV0IFpMSUJfUk9PVF9ESVIgaXMgd3JvbmciKQorICBlbmRpZigpCitlbHNlaWYoIiR7Z1JQQ19aTElCX1BST1ZJREVSfSIgU1RSRVFVQUwgInBhY2thZ2UiKQorICBmaW5kX3BhY2thZ2UoWkxJQikKKyAgaWYoVEFSR0VUIFpMSUI6OlpMSUIpCisgICAgc2V0KF9nUlBDX1pMSUJfTElCUkFSSUVTIFpMSUI6OlpMSUIpCisgIGVuZGlmKCkKKyAgc2V0KF9nUlBDX0ZJTkRfWkxJQiAiaWYoTk9UIFpMSUJfRk9VTkQpXG4gIGZpbmRfcGFja2FnZShaTElCKVxuZW5kaWYoKSIpCiBlbmRpZigpCiAKLWFkZF9zdWJkaXJlY3RvcnkoJHtCT1JJTkdTU0xfUk9PVF9ESVJ9IHRoaXJkX3BhcnR5L2JvcmluZ3NzbCkKLWFkZF9zdWJkaXJlY3RvcnkoJHtQUk9UT0JVRl9ST09UX0RJUn0vY21ha2UgdGhpcmRfcGFydHkvcHJvdG9idWYpCi1hZGRfc3ViZGlyZWN0b3J5KCR7WkxJQl9ST09UX0RJUn0gdGhpcmRfcGFydHkvemxpYikKK2lmKCIke2dSUENfUFJPVE9CVUZfUFJPVklERVJ9IiBTVFJFUVVBTCAibW9kdWxlIikKKyAgIyBCdWlsZGluZyB0aGUgcHJvdG9idWYgdGVzdHMgcmVxdWlyZSBnbW9jayB3aGF0IGlzIG5vdCBwYXJ0IG9mIGEgc3RhbmRhcmQgcHJvdG9idWYgY2hlY2tvdXQuCisgICMgRGlzYWJsZSB0aGVtIHVubGVzcyB0aGV5IGFyZSBleHBsaWNpdGx5IHJlcXVlc3RlZCBmcm9tIHRoZSBjbWFrZSBjb21tYW5kIGxpbmUgKHdoZW4gd2UgYXNzdW1lCisgICMgZ21vY2sgaXMgZG93bmxvYWRlZCB0byB0aGUgcmlnaHQgbG9jYXRpb24gaW5zaWRlIHByb3RvYnVmKS4KKyAgaWYoTk9UIHByb3RvYnVmX0JVSUxEX1RFU1RTKQorICAgIHNldChwcm90b2J1Zl9CVUlMRF9URVNUUyBPRkYgQ0FDSEUgQk9PTCAiQnVpbGQgcHJvdG9idWYgdGVzdHMiKQorICBlbmRpZigpCisgIGlmKE5PVCBQUk9UT0JVRl9ST09UX0RJUikKKyAgICBzZXQoUFJPVE9CVUZfUk9PVF9ESVIgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3RoaXJkX3BhcnR5L3Byb3RvYnVmKQorICBlbmRpZigpCisgIGlmKEVYSVNUUyAiJHtQUk9UT0JVRl9ST09UX0RJUn0vY21ha2UvQ01ha2VMaXN0cy50eHQiKQorICAgIGFkZF9zdWJkaXJlY3RvcnkoJHtQUk9UT0JVRl9ST09UX0RJUn0vY21ha2UgdGhpcmRfcGFydHkvcHJvdG9idWYpCisgICAgaWYoVEFSR0VUICR7X2dSUENfUFJPVE9CVUZfTElCUkFSWV9OQU1FfSkKKyAgICAgIHNldChfZ1JQQ19QUk9UT0JVRl9MSUJSQVJJRVMgJHtfZ1JQQ19QUk9UT0JVRl9MSUJSQVJZX05BTUV9KQorICAgIGVuZGlmKCkKKyAgICBpZihUQVJHRVQgbGlicHJvdG9jKQorICAgICAgc2V0KF9nUlBDX1BST1RPQlVGX1BST1RPQ19MSUJSQVJJRVMgbGlicHJvdG9jKQorICAgIGVuZGlmKCkKKyAgZWxzZSgpCisgICAgICBtZXNzYWdlKFdBUk5JTkcgImdSUENfUFJPVE9CVUZfUFJPVklERVIgaXMgXCJtb2R1bGVcIiBidXQgUFJPVE9CVUZfUk9PVF9ESVIgaXMgd3JvbmciKQorICBlbmRpZigpCitlbHNlaWYoIiR7Z1JQQ19QUk9UT0JVRl9QUk9WSURFUn0iIFNUUkVRVUFMICJwYWNrYWdlIikKKyAgZmluZF9wYWNrYWdlKHByb3RvYnVmIENPTkZJRykKKyAgaWYocHJvdG9idWZfRk9VTkQpCisgICAgaWYoVEFSR0VUIHByb3RvYnVmOjoke19nUlBDX1BST1RPQlVGX0xJQlJBUllfTkFNRX0pCisgICAgICBzZXQoX2dSUENfUFJPVE9CVUZfTElCUkFSSUVTIHByb3RvYnVmOjoke19nUlBDX1BST1RPQlVGX0xJQlJBUllfTkFNRX0pCisgICAgZW5kaWYoKQorICAgIGlmKFRBUkdFVCBwcm90b2J1Zjo6bGlicHJvdG9jKQorICAgICAgc2V0KF9nUlBDX1BST1RPQlVGX1BST1RPQ19MSUJSQVJJRVMgcHJvdG9idWY6OmxpYnByb3RvYykKKyAgICBlbmRpZigpCisgICAgc2V0KF9nUlBDX0ZJTkRfUFJPVE9CVUYgImlmKE5PVCBwcm90b2J1Zl9GT1VORClcbiAgZmluZF9wYWNrYWdlKHByb3RvYnVmIENPTkZJRylcbmVuZGlmKCkiKQorICBlbHNlKCkKKyAgICBmaW5kX3BhY2thZ2UoUHJvdG9idWYgTU9EVUxFKQorICAgIHNldChfZ1JQQ19GSU5EX1BST1RPQlVGICJpZihOT1QgUHJvdG9idWZfRk9VTkQpXG4gIGZpbmRfcGFja2FnZShQcm90b2J1ZilcbmVuZGlmKCkiKQorICBlbmRpZigpCitlbmRpZigpCiAKLXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtc3RkPWMxMSIpCi1zZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLXN0ZD1jKysxMSIpCitpZigiJHtnUlBDX1NTTF9QUk9WSURFUn0iIFNUUkVRVUFMICJtb2R1bGUiKQorICBpZihOT1QgQk9SSU5HU1NMX1JPT1RfRElSKQorICAgIHNldChCT1JJTkdTU0xfUk9PVF9ESVIgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3RoaXJkX3BhcnR5L2JvcmluZ3NzbCkKKyAgZW5kaWYoKQorICBpZihFWElTVFMgIiR7Qk9SSU5HU1NMX1JPT1RfRElSfS9DTWFrZUxpc3RzLnR4dCIpCisgICAgYWRkX3N1YmRpcmVjdG9yeSgke0JPUklOR1NTTF9ST09UX0RJUn0gdGhpcmRfcGFydHkvYm9yaW5nc3NsKQorICAgIGlmKFRBUkdFVCBzc2wpCisgICAgICBzZXQoX2dSUENfU1NMX0xJQlJBUklFUyBzc2wpCisgICAgZW5kaWYoKQorICBlbHNlKCkKKyAgICAgIG1lc3NhZ2UoV0FSTklORyAiZ1JQQ19TU0xfUFJPVklERVIgaXMgXCJtb2R1bGVcIiBidXQgQk9SSU5HU1NMX1JPT1RfRElSIGlzIHdyb25nIikKKyAgZW5kaWYoKQorZWxzZWlmKCIke2dSUENfU1NMX1BST1ZJREVSfSIgU1RSRVFVQUwgInBhY2thZ2UiKQorICBmaW5kX3BhY2thZ2UoT3BlblNTTCkKKyAgaWYoVEFSR0VUIE9wZW5TU0w6OlNTTCkKKyAgICBzZXQoX2dSUENfU1NMX0xJQlJBUklFUyBPcGVuU1NMOjpTU0wpCisgIGVuZGlmKCkKKyAgc2V0KF9nUlBDX0ZJTkRfU1NMICJpZihOT1QgT3BlblNTTF9GT1VORClcbiAgZmluZF9wYWNrYWdlKE9wZW5TU0wpXG5lbmRpZigpIikKK2VuZGlmKCkKKworaWYoTk9UIE1TVkMpCisgIHNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtc3RkPWMxMSIpCisgIHNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtc3RkPWMrKzExIikKK2VuZGlmKCkKKworaWYoV0lOMzIgQU5EIE1TVkMpCisgIHNldChfZ1JQQ19CQVNFTElCX0xJQlJBUklFUyB3c29jazMyIHdzMl8zMikKK2VuZGlmKCkKKworaW5jbHVkZShHTlVJbnN0YWxsRGlycykKK2lmKE5PVCBERUZJTkVEIENNQUtFX0lOU1RBTExfQ01BS0VESVIpCisgIHNldChDTUFLRV9JTlNUQUxMX0NNQUtFRElSICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS9nUlBDIikKK2VuZGlmKCkKIAogICAKIGFkZF9saWJyYXJ5KGdwcgpAQCAtMTI2LDExICsyMTIsNjkgQEAKICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7Qk9SSU5HU1NMX1JPT1RfRElSfS9pbmNsdWRlCiAgIFBSSVZBVEUgJHtQUk9UT0JVRl9ST09UX0RJUn0vc3JjCi0gIFBSSVZBVEUgJHtaTElCX1JPT1RfRElSfQorICBQUklWQVRFICR7WkxJQl9JTkNMVURFX0RJUn0KICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vdGhpcmRfcGFydHkvemxpYgogKQogCiAKK2ZvcmVhY2goX2hkcgorICBpbmNsdWRlL2dycGMvc3VwcG9ydC9hbGxvYy5oCisgIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bS5oCisgIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L2F0bV9nY2NfYXRvbWljLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtX2djY19zeW5jLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvYXRtX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC9hdmwuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC9jbWRsaW5lLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvY3B1LmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvaGlzdG9ncmFtLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvaG9zdF9wb3J0LmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvbG9nLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvbG9nX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvc2xpY2UuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC9zbGljZV9idWZmZXIuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC9zdHJpbmdfdXRpbC5oCisgIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L3N1YnByb2Nlc3MuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC9zeW5jLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvc3luY19nZW5lcmljLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvc3luY19wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L3N5bmNfd2luZG93cy5oCisgIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L3RoZC5oCisgIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L3RpbWUuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC90bHMuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC90bHNfZ2NjLmgKKyAgaW5jbHVkZS9ncnBjL3N1cHBvcnQvdGxzX21zdmMuaAorICBpbmNsdWRlL2dycGMvc3VwcG9ydC90bHNfcHRocmVhZC5oCisgIGluY2x1ZGUvZ3JwYy9zdXBwb3J0L3VzZWZ1bC5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaAorKQorICBzdHJpbmcoUkVQTEFDRSAiaW5jbHVkZS8iICIiIF9wYXRoICR7X2hkcn0pCisgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3BhdGggJHtfcGF0aH0gUEFUSCkKKyAgaW5zdGFsbChGSUxFUyAke19oZHJ9CisgICAgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS8ke19wYXRofSIKKyAgKQorZW5kZm9yZWFjaCgpCisKKyAgCitpbnN0YWxsKFRBUkdFVFMgZ3ByIEVYUE9SVCBnUlBDVGFyZ2V0cworICBSVU5USU1FIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9CisgIExJQlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKyAgQVJDSElWRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorKQorCiAgIAogYWRkX2xpYnJhcnkoZ3JwYwogICBzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMKQEAgLTI5OCw2ICs0NDIsNyBAQAogICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMl9wb3NpeC5jCiAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jCiAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZV9wb3NpeC5jCisgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jCiAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmMKICAgc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmMKICAgdGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jCkBAIC0zMDksNiArNDU0LDcgQEAKICAgc3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMKICAgc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmMKICAgc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jCisgIHNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL2NvbnRleHQuYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jCkBAIC0zMTgsNiArNDY0LDcgQEAKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jCisgIHNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYwogICBzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYwogICBzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY19wbHVnaW5fcmVnaXN0cnkuYwogKQpAQCAtMzI3LDE2ICs0NzQsNjMgQEAKICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7Qk9SSU5HU1NMX1JPT1RfRElSfS9pbmNsdWRlCiAgIFBSSVZBVEUgJHtQUk9UT0JVRl9ST09UX0RJUn0vc3JjCi0gIFBSSVZBVEUgJHtaTElCX1JPT1RfRElSfQorICBQUklWQVRFICR7WkxJQl9JTkNMVURFX0RJUn0KICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vdGhpcmRfcGFydHkvemxpYgogKQogCiB0YXJnZXRfbGlua19saWJyYXJpZXMoZ3JwYwotICBzc2wKLSAgemxpYnN0YXRpYworICAke19nUlBDX0JBU0VMSUJfTElCUkFSSUVTfQorICAke19nUlBDX1NTTF9MSUJSQVJJRVN9CisgICR7X2dSUENfWkxJQl9MSUJSQVJJRVN9CiAgIGdwcgogKQogCitmb3JlYWNoKF9oZHIKKyAgaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyLmgKKyAgaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyX3JlYWRlci5oCisgIGluY2x1ZGUvZ3JwYy9jb21wcmVzc2lvbi5oCisgIGluY2x1ZGUvZ3JwYy9ncnBjLmgKKyAgaW5jbHVkZS9ncnBjL2dycGNfcG9zaXguaAorICBpbmNsdWRlL2dycGMvc3RhdHVzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXJfcmVhZGVyLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW5kb3dzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW5kb3dzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmgKKyAgaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaAorICBpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eV9jb25zdGFudHMuaAorICBpbmNsdWRlL2dycGMvY2Vuc3VzLmgKKykKKyAgc3RyaW5nKFJFUExBQ0UgImluY2x1ZGUvIiAiIiBfcGF0aCAke19oZHJ9KQorICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9wYXRoICR7X3BhdGh9IFBBVEgpCisgIGluc3RhbGwoRklMRVMgJHtfaGRyfQorICAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vJHtfcGF0aH0iCisgICkKK2VuZGZvcmVhY2goKQorCisgIAoraW5zdGFsbChUQVJHRVRTIGdycGMgRVhQT1JUIGdSUENUYXJnZXRzCisgIFJVTlRJTUUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0KKyAgTElCUkFSWSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CispCisKICAgCiBhZGRfbGlicmFyeShncnBjX2Nyb25ldAogICBzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMKQEAgLTUxMCwxNSArNzA0LDYyIEBACiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUKICAgUFJJVkFURSAke0JPUklOR1NTTF9ST09UX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7UFJPVE9CVUZfUk9PVF9ESVJ9L3NyYwotICBQUklWQVRFICR7WkxJQl9ST09UX0RJUn0KKyAgUFJJVkFURSAke1pMSUJfSU5DTFVERV9ESVJ9CiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3RoaXJkX3BhcnR5L3psaWIKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdycGNfY3JvbmV0Ci0gIHNzbAorICAke19nUlBDX0JBU0VMSUJfTElCUkFSSUVTfQorICAke19nUlBDX1NTTF9MSUJSQVJJRVN9CiAgIGdwcgogKQogCitmb3JlYWNoKF9oZHIKKyAgaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyLmgKKyAgaW5jbHVkZS9ncnBjL2J5dGVfYnVmZmVyX3JlYWRlci5oCisgIGluY2x1ZGUvZ3JwYy9jb21wcmVzc2lvbi5oCisgIGluY2x1ZGUvZ3JwYy9ncnBjLmgKKyAgaW5jbHVkZS9ncnBjL2dycGNfcG9zaXguaAorICBpbmNsdWRlL2dycGMvc3RhdHVzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXJfcmVhZGVyLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW5kb3dzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW5kb3dzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmgKKyAgaW5jbHVkZS9ncnBjL2dycGNfY3JvbmV0LmgKKyAgaW5jbHVkZS9ncnBjL2dycGNfc2VjdXJpdHkuaAorICBpbmNsdWRlL2dycGMvZ3JwY19zZWN1cml0eV9jb25zdGFudHMuaAorKQorICBzdHJpbmcoUkVQTEFDRSAiaW5jbHVkZS8iICIiIF9wYXRoICR7X2hkcn0pCisgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3BhdGggJHtfcGF0aH0gUEFUSCkKKyAgaW5zdGFsbChGSUxFUyAke19oZHJ9CisgICAgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS8ke19wYXRofSIKKyAgKQorZW5kZm9yZWFjaCgpCisKKyAgCitpbnN0YWxsKFRBUkdFVFMgZ3JwY19jcm9uZXQgRVhQT1JUIGdSUENUYXJnZXRzCisgIFJVTlRJTUUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0KKyAgTElCUkFSWSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CispCisKICAgCiBhZGRfbGlicmFyeShncnBjX3Vuc2VjdXJlCiAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYwpAQCAtNjYxLDYgKzkwMiw3IEBACiAgIHNyYy9jb3JlL2V4dC9yZXNvbHZlci9zb2NrYWRkci9zb2NrYWRkcl9yZXNvbHZlci5jCiAgIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jCiAgIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYworICBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuYwogICBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5jCiAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5jCiAgIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uYwpAQCAtNjY4LDYgKzkxMCw3IEBACiAgIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYwogICBzcmMvY29yZS9leHQvbGJfcG9saWN5L3BpY2tfZmlyc3QvcGlja19maXJzdC5jCiAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvcm91bmRfcm9iaW4vcm91bmRfcm9iaW4uYworICBzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYwpAQCAtNjc3LDYgKzkyMCw3IEBACiAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jCiAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYworICBzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMKICAgc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMKICAgc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfdW5zZWN1cmVfcGx1Z2luX3JlZ2lzdHJ5LmMKICkKQEAgLTY4NiwxNCArOTMwLDU5IEBACiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUKICAgUFJJVkFURSAke0JPUklOR1NTTF9ST09UX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7UFJPVE9CVUZfUk9PVF9ESVJ9L3NyYwotICBQUklWQVRFICR7WkxJQl9ST09UX0RJUn0KKyAgUFJJVkFURSAke1pMSUJfSU5DTFVERV9ESVJ9CiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3RoaXJkX3BhcnR5L3psaWIKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdycGNfdW5zZWN1cmUKKyAgJHtfZ1JQQ19CQVNFTElCX0xJQlJBUklFU30KICAgZ3ByCiApCiAKK2ZvcmVhY2goX2hkcgorICBpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXIuaAorICBpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmgKKyAgaW5jbHVkZS9ncnBjL2NvbXByZXNzaW9uLmgKKyAgaW5jbHVkZS9ncnBjL2dycGMuaAorICBpbmNsdWRlL2dycGMvZ3JwY19wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYy9zdGF0dXMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2J5dGVfYnVmZmVyLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlcl9yZWFkZXIuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaAorICBpbmNsdWRlL2dycGMvY2Vuc3VzLmgKKykKKyAgc3RyaW5nKFJFUExBQ0UgImluY2x1ZGUvIiAiIiBfcGF0aCAke19oZHJ9KQorICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9wYXRoICR7X3BhdGh9IFBBVEgpCisgIGluc3RhbGwoRklMRVMgJHtfaGRyfQorICAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vJHtfcGF0aH0iCisgICkKK2VuZGZvcmVhY2goKQorCisgIAoraW5zdGFsbChUQVJHRVRTIGdycGNfdW5zZWN1cmUgRVhQT1JUIGdSUENUYXJnZXRzCisgIFJVTlRJTUUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0KKyAgTElCUkFSWSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CispCisKICAgCiBhZGRfbGlicmFyeShncnBjKysKICAgc3JjL2NwcC9jbGllbnQvc2VjdXJlX2NyZWRlbnRpYWxzLmNjCkBAIC03MzYsMTYgKzEwMjUsMTMxIEBACiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUKICAgUFJJVkFURSAke0JPUklOR1NTTF9ST09UX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7UFJPVE9CVUZfUk9PVF9ESVJ9L3NyYwotICBQUklWQVRFICR7WkxJQl9ST09UX0RJUn0KKyAgUFJJVkFURSAke1pMSUJfSU5DTFVERV9ESVJ9CiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3RoaXJkX3BhcnR5L3psaWIKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdycGMrKwotICBzc2wKLSAgbGlicHJvdG9idWYKKyAgJHtfZ1JQQ19CQVNFTElCX0xJQlJBUklFU30KKyAgJHtfZ1JQQ19TU0xfTElCUkFSSUVTfQorICAke19nUlBDX1BST1RPQlVGX0xJQlJBUklFU30KICAgZ3JwYwogKQogCitmb3JlYWNoKF9oZHIKKyAgaW5jbHVkZS9ncnBjKysvYWxhcm0uaAorICBpbmNsdWRlL2dycGMrKy9jaGFubmVsLmgKKyAgaW5jbHVkZS9ncnBjKysvY2xpZW50X2NvbnRleHQuaAorICBpbmNsdWRlL2dycGMrKy9jb21wbGV0aW9uX3F1ZXVlLmgKKyAgaW5jbHVkZS9ncnBjKysvY3JlYXRlX2NoYW5uZWwuaAorICBpbmNsdWRlL2dycGMrKy9jcmVhdGVfY2hhbm5lbF9wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYysrL2dlbmVyaWMvYXN5bmNfZ2VuZXJpY19zZXJ2aWNlLmgKKyAgaW5jbHVkZS9ncnBjKysvZ2VuZXJpYy9nZW5lcmljX3N0dWIuaAorICBpbmNsdWRlL2dycGMrKy9ncnBjKysuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NhbGwuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NsaWVudF91bmFyeV9jYWxsLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvcmVfY29kZWdlbi5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvZ3JwY19saWJyYXJ5LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9tZXRob2RfaGFuZGxlcl9pbXBsLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9ycGNfbWV0aG9kLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9ycGNfc2VydmljZV9tZXRob2QuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3NlcmlhbGl6YXRpb25fdHJhaXRzLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9zZXJ2ZXJfYnVpbGRlcl9vcHRpb24uaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3NlcnZlcl9idWlsZGVyX3BsdWdpbi5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvc2VydmVyX2luaXRpYWxpemVyLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9zZXJ2aWNlX3R5cGUuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3N5bmMuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3N5bmNfY3h4MTEuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3N5bmNfbm9fY3h4MTEuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3RoZC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvdGhkX2N4eDExLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC90aGRfbm9fY3h4MTEuaAorICBpbmNsdWRlL2dycGMrKy9zZWN1cml0eS9hdXRoX2NvbnRleHQuaAorICBpbmNsdWRlL2dycGMrKy9zZWN1cml0eS9hdXRoX21ldGFkYXRhX3Byb2Nlc3Nvci5oCisgIGluY2x1ZGUvZ3JwYysrL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmgKKyAgaW5jbHVkZS9ncnBjKysvc2VjdXJpdHkvc2VydmVyX2NyZWRlbnRpYWxzLmgKKyAgaW5jbHVkZS9ncnBjKysvc2VydmVyLmgKKyAgaW5jbHVkZS9ncnBjKysvc2VydmVyX2J1aWxkZXIuaAorICBpbmNsdWRlL2dycGMrKy9zZXJ2ZXJfY29udGV4dC5oCisgIGluY2x1ZGUvZ3JwYysrL3NlcnZlcl9wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvYXN5bmNfc3RyZWFtLmgKKyAgaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9hc3luY191bmFyeV9jYWxsLmgKKyAgaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9ieXRlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvY2hhbm5lbF9hcmd1bWVudHMuaAorICBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L2NvbmZpZy5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc2xpY2UuaAorICBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N0YXR1cy5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc3RhdHVzX2NvZGVfZW51bS5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc3RyaW5nX3JlZi5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc3R1Yl9vcHRpb25zLmgKKyAgaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9zeW5jX3N0cmVhbS5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvdGltZS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY19zdHJlYW0uaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfdW5hcnlfY2FsbC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGxfaG9vay5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jaGFubmVsX2ludGVyZmFjZS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfY29udGV4dC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfdW5hcnlfY2FsbC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb21wbGV0aW9uX3F1ZXVlLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWVfdGFnLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZy5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW5faW50ZXJmYWNlLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NyZWF0ZV9hdXRoX2NvbnRleHQuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vZ3JwY19saWJyYXJ5LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL21ldGhvZF9oYW5kbGVyX2ltcGwuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX21ldGhvZC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ycGNfc2VydmljZV9tZXRob2QuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VjdXJpdHkvYXV0aF9jb250ZXh0LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcmlhbGl6YXRpb25fdHJhaXRzLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9jb250ZXh0LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9pbnRlcmZhY2UuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmljZV90eXBlLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXNfY29kZV9lbnVtLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0cmluZ19yZWYuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3R1Yl9vcHRpb25zLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmMuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19jeHgxMS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX25vX2N4eDExLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfc3RyZWFtLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3RpbWUuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2J5dGVfYnVmZmVyLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlcl9yZWFkZXIuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaAorKQorICBzdHJpbmcoUkVQTEFDRSAiaW5jbHVkZS8iICIiIF9wYXRoICR7X2hkcn0pCisgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3BhdGggJHtfcGF0aH0gUEFUSCkKKyAgaW5zdGFsbChGSUxFUyAke19oZHJ9CisgICAgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS8ke19wYXRofSIKKyAgKQorZW5kZm9yZWFjaCgpCisKKyAgCitpbnN0YWxsKFRBUkdFVFMgZ3JwYysrIEVYUE9SVCBnUlBDVGFyZ2V0cworICBSVU5USU1FIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9CisgIExJQlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKyAgQVJDSElWRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorKQorCiAgIAogYWRkX2xpYnJhcnkoZ3JwYysrX3JlZmxlY3Rpb24KICAgc3JjL2NwcC9leHQvcHJvdG9fc2VydmVyX3JlZmxlY3Rpb24uY2MKQEAgLTc1OSw3ICsxMTYzLDcgQEAKICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7Qk9SSU5HU1NMX1JPT1RfRElSfS9pbmNsdWRlCiAgIFBSSVZBVEUgJHtQUk9UT0JVRl9ST09UX0RJUn0vc3JjCi0gIFBSSVZBVEUgJHtaTElCX1JPT1RfRElSfQorICBQUklWQVRFICR7WkxJQl9JTkNMVURFX0RJUn0KICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vdGhpcmRfcGFydHkvemxpYgogKQogCkBAIC03NjcsNiArMTE3MSw3OCBAQAogICBncnBjKysKICkKIAorZm9yZWFjaChfaGRyCisgIGluY2x1ZGUvZ3JwYysrL2V4dC9wcm90b19zZXJ2ZXJfcmVmbGVjdGlvbl9wbHVnaW4uaAorICBpbmNsdWRlL2dycGMrKy9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmgKKyAgaW5jbHVkZS9ncnBjKysvZXh0L3JlZmxlY3Rpb24ucGIuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcHJvdG9fdXRpbHMuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfc3RyZWFtLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3VuYXJ5X2NhbGwuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsX2hvb2suaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2hhbm5lbF9pbnRlcmZhY2UuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X2NvbnRleHQuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2xpZW50X3VuYXJ5X2NhbGwuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29tcGxldGlvbl9xdWV1ZS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb21wbGV0aW9uX3F1ZXVlX3RhZy5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWcuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuX2ludGVyZmFjZS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jcmVhdGVfYXV0aF9jb250ZXh0LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2dycGNfbGlicmFyeS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3JwY19tZXRob2QuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX3NlcnZpY2VfbWV0aG9kLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlY3VyaXR5L2F1dGhfY29udGV4dC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJpYWxpemF0aW9uX3RyYWl0cy5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfaW50ZXJmYWNlLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZpY2VfdHlwZS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXMuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3RhdHVzX2NvZGVfZW51bS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdHJpbmdfcmVmLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0dWJfb3B0aW9ucy5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfY3h4MTEuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19ub19jeHgxMS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX3N0cmVhbS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi90aW1lLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXJfcmVhZGVyLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vY29ubmVjdGl2aXR5X3N0YXRlLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zdGF0dXMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2FsbG9jLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2NfYXRvbWljLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX3N5bmMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW5kb3dzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9sb2cuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zbGljZV9idWZmZXIuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY193aW5kb3dzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oCispCisgIHN0cmluZyhSRVBMQUNFICJpbmNsdWRlLyIgIiIgX3BhdGggJHtfaGRyfSkKKyAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfcGF0aCAke19wYXRofSBQQVRIKQorICBpbnN0YWxsKEZJTEVTICR7X2hkcn0KKyAgICBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9LyR7X3BhdGh9IgorICApCitlbmRmb3JlYWNoKCkKKworICAKK2luc3RhbGwoVEFSR0VUUyBncnBjKytfcmVmbGVjdGlvbiBFWFBPUlQgZ1JQQ1RhcmdldHMKKyAgUlVOVElNRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQorICBMSUJSQVJZIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CisgIEFSQ0hJVkUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKykKKwogICAKIGFkZF9saWJyYXJ5KGdycGMrK191bnNlY3VyZQogICBzcmMvY3BwL2NvbW1vbi9pbnNlY3VyZV9jcmVhdGVfYXV0aF9jb250ZXh0LmNjCkBAIC04MDQsMTcgKzEyODAsMTMyIEBACiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUKICAgUFJJVkFURSAke0JPUklOR1NTTF9ST09UX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7UFJPVE9CVUZfUk9PVF9ESVJ9L3NyYwotICBQUklWQVRFICR7WkxJQl9ST09UX0RJUn0KKyAgUFJJVkFURSAke1pMSUJfSU5DTFVERV9ESVJ9CiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3RoaXJkX3BhcnR5L3psaWIKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdycGMrK191bnNlY3VyZQotICBsaWJwcm90b2J1ZgorICAke19nUlBDX0JBU0VMSUJfTElCUkFSSUVTfQorICAke19nUlBDX1BST1RPQlVGX0xJQlJBUklFU30KICAgZ3ByCiAgIGdycGNfdW5zZWN1cmUKICAgZ3JwYwogKQogCitmb3JlYWNoKF9oZHIKKyAgaW5jbHVkZS9ncnBjKysvYWxhcm0uaAorICBpbmNsdWRlL2dycGMrKy9jaGFubmVsLmgKKyAgaW5jbHVkZS9ncnBjKysvY2xpZW50X2NvbnRleHQuaAorICBpbmNsdWRlL2dycGMrKy9jb21wbGV0aW9uX3F1ZXVlLmgKKyAgaW5jbHVkZS9ncnBjKysvY3JlYXRlX2NoYW5uZWwuaAorICBpbmNsdWRlL2dycGMrKy9jcmVhdGVfY2hhbm5lbF9wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYysrL2dlbmVyaWMvYXN5bmNfZ2VuZXJpY19zZXJ2aWNlLmgKKyAgaW5jbHVkZS9ncnBjKysvZ2VuZXJpYy9nZW5lcmljX3N0dWIuaAorICBpbmNsdWRlL2dycGMrKy9ncnBjKysuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NhbGwuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NsaWVudF91bmFyeV9jYWxsLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvcmVfY29kZWdlbi5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvZ3JwY19saWJyYXJ5LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9tZXRob2RfaGFuZGxlcl9pbXBsLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9ycGNfbWV0aG9kLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9ycGNfc2VydmljZV9tZXRob2QuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3NlcmlhbGl6YXRpb25fdHJhaXRzLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9zZXJ2ZXJfYnVpbGRlcl9vcHRpb24uaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3NlcnZlcl9idWlsZGVyX3BsdWdpbi5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvc2VydmVyX2luaXRpYWxpemVyLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9zZXJ2aWNlX3R5cGUuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3N5bmMuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3N5bmNfY3h4MTEuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3N5bmNfbm9fY3h4MTEuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL3RoZC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvdGhkX2N4eDExLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC90aGRfbm9fY3h4MTEuaAorICBpbmNsdWRlL2dycGMrKy9zZWN1cml0eS9hdXRoX2NvbnRleHQuaAorICBpbmNsdWRlL2dycGMrKy9zZWN1cml0eS9hdXRoX21ldGFkYXRhX3Byb2Nlc3Nvci5oCisgIGluY2x1ZGUvZ3JwYysrL3NlY3VyaXR5L2NyZWRlbnRpYWxzLmgKKyAgaW5jbHVkZS9ncnBjKysvc2VjdXJpdHkvc2VydmVyX2NyZWRlbnRpYWxzLmgKKyAgaW5jbHVkZS9ncnBjKysvc2VydmVyLmgKKyAgaW5jbHVkZS9ncnBjKysvc2VydmVyX2J1aWxkZXIuaAorICBpbmNsdWRlL2dycGMrKy9zZXJ2ZXJfY29udGV4dC5oCisgIGluY2x1ZGUvZ3JwYysrL3NlcnZlcl9wb3NpeC5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvYXN5bmNfc3RyZWFtLmgKKyAgaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9hc3luY191bmFyeV9jYWxsLmgKKyAgaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9ieXRlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvY2hhbm5lbF9hcmd1bWVudHMuaAorICBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L2NvbmZpZy5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc2xpY2UuaAorICBpbmNsdWRlL2dycGMrKy9zdXBwb3J0L3N0YXR1cy5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc3RhdHVzX2NvZGVfZW51bS5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc3RyaW5nX3JlZi5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvc3R1Yl9vcHRpb25zLmgKKyAgaW5jbHVkZS9ncnBjKysvc3VwcG9ydC9zeW5jX3N0cmVhbS5oCisgIGluY2x1ZGUvZ3JwYysrL3N1cHBvcnQvdGltZS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY19zdHJlYW0uaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfdW5hcnlfY2FsbC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGxfaG9vay5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jaGFubmVsX2ludGVyZmFjZS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfY29udGV4dC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jbGllbnRfdW5hcnlfY2FsbC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb21wbGV0aW9uX3F1ZXVlLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbXBsZXRpb25fcXVldWVfdGFnLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZy5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW5faW50ZXJmYWNlLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NyZWF0ZV9hdXRoX2NvbnRleHQuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vZ3JwY19saWJyYXJ5LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL21ldGhvZF9oYW5kbGVyX2ltcGwuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vcnBjX21ldGhvZC5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9ycGNfc2VydmljZV9tZXRob2QuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VjdXJpdHkvYXV0aF9jb250ZXh0LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcmlhbGl6YXRpb25fdHJhaXRzLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9jb250ZXh0LmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9pbnRlcmZhY2UuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc2VydmljZV90eXBlLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zdGF0dXNfY29kZV9lbnVtLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N0cmluZ19yZWYuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3R1Yl9vcHRpb25zLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmMuaAorICBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19jeHgxMS5oCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zeW5jX25vX2N4eDExLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfc3RyZWFtLmgKKyAgaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3RpbWUuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2J5dGVfYnVmZmVyLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlcl9yZWFkZXIuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2NvbXByZXNzaW9uX3R5cGVzLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb25uZWN0aXZpdHlfc3RhdGUuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3Byb3BhZ2F0aW9uX2JpdHMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N0YXR1cy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bS5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX2djY19hdG9taWMuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYXRtX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2xvZy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2UuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlX2J1ZmZlci5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oCisgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luY19nZW5lcmljLmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3Bvc2l4LmgKKyAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbmRvd3MuaAorICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3RpbWUuaAorKQorICBzdHJpbmcoUkVQTEFDRSAiaW5jbHVkZS8iICIiIF9wYXRoICR7X2hkcn0pCisgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3BhdGggJHtfcGF0aH0gUEFUSCkKKyAgaW5zdGFsbChGSUxFUyAke19oZHJ9CisgICAgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS8ke19wYXRofSIKKyAgKQorZW5kZm9yZWFjaCgpCisKKyAgCitpbnN0YWxsKFRBUkdFVFMgZ3JwYysrX3Vuc2VjdXJlIEVYUE9SVCBnUlBDVGFyZ2V0cworICBSVU5USU1FIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9CisgIExJQlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKyAgQVJDSElWRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorKQorCiAgIAogYWRkX2xpYnJhcnkoZ3JwY19wbHVnaW5fc3VwcG9ydAogICBzcmMvY29tcGlsZXIvY3BwX2dlbmVyYXRvci5jYwpAQCAtODMwLDEyICsxNDIxLDI5IEBACiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUKICAgUFJJVkFURSAke0JPUklOR1NTTF9ST09UX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7UFJPVE9CVUZfUk9PVF9ESVJ9L3NyYwotICBQUklWQVRFICR7WkxJQl9ST09UX0RJUn0KKyAgUFJJVkFURSAke1pMSUJfSU5DTFVERV9ESVJ9CiAgIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3RoaXJkX3BhcnR5L3psaWIKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdycGNfcGx1Z2luX3N1cHBvcnQKLSAgbGlicHJvdG9jCisgICR7X2dSUENfUFJPVE9CVUZfUFJPVE9DX0xJQlJBUklFU30KKykKKworZm9yZWFjaChfaGRyCisgIGluY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWdfcHJvdG9idWYuaAorKQorICBzdHJpbmcoUkVQTEFDRSAiaW5jbHVkZS8iICIiIF9wYXRoICR7X2hkcn0pCisgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3BhdGggJHtfcGF0aH0gUEFUSCkKKyAgaW5zdGFsbChGSUxFUyAke19oZHJ9CisgICAgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS8ke19wYXRofSIKKyAgKQorZW5kZm9yZWFjaCgpCisKKyAgCitpbnN0YWxsKFRBUkdFVFMgZ3JwY19wbHVnaW5fc3VwcG9ydCBFWFBPUlQgZ1JQQ1RhcmdldHMKKyAgUlVOVElNRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQorICBMSUJSQVJZIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CisgIEFSQ0hJVkUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KICkKIAogICAKQEAgLTg0OCw3ICsxNDU2LDcgQEAKICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZQogICBQUklWQVRFICR7Qk9SSU5HU1NMX1JPT1RfRElSfS9pbmNsdWRlCiAgIFBSSVZBVEUgJHtQUk9UT0JVRl9ST09UX0RJUn0vc3JjCi0gIFBSSVZBVEUgJHtaTElCX1JPT1RfRElSfQorICBQUklWQVRFICR7WkxJQl9JTkNMVURFX0RJUn0KICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vdGhpcmRfcGFydHkvemxpYgogKQogCkBAIC04NTgsNiArMTQ2NiwxNCBAQAogKQogCiAKKyAgCitpbnN0YWxsKFRBUkdFVFMgZ3JwY19jc2hhcnBfZXh0IEVYUE9SVCBnUlBDVGFyZ2V0cworICBSVU5USU1FIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9CisgIExJQlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKyAgQVJDSElWRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorKQorCisKIAogYWRkX2V4ZWN1dGFibGUoZ2VuX2hwYWNrX3RhYmxlcwogICB0b29scy9jb2RlZ2VuL2NvcmUvZ2VuX2hwYWNrX3RhYmxlcy5jCkBAIC04NzgsNiArMTQ5NCwxMyBAQAogKQogCiAKK2luc3RhbGwoVEFSR0VUUyBnZW5faHBhY2tfdGFibGVzIEVYUE9SVCBnUlBDVGFyZ2V0cworICBSVU5USU1FIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9CisgIExJQlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKyAgQVJDSElWRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorKQorCisKIGFkZF9leGVjdXRhYmxlKGdlbl9sZWdhbF9tZXRhZGF0YV9jaGFyYWN0ZXJzCiAgIHRvb2xzL2NvZGVnZW4vY29yZS9nZW5fbGVnYWxfbWV0YWRhdGFfY2hhcmFjdGVycy5jCiApCkBAIC04OTMsNiArMTUxNiwxMyBAQAogCiAKIAoraW5zdGFsbChUQVJHRVRTIGdlbl9sZWdhbF9tZXRhZGF0YV9jaGFyYWN0ZXJzIEVYUE9SVCBnUlBDVGFyZ2V0cworICBSVU5USU1FIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9CisgIExJQlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKyAgQVJDSElWRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorKQorCisKIGFkZF9leGVjdXRhYmxlKGdycGNfY3JlYXRlX2p3dAogICB0ZXN0L2NvcmUvc2VjdXJpdHkvY3JlYXRlX2p3dC5jCiApCkBAIC05MDcsMTIgKzE1MzcsMTkgQEAKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdycGNfY3JlYXRlX2p3dAotICBzc2wKKyAgJHtfZ1JQQ19TU0xfTElCUkFSSUVTfQogICBncnBjCiAgIGdwcgogKQogCiAKK2luc3RhbGwoVEFSR0VUUyBncnBjX2NyZWF0ZV9qd3QgRVhQT1JUIGdSUENUYXJnZXRzCisgIFJVTlRJTUUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0KKyAgTElCUkFSWSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CispCisKKwogYWRkX2V4ZWN1dGFibGUoZ3JwY19wcmludF9nb29nbGVfZGVmYXVsdF9jcmVkc190b2tlbgogICB0ZXN0L2NvcmUvc2VjdXJpdHkvcHJpbnRfZ29vZ2xlX2RlZmF1bHRfY3JlZHNfdG9rZW4uYwogKQpAQCAtOTMyLDYgKzE1NjksMTMgQEAKICkKIAogCitpbnN0YWxsKFRBUkdFVFMgZ3JwY19wcmludF9nb29nbGVfZGVmYXVsdF9jcmVkc190b2tlbiBFWFBPUlQgZ1JQQ1RhcmdldHMKKyAgUlVOVElNRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQorICBMSUJSQVJZIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CisgIEFSQ0hJVkUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKykKKworCiBhZGRfZXhlY3V0YWJsZShncnBjX3ZlcmlmeV9qd3QKICAgdGVzdC9jb3JlL3NlY3VyaXR5L3ZlcmlmeV9qd3QuYwogKQpAQCAtOTUxLDYgKzE1OTUsMTMgQEAKICkKIAogCitpbnN0YWxsKFRBUkdFVFMgZ3JwY192ZXJpZnlfand0IEVYUE9SVCBnUlBDVGFyZ2V0cworICBSVU5USU1FIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9CisgIExJQlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKyAgQVJDSElWRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorKQorCisKIGFkZF9leGVjdXRhYmxlKGdycGNfY3BwX3BsdWdpbgogICBzcmMvY29tcGlsZXIvY3BwX3BsdWdpbi5jYwogKQpAQCAtOTY1LDExICsxNjE2LDE4IEBACiApCiAKIHRhcmdldF9saW5rX2xpYnJhcmllcyhncnBjX2NwcF9wbHVnaW4KLSAgbGlicHJvdG9jCisgICR7X2dSUENfUFJPVE9CVUZfUFJPVE9DX0xJQlJBUklFU30KICAgZ3JwY19wbHVnaW5fc3VwcG9ydAogKQogCiAKK2luc3RhbGwoVEFSR0VUUyBncnBjX2NwcF9wbHVnaW4gRVhQT1JUIGdSUENUYXJnZXRzCisgIFJVTlRJTUUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0KKyAgTElCUkFSWSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CispCisKKwogYWRkX2V4ZWN1dGFibGUoZ3JwY19jc2hhcnBfcGx1Z2luCiAgIHNyYy9jb21waWxlci9jc2hhcnBfcGx1Z2luLmNjCiApCkBAIC05ODQsMTEgKzE2NDIsMTggQEAKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdycGNfY3NoYXJwX3BsdWdpbgotICBsaWJwcm90b2MKKyAgJHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0NfTElCUkFSSUVTfQogICBncnBjX3BsdWdpbl9zdXBwb3J0CiApCiAKIAoraW5zdGFsbChUQVJHRVRTIGdycGNfY3NoYXJwX3BsdWdpbiBFWFBPUlQgZ1JQQ1RhcmdldHMKKyAgUlVOVElNRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQorICBMSUJSQVJZIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CisgIEFSQ0hJVkUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKykKKworCiBhZGRfZXhlY3V0YWJsZShncnBjX25vZGVfcGx1Z2luCiAgIHNyYy9jb21waWxlci9ub2RlX3BsdWdpbi5jYwogKQpAQCAtMTAwMywxMSArMTY2OCwxOCBAQAogKQogCiB0YXJnZXRfbGlua19saWJyYXJpZXMoZ3JwY19ub2RlX3BsdWdpbgotICBsaWJwcm90b2MKKyAgJHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0NfTElCUkFSSUVTfQogICBncnBjX3BsdWdpbl9zdXBwb3J0CiApCiAKIAoraW5zdGFsbChUQVJHRVRTIGdycGNfbm9kZV9wbHVnaW4gRVhQT1JUIGdSUENUYXJnZXRzCisgIFJVTlRJTUUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0KKyAgTElCUkFSWSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CispCisKKwogYWRkX2V4ZWN1dGFibGUoZ3JwY19vYmplY3RpdmVfY19wbHVnaW4KICAgc3JjL2NvbXBpbGVyL29iamVjdGl2ZV9jX3BsdWdpbi5jYwogKQpAQCAtMTAyMiwxMSArMTY5NCwxOCBAQAogKQogCiB0YXJnZXRfbGlua19saWJyYXJpZXMoZ3JwY19vYmplY3RpdmVfY19wbHVnaW4KLSAgbGlicHJvdG9jCisgICR7X2dSUENfUFJPVE9CVUZfUFJPVE9DX0xJQlJBUklFU30KICAgZ3JwY19wbHVnaW5fc3VwcG9ydAogKQogCiAKK2luc3RhbGwoVEFSR0VUUyBncnBjX29iamVjdGl2ZV9jX3BsdWdpbiBFWFBPUlQgZ1JQQ1RhcmdldHMKKyAgUlVOVElNRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQorICBMSUJSQVJZIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CisgIEFSQ0hJVkUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKykKKworCiBhZGRfZXhlY3V0YWJsZShncnBjX3B5dGhvbl9wbHVnaW4KICAgc3JjL2NvbXBpbGVyL3B5dGhvbl9wbHVnaW4uY2MKICkKQEAgLTEwNDEsMTEgKzE3MjAsMTggQEAKICkKIAogdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdycGNfcHl0aG9uX3BsdWdpbgotICBsaWJwcm90b2MKKyAgJHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0NfTElCUkFSSUVTfQogICBncnBjX3BsdWdpbl9zdXBwb3J0CiApCiAKIAoraW5zdGFsbChUQVJHRVRTIGdycGNfcHl0aG9uX3BsdWdpbiBFWFBPUlQgZ1JQQ1RhcmdldHMKKyAgUlVOVElNRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQorICBMSUJSQVJZIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CisgIEFSQ0hJVkUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KKykKKworCiBhZGRfZXhlY3V0YWJsZShncnBjX3J1YnlfcGx1Z2luCiAgIHNyYy9jb21waWxlci9ydWJ5X3BsdWdpbi5jYwogKQpAQCAtMTA2MCwxMSArMTc0NiwzMyBAQAogKQogCiB0YXJnZXRfbGlua19saWJyYXJpZXMoZ3JwY19ydWJ5X3BsdWdpbgotICBsaWJwcm90b2MKKyAgJHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0NfTElCUkFSSUVTfQogICBncnBjX3BsdWdpbl9zdXBwb3J0CiApCiAKIAoraW5zdGFsbChUQVJHRVRTIGdycGNfcnVieV9wbHVnaW4gRVhQT1JUIGdSUENUYXJnZXRzCisgIFJVTlRJTUUgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0KKyAgTElCUkFSWSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfQorICBBUkNISVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9CispCisKKwogCiAKIAorCisKKworaW5zdGFsbChFWFBPUlQgZ1JQQ1RhcmdldHMKKyAgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0NNQUtFRElSfQorICBOQU1FU1BBQ0UgZ1JQQzo6CispCisKK2ZvcmVhY2goX2NvbmZpZyBnUlBDQ29uZmlnIGdSUENDb25maWdWZXJzaW9uKQorICBjb25maWd1cmVfZmlsZSh0b29scy9jbWFrZS8ke19jb25maWd9LmNtYWtlLmluCisgICAgJHtfY29uZmlnfS5jbWFrZSBAT05MWSkKKyAgaW5zdGFsbChGSUxFUyAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJHtfY29uZmlnfS5jbWFrZQorICAgIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9DTUFLRURJUn0KKyAgKQorZW5kZm9yZWFjaCgpCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDgwZThkNzQuLmI5OWZlZTYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC03NDgsOCArNzQ4LDggQEAKIGVuZGlmCiBlbHNlCiBQQ19MSUJTX0dSUENYWCA9IC1scHJvdG9idWYKLVBST1RPQ19QTFVHSU5TID0gJChQUk9UT0NfUExVR0lOU19BTEwpCiBlbmRpZgorUFJPVE9DX1BMVUdJTlMgPSAkKFBST1RPQ19QTFVHSU5TX0FMTCkKIGVsc2UKIGlmZXEgKCQoSEFTX0VNQkVEREVEX1BST1RPQlVGKSx0cnVlKQogUFJPVE9CVUZfREVQID0gJChMSUJESVIpLyQoQ09ORklHKS9wcm90b2J1Zi9saWJwcm90b2J1Zi5hCkBAIC05MTUsNiArOTE1LDcgQEAKIGJpbl9kZWNvZGVyX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvYmluX2RlY29kZXJfdGVzdAogYmluX2VuY29kZXJfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9iaW5fZW5jb2Rlcl90ZXN0CiBjZW5zdXNfY29udGV4dF90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2NlbnN1c19jb250ZXh0X3Rlc3QKK2NlbnN1c19yZXNvdXJjZV90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2NlbnN1c19yZXNvdXJjZV90ZXN0CiBjaGFubmVsX2NyZWF0ZV90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2NoYW5uZWxfY3JlYXRlX3Rlc3QKIGNodHRwMl9ocGFja19lbmNvZGVyX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvY2h0dHAyX2hwYWNrX2VuY29kZXJfdGVzdAogY2h0dHAyX3N0YXR1c19jb252ZXJzaW9uX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvY2h0dHAyX3N0YXR1c19jb252ZXJzaW9uX3Rlc3QKQEAgLTEwNDgsNiArMTA0OSw3IEBACiBncnBjX3B5dGhvbl9wbHVnaW46ICQoQklORElSKS8kKENPTkZJRykvZ3JwY19weXRob25fcGx1Z2luCiBncnBjX3J1YnlfcGx1Z2luOiAkKEJJTkRJUikvJChDT05GSUcpL2dycGNfcnVieV9wbHVnaW4KIGdycGNsYl9hcGlfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9ncnBjbGJfYXBpX3Rlc3QKK2dycGNsYl90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2dycGNsYl90ZXN0CiBoeWJyaWRfZW5kMmVuZF90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2h5YnJpZF9lbmQyZW5kX3Rlc3QKIGludGVyb3BfY2xpZW50OiAkKEJJTkRJUikvJChDT05GSUcpL2ludGVyb3BfY2xpZW50CiBpbnRlcm9wX3NlcnZlcjogJChCSU5ESVIpLyQoQ09ORklHKS9pbnRlcm9wX3NlcnZlcgpAQCAtMTEzMiw3ICsxMTM0LDcgQEAKIGgyX2Z1bGxfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9oMl9mdWxsX3Rlc3QKIGgyX2Z1bGwrcGlwZV90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2gyX2Z1bGwrcGlwZV90ZXN0CiBoMl9mdWxsK3RyYWNlX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaDJfZnVsbCt0cmFjZV90ZXN0Ci1oMl9sb2FkcmVwb3J0aW5nX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaDJfbG9hZHJlcG9ydGluZ190ZXN0CitoMl9sb2FkX3JlcG9ydGluZ190ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3QKIGgyX29hdXRoMl90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2gyX29hdXRoMl90ZXN0CiBoMl9wcm94eV90ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2gyX3Byb3h5X3Rlc3QKIGgyX3NvY2twYWlyX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaDJfc29ja3BhaXJfdGVzdApAQCAtMTE0OCw3ICsxMTUwLDcgQEAKIGgyX2Z1bGxfbm9zZWNfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9oMl9mdWxsX25vc2VjX3Rlc3QKIGgyX2Z1bGwrcGlwZV9ub3NlY190ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2gyX2Z1bGwrcGlwZV9ub3NlY190ZXN0CiBoMl9mdWxsK3RyYWNlX25vc2VjX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaDJfZnVsbCt0cmFjZV9ub3NlY190ZXN0Ci1oMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0CitoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2gyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QKIGgyX3Byb3h5X25vc2VjX3Rlc3Q6ICQoQklORElSKS8kKENPTkZJRykvaDJfcHJveHlfbm9zZWNfdGVzdAogaDJfc29ja3BhaXJfbm9zZWNfdGVzdDogJChCSU5ESVIpLyQoQ09ORklHKS9oMl9zb2NrcGFpcl9ub3NlY190ZXN0CiBoMl9zb2NrcGFpcit0cmFjZV9ub3NlY190ZXN0OiAkKEJJTkRJUikvJChDT05GSUcpL2gyX3NvY2twYWlyK3RyYWNlX25vc2VjX3Rlc3QKQEAgLTEyMTYsOSArMTIxOCw5IEBACiBwY19jeHhfdW5zZWN1cmU6ICQoTElCRElSKS8kKENPTkZJRykvcGtnY29uZmlnL2dycGMrK191bnNlY3VyZS5wYwogCiBpZmVxICgkKEVNQkVEX09QRU5TU0wpLHRydWUpCi1wcml2YXRlbGlic19jeHg6ICAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK190ZXN0X2NvbmZpZy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY19jbGlfbGlicy5hICQoTElCRElSKS8kKENPTkZJRykvbGliaW50ZXJvcF9jbGllbnRfaGVscGVyLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJpbnRlcm9wX2NsaWVudF9tYWluLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJpbnRlcm9wX3NlcnZlcl9oZWxwZXIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmludGVyb3Bfc2VydmVyX21haW4uYSAkKExJQkRJUikvJChDT05GSUcpL2xpYnFwcy5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2Flc190ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2FzbjFfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9iYXNlNjRfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9iaW9fdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9ibl90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2J5dGVzdHJpbmdfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9hZWFkX3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfY2lwaGVyX3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfY21hY190ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2VkMjU1MTlfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF94MjU1MTlfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9kaF90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2RpZ2VzdF90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2VjX3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfZWNkc2FfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9lcnJfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9ldnBfZXh0cmFfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9ldnBfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9wYmtkZl90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2htYWNfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9wa2NzMTJfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9wa2NzOF90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX3BvbHkxMzA1X3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfcnNhX3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfeDUwOV90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX3NzbF90ZXN0X2xpYi5hCitwcml2YXRlbGlic19jeHg6ICAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK19yZWZsZWN0aW9uX2NvZGVnZW4uYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK190ZXN0X2NvbmZpZy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY19jbGlfbGlicy5hICQoTElCRElSKS8kKENPTkZJRykvbGliaW50ZXJvcF9jbGllbnRfaGVscGVyLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJpbnRlcm9wX2NsaWVudF9tYWluLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJpbnRlcm9wX3NlcnZlcl9oZWxwZXIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmludGVyb3Bfc2VydmVyX21haW4uYSAkKExJQkRJUikvJChDT05GSUcpL2xpYnFwcy5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2Flc190ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2FzbjFfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9iYXNlNjRfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9iaW9fdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9ibl90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2J5dGVzdHJpbmdfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9hZWFkX3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfY2lwaGVyX3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfY21hY190ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2VkMjU1MTlfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF94MjU1MTlfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9kaF90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2RpZ2VzdF90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2VjX3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfZWNkc2FfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9lcnJfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9ldnBfZXh0cmFfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9ldnBfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9wYmtkZl90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX2htYWNfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9wa2NzMTJfdGVzdF9saWIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmJvcmluZ3NzbF9wa2NzOF90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX3BvbHkxMzA1X3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfcnNhX3Rlc3RfbGliLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJib3Jpbmdzc2xfeDUwOV90ZXN0X2xpYi5hICQoTElCRElSKS8kKENPTkZJRykvbGliYm9yaW5nc3NsX3NzbF90ZXN0X2xpYi5hCiBlbHNlCi1wcml2YXRlbGlic19jeHg6ICAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK190ZXN0X2NvbmZpZy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY19jbGlfbGlicy5hICQoTElCRElSKS8kKENPTkZJRykvbGliaW50ZXJvcF9jbGllbnRfaGVscGVyLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJpbnRlcm9wX2NsaWVudF9tYWluLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJpbnRlcm9wX3NlcnZlcl9oZWxwZXIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmludGVyb3Bfc2VydmVyX21haW4uYSAkKExJQkRJUikvJChDT05GSUcpL2xpYnFwcy5hCitwcml2YXRlbGlic19jeHg6ICAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK19yZWZsZWN0aW9uX2NvZGVnZW4uYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK190ZXN0X2NvbmZpZy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY19jbGlfbGlicy5hICQoTElCRElSKS8kKENPTkZJRykvbGliaW50ZXJvcF9jbGllbnRfaGVscGVyLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJpbnRlcm9wX2NsaWVudF9tYWluLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJpbnRlcm9wX3NlcnZlcl9oZWxwZXIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmludGVyb3Bfc2VydmVyX21haW4uYSAkKExJQkRJUikvJChDT05GSUcpL2xpYnFwcy5hCiBlbmRpZgogCiAKQEAgLTEyMzMsNiArMTIzNSw3IEBACiAgICQoQklORElSKS8kKENPTkZJRykvYmluX2RlY29kZXJfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvYmluX2VuY29kZXJfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX2NvbnRleHRfdGVzdCBcCisgICQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX3Jlc291cmNlX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2NoYW5uZWxfY3JlYXRlX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2NodHRwMl9ocGFja19lbmNvZGVyX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2NodHRwMl9zdGF0dXNfY29udmVyc2lvbl90ZXN0IFwKQEAgLTEzNDgsNyArMTM1MSw3IEBACiAgICQoQklORElSKS8kKENPTkZJRykvaDJfZnVsbF90ZXN0IFwKICAgJChCSU5ESVIpLyQoQ09ORklHKS9oMl9mdWxsK3BpcGVfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvaDJfZnVsbCt0cmFjZV90ZXN0IFwKLSAgJChCSU5ESVIpLyQoQ09ORklHKS9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QgXAorICAkKEJJTkRJUikvJChDT05GSUcpL2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2gyX29hdXRoMl90ZXN0IFwKICAgJChCSU5ESVIpLyQoQ09ORklHKS9oMl9wcm94eV90ZXN0IFwKICAgJChCSU5ESVIpLyQoQ09ORklHKS9oMl9zb2NrcGFpcl90ZXN0IFwKQEAgLTEzNjQsNyArMTM2Nyw3IEBACiAgICQoQklORElSKS8kKENPTkZJRykvaDJfZnVsbF9ub3NlY190ZXN0IFwKICAgJChCSU5ESVIpLyQoQ09ORklHKS9oMl9mdWxsK3BpcGVfbm9zZWNfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvaDJfZnVsbCt0cmFjZV9ub3NlY190ZXN0IFwKLSAgJChCSU5ESVIpLyQoQ09ORklHKS9oMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QgXAorICAkKEJJTkRJUikvJChDT05GSUcpL2gyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2gyX3Byb3h5X25vc2VjX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2gyX3NvY2twYWlyX25vc2VjX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2gyX3NvY2twYWlyK3RyYWNlX25vc2VjX3Rlc3QgXApAQCAtMTQwMyw2ICsxNDA2LDcgQEAKICAgJChCSU5ESVIpLyQoQ09ORklHKS9nb2xkZW5fZmlsZV90ZXN0IFwKICAgJChCSU5ESVIpLyQoQ09ORklHKS9ncnBjX2NsaSBcCiAgICQoQklORElSKS8kKENPTkZJRykvZ3JwY2xiX2FwaV90ZXN0IFwKKyAgJChCSU5ESVIpLyQoQ09ORklHKS9ncnBjbGJfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvaHlicmlkX2VuZDJlbmRfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvaW50ZXJvcF9jbGllbnQgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2ludGVyb3Bfc2VydmVyIFwKQEAgLTE0ODcsNiArMTQ5MSw3IEBACiAgICQoQklORElSKS8kKENPTkZJRykvZ29sZGVuX2ZpbGVfdGVzdCBcCiAgICQoQklORElSKS8kKENPTkZJRykvZ3JwY19jbGkgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2dycGNsYl9hcGlfdGVzdCBcCisgICQoQklORElSKS8kKENPTkZJRykvZ3JwY2xiX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2h5YnJpZF9lbmQyZW5kX3Rlc3QgXAogICAkKEJJTkRJUikvJChDT05GSUcpL2ludGVyb3BfY2xpZW50IFwKICAgJChCSU5ESVIpLyQoQ09ORklHKS9pbnRlcm9wX3NlcnZlciBcCkBAIC0xNTM2LDYgKzE1NDEsOCBAQAogCSQoUSkgJChCSU5ESVIpLyQoQ09ORklHKS9iaW5fZW5jb2Rlcl90ZXN0IHx8ICggZWNobyB0ZXN0IGJpbl9lbmNvZGVyX3Rlc3QgZmFpbGVkIDsgZXhpdCAxICkKIAkkKEUpICJbUlVOXSAgICAgVGVzdGluZyBjZW5zdXNfY29udGV4dF90ZXN0IgogCSQoUSkgJChCSU5ESVIpLyQoQ09ORklHKS9jZW5zdXNfY29udGV4dF90ZXN0IHx8ICggZWNobyB0ZXN0IGNlbnN1c19jb250ZXh0X3Rlc3QgZmFpbGVkIDsgZXhpdCAxICkKKwkkKEUpICJbUlVOXSAgICAgVGVzdGluZyBjZW5zdXNfcmVzb3VyY2VfdGVzdCIKKwkkKFEpICQoQklORElSKS8kKENPTkZJRykvY2Vuc3VzX3Jlc291cmNlX3Rlc3QgfHwgKCBlY2hvIHRlc3QgY2Vuc3VzX3Jlc291cmNlX3Rlc3QgZmFpbGVkIDsgZXhpdCAxICkKIAkkKEUpICJbUlVOXSAgICAgVGVzdGluZyBjaGFubmVsX2NyZWF0ZV90ZXN0IgogCSQoUSkgJChCSU5ESVIpLyQoQ09ORklHKS9jaGFubmVsX2NyZWF0ZV90ZXN0IHx8ICggZWNobyB0ZXN0IGNoYW5uZWxfY3JlYXRlX3Rlc3QgZmFpbGVkIDsgZXhpdCAxICkKIAkkKEUpICJbUlVOXSAgICAgVGVzdGluZyBjaHR0cDJfaHBhY2tfZW5jb2Rlcl90ZXN0IgpAQCAtMTc3NCw2ICsxNzgxLDggQEAKIAkkKFEpICQoQklORElSKS8kKENPTkZJRykvZ29sZGVuX2ZpbGVfdGVzdCB8fCAoIGVjaG8gdGVzdCBnb2xkZW5fZmlsZV90ZXN0IGZhaWxlZCA7IGV4aXQgMSApCiAJJChFKSAiW1JVTl0gICAgIFRlc3RpbmcgZ3JwY2xiX2FwaV90ZXN0IgogCSQoUSkgJChCSU5ESVIpLyQoQ09ORklHKS9ncnBjbGJfYXBpX3Rlc3QgfHwgKCBlY2hvIHRlc3QgZ3JwY2xiX2FwaV90ZXN0IGZhaWxlZCA7IGV4aXQgMSApCisJJChFKSAiW1JVTl0gICAgIFRlc3RpbmcgZ3JwY2xiX3Rlc3QiCisJJChRKSAkKEJJTkRJUikvJChDT05GSUcpL2dycGNsYl90ZXN0IHx8ICggZWNobyB0ZXN0IGdycGNsYl90ZXN0IGZhaWxlZCA7IGV4aXQgMSApCiAJJChFKSAiW1JVTl0gICAgIFRlc3RpbmcgaHlicmlkX2VuZDJlbmRfdGVzdCIKIAkkKFEpICQoQklORElSKS8kKENPTkZJRykvaHlicmlkX2VuZDJlbmRfdGVzdCB8fCAoIGVjaG8gdGVzdCBoeWJyaWRfZW5kMmVuZF90ZXN0IGZhaWxlZCA7IGV4aXQgMSApCiAJJChFKSAiW1JVTl0gICAgIFRlc3RpbmcgaW50ZXJvcF90ZXN0IgpAQCAtMTkyMiw2ICsxOTMxLDIxIEBACiBlbmRpZgogCiBpZmVxICgkKE5PX1BST1RPQyksdHJ1ZSkKKyQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy9yZWZsZWN0aW9uL3YxYWxwaGEvcmVmbGVjdGlvbi5wYi5jYzogcHJvdG9jX2RlcF9lcnJvcgorJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3JlZmxlY3Rpb24vdjFhbHBoYS9yZWZsZWN0aW9uLmdycGMucGIuY2M6IHByb3RvY19kZXBfZXJyb3IKK2Vsc2UKKyQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy9yZWZsZWN0aW9uL3YxYWxwaGEvcmVmbGVjdGlvbi5wYi5jYzogc3JjL3Byb3RvL2dycGMvcmVmbGVjdGlvbi92MWFscGhhL3JlZmxlY3Rpb24ucHJvdG8gJChQUk9UT0JVRl9ERVApICQoUFJPVE9DX1BMVUdJTlMpIAorCSQoRSkgIltQUk9UT0NdICBHZW5lcmF0aW5nIHByb3RvYnVmIENDIGZpbGUgZnJvbSAkPCIKKwkkKFEpIG1rZGlyIC1wIGBkaXJuYW1lICRAYAorCSQoUSkgJChQUk9UT0MpIC1JdGhpcmRfcGFydHkvcHJvdG9idWYvc3JjIC1JLiAtLWNwcF9vdXQ9JChHRU5ESVIpICQ8CisKKyQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy9yZWZsZWN0aW9uL3YxYWxwaGEvcmVmbGVjdGlvbi5ncnBjLnBiLmNjOiBzcmMvcHJvdG8vZ3JwYy9yZWZsZWN0aW9uL3YxYWxwaGEvcmVmbGVjdGlvbi5wcm90byAkKFBST1RPQlVGX0RFUCkgJChQUk9UT0NfUExVR0lOUykgCisJJChFKSAiW0dSUENdICAgIEdlbmVyYXRpbmcgZ1JQQydzIHByb3RvYnVmIHNlcnZpY2UgQ0MgZmlsZSBmcm9tICQ8IgorCSQoUSkgbWtkaXIgLXAgYGRpcm5hbWUgJEBgCisJJChRKSAkKFBST1RPQykgLUl0aGlyZF9wYXJ0eS9wcm90b2J1Zi9zcmMgLUkuIC0tZ3JwY19vdXQ9JChHRU5ESVIpIC0tcGx1Z2luPXByb3RvYy1nZW4tZ3JwYz0kKFBST1RPQ19QTFVHSU5TX0RJUikvZ3JwY19jcHBfcGx1Z2luICQ8CitlbmRpZgorCitpZmVxICgkKE5PX1BST1RPQyksdHJ1ZSkKICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbXBpbGVyX3Rlc3QucGIuY2M6IHByb3RvY19kZXBfZXJyb3IKICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbXBpbGVyX3Rlc3QuZ3JwYy5wYi5jYzogcHJvdG9jX2RlcF9lcnJvcgogZWxzZQpAQCAtMjY2Niw2ICsyNjkwLDcgQEAKICAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMl9wb3NpeC5jIFwKICAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYyBcCiAgICAgc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlX3Bvc2l4LmMgXAorICAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jIFwKICAgICBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5jIFwKICAgICBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuYyBcCiAgICAgdGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jIFwKQEAgLTI2NzcsNiArMjcwMiw3IEBACiAgICAgc3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMgXAogICAgIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jIFwKICAgICBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMgXAorICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jIFwKQEAgLTI2ODYsNiArMjcxMiw3IEBACiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMgXAorICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMgXAogICAgIHNyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jIFwKIApAQCAtMzA0MSw4ICszMDY4LDEyMyBAQAogICAgIHRlc3QvY29yZS91dGlsL3BvcnRfc2VydmVyX2NsaWVudC5jIFwKICAgICB0ZXN0L2NvcmUvdXRpbC9wb3J0X3dpbmRvd3MuYyBcCiAgICAgdGVzdC9jb3JlL3V0aWwvc2xpY2Vfc3BsaXR0ZXIuYyBcCisgICAgc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9hcmdzLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suYyBcCisgICAgc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFja19idWlsZGVyLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NvbXByZXNzX2ZpbHRlci5jIFwKKyAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5jIFwKKyAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9oYW5kc2hha2VyLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfY2xpZW50X2ZpbHRlci5jIFwKKyAgICBzcmMvY29yZS9saWIvY2hhbm5lbC9odHRwX3NlcnZlcl9maWx0ZXIuYyBcCisgICAgc3JjL2NvcmUvbGliL2NvbXByZXNzaW9uL2NvbXByZXNzaW9uLmMgXAorICAgIHNyYy9jb3JlL2xpYi9jb21wcmVzc2lvbi9tZXNzYWdlX2NvbXByZXNzLmMgXAorICAgIHNyYy9jb3JlL2xpYi9kZWJ1Zy90cmFjZS5jIFwKKyAgICBzcmMvY29yZS9saWIvaHR0cC9mb3JtYXRfcmVxdWVzdC5jIFwKKyAgICBzcmMvY29yZS9saWIvaHR0cC9odHRwY2xpLmMgXAorICAgIHNyYy9jb3JlL2xpYi9odHRwL3BhcnNlci5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvY2xvc3VyZS5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvZW5kcG9pbnQuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL2VuZHBvaW50X3BhaXJfcG9zaXguYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL2VuZHBvaW50X3BhaXJfd2luZG93cy5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvZXJyb3IuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL2V2X2Vwb2xsX2xpbnV4LmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci9ldl9wb2xsX2FuZF9lcG9sbF9wb3NpeC5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvZXZfcG9sbF9wb3NpeC5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvZXZfcG9zaXguYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL2V4ZWNfY3R4LmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci9leGVjdXRvci5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvaW9jcF93aW5kb3dzLmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci9pb21nci5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvaW9tZ3JfcG9zaXguYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL2lvbWdyX3dpbmRvd3MuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL2xvYWRfZmlsZS5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvbmV0d29ya19zdGF0dXNfdHJhY2tlci5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvcG9sbGluZ19lbnRpdHkuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3BvbGxzZXRfc2V0X3dpbmRvd3MuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3BvbGxzZXRfd2luZG93cy5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvcmVzb2x2ZV9hZGRyZXNzX3Bvc2l4LmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci9yZXNvbHZlX2FkZHJlc3Nfd2luZG93cy5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3Ivc29ja2FkZHJfdXRpbHMuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3NvY2tldF91dGlsc19jb21tb25fcG9zaXguYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3NvY2tldF91dGlsc19saW51eC5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3Ivc29ja2V0X3V0aWxzX3Bvc2l4LmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci9zb2NrZXRfd2luZG93cy5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvdGNwX2NsaWVudF9wb3NpeC5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvdGNwX2NsaWVudF93aW5kb3dzLmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci90Y3BfcG9zaXguYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3RjcF9zZXJ2ZXJfcG9zaXguYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3RjcF9zZXJ2ZXJfd2luZG93cy5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3IvdGNwX3dpbmRvd3MuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3RpbWVfYXZlcmFnZWRfc3RhdHMuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3RpbWVyLmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci90aW1lcl9oZWFwLmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci91ZHBfc2VydmVyLmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci91bml4X3NvY2tldHNfcG9zaXguYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3VuaXhfc29ja2V0c19wb3NpeF9ub29wLmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci93YWtldXBfZmRfZXZlbnRmZC5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3Ivd2FrZXVwX2ZkX25vc3BlY2lhbC5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3Ivd2FrZXVwX2ZkX3BpcGUuYyBcCisgICAgc3JjL2NvcmUvbGliL2lvbWdyL3dha2V1cF9mZF9wb3NpeC5jIFwKKyAgICBzcmMvY29yZS9saWIvaW9tZ3Ivd29ya3F1ZXVlX3Bvc2l4LmMgXAorICAgIHNyYy9jb3JlL2xpYi9pb21nci93b3JrcXVldWVfd2luZG93cy5jIFwKKyAgICBzcmMvY29yZS9saWIvanNvbi9qc29uLmMgXAorICAgIHNyYy9jb3JlL2xpYi9qc29uL2pzb25fcmVhZGVyLmMgXAorICAgIHNyYy9jb3JlL2xpYi9qc29uL2pzb25fc3RyaW5nLmMgXAorICAgIHNyYy9jb3JlL2xpYi9qc29uL2pzb25fd3JpdGVyLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2FsYXJtLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2FwaV90cmFjZS5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlci5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9ieXRlX2J1ZmZlcl9yZWFkZXIuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsX2RldGFpbHMuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbF9sb2dfYmF0Y2guYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbF9waW5nLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWxfc3RhY2tfdHlwZS5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9jb21wbGV0aW9uX3F1ZXVlLmMgXAorICAgIHNyYy9jb3JlL2xpYi9zdXJmYWNlL2V2ZW50X3N0cmluZy5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9tZXRhZGF0YV9hcnJheS5jIFwKKyAgICBzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvdmFsaWRhdGVfbWV0YWRhdGEuYyBcCisgICAgc3JjL2NvcmUvbGliL3N1cmZhY2UvdmVyc2lvbi5jIFwKKyAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L2J5dGVfc3RyZWFtLmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvY29ubmVjdGl2aXR5X3N0YXRlLmMgXAorICAgIHNyYy9jb3JlL2xpYi90cmFuc3BvcnQvbWV0YWRhdGEuYyBcCisgICAgc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9tZXRhZGF0YV9iYXRjaC5jIFwKKyAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jIFwKKyAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5jIFwKKyAgICBzcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydF9vcF9zdHJpbmcuYyBcCiAKIFBVQkxJQ19IRUFERVJTX0MgKz0gXAorICAgIGluY2x1ZGUvZ3JwYy9ieXRlX2J1ZmZlci5oIFwKKyAgICBpbmNsdWRlL2dycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmggXAorICAgIGluY2x1ZGUvZ3JwYy9jb21wcmVzc2lvbi5oIFwKKyAgICBpbmNsdWRlL2dycGMvZ3JwYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvZ3JwY19wb3NpeC5oIFwKKyAgICBpbmNsdWRlL2dycGMvc3RhdHVzLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXIuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9ieXRlX2J1ZmZlcl9yZWFkZXIuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9jb21wcmVzc2lvbl90eXBlcy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2Nvbm5lY3Rpdml0eV9zdGF0ZS5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2dycGNfdHlwZXMuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wcm9wYWdhdGlvbl9iaXRzLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3RhdHVzLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vYWxsb2MuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG0uaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9hdG1fZ2NjX2F0b21pYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV9nY2Nfc3luYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL2F0bV93aW5kb3dzLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vbG9nLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vcG9ydF9wbGF0Zm9ybS5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3NsaWNlLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc2xpY2VfYnVmZmVyLmggXAorICAgIGluY2x1ZGUvZ3JwYy9pbXBsL2NvZGVnZW4vc3luYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfZ2VuZXJpYy5oIFwKKyAgICBpbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3N5bmNfcG9zaXguaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9zeW5jX3dpbmRvd3MuaCBcCisgICAgaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi90aW1lLmggXAogCiBMSUJHUlBDX1RFU1RfVVRJTF9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoTElCR1JQQ19URVNUX1VUSUxfU1JDKSkpKQogCkBAIC0zMjU1LDYgKzMzOTcsNyBAQAogICAgIHNyYy9jb3JlL2V4dC9yZXNvbHZlci9zb2NrYWRkci9zb2NrYWRkcl9yZXNvbHZlci5jIFwKICAgICBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jIFwKKyAgICBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmMgXAogICAgIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uYyBcCkBAIC0zMjYyLDYgKzM0MDUsNyBAQAogICAgIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9lbmNvZGUuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9waWNrX2ZpcnN0L3BpY2tfZmlyc3QuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9yb3VuZF9yb2Jpbi9yb3VuZF9yb2Jpbi5jIFwKKyAgICBzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYyBcCkBAIC0zMjcxLDYgKzM0MTUsNyBAQAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL29wZXJhdGlvbi5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIFwKKyAgICBzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvdHJhY2luZy5jIFwKICAgICBzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY191bnNlY3VyZV9wbHVnaW5fcmVnaXN0cnkuYyBcCiAKQEAgLTM3NDQsNiArMzg4OSw1NSBAQAogZW5kaWYKIAogCitMSUJHUlBDKytfUkVGTEVDVElPTl9DT0RFR0VOX1NSQyA9IFwKKyAgICAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvcmVmbGVjdGlvbi92MWFscGhhL3JlZmxlY3Rpb24ucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL3JlZmxlY3Rpb24vdjFhbHBoYS9yZWZsZWN0aW9uLmdycGMucGIuY2MgXAorCitQVUJMSUNfSEVBREVSU19DWFggKz0gXAorCitMSUJHUlBDKytfUkVGTEVDVElPTl9DT0RFR0VOX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChMSUJHUlBDKytfUkVGTEVDVElPTl9DT0RFR0VOX1NSQykpKSkKKworCitpZmVxICgkKE5PX1NFQ1VSRSksdHJ1ZSkKKworIyBZb3UgY2FuJ3QgYnVpbGQgc2VjdXJlIGxpYnJhcmllcyBpZiB5b3UgZG9uJ3QgaGF2ZSBPcGVuU1NMLgorCiskKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK19yZWZsZWN0aW9uX2NvZGVnZW4uYTogb3BlbnNzbF9kZXBfZXJyb3IKKworCitlbHNlCisKK2lmZXEgKCQoTk9fUFJPVE9CVUYpLHRydWUpCisKKyMgWW91IGNhbid0IGJ1aWxkIGEgQysrIGxpYnJhcnkgaWYgeW91IGRvbid0IGhhdmUgcHJvdG9idWYgLSBhIGJpdCBvdmVycmVhY2hlZCwgYnV0IHN0aWxsIG9rYXkuCisKKyQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbi5hOiBwcm90b2J1Zl9kZXBfZXJyb3IKKworCitlbHNlCisKKyQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbi5hOiAkKFpMSUJfREVQKSAkKE9QRU5TU0xfREVQKSAkKFBST1RPQlVGX0RFUCkgJChMSUJHUlBDKytfUkVGTEVDVElPTl9DT0RFR0VOX09CSlMpIAorCSQoRSkgIltBUl0gICAgICBDcmVhdGluZyAkQCIKKwkkKFEpIG1rZGlyIC1wIGBkaXJuYW1lICRAYAorCSQoUSkgcm0gLWYgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjKytfcmVmbGVjdGlvbl9jb2RlZ2VuLmEKKwkkKFEpICQoQVIpICQoQVJPUFRTKSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK19yZWZsZWN0aW9uX2NvZGVnZW4uYSAkKExJQkdSUEMrK19SRUZMRUNUSU9OX0NPREVHRU5fT0JKUykgCitpZmVxICgkKFNZU1RFTSksRGFyd2luKQorCSQoUSkgcmFubGliIC1ub193YXJuaW5nX2Zvcl9ub19zeW1ib2xzICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbi5hCitlbmRpZgorCisKKworCitlbmRpZgorCitlbmRpZgorCitpZm5lcSAoJChOT19TRUNVUkUpLHRydWUpCitpZm5lcSAoJChOT19ERVBTKSx0cnVlKQorLWluY2x1ZGUgJChMSUJHUlBDKytfUkVGTEVDVElPTl9DT0RFR0VOX09CSlM6Lm89LmRlcCkKK2VuZGlmCitlbmRpZgorCisKIExJQkdSUEMrK19URVNUX0NPTkZJR19TUkMgPSBcCiAgICAgdGVzdC9jcHAvdXRpbC90ZXN0X2NvbmZpZy5jYyBcCiAKQEAgLTYzMzIsNiArNjUyNiw3IEBACiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZGVmYXVsdF9ob3N0LmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2Rpc2FwcGVhcmluZ19zZXJ2ZXIuYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZW1wdHlfYmF0Y2guYyBcCisgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhbGxfaW5pdF9mYWlscy5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9maWx0ZXJfY2F1c2VzX2Nsb3NlLmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2dyYWNlZnVsX3NlcnZlcl9zaHV0ZG93bi5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9oaWdoX2luaXRpYWxfc2Vxbm8uYyBcCkBAIC02MzM5LDYgKzY1MzQsNyBAQAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2lkZW1wb3RlbnRfcmVxdWVzdC5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9pbnZva2VfbGFyZ2VfcmVxdWVzdC5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9sYXJnZV9tZXRhZGF0YS5jIFwKKyAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9sb2FkX3JlcG9ydGluZ19ob29rLmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL21heF9jb25jdXJyZW50X3N0cmVhbXMuYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvbWF4X21lc3NhZ2VfbGVuZ3RoLmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL25lZ2F0aXZlX2RlYWRsaW5lLmMgXApAQCAtNjQxMCw2ICs2NjA2LDcgQEAKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9kZWZhdWx0X2hvc3QuYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZGlzYXBwZWFyaW5nX3NlcnZlci5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9lbXB0eV9iYXRjaC5jIFwKKyAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9maWx0ZXJfY2FsbF9pbml0X2ZhaWxzLmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYXVzZXNfY2xvc2UuYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZ3JhY2VmdWxfc2VydmVyX3NodXRkb3duLmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2hpZ2hfaW5pdGlhbF9zZXFuby5jIFwKQEAgLTY0MTcsNiArNjYxNCw3IEBACiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvaWRlbXBvdGVudF9yZXF1ZXN0LmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ludm9rZV9sYXJnZV9yZXF1ZXN0LmMgXAogICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2xhcmdlX21ldGFkYXRhLmMgXAorICAgIHRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2xvYWRfcmVwb3J0aW5nX2hvb2suYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvbWF4X2NvbmN1cnJlbnRfc3RyZWFtcy5jIFwKICAgICB0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9tYXhfbWVzc2FnZV9sZW5ndGguYyBcCiAgICAgdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvbmVnYXRpdmVfZGVhZGxpbmUuYyBcCkBAIC02NzUxLDYgKzY5NDksMzggQEAKIGVuZGlmCiAKIAorQ0VOU1VTX1JFU09VUkNFX1RFU1RfU1JDID0gXAorICAgIHRlc3QvY29yZS9jZW5zdXMvcmVzb3VyY2VfdGVzdC5jIFwKKworQ0VOU1VTX1JFU09VUkNFX1RFU1RfT0JKUyA9ICQoYWRkcHJlZml4ICQoT0JKRElSKS8kKENPTkZJRykvLCAkKGFkZHN1ZmZpeCAubywgJChiYXNlbmFtZSAkKENFTlNVU19SRVNPVVJDRV9URVNUX1NSQykpKSkKK2lmZXEgKCQoTk9fU0VDVVJFKSx0cnVlKQorCisjIFlvdSBjYW4ndCBidWlsZCBzZWN1cmUgdGFyZ2V0cyBpZiB5b3UgZG9uJ3QgaGF2ZSBPcGVuU1NMLgorCiskKEJJTkRJUikvJChDT05GSUcpL2NlbnN1c19yZXNvdXJjZV90ZXN0OiBvcGVuc3NsX2RlcF9lcnJvcgorCitlbHNlCisKKworCiskKEJJTkRJUikvJChDT05GSUcpL2NlbnN1c19yZXNvdXJjZV90ZXN0OiAkKENFTlNVU19SRVNPVVJDRV9URVNUX09CSlMpICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hCisJJChFKSAiW0xEXSAgICAgIExpbmtpbmcgJEAiCisJJChRKSBta2RpciAtcCBgZGlybmFtZSAkQGAKKwkkKFEpICQoTEQpICQoTERGTEFHUykgJChDRU5TVVNfUkVTT1VSQ0VfVEVTVF9PQkpTKSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYSAkKExETElCUykgJChMRExJQlNfU0VDVVJFKSAtbyAkKEJJTkRJUikvJChDT05GSUcpL2NlbnN1c19yZXNvdXJjZV90ZXN0CisKK2VuZGlmCisKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jb3JlL2NlbnN1cy9yZXNvdXJjZV90ZXN0Lm86ICAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYQorCitkZXBzX2NlbnN1c19yZXNvdXJjZV90ZXN0OiAkKENFTlNVU19SRVNPVVJDRV9URVNUX09CSlM6Lm89LmRlcCkKKworaWZuZXEgKCQoTk9fU0VDVVJFKSx0cnVlKQoraWZuZXEgKCQoTk9fREVQUyksdHJ1ZSkKKy1pbmNsdWRlICQoQ0VOU1VTX1JFU09VUkNFX1RFU1RfT0JKUzoubz0uZGVwKQorZW5kaWYKK2VuZGlmCisKKwogQ0hBTk5FTF9DUkVBVEVfVEVTVF9TUkMgPSBcCiAgICAgdGVzdC9jb3JlL3N1cmZhY2UvY2hhbm5lbF9jcmVhdGVfdGVzdC5jIFwKIApAQCAtMTEyNTQsNiArMTE0ODQsNTMgQEAKICQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jcHAvZ3JwY2xiL2dycGNsYl9hcGlfdGVzdC5vOiAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5jYyAkKEdFTkRJUikvc3JjL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5ncnBjLnBiLmNjCiAKIAorR1JQQ0xCX1RFU1RfU1JDID0gXAorICAgICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmNjICQoR0VORElSKS9zcmMvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLmdycGMucGIuY2MgXAorICAgIHRlc3QvY3BwL2dycGNsYi9ncnBjbGJfdGVzdC5jYyBcCisKK0dSUENMQl9URVNUX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChHUlBDTEJfVEVTVF9TUkMpKSkpCitpZmVxICgkKE5PX1NFQ1VSRSksdHJ1ZSkKKworIyBZb3UgY2FuJ3QgYnVpbGQgc2VjdXJlIHRhcmdldHMgaWYgeW91IGRvbid0IGhhdmUgT3BlblNTTC4KKworJChCSU5ESVIpLyQoQ09ORklHKS9ncnBjbGJfdGVzdDogb3BlbnNzbF9kZXBfZXJyb3IKKworZWxzZQorCisKKworCitpZmVxICgkKE5PX1BST1RPQlVGKSx0cnVlKQorCisjIFlvdSBjYW4ndCBidWlsZCB0aGUgcHJvdG9jIHBsdWdpbnMgb3IgcHJvdG9idWYtZW5hYmxlZCB0YXJnZXRzIGlmIHlvdSBkb24ndCBoYXZlIHByb3RvYnVmIDMuMC4wKy4KKworJChCSU5ESVIpLyQoQ09ORklHKS9ncnBjbGJfdGVzdDogcHJvdG9idWZfZGVwX2Vycm9yCisKK2Vsc2UKKworJChCSU5ESVIpLyQoQ09ORklHKS9ncnBjbGJfdGVzdDogJChQUk9UT0JVRl9ERVApICQoR1JQQ0xCX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrKy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYQorCSQoRSkgIltMRF0gICAgICBMaW5raW5nICRAIgorCSQoUSkgbWtkaXIgLXAgYGRpcm5hbWUgJEBgCisJJChRKSAkKExEWFgpICQoTERGTEFHUykgJChHUlBDTEJfVEVTVF9PQkpTKSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYysrLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjKytfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTERMSUJTWFgpICQoTERMSUJTX1BST1RPQlVGKSAkKExETElCUykgJChMRExJQlNfU0VDVVJFKSAkKEdURVNUX0xJQikgLW8gJChCSU5ESVIpLyQoQ09ORklHKS9ncnBjbGJfdGVzdAorCitlbmRpZgorCitlbmRpZgorCiskKE9CSkRJUikvJChDT05GSUcpL3NyYy9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIubzogICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjKysuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEKKworJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9ncnBjbGIvZ3JwY2xiX3Rlc3QubzogICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjKysuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMrK190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEKKworZGVwc19ncnBjbGJfdGVzdDogJChHUlBDTEJfVEVTVF9PQkpTOi5vPS5kZXApCisKK2lmbmVxICgkKE5PX1NFQ1VSRSksdHJ1ZSkKK2lmbmVxICgkKE5PX0RFUFMpLHRydWUpCistaW5jbHVkZSAkKEdSUENMQl9URVNUX09CSlM6Lm89LmRlcCkKK2VuZGlmCitlbmRpZgorJChPQkpESVIpLyQoQ09ORklHKS90ZXN0L2NwcC9ncnBjbGIvZ3JwY2xiX3Rlc3QubzogJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuY2MgJChHRU5ESVIpL3NyYy9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIuZ3JwYy5wYi5jYworCisKIEhZQlJJRF9FTkQyRU5EX1RFU1RfU1JDID0gXAogICAgIHRlc3QvY3BwL2VuZDJlbmQvaHlicmlkX2VuZDJlbmRfdGVzdC5jYyBcCiAKQEAgLTEzOTI4LDM0ICsxNDIwNSwzNCBAQAogZW5kaWYKIAogCi1IMl9MT0FEUkVQT1JUSU5HX1RFU1RfU1JDID0gXAotICAgIHRlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmcuYyBcCitIMl9MT0FEX1JFUE9SVElOR19URVNUX1NSQyA9IFwKKyAgICB0ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkX3JlcG9ydGluZy5jIFwKIAotSDJfTE9BRFJFUE9SVElOR19URVNUX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChIMl9MT0FEUkVQT1JUSU5HX1RFU1RfU1JDKSkpKQorSDJfTE9BRF9SRVBPUlRJTkdfVEVTVF9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoSDJfTE9BRF9SRVBPUlRJTkdfVEVTVF9TUkMpKSkpCiBpZmVxICgkKE5PX1NFQ1VSRSksdHJ1ZSkKIAogIyBZb3UgY2FuJ3QgYnVpbGQgc2VjdXJlIHRhcmdldHMgaWYgeW91IGRvbid0IGhhdmUgT3BlblNTTC4KIAotJChCSU5ESVIpLyQoQ09ORklHKS9oMl9sb2FkcmVwb3J0aW5nX3Rlc3Q6IG9wZW5zc2xfZGVwX2Vycm9yCiskKEJJTkRJUikvJChDT05GSUcpL2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3Q6IG9wZW5zc2xfZGVwX2Vycm9yCiAKIGVsc2UKIAogCiAKLSQoQklORElSKS8kKENPTkZJRykvaDJfbG9hZHJlcG9ydGluZ190ZXN0OiAkKEgyX0xPQURSRVBPUlRJTkdfVEVTVF9PQkpTKSAkKExJQkRJUikvJChDT05GSUcpL2xpYmVuZDJlbmRfdGVzdHMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYQorJChCSU5ESVIpLyQoQ09ORklHKS9oMl9sb2FkX3JlcG9ydGluZ190ZXN0OiAkKEgyX0xPQURfUkVQT1JUSU5HX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJlbmQyZW5kX3Rlc3RzLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEKIAkkKEUpICJbTERdICAgICAgTGlua2luZyAkQCIKIAkkKFEpIG1rZGlyIC1wIGBkaXJuYW1lICRAYAotCSQoUSkgJChMRCkgJChMREZMQUdTKSAkKEgyX0xPQURSRVBPUlRJTkdfVEVTVF9PQkpTKSAkKExJQkRJUikvJChDT05GSUcpL2xpYmVuZDJlbmRfdGVzdHMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYSAkKExETElCUykgJChMRExJQlNfU0VDVVJFKSAtbyAkKEJJTkRJUikvJChDT05GSUcpL2gyX2xvYWRyZXBvcnRpbmdfdGVzdAorCSQoUSkgJChMRCkgJChMREZMQUdTKSAkKEgyX0xPQURfUkVQT1JUSU5HX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJlbmQyZW5kX3Rlc3RzLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEgJChMRExJQlMpICQoTERMSUJTX1NFQ1VSRSkgLW8gJChCSU5ESVIpLyQoQ09ORklHKS9oMl9sb2FkX3JlcG9ydGluZ190ZXN0CiAKIGVuZGlmCiAKLSQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZy5vOiAgJChMSUJESVIpLyQoQ09ORklHKS9saWJlbmQyZW5kX3Rlc3RzLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwYy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEKKyQoT0JKRElSKS8kKENPTkZJRykvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZF9yZXBvcnRpbmcubzogICQoTElCRElSKS8kKENPTkZJRykvbGliZW5kMmVuZF90ZXN0cy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hCiAKLWRlcHNfaDJfbG9hZHJlcG9ydGluZ190ZXN0OiAkKEgyX0xPQURSRVBPUlRJTkdfVEVTVF9PQkpTOi5vPS5kZXApCitkZXBzX2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3Q6ICQoSDJfTE9BRF9SRVBPUlRJTkdfVEVTVF9PQkpTOi5vPS5kZXApCiAKIGlmbmVxICgkKE5PX1NFQ1VSRSksdHJ1ZSkKIGlmbmVxICgkKE5PX0RFUFMpLHRydWUpCi0taW5jbHVkZSAkKEgyX0xPQURSRVBPUlRJTkdfVEVTVF9PQkpTOi5vPS5kZXApCistaW5jbHVkZSAkKEgyX0xPQURfUkVQT1JUSU5HX1RFU1RfT0JKUzoubz0uZGVwKQogZW5kaWYKIGVuZGlmCiAKQEAgLTE0MzY4LDIzICsxNDY0NSwyMyBAQAogZW5kaWYKIAogCi1IMl9MT0FEUkVQT1JUSU5HX05PU0VDX1RFU1RfU1JDID0gXAotICAgIHRlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmcuYyBcCitIMl9MT0FEX1JFUE9SVElOR19OT1NFQ19URVNUX1NSQyA9IFwKKyAgICB0ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkX3JlcG9ydGluZy5jIFwKIAotSDJfTE9BRFJFUE9SVElOR19OT1NFQ19URVNUX09CSlMgPSAkKGFkZHByZWZpeCAkKE9CSkRJUikvJChDT05GSUcpLywgJChhZGRzdWZmaXggLm8sICQoYmFzZW5hbWUgJChIMl9MT0FEUkVQT1JUSU5HX05PU0VDX1RFU1RfU1JDKSkpKQorSDJfTE9BRF9SRVBPUlRJTkdfTk9TRUNfVEVTVF9PQkpTID0gJChhZGRwcmVmaXggJChPQkpESVIpLyQoQ09ORklHKS8sICQoYWRkc3VmZml4IC5vLCAkKGJhc2VuYW1lICQoSDJfTE9BRF9SRVBPUlRJTkdfTk9TRUNfVEVTVF9TUkMpKSkpCiAKIAotJChCSU5ESVIpLyQoQ09ORklHKS9oMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3Q6ICQoSDJfTE9BRFJFUE9SVElOR19OT1NFQ19URVNUX09CSlMpICQoTElCRElSKS8kKENPTkZJRykvbGliZW5kMmVuZF9ub3NlY190ZXN0cy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWxfdW5zZWN1cmUuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdW5zZWN1cmUuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hCiskKEJJTkRJUikvJChDT05GSUcpL2gyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3Q6ICQoSDJfTE9BRF9SRVBPUlRJTkdfTk9TRUNfVEVTVF9PQkpTKSAkKExJQkRJUikvJChDT05GSUcpL2xpYmVuZDJlbmRfbm9zZWNfdGVzdHMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsX3Vuc2VjdXJlLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Vuc2VjdXJlLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYQogCSQoRSkgIltMRF0gICAgICBMaW5raW5nICRAIgogCSQoUSkgbWtkaXIgLXAgYGRpcm5hbWUgJEBgCi0JJChRKSAkKExEKSAkKExERkxBR1MpICQoSDJfTE9BRFJFUE9SVElOR19OT1NFQ19URVNUX09CSlMpICQoTElCRElSKS8kKENPTkZJRykvbGliZW5kMmVuZF9ub3NlY190ZXN0cy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWxfdW5zZWN1cmUuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdW5zZWN1cmUuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hICQoTERMSUJTKSAtbyAkKEJJTkRJUikvJChDT05GSUcpL2gyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdAorCSQoUSkgJChMRCkgJChMREZMQUdTKSAkKEgyX0xPQURfUkVQT1JUSU5HX05PU0VDX1RFU1RfT0JKUykgJChMSUJESVIpLyQoQ09ORklHKS9saWJlbmQyZW5kX25vc2VjX3Rlc3RzLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Rlc3RfdXRpbF91bnNlY3VyZS5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY191bnNlY3VyZS5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByX3Rlc3RfdXRpbC5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3ByLmEgJChMRExJQlMpIC1vICQoQklORElSKS8kKENPTkZJRykvaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdAogCi0kKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmcubzogICQoTElCRElSKS8kKENPTkZJRykvbGliZW5kMmVuZF9ub3NlY190ZXN0cy5hICQoTElCRElSKS8kKENPTkZJRykvbGliZ3JwY190ZXN0X3V0aWxfdW5zZWN1cmUuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdW5zZWN1cmUuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwcl90ZXN0X3V0aWwuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdwci5hCiskKE9CSkRJUikvJChDT05GSUcpL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRfcmVwb3J0aW5nLm86ICAkKExJQkRJUikvJChDT05GSUcpL2xpYmVuZDJlbmRfbm9zZWNfdGVzdHMuYSAkKExJQkRJUikvJChDT05GSUcpL2xpYmdycGNfdGVzdF91dGlsX3Vuc2VjdXJlLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncnBjX3Vuc2VjdXJlLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHJfdGVzdF91dGlsLmEgJChMSUJESVIpLyQoQ09ORklHKS9saWJncHIuYQogCi1kZXBzX2gyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdDogJChIMl9MT0FEUkVQT1JUSU5HX05PU0VDX1RFU1RfT0JKUzoubz0uZGVwKQorZGVwc19oMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0OiAkKEgyX0xPQURfUkVQT1JUSU5HX05PU0VDX1RFU1RfT0JKUzoubz0uZGVwKQogCiBpZm5lcSAoJChOT19ERVBTKSx0cnVlKQotLWluY2x1ZGUgJChIMl9MT0FEUkVQT1JUSU5HX05PU0VDX1RFU1RfT0JKUzoubz0uZGVwKQorLWluY2x1ZGUgJChIMl9MT0FEX1JFUE9SVElOR19OT1NFQ19URVNUX09CSlM6Lm89LmRlcCkKIGVuZGlmCiAKIApkaWZmIC0tZ2l0IGEvUFlUSE9OLU1BTklGRVNULmluIGIvUFlUSE9OLU1BTklGRVNULmluCmluZGV4IDE3NWE0N2YuLjk2YmNkYjUgMTAwNjQ0Ci0tLSBhL1BZVEhPTi1NQU5JRkVTVC5pbgorKysgYi9QWVRIT04tTUFOSUZFU1QuaW4KQEAgLTcsNyArNyw3IEBACiBncmFmdCB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wKIGdyYWZ0IHRoaXJkX3BhcnR5L25hbm9wYgogZ3JhZnQgdGhpcmRfcGFydHkvemxpYgotaW5jbHVkZSBzcmMvcHl0aG9uL2dycGNpby9idWlsZC5weQoraW5jbHVkZSBzcmMvcHl0aG9uL2dycGNpby9fdW5peGNjb21waWxlcl9wYXRjaC5weQogaW5jbHVkZSBzcmMvcHl0aG9uL2dycGNpby9jb21tYW5kcy5weQogaW5jbHVkZSBzcmMvcHl0aG9uL2dycGNpby9ncnBjX3ZlcnNpb24ucHkKIGluY2x1ZGUgc3JjL3B5dGhvbi9ncnBjaW8vZ3JwY19jb3JlX2RlcGVuZGVuY2llcy5weQpkaWZmIC0tZ2l0IGEvUmFrZWZpbGUgYi9SYWtlZmlsZQppbmRleCBmNDQ5NDZmLi41YjZmMTAxIDEwMDc1NQotLS0gYS9SYWtlZmlsZQorKysgYi9SYWtlZmlsZQpAQCAtODMsNyArODMsNyBAQAogICBlbnYgKz0gJ0VNQkVEX1pMSUI9dHJ1ZSAnCiAgIGVudiArPSAnQlVJTERESVI9L3RtcCAnCiAgIGVudiArPSAiVj0je3ZlcmJvc2V9ICIKLSAgb3V0ID0gJy90bXAvbGlicy9vcHQvZ3JwYy0wLmRsbCcKKyAgb3V0ID0gJy90bXAvbGlicy9vcHQvZ3JwYy0xLmRsbCcKIAogICB3NjQgPSB7IGNyb3NzOiAneDg2XzY0LXc2NC1taW5ndzMyJywgb3V0OiAnZ3JwY19jLjY0LnJ1YnknIH0KICAgdzMyID0geyBjcm9zczogJ2k2ODYtdzY0LW1pbmd3MzInLCBvdXQ6ICdncnBjX2MuMzIucnVieScgfQpkaWZmIC0tZ2l0IGEvYmluZGluZy5neXAgYi9iaW5kaW5nLmd5cAppbmRleCAxZGQ3ZWU5Li4zMDdlODMyIDEwMDY0NAotLS0gYS9iaW5kaW5nLmd5cAorKysgYi9iaW5kaW5nLmd5cApAQCAtNzI3LDYgKzcyNyw3IEBACiAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMl9wb3NpeC5jJywKICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jJywKICAgICAgICAgJ3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZV9wb3NpeC5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jJywKICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmMnLAogICAgICAgICAndGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jJywKQEAgLTczOCw2ICs3MzksNyBAQAogICAgICAgICAnc3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYycsCiAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2NvbnRleHQuYycsCiAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYycsCiAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jJywKQEAgLTc0Nyw2ICs3NDksNyBAQAogICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmMnLAogICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYycsCiAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jJywKKyAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuYycsCiAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYycsCiAgICAgICAgICdzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY19wbHVnaW5fcmVnaXN0cnkuYycsCiAgICAgICBdLApkaWZmIC0tZ2l0IGEvYnVpbGQueWFtbCBiL2J1aWxkLnlhbWwKaW5kZXggZDdkYTE0OS4uMjdmZmZkNiAxMDA2NDQKLS0tIGEvYnVpbGQueWFtbAorKysgYi9idWlsZC55YW1sCkBAIC0xNCwxMyArMTQsMTYgQEAKICAgLSBpbmNsdWRlL2dycGMvY2Vuc3VzLmgKICAgaGVhZGVyczoKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmgKKyAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmgKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19pbnRlcmZhY2UuaAogICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX3JwY19zdGF0cy5oCiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmgKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfZmlsdGVyLmgKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuaAorICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaAogICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvcnBjX21ldHJpY19pZC5oCiAgIHNyYzoKKyAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL2NvbnRleHQuYwogICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jCiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYwpAQCAtMzAsNiArMzMsNyBAQAogICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jCiAgIC0gc3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYwogICAtIHNyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMKKyAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMKICAgLSBzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYwogICBwbHVnaW46IGNlbnN1c19ncnBjX3BsdWdpbgogICB1c2VzOgpAQCAtMzc2LDExICszODAsMTQgQEAKICAgLSBncHJfY29kZWdlbgogLSBuYW1lOiBncnBjX2xiX3BvbGljeV9ncnBjbGIKICAgaGVhZGVyczoKKyAgLSBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuaAogICAtIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmgKICAgLSBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuaAogICBzcmM6CisgIC0gc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmMKICAgLSBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5jCiAgIC0gc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmMKKyAgcGx1Z2luOiBncnBjX2xiX3BvbGljeV9ncnBjbGIKICAgdXNlczoKICAgLSBncnBjX2Jhc2UKICAgLSBncnBjX2NsaWVudF9jb25maWcKQEAgLTc3MCw2ICs3NzcsMTYgQEAKICAgbGFuZ3VhZ2U6IGMrKwogICBwdWJsaWNfaGVhZGVyczoKICAgLSBpbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnX3Byb3RvYnVmLmgKKy0gbmFtZTogZ3JwYysrX3JlZmxlY3Rpb25fcHJvdG8KKyAgbGFuZ3VhZ2U6IGMrKworICBwdWJsaWNfaGVhZGVyczoKKyAgLSBpbmNsdWRlL2dycGMrKy9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmgKKyAgLSBpbmNsdWRlL2dycGMrKy9leHQvcmVmbGVjdGlvbi5wYi5oCisgIHNyYzoKKyAgLSBzcmMvY3BwL2V4dC9yZWZsZWN0aW9uLmdycGMucGIuY2MKKyAgLSBzcmMvY3BwL2V4dC9yZWZsZWN0aW9uLnBiLmNjCisgIHVzZXM6CisgIC0gZ3JwYysrX2NvZGVnZW5fcHJvdG8KIGxpYnM6CiAtIG5hbWU6IGdwcgogICBidWlsZDogYWxsCkBAIC04MDYsNiArODIzLDcgQEAKICAgLSBncnBjX2xiX3BvbGljeV9ncnBjbGIKICAgLSBncnBjX2xiX3BvbGljeV9waWNrX2ZpcnN0CiAgIC0gZ3JwY19sYl9wb2xpY3lfcm91bmRfcm9iaW4KKyAgLSBncnBjX2xiX3BvbGljeV9ncnBjbGIKICAgLSBncnBjX3Jlc29sdmVyX2Ruc19uYXRpdmUKICAgLSBncnBjX3Jlc29sdmVyX3NvY2thZGRyCiAgIC0gZ3JwY19sb2FkX3JlcG9ydGluZwpAQCAtODcyLDYgKzg5MCw3IEBACiAgIC0gZ3JwYwogICBmaWxlZ3JvdXBzOgogICAtIGdycGNfdGVzdF91dGlsX2Jhc2UKKyAgLSBncnBjX2Jhc2UKICAgdnNfcHJvamVjdF9ndWlkOiAnezE3QkNBRkMwLTVGREMtNEM5NC1BRUI5LTk1RjNFMjIwNjE0Qn0nCiAtIG5hbWU6IGdycGNfdGVzdF91dGlsX3Vuc2VjdXJlCiAgIGJ1aWxkOiBwcml2YXRlCkBAIC05MDMsNiArOTIyLDcgQEAKICAgLSBncnBjX2xiX3BvbGljeV9ncnBjbGIKICAgLSBncnBjX2xiX3BvbGljeV9waWNrX2ZpcnN0CiAgIC0gZ3JwY19sYl9wb2xpY3lfcm91bmRfcm9iaW4KKyAgLSBncnBjX2xiX3BvbGljeV9ncnBjbGIKICAgLSBjZW5zdXMKICAgZ2VuZXJhdGVfcGx1Z2luX3JlZ2lzdHJ5OiB0cnVlCiAgIHNlY3VyZTogZmFsc2UKQEAgLTk2MiwxOSArOTgyLDIwIEBACiAgIGxhbmd1YWdlOiBjKysKICAgcHVibGljX2hlYWRlcnM6CiAgIC0gaW5jbHVkZS9ncnBjKysvZXh0L3Byb3RvX3NlcnZlcl9yZWZsZWN0aW9uX3BsdWdpbi5oCi0gIC0gaW5jbHVkZS9ncnBjKysvZXh0L3JlZmxlY3Rpb24uZ3JwYy5wYi5oCi0gIC0gaW5jbHVkZS9ncnBjKysvZXh0L3JlZmxlY3Rpb24ucGIuaAogICBoZWFkZXJzOgogICAtIHNyYy9jcHAvZXh0L3Byb3RvX3NlcnZlcl9yZWZsZWN0aW9uLmgKICAgc3JjOgogICAtIHNyYy9jcHAvZXh0L3Byb3RvX3NlcnZlcl9yZWZsZWN0aW9uLmNjCiAgIC0gc3JjL2NwcC9leHQvcHJvdG9fc2VydmVyX3JlZmxlY3Rpb25fcGx1Z2luLmNjCi0gIC0gc3JjL2NwcC9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmNjCi0gIC0gc3JjL2NwcC9leHQvcmVmbGVjdGlvbi5wYi5jYwogICBkZXBzOgogICAtIGdycGMrKwogICBmaWxlZ3JvdXBzOgotICAtIGdycGMrK19jb2RlZ2VuX3Byb3RvCisgIC0gZ3JwYysrX3JlZmxlY3Rpb25fcHJvdG8KKy0gbmFtZTogZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbgorICBidWlsZDogcHJpdmF0ZQorICBsYW5ndWFnZTogYysrCisgIHNyYzoKKyAgLSBzcmMvcHJvdG8vZ3JwYy9yZWZsZWN0aW9uL3YxYWxwaGEvcmVmbGVjdGlvbi5wcm90bwogLSBuYW1lOiBncnBjKytfdGVzdF9jb25maWcKICAgYnVpbGQ6IHByaXZhdGUKICAgbGFuZ3VhZ2U6IGMrKwpAQCAtMTI4NCw2ICsxMzA1LDE2IEBACiAgIC0gZ3JwYwogICAtIGdwcl90ZXN0X3V0aWwKICAgLSBncHIKKy0gbmFtZTogY2Vuc3VzX3Jlc291cmNlX3Rlc3QKKyAgYnVpbGQ6IHRlc3QKKyAgbGFuZ3VhZ2U6IGMKKyAgc3JjOgorICAtIHRlc3QvY29yZS9jZW5zdXMvcmVzb3VyY2VfdGVzdC5jCisgIGRlcHM6CisgIC0gZ3JwY190ZXN0X3V0aWwKKyAgLSBncnBjCisgIC0gZ3ByX3Rlc3RfdXRpbAorICAtIGdwcgogLSBuYW1lOiBjaGFubmVsX2NyZWF0ZV90ZXN0CiAgIGJ1aWxkOiB0ZXN0CiAgIGxhbmd1YWdlOiBjCkBAIC0yNzM5LDYgKzI3NzAsMjAgQEAKICAgLSBncnBjX3Rlc3RfdXRpbAogICAtIGdycGMrKwogICAtIGdycGMKKy0gbmFtZTogZ3JwY2xiX3Rlc3QKKyAgZ3Rlc3Q6IGZhbHNlCisgIGJ1aWxkOiB0ZXN0CisgIGxhbmd1YWdlOiBjKysKKyAgc3JjOgorICAtIHNyYy9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucHJvdG8KKyAgLSB0ZXN0L2NwcC9ncnBjbGIvZ3JwY2xiX3Rlc3QuY2MKKyAgZGVwczoKKyAgLSBncHIKKyAgLSBncHJfdGVzdF91dGlsCisgIC0gZ3JwYworICAtIGdycGMrKworICAtIGdycGMrK190ZXN0X3V0aWwKKyAgLSBncnBjX3Rlc3RfdXRpbAogLSBuYW1lOiBoeWJyaWRfZW5kMmVuZF90ZXN0CiAgIGd0ZXN0OiB0cnVlCiAgIGJ1aWxkOiB0ZXN0CkBAIC0zMzU5LDYgKzM0MDQsNyBAQAogICAtIHNyYy9waHAvZXh0L2dycGMvY2hhbm5lbC5oCiAgIC0gc3JjL3BocC9leHQvZ3JwYy9jaGFubmVsX2NyZWRlbnRpYWxzLmgKICAgLSBzcmMvcGhwL2V4dC9ncnBjL2NvbXBsZXRpb25fcXVldWUuaAorICAtIHNyYy9waHAvZXh0L2dycGMvcGhwN193cmFwcGVyLmgKICAgLSBzcmMvcGhwL2V4dC9ncnBjL3BocF9ncnBjLmgKICAgLSBzcmMvcGhwL2V4dC9ncnBjL3NlcnZlci5oCiAgIC0gc3JjL3BocC9leHQvZ3JwYy9zZXJ2ZXJfY3JlZGVudGlhbHMuaApkaWZmIC0tZ2l0IGEvY29uZmlnLm00IGIvY29uZmlnLm00CmluZGV4IGU0ZTQxMDguLjM0ZWVjYjggMTAwNjQ0Ci0tLSBhL2NvbmZpZy5tNAorKysgYi9jb25maWcubTQKQEAgLTI0Niw2ICsyNDYsNyBAQAogICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9pbnNlY3VyZS9zZXJ2ZXJfY2h0dHAyX3Bvc2l4LmMgXAogICAgIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jIFwKICAgICBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGVfcG9zaXguYyBcCisgICAgc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmMgXAogICAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmMgXAogICAgIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5jIFwKICAgICB0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfY29tbW9uLmMgXApAQCAtMjU3LDYgKzI1OCw3IEBACiAgICAgc3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMgXAogICAgIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jIFwKICAgICBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMgXAorICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYyBcCiAgICAgc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jIFwKQEAgLTI2Niw2ICsyNjgsNyBAQAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL29wZXJhdGlvbi5jIFwKICAgICBzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIFwKKyAgICBzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMgXAogICAgIHNyYy9jb3JlL2V4dC9jZW5zdXMvdHJhY2luZy5jIFwKICAgICBzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY19wbHVnaW5fcmVnaXN0cnkuYyBcCiAgICAgc3JjL2JvcmluZ3NzbC9lcnJfZGF0YS5jIFwKZGlmZiAtLWdpdCBhL2RvYy8uZ2l0aWdub3JlIGIvZG9jLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU0NjRkMwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMiBAQAorYnVpbGQvCitzcmMvCmRpZmYgLS1naXQgYS9ldGMvcm9vdHMucGVtIGIvZXRjL3Jvb3RzLnBlbQppbmRleCA3YjRkNWYxLi5lNmRmODhlIDEwMDY0NAotLS0gYS9ldGMvcm9vdHMucGVtCisrKyBiL2V0Yy9yb290cy5wZW0KQEAgLTIsMzMgKzIsNiBAQAogIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCiAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCiAKLSMgSXNzdWVyOiBPPUVxdWlmYXggT1U9RXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5Ci0jIFN1YmplY3Q6IE89RXF1aWZheCBPVT1FcXVpZmF4IFNlY3VyZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkKLSMgTGFiZWw6ICJFcXVpZmF4IFNlY3VyZSBDQSIKLSMgU2VyaWFsOiA5MDM4MDQxMTEKLSMgTUQ1IEZpbmdlcnByaW50OiA2NzpjYjo5ZDpjMDoxMzoyNDo4YTo4Mjo5YjpiMjoxNzoxZTpkMToxYjplYzpkNAotIyBTSEExIEZpbmdlcnByaW50OiBkMjozMjowOTphZDoyMzpkMzoxNDoyMzoyMTo3NDplNDowZDo3Zjo5ZDo2MjoxMzo5Nzo4Njo2MzozYQotIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDA4OjI5OjdhOjQwOjQ3OmRiOmEyOjM2OjgwOmM3OjMxOmRiOjZlOjMxOjc2OjUzOmNhOjc4OjQ4OmUxOmJlOmJkOjNhOjBiOjAxOjc5OmE3OjA3OmY5OjJjOmYxOjc4Ci0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSURJRENDQW9tZ0F3SUJBZ0lFTmQ3MHp6QU5CZ2txaGtpRzl3MEJBUVVGQURCT01Rc3dDUVlEVlFRR0V3SlYKLVV6RVFNQTRHQTFVRUNoTUhSWEYxYVdaaGVERXRNQ3NHQTFVRUN4TWtSWEYxYVdaaGVDQlRaV04xY21VZ1EyVnkKLWRHbG1hV05oZEdVZ1FYVjBhRzl5YVhSNU1CNFhEVGs0TURneU1qRTJOREUxTVZvWERURTRNRGd5TWpFMk5ERTEKLU1Wb3dUakVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05WQkFvVEIwVnhkV2xtWVhneExUQXJCZ05WQkFzVEpFVngKLWRXbG1ZWGdnVTJWamRYSmxJRU5sY25ScFptbGpZWFJsSUVGMWRHaHZjbWwwZVRDQm56QU5CZ2txaGtpRzl3MEIKLUFRRUZBQU9CalFBd2dZa0NnWUVBd1YyeFdHY0lZdTZnbWkwZkNHMlJGR2lZQ2g3KzJnUnZFNFJpSWNQUmZNNmYKLUJlQzRBZkJPTk96aWlwVUVaS3p4YTFOZkJiUExaNEMvUWdLTy90MEJDZXpoQUJSUC9QdndETjFEdWxzcjRSK0EKLWNKa1ZWNU1XOFErWGFyZkNhQ01jekUxWk1LeFJIanV2SzlidVkwVjd4ZGxmVU5MalVBODZpT2UvRlAzZ3g3a0MKLUF3RUFBYU9DQVFrd2dnRUZNSEFHQTFVZEh3UnBNR2N3WmFCam9HR2tYekJkTVFzd0NRWURWUVFHRXdKVlV6RVEKLU1BNEdBMVVFQ2hNSFJYRjFhV1poZURFdE1Dc0dBMVVFQ3hNa1JYRjFhV1poZUNCVFpXTjFjbVVnUTJWeWRHbG0KLWFXTmhkR1VnUVhWMGFHOXlhWFI1TVEwd0N3WURWUVFERXdSRFVrd3hNQm9HQTFVZEVBUVRNQkdCRHpJd01UZ3cKLU9ESXlNVFkwTVRVeFdqQUxCZ05WSFE4RUJBTUNBUVl3SHdZRFZSMGpCQmd3Rm9BVVNPWm8rU3ZTc3BYWFI5Z2oKLUlCQlBNNWlRbjlRd0hRWURWUjBPQkJZRUZFam1hUGtyMHJLVjEwZllJeUFRVHpPWWtKL1VNQXdHQTFVZEV3UUYKLU1BTUJBZjh3R2dZSktvWklodlo5QjBFQUJBMHdDeHNGVmpNdU1HTURBZ2JBTUEwR0NTcUdTSWIzRFFFQkJRVUEKLUE0R0JBRmpPS2VyODk5NjF6Z0s1RjdXRjBibmo0SlhNSlRFTkFLYVNibisya21PZVVKWFJtbS9rRWQ1amhXNlkKLTdxai9Xc2pUVmJKbWNWZmV3Q0hyUFNxbkkwa0JCSVpDZS96dWY2SVdVclZuWjlOQTJ6c21XTElvZHoydUZIZGgKLTF2b3FaaWVnRGZxbmMxenFjUEdVSVdWRVgvcjg3eWxvcWFLSGVlOTU3MCtzQjNjNAotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotCiAjIElzc3VlcjogQ049R2xvYmFsU2lnbiBSb290IENBIE89R2xvYmFsU2lnbiBudi1zYSBPVT1Sb290IENBCiAjIFN1YmplY3Q6IENOPUdsb2JhbFNpZ24gUm9vdCBDQSBPPUdsb2JhbFNpZ24gbnYtc2EgT1U9Um9vdCBDQQogIyBMYWJlbDogIkdsb2JhbFNpZ24gUm9vdCBDQSIKQEAgLTEyMCwzOCArOTMsNiBAQAogVHh6aFQ1eXZEd3lkOTNnTjJQUTFWb0RhdDIwWGo1MGVnV1RoL3NWRnVxMXJ1UXA2VGs5TGhPNUw4WDNkRVE9PQogLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQogCi0jIElzc3VlcjogQ049VmVyaVNpZ24gQ2xhc3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczIE89VmVyaVNpZ24sIEluYy4gT1U9VmVyaVNpZ24gVHJ1c3QgTmV0d29yay8oYykgMTk5OSBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5Ci0jIFN1YmplY3Q6IENOPVZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMyBPPVZlcmlTaWduLCBJbmMuIE9VPVZlcmlTaWduIFRydXN0IE5ldHdvcmsvKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seQotIyBMYWJlbDogIlZlcmlzaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMyIKLSMgU2VyaWFsOiAzMTQ1MzE5NzI3MTE5MDk0MTM3NDMwNzUwOTYwMzkzNzg5MzU1MTEKLSMgTUQ1IEZpbmdlcnByaW50OiBkYjpjODpmMjoyNzoyZTpiMTplYTo2YToyOToyMzo1ZDpmZTo1NjozZTozMzpkZgotIyBTSEExIEZpbmdlcnByaW50OiBjODplYzo4Yzo4Nzo5Mjo2OTpjYjo0YjphYjozOTplOTo4ZDo3ZTo1Nzo2NzpmMzoxNDo5NTo3Mzo5ZAotIyBTSEEyNTYgRmluZ2VycHJpbnQ6IGUzOjg5OjM2OjBkOjBmOmRiOmFlOmIzOmQyOjUwOjU4OjRiOjQ3OjMwOjMxOjRlOjIyOjJmOjM5OmMxOjU2OmEwOjIwOjE0OjRlOjhkOjk2OjA1OjYxOjc5OjE1OjA2Ci0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUVHakNDQXdJQ0VRRHNvS2VMYm5WcUFjL0VmTXd2bEY3WE1BMEdDU3FHU0liM0RRRUJCUVVBTUlIS01Rc3cKLUNRWURWUVFHRXdKVlV6RVhNQlVHQTFVRUNoTU9WbVZ5YVZOcFoyNHNJRWx1WXk0eEh6QWRCZ05WQkFzVEZsWmwKLWNtbFRhV2R1SUZSeWRYTjBJRTVsZEhkdmNtc3hPakE0QmdOVkJBc1RNU2hqS1NBeE9UazVJRlpsY21sVGFXZHUKLUxDQkpibU11SUMwZ1JtOXlJR0YxZEdodmNtbDZaV1FnZFhObElHOXViSGt4UlRCREJnTlZCQU1UUEZabGNtbFQKLWFXZHVJRU5zWVhOeklEUWdVSFZpYkdsaklGQnlhVzFoY25rZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnAKLWRIa2dMU0JITXpBZUZ3MDVPVEV3TURFd01EQXdNREJhRncwek5qQTNNVFl5TXpVNU5UbGFNSUhLTVFzd0NRWUQKLVZRUUdFd0pWVXpFWE1CVUdBMVVFQ2hNT1ZtVnlhVk5wWjI0c0lFbHVZeTR4SHpBZEJnTlZCQXNURmxabGNtbFQKLWFXZHVJRlJ5ZFhOMElFNWxkSGR2Y21zeE9qQTRCZ05WQkFzVE1TaGpLU0F4T1RrNUlGWmxjbWxUYVdkdUxDQkoKLWJtTXVJQzBnUm05eUlHRjFkR2h2Y21sNlpXUWdkWE5sSUc5dWJIa3hSVEJEQmdOVkJBTVRQRlpsY21sVGFXZHUKLUlFTnNZWE56SURRZ1VIVmliR2xqSUZCeWFXMWhjbmtnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa2cKLUxTQkhNekNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLM0xwUkZweGxtcjhZKzEKLUdROVd6c3kxSHlEa25pWWxTK0J6WllsWjN0Q0Q1UFVQdGJ1dDhYem9JZnprNkF6dWZFVWlHWGFTdEJPM0lGc0oKLSttR3VxUEtsallYQ0t0YmVaamJTbXdMMHFKSmdmSnhwdEk4a0h0Q0dVdll5bkVGWUhpSzl6VVZpbFFodTBHYmQKLVU2TE04QkRjVkhPTEJLRkdNek5jRjBDNW5rM1Q4NzVWZytpeGlZNWFmSnFXSXBBN2lDWHkwbE9JQWd3TGVQTG0KLU54ZExNRVlINUlCdHB0aVdMdWdzK0JHek9BMW1wcHZxeVNOYjI0N2k4eE9PR2xrdHFnTHc3S1NIWnR6QlAvWFkKLXVmVHNnc2JTUFpVZDVjQlBoTW5abzBRb0JtclhSYXp3YTJydlRsLzRFWUllT0dNMFpsRFVQcE56K2pERFpxMy8KLWt5Mlg3d01DQXdFQUFUQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFqL29sYTA5YjVLUk9KMVdySWhWWlBNcTEKLUN0UksyNnZkb1Y5VHhhQlhPY0xPUnl1K09zaFd2OExaSnhBNnNRVTh3SGN4dXpyVEJYdHRtaHd3aklETGs1TXEKLWc2c0ZVWUlDQUJGbmEvT0lZVWRmQTVQVld3M2c4ZFNoTWpXRnNqcmJzSUtyMGNzS3ZFK01XOFZMQURzZktvS20KLWZqYUYzSDQ4WndDMTVEdFM0S2pyWFJYNXhtM3dyUjBPaGJlcG1uTVVXbHVQUVNqQTFlZ3RUYVJlemFyWjdjN2MKLTJOVThRaDBYd1JKZFJUakRPUFA4aFM2RFJraXkxeUJma2phUDUza1BtRjZaNlBEUXBMdjFVNzBxemxtd3IyNS8KLWJMdlNIZ0N3SWUzNFFXS0N1ZGl5eEx0R1VQTXh4WThCcUhUcjlYZ24ydWYzWmtQem5vTStJS3JETldDUnpnPT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLQogIyBJc3N1ZXI6IENOPUVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KSBPPUVudHJ1c3QubmV0IE9VPXd3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikvKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZAogIyBTdWJqZWN0OiBDTj1FbnRydXN0Lm5ldCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAoMjA0OCkgTz1FbnRydXN0Lm5ldCBPVT13d3cuZW50cnVzdC5uZXQvQ1BTXzIwNDggaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pLyhjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQKICMgTGFiZWw6ICJFbnRydXN0Lm5ldCBQcmVtaXVtIDIwNDggU2VjdXJlIFNlcnZlciBDQSIKQEAgLTIxNCwzMCArMTU1LDYgQEAKIFI5STRMdEQrZ2R3eWFoNjE3anpWL09lQkhSbkRKRUxxWXptcAogLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQogCi0jIElzc3VlcjogQ049RXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xIE89RXF1aWZheCBTZWN1cmUgSW5jLgotIyBTdWJqZWN0OiBDTj1FcXVpZmF4IFNlY3VyZSBHbG9iYWwgZUJ1c2luZXNzIENBLTEgTz1FcXVpZmF4IFNlY3VyZSBJbmMuCi0jIExhYmVsOiAiRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQSIKLSMgU2VyaWFsOiAxCi0jIE1ENSBGaW5nZXJwcmludDogOGY6NWQ6Nzc6MDY6Mjc6YzQ6OTg6M2M6NWI6OTM6Nzg6ZTc6ZDc6N2Q6OWI6Y2MKLSMgU0hBMSBGaW5nZXJwcmludDogN2U6Nzg6NGE6MTA6MWM6ODI6NjU6Y2M6MmQ6ZTE6ZjE6NmQ6NDc6YjQ6NDA6Y2E6ZDk6MGE6MTk6NDUKLSMgU0hBMjU2IEZpbmdlcnByaW50OiA1ZjowYjo2MjplYTpiNTplMzo1MzplYTo2NToyMTo2NToxNjo1ODpmYjpiNjo1Mzo1OTpmNDo0MzoyODowYTo0YTpmYjpkMTowNDpkNzo3ZDoxMDpmOTpmMDo0YzowNwotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDa0RDQ0FmbWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVFGQURCYU1Rc3dDUVlEVlFRR0V3SlZVekVjCi1NQm9HQTFVRUNoTVRSWEYxYVdaaGVDQlRaV04xY21VZ1NXNWpMakV0TUNzR0ExVUVBeE1rUlhGMWFXWmhlQ0JUCi1aV04xY21VZ1IyeHZZbUZzSUdWQ2RYTnBibVZ6Y3lCRFFTMHhNQjRYRFRrNU1EWXlNVEEwTURBd01Gb1hEVEl3Ci1NRFl5TVRBME1EQXdNRm93V2pFTE1Ba0dBMVVFQmhNQ1ZWTXhIREFhQmdOVkJBb1RFMFZ4ZFdsbVlYZ2dVMlZqCi1kWEpsSUVsdVl5NHhMVEFyQmdOVkJBTVRKRVZ4ZFdsbVlYZ2dVMlZqZFhKbElFZHNiMkpoYkNCbFFuVnphVzVsCi1jM01nUTBFdE1UQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUF1dWNYa0FKbHNUUlZQRW5DCi1VZFhmcDlFM2o5SG5nWE5CVW1DYm5hRVhKbml0eDdIb0pwUXl0ZDR6alRvdjIvS2FlbHB6bUtOYzZmdUtjeHRjCi01OE8vZ0d6TnFmVFdLOEQzK1ptcVk2S3hSd0lQMU9SUk9oSThiSXBhVklSdzI4SEZrTTl5UmN1b1djRE5NNTAvCi1vNWJyaFRNaEhENGVQbUJ1ZHB4bmhjWEl3MkVDQXdFQUFhTm1NR1F3RVFZSllJWklBWWI0UWdFQkJBUURBZ0FICi1NQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdId1lEVlIwakJCZ3dGb0FVdnFpZ2RISlFhMFMzeVNQWSs2ai9zMWRyCi1hR3d3SFFZRFZSME9CQllFRkw2b29IUnlVR3RFdDhrajJQdW8vN05YYTJoc01BMEdDU3FHU0liM0RRRUJCQVVBCi1BNEdCQUREaUFWR3F4K3BmMnJuUVpROHcxajdhRFJSSmJwR1RKeFF4NzhUM0xVWDQ3TWUvb2tFTkk3U1MrUmtBCi1aNzBCcjgzZ2NmeGF6MlRFNEphWTBLTkE0Z0dLN3ljSDhXVUJpa1F0Qm1WMVVzQ0dFQ0FoWDJ4ckQyeXVDUnl2Ci04cUlZTk1SMXBITWM4WTNjNzYzNXMzYTBrci9jbFJBZXZzdklPMXFFWUJsV2xLbFYKLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLQogIyBJc3N1ZXI6IENOPUFkZFRydXN0IENsYXNzIDEgQ0EgUm9vdCBPPUFkZFRydXN0IEFCIE9VPUFkZFRydXN0IFRUUCBOZXR3b3JrCiAjIFN1YmplY3Q6IENOPUFkZFRydXN0IENsYXNzIDEgQ0EgUm9vdCBPPUFkZFRydXN0IEFCIE9VPUFkZFRydXN0IFRUUCBOZXR3b3JrCiAjIExhYmVsOiAiQWRkVHJ1c3QgTG93LVZhbHVlIFNlcnZpY2VzIFJvb3QiCkBAIC05MDcsNzAgKzgyNCw2IEBACiBaclVZckFxbVZDWTBNOUlid2RSL0dqcU9DNm95YnR2OFR5V2YyVExIbGxwd3JOOU0KIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KIAotIyBJc3N1ZXI6IENOPVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENBIE89U3RhYXQgZGVyIE5lZGVybGFuZGVuCi0jIFN1YmplY3Q6IENOPVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENBIE89U3RhYXQgZGVyIE5lZGVybGFuZGVuCi0jIExhYmVsOiAiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJvb3QgQ0EiCi0jIFNlcmlhbDogMTAwMDAwMTAKLSMgTUQ1IEZpbmdlcnByaW50OiA2MDo4NDo3Yzo1YTpjZTpkYjowYzpkNDpjYjphNzplOTpmZTowMjpjNjphOTpjMAotIyBTSEExIEZpbmdlcnByaW50OiAxMDoxZDpmYTozZjpkNTowYjpjYjpiYjo5YjpiNTo2MDowYzoxOTo1NTphNDoxYTpmNDo3MzozYTowNAotIyBTSEEyNTYgRmluZ2VycHJpbnQ6IGQ0OjFkOjgyOjllOjhjOjE2OjU5OjgyOjJhOmY5OjNmOmNlOjYyOmJmOmZjOmRlOjI2OjRmOmM4OjRlOjhiOjk1OjBjOjVmOmYyOjc1OmQwOjUyOjM1OjQ2Ojk1OmEzCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUR1akNDQXFLZ0F3SUJBZ0lFQUppV2lqQU5CZ2txaGtpRzl3MEJBUVVGQURCVk1Rc3dDUVlEVlFRR0V3Sk8KLVRERWVNQndHQTFVRUNoTVZVM1JoWVhRZ1pHVnlJRTVsWkdWeWJHRnVaR1Z1TVNZd0pBWURWUVFERXgxVGRHRmgKLWRDQmtaWElnVG1Wa1pYSnNZVzVrWlc0Z1VtOXZkQ0JEUVRBZUZ3MHdNakV5TVRjd09USXpORGxhRncweE5URXkKLU1UWXdPVEUxTXpoYU1GVXhDekFKQmdOVkJBWVRBazVNTVI0d0hBWURWUVFLRXhWVGRHRmhkQ0JrWlhJZ1RtVmsKLVpYSnNZVzVrWlc0eEpqQWtCZ05WQkFNVEhWTjBZV0YwSUdSbGNpQk9aV1JsY214aGJtUmxiaUJTYjI5MElFTkIKLU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbU5LMVVSRjZnYVlVbUhGdHZzem4KLUV4dldKdzU2czJvWUhMWmhXdFZoQ2IvZWtCUEhaKzdkODlyRkRCS2VOVlUrTENlSVFHdjMzTjBpWWZYQ3h3NzEKLTl0VjJVMDJQakx3WWRqZUZuZWpLU2NmU1Q1Z1RDYUkrSW9pY2Y5YnlFR1cwN2w4WTFSZmorTVg5NHAyaTcxTU8KLWhYZWlEK0V3Uis0QTV6TjlSR2NhQzFIb2k2Q2VVSmhvTkZJZkxtMEI4bUJGOGpIcnFURm9LYnQ2UVo3R0dYK1UKLXRGRTVBMyt5M3FjeW03UkhqbSswU3E3bHI3SGNzQnRodkpseTN1U0p0M29tWGRvelNWdFNuQTcxaXEzRHVEM28KLUJtckMxU29MYkh1RXZWWUZ5NFpsa3V4RUs3Q091ZHh3QzBiYXJieGppRG42MjJyK0kvcTg1RWowWnl0cUVSQWgKLVNRSURBUUFCbzRHUk1JR09NQXdHQTFVZEV3UUZNQU1CQWY4d1R3WURWUjBnQkVnd1JqQkVCZ1JWSFNBQU1Ed3cKLU9nWUlLd1lCQlFVSEFnRVdMbWgwZEhBNkx5OTNkM2N1Y0d0cGIzWmxjbWhsYVdRdWJtd3ZjRzlzYVdOcFpYTXYKLWNtOXZkQzF3YjJ4cFkza3dEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCU29mZXU4WTZSMEUzUUEKLTdKYmcwelRCTEw5cytEQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFCWVNIVlhRMlljRzcwZFRHRmFnVHRKK2sKLS9ydnVGYlF2Qmd3cDhxaVNwR0VOL0t0Y0NGdFJFeXROd2lwaHlQZ0pXUHd0QXJJNWZabG1nYjl1WEpWRklHem0KLWVhZlIyQndwL01JZ0oxSEk4WHhkTkdkcGhSRXd4Z0RTMS9QVGZMYndNVmNvRW9KejZUTXZwbFcwQzVHVVI1ejYKLXUzcENNdWl1ZmkzSXZLd1V2OWtQMlZ2OHdmbDZsZUY5ZnBiOGNiRENUTWpmUlRUSnpnM3luR1FJMER2REtjV3kKLTdaQUV3YkVwa2NVd2I4R3BjalBNL2wwV0Z5d1JhZWQrL3NXRENOKzgzQ0k2TGlCcEl6bFdZR2VRaXk1Mk9mc1IKLWlKZjJmTDFMdUNBV1p3V040anZCY2orVWxUZkhYYm1lMkpPaEY0Ly9ER1lWd1NSOE1ud0RIVHVoV0VVeWt3PT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLQotIyBJc3N1ZXI6IENOPVVUTiAtIERBVEFDb3JwIFNHQyBPPVRoZSBVU0VSVFJVU1QgTmV0d29yayBPVT1odHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20KLSMgU3ViamVjdDogQ049VVROIC0gREFUQUNvcnAgU0dDIE89VGhlIFVTRVJUUlVTVCBOZXR3b3JrIE9VPWh0dHA6Ly93d3cudXNlcnRydXN0LmNvbQotIyBMYWJlbDogIlVUTiBEQVRBQ29ycCBTR0MgUm9vdCBDQSIKLSMgU2VyaWFsOiA5MTM3NDI5NDU0Mjg4NDY4OTg1NTE2NzU3NzY4MDI0MTA3NzYwOQotIyBNRDUgRmluZ2VycHJpbnQ6IGIzOmE1OjNlOjc3OjIxOjZkOmFjOjRhOmMwOmM5OmZiOmQ1OjQxOjNkOmNhOjA2Ci0jIFNIQTEgRmluZ2VycHJpbnQ6IDU4OjExOjlmOjBlOjEyOjgyOjg3OmVhOjUwOmZkOmQ5Ojg3OjQ1OjZmOjRmOjc4OmRjOmZhOmQ2OmQ0Ci0jIFNIQTI1NiBGaW5nZXJwcmludDogODU6ZmI6MmY6OTE6ZGQ6MTI6Mjc6NWE6MDE6NDU6YjY6MzY6NTM6NGY6ODQ6MDI6NGE6ZDY6OGI6Njk6Yjg6ZWU6ODg6Njg6NGY6Zjc6MTE6Mzc6NTg6MDU6YjM6NDgKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJRVhqQ0NBMGFnQXdJQkFnSVFSTDRNaTFBQUliUVIweXBvQnFtdGFUQU5CZ2txaGtpRzl3MEJBUVVGQURDQgota3pFTE1Ba0dBMVVFQmhNQ1ZWTXhDekFKQmdOVkJBZ1RBbFZVTVJjd0ZRWURWUVFIRXc1VFlXeDBJRXhoYTJVZwotUTJsMGVURWVNQndHQTFVRUNoTVZWR2hsSUZWVFJWSlVVbFZUVkNCT1pYUjNiM0pyTVNFd0h3WURWUVFMRXhobwotZEhSd09pOHZkM2QzTG5WelpYSjBjblZ6ZEM1amIyMHhHekFaQmdOVkJBTVRFbFZVVGlBdElFUkJWRUZEYjNKdwotSUZOSFF6QWVGdzA1T1RBMk1qUXhPRFUzTWpGYUZ3MHhPVEEyTWpReE9UQTJNekJhTUlHVE1Rc3dDUVlEVlFRRwotRXdKVlV6RUxNQWtHQTFVRUNCTUNWVlF4RnpBVkJnTlZCQWNURGxOaGJIUWdUR0ZyWlNCRGFYUjVNUjR3SEFZRAotVlFRS0V4VlVhR1VnVlZORlVsUlNWVk5VSUU1bGRIZHZjbXN4SVRBZkJnTlZCQXNUR0doMGRIQTZMeTkzZDNjdQotZFhObGNuUnlkWE4wTG1OdmJURWJNQmtHQTFVRUF4TVNWVlJPSUMwZ1JFRlVRVU52Y25BZ1UwZERNSUlCSWpBTgotQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMys1WUVLSXJibFhFanI4dVJnbm40QWdQTGl0NgotRTVRYnZmYTJnSTVsQlpNQUhyeXY0ZytPR1EwU1IreXNyYVA2TG5ENDNtNzdWa0lWbmk1Yzd5UGVJYmtGZGljWgotRDAvV3c1eTB2cFFaWS9LbUVRcnJVMGljdnZJcE94Ym9HcUJNcHNuMEdGbG93SER5VXdEQVhsQ0NwVlp2TnZsSwotNEVTR29FMU8xa2R1U1VyTFo5ZW14QVc1amg3MC9QL041emJnbkFWc3NqTWlGZEMwNE13WHdMTEE5UDR5UHlrcQotbFh2WThxZE9EMVI4b1EyQXN3a0R3ZjljM1Y2YVByeXV2RWVLYXE1eHloK3hLcmhmUWdVTDdFWXcwWElMeXVsVwotYmZYdjMzaStZYnF5cGE0RVRMeW9yR2tWbDczdjY3U012elg0MU1QUktBNWNPcDl3R0RNZ2Q4U2lyd0lEQVFBQgotbzRHck1JR29NQXNHQTFVZER3UUVBd0lCeGpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSVAotTXRHenozLzY0UEdnWFlWT2t0S2VSUjIwVHpBOUJnTlZIUjhFTmpBME1ES2dNS0F1aGl4b2RIUndPaTh2WTNKcwotTG5WelpYSjBjblZ6ZEM1amIyMHZWVlJPTFVSQlZFRkRiM0p3VTBkRExtTnliREFxQmdOVkhTVUVJekFoQmdncgotQmdFRkJRY0RBUVlLS3dZQkJBR0NOd29EQXdZSllJWklBWWI0UWdRQk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQgotQVFBbk5aY0Fpb3NvdmNZek1CNHAvT0wzMVpqVVFMdGd5cityRnl3Sk5uOVEra0hjcnBZNkNpTStpVm5Kb3dmdAotR3pldC9IeStVVWxhM2pvS1ZBZ1dSY0tac1lmTmpHamdhUVBweEU2WXNqdU1Gck1Pb0F5WVVKdVRxWEFKeUN5agotajk4QzVPQnhPdkcwSTNLZ3FnSGYzNWcrRkZDZ01TYTlLT2xhTUNaMStYdGdISTN6elZBbWJRUW5tdC9WRFVWSAotS1dzczVuYlpxU2w5TXQzSk5qeTlyalh4RVo0ZHU1QS9Fa2RPanRkK0QySnpIVkltT0J3WVNmMHdkSnJFNVNJdgotMk1DTjdaRjZUQUNQY245ZDJ0MGJpMFZyNTkxcGw2akZWa3dQRFBhZmVwRTM5cGVDNE4xeGFmOTJQMkJOUE0vMwotbWZuR1YvVEpWVGw0dWl4NXlhYUlLL1FJCi0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0KICMgSXNzdWVyOiBDTj1VVE4tVVNFUkZpcnN0LUhhcmR3YXJlIE89VGhlIFVTRVJUUlVTVCBOZXR3b3JrIE9VPWh0dHA6Ly93d3cudXNlcnRydXN0LmNvbQogIyBTdWJqZWN0OiBDTj1VVE4tVVNFUkZpcnN0LUhhcmR3YXJlIE89VGhlIFVTRVJUUlVTVCBOZXR3b3JrIE9VPWh0dHA6Ly93d3cudXNlcnRydXN0LmNvbQogIyBMYWJlbDogIlVUTiBVU0VSRmlyc3QgSGFyZHdhcmUgUm9vdCBDQSIKQEAgLTEwNzcsNTEgKzkzMCw2IEBACiBBWW9GV3BPK29jSC8rT2NPWjZSSFNYWmRkWkFhOVNhUDhBPT0KIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KIAotIyBJc3N1ZXI6IENOPU5ldExvY2sgS296amVneXpvaSAoQ2xhc3MgQSkgVGFudXNpdHZhbnlraWFkbyBPPU5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0LiBPVT1UYW51c2l0dmFueWtpYWRvawotIyBTdWJqZWN0OiBDTj1OZXRMb2NrIEtvemplZ3l6b2kgKENsYXNzIEEpIFRhbnVzaXR2YW55a2lhZG8gTz1OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4gT1U9VGFudXNpdHZhbnlraWFkb2sKLSMgTGFiZWw6ICJOZXRMb2NrIE5vdGFyeSAoQ2xhc3MgQSkgUm9vdCIKLSMgU2VyaWFsOiAyNTkKLSMgTUQ1IEZpbmdlcnByaW50OiA4NjozODo2ZDo1ZTo0OTo2Mzo2Yzo4NTo1YzpkYjo2ZDpkYzo5NDpiNzpkMDpmNwotIyBTSEExIEZpbmdlcnByaW50OiBhYzplZDo1Zjo2NTo1MzpmZDoyNTpjZTowMTo1ZjoxZjo3YTo0ODozYjo2YTo3NDo5Zjo2MTo3ODpjNgotIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDdmOjEyOmNkOjVmOjdlOjVlOjI5OjBlOmM3OmQ4OjUxOjc5OmQ1OmI3OjJjOjIwOmE1OmJlOjc1OjA4OmZmOmRiOjViOmY4OjFhOmI5OjY4OjRhOjdmOmM5OmY2OjY3Ci0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUdmVENDQldXZ0F3SUJBZ0lDQVFNd0RRWUpLb1pJaHZjTkFRRUVCUUF3Z2E4eEN6QUpCZ05WQkFZVEFraFYKLU1SQXdEZ1lEVlFRSUV3ZElkVzVuWVhKNU1SRXdEd1lEVlFRSEV3aENkV1JoY0dWemRERW5NQ1VHQTFVRUNoTWUKLVRtVjBURzlqYXlCSVlXeHZlbUYwWW1sNmRHOXVjMkZuYVNCTFpuUXVNUm93R0FZRFZRUUxFeEZVWVc1MWMybDAKLWRtRnVlV3RwWVdSdmF6RTJNRFFHQTFVRUF4TXRUbVYwVEc5amF5QkxiM3BxWldkNWVtOXBJQ2hEYkdGemN5QkIKLUtTQlVZVzUxYzJsMGRtRnVlV3RwWVdSdk1CNFhEVGs1TURJeU5ESXpNVFEwTjFvWERURTVNREl4T1RJek1UUTAKLU4xb3dnYTh4Q3pBSkJnTlZCQVlUQWtoVk1SQXdEZ1lEVlFRSUV3ZElkVzVuWVhKNU1SRXdEd1lEVlFRSEV3aEMKLWRXUmhjR1Z6ZERFbk1DVUdBMVVFQ2hNZVRtVjBURzlqYXlCSVlXeHZlbUYwWW1sNmRHOXVjMkZuYVNCTFpuUXUKLU1Sb3dHQVlEVlFRTEV4RlVZVzUxYzJsMGRtRnVlV3RwWVdSdmF6RTJNRFFHQTFVRUF4TXRUbVYwVEc5amF5QkwKLWIzcHFaV2Q1ZW05cElDaERiR0Z6Y3lCQktTQlVZVzUxYzJsMGRtRnVlV3RwWVdSdk1JSUJJakFOQmdrcWhraUcKLTl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2SFNNRDd0TTlEY2VxUVdDMk9iaGJIRHFlTFZ1MFRoRURhaUQKLXpsM1MxdFdCeGRSTDUxdVVjQ2JiTzUxcVRHTDNjZk5rMW1FN1BldHpvemZaeitxTWtqdk45d2ZjWm5TWDlFVWkKLTNmUmM0TDl0ODc1bE0rUVZPci9ibUpCVk9NVHRwbFZqQzdCNEJQVGpic0UvanZ4UmVCK1Nub1BDL3Rtd3FjbTgKLVdnRC9xYWlZZFB2MkxENFZPUTIyQkZXb0RwZ2dRck94SmExK21tOWRVN0dyRFB6cjRQTjZzNml6LzBiMlk2TFkKLU9waDd0cXlGLzdBbFQzUmo1eE1IcFFxUEJmZkFaRzkrcHllQWx0N1VMb1pneDJzclhuTjdGK2VSUDJRTTJFc2kKLU5DdWJNdkpJSDUraENvUjY0c0t0bHoyTzFjSDVWcU5RNmNhMCtwaWk3cFhtS2dPTTN3SURBUUFCbzRJQ256Q0MKLUFwc3dEZ1lEVlIwUEFRSC9CQVFEQWdBR01CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FRUXdFUVlKWUlaSUFZYjQKLVFnRUJCQVFEQWdBSE1JSUNZQVlKWUlaSUFZYjRRZ0VOQklJQ1VSYUNBazFHU1VkWlJVeEZUU0VnUlhwbGJpQjAKLVlXNTFjMmwwZG1GdWVTQmhJRTVsZEV4dlkyc2dTMlowTGlCQmJIUmhiR0Z1YjNNZ1UzcHZiR2RoYkhSaGRHRnoKLWFTQkdaV3gwWlhSbGJHVnBZbVZ1SUd4bGFYSjBJR1ZzYW1GeVlYTnZheUJoYkdGd2FtRnVJR3RsYzNwMWJIUXUKLUlFRWdhR2wwWld4bGMybDBaWE1nWm05c2VXRnRZWFJoZENCaElFNWxkRXh2WTJzZ1MyWjBMaUIwWlhKdFpXdG0KLVpXeGxiRzl6YzJWbkxXSnBlblJ2YzJsMFlYTmhJSFpsWkdrdUlFRWdaR2xuYVhSaGJHbHpJR0ZzWVdseVlYTWcKLVpXeG1iMmRoWkdGellXNWhheUJtWld4MFpYUmxiR1VnWVhvZ1pXeHZhWEowSUdWc2JHVnViM0o2WlhOcElHVnMKLWFtRnlZWE1nYldWbmRHVjBaV3hsTGlCQmVpQmxiR3BoY21GeklHeGxhWEpoYzJFZ2JXVm5kR0ZzWVd4b1lYUnYKLUlHRWdUbVYwVEc5amF5QkxablF1SUVsdWRHVnlibVYwSUdodmJteGhjR3BoYmlCaElHaDBkSEJ6T2k4dmQzZDMKLUxtNWxkR3h2WTJzdWJtVjBMMlJ2WTNNZ1kybHRaVzRnZG1GbmVTQnJaWEpvWlhSdklHRjZJR1ZzYkdWdWIzSjYKLVpYTkFibVYwYkc5amF5NXVaWFFnWlMxdFlXbHNJR05wYldWdUxpQkpUVkJQVWxSQlRsUWhJRlJvWlNCcGMzTjEKLVlXNWpaU0JoYm1RZ2RHaGxJSFZ6WlNCdlppQjBhR2x6SUdObGNuUnBabWxqWVhSbElHbHpJSE4xWW1wbFkzUWcKLWRHOGdkR2hsSUU1bGRFeHZZMnNnUTFCVElHRjJZV2xzWVdKc1pTQmhkQ0JvZEhSd2N6b3ZMM2QzZHk1dVpYUnMKLWIyTnJMbTVsZEM5a2IyTnpJRzl5SUdKNUlHVXRiV0ZwYkNCaGRDQmpjSE5BYm1WMGJHOWpheTV1WlhRdU1BMEcKLUNTcUdTSWIzRFFFQkJBVUFBNElCQVFCSUpFYjN1bFp2K3Nnb0EwQk81VEU1YXlaclUzL2IzOS96Y1QwbXdCUU8KLXhtZDdJNmdNYzkwQnU4YktiamM1VmRYSGpGWWdEaWdLRHRJcXBMQkpVc1k0Qi82K0NnbU0wWmpQeXRvVU1hRlAKLTBqbjhEeEVzUThQZHE1UEhWVDVIZkJnYUFOenplOWp5ZjFKc0lQUUxYMmxTOU83NHNpbGc2K05KTVNFTjFyVVEKLVFlSkJDV3ppR3BwV1MzY0M5cUNibWllSDZGVXBjY0tRbjBWNEd1RVZaRDNRRHRpZ2RwK3V4ZEF1NnRZUFZ1eGsKLWYxcWJGRmdCSjM0VFVNZHJLdVpvUEw5Y29Bb2I0UTU2NmVLQXcrbnA5djFzRVo3UTVTZ25LMVF5UWhTQ2RlWksKLThDdG1kV09Nb3ZzRVBvTU9temJ3R09RbUlNT004Q2dIclR3WFpvaTEvYmFJCi0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0KICMgSXNzdWVyOiBDTj1YUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgTz1YUmFtcCBTZWN1cml0eSBTZXJ2aWNlcyBJbmMgT1U9d3d3LnhyYW1wc2VjdXJpdHkuY29tCiAjIFN1YmplY3Q6IENOPVhSYW1wIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBPPVhSYW1wIFNlY3VyaXR5IFNlcnZpY2VzIEluYyBPVT13d3cueHJhbXBzZWN1cml0eS5jb20KICMgTGFiZWw6ICJYUmFtcCBHbG9iYWwgQ0EgUm9vdCIKQEAgLTE1MzQsNzEgKzEzNDIsNiBAQAogOXc0TFRKeG9lSHR4TWNmckh1Qm5RZk8zb0tmTjVYb3pObXI2bWlzPQogLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQogCi0jIElzc3VlcjogQ049VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIE89KGMpIDIwMDUgVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4KLSMgU3ViamVjdDogQ049VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIE89KGMpIDIwMDUgVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4KLSMgTGFiZWw6ICJUVVJLVFJVU1QgQ2VydGlmaWNhdGUgU2VydmljZXMgUHJvdmlkZXIgUm9vdCAxIgotIyBTZXJpYWw6IDEKLSMgTUQ1IEZpbmdlcnByaW50OiBmMTo2YToyMjoxODpjOTpjZDpkZjpjZTo4MjoxZDoxZDpiNzo3ODo1YzphOTphNQotIyBTSEExIEZpbmdlcnByaW50OiA3OTo5ODphMzowODplMTo0ZDo2NTo4NTplNjpjMjoxZToxNTozYTo3MTo5ZjpiYTo1YTpkMzo0YTpkOQotIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDQ0OjA0OmUzOjNiOjVlOjE0OjBkOmNmOjk5OjgwOjUxOmZkOmZjOjgwOjI4OmM3OmM4OjE2OjE1OmM1OmVlOjczOjdiOjExOjFiOjU4OjgyOjMzOmE5OmI1OjM1OmEwCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUQrekNDQXVPZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBRENCdHpFL01EMEdBMVVFQXd3MlZNT2MKLVVrdFVVbFZUVkNCRmJHVnJkSEp2Ym1scklGTmxjblJwWm1scllTQklhWHB0WlhRZ1UySEVuMnhoZWNTeFk4U3gKLWM4U3hNUXN3Q1FZRFZRUUdEQUpVVWpFUE1BMEdBMVVFQnd3R1FVNUxRVkpCTVZZd1ZBWURWUVFLREUwb1l5a2cKLU1qQXdOU0JVdzV4U1MxUlNWVk5VSUVKcGJHZHBJTVN3YkdWMGFjV2ZhVzBnZG1VZ1FtbHNhY1dmYVcwZ1I4TzgKLWRtVnViR25FbjJrZ1NHbDZiV1YwYkdWeWFTQkJMc1dlTGpBZUZ3MHdOVEExTVRNeE1ESTNNVGRhRncweE5UQXoKLU1qSXhNREkzTVRkYU1JRzNNVDh3UFFZRFZRUURERFpVdzV4U1MxUlNWVk5VSUVWc1pXdDBjbTl1YVdzZ1UyVnkKLWRHbG1hV3RoSUVocGVtMWxkQ0JUWWNTZmJHRjV4TEZqeExGenhMRXhDekFKQmdOVkJBWU1BbFJTTVE4d0RRWUQKLVZRUUhEQVpCVGt0QlVrRXhWakJVQmdOVkJBb01UU2hqS1NBeU1EQTFJRlREbkZKTFZGSlZVMVFnUW1sc1oya2cKLXhMQnNaWFJweFo5cGJTQjJaU0JDYVd4cHhaOXBiU0JIdzd4MlpXNXNhY1NmYVNCSWFYcHRaWFJzWlhKcElFRXUKLXhaNHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXlsSUYxbU1EMkJ4ZjNkSjcKLVhmSU1ZR0ZiYXp0MEszZ05mVVc5SW5Ub2pBUEJ4aEVxUFpXOHFaU3d1NUdYeUdsOGhNVzBrV3hzRTJxa1ZhMmsKLWhlaVZmck1BcndEQ0JSajFjSjAyaTY3TDVCdUJmNU9JKzJwVnUzMkZrczY2V0ovYk1zVzlYZThpU2k5QkIzNUoKLVliT0c3RTZtUVc2RXZBUHM5VHNjeUIvQzdxanU2aEpLalJUUDh3cmdVRG41Q0RYNEVWbXQ1eUxxUzhvVUJ0NUMKLXVyS1o4eTFVaUJBRzZ1RWFQajFuSC92TyszeUM2QkZkU3NHNUZPcFUyV2FiZklsOUJKcGl5ZWxTUEo2Yzc5TDEKLUp1VG01Umg4aTI3ZmJNeDRXMDl5c3N0Y1A0d0ZqZEZNaksyU3grRjRmMlZzU1FaUUxKNHl3dGRLeG5XS1dVNTEKLWIwZGV3UUlEQVFBQm94QXdEakFNQmdOVkhSTUVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQVYKLTlWWC9ONWFBV1NHay9LRVZUQ0QyMUYvYUF5VDh6NUFhOUNFS211NDZzV3J2Ny9oZzBVdzJaa1VkODJZQ2RBUjcKLWtqQ28zZ3AyRCsrVmJyM0pOK1lhRGF5SlNGdk1nemJDOVVaY1dZSld0TlgrSTdUWVZCeEVxOFNuNVJUT1BFRmgKLWZFUG16Y1NCQ1lzaysxUWwxaGFvbGd4bkIyK3pVRWZqSENRbzNTcVlwR0grMitvU043d0JHalNGdlc1UDU1RnkKLUIwU0ZIbGpLVkVUZDk2eTV5NGtoY3R1UHdHa3BseXFqcmhnamx4eEJLb3Q4S3NGOGtPaXBLTURUa2NhdEtJZEEKLWFMWC83S2ZTMHpnWW5OTjlhVjN3eHFVZUpCdWpSL3hwQjJqbjVKcTA3UStoaDRjQ3pvZlNTRTdodlAvTDhYS1MKLVJHUURKZXJlVzI2ZnlmSk9yTjNICi0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0KLSMgSXNzdWVyOiBDTj1Uw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgTz1Uw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUKLSMgU3ViamVjdDogQ049VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIE89VMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEthc8SxbSAyMDA1Ci0jIExhYmVsOiAiVFVSS1RSVVNUIENlcnRpZmljYXRlIFNlcnZpY2VzIFByb3ZpZGVyIFJvb3QgMiIKLSMgU2VyaWFsOiAxCi0jIE1ENSBGaW5nZXJwcmludDogMzc6YTU6NmU6ZDQ6YjE6MjU6ODQ6OTc6Yjc6ZmQ6NTY6MTU6N2E6Zjk6YTI6MDAKLSMgU0hBMSBGaW5nZXJwcmludDogYjQ6MzU6ZDQ6ZTE6MTE6OWQ6MWM6NjY6OTA6YTc6NDk6ZWI6YjM6OTQ6YmQ6NjM6N2I6YTc6ODI6YjcKLSMgU0hBMjU2IEZpbmdlcnByaW50OiBjNDo3MDpjZjo1NDo3ZToyMzowMjpiOTo3NzpmYjoyOTpkZDo3MTphODo5YTo3Yjo2YzoxZjo2MDo3Nzo3YjowMzoyOTpmNTo2MDoxNzpmMzoyODpiZjo0Zjo2YjplNgotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlFUERDQ0F5U2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURDQnZqRS9NRDBHQTFVRUF3dzJWTU9jCi1Va3RVVWxWVFZDQkZiR1ZyZEhKdmJtbHJJRk5sY25ScFptbHJZU0JJYVhwdFpYUWdVMkhFbjJ4aGVjU3hZOFN4Ci1jOFN4TVFzd0NRWURWUVFHRXdKVVVqRVBNQTBHQTFVRUJ3d0dRVzVyWVhKaE1WMHdXd1lEVlFRS0RGUlV3NXhTCi1TMVJTVlZOVUlFSnBiR2RwSU1Td2JHVjBhY1dmYVcwZ2RtVWdRbWxzYWNXZmFXMGdSOE84ZG1WdWJHbkVuMmtnCi1TR2w2YldWMGJHVnlhU0JCTHNXZUxpQW9ZeWtnUzJGenhMRnRJREl3TURVd0hoY05NRFV4TVRBM01UQXdOelUzCi1XaGNOTVRVd09URTJNVEF3TnpVM1dqQ0J2akUvTUQwR0ExVUVBd3cyVk1PY1VrdFVVbFZUVkNCRmJHVnJkSEp2Ci1ibWxySUZObGNuUnBabWxyWVNCSWFYcHRaWFFnVTJIRW4yeGhlY1N4WThTeGM4U3hNUXN3Q1FZRFZRUUdFd0pVCi1VakVQTUEwR0ExVUVCd3dHUVc1cllYSmhNVjB3V3dZRFZRUUtERlJVdzV4U1MxUlNWVk5VSUVKcGJHZHBJTVN3Ci1iR1YwYWNXZmFXMGdkbVVnUW1sc2FjV2ZhVzBnUjhPOGRtVnViR25FbjJrZ1NHbDZiV1YwYkdWeWFTQkJMc1dlCi1MaUFvWXlrZ1MyRnp4TEZ0SURJd01EVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCCi1BUUNwTm43RGtVTk13eG1ZQ01qSFdIdFBGb3lsemtrQkgzTU9ySFVUcHZxZUxDRGUySkFPQ3RGcDBpZjdxbmVmCi1KMUlsNHN0ZDJOaURVQmQ5aXJXQ1B3U090Tlh3U2Fka3R4NHVYeUNjVUhWUHIrRzFRUlQwbUpLSXgrWGxaRWRoCi1SM245d0ZIeHdabm4zTTVxKzYrMUFURGNSaHp2aXV5Vjc5ei9yeEFjNjUzWXNLcHFoUmdORjhrK3YvR2IwQW1KCi1RdjJnUXJTZGlWRlZLYzhiY0x5RVZLM0JFeCtZOUM1MllJdGRQNXF0eWd5L3AxWmJqM2U0MVo1NVNaSS80UEdYCi1KSHBzbXhjUGJlOVRtSkVyNUErK1dYa0hlTHVYbGZTZmFkUllod3FwNDh5MldCbWZKaUd4eEZtTnNrRjF3SzFwCi16cHdBQ1BJMi96N3dvUThhckJUOXBtQVBBZ01CQUFHalF6QkJNQjBHQTFVZERnUVdCQlRaTjdOT0JmM1p6NThTCi1GcTYyaVMvckpUcUlIREFQQmdOVkhROEJBZjhFQlFNREJ3WUFNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKCi1Lb1pJaHZjTkFRRUZCUUFEZ2dFQkFISmdscmZKM05ncFhpT0ZYN0t6TFhiN2lOY1gvbnR0UmJqMmhXeWZJdndxCi1FQ0xzcXJrdzlxdFkxamtRTVprcEFMMkpaa0g3ZE42UndSZ0xuN1ZoeTUwNnZ2V29sS01pVlc0WFNmL1NLZkU0Ci1KbDN2cGFvNitYRjc1dHBZSGROMHdnSDZQbWxZWDYzTGFMNFVMcHRzd0xiY29DYjZkeHJpSk5vYU4rQm5yZEZ6Ci1ndzJsR2gxdUVwSitoR0lBRjcyOEpSaFg4dGVwYjFtSXZEUzNMb1Y0blpiY0ZNTXNpbEtibG94U1pqMkdGb3RICi11RkVKak9wOXpZaHlzMkF6c2ZBS1JPOFA5UWszaUNRT0xHc2dPcUw2RWZKQU5aeEVhR003ckROdlk3d3N1L0xTCi15M1o5ZllqWUhjZ0ZIVzY4bEtsbWpIZHh4L3FSK2k5Um51azVVcmJuQkVJPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotCiAjIElzc3VlcjogQ049U3dpc3NTaWduIEdvbGQgQ0EgLSBHMiBPPVN3aXNzU2lnbiBBRwogIyBTdWJqZWN0OiBDTj1Td2lzc1NpZ24gR29sZCBDQSAtIEcyIE89U3dpc3NTaWduIEFHCiAjIExhYmVsOiAiU3dpc3NTaWduIEdvbGQgQ0EgLSBHMiIKQEAgLTIxMzcsMTA3ICsxODgwLDYgQEAKIFd5SDhFWkUwdmtIdmU1MlhkZitYbGNDV1dDL3F1MGJYdStUWkxnPT0KIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KIAotIyBJc3N1ZXI6IENOPVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkgTz1UQyBUcnVzdENlbnRlciBHbWJIIE9VPVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EKLSMgU3ViamVjdDogQ049VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSSBPPVRDIFRydXN0Q2VudGVyIEdtYkggT1U9VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQQotIyBMYWJlbDogIlRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkiCi0jIFNlcmlhbDogOTQxMzg5MDI4MjAzNDUzODY2NzgyMTAzNDA2OTkyNDQzCi0jIE1ENSBGaW5nZXJwcmludDogY2U6Nzg6MzM6NWM6NTk6Nzg6MDE6NmU6MTg6ZWE6Yjk6MzY6YTA6Yjk6MmU6MjMKLSMgU0hBMSBGaW5nZXJwcmludDogYWU6NTA6ODM6ZWQ6N2M6ZjQ6NWM6YmM6OGY6NjE6YzY6MjE6ZmU6Njg6NWQ6Nzk6NDI6MjE6MTU6NmUKLSMgU0hBMjU2IEZpbmdlcnByaW50OiBlNjpiODpmODo3Njo2NDo4NTpmODowNzphZTo3Zjo4ZDphYzoxNjo3MDo0NjoxZjowNzpjMDphMTozZTplZjozYToxZjpmNzoxNzo1Mzo4ZDo3YTpiYTpkMzo5MTpiNAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlFcWpDQ0E1S2dBd0lCQWdJT0xtb0FBUUFDSDlkU0lTd1JYRHN3RFFZSktvWklodmNOQVFFRkJRQXdkakVMCi1NQWtHQTFVRUJoTUNSRVV4SERBYUJnTlZCQW9URTFSRElGUnlkWE4wUTJWdWRHVnlJRWR0WWtneElqQWdCZ05WCi1CQXNUR1ZSRElGUnlkWE4wUTJWdWRHVnlJRU5zWVhOeklESWdRMEV4SlRBakJnTlZCQU1USEZSRElGUnlkWE4wCi1RMlZ1ZEdWeUlFTnNZWE56SURJZ1EwRWdTVWt3SGhjTk1EWXdNVEV5TVRRek9EUXpXaGNOTWpVeE1qTXhNakkxCi1PVFU1V2pCMk1Rc3dDUVlEVlFRR0V3SkVSVEVjTUJvR0ExVUVDaE1UVkVNZ1ZISjFjM1JEWlc1MFpYSWdSMjFpCi1TREVpTUNBR0ExVUVDeE1aVkVNZ1ZISjFjM1JEWlc1MFpYSWdRMnhoYzNNZ01pQkRRVEVsTUNNR0ExVUVBeE1jCi1WRU1nVkhKMWMzUkRaVzUwWlhJZ1EyeGhjM01nTWlCRFFTQkpTVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFECi1nZ0VQQURDQ0FRb0NnZ0VCQUt1QWg1dU84TU44aDlmb0pJSVJzenpkUTJMdStNTkYydWpob0YvUktyTHFrMmpmCi10TWpXUStuRWRWbC8vT0VkK0RGd0l4dUluaWU1ZS8wNjBzbXA2UlF2a0w0RFVzRkp6ZmI5NUFobUMxZUtva0tnCi11TlYvYVZ5UU1yS1hEY3BLM0VZK0FsV0pVK01hV3NzMnhnZFc5NHpQRWZSTXV6QndCSldsOWptTS9YT0JDSDJKCi1YakllSXFraVJVdXdaaTR3eko5bC9mekxnYW54NER1dm80YlJpZXJFUlhsUVhhN3BJWFNTVFl0WmdvK1U0K2xLCi04ZWRKc0JUajlXTEwxWEs5SDduU242RE5xUG9CeU5rTjM5cjhSNTJ6eUZUZlNVcnhJYW4rR0U3dVNOUVp1Kzk5Ci01T0tkeTF1MmJ2L2p6VnJuZElJRnVvQWxPTXZrYVo2dlFhb2FoUFVDQXdFQUFhT0NBVFF3Z2dFd01BOEdBMVVkCi1Fd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQjBHQTFVZERnUVdCQlRqcTFSTWdLSGJWa08zCi1rVXJMODRKNkUxd0lxekNCN1FZRFZSMGZCSUhsTUlIaU1JSGZvSUhjb0lIWmhqVm9kSFJ3T2k4dmQzZDNMblJ5Ci1kWE4wWTJWdWRHVnlMbVJsTDJOeWJDOTJNaTkwWTE5amJHRnpjMTh5WDJOaFgwbEpMbU55YklhQm4yeGtZWEE2Ci1MeTkzZDNjdWRISjFjM1JqWlc1MFpYSXVaR1V2UTA0OVZFTWxNakJVY25WemRFTmxiblJsY2lVeU1FTnNZWE56Ci1KVEl3TWlVeU1FTkJKVEl3U1Vrc1R6MVVReVV5TUZSeWRYTjBRMlZ1ZEdWeUpUSXdSMjFpU0N4UFZUMXliMjkwCi1ZMlZ5ZEhNc1JFTTlkSEoxYzNSalpXNTBaWElzUkVNOVpHVS9ZMlZ5ZEdsbWFXTmhkR1ZTWlhadlkyRjBhVzl1Ci1UR2x6ZEQ5aVlYTmxQekFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBak5mZmZ1NGJnQkN6Zy9YYkVlcHJTNmlTCi1HTm4zQnpuMUxMNEdkWHBvVXhVYzZrcnRYdndqc2hPZzB3bi85dll1YTBGeGVjM2liZjJ1V1d1RkhiaE9JcHJ0Ci1aamx1UzVUbVZmd0xHNHQzd1ZNVFpvblpLTmFMODBWS1k3Zjlld3RoWGJodHZzUGNXM25TN1libG9rMitYblI4Ci1hdTBXT0I5L1dJRmFHdXN5aUMyeTh6bDNnSzlldG1GMUtkc2pUWWpLVUNqTGhkTFRFS0paYnRPVFZBQjZva2FWCi1oZ1djcVJtWTVURnlEQURpWjlsQTRDUXplMjhzdVZ5clpaMHNySGJxTlpuMWw3a1BKT3pIZGlFb1phNVg2QWVJCi1kVXBXb05JRk9xVG1qWktJTFBQeTRjSEdZZHRCeGNlYjl3NGFVVVhDWVd2Y1pDY1hqRnEzMm5Rb3paZmt2UT09Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0KLSMgSXNzdWVyOiBDTj1UQyBUcnVzdENlbnRlciBDbGFzcyAzIENBIElJIE89VEMgVHJ1c3RDZW50ZXIgR21iSCBPVT1UQyBUcnVzdENlbnRlciBDbGFzcyAzIENBCi0jIFN1YmplY3Q6IENOPVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkgTz1UQyBUcnVzdENlbnRlciBHbWJIIE9VPVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EKLSMgTGFiZWw6ICJUQyBUcnVzdENlbnRlciBDbGFzcyAzIENBIElJIgotIyBTZXJpYWw6IDE1MDY1MjM1MTE0MTc3MTU2Mzg3NzIyMjA1MzAwMjA3OTkKLSMgTUQ1IEZpbmdlcnByaW50OiA1Njo1ZjphYTo4MDo2MToxMjoxNzpmNjo2NzoyMTplNjoyYjo2ZDo2MTo1Njo4ZQotIyBTSEExIEZpbmdlcnByaW50OiA4MDoyNTplZjpmNDo2ZTo3MDpjODpkNDo3MjoyNDo2NTo4NDpmZTo0MDozYjo4YTo4ZDo2YTpkYjpmNQotIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDhkOmEwOjg0OmZjOmY5OjljOmUwOjc3OjIyOmY4OjliOjMyOjA1OjkzOjk4OjA2OmZhOjVjOmI4OjExOmUxOmM4OjEzOmY2OmExOjA4OmM3OmQzOjM2OmIzOjQwOjhlCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUVxakNDQTVLZ0F3SUJBZ0lPU2tjQUFRQUM1YUJkMWo4QVViOHdEUVlKS29aSWh2Y05BUUVGQlFBd2RqRUwKLU1Ba0dBMVVFQmhNQ1JFVXhIREFhQmdOVkJBb1RFMVJESUZSeWRYTjBRMlZ1ZEdWeUlFZHRZa2d4SWpBZ0JnTlYKLUJBc1RHVlJESUZSeWRYTjBRMlZ1ZEdWeUlFTnNZWE56SURNZ1EwRXhKVEFqQmdOVkJBTVRIRlJESUZSeWRYTjAKLVEyVnVkR1Z5SUVOc1lYTnpJRE1nUTBFZ1NVa3dIaGNOTURZd01URXlNVFEwTVRVM1doY05NalV4TWpNeE1qSTEKLU9UVTVXakIyTVFzd0NRWURWUVFHRXdKRVJURWNNQm9HQTFVRUNoTVRWRU1nVkhKMWMzUkRaVzUwWlhJZ1IyMWkKLVNERWlNQ0FHQTFVRUN4TVpWRU1nVkhKMWMzUkRaVzUwWlhJZ1EyeGhjM01nTXlCRFFURWxNQ01HQTFVRUF4TWMKLVZFTWdWSEoxYzNSRFpXNTBaWElnUTJ4aGMzTWdNeUJEUVNCSlNUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQUQKLWdnRVBBRENDQVFvQ2dnRUJBTFRndTFHN09WeUxCTVZNZVJ3amhqRVFZME5WSnovR1JjZWtQZXdKRFJvZUlNSlcKLUh0NGJOd2N3SWk5djhRYnhxNjNXeUt0aG95OUR4TEN5TGZ6RGxtbDdmb3Jrek1BNUVwQkNZTW5NTldqdTJsK1EKLVZsL05IRTFiV0VuckRnRlBaUG9zUElsWTJDOHU0ckJvNlNJN2RZbldSQnBsOGh1WEpoMG9iYXpvdlZrZEt5VDIKLTFvUURab2drQUhoZzhmaXIvZ0t5YS9zaSt6WG1GdEd0OWk0UzVQbzFhdVVadVYzYk94NGErOVAvRlJRSTJBbHEKLXVrV2RGSGxnZmE5QWlnZHpzNU9XMDNRMGpUbzNLZDVjN1BYdUxqSENJTnkrOFU5L0kxTFpXK0prMlp5cUJ3aTEKLVJiM1IwREhCcTFTZnFkTERZbUFEOGJzNVNwSktQUXE1bmNXZy9qY0NBd0VBQWFPQ0FUUXdnZ0V3TUE4R0ExVWQKLUV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCVFVvdnlmczhQWUE5TlgKLVhBZWswQ1Nud1BJQTFEQ0I3UVlEVlIwZkJJSGxNSUhpTUlIZm9JSGNvSUhaaGpWb2RIUndPaTh2ZDNkM0xuUnkKLWRYTjBZMlZ1ZEdWeUxtUmxMMk55YkM5Mk1pOTBZMTlqYkdGemMxOHpYMk5oWDBsSkxtTnliSWFCbjJ4a1lYQTYKLUx5OTNkM2N1ZEhKMWMzUmpaVzUwWlhJdVpHVXZRMDQ5VkVNbE1qQlVjblZ6ZEVObGJuUmxjaVV5TUVOc1lYTnoKLUpUSXdNeVV5TUVOQkpUSXdTVWtzVHoxVVF5VXlNRlJ5ZFhOMFEyVnVkR1Z5SlRJd1IyMWlTQ3hQVlQxeWIyOTAKLVkyVnlkSE1zUkVNOWRISjFjM1JqWlc1MFpYSXNSRU05WkdVL1kyVnlkR2xtYVdOaGRHVlNaWFp2WTJGMGFXOXUKLVRHbHpkRDlpWVhObFB6QU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFObURrY1BjR0lFUFpJeHBDOHZpanNybE4KLWlyVHp3cHBWTVh6RU8yZWF0TjlORG9xVFNoZUxHNDNLaWVIUE9oNnNIZkdjTXJTT1dYYWlRWVVsTjZBVDBQVjgKLVR0WHFsdUp1Y3NHN0t2NXNidmlSbUViOHlSdFhXK3JJR2pzL3NGR1lQQWZhTEZrQjJvdEU2T0YwL2FkbzNWUzYKLWcwYnN5RWExK0srWHdEc0pISS9PY3BZOU0xWnd2SmJMMk5WOUlKcURueHJjT2ZIRmNxTVJBLzA3UWxJcDIrZ0IKLTk1dGVqTmFOaGs0Wityd2N2c1VocFllZWVDNDIyd2x4bzNJMCtHempCZ255WGxhbDA5MlkrdFRtQnZUd3RpQmoKLVMrb3B2YXFDWmg3N2dhcW5ONjBUR09hU3c0SEJNN3VJSHFIbjRyUzlNV3dPVVQxdis1WldnT0kyRjlIYzVBPT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLQotIyBJc3N1ZXI6IENOPVRDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJIE89VEMgVHJ1c3RDZW50ZXIgR21iSCBPVT1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EKLSMgU3ViamVjdDogQ049VEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkgTz1UQyBUcnVzdENlbnRlciBHbWJIIE9VPVRDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQQotIyBMYWJlbDogIlRDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJIgotIyBTZXJpYWw6IDYwMTAyNDg0MjA0MjE4OTAzNTI5NTYxOTU4NDczNDcyNgotIyBNRDUgRmluZ2VycHJpbnQ6IDQ1OmUxOmE1OjcyOmM1OmE5OjM2OjY0OjQwOjllOmY1OmU0OjU4Ojg0OjY3OjhjCi0jIFNIQTEgRmluZ2VycHJpbnQ6IDZiOjJmOjM0OmFkOjg5OjU4OmJlOjYyOmZkOmIwOjZiOjVjOmNlOmJiOjlkOmQ5OjRmOjRlOjM5OmYzCi0jIFNIQTI1NiBGaW5nZXJwcmludDogZWI6ZjM6YzA6MmE6ODc6ODk6YjE6ZmI6N2Q6NTE6MTk6OTU6ZDY6NjM6Yjc6Mjk6MDY6ZDk6MTM6Y2U6MGQ6NWU6MTA6NTY6OGE6OGE6Nzc6ZTI6NTg6NjE6Njc6ZTcKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJRDNUQ0NBc1dnQXdJQkFnSU9IYUlBQVFBQzdMZGdnSGlOdGdZd0RRWUpLb1pJaHZjTkFRRUZCUUF3ZVRFTAotTUFrR0ExVUVCaE1DUkVVeEhEQWFCZ05WQkFvVEUxUkRJRlJ5ZFhOMFEyVnVkR1Z5SUVkdFlrZ3hKREFpQmdOVgotQkFzVEcxUkRJRlJ5ZFhOMFEyVnVkR1Z5SUZWdWFYWmxjbk5oYkNCRFFURW1NQ1FHQTFVRUF4TWRWRU1nVkhKMQotYzNSRFpXNTBaWElnVlc1cGRtVnljMkZzSUVOQklFa3dIaGNOTURZd016SXlNVFUxTkRJNFdoY05NalV4TWpNeAotTWpJMU9UVTVXakI1TVFzd0NRWURWUVFHRXdKRVJURWNNQm9HQTFVRUNoTVRWRU1nVkhKMWMzUkRaVzUwWlhJZwotUjIxaVNERWtNQ0lHQTFVRUN4TWJWRU1nVkhKMWMzUkRaVzUwWlhJZ1ZXNXBkbVZ5YzJGc0lFTkJNU1l3SkFZRAotVlFRREV4MVVReUJVY25WemRFTmxiblJsY2lCVmJtbDJaWEp6WVd3Z1EwRWdTVENDQVNJd0RRWUpLb1pJaHZjTgotQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtSM0k1WkVyNUQwTWFjUTlDYUhuUE00MlE5ZTNzOUI2REd0eG5TUgotSkpaNEhnbWdtNXFWU2tyMVlud0NxTXFzKzFvRWRqbmVYL0g1czcvekExaFYwcXEzNHdRaTBmaVUyaUlJQUkzVAotZkNaZHpIZDU1eXg0T2FnbWN3NmlYU1ZwaFU5VkRwcnZ4cmxFNFZjOTN4OVVJdVZ2WmFvemhEcnp6bnErVlpldQotalJJUEZEUGlVSEREU1ljVHZGSGUxNWdTV3U4Nmd6T1NCbldMa253U2FIdHdhZysxbTdaM1cwaFpuZVR2V3Ezegotd1o3VTEwVk95bFkwSWJ3K0YxdHZkd3hJQVVNcHNOMC9sbTdtbGFvTXdDQzIvVDQySjV6alhNOU9nZHdadTVHUQotZmV6bWx3UWVrOHdpU2RlWGhyWVRDanhESTNkKzhOem16U1FmTzRPYk5EcUROT01DQXdFQUFhTmpNR0V3SHdZRAotVlIwakJCZ3dGb0FVa3FSMUxLU2V2b0ZFNjNuOGlzV1ZwZXNRZFhNd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBTwotQmdOVkhROEJBZjhFQkFNQ0FZWXdIUVlEVlIwT0JCWUVGSktrZFN5a25yNkJST3Q1L0lyRmxhWHJFSFZ6TUEwRwotQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUFvMHVDRzFlYjRlL0NYM0NKck81VVVWZzhSTUtXYVR6cXdPdUFHeTJYMQotN2NhWEovNGw4bGZtWHBXTVBtUmdGVnAvTHcwQnhiRmcvVVUxei9DeXZ3Ylo3MXErczJJaHROZXJOWHhUUHFZbgotOGFFdDJob2puY3pkN0R3dG5pYzBYUS9DTm5tOHlVcGlMZTFyMlgxQlEzeTJxc3J0WWJFM2doVUpHb29XTU5qcwoteWRaSGNuaExFRVlVamw4T3IrekhMNnNRMTdieGJ1eUdzc0xvRFpKejNLTDBEenEvWVNNUWlaeElRRzV3QUxQVAotdWpkRVdCRjZBbXFJOERjMDhCbnByTlJsYy9acGpHU1VPbm1GS2JBV0t3eUNQd2FjeC8wUUs1NFBMTGFlNHhXLwotMlRZY3VpVWFVajBhN0NJTUhPQ2tvajN3NkRuUGdjQjc3VjBmYjhYUUM5ZVkKLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLQogIyBJc3N1ZXI6IENOPURldXRzY2hlIFRlbGVrb20gUm9vdCBDQSAyIE89RGV1dHNjaGUgVGVsZWtvbSBBRyBPVT1ULVRlbGVTZWMgVHJ1c3QgQ2VudGVyCiAjIFN1YmplY3Q6IENOPURldXRzY2hlIFRlbGVrb20gUm9vdCBDQSAyIE89RGV1dHNjaGUgVGVsZWtvbSBBRyBPVT1ULVRlbGVTZWMgVHJ1c3QgQ2VudGVyCiAjIExhYmVsOiAiRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIiCkBAIC0yMjY4LDM2ICsxOTEwLDYgQEAKIENtMjZPV01vaHBMekdJVFkrOUhQQlZaa1Z3PT0KIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KIAotIyBJc3N1ZXI6IENOPUNvbVNpZ24gU2VjdXJlZCBDQSBPPUNvbVNpZ24KLSMgU3ViamVjdDogQ049Q29tU2lnbiBTZWN1cmVkIENBIE89Q29tU2lnbgotIyBMYWJlbDogIkNvbVNpZ24gU2VjdXJlZCBDQSIKLSMgU2VyaWFsOiAyNjQ3MjU1MDM4NTUyOTU3NDQxMTczMDk4MTQ0OTk0OTIzODQ0ODkKLSMgTUQ1IEZpbmdlcnByaW50OiA0MDowMToyNTowNjo4ZDoyMTo0Mzo2YTowZTo0MzowMDo5YzplNzo0MzpmMzpkNQotIyBTSEExIEZpbmdlcnByaW50OiBmOTpjZDowZToyYzpkYTo3NjoyNDpjMTo4ZjpiZDpmMDpmMDphYjpiNjo0NTpiODpmNzpmZTpkNTo3YQotIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDUwOjc5OjQxOmM3OjQ0OjYwOmEwOmI0OjcwOjg2OjIyOjBkOjRlOjk5OjMyOjU3OjJhOmI1OmQxOmI1OmJiOmNiOjg5OjgwOmFiOjFjOmIxOjc2OjUxOmE4OjQ0OmQyCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSURxekNDQXBPZ0F3SUJBZ0lSQU1jb1J3bXp1R3hGakIzNkpQVTJUdWt3RFFZSktvWklodmNOQVFFRkJRQXcKLVBERWJNQmtHQTFVRUF4TVNRMjl0VTJsbmJpQlRaV04xY21Wa0lFTkJNUkF3RGdZRFZRUUtFd2REYjIxVGFXZHUKLU1Rc3dDUVlEVlFRR0V3SkpUREFlRncwd05EQXpNalF4TVRNM01qQmFGdzB5T1RBek1UWXhOVEEwTlRaYU1Ed3gKLUd6QVpCZ05WQkFNVEVrTnZiVk5wWjI0Z1UyVmpkWEpsWkNCRFFURVFNQTRHQTFVRUNoTUhRMjl0VTJsbmJqRUwKLU1Ba0dBMVVFQmhNQ1NVd3dnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFER3RXaGYKLUhaUVZ3NlFJVlMzam9GZDY3K2wwS3J1NWZGZEpHaEZlVHltSERFaldhdWVQMUg1WEpMa0dpZVFjUE9xczQ5b2gKLWdITWhDdTk1bUd3ZkNQK2hVSDN5bUJ2SlZHOCtwU2pzSVFRUFJic0hQYUhBK2lxWUhVNEdrL3YxaUR1clg4c1cKLXYrYnpua3FIN1JucXdwOUQ1UEdCcFg4UVR6N1JTbUt0VXh2TGcvOEhaYVdTTFdhcFc3aGE5QjIwSVpGS0YzdWUKLU12NVdKRG15VklSRDlZVEMyTHhCa015ZDFtamE2WUpRcVR0b3o3VmRBcFJnRnJGRDJVTmQzVjJIYnVxN3M4bHIKLTlnT1VDWERlRmhGNksraDJqMGtRbUhlNVkxeUxNNWQxOWd1TXNxdGIzblFnSlQvajh4SDVoMmlHTlhIREhZd3QKLTYrVWFyQTl6MVlKWlFJRFRBZ01CQUFHamdhY3dnYVF3REFZRFZSMFRCQVV3QXdFQi96QkVCZ05WSFI4RVBUQTcKLU1EbWdONkExaGpOb2RIUndPaTh2Wm1Wa2FYSXVZMjl0YzJsbmJpNWpieTVwYkM5amNtd3ZRMjl0VTJsbmJsTmwKLVkzVnlaV1JEUVM1amNtd3dEZ1lEVlIwUEFRSC9CQVFEQWdHR01COEdBMVVkSXdRWU1CYUFGTUZMN1hDMjl6NTgKLUFEc0FqOGMrRGtXZkhsM3NNQjBHQTFVZERnUVdCQlRCUysxd3R2YytmQUE3QUkvSFBnNUZueDVkN0RBTkJna3EKLWhraUc5dzBCQVFVRkFBT0NBUUVBRnMvdWtoTlFxM3NVbmpPMlFpQnExQlc5Q2F2OGN1anZSM3FRckZIQlpFN3AKLWlMMURSWUhqWmlNL0VvWk5HZVFGc09ZM3dvM2FCaWpKRDRta1U2bDFQN0NXKzZ0TU0xWDVlQ1pHYnhzMm1QdEMKLWRzR0N1WTdlKzBYNVl4dGlPemtHeW5kNnFEd0p6MncyUFE4S1JVdHBGaHBGZlRNRFpmbFNjWkFtbGF4TURQV0wKLWt6L01kWFNGbUxyL1lucE5ING4rcnIyVUFKbS9FYVhjNEhuRkZndDlBbUVkNm9YNUFoVlA1MXFKVGhSdjR6ZEwKLWhmWEJQR0hnL1FWQnNwSi93eDJnMEs1U1pHQnJHTVltbk5qMVpPUTJHbUtmaWc4Ky8yMU9HVlpPSUpGc256UXoKLU9qUlhVRHB2Z1Y0R3h2VStmRTZPSzg1bEJpNWQwaXBUZEY3VGJpZWVqdz09Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0KICMgSXNzdWVyOiBDTj1DeWJlcnRydXN0IEdsb2JhbCBSb290IE89Q3liZXJ0cnVzdCwgSW5jCiAjIFN1YmplY3Q6IENOPUN5YmVydHJ1c3QgR2xvYmFsIFJvb3QgTz1DeWJlcnRydXN0LCBJbmMKICMgTGFiZWw6ICJDeWJlcnRydXN0IEdsb2JhbCBSb290IgpAQCAtMjQzNSwzNCArMjA0Nyw2IEBACiBMWTRuZzVJZ29kY1ZmL0V1R083MFNIOHZmL0doR0xXaEM1U2dZaUF5bkIzMjFPKy9USWhvCiAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAKLSMgSXNzdWVyOiBDTj1CdXlwYXNzIENsYXNzIDMgQ0EgMSBPPUJ1eXBhc3MgQVMtOTgzMTYzMzI3Ci0jIFN1YmplY3Q6IENOPUJ1eXBhc3MgQ2xhc3MgMyBDQSAxIE89QnV5cGFzcyBBUy05ODMxNjMzMjcKLSMgTGFiZWw6ICJCdXlwYXNzIENsYXNzIDMgQ0EgMSIKLSMgU2VyaWFsOiAyCi0jIE1ENSBGaW5nZXJwcmludDogZGY6M2M6NzM6NTk6ODE6ZTc6Mzk6NTA6ODE6MDQ6NGM6MzQ6YTI6Y2I6YjM6N2IKLSMgU0hBMSBGaW5nZXJwcmludDogNjE6NTc6M2E6MTE6ZGY6MGU6ZDg6N2U6ZDU6OTI6NjU6MjI6ZWE6ZDA6NTY6ZDc6NDQ6YjM6MjM6NzEKLSMgU0hBMjU2IEZpbmdlcnByaW50OiBiNzpiMToyYjoxNzoxZjo4MjoxZDphYTo5OTowYzpkMDpmZTo1MDo4NzpiMToyODo0NDo4YjphODplNToxODo0Zjo4NDpjNToxZTowMjpiNTpjODpmYjo5NjoyYjoyNAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlEVXpDQ0FqdWdBd0lCQWdJQkFqQU5CZ2txaGtpRzl3MEJBUVVGQURCTE1Rc3dDUVlEVlFRR0V3Sk9UekVkCi1NQnNHQTFVRUNnd1VRblY1Y0dGemN5QkJVeTA1T0RNeE5qTXpNamN4SFRBYkJnTlZCQU1NRkVKMWVYQmhjM01nCi1RMnhoYzNNZ015QkRRU0F4TUI0WERUQTFNRFV3T1RFME1UTXdNMW9YRFRFMU1EVXdPVEUwTVRNd00xb3dTekVMCi1NQWtHQTFVRUJoTUNUazh4SFRBYkJnTlZCQW9NRkVKMWVYQmhjM01nUVZNdE9UZ3pNVFl6TXpJM01SMHdHd1lECi1WUVFEREJSQ2RYbHdZWE56SUVOc1lYTnpJRE1nUTBFZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQCi1BRENDQVFvQ2dnRUJBS1NPMTNUWktXVGVYeCtIZ0pIcVRqbm1HY1pFQzREVkM2OVRCNHNTdmVabjhBS3hpZlpnCi1pc1Jic0VMUndDR295K0diNzJSUnRxZlBGZlYwZ0dnRWtLQllvdVowcGxOVFZVaGpQNUpXM1NST2p2aTZLLy96Ci1OSXFlS05jMG42d3YxZy94cEMrOVVySkpoVzA1TmZCRU1KTkdKUE8yNTFQN3ZHR3ZxYU1VKzhJWEY0UnM0SHlJCi0rTWtjVnl6d1BYNlV2Q1dUaE9pYUFKcEZCVUpYZ1BST3p0bXVPZmJJVXhBTVpUcEhlMkRDMXZxUnljWnhiTDJSCi1oenlSaGttcjh3K2diQ1oyWGh5c20zSGxqYnliSVI2YzFqaCtKSUFWTVlLV3NVblRZamRiaUF3S1lqVCtwMGgrCi1tYkV3aTVBM2xSeW9INlVzamZSVnlOdmRXUXJDclhpZzlJc0NBd0VBQWFOQ01FQXdEd1lEVlIwVEFRSC9CQVV3Ci1Bd0VCL3pBZEJnTlZIUTRFRmdRVU9CVG15UENwcEFQMFRqNGlvMXZ5MXVDdFFIUXdEZ1lEVlIwUEFRSC9CQVFECi1BZ0VHTUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFBQlo2T015U1U5RTJOZEZtL3NvVDRKWEpFVktpclpnQ0ZQCi1CZHk3cFltckV6TXFuamkzakc4Q2NtUEhjM2NlQ1FhNk95aDdwRWZKWVdzSUNDRDhpZ1dLSDd5NnhzTCt6MjdzCi1Fek54Wnk1cCtxa3NQMmJBRWxsTkMxUUNrb1M3MnhMdmczQndlTWhUK3QvR3h2L2NpQzhId0VtZE1sZGcwL0wyCi1tU2xmNTZvQnpLd3pxQndLdTVIRUE2QnZ0alQ1aHRPemRsU1k5RXFCczFPZFRVRHM1WGNUUmE5YnFoL1lMMHlDCi1lLzRxeEZpN1QveWUvUU5sR2lvT3c2VWdGcFJyZWFhaUVyUzdHcVFqZWwvd3JvUWs1UE1yKzRva295ZVlaZG93Ci1kWGI4R1pIbzIrdWJQeksvUUpjSEpyck04NVNGU25vbms4K1FRdFM0V3hhbTU4dEFBOTE1Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0KICMgSXNzdWVyOiBDTj1FQkcgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBPPUVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4KICMgU3ViamVjdDogQ049RUJHIEVsZWt0cm9uaWsgU2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgTz1FQkcgQmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uCiAjIExhYmVsOiAiRUJHIEVsZWt0cm9uaWsgU2VydGlmaWthIEhpem1ldCBTYVx4QzRceDlGbGF5XHhjNFx4YjFceDYzXHhjNFx4YjFzXHhjNFx4YjEiCkBAIC0yODQzLDM4ICsyNDI3LDYgQEAKIHl3cGxoNlptd2NTQm8zYzZXQjRMN29PTG5SN1NVcVRNSFcrd21HMlVNYlg0Y1FyY3VmeDlNbURtNjYrS0FRPT0KIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KIAotIyBJc3N1ZXI6IENOPUNBIERpc2lnIE89RGlzaWcgYS5zLgotIyBTdWJqZWN0OiBDTj1DQSBEaXNpZyBPPURpc2lnIGEucy4KLSMgTGFiZWw6ICJDQSBEaXNpZyIKLSMgU2VyaWFsOiAxCi0jIE1ENSBGaW5nZXJwcmludDogM2Y6NDU6OTY6Mzk6ZTI6NTA6ODc6Zjc6YmI6ZmU6OTg6MGM6M2M6MjA6OTg6ZTYKLSMgU0hBMSBGaW5nZXJwcmludDogMmE6Yzg6ZDU6OGI6NTc6Y2U6YmY6MmY6NDk6YWY6ZjI6ZmM6NzY6OGY6NTE6MTQ6NjI6OTA6N2E6NDEKLSMgU0hBMjU2IEZpbmdlcnByaW50OiA5MjpiZjo1MToxOTphYjplYzpjYTpkMDpiMTozMzoyZDpjNDplMTpkMDo1ZjpiYTo3NTpiNTo2Nzo5MDo0NDplZTowYzphMjo2ZTo5MzoxZjo3NDo0ZjoyZjozMzpjZgotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlFRHpDQ0F2ZWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCS01Rc3dDUVlEVlFRR0V3SlRTekVUCi1NQkVHQTFVRUJ4TUtRbkpoZEdsemJHRjJZVEVUTUJFR0ExVUVDaE1LUkdsemFXY2dZUzV6TGpFUk1BOEdBMVVFCi1BeE1JUTBFZ1JHbHphV2N3SGhjTk1EWXdNekl5TURFek9UTTBXaGNOTVRZd016SXlNREV6T1RNMFdqQktNUXN3Ci1DUVlEVlFRR0V3SlRTekVUTUJFR0ExVUVCeE1LUW5KaGRHbHpiR0YyWVRFVE1CRUdBMVVFQ2hNS1JHbHphV2NnCi1ZUzV6TGpFUk1BOEdBMVVFQXhNSVEwRWdSR2x6YVdjd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Ci1nZ0VLQW9JQkFRQ1M5akhCZllqOW1RR3AySHZ5Y1hYeE1jYnpkV2I2VVNoR2hKZDROTHhzL0x4RldZZ21HRXJFCi1OeCtoU2tTOTQzRUU5VVFYNGovOFNGaHZYSjU2Q2JwUk55SWpaa01oc0R4a292aHFGUTQvNjFIaFZLbmRCcG5YCi1tanhVaXprRFB3L0Z6c2JyZzNJQ3FCOXg4eTM0ZFFqYllrem8rczc1NTJvZnRtczFncnJpanhhU2ZRVU1iRVlECi1YY0R0YWI4NndZcWc2STdadVVVb2h3anN0TW9Wdm9MZHRVU0xMYTJHREdoaWJZVlc4cXdVWXpyRzBabXNOSGhXCi1TOCsyclQrTWl0Y0U1ZU40VFBXR3F2V1ArajFzY2FNdHltZnJhSHR1TTZrTWdpaW9UR29oUUJVZ0RDWmJnOEtwCi1GaFhBSklKZEt4YXR5bVAyZEFDdzMwUEVFR0JXWjJORkFnTUJBQUdqZ2Y4d2dmd3dEd1lEVlIwVEFRSC9CQVV3Ci1Bd0VCL3pBZEJnTlZIUTRFRmdRVWpiSkphSjF5Q0NXNXdDZjFVSk5XU0VaeCtZOHdEZ1lEVlIwUEFRSC9CQVFECi1BZ0VHTURZR0ExVWRFUVF2TUMyQkUyTmhiM0JsY21GMGIzSkFaR2x6YVdjdWMydUdGbWgwZEhBNkx5OTNkM2N1Ci1aR2x6YVdjdWMyc3ZZMkV3WmdZRFZSMGZCRjh3WFRBdG9DdWdLWVluYUhSMGNEb3ZMM2QzZHk1a2FYTnBaeTV6Ci1heTlqWVM5amNtd3ZZMkZmWkdsemFXY3VZM0pzTUN5Z0txQW9oaVpvZEhSd09pOHZZMkV1WkdsemFXY3VjMnN2Ci1ZMkV2WTNKc0wyTmhYMlJwYzJsbkxtTnliREFhQmdOVkhTQUVFekFSTUE4R0RTdUJIcEdUNWdvQUFBQUJBUUV3Ci1EUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBRjAwZEdGTXJ6dlkvNTl0V0RZY1BRdUJEUklyUmhDQS9lYzhKOUI2Ci15S20yZm5Rd002TTZpbnQwd0hsNVFwTnQvN0VwRklLcklZd3ZGL2svSmkvMVdjYnZnQWEzbWtrcDdNNStjVHhxCi1FRUhBOXRPYXNueGFrWnpBckZ2SVRWNzM0VlAvUTNmOG5rdG5iTmZ6ZzlHZzRIOGwzN2lZQzVveU9Hd3dvUFAvCi1DQlV6OTFCS2V6NmpQaUNwM0M5V2dBcnRRVkN3eWZUc3N1TW1SQUFPYjU0R3ZDS1dVM0JseEZBS1JtdWtMeWVCCi1FaWNUWHhDaGRzNktlemZxd3psaEE1V1lPdWRzaUNVSS9IbG9EWWQ5WXZpMFgvdkYyRXk5V0x3L1ExdlVIZ0ZOCi1QR08rSSsrTXpWcFF1R2hVK1FxWk14RUE0WjdDUm5lQzlWa0dqQ0ZNaHduTjVhZz0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLQogIyBJc3N1ZXI6IENOPUp1dXItU0sgTz1BUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzCiAjIFN1YmplY3Q6IENOPUp1dXItU0sgTz1BUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzCiAjIExhYmVsOiAiSnV1ci1TSyIKQEAgLTMwNDIsMzYgKzI1OTQsNiBAQAogSE1OMVJxNDFCYWIyWEQwaDdsYnd5WUlpTFhwVXEzRERmU0psZ25DVwogLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQogCi0jIElzc3VlcjogQ049ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpIE89RWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLgotIyBTdWJqZWN0OiBDTj1lLUd1dmVuIEtvayBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2FnbGF5aWNpc2kgTz1FbGVrdHJvbmlrIEJpbGdpIEd1dmVubGlnaSBBLlMuCi0jIExhYmVsOiAiRS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpIgotIyBTZXJpYWw6IDkxMTg0Nzg5NzY1NTk4OTEwMDU5MTczMDAwNDg1MzYzNDk0MDY5Ci0jIE1ENSBGaW5nZXJwcmludDogM2Q6NDE6Mjk6Y2I6MWU6YWE6MTE6NzQ6Y2Q6NWQ6YjA6NjI6YWY6YjA6NDM6NWIKLSMgU0hBMSBGaW5nZXJwcmludDogZGQ6ZTE6ZDI6YTk6MDE6ODA6MmU6MWQ6ODc6NWU6ODQ6YjM6ODA6N2U6NGI6YjE6ZmQ6OTk6NDE6MzQKLSMgU0hBMjU2IEZpbmdlcnByaW50OiBlNjowOTowNzo4NDo2NTphNDoxOTo3ODowYzpiNjphYzo0YzoxYzowYjpmYjo0Njo1MzpkOTpkOTpjYzo2ZTpiMzo5NDo2ZTpiNzpmMzpkNjo5OTo5NzpiYTpkNTo5OAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlEdGpDQ0FwNmdBd0lCQWdJUVJKbU5QTUFESjcyY2RwVzU2dHVzdFRBTkJna3Foa2lHOXcwQkFRVUZBREIxCi1NUXN3Q1FZRFZRUUdFd0pVVWpFb01DWUdBMVVFQ2hNZlJXeGxhM1J5YjI1cGF5QkNhV3huYVNCSGRYWmxibXhwCi1aMmtnUVM1VExqRThNRG9HQTFVRUF4TXpaUzFIZFhabGJpQkxiMnNnUld4bGEzUnliMjVwYXlCVFpYSjBhV1pwCi1hMkVnU0dsNmJXVjBJRk5oWjJ4aGVXbGphWE5wTUI0WERUQTNNREV3TkRFeE16STBPRm9YRFRFM01ERXdOREV4Ci1NekkwT0Zvd2RURUxNQWtHQTFVRUJoTUNWRkl4S0RBbUJnTlZCQW9USDBWc1pXdDBjbTl1YVdzZ1FtbHNaMmtnCi1SM1YyWlc1c2FXZHBJRUV1VXk0eFBEQTZCZ05WQkFNVE0yVXRSM1YyWlc0Z1MyOXJJRVZzWld0MGNtOXVhV3NnCi1VMlZ5ZEdsbWFXdGhJRWhwZW0xbGRDQlRZV2RzWVhscFkybHphVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFECi1nZ0VQQURDQ0FRb0NnZ0VCQU1NU0lKNndYZ0JsalU1R3U0QmM2U3dHbDlYemNzbHd1ZWRMWllEQlM3NStQTmRVCi1NWlRlMVJLNlV4WUM2bGhqNzF2WTgrMHFHcXB4U0tQY0VDMWZYK3RjUzV5V0NFSWxLQkhNaWxwaUFWRFY2d2xUCi1ML2pEai82ei9QMmRvdU5mZmI3dEMrQmc2Mm5zTSszWWpmc1NTWU1BeVl1WGpEdHpLakt6RXZlNVRmTDBUVzNICi01dFltTndqeTJmMXJYS1BsU0Z4WXZFSytBMXFCdWh3MURBRFQ5U04rY1RBSUpqamNKUkZITGZPNkl4Q2x2N3dDCi05ME5leC82d04xQ1pldytUenVaRExNTitEZkljUTJaZ3kyRXhSNGVqVDY2OVZteE12THo0QmNwazlPazBvU3kxCi1jK0hDUHVqSXlUUWxDRnp6N2FiSGxKK3RpRU1sMStFNVlQNnNPVmtDQXdFQUFhTkNNRUF3RGdZRFZSMFBBUUgvCi1CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZKL3VSTE9VMWZxUlR5N1pWWm9FCi1WdHN0eE51bE1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQi9YN2xUVzJNOWRUTG4rc1IwR3N0RzMwWnBIRkxQCi1xay9DYU92L2dLbFI2RDFpZDRrOUNuVTU4VzVkRjRkdmFBWEJsR3paWGQvYXNsbkxwUkNLeXN3NXpaL3JUdDVTCi0vd3p3OUpLcDhteFRxNXZTUjZBZmRQZWJtdkV2Rlo5NlpEQVlCendxRDJmSy9BK0pZWjFscFR6bHZCTmJDTnZqCi0vKzI3QnJ0cUJyRjZUMlhHZ3YwZW5JdTFEZTVJdTdpOXFnaTArNk44eTUvTmtIWmNocFo0VndwbStWZ2FuZjJYCi1LV0RlRWFhUUhCa2M3Z0dXSWpRMExwSDV0OFFuMFh2bXYvdUFSRm9XNWV2ZzFBbzR2T1NSNDlYclhNR3MzeHRxCi1mSjdsZGRLMmw0ZmJ6SWNyUXpxRUNLK3JQTnYzUEdZeGhyQ2RVM250K0NQZVF1TXRndkVQNWZxWAotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotCiAjIElzc3VlcjogQ049R2xvYmFsU2lnbiBPPUdsb2JhbFNpZ24gT1U9R2xvYmFsU2lnbiBSb290IENBIC0gUjMKICMgU3ViamVjdDogQ049R2xvYmFsU2lnbiBPPUdsb2JhbFNpZ24gT1U9R2xvYmFsU2lnbiBSb290IENBIC0gUjMKICMgTGFiZWw6ICJHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMyIKQEAgLTM2MTAsMzcgKzMxMzIsNiBAQAogSW9hWk0zRmE2aGxYUFpITnFjQ2piZ2NUcHNudCtHaWpuc05hY2dtSEtOSEVjOFJ6R0Y5UWRSWXhuN2ZvZk1NPQogLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQogCi0jIElzc3VlcjogQ049QS1UcnVzdC1uUXVhbC0wMyBPPUEtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3RyLiBEYXRlbnZlcmtlaHIgR21iSCBPVT1BLVRydXN0LW5RdWFsLTAzCi0jIFN1YmplY3Q6IENOPUEtVHJ1c3QtblF1YWwtMDMgTz1BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52ZXJrZWhyIEdtYkggT1U9QS1UcnVzdC1uUXVhbC0wMwotIyBMYWJlbDogIkEtVHJ1c3QtblF1YWwtMDMiCi0jIFNlcmlhbDogOTMyMTQKLSMgTUQ1IEZpbmdlcnByaW50OiA0OTo2MzphZToyNzpmNDpkNTo5NTozZDpkODpkYjoyNDo4NjpiODo5YzowNzo1MwotIyBTSEExIEZpbmdlcnByaW50OiBkMzpjMDo2MzpmMjoxOTplZDowNzozZTozNDphZDo1ZDo3NTowYjozMjo3NjoyOTpmZjpkNTo5YTpmMgotIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDc5OjNjOmJmOjQ1OjU5OmI5OmZkOmUzOjhhOmIyOjJkOmYxOjY4OjY5OmY2Ojk4OjgxOmFlOjE0OmM0OmIwOjEzOjlhOmM3Ojg4OmE3OjhhOjFhOmZjOmNhOjAyOmZiCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUR6ekNDQXJlZ0F3SUJBZ0lEQVd3ZU1BMEdDU3FHU0liM0RRRUJCUVVBTUlHTk1Rc3dDUVlEVlFRR0V3SkIKLVZERklNRVlHQTFVRUNndy9RUzFVY25WemRDQkhaWE11SUdZdUlGTnBZMmhsY21obGFYUnpjM2x6ZEdWdFpTQnAKLWJTQmxiR1ZyZEhJdUlFUmhkR1Z1ZG1WeWEyVm9jaUJIYldKSU1Sa3dGd1lEVlFRTERCQkJMVlJ5ZFhOMExXNVIKLWRXRnNMVEF6TVJrd0Z3WURWUVFEREJCQkxWUnlkWE4wTFc1UmRXRnNMVEF6TUI0WERUQTFNRGd4TnpJeU1EQXcKLU1Gb1hEVEUxTURneE56SXlNREF3TUZvd2dZMHhDekFKQmdOVkJBWVRBa0ZVTVVnd1JnWURWUVFLREQ5QkxWUnkKLWRYTjBJRWRsY3k0Z1ppNGdVMmxqYUdWeWFHVnBkSE56ZVhOMFpXMWxJR2x0SUdWc1pXdDBjaTRnUkdGMFpXNTIKLVpYSnJaV2h5SUVkdFlrZ3hHVEFYQmdOVkJBc01FRUV0VkhKMWMzUXRibEYxWVd3dE1ETXhHVEFYQmdOVkJBTU0KLUVFRXRWSEoxYzNRdGJsRjFZV3d0TURNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUIKLUFRQ3RQV0Z1QS9PUU84QkJDNFNBemV3cW81MXJ1MjdDUW9UM1VSVGhvS2d0VWFOUjh0NGo4RFJFLzVUcnpBVWoKLWxVQzVCM2lsSmZZS3ZVV0c2Tm05d0FTT2hVUmg3MytueWZyQkpjeUZMR00vQldCelNRWGdZSGlWRUV2YytSRloKLXpuRi9RSnVLcWlUZkMwTGkyMWE4U3RLbERKdTNRejdkZzlNbUVBTFA2aVBFU1U3bDArbTBpS3NNcm1LUzFHV0gKLTJXclg5SVdmNURNaUphWGx5RE82dzhkQjNGL0dhc3dBRG0weXFMYUhOZ0JpZDVzZUh6VExrRHg0aUhRRjYzbjEKLWszRmx5cDNIYXhndFBWeE81OVg0UHpGOWo0ZnNDaUl2SStuK3UzM0o0UFRzNjN6RXNNTXRZcldhY2RheGF1anMKLTJlM1ZjdXkrVndIT0JWV2YzdEZnaUJDekFnTUJBQUdqTmpBME1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0VRWUQKLVZSME9CQW9FQ0VScWxXZFZlUkZQTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzBCQVFVRkFBT0MKLUFRRUFWZFJVMFZsSVhMT1RoYXEvWXkva2dNNDBvelJpUHZiWTdtZUlNUVFEYnd2VUIvdE9kUS9UTHRQQUY4ZkcKLUtPd0dEUkVrRGc2bFhiK01zaE9XY2R6VXpnNE5DbWd5YkxsQk1SbXJzUWQ3VFpqVFhMRFI4S2RDb0xYRWpxLysKLThULzA3MDlHQUhickF2djVuZEpBbHNlSU9yaWZFWG56Z0dXb3ZSL1RlSUdnVVV3M3RLWmRKWERSWnNsbytTNFIKLUZHanhWSmdJckNhU0Q5NkpudFQ2czNrcjBxTjUxT3lMcklkVGFFSk1VVkYwSGhzbkx1UDFIeWwwVGUydjkrR1MKLW1ZSG92anJIRjFEMnQ4YjhtN0NLYTlhSUE1R1BCbmM2aFFMZG1OVkRlRC9HTUJXc20ydkxWN2VKVVlzNjZNbUUKLUROdXhVQ0FLR2txNmFocTk3QnZJeFlTYXpRPT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLQogIyBJc3N1ZXI6IENOPVRXQ0EgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBPPVRBSVdBTi1DQSBPVT1Sb290IENBCiAjIFN1YmplY3Q6IENOPVRXQ0EgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBPPVRBSVdBTi1DQSBPVT1Sb290IENBCiAjIExhYmVsOiAiVFdDQSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IgpAQCAtMzY5OSw2ICszMTkwLDQ1IEBACiBTam5SQlVrTHA3WTNnYVZkaktvelhvRW9mS2Q5SitzQXJvMDMKIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KIAorIyBJc3N1ZXI6IENOPUVDLUFDQyBPPUFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0wODAxMTc2LUkpIE9VPVNlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8vVmVnZXUgaHR0cHM6Ly93d3cuY2F0Y2VydC5uZXQvdmVyYXJyZWwgKGMpMDMvSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMKKyMgU3ViamVjdDogQ049RUMtQUNDIE89QWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYtSSkgT1U9U2VydmVpcyBQdWJsaWNzIGRlIENlcnRpZmljYWNpby9WZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMy9KZXJhcnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lcworIyBMYWJlbDogIkVDLUFDQyIKKyMgU2VyaWFsOiAtMjM3MDE1NzkyNDc5NTU3MDkxMzk2MjY1NTUxMjY1MjQ4MjA0NzkKKyMgTUQ1IEZpbmdlcnByaW50OiBlYjpmNTo5ZDoyOTowZDo2MTpmOTo0MjoxZjo3YzpjMjpiYTo2ZDplMzoxNTowOQorIyBTSEExIEZpbmdlcnByaW50OiAyODo5MDozYTo2Mzo1Yjo1Mjo4MDpmYTplNjo3Nzo0YzowYjo2ZDphNzpkNjpiYTphNjo0YTpmMjplOAorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDg4OjQ5OjdmOjAxOjYwOjJmOjMxOjU0OjI0OjZhOmUyOjhjOjRkOjVhOmVmOjEwOmYxOmQ4OjdlOmJiOjc2OjYyOjZmOjRhOmUwOmI3OmY5OjViOmE3Ojk2Ojg3Ojk5CistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUZWakNDQkQ2Z0F3SUJBZ0lRN2lzOTY5UWgzaFNvWXF3RTg5M0VBVEFOQmdrcWhraUc5dzBCQVFVRkFEQ0IKKzh6RUxNQWtHQTFVRUJoTUNSVk14T3pBNUJnTlZCQW9UTWtGblpXNWphV0VnUTJGMFlXeGhibUVnWkdVZ1EyVnkKK2RHbG1hV05oWTJsdklDaE9TVVlnVVMwd09EQXhNVGMyTFVrcE1TZ3dKZ1lEVlFRTEV4OVRaWEoyWldseklGQjEKK1lteHBZM01nWkdVZ1EyVnlkR2xtYVdOaFkybHZNVFV3TXdZRFZRUUxFeXhXWldkbGRTQm9kSFJ3Y3pvdkwzZDMKK2R5NWpZWFJqWlhKMExtNWxkQzkyWlhKaGNuSmxiQ0FvWXlrd016RTFNRE1HQTFVRUN4TXNTbVZ5WVhKeGRXbGgKK0lFVnVkR2wwWVhSeklHUmxJRU5sY25ScFptbGpZV05wYnlCRFlYUmhiR0Z1WlhNeER6QU5CZ05WQkFNVEJrVkQKK0xVRkRRekFlRncwd016QXhNRGN5TXpBd01EQmFGdzB6TVRBeE1EY3lNalU1TlRsYU1JSHpNUXN3Q1FZRFZRUUcKK0V3SkZVekU3TURrR0ExVUVDaE15UVdkbGJtTnBZU0JEWVhSaGJHRnVZU0JrWlNCRFpYSjBhV1pwWTJGamFXOGcKK0tFNUpSaUJSTFRBNE1ERXhOell0U1NreEtEQW1CZ05WQkFzVEgxTmxjblpsYVhNZ1VIVmliR2xqY3lCa1pTQkQKK1pYSjBhV1pwWTJGamFXOHhOVEF6QmdOVkJBc1RMRlpsWjJWMUlHaDBkSEJ6T2k4dmQzZDNMbU5oZEdObGNuUXUKK2JtVjBMM1psY21GeWNtVnNJQ2hqS1RBek1UVXdNd1lEVlFRTEV5eEtaWEpoY25GMWFXRWdSVzUwYVhSaGRITWcKK1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVOaGRHRnNZVzVsY3pFUE1BMEdBMVVFQXhNR1JVTXRRVU5ETUlJQklqQU4KK0Jna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXN5TEhUK0tYUXBXSVI0TkE5aDBYODROekpCNVIKKzg1aUt3NUs0LzBDUUJYQ0hZTWtBcWJXVVpSa2lGUmZDUTJ4bVJKb05CRDQ1YjZWTGVxcGp0NHBFbmRsamtZUm0KKzRDZ1B1a0xqYm83M0ZDZVRhZTZSRHFOZkRySHJacUp5VHhJVGhtVjZQdHRQQi9TbkNXRGFPa0taeDdKL3N4YVYKK0hNZjVOTFdVaGRXWlhxQklvSDduRjJXNG9uVzRIdlBsUW4ydjdmT0tTR1JkZ2hTVDJNRGsvN05RY3ZKMjlyTmQKK1FsQjUwSlErYXd3QXZ0aHJEazRxN0Q3U3pJS2lHR1V6RTNlZW1sMGFFOWpEMnozSWwzcnVjTzJuNW56YmNjOHQKK2xHTGZiZGIxT0w0L3BZVUtHYmlvMkFsMVFuREU2dS9MRHNnMHFCSWltQXk0RTVTMlMrencwSkRuSndJREFRQUIKK280SGpNSUhnTUIwR0ExVWRFUVFXTUJTQkVtVmpYMkZqWTBCallYUmpaWEowTG01bGREQVBCZ05WSFJNQkFmOEUKK0JUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFkQmdOVkhRNEVGZ1FVb01PTFJLbzNwVVcvbDRCYTBmRjQKK29wdnBYWTB3ZndZRFZSMGdCSGd3ZGpCMEJnc3JCZ0VFQWZWNEFRTUJDakJsTUN3R0NDc0dBUVVGQndJQkZpQm8KK2RIUndjem92TDNkM2R5NWpZWFJqWlhKMExtNWxkQzkyWlhKaGNuSmxiREExQmdnckJnRUZCUWNDQWpBcEdpZFcKK1pXZGxkU0JvZEhSd2N6b3ZMM2QzZHk1allYUmpaWEowTG01bGRDOTJaWEpoY25KbGJDQXdEUVlKS29aSWh2Y04KK0FRRUZCUUFEZ2dFQkFLQklXNElCOWsxSXVEbFZOWnlBZWxPWjFWci9zWEU3ekRrSmxGN1cydSsrQVZ0ZDB4N1kKKy9YMVB6YUJCNERTVHY4dmlocHcza3BCV0hOenJLUVhseEo3SE5kK0tETTNGSVVQcHFvamxOY0FaUW1OYUFsNmsKK1NCZzZoVy9jbmJ3L25aekJoN2g2WVFqcGR3dC9jS3Q2M2RtWExHUWVoYis4ZEphaHczb1M3QXdhYm9NTVBPaHkKK1JwLzdTTlZlbCtheG9mams3MFlsbEp5SjIyazR2dXhjRGxiSFpWSGxVSWlJdjBMVkt6M2wrYnFlTHJQSzlIT1MKK0FndStUR2JySVA2NXk3V1pmK2EyRS9yS1MwM1o3bE5HQmp2R1RxMlRXb0YrYkNwTGFnVkZqUElocERHUWgyeGwKK25KMmxZSlU2VW4vMTBhc0lidlB1Vy9tSVBYNjRiMjRENUVJPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorCiAjIElzc3VlcjogQ049SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMSBPPUhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5CiAjIFN1YmplY3Q6IENOPUhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTEgTz1IZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENlcnQuIEF1dGhvcml0eQogIyBMYWJlbDogIkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTEiCkBAIC01MTEyLDMgKzQ2NDIsNzQ4IEBACiA1MTVkVGd1RG5GdDJLYUFKSmlGcVlnSXdjZEsxajF6cU8rRjRDWVdvZFpJN3lGejlTTzhOZENLb0NPSnV4VW5PCiB4d3k4cDJGcDhmYzc0U3JMK1N2elpwQTMKIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENBIC0gRzMgTz1TdGFhdCBkZXIgTmVkZXJsYW5kZW4KKyMgU3ViamVjdDogQ049U3RhYXQgZGVyIE5lZGVybGFuZGVuIFJvb3QgQ0EgLSBHMyBPPVN0YWF0IGRlciBOZWRlcmxhbmRlbgorIyBMYWJlbDogIlN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENBIC0gRzMiCisjIFNlcmlhbDogMTAwMDMwMDEKKyMgTUQ1IEZpbmdlcnByaW50OiAwYjo0Njo2NzowNzpkYjoxMDoyZjoxOTo4YzozNTo1MDo2MDpkMTowYjpmNDozNworIyBTSEExIEZpbmdlcnByaW50OiBkODplYjo2Yjo0MTo1MTo5Mjo1OTplMDpmMzplNzo4NTowMDpjMDozZDpiNjo4ODo5NzpjOTplZTpmYworIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDNjOjRmOmIwOmI5OjVhOmI4OmIzOjAwOjMyOmY0OjMyOmI4OjZmOjUzOjVmOmUxOjcyOmMxOjg1OmQwOmZkOjM5Ojg2OjU4OjM3OmNmOjM2OjE4OjdmOmE2OmY0OjI4CistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUZkRENDQTF5Z0F3SUJBZ0lFQUppaU9UQU5CZ2txaGtpRzl3MEJBUXNGQURCYU1Rc3dDUVlEVlFRR0V3Sk8KK1RERWVNQndHQTFVRUNnd1ZVM1JoWVhRZ1pHVnlJRTVsWkdWeWJHRnVaR1Z1TVNzd0tRWURWUVFERENKVGRHRmgKK2RDQmtaWElnVG1Wa1pYSnNZVzVrWlc0Z1VtOXZkQ0JEUVNBdElFY3pNQjRYRFRFek1URXhOREV4TWpnME1sb1gKK0RUSTRNVEV4TXpJek1EQXdNRm93V2pFTE1Ba0dBMVVFQmhNQ1Rrd3hIakFjQmdOVkJBb01GVk4wWVdGMElHUmwKK2NpQk9aV1JsY214aGJtUmxiakVyTUNrR0ExVUVBd3dpVTNSaFlYUWdaR1Z5SUU1bFpHVnliR0Z1WkdWdUlGSnYKK2IzUWdRMEVnTFNCSE16Q0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQUw0eW9sUVAKK2NQc3NYRm5yYk1Ta1VlaUZLclBNU2pUeXNGL3pEc2NjUFZNZWlBaG8yRzg5cmNLZXpJSm5CeWVIYUhFNm4zV1cKK0lrWUZzTzJ0eDF1ZUt0NmMvRHJHbGFmMUYyY1k1eTlKQ0F4Y3orYk1OTzE0KzFDeDNHc3k4S0wrdGp6azdGcVgKK3h6OGVjQWd3b056RnMyMXYwSUp5RWF2U2dXaFpnaGUzZUpKZytzemVQNFRyalRnemtBcHlJL28xekNaeE1kRnkKK0tKTFpXeU50WnJWdEIwTHJwalBPa3R2QTlteGplTTNLVGoyMTVWS2I4YjQ3NWxSZ3NHWWVDYXNIL2xTSkVVTFIKKzl5UzZZSGdhbVBmSkVmMFd3VFVhVkhYdlE5UGxyazdPNTN2RHhrNWhVVXVybWtWTG9SOUJ2VWhURlhGa0M0YXoKKzVTNit6cVFid1NtRW9yWExDQ04yUXlJa0h4Y0UxRzZjeHZ4L0syWWE3SXJsMXM5TjlXTUp0eFU1MW51czYrTjgKKzZVNzhkVUxJN1ZpVkRBWkNvcHozNUhDejMzSnZXamRBaWRpRnBOZnhDOTVER2RSS1dDeU1pam1ldjRTSDhSWTcKK05nenAwN1RLYkJsQlVnbWhIYkJxdjRMdmNGRWhNdHdGZG96TDkyVGtBMUN2akpGbnE4WHk3bGpZM3I3MzV6SFAKK2JNazdjY0hWaUxWbHZNRG9GeGNIRXJWYzBxc2drN1RtZ29Od05zWE5vNDJ0aSt5andVT0g1a1BpTkw2Vml6WHQKK0J6bmFxQjE2bnphZUVyQU1aUktRRldEWkprQkU0MVpncFJEVWFqejlRZHdPV2tlMjc1ZGhkVS9aL3NleUhkVHQKK1hVbXpxV3JMWm9RVDFWeWczTjl1ZHdiUmNYWElWMit2RDNkYkFnTUJBQUdqUWpCQU1BOEdBMVVkRXdFQi93UUYKK01BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQjBHQTFVZERnUVdCQlJVcmZySGtsZXV5aldjTGhMNzVMcGQKK0lOeVVWekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBTUptZEJUTElYZzQ3bUFFNmlxVG5CL2Q2K09lYTMxQkQKK1U1Y3FQY284UjVndTRSVjc4Wkx6WWRxUUpSWmx3SjlVWFE0RE8xdDNBcHlFdGcyWVh6VGRPMlBDd3lpQndwd3AKK0xpbml5TU1COGpQcUtxck1DUWozWldmR3pkL1R0aXVudmN6UkRuQmZ1Q1BSeTVGT0N2VElldVhaWXpiQjFOLzgKK0lwZjNZRjNxS1M5WXNyMVl2WTJXVHhCMXYwaDdQVkdIb1R4MElzTDhCMytBM01Tcy9tckJjREN3Nlk1cDRpeHAKK2daUUp1dDMrVGNDRGpKUll3RVlncjV3ZkF2ZzFWVWt2UnRUQThLQ1dBZzh6eFhIem5pTjlsTGY5T3RNSmd3WWgKKy9XQTlyakxBMHU2TnB2RG50SUo4Q3N4d3lYbUErUDVNOXpXRUdZb3grd3JaMTMrYjhLS2FhOE1GU3UxQllCUXcKKzBhb1JRbTdUSXdJRUM4WmwzZDFTZDlxQmE3S28rZ0U0dVpicUtteG5sNG1VbnJ6aFZOWGthbmp2U3Iwcm1qMUEKK2ZzYkFkZEp1KzJndzdPeUxuZmxKTlpvYUxObXpsVG5WSHBMM3BybGxMK1U5YlRwSVRBamM1Q2dTS0w1OU5WenEKKzRCWitFeHRxMXo3WG52d3RkYkxCRk5VakE5dGJid3MrZUM4TjNqT05GcmRJNTRPYWdROTd3VU5OVlFRWE9FcFIKKzFWbWlpWFRUbjc0ZVM5ZkdiYmVJSkc5Z2thU0NoVnRXUWJ6UVJLdHFFNzdSTEZpM0VqTllzamRqM0JQMWxCMC8KK1FGSDFUL1U2N2NqRjY4SWVIUmFWZXNkK1FuR1Ria3NWdHpEZnF1MVhoVWlzSFdyZE9Xbms0WGw0dnM0RnY2RU0KKzk0QjdJV2NuTUZrPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorCisjIElzc3VlcjogQ049U3RhYXQgZGVyIE5lZGVybGFuZGVuIEVWIFJvb3QgQ0EgTz1TdGFhdCBkZXIgTmVkZXJsYW5kZW4KKyMgU3ViamVjdDogQ049U3RhYXQgZGVyIE5lZGVybGFuZGVuIEVWIFJvb3QgQ0EgTz1TdGFhdCBkZXIgTmVkZXJsYW5kZW4KKyMgTGFiZWw6ICJTdGFhdCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQSIKKyMgU2VyaWFsOiAxMDAwMDAxMworIyBNRDUgRmluZ2VycHJpbnQ6IGZjOjA2OmFmOjdiOmU4OjFhOmYxOjlhOmI0OmU4OmQyOjcwOjFmOmMwOmY1OmJhCisjIFNIQTEgRmluZ2VycHJpbnQ6IDc2OmUyOjdlOmMxOjRmOmRiOjgyOmMxOmMwOmE2Ojc1OmI1OjA1OmJlOjNkOjI5OmI0OmVkOmRiOmJiCisjIFNIQTI1NiBGaW5nZXJwcmludDogNGQ6MjQ6OTE6NDE6NGM6ZmU6OTU6Njc6NDY6ZWM6NGM6ZWY6YTY6Y2Y6NmY6NzI6ZTI6OGE6MTM6Mjk6NDM6MmY6OWQ6OGE6OTA6N2E6YzQ6Y2I6NWQ6YWQ6YzE6NWEKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRmNEQ0NBMWlnQXdJQkFnSUVBSmlXalRBTkJna3Foa2lHOXcwQkFRc0ZBREJZTVFzd0NRWURWUVFHRXdKTworVERFZU1Cd0dBMVVFQ2d3VlUzUmhZWFFnWkdWeUlFNWxaR1Z5YkdGdVpHVnVNU2t3SndZRFZRUUREQ0JUZEdGaAorZENCa1pYSWdUbVZrWlhKc1lXNWtaVzRnUlZZZ1VtOXZkQ0JEUVRBZUZ3MHhNREV5TURneE1URTVNamxhRncweQorTWpFeU1EZ3hNVEV3TWpoYU1GZ3hDekFKQmdOVkJBWVRBazVNTVI0d0hBWURWUVFLREJWVGRHRmhkQ0JrWlhJZworVG1Wa1pYSnNZVzVrWlc0eEtUQW5CZ05WQkFNTUlGTjBZV0YwSUdSbGNpQk9aV1JsY214aGJtUmxiaUJGVmlCUworYjI5MElFTkJNSUlDSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQWc4QU1JSUNDZ0tDQWdFQTQ4ZCtpZmtrU3pyUworTTRNMUxHbnMzQW1rNDFHb0pTdDV1QWc5NEpHNmhJWEdoYVRLNXNrdVU2VEpKQjc5VldaeFhTekZZR2dFdDluQworVWlZNGlLVFdPMENtd3MwL3paaVRzMVFVV0paVjFWRCtocTJrWTM5Y2gvYU81aWVTWnhlU0FnTXMzTlptZE8zZAorWi8vQllZMWpUdytiYlJjd0p1K3IwaDhRb1BuRmZ4WnBnUU5IN1I1b2pYS2hUYklteHJwc1gyM1dyOUd4RTQ2cAorcmZOZWFYVW1HRDVCS3lGLzdvdGRCd2FkUThRcENpdjhLajZHeXp5RE92bkpEZHJGbWVLOGVFRXpkdUcvTDEzbAorcEpoUURCWGQ0UHFjZnpobzBMS21lcWZSTWIxK2lsZ25RN082TTVIVHA1Z1ZYSnJtMHc5MTJmeEJtSmMrcWlYYgorajVJdXNIc01YL0ZqcVRmNW0zVnBUQ2dtSmRyVjhoSndSVlhqMzNOZU4vVWhiSkNPTlZySjB5UHIwOEMrZUt4QworS0ZobXBVWnRjQUxYRVBsTFZQeGRoa3FIejMvS1Jhd1JXclVnVVkwdmlFZVhPY0RQdXNCQ0FVQ1pTQ0VMYTZmUworL1piVjBiNUduVW5nQzZhZ0lrNDQwTUU4TUx4d2p5eDF6TkRGakZFN1BaUUlaQ1poZmJuRFpZOFVuQ0hRcXYwWAorY2dPUHZadU01bDVUbnJtZDc0Szc0YnppY2tGYklaVFRSVGVVMGQ4Sk9WM25JNnFhSGNwdHFBcUdoWXFDdmtJSAorMXZJNGduUGFoMXZsUE5PZVBxYzdudlFEcy9ueGZSTjBBdis3b2VYNkFIa2NwbVpCaUZ4Z1Y2WXVDY1M2L1pyUAorcHg5QXc3dk1XZ3BWU3pzNGRsRzRZNHVFbEJibVZ2TUNBd0VBQWFOQ01FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQgorL3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRlA2ckFKQ1luaVQ4cWN3YWl2c251TDh3YnFnNworTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFEUGR5eHVWcjVPczdhRUFKU3JSOGtOMG5iSGhwOGRCOU8ydExzSQorZUs5cDBndEozalBGckszQ2lBSjlCcmMxQXNGZ3liL0U2SlRlMU5PcEV5VmEvbTZpcm4wRjNIM3piUEIrcG8zdQorMmRmT1dCZm9xU211YzBpSDU1dktiaW1oWkY4WkUvZXVCaEQvVWNhYlRWVWxUNU9aRUFGVGRmRVR6c2VtUVVIUwordjRpbGYwWDhyTGlsdFRNTWdzVDdCL1pxNVNXRVh3Ykt3WVk1RWR0WXpYYzdMTUpNRDE2YTQvQ3JQbUViVUNUQword1BUeEdmQVJLYmFsR0FLYjEyTk1jSXhIb3dORFhMbGRScUFOYi85WmpyN2RuM0xEV3l2ZmpGdk81UXhHYkpLeQorQ3FOTVZFSVlGUklZdmRyOHVuUnUvOEcyb0dUWXFWOVZycDljYW5hVzJITm5oL3ROZjF6dWFjcHpFUHVLcWYyZQordlRZNFNVbUg5QTRVOE9tSHVEK25UM3Bham5uVWsrUzdhRktFckd6cDg1aHdWWEl5K1RTckswbTF6U0JpNURwNgorWjJPcmx0eHRycGZzL0o5MlZvZ3VaczlidHNta3NOY0Z1dUVuTDVPN0ppcWlrN0FiODQ2K0hVQ2p1VGFQUG9JYQorR2w2STZsRDRXZUtEUmlrTDQwUmM0WlcyYVpDYUZHK1hyb0hQYU8rWm1yNjE1K0YvK1BvVFJ4Wk16RzBJUU9lTAorZUc5UWdrUlFQMllHaXF0RGhGWktEeUF0aGc3MTB0dlNlb3BMemFYb1R2RmVKaVVCV1NPZ2Z0TDJmaUZYMXllOAorRlZkTXBFYkI0SU1lREV4TkgwOEdHZUw1cVBRNmdxR3llVU41MXExdmVpZVFBNlRxSkljLzJiM1o2ZkpmVUVrYworN3V6WExnPT0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPUlkZW5UcnVzdCBDb21tZXJjaWFsIFJvb3QgQ0EgMSBPPUlkZW5UcnVzdAorIyBTdWJqZWN0OiBDTj1JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEgTz1JZGVuVHJ1c3QKKyMgTGFiZWw6ICJJZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEiCisjIFNlcmlhbDogMTMyOTg4MjEwMzQ5NDYzNDIzOTA1MjAwMDM4Nzc3OTY4Mzk0MjYKKyMgTUQ1IEZpbmdlcnByaW50OiBiMzozZTo3Nzo3Mzo3NTplZTphMDpkMzplMzo3ZTo0OTo2Mzo0OTo1OTpiYjpjNworIyBTSEExIEZpbmdlcnByaW50OiBkZjo3MTo3ZTphYTo0YTpkOTo0ZTpjOTo1NTo4NDo5OTo2MDoyZDo0ODpkZTo1ZjpiYzpmMDozYToyNQorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDVkOjU2OjQ5OjliOmU0OmQyOmUwOjhiOmNmOmNhOmQwOjhhOjNlOjM4OjcyOjNkOjUwOjUwOjNiOmRlOjcwOjY5OjQ4OmU0OjJmOjU1OjYwOjMwOjE5OmU1OjI4OmFlCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUZZRENDQTBpZ0F3SUJBZ0lRQ2dGQ2dBQUFBVVVqeUVTMUFBQUFBakFOQmdrcWhraUc5dzBCQVFzRkFEQksKK01Rc3dDUVlEVlFRR0V3SlZVekVTTUJBR0ExVUVDaE1KU1dSbGJsUnlkWE4wTVNjd0pRWURWUVFERXg1SlpHVnUKK1ZISjFjM1FnUTI5dGJXVnlZMmxoYkNCU2IyOTBJRU5CSURFd0hoY05NVFF3TVRFMk1UZ3hNakl6V2hjTk16UXcKK01URTJNVGd4TWpJeldqQktNUXN3Q1FZRFZRUUdFd0pWVXpFU01CQUdBMVVFQ2hNSlNXUmxibFJ5ZFhOME1TY3cKK0pRWURWUVFERXg1SlpHVnVWSEoxYzNRZ1EyOXRiV1Z5WTJsaGJDQlNiMjkwSUVOQklERXdnZ0lpTUEwR0NTcUcKK1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUNuVUJuZVA1azkxRE5HOFc5UllZS3lxVStQWjRsZGhObFQKKzNRd28yZGZ3LzY2VlEzS1orYlZkZklyQlF1RXhVSFRSZ1ExOHpac2hxMFBpcksxZWhtN3pDWW9mV2pLOW91dVUKKytlaGNDdXovbU5LdmNiTzBVNTlPaCsrU3ZMM3NUekl3aUVzWFhsZkVVOEwyQXBlTjJXSXJ2eVFmWW8zZnc3Z3AKK1MwbDRQSk5naUNMOG1kbzJ5TUtpMUN4VUFHYzFibk8vQWxqd3BOM2xzS0ltZXNyZ05xVVpGdlg5dCsrdVAwRDEKK2JWb0UvYzQweWlUY2RDTWJYVE1URWwzRUFTWDJNTjBDWFovZzFVZTl0T3Nib2J0SlNkaWZXd0x6aXVRa2tPUmkKK1QwL0JyNHNPZEJlbzBYS0lhbm9CU2N5MFJubkdGN0hhbUI0SFdmcDFJWVZsM1pCV3p2dXJwV0NkeEozNVVyQ0wKK3ZZZjVqeXNqQ2lOMk8vY3o0Y2tBODJuNVM2TGdUcngra3ptRUIvZEVjSDcrQjFybHNhelJHTXp5TmVWSlNRaksKK1ZzazkrdzhZZllzN3dSUENUWS9KVHc0MzZSK2hEbXJmWWk3TE5RWlJlU3pJSlRqMCtrdW5pVnljMHVNTk9ZWksKK2RIelZXWWZDUDA0TVhGTDBQZmRTZ3ZIcW82ejlTVFFhS1BOQmlEb1Q3dWplLzVrZFg3ckw2Qjd5dVZCZ3dESFQKK2MrWHZ2cUR0TXd0MHZpQWd4R2RzOEFnRGVsV0FmMFpPbHFmMEhqN2g5dGdKNFROa0syUFhNbDZmK2NCN0QzaHYKK2w3eVRtdm1jRXBCNGVvQ0hGZGR5ZEp4VmRIaXh1dUZ1Y0FTNlQ2QzZhTU43L3pId2N6MDlsQ3F4QzBFT29QNU4KK2lHVnJlVE8wMXdJREFRQUJvMEl3UURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIKKy96QWRCZ05WSFE0RUZnUVU3VVFad05Qd0JvdnVwSHUrUXVjbVZNaU9Obll3RFFZSktvWklodmNOQVFFTEJRQUQKK2dnSUJBQTJ1a0RMMnBrdDhSSFlaWVI0bktNMWVWTzhsdk9NSWtQa3AxNjVvQ09HVUFGanZMaTUrVTFLTXRsd0gKKzZvaTZtWXRRbE5lQ2dOOWhDUUNUclEwVTVzN0I4amVVZUxCZm5MT2ljN2lQQlpNNHpZMCtzTGo3d00reDh1d3QKK0xSdk03S3FhczZwZ2doc3RPOE9FUFZlS2xoNmNkYmpUTU0xZ0NJT1EwNDVVOFUxbXdGMTBBMENqN29WK3doOTMKK25BYm93YWNZWFZLVjdjbmRKWjV0K3FudG96bzAwRmw3MnUxUTh6Vy83ZXNVVFRISFlQVGE4WWVjNGtqaXhzVTMKKyt3WVErblZaWmpGSEtkcDJtaHpwZ3E3dm1ybFI5NGdqbW1tVllqemxWWUEyMTFRQy8vRzVYYzdVSTIvWVJZUksKK1cyWHZpUXpkRktjZ3l4aWxKYlFOK1FId290TDBBTWgwanFFcVNJNWwyeFBFNGlVWGZldStoMXNYSUZSUmswcFQKK0F3dnNYY296N1dMOVJjY3ZXOXhZb0lBNTV2clgvaE1VcHUwOWxFcENkTlREZDFsenpZOUd2bFU0Ny9yb2tUTHEKK2wxZ0VJdDQ0dzh5OGJja3pPbW9LYVQrZ3lPcHlqNHhqaGlPOWJUeVducFhnU1V5cW9ya3FHNXcyZ1hqdHcraEcKKzRpWlpSSFVlMlhXSlVjMFFoSjFoWU10ZCtaY2lUWTZZNXVOLzlsdTdyczNLU29GclhndnpVZUYwSytsK0o2ZloKK21VbE8rS1dBMnlVUEhHTmlpc2t6WjJzOEVJUEdyZDZvelJhT2pmQUhOM0dmOHF2OFFmWEJpK3dBTjEwSjVVNkEKKzcvcXhYRGdHcFJ0SzRkdzRMVHpjcXgrUUd0VktuTzdSY0d6TTd2UlgrQmk2aEc2SAorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorCisjIElzc3VlcjogQ049SWRlblRydXN0IFB1YmxpYyBTZWN0b3IgUm9vdCBDQSAxIE89SWRlblRydXN0CisjIFN1YmplY3Q6IENOPUlkZW5UcnVzdCBQdWJsaWMgU2VjdG9yIFJvb3QgQ0EgMSBPPUlkZW5UcnVzdAorIyBMYWJlbDogIklkZW5UcnVzdCBQdWJsaWMgU2VjdG9yIFJvb3QgQ0EgMSIKKyMgU2VyaWFsOiAxMzI5ODgyMTAzNDk0NjM0MjM5MDUyMTk3NjE1Njg0MzkzMzY5OAorIyBNRDUgRmluZ2VycHJpbnQ6IDM3OjA2OmE1OmIwOmZjOjg5OjlkOmJhOmY0OjZiOjhjOjFhOjY0OmNkOmQ1OmJhCisjIFNIQTEgRmluZ2VycHJpbnQ6IGJhOjI5OjQxOjYwOjc3Ojk4OjNmOmY0OmYzOmVmOmYyOjMxOjA1OjNiOjJlOmVhOjZkOjRkOjQ1OmZkCisjIFNIQTI1NiBGaW5nZXJwcmludDogMzA6ZDA6ODk6NWE6OWE6NDQ6OGE6MjY6MjA6OTE6NjM6NTU6MjI6ZDE6ZjU6MjA6MTA6YjU6ODY6N2E6Y2E6ZTE6MmM6Nzg6ZWY6OTU6OGY6ZDQ6ZjQ6Mzg6OWY6MmYKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRlpqQ0NBMDZnQXdJQkFnSVFDZ0ZDZ0FBQUFVVWp6MFo4QUFBQUFqQU5CZ2txaGtpRzl3MEJBUXNGQURCTgorTVFzd0NRWURWUVFHRXdKVlV6RVNNQkFHQTFVRUNoTUpTV1JsYmxSeWRYTjBNU293S0FZRFZRUURFeUZKWkdWdQorVkhKMWMzUWdVSFZpYkdsaklGTmxZM1J2Y2lCU2IyOTBJRU5CSURFd0hoY05NVFF3TVRFMk1UYzFNek15V2hjTgorTXpRd01URTJNVGMxTXpNeVdqQk5NUXN3Q1FZRFZRUUdFd0pWVXpFU01CQUdBMVVFQ2hNSlNXUmxibFJ5ZFhOMAorTVNvd0tBWURWUVFERXlGSlpHVnVWSEoxYzNRZ1VIVmliR2xqSUZObFkzUnZjaUJTYjI5MElFTkJJREV3Z2dJaQorTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDMklwVDhwRWl2NkVkckN2c25kdVR5UDRvNworZWtvc01TcU1qYkNwd3pGcnFIZDJoQ2EycklGQ0RRanJWVmk3ZXZpOFpYM3lvRzJMcUVmcFluWWVFZTRJRk5HeQorUkJiMDZ0RDZIaTllMjh0elFhNjhBTEJLSzBDeXJPRTdTOEl0bmVTaG0rd2FPaDd3Q0xQUTVDUTFCNStjdE1sUworYmRzSHlvKzFXL0NEODAvSExhWElyY3VWSUtReEtGZFlXdVNORzVxcm5nME04Z296T1NJNUNwY3U4MU4zdVVSRgorL1lUTE5pQ0JXUzJhYjIxSVNHSEtUTjlUMGE5U3ZFU2ZxeTlyZzNMdmRZRGFCak1iWGNqYVk4Wk56YXhtTWMzUgorM2o2SEVEYmh1YVI2NzJCUXNzdktwbGJnTjYrck5CTTVKZWc1WnVTWWVxb1NtSnhaWm9ZK3JmR3d5ajRHRDN2dworRVVzM29FUnRlOHVvakhIMDFiV1JOc3p3RmNZcjNsRVhzWmRNVUQyeGxWbDhCWDB0SWRVQXZ3Rm5vbDU3cGx6eQorOXlMeGtBMlQyNnBFVVdiTWZYWUQ2MnFvS2pnWmwzWU5hNHBoK2J6MjduYjljQ3ZkS1R6NENoNWJRaHlMVmk5VgorR3h5aExyWEhGdWI0cWp5U2ptbTJBY0cxaHAySkR3czRsRlRvNnR5ZVBTVzhVeWJ0MWFzNXFzVkFURlNyc3JUWgorMmZqWGN0c2N2RzI5WlYvdmlEVXFaaS91OXJObDhET05mSmhCYVVZUFF4eHArcHUxMEdGcXpjcEwyVXlRUnFzVgorV2FGSFZDa3VneWhmSE1LaXEzSVhBQWFPUmV5TDRqTTlmOW9aUk9SaWNzUGZJc2J5VnRUZFg1Vnk3VzFmOTBnRAorVy8zRktxRDJjeU9FRUJzQjV3SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0R3WURWUjBUQVFILworQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVNDNIZ250aW5RdG5iY1pGcmxKUHJ3NlBSRktNd0RRWUpLb1pJaHZjTgorQVFFTEJRQURnZ0lCQUVmNjNRcXdFWkU0clUxZDkrVU9sMVFaZ2tpSFZJeXFaSm5ZV3Y2SUFjVllwWm14STFRagordDJvZElGZmxBV0pCRjlNSjIzWExibFNRZGY0YW40RUt3dDNYOXduUVczSVY1QjRKYWowejh5R2E1aFYrclZIVgorRFJEdGZVTEFqKzdBbWdqVlFkWmNEaUZwYm9CaERoWEF1TS9GU1JKU3pMNDZ6TlF1T0FYZU5mMGZiN2lBYUpnOQorVGFES1FHWFNjM3oxaTlrS2xUL1lQeU50R3RFcUpCblpoYk1YNzNodXFWalJJOVBIRSsxeUpYOWRzWE53MEg4RworbHdtRUtZQmhIZnBlLzNPc29PT0p1Qnh4RmNiZU1YOFMzT0Z0bTYvbjZKOTFlRXlyUmp1YXpyOEZHRjFORlR3VworbWhsUUJKcXltbTlsaTFKZlBGZ0VLQ1hBWm1FeGZybmdkYmthcUlIV2NoZXp4UU14TlJGNGVLTGc2VENNZjREZgorV044OHVpZVc0b0EwYmVPWTAyUW5yRWgrS0hkY3hpVmhKZmlGREdYNnhESXZwWmdGNVBnTFp4WVd4b0s0TWhuNQorK2JsNTNCL042NityRHQwYjIwWGtldWNDNHBWZC9HbndVMmxobFhWNUMxNVY1amdjbEtsWk01N0ljWFI1ZjFHSgordHNocXVERElhampEYnA3aE54YnFCV0pNV3hKSDdhZTBzMWhXeDBuemZ4Sm9DVEZ4OEczNFRrZjcxb1h1eFZoQQorR2FRZHAvbExRemZjYUZwUHordkNaSFRldEJYWjlGUlVHaThjMTVkeFZKQ08yU0NkVXl0L3E0L2k2akM4VURmdgorOFVlMWZYd3NCT3hvbmJSSlJCRDBja3NjWk9mODVtdVEzV2w5YWYwQVZxVzNyTGF0dDhvK0FlK2MKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyIE89RW50cnVzdCwgSW5jLiBPVT1TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zLyhjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seQorIyBTdWJqZWN0OiBDTj1FbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMiBPPUVudHJ1c3QsIEluYy4gT1U9U2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtcy8oYykgMjAwOSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkKKyMgTGFiZWw6ICJFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMiIKKyMgU2VyaWFsOiAxMjQ2OTg5MzUyCisjIE1ENSBGaW5nZXJwcmludDogNGI6ZTI6Yzk6OTE6OTY6NjU6MGM6ZjQ6MGU6NWE6OTM6OTI6YTA6MGE6ZmU6YjIKKyMgU0hBMSBGaW5nZXJwcmludDogOGM6ZjQ6Mjc6ZmQ6Nzk6MGM6M2E6ZDE6NjY6MDY6OGQ6ZTg6MWU6NTc6ZWY6YmI6OTM6MjI6NzI6ZDQKKyMgU0hBMjU2IEZpbmdlcnByaW50OiA0MzpkZjo1Nzo3NDpiMDozZTo3ZjplZjo1ZjplNDowZDo5MzoxYTo3YjplZDpmMTpiYjoyZTo2Yjo0Mjo3Mzo4Yzo0ZTo2ZDozODo0MToxMDozZDozYTphNzpmMzozOQorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlFUGpDQ0F5YWdBd0lCQWdJRVNsT01LREFOQmdrcWhraUc5dzBCQVFzRkFEQ0J2akVMTUFrR0ExVUVCaE1DCitWVk14RmpBVUJnTlZCQW9URFVWdWRISjFjM1FzSUVsdVl5NHhLREFtQmdOVkJBc1RIMU5sWlNCM2QzY3VaVzUwCitjblZ6ZEM1dVpYUXZiR1ZuWVd3dGRHVnliWE14T1RBM0JnTlZCQXNUTUNoaktTQXlNREE1SUVWdWRISjFjM1FzCitJRWx1WXk0Z0xTQm1iM0lnWVhWMGFHOXlhWHBsWkNCMWMyVWdiMjVzZVRFeU1EQUdBMVVFQXhNcFJXNTBjblZ6CitkQ0JTYjI5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUMwZ1J6SXdIaGNOTURrd056QTNNVGN5CitOVFUwV2hjTk16QXhNakEzTVRjMU5UVTBXakNCdmpFTE1Ba0dBMVVFQmhNQ1ZWTXhGakFVQmdOVkJBb1REVVZ1CitkSEoxYzNRc0lFbHVZeTR4S0RBbUJnTlZCQXNUSDFObFpTQjNkM2N1Wlc1MGNuVnpkQzV1WlhRdmJHVm5ZV3d0CitkR1Z5YlhNeE9UQTNCZ05WQkFzVE1DaGpLU0F5TURBNUlFVnVkSEoxYzNRc0lFbHVZeTRnTFNCbWIzSWdZWFYwCithRzl5YVhwbFpDQjFjMlVnYjI1c2VURXlNREFHQTFVRUF4TXBSVzUwY25WemRDQlNiMjkwSUVObGNuUnBabWxqCitZWFJwYjI0Z1FYVjBhRzl5YVhSNUlDMGdSekl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCitBb0lCQVFDNmhMWnkyNTRNYStLWjZUQUJwM2JxTXJpVlFSckoybUZPV0hMUC92YUNlYjl6WVFZS3BTZllzMS9UCitSVTRjY3RaT012SnlpZy8zZ3huUWFvQ0FBRVVlc01mbm1yOFNWeWNjbzJndkNvZTlhbXNPWG1YekhIZlYxSVdOCitjQ0cwc3pMbmk2TFZoamtDc2JqU1I4N2t5VW5FTzZmZSsxUjlWNzd3Nkc3Q2ViSTZDMVhpVUpnV01oTmNMM2hXCit3Y0tVcy9KYTVDZWFueVRYeHV6UW15V0M0OHpDeEVYRmpKZDZCbXNxRVorcENtNUlPMi9iMUJFWlF2ZVBCNy8xCitVMStjUHZRWExPWnByRTR5VEdKMzZyZm81YnMwdkJtTHJweFI1N2QrdFZPeE15TGxiYzl3UEJyNjRwdG50b1AwCitqYVd2WWt4TjRGaXNaRFFTQS9pMmpaUmpKS1J4QWdNQkFBR2pRakJBTUE0R0ExVWREd0VCL3dRRUF3SUJCakFQCitCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUnFjaVo2MEI3dmZlYzdhVkhVYkkyZmtCSm1xekFOCitCZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFlWjhkbHNhMmVUOGlqWWZUaHdNRVlHcHJtaTVaaVhNUnJFUFI5UlAvCitqVGtyd1BLOVQzQ01xUy9xRjhRTFZKN1VHNWFZTXp5b3JXS2lBSGFyV1dsdUJoMSt4TGxFalppdkV0Umgyd29aCitSa2Z6Ni9kandVQUZRS1hTdC9TMW1qYS9xWWgyaUFSVkJDdWNoMzhhTnp4K0xhVWEyTlNKWHNxOXJEMXMyRzJ2CisxZk4yRDgwN2lEZ2luV3lUbXNROXY0SWJaVCttRDEycS9PV3lGY3ExcmNhOFBkQ0U2T29HY3JCTk9USjR2ejRSCituQXVrblpvaDgvQ2JDekI0MjhIY2gwUCt2R09heXNYQ0hNbkhqZjg3RWxnSTVyWTk3SG9zVHZ1RGxzNE1QR21ICitWSE9rYzhLVC8xRVFyQlZVQWRqOEJiR0pvWDkwZzVwSjE5eE9lNHBJYjR0RjlnPT0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMSBPPUVudHJ1c3QsIEluYy4gT1U9U2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtcy8oYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkKKyMgU3ViamVjdDogQ049RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxIE89RW50cnVzdCwgSW5jLiBPVT1TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zLyhjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seQorIyBMYWJlbDogIkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMSIKKyMgU2VyaWFsOiA1MTU0MzEyNDQ4MTkzMDY0OTExNDExNjEzMzM2OQorIyBNRDUgRmluZ2VycHJpbnQ6IGI2OjdlOjFkOmYwOjU4OmM1OjQ5OjZjOjI0OjNiOjNkOmVkOjk4OjE4OmVkOmJjCisjIFNIQTEgRmluZ2VycHJpbnQ6IDIwOmQ4OjA2OjQwOmRmOjliOjI1OmY1OjEyOjI1OjNhOjExOmVhOmY3OjU5OjhhOmViOjE0OmI1OjQ3CisjIFNIQTI1NiBGaW5nZXJwcmludDogMDI6ZWQ6MGU6YjI6OGM6MTQ6ZGE6NDU6MTY6NWM6NTY6Njc6OTE6NzA6MGQ6NjQ6NTE6ZDc6ZmI6NTY6ZjA6YjI6YWI6MWQ6M2I6OGU6YjA6NzA6ZTU6NmU6ZGY6ZjUKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJQytUQ0NBb0NnQXdJQkFnSU5BS2FMZVNrQUFBQUFVTkNSK1RBS0JnZ3Foa2pPUFFRREF6Q0J2ekVMTUFrRworQTFVRUJoTUNWVk14RmpBVUJnTlZCQW9URFVWdWRISjFjM1FzSUVsdVl5NHhLREFtQmdOVkJBc1RIMU5sWlNCMworZDNjdVpXNTBjblZ6ZEM1dVpYUXZiR1ZuWVd3dGRHVnliWE14T1RBM0JnTlZCQXNUTUNoaktTQXlNREV5SUVWdQorZEhKMWMzUXNJRWx1WXk0Z0xTQm1iM0lnWVhWMGFHOXlhWHBsWkNCMWMyVWdiMjVzZVRFek1ERUdBMVVFQXhNcQorUlc1MGNuVnpkQ0JTYjI5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUMwZ1JVTXhNQjRYRFRFeQorTVRJeE9ERTFNalV6TmxvWERUTTNNVEl4T0RFMU5UVXpObG93Z2I4eEN6QUpCZ05WQkFZVEFsVlRNUll3RkFZRAorVlFRS0V3MUZiblJ5ZFhOMExDQkpibU11TVNnd0pnWURWUVFMRXg5VFpXVWdkM2QzTG1WdWRISjFjM1F1Ym1WMAorTDJ4bFoyRnNMWFJsY20xek1Ua3dOd1lEVlFRTEV6QW9ZeWtnTWpBeE1pQkZiblJ5ZFhOMExDQkpibU11SUMwZworWm05eUlHRjFkR2h2Y21sNlpXUWdkWE5sSUc5dWJIa3hNekF4QmdOVkJBTVRLa1Z1ZEhKMWMzUWdVbTl2ZENCRAorWlhKMGFXWnBZMkYwYVc5dUlFRjFkR2h2Y21sMGVTQXRJRVZETVRCMk1CQUdCeXFHU000OUFnRUdCU3VCQkFBaQorQTJJQUJJUVR5ZEM2YlVGNzRtelE2MVZmWmdJYUpQUmJpV2xINDdqQ2ZmSHlBc1dmb1BaYjFZc0dHWVpQVXhCdAorQnlRbm9hRDQxVWNaWVV4OXlwTW42blFNNzIrV0NmNWo3SEJkTnExbmQ2N0puWHhWUkRxaVkxRWY5ZU5pMUtsSAorQno3TUlLTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwTworQkJZRUZMZGo1eHJkamVrSXBsV0RwT0JxVUVGbEVVSkpNQW9HQ0NxR1NNNDlCQU1EQTJjQU1HUUNNR0Y1Mk9WQworUjk4Y3JsT1pGN1p2SEgzaHZ4R1UwUU9JZGVTTmlhU0tkMGJlYldIdkF2WDd0ZC9NL2s3Ly9xbm1wd0l3VzVuWAoraFRjR3RYc0kvZXNuaTBxVStlSDZwNDRtQ09oOGttaHRjOWh2SnF3aEFyaVp0eVpCV3lWZ3J0QklHdTRHCistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCisKKyMgSXNzdWVyOiBDTj1DRkNBIEVWIFJPT1QgTz1DaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkKKyMgU3ViamVjdDogQ049Q0ZDQSBFViBST09UIE89Q2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5CisjIExhYmVsOiAiQ0ZDQSBFViBST09UIgorIyBTZXJpYWw6IDQwNzU1NTI4NgorIyBNRDUgRmluZ2VycHJpbnQ6IDc0OmUxOmI2OmVkOjI2OjdhOjdhOjQ0OjMwOjMzOjk0OmFiOjdiOjI3OjgxOjMwCisjIFNIQTEgRmluZ2VycHJpbnQ6IGUyOmI4OjI5OjRiOjU1Ojg0OmFiOjZiOjU4OmMyOjkwOjQ2OjZjOmFjOjNmOmI4OjM5OjhmOjg0OjgzCisjIFNIQTI1NiBGaW5nZXJwcmludDogNWM6YzM6ZDc6OGU6NGU6MWQ6NWU6NDU6NTQ6N2E6MDQ6ZTY6ODc6M2U6NjQ6Zjk6MGM6Zjk6NTM6NmQ6MWM6Y2M6MmU6Zjg6MDA6ZjM6NTU6YzQ6YzU6ZmQ6NzA6ZmQKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRmpUQ0NBM1dnQXdJQkFnSUVHRXJNMWpBTkJna3Foa2lHOXcwQkFRc0ZBREJXTVFzd0NRWURWUVFHRXdKRAorVGpFd01DNEdBMVVFQ2d3blEyaHBibUVnUm1sdVlXNWphV0ZzSUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eQorYVhSNU1SVXdFd1lEVlFRRERBeERSa05CSUVWV0lGSlBUMVF3SGhjTk1USXdPREE0TURNd056QXhXaGNOTWpreAorTWpNeE1ETXdOekF4V2pCV01Rc3dDUVlEVlFRR0V3SkRUakV3TUM0R0ExVUVDZ3duUTJocGJtRWdSbWx1WVc1agorYVdGc0lFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TVJVd0V3WURWUVFEREF4RFJrTkJJRVZXSUZKUAorVDFRd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUURYWFd2TkVEOGZCVm5WQlUwMworc1E3c21DdU9GUjM2azBzWGdpRnhFRkxYVVdSd0ZzSlZhVTJPRlcyZnZ3d2J3dUNqWjlZTXJNOGlycTkzVkNwTAorVElwVFVuckQ3aTdlczNFbHdlbGRQZTZoTDZQM0tqekpJeDFxcXgyaHAvSHo3S0RWUk04VnozSXZIV09YNkpuNQorL1pPa1ZJQk1VdFJTcXk1SjM1RE51RisrUDk2aHlrMGcxQ1hvaENsVHQ3R0lILy82MnBDZkNxa3RRVCt4OFJncAorN2haWkxEUkpHcWdHMTZpSTBnTnllakxpNm1oTmJpeVdaWHZLV2ZyeTR0M3VNQ3o3ekVhc3hHUHJiMzgyS3pSegorRXBSLzM4d21udkZ5WFZCbFdZOXBzNGRlTW0vREdJcTFsWSt3ZWpmZVdrVTd4emJoNzJmUk9kT1hXM05pR1VndAoraHh3RyszU1lJRWx6OEFYU0c3R2dvN2NiY05PSWFibGExamowWXR3bGkzaS8rT2grdUZ6SmxVOWZweTI1SUd2UAorYTkzMURmU0N0L1N5Wmk0UUtQYVhXbnVXRm84QkdTMXNibjg1V0Faa2d3R0RnOE5Oa3QweXhvZWtOK2tXenFvdAorYUs4S2dXVTZjTUdiclUxdFZNb3FMVXVGRzdPQTVuQkZEV3RlTmZCL083aWM1QVJ3aVJJbGs5b0ttU0pnYW1OZworVG5ZR21FNjlnNjBkV0lvbGhkTEhaUjR0anNiZnRzYmhmNG9FSVJVcGRQQStuSkNkREM3eGlqNWFxZ3dKSHNmVgorUEtQdGw4TWVOUG80K1FnTzQ4QmRLNFBSVm1ySnRxaFVVeTU0TW1jOWduOTAwUHZodGdWZ3VYRGJqZ3Y1RTFodgorY1dBUVVoQzV3VUVKNzNJZlp6RjQvNVlGalFJREFRQUJvMk13WVRBZkJnTlZIU01FR0RBV2dCVGovaTM5S05BTAordGJxMm9zUy9CcW9GakpQN0x6QVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBZAorQmdOVkhRNEVGZ1FVNC80dC9TalFDN1c2dHFMRXZ3YXFCWXlUK3k4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQgorQUNYR3VtdnJoOHZlZ2ptV1BmQkVwMnVFY3dQZW5TdFB1aUIvdkhpeXo1ZXdHNXp6MTNrdTlVaTIwdnNYaU9iVAorZWovdFV4UFE0aTlxZWNzQUl5am1IamRYTlltRXduWlBORGF0WjhQT1FRYUl4ZmZ1MkJxNDFndC9VUCtUcWhkTAorak96dFVtQ3lwQWJxVHV2MGF4bjk2L1VhNENVcW10ekhRVGIzeUhRRmhEbVZPZFlMTzZRbitnallYQjc0QkdCUworRVNnb0EvL3ZVMllBcFVvMEZtWjgvUW1rcnA1bkdtOUJDMnNHRTV1UGhuRUZ0QytOaVdZektYWlVtaEg0Si9xeQorUDVIZ3pnMGI4ekFhcmI4aVhSdlR2eVVGVGVHU0duK1puenhFazhyVVFFbHNnSWZYQkRyRE1sSTFEbGI0cGQxOQoreElzTkVSOVR5eDZ5Rjdab2QxcmcxTXZJQjY3MU9pNk9ON2ZRQVV0REtYZU1PWmVQZ2xyNFVlV0pvQmpuYUg5ZAorQ2k3N28wY09QYVlqZXNZQng0L0lYcjl0Z0ZhK2lpUzZNK3FmNFRJUm52SFNUNEQyRzBDdk9KNFJVSGx6RWhMTgorNW15ZExJaHlQRENCQnBFaTZsbXQyaGt1SXNLTnVZeUg0R2E4Y3lOZklXUmpnRWoxb0R3WVBaVElTRUVkUUxwZQorL3Y1V09hSEl6MTZlR1dSR0VOb1hrYmNGZ0t5TG1aSjk1NkxZQndzMkorZEllV0NLdzljVFhQaHlRTjlLeTgrWgorQUFvQUN4R1YybFpGQTRnS24yZlExWG14cUkxQWJRM0Nla0Q2ODE5a1I1TExVN203V2M1UC9kQVZVd0hZMyt2WgorNW5idjBDTzdPNmw1czlVQ0tjMkpvNVlQU2pYblRrTEFkYzBIeitZczYzc3UKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPVTDnFJLVFJVU1QgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINSBPPVTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uCisjIFN1YmplY3Q6IENOPVTDnFJLVFJVU1QgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINSBPPVTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uCisjIExhYmVsOiAiVMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1IgorIyBTZXJpYWw6IDE1NjIzMzY5OTE3MjQ4MQorIyBNRDUgRmluZ2VycHJpbnQ6IGRhOjcwOjhlOmYwOjIyOmRmOjkzOjI2OmY2OjVmOjlmOmQzOjE1OjA2OjUyOjRlCisjIFNIQTEgRmluZ2VycHJpbnQ6IGM0OjE4OmY2OjRkOjQ2OmQxOmRmOjAwOjNkOjI3OjMwOjEzOjcyOjQzOmE5OjEyOjExOmM2Ojc1OmZiCisjIFNIQTI1NiBGaW5nZXJwcmludDogNDk6MzU6MWI6OTA6MzQ6NDQ6YzE6ODU6Y2M6ZGM6NWM6Njk6M2Q6MjQ6ZDg6NTU6NWM6YjI6MDg6ZDY6YTg6MTQ6MTM6MDc6Njk6OWY6NGE6ZjA6NjM6MTk6OWQ6NzgKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRUp6Q0NBdytnQXdJQkFnSUhBSTRYL2lRZ2dUQU5CZ2txaGtpRzl3MEJBUXNGQURDQnNURUxNQWtHQTFVRQorQmhNQ1ZGSXhEekFOQmdOVkJBY01Ca0Z1YTJGeVlURk5NRXNHQTFVRUNneEVWTU9jVWt0VVVsVlRWQ0JDYVd4bgorYVNERXNHeGxkR25GbjJsdElIWmxJRUpwYkduRm4ybHRJRWZEdkhabGJteHB4SjlwSUVocGVtMWxkR3hsY21rZworUVM3Rm5pNHhRakJBQmdOVkJBTU1PVlREbkZKTFZGSlZVMVFnUld4bGEzUnliMjVwYXlCVFpYSjBhV1pwYTJFZworU0dsNmJXVjBJRk5oeEo5c1lYbkVzV1BFc1hQRXNTQklOVEFlRncweE16QTBNekF3T0RBM01ERmFGdzB5TXpBMAorTWpnd09EQTNNREZhTUlHeE1Rc3dDUVlEVlFRR0V3SlVVakVQTUEwR0ExVUVCd3dHUVc1cllYSmhNVTB3U3dZRAorVlFRS0RFUlV3NXhTUzFSU1ZWTlVJRUpwYkdkcElNU3diR1YwYWNXZmFXMGdkbVVnUW1sc2FjV2ZhVzBnUjhPOAorZG1WdWJHbkVuMmtnU0dsNmJXVjBiR1Z5YVNCQkxzV2VMakZDTUVBR0ExVUVBd3c1Vk1PY1VrdFVVbFZUVkNCRgorYkdWcmRISnZibWxySUZObGNuUnBabWxyWVNCSWFYcHRaWFFnVTJIRW4yeGhlY1N4WThTeGM4U3hJRWcxTUlJQgorSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXBDVVo0V1dlNjBnaFVFb0k1Ukh3V3JvbQorLzROWnprUXFMLzdoem1BRC9JMERwZTMvYTZpNnpEUUduMWsxOXV3c3U1MzdqVkpwNDV3bkVGUHpwQUxGcC9rUgorR21sMWJzTWRpOUdZalpPSHAzR1hEU0hIbWZsUzB5eGpYVlc4NkI4QlNMbGcva0pLOXNpQXJzMW1lcDVGaW1oMworNGtob242TGE4ZUhCRUovclBDbUJwK0V5Q05TZ0JiR00rNDJXQUE0K0pkOVRoaUk3L1BTOTh3bCtkK3lHNnc4egorNVVOUDlGUjFiU21aTG1aYVE5L0xYTXJJNVRqeGZqczFuUS8weFZxaHpQTWdnQ1RUVit3VnVuVWxtK2hrUzdNMAoraE84RXVQYkpiS29DUHJaVjRqSTNYL3htbDEvTjFwN0hJTDlOeHF3L2RWOGM3VEtjZkdrQWFaSGpJeGhUNlFJRAorQVFBQm8wSXdRREFkQmdOVkhRNEVGZ1FVVnBrSEh0T3NER2xrdEF4UVI5NURMTDRnd1Bzd0RnWURWUjBQQVFILworQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSjVGZG5zWAorU0RMeU9Jc3B2ZTZXU2s2QkdMRlJSeUROMEdTeERzblpBZGtKenNpWjNHZ2xFOVJjOHFQb0JQNXlDY2NMcWgwbAorVlg2V21sZTN1c1VSZWhubXAzNDloUTcxK1M0cEwrZjViRmdXVjFBbDlqNHVQcXJ0ZDNHcXFwbVdSZ3F1anV3cQorVVJhd1hzM3Fad1FjV0REMVlJcTlwcjFONVphMC9FS0pBV3YyY01oUU9Rd3QxV2JaeU5Lek1yY2JHVzNMTS9uZgorcGVZVmhEZnd3dkpsbHBLUWQvQ3Q5SkRwRVhqWGs0bkFQUXU2S2ZUb21aMXlqdTJkTCs2U2ZhSHgvMTI2TTJDRgorWXY0SEFxR0VWa2ErbGdxYUU5Y2hUTGQ4QjU5T1RqK1JkUHNublJITTNlYXh5bkZORXhjNUpzVXBJU3VUS1dxVworK3F0QjRVdTJOUXZBbXhVPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorCisjIElzc3VlcjogQ049VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2IE89VMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4KKyMgU3ViamVjdDogQ049VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2IE89VMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4KKyMgTGFiZWw6ICJUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYiCisjIFNlcmlhbDogMTM4MTM0NTA5OTcyNjE4CisjIE1ENSBGaW5nZXJwcmludDogZjg6YzU6ZWU6MmE6NmI6YmU6OTU6OGQ6MDg6Zjc6MjU6NGE6ZWE6NzE6M2U6NDYKKyMgU0hBMSBGaW5nZXJwcmludDogOGE6NWM6OGM6ZWU6YTU6MDM6ZTY6MDU6NTY6YmE6ZDg6MWI6ZDQ6ZjY6Yzk6YjA6ZWQ6ZTU6MmY6ZTAKKyMgU0hBMjU2IEZpbmdlcnByaW50OiA4ZDplNzo4Njo1NTplMTpiZTo3Zjo3ODo0Nzo4MDowYjo5MzpmNjo5NDpkMjoxZDozNjo4YzpjMDo2ZTowMzozZTo3ZjphYjowNDpiYjo1ZTpiOTo5ZDphNjpiNzowMAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlFSmpDQ0F3NmdBd0lCQWdJR2ZhSHlaZXlLTUEwR0NTcUdTSWIzRFFFQkN3VUFNSUd4TVFzd0NRWURWUVFHCitFd0pVVWpFUE1BMEdBMVVFQnd3R1FXNXJZWEpoTVUwd1N3WURWUVFLREVSVXc1eFNTMVJTVlZOVUlFSnBiR2RwCitJTVN3YkdWMGFjV2ZhVzBnZG1VZ1FtbHNhY1dmYVcwZ1I4TzhkbVZ1YkduRW4ya2dTR2w2YldWMGJHVnlhU0JCCitMc1dlTGpGQ01FQUdBMVVFQXd3NVZNT2NVa3RVVWxWVFZDQkZiR1ZyZEhKdmJtbHJJRk5sY25ScFptbHJZU0JJCithWHB0WlhRZ1UySEVuMnhoZWNTeFk4U3hjOFN4SUVnMk1CNFhEVEV6TVRJeE9EQTVNRFF4TUZvWERUSXpNVEl4CitOakE1TURReE1Gb3dnYkV4Q3pBSkJnTlZCQVlUQWxSU01ROHdEUVlEVlFRSERBWkJibXRoY21FeFRUQkxCZ05WCitCQW9NUkZURG5GSkxWRkpWVTFRZ1FtbHNaMmtneExCc1pYUnB4WjlwYlNCMlpTQkNhV3hweFo5cGJTQkh3N3gyCitaVzVzYWNTZmFTQklhWHB0WlhSc1pYSnBJRUV1eFo0dU1VSXdRQVlEVlFRREREbFV3NXhTUzFSU1ZWTlVJRVZzCitaV3QwY205dWFXc2dVMlZ5ZEdsbWFXdGhJRWhwZW0xbGRDQlRZY1NmYkdGNXhMRmp4TEZ6eExFZ1NEWXdnZ0VpCitNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNkc0dqVzZMMFVscU1BQ3ByeDlNZk1rVTF4CitlSGU1OXlFbUZYTlJGcFFKUndYaU0vVm9talgvM0Vzdk1zZXc3ZUtDNVcvYTJ1cXN4Z2JQSlExQmdmYkJPQ0s5CisrYkdscHJNQnZEOVFGeXYyNldaVjFET3pYUGhESUhpVFZSWndHVExtaWRkazY3MUlVUDMyMEVFRHduUzMvZmFBCit6MXZGcTZUV2xSS2I1NWNUTWdQcDFLdERXeGJ0TXlKa0tiYlNrNjB2Yk5nOXR2WWREalR1MG4ycFZROGc5UDBwCit1NUZiSEgzR1FqaHRRaWh0MUFIN3pZaVhTWDY0ODRQNHRaZ3ZzeWNMU0Y1VzUwNmpNN05FMXFYeUdKVHRIQjZwCitsVnhpU3ZnTloxR3ByeUhWK0RLZGVib2FYK1VFVlUwVFJ2L3l6M1RIR21OdHd4OFhFc01lRUQ1Z0NMTXhBZ01CCitBQUdqUWpCQU1CMEdBMVVkRGdRV0JCVGRWUmNUOXF6b1NDSEs3N1d2MFFBeTdaNk10VEFPQmdOVkhROEJBZjhFCitCQU1DQVFZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWIxZ05sME9xCitGbFErdjZuZmtrVS9oUXU3VnRNTVVzekl2M1puWHVhcXM2ZnZ1YXkwRUJRTmRINDliYTNSZmRDYXFhWEtHRHNDCitRQzRxbkZBVWkvNVhmbGRjRVFsTE5rVlM5ejJzRlAxRTM0dVhJOVREd2U3VVU1WCtMRXIrRFhDcXU0c3ZMY3N5CitvNEx5Vk4vWTh0M1hTSEx1U3FNcGxzTkV6bTYxa29kMnBMdjBrbXpPTEJRSlpvNk5yUmExeHhzSllUdmpJS0lECitnSTZ0ZmxFQVRzZVdodnREbUhkOUtNZVAyQ3B1NTRSdmwwRXBBQlplVGVJVDZsbkFZMmM2UlB1WS9BVFRNSEttCis5b2NKVjYxMnBoMWptdjNYWmNoNGd5dDFPNlZidUExZGY3NGpybFpWbEZqdkg0R01LckxONXB0am5oaTg1V3NHCit0QXVZU3loZXI0aFl5dz09CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCisKKyMgSXNzdWVyOiBDTj1DZXJ0aW5vbWlzIC0gUm9vdCBDQSBPPUNlcnRpbm9taXMgT1U9MDAwMiA0MzM5OTg5MDMKKyMgU3ViamVjdDogQ049Q2VydGlub21pcyAtIFJvb3QgQ0EgTz1DZXJ0aW5vbWlzIE9VPTAwMDIgNDMzOTk4OTAzCisjIExhYmVsOiAiQ2VydGlub21pcyAtIFJvb3QgQ0EiCisjIFNlcmlhbDogMQorIyBNRDUgRmluZ2VycHJpbnQ6IDE0OjBhOmZkOjhkOmE4OjI4OmI1OjM4OjY5OmRiOjU2OjdlOjYxOjIyOjAzOjNmCisjIFNIQTEgRmluZ2VycHJpbnQ6IDlkOjcwOmJiOjAxOmE1OmE0OmEwOjE4OjExOjJlOmY3OjFjOjAxOmI5OjMyOmM1OjM0OmU3Ojg4OmE4CisjIFNIQTI1NiBGaW5nZXJwcmludDogMmE6OTk6ZjU6YmM6MTE6NzQ6Yjc6M2M6YmI6MWQ6NjI6MDg6ODQ6ZTA6MWM6MzQ6ZTU6MWM6Y2I6Mzk6Nzg6ZGE6MTI6NWY6MGU6MzM6MjY6ODg6ODM6YmY6NDE6NTgKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRmtqQ0NBM3FnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFzRkFEQmFNUXN3Q1FZRFZRUUdFd0pHVWpFVAorTUJFR0ExVUVDaE1LUTJWeWRHbHViMjFwY3pFWE1CVUdBMVVFQ3hNT01EQXdNaUEwTXpNNU9UZzVNRE14SFRBYgorQmdOVkJBTVRGRU5sY25ScGJtOXRhWE1nTFNCU2IyOTBJRU5CTUI0WERURXpNVEF5TVRBNU1UY3hPRm9YRFRNegorTVRBeU1UQTVNVGN4T0Zvd1dqRUxNQWtHQTFVRUJoTUNSbEl4RXpBUkJnTlZCQW9UQ2tObGNuUnBibTl0YVhNeAorRnpBVkJnTlZCQXNURGpBd01ESWdORE16T1RrNE9UQXpNUjB3R3dZRFZRUURFeFJEWlhKMGFXNXZiV2x6SUMwZworVW05dmRDQkRRVENDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFOVE1DUW9zUDVMMgorZnhTZUM1eWFhaDFBTUdUOXF0OE9IZ1pibjFDRjZzMk5xME5uM3JENmZvQ1dub1I0a2tqVzR6bnV6dVJaV0pmbAorTGllWTZwT29kNXRLOE85MGdDM3JNQisxMmNlQW5HSW5rWWp3U29uZDNJam1GUG5WQXkvL2xkdTluK3dzK2hRVgorV1pVS3hrZDhhUmk1cHdQNXluYXB6OGR2dEY0Ri91N0JVckoxTW9mczdTbG1PL05LRm9MMjFwcmJjcGpwM3ZERgorVEtXcnRlb0I0b3d1Wkg5a2IvMmpKWk9MeUtJT1NZMDA4Qi9zV0VVdU5LcUVVTDNuc2tvVHVMQVByamhkc0trYgorNW5QSldxSFpaa0NxcVUybU5BS3RoSDZ5SThIN0tzWm45RFMyc0pWcU0wOXhSTFd0d0hremlPQy83YU9nRkxTYworQ2JBSzQyQysrUGhtaU0xYjhYY0Y0TFZ6YnNGOVJpNk9TeWVtelRVSy9lVk5mYW9xb3luSFdtZ0U2T1hXazZSaQord3NYbTlFL0crWjhhallKSkdZcktXVU02NkEweXdmUk1Fd052YnFZL2tYUEx5bk52RWlDTDdzQ0NlTjVMTHNKSgord3gzdEZ2WWs5Q2NiWEZjeDNGWHVxQjV2Ykt6aVJjeFhWNHAxVnhuZ3RWaVpTVFl4UERNQmJSWkt6YmdxZzRTRworbS9sZzBoOXRrUVBUWUtiVlBacmRkNUE5TmFTZkQxNzFVa1JwdWNDNjNNOTkzM3paeEt5R0lqSzhlMnVSNzNyNAorRjJpdzRsTlZZQzJ2UHNLRDJOa0pLL0RBWk51SGk1SE1rZXNFL1hhMGxacm1GQVliMVRRZHZ0ai9kQnhUaFpuZworV1ZKS1llMklubXRKaVVaK0lGclo1MHJsYXU3U1pSRkRBZ01CQUFHall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQgorQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUdmtVejFwY013NkM4STZ0TnhJcVNTYUhoMAorMlRBZkJnTlZIU01FR0RBV2dCVHZrVXoxcGNNdzZDOEk2dE54SXFTU2FIaDAyVEFOQmdrcWhraUc5dzBCQVFzRgorQUFPQ0FnRUFmajFVMmlKZEdsZytPMVFudXJyTXlPTWFhdW8rK1JMclZsODlVTTdnNmtnbUpzOTVWbjZSSEprLworMEtHUkhDd1BUNWlWV1ZPOTBDTFlpRjJjTi96N1pNRjRqSXVhWUFucTFmb2hYOUIwWmVkUXhiOHV1UXNMcmJXdworRjZZU2pOUmllT3BXYXV3SzBrRERQQVV3UGsyVXQ1OUtBOU45SjB1Mi9rVE8raGt6R20ya1F0SGR6TWpJMXhaUworZzA4MWxMTVNWWDNsNGtMcjVKeVRDY0JNV3dlcngyMFJvRkFYbENPb3RRcVNEN0o2d1dBc09Nd2FwbHYvOGd6agorcWg4YzNMaWdreWZlWStOL0laODY1Wjc2NEJOcWRldVdYR0tSbEk1blU3YUorQklKeTI5U1d3TnlobENWQ05TTgoraDRZVkg1VWsyS1J2bXM2a25adHQwckoyQm9iR1ZnakY2d25hTnNJYlcwRytZU3JqY09hNHB2aTJXc1M5SWZmLworcWwraGJIWTVadGJxVEZYaEFET2JFNWhqeVcvUUFTQUpOMUxuREU4K3piejFYNVlucHlBQ2xlQXU2QWRCQlI4VgorYnRhdzVCbmdEd0tUQUNkeXhZdlJWQjlkU3NOQWwzNVZwbnpCTXdRVUFSMUpJR2tMR1pPZGJsZ2k5MEFNUmd3agorWS9NNTBuOTJVYWYweUtIeERIWWlJMFpTS1MzaW8wRUhWbW1ZMGdVSnZHbkhXbUhOajRGZ0ZVMkEzWkRpZmNSUQorOG93N2Jrckh4dWFBS3p5QnZCR0FGaEFuMS9ETlAzbk1jeXJEZmxPUjFtNzQ5ZlBIMEZGTmprdWxXK1laRnp2VworZ1FuY0l0enVqcm5FajFQaFo3c3p1SWdWUnMvdGFUWC9kUTFHODg1eDRjVnJoa0lHdVVFPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorCisjIElzc3VlcjogQ049T0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQSBPPVdJU2VLZXkgT1U9T0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZAorIyBTdWJqZWN0OiBDTj1PSVNURSBXSVNlS2V5IEdsb2JhbCBSb290IEdCIENBIE89V0lTZUtleSBPVT1PSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkCisjIExhYmVsOiAiT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQSIKKyMgU2VyaWFsOiAxNTc3Njg1OTU2MTY1ODg0MTQ0MjIxNTkyNzg5NjY3NTA3NTc1NjgKKyMgTUQ1IEZpbmdlcnByaW50OiBhNDplYjpiOTo2MToyODoyZTpiNzoyZjo5ODpiMDozNToyNjo5MDo5OTo1MToxZAorIyBTSEExIEZpbmdlcnByaW50OiAwZjpmOTo0MDo3NjoxODpkMzpkNzo2YTo0Yjo5ODpmMDphODozNTo5ZTowYzpmZDoyNzphYzpjYzplZAorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDZiOjljOjA4OmU4OjZlOmIwOmY3OjY3OmNmOmFkOjY1OmNkOjk4OmI2OjIxOjQ5OmU1OjQ5OjRhOjY3OmY1Ojg0OjVlOjdiOmQxOmVkOjAxOjlmOjI3OmI4OjZiOmQ2CistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUR0VENDQXAyZ0F3SUJBZ0lRZHJFZ1VuVHdoWWRHcy9nakd2YkN3REFOQmdrcWhraUc5dzBCQVFzRkFEQnQKK01Rc3dDUVlEVlFRR0V3SkRTREVRTUE0R0ExVUVDaE1IVjBsVFpVdGxlVEVpTUNBR0ExVUVDeE1aVDBsVFZFVWcKK1JtOTFibVJoZEdsdmJpQkZibVJ2Y25ObFpERW9NQ1lHQTFVRUF4TWZUMGxUVkVVZ1YwbFRaVXRsZVNCSGJHOWkKK1lXd2dVbTl2ZENCSFFpQkRRVEFlRncweE5ERXlNREV4TlRBd016SmFGdzB6T1RFeU1ERXhOVEV3TXpGYU1HMHgKK0N6QUpCZ05WQkFZVEFrTklNUkF3RGdZRFZRUUtFd2RYU1ZObFMyVjVNU0l3SUFZRFZRUUxFeGxQU1ZOVVJTQkcKK2IzVnVaR0YwYVc5dUlFVnVaRzl5YzJWa01TZ3dKZ1lEVlFRREV4OVBTVk5VUlNCWFNWTmxTMlY1SUVkc2IySmgKK2JDQlNiMjkwSUVkQ0lFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTJCZTMKK0hFb2tLdGFYc2NyaUh2dDlPTytZOWJJNW1FNG51QkZkZTlJbGxJaUNGU1pxR3pHN3FGc2hJU3ZZRDA2Zld2R3gKK1d1UjUxaklqSytGVHpKbEZYSHRQcmJ5L2gwb0xTNWRhcVBaSTdIMTdEYzBoQnQrZUZmMUJpa2kzSVBTaGVodFgKKzFGMVEvN3BuMkNPWkg4Zy80OTcvYjF0M3NXdHV1TWxrOStIS1FVWU9LWEhRdVNQOHlZRmZUdmR2MzcrRXJYTmsKK3U3ZENqbW4yMUhZZGZwMm51RmVLVVdkeTE5U291SlZVUUhNRDl1cjA2LzRvUW5jL25TTWJzclk5Z0JRSFRDNVAKKzk5VUtGZzI5WmtNM2ZpTkRlY05BaHZWTUtkcU9tcTBOcFFTSGlCNkY0K2xUMVp2SWl3TmplT3ZnR1VwdXV5OXIKK00yUllrNjFwdjQ4Yjc0Skl4d0lEQVFBQm8xRXdUekFMQmdOVkhROEVCQU1DQVlZd0R3WURWUjBUQVFIL0JBVXcKK0F3RUIvekFkQmdOVkhRNEVGZ1FVTlEvSU5tTmU0cVBzK1R0bUZjNVJVdU9SbWowd0VBWUpLd1lCQkFHQ054VUIKK0JBTUNBUUF3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUVCTSs0ZXltWUdRZnAzRnNMQW16WWg3S3pLTmJyZ2gKK2NWaVhmYTQzRks4KzUvZWE0bjMyY1ppWkJLcERkSGlqNDBsaFBuT01UWlRnK1hIRXRoWU9VM2dmMXFLSEx3STUKK2dTazhyeFdZSVREK0tKQUFqTkhoeS9wZXlQMzRFRVk3b25oQ2tSZDBWUXJlVUdkTlp0R24vLzNad0xXb280ck8KK1p2VVBRODJuSzFkN1kwWnFxaTVTMlBUdDRXMnRLWkI0U0xyaEk2cWppZXkxcTViQXRFdWlIWmVlZXZKdVFISGYKK2FQRmxUYzU4QmQ5VFphbWw4TEdYQkhBVlJnT1kxTksvVkxTZ1dIMVNiOXBXSm1MVTJOdUpNVzhjOENMQzAySWMKK05jMU1hUlZVR3BDWTN1c2VYOHAzeDh1T1BVTnBuSnBZMENRNzN4dEFsbjQxcllISFRuRzZpQk09CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCisKKyMgSXNzdWVyOiBDTj1DZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBvZiBXb1NpZ24gRzIgTz1Xb1NpZ24gQ0EgTGltaXRlZAorIyBTdWJqZWN0OiBDTj1DZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBvZiBXb1NpZ24gRzIgTz1Xb1NpZ24gQ0EgTGltaXRlZAorIyBMYWJlbDogIkNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbiBHMiIKKyMgU2VyaWFsOiAxNDI0MjM5NDMwNzM4MTIxNjE3ODc0OTA2NDg5MDQ3MjEwNTcwOTIKKyMgTUQ1IEZpbmdlcnByaW50OiBjODoxYzo3ZDoxOTphYTpjYjo3MTo5MzpmMjo1MDpmODo1MjphODoxZTpiYTo2MAorIyBTSEExIEZpbmdlcnByaW50OiBmYjplZDpkYzo5MDo2NTpiNzoyNzoyMDozNzpiYzo1NTowYzo5Yzo1NjpkZTpiYjpmMjo3ODo5NDplMQorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IGQ0Ojg3OmE1OjZmOjgzOmIwOjc0OjgyOmU4OjVlOjk2OjMzOjk0OmMxOmVjOmMyOmM5OmU1OjFkOjA5OjAzOmVlOjk0OjZiOjAyOmMzOjAxOjU4OjFlOmQ5OjllOjE2CistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSURmRENDQW1TZ0F3SUJBZ0lRYXlYYWlvaWRmTHdQQmJPeGVtRkZSREFOQmdrcWhraUc5dzBCQVFzRkFEQlkKK01Rc3dDUVlEVlFRR0V3SkRUakVhTUJnR0ExVUVDaE1SVjI5VGFXZHVJRU5CSUV4cGJXbDBaV1F4TFRBckJnTlYKK0JBTVRKRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNUlHOW1JRmR2VTJsbmJpQkhNakFlRncweE5ERXgKK01EZ3dNRFU0TlRoYUZ3MDBOREV4TURnd01EVTROVGhhTUZneEN6QUpCZ05WQkFZVEFrTk9NUm93R0FZRFZRUUsKK0V4RlhiMU5wWjI0Z1EwRWdUR2x0YVhSbFpERXRNQ3NHQTFVRUF4TWtRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm8KK2IzSnBkSGtnYjJZZ1YyOVRhV2R1SUVjeU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKK0FRRUF2c1hFb0NLQVNVKy8yWWNSeGxQaHV3KzlZSCt2OW9JT0g5eXdqajJYNEZBOGp6cnZaanRGQjVzZytPUFgKK0pZWTFrQmFpWFc4d0dRaUhDMzhHc3AxaWo5NnZrcVZnMUN1QW1sSS85WnFENlRSYXk5blZZbHptRHVEZkJwZ08KK2dIekt0QjBUaUdzT3FDUjNBOUR1Vy9QS2FaRTFPVmJGYmVQM1BVOWVremdreWhqcEpNdVNBOTNNSEQwSmNPUWcKKzVQR3VyTHR6YWFOak9nOUZENkZLbXNMUlk2ekxFUGc5NWs0b3QrdkVsYkdzL1Y2citrSExYWjFMM1BSOGR1OW4KK2Z3QjZqZEtnR2x4Tkl1RzEydDEyczlSMjMxNjRpNWpJRkZUTWF4ZVN0K0JLdjBtVVlRczRrSTlkSkd3bGV6dDUKKzJlSituYTJmbUtFRy9IZ1VZRmY0N29CM3NRSURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0R3WUQKK1ZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVK21DcDYyWEYzUllVQ0U0TUQ0MmI0UGRrcjJjd0RRWUoKK0tvWklodmNOQVFFTEJRQURnZ0VCQUZmRGVqYUNuSTJZNHF0QXFrZVB4NmRiN1h6blBXWmFPekc3My9NV001SDgKK2ZIdWx3cVptNDZxd3R5ZVlQMG5YWUdkblB6WlBTc3Z4RlBwYWh5Z2M3WTlCTXNhVitYM2F2WHRid3JBaDQ0OUcKKzNDRTRRM1JNK3pENEYzTEJNdnpJa1JmRXpGZzNUZ3ZNV3ZjaE5TaURiR0F0Uk90U2pGQTl0V3dTMS9vSnUyeXkKK1NySEZpZVQ4MDFMWVlSZitlcFNFajNtMk0xbTZEOFFMNG5DZ1MzZ3Urc2lmL2ErUlpRcDRPQlhsbHhjVTNmbmcKK0xEVDRPTkNFSWdEQUZGRVlLd0xjTUZydzZBRjhOVG9qcndqa3I2cU9LRUpKTHZEMW1UUys3UTlMR09IU0pEeTcKK1hVZTNJZktOMFFxWmp1TnVQcTF3NEkrNXlzeHVnVEgyZTV4NmVlUm5jUmc9CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCisKKyMgSXNzdWVyOiBDTj1DQSBXb1NpZ24gRUNDIFJvb3QgTz1Xb1NpZ24gQ0EgTGltaXRlZAorIyBTdWJqZWN0OiBDTj1DQSBXb1NpZ24gRUNDIFJvb3QgTz1Xb1NpZ24gQ0EgTGltaXRlZAorIyBMYWJlbDogIkNBIFdvU2lnbiBFQ0MgUm9vdCIKKyMgU2VyaWFsOiAxMzg2MjU3MzUyOTQ1MDY3MjMyOTY5OTYyODk1NzU4MzcwMTIxMTIKKyMgTUQ1IEZpbmdlcnByaW50OiA4MDpjNjo1MzplZTo2MTo4MjoyODo3MjpmMDpmZjoyMTpiOToxNzpjYTpiMjoyMAorIyBTSEExIEZpbmdlcnByaW50OiBkMjo3YTpkMjpiZTplZDo5NDpjMDphMTozYzpjNzoyNToyMTplYTo1ZDo3MTpiZTo4MToxOTpmMzoyYgorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDhiOjQ1OmRhOjFjOjA2OmY3OjkxOmViOjBjOmFiOmYyOjZiOmU1Ojg4OmY1OmZiOjIzOjE2OjVjOjJlOjYxOjRiOmY4Ojg1OjU2OjJkOjBkOmNlOjUwOmIyOjliOjAyCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNDVENDQVkrZ0F3SUJBZ0lRYUVwWWNJQnI4SThDK3ZiZTZMQ1FrREFLQmdncWhrak9QUVFEQXpCR01Rc3cKK0NRWURWUVFHRXdKRFRqRWFNQmdHQTFVRUNoTVJWMjlUYVdkdUlFTkJJRXhwYldsMFpXUXhHekFaQmdOVkJBTVQKK0VrTkJJRmR2VTJsbmJpQkZRME1nVW05dmREQWVGdzB4TkRFeE1EZ3dNRFU0TlRoYUZ3MDBOREV4TURnd01EVTQKK05UaGFNRVl4Q3pBSkJnTlZCQVlUQWtOT01Sb3dHQVlEVlFRS0V4RlhiMU5wWjI0Z1EwRWdUR2x0YVhSbFpERWIKK01Ca0dBMVVFQXhNU1EwRWdWMjlUYVdkdUlFVkRReUJTYjI5ME1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSUQKK1lnQUU0ZjJPdUVNa3E1WjdoY0s2QzYyTjREcmpKTG5Tc2I2SU9zcS9Tcmo1N3l3dnIxRlFQRWQxYlBpVXQ1djgKK0tCN0ZWTXhqblJaTFU4SG5JS3ZOckNYU2Y0L0N3VnFDWGpDTGVsVE9BN1dSZjZxVTBOR0tTTXlDQlNhaDFWRVMKKzFuczJvMEl3UURBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEUKK0ZnUVVxdjNWV3FQMmg0c3loZjNSTWx1QVJaUHpBN2d3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QU9Ta2hMQ0IKKzFUMndkS3lVcE9nT1BRQjBUS0dYYS9rTlVUeWgyVHYwRGF1cG43NU9jc3FGMU5uc3RUSkZHRytyclFJd2ZjZjMKK2FXTXZvZUdZN3hNUTBYay8wZjdxTzMvZVZ2U1FzUlVSMkxJaUZkQXZ3eVl1YS9HUnNwQmw5SnJta081SworLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorCisjIElzc3VlcjogQ049U1pBRklSIFJPT1QgQ0EyIE89S3Jham93YSBJemJhIFJvemxpY3plbmlvd2EgUy5BLgorIyBTdWJqZWN0OiBDTj1TWkFGSVIgUk9PVCBDQTIgTz1LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuCisjIExhYmVsOiAiU1pBRklSIFJPT1QgQ0EyIgorIyBTZXJpYWw6IDM1NzA0MzAzNDc2NzE4NjkxNDIxNzI3NzM0NDU4NzM4Njc0MzM3NzU1ODI5NjI5MgorIyBNRDUgRmluZ2VycHJpbnQ6IDExOjY0OmMxOjg5OmIwOjI0OmIxOjhjOmIxOjA3OjdlOjg5OjllOjUxOjllOjk5CisjIFNIQTEgRmluZ2VycHJpbnQ6IGUyOjUyOmZhOjk1OjNmOmVkOmRiOjI0OjYwOmJkOjZlOjI4OmYzOjljOmNjOmNmOjVlOmIzOjNmOmRlCisjIFNIQTI1NiBGaW5nZXJwcmludDogYTE6MzM6OWQ6MzM6Mjg6MWE6MGI6NTY6ZTU6NTc6ZDM6ZDM6MmI6MWM6ZTc6Zjk6MzY6N2U6YjA6OTQ6YmQ6NWY6YTc6MmE6N2U6NTA6MDQ6Yzg6ZGU6ZDc6Y2E6ZmUKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRGNqQ0NBbHFnQXdJQkFnSVVQb3BkQit4VjBqTFZ0K08yWHdIckxkemsxdVF3RFFZSktvWklodmNOQVFFTAorQlFBd1VURUxNQWtHQTFVRUJoTUNVRXd4S0RBbUJnTlZCQW9NSDB0eVlXcHZkMkVnU1hwaVlTQlNiM3BzYVdONgorWlc1cGIzZGhJRk11UVM0eEdEQVdCZ05WQkFNTUQxTmFRVVpKVWlCU1QwOVVJRU5CTWpBZUZ3MHhOVEV3TVRrdworTnpRek16QmFGdzB6TlRFd01Ua3dOelF6TXpCYU1GRXhDekFKQmdOVkJBWVRBbEJNTVNnd0pnWURWUVFLREI5TAorY21GcWIzZGhJRWw2WW1FZ1VtOTZiR2xqZW1WdWFXOTNZU0JUTGtFdU1SZ3dGZ1lEVlFRRERBOVRXa0ZHU1ZJZworVWs5UFZDQkRRVEl3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzN2RDVRcUV2TgorUUxYT1llZVd5clNoMmd3aXNQcTFlM1lBZDR3THozMm9oc3dtVWVRZ1BZVU0xbGpqNS9RcUdKM2EwYTRtN3V0VAorM1BTUTFoTktESkE4dy9UYTBvNE5ranJjc2JIL09ON0R1aTFmZ0xrQ3ZVcWRHdyswdzhMQlp3UGQzQnVjUGJPdworM2dBZXFEUkh1NXJyL2dzVXZUYUUyZzBndi9wYnk2a1dJSzA1WU80dmRiYm5sNXo1UHYxK1RXOU5MKytJRFdyNgorM2ZFOWJpQ2xvQkswVFhDNXp0ZHlPNG1UcDRDRUhDZEpja20xL3p1Vm5zSE15QUhzNkE2S0NwYm5zNmFINWRiNQorQlNzTmwwQndQTHFzZFZxYzFVMmRBZ3JTUzV0bVMwWUhGMld0bjJ5SUFOd2lpZURoWk5SbnZERjVZVHk3eWtITgorWEdvQXlEdzRqbGl2QWdNQkFBR2pRakJBTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRRAorQWdFR01CMEdBMVVkRGdRV0JCUXVGcWxLR0xYTHpQVnZVUE1qWC9oZDU2end5REFOQmdrcWhraUc5dzBCQVFzRgorQUFPQ0FRRUF0WFA0QTl4Wld4MTI2YU1xZTVBb3NrM0FNMCtxbXJIVXVPUW4vNm1XbWM1RzRHMThUS0k0cEFadworOFBSQkVldy9SNDAvY29mNU8vMmtieXRUQU9EL09ibHFCdzdySFJ6Mm9uS1F5NEk5RVlLTDBydWZLcThoNW1PRworblhrWjcvZTdERFdRdzRydFR3LzF6QkxacEQ2N29Qd2dsVjlQSmk4Ukk0Tk9kUWNQdjV2UnRCM3BFQVQreW1DUAorb2t5NHJjL2hrQS9OcmdySFhYdTNVTkxVWWZyVkZkdlhuNGRSVk91bDQrdkpoYUFsSURmN2pzNE1OSVRoUElHeQorZDA1RHBZaGZobWVoUGVhMFhHRzJQdHYrdHlqRm9nZXV0Y3JLalNvUzc1ZnR3akNreVNwNisvTk5JeHVaTXpTZworTHZXcEN6L1VYZUhQaEovaUdjSmZpdFlnSHVOenR3PT0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EgMiBPPVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4gT1U9Q2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5CisjIFN1YmplY3Q6IENOPUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EgMiBPPVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4gT1U9Q2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5CisjIExhYmVsOiAiQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyIgorIyBTZXJpYWw6IDQ0OTc5OTAwMDE3MjA0MzgzMDk5NDYzNzY0MzU3NTEyNTk2OTY5CisjIE1ENSBGaW5nZXJwcmludDogNmQ6NDY6OWU6ZDk6MjU6NmQ6MDg6MjM6NWI6NWU6NzQ6N2Q6MWU6Mjc6ZGI6ZjIKKyMgU0hBMSBGaW5nZXJwcmludDogZDM6ZGQ6NDg6M2U6MmI6YmY6NGM6MDU6ZTg6YWY6MTA6ZjU6ZmE6NzY6MjY6Y2Y6ZDM6ZGM6MzA6OTIKKyMgU0hBMjU2IEZpbmdlcnByaW50OiBiNjo3NjpmMjplZDpkYTplODo3Nzo1YzpkMzo2YzpiMDpmNjozYzpkMTpkNDo2MDozOTo2MTpmNDo5ZTo2Mjo2NTpiYTowMTozYToyZjowMzowNzpiNjpkMDpiODowNAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlGMGpDQ0E3cWdBd0lCQWdJUUlkYlFTazhsRDhreU4veXFYaEtONlRBTkJna3Foa2lHOXcwQkFRMEZBRENCCitnREVMTUFrR0ExVUVCaE1DVUV3eElqQWdCZ05WQkFvVEdWVnVhWHBsZEc4Z1ZHVmphRzV2Ykc5bmFXVnpJRk11CitRUzR4SnpBbEJnTlZCQXNUSGtObGNuUjFiU0JEWlhKMGFXWnBZMkYwYVc5dUlFRjFkR2h2Y21sMGVURWtNQ0lHCitBMVVFQXhNYlEyVnlkSFZ0SUZSeWRYTjBaV1FnVG1WMGQyOXlheUJEUVNBeU1DSVlEekl3TVRFeE1EQTJNRGd6CitPVFUyV2hnUE1qQTBOakV3TURZd09ETTVOVFphTUlHQU1Rc3dDUVlEVlFRR0V3SlFUREVpTUNBR0ExVUVDaE1aCitWVzVwZW1WMGJ5QlVaV05vYm05c2IyZHBaWE1nVXk1QkxqRW5NQ1VHQTFVRUN4TWVRMlZ5ZEhWdElFTmxjblJwCitabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVNU1F3SWdZRFZRUURFeHREWlhKMGRXMGdWSEoxYzNSbFpDQk9aWFIzCitiM0pySUVOQklESXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDOStYajQ1dFdBCitER1NkaGh1V1pHYy9Jam9lZFFGOTcvdGNaNHpKekZ4cnFaSG11VUxsSUV1YjJwdDd1WmxkMlp1QVM5ZUVRQ3NuCiswK2k2TUxzK0NScW5TWlh2SzBBa3dwZkhwKzZiSmUrb0NnQ1hoVnFxbmR3cHllSTFCK3R3VFVyV3diTld1S0ZCCitPSnZSK3pGL2orQmY0YkUvRDQ0V1NXRFhCbzBZK2FvbUVLc3EwOURSWjQwYlJyNUhNTlV1Y3RIRlk5cm5ZM2xFCitma3RqSkltR0xqUS9LVXhTaXlxbndPS1JLSW01d0Z2NUhkbm5KNjMvbWdLWHdjWlFrcHNDTEwycHVUUlpDcitFCitTdi9mL3JPZjY5bWU0SmdqN0tacmR4WXEyOHl0T3h5a2g5eEdjMTRaWW1oRlYrU1Fna0s3UXRid1llREJvejFtCitvMTMwR082SXlZMFhSU21aTW5VQ01lNHBKc2hyQXVhMVlrVi9OeFZhSTJpSjFEN2VUaWV3OEVBTXZFMFh5MDJpCitzeDdRQmxyZDlwUFBWM1daOWZxR0dtZDRzNytXL2pUY3ZlZFNWdVd6NVhWNzEwR1JCZHhkYWVPVkRVTzUvSU9XCitPWlY3YklCYVR4Tnl4dGQ5S1hwRXVsS2tLdFZCUmdrZy9pS2d0bHN3amJ5SkROWFhjUGlIVXYzYTc2eFJMZ2V6CitUdjdRQ2Rwdzc1ajZWdVp0MjdWWFM5emxMQ1VWeUo0dWVFNzQycHllaGl6S1YvTWE1Y2lTaXhxQ2xuckR2RkFTCithZGdPV2thTE91c20raVBKdHJDQnZrSUFwUGpXL2pBdXg5Skc5dVdPZGYzeXpMblFoMXZNQmhCZ3U0TTF0MTVuCisza2ZzbVVqeHBLRVYvcTJNWW80NVZVODVGcm14WTUzL3R3SURBUUFCbzBJd1FEQVBCZ05WSFJNQkFmOEVCVEFECitBUUgvTUIwR0ExVWREZ1FXQkJTMm9WUTVBc09nUDQ2S3ZQclUrQnltMFRvTy9UQU9CZ05WSFE4QkFmOEVCQU1DCitBUVl3RFFZSktvWklodmNOQVFFTkJRQURnZ0lCQUhHbERzN2s2YjgvT05XSldzUUNZZnRNeFJRWExZdFBVMnNRCitGL3hsaE1jUVNaRGUyOGNtazRnbWIzRFdBbDQ1b1BlUHE1YTFwUk5jZ1JSdERvR0NFUnVLVHNaUHBkMWlIa1RmCitDVm4wVzNjTE4rbUxJTWI0Q2s0dVdCenJNOURQaG1ESjJ2dUFMNTVNWUlSNFBTRmsxdnRCSHhnUDU4bDFjYjI5CitYTjQwaHo1QnNBNzJ1ZFkvQ1JPV0ZDL2VtaDFhdVZiT05UcXdYM0JOWHVNcDhTTW9jbG0ycThLTVppWWNkeXdtCitkaldMS0tkcG9Qazc5U1BkaFJCMHlaQURWcEhucjdwSDFCS1hFU0xqb2ttVWJPZTNsRXU2TGFUYU00dE1wa1QvCitXanpHSFdUWXRUSGtwang2cUZjTDIrMWhHc3Z4em5OM1k2U0hiMHhST05ia1g4ZWZ0b0VxNUlWSWVWaGVPL2piCitBb0pud1RuYnczUkxQVFllK1NtVGlHaGJxRVFaSWZDbjZJRU5MT2lUTnJRM3NzcXdHeVo2bWlVZm1wcUFua3NxCitQL3VqbXY1ek1uSENuc1p5NFlwb0ovSGtEN1RFVEtWaGsvaVhFQWNxTUNXcHVjaHh1TzlvekMxKzllQitENEtvCitiN2E2YklORGQ4MktraGVobmx0NEZqMUY0ak55M2VGbXlwblR5Y1VtL1Exb0JFYXV0dG1iakw0WnZySEc4aG5qCitYQUxLTE5odlNnZlp5VFhhUUhYeXhLY1piNTVDRUpoMTVwV0xZTHp0eFJMWGlzN1ZtRnhXbGdQRjduY0dOZi9QCis1TzQvRTJIdTI5b3RoZkROcnAyeUdBbEZ3NUtoY2hmOFI3YWdDeXp4eE41RGFBaHFYenZ3ZG1QN3pBWXNwc2JpCitEclc1dmlTUAorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorCisjIElzc3VlcjogQ049SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxNSBPPUhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5CisjIFN1YmplY3Q6IENOPUhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUgTz1IZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENlcnQuIEF1dGhvcml0eQorIyBMYWJlbDogIkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUiCisjIFNlcmlhbDogMAorIyBNRDUgRmluZ2VycHJpbnQ6IGNhOmZmOmUyOmRiOjAzOmQ5OmNiOjRiOmU5OjBmOmFkOjg0OmZkOjdiOjE4OmNlCisjIFNIQTEgRmluZ2VycHJpbnQ6IDAxOjBjOjA2Ojk1OmE2Ojk4OjE5OjE0OmZmOmJmOjVmOmM2OmIwOmI2Ojk1OmVhOjI5OmU5OjEyOmE2CisjIFNIQTI1NiBGaW5nZXJwcmludDogYTA6NDA6OTI6OWE6MDI6Y2U6NTM6YjQ6YWM6ZjQ6ZjI6ZmY6YzY6OTg6MWM6ZTQ6NDk6NmY6NzU6NWU6NmQ6NDU6ZmU6MGI6MmE6Njk6MmI6Y2Q6NTI6NTI6M2Y6MzYKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJR0N6Q0NBL09nQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFzRkFEQ0JwakVMTUFrR0ExVUVCaE1DUjFJeAorRHpBTkJnTlZCQWNUQmtGMGFHVnVjekZFTUVJR0ExVUVDaE03U0dWc2JHVnVhV01nUVdOaFpHVnRhV01nWVc1aworSUZKbGMyVmhjbU5vSUVsdWMzUnBkSFYwYVc5dWN5QkRaWEowTGlCQmRYUm9iM0pwZEhreFFEQStCZ05WQkFNVAorTjBobGJHeGxibWxqSUVGallXUmxiV2xqSUdGdVpDQlNaWE5sWVhKamFDQkpibk4wYVhSMWRHbHZibk1nVW05dgorZEVOQklESXdNVFV3SGhjTk1UVXdOekEzTVRBeE1USXhXaGNOTkRBd05qTXdNVEF4TVRJeFdqQ0JwakVMTUFrRworQTFVRUJoTUNSMUl4RHpBTkJnTlZCQWNUQmtGMGFHVnVjekZFTUVJR0ExVUVDaE03U0dWc2JHVnVhV01nUVdOaAorWkdWdGFXTWdZVzVrSUZKbGMyVmhjbU5vSUVsdWMzUnBkSFYwYVc5dWN5QkRaWEowTGlCQmRYUm9iM0pwZEhreAorUURBK0JnTlZCQU1UTjBobGJHeGxibWxqSUVGallXUmxiV2xqSUdGdVpDQlNaWE5sWVhKamFDQkpibk4wYVhSMQorZEdsdmJuTWdVbTl2ZEVOQklESXdNVFV3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQ0R3QXdnZ0lLQW9JQworQVFEQytLay9HNG44UER3RVhUMlFOckNST25rOFpscnZiVGtCU1JxMHQ4OS9UU05UdDVBQTR4TXFLS1l4OFpFQQorNHlqc3JpRkJ6aC9hL1gwU1d3R0REN213WDVuaDhoS0RnRTBHUHQrc3IrZWhpR3N4ci9DTDBCZ3p1TnRGYWpUMAorQW9Ba0tBb0NGWlZlZGlvTm1Ub1VXL2JMeTFPOEUwMEJpRGVVSlJ0Q3ZDTFlqcU9XWGpyWk10cys2UEFRWmUxMAorNFMrbmZLOG5OTHNwZlp1Mnp3bkk1ZE1LL0lobFpYUUszSE1jWE0xQXNSelV0b1NNVEZEUGFJNm9XYTdDSjA2Qworb2pYZEZQUWYvN0ozMVljdnFtNTlKQ2ZueHNzbTV1WCtad2RqMkVVTjNUcFpaVGxZZXBLWmNqMmNoRjZJSWJqVgorOUN6ODJYQlNUM2k0dlR3cmk1V1k5YlBSYU04Z0ZINU1YRi9uaStYMU5ZRVpOOWNSQ0xkbXZ0Tkt6b05YQURyRAorZ2ZnWHk1STJYZEdqMkhVYjRZc242bnBJUWYxRkdRYXRKNWxPd1hCSDNiV2ZnVk1TNWJHTVNGMHhReGZqak1aNgorWTVaTEtUQk9oRTVpR1Y0OHpwZVFwWDhCNjUzZytJdUozU1dZUFpLMmZ1L1o4VkZSZlMwbXlHbFpZZUNzYXJncQorTmhFRWVsQzlNb1MrTDl4eTFkY2RGa2ZrUjJZZ1AvU1d4YStPQVhxbEQzcGs5UTBZaDltdWlOWDZoTUU2d0drbworTGZJTmFGR3E0NlYzeHFTUURxRTNpekVqUjhFSkNPdHU5M2liMTRMOGhDQ1pTUm0yRWtheCswVlZGcW1qWmF5YworQncvcWE5d2ZMZ1p5N0lhSUV1UXQyMThGTCtUd0E5TW1NK2VBd3MxQ29SYzBDd0lEQVFBQm8wSXdRREFQQmdOVgorSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBZEJnTlZIUTRFRmdRVWNSVm55TWpKdlhWZAorY3RBNEdHcWQ4M0VrVkFzd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFIVzdiVlJMcWhCWVJqVHlZdGNXTmwwSQorWHRWc3lJZTl0QzVHOGpINGZPcEN0Wk1XVmR5aERCS2cybUYrRDFoWWMyUnl4K2hGanR5cDhpWS94bm1Nc1ZNSQorTTRHd1ZoTys1bEZjMkpzS1QwdWNWbE1DNlUvMkRXRHFUVUpWNkh3YklTSFRHenJNZC9LNGtQRm94L2xhL3ZvdAorOUwvSjlVVWJ6amdRS2plS2VhTzA0d2xzaFlhVC80bVdKM2lCajJmalJuUlVqdGtOYWVKSzlFMTBBLyt5ZCsyVgorWjVma3NjV3J2Mm9qNk5TVTRrUW9Zc1JMNHZEWTRpbHJHbkIrSkdHVGUwOERNaVVOUlNRcmxyUkdhcjlLQy9lYQorajhHc0dzVm44MjgwMHZwelk0enZGckNvcEVZcStPc1M3SEswNy9ncmZveFN3SXVFVlBrdlB1TlZxTnhtc2RuaAorWDlpempGazBXYVNyVDJ5N0h4amJkYXZZeTVMTmxEaGhEZ2NHSDB0R0VQRVZ2bzJGWER0S0s0RjVEN1JwbjBsUQorbDAzM0RsWmR3SlZxd2piREcyako5U3JjUjVxK3NzN0ZKZWo2QTduYStSWnVrWVQxSENqSS9DYk0xeHlRVnFkZgorYnpvRXZNMTRpUXVPRHkranFrK2lHeEk5RmdoQUQvRkdUTmVxZXdqQkN2VnRKOTRDajhyRHRTdks2ZXZJSVZNNAorcGN3NzJIYzNNS0pQMlcvUjhrQ3RRWG9YeGRaS05ZbTNRZFY4aG45VlRZTktwWE1nd0RxdmtQR2FKSTdaam5ISworZTdpRzJyS1BtVDRkRXcwU0VlN1VxL0RwRlhZQzVPRGZxaUFlVzJHRlpFQ3BrSmNOclZQU1doMkhhZ0NYWldLMAordm05cXAvVXNRdTB5cmJZaG5yNjgKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPUhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1IE89SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkKKyMgU3ViamVjdDogQ049SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBFQ0MgUm9vdENBIDIwMTUgTz1IZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENlcnQuIEF1dGhvcml0eQorIyBMYWJlbDogIkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1IgorIyBTZXJpYWw6IDAKKyMgTUQ1IEZpbmdlcnByaW50OiA4MTplNTpiNDoxNzplYjpjMjpmNTplMTo0YjowZDo0MTo3Yjo0OTo5MjpmZTplZgorIyBTSEExIEZpbmdlcnByaW50OiA5ZjpmMTo3MTo4ZDo5MjpkNTo5YTpmMzo3ZDo3NDo5NzpiNDpiYzo2Zjo4NDo2ODowYjpiYTpiNjo2NgorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDQ0OmI1OjQ1OmFhOjhhOjI1OmU2OjVhOjczOmNhOjE1OmRjOjI3OmZjOjM2OmQyOjRjOjFjOmI5Ojk1OjNhOjA2OjY1OjM5OmIxOjE1OjgyOmRjOjQ4OjdiOjQ4OjMzCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUN3ekNDQWtxZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQ0JxakVMTUFrR0ExVUVCaE1DUjFJeER6QU4KK0JnTlZCQWNUQmtGMGFHVnVjekZFTUVJR0ExVUVDaE03U0dWc2JHVnVhV01nUVdOaFpHVnRhV01nWVc1a0lGSmwKK2MyVmhjbU5vSUVsdWMzUnBkSFYwYVc5dWN5QkRaWEowTGlCQmRYUm9iM0pwZEhreFJEQkNCZ05WQkFNVE8waGwKK2JHeGxibWxqSUVGallXUmxiV2xqSUdGdVpDQlNaWE5sWVhKamFDQkpibk4wYVhSMWRHbHZibk1nUlVORElGSnYKK2IzUkRRU0F5TURFMU1CNFhEVEUxTURjd056RXdNemN4TWxvWERUUXdNRFl6TURFd016Y3hNbG93Z2FveEN6QUoKK0JnTlZCQVlUQWtkU01ROHdEUVlEVlFRSEV3WkJkR2hsYm5NeFJEQkNCZ05WQkFvVE8waGxiR3hsYm1saklFRmoKK1lXUmxiV2xqSUdGdVpDQlNaWE5sWVhKamFDQkpibk4wYVhSMWRHbHZibk1nUTJWeWRDNGdRWFYwYUc5eWFYUjUKK01VUXdRZ1lEVlFRREV6dElaV3hzWlc1cFl5QkJZMkZrWlcxcFl5QmhibVFnVW1WelpXRnlZMmdnU1c1emRHbDAKK2RYUnBiMjV6SUVWRFF5QlNiMjkwUTBFZ01qQXhOVEIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJKS2cKK1FlaExnb1JjNHZneEVabUdaRTRKSlMrZFFTOEtyalZQZEpXeVVXUnJqV3ZtUDNDVjhBVkVSNlp5T0ZCMmxRSmEKK2pxNG9udmt0VHBudkxFaHZUQ1VwNk5GeFc5OGR3WFUzdE5mNmUzcENuR29LVmxwOGFRdXFnQWtrYkg3QlJxTkMKK01FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZMUWkKK0M0S1pKQUVPbkx2a0R2Mi8rNWNnazVrcU1Bb0dDQ3FHU000OUJBTUNBMmNBTUdRQ01HZk9GbUk0b3F4aVJhZXAKK2xTVEFHaWVjTWp2QXdOVzZxZWY0QkVOVGhlNVNJZDZkOVNXRFBwNVlTeS9YWnhNT0lRSXdCZUYxQWQ1bzdTb2YKK1RVd0pDQTNzUzYxa0Z5am5kYzVGWlhJaEY4c2lRUTZNRTVnNG1sUnRtOHJpZk9vQ1dDS1IKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPUNlcnRwbHVzIFJvb3QgQ0EgRzEgTz1DZXJ0cGx1cworIyBTdWJqZWN0OiBDTj1DZXJ0cGx1cyBSb290IENBIEcxIE89Q2VydHBsdXMKKyMgTGFiZWw6ICJDZXJ0cGx1cyBSb290IENBIEcxIgorIyBTZXJpYWw6IDE0OTE5MTE1NjU3Nzk4OTgzNTY3MDk3MzExNzY5NjU2MTU1NjQ2Mzc3MTMKKyMgTUQ1IEZpbmdlcnByaW50OiA3ZjowOTo5YzpmNzpkOTpiOTo1Yzo2OTo2OTo1NjpkNTozNzozZToxNDowZDo0MgorIyBTSEExIEZpbmdlcnByaW50OiAyMjpmZDpkMDpiNzpmZDphMjo0ZTowZDphYzo0OToyYzphMDphYzphNjo3Yjo2YToxZjplMzpmNzo2NgorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDE1OjJhOjQwOjJiOmZjOmRmOjJjOmQ1OjQ4OjA1OjRkOjIyOjc1OmIzOjljOjdmOmNhOjNlOmMwOjk3OjgwOjc4OmIwOmYwOmVhOjc2OmU1OjYxOmE2OmM3OjQzOjNlCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUZhekNDQTFPZ0F3SUJBZ0lTRVNCVmcrUXRQbFJXaFMyRE43Y3MzRVlSTUEwR0NTcUdTSWIzRFFFQkRRVUEKK01ENHhDekFKQmdOVkJBWVRBa1pTTVJFd0R3WURWUVFLREFoRFpYSjBjR3gxY3pFY01Cb0dBMVVFQXd3VFEyVnkKK2RIQnNkWE1nVW05dmRDQkRRU0JITVRBZUZ3MHhOREExTWpZd01EQXdNREJhRncwek9EQXhNVFV3TURBd01EQmEKK01ENHhDekFKQmdOVkJBWVRBa1pTTVJFd0R3WURWUVFLREFoRFpYSjBjR3gxY3pFY01Cb0dBMVVFQXd3VFEyVnkKK2RIQnNkWE1nVW05dmRDQkRRU0JITVRDQ0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUIKK0FOcFFoN2JhdUtrK25XVDZWak9hVmowVzVRT1ZzalFjbW0xaUJkVFlqK2VKWkorNjIyU0xaT1o1S21ITnI0OWEKK2laRmx1Vmo4dEFOZmtUOHRFQlhnZnMrOC9IOURaNml0WGpZajJKaXpUZk5EbmpsOEt2enNpTldJN25DOWhSWXQKKzZrdUpQS054UXY0Yy9kTWNMUkM0aGxUcVE3amJ4b2ZhcUs2QUpjOTZKaDJxa2JCSWI2NjEzcDdZMS9vQS9jYVAKKzBGRzdZbjJrc1l5eS95QVJ1alZqQllaSFlFTXprUFpIb2dOUGxrMmRUOEhxNnB5aS9qUXUzcmZLRzNha3Q2MmYKKzZhalVlRDk0L3ZJNENUWWQwaFlDeU93cWFLLzFqcFR2TFJONkhrSktIUlV4cmd3RVYveGhjL014Vm9ZeGdLREUKK0VXNHdkdU9VOEY4RXhLeUhjb21ZeFozTVZ3aWE5QXo4ZlhvRk92cEhnRG0yejRRVGQyOG42ditXWnhjSWJla04KKzFpTlFNTEFWZEJNKzVTLy9EczNFQzBwZDhOZ0FNMGxtNjZFWWZGa3VQU2k1WVhITHRhVzZ1T3JjNG5CdkNHcmMKK2gyYzA3OTh3Y3QzenlUOGovelhodmlFcElEQ0I1Qm1sSU9rbHluTXhkQ20rNGtMVjg3SW1ac2RvL1JtejV5Q1QKK21laGQ0RjZINTBib0pad0tLU1RVelZpR1VrQWtzbnNQbUJJZ0pQYVFiRWZJRGJzWUlDN1ovZnlMOGlucWgzU1YKKzRFSlFlSVFFUVdHdzlDRWpqeTNMS0NIeWFtejBHcWJGRkxRM1pVK1YvWURJK0hMbEpXdkVZTEY3Ylk1S2luUE8KK1dmdHdlbk1HRTluVGREY2tRUW9SYjVmYzUrUitvYjBWOHJxSER6MW9paFlIQWdNQkFBR2pZekJoTUE0R0ExVWQKK0R3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCU293Y0Nia2FoREZYeGQKK0JpZTBLbEhZbHd1QnNUQWZCZ05WSFNNRUdEQVdnQlNvd2NDYmthaERGWHhkQmllMEtsSFlsd3VCc1RBTkJna3EKK2hraUc5dzBCQVEwRkFBT0NBZ0VBbkZadkFYN1J2VXoxaXNid0poL2s0RGdZekRMREtUdWRRU2swWWNiWDhBQ2gKKzY2UnlqNVFYdkJNc2RiUlg3Z3A4Q1hyYzFjcWgwRFFUK0hlcm4rWCsyQjUwaW9VSGozL01lWHJLbHMzTi9VLzcKKy9TTU5rUFgwWHRQR1lYMmVFZUFDN2drRTJRZmRwb3EzRElNa3U0TlFrdjVnZFJFKzJKMndpbnExNEoyYnk1QlMKK1M3Q1RLdFErRmpQbG5zWmxGVDVrT3dRLzJ3eVBYMXdkYVIrdjgra2hqUFB2bC9hYXR4bTJoSFNjbzFTMWNFNWoKKzJGZGRVeUdiUUpKRCt0WjNWVE5QWk5YNzBDeHFqbTBscHUrRjZBTEVVejY1bm9lOHpEVWEzcUhwaW1PSFpSNFIKK0t0dGpkNWNVdnBvVW1SR3l3TzZ3VC9nVUlUSkRUNStyb3N1b0Q2bzdCbFhHRWlsWENOUTMxNGNuclVsWnA1R3IKK1JIcGVqWERibDg1SVVMRnprL2J3ZzJENXpmSGhNZjFiZkhFaFl4UVVxcS9GM3BOK2FMSHNJcUtxa0hXZXRVTnkKKzZtU2poRXY5REtnbWEzR1g3bFpqWnVoQ1ZQbkhIZC9RajF2ZnlEQnZpUDROeERNY1U2aWovVWdROHVRS1R1RVYKK1YveHVaRERDVlJIYzZxbk5TbFNzS1dORXowcEFvTlpvV1JzeitlODZpOXNna3R4Q2hMOEJxNGZBMVNDQzI4YTUKK2c0VkNYQTlETzJwSk5kV1k5QlcvK21HQkRBa2dHTkxRRnd6TFNBQlE2WGFDakdUWE9xQUhWY3dlTWNEdk9yUmwKKysrTy9RbXVlRDZpOWE1amMyTnZMaTZUZDExbjBidDMrcXNPUjBDNUNCOEFNVFZQTkpMRk1XeDVSOU4vcGt2bz0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPUNlcnRwbHVzIFJvb3QgQ0EgRzIgTz1DZXJ0cGx1cworIyBTdWJqZWN0OiBDTj1DZXJ0cGx1cyBSb290IENBIEcyIE89Q2VydHBsdXMKKyMgTGFiZWw6ICJDZXJ0cGx1cyBSb290IENBIEcyIgorIyBTZXJpYWw6IDE0OTIwODcwOTYxMzE1MzY4NDQyMDk1NjM1MDkyMjg5NTE4NzU4NjE1ODkKKyMgTUQ1IEZpbmdlcnByaW50OiBhNzplZTpjNDo3ODoyZDoxYjplZToyZDpiOToyOTpjZTpkNjphNzo5NjozMjozMQorIyBTSEExIEZpbmdlcnByaW50OiA0Zjo2NTo4ZToxZjplOTowNjpkODoyODowMjplOTo1NDo0Nzo0MTpjOTo1NDoyNTo1ZDo2OTpjYzoxYQorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDZjOmMwOjUwOjQxOmU2OjQ0OjVlOjc0OjY5OjZjOjRjOmZiOmM5OmY4OjBmOjU0OjNiOjdlOmFiOmJiOjQ0OmI0OmNlOjZmOjc4OjdjOjZhOjk5OjcxOmM0OjJmOjE3CistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNIRENDQWFLZ0F3SUJBZ0lTRVNEWmtjNnVvK2pGNS8vcEFxL1BjN3hWTUFvR0NDcUdTTTQ5QkFNRE1ENHgKK0N6QUpCZ05WQkFZVEFrWlNNUkV3RHdZRFZRUUtEQWhEWlhKMGNHeDFjekVjTUJvR0ExVUVBd3dUUTJWeWRIQnMKK2RYTWdVbTl2ZENCRFFTQkhNakFlRncweE5EQTFNall3TURBd01EQmFGdzB6T0RBeE1UVXdNREF3TURCYU1ENHgKK0N6QUpCZ05WQkFZVEFrWlNNUkV3RHdZRFZRUUtEQWhEWlhKMGNHeDFjekVjTUJvR0ExVUVBd3dUUTJWeWRIQnMKK2RYTWdVbTl2ZENCRFFTQkhNakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJNMFBXMWFDMy9CRkd0YXQKKzkzbndIY21zbHRhZVRwd2Z0RUlSeW9hL2JmdUZvOFhsR1Z6WDdxWS9hV2ZZZU9LbXljVGJMWGt1NTR1TkFtOHgKK0lrMEc0MkJ5UlowT1FuZWV6cy9sZjRXYkdPVDh6QzV5MHhhVFRzcVpZMXloQlNwc0JxTmpNR0V3RGdZRFZSMFAKK0FRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZOcURZd0o1anRwTXhqd2oKK0ZOaVB3eUNyS0dCWk1COEdBMVVkSXdRWU1CYUFGTnFEWXdKNWp0cE14andqRk5pUHd5Q3JLR0JaTUFvR0NDcUcKK1NNNDlCQU1EQTJnQU1HVUNNSEQrc0F2Wjk0T1g3UE5WSGRUY3N3WU8vak9ZbllzNWtHdVVJZTIyMTEzV1ROY2gKK3ArZS9JUThyemZjcTNJVUhuUUl4QUlZVUZ1WGNzR1hDd0k0VW43OGtGbWpsdlBsNWFkeXRSU3YzdGpGenpBYWwKK1U1T1JHcE91Y0dwbnV0ZWU1V0VhWHc9PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorCisjIElzc3VlcjogQ049T3BlblRydXN0IFJvb3QgQ0EgRzEgTz1PcGVuVHJ1c3QKKyMgU3ViamVjdDogQ049T3BlblRydXN0IFJvb3QgQ0EgRzEgTz1PcGVuVHJ1c3QKKyMgTGFiZWw6ICJPcGVuVHJ1c3QgUm9vdCBDQSBHMSIKKyMgU2VyaWFsOiAxNDkyMDM2NTc3ODExOTQ3MDEzNzcwNDAwMTI3MDM0ODI1MTc4ODQ0Nzc1CisjIE1ENSBGaW5nZXJwcmludDogNzY6MDA6Y2M6ODE6Mjk6Y2Q6NTU6NWU6ODg6NmE6N2E6MmU6Zjc6NGQ6Mzk6ZGEKKyMgU0hBMSBGaW5nZXJwcmludDogNzk6OTE6ZTg6MzQ6Zjc6ZTI6ZWU6ZGQ6MDg6OTU6MDE6NTI6ZTk6NTU6MmQ6MTQ6ZTk6NTg6ZDU6N2UKKyMgU0hBMjU2IEZpbmdlcnByaW50OiA1NjpjNzo3MToyODpkOTo4YzoxODpkOToxYjo0YzpmZDpmZjpiYzoyNTplZTo5MTowMzpkNDo3NTo4ZTphMjphYjphZDo4Mjo2YTo5MDpmMzo0NTo3ZDo0NjowZTpiNAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlGYnpDQ0ExZWdBd0lCQWdJU0VTQ3prRlU1Zlg4MmJXVENwNTlyWTQ1bk1BMEdDU3FHU0liM0RRRUJDd1VBCitNRUF4Q3pBSkJnTlZCQVlUQWtaU01SSXdFQVlEVlFRS0RBbFBjR1Z1VkhKMWMzUXhIVEFiQmdOVkJBTU1GRTl3CitaVzVVY25WemRDQlNiMjkwSUVOQklFY3hNQjRYRFRFME1EVXlOakE0TkRVMU1Gb1hEVE00TURFeE5UQXdNREF3CitNRm93UURFTE1Ba0dBMVVFQmhNQ1JsSXhFakFRQmdOVkJBb01DVTl3Wlc1VWNuVnpkREVkTUJzR0ExVUVBd3dVCitUM0JsYmxSeWRYTjBJRkp2YjNRZ1EwRWdSekV3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQ0R3QXdnZ0lLCitBb0lDQVFENGVVYmFsc1V3WG9weEF5MXdwTHV3eFFqY3plWTF3SUNrRVMzZDVvZXVYVDJSMG9kc043ZmFZcDZiCit3aVRYai9IYnBxYmZSbTlScG5ITFBoc3haMkwzRVZzMEo5VjVUb3liV0wwaUVBMWNKd3pkTU9XbzAxMGhPSFFYCisvdU1mdGs4N2F5M2JmV0FmakgxTUJjTHJBUllWbUJTTzBaQjNJai9zd2ptNGVUcndTU1RpbFpIY1lUU1NqRlIwCis3N0Y5akFIaU9IM0JYMnBmSkxLT1loZXRlU0N0cXgyMzRMU1dTRTltUXhBR0ZpUUQ0ZUNjanNaR1Q0NGFtZUdQCit1WTR6YkduZVdLMmdEcWRrVkJGcFJHWlBUQktuaml4OXhOUmJ4UUEwTU1IWm1mNHl6Z2VFdEU3TkN2ODJUV0x4CitwMk5YNU50cXA2Ni9LN25KNXJJbmllVittaHhOYU1iQkdONHpLMUZHU3h5Tzl6ME0rWW8wRk1UN016VWo4Y3p4CitLc2VsdTdDaXp2NVRhMDFCRzJZb3NwYjZwNjRLVHJrNU0wU2NkTUdUSFBqZ25pUWxRL0diSTRLcTN5d2dzTncyCitUZ096ZkFMVTVuc2Fxb2NUdno2aGRMdWJEdUhBazUvWHBHYkt1eHM3NHpEME0xbUtCM0lEVmVkemFnTXhibStXCitHK09pbjYrU3grMzFRcmNsVERzVEJNOGNscThjSXFQUXF3V3lUQklqVXR6OUdWc25uQjQ3ZXYxQ0k5c2pnQlB3Cit2RkVWVkpTbWR6N1FkRkc5VVJRSU9UZkxIelNwTUoxU2hDNVZrTEc2MzFVQUM5aFdMYkZKU1hLQXFXTFh3UFlZCitFUVJWelhSN3oyRndlZlI3TEZ4Y2t2emx1RnFyVEpPVm9TZnVwYjdQY1NOQ3VwdDJMUUlEQVFBQm8yTXdZVEFPCitCZ05WSFE4QkFmOEVCQU1DQVFZd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVWwwWWhWeUUxCisyalpWeC9QeE4zRGxDUGFUS2JZd0h3WURWUjBqQkJnd0ZvQVVsMFloVnlFMTJqWlZ4L1B4TjNEbENQYVRLYll3CitEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBQjNkQW1CODREV241cGg3NmtUT1owQlA4cE51WnRRNWlTYXMwMDBFCitQTHVISVQ4MzlIRWwya3U2cTVhQ2daRzI3ZG14cEdXWDRtOWtXYVNXN21ES0h5UDdSYnIvanlUd3lxa3hmM2tmCitnTE10TXJwa1oyQ3Z1Vm5OMzVwSjA2aUNzZm1ZbElyTTRMdmdCQnVaWUxGR1pkd0lvckpHbmtTSTZwTitWeGJTCitGWEpmTGt1cjFKMWp1T05JNWY2RUxsZ0tuME1kL3JjWWtvWkRTdzZjTW9Zc1lQWHBTT3FWN1hBcDhkVXYvVFcwCitWOC9iaFVpWnVjSnZiSS9OZUpXc1pDajlWckREYjhPK1dWTGhYNFNQZ1BMMERUYXRkck9qdGVGa2RqcFkzSDFQCitYbFpzNVZWWlY2WGY4WXBtTUl6VVVtSTRkN1MrS05mS05zU2JCZkQ0RmR2YjhlODBuUjE0U29oV1oyNWcvNC9JCitpK0dPdlVLcE13cFpRaElTS3ZxeG5VT09CWnVaMm1LdFZ6YXpIYllOZVMyV3VPdnlERXNNcFpUR01LY21HUzN0CitUQVpRTVBIOVdEMjVTeGRmR2JScWhGUzBPRTg1b2cyV2FNTW9sUDN0TFI5S2EwT1dMcEFCRVBzNHBvRUwwTDkxCiswOVM1enZFL2J3NGNIamR4NVJpSGRSay9VTGxlcEVVMHJiREs1dVVUZGc4eEZLbU9MWlRXMVlWTmN4VlBTL0t5CitQdTFzdmYwT25XWnpzRDIwOTcrbzRCR2t4SzUxQ1VwakFFZ2dwc2FkQ3dtS3RPRG16ajdIUGlZNDZTdmVwZ2hKCitBd1NRaXVtUHYraTJ0Q3FqSTQwY0hMSTVrcWlQQWx4QU9YWFVjMEVDZDk3TjRFT0gxdVM2U3NOc0VuLytLdVlqCisxb3h4CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCisKKyMgSXNzdWVyOiBDTj1PcGVuVHJ1c3QgUm9vdCBDQSBHMiBPPU9wZW5UcnVzdAorIyBTdWJqZWN0OiBDTj1PcGVuVHJ1c3QgUm9vdCBDQSBHMiBPPU9wZW5UcnVzdAorIyBMYWJlbDogIk9wZW5UcnVzdCBSb290IENBIEcyIgorIyBTZXJpYWw6IDE0OTIwMTI0NDgwNDI3MDIwOTY5ODY4NzU5ODc2NzY5MzU1NzM0MTU0NDEKKyMgTUQ1IEZpbmdlcnByaW50OiA1NzoyNDpiNjo1OToyNDo2YjphZTpjODpmZToxYzowYzoyMDpmMjpjMDo0ZTplYgorIyBTSEExIEZpbmdlcnByaW50OiA3OTo1Zjo4ODo2MDpjNTphYjo3YzozZDo5MjplNjpjYjpmNDo4ZDplMTo0NTpjZDoxMTplZjo2MDowYgorIyBTSEEyNTYgRmluZ2VycHJpbnQ6IDI3Ojk5OjU4OjI5OmZlOjZhOjc1OjE1OmMxOmJmOmU4OjQ4OmY5OmM0Ojc2OjFkOmIxOjZjOjIyOjU5OjI5OjI1OjdiOmY0OjBkOjA4Ojk0OmYyOjllOmE4OmJhOmYyCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUZiekNDQTFlZ0F3SUJBZ0lTRVNDaGFSdS92Ym05VXBhUEkraEl2eVlSTUEwR0NTcUdTSWIzRFFFQkRRVUEKK01FQXhDekFKQmdOVkJBWVRBa1pTTVJJd0VBWURWUVFLREFsUGNHVnVWSEoxYzNReEhUQWJCZ05WQkFNTUZFOXcKK1pXNVVjblZ6ZENCU2IyOTBJRU5CSUVjeU1CNFhEVEUwTURVeU5qQXdNREF3TUZvWERUTTRNREV4TlRBd01EQXcKK01Gb3dRREVMTUFrR0ExVUVCaE1DUmxJeEVqQVFCZ05WQkFvTUNVOXdaVzVVY25WemRERWRNQnNHQTFVRUF3d1UKK1QzQmxibFJ5ZFhOMElGSnZiM1FnUTBFZ1J6SXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUsKK0FvSUNBUURNdGxlbE01UVFnVEpUMzJGK0QzWTV6MXpDVTNVZFNYcVdPTjJpYzJyeGI5NWVvbHE1Y1NHK050bWgKKy9MenViS2g4TkJweEd1Z2EyRjhPUkFidHArRHowbUVMNERLaWx0RTQ4TUxhQVJmODVLeFA2TzZKSG5TclQ3OGUKK0NiWTJhbGJ6NGU2V2lXWWtCdVROUWpwSzNlQ2FzTVNDUmJQK3lhdGNmRDdKNnhjdkRIMXVycVdQeUt3bENtLzYKKzFVV1kwalVKOWdORGxQN1p2eUNWZVlDWWl0bUpOYnRSRzZRM2ZmeVpPNnYvdjZ3TmowT3htWHNXRUg0ZGIwZkUKK0ZZOEVsZ2dHUWdUNGhOWWR2SkdtUXI1SjFXcUlQN3d0VWRHZWplQlN6RmZkTlRWWTI3U1BKSWpraTkvY2ExVFMKK2dTdXl6cEpMSEI5RytoM1lrc3QyWjdVSm1RbmxyQmNVVlhER1BLQldDZ096M0dJWjM4aTFNSC8xUENaMUViM1gKK0c3T0huZ2V2WlhIbG9NOGFwd2tRSFpPSlpsdm9QR0l5dGJVNmJ1bUZBWXVlUTR4bmN5aFpXK3ZqM0N6TXBTWnkKK1loSzA1cHlEUlBaUnBPTEFlaVJYeWc2bFB6cTFPNHZsZHU1dzVwTGVGbHdvVzVjWko1TCtlcEpVenBNNUNoYUgKK3ZHT3o5YkdUWE9CdXQ5RHErV0l5aUVUN3Z5Y290akNWWFJJb3VaVytqMU1ZNWFJWUZ1SldwTElzRVBVZE42YjQKK3QvYlFXVnlKOThMVnRaUjAwZFgrRzdidzV0WWVlOUk4eTZqajlSanpJUjl1NzAxb0Juc3RYVzVEaWFiQSthQy8KK2doN1BVMyswNnl6YlhmWnFmVUFrQlhLSk9BR1R5M0hDT1YwR0VmWnZlUGczRFRtRUp3SURBUUFCbzJNd1lUQU8KK0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVYWpuNlFpTDMKKzVva0FUVjU5TTRQTHVHNTNocTh3SHdZRFZSMGpCQmd3Rm9BVWFqbjZRaUwzNW9rQVRWNTlNNFBMdUc1M2hxOHcKK0RRWUpLb1pJaHZjTkFRRU5CUUFEZ2dJQkFKakxxMEE4NVRNQ2wzOHRoNmFQMUY1S3I3Z2U1N3R4KzRCa0phbXoKK0dqNW9YU2NtcDdvcTRmQlhnd3BrVHg0aWRCdnBrRi93ck0vL1QyaDZPS1FRYkEyeHg2UjNnQmkyb2loRWRxYzAKK25YR0VMOHBaMGtlSW1VRWl5VENZWVc0OXFLZ0ZiZEVmd0ZGRVZuOG5OUUxkWHBnS1F1c3d2NDJobTFHcU8rcVQKK1JtVEZBSG5lSVd2MlY2Q0cxd1p5N0hCR1M0dHozYUFoZFQ3Y0hjQ1AwMDl6SElYWi9uOWl5SlZ2dHRON2pMcFQKK3dtK2JSRXg1MEIxd3M5ZWZBdlN5QjdESDVmaXRJdzZtVnNrcEVuZEkyUzlHL1R2dy9IUndrcVdPT0FnZlpEQzIKK3QwdjdOcXdRanFCU00yT2RBelZXeFdtOXhpTmFKNVQycEJMNExUTThvVmFsWDlZWjZlMThDTDEzelNka3pKVGEKK1RrWlFoK0Q1d1ZPQUhydXQrMGRTaXh2OW92bmVEaUszUFROWmJOVGU5WlVHTWcxUkdVRmNQazhHOTdrcmdDZjIKK282cDZmQWJoUThNVE9XSWFOcjNnS0M2VUF1UXBMbUJWcmtBOXNIU1NYdkFnWkpZL1gwVmRpTFdLMmdLZ1cwVlUKKzNqZzlDY0NvU21WR0Z2eXF2MVJPVFZ1K09FTzNLTXFMTTZvYUpib2xYQ2t2VzBwdWpPb3RuQ3IyQlhiZ2Q1ZUEKK2lOMW5FMjhkYUNTTFQ3ZDBnZVgwWUo5NlZkYytOOW9XYXo1M3JLNFljSlVJZVNrRGl2N0JPN00vR2cra08xNGYKK1dLR1Z5YXN2YzByUUxXNmFXUTlWR0hndFBGR21sNHZtdTdKd3Frd1Izdjk4S3pmVWV0RjNOSS9uK1VMM1BJRU0KK1MxSUsKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KKworIyBJc3N1ZXI6IENOPU9wZW5UcnVzdCBSb290IENBIEczIE89T3BlblRydXN0CisjIFN1YmplY3Q6IENOPU9wZW5UcnVzdCBSb290IENBIEczIE89T3BlblRydXN0CisjIExhYmVsOiAiT3BlblRydXN0IFJvb3QgQ0EgRzMiCisjIFNlcmlhbDogMTQ5MjEwNDkwODI3MTQ4NTY1MzA3MTIxOTk0MTg2NDE3MTE3MDQ1NTYxNQorIyBNRDUgRmluZ2VycHJpbnQ6IDIxOjM3OmI0OjE3OjE2OjkyOjdiOjY3OjQ2OjcwOmE5Ojk2OmQ3OmE4OjEzOjI0CisjIFNIQTEgRmluZ2VycHJpbnQ6IDZlOjI2OjY0OmYzOjU2OmJmOjM0OjU1OmJmOmQxOjkzOjNmOjdjOjAxOmRlOmQ4OjEzOmRhOjhhOmE2CisjIFNIQTI1NiBGaW5nZXJwcmludDogYjc6YzM6NjI6MzE6NzA6NmU6ODE6MDc6OGM6MzY6N2M6Yjg6OTY6MTk6OGY6MWU6MzI6MDg6ZGQ6OTI6Njk6NDk6ZGQ6OGY6NTc6MDk6YTQ6MTA6Zjc6NWI6NjI6OTIKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJQ0lUQ0NBYWFnQXdJQkFnSVNFU0RtK0V6OEpMQytCVUNzMm9NYk5HQS9NQW9HQ0NxR1NNNDlCQU1ETUVBeAorQ3pBSkJnTlZCQVlUQWtaU01SSXdFQVlEVlFRS0RBbFBjR1Z1VkhKMWMzUXhIVEFiQmdOVkJBTU1GRTl3Wlc1VQorY25WemRDQlNiMjkwSUVOQklFY3pNQjRYRFRFME1EVXlOakF3TURBd01Gb1hEVE00TURFeE5UQXdNREF3TUZvdworUURFTE1Ba0dBMVVFQmhNQ1JsSXhFakFRQmdOVkJBb01DVTl3Wlc1VWNuVnpkREVkTUJzR0ExVUVBd3dVVDNCbAorYmxSeWRYTjBJRkp2YjNRZ1EwRWdSek13ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUks3bGl1VGNwbQorM2dZNm94SDg0Qmp3Ymh5NkxUQU1pZG5XN3B0emc2a2pGWXd2V1lwYTNSVHFuVmtyUTdjRzdESzJ1dTVCdGExZAorb1lYTTZoMFVacU5uZmtiaWxQUG50bGFoRlZtaFR6ZVh1U0lldlJIcjlMSWZYc01VbXVYWmw1bWpZekJoTUE0RworQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUkhkOE1VaTJJNQorRE1sdjRWQk4wQkJZM0pXSWJUQWZCZ05WSFNNRUdEQVdnQlJIZDhNVWkySTVETWx2NFZCTjBCQlkzSldJYlRBSworQmdncWhrak9QUVFEQXdOcEFEQm1BakVBajZqY25ib01CQmY2RmVrOUx5a0JsNytCRmpOQWsyejgrZTJBY0crcQorajl1RXdvdjFOY29HM0dSdmFCYmhqNUc1QWpFQTJFdWx5OExRQ0d6cEdQdGEzVTFmSkF1d0FDRWw3NCtuQkNaeAorNG54cDVWMmErRUVmT3ptVGs1MVY2czJOOGZ2QgorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvY3BwL2hlbGxvd29ybGQvQ01ha2VMaXN0cy50eHQgYi9leGFtcGxlcy9jcHAvaGVsbG93b3JsZC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjA5OGM5Ci0tLSAvZGV2L251bGwKKysrIGIvZXhhbXBsZXMvY3BwL2hlbGxvd29ybGQvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSw0OSBAQAorIyBNaW5pbXVtIENNYWtlIHJlcXVpcmVkDQorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOCkNCisNCisjIFByb2plY3QNCitwcm9qZWN0KEhlbGxvV29ybGQgQ1hYKQ0KKw0KKyMgUHJvdG9idWYNCitzZXQocHJvdG9idWZfTU9EVUxFX0NPTVBBVElCTEUgVFJVRSkNCitmaW5kX3BhY2thZ2UocHJvdG9idWYgQ09ORklHIFJFUVVJUkVEKQ0KK21lc3NhZ2UoU1RBVFVTICJVc2luZyBwcm90b2J1ZiAke3Byb3RvYnVmX1ZFUlNJT059IikNCisNCisjIGdSUEMNCitmaW5kX3BhY2thZ2UoZ1JQQyBDT05GSUcgUkVRVUlSRUQpDQorbWVzc2FnZShTVEFUVVMgIlVzaW5nIGdSUEMgJHtnUlBDX1ZFUlNJT059IikNCisNCisjIGdSUEMgQysrIHBsdWdpbg0KK2dldF90YXJnZXRfcHJvcGVydHkoZ1JQQ19DUFBfUExVR0lOX0VYRUNVVEFCTEUgZ1JQQzo6Z3JwY19jcHBfcGx1Z2luDQorICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UpDQorDQorIyBQcm90byBmaWxlDQorZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChod19wcm90byAiLi4vLi4vcHJvdG9zL2hlbGxvd29ybGQucHJvdG8iIEFCU09MVVRFKQ0KK2dldF9maWxlbmFtZV9jb21wb25lbnQoaHdfcHJvdG9fcGF0aCAiJHtod19wcm90b30iIFBBVEgpDQorDQorIyBHZW5lcmF0ZWQgc291cmNlcw0KK3Byb3RvYnVmX2dlbmVyYXRlX2NwcChod19wcm90b19zcmNzIGh3X3Byb3RvX2hkcnMgIiR7aHdfcHJvdG99IikNCitzZXQoaHdfZ3JwY19zcmNzICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vaGVsbG93b3JsZC5ncnBjLnBiLmNjIikNCitzZXQoaHdfZ3JwY19oZHJzICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vaGVsbG93b3JsZC5ncnBjLnBiLmgiKQ0KK2FkZF9jdXN0b21fY29tbWFuZCgNCisgICAgICBPVVRQVVQgIiR7aHdfZ3JwY19zcmNzfSIgIiR7aHdfZ3JwY19oZHJzfSINCisgICAgICBDT01NQU5EIHByb3RvYnVmOjpwcm90b2MNCisgICAgICBBUkdTIC0tZ3JwY19vdXQgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSIgLUkgIiR7aHdfcHJvdG9fcGF0aH0iDQorICAgICAgICAtLXBsdWdpbj1wcm90b2MtZ2VuLWdycGM9IiR7Z1JQQ19DUFBfUExVR0lOX0VYRUNVVEFCTEV9Ig0KKyAgICAgICAgIiR7aHdfcHJvdG99Ig0KKyAgICAgIERFUEVORFMgIiR7aHdfcHJvdG99IikNCisNCisjIEdlbmVyYXRlZCBpbmNsdWRlIGRpcmVjdG9yeQ0KK2luY2x1ZGVfZGlyZWN0b3JpZXMoIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSIpDQorDQorIyBUYXJnZXRzIGdyZWV0ZXJfW2FzeW5jX10oY2xpZW50fHNlcnZlcikNCitmb3JlYWNoKF90YXJnZXQNCisgIGdyZWV0ZXJfY2xpZW50IGdyZWV0ZXJfc2VydmVyDQorICBncmVldGVyX2FzeW5jX2NsaWVudCBncmVldGVyX2FzeW5jX3NlcnZlcikNCisgIGFkZF9leGVjdXRhYmxlKCR7X3RhcmdldH0gIiR7X3RhcmdldH0uY2MiDQorICAgICR7aHdfcHJvdG9fc3Jjc30NCisgICAgJHtod19ncnBjX3NyY3N9KQ0KKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7X3RhcmdldH0NCisgICAgcHJvdG9idWY6OmxpYnByb3RvYnVmDQorICAgIGdSUEM6OmdycGMrK191bnNlY3VyZSkNCitlbmRmb3JlYWNoKCkNCmRpZmYgLS1naXQgYS9leGFtcGxlcy9jcHAvaGVsbG93b3JsZC9NYWtlZmlsZSBiL2V4YW1wbGVzL2NwcC9oZWxsb3dvcmxkL01ha2VmaWxlCmluZGV4IGI0NWIzYzcuLmRmODJmNDYgMTAwNjQ0Ci0tLSBhL2V4YW1wbGVzL2NwcC9oZWxsb3dvcmxkL01ha2VmaWxlCisrKyBiL2V4YW1wbGVzL2NwcC9oZWxsb3dvcmxkL01ha2VmaWxlCkBAIC0yOSwxMCArMjksMjAgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICMKIAorSE9TVF9TWVNURU0gPSAkKHNoZWxsIHVuYW1lIHwgY3V0IC1mIDEgLWRfKQorU1lTVEVNID89ICQoSE9TVF9TWVNURU0pCiBDWFggPSBnKysKIENQUEZMQUdTICs9IC1JL3Vzci9sb2NhbC9pbmNsdWRlIC1wdGhyZWFkCiBDWFhGTEFHUyArPSAtc3RkPWMrKzExCi1MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIgYHBrZy1jb25maWcgLS1saWJzIGdycGMrKyBncnBjYCAtbHByb3RvYnVmIC1scHRocmVhZCAtbGRsCitpZmVxICgkKFNZU1RFTSksRGFyd2luKQorTERGTEFHUyArPSAtTC91c3IvbG9jYWwvbGliIGBwa2ctY29uZmlnIC0tbGlicyBncnBjKysgZ3JwY2AgICAgICAgXAorICAgICAgICAgICAtbGdycGMrK19yZWZsZWN0aW9uIFwKKyAgICAgICAgICAgLWxwcm90b2J1ZiAtbHB0aHJlYWQgLWxkbAorZWxzZQorTERGTEFHUyArPSAtTC91c3IvbG9jYWwvbGliIGBwa2ctY29uZmlnIC0tbGlicyBncnBjKysgZ3JwY2AgICAgICAgXAorICAgICAgICAgICAtV2wsLS1uby1hcy1uZWVkZWQgLWxncnBjKytfcmVmbGVjdGlvbiAtV2wsLS1hcy1uZWVkZWQgXAorICAgICAgICAgICAtbHByb3RvYnVmIC1scHRocmVhZCAtbGRsCitlbmRpZgogUFJPVE9DID0gcHJvdG9jCiBHUlBDX0NQUF9QTFVHSU4gPSBncnBjX2NwcF9wbHVnaW4KIEdSUENfQ1BQX1BMVUdJTl9QQVRIID89IGB3aGljaCAkKEdSUENfQ1BQX1BMVUdJTilgCmRpZmYgLS1naXQgYS9leGFtcGxlcy9jcHAvcm91dGVfZ3VpZGUvTWFrZWZpbGUgYi9leGFtcGxlcy9jcHAvcm91dGVfZ3VpZGUvTWFrZWZpbGUKaW5kZXggNTBlY2YwNC4uYmE1ZTQ1YyAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvY3BwL3JvdXRlX2d1aWRlL01ha2VmaWxlCisrKyBiL2V4YW1wbGVzL2NwcC9yb3V0ZV9ndWlkZS9NYWtlZmlsZQpAQCAtMjksMTAgKzI5LDIwIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjCiAKK0hPU1RfU1lTVEVNID0gJChzaGVsbCB1bmFtZSB8IGN1dCAtZiAxIC1kXykKK1NZU1RFTSA/PSAkKEhPU1RfU1lTVEVNKQogQ1hYID0gZysrCiBDUFBGTEFHUyArPSAtSS91c3IvbG9jYWwvaW5jbHVkZSAtcHRocmVhZAogQ1hYRkxBR1MgKz0gLXN0ZD1jKysxMQotTERGTEFHUyArPSAtTC91c3IvbG9jYWwvbGliIGBwa2ctY29uZmlnIC0tbGlicyBncnBjKytgIC1scHJvdG9idWYgLWxwdGhyZWFkIC1sZGwKK2lmZXEgKCQoU1lTVEVNKSxEYXJ3aW4pCitMREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIgYHBrZy1jb25maWcgLS1saWJzIGdycGMrK2AgICAgICAgICAgICBcCisgICAgICAgICAgIC1sZ3JwYysrX3JlZmxlY3Rpb24gXAorICAgICAgICAgICAtbHByb3RvYnVmIC1scHRocmVhZCAtbGRsCitlbHNlCitMREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIgYHBrZy1jb25maWcgLS1saWJzIGdycGMrK2AgICAgICAgICAgICBcCisgICAgICAgICAgIC1XbCwtLW5vLWFzLW5lZWRlZCAtbGdycGMrK19yZWZsZWN0aW9uIC1XbCwtLWFzLW5lZWRlZCBcCisgICAgICAgICAgIC1scHJvdG9idWYgLWxwdGhyZWFkIC1sZGwKK2VuZGlmCiBQUk9UT0MgPSBwcm90b2MKIEdSUENfQ1BQX1BMVUdJTiA9IGdycGNfY3BwX3BsdWdpbgogR1JQQ19DUFBfUExVR0lOX1BBVEggPz0gYHdoaWNoICQoR1JQQ19DUFBfUExVR0lOKWAKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL29iamVjdGl2ZS1jL2F1dGhfc2FtcGxlL0F1dGhUZXN0U2VydmljZS5wb2RzcGVjIGIvZXhhbXBsZXMvb2JqZWN0aXZlLWMvYXV0aF9zYW1wbGUvQXV0aFRlc3RTZXJ2aWNlLnBvZHNwZWMKaW5kZXggYWY1ZWYyOC4uZDcwOWM3ZSAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvb2JqZWN0aXZlLWMvYXV0aF9zYW1wbGUvQXV0aFRlc3RTZXJ2aWNlLnBvZHNwZWMKKysrIGIvZXhhbXBsZXMvb2JqZWN0aXZlLWMvYXV0aF9zYW1wbGUvQXV0aFRlc3RTZXJ2aWNlLnBvZHNwZWMKQEAgLTE0LDcgKzE0LDcgQEAKICAgc3JjID0gIi4uLy4uL3Byb3RvcyIKIAogICAjIFJ1biBwcm90b2Mgd2l0aCB0aGUgT2JqZWN0aXZlLUMgYW5kIGdSUEMgcGx1Z2lucyB0byBnZW5lcmF0ZSBwcm90b2NvbCBtZXNzYWdlcyBhbmQgZ1JQQyBjbGllbnRzLgotICBzLmRlcGVuZGVuY3kgIiFQcm90b0NvbXBpbGVyLWdSUENQbHVnaW4iLCAifj4gMC4xNCIKKyAgcy5kZXBlbmRlbmN5ICIhUHJvdG9Db21waWxlci1nUlBDUGx1Z2luIiwgIn4+IDEuMC4wLXByZTEiCiAKICAgIyBQb2RzIGRpcmVjdG9yeSBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYXBwJ3MgUG9kZmlsZSwgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHRoaXMgcG9kc3BlYy4KICAgcG9kc19yb290ID0gJ1BvZHMnCmRpZmYgLS1naXQgYS9leGFtcGxlcy9vYmplY3RpdmUtYy9hdXRoX3NhbXBsZS9NaXNjL0dvb2dsZVNlcnZpY2UtSW5mby5wbGlzdCBiL2V4YW1wbGVzL29iamVjdGl2ZS1jL2F1dGhfc2FtcGxlL01pc2MvR29vZ2xlU2VydmljZS1JbmZvLnBsaXN0CmluZGV4IDg2OTA5ZDguLmZmMjI1MDcgMTAwNjQ0Ci0tLSBhL2V4YW1wbGVzL29iamVjdGl2ZS1jL2F1dGhfc2FtcGxlL01pc2MvR29vZ2xlU2VydmljZS1JbmZvLnBsaXN0CisrKyBiL2V4YW1wbGVzL29iamVjdGl2ZS1jL2F1dGhfc2FtcGxlL01pc2MvR29vZ2xlU2VydmljZS1JbmZvLnBsaXN0CkBAIC0yLDkgKzIsMzkgQEAKIDwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KKwk8a2V5PkFEX1VOSVRfSURfRk9SX0JBTk5FUl9URVNUPC9rZXk+CisJPHN0cmluZz5yZWRhY3RlZDwvc3RyaW5nPgorCTxrZXk+QURfVU5JVF9JRF9GT1JfSU5URVJTVElUSUFMX1RFU1Q8L2tleT4KKwk8c3RyaW5nPnJlZGFjdGVkPC9zdHJpbmc+CiAJPGtleT5DTElFTlRfSUQ8L2tleT4KIAk8c3RyaW5nPjE1MDg3Mzg1MTMxLWxoOWJwa2lhaTlubHM1M3VhZGp1MGlmNms3dW4zdWloLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tPC9zdHJpbmc+CiAJPGtleT5SRVZFUlNFRF9DTElFTlRfSUQ8L2tleT4KIAk8c3RyaW5nPmNvbS5nb29nbGV1c2VyY29udGVudC5hcHBzLjE1MDg3Mzg1MTMxLWxoOWJwa2lhaTlubHM1M3VhZGp1MGlmNms3dW4zdWloPC9zdHJpbmc+CisJPGtleT5BUElfS0VZPC9rZXk+CisJPHN0cmluZz5yZWRhY3RlZDwvc3RyaW5nPgorCTxrZXk+R0NNX1NFTkRFUl9JRDwva2V5PgorCTxzdHJpbmc+cmVkYWN0ZWQ8L3N0cmluZz4KKwk8a2V5PlBMSVNUX1ZFUlNJT048L2tleT4KKwk8c3RyaW5nPjE8L3N0cmluZz4KKwk8a2V5PkJVTkRMRV9JRDwva2V5PgorCTxzdHJpbmc+aW8uZ3JwYy5BdXRoU2FtcGxlPC9zdHJpbmc+CisJPGtleT5QUk9KRUNUX0lEPC9rZXk+CisJPHN0cmluZz5ncnBjLWF1dGhzYW1wbGU8L3N0cmluZz4KKwk8a2V5PlNUT1JBR0VfQlVDS0VUPC9rZXk+CisJPHN0cmluZz5ncnBjLWF1dGhzYW1wbGUuYXBwc3BvdC5jb208L3N0cmluZz4KKwk8a2V5PklTX0FEU19FTkFCTEVEPC9rZXk+CisJPGZhbHNlLz4KKwk8a2V5PklTX0FOQUxZVElDU19FTkFCTEVEPC9rZXk+CisJPGZhbHNlLz4KKwk8a2V5PklTX0FQUElOVklURV9FTkFCTEVEPC9rZXk+CisJPGZhbHNlLz4KKwk8a2V5PklTX0dDTV9FTkFCTEVEPC9rZXk+CisJPGZhbHNlLz4KKwk8a2V5PklTX1NJR05JTl9FTkFCTEVEPC9rZXk+CisJPHRydWUvPgorCTxrZXk+R09PR0xFX0FQUF9JRDwva2V5PgorCTxzdHJpbmc+MToxNTA4NzM4NTEzMTppb3M6ZDU0NzE2OGFiZTNjMzYyZjwvc3RyaW5nPgorCTxrZXk+REFUQUJBU0VfVVJMPC9rZXk+CisJPHN0cmluZz5odHRwczovL2dycGMtYXV0aHNhbXBsZS5maXJlYmFzZWlvLmNvbTwvc3RyaW5nPgogPC9kaWN0PgotPC9wbGlzdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvb2JqZWN0aXZlLWMvaGVsbG93b3JsZC9IZWxsb1dvcmxkLnBvZHNwZWMgYi9leGFtcGxlcy9vYmplY3RpdmUtYy9oZWxsb3dvcmxkL0hlbGxvV29ybGQucG9kc3BlYwppbmRleCBiY2U2Y2Q1Li40ODM2NGZjIDEwMDY0NAotLS0gYS9leGFtcGxlcy9vYmplY3RpdmUtYy9oZWxsb3dvcmxkL0hlbGxvV29ybGQucG9kc3BlYworKysgYi9leGFtcGxlcy9vYmplY3RpdmUtYy9oZWxsb3dvcmxkL0hlbGxvV29ybGQucG9kc3BlYwpAQCAtMTQsNyArMTQsNyBAQAogICBzcmMgPSAiLi4vLi4vcHJvdG9zIgogCiAgICMgUnVuIHByb3RvYyB3aXRoIHRoZSBPYmplY3RpdmUtQyBhbmQgZ1JQQyBwbHVnaW5zIHRvIGdlbmVyYXRlIHByb3RvY29sIG1lc3NhZ2VzIGFuZCBnUlBDIGNsaWVudHMuCi0gIHMuZGVwZW5kZW5jeSAiIVByb3RvQ29tcGlsZXItZ1JQQ1BsdWdpbiIsICJ+PiAwLjE0IgorICBzLmRlcGVuZGVuY3kgIiFQcm90b0NvbXBpbGVyLWdSUENQbHVnaW4iLCAifj4gMS4wLjAtcHJlMSIKIAogICAjIFBvZHMgZGlyZWN0b3J5IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBhcHAncyBQb2RmaWxlLCByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdGhpcyBwb2RzcGVjLgogICBwb2RzX3Jvb3QgPSAnUG9kcycKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL29iamVjdGl2ZS1jL3JvdXRlX2d1aWRlL1JvdXRlR3VpZGUucG9kc3BlYyBiL2V4YW1wbGVzL29iamVjdGl2ZS1jL3JvdXRlX2d1aWRlL1JvdXRlR3VpZGUucG9kc3BlYwppbmRleCBlMjEzMjUwLi4wNGJjMTBiIDEwMDY0NAotLS0gYS9leGFtcGxlcy9vYmplY3RpdmUtYy9yb3V0ZV9ndWlkZS9Sb3V0ZUd1aWRlLnBvZHNwZWMKKysrIGIvZXhhbXBsZXMvb2JqZWN0aXZlLWMvcm91dGVfZ3VpZGUvUm91dGVHdWlkZS5wb2RzcGVjCkBAIC0xNCw3ICsxNCw3IEBACiAgIHNyYyA9ICIuLi8uLi9wcm90b3MiCiAKICAgIyBSdW4gcHJvdG9jIHdpdGggdGhlIE9iamVjdGl2ZS1DIGFuZCBnUlBDIHBsdWdpbnMgdG8gZ2VuZXJhdGUgcHJvdG9jb2wgbWVzc2FnZXMgYW5kIGdSUEMgY2xpZW50cy4KLSAgcy5kZXBlbmRlbmN5ICIhUHJvdG9Db21waWxlci1nUlBDUGx1Z2luIiwgIn4+IDAuMTQiCisgIHMuZGVwZW5kZW5jeSAiIVByb3RvQ29tcGlsZXItZ1JQQ1BsdWdpbiIsICJ+PiAxLjAuMC1wcmUxIgogCiAgICMgUG9kcyBkaXJlY3RvcnkgY29ycmVzcG9uZGluZyB0byB0aGlzIGFwcCdzIFBvZGZpbGUsIHJlbGF0aXZlIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGlzIHBvZHNwZWMuCiAgIHBvZHNfcm9vdCA9ICdQb2RzJwpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcGhwL2NvbXBvc2VyLmpzb24gYi9leGFtcGxlcy9waHAvY29tcG9zZXIuanNvbgppbmRleCBhOGI3OTBiLi5kNDBiNWRiIDEwMDY0NAotLS0gYS9leGFtcGxlcy9waHAvY29tcG9zZXIuanNvbgorKysgYi9leGFtcGxlcy9waHAvY29tcG9zZXIuanNvbgpAQCAtMyw2ICszLDYgQEAKICAgImRlc2NyaXB0aW9uIjogImdSUEMgZXhhbXBsZSBmb3IgUEhQIiwKICAgIm1pbmltdW0tc3RhYmlsaXR5IjogImRldiIsCiAgICJyZXF1aXJlIjogewotICAgICJncnBjL2dycGMiOiAidjAuMTUuMCIKKyAgICAiZ3JwYy9ncnBjIjogInYwLjE1LjIiCiAgIH0KIH0KZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3B5dGhvbi9oZWxsb3dvcmxkL2dyZWV0ZXJfY2xpZW50LnB5IGIvZXhhbXBsZXMvcHl0aG9uL2hlbGxvd29ybGQvZ3JlZXRlcl9jbGllbnQucHkKaW5kZXggNDBkNjM3Zi4uNDRkNDJjMSAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvcHl0aG9uL2hlbGxvd29ybGQvZ3JlZXRlcl9jbGllbnQucHkKKysrIGIvZXhhbXBsZXMvcHl0aG9uL2hlbGxvd29ybGQvZ3JlZXRlcl9jbGllbnQucHkKQEAgLTMxLDE3ICszMSwxNSBAQAogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiAKLWZyb20gZ3JwYy5iZXRhIGltcG9ydCBpbXBsZW1lbnRhdGlvbnMKK2ltcG9ydCBncnBjCiAKIGltcG9ydCBoZWxsb3dvcmxkX3BiMgogCi1fVElNRU9VVF9TRUNPTkRTID0gMTAKLQogCiBkZWYgcnVuKCk6Ci0gIGNoYW5uZWwgPSBpbXBsZW1lbnRhdGlvbnMuaW5zZWN1cmVfY2hhbm5lbCgnbG9jYWxob3N0JywgNTAwNTEpCi0gIHN0dWIgPSBoZWxsb3dvcmxkX3BiMi5iZXRhX2NyZWF0ZV9HcmVldGVyX3N0dWIoY2hhbm5lbCkKLSAgcmVzcG9uc2UgPSBzdHViLlNheUhlbGxvKGhlbGxvd29ybGRfcGIyLkhlbGxvUmVxdWVzdChuYW1lPSd5b3UnKSwgX1RJTUVPVVRfU0VDT05EUykKKyAgY2hhbm5lbCA9IGdycGMuaW5zZWN1cmVfY2hhbm5lbCgnbG9jYWxob3N0OjUwMDUxJykKKyAgc3R1YiA9IGhlbGxvd29ybGRfcGIyLkdyZWV0ZXJTdHViKGNoYW5uZWwpCisgIHJlc3BvbnNlID0gc3R1Yi5TYXlIZWxsbyhoZWxsb3dvcmxkX3BiMi5IZWxsb1JlcXVlc3QobmFtZT0neW91JykpCiAgIHByaW50KCJHcmVldGVyIGNsaWVudCByZWNlaXZlZDogIiArIHJlc3BvbnNlLm1lc3NhZ2UpCiAKIApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL2hlbGxvd29ybGQvZ3JlZXRlcl9zZXJ2ZXIucHkgYi9leGFtcGxlcy9weXRob24vaGVsbG93b3JsZC9ncmVldGVyX3NlcnZlci5weQppbmRleCAyY2RlNWFkLi4zN2Q4YmQ0IDEwMDY0NAotLS0gYS9leGFtcGxlcy9weXRob24vaGVsbG93b3JsZC9ncmVldGVyX3NlcnZlci5weQorKysgYi9leGFtcGxlcy9weXRob24vaGVsbG93b3JsZC9ncmVldGVyX3NlcnZlci5weQpAQCAtMjksMjEgKzI5LDI1IEBACiAKICIiIlRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIEdSUEMgaGVsbG93b3JsZC5HcmVldGVyIHNlcnZlci4iIiIKIAorZnJvbSBjb25jdXJyZW50IGltcG9ydCBmdXR1cmVzCiBpbXBvcnQgdGltZQogCitpbXBvcnQgZ3JwYworCiBpbXBvcnQgaGVsbG93b3JsZF9wYjIKIAogX09ORV9EQVlfSU5fU0VDT05EUyA9IDYwICogNjAgKiAyNAogCiAKLWNsYXNzIEdyZWV0ZXIoaGVsbG93b3JsZF9wYjIuQmV0YUdyZWV0ZXJTZXJ2aWNlcik6CitjbGFzcyBHcmVldGVyKGhlbGxvd29ybGRfcGIyLkdyZWV0ZXJTZXJ2aWNlcik6CiAKICAgZGVmIFNheUhlbGxvKHNlbGYsIHJlcXVlc3QsIGNvbnRleHQpOgogICAgIHJldHVybiBoZWxsb3dvcmxkX3BiMi5IZWxsb1JlcGx5KG1lc3NhZ2U9J0hlbGxvLCAlcyEnICUgcmVxdWVzdC5uYW1lKQogCiAKIGRlZiBzZXJ2ZSgpOgotICBzZXJ2ZXIgPSBoZWxsb3dvcmxkX3BiMi5iZXRhX2NyZWF0ZV9HcmVldGVyX3NlcnZlcihHcmVldGVyKCkpCisgIHNlcnZlciA9IGdycGMuc2VydmVyKGZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPTEwKSkKKyAgaGVsbG93b3JsZF9wYjIuYWRkX0dyZWV0ZXJTZXJ2aWNlcl90b19zZXJ2ZXIoR3JlZXRlcigpLCBzZXJ2ZXIpCiAgIHNlcnZlci5hZGRfaW5zZWN1cmVfcG9ydCgnWzo6XTo1MDA1MScpCiAgIHNlcnZlci5zdGFydCgpCiAgIHRyeToKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3B5dGhvbi9oZWxsb3dvcmxkL2hlbGxvd29ybGRfcGIyLnB5IGIvZXhhbXBsZXMvcHl0aG9uL2hlbGxvd29ybGQvaGVsbG93b3JsZF9wYjIucHkKaW5kZXggMWVlODBlNC4uM2NlMzNmYiAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvcHl0aG9uL2hlbGxvd29ybGQvaGVsbG93b3JsZF9wYjIucHkKKysrIGIvZXhhbXBsZXMvcHl0aG9uL2hlbGxvd29ybGQvaGVsbG93b3JsZF9wYjIucHkKQEAgLTEwNywxMyArMTA3LDU1IEBACiAKIERFU0NSSVBUT1IuaGFzX29wdGlvbnMgPSBUcnVlCiBERVNDUklQVE9SLl9vcHRpb25zID0gX2Rlc2NyaXB0b3IuX1BhcnNlT3B0aW9ucyhkZXNjcmlwdG9yX3BiMi5GaWxlT3B0aW9ucygpLCBfYignXG5cMDMzaW8uZ3JwYy5leGFtcGxlcy5oZWxsb3dvcmxkQlwwMTdIZWxsb1dvcmxkUHJvdG9QXDAwMVwyNDJcMDAyXDAwM0hMVycpKQotaW1wb3J0IGFiYwotaW1wb3J0IHNpeAoraW1wb3J0IGdycGMKIGZyb20gZ3JwYy5iZXRhIGltcG9ydCBpbXBsZW1lbnRhdGlvbnMgYXMgYmV0YV9pbXBsZW1lbnRhdGlvbnMKIGZyb20gZ3JwYy5iZXRhIGltcG9ydCBpbnRlcmZhY2VzIGFzIGJldGFfaW50ZXJmYWNlcwogZnJvbSBncnBjLmZyYW1ld29yay5jb21tb24gaW1wb3J0IGNhcmRpbmFsaXR5CiBmcm9tIGdycGMuZnJhbWV3b3JrLmludGVyZmFjZXMuZmFjZSBpbXBvcnQgdXRpbGl0aWVzIGFzIGZhY2VfdXRpbGl0aWVzCiAKKworY2xhc3MgR3JlZXRlclN0dWIob2JqZWN0KToKKyAgIiIiVGhlIGdyZWV0aW5nIHNlcnZpY2UgZGVmaW5pdGlvbi4KKyAgIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5uZWwpOgorICAgICIiIkNvbnN0cnVjdG9yLgorCisgICAgQXJnczoKKyAgICAgIGNoYW5uZWw6IEEgZ3JwYy5DaGFubmVsLgorICAgICIiIgorICAgIHNlbGYuU2F5SGVsbG8gPSBjaGFubmVsLnVuYXJ5X3VuYXJ5KAorICAgICAgICAnL2hlbGxvd29ybGQuR3JlZXRlci9TYXlIZWxsbycsCisgICAgICAgIHJlcXVlc3Rfc2VyaWFsaXplcj1IZWxsb1JlcXVlc3QuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgICAgIHJlc3BvbnNlX2Rlc2VyaWFsaXplcj1IZWxsb1JlcGx5LkZyb21TdHJpbmcsCisgICAgICAgICkKKworCitjbGFzcyBHcmVldGVyU2VydmljZXIob2JqZWN0KToKKyAgIiIiVGhlIGdyZWV0aW5nIHNlcnZpY2UgZGVmaW5pdGlvbi4KKyAgIiIiCisKKyAgZGVmIFNheUhlbGxvKHNlbGYsIHJlcXVlc3QsIGNvbnRleHQpOgorICAgICIiIlNlbmRzIGEgZ3JlZXRpbmcKKyAgICAiIiIKKyAgICBjb250ZXh0LnNldF9jb2RlKGdycGMuU3RhdHVzQ29kZS5VTklNUExFTUVOVEVEKQorICAgIGNvbnRleHQuc2V0X2RldGFpbHMoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQhJykKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkIScpCisKKworZGVmIGFkZF9HcmVldGVyU2VydmljZXJfdG9fc2VydmVyKHNlcnZpY2VyLCBzZXJ2ZXIpOgorICBycGNfbWV0aG9kX2hhbmRsZXJzID0geworICAgICAgJ1NheUhlbGxvJzogZ3JwYy51bmFyeV91bmFyeV9ycGNfbWV0aG9kX2hhbmRsZXIoCisgICAgICAgICAgc2VydmljZXIuU2F5SGVsbG8sCisgICAgICAgICAgcmVxdWVzdF9kZXNlcmlhbGl6ZXI9SGVsbG9SZXF1ZXN0LkZyb21TdHJpbmcsCisgICAgICAgICAgcmVzcG9uc2Vfc2VyaWFsaXplcj1IZWxsb1JlcGx5LlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICAgKSwKKyAgfQorICBnZW5lcmljX2hhbmRsZXIgPSBncnBjLm1ldGhvZF9oYW5kbGVyc19nZW5lcmljX2hhbmRsZXIoCisgICAgICAnaGVsbG93b3JsZC5HcmVldGVyJywgcnBjX21ldGhvZF9oYW5kbGVycykKKyAgc2VydmVyLmFkZF9nZW5lcmljX3JwY19oYW5kbGVycygoZ2VuZXJpY19oYW5kbGVyLCkpCisKKwogY2xhc3MgQmV0YUdyZWV0ZXJTZXJ2aWNlcihvYmplY3QpOgogICAiIiJUaGUgZ3JlZXRpbmcgc2VydmljZSBkZWZpbml0aW9uLgogICAiIiIKQEAgLTEyMiwyMyArMTY0LDIzIEBACiAgICAgIiIiCiAgICAgY29udGV4dC5jb2RlKGJldGFfaW50ZXJmYWNlcy5TdGF0dXNDb2RlLlVOSU1QTEVNRU5URUQpCiAKKwogY2xhc3MgQmV0YUdyZWV0ZXJTdHViKG9iamVjdCk6CiAgICIiIlRoZSBncmVldGluZyBzZXJ2aWNlIGRlZmluaXRpb24uCiAgICIiIgotICBkZWYgU2F5SGVsbG8oc2VsZiwgcmVxdWVzdCwgdGltZW91dCk6CisgIGRlZiBTYXlIZWxsbyhzZWxmLCByZXF1ZXN0LCB0aW1lb3V0LCBtZXRhZGF0YT1Ob25lLCB3aXRoX2NhbGw9RmFsc2UsIHByb3RvY29sX29wdGlvbnM9Tm9uZSk6CiAgICAgIiIiU2VuZHMgYSBncmVldGluZwogICAgICIiIgogICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogICBTYXlIZWxsby5mdXR1cmUgPSBOb25lCiAKKwogZGVmIGJldGFfY3JlYXRlX0dyZWV0ZXJfc2VydmVyKHNlcnZpY2VyLCBwb29sPU5vbmUsIHBvb2xfc2l6ZT1Ob25lLCBkZWZhdWx0X3RpbWVvdXQ9Tm9uZSwgbWF4aW11bV90aW1lb3V0PU5vbmUpOgotICBpbXBvcnQgaGVsbG93b3JsZF9wYjIKLSAgaW1wb3J0IGhlbGxvd29ybGRfcGIyCiAgIHJlcXVlc3RfZGVzZXJpYWxpemVycyA9IHsKLSAgICAoJ2hlbGxvd29ybGQuR3JlZXRlcicsICdTYXlIZWxsbycpOiBoZWxsb3dvcmxkX3BiMi5IZWxsb1JlcXVlc3QuRnJvbVN0cmluZywKKyAgICAoJ2hlbGxvd29ybGQuR3JlZXRlcicsICdTYXlIZWxsbycpOiBIZWxsb1JlcXVlc3QuRnJvbVN0cmluZywKICAgfQogICByZXNwb25zZV9zZXJpYWxpemVycyA9IHsKLSAgICAoJ2hlbGxvd29ybGQuR3JlZXRlcicsICdTYXlIZWxsbycpOiBoZWxsb3dvcmxkX3BiMi5IZWxsb1JlcGx5LlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICgnaGVsbG93b3JsZC5HcmVldGVyJywgJ1NheUhlbGxvJyk6IEhlbGxvUmVwbHkuU2VyaWFsaXplVG9TdHJpbmcsCiAgIH0KICAgbWV0aG9kX2ltcGxlbWVudGF0aW9ucyA9IHsKICAgICAoJ2hlbGxvd29ybGQuR3JlZXRlcicsICdTYXlIZWxsbycpOiBmYWNlX3V0aWxpdGllcy51bmFyeV91bmFyeV9pbmxpbmUoc2VydmljZXIuU2F5SGVsbG8pLApAQCAtMTQ2LDE0ICsxODgsMTMgQEAKICAgc2VydmVyX29wdGlvbnMgPSBiZXRhX2ltcGxlbWVudGF0aW9ucy5zZXJ2ZXJfb3B0aW9ucyhyZXF1ZXN0X2Rlc2VyaWFsaXplcnM9cmVxdWVzdF9kZXNlcmlhbGl6ZXJzLCByZXNwb25zZV9zZXJpYWxpemVycz1yZXNwb25zZV9zZXJpYWxpemVycywgdGhyZWFkX3Bvb2w9cG9vbCwgdGhyZWFkX3Bvb2xfc2l6ZT1wb29sX3NpemUsIGRlZmF1bHRfdGltZW91dD1kZWZhdWx0X3RpbWVvdXQsIG1heGltdW1fdGltZW91dD1tYXhpbXVtX3RpbWVvdXQpCiAgIHJldHVybiBiZXRhX2ltcGxlbWVudGF0aW9ucy5zZXJ2ZXIobWV0aG9kX2ltcGxlbWVudGF0aW9ucywgb3B0aW9ucz1zZXJ2ZXJfb3B0aW9ucykKIAorCiBkZWYgYmV0YV9jcmVhdGVfR3JlZXRlcl9zdHViKGNoYW5uZWwsIGhvc3Q9Tm9uZSwgbWV0YWRhdGFfdHJhbnNmb3JtZXI9Tm9uZSwgcG9vbD1Ob25lLCBwb29sX3NpemU9Tm9uZSk6Ci0gIGltcG9ydCBoZWxsb3dvcmxkX3BiMgotICBpbXBvcnQgaGVsbG93b3JsZF9wYjIKICAgcmVxdWVzdF9zZXJpYWxpemVycyA9IHsKLSAgICAoJ2hlbGxvd29ybGQuR3JlZXRlcicsICdTYXlIZWxsbycpOiBoZWxsb3dvcmxkX3BiMi5IZWxsb1JlcXVlc3QuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgKCdoZWxsb3dvcmxkLkdyZWV0ZXInLCAnU2F5SGVsbG8nKTogSGVsbG9SZXF1ZXN0LlNlcmlhbGl6ZVRvU3RyaW5nLAogICB9CiAgIHJlc3BvbnNlX2Rlc2VyaWFsaXplcnMgPSB7Ci0gICAgKCdoZWxsb3dvcmxkLkdyZWV0ZXInLCAnU2F5SGVsbG8nKTogaGVsbG93b3JsZF9wYjIuSGVsbG9SZXBseS5Gcm9tU3RyaW5nLAorICAgICgnaGVsbG93b3JsZC5HcmVldGVyJywgJ1NheUhlbGxvJyk6IEhlbGxvUmVwbHkuRnJvbVN0cmluZywKICAgfQogICBjYXJkaW5hbGl0aWVzID0gewogICAgICdTYXlIZWxsbyc6IGNhcmRpbmFsaXR5LkNhcmRpbmFsaXR5LlVOQVJZX1VOQVJZLApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL2hlbGxvd29ybGQvcnVuX2NvZGVnZW4uc2ggYi9leGFtcGxlcy9weXRob24vaGVsbG93b3JsZC9ydW5fY29kZWdlbi5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGV4YW1wbGVzL3B5dGhvbi9oZWxsb3dvcmxkL3J1bl9jb2RlZ2VuLnNoCnJlbmFtZSB0byBleGFtcGxlcy9weXRob24vaGVsbG93b3JsZC9ydW5fY29kZWdlbi5weQppbmRleCAzNDIyNGU1Li40ODM1ZWMyCi0tLSBhL2V4YW1wbGVzL3B5dGhvbi9oZWxsb3dvcmxkL3J1bl9jb2RlZ2VuLnNoCisrKyBiL2V4YW1wbGVzL3B5dGhvbi9oZWxsb3dvcmxkL3J1bl9jb2RlZ2VuLnB5CkBAIC0xLDQgKzEsMyBAQAotIyEvYmluL2Jhc2gKICMgQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0yOCw1ICsyNywxNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIyBSdW5zIHRoZSBwcm90b2Mgd2l0aCBnUlBDIHBsdWdpbiB0byBnZW5lcmF0ZSBwcm90b2NvbCBtZXNzYWdlcyBhbmQgZ1JQQyBzdHVicy4KLXB5dGhvbiAtbSBncnBjLnRvb2xzLnByb3RvYyAtSS4uLy4uL3Byb3RvcyAtLXB5dGhvbl9vdXQ9LiAtLWdycGNfcHl0aG9uX291dD0uIC4uLy4uL3Byb3Rvcy9oZWxsb3dvcmxkLnByb3RvCisiIiJSdW5zIHByb3RvYyB3aXRoIHRoZSBnUlBDIHBsdWdpbiB0byBnZW5lcmF0ZSBtZXNzYWdlcyBhbmQgZ1JQQyBzdHVicy4iIiIKKworZnJvbSBncnBjLnRvb2xzIGltcG9ydCBwcm90b2MKKworcHJvdG9jLm1haW4oCisgICAgKAorCScnLAorCSctSS4uLy4uL3Byb3RvcycsCisJJy0tcHl0aG9uX291dD0uJywKKwknLS1ncnBjX3B5dGhvbl9vdXQ9LicsCisJJy4uLy4uL3Byb3Rvcy9oZWxsb3dvcmxkLnByb3RvJywKKyAgICApCispCmRpZmYgLS1naXQgYS9leGFtcGxlcy9weXRob24vbXVsdGlwbGV4Ly5naXRpZ25vcmUgYi9leGFtcGxlcy9weXRob24vbXVsdGlwbGV4Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQyMGI2NAotLS0gL2Rldi9udWxsCisrKyBiL2V4YW1wbGVzL3B5dGhvbi9tdWx0aXBsZXgvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACisqLnB5YwpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9SRUFETUUubWQgYi9leGFtcGxlcy9weXRob24vbXVsdGlwbGV4L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWQzYTQyCi0tLSAvZGV2L251bGwKKysrIGIvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9SRUFETUUubWQKQEAgLTAsMCArMSBAQAorQW4gZXhhbXBsZSBzaG93aW5nIHR3byBzdHVicyBzaGFyaW5nIGEgY2hhbm5lbCBhbmQgdHdvIHNlcnZpY2VycyBzaGFyaW5nIGEgc2VydmVyLgpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9oZWxsb3dvcmxkX3BiMi5weSBiL2V4YW1wbGVzL3B5dGhvbi9tdWx0aXBsZXgvaGVsbG93b3JsZF9wYjIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlMzNmYgotLS0gL2Rldi9udWxsCisrKyBiL2V4YW1wbGVzL3B5dGhvbi9tdWx0aXBsZXgvaGVsbG93b3JsZF9wYjIucHkKQEAgLTAsMCArMSwyMDQgQEAKKyMgR2VuZXJhdGVkIGJ5IHRoZSBwcm90b2NvbCBidWZmZXIgY29tcGlsZXIuICBETyBOT1QgRURJVCEKKyMgc291cmNlOiBoZWxsb3dvcmxkLnByb3RvCisKK2ltcG9ydCBzeXMKK19iPXN5cy52ZXJzaW9uX2luZm9bMF08MyBhbmQgKGxhbWJkYSB4OngpIG9yIChsYW1iZGEgeDp4LmVuY29kZSgnbGF0aW4xJykpCitmcm9tIGdvb2dsZS5wcm90b2J1ZiBpbXBvcnQgZGVzY3JpcHRvciBhcyBfZGVzY3JpcHRvcgorZnJvbSBnb29nbGUucHJvdG9idWYgaW1wb3J0IG1lc3NhZ2UgYXMgX21lc3NhZ2UKK2Zyb20gZ29vZ2xlLnByb3RvYnVmIGltcG9ydCByZWZsZWN0aW9uIGFzIF9yZWZsZWN0aW9uCitmcm9tIGdvb2dsZS5wcm90b2J1ZiBpbXBvcnQgc3ltYm9sX2RhdGFiYXNlIGFzIF9zeW1ib2xfZGF0YWJhc2UKK2Zyb20gZ29vZ2xlLnByb3RvYnVmIGltcG9ydCBkZXNjcmlwdG9yX3BiMgorIyBAQHByb3RvY19pbnNlcnRpb25fcG9pbnQoaW1wb3J0cykKKworX3N5bV9kYiA9IF9zeW1ib2xfZGF0YWJhc2UuRGVmYXVsdCgpCisKKworCisKK0RFU0NSSVBUT1IgPSBfZGVzY3JpcHRvci5GaWxlRGVzY3JpcHRvcigKKyAgbmFtZT0naGVsbG93b3JsZC5wcm90bycsCisgIHBhY2thZ2U9J2hlbGxvd29ybGQnLAorICBzeW50YXg9J3Byb3RvMycsCisgIHNlcmlhbGl6ZWRfcGI9X2IoJ1xuXHgxMGhlbGxvd29ybGQucHJvdG9ceDEyXG5oZWxsb3dvcmxkXCJceDFjXG5ceDBjSGVsbG9SZXF1ZXN0XHgxMlx4MGNcblx4MDRuYW1lXHgxOFx4MDEgXHgwMShcdFwiXHgxZFxuXG5IZWxsb1JlcGx5XHgxMlx4MGZcblx4MDdtZXNzYWdlXHgxOFx4MDEgXHgwMShcdDJJXG5ceDA3R3JlZXRlclx4MTI+XG5ceDA4U2F5SGVsbG9ceDEyXHgxOC5oZWxsb3dvcmxkLkhlbGxvUmVxdWVzdFx4MWFceDE2LmhlbGxvd29ybGQuSGVsbG9SZXBseVwiXHgwMFx4NDJceDM2XG5ceDFiaW8uZ3JwYy5leGFtcGxlcy5oZWxsb3dvcmxkQlx4MGZIZWxsb1dvcmxkUHJvdG9QXHgwMVx4YTJceDAyXHgwM0hMV2JceDA2cHJvdG8zJykKKykKK19zeW1fZGIuUmVnaXN0ZXJGaWxlRGVzY3JpcHRvcihERVNDUklQVE9SKQorCisKKworCitfSEVMTE9SRVFVRVNUID0gX2Rlc2NyaXB0b3IuRGVzY3JpcHRvcigKKyAgbmFtZT0nSGVsbG9SZXF1ZXN0JywKKyAgZnVsbF9uYW1lPSdoZWxsb3dvcmxkLkhlbGxvUmVxdWVzdCcsCisgIGZpbGVuYW1lPU5vbmUsCisgIGZpbGU9REVTQ1JJUFRPUiwKKyAgY29udGFpbmluZ190eXBlPU5vbmUsCisgIGZpZWxkcz1bCisgICAgX2Rlc2NyaXB0b3IuRmllbGREZXNjcmlwdG9yKAorICAgICAgbmFtZT0nbmFtZScsIGZ1bGxfbmFtZT0naGVsbG93b3JsZC5IZWxsb1JlcXVlc3QubmFtZScsIGluZGV4PTAsCisgICAgICBudW1iZXI9MSwgdHlwZT05LCBjcHBfdHlwZT05LCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9X2IoIiIpLmRlY29kZSgndXRmLTgnKSwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgXSwKKyAgZXh0ZW5zaW9ucz1bCisgIF0sCisgIG5lc3RlZF90eXBlcz1bXSwKKyAgZW51bV90eXBlcz1bCisgIF0sCisgIG9wdGlvbnM9Tm9uZSwKKyAgaXNfZXh0ZW5kYWJsZT1GYWxzZSwKKyAgc3ludGF4PSdwcm90bzMnLAorICBleHRlbnNpb25fcmFuZ2VzPVtdLAorICBvbmVvZnM9WworICBdLAorICBzZXJpYWxpemVkX3N0YXJ0PTMyLAorICBzZXJpYWxpemVkX2VuZD02MCwKKykKKworCitfSEVMTE9SRVBMWSA9IF9kZXNjcmlwdG9yLkRlc2NyaXB0b3IoCisgIG5hbWU9J0hlbGxvUmVwbHknLAorICBmdWxsX25hbWU9J2hlbGxvd29ybGQuSGVsbG9SZXBseScsCisgIGZpbGVuYW1lPU5vbmUsCisgIGZpbGU9REVTQ1JJUFRPUiwKKyAgY29udGFpbmluZ190eXBlPU5vbmUsCisgIGZpZWxkcz1bCisgICAgX2Rlc2NyaXB0b3IuRmllbGREZXNjcmlwdG9yKAorICAgICAgbmFtZT0nbWVzc2FnZScsIGZ1bGxfbmFtZT0naGVsbG93b3JsZC5IZWxsb1JlcGx5Lm1lc3NhZ2UnLCBpbmRleD0wLAorICAgICAgbnVtYmVyPTEsIHR5cGU9OSwgY3BwX3R5cGU9OSwgbGFiZWw9MSwKKyAgICAgIGhhc19kZWZhdWx0X3ZhbHVlPUZhbHNlLCBkZWZhdWx0X3ZhbHVlPV9iKCIiKS5kZWNvZGUoJ3V0Zi04JyksCisgICAgICBtZXNzYWdlX3R5cGU9Tm9uZSwgZW51bV90eXBlPU5vbmUsIGNvbnRhaW5pbmdfdHlwZT1Ob25lLAorICAgICAgaXNfZXh0ZW5zaW9uPUZhbHNlLCBleHRlbnNpb25fc2NvcGU9Tm9uZSwKKyAgICAgIG9wdGlvbnM9Tm9uZSksCisgIF0sCisgIGV4dGVuc2lvbnM9WworICBdLAorICBuZXN0ZWRfdHlwZXM9W10sCisgIGVudW1fdHlwZXM9WworICBdLAorICBvcHRpb25zPU5vbmUsCisgIGlzX2V4dGVuZGFibGU9RmFsc2UsCisgIHN5bnRheD0ncHJvdG8zJywKKyAgZXh0ZW5zaW9uX3Jhbmdlcz1bXSwKKyAgb25lb2ZzPVsKKyAgXSwKKyAgc2VyaWFsaXplZF9zdGFydD02MiwKKyAgc2VyaWFsaXplZF9lbmQ9OTEsCispCisKK0RFU0NSSVBUT1IubWVzc2FnZV90eXBlc19ieV9uYW1lWydIZWxsb1JlcXVlc3QnXSA9IF9IRUxMT1JFUVVFU1QKK0RFU0NSSVBUT1IubWVzc2FnZV90eXBlc19ieV9uYW1lWydIZWxsb1JlcGx5J10gPSBfSEVMTE9SRVBMWQorCitIZWxsb1JlcXVlc3QgPSBfcmVmbGVjdGlvbi5HZW5lcmF0ZWRQcm90b2NvbE1lc3NhZ2VUeXBlKCdIZWxsb1JlcXVlc3QnLCAoX21lc3NhZ2UuTWVzc2FnZSwpLCBkaWN0KAorICBERVNDUklQVE9SID0gX0hFTExPUkVRVUVTVCwKKyAgX19tb2R1bGVfXyA9ICdoZWxsb3dvcmxkX3BiMicKKyAgIyBAQHByb3RvY19pbnNlcnRpb25fcG9pbnQoY2xhc3Nfc2NvcGU6aGVsbG93b3JsZC5IZWxsb1JlcXVlc3QpCisgICkpCitfc3ltX2RiLlJlZ2lzdGVyTWVzc2FnZShIZWxsb1JlcXVlc3QpCisKK0hlbGxvUmVwbHkgPSBfcmVmbGVjdGlvbi5HZW5lcmF0ZWRQcm90b2NvbE1lc3NhZ2VUeXBlKCdIZWxsb1JlcGx5JywgKF9tZXNzYWdlLk1lc3NhZ2UsKSwgZGljdCgKKyAgREVTQ1JJUFRPUiA9IF9IRUxMT1JFUExZLAorICBfX21vZHVsZV9fID0gJ2hlbGxvd29ybGRfcGIyJworICAjIEBAcHJvdG9jX2luc2VydGlvbl9wb2ludChjbGFzc19zY29wZTpoZWxsb3dvcmxkLkhlbGxvUmVwbHkpCisgICkpCitfc3ltX2RiLlJlZ2lzdGVyTWVzc2FnZShIZWxsb1JlcGx5KQorCisKK0RFU0NSSVBUT1IuaGFzX29wdGlvbnMgPSBUcnVlCitERVNDUklQVE9SLl9vcHRpb25zID0gX2Rlc2NyaXB0b3IuX1BhcnNlT3B0aW9ucyhkZXNjcmlwdG9yX3BiMi5GaWxlT3B0aW9ucygpLCBfYignXG5cMDMzaW8uZ3JwYy5leGFtcGxlcy5oZWxsb3dvcmxkQlwwMTdIZWxsb1dvcmxkUHJvdG9QXDAwMVwyNDJcMDAyXDAwM0hMVycpKQoraW1wb3J0IGdycGMKK2Zyb20gZ3JwYy5iZXRhIGltcG9ydCBpbXBsZW1lbnRhdGlvbnMgYXMgYmV0YV9pbXBsZW1lbnRhdGlvbnMKK2Zyb20gZ3JwYy5iZXRhIGltcG9ydCBpbnRlcmZhY2VzIGFzIGJldGFfaW50ZXJmYWNlcworZnJvbSBncnBjLmZyYW1ld29yay5jb21tb24gaW1wb3J0IGNhcmRpbmFsaXR5Citmcm9tIGdycGMuZnJhbWV3b3JrLmludGVyZmFjZXMuZmFjZSBpbXBvcnQgdXRpbGl0aWVzIGFzIGZhY2VfdXRpbGl0aWVzCisKKworY2xhc3MgR3JlZXRlclN0dWIob2JqZWN0KToKKyAgIiIiVGhlIGdyZWV0aW5nIHNlcnZpY2UgZGVmaW5pdGlvbi4KKyAgIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5uZWwpOgorICAgICIiIkNvbnN0cnVjdG9yLgorCisgICAgQXJnczoKKyAgICAgIGNoYW5uZWw6IEEgZ3JwYy5DaGFubmVsLgorICAgICIiIgorICAgIHNlbGYuU2F5SGVsbG8gPSBjaGFubmVsLnVuYXJ5X3VuYXJ5KAorICAgICAgICAnL2hlbGxvd29ybGQuR3JlZXRlci9TYXlIZWxsbycsCisgICAgICAgIHJlcXVlc3Rfc2VyaWFsaXplcj1IZWxsb1JlcXVlc3QuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgICAgIHJlc3BvbnNlX2Rlc2VyaWFsaXplcj1IZWxsb1JlcGx5LkZyb21TdHJpbmcsCisgICAgICAgICkKKworCitjbGFzcyBHcmVldGVyU2VydmljZXIob2JqZWN0KToKKyAgIiIiVGhlIGdyZWV0aW5nIHNlcnZpY2UgZGVmaW5pdGlvbi4KKyAgIiIiCisKKyAgZGVmIFNheUhlbGxvKHNlbGYsIHJlcXVlc3QsIGNvbnRleHQpOgorICAgICIiIlNlbmRzIGEgZ3JlZXRpbmcKKyAgICAiIiIKKyAgICBjb250ZXh0LnNldF9jb2RlKGdycGMuU3RhdHVzQ29kZS5VTklNUExFTUVOVEVEKQorICAgIGNvbnRleHQuc2V0X2RldGFpbHMoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQhJykKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkIScpCisKKworZGVmIGFkZF9HcmVldGVyU2VydmljZXJfdG9fc2VydmVyKHNlcnZpY2VyLCBzZXJ2ZXIpOgorICBycGNfbWV0aG9kX2hhbmRsZXJzID0geworICAgICAgJ1NheUhlbGxvJzogZ3JwYy51bmFyeV91bmFyeV9ycGNfbWV0aG9kX2hhbmRsZXIoCisgICAgICAgICAgc2VydmljZXIuU2F5SGVsbG8sCisgICAgICAgICAgcmVxdWVzdF9kZXNlcmlhbGl6ZXI9SGVsbG9SZXF1ZXN0LkZyb21TdHJpbmcsCisgICAgICAgICAgcmVzcG9uc2Vfc2VyaWFsaXplcj1IZWxsb1JlcGx5LlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICAgKSwKKyAgfQorICBnZW5lcmljX2hhbmRsZXIgPSBncnBjLm1ldGhvZF9oYW5kbGVyc19nZW5lcmljX2hhbmRsZXIoCisgICAgICAnaGVsbG93b3JsZC5HcmVldGVyJywgcnBjX21ldGhvZF9oYW5kbGVycykKKyAgc2VydmVyLmFkZF9nZW5lcmljX3JwY19oYW5kbGVycygoZ2VuZXJpY19oYW5kbGVyLCkpCisKKworY2xhc3MgQmV0YUdyZWV0ZXJTZXJ2aWNlcihvYmplY3QpOgorICAiIiJUaGUgZ3JlZXRpbmcgc2VydmljZSBkZWZpbml0aW9uLgorICAiIiIKKyAgZGVmIFNheUhlbGxvKHNlbGYsIHJlcXVlc3QsIGNvbnRleHQpOgorICAgICIiIlNlbmRzIGEgZ3JlZXRpbmcKKyAgICAiIiIKKyAgICBjb250ZXh0LmNvZGUoYmV0YV9pbnRlcmZhY2VzLlN0YXR1c0NvZGUuVU5JTVBMRU1FTlRFRCkKKworCitjbGFzcyBCZXRhR3JlZXRlclN0dWIob2JqZWN0KToKKyAgIiIiVGhlIGdyZWV0aW5nIHNlcnZpY2UgZGVmaW5pdGlvbi4KKyAgIiIiCisgIGRlZiBTYXlIZWxsbyhzZWxmLCByZXF1ZXN0LCB0aW1lb3V0LCBtZXRhZGF0YT1Ob25lLCB3aXRoX2NhbGw9RmFsc2UsIHByb3RvY29sX29wdGlvbnM9Tm9uZSk6CisgICAgIiIiU2VuZHMgYSBncmVldGluZworICAgICIiIgorICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorICBTYXlIZWxsby5mdXR1cmUgPSBOb25lCisKKworZGVmIGJldGFfY3JlYXRlX0dyZWV0ZXJfc2VydmVyKHNlcnZpY2VyLCBwb29sPU5vbmUsIHBvb2xfc2l6ZT1Ob25lLCBkZWZhdWx0X3RpbWVvdXQ9Tm9uZSwgbWF4aW11bV90aW1lb3V0PU5vbmUpOgorICByZXF1ZXN0X2Rlc2VyaWFsaXplcnMgPSB7CisgICAgKCdoZWxsb3dvcmxkLkdyZWV0ZXInLCAnU2F5SGVsbG8nKTogSGVsbG9SZXF1ZXN0LkZyb21TdHJpbmcsCisgIH0KKyAgcmVzcG9uc2Vfc2VyaWFsaXplcnMgPSB7CisgICAgKCdoZWxsb3dvcmxkLkdyZWV0ZXInLCAnU2F5SGVsbG8nKTogSGVsbG9SZXBseS5TZXJpYWxpemVUb1N0cmluZywKKyAgfQorICBtZXRob2RfaW1wbGVtZW50YXRpb25zID0geworICAgICgnaGVsbG93b3JsZC5HcmVldGVyJywgJ1NheUhlbGxvJyk6IGZhY2VfdXRpbGl0aWVzLnVuYXJ5X3VuYXJ5X2lubGluZShzZXJ2aWNlci5TYXlIZWxsbyksCisgIH0KKyAgc2VydmVyX29wdGlvbnMgPSBiZXRhX2ltcGxlbWVudGF0aW9ucy5zZXJ2ZXJfb3B0aW9ucyhyZXF1ZXN0X2Rlc2VyaWFsaXplcnM9cmVxdWVzdF9kZXNlcmlhbGl6ZXJzLCByZXNwb25zZV9zZXJpYWxpemVycz1yZXNwb25zZV9zZXJpYWxpemVycywgdGhyZWFkX3Bvb2w9cG9vbCwgdGhyZWFkX3Bvb2xfc2l6ZT1wb29sX3NpemUsIGRlZmF1bHRfdGltZW91dD1kZWZhdWx0X3RpbWVvdXQsIG1heGltdW1fdGltZW91dD1tYXhpbXVtX3RpbWVvdXQpCisgIHJldHVybiBiZXRhX2ltcGxlbWVudGF0aW9ucy5zZXJ2ZXIobWV0aG9kX2ltcGxlbWVudGF0aW9ucywgb3B0aW9ucz1zZXJ2ZXJfb3B0aW9ucykKKworCitkZWYgYmV0YV9jcmVhdGVfR3JlZXRlcl9zdHViKGNoYW5uZWwsIGhvc3Q9Tm9uZSwgbWV0YWRhdGFfdHJhbnNmb3JtZXI9Tm9uZSwgcG9vbD1Ob25lLCBwb29sX3NpemU9Tm9uZSk6CisgIHJlcXVlc3Rfc2VyaWFsaXplcnMgPSB7CisgICAgKCdoZWxsb3dvcmxkLkdyZWV0ZXInLCAnU2F5SGVsbG8nKTogSGVsbG9SZXF1ZXN0LlNlcmlhbGl6ZVRvU3RyaW5nLAorICB9CisgIHJlc3BvbnNlX2Rlc2VyaWFsaXplcnMgPSB7CisgICAgKCdoZWxsb3dvcmxkLkdyZWV0ZXInLCAnU2F5SGVsbG8nKTogSGVsbG9SZXBseS5Gcm9tU3RyaW5nLAorICB9CisgIGNhcmRpbmFsaXRpZXMgPSB7CisgICAgJ1NheUhlbGxvJzogY2FyZGluYWxpdHkuQ2FyZGluYWxpdHkuVU5BUllfVU5BUlksCisgIH0KKyAgc3R1Yl9vcHRpb25zID0gYmV0YV9pbXBsZW1lbnRhdGlvbnMuc3R1Yl9vcHRpb25zKGhvc3Q9aG9zdCwgbWV0YWRhdGFfdHJhbnNmb3JtZXI9bWV0YWRhdGFfdHJhbnNmb3JtZXIsIHJlcXVlc3Rfc2VyaWFsaXplcnM9cmVxdWVzdF9zZXJpYWxpemVycywgcmVzcG9uc2VfZGVzZXJpYWxpemVycz1yZXNwb25zZV9kZXNlcmlhbGl6ZXJzLCB0aHJlYWRfcG9vbD1wb29sLCB0aHJlYWRfcG9vbF9zaXplPXBvb2xfc2l6ZSkKKyAgcmV0dXJuIGJldGFfaW1wbGVtZW50YXRpb25zLmR5bmFtaWNfc3R1YihjaGFubmVsLCAnaGVsbG93b3JsZC5HcmVldGVyJywgY2FyZGluYWxpdGllcywgb3B0aW9ucz1zdHViX29wdGlvbnMpCisjIEBAcHJvdG9jX2luc2VydGlvbl9wb2ludChtb2R1bGVfc2NvcGUpCmRpZmYgLS1naXQgYS9leGFtcGxlcy9weXRob24vbXVsdGlwbGV4L211bHRpcGxleF9jbGllbnQucHkgYi9leGFtcGxlcy9weXRob24vbXVsdGlwbGV4L211bHRpcGxleF9jbGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU4MTYyOQotLS0gL2Rldi9udWxsCisrKyBiL2V4YW1wbGVzL3B5dGhvbi9tdWx0aXBsZXgvbXVsdGlwbGV4X2NsaWVudC5weQpAQCAtMCwwICsxLDEzOSBAQAorIyBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIkEgY2xpZW50IHRoYXQgbWFrZXMgYm90aCBHcmVldGVyIGFuZCBSb3V0ZUd1aWRlIFJQQ3MuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHRpbWUKKworaW1wb3J0IGdycGMKKworaW1wb3J0IGhlbGxvd29ybGRfcGIyCitpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCitpbXBvcnQgcm91dGVfZ3VpZGVfcmVzb3VyY2VzCisKKworZGVmIG1ha2Vfcm91dGVfbm90ZShtZXNzYWdlLCBsYXRpdHVkZSwgbG9uZ2l0dWRlKToKKyAgcmV0dXJuIHJvdXRlX2d1aWRlX3BiMi5Sb3V0ZU5vdGUoCisgICAgICBtZXNzYWdlPW1lc3NhZ2UsCisgICAgICBsb2NhdGlvbj1yb3V0ZV9ndWlkZV9wYjIuUG9pbnQobGF0aXR1ZGU9bGF0aXR1ZGUsIGxvbmdpdHVkZT1sb25naXR1ZGUpKQorCisKK2RlZiBndWlkZV9nZXRfb25lX2ZlYXR1cmUocm91dGVfZ3VpZGVfc3R1YiwgcG9pbnQpOgorICBmZWF0dXJlID0gcm91dGVfZ3VpZGVfc3R1Yi5HZXRGZWF0dXJlKHBvaW50KQorICBpZiBub3QgZmVhdHVyZS5sb2NhdGlvbjoKKyAgICBwcmludCgiU2VydmVyIHJldHVybmVkIGluY29tcGxldGUgZmVhdHVyZSIpCisgICAgcmV0dXJuCisKKyAgaWYgZmVhdHVyZS5uYW1lOgorICAgIHByaW50KCJGZWF0dXJlIGNhbGxlZCAlcyBhdCAlcyIgJSAoZmVhdHVyZS5uYW1lLCBmZWF0dXJlLmxvY2F0aW9uKSkKKyAgZWxzZToKKyAgICBwcmludCgiRm91bmQgbm8gZmVhdHVyZSBhdCAlcyIgJSBmZWF0dXJlLmxvY2F0aW9uKQorCisKK2RlZiBndWlkZV9nZXRfZmVhdHVyZShyb3V0ZV9ndWlkZV9zdHViKToKKyAgZ3VpZGVfZ2V0X29uZV9mZWF0dXJlKAorICAgICAgcm91dGVfZ3VpZGVfc3R1YiwKKyAgICAgIHJvdXRlX2d1aWRlX3BiMi5Qb2ludChsYXRpdHVkZT00MDkxNDYxMzgsIGxvbmdpdHVkZT0tNzQ2MTg4OTA2KSkKKyAgZ3VpZGVfZ2V0X29uZV9mZWF0dXJlKAorICAgICAgcm91dGVfZ3VpZGVfc3R1Yiwgcm91dGVfZ3VpZGVfcGIyLlBvaW50KGxhdGl0dWRlPTAsIGxvbmdpdHVkZT0wKSkKKworCitkZWYgZ3VpZGVfbGlzdF9mZWF0dXJlcyhyb3V0ZV9ndWlkZV9zdHViKToKKyAgcmVjdGFuZ2xlID0gcm91dGVfZ3VpZGVfcGIyLlJlY3RhbmdsZSgKKyAgICAgIGxvPXJvdXRlX2d1aWRlX3BiMi5Qb2ludChsYXRpdHVkZT00MDAwMDAwMDAsIGxvbmdpdHVkZT0tNzUwMDAwMDAwKSwKKyAgICAgIGhpPXJvdXRlX2d1aWRlX3BiMi5Qb2ludChsYXRpdHVkZT00MjAwMDAwMDAsIGxvbmdpdHVkZT0tNzMwMDAwMDAwKSkKKyAgcHJpbnQoIkxvb2tpbmcgZm9yIGZlYXR1cmVzIGJldHdlZW4gNDAsIC03NSBhbmQgNDIsIC03MyIpCisKKyAgZmVhdHVyZXMgPSByb3V0ZV9ndWlkZV9zdHViLkxpc3RGZWF0dXJlcyhyZWN0YW5nbGUpCisKKyAgZm9yIGZlYXR1cmUgaW4gZmVhdHVyZXM6CisgICAgcHJpbnQoIkZlYXR1cmUgY2FsbGVkICVzIGF0ICVzIiAlIChmZWF0dXJlLm5hbWUsIGZlYXR1cmUubG9jYXRpb24pKQorCisKK2RlZiBnZW5lcmF0ZV9yb3V0ZShmZWF0dXJlX2xpc3QpOgorICBmb3IgXyBpbiByYW5nZSgwLCAxMCk6CisgICAgcmFuZG9tX2ZlYXR1cmUgPSBmZWF0dXJlX2xpc3RbcmFuZG9tLnJhbmRpbnQoMCwgbGVuKGZlYXR1cmVfbGlzdCkgLSAxKV0KKyAgICBwcmludCgiVmlzaXRpbmcgcG9pbnQgJXMiICUgcmFuZG9tX2ZlYXR1cmUubG9jYXRpb24pCisgICAgeWllbGQgcmFuZG9tX2ZlYXR1cmUubG9jYXRpb24KKyAgICB0aW1lLnNsZWVwKHJhbmRvbS51bmlmb3JtKDAuNSwgMS41KSkKKworCitkZWYgZ3VpZGVfcmVjb3JkX3JvdXRlKHJvdXRlX2d1aWRlX3N0dWIpOgorICBmZWF0dXJlX2xpc3QgPSByb3V0ZV9ndWlkZV9yZXNvdXJjZXMucmVhZF9yb3V0ZV9ndWlkZV9kYXRhYmFzZSgpCisKKyAgcm91dGVfaXRlcmF0b3IgPSBnZW5lcmF0ZV9yb3V0ZShmZWF0dXJlX2xpc3QpCisgIHJvdXRlX3N1bW1hcnkgPSByb3V0ZV9ndWlkZV9zdHViLlJlY29yZFJvdXRlKHJvdXRlX2l0ZXJhdG9yKQorICBwcmludCgiRmluaXNoZWQgdHJpcCB3aXRoICVzIHBvaW50cyAiICUgcm91dGVfc3VtbWFyeS5wb2ludF9jb3VudCkKKyAgcHJpbnQoIlBhc3NlZCAlcyBmZWF0dXJlcyAiICUgcm91dGVfc3VtbWFyeS5mZWF0dXJlX2NvdW50KQorICBwcmludCgiVHJhdmVsbGVkICVzIG1ldGVycyAiICUgcm91dGVfc3VtbWFyeS5kaXN0YW5jZSkKKyAgcHJpbnQoIkl0IHRvb2sgJXMgc2Vjb25kcyAiICUgcm91dGVfc3VtbWFyeS5lbGFwc2VkX3RpbWUpCisKKworZGVmIGdlbmVyYXRlX21lc3NhZ2VzKCk6CisgIG1lc3NhZ2VzID0gWworICAgICAgbWFrZV9yb3V0ZV9ub3RlKCJGaXJzdCBtZXNzYWdlIiwgMCwgMCksCisgICAgICBtYWtlX3JvdXRlX25vdGUoIlNlY29uZCBtZXNzYWdlIiwgMCwgMSksCisgICAgICBtYWtlX3JvdXRlX25vdGUoIlRoaXJkIG1lc3NhZ2UiLCAxLCAwKSwKKyAgICAgIG1ha2Vfcm91dGVfbm90ZSgiRm91cnRoIG1lc3NhZ2UiLCAwLCAwKSwKKyAgICAgIG1ha2Vfcm91dGVfbm90ZSgiRmlmdGggbWVzc2FnZSIsIDEsIDApLAorICBdCisgIGZvciBtc2cgaW4gbWVzc2FnZXM6CisgICAgcHJpbnQoIlNlbmRpbmcgJXMgYXQgJXMiICUgKG1zZy5tZXNzYWdlLCBtc2cubG9jYXRpb24pKQorICAgIHlpZWxkIG1zZworICAgIHRpbWUuc2xlZXAocmFuZG9tLnVuaWZvcm0oMC41LCAxLjApKQorCisKK2RlZiBndWlkZV9yb3V0ZV9jaGF0KHJvdXRlX2d1aWRlX3N0dWIpOgorICByZXNwb25zZXMgPSByb3V0ZV9ndWlkZV9zdHViLlJvdXRlQ2hhdChnZW5lcmF0ZV9tZXNzYWdlcygpKQorICBmb3IgcmVzcG9uc2UgaW4gcmVzcG9uc2VzOgorICAgIHByaW50KCJSZWNlaXZlZCBtZXNzYWdlICVzIGF0ICVzIiAlIChyZXNwb25zZS5tZXNzYWdlLCByZXNwb25zZS5sb2NhdGlvbikpCisKKworZGVmIHJ1bigpOgorICBjaGFubmVsID0gZ3JwYy5pbnNlY3VyZV9jaGFubmVsKCdsb2NhbGhvc3Q6NTAwNTEnKQorICBncmVldGVyX3N0dWIgPSBoZWxsb3dvcmxkX3BiMi5HcmVldGVyU3R1YihjaGFubmVsKQorICByb3V0ZV9ndWlkZV9zdHViID0gcm91dGVfZ3VpZGVfcGIyLlJvdXRlR3VpZGVTdHViKGNoYW5uZWwpCisgIGdyZWV0ZXJfcmVzcG9uc2UgPSBncmVldGVyX3N0dWIuU2F5SGVsbG8oCisgICAgICBoZWxsb3dvcmxkX3BiMi5IZWxsb1JlcXVlc3QobmFtZT0neW91JykpCisgIHByaW50KCJHcmVldGVyIGNsaWVudCByZWNlaXZlZDogIiArIGdyZWV0ZXJfcmVzcG9uc2UubWVzc2FnZSkKKyAgcHJpbnQoIi0tLS0tLS0tLS0tLS0tIEdldEZlYXR1cmUgLS0tLS0tLS0tLS0tLS0iKQorICBndWlkZV9nZXRfZmVhdHVyZShyb3V0ZV9ndWlkZV9zdHViKQorICBwcmludCgiLS0tLS0tLS0tLS0tLS0gTGlzdEZlYXR1cmVzIC0tLS0tLS0tLS0tLS0tIikKKyAgZ3VpZGVfbGlzdF9mZWF0dXJlcyhyb3V0ZV9ndWlkZV9zdHViKQorICBwcmludCgiLS0tLS0tLS0tLS0tLS0gUmVjb3JkUm91dGUgLS0tLS0tLS0tLS0tLS0iKQorICBndWlkZV9yZWNvcmRfcm91dGUocm91dGVfZ3VpZGVfc3R1YikKKyAgcHJpbnQoIi0tLS0tLS0tLS0tLS0tIFJvdXRlQ2hhdCAtLS0tLS0tLS0tLS0tLSIpCisgIGd1aWRlX3JvdXRlX2NoYXQocm91dGVfZ3VpZGVfc3R1YikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBydW4oKQpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9tdWx0aXBsZXhfc2VydmVyLnB5IGIvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9tdWx0aXBsZXhfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYTRlZTQKLS0tIC9kZXYvbnVsbAorKysgYi9leGFtcGxlcy9weXRob24vbXVsdGlwbGV4L211bHRpcGxleF9zZXJ2ZXIucHkKQEAgLTAsMCArMSwxNDkgQEAKKyMgQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJBIGdSUEMgc2VydmVyIHNlcnZpY2luZyBib3RoIEdyZWV0ZXIgYW5kIFJvdXRlR3VpZGUgUlBDcy4iIiIKKworZnJvbSBjb25jdXJyZW50IGltcG9ydCBmdXR1cmVzCitpbXBvcnQgdGltZQoraW1wb3J0IG1hdGgKKworaW1wb3J0IGdycGMKKworaW1wb3J0IGhlbGxvd29ybGRfcGIyCitpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCitpbXBvcnQgcm91dGVfZ3VpZGVfcmVzb3VyY2VzCisKK19PTkVfREFZX0lOX1NFQ09ORFMgPSA2MCAqIDYwICogMjQKKworCitkZWYgX2dldF9mZWF0dXJlKGZlYXR1cmVfZGIsIHBvaW50KToKKyAgIiIiUmV0dXJucyBGZWF0dXJlIGF0IGdpdmVuIGxvY2F0aW9uIG9yIE5vbmUuIiIiCisgIGZvciBmZWF0dXJlIGluIGZlYXR1cmVfZGI6CisgICAgaWYgZmVhdHVyZS5sb2NhdGlvbiA9PSBwb2ludDoKKyAgICAgIHJldHVybiBmZWF0dXJlCisgIHJldHVybiBOb25lCisKKworZGVmIF9nZXRfZGlzdGFuY2Uoc3RhcnQsIGVuZCk6CisgICIiIkRpc3RhbmNlIGJldHdlZW4gdHdvIHBvaW50cy4iIiIKKyAgY29vcmRfZmFjdG9yID0gMTAwMDAwMDAuMAorICBsYXRfMSA9IHN0YXJ0LmxhdGl0dWRlIC8gY29vcmRfZmFjdG9yCisgIGxhdF8yID0gZW5kLmxhdGl0dWRlIC8gY29vcmRfZmFjdG9yCisgIGxvbl8xID0gc3RhcnQubG9uZ2l0dWRlIC8gY29vcmRfZmFjdG9yCisgIGxvbl8yID0gZW5kLmxvbmdpdHVkZSAvIGNvb3JkX2ZhY3RvcgorICBsYXRfcmFkXzEgPSBtYXRoLnJhZGlhbnMobGF0XzEpCisgIGxhdF9yYWRfMiA9IG1hdGgucmFkaWFucyhsYXRfMikKKyAgZGVsdGFfbGF0X3JhZCA9IG1hdGgucmFkaWFucyhsYXRfMiAtIGxhdF8xKQorICBkZWx0YV9sb25fcmFkID0gbWF0aC5yYWRpYW5zKGxvbl8yIC0gbG9uXzEpCisKKyAgYSA9IChwb3cobWF0aC5zaW4oZGVsdGFfbGF0X3JhZCAvIDIpLCAyKSArCisgICAgICAgKG1hdGguY29zKGxhdF9yYWRfMSkgKiBtYXRoLmNvcyhsYXRfcmFkXzIpICoKKyAgICAgICAgcG93KG1hdGguc2luKGRlbHRhX2xvbl9yYWQgLyAyKSwgMikpKQorICBjID0gMiAqIG1hdGguYXRhbjIobWF0aC5zcXJ0KGEpLCBtYXRoLnNxcnQoMSAtIGEpKQorICBSID0gNjM3MTAwMDsgIyBtZXRyZXMKKyAgcmV0dXJuIFIgKiBjOworCisKK2NsYXNzIF9HcmVldGVyU2VydmljZXIoaGVsbG93b3JsZF9wYjIuR3JlZXRlclNlcnZpY2VyKToKKworICBkZWYgU2F5SGVsbG8oc2VsZiwgcmVxdWVzdCwgY29udGV4dCk6CisgICAgcmV0dXJuIGhlbGxvd29ybGRfcGIyLkhlbGxvUmVwbHkobWVzc2FnZT0nSGVsbG8sIHt9IScuZm9ybWF0KHJlcXVlc3QubmFtZSkpCisKKworY2xhc3MgX1JvdXRlR3VpZGVTZXJ2aWNlcihyb3V0ZV9ndWlkZV9wYjIuUm91dGVHdWlkZVNlcnZpY2VyKToKKyAgIiIiUHJvdmlkZXMgbWV0aG9kcyB0aGF0IGltcGxlbWVudCBmdW5jdGlvbmFsaXR5IG9mIHJvdXRlIGd1aWRlIHNlcnZlci4iIiIKKworICBkZWYgX19pbml0X18oc2VsZik6CisgICAgc2VsZi5kYiA9IHJvdXRlX2d1aWRlX3Jlc291cmNlcy5yZWFkX3JvdXRlX2d1aWRlX2RhdGFiYXNlKCkKKworICBkZWYgR2V0RmVhdHVyZShzZWxmLCByZXF1ZXN0LCBjb250ZXh0KToKKyAgICBmZWF0dXJlID0gX2dldF9mZWF0dXJlKHNlbGYuZGIsIHJlcXVlc3QpCisgICAgaWYgZmVhdHVyZSBpcyBOb25lOgorICAgICAgcmV0dXJuIHJvdXRlX2d1aWRlX3BiMi5GZWF0dXJlKG5hbWU9IiIsIGxvY2F0aW9uPXJlcXVlc3QpCisgICAgZWxzZToKKyAgICAgIHJldHVybiBmZWF0dXJlCisKKyAgZGVmIExpc3RGZWF0dXJlcyhzZWxmLCByZXF1ZXN0LCBjb250ZXh0KToKKyAgICBsZWZ0ID0gbWluKHJlcXVlc3QubG8ubG9uZ2l0dWRlLCByZXF1ZXN0LmhpLmxvbmdpdHVkZSkKKyAgICByaWdodCA9IG1heChyZXF1ZXN0LmxvLmxvbmdpdHVkZSwgcmVxdWVzdC5oaS5sb25naXR1ZGUpCisgICAgdG9wID0gbWF4KHJlcXVlc3QubG8ubGF0aXR1ZGUsIHJlcXVlc3QuaGkubGF0aXR1ZGUpCisgICAgYm90dG9tID0gbWluKHJlcXVlc3QubG8ubGF0aXR1ZGUsIHJlcXVlc3QuaGkubGF0aXR1ZGUpCisgICAgZm9yIGZlYXR1cmUgaW4gc2VsZi5kYjoKKyAgICAgIGlmIChmZWF0dXJlLmxvY2F0aW9uLmxvbmdpdHVkZSA+PSBsZWZ0IGFuZAorICAgICAgICAgIGZlYXR1cmUubG9jYXRpb24ubG9uZ2l0dWRlIDw9IHJpZ2h0IGFuZAorICAgICAgICAgIGZlYXR1cmUubG9jYXRpb24ubGF0aXR1ZGUgPj0gYm90dG9tIGFuZAorICAgICAgICAgIGZlYXR1cmUubG9jYXRpb24ubGF0aXR1ZGUgPD0gdG9wKToKKyAgICAgICAgeWllbGQgZmVhdHVyZQorCisgIGRlZiBSZWNvcmRSb3V0ZShzZWxmLCByZXF1ZXN0X2l0ZXJhdG9yLCBjb250ZXh0KToKKyAgICBwb2ludF9jb3VudCA9IDAKKyAgICBmZWF0dXJlX2NvdW50ID0gMAorICAgIGRpc3RhbmNlID0gMC4wCisgICAgcHJldl9wb2ludCA9IE5vbmUKKworICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgIGZvciBwb2ludCBpbiByZXF1ZXN0X2l0ZXJhdG9yOgorICAgICAgcG9pbnRfY291bnQgKz0gMQorICAgICAgaWYgX2dldF9mZWF0dXJlKHNlbGYuZGIsIHBvaW50KToKKyAgICAgICAgZmVhdHVyZV9jb3VudCArPSAxCisgICAgICBpZiBwcmV2X3BvaW50OgorICAgICAgICBkaXN0YW5jZSArPSBfZ2V0X2Rpc3RhbmNlKHByZXZfcG9pbnQsIHBvaW50KQorICAgICAgcHJldl9wb2ludCA9IHBvaW50CisKKyAgICBlbGFwc2VkX3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUKKyAgICByZXR1cm4gcm91dGVfZ3VpZGVfcGIyLlJvdXRlU3VtbWFyeShwb2ludF9jb3VudD1wb2ludF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlX2NvdW50PWZlYXR1cmVfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U9aW50KGRpc3RhbmNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkX3RpbWU9aW50KGVsYXBzZWRfdGltZSkpCisKKyAgZGVmIFJvdXRlQ2hhdChzZWxmLCByZXF1ZXN0X2l0ZXJhdG9yLCBjb250ZXh0KToKKyAgICBwcmV2X25vdGVzID0gW10KKyAgICBmb3IgbmV3X25vdGUgaW4gcmVxdWVzdF9pdGVyYXRvcjoKKyAgICAgIGZvciBwcmV2X25vdGUgaW4gcHJldl9ub3RlczoKKyAgICAgICAgaWYgcHJldl9ub3RlLmxvY2F0aW9uID09IG5ld19ub3RlLmxvY2F0aW9uOgorICAgICAgICAgIHlpZWxkIHByZXZfbm90ZQorICAgICAgcHJldl9ub3Rlcy5hcHBlbmQobmV3X25vdGUpCisKKworZGVmIHNlcnZlKCk6CisgIHNlcnZlciA9IGdycGMuc2VydmVyKGZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPTEwKSkKKyAgaGVsbG93b3JsZF9wYjIuYWRkX0dyZWV0ZXJTZXJ2aWNlcl90b19zZXJ2ZXIoX0dyZWV0ZXJTZXJ2aWNlcigpLCBzZXJ2ZXIpCisgIHJvdXRlX2d1aWRlX3BiMi5hZGRfUm91dGVHdWlkZVNlcnZpY2VyX3RvX3NlcnZlcigKKyAgICAgIF9Sb3V0ZUd1aWRlU2VydmljZXIoKSwgc2VydmVyKQorICBzZXJ2ZXIuYWRkX2luc2VjdXJlX3BvcnQoJ1s6Ol06NTAwNTEnKQorICBzZXJ2ZXIuc3RhcnQoKQorICB0cnk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgIHRpbWUuc2xlZXAoX09ORV9EQVlfSU5fU0VDT05EUykKKyAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgIHNlcnZlci5zdG9wKDApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgc2VydmUoKQpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9yb3V0ZV9ndWlkZV9kYi5qc29uIGIvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9yb3V0ZV9ndWlkZV9kYi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNmE5ODAKLS0tIC9kZXYvbnVsbAorKysgYi9leGFtcGxlcy9weXRob24vbXVsdGlwbGV4L3JvdXRlX2d1aWRlX2RiLmpzb24KQEAgLTAsMCArMSw2MDEgQEAKK1t7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDc4MzgzNTEsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ2MTQzNzYzCisgICAgfSwKKyAgICAibmFtZSI6ICJQYXRyaW90cyBQYXRoLCBNZW5kaGFtLCBOSiAwNzk0NSwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA4MTIyODA4LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0Mzk5OTE3OQorICAgIH0sCisgICAgIm5hbWUiOiAiMTAxIE5ldyBKZXJzZXkgMTAsIFdoaXBwYW55LCBOSiAwNzk4MSwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDEzNjI4MTU2LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0OTAxNTQ2OAorICAgIH0sCisgICAgIm5hbWUiOiAiVS5TLiA2LCBTaG9ob2xhLCBQQSAxODQ1OCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE5OTk5NTQ0LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MDM3MTEzNgorICAgIH0sCisgICAgIm5hbWUiOiAiNSBDb25uZXJzIFJvYWQsIEtpbmdzdG9uLCBOWSAxMjQwMSwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE0MDA4Mzg5LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0Mzk1MTI5NworICAgIH0sCisgICAgIm5hbWUiOiAiTWlkIEh1ZHNvbiBQc3ljaGlhdHJpYyBDZW50ZXIsIE5ldyBIYW1wdG9uLCBOWSAxMDk1OCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE5NjExMzE4LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NjUyNDc2OQorICAgIH0sCisgICAgIm5hbWUiOiAiMjg3IEZsdWdlcnRvd24gUm9hZCwgTGl2aW5nc3RvbiBNYW5vciwgTlkgMTI3NTgsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNjEwOTU2MywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDIxODY3NzgKKyAgICB9LAorICAgICJuYW1lIjogIjQwMDEgVHJlbWxleSBQb2ludCBSb2FkLCBMaW5kZW4sIE5KIDA3MDM2LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTY4MDI0NTYsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQyMzcwMTgzCisgICAgfSwKKyAgICAibmFtZSI6ICIzNTIgU291dGggTW91bnRhaW4gUm9hZCwgV2FsbGtpbGwsIE5ZIDEyNTg5LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTI5NTA0MjUsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQxMDc3Mzg5CisgICAgfSwKKyAgICAibmFtZSI6ICJCYWlsZXkgVHVybiBSb2FkLCBIYXJyaW1hbiwgTlkgMTA5MjYsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMjE0NDY1NSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDM5NDk3MzkKKyAgICB9LAorICAgICJuYW1lIjogIjE5My0xOTkgV2F3YXlhbmRhIFJvYWQsIEhld2l0dCwgTkogMDc0MjEsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxNTczNjYwNSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDI4NDc1MjIKKyAgICB9LAorICAgICJuYW1lIjogIjQwNi00OTYgV2FyZCBBdmVudWUsIFBpbmUgQnVzaCwgTlkgMTI1NjYsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMzg0MzkzMCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDA1MDE3MjYKKyAgICB9LAorICAgICJuYW1lIjogIjE2MiBNZXJyaWxsIFJvYWQsIEhpZ2hsYW5kIE1pbGxzLCBOWSAxMDkzMCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDEwODczMDc1LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NDQ1OTAyMworICAgIH0sCisgICAgIm5hbWUiOiAiQ2xpbnRvbiBSb2FkLCBXZXN0IE1pbGZvcmQsIE5KIDA3NDgwLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTIzNDYwMDksCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ0MDI2ODE0CisgICAgfSwKKyAgICAibmFtZSI6ICIxNiBPbGQgQnJvb2sgTGFuZSwgV2Fyd2ljaywgTlkgMTA5OTAsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMjk0ODQ1NSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDc5MDM5MTMKKyAgICB9LAorICAgICJuYW1lIjogIjMgRHJha2UgTGFuZSwgUGVubmluZ3RvbiwgTkogMDg1MzQsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNjMzNzA5MiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDAxMjIyMjYKKyAgICB9LAorICAgICJuYW1lIjogIjYzMjQgOHRoIEF2ZW51ZSwgQnJvb2tseW4sIE5ZIDExMjIwLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDY0MjE5NjcsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ3NzI3NjI0CisgICAgfSwKKyAgICAibmFtZSI6ICIxIE1lcmNrIEFjY2VzcyBSb2FkLCBXaGl0ZWhvdXNlIFN0YXRpb24sIE5KIDA4ODg5LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTYzMTgwODIsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ5Njc3NzE2CisgICAgfSwKKyAgICAibmFtZSI6ICI3OC05OCBTY2hhbGNrIFJvYWQsIE5hcnJvd3NidXJnLCBOWSAxMjc2NCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE1MzAxNzIwLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0ODQxNjI1NworICAgIH0sCisgICAgIm5hbWUiOiAiMjgyIExha2V2aWV3IERyaXZlIFJvYWQsIEhpZ2hsYW5kIExha2UsIE5ZIDEyNzQzLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDI2NDcwMTksCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ3MDcxNzkxCisgICAgfSwKKyAgICAibmFtZSI6ICIzMzAgRXZlbHluIEF2ZW51ZSwgSGFtaWx0b24gVG93bnNoaXAsIE5KIDA4NjE5LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTI1Njc4MDcsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQxMDU4MDc4CisgICAgfSwKKyAgICAibmFtZSI6ICJOZXcgWW9yayBTdGF0ZSBSZWZlcmVuY2UgUm91dGUgOTg3RSwgU291dGhmaWVsZHMsIE5ZIDEwOTc1LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTY4NTUxNTYsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ0NDIwNTk3CisgICAgfSwKKyAgICAibmFtZSI6ICIxMDMtMjcxIFRlbXBhbG9uaSBSb2FkLCBFbGxlbnZpbGxlLCBOWSAxMjQyOCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA0NjYzNjI4LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NDgyMDE1NworICAgIH0sCisgICAgIm5hbWUiOiAiMTMwMCBBaXJwb3J0IFJvYWQsIE5vcnRoIEJydW5zd2ljayBUb3duc2hpcCwgTkogMDg5MDIsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNzExMzcyMywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDk3NDY0ODMKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMjEzMzkyNiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDM2MTMyNDkKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMDI3MzQ0MiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDEyMjA5MTUKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMTIzNjc4NiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDQwNzA3NjkKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMTYzMzc4MiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDY3ODQ5NzAKKyAgICB9LAorICAgICJuYW1lIjogIjIxMS0yMjUgUGxhaW5zIFJvYWQsIEF1Z3VzdGEsIE5KIDA3ODIyLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTU4MzA3MDEsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQyOTUyODEyCisgICAgfSwKKyAgICAibmFtZSI6ICIiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTM0NDcxNjQsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ4NzEyODk4CisgICAgfSwKKyAgICAibmFtZSI6ICIxNjUgUGVkZXJzZW4gUmlkZ2UgUm9hZCwgTWlsZm9yZCwgUEEgMTgzMzcsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNTA0NzI0NSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDk4MDA3MjIKKyAgICB9LAorICAgICJuYW1lIjogIjEwMC0xMjIgTG9ja3Rvd24gUm9hZCwgRnJlbmNodG93biwgTkogMDg4MjUsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxODg1ODkyMywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDYxNTY3OTAKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxNzk1MTg4OCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDg0ODQ5NDQKKyAgICB9LAorICAgICJuYW1lIjogIjY1MC02NTIgV2lsbGkgSGlsbCBSb2FkLCBTd2FuIExha2UsIE5ZIDEyNzgzLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDcwMzM3ODYsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQzOTc3MzM3CisgICAgfSwKKyAgICAibmFtZSI6ICIyNiBFYXN0IDNyZCBTdHJlZXQsIE5ldyBQcm92aWRlbmNlLCBOSiAwNzk3NCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE3NTQ4MDE0LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MDA3NTA0MQorICAgIH0sCisgICAgIm5hbWUiOiAiIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDEwMzk1ODY4LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NDk3MjMyNQorICAgIH0sCisgICAgIm5hbWUiOiAiIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA0NjE1MzUzLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NTEyOTgwMworICAgIH0sCisgICAgIm5hbWUiOiAiIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA2NTg5NzkwLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MzU2MDEyMQorICAgIH0sCisgICAgIm5hbWUiOiAiNjExIExhd3JlbmNlIEF2ZW51ZSwgV2VzdGZpZWxkLCBOSiAwNzA5MCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE0NjUzMTQ4LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MDQ3NzQ3NworICAgIH0sCisgICAgIm5hbWUiOiAiMTggTGFubmlzIEF2ZW51ZSwgTmV3IFdpbmRzb3IsIE5ZIDEyNTUzLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDU5NTc4MDgsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQzMjU1MzM2CisgICAgfSwKKyAgICAibmFtZSI6ICI4Mi0xMDQgQW1oZXJzdCBBdmVudWUsIENvbG9uaWEsIE5KIDA3MDY3LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTE3MzM1ODksCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQxNjQ4MDkzCisgICAgfSwKKyAgICAibmFtZSI6ICIxNzAgU2V2ZW4gTGFrZXMgRHJpdmUsIFNsb2F0c2J1cmcsIE5ZIDEwOTc0LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTI2NzYyOTEsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQyNjA2NjA2CisgICAgfSwKKyAgICAibmFtZSI6ICIxMjcwIExha2VzIFJvYWQsIE1vbnJvZSwgTlkgMTA5NTAsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwOTIyNDQ0NSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDgyODY3MzgKKyAgICB9LAorICAgICJuYW1lIjogIjUwOS01MzUgQWxwaGFubyBSb2FkLCBHcmVhdCBNZWFkb3dzLCBOSiAwNzgzOCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA2NTIzNDIwLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MjEzNTUxNworICAgIH0sCisgICAgIm5hbWUiOiAiNjUyIEdhcmRlbiBTdHJlZXQsIEVsaXphYmV0aCwgTkogMDcyMDIsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMTgyNzM4OCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDAyOTQ1MzcKKyAgICB9LAorICAgICJuYW1lIjogIjM0OSBTZWEgU3ByYXkgQ291cnQsIE5lcHR1bmUgQ2l0eSwgTkogMDc3NTMsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMDU2NDE1MiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDM2ODUwNTQKKyAgICB9LAorICAgICJuYW1lIjogIjEzLTE3IFN0YW5sZXkgU3RyZWV0LCBXZXN0IE1pbGZvcmQsIE5KIDA3NDgwLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDg0NzIzMjQsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQwNzI2MDQ2CisgICAgfSwKKyAgICAibmFtZSI6ICI0NyBJbmR1c3RyaWFsIEF2ZW51ZSwgVGV0ZXJib3JvLCBOSiAwNzYwOCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDEyNDUyMTY4LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MDIxNDA1MgorICAgIH0sCisgICAgIm5hbWUiOiAiNSBXaGl0ZSBPYWsgTGFuZSwgU3RvbnkgUG9pbnQsIE5ZIDEwOTgwLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDkxNDYxMzgsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ2MTg4OTA2CisgICAgfSwKKyAgICAibmFtZSI6ICJCZXJrc2hpcmUgVmFsbGV5IE1hbmFnZW1lbnQgQXJlYSBUcmFpbCwgSmVmZmVyc29uLCBOSiwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA0NzAxMzgwLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NDc4MTc0NQorICAgIH0sCisgICAgIm5hbWUiOiAiMTAwNyBKZXJzZXkgQXZlbnVlLCBOZXcgQnJ1bnN3aWNrLCBOSiAwODkwMSwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA5NjQyNTY2LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NjAxNzY3OQorICAgIH0sCisgICAgIm5hbWUiOiAiNiBFYXN0IEVtZXJhbGQgSXNsZSBEcml2ZSwgTGFrZSBIb3BhdGNvbmcsIE5KIDA3ODQ5LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDgwMzE3MjgsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ4NjQ1Mzg1CisgICAgfSwKKyAgICAibmFtZSI6ICIxMzU4LTE0NzQgTmV3IEplcnNleSA1NywgUG9ydCBNdXJyYXksIE5KIDA3ODY1LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTM3MDAyNzIsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQyMTM1MTg5CisgICAgfSwKKyAgICAibmFtZSI6ICIzNjcgUHJvc3BlY3QgUm9hZCwgQ2hlc3RlciwgTlkgMTA5MTgsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNDMxMDYwNywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDAyODI2MzIKKyAgICB9LAorICAgICJuYW1lIjogIjEwIFNpbW9uIExha2UgRHJpdmUsIEF0bGFudGljIEhpZ2hsYW5kcywgTkogMDc3MTYsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwOTMxOTgwMCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDYyMDEzOTEKKyAgICB9LAorICAgICJuYW1lIjogIjExIFdhcmQgU3RyZWV0LCBNb3VudCBBcmxpbmd0b24sIE5KIDA3ODU2LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MDY2ODUzMTEsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQyMTA4NjAzCisgICAgfSwKKyAgICAibmFtZSI6ICIzMDAtMzk4IEplZmZlcnNvbiBBdmVudWUsIEVsaXphYmV0aCwgTkogMDcyMDEsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxOTAxODExNywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDkxNDI3ODEKKyAgICB9LAorICAgICJuYW1lIjogIjQzIERyZWhlciBSb2FkLCBSb3Njb2UsIE5ZIDEyNzc2LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTI4NTYxNjIsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ1MTQ4ODM3CisgICAgfSwKKyAgICAibmFtZSI6ICJTd2FuIFN0cmVldCwgUGluZSBJc2xhbmQsIE5ZIDEwOTY5LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTY1NjA3NDQsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ2NzIxOTY0CisgICAgfSwKKyAgICAibmFtZSI6ICI2NiBQbGVhc2FudHZpZXcgQXZlbnVlLCBNb250aWNlbGxvLCBOWSAxMjcwMSwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA1MzE0MjcwLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0OTgzNjM1NAorICAgIH0sCisgICAgIm5hbWUiOiAiIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE0MjE5NTQ4LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MzMyNzQ0MAorICAgIH0sCisgICAgIm5hbWUiOiAiIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE1NTM0MTc3LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MjkwMDYxNgorICAgIH0sCisgICAgIm5hbWUiOiAiNTY1IFdpbmRpbmcgSGlsbHMgUm9hZCwgTW9udGdvbWVyeSwgTlkgMTI1NDksIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNjg5ODUzMCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDkxMjcwODAKKyAgICB9LAorICAgICJuYW1lIjogIjIzMSBSb2NreSBSdW4gUm9hZCwgR2xlbiBHYXJkbmVyLCBOSiAwODgyNiwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA3NTg2ODgwLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MTY3MDE2OAorICAgIH0sCisgICAgIm5hbWUiOiAiMTAwIE1vdW50IFBsZWFzYW50IEF2ZW51ZSwgTmV3YXJrLCBOSiAwNzEwNCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDAwMTA2NDU1LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0Mjg3MDE5MAorICAgIH0sCisgICAgIm5hbWUiOiAiNTE3LTUyMSBIdW50aW5ndG9uIERyaXZlLCBNYW5jaGVzdGVyIFRvd25zaGlwLCBOSiAwODc1OSwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDAwMDY2MTg4LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0Njc5MzI5NAorICAgIH0sCisgICAgIm5hbWUiOiAiIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE4ODAzODgwLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NDEwMjY3MworICAgIH0sCisgICAgIm5hbWUiOiAiNDAgTW91bnRhaW4gUm9hZCwgTmFwYW5vY2gsIE5ZIDEyNDU4LCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTQyMDQyODgsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ3ODk1MTQwCisgICAgfSwKKyAgICAibmFtZSI6ICIiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTQ3Nzc0MDUsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQwNjE1NjAxCisgICAgfSwKKyAgICAibmFtZSI6ICIiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTU0NjQ0NzUsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ3MTc1Mzc0CisgICAgfSwKKyAgICAibmFtZSI6ICI0OCBOb3J0aCBSb2FkLCBGb3Jlc3RidXJnaCwgTlkgMTI3NzcsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNDA2MjM3OCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDYzNzYxNzcKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNTY4ODI3MiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDkyODUxMzAKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMDM0MjA3MCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDg3ODg5OTYKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMTgwOTAyMiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDQxNTc5NjQKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNDIyNjY0NCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDA1MTcxNDEKKyAgICB9LAorICAgICJuYW1lIjogIjkgVGhvbXBzb24gQXZlbnVlLCBMZW9uYXJkbywgTkogMDc3MzcsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMDMyMjAzMywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDc4NzE2NTkKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNzEwMDY3NCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDc3NDI3MjcKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxODgxMTQzMywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDE3MTgwMDUKKyAgICB9LAorICAgICJuYW1lIjogIjIxMyBCdXNoIFJvYWQsIFN0b25lIFJpZGdlLCBOWSAxMjQ4NCwgVVNBIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDE1MDM0MzAyLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0Mzg1MDk0NQorICAgIH0sCisgICAgIm5hbWUiOiAiIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDExMzQ5OTkyLAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0MzY5NDE2MQorICAgIH0sCisgICAgIm5hbWUiOiAiIgorfSwgeworICAgICJsb2NhdGlvbiI6IHsKKyAgICAgICAgImxhdGl0dWRlIjogNDA0ODM5OTE0LAorICAgICAgICAibG9uZ2l0dWRlIjogLTc0NDc1OTYxNgorICAgIH0sCisgICAgIm5hbWUiOiAiMS0xNyBCZXJnZW4gQ291cnQsIE5ldyBCcnVuc3dpY2ssIE5KIDA4OTAxLCBVU0EiCit9LCB7CisgICAgImxvY2F0aW9uIjogeworICAgICAgICAibGF0aXR1ZGUiOiA0MTQ2MzgwMTcsCisgICAgICAgICJsb25naXR1ZGUiOiAtNzQ1OTU3ODU0CisgICAgfSwKKyAgICAibmFtZSI6ICIzNSBPYWtsYW5kIFZhbGxleSBSb2FkLCBDdWRkZWJhY2t2aWxsZSwgTlkgMTI3MjksIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMjEyNzgwMCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDAxNzM1NzgKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMTI2MzQ2MCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDc5NjQzMDMKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMjg0MzM5MSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDkwODYwMjYKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxODUxMjc3MywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDMwNjc4MjMKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNDMxODMyOCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDA4MzU2MzgKKyAgICB9LAorICAgICJuYW1lIjogIjQyLTEwMiBNYWluIFN0cmVldCwgQmVsZm9yZCwgTkogMDc3MTgsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxOTAyMDc0NiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDExNzIzMjgKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNDA4MDcyMywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDYxMTk1NjkKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMTAxMjY0MywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDQwMzUxMzQKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNDMwNjM3MiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDEwNzk2NjEKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwMzk2NjMyNiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDg1MTkyOTcKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNTAwMjAzMSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDg0MDc4NjYKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwOTUzMjg4NSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDIyMDA2ODMKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxNjg1MTMyMSwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDI2NzQ1NTUKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQwNjQxMTYzMywKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDE3MjIwNTEKKyAgICB9LAorICAgICJuYW1lIjogIjMzODcgUmljaG1vbmQgVGVycmFjZSwgU3RhdGVuIElzbGFuZCwgTlkgMTAzMDMsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMzA2OTA1OCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDQ1OTc3NzgKKyAgICB9LAorICAgICJuYW1lIjogIjI2MSBWYW4gU2lja2xlIFJvYWQsIEdvc2hlbiwgTlkgMTA5MjQsIFVTQSIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxODQ2NTQ2MiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDY4NTkzOTgKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMTczMzIyMiwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDQyMjgzNjAKKyAgICB9LAorICAgICJuYW1lIjogIiIKK30sIHsKKyAgICAibG9jYXRpb24iOiB7CisgICAgICAgICJsYXRpdHVkZSI6IDQxMDI0ODIyNCwKKyAgICAgICAgImxvbmdpdHVkZSI6IC03NDcxMjc3NjcKKyAgICB9LAorICAgICJuYW1lIjogIjMgSGFzdGEgV2F5LCBOZXd0b24sIE5KIDA3ODYwLCBVU0EiCit9XQpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9yb3V0ZV9ndWlkZV9wYjIucHkgYi9leGFtcGxlcy9weXRob24vbXVsdGlwbGV4L3JvdXRlX2d1aWRlX3BiMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjRlMTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9yb3V0ZV9ndWlkZV9wYjIucHkKQEAgLTAsMCArMSw1MTYgQEAKKyMgR2VuZXJhdGVkIGJ5IHRoZSBwcm90b2NvbCBidWZmZXIgY29tcGlsZXIuICBETyBOT1QgRURJVCEKKyMgc291cmNlOiByb3V0ZV9ndWlkZS5wcm90bworCitpbXBvcnQgc3lzCitfYj1zeXMudmVyc2lvbl9pbmZvWzBdPDMgYW5kIChsYW1iZGEgeDp4KSBvciAobGFtYmRhIHg6eC5lbmNvZGUoJ2xhdGluMScpKQorZnJvbSBnb29nbGUucHJvdG9idWYgaW1wb3J0IGRlc2NyaXB0b3IgYXMgX2Rlc2NyaXB0b3IKK2Zyb20gZ29vZ2xlLnByb3RvYnVmIGltcG9ydCBtZXNzYWdlIGFzIF9tZXNzYWdlCitmcm9tIGdvb2dsZS5wcm90b2J1ZiBpbXBvcnQgcmVmbGVjdGlvbiBhcyBfcmVmbGVjdGlvbgorZnJvbSBnb29nbGUucHJvdG9idWYgaW1wb3J0IHN5bWJvbF9kYXRhYmFzZSBhcyBfc3ltYm9sX2RhdGFiYXNlCitmcm9tIGdvb2dsZS5wcm90b2J1ZiBpbXBvcnQgZGVzY3JpcHRvcl9wYjIKKyMgQEBwcm90b2NfaW5zZXJ0aW9uX3BvaW50KGltcG9ydHMpCisKK19zeW1fZGIgPSBfc3ltYm9sX2RhdGFiYXNlLkRlZmF1bHQoKQorCisKKworCitERVNDUklQVE9SID0gX2Rlc2NyaXB0b3IuRmlsZURlc2NyaXB0b3IoCisgIG5hbWU9J3JvdXRlX2d1aWRlLnByb3RvJywKKyAgcGFja2FnZT0ncm91dGVndWlkZScsCisgIHN5bnRheD0ncHJvdG8zJywKKyAgc2VyaWFsaXplZF9wYj1fYignXG5ceDExcm91dGVfZ3VpZGUucHJvdG9ceDEyXG5yb3V0ZWd1aWRlXCIsXG5ceDA1UG9pbnRceDEyXHgxMFxuXHgwOGxhdGl0dWRlXHgxOFx4MDEgXHgwMShceDA1XHgxMlx4MTFcblx0bG9uZ2l0dWRlXHgxOFx4MDIgXHgwMShceDA1XCJJXG5cdFJlY3RhbmdsZVx4MTJceDFkXG5ceDAybG9ceDE4XHgwMSBceDAxKFx4MGJceDMyXHgxMS5yb3V0ZWd1aWRlLlBvaW50XHgxMlx4MWRcblx4MDJoaVx4MThceDAyIFx4MDEoXHgwYlx4MzJceDExLnJvdXRlZ3VpZGUuUG9pbnRcIjxcblx4MDdceDQ2XHg2NVx4NjF0dXJlXHgxMlx4MGNcblx4MDRuYW1lXHgxOFx4MDEgXHgwMShcdFx4MTIjXG5ceDA4bG9jYXRpb25ceDE4XHgwMiBceDAxKFx4MGJceDMyXHgxMS5yb3V0ZWd1aWRlLlBvaW50XCJBXG5cdFJvdXRlTm90ZVx4MTIjXG5ceDA4bG9jYXRpb25ceDE4XHgwMSBceDAxKFx4MGJceDMyXHgxMS5yb3V0ZWd1aWRlLlBvaW50XHgxMlx4MGZcblx4MDdtZXNzYWdlXHgxOFx4MDIgXHgwMShcdFwiYlxuXHgwY1JvdXRlU3VtbWFyeVx4MTJceDEzXG5ceDBicG9pbnRfY291bnRceDE4XHgwMSBceDAxKFx4MDVceDEyXHgxNVxuXHJmZWF0dXJlX2NvdW50XHgxOFx4MDIgXHgwMShceDA1XHgxMlx4MTBcblx4MDhceDY0aXN0YW5jZVx4MThceDAzIFx4MDEoXHgwNVx4MTJceDE0XG5ceDBjXHg2NWxhcHNlZF90aW1lXHgxOFx4MDQgXHgwMShceDA1XHgzMlx4ODVceDAyXG5cblJvdXRlR3VpZGVceDEyXHgzNlxuXG5HZXRGZWF0dXJlXHgxMlx4MTEucm91dGVndWlkZS5Qb2ludFx4MWFceDEzLnJvdXRlZ3VpZGUuRmVhdHVyZVwiXHgwMFx4MTI+XG5ceDBjTGlzdEZlYXR1cmVzXHgxMlx4MTUucm91dGVndWlkZS5SZWN0YW5nbGVceDFhXHgxMy5yb3V0ZWd1aWRlLkZlYXR1cmVcIlx4MDBceDMwXHgwMVx4MTI+XG5ceDBiUmVjb3JkUm91dGVceDEyXHgxMS5yb3V0ZWd1aWRlLlBvaW50XHgxYVx4MTgucm91dGVndWlkZS5Sb3V0ZVN1bW1hcnlcIlx4MDAoXHgwMVx4MTI/XG5cdFJvdXRlQ2hhdFx4MTJceDE1LnJvdXRlZ3VpZGUuUm91dGVOb3RlXHgxYVx4MTUucm91dGVndWlkZS5Sb3V0ZU5vdGVcIlx4MDAoXHgwMVx4MzBceDAxXHg0Mlx4MzZcblx4MWJpby5ncnBjLmV4YW1wbGVzLnJvdXRlZ3VpZGVCXHgwZlJvdXRlR3VpZGVQcm90b1BceDAxXHhhMlx4MDJceDAzUlRHYlx4MDZwcm90bzMnKQorKQorX3N5bV9kYi5SZWdpc3RlckZpbGVEZXNjcmlwdG9yKERFU0NSSVBUT1IpCisKKworCisKK19QT0lOVCA9IF9kZXNjcmlwdG9yLkRlc2NyaXB0b3IoCisgIG5hbWU9J1BvaW50JywKKyAgZnVsbF9uYW1lPSdyb3V0ZWd1aWRlLlBvaW50JywKKyAgZmlsZW5hbWU9Tm9uZSwKKyAgZmlsZT1ERVNDUklQVE9SLAorICBjb250YWluaW5nX3R5cGU9Tm9uZSwKKyAgZmllbGRzPVsKKyAgICBfZGVzY3JpcHRvci5GaWVsZERlc2NyaXB0b3IoCisgICAgICBuYW1lPSdsYXRpdHVkZScsIGZ1bGxfbmFtZT0ncm91dGVndWlkZS5Qb2ludC5sYXRpdHVkZScsIGluZGV4PTAsCisgICAgICBudW1iZXI9MSwgdHlwZT01LCBjcHBfdHlwZT0xLCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9MCwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgICBfZGVzY3JpcHRvci5GaWVsZERlc2NyaXB0b3IoCisgICAgICBuYW1lPSdsb25naXR1ZGUnLCBmdWxsX25hbWU9J3JvdXRlZ3VpZGUuUG9pbnQubG9uZ2l0dWRlJywgaW5kZXg9MSwKKyAgICAgIG51bWJlcj0yLCB0eXBlPTUsIGNwcF90eXBlPTEsIGxhYmVsPTEsCisgICAgICBoYXNfZGVmYXVsdF92YWx1ZT1GYWxzZSwgZGVmYXVsdF92YWx1ZT0wLAorICAgICAgbWVzc2FnZV90eXBlPU5vbmUsIGVudW1fdHlwZT1Ob25lLCBjb250YWluaW5nX3R5cGU9Tm9uZSwKKyAgICAgIGlzX2V4dGVuc2lvbj1GYWxzZSwgZXh0ZW5zaW9uX3Njb3BlPU5vbmUsCisgICAgICBvcHRpb25zPU5vbmUpLAorICBdLAorICBleHRlbnNpb25zPVsKKyAgXSwKKyAgbmVzdGVkX3R5cGVzPVtdLAorICBlbnVtX3R5cGVzPVsKKyAgXSwKKyAgb3B0aW9ucz1Ob25lLAorICBpc19leHRlbmRhYmxlPUZhbHNlLAorICBzeW50YXg9J3Byb3RvMycsCisgIGV4dGVuc2lvbl9yYW5nZXM9W10sCisgIG9uZW9mcz1bCisgIF0sCisgIHNlcmlhbGl6ZWRfc3RhcnQ9MzMsCisgIHNlcmlhbGl6ZWRfZW5kPTc3LAorKQorCisKK19SRUNUQU5HTEUgPSBfZGVzY3JpcHRvci5EZXNjcmlwdG9yKAorICBuYW1lPSdSZWN0YW5nbGUnLAorICBmdWxsX25hbWU9J3JvdXRlZ3VpZGUuUmVjdGFuZ2xlJywKKyAgZmlsZW5hbWU9Tm9uZSwKKyAgZmlsZT1ERVNDUklQVE9SLAorICBjb250YWluaW5nX3R5cGU9Tm9uZSwKKyAgZmllbGRzPVsKKyAgICBfZGVzY3JpcHRvci5GaWVsZERlc2NyaXB0b3IoCisgICAgICBuYW1lPSdsbycsIGZ1bGxfbmFtZT0ncm91dGVndWlkZS5SZWN0YW5nbGUubG8nLCBpbmRleD0wLAorICAgICAgbnVtYmVyPTEsIHR5cGU9MTEsIGNwcF90eXBlPTEwLCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9Tm9uZSwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgICBfZGVzY3JpcHRvci5GaWVsZERlc2NyaXB0b3IoCisgICAgICBuYW1lPSdoaScsIGZ1bGxfbmFtZT0ncm91dGVndWlkZS5SZWN0YW5nbGUuaGknLCBpbmRleD0xLAorICAgICAgbnVtYmVyPTIsIHR5cGU9MTEsIGNwcF90eXBlPTEwLCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9Tm9uZSwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgXSwKKyAgZXh0ZW5zaW9ucz1bCisgIF0sCisgIG5lc3RlZF90eXBlcz1bXSwKKyAgZW51bV90eXBlcz1bCisgIF0sCisgIG9wdGlvbnM9Tm9uZSwKKyAgaXNfZXh0ZW5kYWJsZT1GYWxzZSwKKyAgc3ludGF4PSdwcm90bzMnLAorICBleHRlbnNpb25fcmFuZ2VzPVtdLAorICBvbmVvZnM9WworICBdLAorICBzZXJpYWxpemVkX3N0YXJ0PTc5LAorICBzZXJpYWxpemVkX2VuZD0xNTIsCispCisKKworX0ZFQVRVUkUgPSBfZGVzY3JpcHRvci5EZXNjcmlwdG9yKAorICBuYW1lPSdGZWF0dXJlJywKKyAgZnVsbF9uYW1lPSdyb3V0ZWd1aWRlLkZlYXR1cmUnLAorICBmaWxlbmFtZT1Ob25lLAorICBmaWxlPURFU0NSSVBUT1IsCisgIGNvbnRhaW5pbmdfdHlwZT1Ob25lLAorICBmaWVsZHM9WworICAgIF9kZXNjcmlwdG9yLkZpZWxkRGVzY3JpcHRvcigKKyAgICAgIG5hbWU9J25hbWUnLCBmdWxsX25hbWU9J3JvdXRlZ3VpZGUuRmVhdHVyZS5uYW1lJywgaW5kZXg9MCwKKyAgICAgIG51bWJlcj0xLCB0eXBlPTksIGNwcF90eXBlPTksIGxhYmVsPTEsCisgICAgICBoYXNfZGVmYXVsdF92YWx1ZT1GYWxzZSwgZGVmYXVsdF92YWx1ZT1fYigiIikuZGVjb2RlKCd1dGYtOCcpLAorICAgICAgbWVzc2FnZV90eXBlPU5vbmUsIGVudW1fdHlwZT1Ob25lLCBjb250YWluaW5nX3R5cGU9Tm9uZSwKKyAgICAgIGlzX2V4dGVuc2lvbj1GYWxzZSwgZXh0ZW5zaW9uX3Njb3BlPU5vbmUsCisgICAgICBvcHRpb25zPU5vbmUpLAorICAgIF9kZXNjcmlwdG9yLkZpZWxkRGVzY3JpcHRvcigKKyAgICAgIG5hbWU9J2xvY2F0aW9uJywgZnVsbF9uYW1lPSdyb3V0ZWd1aWRlLkZlYXR1cmUubG9jYXRpb24nLCBpbmRleD0xLAorICAgICAgbnVtYmVyPTIsIHR5cGU9MTEsIGNwcF90eXBlPTEwLCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9Tm9uZSwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgXSwKKyAgZXh0ZW5zaW9ucz1bCisgIF0sCisgIG5lc3RlZF90eXBlcz1bXSwKKyAgZW51bV90eXBlcz1bCisgIF0sCisgIG9wdGlvbnM9Tm9uZSwKKyAgaXNfZXh0ZW5kYWJsZT1GYWxzZSwKKyAgc3ludGF4PSdwcm90bzMnLAorICBleHRlbnNpb25fcmFuZ2VzPVtdLAorICBvbmVvZnM9WworICBdLAorICBzZXJpYWxpemVkX3N0YXJ0PTE1NCwKKyAgc2VyaWFsaXplZF9lbmQ9MjE0LAorKQorCisKK19ST1VURU5PVEUgPSBfZGVzY3JpcHRvci5EZXNjcmlwdG9yKAorICBuYW1lPSdSb3V0ZU5vdGUnLAorICBmdWxsX25hbWU9J3JvdXRlZ3VpZGUuUm91dGVOb3RlJywKKyAgZmlsZW5hbWU9Tm9uZSwKKyAgZmlsZT1ERVNDUklQVE9SLAorICBjb250YWluaW5nX3R5cGU9Tm9uZSwKKyAgZmllbGRzPVsKKyAgICBfZGVzY3JpcHRvci5GaWVsZERlc2NyaXB0b3IoCisgICAgICBuYW1lPSdsb2NhdGlvbicsIGZ1bGxfbmFtZT0ncm91dGVndWlkZS5Sb3V0ZU5vdGUubG9jYXRpb24nLCBpbmRleD0wLAorICAgICAgbnVtYmVyPTEsIHR5cGU9MTEsIGNwcF90eXBlPTEwLCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9Tm9uZSwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgICBfZGVzY3JpcHRvci5GaWVsZERlc2NyaXB0b3IoCisgICAgICBuYW1lPSdtZXNzYWdlJywgZnVsbF9uYW1lPSdyb3V0ZWd1aWRlLlJvdXRlTm90ZS5tZXNzYWdlJywgaW5kZXg9MSwKKyAgICAgIG51bWJlcj0yLCB0eXBlPTksIGNwcF90eXBlPTksIGxhYmVsPTEsCisgICAgICBoYXNfZGVmYXVsdF92YWx1ZT1GYWxzZSwgZGVmYXVsdF92YWx1ZT1fYigiIikuZGVjb2RlKCd1dGYtOCcpLAorICAgICAgbWVzc2FnZV90eXBlPU5vbmUsIGVudW1fdHlwZT1Ob25lLCBjb250YWluaW5nX3R5cGU9Tm9uZSwKKyAgICAgIGlzX2V4dGVuc2lvbj1GYWxzZSwgZXh0ZW5zaW9uX3Njb3BlPU5vbmUsCisgICAgICBvcHRpb25zPU5vbmUpLAorICBdLAorICBleHRlbnNpb25zPVsKKyAgXSwKKyAgbmVzdGVkX3R5cGVzPVtdLAorICBlbnVtX3R5cGVzPVsKKyAgXSwKKyAgb3B0aW9ucz1Ob25lLAorICBpc19leHRlbmRhYmxlPUZhbHNlLAorICBzeW50YXg9J3Byb3RvMycsCisgIGV4dGVuc2lvbl9yYW5nZXM9W10sCisgIG9uZW9mcz1bCisgIF0sCisgIHNlcmlhbGl6ZWRfc3RhcnQ9MjE2LAorICBzZXJpYWxpemVkX2VuZD0yODEsCispCisKKworX1JPVVRFU1VNTUFSWSA9IF9kZXNjcmlwdG9yLkRlc2NyaXB0b3IoCisgIG5hbWU9J1JvdXRlU3VtbWFyeScsCisgIGZ1bGxfbmFtZT0ncm91dGVndWlkZS5Sb3V0ZVN1bW1hcnknLAorICBmaWxlbmFtZT1Ob25lLAorICBmaWxlPURFU0NSSVBUT1IsCisgIGNvbnRhaW5pbmdfdHlwZT1Ob25lLAorICBmaWVsZHM9WworICAgIF9kZXNjcmlwdG9yLkZpZWxkRGVzY3JpcHRvcigKKyAgICAgIG5hbWU9J3BvaW50X2NvdW50JywgZnVsbF9uYW1lPSdyb3V0ZWd1aWRlLlJvdXRlU3VtbWFyeS5wb2ludF9jb3VudCcsIGluZGV4PTAsCisgICAgICBudW1iZXI9MSwgdHlwZT01LCBjcHBfdHlwZT0xLCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9MCwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgICBfZGVzY3JpcHRvci5GaWVsZERlc2NyaXB0b3IoCisgICAgICBuYW1lPSdmZWF0dXJlX2NvdW50JywgZnVsbF9uYW1lPSdyb3V0ZWd1aWRlLlJvdXRlU3VtbWFyeS5mZWF0dXJlX2NvdW50JywgaW5kZXg9MSwKKyAgICAgIG51bWJlcj0yLCB0eXBlPTUsIGNwcF90eXBlPTEsIGxhYmVsPTEsCisgICAgICBoYXNfZGVmYXVsdF92YWx1ZT1GYWxzZSwgZGVmYXVsdF92YWx1ZT0wLAorICAgICAgbWVzc2FnZV90eXBlPU5vbmUsIGVudW1fdHlwZT1Ob25lLCBjb250YWluaW5nX3R5cGU9Tm9uZSwKKyAgICAgIGlzX2V4dGVuc2lvbj1GYWxzZSwgZXh0ZW5zaW9uX3Njb3BlPU5vbmUsCisgICAgICBvcHRpb25zPU5vbmUpLAorICAgIF9kZXNjcmlwdG9yLkZpZWxkRGVzY3JpcHRvcigKKyAgICAgIG5hbWU9J2Rpc3RhbmNlJywgZnVsbF9uYW1lPSdyb3V0ZWd1aWRlLlJvdXRlU3VtbWFyeS5kaXN0YW5jZScsIGluZGV4PTIsCisgICAgICBudW1iZXI9MywgdHlwZT01LCBjcHBfdHlwZT0xLCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9MCwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgICBfZGVzY3JpcHRvci5GaWVsZERlc2NyaXB0b3IoCisgICAgICBuYW1lPSdlbGFwc2VkX3RpbWUnLCBmdWxsX25hbWU9J3JvdXRlZ3VpZGUuUm91dGVTdW1tYXJ5LmVsYXBzZWRfdGltZScsIGluZGV4PTMsCisgICAgICBudW1iZXI9NCwgdHlwZT01LCBjcHBfdHlwZT0xLCBsYWJlbD0xLAorICAgICAgaGFzX2RlZmF1bHRfdmFsdWU9RmFsc2UsIGRlZmF1bHRfdmFsdWU9MCwKKyAgICAgIG1lc3NhZ2VfdHlwZT1Ob25lLCBlbnVtX3R5cGU9Tm9uZSwgY29udGFpbmluZ190eXBlPU5vbmUsCisgICAgICBpc19leHRlbnNpb249RmFsc2UsIGV4dGVuc2lvbl9zY29wZT1Ob25lLAorICAgICAgb3B0aW9ucz1Ob25lKSwKKyAgXSwKKyAgZXh0ZW5zaW9ucz1bCisgIF0sCisgIG5lc3RlZF90eXBlcz1bXSwKKyAgZW51bV90eXBlcz1bCisgIF0sCisgIG9wdGlvbnM9Tm9uZSwKKyAgaXNfZXh0ZW5kYWJsZT1GYWxzZSwKKyAgc3ludGF4PSdwcm90bzMnLAorICBleHRlbnNpb25fcmFuZ2VzPVtdLAorICBvbmVvZnM9WworICBdLAorICBzZXJpYWxpemVkX3N0YXJ0PTI4MywKKyAgc2VyaWFsaXplZF9lbmQ9MzgxLAorKQorCitfUkVDVEFOR0xFLmZpZWxkc19ieV9uYW1lWydsbyddLm1lc3NhZ2VfdHlwZSA9IF9QT0lOVAorX1JFQ1RBTkdMRS5maWVsZHNfYnlfbmFtZVsnaGknXS5tZXNzYWdlX3R5cGUgPSBfUE9JTlQKK19GRUFUVVJFLmZpZWxkc19ieV9uYW1lWydsb2NhdGlvbiddLm1lc3NhZ2VfdHlwZSA9IF9QT0lOVAorX1JPVVRFTk9URS5maWVsZHNfYnlfbmFtZVsnbG9jYXRpb24nXS5tZXNzYWdlX3R5cGUgPSBfUE9JTlQKK0RFU0NSSVBUT1IubWVzc2FnZV90eXBlc19ieV9uYW1lWydQb2ludCddID0gX1BPSU5UCitERVNDUklQVE9SLm1lc3NhZ2VfdHlwZXNfYnlfbmFtZVsnUmVjdGFuZ2xlJ10gPSBfUkVDVEFOR0xFCitERVNDUklQVE9SLm1lc3NhZ2VfdHlwZXNfYnlfbmFtZVsnRmVhdHVyZSddID0gX0ZFQVRVUkUKK0RFU0NSSVBUT1IubWVzc2FnZV90eXBlc19ieV9uYW1lWydSb3V0ZU5vdGUnXSA9IF9ST1VURU5PVEUKK0RFU0NSSVBUT1IubWVzc2FnZV90eXBlc19ieV9uYW1lWydSb3V0ZVN1bW1hcnknXSA9IF9ST1VURVNVTU1BUlkKKworUG9pbnQgPSBfcmVmbGVjdGlvbi5HZW5lcmF0ZWRQcm90b2NvbE1lc3NhZ2VUeXBlKCdQb2ludCcsIChfbWVzc2FnZS5NZXNzYWdlLCksIGRpY3QoCisgIERFU0NSSVBUT1IgPSBfUE9JTlQsCisgIF9fbW9kdWxlX18gPSAncm91dGVfZ3VpZGVfcGIyJworICAjIEBAcHJvdG9jX2luc2VydGlvbl9wb2ludChjbGFzc19zY29wZTpyb3V0ZWd1aWRlLlBvaW50KQorICApKQorX3N5bV9kYi5SZWdpc3Rlck1lc3NhZ2UoUG9pbnQpCisKK1JlY3RhbmdsZSA9IF9yZWZsZWN0aW9uLkdlbmVyYXRlZFByb3RvY29sTWVzc2FnZVR5cGUoJ1JlY3RhbmdsZScsIChfbWVzc2FnZS5NZXNzYWdlLCksIGRpY3QoCisgIERFU0NSSVBUT1IgPSBfUkVDVEFOR0xFLAorICBfX21vZHVsZV9fID0gJ3JvdXRlX2d1aWRlX3BiMicKKyAgIyBAQHByb3RvY19pbnNlcnRpb25fcG9pbnQoY2xhc3Nfc2NvcGU6cm91dGVndWlkZS5SZWN0YW5nbGUpCisgICkpCitfc3ltX2RiLlJlZ2lzdGVyTWVzc2FnZShSZWN0YW5nbGUpCisKK0ZlYXR1cmUgPSBfcmVmbGVjdGlvbi5HZW5lcmF0ZWRQcm90b2NvbE1lc3NhZ2VUeXBlKCdGZWF0dXJlJywgKF9tZXNzYWdlLk1lc3NhZ2UsKSwgZGljdCgKKyAgREVTQ1JJUFRPUiA9IF9GRUFUVVJFLAorICBfX21vZHVsZV9fID0gJ3JvdXRlX2d1aWRlX3BiMicKKyAgIyBAQHByb3RvY19pbnNlcnRpb25fcG9pbnQoY2xhc3Nfc2NvcGU6cm91dGVndWlkZS5GZWF0dXJlKQorICApKQorX3N5bV9kYi5SZWdpc3Rlck1lc3NhZ2UoRmVhdHVyZSkKKworUm91dGVOb3RlID0gX3JlZmxlY3Rpb24uR2VuZXJhdGVkUHJvdG9jb2xNZXNzYWdlVHlwZSgnUm91dGVOb3RlJywgKF9tZXNzYWdlLk1lc3NhZ2UsKSwgZGljdCgKKyAgREVTQ1JJUFRPUiA9IF9ST1VURU5PVEUsCisgIF9fbW9kdWxlX18gPSAncm91dGVfZ3VpZGVfcGIyJworICAjIEBAcHJvdG9jX2luc2VydGlvbl9wb2ludChjbGFzc19zY29wZTpyb3V0ZWd1aWRlLlJvdXRlTm90ZSkKKyAgKSkKK19zeW1fZGIuUmVnaXN0ZXJNZXNzYWdlKFJvdXRlTm90ZSkKKworUm91dGVTdW1tYXJ5ID0gX3JlZmxlY3Rpb24uR2VuZXJhdGVkUHJvdG9jb2xNZXNzYWdlVHlwZSgnUm91dGVTdW1tYXJ5JywgKF9tZXNzYWdlLk1lc3NhZ2UsKSwgZGljdCgKKyAgREVTQ1JJUFRPUiA9IF9ST1VURVNVTU1BUlksCisgIF9fbW9kdWxlX18gPSAncm91dGVfZ3VpZGVfcGIyJworICAjIEBAcHJvdG9jX2luc2VydGlvbl9wb2ludChjbGFzc19zY29wZTpyb3V0ZWd1aWRlLlJvdXRlU3VtbWFyeSkKKyAgKSkKK19zeW1fZGIuUmVnaXN0ZXJNZXNzYWdlKFJvdXRlU3VtbWFyeSkKKworCitERVNDUklQVE9SLmhhc19vcHRpb25zID0gVHJ1ZQorREVTQ1JJUFRPUi5fb3B0aW9ucyA9IF9kZXNjcmlwdG9yLl9QYXJzZU9wdGlvbnMoZGVzY3JpcHRvcl9wYjIuRmlsZU9wdGlvbnMoKSwgX2IoJ1xuXDAzM2lvLmdycGMuZXhhbXBsZXMucm91dGVndWlkZUJcMDE3Um91dGVHdWlkZVByb3RvUFwwMDFcMjQyXDAwMlwwMDNSVEcnKSkKK2ltcG9ydCBncnBjCitmcm9tIGdycGMuYmV0YSBpbXBvcnQgaW1wbGVtZW50YXRpb25zIGFzIGJldGFfaW1wbGVtZW50YXRpb25zCitmcm9tIGdycGMuYmV0YSBpbXBvcnQgaW50ZXJmYWNlcyBhcyBiZXRhX2ludGVyZmFjZXMKK2Zyb20gZ3JwYy5mcmFtZXdvcmsuY29tbW9uIGltcG9ydCBjYXJkaW5hbGl0eQorZnJvbSBncnBjLmZyYW1ld29yay5pbnRlcmZhY2VzLmZhY2UgaW1wb3J0IHV0aWxpdGllcyBhcyBmYWNlX3V0aWxpdGllcworCisKK2NsYXNzIFJvdXRlR3VpZGVTdHViKG9iamVjdCk6CisgICIiIkludGVyZmFjZSBleHBvcnRlZCBieSB0aGUgc2VydmVyLgorICAiIiIKKworICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5lbCk6CisgICAgIiIiQ29uc3RydWN0b3IuCisKKyAgICBBcmdzOgorICAgICAgY2hhbm5lbDogQSBncnBjLkNoYW5uZWwuCisgICAgIiIiCisgICAgc2VsZi5HZXRGZWF0dXJlID0gY2hhbm5lbC51bmFyeV91bmFyeSgKKyAgICAgICAgJy9yb3V0ZWd1aWRlLlJvdXRlR3VpZGUvR2V0RmVhdHVyZScsCisgICAgICAgIHJlcXVlc3Rfc2VyaWFsaXplcj1Qb2ludC5TZXJpYWxpemVUb1N0cmluZywKKyAgICAgICAgcmVzcG9uc2VfZGVzZXJpYWxpemVyPUZlYXR1cmUuRnJvbVN0cmluZywKKyAgICAgICAgKQorICAgIHNlbGYuTGlzdEZlYXR1cmVzID0gY2hhbm5lbC51bmFyeV9zdHJlYW0oCisgICAgICAgICcvcm91dGVndWlkZS5Sb3V0ZUd1aWRlL0xpc3RGZWF0dXJlcycsCisgICAgICAgIHJlcXVlc3Rfc2VyaWFsaXplcj1SZWN0YW5nbGUuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgICAgIHJlc3BvbnNlX2Rlc2VyaWFsaXplcj1GZWF0dXJlLkZyb21TdHJpbmcsCisgICAgICAgICkKKyAgICBzZWxmLlJlY29yZFJvdXRlID0gY2hhbm5lbC5zdHJlYW1fdW5hcnkoCisgICAgICAgICcvcm91dGVndWlkZS5Sb3V0ZUd1aWRlL1JlY29yZFJvdXRlJywKKyAgICAgICAgcmVxdWVzdF9zZXJpYWxpemVyPVBvaW50LlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICAgICByZXNwb25zZV9kZXNlcmlhbGl6ZXI9Um91dGVTdW1tYXJ5LkZyb21TdHJpbmcsCisgICAgICAgICkKKyAgICBzZWxmLlJvdXRlQ2hhdCA9IGNoYW5uZWwuc3RyZWFtX3N0cmVhbSgKKyAgICAgICAgJy9yb3V0ZWd1aWRlLlJvdXRlR3VpZGUvUm91dGVDaGF0JywKKyAgICAgICAgcmVxdWVzdF9zZXJpYWxpemVyPVJvdXRlTm90ZS5TZXJpYWxpemVUb1N0cmluZywKKyAgICAgICAgcmVzcG9uc2VfZGVzZXJpYWxpemVyPVJvdXRlTm90ZS5Gcm9tU3RyaW5nLAorICAgICAgICApCisKKworY2xhc3MgUm91dGVHdWlkZVNlcnZpY2VyKG9iamVjdCk6CisgICIiIkludGVyZmFjZSBleHBvcnRlZCBieSB0aGUgc2VydmVyLgorICAiIiIKKworICBkZWYgR2V0RmVhdHVyZShzZWxmLCByZXF1ZXN0LCBjb250ZXh0KToKKyAgICAiIiJBIHNpbXBsZSBSUEMuCisKKyAgICBPYnRhaW5zIHRoZSBmZWF0dXJlIGF0IGEgZ2l2ZW4gcG9zaXRpb24uCisKKyAgICBBIGZlYXR1cmUgd2l0aCBhbiBlbXB0eSBuYW1lIGlzIHJldHVybmVkIGlmIHRoZXJlJ3Mgbm8gZmVhdHVyZSBhdCB0aGUgZ2l2ZW4KKyAgICBwb3NpdGlvbi4KKyAgICAiIiIKKyAgICBjb250ZXh0LnNldF9jb2RlKGdycGMuU3RhdHVzQ29kZS5VTklNUExFTUVOVEVEKQorICAgIGNvbnRleHQuc2V0X2RldGFpbHMoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQhJykKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkIScpCisKKyAgZGVmIExpc3RGZWF0dXJlcyhzZWxmLCByZXF1ZXN0LCBjb250ZXh0KToKKyAgICAiIiJBIHNlcnZlci10by1jbGllbnQgc3RyZWFtaW5nIFJQQy4KKworICAgIE9idGFpbnMgdGhlIEZlYXR1cmVzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGdpdmVuIFJlY3RhbmdsZS4gIFJlc3VsdHMgYXJlCisgICAgc3RyZWFtZWQgcmF0aGVyIHRoYW4gcmV0dXJuZWQgYXQgb25jZSAoZS5nLiBpbiBhIHJlc3BvbnNlIG1lc3NhZ2Ugd2l0aCBhCisgICAgcmVwZWF0ZWQgZmllbGQpLCBhcyB0aGUgcmVjdGFuZ2xlIG1heSBjb3ZlciBhIGxhcmdlIGFyZWEgYW5kIGNvbnRhaW4gYQorICAgIGh1Z2UgbnVtYmVyIG9mIGZlYXR1cmVzLgorICAgICIiIgorICAgIGNvbnRleHQuc2V0X2NvZGUoZ3JwYy5TdGF0dXNDb2RlLlVOSU1QTEVNRU5URUQpCisgICAgY29udGV4dC5zZXRfZGV0YWlscygnTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCEnKQorICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQhJykKKworICBkZWYgUmVjb3JkUm91dGUoc2VsZiwgcmVxdWVzdF9pdGVyYXRvciwgY29udGV4dCk6CisgICAgIiIiQSBjbGllbnQtdG8tc2VydmVyIHN0cmVhbWluZyBSUEMuCisKKyAgICBBY2NlcHRzIGEgc3RyZWFtIG9mIFBvaW50cyBvbiBhIHJvdXRlIGJlaW5nIHRyYXZlcnNlZCwgcmV0dXJuaW5nIGEKKyAgICBSb3V0ZVN1bW1hcnkgd2hlbiB0cmF2ZXJzYWwgaXMgY29tcGxldGVkLgorICAgICIiIgorICAgIGNvbnRleHQuc2V0X2NvZGUoZ3JwYy5TdGF0dXNDb2RlLlVOSU1QTEVNRU5URUQpCisgICAgY29udGV4dC5zZXRfZGV0YWlscygnTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCEnKQorICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQhJykKKworICBkZWYgUm91dGVDaGF0KHNlbGYsIHJlcXVlc3RfaXRlcmF0b3IsIGNvbnRleHQpOgorICAgICIiIkEgQmlkaXJlY3Rpb25hbCBzdHJlYW1pbmcgUlBDLgorCisgICAgQWNjZXB0cyBhIHN0cmVhbSBvZiBSb3V0ZU5vdGVzIHNlbnQgd2hpbGUgYSByb3V0ZSBpcyBiZWluZyB0cmF2ZXJzZWQsCisgICAgd2hpbGUgcmVjZWl2aW5nIG90aGVyIFJvdXRlTm90ZXMgKGUuZy4gZnJvbSBvdGhlciB1c2VycykuCisgICAgIiIiCisgICAgY29udGV4dC5zZXRfY29kZShncnBjLlN0YXR1c0NvZGUuVU5JTVBMRU1FTlRFRCkKKyAgICBjb250ZXh0LnNldF9kZXRhaWxzKCdNZXRob2Qgbm90IGltcGxlbWVudGVkIScpCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCEnKQorCisKK2RlZiBhZGRfUm91dGVHdWlkZVNlcnZpY2VyX3RvX3NlcnZlcihzZXJ2aWNlciwgc2VydmVyKToKKyAgcnBjX21ldGhvZF9oYW5kbGVycyA9IHsKKyAgICAgICdHZXRGZWF0dXJlJzogZ3JwYy51bmFyeV91bmFyeV9ycGNfbWV0aG9kX2hhbmRsZXIoCisgICAgICAgICAgc2VydmljZXIuR2V0RmVhdHVyZSwKKyAgICAgICAgICByZXF1ZXN0X2Rlc2VyaWFsaXplcj1Qb2ludC5Gcm9tU3RyaW5nLAorICAgICAgICAgIHJlc3BvbnNlX3NlcmlhbGl6ZXI9RmVhdHVyZS5TZXJpYWxpemVUb1N0cmluZywKKyAgICAgICksCisgICAgICAnTGlzdEZlYXR1cmVzJzogZ3JwYy51bmFyeV9zdHJlYW1fcnBjX21ldGhvZF9oYW5kbGVyKAorICAgICAgICAgIHNlcnZpY2VyLkxpc3RGZWF0dXJlcywKKyAgICAgICAgICByZXF1ZXN0X2Rlc2VyaWFsaXplcj1SZWN0YW5nbGUuRnJvbVN0cmluZywKKyAgICAgICAgICByZXNwb25zZV9zZXJpYWxpemVyPUZlYXR1cmUuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgICApLAorICAgICAgJ1JlY29yZFJvdXRlJzogZ3JwYy5zdHJlYW1fdW5hcnlfcnBjX21ldGhvZF9oYW5kbGVyKAorICAgICAgICAgIHNlcnZpY2VyLlJlY29yZFJvdXRlLAorICAgICAgICAgIHJlcXVlc3RfZGVzZXJpYWxpemVyPVBvaW50LkZyb21TdHJpbmcsCisgICAgICAgICAgcmVzcG9uc2Vfc2VyaWFsaXplcj1Sb3V0ZVN1bW1hcnkuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgICApLAorICAgICAgJ1JvdXRlQ2hhdCc6IGdycGMuc3RyZWFtX3N0cmVhbV9ycGNfbWV0aG9kX2hhbmRsZXIoCisgICAgICAgICAgc2VydmljZXIuUm91dGVDaGF0LAorICAgICAgICAgIHJlcXVlc3RfZGVzZXJpYWxpemVyPVJvdXRlTm90ZS5Gcm9tU3RyaW5nLAorICAgICAgICAgIHJlc3BvbnNlX3NlcmlhbGl6ZXI9Um91dGVOb3RlLlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICAgKSwKKyAgfQorICBnZW5lcmljX2hhbmRsZXIgPSBncnBjLm1ldGhvZF9oYW5kbGVyc19nZW5lcmljX2hhbmRsZXIoCisgICAgICAncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgcnBjX21ldGhvZF9oYW5kbGVycykKKyAgc2VydmVyLmFkZF9nZW5lcmljX3JwY19oYW5kbGVycygoZ2VuZXJpY19oYW5kbGVyLCkpCisKKworY2xhc3MgQmV0YVJvdXRlR3VpZGVTZXJ2aWNlcihvYmplY3QpOgorICAiIiJJbnRlcmZhY2UgZXhwb3J0ZWQgYnkgdGhlIHNlcnZlci4KKyAgIiIiCisgIGRlZiBHZXRGZWF0dXJlKHNlbGYsIHJlcXVlc3QsIGNvbnRleHQpOgorICAgICIiIkEgc2ltcGxlIFJQQy4KKworICAgIE9idGFpbnMgdGhlIGZlYXR1cmUgYXQgYSBnaXZlbiBwb3NpdGlvbi4KKworICAgIEEgZmVhdHVyZSB3aXRoIGFuIGVtcHR5IG5hbWUgaXMgcmV0dXJuZWQgaWYgdGhlcmUncyBubyBmZWF0dXJlIGF0IHRoZSBnaXZlbgorICAgIHBvc2l0aW9uLgorICAgICIiIgorICAgIGNvbnRleHQuY29kZShiZXRhX2ludGVyZmFjZXMuU3RhdHVzQ29kZS5VTklNUExFTUVOVEVEKQorICBkZWYgTGlzdEZlYXR1cmVzKHNlbGYsIHJlcXVlc3QsIGNvbnRleHQpOgorICAgICIiIkEgc2VydmVyLXRvLWNsaWVudCBzdHJlYW1pbmcgUlBDLgorCisgICAgT2J0YWlucyB0aGUgRmVhdHVyZXMgYXZhaWxhYmxlIHdpdGhpbiB0aGUgZ2l2ZW4gUmVjdGFuZ2xlLiAgUmVzdWx0cyBhcmUKKyAgICBzdHJlYW1lZCByYXRoZXIgdGhhbiByZXR1cm5lZCBhdCBvbmNlIChlLmcuIGluIGEgcmVzcG9uc2UgbWVzc2FnZSB3aXRoIGEKKyAgICByZXBlYXRlZCBmaWVsZCksIGFzIHRoZSByZWN0YW5nbGUgbWF5IGNvdmVyIGEgbGFyZ2UgYXJlYSBhbmQgY29udGFpbiBhCisgICAgaHVnZSBudW1iZXIgb2YgZmVhdHVyZXMuCisgICAgIiIiCisgICAgY29udGV4dC5jb2RlKGJldGFfaW50ZXJmYWNlcy5TdGF0dXNDb2RlLlVOSU1QTEVNRU5URUQpCisgIGRlZiBSZWNvcmRSb3V0ZShzZWxmLCByZXF1ZXN0X2l0ZXJhdG9yLCBjb250ZXh0KToKKyAgICAiIiJBIGNsaWVudC10by1zZXJ2ZXIgc3RyZWFtaW5nIFJQQy4KKworICAgIEFjY2VwdHMgYSBzdHJlYW0gb2YgUG9pbnRzIG9uIGEgcm91dGUgYmVpbmcgdHJhdmVyc2VkLCByZXR1cm5pbmcgYQorICAgIFJvdXRlU3VtbWFyeSB3aGVuIHRyYXZlcnNhbCBpcyBjb21wbGV0ZWQuCisgICAgIiIiCisgICAgY29udGV4dC5jb2RlKGJldGFfaW50ZXJmYWNlcy5TdGF0dXNDb2RlLlVOSU1QTEVNRU5URUQpCisgIGRlZiBSb3V0ZUNoYXQoc2VsZiwgcmVxdWVzdF9pdGVyYXRvciwgY29udGV4dCk6CisgICAgIiIiQSBCaWRpcmVjdGlvbmFsIHN0cmVhbWluZyBSUEMuCisKKyAgICBBY2NlcHRzIGEgc3RyZWFtIG9mIFJvdXRlTm90ZXMgc2VudCB3aGlsZSBhIHJvdXRlIGlzIGJlaW5nIHRyYXZlcnNlZCwKKyAgICB3aGlsZSByZWNlaXZpbmcgb3RoZXIgUm91dGVOb3RlcyAoZS5nLiBmcm9tIG90aGVyIHVzZXJzKS4KKyAgICAiIiIKKyAgICBjb250ZXh0LmNvZGUoYmV0YV9pbnRlcmZhY2VzLlN0YXR1c0NvZGUuVU5JTVBMRU1FTlRFRCkKKworCitjbGFzcyBCZXRhUm91dGVHdWlkZVN0dWIob2JqZWN0KToKKyAgIiIiSW50ZXJmYWNlIGV4cG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCisgICIiIgorICBkZWYgR2V0RmVhdHVyZShzZWxmLCByZXF1ZXN0LCB0aW1lb3V0LCBtZXRhZGF0YT1Ob25lLCB3aXRoX2NhbGw9RmFsc2UsIHByb3RvY29sX29wdGlvbnM9Tm9uZSk6CisgICAgIiIiQSBzaW1wbGUgUlBDLgorCisgICAgT2J0YWlucyB0aGUgZmVhdHVyZSBhdCBhIGdpdmVuIHBvc2l0aW9uLgorCisgICAgQSBmZWF0dXJlIHdpdGggYW4gZW1wdHkgbmFtZSBpcyByZXR1cm5lZCBpZiB0aGVyZSdzIG5vIGZlYXR1cmUgYXQgdGhlIGdpdmVuCisgICAgcG9zaXRpb24uCisgICAgIiIiCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisgIEdldEZlYXR1cmUuZnV0dXJlID0gTm9uZQorICBkZWYgTGlzdEZlYXR1cmVzKHNlbGYsIHJlcXVlc3QsIHRpbWVvdXQsIG1ldGFkYXRhPU5vbmUsIHdpdGhfY2FsbD1GYWxzZSwgcHJvdG9jb2xfb3B0aW9ucz1Ob25lKToKKyAgICAiIiJBIHNlcnZlci10by1jbGllbnQgc3RyZWFtaW5nIFJQQy4KKworICAgIE9idGFpbnMgdGhlIEZlYXR1cmVzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGdpdmVuIFJlY3RhbmdsZS4gIFJlc3VsdHMgYXJlCisgICAgc3RyZWFtZWQgcmF0aGVyIHRoYW4gcmV0dXJuZWQgYXQgb25jZSAoZS5nLiBpbiBhIHJlc3BvbnNlIG1lc3NhZ2Ugd2l0aCBhCisgICAgcmVwZWF0ZWQgZmllbGQpLCBhcyB0aGUgcmVjdGFuZ2xlIG1heSBjb3ZlciBhIGxhcmdlIGFyZWEgYW5kIGNvbnRhaW4gYQorICAgIGh1Z2UgbnVtYmVyIG9mIGZlYXR1cmVzLgorICAgICIiIgorICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorICBkZWYgUmVjb3JkUm91dGUoc2VsZiwgcmVxdWVzdF9pdGVyYXRvciwgdGltZW91dCwgbWV0YWRhdGE9Tm9uZSwgd2l0aF9jYWxsPUZhbHNlLCBwcm90b2NvbF9vcHRpb25zPU5vbmUpOgorICAgICIiIkEgY2xpZW50LXRvLXNlcnZlciBzdHJlYW1pbmcgUlBDLgorCisgICAgQWNjZXB0cyBhIHN0cmVhbSBvZiBQb2ludHMgb24gYSByb3V0ZSBiZWluZyB0cmF2ZXJzZWQsIHJldHVybmluZyBhCisgICAgUm91dGVTdW1tYXJ5IHdoZW4gdHJhdmVyc2FsIGlzIGNvbXBsZXRlZC4KKyAgICAiIiIKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKyAgUmVjb3JkUm91dGUuZnV0dXJlID0gTm9uZQorICBkZWYgUm91dGVDaGF0KHNlbGYsIHJlcXVlc3RfaXRlcmF0b3IsIHRpbWVvdXQsIG1ldGFkYXRhPU5vbmUsIHdpdGhfY2FsbD1GYWxzZSwgcHJvdG9jb2xfb3B0aW9ucz1Ob25lKToKKyAgICAiIiJBIEJpZGlyZWN0aW9uYWwgc3RyZWFtaW5nIFJQQy4KKworICAgIEFjY2VwdHMgYSBzdHJlYW0gb2YgUm91dGVOb3RlcyBzZW50IHdoaWxlIGEgcm91dGUgaXMgYmVpbmcgdHJhdmVyc2VkLAorICAgIHdoaWxlIHJlY2VpdmluZyBvdGhlciBSb3V0ZU5vdGVzIChlLmcuIGZyb20gb3RoZXIgdXNlcnMpLgorICAgICIiIgorICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisKK2RlZiBiZXRhX2NyZWF0ZV9Sb3V0ZUd1aWRlX3NlcnZlcihzZXJ2aWNlciwgcG9vbD1Ob25lLCBwb29sX3NpemU9Tm9uZSwgZGVmYXVsdF90aW1lb3V0PU5vbmUsIG1heGltdW1fdGltZW91dD1Ob25lKToKKyAgcmVxdWVzdF9kZXNlcmlhbGl6ZXJzID0geworICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ0dldEZlYXR1cmUnKTogUG9pbnQuRnJvbVN0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdMaXN0RmVhdHVyZXMnKTogUmVjdGFuZ2xlLkZyb21TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUmVjb3JkUm91dGUnKTogUG9pbnQuRnJvbVN0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSb3V0ZUNoYXQnKTogUm91dGVOb3RlLkZyb21TdHJpbmcsCisgIH0KKyAgcmVzcG9uc2Vfc2VyaWFsaXplcnMgPSB7CisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnR2V0RmVhdHVyZScpOiBGZWF0dXJlLlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ0xpc3RGZWF0dXJlcycpOiBGZWF0dXJlLlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ1JlY29yZFJvdXRlJyk6IFJvdXRlU3VtbWFyeS5TZXJpYWxpemVUb1N0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSb3V0ZUNoYXQnKTogUm91dGVOb3RlLlNlcmlhbGl6ZVRvU3RyaW5nLAorICB9CisgIG1ldGhvZF9pbXBsZW1lbnRhdGlvbnMgPSB7CisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnR2V0RmVhdHVyZScpOiBmYWNlX3V0aWxpdGllcy51bmFyeV91bmFyeV9pbmxpbmUoc2VydmljZXIuR2V0RmVhdHVyZSksCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnTGlzdEZlYXR1cmVzJyk6IGZhY2VfdXRpbGl0aWVzLnVuYXJ5X3N0cmVhbV9pbmxpbmUoc2VydmljZXIuTGlzdEZlYXR1cmVzKSwKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSZWNvcmRSb3V0ZScpOiBmYWNlX3V0aWxpdGllcy5zdHJlYW1fdW5hcnlfaW5saW5lKHNlcnZpY2VyLlJlY29yZFJvdXRlKSwKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSb3V0ZUNoYXQnKTogZmFjZV91dGlsaXRpZXMuc3RyZWFtX3N0cmVhbV9pbmxpbmUoc2VydmljZXIuUm91dGVDaGF0KSwKKyAgfQorICBzZXJ2ZXJfb3B0aW9ucyA9IGJldGFfaW1wbGVtZW50YXRpb25zLnNlcnZlcl9vcHRpb25zKHJlcXVlc3RfZGVzZXJpYWxpemVycz1yZXF1ZXN0X2Rlc2VyaWFsaXplcnMsIHJlc3BvbnNlX3NlcmlhbGl6ZXJzPXJlc3BvbnNlX3NlcmlhbGl6ZXJzLCB0aHJlYWRfcG9vbD1wb29sLCB0aHJlYWRfcG9vbF9zaXplPXBvb2xfc2l6ZSwgZGVmYXVsdF90aW1lb3V0PWRlZmF1bHRfdGltZW91dCwgbWF4aW11bV90aW1lb3V0PW1heGltdW1fdGltZW91dCkKKyAgcmV0dXJuIGJldGFfaW1wbGVtZW50YXRpb25zLnNlcnZlcihtZXRob2RfaW1wbGVtZW50YXRpb25zLCBvcHRpb25zPXNlcnZlcl9vcHRpb25zKQorCisKK2RlZiBiZXRhX2NyZWF0ZV9Sb3V0ZUd1aWRlX3N0dWIoY2hhbm5lbCwgaG9zdD1Ob25lLCBtZXRhZGF0YV90cmFuc2Zvcm1lcj1Ob25lLCBwb29sPU5vbmUsIHBvb2xfc2l6ZT1Ob25lKToKKyAgcmVxdWVzdF9zZXJpYWxpemVycyA9IHsKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdHZXRGZWF0dXJlJyk6IFBvaW50LlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ0xpc3RGZWF0dXJlcycpOiBSZWN0YW5nbGUuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUmVjb3JkUm91dGUnKTogUG9pbnQuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUm91dGVDaGF0Jyk6IFJvdXRlTm90ZS5TZXJpYWxpemVUb1N0cmluZywKKyAgfQorICByZXNwb25zZV9kZXNlcmlhbGl6ZXJzID0geworICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ0dldEZlYXR1cmUnKTogRmVhdHVyZS5Gcm9tU3RyaW5nLAorICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ0xpc3RGZWF0dXJlcycpOiBGZWF0dXJlLkZyb21TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUmVjb3JkUm91dGUnKTogUm91dGVTdW1tYXJ5LkZyb21TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUm91dGVDaGF0Jyk6IFJvdXRlTm90ZS5Gcm9tU3RyaW5nLAorICB9CisgIGNhcmRpbmFsaXRpZXMgPSB7CisgICAgJ0dldEZlYXR1cmUnOiBjYXJkaW5hbGl0eS5DYXJkaW5hbGl0eS5VTkFSWV9VTkFSWSwKKyAgICAnTGlzdEZlYXR1cmVzJzogY2FyZGluYWxpdHkuQ2FyZGluYWxpdHkuVU5BUllfU1RSRUFNLAorICAgICdSZWNvcmRSb3V0ZSc6IGNhcmRpbmFsaXR5LkNhcmRpbmFsaXR5LlNUUkVBTV9VTkFSWSwKKyAgICAnUm91dGVDaGF0JzogY2FyZGluYWxpdHkuQ2FyZGluYWxpdHkuU1RSRUFNX1NUUkVBTSwKKyAgfQorICBzdHViX29wdGlvbnMgPSBiZXRhX2ltcGxlbWVudGF0aW9ucy5zdHViX29wdGlvbnMoaG9zdD1ob3N0LCBtZXRhZGF0YV90cmFuc2Zvcm1lcj1tZXRhZGF0YV90cmFuc2Zvcm1lciwgcmVxdWVzdF9zZXJpYWxpemVycz1yZXF1ZXN0X3NlcmlhbGl6ZXJzLCByZXNwb25zZV9kZXNlcmlhbGl6ZXJzPXJlc3BvbnNlX2Rlc2VyaWFsaXplcnMsIHRocmVhZF9wb29sPXBvb2wsIHRocmVhZF9wb29sX3NpemU9cG9vbF9zaXplKQorICByZXR1cm4gYmV0YV9pbXBsZW1lbnRhdGlvbnMuZHluYW1pY19zdHViKGNoYW5uZWwsICdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCBjYXJkaW5hbGl0aWVzLCBvcHRpb25zPXN0dWJfb3B0aW9ucykKKyMgQEBwcm90b2NfaW5zZXJ0aW9uX3BvaW50KG1vZHVsZV9zY29wZSkKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3BiL2dycGMvaGVhbHRoL3YxL2hlYWx0aF9zZXJ2aWNlcy5yYiBiL2V4YW1wbGVzL3B5dGhvbi9tdWx0aXBsZXgvcm91dGVfZ3VpZGVfcmVzb3VyY2VzLnB5CnNpbWlsYXJpdHkgaW5kZXggNjglCmNvcHkgZnJvbSBzcmMvcnVieS9wYi9ncnBjL2hlYWx0aC92MS9oZWFsdGhfc2VydmljZXMucmIKY29weSB0byBleGFtcGxlcy9weXRob24vbXVsdGlwbGV4L3JvdXRlX2d1aWRlX3Jlc291cmNlcy5weQppbmRleCA2OGEzOTU2Li4zMGM3NzExIDEwMDY0NAotLS0gYS9zcmMvcnVieS9wYi9ncnBjL2hlYWx0aC92MS9oZWFsdGhfc2VydmljZXMucmIKKysrIGIvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9yb3V0ZV9ndWlkZV9yZXNvdXJjZXMucHkKQEAgLTEsNiArMSwzIEBACi0jIEdlbmVyYXRlZCBieSB0aGUgcHJvdG9jb2wgYnVmZmVyIGNvbXBpbGVyLiAgRE8gTk9UIEVESVQhCi0jIFNvdXJjZTogZ3JwYy9oZWFsdGgvdjEvaGVhbHRoLnByb3RvIGZvciBwYWNrYWdlICdncnBjLmhlYWx0aC52MScKLSMgT3JpZ2luYWwgZmlsZSBjb21tZW50czoKICMgQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0yOSwyOCArMjYsMjggQEAKICMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMKIAotcmVxdWlyZSAnZ3JwYycKLXJlcXVpcmUgJ2dycGMvaGVhbHRoL3YxL2hlYWx0aCcKKyIiIkNvbW1vbiByZXNvdXJjZXMgdXNlZCBpbiB0aGUgZ1JQQyByb3V0ZSBndWlkZSBleGFtcGxlLiIiIgogCi1tb2R1bGUgR3JwYwotICBtb2R1bGUgSGVhbHRoCi0gICAgbW9kdWxlIFYxCi0gICAgICBtb2R1bGUgSGVhbHRoCi0gICAgICAgIGNsYXNzIFNlcnZpY2UKK2ltcG9ydCBqc29uCiAKLSAgICAgICAgICBpbmNsdWRlIEdSUEM6OkdlbmVyaWNTZXJ2aWNlCitpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCiAKLSAgICAgICAgICBzZWxmLm1hcnNoYWxfY2xhc3NfbWV0aG9kID0gOmVuY29kZQotICAgICAgICAgIHNlbGYudW5tYXJzaGFsX2NsYXNzX21ldGhvZCA9IDpkZWNvZGUKLSAgICAgICAgICBzZWxmLnNlcnZpY2VfbmFtZSA9ICdncnBjLmhlYWx0aC52MS5IZWFsdGgnCiAKLSAgICAgICAgICBycGMgOkNoZWNrLCBIZWFsdGhDaGVja1JlcXVlc3QsIEhlYWx0aENoZWNrUmVzcG9uc2UKLSAgICAgICAgZW5kCitkZWYgcmVhZF9yb3V0ZV9ndWlkZV9kYXRhYmFzZSgpOgorICAiIiJSZWFkcyB0aGUgcm91dGUgZ3VpZGUgZGF0YWJhc2UuCiAKLSAgICAgICAgU3R1YiA9IFNlcnZpY2UucnBjX3N0dWJfY2xhc3MKLSAgICAgIGVuZAotICAgIGVuZAotICBlbmQKLWVuZAorICBSZXR1cm5zOgorICAgIFRoZSBmdWxsIGNvbnRlbnRzIG9mIHRoZSByb3V0ZSBndWlkZSBkYXRhYmFzZSBhcyBhIHNlcXVlbmNlIG9mCisgICAgICByb3V0ZV9ndWlkZV9wYjIuRmVhdHVyZXMuCisgICIiIgorICBmZWF0dXJlX2xpc3QgPSBbXQorICB3aXRoIG9wZW4oInJvdXRlX2d1aWRlX2RiLmpzb24iKSBhcyByb3V0ZV9ndWlkZV9kYl9maWxlOgorICAgIGZvciBpdGVtIGluIGpzb24ubG9hZChyb3V0ZV9ndWlkZV9kYl9maWxlKToKKyAgICAgIGZlYXR1cmUgPSByb3V0ZV9ndWlkZV9wYjIuRmVhdHVyZSgKKyAgICAgICAgICBuYW1lPWl0ZW1bIm5hbWUiXSwKKyAgICAgICAgICBsb2NhdGlvbj1yb3V0ZV9ndWlkZV9wYjIuUG9pbnQoCisgICAgICAgICAgICAgIGxhdGl0dWRlPWl0ZW1bImxvY2F0aW9uIl1bImxhdGl0dWRlIl0sCisgICAgICAgICAgICAgIGxvbmdpdHVkZT1pdGVtWyJsb2NhdGlvbiJdWyJsb25naXR1ZGUiXSkpCisgICAgICBmZWF0dXJlX2xpc3QuYXBwZW5kKGZlYXR1cmUpCisgIHJldHVybiBmZWF0dXJlX2xpc3QKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3Rvb2xzL2Jpbi9ncnBjX3Rvb2xzX3J1YnlfcHJvdG9jLnJiIGIvZXhhbXBsZXMvcHl0aG9uL211bHRpcGxleC9ydW5fY29kZWdlbi5weQpzaW1pbGFyaXR5IGluZGV4IDc4JQpjb3B5IGZyb20gc3JjL3J1YnkvdG9vbHMvYmluL2dycGNfdG9vbHNfcnVieV9wcm90b2MucmIKY29weSB0byBleGFtcGxlcy9weXRob24vbXVsdGlwbGV4L3J1bl9jb2RlZ2VuLnB5CmluZGV4IDNhMmE1YjguLjc5MjJhMGYgMTAwNzU1Ci0tLSBhL3NyYy9ydWJ5L3Rvb2xzL2Jpbi9ncnBjX3Rvb2xzX3J1YnlfcHJvdG9jLnJiCisrKyBiL2V4YW1wbGVzL3B5dGhvbi9tdWx0aXBsZXgvcnVuX2NvZGVnZW4ucHkKQEAgLTEsNCArMSwzIEBACi0jIS91c3IvYmluL2VudiBydWJ5CiAjIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtMjgsMTQgKzI3LDI1IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1yZXF1aXJlICdyYmNvbmZpZycKKyIiIkdlbmVyYXRlcyBwcm90b2NvbCBtZXNzYWdlcyBhbmQgZ1JQQyBzdHVicy4iIiIKIAotcmVxdWlyZV9yZWxhdGl2ZSAnLi4vb3NfY2hlY2snCitmcm9tIGdycGMudG9vbHMgaW1wb3J0IHByb3RvYwogCi1wcm90b2NfbmFtZSA9ICdwcm90b2MnICsgUmJDb25maWc6OkNPTkZJR1snRVhFRVhUJ10KLQotcHJvdG9jX3BhdGggPSBGaWxlLmpvaW4oRmlsZS5kaXJuYW1lKF9fRklMRV9fKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJiQ29uZmlnOjpDT05GSUdbJ2hvc3RfY3B1J10gKyAnLScgKyBPUy5vc19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jX25hbWUpCi0KLWV4ZWMoWyBwcm90b2NfcGF0aCwgcHJvdG9jX3BhdGggXSwgKkFSR1YpCitwcm90b2MubWFpbigKKyAgICAoCisgICAgICAgICcnLAorICAgICAgICAnLUkuLi8uLi9wcm90b3MnLAorICAgICAgICAnLS1weXRob25fb3V0PS4nLAorICAgICAgICAnLS1ncnBjX3B5dGhvbl9vdXQ9LicsCisgICAgICAgICcuLi8uLi9wcm90b3MvaGVsbG93b3JsZC5wcm90bycsCisgICAgKQorKQorcHJvdG9jLm1haW4oCisgICAgKAorICAgICAgICAnJywKKyAgICAgICAgJy1JLi4vLi4vcHJvdG9zJywKKyAgICAgICAgJy0tcHl0aG9uX291dD0uJywKKyAgICAgICAgJy0tZ3JwY19weXRob25fb3V0PS4nLAorICAgICAgICAnLi4vLi4vcHJvdG9zL3JvdXRlX2d1aWRlLnByb3RvJywKKyAgICApCispCmRpZmYgLS1naXQgYS9leGFtcGxlcy9weXRob24vcm91dGVfZ3VpZGUvcm91dGVfZ3VpZGVfY2xpZW50LnB5IGIvZXhhbXBsZXMvcHl0aG9uL3JvdXRlX2d1aWRlL3JvdXRlX2d1aWRlX2NsaWVudC5weQppbmRleCBmZmNiZDA2Li44YTgwZWQ4IDEwMDY0NAotLS0gYS9leGFtcGxlcy9weXRob24vcm91dGVfZ3VpZGUvcm91dGVfZ3VpZGVfY2xpZW50LnB5CisrKyBiL2V4YW1wbGVzL3B5dGhvbi9yb3V0ZV9ndWlkZS9yb3V0ZV9ndWlkZV9jbGllbnQucHkKQEAgLTM0LDEzICszNCwxMSBAQAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHRpbWUKIAotZnJvbSBncnBjLmJldGEgaW1wb3J0IGltcGxlbWVudGF0aW9ucworaW1wb3J0IGdycGMKIAogaW1wb3J0IHJvdXRlX2d1aWRlX3BiMgogaW1wb3J0IHJvdXRlX2d1aWRlX3Jlc291cmNlcwogCi1fVElNRU9VVF9TRUNPTkRTID0gMzAKLQogCiBkZWYgbWFrZV9yb3V0ZV9ub3RlKG1lc3NhZ2UsIGxhdGl0dWRlLCBsb25naXR1ZGUpOgogICByZXR1cm4gcm91dGVfZ3VpZGVfcGIyLlJvdXRlTm90ZSgKQEAgLTQ5LDcgKzQ3LDcgQEAKIAogCiBkZWYgZ3VpZGVfZ2V0X29uZV9mZWF0dXJlKHN0dWIsIHBvaW50KToKLSAgZmVhdHVyZSA9IHN0dWIuR2V0RmVhdHVyZShwb2ludCwgX1RJTUVPVVRfU0VDT05EUykKKyAgZmVhdHVyZSA9IHN0dWIuR2V0RmVhdHVyZShwb2ludCkKICAgaWYgbm90IGZlYXR1cmUubG9jYXRpb246CiAgICAgcHJpbnQoIlNlcnZlciByZXR1cm5lZCBpbmNvbXBsZXRlIGZlYXR1cmUiKQogICAgIHJldHVybgpAQCAtNjYsMTQgKzY0LDEyIEBACiAKIAogZGVmIGd1aWRlX2xpc3RfZmVhdHVyZXMoc3R1Yik6Ci0gIHJlY3QgPSByb3V0ZV9ndWlkZV9wYjIuUmVjdGFuZ2xlKAotICAgICAgbG89cm91dGVfZ3VpZGVfcGIyLlBvaW50KAotICAgICAgICAgIGxhdGl0dWRlPTQwMDAwMDAwMCwgbG9uZ2l0dWRlID0gLTc1MDAwMDAwMCksCi0gICAgICBoaT1yb3V0ZV9ndWlkZV9wYjIuUG9pbnQoCi0gICAgICAgICAgbGF0aXR1ZGUgPSA0MjAwMDAwMDAsIGxvbmdpdHVkZSA9IC03MzAwMDAwMDApKQorICByZWN0YW5nbGUgPSByb3V0ZV9ndWlkZV9wYjIuUmVjdGFuZ2xlKAorICAgICAgbG89cm91dGVfZ3VpZGVfcGIyLlBvaW50KGxhdGl0dWRlPTQwMDAwMDAwMCwgbG9uZ2l0dWRlPS03NTAwMDAwMDApLAorICAgICAgaGk9cm91dGVfZ3VpZGVfcGIyLlBvaW50KGxhdGl0dWRlPTQyMDAwMDAwMCwgbG9uZ2l0dWRlPS03MzAwMDAwMDApKQogICBwcmludCgiTG9va2luZyBmb3IgZmVhdHVyZXMgYmV0d2VlbiA0MCwgLTc1IGFuZCA0MiwgLTczIikKIAotICBmZWF0dXJlcyA9IHN0dWIuTGlzdEZlYXR1cmVzKHJlY3QsIF9USU1FT1VUX1NFQ09ORFMpCisgIGZlYXR1cmVzID0gc3R1Yi5MaXN0RmVhdHVyZXMocmVjdGFuZ2xlKQogCiAgIGZvciBmZWF0dXJlIGluIGZlYXR1cmVzOgogICAgIHByaW50KCJGZWF0dXJlIGNhbGxlZCAlcyBhdCAlcyIgJSAoZmVhdHVyZS5uYW1lLCBmZWF0dXJlLmxvY2F0aW9uKSkKQEAgLTkwLDggKzg2LDggQEAKIGRlZiBndWlkZV9yZWNvcmRfcm91dGUoc3R1Yik6CiAgIGZlYXR1cmVfbGlzdCA9IHJvdXRlX2d1aWRlX3Jlc291cmNlcy5yZWFkX3JvdXRlX2d1aWRlX2RhdGFiYXNlKCkKIAotICByb3V0ZV9pdGVyID0gZ2VuZXJhdGVfcm91dGUoZmVhdHVyZV9saXN0KQotICByb3V0ZV9zdW1tYXJ5ID0gc3R1Yi5SZWNvcmRSb3V0ZShyb3V0ZV9pdGVyLCBfVElNRU9VVF9TRUNPTkRTKQorICByb3V0ZV9pdGVyYXRvciA9IGdlbmVyYXRlX3JvdXRlKGZlYXR1cmVfbGlzdCkKKyAgcm91dGVfc3VtbWFyeSA9IHN0dWIuUmVjb3JkUm91dGUocm91dGVfaXRlcmF0b3IpCiAgIHByaW50KCJGaW5pc2hlZCB0cmlwIHdpdGggJXMgcG9pbnRzICIgJSByb3V0ZV9zdW1tYXJ5LnBvaW50X2NvdW50KQogICBwcmludCgiUGFzc2VkICVzIGZlYXR1cmVzICIgJSByb3V0ZV9zdW1tYXJ5LmZlYXR1cmVfY291bnQpCiAgIHByaW50KCJUcmF2ZWxsZWQgJXMgbWV0ZXJzICIgJSByb3V0ZV9zdW1tYXJ5LmRpc3RhbmNlKQpAQCAtMTEzLDE0ICsxMDksMTQgQEAKIAogCiBkZWYgZ3VpZGVfcm91dGVfY2hhdChzdHViKToKLSAgcmVzcG9uc2VzID0gc3R1Yi5Sb3V0ZUNoYXQoZ2VuZXJhdGVfbWVzc2FnZXMoKSwgX1RJTUVPVVRfU0VDT05EUykKKyAgcmVzcG9uc2VzID0gc3R1Yi5Sb3V0ZUNoYXQoZ2VuZXJhdGVfbWVzc2FnZXMoKSkKICAgZm9yIHJlc3BvbnNlIGluIHJlc3BvbnNlczoKICAgICBwcmludCgiUmVjZWl2ZWQgbWVzc2FnZSAlcyBhdCAlcyIgJSAocmVzcG9uc2UubWVzc2FnZSwgcmVzcG9uc2UubG9jYXRpb24pKQogCiAKIGRlZiBydW4oKToKLSAgY2hhbm5lbCA9IGltcGxlbWVudGF0aW9ucy5pbnNlY3VyZV9jaGFubmVsKCdsb2NhbGhvc3QnLCA1MDA1MSkKLSAgc3R1YiA9IHJvdXRlX2d1aWRlX3BiMi5iZXRhX2NyZWF0ZV9Sb3V0ZUd1aWRlX3N0dWIoY2hhbm5lbCkKKyAgY2hhbm5lbCA9IGdycGMuaW5zZWN1cmVfY2hhbm5lbCgnbG9jYWxob3N0OjUwMDUxJykKKyAgc3R1YiA9IHJvdXRlX2d1aWRlX3BiMi5Sb3V0ZUd1aWRlU3R1YihjaGFubmVsKQogICBwcmludCgiLS0tLS0tLS0tLS0tLS0gR2V0RmVhdHVyZSAtLS0tLS0tLS0tLS0tLSIpCiAgIGd1aWRlX2dldF9mZWF0dXJlKHN0dWIpCiAgIHByaW50KCItLS0tLS0tLS0tLS0tLSBMaXN0RmVhdHVyZXMgLS0tLS0tLS0tLS0tLS0iKQpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL3JvdXRlX2d1aWRlL3JvdXRlX2d1aWRlX3BiMi5weSBiL2V4YW1wbGVzL3B5dGhvbi9yb3V0ZV9ndWlkZS9yb3V0ZV9ndWlkZV9wYjIucHkKaW5kZXggODFkNWQwNy4uOTI0ZTE4NiAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvcHl0aG9uL3JvdXRlX2d1aWRlL3JvdXRlX2d1aWRlX3BiMi5weQorKysgYi9leGFtcGxlcy9weXRob24vcm91dGVfZ3VpZGUvcm91dGVfZ3VpZGVfcGIyLnB5CkBAIC0yNzcsMTMgKzI3NywxMjIgQEAKIAogREVTQ1JJUFRPUi5oYXNfb3B0aW9ucyA9IFRydWUKIERFU0NSSVBUT1IuX29wdGlvbnMgPSBfZGVzY3JpcHRvci5fUGFyc2VPcHRpb25zKGRlc2NyaXB0b3JfcGIyLkZpbGVPcHRpb25zKCksIF9iKCdcblwwMzNpby5ncnBjLmV4YW1wbGVzLnJvdXRlZ3VpZGVCXDAxN1JvdXRlR3VpZGVQcm90b1BcMDAxXDI0MlwwMDJcMDAzUlRHJykpCi1pbXBvcnQgYWJjCi1pbXBvcnQgc2l4CitpbXBvcnQgZ3JwYwogZnJvbSBncnBjLmJldGEgaW1wb3J0IGltcGxlbWVudGF0aW9ucyBhcyBiZXRhX2ltcGxlbWVudGF0aW9ucwogZnJvbSBncnBjLmJldGEgaW1wb3J0IGludGVyZmFjZXMgYXMgYmV0YV9pbnRlcmZhY2VzCiBmcm9tIGdycGMuZnJhbWV3b3JrLmNvbW1vbiBpbXBvcnQgY2FyZGluYWxpdHkKIGZyb20gZ3JwYy5mcmFtZXdvcmsuaW50ZXJmYWNlcy5mYWNlIGltcG9ydCB1dGlsaXRpZXMgYXMgZmFjZV91dGlsaXRpZXMKIAorCitjbGFzcyBSb3V0ZUd1aWRlU3R1YihvYmplY3QpOgorICAiIiJJbnRlcmZhY2UgZXhwb3J0ZWQgYnkgdGhlIHNlcnZlci4KKyAgIiIiCisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5uZWwpOgorICAgICIiIkNvbnN0cnVjdG9yLgorCisgICAgQXJnczoKKyAgICAgIGNoYW5uZWw6IEEgZ3JwYy5DaGFubmVsLgorICAgICIiIgorICAgIHNlbGYuR2V0RmVhdHVyZSA9IGNoYW5uZWwudW5hcnlfdW5hcnkoCisgICAgICAgICcvcm91dGVndWlkZS5Sb3V0ZUd1aWRlL0dldEZlYXR1cmUnLAorICAgICAgICByZXF1ZXN0X3NlcmlhbGl6ZXI9UG9pbnQuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgICAgIHJlc3BvbnNlX2Rlc2VyaWFsaXplcj1GZWF0dXJlLkZyb21TdHJpbmcsCisgICAgICAgICkKKyAgICBzZWxmLkxpc3RGZWF0dXJlcyA9IGNoYW5uZWwudW5hcnlfc3RyZWFtKAorICAgICAgICAnL3JvdXRlZ3VpZGUuUm91dGVHdWlkZS9MaXN0RmVhdHVyZXMnLAorICAgICAgICByZXF1ZXN0X3NlcmlhbGl6ZXI9UmVjdGFuZ2xlLlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICAgICByZXNwb25zZV9kZXNlcmlhbGl6ZXI9RmVhdHVyZS5Gcm9tU3RyaW5nLAorICAgICAgICApCisgICAgc2VsZi5SZWNvcmRSb3V0ZSA9IGNoYW5uZWwuc3RyZWFtX3VuYXJ5KAorICAgICAgICAnL3JvdXRlZ3VpZGUuUm91dGVHdWlkZS9SZWNvcmRSb3V0ZScsCisgICAgICAgIHJlcXVlc3Rfc2VyaWFsaXplcj1Qb2ludC5TZXJpYWxpemVUb1N0cmluZywKKyAgICAgICAgcmVzcG9uc2VfZGVzZXJpYWxpemVyPVJvdXRlU3VtbWFyeS5Gcm9tU3RyaW5nLAorICAgICAgICApCisgICAgc2VsZi5Sb3V0ZUNoYXQgPSBjaGFubmVsLnN0cmVhbV9zdHJlYW0oCisgICAgICAgICcvcm91dGVndWlkZS5Sb3V0ZUd1aWRlL1JvdXRlQ2hhdCcsCisgICAgICAgIHJlcXVlc3Rfc2VyaWFsaXplcj1Sb3V0ZU5vdGUuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgICAgIHJlc3BvbnNlX2Rlc2VyaWFsaXplcj1Sb3V0ZU5vdGUuRnJvbVN0cmluZywKKyAgICAgICAgKQorCisKK2NsYXNzIFJvdXRlR3VpZGVTZXJ2aWNlcihvYmplY3QpOgorICAiIiJJbnRlcmZhY2UgZXhwb3J0ZWQgYnkgdGhlIHNlcnZlci4KKyAgIiIiCisKKyAgZGVmIEdldEZlYXR1cmUoc2VsZiwgcmVxdWVzdCwgY29udGV4dCk6CisgICAgIiIiQSBzaW1wbGUgUlBDLgorCisgICAgT2J0YWlucyB0aGUgZmVhdHVyZSBhdCBhIGdpdmVuIHBvc2l0aW9uLgorCisgICAgQSBmZWF0dXJlIHdpdGggYW4gZW1wdHkgbmFtZSBpcyByZXR1cm5lZCBpZiB0aGVyZSdzIG5vIGZlYXR1cmUgYXQgdGhlIGdpdmVuCisgICAgcG9zaXRpb24uCisgICAgIiIiCisgICAgY29udGV4dC5zZXRfY29kZShncnBjLlN0YXR1c0NvZGUuVU5JTVBMRU1FTlRFRCkKKyAgICBjb250ZXh0LnNldF9kZXRhaWxzKCdNZXRob2Qgbm90IGltcGxlbWVudGVkIScpCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCEnKQorCisgIGRlZiBMaXN0RmVhdHVyZXMoc2VsZiwgcmVxdWVzdCwgY29udGV4dCk6CisgICAgIiIiQSBzZXJ2ZXItdG8tY2xpZW50IHN0cmVhbWluZyBSUEMuCisKKyAgICBPYnRhaW5zIHRoZSBGZWF0dXJlcyBhdmFpbGFibGUgd2l0aGluIHRoZSBnaXZlbiBSZWN0YW5nbGUuICBSZXN1bHRzIGFyZQorICAgIHN0cmVhbWVkIHJhdGhlciB0aGFuIHJldHVybmVkIGF0IG9uY2UgKGUuZy4gaW4gYSByZXNwb25zZSBtZXNzYWdlIHdpdGggYQorICAgIHJlcGVhdGVkIGZpZWxkKSwgYXMgdGhlIHJlY3RhbmdsZSBtYXkgY292ZXIgYSBsYXJnZSBhcmVhIGFuZCBjb250YWluIGEKKyAgICBodWdlIG51bWJlciBvZiBmZWF0dXJlcy4KKyAgICAiIiIKKyAgICBjb250ZXh0LnNldF9jb2RlKGdycGMuU3RhdHVzQ29kZS5VTklNUExFTUVOVEVEKQorICAgIGNvbnRleHQuc2V0X2RldGFpbHMoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQhJykKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkIScpCisKKyAgZGVmIFJlY29yZFJvdXRlKHNlbGYsIHJlcXVlc3RfaXRlcmF0b3IsIGNvbnRleHQpOgorICAgICIiIkEgY2xpZW50LXRvLXNlcnZlciBzdHJlYW1pbmcgUlBDLgorCisgICAgQWNjZXB0cyBhIHN0cmVhbSBvZiBQb2ludHMgb24gYSByb3V0ZSBiZWluZyB0cmF2ZXJzZWQsIHJldHVybmluZyBhCisgICAgUm91dGVTdW1tYXJ5IHdoZW4gdHJhdmVyc2FsIGlzIGNvbXBsZXRlZC4KKyAgICAiIiIKKyAgICBjb250ZXh0LnNldF9jb2RlKGdycGMuU3RhdHVzQ29kZS5VTklNUExFTUVOVEVEKQorICAgIGNvbnRleHQuc2V0X2RldGFpbHMoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQhJykKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkIScpCisKKyAgZGVmIFJvdXRlQ2hhdChzZWxmLCByZXF1ZXN0X2l0ZXJhdG9yLCBjb250ZXh0KToKKyAgICAiIiJBIEJpZGlyZWN0aW9uYWwgc3RyZWFtaW5nIFJQQy4KKworICAgIEFjY2VwdHMgYSBzdHJlYW0gb2YgUm91dGVOb3RlcyBzZW50IHdoaWxlIGEgcm91dGUgaXMgYmVpbmcgdHJhdmVyc2VkLAorICAgIHdoaWxlIHJlY2VpdmluZyBvdGhlciBSb3V0ZU5vdGVzIChlLmcuIGZyb20gb3RoZXIgdXNlcnMpLgorICAgICIiIgorICAgIGNvbnRleHQuc2V0X2NvZGUoZ3JwYy5TdGF0dXNDb2RlLlVOSU1QTEVNRU5URUQpCisgICAgY29udGV4dC5zZXRfZGV0YWlscygnTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCEnKQorICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQhJykKKworCitkZWYgYWRkX1JvdXRlR3VpZGVTZXJ2aWNlcl90b19zZXJ2ZXIoc2VydmljZXIsIHNlcnZlcik6CisgIHJwY19tZXRob2RfaGFuZGxlcnMgPSB7CisgICAgICAnR2V0RmVhdHVyZSc6IGdycGMudW5hcnlfdW5hcnlfcnBjX21ldGhvZF9oYW5kbGVyKAorICAgICAgICAgIHNlcnZpY2VyLkdldEZlYXR1cmUsCisgICAgICAgICAgcmVxdWVzdF9kZXNlcmlhbGl6ZXI9UG9pbnQuRnJvbVN0cmluZywKKyAgICAgICAgICByZXNwb25zZV9zZXJpYWxpemVyPUZlYXR1cmUuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgICApLAorICAgICAgJ0xpc3RGZWF0dXJlcyc6IGdycGMudW5hcnlfc3RyZWFtX3JwY19tZXRob2RfaGFuZGxlcigKKyAgICAgICAgICBzZXJ2aWNlci5MaXN0RmVhdHVyZXMsCisgICAgICAgICAgcmVxdWVzdF9kZXNlcmlhbGl6ZXI9UmVjdGFuZ2xlLkZyb21TdHJpbmcsCisgICAgICAgICAgcmVzcG9uc2Vfc2VyaWFsaXplcj1GZWF0dXJlLlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICAgKSwKKyAgICAgICdSZWNvcmRSb3V0ZSc6IGdycGMuc3RyZWFtX3VuYXJ5X3JwY19tZXRob2RfaGFuZGxlcigKKyAgICAgICAgICBzZXJ2aWNlci5SZWNvcmRSb3V0ZSwKKyAgICAgICAgICByZXF1ZXN0X2Rlc2VyaWFsaXplcj1Qb2ludC5Gcm9tU3RyaW5nLAorICAgICAgICAgIHJlc3BvbnNlX3NlcmlhbGl6ZXI9Um91dGVTdW1tYXJ5LlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICAgKSwKKyAgICAgICdSb3V0ZUNoYXQnOiBncnBjLnN0cmVhbV9zdHJlYW1fcnBjX21ldGhvZF9oYW5kbGVyKAorICAgICAgICAgIHNlcnZpY2VyLlJvdXRlQ2hhdCwKKyAgICAgICAgICByZXF1ZXN0X2Rlc2VyaWFsaXplcj1Sb3V0ZU5vdGUuRnJvbVN0cmluZywKKyAgICAgICAgICByZXNwb25zZV9zZXJpYWxpemVyPVJvdXRlTm90ZS5TZXJpYWxpemVUb1N0cmluZywKKyAgICAgICksCisgIH0KKyAgZ2VuZXJpY19oYW5kbGVyID0gZ3JwYy5tZXRob2RfaGFuZGxlcnNfZ2VuZXJpY19oYW5kbGVyKAorICAgICAgJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsIHJwY19tZXRob2RfaGFuZGxlcnMpCisgIHNlcnZlci5hZGRfZ2VuZXJpY19ycGNfaGFuZGxlcnMoKGdlbmVyaWNfaGFuZGxlciwpKQorCisKIGNsYXNzIEJldGFSb3V0ZUd1aWRlU2VydmljZXIob2JqZWN0KToKICAgIiIiSW50ZXJmYWNlIGV4cG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCiAgICIiIgpAQCAtMzIwLDEwICs0MjksMTEgQEAKICAgICAiIiIKICAgICBjb250ZXh0LmNvZGUoYmV0YV9pbnRlcmZhY2VzLlN0YXR1c0NvZGUuVU5JTVBMRU1FTlRFRCkKIAorCiBjbGFzcyBCZXRhUm91dGVHdWlkZVN0dWIob2JqZWN0KToKICAgIiIiSW50ZXJmYWNlIGV4cG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCiAgICIiIgotICBkZWYgR2V0RmVhdHVyZShzZWxmLCByZXF1ZXN0LCB0aW1lb3V0KToKKyAgZGVmIEdldEZlYXR1cmUoc2VsZiwgcmVxdWVzdCwgdGltZW91dCwgbWV0YWRhdGE9Tm9uZSwgd2l0aF9jYWxsPUZhbHNlLCBwcm90b2NvbF9vcHRpb25zPU5vbmUpOgogICAgICIiIkEgc2ltcGxlIFJQQy4KIAogICAgIE9idGFpbnMgdGhlIGZlYXR1cmUgYXQgYSBnaXZlbiBwb3NpdGlvbi4KQEAgLTMzMyw3ICs0NDMsNyBAQAogICAgICIiIgogICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogICBHZXRGZWF0dXJlLmZ1dHVyZSA9IE5vbmUKLSAgZGVmIExpc3RGZWF0dXJlcyhzZWxmLCByZXF1ZXN0LCB0aW1lb3V0KToKKyAgZGVmIExpc3RGZWF0dXJlcyhzZWxmLCByZXF1ZXN0LCB0aW1lb3V0LCBtZXRhZGF0YT1Ob25lLCB3aXRoX2NhbGw9RmFsc2UsIHByb3RvY29sX29wdGlvbnM9Tm9uZSk6CiAgICAgIiIiQSBzZXJ2ZXItdG8tY2xpZW50IHN0cmVhbWluZyBSUEMuCiAKICAgICBPYnRhaW5zIHRoZSBGZWF0dXJlcyBhdmFpbGFibGUgd2l0aGluIHRoZSBnaXZlbiBSZWN0YW5nbGUuICBSZXN1bHRzIGFyZQpAQCAtMzQyLDcgKzQ1Miw3IEBACiAgICAgaHVnZSBudW1iZXIgb2YgZmVhdHVyZXMuCiAgICAgIiIiCiAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCi0gIGRlZiBSZWNvcmRSb3V0ZShzZWxmLCByZXF1ZXN0X2l0ZXJhdG9yLCB0aW1lb3V0KToKKyAgZGVmIFJlY29yZFJvdXRlKHNlbGYsIHJlcXVlc3RfaXRlcmF0b3IsIHRpbWVvdXQsIG1ldGFkYXRhPU5vbmUsIHdpdGhfY2FsbD1GYWxzZSwgcHJvdG9jb2xfb3B0aW9ucz1Ob25lKToKICAgICAiIiJBIGNsaWVudC10by1zZXJ2ZXIgc3RyZWFtaW5nIFJQQy4KIAogICAgIEFjY2VwdHMgYSBzdHJlYW0gb2YgUG9pbnRzIG9uIGEgcm91dGUgYmVpbmcgdHJhdmVyc2VkLCByZXR1cm5pbmcgYQpAQCAtMzUwLDcgKzQ2MCw3IEBACiAgICAgIiIiCiAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAgIFJlY29yZFJvdXRlLmZ1dHVyZSA9IE5vbmUKLSAgZGVmIFJvdXRlQ2hhdChzZWxmLCByZXF1ZXN0X2l0ZXJhdG9yLCB0aW1lb3V0KToKKyAgZGVmIFJvdXRlQ2hhdChzZWxmLCByZXF1ZXN0X2l0ZXJhdG9yLCB0aW1lb3V0LCBtZXRhZGF0YT1Ob25lLCB3aXRoX2NhbGw9RmFsc2UsIHByb3RvY29sX29wdGlvbnM9Tm9uZSk6CiAgICAgIiIiQSBCaWRpcmVjdGlvbmFsIHN0cmVhbWluZyBSUEMuCiAKICAgICBBY2NlcHRzIGEgc3RyZWFtIG9mIFJvdXRlTm90ZXMgc2VudCB3aGlsZSBhIHJvdXRlIGlzIGJlaW5nIHRyYXZlcnNlZCwKQEAgLTM1OCwyNiArNDY4LDE5IEBACiAgICAgIiIiCiAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKKwogZGVmIGJldGFfY3JlYXRlX1JvdXRlR3VpZGVfc2VydmVyKHNlcnZpY2VyLCBwb29sPU5vbmUsIHBvb2xfc2l6ZT1Ob25lLCBkZWZhdWx0X3RpbWVvdXQ9Tm9uZSwgbWF4aW11bV90aW1lb3V0PU5vbmUpOgotICBpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCi0gIGltcG9ydCByb3V0ZV9ndWlkZV9wYjIKLSAgaW1wb3J0IHJvdXRlX2d1aWRlX3BiMgotICBpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCi0gIGltcG9ydCByb3V0ZV9ndWlkZV9wYjIKLSAgaW1wb3J0IHJvdXRlX2d1aWRlX3BiMgotICBpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCi0gIGltcG9ydCByb3V0ZV9ndWlkZV9wYjIKICAgcmVxdWVzdF9kZXNlcmlhbGl6ZXJzID0gewotICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ0dldEZlYXR1cmUnKTogcm91dGVfZ3VpZGVfcGIyLlBvaW50LkZyb21TdHJpbmcsCi0gICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnTGlzdEZlYXR1cmVzJyk6IHJvdXRlX2d1aWRlX3BiMi5SZWN0YW5nbGUuRnJvbVN0cmluZywKLSAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSZWNvcmRSb3V0ZScpOiByb3V0ZV9ndWlkZV9wYjIuUG9pbnQuRnJvbVN0cmluZywKLSAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSb3V0ZUNoYXQnKTogcm91dGVfZ3VpZGVfcGIyLlJvdXRlTm90ZS5Gcm9tU3RyaW5nLAorICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ0dldEZlYXR1cmUnKTogUG9pbnQuRnJvbVN0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdMaXN0RmVhdHVyZXMnKTogUmVjdGFuZ2xlLkZyb21TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUmVjb3JkUm91dGUnKTogUG9pbnQuRnJvbVN0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSb3V0ZUNoYXQnKTogUm91dGVOb3RlLkZyb21TdHJpbmcsCiAgIH0KICAgcmVzcG9uc2Vfc2VyaWFsaXplcnMgPSB7Ci0gICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnR2V0RmVhdHVyZScpOiByb3V0ZV9ndWlkZV9wYjIuRmVhdHVyZS5TZXJpYWxpemVUb1N0cmluZywKLSAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdMaXN0RmVhdHVyZXMnKTogcm91dGVfZ3VpZGVfcGIyLkZlYXR1cmUuU2VyaWFsaXplVG9TdHJpbmcsCi0gICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUmVjb3JkUm91dGUnKTogcm91dGVfZ3VpZGVfcGIyLlJvdXRlU3VtbWFyeS5TZXJpYWxpemVUb1N0cmluZywKLSAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSb3V0ZUNoYXQnKTogcm91dGVfZ3VpZGVfcGIyLlJvdXRlTm90ZS5TZXJpYWxpemVUb1N0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdHZXRGZWF0dXJlJyk6IEZlYXR1cmUuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnTGlzdEZlYXR1cmVzJyk6IEZlYXR1cmUuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUmVjb3JkUm91dGUnKTogUm91dGVTdW1tYXJ5LlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ1JvdXRlQ2hhdCcpOiBSb3V0ZU5vdGUuU2VyaWFsaXplVG9TdHJpbmcsCiAgIH0KICAgbWV0aG9kX2ltcGxlbWVudGF0aW9ucyA9IHsKICAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdHZXRGZWF0dXJlJyk6IGZhY2VfdXRpbGl0aWVzLnVuYXJ5X3VuYXJ5X2lubGluZShzZXJ2aWNlci5HZXRGZWF0dXJlKSwKQEAgLTM4OCwyNiArNDkxLDE5IEBACiAgIHNlcnZlcl9vcHRpb25zID0gYmV0YV9pbXBsZW1lbnRhdGlvbnMuc2VydmVyX29wdGlvbnMocmVxdWVzdF9kZXNlcmlhbGl6ZXJzPXJlcXVlc3RfZGVzZXJpYWxpemVycywgcmVzcG9uc2Vfc2VyaWFsaXplcnM9cmVzcG9uc2Vfc2VyaWFsaXplcnMsIHRocmVhZF9wb29sPXBvb2wsIHRocmVhZF9wb29sX3NpemU9cG9vbF9zaXplLCBkZWZhdWx0X3RpbWVvdXQ9ZGVmYXVsdF90aW1lb3V0LCBtYXhpbXVtX3RpbWVvdXQ9bWF4aW11bV90aW1lb3V0KQogICByZXR1cm4gYmV0YV9pbXBsZW1lbnRhdGlvbnMuc2VydmVyKG1ldGhvZF9pbXBsZW1lbnRhdGlvbnMsIG9wdGlvbnM9c2VydmVyX29wdGlvbnMpCiAKKwogZGVmIGJldGFfY3JlYXRlX1JvdXRlR3VpZGVfc3R1YihjaGFubmVsLCBob3N0PU5vbmUsIG1ldGFkYXRhX3RyYW5zZm9ybWVyPU5vbmUsIHBvb2w9Tm9uZSwgcG9vbF9zaXplPU5vbmUpOgotICBpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCi0gIGltcG9ydCByb3V0ZV9ndWlkZV9wYjIKLSAgaW1wb3J0IHJvdXRlX2d1aWRlX3BiMgotICBpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCi0gIGltcG9ydCByb3V0ZV9ndWlkZV9wYjIKLSAgaW1wb3J0IHJvdXRlX2d1aWRlX3BiMgotICBpbXBvcnQgcm91dGVfZ3VpZGVfcGIyCi0gIGltcG9ydCByb3V0ZV9ndWlkZV9wYjIKICAgcmVxdWVzdF9zZXJpYWxpemVycyA9IHsKLSAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdHZXRGZWF0dXJlJyk6IHJvdXRlX2d1aWRlX3BiMi5Qb2ludC5TZXJpYWxpemVUb1N0cmluZywKLSAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdMaXN0RmVhdHVyZXMnKTogcm91dGVfZ3VpZGVfcGIyLlJlY3RhbmdsZS5TZXJpYWxpemVUb1N0cmluZywKLSAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSZWNvcmRSb3V0ZScpOiByb3V0ZV9ndWlkZV9wYjIuUG9pbnQuU2VyaWFsaXplVG9TdHJpbmcsCi0gICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUm91dGVDaGF0Jyk6IHJvdXRlX2d1aWRlX3BiMi5Sb3V0ZU5vdGUuU2VyaWFsaXplVG9TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnR2V0RmVhdHVyZScpOiBQb2ludC5TZXJpYWxpemVUb1N0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdMaXN0RmVhdHVyZXMnKTogUmVjdGFuZ2xlLlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ1JlY29yZFJvdXRlJyk6IFBvaW50LlNlcmlhbGl6ZVRvU3RyaW5nLAorICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ1JvdXRlQ2hhdCcpOiBSb3V0ZU5vdGUuU2VyaWFsaXplVG9TdHJpbmcsCiAgIH0KICAgcmVzcG9uc2VfZGVzZXJpYWxpemVycyA9IHsKLSAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdHZXRGZWF0dXJlJyk6IHJvdXRlX2d1aWRlX3BiMi5GZWF0dXJlLkZyb21TdHJpbmcsCi0gICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnTGlzdEZlYXR1cmVzJyk6IHJvdXRlX2d1aWRlX3BiMi5GZWF0dXJlLkZyb21TdHJpbmcsCi0gICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnUmVjb3JkUm91dGUnKTogcm91dGVfZ3VpZGVfcGIyLlJvdXRlU3VtbWFyeS5Gcm9tU3RyaW5nLAotICAgICgncm91dGVndWlkZS5Sb3V0ZUd1aWRlJywgJ1JvdXRlQ2hhdCcpOiByb3V0ZV9ndWlkZV9wYjIuUm91dGVOb3RlLkZyb21TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnR2V0RmVhdHVyZScpOiBGZWF0dXJlLkZyb21TdHJpbmcsCisgICAgKCdyb3V0ZWd1aWRlLlJvdXRlR3VpZGUnLCAnTGlzdEZlYXR1cmVzJyk6IEZlYXR1cmUuRnJvbVN0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSZWNvcmRSb3V0ZScpOiBSb3V0ZVN1bW1hcnkuRnJvbVN0cmluZywKKyAgICAoJ3JvdXRlZ3VpZGUuUm91dGVHdWlkZScsICdSb3V0ZUNoYXQnKTogUm91dGVOb3RlLkZyb21TdHJpbmcsCiAgIH0KICAgY2FyZGluYWxpdGllcyA9IHsKICAgICAnR2V0RmVhdHVyZSc6IGNhcmRpbmFsaXR5LkNhcmRpbmFsaXR5LlVOQVJZX1VOQVJZLApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL3JvdXRlX2d1aWRlL3JvdXRlX2d1aWRlX3Jlc291cmNlcy5weSBiL2V4YW1wbGVzL3B5dGhvbi9yb3V0ZV9ndWlkZS9yb3V0ZV9ndWlkZV9yZXNvdXJjZXMucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHl0aG9uL3JvdXRlX2d1aWRlL3JvdXRlX2d1aWRlX3NlcnZlci5weSBiL2V4YW1wbGVzL3B5dGhvbi9yb3V0ZV9ndWlkZS9yb3V0ZV9ndWlkZV9zZXJ2ZXIucHkKaW5kZXggMmQ4YjMzYS4uNGU3ODBhNyAxMDA2NDQKLS0tIGEvZXhhbXBsZXMvcHl0aG9uL3JvdXRlX2d1aWRlL3JvdXRlX2d1aWRlX3NlcnZlci5weQorKysgYi9leGFtcGxlcy9weXRob24vcm91dGVfZ3VpZGUvcm91dGVfZ3VpZGVfc2VydmVyLnB5CkBAIC0yOSw5ICsyOSwxMiBAQAogCiAiIiJUaGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBnUlBDIHJvdXRlIGd1aWRlIHNlcnZlci4iIiIKIAorZnJvbSBjb25jdXJyZW50IGltcG9ydCBmdXR1cmVzCiBpbXBvcnQgdGltZQogaW1wb3J0IG1hdGgKIAoraW1wb3J0IGdycGMKKwogaW1wb3J0IHJvdXRlX2d1aWRlX3BiMgogaW1wb3J0IHJvdXRlX2d1aWRlX3Jlc291cmNlcwogCkBAIC0xMjEsNyArMTI0LDkgQEAKIAogCiBkZWYgc2VydmUoKToKLSAgc2VydmVyID0gcm91dGVfZ3VpZGVfcGIyLmJldGFfY3JlYXRlX1JvdXRlR3VpZGVfc2VydmVyKFJvdXRlR3VpZGVTZXJ2aWNlcigpKQorICBzZXJ2ZXIgPSBncnBjLnNlcnZlcihmdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz0xMCkpCisgIHJvdXRlX2d1aWRlX3BiMi5hZGRfUm91dGVHdWlkZVNlcnZpY2VyX3RvX3NlcnZlcigKKyAgICAgIFJvdXRlR3VpZGVTZXJ2aWNlcigpLCBzZXJ2ZXIpCiAgIHNlcnZlci5hZGRfaW5zZWN1cmVfcG9ydCgnWzo6XTo1MDA1MScpCiAgIHNlcnZlci5zdGFydCgpCiAgIHRyeToKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3B5dGhvbi9yb3V0ZV9ndWlkZS9ydW5fY29kZWdlbi5zaCBiL2V4YW1wbGVzL3B5dGhvbi9yb3V0ZV9ndWlkZS9ydW5fY29kZWdlbi5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGV4YW1wbGVzL3B5dGhvbi9yb3V0ZV9ndWlkZS9ydW5fY29kZWdlbi5zaApyZW5hbWUgdG8gZXhhbXBsZXMvcHl0aG9uL3JvdXRlX2d1aWRlL3J1bl9jb2RlZ2VuLnB5CmluZGV4IGEzNzdhMWEuLmM3YzYwMDgKLS0tIGEvZXhhbXBsZXMvcHl0aG9uL3JvdXRlX2d1aWRlL3J1bl9jb2RlZ2VuLnNoCisrKyBiL2V4YW1wbGVzL3B5dGhvbi9yb3V0ZV9ndWlkZS9ydW5fY29kZWdlbi5weQpAQCAtMSw0ICsxLDMgQEAKLSMhL2Jpbi9iYXNoCiAjIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwpAQCAtMjgsNSArMjcsMTYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSMgUnVucyB0aGUgcHJvdG9jIHdpdGggZ1JQQyBwbHVnaW4gdG8gZ2VuZXJhdGUgcHJvdG9jb2wgbWVzc2FnZXMgYW5kIGdSUEMgc3R1YnMuCi1weXRob24gLW0gZ3JwYy50b29scy5wcm90b2MgLUkuLi8uLi9wcm90b3MgLS1weXRob25fb3V0PS4gLS1ncnBjX3B5dGhvbl9vdXQ9LiAuLi8uLi9wcm90b3Mvcm91dGVfZ3VpZGUucHJvdG8KKyIiIlJ1bnMgcHJvdG9jIHdpdGggdGhlIGdSUEMgcGx1Z2luIHRvIGdlbmVyYXRlIG1lc3NhZ2VzIGFuZCBnUlBDIHN0dWJzLiIiIgorCitmcm9tIGdycGMudG9vbHMgaW1wb3J0IHByb3RvYworCitwcm90b2MubWFpbigKKyAgICAoCisJJycsCisJJy1JLi4vLi4vcHJvdG9zJywKKwknLS1weXRob25fb3V0PS4nLAorCSctLWdycGNfcHl0aG9uX291dD0uJywKKwknLi4vLi4vcHJvdG9zL3JvdXRlX2d1aWRlLnByb3RvJywKKyAgICApCispCmRpZmYgLS1naXQgYS9nUlBDLUNvcmUucG9kc3BlYyBiL2dSUEMtQ29yZS5wb2RzcGVjCmluZGV4IDU1MzVmNGIuLmI3ZTNjOWMgMTAwNjQ0Ci0tLSBhL2dSUEMtQ29yZS5wb2RzcGVjCisrKyBiL2dSUEMtQ29yZS5wb2RzcGVjCkBAIC0zNSw3ICszNSw3IEBACiAKIFBvZDo6U3BlYy5uZXcgZG8gfHN8CiAgIHMubmFtZSAgICAgPSAnZ1JQQy1Db3JlJwotICB2ZXJzaW9uID0gJzAuMTQuMCcKKyAgdmVyc2lvbiA9ICcxLjAuMC1wcmUxJwogICBzLnZlcnNpb24gID0gdmVyc2lvbgogICBzLnN1bW1hcnkgID0gJ0NvcmUgY3Jvc3MtcGxhdGZvcm0gZ1JQQyBsaWJyYXJ5LCB3cml0dGVuIGluIEMnCiAgIHMuaG9tZXBhZ2UgPSAnaHR0cDovL3d3dy5ncnBjLmlvJwpAQCAtNDQsNyArNDQsNyBAQAogCiAgIHMuc291cmNlID0gewogICAgIDpnaXQgPT4gJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMuZ2l0JywKLSAgICA6dGFnID0+ICJyZWxlYXNlLSN7dmVyc2lvbi5nc3ViKC9cLi8sICdfJyl9LW9iamVjdGl2ZWMtI3t2ZXJzaW9ufSIsCisgICAgOnRhZyA9PiAib2JqZWN0aXZlLWMtdiN7dmVyc2lvbn0iLAogICAgICMgVE9ETyhqY2FuaXphbGVzKTogRGVwZW5kIGV4cGxpY2l0bHkgb24gdGhlIG5hbm9wYiBwb2QsIGFuZCBkaXNhYmxlIHN1Ym1vZHVsZXMuCiAgICAgOnN1Ym1vZHVsZXMgPT4gdHJ1ZSwKICAgfQpAQCAtMTkzLDcgKzE5Myw3IEBACiAgICAgc3MuaGVhZGVyX21hcHBpbmdzX2RpciA9ICcuJwogICAgIHNzLmxpYnJhcmllcyA9ICd6JwogICAgIHNzLmRlcGVuZGVuY3kgIiN7cy5uYW1lfS9JbnRlcmZhY2UiLCB2ZXJzaW9uCi0gICAgc3MuZGVwZW5kZW5jeSAnQm9yaW5nU1NMJywgJ34+IDQuMCcKKyAgICBzcy5kZXBlbmRlbmN5ICdCb3JpbmdTU0wnLCAnfj4gNS4wJwogCiAgICAgIyBUbyBzYXZlIHlvdSBmcm9tIHNjcm9sbGluZywgdGhpcyBpcyB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBwb2RzcGVjLgogICAgIHNzLnNvdXJjZV9maWxlcyA9ICdzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oJywKQEAgLTM5Myw2ICszOTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2NhbGxfaG9sZGVyLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2luZGV4LmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy91cmlfcGFyc2VyLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L25hbm9wYi9wYi5oJywKQEAgLTQwMiwxMSArNDAzLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfaW50ZXJmYWNlLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5oJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmgnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5jJywKQEAgLTU3Myw2ICs1NzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMl9wb3NpeC5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGVfcG9zaXguYycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5jJywKICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jJywKQEAgLTU4NCw2ICs1ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvcmVzb2x2ZXIvc29ja2FkZHIvc29ja2FkZHJfcmVzb2x2ZXIuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jJywKKyAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMnLApAQCAtNTkzLDYgKzU5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jJywKICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9vcGVyYXRpb24uYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMnLAorICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMnLAogICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYycsCiAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jJwogCkBAIC03NDgsNiArNzU0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2NhbGxfaG9sZGVyLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWxfaW5kZXguaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvdXJpX3BhcnNlci5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L25hbm9wYi9wYi5oJywKQEAgLTc1NywxMSArNzY0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmgnCiAgIGVuZAogCmRpZmYgLS1naXQgYS9nUlBDLVByb3RvUlBDLnBvZHNwZWMgYi9nUlBDLVByb3RvUlBDLnBvZHNwZWMKaW5kZXggOWNjMzNjNy4uNzQxMDY3YiAxMDA2NDQKLS0tIGEvZ1JQQy1Qcm90b1JQQy5wb2RzcGVjCisrKyBiL2dSUEMtUHJvdG9SUEMucG9kc3BlYwpAQCAtMzYsNyArMzYsNyBAQAogCiBQb2Q6OlNwZWMubmV3IGRvIHxzfAogICBzLm5hbWUgICAgID0gJ2dSUEMtUHJvdG9SUEMnCi0gIHZlcnNpb24gPSAnMC4xNC4wJworICB2ZXJzaW9uID0gJzEuMC4wLXByZTEnCiAgIHMudmVyc2lvbiAgPSB2ZXJzaW9uCiAgIHMuc3VtbWFyeSAgPSAnUlBDIGxpYnJhcnkgZm9yIFByb3RvY29sIEJ1ZmZlcnMsIGJhc2VkIG9uIGdSUEMnCiAgIHMuaG9tZXBhZ2UgPSAnaHR0cDovL3d3dy5ncnBjLmlvJwpAQCAtNDUsNyArNDUsNyBAQAogCiAgIHMuc291cmNlID0gewogICAgIDpnaXQgPT4gJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMuZ2l0JywKLSAgICA6dGFnID0+ICJyZWxlYXNlLSN7dmVyc2lvbi5nc3ViKC9cLi8sICdfJyl9LW9iamVjdGl2ZWMtI3t2ZXJzaW9ufSIsCisgICAgOnRhZyA9PiAib2JqZWN0aXZlLWMtdiN7dmVyc2lvbn0iLAogICB9CiAKICAgcy5pb3MuZGVwbG95bWVudF90YXJnZXQgPSAnNy4xJwpkaWZmIC0tZ2l0IGEvZ1JQQy1SeExpYnJhcnkucG9kc3BlYyBiL2dSUEMtUnhMaWJyYXJ5LnBvZHNwZWMKaW5kZXggNjI2Mzg3OC4uODYyZWQ4OSAxMDA2NDQKLS0tIGEvZ1JQQy1SeExpYnJhcnkucG9kc3BlYworKysgYi9nUlBDLVJ4TGlicmFyeS5wb2RzcGVjCkBAIC0zNiw3ICszNiw3IEBACiAKIFBvZDo6U3BlYy5uZXcgZG8gfHN8CiAgIHMubmFtZSAgICAgPSAnZ1JQQy1SeExpYnJhcnknCi0gIHZlcnNpb24gPSAnMC4xNC4wJworICB2ZXJzaW9uID0gJzEuMC4wLXByZTEnCiAgIHMudmVyc2lvbiAgPSB2ZXJzaW9uCiAgIHMuc3VtbWFyeSAgPSAnUmVhY3RpdmUgRXh0ZW5zaW9ucyBsaWJyYXJ5IGZvciBpT1MvT1NYLicKICAgcy5ob21lcGFnZSA9ICdodHRwOi8vd3d3LmdycGMuaW8nCkBAIC00NSw3ICs0NSw3IEBACiAKICAgcy5zb3VyY2UgPSB7CiAgICAgOmdpdCA9PiAnaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy5naXQnLAotICAgIDp0YWcgPT4gInJlbGVhc2UtI3t2ZXJzaW9uLmdzdWIoL1wuLywgJ18nKX0tb2JqZWN0aXZlYy0je3ZlcnNpb259IiwKKyAgICA6dGFnID0+ICJvYmplY3RpdmUtYy12I3t2ZXJzaW9ufSIsCiAgIH0KIAogICBzLmlvcy5kZXBsb3ltZW50X3RhcmdldCA9ICc3LjEnCmRpZmYgLS1naXQgYS9nUlBDLnBvZHNwZWMgYi9nUlBDLnBvZHNwZWMKaW5kZXggZTU1NTZjYy4uZWRhOTY1YSAxMDA2NDQKLS0tIGEvZ1JQQy5wb2RzcGVjCisrKyBiL2dSUEMucG9kc3BlYwpAQCAtMzYsNyArMzYsNyBAQAogCiBQb2Q6OlNwZWMubmV3IGRvIHxzfAogICBzLm5hbWUgICAgID0gJ2dSUEMnCi0gIHZlcnNpb24gPSAnMC4xNC4wJworICB2ZXJzaW9uID0gJzEuMC4wLXByZTEnCiAgIHMudmVyc2lvbiAgPSB2ZXJzaW9uCiAgIHMuc3VtbWFyeSAgPSAnZ1JQQyBjbGllbnQgbGlicmFyeSBmb3IgaU9TL09TWCcKICAgcy5ob21lcGFnZSA9ICdodHRwOi8vd3d3LmdycGMuaW8nCkBAIC00NSw3ICs0NSw3IEBACiAKICAgcy5zb3VyY2UgPSB7CiAgICAgOmdpdCA9PiAnaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy5naXQnLAotICAgIDp0YWcgPT4gInJlbGVhc2UtI3t2ZXJzaW9uLmdzdWIoL1wuLywgJ18nKX0tb2JqZWN0aXZlYy0je3ZlcnNpb259IiwKKyAgICA6dGFnID0+ICJvYmplY3RpdmUtYy12I3t2ZXJzaW9ufSIsCiAgIH0KIAogICBzLmlvcy5kZXBsb3ltZW50X3RhcmdldCA9ICc3LjEnCmRpZmYgLS1naXQgYS9ncnBjLmRlZiBiL2dycGMuZGVmCmluZGV4IGMyZjgzZjUuLmUyMjU1ZGYgMTAwNjQ0Ci0tLSBhL2dycGMuZGVmCisrKyBiL2dycGMuZGVmCkBAIC0yMywxNSArMjMsMTAgQEAKICAgICBjZW5zdXNfdHJhY2Vfc2Nhbl9zdGFydAogICAgIGNlbnN1c19nZXRfdHJhY2VfcmVjb3JkCiAgICAgY2Vuc3VzX3RyYWNlX3NjYW5fZW5kCisgICAgY2Vuc3VzX2RlZmluZV9yZXNvdXJjZQorICAgIGNlbnN1c19kZWxldGVfcmVzb3VyY2UKKyAgICBjZW5zdXNfcmVzb3VyY2VfaWQKICAgICBjZW5zdXNfcmVjb3JkX3ZhbHVlcwotICAgIGNlbnN1c192aWV3X2NyZWF0ZQotICAgIGNlbnN1c192aWV3X2RlbGV0ZQotICAgIGNlbnN1c192aWV3X21ldHJpYwotICAgIGNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnMKLSAgICBjZW5zdXNfdmlld190YWdzCi0gICAgY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9ucwotICAgIGNlbnN1c192aWV3X2dldF9kYXRhCi0gICAgY2Vuc3VzX3ZpZXdfcmVzZXQKICAgICBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZQogICAgIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX25hbWUKICAgICBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9mb3JfbGV2ZWwKZGlmZiAtLWdpdCBhL2dycGMuZ2Vtc3BlYyBiL2dycGMuZ2Vtc3BlYwppbmRleCA2YjhiZWJhLi45MjA3NmU5IDEwMDc1NQotLS0gYS9ncnBjLmdlbXNwZWMKKysrIGIvZ3JwYy5nZW1zcGVjCkBAIC0zMTIsNiArMzEyLDcgQEAKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbF9jYWxsX2hvbGRlci5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbF9pbmRleC5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvdXJpX3BhcnNlci5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmggKQogICBzLmZpbGVzICs9ICV3KCB0aGlyZF9wYXJ0eS9uYW5vcGIvcGIuaCApCkBAIC0zMjEsMTEgKzMyMiwxMyBAQAogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvYWdncmVnYXRpb24uaCApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfcnBjX3N0YXRzLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5oICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmggKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvc3VyZmFjZS9pbml0LmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyApCkBAIC00OTIsNiArNDk1LDcgQEAKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDJfcG9zaXguYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlX3Bvc2l4LmMgKQorICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHRoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uYyApCkBAIC01MDMsNiArNTA3LDcgQEAKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L3Jlc29sdmVyL3NvY2thZGRyL3NvY2thZGRyX3Jlc29sdmVyLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYyApCisgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfY29udGV4dC5jICkKQEAgLTUxMiw2ICs1MTcsNyBAQAogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jICkKKyAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jICkKICAgcy5maWxlcyArPSAldyggc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMgKQogICBzLmZpbGVzICs9ICV3KCBzcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY19wbHVnaW5fcmVnaXN0cnkuYyApCiAgIHMuZmlsZXMgKz0gJXcoIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vYWVzL2ludGVybmFsLmggKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3N0cmVhbS5oIGIvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3N0cmVhbS5oCmluZGV4IGU5NmQyMjQuLjcwNTMzYWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY19zdHJlYW0uaAorKysgYi9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfc3RyZWFtLmgKQEAgLTMzMCw2ICszMzAsOSBAQAogICAgIG1ldGFfb3BzXy5zZXRfb3V0cHV0X3RhZyh0YWcpOwogICAgIG1ldGFfb3BzXy5TZW5kSW5pdGlhbE1ldGFkYXRhKGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICBtZXRhX29wc18uc2V0X2NvbXByZXNzaW9uX2xldmVsKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsKCkpOworICAgIH0KICAgICBjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfID0gdHJ1ZTsKICAgICBjYWxsXy5QZXJmb3JtT3BzKCZtZXRhX29wc18pOwogICB9CkBAIC0zNDUsNiArMzQ4LDkgQEAKICAgICBpZiAoIWN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8pIHsKICAgICAgIGZpbmlzaF9vcHNfLlNlbmRJbml0aWFsTWV0YWRhdGEoY3R4Xy0+aW5pdGlhbF9tZXRhZGF0YV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgICBpZiAoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWxfc2V0KCkpIHsKKyAgICAgICAgZmluaXNoX29wc18uc2V0X2NvbXByZXNzaW9uX2xldmVsKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsKCkpOworICAgICAgfQogICAgICAgY3R4Xy0+c2VudF9pbml0aWFsX21ldGFkYXRhXyA9IHRydWU7CiAgICAgfQogICAgIC8vIFRoZSByZXNwb25zZSBpcyBkcm9wcGVkIGlmIHRoZSBzdGF0dXMgaXMgbm90IE9LLgpAQCAtMzYzLDYgKzM2OSw5IEBACiAgICAgaWYgKCFjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfKSB7CiAgICAgICBmaW5pc2hfb3BzXy5TZW5kSW5pdGlhbE1ldGFkYXRhKGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzKCkpOworICAgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICAgIGZpbmlzaF9vcHNfLnNldF9jb21wcmVzc2lvbl9sZXZlbChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbCgpKTsKKyAgICAgIH0KICAgICAgIGN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8gPSB0cnVlOwogICAgIH0KICAgICBmaW5pc2hfb3BzXy5TZXJ2ZXJTZW5kU3RhdHVzKGN0eF8tPnRyYWlsaW5nX21ldGFkYXRhXywgc3RhdHVzKTsKQEAgLTQwMCw2ICs0MDksOSBAQAogICAgIG1ldGFfb3BzXy5zZXRfb3V0cHV0X3RhZyh0YWcpOwogICAgIG1ldGFfb3BzXy5TZW5kSW5pdGlhbE1ldGFkYXRhKGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICBtZXRhX29wc18uc2V0X2NvbXByZXNzaW9uX2xldmVsKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsKCkpOworICAgIH0KICAgICBjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfID0gdHJ1ZTsKICAgICBjYWxsXy5QZXJmb3JtT3BzKCZtZXRhX29wc18pOwogICB9CkBAIC00MDksNiArNDIxLDkgQEAKICAgICBpZiAoIWN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8pIHsKICAgICAgIHdyaXRlX29wc18uU2VuZEluaXRpYWxNZXRhZGF0YShjdHhfLT5pbml0aWFsX21ldGFkYXRhXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzKCkpOworICAgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICAgIHdyaXRlX29wc18uc2V0X2NvbXByZXNzaW9uX2xldmVsKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsKCkpOworICAgICAgfQogICAgICAgY3R4Xy0+c2VudF9pbml0aWFsX21ldGFkYXRhXyA9IHRydWU7CiAgICAgfQogICAgIC8vIFRPRE8oY3RpbGxlcik6IGRvbid0IGFzc2VydApAQCAtNDIxLDYgKzQzNiw5IEBACiAgICAgaWYgKCFjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfKSB7CiAgICAgICBmaW5pc2hfb3BzXy5TZW5kSW5pdGlhbE1ldGFkYXRhKGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzKCkpOworICAgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICAgIGZpbmlzaF9vcHNfLnNldF9jb21wcmVzc2lvbl9sZXZlbChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbCgpKTsKKyAgICAgIH0KICAgICAgIGN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8gPSB0cnVlOwogICAgIH0KICAgICBmaW5pc2hfb3BzXy5TZXJ2ZXJTZW5kU3RhdHVzKGN0eF8tPnRyYWlsaW5nX21ldGFkYXRhXywgc3RhdHVzKTsKQEAgLTQ1OSw2ICs0NzcsOSBAQAogICAgIG1ldGFfb3BzXy5zZXRfb3V0cHV0X3RhZyh0YWcpOwogICAgIG1ldGFfb3BzXy5TZW5kSW5pdGlhbE1ldGFkYXRhKGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICBtZXRhX29wc18uc2V0X2NvbXByZXNzaW9uX2xldmVsKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsKCkpOworICAgIH0KICAgICBjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfID0gdHJ1ZTsKICAgICBjYWxsXy5QZXJmb3JtT3BzKCZtZXRhX29wc18pOwogICB9CkBAIC00NzQsNiArNDk1LDkgQEAKICAgICBpZiAoIWN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8pIHsKICAgICAgIHdyaXRlX29wc18uU2VuZEluaXRpYWxNZXRhZGF0YShjdHhfLT5pbml0aWFsX21ldGFkYXRhXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzKCkpOworICAgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICAgIHdyaXRlX29wc18uc2V0X2NvbXByZXNzaW9uX2xldmVsKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsKCkpOworICAgICAgfQogICAgICAgY3R4Xy0+c2VudF9pbml0aWFsX21ldGFkYXRhXyA9IHRydWU7CiAgICAgfQogICAgIC8vIFRPRE8oY3RpbGxlcik6IGRvbid0IGFzc2VydApAQCAtNDg2LDYgKzUxMCw5IEBACiAgICAgaWYgKCFjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfKSB7CiAgICAgICBmaW5pc2hfb3BzXy5TZW5kSW5pdGlhbE1ldGFkYXRhKGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzKCkpOworICAgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICAgIGZpbmlzaF9vcHNfLnNldF9jb21wcmVzc2lvbl9sZXZlbChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbCgpKTsKKyAgICAgIH0KICAgICAgIGN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8gPSB0cnVlOwogICAgIH0KICAgICBmaW5pc2hfb3BzXy5TZXJ2ZXJTZW5kU3RhdHVzKGN0eF8tPnRyYWlsaW5nX21ldGFkYXRhXywgc3RhdHVzKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmggYi9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vYXN5bmNfdW5hcnlfY2FsbC5oCmluZGV4IDA1NjgxZTIuLjVjZWFiNzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9hc3luY191bmFyeV9jYWxsLmgKKysrIGIvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2FzeW5jX3VuYXJ5X2NhbGwuaApAQCAtMTI2LDYgKzEyNiw5IEBACiAgICAgbWV0YV9idWZfLnNldF9vdXRwdXRfdGFnKHRhZyk7CiAgICAgbWV0YV9idWZfLlNlbmRJbml0aWFsTWV0YWRhdGEoY3R4Xy0+aW5pdGlhbF9tZXRhZGF0YV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4Xy0+aW5pdGlhbF9tZXRhZGF0YV9mbGFncygpKTsKKyAgICBpZiAoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWxfc2V0KCkpIHsKKyAgICAgIG1ldGFfYnVmXy5zZXRfY29tcHJlc3Npb25fbGV2ZWwoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgfQogICAgIGN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8gPSB0cnVlOwogICAgIGNhbGxfLlBlcmZvcm1PcHMoJm1ldGFfYnVmXyk7CiAgIH0KQEAgLTEzNSw2ICsxMzgsOSBAQAogICAgIGlmICghY3R4Xy0+c2VudF9pbml0aWFsX21ldGFkYXRhXykgewogICAgICAgZmluaXNoX2J1Zl8uU2VuZEluaXRpYWxNZXRhZGF0YShjdHhfLT5pbml0aWFsX21ldGFkYXRhXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4Xy0+aW5pdGlhbF9tZXRhZGF0YV9mbGFncygpKTsKKyAgICAgIGlmIChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbF9zZXQoKSkgeworICAgICAgICBmaW5pc2hfYnVmXy5zZXRfY29tcHJlc3Npb25fbGV2ZWwoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgICB9CiAgICAgICBjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfID0gdHJ1ZTsKICAgICB9CiAgICAgLy8gVGhlIHJlc3BvbnNlIGlzIGRyb3BwZWQgaWYgdGhlIHN0YXR1cyBpcyBub3QgT0suCkBAIC0xNTMsNiArMTU5LDkgQEAKICAgICBpZiAoIWN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8pIHsKICAgICAgIGZpbmlzaF9idWZfLlNlbmRJbml0aWFsTWV0YWRhdGEoY3R4Xy0+aW5pdGlhbF9tZXRhZGF0YV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgICBpZiAoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWxfc2V0KCkpIHsKKyAgICAgICAgZmluaXNoX2J1Zl8uc2V0X2NvbXByZXNzaW9uX2xldmVsKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsKCkpOworICAgICAgfQogICAgICAgY3R4Xy0+c2VudF9pbml0aWFsX21ldGFkYXRhXyA9IHRydWU7CiAgICAgfQogICAgIGZpbmlzaF9idWZfLlNlcnZlclNlbmRTdGF0dXMoY3R4Xy0+dHJhaWxpbmdfbWV0YWRhdGFfLCBzdGF0dXMpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGwuaCBiL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jYWxsLmgKaW5kZXggZmFiODVkMS4uZGZhYzE3NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NhbGwuaAorKysgYi9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY2FsbC5oCkBAIC0xODAsMTcgKzE4MCwyMyBAQAogCiBjbGFzcyBDYWxsT3BTZW5kSW5pdGlhbE1ldGFkYXRhIHsKICBwdWJsaWM6Ci0gIENhbGxPcFNlbmRJbml0aWFsTWV0YWRhdGEoKSA6IHNlbmRfKGZhbHNlKSB7fQorICBDYWxsT3BTZW5kSW5pdGlhbE1ldGFkYXRhKCkgOiBzZW5kXyhmYWxzZSkgeworICAgIG1heWJlX2NvbXByZXNzaW9uX2xldmVsXy5pc19zZXQgPSBmYWxzZTsKKyAgfQogCiAgIHZvaWQgU2VuZEluaXRpYWxNZXRhZGF0YSgKICAgICAgIGNvbnN0IHN0ZDo6bXVsdGltYXA8Z3JwYzo6c3RyaW5nLCBncnBjOjpzdHJpbmc+JiBtZXRhZGF0YSwKICAgICAgIHVpbnQzMl90IGZsYWdzKSB7CisgICAgbWF5YmVfY29tcHJlc3Npb25fbGV2ZWxfLmlzX3NldCA9IGZhbHNlOwogICAgIHNlbmRfID0gdHJ1ZTsKICAgICBmbGFnc18gPSBmbGFnczsKICAgICBpbml0aWFsX21ldGFkYXRhX2NvdW50XyA9IG1ldGFkYXRhLnNpemUoKTsKICAgICBpbml0aWFsX21ldGFkYXRhXyA9IEZpbGxNZXRhZGF0YUFycmF5KG1ldGFkYXRhKTsKLSAgICAvLyBUT0RPKGRncSk6IGV4cG9zZSBjb21wcmVzc2lvbiBsZXZlbCBpbiBBUEkgc28gaXQgY2FuIGJlIHByb3Blcmx5IHNldC4KLSAgICBtYXliZV9jb21wcmVzc2lvbl9sZXZlbF8uaXNfc2V0ID0gZmFsc2U7CisgIH0KKworICB2b2lkIHNldF9jb21wcmVzc2lvbl9sZXZlbChncnBjX2NvbXByZXNzaW9uX2xldmVsIGxldmVsKSB7CisgICAgbWF5YmVfY29tcHJlc3Npb25fbGV2ZWxfLmlzX3NldCA9IHRydWU7CisgICAgbWF5YmVfY29tcHJlc3Npb25fbGV2ZWxfLmxldmVsID0gbGV2ZWw7CiAgIH0KIAogIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWdfcHJvdG9idWYuaCBiL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb25maWdfcHJvdG9idWYuaAppbmRleCA2YWI2NzcyLi44NjIwZDRiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29uZmlnX3Byb3RvYnVmLmgKKysrIGIvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvbmZpZ19wcm90b2J1Zi5oCkBAIC02Miw2ICs2MiwxMyBAQAogI2RlZmluZSBHUlBDX0NVU1RPTV9TT1VSQ0VMT0NBVElPTiA6Omdvb2dsZTo6cHJvdG9idWY6OlNvdXJjZUxvY2F0aW9uCiAjZW5kaWYKIAorI2lmbmRlZiBHUlBDX0NVU1RPTV9ERVNDUklQVE9SREFUQUJBU0UKKyNpbmNsdWRlIDxnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvcl9kYXRhYmFzZS5oPgorI2RlZmluZSBHUlBDX0NVU1RPTV9ERVNDUklQVE9SREFUQUJBU0UgOjpnb29nbGU6OnByb3RvYnVmOjpEZXNjcmlwdG9yRGF0YWJhc2UKKyNkZWZpbmUgR1JQQ19DVVNUT01fU0lNUExFREVTQ1JJUFRPUkRBVEFCQVNFIFwKKyAgOjpnb29nbGU6OnByb3RvYnVmOjpTaW1wbGVEZXNjcmlwdG9yRGF0YWJhc2UKKyNlbmRpZgorCiAjaWZuZGVmIEdSUENfQ1VTVE9NX1pFUk9DT1BZT1VUUFVUU1RSRUFNCiAjaW5jbHVkZSA8Z29vZ2xlL3Byb3RvYnVmL2lvL2NvZGVkX3N0cmVhbS5oPgogI2luY2x1ZGUgPGdvb2dsZS9wcm90b2J1Zi9pby96ZXJvX2NvcHlfc3RyZWFtLmg+CkBAIC04MCwxMSArODcsMTMgQEAKIAogdHlwZWRlZiBHUlBDX0NVU1RPTV9ERVNDUklQVE9SIERlc2NyaXB0b3I7CiB0eXBlZGVmIEdSUENfQ1VTVE9NX0RFU0NSSVBUT1JQT09MIERlc2NyaXB0b3JQb29sOwordHlwZWRlZiBHUlBDX0NVU1RPTV9ERVNDUklQVE9SREFUQUJBU0UgRGVzY3JpcHRvckRhdGFiYXNlOwogdHlwZWRlZiBHUlBDX0NVU1RPTV9GSUVMRERFU0NSSVBUT1IgRmllbGREZXNjcmlwdG9yOwogdHlwZWRlZiBHUlBDX0NVU1RPTV9GSUxFREVTQ1JJUFRPUiBGaWxlRGVzY3JpcHRvcjsKIHR5cGVkZWYgR1JQQ19DVVNUT01fRklMRURFU0NSSVBUT1JQUk9UTyBGaWxlRGVzY3JpcHRvclByb3RvOwogdHlwZWRlZiBHUlBDX0NVU1RPTV9NRVRIT0RERVNDUklQVE9SIE1ldGhvZERlc2NyaXB0b3I7CiB0eXBlZGVmIEdSUENfQ1VTVE9NX1NFUlZJQ0VERVNDUklQVE9SIFNlcnZpY2VEZXNjcmlwdG9yOwordHlwZWRlZiBHUlBDX0NVU1RPTV9TSU1QTEVERVNDUklQVE9SREFUQUJBU0UgU2ltcGxlRGVzY3JpcHRvckRhdGFiYXNlOwogdHlwZWRlZiBHUlBDX0NVU1RPTV9TT1VSQ0VMT0NBVElPTiBTb3VyY2VMb2NhdGlvbjsKIAogbmFtZXNwYWNlIGlvIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW4uaCBiL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9jb3JlX2NvZGVnZW4uaAppbmRleCA5Njk5YWJmLi4yNTg2Yjk0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vY29yZV9jb2RlZ2VuLmgKKysrIGIvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL2NvcmVfY29kZWdlbi5oCkBAIC0zMSw2ICszMSw5IEBACiAgKgogICovCiAKKyNpZm5kZWYgR1JQQ1hYX0lNUExfQ09ERUdFTl9DT1JFX0NPREVHRU5fSAorI2RlZmluZSBHUlBDWFhfSU1QTF9DT0RFR0VOX0NPUkVfQ09ERUdFTl9ICisKIC8vIFRoaXMgZmlsZSBzaG91bGQgYmUgY29tcGlsZWQgYXMgcGFydCBvZiBncnBjKysuCiAKICNpbmNsdWRlIDxncnBjKysvaW1wbC9jb2RlZ2VuL2NvcmVfY29kZWdlbl9pbnRlcmZhY2UuaD4KQEAgLTgzLDMgKzg2LDUgQEAKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBncnBjCisKKyNlbmRpZiAgLy8gR1JQQ1hYX0lNUExfQ09ERUdFTl9DT1JFX0NPREVHRU5fSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL21ldGhvZF9oYW5kbGVyX2ltcGwuaCBiL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9tZXRob2RfaGFuZGxlcl9pbXBsLmgKaW5kZXggMjFhYzZjNC4uMmY0YmU2NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL21ldGhvZF9oYW5kbGVyX2ltcGwuaAorKysgYi9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vbWV0aG9kX2hhbmRsZXJfaW1wbC5oCkBAIC02NSw2ICs2NSw5IEBACiAgICAgICAgIG9wczsKICAgICBvcHMuU2VuZEluaXRpYWxNZXRhZGF0YShwYXJhbS5zZXJ2ZXJfY29udGV4dC0+aW5pdGlhbF9tZXRhZGF0YV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uc2VydmVyX2NvbnRleHQtPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgaWYgKHBhcmFtLnNlcnZlcl9jb250ZXh0LT5jb21wcmVzc2lvbl9sZXZlbF9zZXQoKSkgeworICAgICAgb3BzLnNldF9jb21wcmVzc2lvbl9sZXZlbChwYXJhbS5zZXJ2ZXJfY29udGV4dC0+Y29tcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgfQogICAgIGlmIChzdGF0dXMub2soKSkgewogICAgICAgc3RhdHVzID0gb3BzLlNlbmRNZXNzYWdlKHJzcCk7CiAgICAgfQpAQCAtMTA0LDYgKzEwNyw5IEBACiAgICAgICAgIG9wczsKICAgICBvcHMuU2VuZEluaXRpYWxNZXRhZGF0YShwYXJhbS5zZXJ2ZXJfY29udGV4dC0+aW5pdGlhbF9tZXRhZGF0YV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uc2VydmVyX2NvbnRleHQtPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgaWYgKHBhcmFtLnNlcnZlcl9jb250ZXh0LT5jb21wcmVzc2lvbl9sZXZlbF9zZXQoKSkgeworICAgICAgb3BzLnNldF9jb21wcmVzc2lvbl9sZXZlbChwYXJhbS5zZXJ2ZXJfY29udGV4dC0+Y29tcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgfQogICAgIGlmIChzdGF0dXMub2soKSkgewogICAgICAgc3RhdHVzID0gb3BzLlNlbmRNZXNzYWdlKHJzcCk7CiAgICAgfQpAQCAtMTQ0LDYgKzE1MCw5IEBACiAgICAgaWYgKCFwYXJhbS5zZXJ2ZXJfY29udGV4dC0+c2VudF9pbml0aWFsX21ldGFkYXRhXykgewogICAgICAgb3BzLlNlbmRJbml0aWFsTWV0YWRhdGEocGFyYW0uc2VydmVyX2NvbnRleHQtPmluaXRpYWxfbWV0YWRhdGFfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uc2VydmVyX2NvbnRleHQtPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgICBpZiAocGFyYW0uc2VydmVyX2NvbnRleHQtPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICAgIG9wcy5zZXRfY29tcHJlc3Npb25fbGV2ZWwocGFyYW0uc2VydmVyX2NvbnRleHQtPmNvbXByZXNzaW9uX2xldmVsKCkpOworICAgICAgfQogICAgIH0KICAgICBvcHMuU2VydmVyU2VuZFN0YXR1cyhwYXJhbS5zZXJ2ZXJfY29udGV4dC0+dHJhaWxpbmdfbWV0YWRhdGFfLCBzdGF0dXMpOwogICAgIHBhcmFtLmNhbGwtPlBlcmZvcm1PcHMoJm9wcyk7CkBAIC0xNzcsNiArMTg2LDkgQEAKICAgICBpZiAoIXBhcmFtLnNlcnZlcl9jb250ZXh0LT5zZW50X2luaXRpYWxfbWV0YWRhdGFfKSB7CiAgICAgICBvcHMuU2VuZEluaXRpYWxNZXRhZGF0YShwYXJhbS5zZXJ2ZXJfY29udGV4dC0+aW5pdGlhbF9tZXRhZGF0YV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5zZXJ2ZXJfY29udGV4dC0+aW5pdGlhbF9tZXRhZGF0YV9mbGFncygpKTsKKyAgICAgIGlmIChwYXJhbS5zZXJ2ZXJfY29udGV4dC0+Y29tcHJlc3Npb25fbGV2ZWxfc2V0KCkpIHsKKyAgICAgICAgb3BzLnNldF9jb21wcmVzc2lvbl9sZXZlbChwYXJhbS5zZXJ2ZXJfY29udGV4dC0+Y29tcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgICB9CiAgICAgfQogICAgIG9wcy5TZXJ2ZXJTZW5kU3RhdHVzKHBhcmFtLnNlcnZlcl9jb250ZXh0LT50cmFpbGluZ19tZXRhZGF0YV8sIHN0YXR1cyk7CiAgICAgcGFyYW0uY2FsbC0+UGVyZm9ybU9wcygmb3BzKTsKQEAgLTE5OSw2ICsyMTEsOSBAQAogICAgIGlmICghY29udGV4dC0+c2VudF9pbml0aWFsX21ldGFkYXRhXykgewogICAgICAgb3BzLT5TZW5kSW5pdGlhbE1ldGFkYXRhKGNvbnRleHQtPmluaXRpYWxfbWV0YWRhdGFfLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgICBpZiAoY29udGV4dC0+Y29tcHJlc3Npb25fbGV2ZWxfc2V0KCkpIHsKKyAgICAgICAgb3BzLT5zZXRfY29tcHJlc3Npb25fbGV2ZWwoY29udGV4dC0+Y29tcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgICB9CiAgICAgICBjb250ZXh0LT5zZW50X2luaXRpYWxfbWV0YWRhdGFfID0gdHJ1ZTsKICAgICB9CiAgICAgb3BzLT5TZXJ2ZXJTZW5kU3RhdHVzKGNvbnRleHQtPnRyYWlsaW5nX21ldGFkYXRhXywgc3RhdHVzKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3JwYysrL2ltcGwvY29kZWdlbi9zZXJ2ZXJfY29udGV4dC5oIGIvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9jb250ZXh0LmgKaW5kZXggY2VhMTNhNS4uMDgyMTJhZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9jb250ZXh0LmgKKysrIGIvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3NlcnZlcl9jb250ZXh0LmgKQEAgLTEzMCw3ICsxMzAsMTMgQEAKICAgZ3JwY19jb21wcmVzc2lvbl9sZXZlbCBjb21wcmVzc2lvbl9sZXZlbCgpIGNvbnN0IHsKICAgICByZXR1cm4gY29tcHJlc3Npb25fbGV2ZWxfOwogICB9Ci0gIHZvaWQgc2V0X2NvbXByZXNzaW9uX2xldmVsKGdycGNfY29tcHJlc3Npb25fbGV2ZWwgbGV2ZWwpOworCisgIHZvaWQgc2V0X2NvbXByZXNzaW9uX2xldmVsKGdycGNfY29tcHJlc3Npb25fbGV2ZWwgbGV2ZWwpIHsKKyAgICBjb21wcmVzc2lvbl9sZXZlbF9zZXRfID0gdHJ1ZTsKKyAgICBjb21wcmVzc2lvbl9sZXZlbF8gPSBsZXZlbDsKKyAgfQorCisgIGJvb2wgY29tcHJlc3Npb25fbGV2ZWxfc2V0KCkgY29uc3QgeyByZXR1cm4gY29tcHJlc3Npb25fbGV2ZWxfc2V0XzsgfQogCiAgIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtIGNvbXByZXNzaW9uX2FsZ29yaXRobSgpIGNvbnN0IHsKICAgICByZXR1cm4gY29tcHJlc3Npb25fYWxnb3JpdGhtXzsKQEAgLTIxNyw2ICsyMjMsNyBAQAogICBzdGQ6Om11bHRpbWFwPGdycGM6OnN0cmluZywgZ3JwYzo6c3RyaW5nPiBpbml0aWFsX21ldGFkYXRhXzsKICAgc3RkOjptdWx0aW1hcDxncnBjOjpzdHJpbmcsIGdycGM6OnN0cmluZz4gdHJhaWxpbmdfbWV0YWRhdGFfOwogCisgIGJvb2wgY29tcHJlc3Npb25fbGV2ZWxfc2V0XzsKICAgZ3JwY19jb21wcmVzc2lvbl9sZXZlbCBjb21wcmVzc2lvbl9sZXZlbF87CiAgIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtIGNvbXByZXNzaW9uX2FsZ29yaXRobV87CiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnBjKysvaW1wbC9jb2RlZ2VuL3N5bmNfc3RyZWFtLmggYi9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaAppbmRleCBjYmZhNDEwLi5iMmI5NzI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaAorKysgYi9pbmNsdWRlL2dycGMrKy9pbXBsL2NvZGVnZW4vc3luY19zdHJlYW0uaApAQCAtMzQ3LDYgKzM0Nyw5IEBACiAgICAgQ2FsbE9wU2V0PENhbGxPcFNlbmRJbml0aWFsTWV0YWRhdGE+IG9wczsKICAgICBvcHMuU2VuZEluaXRpYWxNZXRhZGF0YShjdHhfLT5pbml0aWFsX21ldGFkYXRhXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzKCkpOworICAgIGlmIChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbF9zZXQoKSkgeworICAgICAgb3BzLnNldF9jb21wcmVzc2lvbl9sZXZlbChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbCgpKTsKKyAgICB9CiAgICAgY3R4Xy0+c2VudF9pbml0aWFsX21ldGFkYXRhXyA9IHRydWU7CiAgICAgY2FsbF8tPlBlcmZvcm1PcHMoJm9wcyk7CiAgICAgY2FsbF8tPmNxKCktPlBsdWNrKCZvcHMpOwpAQCAtMzc1LDYgKzM3OCw5IEBACiAgICAgQ2FsbE9wU2V0PENhbGxPcFNlbmRJbml0aWFsTWV0YWRhdGE+IG9wczsKICAgICBvcHMuU2VuZEluaXRpYWxNZXRhZGF0YShjdHhfLT5pbml0aWFsX21ldGFkYXRhXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzKCkpOworICAgIGlmIChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbF9zZXQoKSkgeworICAgICAgb3BzLnNldF9jb21wcmVzc2lvbl9sZXZlbChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbCgpKTsKKyAgICB9CiAgICAgY3R4Xy0+c2VudF9pbml0aWFsX21ldGFkYXRhXyA9IHRydWU7CiAgICAgY2FsbF8tPlBlcmZvcm1PcHMoJm9wcyk7CiAgICAgY2FsbF8tPmNxKCktPlBsdWNrKCZvcHMpOwpAQCAtMzg5LDYgKzM5NSw5IEBACiAgICAgaWYgKCFjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfKSB7CiAgICAgICBvcHMuU2VuZEluaXRpYWxNZXRhZGF0YShjdHhfLT5pbml0aWFsX21ldGFkYXRhXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eF8tPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MoKSk7CisgICAgICBpZiAoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWxfc2V0KCkpIHsKKyAgICAgICAgb3BzLnNldF9jb21wcmVzc2lvbl9sZXZlbChjdHhfLT5jb21wcmVzc2lvbl9sZXZlbCgpKTsKKyAgICAgIH0KICAgICAgIGN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8gPSB0cnVlOwogICAgIH0KICAgICBjYWxsXy0+UGVyZm9ybU9wcygmb3BzKTsKQEAgLTQxMyw2ICs0MjIsOSBAQAogICAgIENhbGxPcFNldDxDYWxsT3BTZW5kSW5pdGlhbE1ldGFkYXRhPiBvcHM7CiAgICAgb3BzLlNlbmRJbml0aWFsTWV0YWRhdGEoY3R4Xy0+aW5pdGlhbF9tZXRhZGF0YV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4Xy0+aW5pdGlhbF9tZXRhZGF0YV9mbGFncygpKTsKKyAgICBpZiAoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWxfc2V0KCkpIHsKKyAgICAgIG9wcy5zZXRfY29tcHJlc3Npb25fbGV2ZWwoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgfQogICAgIGN0eF8tPnNlbnRfaW5pdGlhbF9tZXRhZGF0YV8gPSB0cnVlOwogICAgIGNhbGxfLT5QZXJmb3JtT3BzKCZvcHMpOwogICAgIGNhbGxfLT5jcSgpLT5QbHVjaygmb3BzKTsKQEAgLTQzNCw2ICs0NDYsOSBAQAogICAgIGlmICghY3R4Xy0+c2VudF9pbml0aWFsX21ldGFkYXRhXykgewogICAgICAgb3BzLlNlbmRJbml0aWFsTWV0YWRhdGEoY3R4Xy0+aW5pdGlhbF9tZXRhZGF0YV8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzKCkpOworICAgICAgaWYgKGN0eF8tPmNvbXByZXNzaW9uX2xldmVsX3NldCgpKSB7CisgICAgICAgIG9wcy5zZXRfY29tcHJlc3Npb25fbGV2ZWwoY3R4Xy0+Y29tcHJlc3Npb25fbGV2ZWwoKSk7CisgICAgICB9CiAgICAgICBjdHhfLT5zZW50X2luaXRpYWxfbWV0YWRhdGFfID0gdHJ1ZTsKICAgICB9CiAgICAgY2FsbF8tPlBlcmZvcm1PcHMoJm9wcyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dycGMvY2Vuc3VzLmggYi9pbmNsdWRlL2dycGMvY2Vuc3VzLmgKaW5kZXggMzlkODdiYS4uNjJmZjQ1ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnBjL2NlbnN1cy5oCisrKyBiL2luY2x1ZGUvZ3JwYy9jZW5zdXMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKgotICogQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisgKiBDb3B5cmlnaHQgMjAxNS0yMDE2LCBHb29nbGUgSW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU2LDkgKzU2LDExIEBACiAKIC8qKiBTaHV0ZG93biBhbmQgc3RhcnR1cCBjZW5zdXMgc3Vic3lzdGVtLiBUaGUgJ2ZlYXR1cmVzJyBhcmd1bWVudCBzaG91bGQgYmUKICAqIHRoZSBPUiAofCkgb2YgY2Vuc3VzX2ZlYXR1cmVzIHZhbHVlcy4gSWYgY2Vuc3VzIGZhaWxzIHRvIGluaXRpYWxpemUsIHRoZW4KLSAqIGNlbnN1c19pbml0aWFsaXplKCkgd2lsbCByZXR1cm4gYSBub24temVybyB2YWx1ZS4gSXQgaXMgYW4gZXJyb3IgdG8gY2FsbAotICogY2Vuc3VzX2luaXRpYWxpemUoKSBtb3JlIHRoYW4gb25jZSAod2l0aG91dCBhbiBpbnRlcnZlbmluZwotICogY2Vuc3VzX3NodXRkb3duKCkpLiAqLworICogY2Vuc3VzX2luaXRpYWxpemUoKSB3aWxsIHJldHVybiAtMSwgb3RoZXJ3aXNlIHRoZSBzZXQgb2YgZW5hYmxlZCBmZWF0dXJlcworICogKHdoaWNoIG1heSBiZSBzbWFsbGVyIHRoYW4gdGhhdCBwcm92aWRlZCBpbiB0aGUgYGZlYXR1cmVzYCBhcmd1bWVudCwgc2VlCisgKiBjZW5zdXNfc3VwcG9ydGVkKCkpIGlzIHJldHVybmVkLiBJdCBpcyBhbiBlcnJvciB0byBjYWxsIGNlbnN1c19pbml0aWFsaXplKCkKKyAqIG1vcmUgdGhhbiBvbmNlICh3aXRob3V0IGFuIGludGVydmVuaW5nIGNlbnN1c19zaHV0ZG93bigpKS4gVGhlc2UgZnVuY3Rpb25zCisgKiBhcmUgbm90IHRocmVhZC1zYWZlLiAqLwogQ0VOU1VTQVBJIGludCBjZW5zdXNfaW5pdGlhbGl6ZShpbnQgZmVhdHVyZXMpOwogQ0VOU1VTQVBJIHZvaWQgY2Vuc3VzX3NodXRkb3duKHZvaWQpOwogCkBAIC00MzAsMzAgKzQzMiw0NCBAQAogQ0VOU1VTQVBJIHZvaWQgY2Vuc3VzX3RyYWNlX3NjYW5fZW5kKCk7CiAKIC8qIENvcmUgc3RhdHMgY29sbGVjdGlvbiBBUEkncy4gVGhlIGZvbGxvd2luZyBjb25jZXB0cyBhcmUgdXNlZDoKLSAgICogQWdncmVnYXRpb246IEEgY29sbGVjdGlvbiBvZiB2YWx1ZXMuIENlbnN1cyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nCi0gICAgICAgYWdncmVnYXRpb24gdHlwZXM6Ci0gICAgICAgICBTdW0gLSBhIHNpbmdsZSBzdW1tYXRpb24gdHlwZS4gVHlwaWNhbGx5IHVzZWQgZm9yIGtlZXBpbmcgKGUuZy4pCi0gICAgICAgICAgIGNvdW50cyBvZiBldmVudHMuCi0gICAgICAgICBEaXN0cmlidXRpb24gLSBzdGF0aXN0aWNhbCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24sIHVzZWQgZm9yCi0gICAgICAgICAgIHJlY29yZGluZyBhdmVyYWdlLCBzdGFuZGFyZCBkZXZpYXRpb24gZXRjLgotICAgICAgICAgSGlzdG9ncmFtIC0gYSBoaXN0b2dyYW0gb2YgbWVhc3VyZW1lbnRzIGZhbGxpbmcgaW4gZGVmaW5lZCBidWNrZXQKLSAgICAgICAgICAgYm91bmRhcmllcy4KLSAgICAgICAgIFdpbmRvdyAtIGEgY291bnQgb2YgZXZlbnRzIHRoYXQgaGFwcGVuIGluIHJlb2xsaW5nIHRpbWUgd2luZG93LgotICAgICBOZXcgYWdncmVnYXRpb24gdHlwZXMgY2FuIGJlIGFkZGVkIGJ5IHRoZSB1c2VyLCBpZiBkZXNpcmVkIChzZWUKLSAgICAgY2Vuc3VzX3JlZ2lzdGVyX2FnZ3JlZ2F0aW9uKCkpLgotICAgKiBNZXRyaWM6IEVhY2ggbWVhc3VyZW1lbnQgaXMgZm9yIGEgc2luZ2xlIG1ldHJpYy4gRXhhbXBsZXMgaW5jbHVkZSBSUEMKLSAgICAgbGF0ZW5jeSwgQ1BVIHNlY29uZHMgY29uc3VtZWQsIGFuZCBieXRlcyB0cmFuc21pdHRlZC4KLSAgICogVmlldzogQSB2aWV3IGlzIGEgY29tYmluYXRpb24gb2YgYSBtZXRyaWMsIGEgdGFnIHNldCAoaW4gd2hpY2ggdGhlIHRhZwotICAgICB2YWx1ZXMgYXJlIHJlZ3VsYXIgZXhwcmVzc2lvbnMpIGFuZCBhIHNldCBvZiBhZ2dyZWdhdGlvbnMuIFdoZW4gYQotICAgICBtZWFzdXJlbWVudCBmb3IgYSBtZXRyaWMgbWF0Y2hlcyB0aGUgdmlldyB0YWdzLCBpdCBpcyByZWNvcmRlZCAoZm9yIGVhY2gKLSAgICAgdW5pcXVlIHNldCBvZiB0YWdzKSBhZ2FpbnN0IGVhY2ggYWdncmVnYXRpb24uIEVhY2ggbWV0cmljIGNhbiBoYXZlIGFuCi0gICAgIGFyYml0cmFyeSBudW1iZXIgb2Ygdmlld3MgYnkgd2hpY2ggaXQgd2lsbCBiZSBicm9rZW4gZG93bi4KKyAgICogUmVzb3VyY2U6IFVzZXJzIHJlY29yZCBtZWFzdXJlbWVudHMgZm9yIGEgc2luZ2xlIHJlc291cmNlLiBFeGFtcGxlcworICAgICBpbmNsdWRlIFJQQyBsYXRlbmN5LCBDUFUgc2Vjb25kcyBjb25zdW1lZCwgYW5kIGJ5dGVzIHRyYW5zbWl0dGVkLgorICAgKiBBZ2dyZWdhdGlvbjogQW4gYWdncmVnYXRpb24gb2YgYSBzZXQgb2YgbWVhc3VyZW1lbnRzLiBDZW5zdXMgc3VwcG9ydHMgdGhlCisgICAgICAgZm9sbG93aW5nIGFnZ3JlZ2F0aW9uIHR5cGVzOgorICAgICAgICogRGlzdHJpYnV0aW9uIC0gc3RhdGlzdGljYWwgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLCB1c2VkIGZvcgorICAgICAgICAgcmVjb3JkaW5nIGF2ZXJhZ2UsIHN0YW5kYXJkIGRldmlhdGlvbiBldGMuIENhbiBpbmNsdWRlIGEgaGlzdG9ncmFtLgorICAgICAgICogSW50ZXJ2YWwgLSBhIGNvdW50IG9mIGV2ZW50cyB0aGF0IGhhcHBlbiBpbiBhIHJvbGxpbmcgdGltZSB3aW5kb3cuCisgICAqIFZpZXc6IEEgdmlldyBpcyBhIGNvbWJpbmF0aW9uIG9mIGEgUmVzb3VyY2UsIGEgc2V0IG9mIHRhZyBrZXlzIGFuZCBhbgorICAgICBBZ2dyZWdhdGlvbi4gV2hlbiBhIG1lYXN1cmVtZW50IGZvciBhIFJlc291cmNlIG1hdGNoZXMgdGhlIFZpZXcgdGFncywgaXQgaXMKKyAgICAgcmVjb3JkZWQgKGZvciBlYWNoIHVuaXF1ZSBzZXQgb2YgdGFnIHZhbHVlcykgdXNpbmcgdGhlIEFnZ3JlZ2F0aW9uIHR5cGUuCisgICAgIEVhY2ggcmVzb3VyY2UgY2FuIGhhdmUgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB2aWV3cyBieSB3aGljaCBpdCB3aWxsIGJlCisgICAgIGJyb2tlbiBkb3duLgorCisgIENlbnN1cyB1c2VzIHByb3RvcyB0byBkZWZpbmUgZWFjaCBvZiB0aGUgYWJvdmUsIGFuZCBvdXRwdXQgcmVzdWx0cy4gVGhpcworICBlbnN1cmVzIHVuaWZpY2F0aW9uIGFjcm9zcyB0aGUgZGlmZmVyZW50IGxhbmd1YWdlIGFuZCBydW50aW1lCisgIGltcGxlbWVudGF0aW9ucy4gVGhlIHByb3RvIGRlZmluaXRpb25zIGNhbiBiZSBmb3VuZCBpbiBzcmMvcHJvdG8vY2Vuc3VzLgogKi8KIAorLyogRGVmaW5lIGEgbmV3IHJlc291cmNlLiBgcmVzb3VyY2VfcGJgIHNob3VsZCBjb250YWluIGFuIGVuY29kZWQgUmVzb3VyY2UKKyAgIHByb3RvYnVmLCBgcmVzb3VyY2VfcGJfc2l6ZWAgYmVpbmcgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlci4gUmV0dXJucyBhIC12ZQorICAgdmFsdWUgb24gZXJyb3IsIG9yIGEgcG9zaXRpdmUgKD49IDApIHJlc291cmNlIGlkIChmb3IgdXNlIGluCisgICBjZW5zdXNfZGVsZXRlX3Jlc291cmNlKCkgYW5kIGNlbnN1c19yZWNvcmRfdmFsdWVzKCkpLiBJbiBvcmRlciB0byBiZSB2YWxpZCwgYQorICAgcmVzb3VyY2UgbXVzdCBoYXZlIGEgbmFtZSwgYW5kIGF0IGxlYXN0IG9uZSBudW1lcmF0b3IgaW4gaXQncyB1bml0IHR5cGUuIFRoZQorICAgcmVzb3VyY2UgbmFtZSBtdXN0IGJlIHVuaXF1ZSwgYW5kIGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQgaWYgaXQgaXMgbm90LiAqLworQ0VOU1VTQVBJIGludDMyX3QgY2Vuc3VzX2RlZmluZV9yZXNvdXJjZShjb25zdCB1aW50OF90ICpyZXNvdXJjZV9wYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlc291cmNlX3BiX3NpemUpOworCisvKiBEZWxldGUgYSByZXNvdXJjZSBjcmVhdGVkIGJ5IGNlbnN1c19kZWZpbmVfcmVzb3VyY2UoKS4gKi8KK0NFTlNVU0FQSSB2b2lkIGNlbnN1c19kZWxldGVfcmVzb3VyY2UoaW50MzJfdCByZXNvdXJjZV9pZCk7CisKKy8qIERldGVybWluZSB0aGUgaWQgb2YgYSByZXNvdXJjZSwgZ2l2ZW4gaXQncyBuYW1lLiByZXR1cm5zIC0xIGlmIHRoZSByZXNvdXJjZQorICAgZG9lcyBub3QgZXhpc3QuICovCitDRU5TVVNBUEkgaW50MzJfdCBjZW5zdXNfcmVzb3VyY2VfaWQoY29uc3QgY2hhciAqbmFtZSk7CisKIC8qIEEgc2luZ2xlIHZhbHVlIHRvIGJlIHJlY29yZGVkIGNvbXByaXNlcyB0d28gcGFydHM6IGFuIElEIGZvciB0aGUgcGFydGljdWxhcgotICogbWV0cmljIGFuZCB0aGUgdmFsdWUgdG8gYmUgcmVjb3JkZWQgYWdhaW5zdCBpdC4gKi8KKyAqIHJlc291cmNlIGFuZCB0aGUgdmFsdWUgdG8gYmUgcmVjb3JkZWQgYWdhaW5zdCBpdC4gKi8KIHR5cGVkZWYgc3RydWN0IHsKLSAgdWludDMyX3QgbWV0cmljX2lkOworICBpbnQzMl90IHJlc291cmNlX2lkOwogICBkb3VibGUgdmFsdWU7CiB9IGNlbnN1c192YWx1ZTsKIApAQCAtNDYxLDc4ICs0NzcsNiBAQAogQ0VOU1VTQVBJIHZvaWQgY2Vuc3VzX3JlY29yZF92YWx1ZXMoY2Vuc3VzX2NvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW5zdXNfdmFsdWUgKnZhbHVlcywgc2l6ZV90IG52YWx1ZXMpOwogCi0vKiogVHlwZSByZXByZXNlbnRpbmcgYSBwYXJ0aWN1bGFyIGFnZ3JlZ2F0aW9uICovCi10eXBlZGVmIHN0cnVjdCBjZW5zdXNfYWdncmVnYXRpb25fb3BzIGNlbnN1c19hZ2dyZWdhdGlvbl9vcHM7Ci0KLS8qIFByZWRlZmluZWQgYWdncmVnYXRpb24gdHlwZXMsIGZvciB1c2Ugd2l0aCBjZW5zdXNfdmlld19jcmVhdGUoKS4gKi8KLWV4dGVybiBjZW5zdXNfYWdncmVnYXRpb25fb3BzIGNlbnN1c19hZ2dfc3VtOwotZXh0ZXJuIGNlbnN1c19hZ2dyZWdhdGlvbl9vcHMgY2Vuc3VzX2FnZ19kaXN0cmlidXRpb247Ci1leHRlcm4gY2Vuc3VzX2FnZ3JlZ2F0aW9uX29wcyBjZW5zdXNfYWdnX2hpc3RvZ3JhbTsKLWV4dGVybiBjZW5zdXNfYWdncmVnYXRpb25fb3BzIGNlbnN1c19hZ2dfd2luZG93OwotCi0vKiogSW5mb3JtYXRpb24gbmVlZGVkIHRvIGluc3RhbnRpYXRlIGEgbmV3IGFnZ3JlZ2F0aW9uLiBVc2VkIGluIHZpZXcKLSAgICBjb25zdHJ1Y3Rpb24gdmlhIGNlbnN1c19kZWZpbmVfdmlldygpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICBjb25zdCBjZW5zdXNfYWdncmVnYXRpb25fb3BzICpvcHM7Ci0gIGNvbnN0IHZvaWQgKmNyZWF0ZV9hcmc7IC8qIEFhZ2dyZWdhdGlvbiBpbml0aWFsaXphdGlvbiBhcmd1bWVudC4gKi8KLX0gY2Vuc3VzX2FnZ3JlZ2F0aW9uOwotCi0vKiogQSBjZW5zdXMgdmlldyB0eXBlLiBPcGFxdWUuICovCi10eXBlZGVmIHN0cnVjdCBjZW5zdXNfdmlldyBjZW5zdXNfdmlldzsKLQotLyoqIENyZWF0ZSBhIG5ldyB2aWV3LgotICBAcGFyYW0gbWV0cmljX2lkIE1ldHJpYyB3aXRoIHdoaWNoIHRoaXMgdmlldyBpcyBhc3NvY2lhdGVkLgotICBAcGFyYW0gdGFncyB0YWdzIHRoYXQgZGVmaW5lIHRoZSB2aWV3LgotICBAcGFyYW0gYWdncmVnYXRpb25zIGFnZ3JlZ2F0aW9ucyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgdmlldwotICBAcGFyYW0gbmFnZ3JlZ2F0aW9ucyBudW1iZXIgb2YgYWdncmVnYXRpb25zCi0KLSAgQHJldHVybiBBIG5ldyBjZW5zdXMgdmlldwotKi8KLQotLyogVE9ETyhhdmVpdGNoKTogY29uc2lkZXIgaWYgY29udGV4dCBpcyB0aGUgcmlnaHQgYXJndW1lbnQgdHlwZSB0byBwYXNzIGluCi0gICB0YWdzLiAqLwotQ0VOU1VTQVBJIGNlbnN1c192aWV3ICpjZW5zdXNfdmlld19jcmVhdGUoCi0gICAgdWludDMyX3QgbWV0cmljX2lkLCBjb25zdCBjZW5zdXNfY29udGV4dCAqdGFncywKLSAgICBjb25zdCBjZW5zdXNfYWdncmVnYXRpb24gKmFnZ3JlZ2F0aW9ucywgc2l6ZV90IG5hZ2dyZWdhdGlvbnMpOwotCi0vKiogRGVzdHJveSBhIHByZXZpb3VzbHkgY3JlYXRlZCB2aWV3LiAqLwotQ0VOU1VTQVBJIHZvaWQgY2Vuc3VzX3ZpZXdfZGVsZXRlKGNlbnN1c192aWV3ICp2aWV3KTsKLQotLyoqIE1ldHJpYyBJRCBhc3NvY2lhdGVkIHdpdGggYSB2aWV3ICovCi1DRU5TVVNBUEkgc2l6ZV90IGNlbnN1c192aWV3X21ldHJpYyhjb25zdCBjZW5zdXNfdmlldyAqdmlldyk7Ci0KLS8qKiBOdW1iZXIgb2YgYWdncmVnYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB2aWV3LiAqLwotQ0VOU1VTQVBJIHNpemVfdCBjZW5zdXNfdmlld19uYWdncmVnYXRpb25zKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KTsKLQotLyoqIEdldCB0YWdzIGFzc29jaWF0ZWQgd2l0aCB2aWV3LiAqLwotQ0VOU1VTQVBJIGNvbnN0IGNlbnN1c19jb250ZXh0ICpjZW5zdXNfdmlld190YWdzKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KTsKLQotLyoqIEdldCBhZ2dyZWdhdGlvbiBkZXNjcmlwdG9ycyBhc3NvY2lhdGVkIHdpdGggYSB2aWV3LiAqLwotQ0VOU1VTQVBJIGNvbnN0IGNlbnN1c19hZ2dyZWdhdGlvbiAqY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9ucygKLSAgICBjb25zdCBjZW5zdXNfdmlldyAqdmlldyk7Ci0KLS8qKiBIb2xkcyBhbGwgdGhlIGFnZ3JlZ2F0aW9uIGRhdGEgZm9yIGEgcGFydGljdWxhciB2aWV3IGluc3RhbnRpYXRpb24uIEZvcm1zCi0gIHBhcnQgb2YgdGhlIGRhdGEgcmV0dXJuZWQgYnkgY2Vuc3VzX3ZpZXdfZGF0YSgpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICBjb25zdCBjZW5zdXNfY29udGV4dCAqdGFnczsgLyogVGFncyBmb3IgdGhpcyBzZXQgb2YgYWdncmVnYXRpb25zLiAqLwotICBjb25zdCB2b2lkICoqZGF0YTsgLyogT25lIGRhdGEgc2V0IGZvciBldmVyeSBhZ2dyZWdhdGlvbiBpbiB0aGUgdmlldy4gKi8KLX0gY2Vuc3VzX3ZpZXdfYWdncmVnYXRpb25fZGF0YTsKLQotLyoqIENlbnN1cyB2aWV3IGRhdGEgYXMgcmV0dXJuZWQgYnkgY2Vuc3VzX3ZpZXdfZ2V0X2RhdGEoKS4gKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgc2l6ZV90IG5fdGFnX3NldHM7IC8qIE51bWJlciBvZiB1bmlxdWUgdGFnIHNldHMgdGhhdCBtYXRjaGVkIHZpZXcuICovCi0gIGNvbnN0IGNlbnN1c192aWV3X2FnZ3JlZ2F0aW9uX2RhdGEgKmRhdGE7IC8qIG5fdGFnX3NldHMgZW50cmllcyAqLwotfSBjZW5zdXNfdmlld19kYXRhOwotCi0vKiogR2V0IGRhdGEgZnJvbSBhZ2dyZWdhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGEgdmlldy4KLSAgQHBhcmFtIHZpZXcgVmlldyBmcm9tIHdoaWNoIHRvIGdldCBkYXRhLgotICBAcmV0dXJuIEZ1bGwgc2V0IG9mIGRhdGEgZm9yIGFsbCBhZ2dyZWdhdGlvbnMgZm9yIHRoZSB2aWV3LgotKi8KLUNFTlNVU0FQSSBjb25zdCBjZW5zdXNfdmlld19kYXRhICpjZW5zdXNfdmlld19nZXRfZGF0YShjb25zdCBjZW5zdXNfdmlldyAqdmlldyk7Ci0KLS8qKiBSZXNldCBhbGwgdmlldyBkYXRhIHRvIHplcm8gZm9yIHRoZSBzcGVjaWZpZWQgdmlldyAqLwotQ0VOU1VTQVBJIHZvaWQgY2Vuc3VzX3ZpZXdfcmVzZXQoY2Vuc3VzX3ZpZXcgKnZpZXcpOwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnBjL2ltcGwvY29kZWdlbi9wb3J0X3BsYXRmb3JtLmggYi9pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaAppbmRleCAzYWQ2NjVhLi43YzY3YmFkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaAorKysgYi9pbmNsdWRlL2dycGMvaW1wbC9jb2RlZ2VuL3BvcnRfcGxhdGZvcm0uaApAQCAtMTE5LDcgKzExOSw3IEBACiAvLyBsaWJyYXJpZXM7IGl0IHNob3VsZCBiZSBpbnRlZ3JhdGVkIHdpdGggdGhlIGBfX2xpbnV4X19gIGRlZmluaXRpb25zIGJlbG93LgogI2RlZmluZSBHUFJfUExBVEZPUk1fU1RSSU5HICJtYW55bGludXgiCiAjZGVmaW5lIEdQUl9QT1NJWF9DUkFTSF9IQU5ETEVSIDEKLSNkZWZpbmUgR1BSX0NQVV9MSU5VWCAxCisjZGVmaW5lIEdQUl9DUFVfUE9TSVggMQogI2RlZmluZSBHUFJfR0NDX0FUT01JQyAxCiAjZGVmaW5lIEdQUl9HQ0NfVExTIDEKICNkZWZpbmUgR1BSX0xJTlVYIDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3JwYy9tb2R1bGUubW9kdWxlbWFwIGIvaW5jbHVkZS9ncnBjL21vZHVsZS5tb2R1bGVtYXAKaW5kZXggYWUxMWE3OC4uMDJmYjJmMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnBjL21vZHVsZS5tb2R1bGVtYXAKKysrIGIvaW5jbHVkZS9ncnBjL21vZHVsZS5tb2R1bGVtYXAKQEAgLTEsNSArMSwxNSBAQAogZnJhbWV3b3JrIG1vZHVsZSBncnBjIHsKICAgdW1icmVsbGEgaGVhZGVyICJncnBjLmgiCisKKyAgaGVhZGVyICJieXRlX2J1ZmZlcl9yZWFkZXIuaCIKKyAgaGVhZGVyICJncnBjX3NlY3VyaXR5LmgiCisgIGhlYWRlciAiZ3JwY19zZWN1cml0eV9jb25zdGFudHMuaCIKKyAgaGVhZGVyICJpbXBsL2NvZGVnZW4vYWxsb2MuaCIKKyAgaGVhZGVyICJpbXBsL2NvZGVnZW4vYnl0ZV9idWZmZXJfcmVhZGVyLmgiCisgIGhlYWRlciAic3VwcG9ydC9hbGxvYy5oIgorICBoZWFkZXIgInN1cHBvcnQvcG9ydF9wbGF0Zm9ybS5oIgorICBoZWFkZXIgInN1cHBvcnQvc3RyaW5nX3V0aWwuaCIKKwogICBleHBvcnQgKgogICBtb2R1bGUgKiB7IGV4cG9ydCAqIH0KIH0KZGlmZiAtLWdpdCBhL3BhY2thZ2UueG1sIGIvcGFja2FnZS54bWwKaW5kZXggYmNiOGQxZS4uODY2N2NmOSAxMDA2NDQKLS0tIGEvcGFja2FnZS54bWwKKysrIGIvcGFja2FnZS54bWwKQEAgLTEwLDcgKzEwLDcgQEAKICAgPGVtYWlsPmdycGMtcGFja2FnZXNAZ29vZ2xlLmNvbTwvZW1haWw+CiAgIDxhY3RpdmU+eWVzPC9hY3RpdmU+CiAgPC9sZWFkPgotIDxkYXRlPjIwMTYtMDctMjE8L2RhdGU+CisgPGRhdGU+MjAxNi0wNy0yODwvZGF0ZT4KICA8dGltZT4xNjowNjowNzwvdGltZT4KICA8dmVyc2lvbj4KICAgPHJlbGVhc2U+MS4xLjA8L3JlbGVhc2U+CkBAIC0yMiw3ICsyMiw3IEBACiAgPC9zdGFiaWxpdHk+CiAgPGxpY2Vuc2U+QlNEPC9saWNlbnNlPgogIDxub3Rlcz4KLS0gUEhQNyBTdXBwb3J0ICM3NDY0CistIFBIUDcgU3VwcG9ydCBjb250aW51ZWQsIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uICM3NTQzCiAgPC9ub3Rlcz4KICA8Y29udGVudHM+CiAgIDxkaXIgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9Ii8iPgpAQCAtNDYsNiArNDYsNyBAQAogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWwuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWxfY3JlZGVudGlhbHMuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvcGhwL2V4dC9ncnBjL2NvbXBsZXRpb25fcXVldWUuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvcGhwL2V4dC9ncnBjL3BocDdfd3JhcHBlci5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9waHAvZXh0L2dycGMvcGhwX2dycGMuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvcGhwL2V4dC9ncnBjL3NlcnZlci5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9waHAvZXh0L2dycGMvc2VydmVyX2NyZWRlbnRpYWxzLmgiIHJvbGU9InNyYyIgLz4KQEAgLTMxOSw2ICszMjAsNyBAQAogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2NhbGxfaG9sZGVyLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbF9pbmRleC5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3VyaV9wYXJzZXIuaCIgcm9sZT0ic3JjIiAvPgorICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InRoaXJkX3BhcnR5L25hbm9wYi9wYi5oIiByb2xlPSJzcmMiIC8+CkBAIC0zMjgsMTEgKzMzMCwxMyBAQAogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oIiByb2xlPSJzcmMiIC8+CisgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19pbnRlcmZhY2UuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuaCIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfZmlsdGVyLmgiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvcnBjX21ldHJpY19pZC5oIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2xpYi9zdXJmYWNlL2luaXQuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuYyIgcm9sZT0ic3JjIiAvPgpAQCAtNDk5LDYgKzUwMyw3IEBACiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9pbnNlY3VyZS9zZXJ2ZXJfY2h0dHAyX3Bvc2l4LmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlX3Bvc2l4LmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmMiIHJvbGU9InNyYyIgLz4KICAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJ0aGlyZF9wYXJ0eS9uYW5vcGIvcGJfY29tbW9uLmMiIHJvbGU9InNyYyIgLz4KQEAgLTUxMCw2ICs1MTUsNyBAQAogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvcmVzb2x2ZXIvc29ja2FkZHIvc29ja2FkZHJfcmVzb2x2ZXIuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMiIHJvbGU9InNyYyIgLz4KQEAgLTUxOSw2ICs1MjUsNyBAQAogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuYyIgcm9sZT0ic3JjIiAvPgogICAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBuYW1lPSJzcmMvY29yZS9leHQvY2Vuc3VzL29wZXJhdGlvbi5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMiIHJvbGU9InNyYyIgLz4KKyAgICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbmFtZT0ic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL2V4dC9jZW5zdXMvdHJhY2luZy5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InNyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jIiByb2xlPSJzcmMiIC8+CiAgICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9InRoaXJkX3BhcnR5L2JvcmluZ3NzbC9jcnlwdG8vYWVzL2ludGVybmFsLmgiIHJvbGU9InNyYyIgLz4KQEAgLTExMTcsNSArMTEyNCwyMCBAQAogLSBQSFA3IFN1cHBvcnQgIzc0NjQKICAgIDwvbm90ZXM+CiAgIDwvcmVsZWFzZT4KKyAgPHJlbGVhc2U+CisgICA8dmVyc2lvbj4KKyAgICA8cmVsZWFzZT4xLjAuMFJDMzwvcmVsZWFzZT4KKyAgICA8YXBpPjEuMC4wUkMzPC9hcGk+CisgICA8L3ZlcnNpb24+CisgICA8c3RhYmlsaXR5PgorICAgIDxyZWxlYXNlPnN0YWJsZTwvcmVsZWFzZT4KKyAgICA8YXBpPnN0YWJsZTwvYXBpPgorICAgPC9zdGFiaWxpdHk+CisgICA8ZGF0ZT4yMDE2LTA3LTI4PC9kYXRlPgorICAgPGxpY2Vuc2U+QlNEPC9saWNlbnNlPgorICAgPG5vdGVzPgorLSBQSFA3IFN1cHBvcnQgY29udGludWVkLCByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiAjNzU0MworICAgPC9ub3Rlcz4KKyAgPC9yZWxlYXNlPgogIDwvY2hhbmdlbG9nPgogPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvc2V0dXAuY2ZnIGIvc2V0dXAuY2ZnCmluZGV4IDcxOTQ3MTYuLmRkOTE2MWMgMTAwNjQ0Ci0tLSBhL3NldHVwLmNmZworKysgYi9zZXR1cC5jZmcKQEAgLTksNSArOSw1IEBACiBbYnVpbGRfZXh0XQogaW5wbGFjZT0xCiAKLVtidWlsZF9wcm90b19tb2R1bGVzXQorW2J1aWxkX3BhY2thZ2VfcHJvdG9zXQogZXhjbHVkZT0uKnByb3RvY19wbHVnaW4vcHJvdG9jX3BsdWdpbl90ZXN0XC5wcm90byQKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggNmRiYzE2OS4uY2FkMzAwYyAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTI5LDE3ICsyOSwxOCBAQAogCiAiIiJBIHNldHVwIG1vZHVsZSBmb3IgdGhlIEdSUEMgUHl0aG9uIHBhY2thZ2UuIiIiCiAKK2Zyb20gZGlzdHV0aWxzIGltcG9ydCBleHRlbnNpb24gYXMgX2V4dGVuc2lvbgorZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHV0aWwKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBwa2dfcmVzb3VyY2VzCiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQogaW1wb3J0IHNobGV4CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiAKLWZyb20gZGlzdHV0aWxzIGltcG9ydCBjb3JlIGFzIF9jb3JlCi1mcm9tIGRpc3R1dGlscyBpbXBvcnQgZXh0ZW5zaW9uIGFzIF9leHRlbnNpb24KLWltcG9ydCBwa2dfcmVzb3VyY2VzCiBpbXBvcnQgc2V0dXB0b29scwogZnJvbSBzZXR1cHRvb2xzLmNvbW1hbmQgaW1wb3J0IGVnZ19pbmZvCiAKQEAgLTQ3LDEwICs0OCwxMCBAQAogZWdnX2luZm8ubWFuaWZlc3RfbWFrZXIudGVtcGxhdGUgPSAnUFlUSE9OLU1BTklGRVNULmluJwogCiBQWTMgPSBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMKLVBZVEhPTl9TVEVNID0gJy4vc3JjL3B5dGhvbi9ncnBjaW8nCi1DT1JFX0lOQ0xVREUgPSAoJy4vaW5jbHVkZScsICcuJywpCi1CT1JJTkdTU0xfSU5DTFVERSA9ICgnLi90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvaW5jbHVkZScsKQotWkxJQl9JTkNMVURFID0gKCcuL3RoaXJkX3BhcnR5L3psaWInLCkKK1BZVEhPTl9TVEVNID0gb3MucGF0aC5qb2luKCdzcmMnLCAncHl0aG9uJywgJ2dycGNpbycpCitDT1JFX0lOQ0xVREUgPSAoJ2luY2x1ZGUnLCAnLicsKQorQk9SSU5HU1NMX0lOQ0xVREUgPSAob3MucGF0aC5qb2luKCd0aGlyZF9wYXJ0eScsICdib3Jpbmdzc2wnLCAnaW5jbHVkZScpLCkKK1pMSUJfSU5DTFVERSA9IChvcy5wYXRoLmpvaW4oJ3RoaXJkX3BhcnR5JywgJ3psaWInKSwpCiAKICMgRW5zdXJlIHdlJ3JlIGluIHRoZSBwcm9wZXIgZGlyZWN0b3J5IHdoZXRoZXIgb3Igbm90IHdlJ3JlIGJlaW5nIHVzZWQgYnkgcGlwLgogb3MuY2hkaXIob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKQpAQCAtMTIzLDEwICsxMjQsNyBAQAogCiBDWVRIT05fRVhURU5TSU9OX01PRFVMRV9OQU1FUyA9ICgnZ3JwYy5fY3l0aG9uLmN5Z3JwYycsKQogCi1DWVRIT05fSEVMUEVSX0NfRklMRVMgPSAoCi0gICAgb3MucGF0aC5qb2luKFBZVEhPTl9TVEVNLCAnZ3JwYy9fY3l0aG9uL2xvYWRlci5jJyksCi0gICAgb3MucGF0aC5qb2luKFBZVEhPTl9TVEVNLCAnZ3JwYy9fY3l0aG9uL2ltcG9ydHMuZ2VuZXJhdGVkLmMnKSwKLSkKK0NZVEhPTl9IRUxQRVJfQ19GSUxFUyA9ICgpCiAKIENPUkVfQ19GSUxFUyA9IHR1cGxlKGdycGNfY29yZV9kZXBlbmRlbmNpZXMuQ09SRV9TT1VSQ0VfRklMRVMpCiAKQEAgLTE0MSw3ICsxMzksOSBAQAogaWYgIndpbjMyIiBpbiBzeXMucGxhdGZvcm06CiAgIEVYVEVOU0lPTl9MSUJSQVJJRVMgKz0gKCd3czJfMzInLCkKIAotREVGSU5FX01BQ1JPUyA9ICgoJ09QRU5TU0xfTk9fQVNNJywgMSksICgnX1dJTjMyX1dJTk5UJywgMHg2MDApLCAoJ0dQUl9CQUNLV0FSRFNfQ09NUEFUSUJJTElUWV9NT0RFJywgMSksKQorREVGSU5FX01BQ1JPUyA9ICgKKyAgICAoJ09QRU5TU0xfTk9fQVNNJywgMSksICgnX1dJTjMyX1dJTk5UJywgMHg2MDApLAorICAgICgnR1BSX0JBQ0tXQVJEU19DT01QQVRJQklMSVRZX01PREUnLCAxKSwpCiBpZiAid2luMzIiIGluIHN5cy5wbGF0Zm9ybToKICAgREVGSU5FX01BQ1JPUyArPSAoKCdPUEVOU1NMX1dJTkRPV1MnLCAxKSwgKCdXSU4zMl9MRUFOX0FORF9NRUFOJywgMSksKQogICBpZiAnNjRiaXQnIGluIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpWzBdOgpAQCAtMTYzLDU2ICsxNjMsMzIgQEAKICAgaWYgbWFjX3RhcmdldCBhbmQgKHBrZ19yZXNvdXJjZXMucGFyc2VfdmVyc2lvbihtYWNfdGFyZ2V0KSA8CiAgICAgICAgICAgICAgICAgICAgICBwa2dfcmVzb3VyY2VzLnBhcnNlX3ZlcnNpb24oJzEwLjcuMCcpKToKICAgICBvcy5lbnZpcm9uWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC43JworICAgIG9zLmVudmlyb25bJ19QWVRIT05fSE9TVF9QTEFURk9STSddID0gcmUuc3ViKAorICAgICAgICByJ21hY29zeC1bMC05XStcLlswLTldKy0oLispJywKKyAgICAgICAgcidtYWNvc3gtMTAuNy1cMScsCisgICAgICAgIHV0aWwuZ2V0X3BsYXRmb3JtKCkpCiAKLQotZGVmIGN5dGhvbl9leHRlbnNpb25zKCk6Ci0gIG1vZHVsZV9uYW1lcyA9IGxpc3QoQ1lUSE9OX0VYVEVOU0lPTl9NT0RVTEVfTkFNRVMpCi0gIGV4dHJhX3NvdXJjZXMgPSBsaXN0KENZVEhPTl9IRUxQRVJfQ19GSUxFUykgKyBsaXN0KENPUkVfQ19GSUxFUykKLSAgaW5jbHVkZV9kaXJzID0gbGlzdChFWFRFTlNJT05fSU5DTFVERV9ESVJFQ1RPUklFUykKLSAgbGlicmFyaWVzID0gbGlzdChFWFRFTlNJT05fTElCUkFSSUVTKQotICBkZWZpbmVfbWFjcm9zID0gbGlzdChERUZJTkVfTUFDUk9TKQotICBidWlsZF93aXRoX2N5dGhvbiA9IGJvb2woQlVJTERfV0lUSF9DWVRIT04pCi0gICMgU2V0IGNvbXBpbGVyIGRpcmVjdGl2ZXMgbGluZXRyYWNlIGFyZ3VtZW50IG9ubHkgaWYgd2UgY2FyZSBhYm91dCB0cmFjaW5nOwotICAjIHRoaXMgaXMgZHVlIHRvIEN5dGhvbiBoYXZpbmcgZGlmZmVyZW50IGJlaGF2aW9yIGJldHdlZW4gbGluZXRyYWNlIGJlaW5nCi0gICMgRmFsc2UgYW5kIGxpbmV0cmFjZSBiZWluZyB1bnNldC4gU2VlIGlzc3VlICM1Njg5LgotICBjeXRob25fY29tcGlsZXJfZGlyZWN0aXZlcyA9IHt9Ci0gIGlmIEVOQUJMRV9DWVRIT05fVFJBQ0lORzoKLSAgICBkZWZpbmVfbWFjcm9zID0gZGVmaW5lX21hY3JvcyArIFsoJ0NZVEhPTl9UUkFDRV9OT0dJTCcsIDEpXQotICAgIGN5dGhvbl9jb21waWxlcl9kaXJlY3RpdmVzWydsaW5ldHJhY2UnXSA9IFRydWUKLSAgcHl4X21vZHVsZV9maWxlcyA9IFtvcy5wYXRoLmpvaW4oUFlUSE9OX1NURU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUucmVwbGFjZSgnLicsICcvJykgKyAnLnB5eCcpCi0gICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gbW9kdWxlX25hbWVzXQotICBjX21vZHVsZV9maWxlcyA9IFtvcy5wYXRoLmpvaW4oUFlUSE9OX1NURU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnJlcGxhY2UoJy4nLCAnLycpICsgJy5jJykKLSAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gbW9kdWxlX25hbWVzXQotICBpZiBub3QgYnVpbGRfd2l0aF9jeXRob246Ci0gICAgZm9yIG1vZHVsZV9maWxlIGluIGNfbW9kdWxlX2ZpbGVzOgotICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1vZHVsZV9maWxlKToKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQ3l0aG9uLWdlbmVyYXRlZCBmaWxlcyBhcmUgbWlzc2luZzsgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JjaW5nIEN5dGhvbiBidWlsZC4uLlxuJykKLSAgICAgICAgYnVpbGRfd2l0aF9jeXRob24gPSBUcnVlCi0gICAgICAgIGJyZWFrCi0gIG1vZHVsZV9maWxlcyA9IHB5eF9tb2R1bGVfZmlsZXMgaWYgYnVpbGRfd2l0aF9jeXRob24gZWxzZSBjX21vZHVsZV9maWxlcworZGVmIGN5dGhvbl9leHRlbnNpb25zX2FuZF9uZWNlc3NpdHkoKToKKyAgY3l0aG9uX21vZHVsZV9maWxlcyA9IFtvcy5wYXRoLmpvaW4oUFlUSE9OX1NURU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5yZXBsYWNlKCcuJywgJy8nKSArICcucHl4JykKKyAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIENZVEhPTl9FWFRFTlNJT05fTU9EVUxFX05BTUVTXQogICBleHRlbnNpb25zID0gWwogICAgICAgX2V4dGVuc2lvbi5FeHRlbnNpb24oCiAgICAgICAgICAgbmFtZT1tb2R1bGVfbmFtZSwKLSAgICAgICAgICBzb3VyY2VzPVttb2R1bGVfZmlsZV0gKyBleHRyYV9zb3VyY2VzLAotICAgICAgICAgIGluY2x1ZGVfZGlycz1pbmNsdWRlX2RpcnMsIGxpYnJhcmllcz1saWJyYXJpZXMsCi0gICAgICAgICAgZGVmaW5lX21hY3Jvcz1kZWZpbmVfbWFjcm9zLAorICAgICAgICAgIHNvdXJjZXM9W21vZHVsZV9maWxlXSArIGxpc3QoQ1lUSE9OX0hFTFBFUl9DX0ZJTEVTKSArIGxpc3QoQ09SRV9DX0ZJTEVTKSwKKyAgICAgICAgICBpbmNsdWRlX2RpcnM9bGlzdChFWFRFTlNJT05fSU5DTFVERV9ESVJFQ1RPUklFUyksCisgICAgICAgICAgbGlicmFyaWVzPWxpc3QoRVhURU5TSU9OX0xJQlJBUklFUyksCisgICAgICAgICAgZGVmaW5lX21hY3Jvcz1saXN0KERFRklORV9NQUNST1MpLAogICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncz1saXN0KENGTEFHUyksCiAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPWxpc3QoTERGTEFHUyksCi0gICAgICApIGZvciAobW9kdWxlX25hbWUsIG1vZHVsZV9maWxlKSBpbiB6aXAobW9kdWxlX25hbWVzLCBtb2R1bGVfZmlsZXMpCisgICAgICApIGZvciAobW9kdWxlX25hbWUsIG1vZHVsZV9maWxlKSBpbiB6aXAobGlzdChDWVRIT05fRVhURU5TSU9OX01PRFVMRV9OQU1FUyksIGN5dGhvbl9tb2R1bGVfZmlsZXMpCiAgIF0KLSAgaWYgYnVpbGRfd2l0aF9jeXRob246Ci0gICAgaW1wb3J0IEN5dGhvbi5CdWlsZAotICAgIHJldHVybiBDeXRob24uQnVpbGQuY3l0aG9uaXplKAotICAgICAgICBleHRlbnNpb25zLAotICAgICAgICBpbmNsdWRlX3BhdGg9aW5jbHVkZV9kaXJzLAotICAgICAgICBjb21waWxlcl9kaXJlY3RpdmVzPWN5dGhvbl9jb21waWxlcl9kaXJlY3RpdmVzKQotICBlbHNlOgotICAgIHJldHVybiBleHRlbnNpb25zCisgIG5lZWRfY3l0aG9uID0gQlVJTERfV0lUSF9DWVRIT04KKyAgaWYgbm90IEJVSUxEX1dJVEhfQ1lUSE9OOgorICAgIG5lZWRfY3l0aG9uID0gbmVlZF9jeXRob24gb3Igbm90IGNvbW1hbmRzLmNoZWNrX2FuZF91cGRhdGVfY3l0aG9uaXphdGlvbihleHRlbnNpb25zKQorICByZXR1cm4gY29tbWFuZHMudHJ5X2N5dGhvbml6ZShleHRlbnNpb25zLCBsaW5ldHJhY2luZz1FTkFCTEVfQ1lUSE9OX1RSQUNJTkcsIG1hbmRhdG9yeT1CVUlMRF9XSVRIX0NZVEhPTiksIG5lZWRfY3l0aG9uCiAKLUNZVEhPTl9FWFRFTlNJT05fTU9EVUxFUyA9IGN5dGhvbl9leHRlbnNpb25zKCkKK0NZVEhPTl9FWFRFTlNJT05fTU9EVUxFUywgbmVlZF9jeXRob24gPSBjeXRob25fZXh0ZW5zaW9uc19hbmRfbmVjZXNzaXR5KCkKIAogUEFDS0FHRV9ESVJFQ1RPUklFUyA9IHsKICAgICAnJzogUFlUSE9OX1NURU0sCkBAIC0yMzIsNiArMjA4LDE1IEBACiAgICAgJ3NwaGlueF9ydGRfdGhlbWU+PTAuMS44JywKICAgICAnc2l4Pj0xLjEwJywKICkKK2lmIEJVSUxEX1dJVEhfQ1lUSE9OOgorICBzeXMuc3RkZXJyLndyaXRlKAorICAgICJZb3UgcmVxdWVzdGVkIGEgQ3l0aG9uIGJ1aWxkIHZpYSBHUlBDX1BZVEhPTl9CVUlMRF9XSVRIX0NZVEhPTiwgIgorICAgICJidXQgZG8gbm90IGhhdmUgQ3l0aG9uIGluc3RhbGxlZC4gV2Ugd29uJ3Qgc3RvcCB5b3UgZnJvbSB1c2luZyAiCisgICAgIm90aGVyIGNvbW1hbmRzLCBidXQgdGhlIGV4dGVuc2lvbiBmaWxlcyB3aWxsIGZhaWwgdG8gYnVpbGQuXG4iKQorZWxpZiBuZWVkX2N5dGhvbjoKKyAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICdXZSBjb3VsZCBub3QgZmluZCBDeXRob24uIFNldHVwIG1heSB0YWtlIDEwLTIwIG1pbnV0ZXMuXG4nKQorICBTRVRVUF9SRVFVSVJFUyArPSAoJ2N5dGhvbj49MC4yMycsKQogCiBDT01NQU5EX0NMQVNTID0gewogICAgICdkb2MnOiBjb21tYW5kcy5TcGhpbnhEb2N1bWVudGF0aW9uLApAQCAtMjQyLDEyICsyMjcsMTMgQEAKIH0KIAogIyBFbnN1cmUgdGhhdCBwYWNrYWdlIGRhdGEgaXMgY29waWVkIG92ZXIgYmVmb3JlIGFueSBjb21tYW5kcyBoYXZlIGJlZW4gcnVuOgotY3JlZGVudGlhbHNfZGlyID0gb3MucGF0aC5qb2luKFBZVEhPTl9TVEVNLCAnZ3JwYy9fY3l0aG9uL19jcmVkZW50aWFscycpCitjcmVkZW50aWFsc19kaXIgPSBvcy5wYXRoLmpvaW4oUFlUSE9OX1NURU0sICdncnBjJywgJ19jeXRob24nLCAnX2NyZWRlbnRpYWxzJykKIHRyeToKICAgb3MubWtkaXIoY3JlZGVudGlhbHNfZGlyKQogZXhjZXB0IE9TRXJyb3I6CiAgIHBhc3MKLXNodXRpbC5jb3B5ZmlsZSgnZXRjL3Jvb3RzLnBlbScsIG9zLnBhdGguam9pbihjcmVkZW50aWFsc19kaXIsICdyb290cy5wZW0nKSkKK3NodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4oJ2V0YycsICdyb290cy5wZW0nKSwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oY3JlZGVudGlhbHNfZGlyLCAncm9vdHMucGVtJykpCiAKIFBBQ0tBR0VfREFUQSA9IHsKICAgICAjIEJpbmFyaWVzIHRoYXQgbWF5IG9yIG1heSBub3QgYmUgcHJlc2VudCBpbiB0aGUgZmluYWwgaW5zdGFsbGF0aW9uLCBidXQgYXJlCmRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvcnVieV9nZW5lcmF0b3JfaGVscGVycy1pbmwuaCBiL3NyYy9jb21waWxlci9ydWJ5X2dlbmVyYXRvcl9oZWxwZXJzLWlubC5oCmluZGV4IGZmNjkzOWUuLmFhM2MyMmYgMTAwNjQ0Ci0tLSBhL3NyYy9jb21waWxlci9ydWJ5X2dlbmVyYXRvcl9oZWxwZXJzLWlubC5oCisrKyBiL3NyYy9jb21waWxlci9ydWJ5X2dlbmVyYXRvcl9oZWxwZXJzLWlubC5oCkBAIC00OCw3ICs0OCw3IEBACiAgICAgICBmaWxlLT5uYW1lKCkuZmluZF9sYXN0X29mKCIucHJvdG8iKSA9PSBmaWxlLT5uYW1lKCkuc2l6ZSgpIC0gMSkgewogICAgICpmaWxlX25hbWVfb3JfZXJyb3IgPQogICAgICAgICBmaWxlLT5uYW1lKCkuc3Vic3RyKDAsIGZpbGUtPm5hbWUoKS5zaXplKCkgLSBwcm90b19zdWZmaXhfbGVuZ3RoKSArCi0gICAgICAgICJfc2VydmljZXMucmIiOworICAgICAgICAiX3NlcnZpY2VzX3BiLnJiIjsKICAgICByZXR1cm4gdHJ1ZTsKICAgfSBlbHNlIHsKICAgICAqZmlsZV9uYW1lX29yX2Vycm9yID0gIkludmFsaWQgcHJvdG8gZmlsZSBuYW1lOiAgbXVzdCBlbmQgd2l0aCAucHJvdG8iOwpAQCAtNTgsNyArNTgsNyBAQAogCiBpbmxpbmUgZ3JwYzo6c3RyaW5nIE1lc3NhZ2VzUmVxdWlyZU5hbWUoCiAgICAgY29uc3QgZ3JwYzo6cHJvdG9idWY6OkZpbGVEZXNjcmlwdG9yICpmaWxlKSB7Ci0gIHJldHVybiBSZXBsYWNlKGZpbGUtPm5hbWUoKSwgIi5wcm90byIsICIiKTsKKyAgcmV0dXJuIFJlcGxhY2UoZmlsZS0+bmFtZSgpLCAiLnByb3RvIiwgIl9wYiIpOwogfQogCiAvLyBHZXQgbGVhZGluZyBvciB0cmFpbGluZyBjb21tZW50cyBpbiBhIHN0cmluZy4gQ29tbWVudCBsaW5lcyBzdGFydCB3aXRoICIjICIuCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlhYTRiYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYwpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvY2Vuc3VzLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIgorCisvLyBBZGQgYmFzZSBSUEMgcmVzb3VyY2UgZGVmaW5pdGlvbnMgZm9yIHVzZSBieSBSUEMgcnVudGltZS4KKy8vCisvLyBUT0RPKGF2ZWl0Y2gpOiBBbGwgb2YgdGhlc2UgYXJlIGN1cnJlbnRseSBoYXJkd2lyZWQgZGVmaW5pdGlvbnMgZW5jb2RlZCBpbgorLy8gdGhlIGNvZGUgaW4gdGhpcyBmaWxlLiBUaGVzZSBzaG91bGQgYmUgY29udmVydGVkIHRvIHVzZSBhbiBleHRlcm5hbAorLy8gY29uZmlndXJhdGlvbiBtZWNoYW5pc20sIGluIHdoaWNoIHRoZXNlIHJlc291cmNlcyBhcmUgZGVmaW5lZCBpbiBhIHRleHQKKy8vIGZpbGUsIHdoaWNoIGlzIGNvbXBpbGVkIHRvIC5wYiBmb3JtYXQgYW5kIHJlYWQgYnkgc3RpbGwtdG8tYmUtd3JpdHRlbgorLy8gY29uZmlndXJhdGlvbiBmdW5jdGlvbnMuCisKKy8vIERlZmluZSBhbGwgYmFzZSByZXNvdXJjZXMuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBieSBjZW5zdXMgaW5pdGlhbGl6YXRpb24uCit2b2lkIGRlZmluZV9iYXNlX3Jlc291cmNlcygpIHsKKyAgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXQgbnVtZXJhdG9yID0KKyAgICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0X1NFQ1M7CisgIHJlc291cmNlIHIgPSB7ImNsaWVudF9ycGNfbGF0ZW5jeSIsICAgICAgICAgICAgIC8vIG5hbWUKKyAgICAgICAgICAgICAgICAiQ2xpZW50IFJQQyBsYXRlbmN5IGluIHNlY29uZHMiLCAgLy8gZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJlZml4CisgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5fbnVtZXJhdG9ycworICAgICAgICAgICAgICAgICZudW1lcmF0b3IsICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1lcmF0b3JzCisgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5fZGVub21pbmF0b3JzCisgICAgICAgICAgICAgICAgTlVMTH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlbm9taW5hdG9ycworICBkZWZpbmVfcmVzb3VyY2UoJnIpOworICByID0gKHJlc291cmNlKXsic2VydmVyX3JwY19sYXRlbmN5IiwgICAgICAgICAgICAgLy8gbmFtZQorICAgICAgICAgICAgICAgICAiU2VydmVyIFJQQyBsYXRlbmN5IGluIHNlY29uZHMiLCAgLy8gZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZWZpeAorICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbl9udW1lcmF0b3JzCisgICAgICAgICAgICAgICAgICZudW1lcmF0b3IsICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1lcmF0b3JzCisgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuX2Rlbm9taW5hdG9ycworICAgICAgICAgICAgICAgICBOVUxMfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVub21pbmF0b3JzCisgIGRlZmluZV9yZXNvdXJjZSgmcik7Cit9CmRpZmYgLS1naXQgYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19jeXRob24vaW1wb3J0cy5nZW5lcmF0ZWQuYyBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaApzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBzcmMvcHl0aG9uL2dycGNpby9ncnBjL19jeXRob24vaW1wb3J0cy5nZW5lcmF0ZWQuYwpyZW5hbWUgdG8gc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oCmluZGV4IGMwMDgwYjUuLmU1YTc2OTYgMTAwNjQ0Ci0tLSBhL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9pbXBvcnRzLmdlbmVyYXRlZC5jCisrKyBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaApAQCAtMSw1ICsxLDQgQEAKIC8qCi0gKgogICogQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTMxLDcgKzMwLDEwIEBACiAgKgogICovCiAKLS8qIFRPRE8oYXRhc2gpIHJlbW92ZSBjcnVmdCAqLwotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+CisjaWZuZGVmIEdSUENfQ09SRV9FWFRfQ0VOU1VTX0JBU0VfUkVTT1VSQ0VTX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9DRU5TVVNfQkFTRV9SRVNPVVJDRVNfSAogCi0jaW5jbHVkZSAiaW1wb3J0cy5nZW5lcmF0ZWQuaCIKKy8qIERlZmluZSBhbGwgYmFzZSByZXNvdXJjZXMuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBieSBjZW5zdXMgaW5pdGlhbGl6YXRpb24uICovCit2b2lkIGRlZmluZV9iYXNlX3Jlc291cmNlcygpOworCisjZW5kaWYgLyogR1JQQ19DT1JFX0VYVF9DRU5TVVNfQkFTRV9SRVNPVVJDRVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYwppbmRleCBkNjE0NjM2Li42NDdmMDYzIDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYworKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2dlbi9jZW5zdXMucGIuYwpAQCAtNTMsMjkgKzUzLDI0IEBACiAgICAgUEJfTEFTVF9GSUVMRAogfTsKIAotY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX01ldHJpY19maWVsZHNbNV0gPSB7Ci0gICAgUEJfRklFTEQoICAxLCBTVFJJTkcgICwgT1BUSU9OQUwsIENBTExCQUNLLCBGSVJTVCwgZ29vZ2xlX2NlbnN1c19NZXRyaWMsIG5hbWUsIG5hbWUsIDApLAotICAgIFBCX0ZJRUxEKCAgMiwgU1RSSU5HICAsIE9QVElPTkFMLCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfTWV0cmljLCBkZXNjcmlwdGlvbiwgbmFtZSwgMCksCi0gICAgUEJfRklFTEQoICAzLCBNRVNTQUdFICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19NZXRyaWMsIHVuaXQsIGRlc2NyaXB0aW9uLCAmZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2ZpZWxkcyksCi0gICAgUEJfRklFTEQoICA0LCBJTlQzMiAgICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19NZXRyaWMsIGlkLCB1bml0LCAwKSwKK2NvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9maWVsZHNbNF0gPSB7CisgICAgUEJfRklFTEQoICAxLCBTVFJJTkcgICwgT1BUSU9OQUwsIENBTExCQUNLLCBGSVJTVCwgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSwgbmFtZSwgbmFtZSwgMCksCisgICAgUEJfRklFTEQoICAyLCBTVFJJTkcgICwgT1BUSU9OQUwsIENBTExCQUNLLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSwgZGVzY3JpcHRpb24sIG5hbWUsIDApLAorICAgIFBCX0ZJRUxEKCAgMywgTUVTU0FHRSAsIE9QVElPTkFMLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2UsIHVuaXQsIGRlc2NyaXB0aW9uLCAmZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfZmllbGRzKSwKICAgICBQQl9MQVNUX0ZJRUxECiB9OwogCi1jb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9maWVsZHNbMl0gPSB7Ci0gICAgUEJfRklFTEQoICAxLCBVRU5VTSAgICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBGSVJTVCwgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0LCB0eXBlLCB0eXBlLCAwKSwKK2NvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfZmllbGRzWzRdID0geworICAgIFBCX0ZJRUxEKCAgMSwgSU5UMzIgICAsIE9QVElPTkFMLCBTVEFUSUMgICwgRklSU1QsIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0LCBwcmVmaXgsIHByZWZpeCwgMCksCisgICAgUEJfRklFTEQoICAyLCBVRU5VTSAgICwgUkVQRUFURUQsIENBTExCQUNLLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXQsIG51bWVyYXRvciwgcHJlZml4LCAwKSwKKyAgICBQQl9GSUVMRCggIDMsIFVFTlVNICAgLCBSRVBFQVRFRCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdCwgZGVub21pbmF0b3IsIG51bWVyYXRvciwgMCksCiAgICAgUEJfTEFTVF9GSUVMRAogfTsKIAotY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXRfZmllbGRzWzRdID0gewotICAgIFBCX0ZJRUxEKCAgMSwgSU5UMzIgICAsIE9QVElPTkFMLCBTVEFUSUMgICwgRklSU1QsIGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgcHJlZml4LCBwcmVmaXgsIDApLAotICAgIFBCX0ZJRUxEKCAgMiwgTUVTU0FHRSAsIFJFUEVBVEVELCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yLCBwcmVmaXgsICZnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfZmllbGRzKSwKLSAgICBQQl9GSUVMRCggIDMsIE1FU1NBR0UgLCBSRVBFQVRFRCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIGRlbm9taW5hdG9yLCBudW1lcmF0b3IsICZnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfZmllbGRzKSwKLSAgICBQQl9MQVNUX0ZJRUxECi19OwotCi1jb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2ZpZWxkc1szXSA9IHsKLSAgICBQQl9PTkVPRl9GSUVMRChvcHRpb25zLCAgIDEsIE1FU1NBR0UgLCBPTkVPRiwgU1RBVElDICAsIEZJUlNULCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgYnVja2V0X2JvdW5kYXJpZXMsIGJ1Y2tldF9ib3VuZGFyaWVzLCAmZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19maWVsZHMpLAotICAgIFBCX09ORU9GX0ZJRUxEKG9wdGlvbnMsICAgMiwgTUVTU0FHRSAsIE9ORU9GLCBTVEFUSUMgICwgRklSU1QsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBpbnRlcnZhbF9ib3VuZGFyaWVzLCBpbnRlcnZhbF9ib3VuZGFyaWVzLCAmZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfSW50ZXJ2YWxCb3VuZGFyaWVzX2ZpZWxkcyksCitjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2ZpZWxkc1s0XSA9IHsKKyAgICBQQl9GSUVMRCggIDEsIFVFTlVNICAgLCBPUFRJT05BTCwgU1RBVElDICAsIEZJUlNULCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgdHlwZSwgdHlwZSwgMCksCisgICAgUEJfT05FT0ZfRklFTEQob3B0aW9ucywgICAyLCBNRVNTQUdFICwgT05FT0YsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIGJ1Y2tldF9ib3VuZGFyaWVzLCB0eXBlLCAmZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19maWVsZHMpLAorICAgIFBCX09ORU9GX0ZJRUxEKG9wdGlvbnMsICAgMywgTUVTU0FHRSAsIE9ORU9GLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBpbnRlcnZhbF9ib3VuZGFyaWVzLCB0eXBlLCAmZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfSW50ZXJ2YWxCb3VuZGFyaWVzX2ZpZWxkcyksCiAgICAgUEJfTEFTVF9GSUVMRAogfTsKIApAQCAtMTI0LDI1ICsxMTksMjcgQEAKIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19WaWV3X2ZpZWxkc1s2XSA9IHsKICAgICBQQl9GSUVMRCggIDEsIFNUUklORyAgLCBPUFRJT05BTCwgQ0FMTEJBQ0ssIEZJUlNULCBnb29nbGVfY2Vuc3VzX1ZpZXcsIG5hbWUsIG5hbWUsIDApLAogICAgIFBCX0ZJRUxEKCAgMiwgU1RSSU5HICAsIE9QVElPTkFMLCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfVmlldywgZGVzY3JpcHRpb24sIG5hbWUsIDApLAotICAgIFBCX0ZJRUxEKCAgMywgSU5UMzIgICAsIE9QVElPTkFMLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfVmlldywgbWV0cmljX2lkLCBkZXNjcmlwdGlvbiwgMCksCi0gICAgUEJfRklFTEQoICA0LCBNRVNTQUdFICwgT1BUSU9OQUwsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19WaWV3LCBhZ2dyZWdhdGlvbiwgbWV0cmljX2lkLCAmZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfZmllbGRzKSwKKyAgICBQQl9GSUVMRCggIDMsIFNUUklORyAgLCBPUFRJT05BTCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX1ZpZXcsIHJlc291cmNlX25hbWUsIGRlc2NyaXB0aW9uLCAwKSwKKyAgICBQQl9GSUVMRCggIDQsIE1FU1NBR0UgLCBPUFRJT05BTCwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX1ZpZXcsIGFnZ3JlZ2F0aW9uLCByZXNvdXJjZV9uYW1lLCAmZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfZmllbGRzKSwKICAgICBQQl9GSUVMRCggIDUsIFNUUklORyAgLCBSRVBFQVRFRCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX1ZpZXcsIHRhZ19rZXksIGFnZ3JlZ2F0aW9uLCAwKSwKICAgICBQQl9MQVNUX0ZJRUxECiB9OwogCi1jb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZmllbGRzWzZdID0geworY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2ZpZWxkc1s3XSA9IHsKICAgICBQQl9GSUVMRCggIDEsIFNUUklORyAgLCBPUFRJT05BTCwgQ0FMTEJBQ0ssIEZJUlNULCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBuYW1lLCBuYW1lLCAwKSwKICAgICBQQl9GSUVMRCggIDIsIFNUUklORyAgLCBPUFRJT05BTCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkZXNjcmlwdGlvbiwgbmFtZSwgMCksCi0gICAgUEJfT05FT0ZfRklFTEQoZGF0YSwgICAzLCBNRVNTQUdFICwgT05FT0YsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGlzdHJpYnV0aW9uLCBkZXNjcmlwdGlvbiwgJmdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX2ZpZWxkcyksCi0gICAgUEJfT05FT0ZfRklFTEQoZGF0YSwgICA0LCBNRVNTQUdFICwgT05FT0YsIFNUQVRJQyAgLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgaW50ZXJ2YWxfc3RhdHMsIGRlc2NyaXB0aW9uLCAmZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX2ZpZWxkcyksCi0gICAgUEJfRklFTEQoICA1LCBNRVNTQUdFICwgUkVQRUFURUQsIENBTExCQUNLLCBPVEhFUiwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgdGFnLCBkYXRhLmludGVydmFsX3N0YXRzLCAmZ29vZ2xlX2NlbnN1c19UYWdfZmllbGRzKSwKKyAgICBQQl9PTkVPRl9GSUVMRChkYXRhLCAgIDMsIFVJTlQ2NCAgLCBPTkVPRiwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBjb3VudCwgZGVzY3JpcHRpb24sIDApLAorICAgIFBCX09ORU9GX0ZJRUxEKGRhdGEsICAgNCwgTUVTU0FHRSAsIE9ORU9GLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRpc3RyaWJ1dGlvbiwgZGVzY3JpcHRpb24sICZnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9maWVsZHMpLAorICAgIFBCX09ORU9GX0ZJRUxEKGRhdGEsICAgNSwgTUVTU0FHRSAsIE9ORU9GLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGludGVydmFsX3N0YXRzLCBkZXNjcmlwdGlvbiwgJmdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19maWVsZHMpLAorICAgIFBCX0ZJRUxEKCAgNiwgTUVTU0FHRSAsIFJFUEVBVEVELCBDQUxMQkFDSywgT1RIRVIsIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIHRhZywgZGF0YS5pbnRlcnZhbF9zdGF0cywgJmdvb2dsZV9jZW5zdXNfVGFnX2ZpZWxkcyksCiAgICAgUEJfTEFTVF9GSUVMRAogfTsKIAotY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnNfZmllbGRzWzRdID0gewotICAgIFBCX0ZJRUxEKCAgMSwgTUVTU0FHRSAsIFJFUEVBVEVELCBDQUxMQkFDSywgRklSU1QsIGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucywgYWdncmVnYXRpb24sIGFnZ3JlZ2F0aW9uLCAmZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9maWVsZHMpLAotICAgIFBCX0ZJRUxEKCAgMiwgTUVTU0FHRSAsIE9QVElPTkFMLCBTVEFUSUMgICwgT1RIRVIsIGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucywgc3RhcnQsIGFnZ3JlZ2F0aW9uLCAmZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfZmllbGRzKSwKLSAgICBQQl9GSUVMRCggIDMsIE1FU1NBR0UgLCBPUFRJT05BTCwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnMsIGVuZCwgc3RhcnQsICZnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9maWVsZHMpLAorY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX01ldHJpY19maWVsZHNbNV0gPSB7CisgICAgUEJfRklFTEQoICAxLCBTVFJJTkcgICwgT1BUSU9OQUwsIENBTExCQUNLLCBGSVJTVCwgZ29vZ2xlX2NlbnN1c19NZXRyaWMsIHZpZXdfbmFtZSwgdmlld19uYW1lLCAwKSwKKyAgICBQQl9GSUVMRCggIDIsIE1FU1NBR0UgLCBSRVBFQVRFRCwgQ0FMTEJBQ0ssIE9USEVSLCBnb29nbGVfY2Vuc3VzX01ldHJpYywgYWdncmVnYXRpb24sIHZpZXdfbmFtZSwgJmdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZmllbGRzKSwKKyAgICBQQl9GSUVMRCggIDMsIE1FU1NBR0UgLCBPUFRJT05BTCwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX01ldHJpYywgc3RhcnQsIGFnZ3JlZ2F0aW9uLCAmZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfZmllbGRzKSwKKyAgICBQQl9GSUVMRCggIDQsIE1FU1NBR0UgLCBPUFRJT05BTCwgU1RBVElDICAsIE9USEVSLCBnb29nbGVfY2Vuc3VzX01ldHJpYywgZW5kLCBzdGFydCwgJmdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2ZpZWxkcyksCiAgICAgUEJfTEFTVF9GSUVMRAogfTsKIApAQCAtMTU2LDcgKzE1Myw3IEBACiAgKiBudW1iZXJzIG9yIGZpZWxkIHNpemVzIHRoYXQgYXJlIGxhcmdlciB0aGFuIHdoYXQgY2FuIGZpdCBpbiA4IG9yIDE2IGJpdAogICogZmllbGQgZGVzY3JpcHRvcnMuCiAgKi8KLVBCX1NUQVRJQ19BU1NFUlQoKHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWMsIHVuaXQpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIG51bWVyYXRvcikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgZGVub21pbmF0b3IpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgdW5pdCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBkZW5vbWluYXRvcikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uLCByYW5nZSkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0cywgd2luZG93KSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvdywgd2luZG93X3NpemUpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXcsIGFnZ3JlZ2F0aW9uKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5kaXN0cmlidXRpb24pIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmludGVydmFsX3N0YXRzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWMsIHVuaXQpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIG51bWVyYXRvcikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgZGVub21pbmF0b3IpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgdW5pdCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBkZW5vbWluYXRvcikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uLCByYW5nZSkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0cywgd2luZG93KSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvdywgd2luZG93X3NpemUpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXcsIGFnZ3JlZ2F0aW9uKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5kaXN0cmlidXRpb24pIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmludGVydmFsX3N0YXRzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgdGFnKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zLCBhZ2dyZWdhdGlvbikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucywgc3RhcnQpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnMsIGVuZCkgPCA2NTUzNiksIFlPVV9NVVNUX0RFRklORV9QQl9GSUVMRF8zMkJJVF9GT1JfTUVTU0FHRVNfZ29vZ2xlX2NlbnN1c19EdXJhdGlvbl9nb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9nb29nbGVfY2Vuc3VzX01ldHJpY19nb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXNfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfSW50ZXJ2YWxCb3VuZGFyaWVzX2dvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX2dvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX1JhbmdlX2dvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19nb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93X2dvb2dsZV9jZW5zdXNfVGFnX2dvb2dsZV9jZW5zdXNfVmlld19nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2dvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucykKK1BCX1NUQVRJQ19BU1NFUlQoKHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSwgdW5pdCkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfUmVzb3VyY2UsIHVuaXQpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbiwgcmFuZ2UpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHMsIHdpbmRvdykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3csIHdpbmRvd19zaXplKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19WaWV3LCBhZ2dyZWdhdGlvbikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuZGlzdHJpYnV0aW9uKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5pbnRlcnZhbF9zdGF0cykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfUmVzb3VyY2UsIHVuaXQpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1Jlc291cmNlLCB1bml0KSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5pbnRlcnZhbF9ib3VuZGFyaWVzKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb24sIHJhbmdlKSA8IDY1NTM2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzLCB3aW5kb3cpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93LCB3aW5kb3dfc2l6ZSkgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlldywgYWdncmVnYXRpb24pIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCBkYXRhLmRpc3RyaWJ1dGlvbikgPCA2NTUzNiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuaW50ZXJ2YWxfc3RhdHMpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uLCB0YWcpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgYWdncmVnYXRpb24pIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgc3RhcnQpIDwgNjU1MzYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgZW5kKSA8IDY1NTM2KSwgWU9VX01VU1RfREVGSU5FX1BCX0ZJRUxEXzMyQklUX0ZPUl9NRVNTQUdFU19nb29nbGVfY2Vuc3VzX0R1cmF0aW9uX2dvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2dvb2dsZV9jZW5zdXNfUmVzb3VyY2VfZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9JbnRlcnZhbEJvdW5kYXJpZXNfZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fUmFuZ2VfZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX2dvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3dfZ29vZ2xlX2NlbnN1c19UYWdfZ29vZ2xlX2NlbnN1c19WaWV3X2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZ29vZ2xlX2NlbnN1c19NZXRyaWMpCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKFBCX0ZJRUxEXzE2QklUKSAmJiAhZGVmaW5lZChQQl9GSUVMRF8zMkJJVCkKQEAgLTE2Nyw3ICsxNjQsNyBAQAogICogbnVtYmVycyBvciBmaWVsZCBzaXplcyB0aGF0IGFyZSBsYXJnZXIgdGhhbiB3aGF0IGNhbiBmaXQgaW4gdGhlIGRlZmF1bHQKICAqIDggYml0IGRlc2NyaXB0b3JzLgogICovCi1QQl9TVEFUSUNfQVNTRVJUKChwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCB1bml0KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgbnVtZXJhdG9yKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdCwgZGVub21pbmF0b3IpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgdW5pdCkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIG51bWVyYXRvcikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIGRlbm9taW5hdG9yKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb24sIHJhbmdlKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0cywgd2luZG93KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3csIHdpbmRvd19zaXplKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlldywgYWdncmVnYXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5kaXN0cmlidXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5pbnRlcnZhbF9zdGF0cykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgdW5pdCkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIG51bWVyYXRvcikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQsIGRlbm9taW5hdG9yKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWMsIHVuaXQpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBudW1lcmF0b3IpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0LCBkZW5vbWluYXRvcikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5pbnRlcnZhbF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uLCByYW5nZSkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHMsIHdpbmRvdykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93LCB3aW5kb3dfc2l6ZSkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXcsIGFnZ3JlZ2F0aW9uKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuZGlzdHJpYnV0aW9uKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuaW50ZXJ2YWxfc3RhdHMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgdGFnKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucywgYWdncmVnYXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zLCBzdGFydCkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnMsIGVuZCkgPCAyNTYpLCBZT1VfTVVTVF9ERUZJTkVfUEJfRklFTERfMTZCSVRfRk9SX01FU1NBR0VTX2dvb2dsZV9jZW5zdXNfRHVyYXRpb25fZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfZ29vZ2xlX2NlbnN1c19NZXRyaWNfZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X2dvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdF9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0ludGVydmFsQm91bmRhcmllc19nb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9nb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9SYW5nZV9nb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvd19nb29nbGVfY2Vuc3VzX1RhZ19nb29nbGVfY2Vuc3VzX1ZpZXdfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9nb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnMpCitQQl9TVEFUSUNfQVNTRVJUKChwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfUmVzb3VyY2UsIHVuaXQpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuYnVja2V0X2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IsIG9wdGlvbnMuaW50ZXJ2YWxfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1Jlc291cmNlLCB1bml0KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb24sIHJhbmdlKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0cywgd2luZG93KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3csIHdpbmRvd19zaXplKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfVmlldywgYWdncmVnYXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5kaXN0cmlidXRpb24pIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgZGF0YS5pbnRlcnZhbF9zdGF0cykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1Jlc291cmNlLCB1bml0KSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmJ1Y2tldF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yLCBvcHRpb25zLmludGVydmFsX2JvdW5kYXJpZXMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSwgdW5pdCkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5idWNrZXRfYm91bmRhcmllcykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciwgb3B0aW9ucy5pbnRlcnZhbF9ib3VuZGFyaWVzKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uLCByYW5nZSkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHMsIHdpbmRvdykgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93LCB3aW5kb3dfc2l6ZSkgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX1ZpZXcsIGFnZ3JlZ2F0aW9uKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuZGlzdHJpYnV0aW9uKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb24sIGRhdGEuaW50ZXJ2YWxfc3RhdHMpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbiwgdGFnKSA8IDI1NiAmJiBwYl9tZW1iZXJzaXplKGdvb2dsZV9jZW5zdXNfTWV0cmljLCBhZ2dyZWdhdGlvbikgPCAyNTYgJiYgcGJfbWVtYmVyc2l6ZShnb29nbGVfY2Vuc3VzX01ldHJpYywgc3RhcnQpIDwgMjU2ICYmIHBiX21lbWJlcnNpemUoZ29vZ2xlX2NlbnN1c19NZXRyaWMsIGVuZCkgPCAyNTYpLCBZT1VfTVVTVF9ERUZJTkVfUEJfRklFTERfMTZCSVRfRk9SX01FU1NBR0VTX2dvb2dsZV9jZW5zdXNfRHVyYXRpb25fZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9nb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0ludGVydmFsQm91bmRhcmllc19nb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9nb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9SYW5nZV9nb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvd19nb29nbGVfY2Vuc3VzX1RhZ19nb29nbGVfY2Vuc3VzX1ZpZXdfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9nb29nbGVfY2Vuc3VzX01ldHJpYykKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmgKaW5kZXggZDA0MGZlMi4uZGFlNTgzZiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmgKKysrIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmgKQEAgLTQ1LDE0ICs0NSwyMSBAQAogI2VuZGlmCiAKIC8qIEVudW0gZGVmaW5pdGlvbnMgKi8KLXR5cGVkZWYgZW51bSBfZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X01lYXN1cmUgewotICAgIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9NZWFzdXJlX1VOS05PV04gPSAwLAotICAgIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9NZWFzdXJlX0JJVFMgPSAxLAotICAgIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9NZWFzdXJlX0JZVEVTID0gMiwKLSAgICBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfTWVhc3VyZV9TRUNTID0gMywKLSAgICBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfTWVhc3VyZV9DT1JFUyA9IDQsCi0gICAgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X01lYXN1cmVfTUFYX1VOSVRTID0gNQotfSBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfTWVhc3VyZTsKK3R5cGVkZWYgZW51bSBfZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXQgeworICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0X1VOS05PV04gPSAwLAorICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0X0JJVFMgPSAxLAorICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0X0JZVEVTID0gMiwKKyAgICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdF9TRUNTID0gMywKKyAgICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdF9DT1JFUyA9IDQsCisgICAgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXRfTUFYX1VOSVRTID0gNQorfSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdDsKKwordHlwZWRlZiBlbnVtIF9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9BZ2dyZWdhdGlvblR5cGUgeworICAgIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0FnZ3JlZ2F0aW9uVHlwZV9VTktOT1dOID0gMCwKKyAgICBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9BZ2dyZWdhdGlvblR5cGVfQ09VTlQgPSAxLAorICAgIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0FnZ3JlZ2F0aW9uVHlwZV9ESVNUUklCVVRJT04gPSAyLAorICAgIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0FnZ3JlZ2F0aW9uVHlwZV9JTlRFUlZBTCA9IDMKK30gZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQWdncmVnYXRpb25UeXBlOwogCiAvKiBTdHJ1Y3QgZGVmaW5pdGlvbnMgKi8KIHR5cGVkZWYgc3RydWN0IF9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzIHsKQEAgLTY4LDYgKzc1LDggQEAKIH0gZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzOwogCiB0eXBlZGVmIHN0cnVjdCBfZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IgeworICAgIGJvb2wgaGFzX3R5cGU7CisgICAgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQWdncmVnYXRpb25UeXBlIHR5cGU7CiAgICAgcGJfc2l6ZV90IHdoaWNoX29wdGlvbnM7CiAgICAgdW5pb24gewogICAgICAgICBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzIGJ1Y2tldF9ib3VuZGFyaWVzOwpAQCAtODksMTcgKzk4LDEyIEBACiAgICAgaW50MzJfdCBuYW5vczsKIH0gZ29vZ2xlX2NlbnN1c19EdXJhdGlvbjsKIAotdHlwZWRlZiBzdHJ1Y3QgX2dvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdCB7Ci0gICAgYm9vbCBoYXNfdHlwZTsKLSAgICBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfTWVhc3VyZSB0eXBlOwotfSBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXQ7Ci0KLXR5cGVkZWYgc3RydWN0IF9nb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXQgewordHlwZWRlZiBzdHJ1Y3QgX2dvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0IHsKICAgICBib29sIGhhc19wcmVmaXg7CiAgICAgaW50MzJfdCBwcmVmaXg7CiAgICAgcGJfY2FsbGJhY2tfdCBudW1lcmF0b3I7CiAgICAgcGJfY2FsbGJhY2tfdCBkZW5vbWluYXRvcjsKLX0gZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0OworfSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdDsKIAogdHlwZWRlZiBzdHJ1Y3QgX2dvb2dsZV9jZW5zdXNfVGFnIHsKICAgICBib29sIGhhc19rZXk7CkBAIC0xMzUsMzcgKzEzOSwzNiBAQAogfSBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93OwogCiB0eXBlZGVmIHN0cnVjdCBfZ29vZ2xlX2NlbnN1c19NZXRyaWMgewotICAgIHBiX2NhbGxiYWNrX3QgbmFtZTsKLSAgICBwYl9jYWxsYmFja190IGRlc2NyaXB0aW9uOwotICAgIGJvb2wgaGFzX3VuaXQ7Ci0gICAgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0IHVuaXQ7Ci0gICAgYm9vbCBoYXNfaWQ7Ci0gICAgaW50MzJfdCBpZDsKLX0gZ29vZ2xlX2NlbnN1c19NZXRyaWM7Ci0KLXR5cGVkZWYgc3RydWN0IF9nb29nbGVfY2Vuc3VzX1ZpZXcgewotICAgIHBiX2NhbGxiYWNrX3QgbmFtZTsKLSAgICBwYl9jYWxsYmFja190IGRlc2NyaXB0aW9uOwotICAgIGJvb2wgaGFzX21ldHJpY19pZDsKLSAgICBpbnQzMl90IG1ldHJpY19pZDsKLSAgICBib29sIGhhc19hZ2dyZWdhdGlvbjsKLSAgICBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvciBhZ2dyZWdhdGlvbjsKLSAgICBwYl9jYWxsYmFja190IHRhZ19rZXk7Ci19IGdvb2dsZV9jZW5zdXNfVmlldzsKLQotdHlwZWRlZiBzdHJ1Y3QgX2dvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9ucyB7CisgICAgcGJfY2FsbGJhY2tfdCB2aWV3X25hbWU7CiAgICAgcGJfY2FsbGJhY2tfdCBhZ2dyZWdhdGlvbjsKICAgICBib29sIGhhc19zdGFydDsKICAgICBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcCBzdGFydDsKICAgICBib29sIGhhc19lbmQ7CiAgICAgZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXAgZW5kOwotfSBnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnM7Cit9IGdvb2dsZV9jZW5zdXNfTWV0cmljOworCit0eXBlZGVmIHN0cnVjdCBfZ29vZ2xlX2NlbnN1c19SZXNvdXJjZSB7CisgICAgcGJfY2FsbGJhY2tfdCBuYW1lOworICAgIHBiX2NhbGxiYWNrX3QgZGVzY3JpcHRpb247CisgICAgYm9vbCBoYXNfdW5pdDsKKyAgICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdCB1bml0OworfSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlOworCit0eXBlZGVmIHN0cnVjdCBfZ29vZ2xlX2NlbnN1c19WaWV3IHsKKyAgICBwYl9jYWxsYmFja190IG5hbWU7CisgICAgcGJfY2FsbGJhY2tfdCBkZXNjcmlwdGlvbjsKKyAgICBwYl9jYWxsYmFja190IHJlc291cmNlX25hbWU7CisgICAgYm9vbCBoYXNfYWdncmVnYXRpb247CisgICAgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3IgYWdncmVnYXRpb247CisgICAgcGJfY2FsbGJhY2tfdCB0YWdfa2V5OworfSBnb29nbGVfY2Vuc3VzX1ZpZXc7CiAKIHR5cGVkZWYgc3RydWN0IF9nb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uIHsKICAgICBwYl9jYWxsYmFja190IG5hbWU7CiAgICAgcGJfY2FsbGJhY2tfdCBkZXNjcmlwdGlvbjsKICAgICBwYl9zaXplX3Qgd2hpY2hfZGF0YTsKICAgICB1bmlvbiB7CisgICAgICAgIHVpbnQ2NF90IGNvdW50OwogICAgICAgICBnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbiBkaXN0cmlidXRpb247CiAgICAgICAgIGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0cyBpbnRlcnZhbF9zdGF0czsKICAgICB9IGRhdGE7CkBAIC0xNzcsMTAgKzE4MCw5IEBACiAvKiBJbml0aWFsaXplciB2YWx1ZXMgZm9yIG1lc3NhZ2Ugc3RydWN0cyAqLwogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0R1cmF0aW9uX2luaXRfZGVmYXVsdCAgICAgIHtmYWxzZSwgMCwgZmFsc2UsIDB9CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2luaXRfZGVmYXVsdCAgICAge2ZhbHNlLCAwLCBmYWxzZSwgMH0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfaW5pdF9kZWZhdWx0ICAgICAgICB7e3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2luaXRfZGVmYXVsdCwgZmFsc2UsIDB9Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9pbml0X2RlZmF1bHQge2ZhbHNlLCAoZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X01lYXN1cmUpMH0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2luaXRfZGVmYXVsdCB7ZmFsc2UsIDAsIHt7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfX0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfaW5pdF9kZWZhdWx0IHswLCB7Z29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19pbml0X2RlZmF1bHR9fQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX2luaXRfZGVmYXVsdCAgICAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9pbml0X2RlZmF1bHR9CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X2luaXRfZGVmYXVsdCB7ZmFsc2UsIDAsIHt7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfX0KKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfaW5pdF9kZWZhdWx0IHtmYWxzZSwgKGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0FnZ3JlZ2F0aW9uVHlwZSkwLCAwLCB7Z29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19pbml0X2RlZmF1bHR9fQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2luaXRfZGVmYXVsdCB7e3tOVUxMfSwgTlVMTH19CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0ludGVydmFsQm91bmRhcmllc19pbml0X2RlZmF1bHQge3t7TlVMTH0sIE5VTEx9fQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9pbml0X2RlZmF1bHQgIHtmYWxzZSwgMCwgZmFsc2UsIDAsIGZhbHNlLCBnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9SYW5nZV9pbml0X2RlZmF1bHQsIHt7TlVMTH0sIE5VTEx9fQpAQCAtMTg4LDE1ICsxOTAsMTQgQEAKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX2luaXRfZGVmYXVsdCB7e3tOVUxMfSwgTlVMTH19CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3dfaW5pdF9kZWZhdWx0IHtmYWxzZSwgZ29vZ2xlX2NlbnN1c19EdXJhdGlvbl9pbml0X2RlZmF1bHQsIGZhbHNlLCAwLCBmYWxzZSwgMH0KICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19UYWdfaW5pdF9kZWZhdWx0ICAgICAgICAgICB7ZmFsc2UsICIiLCBmYWxzZSwgIiJ9Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld19pbml0X2RlZmF1bHQgICAgICAgICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgZmFsc2UsIDAsIGZhbHNlLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9pbml0X2RlZmF1bHQsIHt7TlVMTH0sIE5VTEx9fQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2luaXRfZGVmYXVsdCAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIDAsIHtnb29nbGVfY2Vuc3VzX0Rpc3RyaWJ1dGlvbl9pbml0X2RlZmF1bHR9LCB7e05VTEx9LCBOVUxMfX0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zX2luaXRfZGVmYXVsdCB7e3tOVUxMfSwgTlVMTH0sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9pbml0X2RlZmF1bHQsIGZhbHNlLCBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9pbml0X2RlZmF1bHR9CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld19pbml0X2RlZmF1bHQgICAgICAgICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9pbml0X2RlZmF1bHQsIHt7TlVMTH0sIE5VTEx9fQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2luaXRfZGVmYXVsdCAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIDAsIHswfSwge3tOVUxMfSwgTlVMTH19CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX2luaXRfZGVmYXVsdCAgICAgICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2luaXRfZGVmYXVsdCwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX2luaXRfZGVmYXVsdH0KICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19EdXJhdGlvbl9pbml0X3plcm8gICAgICAgICB7ZmFsc2UsIDAsIGZhbHNlLCAwfQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9pbml0X3plcm8gICAgICAgIHtmYWxzZSwgMCwgZmFsc2UsIDB9Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX2luaXRfemVybyAgICAgICAgICAge3t7TlVMTH0sIE5VTEx9LCB7e05VTEx9LCBOVUxMfSwgZmFsc2UsIGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdF9pbml0X3plcm8sIGZhbHNlLCAwfQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19CYXNpY1VuaXRfaW5pdF96ZXJvIHtmYWxzZSwgKGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF9NZWFzdXJlKTB9Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdF9pbml0X3plcm8ge2ZhbHNlLCAwLCB7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH19Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2luaXRfemVybyB7MCwge2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXNfaW5pdF96ZXJvfX0KKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9pbml0X3plcm8gICAgICAgICB7e3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfaW5pdF96ZXJvfQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9pbml0X3plcm8ge2ZhbHNlLCAwLCB7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH19CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2luaXRfemVybyB7ZmFsc2UsIChnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9BZ2dyZWdhdGlvblR5cGUpMCwgMCwge2dvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXNfaW5pdF96ZXJvfX0KICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfQnVja2V0Qm91bmRhcmllc19pbml0X3plcm8ge3t7TlVMTH0sIE5VTEx9fQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9JbnRlcnZhbEJvdW5kYXJpZXNfaW5pdF96ZXJvIHt7e05VTEx9LCBOVUxMfX0KICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25faW5pdF96ZXJvICAgICB7ZmFsc2UsIDAsIGZhbHNlLCAwLCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fUmFuZ2VfaW5pdF96ZXJvLCB7e05VTEx9LCBOVUxMfX0KQEAgLTIwNCwyNSArMjA1LDI1IEBACiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19pbml0X3plcm8gICAge3t7TlVMTH0sIE5VTEx9fQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93X2luaXRfemVybyB7ZmFsc2UsIGdvb2dsZV9jZW5zdXNfRHVyYXRpb25faW5pdF96ZXJvLCBmYWxzZSwgMCwgZmFsc2UsIDB9CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVGFnX2luaXRfemVybyAgICAgICAgICAgICAge2ZhbHNlLCAiIiwgZmFsc2UsICIifQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdfaW5pdF96ZXJvICAgICAgICAgICAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIGZhbHNlLCAwLCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfaW5pdF96ZXJvLCB7e05VTEx9LCBOVUxMfX0KLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9pbml0X3plcm8gICAgICB7e3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCAwLCB7Z29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25faW5pdF96ZXJvfSwge3tOVUxMfSwgTlVMTH19Ci0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9uc19pbml0X3plcm8ge3t7TlVMTH0sIE5VTEx9LCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfaW5pdF96ZXJvLCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfaW5pdF96ZXJvfQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdfaW5pdF96ZXJvICAgICAgICAgICAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCBmYWxzZSwgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfaW5pdF96ZXJvLCB7e05VTEx9LCBOVUxMfX0KKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9pbml0X3plcm8gICAgICB7e3tOVUxMfSwgTlVMTH0sIHt7TlVMTH0sIE5VTEx9LCAwLCB7MH0sIHt7TlVMTH0sIE5VTEx9fQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19pbml0X3plcm8gICAgICAgICAgIHt7e05VTEx9LCBOVUxMfSwge3tOVUxMfSwgTlVMTH0sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9pbml0X3plcm8sIGZhbHNlLCBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9pbml0X3plcm99CiAKIC8qIEZpZWxkIHRhZ3MgKGZvciB1c2UgaW4gbWFudWFsIGVuY29kaW5nL2RlY29kaW5nKSAqLwogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9CdWNrZXRCb3VuZGFyaWVzX2JvdW5kc190YWcgMQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9JbnRlcnZhbEJvdW5kYXJpZXNfd2luZG93X3NpemVfdGFnIDEKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX3dpbmRvd190YWcgICAxCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2J1Y2tldF9ib3VuZGFyaWVzX3RhZyAxCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2J1Y2tldF9ib3VuZGFyaWVzX3RhZyAyCiAKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfaW50ZXJ2YWxfYm91bmRhcmllc190YWcgMgorI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9pbnRlcnZhbF9ib3VuZGFyaWVzX3RhZyAzCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX3R5cGVfdGFnIDEKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19EaXN0cmlidXRpb25fUmFuZ2VfbWluX3RhZyAxCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX1JhbmdlX21heF90YWcgMgogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0R1cmF0aW9uX3NlY29uZHNfdGFnICAgICAgIDEKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19EdXJhdGlvbl9uYW5vc190YWcgICAgICAgICAyCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX0Jhc2ljVW5pdF90eXBlX3RhZyAgMQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19NZWFzdXJlbWVudFVuaXRfcHJlZml4X3RhZyAxCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdF9udW1lcmF0b3JfdGFnIDIKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfTWVhc3VyZW1lbnRVbml0X2Rlbm9taW5hdG9yX3RhZyAzCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X3ByZWZpeF90YWcgMQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX01lYXN1cmVtZW50VW5pdF9udW1lcmF0b3JfdGFnIDIKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfZGVub21pbmF0b3JfdGFnIDMKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19UYWdfa2V5X3RhZyAgICAgICAgICAgICAgICAxCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVGFnX3ZhbHVlX3RhZyAgICAgICAgICAgICAgMgogI2RlZmluZSBnb29nbGVfY2Vuc3VzX1RpbWVzdGFtcF9zZWNvbmRzX3RhZyAgICAgIDEKQEAgLTIzNCwzMiArMjM1LDMzIEBACiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfSW50ZXJ2YWxTdGF0c19XaW5kb3dfd2luZG93X3NpemVfdGFnIDEKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvd19jb3VudF90YWcgMgogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93X21lYW5fdGFnIDMKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfbmFtZV90YWcgICAgICAgICAgICAxCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX2Rlc2NyaXB0aW9uX3RhZyAgICAgMgotI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY191bml0X3RhZyAgICAgICAgICAgIDMKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfaWRfdGFnICAgICAgICAgICAgICA0CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX3ZpZXdfbmFtZV90YWcgICAgICAgMQorI2RlZmluZSBnb29nbGVfY2Vuc3VzX01ldHJpY19hZ2dyZWdhdGlvbl90YWcgICAgIDIKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfc3RhcnRfdGFnICAgICAgICAgICAzCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfTWV0cmljX2VuZF90YWcgICAgICAgICAgICAgNAorI2RlZmluZSBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX25hbWVfdGFnICAgICAgICAgIDEKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9kZXNjcmlwdGlvbl90YWcgICAyCisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfdW5pdF90YWcgICAgICAgICAgMwogI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdfbmFtZV90YWcgICAgICAgICAgICAgIDEKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3X2Rlc2NyaXB0aW9uX3RhZyAgICAgICAyCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld19tZXRyaWNfaWRfdGFnICAgICAgICAgMworI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdfcmVzb3VyY2VfbmFtZV90YWcgICAgIDMKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3X2FnZ3JlZ2F0aW9uX3RhZyAgICAgICA0CiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld190YWdfa2V5X3RhZyAgICAgICAgICAgNQotI2RlZmluZSBnb29nbGVfY2Vuc3VzX1ZpZXdBZ2dyZWdhdGlvbnNfYWdncmVnYXRpb25fdGFnIDEKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19WaWV3QWdncmVnYXRpb25zX3N0YXJ0X3RhZyAyCi0jZGVmaW5lIGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9uc19lbmRfdGFnICAgMwotI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2Rpc3RyaWJ1dGlvbl90YWcgMworI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2NvdW50X3RhZyAgICAgIDMKIAotI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2ludGVydmFsX3N0YXRzX3RhZyA0CisjZGVmaW5lIGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25fZGlzdHJpYnV0aW9uX3RhZyA0CisKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9pbnRlcnZhbF9zdGF0c190YWcgNQogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX25hbWVfdGFnICAgICAgIDEKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl9kZXNjcmlwdGlvbl90YWcgMgotI2RlZmluZSBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX3RhZ190YWcgICAgICAgIDUKKyNkZWZpbmUgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbl90YWdfdGFnICAgICAgICA2CiAKIC8qIFN0cnVjdCBmaWVsZCBlbmNvZGluZyBzcGVjaWZpY2F0aW9uIGZvciBuYW5vcGIgKi8KIGV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfRHVyYXRpb25fZmllbGRzWzNdOwogZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19UaW1lc3RhbXBfZmllbGRzWzNdOwotZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19NZXRyaWNfZmllbGRzWzVdOwotZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X2ZpZWxkc1syXTsKLWV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfTWV0cmljX01lYXN1cmVtZW50VW5pdF9maWVsZHNbNF07Ci1leHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcl9maWVsZHNbM107CitleHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX1Jlc291cmNlX2ZpZWxkc1s0XTsKK2V4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X2ZpZWxkc1s0XTsKK2V4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX2ZpZWxkc1s0XTsKIGV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfQWdncmVnYXRpb25EZXNjcmlwdG9yX0J1Y2tldEJvdW5kYXJpZXNfZmllbGRzWzJdOwogZXh0ZXJuIGNvbnN0IHBiX2ZpZWxkX3QgZ29vZ2xlX2NlbnN1c19BZ2dyZWdhdGlvbkRlc2NyaXB0b3JfSW50ZXJ2YWxCb3VuZGFyaWVzX2ZpZWxkc1syXTsKIGV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX2ZpZWxkc1s1XTsKQEAgLTI2OCwxMyArMjcwLDEyIEBACiBleHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX0ludGVydmFsU3RhdHNfV2luZG93X2ZpZWxkc1s0XTsKIGV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfVGFnX2ZpZWxkc1szXTsKIGV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfVmlld19maWVsZHNbNl07Ci1leHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2ZpZWxkc1s2XTsKLWV4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfVmlld0FnZ3JlZ2F0aW9uc19maWVsZHNbNF07CitleHRlcm4gY29uc3QgcGJfZmllbGRfdCBnb29nbGVfY2Vuc3VzX0FnZ3JlZ2F0aW9uX2ZpZWxkc1s3XTsKK2V4dGVybiBjb25zdCBwYl9maWVsZF90IGdvb2dsZV9jZW5zdXNfTWV0cmljX2ZpZWxkc1s1XTsKIAogLyogTWF4aW11bSBlbmNvZGVkIHNpemUgb2YgbWVzc2FnZXMgKHdoZXJlIGtub3duKSAqLwogI2RlZmluZSBnb29nbGVfY2Vuc3VzX0R1cmF0aW9uX3NpemUgICAgICAgICAgICAgIDIyCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfVGltZXN0YW1wX3NpemUgICAgICAgICAgICAgMjIKLSNkZWZpbmUgZ29vZ2xlX2NlbnN1c19NZXRyaWNfQmFzaWNVbml0X3NpemUgICAgICAyCiAjZGVmaW5lIGdvb2dsZV9jZW5zdXNfRGlzdHJpYnV0aW9uX1JhbmdlX3NpemUgICAgMTgKICNkZWZpbmUgZ29vZ2xlX2NlbnN1c19JbnRlcnZhbFN0YXRzX1dpbmRvd19zaXplICA0NAogI2RlZmluZSBnb29nbGVfY2Vuc3VzX1RhZ19zaXplICAgICAgICAgICAgICAgICAgIDUxNgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5jIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5jCmluZGV4IGY1MWQ4NTAuLjlkYWNjMTcgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuYworKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2dycGNfZmlsdGVyLmMKQEAgLTEyNywzOCArMTI3LDQwIEBACiAgIGdycGNfY2FsbF9uZXh0X29wKGV4ZWNfY3R4LCBlbGVtLCBvcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsaWVudF9pbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CitzdGF0aWMgZ3JwY19lcnJvciAqY2xpZW50X2luaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgewogICBjYWxsX2RhdGEgKmQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIEdQUl9BU1NFUlQoZCAhPSBOVUxMKTsKICAgbWVtc2V0KGQsIDAsIHNpemVvZigqZCkpOwogICBkLT5zdGFydF90cyA9IGdwcl9ub3coR1BSX0NMT0NLX1JFQUxUSU1FKTsKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogc3RhdGljIHZvaWQgY2xpZW50X2Rlc3Ryb3lfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9zdGF0cyAqc3RhdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX2ZpbmFsX2luZm8gKmZpbmFsX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqaWdub3JlZCkgewogICBjYWxsX2RhdGEgKmQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIEdQUl9BU1NFUlQoZCAhPSBOVUxMKTsKICAgLyogVE9ETyhob25neXUpOiByZWNvcmQgcnBjIGNsaWVudCBzdGF0cyBhbmQgY2Vuc3VzX3JwY19lbmRfb3AgaGVyZSAqLwogfQogCi1zdGF0aWMgdm9pZCBzZXJ2ZXJfaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworc3RhdGljIGdycGNfZXJyb3IgKnNlcnZlcl9pbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKICAgY2FsbF9kYXRhICpkID0gZWxlbS0+Y2FsbF9kYXRhOwogICBHUFJfQVNTRVJUKGQgIT0gTlVMTCk7CiAgIG1lbXNldChkLCAwLCBzaXplb2YoKmQpKTsKICAgZC0+c3RhcnRfdHMgPSBncHJfbm93KEdQUl9DTE9DS19SRUFMVElNRSk7CiAgIC8qIFRPRE8oaG9uZ3l1KTogY2FsbCBjZW5zdXNfdHJhY2luZ19zdGFydF9vcCBoZXJlLiAqLwogICBncnBjX2Nsb3N1cmVfaW5pdCgmZC0+ZmluaXNoX3JlY3YsIHNlcnZlcl9vbl9kb25lX3JlY3YsIGVsZW0pOworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOwogfQogCiBzdGF0aWMgdm9pZCBzZXJ2ZXJfZGVzdHJveV9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX3N0YXRzICpzdGF0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfZmluYWxfaW5mbyAqZmluYWxfaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppZ25vcmVkKSB7CiAgIGNhbGxfZGF0YSAqZCA9IGVsZW0tPmNhbGxfZGF0YTsKICAgR1BSX0FTU0VSVChkICE9IE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9pbml0aWFsaXplLmMgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2luaXRpYWxpemUuYwppbmRleCA4OTYyNzZlLi41NWNiYmU4IDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvY2Vuc3VzL2luaXRpYWxpemUuYworKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL2luaXRpYWxpemUuYwpAQCAtMzIsMTkgKzMyLDMxIEBACiAgKi8KIAogI2luY2x1ZGUgPGdycGMvY2Vuc3VzLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaCIKIAogc3RhdGljIGludCBmZWF0dXJlc19lbmFibGVkID0gQ0VOU1VTX0ZFQVRVUkVfTk9ORTsKIAogaW50IGNlbnN1c19pbml0aWFsaXplKGludCBmZWF0dXJlcykgewogICBpZiAoZmVhdHVyZXNfZW5hYmxlZCAhPSBDRU5TVVNfRkVBVFVSRV9OT05FKSB7CiAgICAgLy8gTXVzdCBoYXZlIGJlZW4gYSBwcmV2aW91cyBjYWxsIHRvIGNlbnN1c19pbml0aWFsaXplOyByZXR1cm4gZXJyb3IKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gLTE7CiAgIH0KLSAgZmVhdHVyZXNfZW5hYmxlZCA9IGZlYXR1cmVzOwotICByZXR1cm4gMDsKKyAgZmVhdHVyZXNfZW5hYmxlZCA9IGZlYXR1cmVzICYgQ0VOU1VTX0ZFQVRVUkVfQUxMOworICBpZiAoZmVhdHVyZXMgJiBDRU5TVVNfRkVBVFVSRV9TVEFUUykgeworICAgIGluaXRpYWxpemVfcmVzb3VyY2VzKCk7CisgICAgZGVmaW5lX2Jhc2VfcmVzb3VyY2VzKCk7CisgIH0KKworICByZXR1cm4gZmVhdHVyZXNfZW5hYmxlZDsKIH0KIAotdm9pZCBjZW5zdXNfc2h1dGRvd24odm9pZCkgeyBmZWF0dXJlc19lbmFibGVkID0gQ0VOU1VTX0ZFQVRVUkVfTk9ORTsgfQordm9pZCBjZW5zdXNfc2h1dGRvd24odm9pZCkgeworICBpZiAoZmVhdHVyZXNfZW5hYmxlZCAmIENFTlNVU19GRUFUVVJFX1NUQVRTKSB7CisgICAgc2h1dGRvd25fcmVzb3VyY2VzKCk7CisgIH0KKyAgZmVhdHVyZXNfZW5hYmxlZCA9IENFTlNVU19GRUFUVVJFX05PTkU7Cit9CiAKIGludCBjZW5zdXNfc3VwcG9ydGVkKHZvaWQpIHsKICAgLyogVE9ETyhhdmVpdGNoKTogaW1wcm92ZSB0aGlzIGFzIHdlIGltcGxlbWVudCBmZWF0dXJlcy4uLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyBiL3NyYy9jb3JlL2V4dC9jZW5zdXMvcGxhY2Vob2xkZXJzLmMKaW5kZXggZmUyM2QxMy4uOWY5OWM1YiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYworKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jCkBAIC02Miw0OCArNjIsMyBAQAogICAodm9pZCljb25zdW1lOwogICBhYm9ydCgpOwogfQotCi1jb25zdCBjZW5zdXNfYWdncmVnYXRpb24gKmNlbnN1c192aWV3X2FnZ3JlZ3JhdGlvbnMoY29uc3QgY2Vuc3VzX3ZpZXcgKnZpZXcpIHsKLSAgKHZvaWQpdmlldzsKLSAgYWJvcnQoKTsKLX0KLQotY2Vuc3VzX3ZpZXcgKmNlbnN1c192aWV3X2NyZWF0ZSh1aW50MzJfdCBtZXRyaWNfaWQsIGNvbnN0IGNlbnN1c19jb250ZXh0ICp0YWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZW5zdXNfYWdncmVnYXRpb24gKmFnZ3JlZ2F0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5hZ2dyZWdhdGlvbnMpIHsKLSAgKHZvaWQpbWV0cmljX2lkOwotICAodm9pZCl0YWdzOwotICAodm9pZClhZ2dyZWdhdGlvbnM7Ci0gICh2b2lkKW5hZ2dyZWdhdGlvbnM7Ci0gIGFib3J0KCk7Ci19Ci0KLWNvbnN0IGNlbnN1c19jb250ZXh0ICpjZW5zdXNfdmlld190YWdzKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KSB7Ci0gICh2b2lkKXZpZXc7Ci0gIGFib3J0KCk7Ci19Ci0KLXZvaWQgY2Vuc3VzX3ZpZXdfZGVsZXRlKGNlbnN1c192aWV3ICp2aWV3KSB7Ci0gICh2b2lkKXZpZXc7Ci0gIGFib3J0KCk7Ci19Ci0KLWNvbnN0IGNlbnN1c192aWV3X2RhdGEgKmNlbnN1c192aWV3X2dldF9kYXRhKGNvbnN0IGNlbnN1c192aWV3ICp2aWV3KSB7Ci0gICh2b2lkKXZpZXc7Ci0gIGFib3J0KCk7Ci19Ci0KLXNpemVfdCBjZW5zdXNfdmlld19tZXRyaWMoY29uc3QgY2Vuc3VzX3ZpZXcgKnZpZXcpIHsKLSAgKHZvaWQpdmlldzsKLSAgYWJvcnQoKTsKLX0KLQotc2l6ZV90IGNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnMoY29uc3QgY2Vuc3VzX3ZpZXcgKnZpZXcpIHsKLSAgKHZvaWQpdmlldzsKLSAgYWJvcnQoKTsKLX0KLQotdm9pZCBjZW5zdXNfdmlld19yZXNldChjZW5zdXNfdmlldyAqdmlldykgewotICAodm9pZCl2aWV3OwotICBhYm9ydCgpOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jIGIvc3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNDRmMDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMKQEAgLTAsMCArMSwzMTIgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L25hbm9wYi9wYl9kZWNvZGUuaCIKKworI2luY2x1ZGUgPGdycGMvY2Vuc3VzLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zeW5jLmg+CisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKy8vIFByb3RlY3QgbG9jYWwgcmVzb3VyY2UgZGF0YSBzdHJ1Y3R1cmVzLgorc3RhdGljIGdwcl9tdSByZXNvdXJjZV9sb2NrOworCisvLyBEZWxldGVpbmcgYW5kIGNyZWF0aW5nIHJlc291cmNlcyBhcmUgcmVsYXRpdmVseSByYXJlIGV2ZW50cywgYW5kIHNob3VsZCBub3QKKy8vIGJlIGRvbmUgaW4gdGhlIGNyaXRpY2FsIHBhdGggb2YgcGVyZm9ybWFuY2Ugc2Vuc2l0aXZlIGNvZGUuIFdlIHJlY29yZAorLy8gY3VycmVudCByZXNvdXJjZSBpZCdzIHVzZWQgaW4gYSBzaW1wbGUgYXJyYXksIGFuZCBqdXN0IHNlYXJjaCBpdCBlYWNoIHRpbWUKKy8vIHdlIG5lZWQgdG8gYXNzaWduIGEgbmV3IGlkLCBvciBsb29rIHVwIGEgcmVzb3VyY2UuCitzdGF0aWMgcmVzb3VyY2UgKipyZXNvdXJjZXMgPSBOVUxMOworCisvLyBOdW1iZXIgb2YgZW50cmllcyBpbiAqcmVzb3VyY2VzCitzdGF0aWMgc2l6ZV90IG5fcmVzb3VyY2VzID0gMDsKKworLy8gTnVtYmVyIG9mIGRlZmluZWQgcmVzb3VyY2VzCitzdGF0aWMgc2l6ZV90IG5fZGVmaW5lZF9yZXNvdXJjZXMgPSAwOworCit2b2lkIGluaXRpYWxpemVfcmVzb3VyY2VzKHZvaWQpIHsKKyAgZ3ByX211X2luaXQoJnJlc291cmNlX2xvY2spOworICBncHJfbXVfbG9jaygmcmVzb3VyY2VfbG9jayk7CisgIEdQUl9BU1NFUlQocmVzb3VyY2VzID09IE5VTEwgJiYgbl9yZXNvdXJjZXMgPT0gMCAmJiBuX2RlZmluZWRfcmVzb3VyY2VzID09IDApOworICBncHJfbXVfdW5sb2NrKCZyZXNvdXJjZV9sb2NrKTsKK30KKworLy8gRGVsZXRlIGEgcmVzb3VyY2UgZ2l2ZW4gaXQncyBJRC4gVGhlIElEIG11c3QgYmUgYSB2YWxpZCByZXNvdXJjZSBJRC4gTXVzdCBiZQorLy8gY2FsbGVkIHdpdGggcmVzb3VyY2VfbG9jayBoZWxkLgorc3RhdGljIHZvaWQgZGVsZXRlX3Jlc291cmNlX2xvY2tlZChzaXplX3QgcmlkKSB7CisgIEdQUl9BU1NFUlQocmVzb3VyY2VzW3JpZF0gIT0gTlVMTCk7CisgIGdwcl9mcmVlKHJlc291cmNlc1tyaWRdLT5uYW1lKTsKKyAgZ3ByX2ZyZWUocmVzb3VyY2VzW3JpZF0tPmRlc2NyaXB0aW9uKTsKKyAgZ3ByX2ZyZWUocmVzb3VyY2VzW3JpZF0tPm51bWVyYXRvcnMpOworICBncHJfZnJlZShyZXNvdXJjZXNbcmlkXS0+ZGVub21pbmF0b3JzKTsKKyAgZ3ByX2ZyZWUocmVzb3VyY2VzW3JpZF0pOworICByZXNvdXJjZXNbcmlkXSA9IE5VTEw7CisgIG5fZGVmaW5lZF9yZXNvdXJjZXMtLTsKK30KKwordm9pZCBzaHV0ZG93bl9yZXNvdXJjZXModm9pZCkgeworICBncHJfbXVfbG9jaygmcmVzb3VyY2VfbG9jayk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbl9yZXNvdXJjZXM7IGkrKykgeworICAgIGlmIChyZXNvdXJjZXNbaV0gIT0gTlVMTCkgeworICAgICAgZGVsZXRlX3Jlc291cmNlX2xvY2tlZChpKTsKKyAgICB9CisgIH0KKyAgR1BSX0FTU0VSVChuX2RlZmluZWRfcmVzb3VyY2VzID09IDApOworICBncHJfZnJlZShyZXNvdXJjZXMpOworICByZXNvdXJjZXMgPSBOVUxMOworICBuX3Jlc291cmNlcyA9IDA7CisgIGdwcl9tdV91bmxvY2soJnJlc291cmNlX2xvY2spOworfQorCisvLyBDaGVjayB0aGUgY29udGVudHMgb2Ygc3RyaW5nIGZpZWxkcyBpbiBhIHJlc291cmNlIHByb3RvLgorc3RhdGljIGJvb2wgdmFsaWRhdGVfc3RyaW5nKHBiX2lzdHJlYW1fdCAqc3RyZWFtLCBjb25zdCBwYl9maWVsZF90ICpmaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqYXJnKSB7CisgIHJlc291cmNlICp2cmVzb3VyY2UgPSAocmVzb3VyY2UgKikqYXJnOworICBzd2l0Y2ggKGZpZWxkLT50YWcpIHsKKyAgICBjYXNlIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfbmFtZV90YWc6CisgICAgICAvLyBOYW1lIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyCisgICAgICBpZiAoc3RyZWFtLT5ieXRlc19sZWZ0ID09IDApIHsKKyAgICAgICAgZ3ByX2xvZyhHUFJfSU5GTywgIlplcm8tbGVuZ3RoIFJlc291cmNlIG5hbWUuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHZyZXNvdXJjZS0+bmFtZSA9IGdwcl9tYWxsb2Moc3RyZWFtLT5ieXRlc19sZWZ0ICsgMSk7CisgICAgICB2cmVzb3VyY2UtPm5hbWVbc3RyZWFtLT5ieXRlc19sZWZ0XSA9ICdcMCc7CisgICAgICBpZiAoIXBiX3JlYWQoc3RyZWFtLCAodWludDhfdCAqKXZyZXNvdXJjZS0+bmFtZSwgc3RyZWFtLT5ieXRlc19sZWZ0KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICAvLyBDYW4ndCBoYXZlIHNhbWUgbmFtZSBhcyBhbiBleGlzdGluZyByZXNvdXJjZS4KKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbl9yZXNvdXJjZXM7IGkrKykgeworICAgICAgICByZXNvdXJjZSAqY29tcGFyZSA9IHJlc291cmNlc1tpXTsKKyAgICAgICAgaWYgKGNvbXBhcmUgPT0gdnJlc291cmNlIHx8IGNvbXBhcmUgPT0gTlVMTCkgY29udGludWU7CisgICAgICAgIGlmIChzdHJjbXAoY29tcGFyZS0+bmFtZSwgdnJlc291cmNlLT5uYW1lKSA9PSAwKSB7CisgICAgICAgICAgZ3ByX2xvZyhHUFJfSU5GTywgIkR1cGxpY2F0ZSBSZXNvdXJjZSBuYW1lICVzLiIsIHZyZXNvdXJjZS0+bmFtZSk7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfZGVzY3JpcHRpb25fdGFnOgorICAgICAgaWYgKHN0cmVhbS0+Ynl0ZXNfbGVmdCA9PSAwKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgICAgdnJlc291cmNlLT5kZXNjcmlwdGlvbiA9IGdwcl9tYWxsb2Moc3RyZWFtLT5ieXRlc19sZWZ0ICsgMSk7CisgICAgICB2cmVzb3VyY2UtPmRlc2NyaXB0aW9uW3N0cmVhbS0+Ynl0ZXNfbGVmdF0gPSAnXDAnOworICAgICAgaWYgKCFwYl9yZWFkKHN0cmVhbSwgKHVpbnQ4X3QgKil2cmVzb3VyY2UtPmRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+Ynl0ZXNfbGVmdCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIC8vIE5vIG90aGVyIHN0cmluZyBmaWVsZHMgaW4gUmVzb3VyY2UuIFByaW50IHdhcm5pbmcgYW5kIHNraXAuCisgICAgICBncHJfbG9nKEdQUl9JTkZPLCAiVW5rbm93biBzdHJpbmcgZmllbGQgdHlwZSBpbiBSZXNvdXJjZSBwcm90b2J1Zi4iKTsKKyAgICAgIGlmICghcGJfcmVhZChzdHJlYW0sIE5VTEwsIHN0cmVhbS0+Ynl0ZXNfbGVmdCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgYnJlYWs7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIERlY29kZSBudW1lcmF0b3JzL2Rlbm9taW5hdG9ycyBpbiBhIHN0cmVhbS4gVGhlIGBjb3VudGAgYW5kIGBidXBgCisvLyAoQmFzaWNVbml0IHBvaW50ZXIpIGFyZSBwb2ludGVycyB0byB0aGUgYXBwcm9yaWF0ZSBmaWVsZHMgaW4gYSByZXNvdXJjZQorLy8gc3RydWN0Lgorc3RhdGljIGJvb2wgdmFsaWRhdGVfdW5pdHNfaGVscGVyKHBiX2lzdHJlYW1fdCAqc3RyZWFtLCBpbnQgKmNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0ICoqYnVwKSB7CisgIHdoaWxlIChzdHJlYW0tPmJ5dGVzX2xlZnQpIHsKKyAgICAoKmNvdW50KSsrOworICAgIC8vIEhhdmUgdG8gYWxsb2NhdGUgYSBuZXcgYXJyYXkgb2YgdmFsdWVzLiBOb3JtYWwgY2FzZSBpcyAwIG9yIDEsIHNvCisgICAgLy8gdGhpcyBzaG91bGQgbm9ybWFsbHkgbm90IGJlIGFuIGlzc3VlLgorICAgIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0ICpuZXdfYnVwID0KKyAgICAgICAgZ3ByX21hbGxvYygoc2l6ZV90KSpjb3VudCAqIHNpemVvZihnb29nbGVfY2Vuc3VzX1Jlc291cmNlX0Jhc2ljVW5pdCkpOworICAgIGlmICgqY291bnQgIT0gMSkgeworICAgICAgbWVtY3B5KG5ld19idXAsICpidXAsCisgICAgICAgICAgICAgKHNpemVfdCkoKmNvdW50IC0gMSkgKiBzaXplb2YoZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXQpKTsKKyAgICAgIGdwcl9mcmVlKCpidXApOworICAgIH0KKyAgICAqYnVwID0gbmV3X2J1cDsKKyAgICB1aW50NjRfdCB2YWx1ZTsKKyAgICBpZiAoIXBiX2RlY29kZV92YXJpbnQoc3RyZWFtLCAmdmFsdWUpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgICooKmJ1cCArICpjb3VudCAtIDEpID0gKGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfQmFzaWNVbml0KXZhbHVlOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyBWYWxpZGF0ZSB1bml0cyBmaWVsZCBvZiBhIFJlc291cmNlIHByb3RvLgorc3RhdGljIGJvb2wgdmFsaWRhdGVfdW5pdHMocGJfaXN0cmVhbV90ICpzdHJlYW0sIGNvbnN0IHBiX2ZpZWxkX3QgKmZpZWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmFyZykgeworICByZXNvdXJjZSAqdnJlc291cmNlID0gKHJlc291cmNlICopKCphcmcpOworICBzd2l0Y2ggKGZpZWxkLT50YWcpIHsKKyAgICBjYXNlIGdvb2dsZV9jZW5zdXNfUmVzb3VyY2VfTWVhc3VyZW1lbnRVbml0X251bWVyYXRvcl90YWc6CisgICAgICByZXR1cm4gdmFsaWRhdGVfdW5pdHNfaGVscGVyKHN0cmVhbSwgJnZyZXNvdXJjZS0+bl9udW1lcmF0b3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnJlc291cmNlLT5udW1lcmF0b3JzKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9NZWFzdXJlbWVudFVuaXRfZGVub21pbmF0b3JfdGFnOgorICAgICAgcmV0dXJuIHZhbGlkYXRlX3VuaXRzX2hlbHBlcihzdHJlYW0sICZ2cmVzb3VyY2UtPm5fZGVub21pbmF0b3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnJlc291cmNlLT5kZW5vbWluYXRvcnMpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiVW5rbm93biBmaWVsZCB0eXBlLiIpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgYnJlYWs7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiBhIFJlc291cmNlIHByb3RvLiBgaWRgIGlzIHRoZSBpbnRlbmRlZCByZXNvdXJjZSBpZC4KK3N0YXRpYyBib29sIHZhbGlkYXRlX3Jlc291cmNlX3BiKGNvbnN0IHVpbnQ4X3QgKnJlc291cmNlX3BiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlc291cmNlX3BiX3NpemUsIHNpemVfdCBpZCkgeworICBHUFJfQVNTRVJUKGlkIDwgbl9yZXNvdXJjZXMpOworICBpZiAocmVzb3VyY2VfcGIgPT0gTlVMTCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBnb29nbGVfY2Vuc3VzX1Jlc291cmNlIHZyZXNvdXJjZTsKKyAgdnJlc291cmNlLm5hbWUuZnVuY3MuZGVjb2RlID0gJnZhbGlkYXRlX3N0cmluZzsKKyAgdnJlc291cmNlLm5hbWUuYXJnID0gcmVzb3VyY2VzW2lkXTsKKyAgdnJlc291cmNlLmRlc2NyaXB0aW9uLmZ1bmNzLmRlY29kZSA9ICZ2YWxpZGF0ZV9zdHJpbmc7CisgIHZyZXNvdXJjZS5kZXNjcmlwdGlvbi5hcmcgPSByZXNvdXJjZXNbaWRdOworICB2cmVzb3VyY2UudW5pdC5udW1lcmF0b3IuZnVuY3MuZGVjb2RlID0gJnZhbGlkYXRlX3VuaXRzOworICB2cmVzb3VyY2UudW5pdC5udW1lcmF0b3IuYXJnID0gcmVzb3VyY2VzW2lkXTsKKyAgdnJlc291cmNlLnVuaXQuZGVub21pbmF0b3IuZnVuY3MuZGVjb2RlID0gJnZhbGlkYXRlX3VuaXRzOworICB2cmVzb3VyY2UudW5pdC5kZW5vbWluYXRvci5hcmcgPSByZXNvdXJjZXNbaWRdOworCisgIHBiX2lzdHJlYW1fdCBzdHJlYW0gPQorICAgICAgcGJfaXN0cmVhbV9mcm9tX2J1ZmZlcigodWludDhfdCAqKXJlc291cmNlX3BiLCByZXNvdXJjZV9wYl9zaXplKTsKKyAgaWYgKCFwYl9kZWNvZGUoJnN0cmVhbSwgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9maWVsZHMsICZ2cmVzb3VyY2UpKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIC8vIEEgUmVzb3VyY2UgbXVzdCBoYXZlIGEgbmFtZSwgYSB1bml0LCB3aXRoIGF0IGxlYXN0IG9uZSBudW1lcmF0b3IuCisgIHJldHVybiAocmVzb3VyY2VzW2lkXS0+bmFtZSAhPSBOVUxMICYmIHZyZXNvdXJjZS5oYXNfdW5pdCAmJgorICAgICAgICAgIHJlc291cmNlc1tpZF0tPm5fbnVtZXJhdG9ycyA+IDApOworfQorCisvLyBBbGxvY2F0ZSBhIGJsYW5rIHJlc291cmNlLCBhbmQgcmV0dXJuIGFzc29jaWF0ZWQgSUQuIE11c3QgYmUgY2FsbGVkIHdpdGgKKy8vIHJlc291cmNlX2xvY2sgaGVsZC4KK3NpemVfdCBhbGxvY2F0ZV9yZXNvdXJjZSh2b2lkKSB7CisgIC8vIHVzZSBuZXh0X2lkIHRvIG9wdGltaXplIGV4cGVjdGVkIHBsYWNlbWVudCBvZiBuZXh0IG5ldyByZXNvdXJjZS4KKyAgc3RhdGljIHNpemVfdCBuZXh0X2lkID0gMDsKKyAgc2l6ZV90IGlkID0gbl9yZXNvdXJjZXM7ICAvLyByZXNvdXJjZSBJRCAtIGluaXRpYWxpemUgdG8gaW52YWxpZCB2YWx1ZS4KKyAgLy8gRXhwYW5kIHJlc291cmNlcyBpZiBuZWVkZWQuCisgIGlmIChuX3Jlc291cmNlcyA9PSBuX2RlZmluZWRfcmVzb3VyY2VzKSB7CisgICAgc2l6ZV90IG5ld19uX3Jlc291cmNlcyA9IG5fcmVzb3VyY2VzID8gbl9yZXNvdXJjZXMgKiAyIDogMjsKKyAgICByZXNvdXJjZSAqKm5ld19yZXNvdXJjZXMgPSBncHJfbWFsbG9jKG5ld19uX3Jlc291cmNlcyAqIHNpemVvZihyZXNvdXJjZSAqKSk7CisgICAgbWVtY3B5KG5ld19yZXNvdXJjZXMsIHJlc291cmNlcywgbl9yZXNvdXJjZXMgKiBzaXplb2YocmVzb3VyY2UgKikpOworICAgIG1lbXNldChuZXdfcmVzb3VyY2VzICsgbl9yZXNvdXJjZXMsIDAsCisgICAgICAgICAgIChuZXdfbl9yZXNvdXJjZXMgLSBuX3Jlc291cmNlcykgKiBzaXplb2YocmVzb3VyY2UgKikpOworICAgIGdwcl9mcmVlKHJlc291cmNlcyk7CisgICAgcmVzb3VyY2VzID0gbmV3X3Jlc291cmNlczsKKyAgICBuX3Jlc291cmNlcyA9IG5ld19uX3Jlc291cmNlczsKKyAgICBpZCA9IG5fZGVmaW5lZF9yZXNvdXJjZXM7CisgIH0gZWxzZSB7CisgICAgR1BSX0FTU0VSVChuX2RlZmluZWRfcmVzb3VyY2VzIDwgbl9yZXNvdXJjZXMpOworICAgIC8vIEZpbmQgYSBmcmVlIGlkLgorICAgIGZvciAoc2l6ZV90IGJhc2UgPSAwOyBiYXNlIDwgbl9yZXNvdXJjZXM7IGJhc2UrKykgeworICAgICAgaWQgPSAobmV4dF9pZCArIGJhc2UpICUgbl9yZXNvdXJjZXM7CisgICAgICBpZiAocmVzb3VyY2VzW2lkXSA9PSBOVUxMKSBicmVhazsKKyAgICB9CisgIH0KKyAgR1BSX0FTU0VSVChpZCA8IG5fcmVzb3VyY2VzICYmIHJlc291cmNlc1tpZF0gPT0gTlVMTCk7CisgIHJlc291cmNlc1tpZF0gPSBncHJfbWFsbG9jKHNpemVvZihyZXNvdXJjZSkpOworICBtZW1zZXQocmVzb3VyY2VzW2lkXSwgMCwgc2l6ZW9mKHJlc291cmNlKSk7CisgIG5fZGVmaW5lZF9yZXNvdXJjZXMrKzsKKyAgbmV4dF9pZCA9IChpZCArIDEpICUgbl9yZXNvdXJjZXM7CisgIHJldHVybiBpZDsKK30KKworaW50MzJfdCBjZW5zdXNfZGVmaW5lX3Jlc291cmNlKGNvbnN0IHVpbnQ4X3QgKnJlc291cmNlX3BiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZXNvdXJjZV9wYl9zaXplKSB7CisgIGlmIChyZXNvdXJjZV9wYiA9PSBOVUxMKSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIGdwcl9tdV9sb2NrKCZyZXNvdXJjZV9sb2NrKTsKKyAgc2l6ZV90IGlkID0gYWxsb2NhdGVfcmVzb3VyY2UoKTsKKyAgLy8gVmFsaWRhdGUgcGIsIGV4dHJhY3QgbmFtZS4KKyAgaWYgKCF2YWxpZGF0ZV9yZXNvdXJjZV9wYihyZXNvdXJjZV9wYiwgcmVzb3VyY2VfcGJfc2l6ZSwgaWQpKSB7CisgICAgZGVsZXRlX3Jlc291cmNlX2xvY2tlZChpZCk7CisgICAgZ3ByX211X3VubG9jaygmcmVzb3VyY2VfbG9jayk7CisgICAgcmV0dXJuIC0xOworICB9CisgIGdwcl9tdV91bmxvY2soJnJlc291cmNlX2xvY2spOworICByZXR1cm4gKGludDMyX3QpaWQ7Cit9CisKK3ZvaWQgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZShpbnQzMl90IHJpZCkgeworICBncHJfbXVfbG9jaygmcmVzb3VyY2VfbG9jayk7CisgIGlmIChyaWQgPj0gMCAmJiAoc2l6ZV90KXJpZCA8IG5fcmVzb3VyY2VzICYmIHJlc291cmNlc1tyaWRdICE9IE5VTEwpIHsKKyAgICBkZWxldGVfcmVzb3VyY2VfbG9ja2VkKChzaXplX3QpcmlkKTsKKyAgfQorICBncHJfbXVfdW5sb2NrKCZyZXNvdXJjZV9sb2NrKTsKK30KKworaW50MzJfdCBjZW5zdXNfcmVzb3VyY2VfaWQoY29uc3QgY2hhciAqbmFtZSkgeworICBncHJfbXVfbG9jaygmcmVzb3VyY2VfbG9jayk7CisgIGZvciAoaW50MzJfdCBpZCA9IDA7IChzaXplX3QpaWQgPCBuX3Jlc291cmNlczsgaWQrKykgeworICAgIGlmIChyZXNvdXJjZXNbaWRdICE9IE5VTEwgJiYgc3RyY21wKHJlc291cmNlc1tpZF0tPm5hbWUsIG5hbWUpID09IDApIHsKKyAgICAgIGdwcl9tdV91bmxvY2soJnJlc291cmNlX2xvY2spOworICAgICAgcmV0dXJuIGlkOworICAgIH0KKyAgfQorICBncHJfbXVfdW5sb2NrKCZyZXNvdXJjZV9sb2NrKTsKKyAgcmV0dXJuIC0xOworfQorCitpbnQzMl90IGRlZmluZV9yZXNvdXJjZShjb25zdCByZXNvdXJjZSAqYmFzZSkgeworICBHUFJfQVNTRVJUKGJhc2UgIT0gTlVMTCAmJiBiYXNlLT5uYW1lICE9IE5VTEwgJiYgYmFzZS0+bl9udW1lcmF0b3JzID4gMCAmJgorICAgICAgICAgICAgIGJhc2UtPm51bWVyYXRvcnMgIT0gTlVMTCk7CisgIGdwcl9tdV9sb2NrKCZyZXNvdXJjZV9sb2NrKTsKKyAgc2l6ZV90IGlkID0gYWxsb2NhdGVfcmVzb3VyY2UoKTsKKyAgc2l6ZV90IGxlbiA9IHN0cmxlbihiYXNlLT5uYW1lKSArIDE7CisgIHJlc291cmNlc1tpZF0tPm5hbWUgPSBncHJfbWFsbG9jKGxlbik7CisgIG1lbWNweShyZXNvdXJjZXNbaWRdLT5uYW1lLCBiYXNlLT5uYW1lLCBsZW4pOworICBpZiAoYmFzZS0+ZGVzY3JpcHRpb24pIHsKKyAgICBsZW4gPSBzdHJsZW4oYmFzZS0+ZGVzY3JpcHRpb24pICsgMTsKKyAgICByZXNvdXJjZXNbaWRdLT5kZXNjcmlwdGlvbiA9IGdwcl9tYWxsb2MobGVuKTsKKyAgICBtZW1jcHkocmVzb3VyY2VzW2lkXS0+ZGVzY3JpcHRpb24sIGJhc2UtPmRlc2NyaXB0aW9uLCBsZW4pOworICB9CisgIHJlc291cmNlc1tpZF0tPnByZWZpeCA9IGJhc2UtPnByZWZpeDsKKyAgcmVzb3VyY2VzW2lkXS0+bl9udW1lcmF0b3JzID0gYmFzZS0+bl9udW1lcmF0b3JzOworICBsZW4gPSAoc2l6ZV90KWJhc2UtPm5fbnVtZXJhdG9ycyAqIHNpemVvZigqYmFzZS0+bnVtZXJhdG9ycyk7CisgIHJlc291cmNlc1tpZF0tPm51bWVyYXRvcnMgPSBncHJfbWFsbG9jKGxlbik7CisgIG1lbWNweShyZXNvdXJjZXNbaWRdLT5udW1lcmF0b3JzLCBiYXNlLT5udW1lcmF0b3JzLCBsZW4pOworICByZXNvdXJjZXNbaWRdLT5uX2Rlbm9taW5hdG9ycyA9IGJhc2UtPm5fZGVub21pbmF0b3JzOworICBpZiAoYmFzZS0+bl9kZW5vbWluYXRvcnMgIT0gMCkgeworICAgIGxlbiA9IChzaXplX3QpYmFzZS0+bl9kZW5vbWluYXRvcnMgKiBzaXplb2YoKmJhc2UtPmRlbm9taW5hdG9ycyk7CisgICAgcmVzb3VyY2VzW2lkXS0+ZGVub21pbmF0b3JzID0gZ3ByX21hbGxvYyhsZW4pOworICAgIG1lbWNweShyZXNvdXJjZXNbaWRdLT5kZW5vbWluYXRvcnMsIGJhc2UtPmRlbm9taW5hdG9ycywgbGVuKTsKKyAgfQorICBncHJfbXVfdW5sb2NrKCZyZXNvdXJjZV9sb2NrKTsKKyAgcmV0dXJuIChpbnQzMl90KWlkOworfQpkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2ltcG9ydHMuZ2VuZXJhdGVkLmggYi9zcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmgKc2ltaWxhcml0eSBpbmRleCA2MSUKcmVuYW1lIGZyb20gc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2ltcG9ydHMuZ2VuZXJhdGVkLmgKcmVuYW1lIHRvIHNyYy9jb3JlL2V4dC9jZW5zdXMvcmVzb3VyY2UuaAppbmRleCA4ZTVjOWE4Li41OTFiZmYwIDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19jeXRob24vaW1wb3J0cy5nZW5lcmF0ZWQuaAorKysgYi9zcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmgKQEAgLTMxLDIwICszMSwzMyBAQAogICoKICAqLwogCi0vKiBUT0RPKGF0YXNoKSByZW1vdmUgY3J1ZnQgKi8KLSNpZm5kZWYgUFlHUlBDX0NZVEhPTl9XSU5ET1dTX0lNUE9SVFNfSF8KLSNkZWZpbmUgUFlHUlBDX0NZVEhPTl9XSU5ET1dTX0lNUE9SVFNfSF8KKy8qIENlbnN1cy1pbnRlcm5hbCByZXNvdXJjZSBkZWZpbml0aW9uIGFuZCBtYW5pcGx1YXRpb24gZnVuY3Rpb25zLiAqLworI2lmbmRlZiBHUlBDX0NPUkVfRVhUX0NFTlNVU19SRVNPVVJDRV9ICisjZGVmaW5lIEdSUENfQ09SRV9FWFRfQ0VOU1VTX1JFU09VUkNFX0gKIAotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+Ci0KLSNpbmNsdWRlIDxncnBjL2J5dGVfYnVmZmVyLmg+Ci0jaW5jbHVkZSA8Z3JwYy9ieXRlX2J1ZmZlcl9yZWFkZXIuaD4KLSNpbmNsdWRlIDxncnBjL2NvbXByZXNzaW9uLmg+CiAjaW5jbHVkZSA8Z3JwYy9ncnBjLmg+Ci0jaW5jbHVkZSA8Z3JwYy9ncnBjX3NlY3VyaXR5Lmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2FsbG9jLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3NsaWNlLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RpbWUuaD4KLSNpbmNsdWRlIDxncnBjL3N0YXR1cy5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oIgogCi0jZW5kaWYKKy8qIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGEgcmVzb3VyY2UuICovCit0eXBlZGVmIHN0cnVjdCB7CisgIGNoYXIgKm5hbWU7CisgIGNoYXIgKmRlc2NyaXB0aW9uOworICBpbnQzMl90IHByZWZpeDsKKyAgaW50IG5fbnVtZXJhdG9yczsKKyAgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXQgKm51bWVyYXRvcnM7CisgIGludCBuX2Rlbm9taW5hdG9yczsKKyAgZ29vZ2xlX2NlbnN1c19SZXNvdXJjZV9CYXNpY1VuaXQgKmRlbm9taW5hdG9yczsKK30gcmVzb3VyY2U7CisKKy8qIEluaXRpYWxpemUgYW5kIHNodXRkb3duIHRoZSByZXNvdXJjZXMgc3Vic3lzdGVtLiAqLwordm9pZCBpbml0aWFsaXplX3Jlc291cmNlcyh2b2lkKTsKK3ZvaWQgc2h1dGRvd25fcmVzb3VyY2VzKHZvaWQpOworCisvKiBBZGQgYSBuZXcgcmVzb3VyY2UsIGdpdmVuIGEgcHJvcG9zZWQgcmVzb3VyY2Ugc3RydWN0dXJlLiBSZXR1cm5zIHRoZQorICAgcmVzb3VyY2UgSUQsIG9yIC12ZSBvbiBmYWlsdXJlLgorICAgVE9ETyhhdmVpdGNoKTogdGhpcyBmdW5jdGlvbiBleGlzdHMgdG8gc3VwcG9ydCBhZGRpdGlvbiBvZiB0aGUgYmFzZQorICAgcmVzb3VyY2VzLiBJdCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHdlIGhhdmUgdGhlIGFiaWxpdHkgdG8gYWRkIHJlc291cmNlcworICAgZnJvbSBjb25maWd1cmF0aW9uIGZpbGVzLiAqLworaW50MzJfdCBkZWZpbmVfcmVzb3VyY2UoY29uc3QgcmVzb3VyY2UgKmJhc2UpOworCisjZW5kaWYgLyogR1JQQ19DT1JFX0VYVF9DRU5TVVNfUkVTT1VSQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvY2xpZW50X2NoYW5uZWwuYyBiL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL2NsaWVudF9jaGFubmVsLmMKaW5kZXggYTA5NjQzNS4uMmMwYzRhYiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvY2xpZW50X2NoYW5uZWwuYworKysgYi9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9jbGllbnRfY2hhbm5lbC5jCkBAIC00MzYsMTUgKzQzNiwxNyBAQAogfQogCiAvKiBDb25zdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCi1zdGF0aWMgdm9pZCBpbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CitzdGF0aWMgZ3JwY19lcnJvciAqaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgewogICBncnBjX3N1YmNoYW5uZWxfY2FsbF9ob2xkZXJfaW5pdChlbGVtLT5jYWxsX2RhdGEsIGNjX3BpY2tfc3ViY2hhbm5lbCwgZWxlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+Y2FsbF9zdGFjayk7CisgIHJldHVybiBHUlBDX0VSUk9SX05PTkU7CiB9CiAKIC8qIERlc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwogc3RhdGljIHZvaWQgZGVzdHJveV9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX3N0YXRzICpzdGF0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9maW5hbF9pbmZvICpmaW5hbF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYW5kX2ZyZWVfbWVtb3J5KSB7CiAgIGdycGNfc3ViY2hhbm5lbF9jYWxsX2hvbGRlcl9kZXN0cm95KGV4ZWNfY3R4LCBlbGVtLT5jYWxsX2RhdGEpOwogICBncHJfZnJlZShhbmRfZnJlZV9tZW1vcnkpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvbGJfcG9saWN5LmggYi9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9sYl9wb2xpY3kuaAppbmRleCAzY2ZkMDQxLi5hMmY1NDQ2IDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9sYl9wb2xpY3kuaAorKysgYi9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9sYl9wb2xpY3kuaApAQCAtNzMsNyArNzMsNyBAQAogICB2b2lkICgqcGluZ19vbmUpKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2xiX3BvbGljeSAqcG9saWN5LAogICAgICAgICAgICAgICAgICAgIGdycGNfY2xvc3VyZSAqY2xvc3VyZSk7CiAKLSAgLyoqIHRyeSB0byBlbnRlciBhIFJFQURZIGNvbm5lY3Rpdml0eSBzdGF0ZSAqLworICAvKiogVHJ5IHRvIGVudGVyIGEgUkVBRFkgY29ubmVjdGl2aXR5IHN0YXRlICovCiAgIHZvaWQgKCpleGl0X2lkbGUpKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2xiX3BvbGljeSAqcG9saWN5KTsKIAogICAvKiogY2hlY2sgdGhlIGN1cnJlbnQgY29ubmVjdGl2aXR5IG9mIHRoZSBsYl9wb2xpY3kgKi8KQEAgLTgyLDcgKzgyLDkgQEAKICAgICAgIGdycGNfZXJyb3IgKipjb25uZWN0aXZpdHlfZXJyb3IpOwogCiAgIC8qKiBjYWxsIG5vdGlmeSB3aGVuIHRoZSBjb25uZWN0aXZpdHkgc3RhdGUgb2YgYSBjaGFubmVsIGNoYW5nZXMgZnJvbSAqc3RhdGUuCi0gICAgICBVcGRhdGVzICpzdGF0ZSB3aXRoIHRoZSBuZXcgc3RhdGUgb2YgdGhlIHBvbGljeSAqLworICAgICAgVXBkYXRlcyAqc3RhdGUgd2l0aCB0aGUgbmV3IHN0YXRlIG9mIHRoZSBwb2xpY3kuIENhbGxpbmcgd2l0aCBhIE5VTEwgXGEKKyAgICAgIHN0YXRlIGNhbmNlbHMgdGhlIHN1YnNjcmlwdGlvbi4KKyAgICAgICovCiAgIHZvaWQgKCpub3RpZnlfb25fc3RhdGVfY2hhbmdlKShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbGJfcG9saWN5ICpwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZSAqc3RhdGUsCkBAIC0xMjUsNyArMTI3LDcgQEAKIC8qKiBHaXZlbiBpbml0aWFsIG1ldGFkYXRhIGluIFxhIGluaXRpYWxfbWV0YWRhdGEsIGZpbmQgYW4gYXBwcm9wcmlhdGUKICAgICB0YXJnZXQgZm9yIHRoaXMgcnBjLCBhbmQgJ3JldHVybicgaXQgYnkgY2FsbGluZyBcYSBvbl9jb21wbGV0ZSBhZnRlciBzZXR0aW5nCiAgICAgXGEgdGFyZ2V0LgotICAgIFBpY2tpbmcgY2FuIGJlIGFzeW5jaHJvbm91cy4gQW55IElPIHNob3VsZCBiZSBkb25lIHVuZGVyIFxhIHBvbGxzZXQuICovCisgICAgUGlja2luZyBjYW4gYmUgYXN5bmNocm9ub3VzLiBBbnkgSU8gc2hvdWxkIGJlIGRvbmUgdW5kZXIgXGEgcG9sbGVudC4gKi8KIGludCBncnBjX2xiX3BvbGljeV9waWNrKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2xiX3BvbGljeSAqcG9saWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19wb2xsaW5nX2VudGl0eSAqcG9sbGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbWV0YWRhdGFfYmF0Y2ggKmluaXRpYWxfbWV0YWRhdGEsCkBAIC0xNDcsOCArMTQ5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbml0aWFsX21ldGFkYXRhX2ZsYWdzX21hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbml0aWFsX21ldGFkYXRhX2ZsYWdzX2VxKTsKIAorLyoqIFRyeSB0byBlbnRlciBhIFJFQURZIGNvbm5lY3Rpdml0eSBzdGF0ZSAqLwogdm9pZCBncnBjX2xiX3BvbGljeV9leGl0X2lkbGUoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfbGJfcG9saWN5ICpwb2xpY3kpOwogCisvKiBDYWxsIG5vdGlmeSB3aGVuIHRoZSBjb25uZWN0aXZpdHkgc3RhdGUgb2YgYSBjaGFubmVsIGNoYW5nZXMgZnJvbSBcYSAqc3RhdGUuCisgKiBVcGRhdGVzIFxhICpzdGF0ZSB3aXRoIHRoZSBuZXcgc3RhdGUgb2YgdGhlIHBvbGljeSAqLwogdm9pZCBncnBjX2xiX3BvbGljeV9ub3RpZnlfb25fc3RhdGVfY2hhbmdlKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbGJfcG9saWN5ICpwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGUgKnN0YXRlLApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbC5jIGIvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbC5jCmluZGV4IGQwODljZDQuLmRmMzU5MDQgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWwuYworKysgYi9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsLmMKQEAgLTcwMiwxOSArNzAyLDI2IEBACiAgIHJldHVybiBHRVRfQ09OTkVDVEVEX1NVQkNIQU5ORUwoYywgYWNxKTsKIH0KIAotZ3JwY19zdWJjaGFubmVsX2NhbGwgKmdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfY3JlYXRlX2NhbGwoCitncnBjX2Vycm9yICpncnBjX2Nvbm5lY3RlZF9zdWJjaGFubmVsX2NyZWF0ZV9jYWxsKAogICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2Nvbm5lY3RlZF9zdWJjaGFubmVsICpjb24sCi0gICAgZ3JwY19wb2xsaW5nX2VudGl0eSAqcG9sbGVudCkgeworICAgIGdycGNfcG9sbGluZ19lbnRpdHkgKnBvbGxlbnQsIGdycGNfc3ViY2hhbm5lbF9jYWxsICoqY2FsbCkgewogICBncnBjX2NoYW5uZWxfc3RhY2sgKmNoYW5zdGsgPSBDSEFOTkVMX1NUQUNLX0ZST01fQ09OTkVDVElPTihjb24pOwotICBncnBjX3N1YmNoYW5uZWxfY2FsbCAqY2FsbCA9Ci0gICAgICBncHJfbWFsbG9jKHNpemVvZihncnBjX3N1YmNoYW5uZWxfY2FsbCkgKyBjaGFuc3RrLT5jYWxsX3N0YWNrX3NpemUpOwotICBncnBjX2NhbGxfc3RhY2sgKmNhbGxzdGsgPSBTVUJDSEFOTkVMX0NBTExfVE9fQ0FMTF9TVEFDSyhjYWxsKTsKLSAgY2FsbC0+Y29ubmVjdGlvbiA9IGNvbjsKKyAgKmNhbGwgPSBncHJfbWFsbG9jKHNpemVvZihncnBjX3N1YmNoYW5uZWxfY2FsbCkgKyBjaGFuc3RrLT5jYWxsX3N0YWNrX3NpemUpOworICBncnBjX2NhbGxfc3RhY2sgKmNhbGxzdGsgPSBTVUJDSEFOTkVMX0NBTExfVE9fQ0FMTF9TVEFDSygqY2FsbCk7CisgICgqY2FsbCktPmNvbm5lY3Rpb24gPSBjb247ICAvLyBSZWYgaXMgYWRkZWQgYmVsb3cuCisgIGdycGNfZXJyb3IgKmVycm9yID0KKyAgICAgIGdycGNfY2FsbF9zdGFja19pbml0KGV4ZWNfY3R4LCBjaGFuc3RrLCAxLCBzdWJjaGFubmVsX2NhbGxfZGVzdHJveSwgKmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBjYWxsc3RrKTsKKyAgaWYgKGVycm9yICE9IEdSUENfRVJST1JfTk9ORSkgeworICAgIGNvbnN0IGNoYXIgKmVycm9yX3N0cmluZyA9IGdycGNfZXJyb3Jfc3RyaW5nKGVycm9yKTsKKyAgICBncHJfbG9nKEdQUl9FUlJPUiwgImVycm9yOiAlcyIsIGVycm9yX3N0cmluZyk7CisgICAgZ3JwY19lcnJvcl9mcmVlX3N0cmluZyhlcnJvcl9zdHJpbmcpOworICAgIGdwcl9mcmVlKCpjYWxsKTsKKyAgICByZXR1cm4gZXJyb3I7CisgIH0KICAgR1JQQ19DT05ORUNURURfU1VCQ0hBTk5FTF9SRUYoY29uLCAic3ViY2hhbm5lbF9jYWxsIik7Ci0gIGdycGNfY2FsbF9zdGFja19pbml0KGV4ZWNfY3R4LCBjaGFuc3RrLCAxLCBzdWJjaGFubmVsX2NhbGxfZGVzdHJveSwgY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgY2FsbHN0ayk7CiAgIGdycGNfY2FsbF9zdGFja19zZXRfcG9sbHNldF9vcl9wb2xsc2V0X3NldChleGVjX2N0eCwgY2FsbHN0aywgcG9sbGVudCk7Ci0gIHJldHVybiBjYWxsOworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOwogfQogCiBncnBjX2NhbGxfc3RhY2sgKmdycGNfc3ViY2hhbm5lbF9jYWxsX2dldF9jYWxsX3N0YWNrKApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbC5oIGIvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbC5oCmluZGV4IGI2ZDM5ZjUuLmFlMWQ5NmUgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWwuaAorKysgYi9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsLmgKQEAgLTEwOCw5ICsxMDgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19TVUJDSEFOTkVMX1JFRl9FWFRSQV9BUkdTKTsKIAogLyoqIGNvbnN0cnVjdCBhIHN1YmNoYW5uZWwgY2FsbCAqLwotZ3JwY19zdWJjaGFubmVsX2NhbGwgKmdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfY3JlYXRlX2NhbGwoCitncnBjX2Vycm9yICpncnBjX2Nvbm5lY3RlZF9zdWJjaGFubmVsX2NyZWF0ZV9jYWxsKAogICAgIGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2Nvbm5lY3RlZF9zdWJjaGFubmVsICpjb25uZWN0ZWRfc3ViY2hhbm5lbCwKLSAgICBncnBjX3BvbGxpbmdfZW50aXR5ICpwb2xsZW50KTsKKyAgICBncnBjX3BvbGxpbmdfZW50aXR5ICpwb2xsZW50LCBncnBjX3N1YmNoYW5uZWxfY2FsbCAqKnN1YmNoYW5uZWxfY2FsbCk7CiAKIC8qKiBwcm9jZXNzIGEgdHJhbnNwb3J0IGxldmVsIG9wICovCiB2b2lkIGdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfcHJvY2Vzc190cmFuc3BvcnRfb3AoCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2NhbGxfaG9sZGVyLmMgYi9zcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2NhbGxfaG9sZGVyLmMKaW5kZXggYjk2YTBhZC4uYmU2ZDA1NCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvc3ViY2hhbm5lbF9jYWxsX2hvbGRlci5jCisrKyBiL3NyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWxfY2FsbF9ob2xkZXIuYwpAQCAtODQsNiArODQsMTEgQEAKICAgZ3ByX2ZyZWUoaG9sZGVyLT53YWl0aW5nX29wcyk7CiB9CiAKKy8vIFRoZSBsb2dpYyBoZXJlIGlzIGZhaXJseSBjb21wbGljYXRlZCwgZHVlIHRvIChhKSB0aGUgZmFjdCB0aGF0IHdlCisvLyBuZWVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSByZWNlaXZlIHRoZSBzZW5kIG9wIGJlZm9yZSB0aGUKKy8vIGluaXRpYWwgbWV0YWRhdGEgb3AsIGFuZCAoYikgdGhlIG5lZWQgZm9yIGVmZmljaWVuY3ksIGVzcGVjaWFsbHkgaW4KKy8vIHRoZSBzdHJlYW1pbmcgY2FzZS4KKy8vIFRPRE8oY3RpbGxlcik6IEV4cGxhaW4gdGhpcyBtb3JlIHRob3JvdWdobHkuCiB2b2lkIGdycGNfc3ViY2hhbm5lbF9jYWxsX2hvbGRlcl9wZXJmb3JtX29wKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX3N1YmNoYW5uZWxfY2FsbF9ob2xkZXIgKmhvbGRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY190cmFuc3BvcnRfc3RyZWFtX29wICpvcCkgewpAQCAtMTIxLDcgKzEyNiw4IEBACiAgIH0KICAgLyogaWYgdGhpcyBpcyBhIGNhbmNlbGxhdGlvbiwgdGhlbiB3ZSBjYW4gcmFpc2Ugb3VyIGNhbmNlbGxlZCBmbGFnICovCiAgIGlmIChvcC0+Y2FuY2VsX2Vycm9yICE9IEdSUENfRVJST1JfTk9ORSkgewotICAgIGlmICghZ3ByX2F0bV9yZWxfY2FzKCZob2xkZXItPnN1YmNoYW5uZWxfY2FsbCwgMCwgMSkpIHsKKyAgICBpZiAoIWdwcl9hdG1fcmVsX2NhcygmaG9sZGVyLT5zdWJjaGFubmVsX2NhbGwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGdwcl9hdG0pKHVpbnRwdHJfdClDQU5DRUxMRURfQ0FMTCkpIHsKICAgICAgIGdvdG8gcmV0cnk7CiAgICAgfSBlbHNlIHsKICAgICAgIHN3aXRjaCAoaG9sZGVyLT5jcmVhdGlvbl9waGFzZSkgewpAQCAtMTU4LDEwICsxNjQsMTcgQEAKICAgLyogaWYgd2UndmUgZ290IGEgc3ViY2hhbm5lbCwgdGhlbiBsZXQncyBhc2sgaXQgdG8gY3JlYXRlIGEgY2FsbCAqLwogICBpZiAoaG9sZGVyLT5jcmVhdGlvbl9waGFzZSA9PSBHUlBDX1NVQkNIQU5ORUxfQ0FMTF9IT0xERVJfTk9UX0NSRUFUSU5HICYmCiAgICAgICBob2xkZXItPmNvbm5lY3RlZF9zdWJjaGFubmVsICE9IE5VTEwpIHsKLSAgICBncHJfYXRtX3JlbF9zdG9yZSgKLSAgICAgICAgJmhvbGRlci0+c3ViY2hhbm5lbF9jYWxsLAotICAgICAgICAoZ3ByX2F0bSkodWludHB0cl90KWdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfY3JlYXRlX2NhbGwoCi0gICAgICAgICAgICBleGVjX2N0eCwgaG9sZGVyLT5jb25uZWN0ZWRfc3ViY2hhbm5lbCwgaG9sZGVyLT5wb2xsZW50KSk7CisgICAgZ3JwY19zdWJjaGFubmVsX2NhbGwgKnN1YmNoYW5uZWxfY2FsbCA9IE5VTEw7CisgICAgZ3JwY19lcnJvciAqZXJyb3IgPSBncnBjX2Nvbm5lY3RlZF9zdWJjaGFubmVsX2NyZWF0ZV9jYWxsKAorICAgICAgICBleGVjX2N0eCwgaG9sZGVyLT5jb25uZWN0ZWRfc3ViY2hhbm5lbCwgaG9sZGVyLT5wb2xsZW50LAorICAgICAgICAmc3ViY2hhbm5lbF9jYWxsKTsKKyAgICBpZiAoZXJyb3IgIT0gR1JQQ19FUlJPUl9OT05FKSB7CisgICAgICBzdWJjaGFubmVsX2NhbGwgPSBDQU5DRUxMRURfQ0FMTDsKKyAgICAgIGZhaWxfbG9ja2VkKGV4ZWNfY3R4LCBob2xkZXIsIEdSUENfRVJST1JfUkVGKGVycm9yKSk7CisgICAgICBncnBjX3RyYW5zcG9ydF9zdHJlYW1fb3BfZmluaXNoX3dpdGhfZmFpbHVyZShleGVjX2N0eCwgb3AsIGVycm9yKTsKKyAgICB9CisgICAgZ3ByX2F0bV9yZWxfc3RvcmUoJmhvbGRlci0+c3ViY2hhbm5lbF9jYWxsLAorICAgICAgICAgICAgICAgICAgICAgIChncHJfYXRtKSh1aW50cHRyX3Qpc3ViY2hhbm5lbF9jYWxsKTsKICAgICByZXRyeV93YWl0aW5nX2xvY2tlZChleGVjX2N0eCwgaG9sZGVyKTsKICAgICBnb3RvIHJldHJ5OwogICB9CkBAIC0xODksMTAgKzIwMiwxNyBAQAogICAgICAgICAgICAgICAgIEdSUENfRVJST1JfQ1JFQVRFX1JFRkVSRU5DSU5HKAogICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsbGVkIGJlZm9yZSBjcmVhdGluZyBzdWJjaGFubmVsIiwgJmVycm9yLCAxKSk7CiAgIH0gZWxzZSB7Ci0gICAgZ3ByX2F0bV9yZWxfc3RvcmUoCi0gICAgICAgICZob2xkZXItPnN1YmNoYW5uZWxfY2FsbCwKLSAgICAgICAgKGdwcl9hdG0pKHVpbnRwdHJfdClncnBjX2Nvbm5lY3RlZF9zdWJjaGFubmVsX2NyZWF0ZV9jYWxsKAotICAgICAgICAgICAgZXhlY19jdHgsIGhvbGRlci0+Y29ubmVjdGVkX3N1YmNoYW5uZWwsIGhvbGRlci0+cG9sbGVudCkpOworICAgIGdycGNfc3ViY2hhbm5lbF9jYWxsICpzdWJjaGFubmVsX2NhbGwgPSBOVUxMOworICAgIGdycGNfZXJyb3IgKm5ld19lcnJvciA9IGdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWxfY3JlYXRlX2NhbGwoCisgICAgICAgIGV4ZWNfY3R4LCBob2xkZXItPmNvbm5lY3RlZF9zdWJjaGFubmVsLCBob2xkZXItPnBvbGxlbnQsCisgICAgICAgICZzdWJjaGFubmVsX2NhbGwpOworICAgIGlmIChuZXdfZXJyb3IgIT0gR1JQQ19FUlJPUl9OT05FKSB7CisgICAgICBuZXdfZXJyb3IgPSBncnBjX2Vycm9yX2FkZF9jaGlsZChuZXdfZXJyb3IsIGVycm9yKTsKKyAgICAgIHN1YmNoYW5uZWxfY2FsbCA9IENBTkNFTExFRF9DQUxMOworICAgICAgZmFpbF9sb2NrZWQoZXhlY19jdHgsIGhvbGRlciwgbmV3X2Vycm9yKTsKKyAgICB9CisgICAgZ3ByX2F0bV9yZWxfc3RvcmUoJmhvbGRlci0+c3ViY2hhbm5lbF9jYWxsLAorICAgICAgICAgICAgICAgICAgICAgIChncHJfYXRtKSh1aW50cHRyX3Qpc3ViY2hhbm5lbF9jYWxsKTsKICAgICByZXRyeV93YWl0aW5nX2xvY2tlZChleGVjX2N0eCwgaG9sZGVyKTsKICAgfQogICBncHJfbXVfdW5sb2NrKCZob2xkZXItPm11KTsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jIGIvc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjMjVlZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jCkBAIC0wLDAgKzEsMTAzOSBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKy8qKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZ1JQQyBMQiBwb2xpY3kuCisgKgorICogVGhpcyBwb2xpY3kgdGFrZXMgYXMgaW5wdXQgYSBzZXQgb2YgcmVzb2x2ZWQgYWRkcmVzc2VzIHthMS4uYW59IGZvciB3aGljaCB0aGUKKyAqIExCIHNldCB3YXMgc2V0IChpdCdzIHRoZSByZXNvbHZlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGlzKS4gVGhhdCBpcworICogdG8gc2F5LCB7YTEuLmFufSByZXByZXNlbnQgYSBjb2xsZWN0aW9uIG9mIExCIHNlcnZlcnMuCisgKgorICogQW4gaW50ZXJuYWwgY2hhbm5lbCAoXGEgZ2xiX2xiX3BvbGljeS5sYl9jaGFubmVsKSBpcyBjcmVhdGVkIG92ZXIge2ExLi5hbn0uCisgKiBUaGlzIGNoYW5uZWwgYmVoYXZlcyBqdXN0IGxpa2UgYSByZWd1bGFyIGNoYW5uZWwuIEluIHBhcnRpY3VsYXIsIHRoZQorICogY29uc3RydWN0ZWQgVVJJIG92ZXIgdGhlIGFkZHJlc3NlcyBhMS4uYW4gd2lsbCB1c2UgdGhlIGRlZmF1bHQgcGljayBmaXJzdAorICogcG9saWN5IHRvIHNlbGVjdCBmcm9tIHRoaXMgbGlzdCBvZiBMQiBzZXJ2ZXIgYmFja2VuZHMuCisgKgorICogVGhlIGZpcnN0IHRpbWUgdGhlIHBvbGljeSBnZXRzIGEgcmVxdWVzdCBmb3IgYSBwaWNrLCBhIHBpbmcsIG9yIHRvIGV4aXQgdGhlCisgKiBpZGxlIHN0YXRlLCBcYSBxdWVyeV9mb3JfYmFja2VuZHMoKSBpcyBjYWxsZWQuIEl0IGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgXGEKKyAqIGxiX2NsaWVudF9kYXRhLCBhbiBpbnRlcm5hbCBzdHJ1Y3QgbWVhbnQgdG8gY29udGFpbiB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGgKKyAqIHRoZSBpbnRlcm5hbCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIExCIHNlcnZlci4gVGhpcyBpbnN0YW5jZSBpcyBjcmVhdGVkIHZpYQorICogXGEgbGJfY2xpZW50X2RhdGFfY3JlYXRlKCkuIFRoZXJlLCB0aGUgY2FsbCBvdmVyIGxiX2NoYW5uZWwgdG8gcGljay1maXJzdAorICogZnJvbSB7YTEuLmFufSBpcyBjcmVhdGVkLCB0aGUgXGEgTG9hZEJhbGFuY2luZ1JlcXVlc3QgbWVzc2FnZSBpcyBhc3NlbWJsZWQKKyAqIGFuZCBhbGwgbmVjZXNzYXJ5IGNhbGxiYWNrcyBmb3IgdGhlIHByb2dyZXNzIG9mIHRoZSBpbnRlcm5hbCBjYWxsIGNvbmZpZ3VyZWQuCisgKgorICogQmFjayBpbiBcYSBxdWVyeV9mb3JfYmFja2VuZHMoKSwgdGhlIGludGVybmFsICpzdHJlYW1pbmcqIGNhbGwgdG8gdGhlIExCCisgKiBzZXJ2ZXIgKHdoaWNoZXZlciBhZGRyZXNzIGZyb20ge2ExLi5hbn0gcGljay1maXJzdCBjaG9zZSkgaXMga2lja2VkIG9mZi4KKyAqIEl0J2xsIHByb2dyZXNzIG92ZXIgdGhlIGNhbGxiYWNrcyBjb25maWd1cmVkIGluIFxhIGxiX2NsaWVudF9kYXRhX2NyZWF0ZSgpCisgKiAoc2VlIHRoZSBmaWVsZCBkb2NzdHJpbmdzIG9mIFxhIGxiX2NsaWVudF9kYXRhIGZvciBtb3JlIGRldGFpbHMpLgorICoKKyAqIElmIHRoZSBjYWxsIGZhaWxzIHdpdGggVU5JTVBMRU1FTlRFRCwgdGhlIG9yaWdpbmFsIGNhbGwgd2lsbCBhbHNvIGZhaWwuCisgKiBUaGVyZSdzIGEgbWlzY29uZmlndXJhdGlvbiBzb21ld2hlcmU6IGF0IGxlYXN0IG9uZSBvZiB7YTEuLmFufSBpc24ndCBhIExCCisgKiBzZXJ2ZXIsIHdoaWNoIGNvbnRyYWRpY3RzIHRoZSBMQiBiaXQgYmVpbmcgc2V0LiBJZiB0aGUgaW50ZXJuYWwgY2FsbCB0aW1lcworICogb3V0LCB0aGUgdXN1YWwgYmVoYXZpb3Igb2YgcGljay1maXJzdCBhcHBsaWVzLCBjb250aW51aW5nIHRvIHBpY2sgZnJvbSB0aGUKKyAqIGxpc3Qge2ExLi5hbn0uCisgKgorICogVXBvbiBzdWNlc3NzLCBhIFxhIExvYWRCYWxhbmNpbmdSZXNwb25zZSBpcyBleHBlY3RlZCBpbiBcYSByZXNfcmVjdl9jYi4gQW4KKyAqIGludmFsaWQgb25lIHJlc3VsdHMgaW4gdGhlIHRlcm1pbmF0aW9uIG9mIHRoZSBzdHJlYW1pbmcgY2FsbC4gQSBuZXcgc3RyZWFtaW5nCisgKiBjYWxsIHNob3VsZCBiZSBjcmVhdGVkIGlmIHBvc3NpYmxlLCBmYWlsaW5nIHRoZSBvcmlnaW5hbCBjYWxsIG90aGVyd2lzZS4KKyAqIEZvciBhIHZhbGlkIFxhIExvYWRCYWxhbmNpbmdSZXNwb25zZSwgdGhlIHNlcnZlciBsaXN0IG9mIGFjdHVhbCBiYWNrZW5kcyBpcworICogZXh0cmFjdGVkLiBBIFJvdW5kIFJvYmluIHBvbGljeSB3aWxsIGJlIGNyZWF0ZWQgZnJvbSB0aGlzIGxpc3QuIFRoZXJlIGFyZSB0d28KKyAqIHBvc3NpYmxlIHNjZW5hcmlvczoKKyAqCisgKiAxLiBUaGlzIGlzIHRoZSBmaXJzdCBzZXJ2ZXIgbGlzdCByZWNlaXZlZC4gVGhlcmUgd2FzIG5vIHByZXZpb3VzIGluc3RhbmNlIG9mCisgKiAgICB0aGUgUm91bmQgUm9iaW4gcG9saWN5LiBcYSBycl9oYW5kb3ZlcigpIHdpbGwgaW5zdGFudGlhdGUgdGhlIFJSIHBvbGljeQorICogICAgYW5kIHBlcmZvcm0gYWxsIHRoZSBwZW5kaW5nIG9wZXJhdGlvbnMgb3ZlciBpdC4KKyAqIDIuIFRoZXJlJ3MgYWxyZWFkeSBhIFJSIHBvbGljeSBpbnN0YW5jZSBhY3RpdmUuIFdlIG5lZWQgdG8gaW50cm9kdWNlIHRoZSBuZXcKKyAqICAgIG9uZSBidWlsZCBmcm9tIHRoZSBuZXcgc2VydmVybGlzdCwgYnV0IHRha2luZyBjYXJlIG5vdCB0byBkaXNydXB0IHRoZQorICogICAgb3BlcmF0aW9ucyBpbiBwcm9ncmVzcyBvdmVyIHRoZSBvbGQgUlIgaW5zdGFuY2UuIFRoaXMgaXMgZG9uZSBieQorICogICAgZGVjcmVhc2luZyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvbGQgcG9saWN5LiBUaGUgbW9tZW50IG5vIG1vcmUKKyAqICAgIHJlZmVyZW5jZXMgYXJlIGhlbGQgb24gdGhlIG9sZCBSUiBwb2xpY3ksIGl0J2xsIGJlIGRlc3Ryb3llZCBhbmQgXGEKKyAqICAgIHJyX2Nvbm5lY3Rpdml0eV9jaGFuZ2VkIG5vdGlmaWVkIHdpdGggYSBcYSBHUlBDX0NIQU5ORUxfU0hVVERPV04gc3RhdGUuCisgKiAgICBBdCB0aGlzIHBvaW50IHdlIGNhbiB0cmFuc2l0aW9uIHRvIGEgbmV3IFJSIGluc3RhbmNlIHNhZmVseSwgd2hpY2ggaXMgZG9uZQorICogICAgb25jZSBhZ2FpbiB2aWEgXGEgcnJfaGFuZG92ZXIoKS4KKyAqCisgKgorICogT25jZSBhIFJSIHBvbGljeSBpbnN0YW5jZSBpcyBpbiBwbGFjZSAoYW5kIGdldHRpbmcgdXBkYXRlZCBhcyBkZXNjcmliZWQpLAorICogY2FsbHMgdG8gZm9yIGEgcGljaywgYSBwaW5nIG9yIGEgY2FuY2VsbGF0aW9uIHdpbGwgYmUgc2VydmljZWQgcmlnaHQgYXdheSBieQorICogZm9yd2FyZGluZyB0aGVtIHRvIHRoZSBSUiBpbnN0YW5jZS4gQW55IHRpbWUgdGhlcmUncyBubyBSUiBwb2xpY3kgYXZhaWxhYmxlCisgKiAoaWUsIHJpZ2h0IGFmdGVyIHRoZSBjcmVhdGlvbiBvZiB0aGUgZ1JQQ0xCIHBvbGljeSwgaWYgYW4gZW1wdHkgc2VydmVybGlzdAorICogaXMgcmVjZWl2ZWQsIGV0YyksIHBpY2svcGluZyByZXF1ZXN0cyBhcmUgYWRkZWQgdG8gYSBsaXN0IG9mIHBlbmRpbmcKKyAqIHBpY2tzL3BpbmdzIHRvIGJlIGZsdXNoZWQgYW5kIHNlcnZpY2VkIGFzIHBhcnQgb2YgXGEgcnJfaGFuZG92ZXIoKSB0aGUgbW9tZW50CisgKiB0aGUgUlIgcG9saWN5IGluc3RhbmNlIGJlY29tZXMgYXZhaWxhYmxlLgorICoKKyAqIFxzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL21hc3Rlci9kb2MvbG9hZC1iYWxhbmNpbmcubWQgZm9yIHRoZQorICogaGlnaCBsZXZlbCBkZXNpZ24gYW5kIGRldGFpbHMuICovCisKKy8qIFRPRE8oZGdxKToKKyAqIC0gSW1wbGVtZW50IExCIHNlcnZpY2UgZm9yd2FyZGluZyAocG9pbnQgMmMuIGluIHRoZSBkb2MncyBkaWFncmFtKS4KKyAqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxncnBjL2J5dGVfYnVmZmVyX3JlYWRlci5oPgorI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9ob3N0X3BvcnQuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3RyaW5nX3V0aWwuaD4KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL2NsaWVudF9jaGFubmVsX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9sYl9wb2xpY3lfcmVnaXN0cnkuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9wYXJzZV9hZGRyZXNzLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3Ivc29ja2FkZHJfdXRpbHMuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VwcG9ydC9zdHJpbmcuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2UvY2hhbm5lbC5oIgorCitpbnQgZ3JwY19sYl9nbGJfdHJhY2UgPSAwOworCit0eXBlZGVmIHN0cnVjdCB3cmFwcGVkX3JyX2Nsb3N1cmVfYXJnIHsKKyAgLyogdGhlIG9yaWdpbmFsIGNsb3N1cmUuIFVzdWFsbHkgYSBvbl9jb21wbGV0ZS9ub3RpZnkgY2IgZm9yIHBpY2soKSBhbmQgcGluZygpCisgICAqIGNhbGxzIGFnYWluc3QgdGhlIGludGVybmFsIFJSIGluc3RhbmNlLCByZXNwZWN0aXZlbHkuICovCisgIGdycGNfY2xvc3VyZSAqd3JhcHBlZF9jbG9zdXJlOworCisgIC8qIFRoZSBSUiBpbnN0YW5jZSByZWxhdGVkIHRvIHRoZSBjbG9zdXJlICovCisgIGdycGNfbGJfcG9saWN5ICpycl9wb2xpY3k7CisKKyAgLyogd2hlbiBub3QgTlVMTCwgcmVwcmVzZW50cyBhIHBlbmRpbmdfe3BpY2sscGluZ30gbm9kZSB0byBiZSBmcmVlZCB1cG9uCisgICAqIGNsb3N1cmUgZXhlY3V0aW9uICovCisgIHZvaWQgKm93bmluZ19wZW5kaW5nX25vZGU7IC8qIHRvIGJlIGZyZWVkIGlmIG5vdCBOVUxMICovCit9IHdyYXBwZWRfcnJfY2xvc3VyZV9hcmc7CisKKy8qIFRoZSBcYSBvbl9jb21wbGV0ZSBjbG9zdXJlIHBhc3NlZCBhcyBwYXJ0IG9mIHRoZSBwaWNrIHJlcXVpcmVzIGtlZXBpbmcgYQorICogcmVmZXJlbmNlIHRvIGl0cyBhc3NvY2lhdGVkIHJvdW5kIHJvYmluIGluc3RhbmNlLiBXZSB3cmFwIHRoaXMgY2xvc3VyZSBpbgorICogb3JkZXIgdG8gdW5yZWYgdGhlIHJvdW5kIHJvYmluIGluc3RhbmNlIHVwb24gaXRzIGludm9jYXRpb24gKi8KK3N0YXRpYyB2b2lkIHdyYXBwZWRfcnJfY2xvc3VyZShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CisgIHdyYXBwZWRfcnJfY2xvc3VyZV9hcmcgKndjX2FyZyA9IGFyZzsKKyAgaWYgKHdjX2FyZy0+cnJfcG9saWN5ICE9IE5VTEwpIHsKKyAgICBpZiAoZ3JwY19sYl9nbGJfdHJhY2UpIHsKKyAgICAgIGdwcl9sb2coR1BSX0lORk8sICJVbnJlZmZpbmcgUlIgKDB4JSIgUFJJeFBUUiAiKSIsCisgICAgICAgICAgICAgIChpbnRwdHJfdCl3Y19hcmctPnJyX3BvbGljeSk7CisgICAgfQorICAgIEdSUENfTEJfUE9MSUNZX1VOUkVGKGV4ZWNfY3R4LCB3Y19hcmctPnJyX3BvbGljeSwgIndyYXBwZWRfcnJfY2xvc3VyZSIpOworICB9CisgIEdQUl9BU1NFUlQod2NfYXJnLT53cmFwcGVkX2Nsb3N1cmUgIT0gTlVMTCk7CisgIGdycGNfZXhlY19jdHhfc2NoZWQoZXhlY19jdHgsIHdjX2FyZy0+d3JhcHBlZF9jbG9zdXJlLCBlcnJvciwgTlVMTCk7CisgIGdwcl9mcmVlKHdjX2FyZy0+b3duaW5nX3BlbmRpbmdfbm9kZSk7Cit9CisKKy8qIExpbmtlZCBsaXN0IG9mIHBlbmRpbmcgcGljayByZXF1ZXN0cy4gSXQgc3RvcmVzIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8KKyAqIGV2ZW50dWFsbHkgY2FsbCAoUm91bmQgUm9iaW4ncykgcGljaygpIG9uIHRoZW0uIFRoZXkgbWFpbmx5IHN0YXkgcGVuZGluZworICogd2FpdGluZyBmb3IgdGhlIFJSIHBvbGljeSB0byBiZSBjcmVhdGVkL3VwZGF0ZWQuCisgKgorICogT25lIHBhcnRpY3VsYXJpdHkgaXMgdGhlIHdyYXBwaW5nIG9mIHRoZSB1c2VyLXByb3ZpZGVkIFxhIG9uX2NvbXBsZXRlIGNsb3N1cmUKKyAqIChpbiBcYSB3cmFwcGVkX29uX2NvbXBsZXRlIGFuZCBcYSB3cmFwcGVkX29uX2NvbXBsZXRlX2FyZykuIFRoaXMgaXMgbmVlZGVkIGluCisgKiBvcmRlciB0byBjb3JyZWN0bHkgdW5yZWYgdGhlIFJSIHBvbGljeSBpbnN0YW5jZSB1cG9uIGNvbXBsZXRpb24gb2YgdGhlIHBpY2suCisgKiBTZWUgXGEgd3JhcHBlZF9ycl9jbG9zdXJlIGZvciBkZXRhaWxzLiAqLwordHlwZWRlZiBzdHJ1Y3QgcGVuZGluZ19waWNrIHsKKyAgc3RydWN0IHBlbmRpbmdfcGljayAqbmV4dDsKKworICAvKiBwb2xsaW5nIGVudGl0eSBmb3IgdGhlIHBpY2soKSdzIGFzeW5jIG5vdGlmaWNhdGlvbiAqLworICBncnBjX3BvbGxpbmdfZW50aXR5ICpwb2xsZW50OworCisgIC8qIHRoZSBpbml0aWFsIG1ldGFkYXRhIGZvciB0aGUgcGljay4gU2VlIGdycGNfbGJfcG9saWN5X3BpY2soKSAqLworICBncnBjX21ldGFkYXRhX2JhdGNoICppbml0aWFsX21ldGFkYXRhOworCisgIC8qIGJpdG1hc2sgcGFzc2VkIHRvIHBpY2soKSBhbmQgdXNlZCBmb3Igc2VsZWN0aXZlIGNhbmNlbGxpbmcuIFNlZQorICAgKiBncnBjX2xiX3BvbGljeV9jYW5jZWxfcGlja3MoKSAqLworICB1aW50MzJfdCBpbml0aWFsX21ldGFkYXRhX2ZsYWdzOworCisgIC8qIG91dHB1dCBhcmd1bWVudCB3aGVyZSB0byBzdG9yZSB0aGUgcGljaygpZWQgY29ubmVjdGVkIHN1YmNoYW5uZWwsIG9yIE5VTEwKKyAgICogdXBvbiBlcnJvci4gKi8KKyAgZ3JwY19jb25uZWN0ZWRfc3ViY2hhbm5lbCAqKnRhcmdldDsKKworICAvKiBhIGNsb3N1cmUgd3JhcHBpbmcgdGhlIG9yaWdpbmFsIG9uX2NvbXBsZXRlIG9uZSB0byBiZSBpbnZva2VkIG9uY2UgdGhlCisgICAqIHBpY2soKSBoYXMgY29tcGxldGVkIChyZWdhcmRsZXNzIG9mIHN1Y2Nlc3MpICovCisgIGdycGNfY2xvc3VyZSB3cmFwcGVkX29uX2NvbXBsZXRlOworCisgIC8qIGFyZ3MgZm9yIHdyYXBwZWRfb25fY29tcGxldGUgKi8KKyAgd3JhcHBlZF9ycl9jbG9zdXJlX2FyZyB3cmFwcGVkX29uX2NvbXBsZXRlX2FyZzsKK30gcGVuZGluZ19waWNrOworCitzdGF0aWMgdm9pZCBhZGRfcGVuZGluZ19waWNrKHBlbmRpbmdfcGljayAqKnJvb3QsIGdycGNfcG9sbGluZ19lbnRpdHkgKnBvbGxlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbWV0YWRhdGFfYmF0Y2ggKmluaXRpYWxfbWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGluaXRpYWxfbWV0YWRhdGFfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY29ubmVjdGVkX3N1YmNoYW5uZWwgKip0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2xvc3VyZSAqb25fY29tcGxldGUpIHsKKyAgcGVuZGluZ19waWNrICpwcCA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpwcCkpOworICBtZW1zZXQocHAsIDAsIHNpemVvZihwZW5kaW5nX3BpY2spKTsKKyAgbWVtc2V0KCZwcC0+d3JhcHBlZF9vbl9jb21wbGV0ZV9hcmcsIDAsIHNpemVvZih3cmFwcGVkX3JyX2Nsb3N1cmVfYXJnKSk7CisgIHBwLT5uZXh0ID0gKnJvb3Q7CisgIHBwLT5wb2xsZW50ID0gcG9sbGVudDsKKyAgcHAtPnRhcmdldCA9IHRhcmdldDsKKyAgcHAtPmluaXRpYWxfbWV0YWRhdGEgPSBpbml0aWFsX21ldGFkYXRhOworICBwcC0+aW5pdGlhbF9tZXRhZGF0YV9mbGFncyA9IGluaXRpYWxfbWV0YWRhdGFfZmxhZ3M7CisgIHBwLT53cmFwcGVkX29uX2NvbXBsZXRlX2FyZy53cmFwcGVkX2Nsb3N1cmUgPSBvbl9jb21wbGV0ZTsKKyAgZ3JwY19jbG9zdXJlX2luaXQoJnBwLT53cmFwcGVkX29uX2NvbXBsZXRlLCB3cmFwcGVkX3JyX2Nsb3N1cmUsCisgICAgICAgICAgICAgICAgICAgICZwcC0+d3JhcHBlZF9vbl9jb21wbGV0ZV9hcmcpOworICAqcm9vdCA9IHBwOworfQorCisvKiBTYW1lIGFzIHRoZSBcYSBwZW5kaW5nX3BpY2sgc3RydWN0IGJ1dCBmb3IgcGluZyBvcGVyYXRpb25zICovCit0eXBlZGVmIHN0cnVjdCBwZW5kaW5nX3BpbmcgeworICBzdHJ1Y3QgcGVuZGluZ19waW5nICpuZXh0OworCisgIC8qIGEgY2xvc3VyZSB3cmFwcGluZyB0aGUgb3JpZ2luYWwgb25fY29tcGxldGUgb25lIHRvIGJlIGludm9rZWQgb25jZSB0aGUKKyAgICogcGluZygpIGhhcyBjb21wbGV0ZWQgKHJlZ2FyZGxlc3Mgb2Ygc3VjY2VzcykgKi8KKyAgZ3JwY19jbG9zdXJlIHdyYXBwZWRfbm90aWZ5OworCisgIC8qIGFyZ3MgZm9yIHdyYXBwZWRfbm90aWZ5ICovCisgIHdyYXBwZWRfcnJfY2xvc3VyZV9hcmcgd3JhcHBlZF9ub3RpZnlfYXJnOworfSBwZW5kaW5nX3Bpbmc7CisKK3N0YXRpYyB2b2lkIGFkZF9wZW5kaW5nX3BpbmcocGVuZGluZ19waW5nICoqcm9vdCwgZ3JwY19jbG9zdXJlICpub3RpZnkpIHsKKyAgcGVuZGluZ19waW5nICpwcGluZyA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpwcGluZykpOworICBtZW1zZXQocHBpbmcsIDAsIHNpemVvZihwZW5kaW5nX3BpbmcpKTsKKyAgbWVtc2V0KCZwcGluZy0+d3JhcHBlZF9ub3RpZnlfYXJnLCAwLCBzaXplb2Yod3JhcHBlZF9ycl9jbG9zdXJlX2FyZykpOworICBwcGluZy0+bmV4dCA9ICpyb290OworICBncnBjX2Nsb3N1cmVfaW5pdCgmcHBpbmctPndyYXBwZWRfbm90aWZ5LCB3cmFwcGVkX3JyX2Nsb3N1cmUsCisgICAgICAgICAgICAgICAgICAgICZwcGluZy0+d3JhcHBlZF9ub3RpZnlfYXJnKTsKKyAgcHBpbmctPndyYXBwZWRfbm90aWZ5X2FyZy53cmFwcGVkX2Nsb3N1cmUgPSBub3RpZnk7CisgICpyb290ID0gcHBpbmc7Cit9CisKKy8qCisgKiBnbGJfbGJfcG9saWN5CisgKi8KK3R5cGVkZWYgc3RydWN0IHJyX2Nvbm5lY3Rpdml0eV9kYXRhIHJyX2Nvbm5lY3Rpdml0eV9kYXRhOworc3RydWN0IGxiX2NsaWVudF9kYXRhOworc3RhdGljIGNvbnN0IGdycGNfbGJfcG9saWN5X3Z0YWJsZSBnbGJfbGJfcG9saWN5X3Z0YWJsZTsKK3R5cGVkZWYgc3RydWN0IGdsYl9sYl9wb2xpY3kgeworICAvKiogYmFzZSBwb2xpY3k6IG11c3QgYmUgZmlyc3QgKi8KKyAgZ3JwY19sYl9wb2xpY3kgYmFzZTsKKworICAvKiogbXV0ZXggcHJvdGVjdGluZyByZW1haW5pbmcgbWVtYmVycyAqLworICBncHJfbXUgbXU7CisKKyAgZ3JwY19jbGllbnRfY2hhbm5lbF9mYWN0b3J5ICpjY19mYWN0b3J5OworCisgIC8qKiBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBMQiBzZXJ2ZXIgKi8KKyAgZ3JwY19jaGFubmVsICpsYl9jaGFubmVsOworCisgIC8qKiB0aGUgUlIgcG9saWN5IHRvIHVzZSBvZiB0aGUgYmFja2VuZCBzZXJ2ZXJzIHJldHVybmVkIGJ5IHRoZSBMQiBzZXJ2ZXIgKi8KKyAgZ3JwY19sYl9wb2xpY3kgKnJyX3BvbGljeTsKKworICBib29sIHN0YXJ0ZWRfcGlja2luZzsKKworICAvKiogb3VyIGNvbm5lY3Rpdml0eSBzdGF0ZSB0cmFja2VyICovCisgIGdycGNfY29ubmVjdGl2aXR5X3N0YXRlX3RyYWNrZXIgc3RhdGVfdHJhY2tlcjsKKworICAvKiogc3RvcmVzIHRoZSBkZXNlcmlhbGl6ZWQgcmVzcG9uc2UgZnJvbSB0aGUgTEIuIE1heSBiZSBOVUxMIHVudGlsIG9uZSBzdWNoCisgICAqIHJlc3BvbnNlIGhhcyBhcnJpdmVkLiAqLworICBncnBjX2dycGNsYl9zZXJ2ZXJsaXN0ICpzZXJ2ZXJsaXN0OworCisgIC8qKiBsaXN0IG9mIHBpY2tzIHRoYXQgYXJlIHdhaXRpbmcgb24gUlIncyBwb2xpY3kgY29ubmVjdGl2aXR5ICovCisgIHBlbmRpbmdfcGljayAqcGVuZGluZ19waWNrczsKKworICAvKiogbGlzdCBvZiBwaW5ncyB0aGF0IGFyZSB3YWl0aW5nIG9uIFJSJ3MgcG9saWN5IGNvbm5lY3Rpdml0eSAqLworICBwZW5kaW5nX3BpbmcgKnBlbmRpbmdfcGluZ3M7CisKKyAgLyoqIGNsaWVudCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgTEIgc2VydmVyIGNvbW11bmljYXRpb24gKi8KKyAgc3RydWN0IGxiX2NsaWVudF9kYXRhICpsYl9jbGllbnQ7CisKKyAgLyoqIGZvciB0cmFja2luZyBvZiB0aGUgUlIgY29ubmVjdGl2aXR5ICovCisgIHJyX2Nvbm5lY3Rpdml0eV9kYXRhICpycl9jb25uZWN0aXZpdHk7CisKKyAgLyogYSB3cmFwcGVkIChzZWUgXGEgd3JhcHBlZF9ycl9jbG9zdXJlKSBvbi1jb21wbGV0ZSBjbG9zdXJlIGZvciByZWFkaWx5CisgICAqIGF2YWlsYWJsZSBSUiBwaWNrcyAqLworICBncnBjX2Nsb3N1cmUgd3JhcHBlZF9vbl9jb21wbGV0ZTsKKworICAvKiBhcmd1bWVudHMgZm9yIHRoZSB3cmFwcGVkX29uX2NvbXBsZXRlIGNsb3N1cmUgKi8KKyAgd3JhcHBlZF9ycl9jbG9zdXJlX2FyZyB3Y19hcmc7Cit9IGdsYl9sYl9wb2xpY3k7CisKKy8qIEtlZXBzIHRyYWNrIGFuZCByZWFjdHMgdG8gY2hhbmdlcyBpbiBjb25uZWN0aXZpdHkgb2YgdGhlIFJSIGluc3RhbmNlICovCitzdHJ1Y3QgcnJfY29ubmVjdGl2aXR5X2RhdGEgeworICBncnBjX2Nsb3N1cmUgb25fY2hhbmdlOworICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZSBzdGF0ZTsKKyAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeTsKK307CisKK3N0YXRpYyBncnBjX2xiX3BvbGljeSAqY3JlYXRlX3JyKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19ncnBjbGJfc2VydmVybGlzdCAqc2VydmVybGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsYl9sYl9wb2xpY3kgKmdsYl9wb2xpY3kpIHsKKyAgLyogVE9ETyhkZ3EpOiBzdXBwb3J0IG1peGVkIGlwIHZlcnNpb24gKi8KKyAgR1BSX0FTU0VSVChzZXJ2ZXJsaXN0ICE9IE5VTEwgJiYgc2VydmVybGlzdC0+bnVtX3NlcnZlcnMgPiAwKTsKKyAgY2hhciAqKmhvc3RfcG9ydHMgPSBncHJfbWFsbG9jKHNpemVvZihjaGFyICopICogc2VydmVybGlzdC0+bnVtX3NlcnZlcnMpOworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlcnZlcmxpc3QtPm51bV9zZXJ2ZXJzOyArK2kpIHsKKyAgICBncHJfam9pbl9ob3N0X3BvcnQoJmhvc3RfcG9ydHNbaV0sIHNlcnZlcmxpc3QtPnNlcnZlcnNbaV0tPmlwX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcmxpc3QtPnNlcnZlcnNbaV0tPnBvcnQpOworICB9CisKKyAgc2l6ZV90IHVyaV9wYXRoX2xlbjsKKyAgY2hhciAqY29uY2F0X2lwcG9ydHMgPSBncHJfc3Ryam9pbl9zZXAoCisgICAgICAoY29uc3QgY2hhciAqKilob3N0X3BvcnRzLCBzZXJ2ZXJsaXN0LT5udW1fc2VydmVycywgIiwiLCAmdXJpX3BhdGhfbGVuKTsKKworICBncnBjX2xiX3BvbGljeV9hcmdzIGFyZ3M7CisgIGFyZ3MuY2xpZW50X2NoYW5uZWxfZmFjdG9yeSA9IGdsYl9wb2xpY3ktPmNjX2ZhY3Rvcnk7CisgIGFyZ3MuYWRkcmVzc2VzID0gZ3ByX21hbGxvYyhzaXplb2YoZ3JwY19yZXNvbHZlZF9hZGRyZXNzZXMpKTsKKyAgYXJncy5hZGRyZXNzZXMtPm5hZGRycyA9IHNlcnZlcmxpc3QtPm51bV9zZXJ2ZXJzOworICBhcmdzLmFkZHJlc3Nlcy0+YWRkcnMgPQorICAgICAgZ3ByX21hbGxvYyhzaXplb2YoZ3JwY19yZXNvbHZlZF9hZGRyZXNzKSAqIGFyZ3MuYWRkcmVzc2VzLT5uYWRkcnMpOworICBzaXplX3Qgb3V0X2FkZHJzX2lkeCA9IDA7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VydmVybGlzdC0+bnVtX3NlcnZlcnM7ICsraSkgeworICAgIGdycGNfdXJpIHVyaTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzYTsKKyAgICBzaXplX3Qgc2FfbGVuOworICAgIHVyaS5wYXRoID0gaG9zdF9wb3J0c1tpXTsKKyAgICBpZiAocGFyc2VfaXB2NCgmdXJpLCAmc2EsICZzYV9sZW4pKSB7IC8qIFRPRE8oZGdxKTogYWRkIHN1cHBvcnQgZm9yIGlwdjYgKi8KKyAgICAgIG1lbWNweShhcmdzLmFkZHJlc3Nlcy0+YWRkcnNbb3V0X2FkZHJzX2lkeF0uYWRkciwgJnNhLCBzYV9sZW4pOworICAgICAgYXJncy5hZGRyZXNzZXMtPmFkZHJzW291dF9hZGRyc19pZHhdLmxlbiA9IHNhX2xlbjsKKyAgICAgICsrb3V0X2FkZHJzX2lkeDsKKyAgICB9IGVsc2UgeworICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJJbnZhbGlkIExCIHNlcnZpY2UgYWRkcmVzcyAnJXMnLCBpZ25vcmluZy4iLAorICAgICAgICAgICAgICBob3N0X3BvcnRzW2ldKTsKKyAgICB9CisgIH0KKworICBncnBjX2xiX3BvbGljeSAqcnIgPSBncnBjX2xiX3BvbGljeV9jcmVhdGUoZXhlY19jdHgsICJyb3VuZF9yb2JpbiIsICZhcmdzKTsKKworICBncHJfZnJlZShjb25jYXRfaXBwb3J0cyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VydmVybGlzdC0+bnVtX3NlcnZlcnM7IGkrKykgeworICAgIGdwcl9mcmVlKGhvc3RfcG9ydHNbaV0pOworICB9CisgIGdwcl9mcmVlKGhvc3RfcG9ydHMpOworICBncHJfZnJlZShhcmdzLmFkZHJlc3Nlcy0+YWRkcnMpOworICBncHJfZnJlZShhcmdzLmFkZHJlc3Nlcyk7CisgIHJldHVybiBycjsKK30KKworc3RhdGljIHZvaWQgcnJfaGFuZG92ZXIoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdsYl9sYl9wb2xpY3kgKmdsYl9wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Vycm9yICplcnJvcikgeworICBHUlBDX0VSUk9SX1JFRihlcnJvcik7CisgIGdsYl9wb2xpY3ktPnJyX3BvbGljeSA9CisgICAgICBjcmVhdGVfcnIoZXhlY19jdHgsIGdsYl9wb2xpY3ktPnNlcnZlcmxpc3QsIGdsYl9wb2xpY3kpOworCisgIGlmIChncnBjX2xiX2dsYl90cmFjZSkgeworICAgIGdwcl9sb2coR1BSX0lORk8sICJDcmVhdGVkIFJSIHBvbGljeSAoMHglIiBQUkl4UFRSICIpIiwKKyAgICAgICAgICAgIChpbnRwdHJfdClnbGJfcG9saWN5LT5ycl9wb2xpY3kpOworICB9CisgIEdQUl9BU1NFUlQoZ2xiX3BvbGljeS0+cnJfcG9saWN5ICE9IE5VTEwpOworICBnbGJfcG9saWN5LT5ycl9jb25uZWN0aXZpdHktPnN0YXRlID0gZ3JwY19sYl9wb2xpY3lfY2hlY2tfY29ubmVjdGl2aXR5KAorICAgICAgZXhlY19jdHgsIGdsYl9wb2xpY3ktPnJyX3BvbGljeSwgJmVycm9yKTsKKyAgZ3JwY19sYl9wb2xpY3lfbm90aWZ5X29uX3N0YXRlX2NoYW5nZSgKKyAgICAgIGV4ZWNfY3R4LCBnbGJfcG9saWN5LT5ycl9wb2xpY3ksICZnbGJfcG9saWN5LT5ycl9jb25uZWN0aXZpdHktPnN0YXRlLAorICAgICAgJmdsYl9wb2xpY3ktPnJyX2Nvbm5lY3Rpdml0eS0+b25fY2hhbmdlKTsKKyAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGVfc2V0KGV4ZWNfY3R4LCAmZ2xiX3BvbGljeS0+c3RhdGVfdHJhY2tlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsYl9wb2xpY3ktPnJyX2Nvbm5lY3Rpdml0eS0+c3RhdGUsIGVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJyX2hhbmRvdmVyIik7CisgIGdycGNfbGJfcG9saWN5X2V4aXRfaWRsZShleGVjX2N0eCwgZ2xiX3BvbGljeS0+cnJfcG9saWN5KTsKKworICAvKiBmbHVzaCBwZW5kaW5nIG9wcyAqLworICBwZW5kaW5nX3BpY2sgKnBwOworICB3aGlsZSAoKHBwID0gZ2xiX3BvbGljeS0+cGVuZGluZ19waWNrcykpIHsKKyAgICBnbGJfcG9saWN5LT5wZW5kaW5nX3BpY2tzID0gcHAtPm5leHQ7CisgICAgR1JQQ19MQl9QT0xJQ1lfUkVGKGdsYl9wb2xpY3ktPnJyX3BvbGljeSwgInJyX2hhbmRvdmVyX3BlbmRpbmdfcGljayIpOworICAgIHBwLT53cmFwcGVkX29uX2NvbXBsZXRlX2FyZy5ycl9wb2xpY3kgPSBnbGJfcG9saWN5LT5ycl9wb2xpY3k7CisgICAgaWYgKGdycGNfbGJfZ2xiX3RyYWNlKSB7CisgICAgICBncHJfbG9nKEdQUl9JTkZPLCAiUGVuZGluZyBwaWNrIGFib3V0IHRvIFBJQ0sgZnJvbSAweCUiIFBSSXhQVFIgIiIsCisgICAgICAgICAgICAgIChpbnRwdHJfdClnbGJfcG9saWN5LT5ycl9wb2xpY3kpOworICAgIH0KKyAgICBncnBjX2xiX3BvbGljeV9waWNrKGV4ZWNfY3R4LCBnbGJfcG9saWN5LT5ycl9wb2xpY3ksIHBwLT5wb2xsZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgcHAtPmluaXRpYWxfbWV0YWRhdGEsIHBwLT5pbml0aWFsX21ldGFkYXRhX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgcHAtPnRhcmdldCwgJnBwLT53cmFwcGVkX29uX2NvbXBsZXRlKTsKKyAgICBwcC0+d3JhcHBlZF9vbl9jb21wbGV0ZV9hcmcub3duaW5nX3BlbmRpbmdfbm9kZSA9IHBwOworICB9CisKKyAgcGVuZGluZ19waW5nICpwcGluZzsKKyAgd2hpbGUgKChwcGluZyA9IGdsYl9wb2xpY3ktPnBlbmRpbmdfcGluZ3MpKSB7CisgICAgZ2xiX3BvbGljeS0+cGVuZGluZ19waW5ncyA9IHBwaW5nLT5uZXh0OworICAgIEdSUENfTEJfUE9MSUNZX1JFRihnbGJfcG9saWN5LT5ycl9wb2xpY3ksICJycl9oYW5kb3Zlcl9wZW5kaW5nX3BpbmciKTsKKyAgICBwcGluZy0+d3JhcHBlZF9ub3RpZnlfYXJnLnJyX3BvbGljeSA9IGdsYl9wb2xpY3ktPnJyX3BvbGljeTsKKyAgICBpZiAoZ3JwY19sYl9nbGJfdHJhY2UpIHsKKyAgICAgIGdwcl9sb2coR1BSX0lORk8sICJQZW5kaW5nIHBpbmcgYWJvdXQgdG8gUElORyBmcm9tIDB4JSIgUFJJeFBUUiAiIiwKKyAgICAgICAgICAgICAgKGludHB0cl90KWdsYl9wb2xpY3ktPnJyX3BvbGljeSk7CisgICAgfQorICAgIGdycGNfbGJfcG9saWN5X3Bpbmdfb25lKGV4ZWNfY3R4LCBnbGJfcG9saWN5LT5ycl9wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBwaW5nLT53cmFwcGVkX25vdGlmeSk7CisgICAgcHBpbmctPndyYXBwZWRfbm90aWZ5X2FyZy5vd25pbmdfcGVuZGluZ19ub2RlID0gcHBpbmc7CisgIH0KKyAgR1JQQ19FUlJPUl9VTlJFRihlcnJvcik7Cit9CisKK3N0YXRpYyB2b2lkIHJyX2Nvbm5lY3Rpdml0eV9jaGFuZ2VkKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Vycm9yICplcnJvcikgeworICBycl9jb25uZWN0aXZpdHlfZGF0YSAqcnJfY29ubl9kYXRhID0gYXJnOworICBnbGJfbGJfcG9saWN5ICpnbGJfcG9saWN5ID0gcnJfY29ubl9kYXRhLT5nbGJfcG9saWN5OworICBpZiAocnJfY29ubl9kYXRhLT5zdGF0ZSA9PSBHUlBDX0NIQU5ORUxfU0hVVERPV04pIHsKKyAgICBpZiAoZ2xiX3BvbGljeS0+c2VydmVybGlzdCAhPSBOVUxMKSB7CisgICAgICAvKiBhIFJSIHBvbGljeSBpcyBzaHV0dGluZyBkb3duIGJ1dCB0aGVyZSdzIGEgc2VydmVybGlzdCBhdmFpbGFibGUgLT4KKyAgICAgICAqIHBlcmZvcm0gYSBoYW5kb3ZlciAqLworICAgICAgcnJfaGFuZG92ZXIoZXhlY19jdHgsIGdsYl9wb2xpY3ksIGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgLyogc2h1dHRpbmcgZG93biBhbmQgbm8gbmV3IHNlcnZlcmxpc3QgYXZhaWxhYmxlLiBCYWlsIG91dC4gKi8KKyAgICAgIGdwcl9mcmVlKHJyX2Nvbm5fZGF0YSk7CisgICAgfQorICB9IGVsc2UgeworICAgIGlmIChlcnJvciA9PSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICAgIC8qIFJSIG5vdCBzaHV0dGluZyBkb3duLiBNaW1pYyB0aGUgUlIncyBwb2xpY3kgc3RhdGUgKi8KKyAgICAgIGdycGNfY29ubmVjdGl2aXR5X3N0YXRlX3NldChleGVjX2N0eCwgJmdsYl9wb2xpY3ktPnN0YXRlX3RyYWNrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnJfY29ubl9kYXRhLT5zdGF0ZSwgZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJyX2Nvbm5lY3Rpdml0eV9jaGFuZ2VkIik7CisgICAgICAvKiByZXN1YnNjcmliZSAqLworICAgICAgZ3JwY19sYl9wb2xpY3lfbm90aWZ5X29uX3N0YXRlX2NoYW5nZShleGVjX2N0eCwgZ2xiX3BvbGljeS0+cnJfcG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnJfY29ubl9kYXRhLT5zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJyX2Nvbm5fZGF0YS0+b25fY2hhbmdlKTsKKyAgICB9IGVsc2UgeyAvKiBlcnJvciAqLworICAgICAgZ3ByX2ZyZWUocnJfY29ubl9kYXRhKTsKKyAgICB9CisgIH0KKyAgR1JQQ19FUlJPUl9VTlJFRihlcnJvcik7Cit9CisKK3N0YXRpYyBncnBjX2xiX3BvbGljeSAqZ2xiX2NyZWF0ZShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2xiX3BvbGljeV9mYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbGJfcG9saWN5X2FyZ3MgKmFyZ3MpIHsKKyAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeSA9IGdwcl9tYWxsb2Moc2l6ZW9mKCpnbGJfcG9saWN5KSk7CisgIG1lbXNldChnbGJfcG9saWN5LCAwLCBzaXplb2YoKmdsYl9wb2xpY3kpKTsKKworICAvKiBBbGwgaW5wdXQgYWRkcmVzc2VzIGluIGFyZ3MtPmFkZHJlc3NlcyBjb21lIGZyb20gYSByZXNvbHZlciB0aGF0IGNsYWltcworICAgKiB0aGV5IGFyZSBMQiBzZXJ2aWNlcy4gSXQncyB0aGUgcmVzb2x2ZXIncyByZXNwb25zaWJpbGl0eSB0byBtYWtlIHN1cmUgdGhpcworICAgKiBwb2xpY3kgaXMgb25seSBpbnN0YW50aWF0ZWQgYW5kIHVzZWQgaW4gdGhhdCBjYXNlLgorICAgKgorICAgKiBDcmVhdGUgYSBjbGllbnQgY2hhbm5lbCBvdmVyIHRoZW0gdG8gY29tbXVuaWNhdGUgd2l0aCBhIExCIHNlcnZpY2UgKi8KKyAgZ2xiX3BvbGljeS0+Y2NfZmFjdG9yeSA9IGFyZ3MtPmNsaWVudF9jaGFubmVsX2ZhY3Rvcnk7CisgIEdQUl9BU1NFUlQoZ2xiX3BvbGljeS0+Y2NfZmFjdG9yeSAhPSBOVUxMKTsKKyAgaWYgKGFyZ3MtPmFkZHJlc3Nlcy0+bmFkZHJzID09IDApIHsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8qIGNvbnN0cnVjdCBhIHRhcmdldCBmcm9tIHRoZSBhcmdzLT5hZGRyZXNzZXMsIGluIHRoZSBmb3JtCisgICAqIGlwdlg6Ly9pcDE6cG9ydDEsaXAyOnBvcnQyLC4uLgorICAgKiBUT0RPKGRncSk6IHN1cHBvcnQgbWl4ZWQgaXAgdmVyc2lvbiAqLworICBjaGFyICoqYWRkcl9zdHJzID0gZ3ByX21hbGxvYyhzaXplb2YoY2hhciAqKSAqIGFyZ3MtPmFkZHJlc3Nlcy0+bmFkZHJzKTsKKyAgYWRkcl9zdHJzWzBdID0KKyAgICAgIGdycGNfc29ja2FkZHJfdG9fdXJpKChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmYXJncy0+YWRkcmVzc2VzLT5hZGRyc1swXSk7CisgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgYXJncy0+YWRkcmVzc2VzLT5uYWRkcnM7IGkrKykgeworICAgIEdQUl9BU1NFUlQoZ3JwY19zb2NrYWRkcl90b19zdHJpbmcoCisgICAgICAgICAgICAgICAgICAgJmFkZHJfc3Ryc1tpXSwKKyAgICAgICAgICAgICAgICAgICAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmFyZ3MtPmFkZHJlc3Nlcy0+YWRkcnNbaV0sCisgICAgICAgICAgICAgICAgICAgdHJ1ZSkgPT0gMCk7CisgIH0KKyAgc2l6ZV90IHVyaV9wYXRoX2xlbjsKKyAgY2hhciAqdGFyZ2V0X3VyaV9zdHIgPSBncHJfc3Ryam9pbl9zZXAoCisgICAgICAoY29uc3QgY2hhciAqKilhZGRyX3N0cnMsIGFyZ3MtPmFkZHJlc3Nlcy0+bmFkZHJzLCAiLCIsICZ1cmlfcGF0aF9sZW4pOworCisgIC8qIHdpbGwgcGljayB1c2luZyBwaWNrX2ZpcnN0ICovCisgIGdsYl9wb2xpY3ktPmxiX2NoYW5uZWwgPSBncnBjX2NsaWVudF9jaGFubmVsX2ZhY3RvcnlfY3JlYXRlX2NoYW5uZWwoCisgICAgICBleGVjX2N0eCwgZ2xiX3BvbGljeS0+Y2NfZmFjdG9yeSwgdGFyZ2V0X3VyaV9zdHIsCisgICAgICBHUlBDX0NMSUVOVF9DSEFOTkVMX1RZUEVfTE9BRF9CQUxBTkNJTkcsIE5VTEwpOworCisgIGdwcl9mcmVlKHRhcmdldF91cmlfc3RyKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLT5hZGRyZXNzZXMtPm5hZGRyczsgaSsrKSB7CisgICAgZ3ByX2ZyZWUoYWRkcl9zdHJzW2ldKTsKKyAgfQorICBncHJfZnJlZShhZGRyX3N0cnMpOworCisgIGlmIChnbGJfcG9saWN5LT5sYl9jaGFubmVsID09IE5VTEwpIHsKKyAgICBncHJfZnJlZShnbGJfcG9saWN5KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJyX2Nvbm5lY3Rpdml0eV9kYXRhICpycl9jb25uZWN0aXZpdHkgPQorICAgICAgZ3ByX21hbGxvYyhzaXplb2YocnJfY29ubmVjdGl2aXR5X2RhdGEpKTsKKyAgbWVtc2V0KHJyX2Nvbm5lY3Rpdml0eSwgMCwgc2l6ZW9mKHJyX2Nvbm5lY3Rpdml0eV9kYXRhKSk7CisgIGdycGNfY2xvc3VyZV9pbml0KCZycl9jb25uZWN0aXZpdHktPm9uX2NoYW5nZSwgcnJfY29ubmVjdGl2aXR5X2NoYW5nZWQsCisgICAgICAgICAgICAgICAgICAgIHJyX2Nvbm5lY3Rpdml0eSk7CisgIHJyX2Nvbm5lY3Rpdml0eS0+Z2xiX3BvbGljeSA9IGdsYl9wb2xpY3k7CisgIGdsYl9wb2xpY3ktPnJyX2Nvbm5lY3Rpdml0eSA9IHJyX2Nvbm5lY3Rpdml0eTsKKworICBncnBjX2xiX3BvbGljeV9pbml0KCZnbGJfcG9saWN5LT5iYXNlLCAmZ2xiX2xiX3BvbGljeV92dGFibGUpOworICBncHJfbXVfaW5pdCgmZ2xiX3BvbGljeS0+bXUpOworICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZV9pbml0KCZnbGJfcG9saWN5LT5zdGF0ZV90cmFja2VyLCBHUlBDX0NIQU5ORUxfSURMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JwY2xiIik7CisgIHJldHVybiAmZ2xiX3BvbGljeS0+YmFzZTsKK30KKworc3RhdGljIHZvaWQgZ2xiX2Rlc3Ryb3koZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfbGJfcG9saWN5ICpwb2wpIHsKKyAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeSA9IChnbGJfbGJfcG9saWN5ICopcG9sOworICBHUFJfQVNTRVJUKGdsYl9wb2xpY3ktPnBlbmRpbmdfcGlja3MgPT0gTlVMTCk7CisgIEdQUl9BU1NFUlQoZ2xiX3BvbGljeS0+cGVuZGluZ19waW5ncyA9PSBOVUxMKTsKKyAgZ3JwY19jaGFubmVsX2Rlc3Ryb3koZ2xiX3BvbGljeS0+bGJfY2hhbm5lbCk7CisgIGdsYl9wb2xpY3ktPmxiX2NoYW5uZWwgPSBOVUxMOworICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZV9kZXN0cm95KGV4ZWNfY3R4LCAmZ2xiX3BvbGljeS0+c3RhdGVfdHJhY2tlcik7CisgIGlmIChnbGJfcG9saWN5LT5zZXJ2ZXJsaXN0ICE9IE5VTEwpIHsKKyAgICBncnBjX2dycGNsYl9kZXN0cm95X3NlcnZlcmxpc3QoZ2xiX3BvbGljeS0+c2VydmVybGlzdCk7CisgIH0KKyAgZ3ByX211X2Rlc3Ryb3koJmdsYl9wb2xpY3ktPm11KTsKKyAgZ3ByX2ZyZWUoZ2xiX3BvbGljeSk7Cit9CisKK3N0YXRpYyB2b2lkIGxiX2NsaWVudF9kYXRhX2Rlc3Ryb3koc3RydWN0IGxiX2NsaWVudF9kYXRhICpsYl9jbGllbnQpOworc3RhdGljIHZvaWQgZ2xiX3NodXRkb3duKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2xiX3BvbGljeSAqcG9sKSB7CisgIGdsYl9sYl9wb2xpY3kgKmdsYl9wb2xpY3kgPSAoZ2xiX2xiX3BvbGljeSAqKXBvbDsKKyAgZ3ByX211X2xvY2soJmdsYl9wb2xpY3ktPm11KTsKKworICBwZW5kaW5nX3BpY2sgKnBwID0gZ2xiX3BvbGljeS0+cGVuZGluZ19waWNrczsKKyAgZ2xiX3BvbGljeS0+cGVuZGluZ19waWNrcyA9IE5VTEw7CisgIHBlbmRpbmdfcGluZyAqcHBpbmcgPSBnbGJfcG9saWN5LT5wZW5kaW5nX3BpbmdzOworICBnbGJfcG9saWN5LT5wZW5kaW5nX3BpbmdzID0gTlVMTDsKKyAgZ3ByX211X3VubG9jaygmZ2xiX3BvbGljeS0+bXUpOworCisgIHdoaWxlIChwcCAhPSBOVUxMKSB7CisgICAgcGVuZGluZ19waWNrICpuZXh0ID0gcHAtPm5leHQ7CisgICAgKnBwLT50YXJnZXQgPSBOVUxMOworICAgIGdycGNfZXhlY19jdHhfc2NoZWQoZXhlY19jdHgsICZwcC0+d3JhcHBlZF9vbl9jb21wbGV0ZSwgR1JQQ19FUlJPUl9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgZ3ByX2ZyZWUocHApOworICAgIHBwID0gbmV4dDsKKyAgfQorCisgIHdoaWxlIChwcGluZyAhPSBOVUxMKSB7CisgICAgcGVuZGluZ19waW5nICpuZXh0ID0gcHBpbmctPm5leHQ7CisgICAgZ3JwY19leGVjX2N0eF9zY2hlZChleGVjX2N0eCwgJnBwaW5nLT53cmFwcGVkX25vdGlmeSwgR1JQQ19FUlJPUl9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgcHBpbmcgPSBuZXh0OworICB9CisKKyAgaWYgKGdsYl9wb2xpY3ktPnJyX3BvbGljeSkgeworICAgIC8qIHVuc3Vic2NyaWJlICovCisgICAgZ3JwY19sYl9wb2xpY3lfbm90aWZ5X29uX3N0YXRlX2NoYW5nZSgKKyAgICAgICAgZXhlY19jdHgsIGdsYl9wb2xpY3ktPnJyX3BvbGljeSwgTlVMTCwKKyAgICAgICAgJmdsYl9wb2xpY3ktPnJyX2Nvbm5lY3Rpdml0eS0+b25fY2hhbmdlKTsKKyAgICBHUlBDX0xCX1BPTElDWV9VTlJFRihleGVjX2N0eCwgZ2xiX3BvbGljeS0+cnJfcG9saWN5LCAiZ2xiX3NodXRkb3duIik7CisgIH0KKworICBsYl9jbGllbnRfZGF0YV9kZXN0cm95KGdsYl9wb2xpY3ktPmxiX2NsaWVudCk7CisgIGdsYl9wb2xpY3ktPmxiX2NsaWVudCA9IE5VTEw7CisKKyAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGVfc2V0KAorICAgICAgZXhlY19jdHgsICZnbGJfcG9saWN5LT5zdGF0ZV90cmFja2VyLCBHUlBDX0NIQU5ORUxfU0hVVERPV04sCisgICAgICBHUlBDX0VSUk9SX0NSRUFURSgiQ2hhbm5lbCBTaHV0ZG93biIpLCAiZ2xiX3NodXRkb3duIik7Cit9CisKK3N0YXRpYyB2b2lkIGdsYl9jYW5jZWxfcGljayhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19sYl9wb2xpY3kgKnBvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Nvbm5lY3RlZF9zdWJjaGFubmVsICoqdGFyZ2V0KSB7CisgIGdsYl9sYl9wb2xpY3kgKmdsYl9wb2xpY3kgPSAoZ2xiX2xiX3BvbGljeSAqKXBvbDsKKyAgZ3ByX211X2xvY2soJmdsYl9wb2xpY3ktPm11KTsKKyAgcGVuZGluZ19waWNrICpwcCA9IGdsYl9wb2xpY3ktPnBlbmRpbmdfcGlja3M7CisgIGdsYl9wb2xpY3ktPnBlbmRpbmdfcGlja3MgPSBOVUxMOworICB3aGlsZSAocHAgIT0gTlVMTCkgeworICAgIHBlbmRpbmdfcGljayAqbmV4dCA9IHBwLT5uZXh0OworICAgIGlmIChwcC0+dGFyZ2V0ID09IHRhcmdldCkgeworICAgICAgZ3JwY19wb2xsaW5nX2VudGl0eV9kZWxfZnJvbV9wb2xsc2V0X3NldCgKKyAgICAgICAgICBleGVjX2N0eCwgcHAtPnBvbGxlbnQsIGdsYl9wb2xpY3ktPmJhc2UuaW50ZXJlc3RlZF9wYXJ0aWVzKTsKKyAgICAgICp0YXJnZXQgPSBOVUxMOworICAgICAgZ3JwY19leGVjX2N0eF9zY2hlZChleGVjX2N0eCwgJnBwLT53cmFwcGVkX29uX2NvbXBsZXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0VSUk9SX0NBTkNFTExFRCwgTlVMTCk7CisgICAgICBncHJfZnJlZShwcCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHBwLT5uZXh0ID0gZ2xiX3BvbGljeS0+cGVuZGluZ19waWNrczsKKyAgICAgIGdsYl9wb2xpY3ktPnBlbmRpbmdfcGlja3MgPSBwcDsKKyAgICB9CisgICAgcHAgPSBuZXh0OworICB9CisgIGdwcl9tdV91bmxvY2soJmdsYl9wb2xpY3ktPm11KTsKK30KKworc3RhdGljIGdycGNfY2FsbCAqbGJfY2xpZW50X2RhdGFfZ2V0X2NhbGwoc3RydWN0IGxiX2NsaWVudF9kYXRhICpsYl9jbGllbnQpOworc3RhdGljIHZvaWQgZ2xiX2NhbmNlbF9waWNrcyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19sYl9wb2xpY3kgKnBvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5pdGlhbF9tZXRhZGF0YV9mbGFnc19tYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbml0aWFsX21ldGFkYXRhX2ZsYWdzX2VxKSB7CisgIGdsYl9sYl9wb2xpY3kgKmdsYl9wb2xpY3kgPSAoZ2xiX2xiX3BvbGljeSAqKXBvbDsKKyAgZ3ByX211X2xvY2soJmdsYl9wb2xpY3ktPm11KTsKKyAgaWYgKGdsYl9wb2xpY3ktPmxiX2NsaWVudCAhPSBOVUxMKSB7CisgICAgLyogY2FuY2VsIHRoZSBjYWxsIHRvIHRoZSBsb2FkIGJhbGFuY2VyIHNlcnZpY2UsIGlmIGFueSAqLworICAgIGdycGNfY2FsbF9jYW5jZWwobGJfY2xpZW50X2RhdGFfZ2V0X2NhbGwoZ2xiX3BvbGljeS0+bGJfY2xpZW50KSwgTlVMTCk7CisgIH0KKyAgcGVuZGluZ19waWNrICpwcCA9IGdsYl9wb2xpY3ktPnBlbmRpbmdfcGlja3M7CisgIGdsYl9wb2xpY3ktPnBlbmRpbmdfcGlja3MgPSBOVUxMOworICB3aGlsZSAocHAgIT0gTlVMTCkgeworICAgIHBlbmRpbmdfcGljayAqbmV4dCA9IHBwLT5uZXh0OworICAgIGlmICgocHAtPmluaXRpYWxfbWV0YWRhdGFfZmxhZ3MgJiBpbml0aWFsX21ldGFkYXRhX2ZsYWdzX21hc2spID09CisgICAgICAgIGluaXRpYWxfbWV0YWRhdGFfZmxhZ3NfZXEpIHsKKyAgICAgIGdycGNfcG9sbGluZ19lbnRpdHlfZGVsX2Zyb21fcG9sbHNldF9zZXQoCisgICAgICAgICAgZXhlY19jdHgsIHBwLT5wb2xsZW50LCBnbGJfcG9saWN5LT5iYXNlLmludGVyZXN0ZWRfcGFydGllcyk7CisgICAgICBncnBjX2V4ZWNfY3R4X3NjaGVkKGV4ZWNfY3R4LCAmcHAtPndyYXBwZWRfb25fY29tcGxldGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdSUENfRVJST1JfQ0FOQ0VMTEVELCBOVUxMKTsKKyAgICAgIGdwcl9mcmVlKHBwKTsKKyAgICB9IGVsc2UgeworICAgICAgcHAtPm5leHQgPSBnbGJfcG9saWN5LT5wZW5kaW5nX3BpY2tzOworICAgICAgZ2xiX3BvbGljeS0+cGVuZGluZ19waWNrcyA9IHBwOworICAgIH0KKyAgICBwcCA9IG5leHQ7CisgIH0KKyAgZ3ByX211X3VubG9jaygmZ2xiX3BvbGljeS0+bXUpOworfQorCitzdGF0aWMgdm9pZCBxdWVyeV9mb3JfYmFja2VuZHMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeSk7CitzdGF0aWMgdm9pZCBzdGFydF9waWNraW5nKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBnbGJfbGJfcG9saWN5ICpnbGJfcG9saWN5KSB7CisgIGdsYl9wb2xpY3ktPnN0YXJ0ZWRfcGlja2luZyA9IHRydWU7CisgIHF1ZXJ5X2Zvcl9iYWNrZW5kcyhleGVjX2N0eCwgZ2xiX3BvbGljeSk7Cit9CisKK3N0YXRpYyB2b2lkIGdsYl9leGl0X2lkbGUoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfbGJfcG9saWN5ICpwb2wpIHsKKyAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeSA9IChnbGJfbGJfcG9saWN5ICopcG9sOworICBncHJfbXVfbG9jaygmZ2xiX3BvbGljeS0+bXUpOworICBpZiAoIWdsYl9wb2xpY3ktPnN0YXJ0ZWRfcGlja2luZykgeworICAgIHN0YXJ0X3BpY2tpbmcoZXhlY19jdHgsIGdsYl9wb2xpY3kpOworICB9CisgIGdwcl9tdV91bmxvY2soJmdsYl9wb2xpY3ktPm11KTsKK30KKworc3RhdGljIGludCBnbGJfcGljayhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19sYl9wb2xpY3kgKnBvbCwKKyAgICAgICAgICAgICAgICAgICAgZ3JwY19wb2xsaW5nX2VudGl0eSAqcG9sbGVudCwKKyAgICAgICAgICAgICAgICAgICAgZ3JwY19tZXRhZGF0YV9iYXRjaCAqaW5pdGlhbF9tZXRhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5pdGlhbF9tZXRhZGF0YV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgZ3JwY19jb25uZWN0ZWRfc3ViY2hhbm5lbCAqKnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgZ3JwY19jbG9zdXJlICpvbl9jb21wbGV0ZSkgeworICBnbGJfbGJfcG9saWN5ICpnbGJfcG9saWN5ID0gKGdsYl9sYl9wb2xpY3kgKilwb2w7CisgIGdwcl9tdV9sb2NrKCZnbGJfcG9saWN5LT5tdSk7CisgIGludCByOworCisgIGlmIChnbGJfcG9saWN5LT5ycl9wb2xpY3kgIT0gTlVMTCkgeworICAgIGlmIChncnBjX2xiX2dsYl90cmFjZSkgeworICAgICAgZ3ByX2xvZyhHUFJfSU5GTywgImFib3V0IHRvIFBJQ0sgZnJvbSAweCUiIFBSSXhQVFIgIiIsCisgICAgICAgICAgICAgIChpbnRwdHJfdClnbGJfcG9saWN5LT5ycl9wb2xpY3kpOworICAgIH0KKyAgICBHUlBDX0xCX1BPTElDWV9SRUYoZ2xiX3BvbGljeS0+cnJfcG9saWN5LCAiZ2xiX3BpY2siKTsKKyAgICBtZW1zZXQoJmdsYl9wb2xpY3ktPndjX2FyZywgMCwgc2l6ZW9mKHdyYXBwZWRfcnJfY2xvc3VyZV9hcmcpKTsKKyAgICBnbGJfcG9saWN5LT53Y19hcmcucnJfcG9saWN5ID0gZ2xiX3BvbGljeS0+cnJfcG9saWN5OworICAgIGdsYl9wb2xpY3ktPndjX2FyZy53cmFwcGVkX2Nsb3N1cmUgPSBvbl9jb21wbGV0ZTsKKyAgICBncnBjX2Nsb3N1cmVfaW5pdCgmZ2xiX3BvbGljeS0+d3JhcHBlZF9vbl9jb21wbGV0ZSwgd3JhcHBlZF9ycl9jbG9zdXJlLAorICAgICAgICAgICAgICAgICAgICAgICZnbGJfcG9saWN5LT53Y19hcmcpOworICAgIHIgPSBncnBjX2xiX3BvbGljeV9waWNrKGV4ZWNfY3R4LCBnbGJfcG9saWN5LT5ycl9wb2xpY3ksIHBvbGxlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9tZXRhZGF0YSwgaW5pdGlhbF9tZXRhZGF0YV9mbGFncywgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbGJfcG9saWN5LT53cmFwcGVkX29uX2NvbXBsZXRlKTsKKyAgICBpZiAociAhPSAwKSB7CisgICAgICAvKiB0aGUgY2FsbCB0byBncnBjX2xiX3BvbGljeV9waWNrIGhhcyBiZWVuIHN5Y2hyb25vdXMuIFVucmVmZmluZyB0aGUgUlIKKyAgICAgICAqIHBvbGljeSBhbmQgbm90aWZ5IHRoZSBvcmlnaW5hbCBjYWxsYmFjayAqLworICAgICAgZ2xiX3BvbGljeS0+d2NfYXJnLndyYXBwZWRfY2xvc3VyZSA9IE5VTEw7CisgICAgICBpZiAoZ3JwY19sYl9nbGJfdHJhY2UpIHsKKyAgICAgICAgZ3ByX2xvZyhHUFJfSU5GTywgIlVucmVmZmluZyBSUiAoMHglIiBQUkl4UFRSICIpIiwKKyAgICAgICAgICAgICAgICAoaW50cHRyX3QpZ2xiX3BvbGljeS0+d2NfYXJnLnJyX3BvbGljeSk7CisgICAgICB9CisgICAgICBHUlBDX0xCX1BPTElDWV9VTlJFRihleGVjX2N0eCwgZ2xiX3BvbGljeS0+d2NfYXJnLnJyX3BvbGljeSwgImdsYl9waWNrIik7CisgICAgICBncnBjX2V4ZWNfY3R4X3NjaGVkKGV4ZWNfY3R4LCBnbGJfcG9saWN5LT53Y19hcmcud3JhcHBlZF9jbG9zdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0VSUk9SX05PTkUsIE5VTEwpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBncnBjX3BvbGxpbmdfZW50aXR5X2FkZF90b19wb2xsc2V0X3NldChleGVjX2N0eCwgcG9sbGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGJfcG9saWN5LT5iYXNlLmludGVyZXN0ZWRfcGFydGllcyk7CisgICAgYWRkX3BlbmRpbmdfcGljaygmZ2xiX3BvbGljeS0+cGVuZGluZ19waWNrcywgcG9sbGVudCwgaW5pdGlhbF9tZXRhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfbWV0YWRhdGFfZmxhZ3MsIHRhcmdldCwgb25fY29tcGxldGUpOworCisgICAgaWYgKCFnbGJfcG9saWN5LT5zdGFydGVkX3BpY2tpbmcpIHsKKyAgICAgIHN0YXJ0X3BpY2tpbmcoZXhlY19jdHgsIGdsYl9wb2xpY3kpOworICAgIH0KKyAgICByID0gMDsKKyAgfQorICBncHJfbXVfdW5sb2NrKCZnbGJfcG9saWN5LT5tdSk7CisgIHJldHVybiByOworfQorCitzdGF0aWMgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGUgZ2xiX2NoZWNrX2Nvbm5lY3Rpdml0eSgKKyAgICBncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19sYl9wb2xpY3kgKnBvbCwKKyAgICBncnBjX2Vycm9yICoqY29ubmVjdGl2aXR5X2Vycm9yKSB7CisgIGdsYl9sYl9wb2xpY3kgKmdsYl9wb2xpY3kgPSAoZ2xiX2xiX3BvbGljeSAqKXBvbDsKKyAgZ3JwY19jb25uZWN0aXZpdHlfc3RhdGUgc3Q7CisgIGdwcl9tdV9sb2NrKCZnbGJfcG9saWN5LT5tdSk7CisgIHN0ID0gZ3JwY19jb25uZWN0aXZpdHlfc3RhdGVfY2hlY2soJmdsYl9wb2xpY3ktPnN0YXRlX3RyYWNrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGl2aXR5X2Vycm9yKTsKKyAgZ3ByX211X3VubG9jaygmZ2xiX3BvbGljeS0+bXUpOworICByZXR1cm4gc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGdsYl9waW5nX29uZShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19sYl9wb2xpY3kgKnBvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Nsb3N1cmUgKmNsb3N1cmUpIHsKKyAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeSA9IChnbGJfbGJfcG9saWN5ICopcG9sOworICBncHJfbXVfbG9jaygmZ2xiX3BvbGljeS0+bXUpOworICBpZiAoZ2xiX3BvbGljeS0+cnJfcG9saWN5KSB7CisgICAgZ3JwY19sYl9wb2xpY3lfcGluZ19vbmUoZXhlY19jdHgsIGdsYl9wb2xpY3ktPnJyX3BvbGljeSwgY2xvc3VyZSk7CisgIH0gZWxzZSB7CisgICAgYWRkX3BlbmRpbmdfcGluZygmZ2xiX3BvbGljeS0+cGVuZGluZ19waW5ncywgY2xvc3VyZSk7CisgICAgaWYgKCFnbGJfcG9saWN5LT5zdGFydGVkX3BpY2tpbmcpIHsKKyAgICAgIHN0YXJ0X3BpY2tpbmcoZXhlY19jdHgsIGdsYl9wb2xpY3kpOworICAgIH0KKyAgfQorICBncHJfbXVfdW5sb2NrKCZnbGJfcG9saWN5LT5tdSk7Cit9CisKK3N0YXRpYyB2b2lkIGdsYl9ub3RpZnlfb25fc3RhdGVfY2hhbmdlKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19sYl9wb2xpY3kgKnBvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY29ubmVjdGl2aXR5X3N0YXRlICpjdXJyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jbG9zdXJlICpub3RpZnkpIHsKKyAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeSA9IChnbGJfbGJfcG9saWN5ICopcG9sOworICBncHJfbXVfbG9jaygmZ2xiX3BvbGljeS0+bXUpOworICBncnBjX2Nvbm5lY3Rpdml0eV9zdGF0ZV9ub3RpZnlfb25fc3RhdGVfY2hhbmdlKAorICAgICAgZXhlY19jdHgsICZnbGJfcG9saWN5LT5zdGF0ZV90cmFja2VyLCBjdXJyZW50LCBub3RpZnkpOworCisgIGdwcl9tdV91bmxvY2soJmdsYl9wb2xpY3ktPm11KTsKK30KKworLyoKKyAqIGxiX2NsaWVudF9kYXRhCisgKgorICogVXNlZCBpbnRlcm5hbGx5IGZvciB0aGUgY2xpZW50IGNhbGwgdG8gdGhlIExCICovCit0eXBlZGVmIHN0cnVjdCBsYl9jbGllbnRfZGF0YSB7CisgIGdwcl9tdSBtdTsKKworICAvKiBjYWxsZWQgb25jZSBpbml0aWFsIG1ldGFkYXRhJ3MgYmVlbiBzZW50ICovCisgIGdycGNfY2xvc3VyZSBtZF9zZW50OworCisgIC8qIGNhbGxlZCBvbmNlIGluaXRpYWwgbWV0YWRhdGEncyBiZWVuIHJlY2VpdmVkICovCisgIGdycGNfY2xvc3VyZSBtZF9yY3ZkOworCisgIC8qIGNhbGxlZCBvbmNlIHRoZSBMb2FkQmFsYW5jZVJlcXVlc3QgaGFzIGJlZW4gc2VudCB0byB0aGUgTEIgc2VydmVyLiBTZWUKKyAgICogc3JjL3Byb3RvL2dycGMvLi4uL2xvYWRfYmFsYW5jZXIucHJvdG8gKi8KKyAgZ3JwY19jbG9zdXJlIHJlcV9zZW50OworCisgIC8qIEEgcmVzcG9uc2UgZnJvbSB0aGUgTEIgc2VydmVyIGhhcyBiZWVuIHJlY2VpdmVkIChvciBlcnJvcikuIFByb2Nlc3MgaXQgKi8KKyAgZ3JwY19jbG9zdXJlIHJlc19yY3ZkOworCisgIC8qIEFmdGVyIHRoZSBjbGllbnQgaGFzIHNlbnQgYSBjbG9zZSB0byB0aGUgTEIgc2VydmVyICovCisgIGdycGNfY2xvc3VyZSBjbG9zZV9zZW50OworCisgIC8qIC4uLiBhbmQgdGhlIHN0YXR1cyBmcm9tIHRoZSBMQiBzZXJ2ZXIgaGFzIGJlZW4gcmVjZWl2ZWQgKi8KKyAgZ3JwY19jbG9zdXJlIHNydl9zdGF0dXNfcmN2ZDsKKworICBncnBjX2NhbGwgKmxiX2NhbGw7ICAgIC8qIHN0cmVhbWluZyBjYWxsIHRvIHRoZSBMQiBzZXJ2ZXIsICovCisgIGdwcl90aW1lc3BlYyBkZWFkbGluZTsgLyogZm9yIHRoZSBzdHJlYW1pbmcgY2FsbCB0byB0aGUgTEIgc2VydmVyICovCisKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSBpbml0aWFsX21ldGFkYXRhX3JlY3Y7ICAvKiBpbml0aWFsIE1EIGZyb20gTEIgc2VydmVyICovCisgIGdycGNfbWV0YWRhdGFfYXJyYXkgdHJhaWxpbmdfbWV0YWRhdGFfcmVjdjsgLyogdHJhaWxpbmcgTUQgZnJvbSBMQiBzZXJ2ZXIgKi8KKworICAvKiB3aGF0J3MgYmVpbmcgc2VudCB0byB0aGUgTEIgc2VydmVyLiBOb3RlIHRoYXQgaXRzIHZhbHVlIG1heSB2YXJ5IGlmIHRoZSBMQgorICAgKiBzZXJ2ZXIgaW5kaWNhdGVzIGEgcmVkaXJlY3QuICovCisgIGdycGNfYnl0ZV9idWZmZXIgKnJlcXVlc3RfcGF5bG9hZDsKKworICAvKiByZXNwb25zZSBmcm9tIHRoZSBMQiBzZXJ2ZXIsIGlmIGFueS4gUHJvY2Vzc2VkIGluIHJlc19yZWN2X2NiKCkgKi8KKyAgZ3JwY19ieXRlX2J1ZmZlciAqcmVzcG9uc2VfcGF5bG9hZDsKKworICAvKiB0aGUgY2FsbCdzIHN0YXR1cyBhbmQgc3RhdHVzIGRldGFpbHNldCBpbiBzcnZfc3RhdHVzX3JjdmRfY2IoKSAqLworICBncnBjX3N0YXR1c19jb2RlIHN0YXR1czsKKyAgY2hhciAqc3RhdHVzX2RldGFpbHM7CisgIHNpemVfdCBzdGF0dXNfZGV0YWlsc19jYXBhY2l0eTsKKworICAvKiBwb2ludGVyIGJhY2sgdG8gdGhlIGVuY2xvc2luZyBwb2xpY3kgKi8KKyAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeTsKK30gbGJfY2xpZW50X2RhdGE7CisKK3N0YXRpYyB2b2lkIG1kX3NlbnRfY2IoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywgZ3JwY19lcnJvciAqZXJyb3IpOworc3RhdGljIHZvaWQgbWRfcmVjdl9jYihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLCBncnBjX2Vycm9yICplcnJvcik7CitzdGF0aWMgdm9pZCByZXFfc2VudF9jYihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLCBncnBjX2Vycm9yICplcnJvcik7CitzdGF0aWMgdm9pZCByZXNfcmVjdl9jYihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLCBncnBjX2Vycm9yICplcnJvcik7CitzdGF0aWMgdm9pZCBjbG9zZV9zZW50X2NiKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKTsKK3N0YXRpYyB2b2lkIHNydl9zdGF0dXNfcmN2ZF9jYihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKTsKKworc3RhdGljIGxiX2NsaWVudF9kYXRhICpsYl9jbGllbnRfZGF0YV9jcmVhdGUoZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeSkgeworICBsYl9jbGllbnRfZGF0YSAqbGJfY2xpZW50ID0gZ3ByX21hbGxvYyhzaXplb2YobGJfY2xpZW50X2RhdGEpKTsKKyAgbWVtc2V0KGxiX2NsaWVudCwgMCwgc2l6ZW9mKGxiX2NsaWVudF9kYXRhKSk7CisKKyAgZ3ByX211X2luaXQoJmxiX2NsaWVudC0+bXUpOworICBncnBjX2Nsb3N1cmVfaW5pdCgmbGJfY2xpZW50LT5tZF9zZW50LCBtZF9zZW50X2NiLCBsYl9jbGllbnQpOworCisgIGdycGNfY2xvc3VyZV9pbml0KCZsYl9jbGllbnQtPm1kX3JjdmQsIG1kX3JlY3ZfY2IsIGxiX2NsaWVudCk7CisgIGdycGNfY2xvc3VyZV9pbml0KCZsYl9jbGllbnQtPnJlcV9zZW50LCByZXFfc2VudF9jYiwgbGJfY2xpZW50KTsKKyAgZ3JwY19jbG9zdXJlX2luaXQoJmxiX2NsaWVudC0+cmVzX3JjdmQsIHJlc19yZWN2X2NiLCBsYl9jbGllbnQpOworICBncnBjX2Nsb3N1cmVfaW5pdCgmbGJfY2xpZW50LT5jbG9zZV9zZW50LCBjbG9zZV9zZW50X2NiLCBsYl9jbGllbnQpOworICBncnBjX2Nsb3N1cmVfaW5pdCgmbGJfY2xpZW50LT5zcnZfc3RhdHVzX3JjdmQsIHNydl9zdGF0dXNfcmN2ZF9jYiwgbGJfY2xpZW50KTsKKworICAvKiBUT0RPKGRncSk6IGdldCB0aGUgZGVhZGxpbmUgZnJvbSB0aGUgY2xpZW50IGNvbmZpZyBpbnN0ZWFkIG9mIGZhYnJpY2F0aW5nCisgICAqIG9uZSBoZXJlLiAqLworICBsYl9jbGllbnQtPmRlYWRsaW5lID0gZ3ByX3RpbWVfYWRkKGdwcl9ub3coR1BSX0NMT0NLX01PTk9UT05JQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX3RpbWVfZnJvbV9zZWNvbmRzKDMsIEdQUl9USU1FU1BBTikpOworCisgIGxiX2NsaWVudC0+bGJfY2FsbCA9IGdycGNfY2hhbm5lbF9jcmVhdGVfcG9sbHNldF9zZXRfY2FsbCgKKyAgICAgIGdsYl9wb2xpY3ktPmxiX2NoYW5uZWwsIE5VTEwsIEdSUENfUFJPUEFHQVRFX0RFRkFVTFRTLAorICAgICAgZ2xiX3BvbGljeS0+YmFzZS5pbnRlcmVzdGVkX3BhcnRpZXMsICIvQmFsYW5jZUxvYWQiLAorICAgICAgTlVMTCwgLyogRklYTUUoZGdxKTogd2hpY2ggImhvc3QiIHZhbHVlIHRvIHVzZT8gKi8KKyAgICAgIGxiX2NsaWVudC0+ZGVhZGxpbmUsIE5VTEwpOworCisgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmbGJfY2xpZW50LT5pbml0aWFsX21ldGFkYXRhX3JlY3YpOworICBncnBjX21ldGFkYXRhX2FycmF5X2luaXQoJmxiX2NsaWVudC0+dHJhaWxpbmdfbWV0YWRhdGFfcmVjdik7CisKKyAgZ3JwY19ncnBjbGJfcmVxdWVzdCAqcmVxdWVzdCA9IGdycGNfZ3JwY2xiX3JlcXVlc3RfY3JlYXRlKAorICAgICAgImxvYWQuYmFsYW5jZWQuc2VydmljZS5uYW1lIik7IC8qIEZJWE1FKGRncSk6IGdldCB0aGUgbmFtZSBvZiB0aGUgbG9hZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbGFuY2VkIHNlcnZpY2UgZnJvbSB0aGUgcmVzb2x2ZXIgKi8KKyAgZ3ByX3NsaWNlIHJlcXVlc3RfcGF5bG9hZF9zbGljZSA9IGdycGNfZ3JwY2xiX3JlcXVlc3RfZW5jb2RlKHJlcXVlc3QpOworICBsYl9jbGllbnQtPnJlcXVlc3RfcGF5bG9hZCA9CisgICAgICBncnBjX3Jhd19ieXRlX2J1ZmZlcl9jcmVhdGUoJnJlcXVlc3RfcGF5bG9hZF9zbGljZSwgMSk7CisgIGdwcl9zbGljZV91bnJlZihyZXF1ZXN0X3BheWxvYWRfc2xpY2UpOworICBncnBjX2dycGNsYl9yZXF1ZXN0X2Rlc3Ryb3kocmVxdWVzdCk7CisKKyAgbGJfY2xpZW50LT5zdGF0dXNfZGV0YWlscyA9IE5VTEw7CisgIGxiX2NsaWVudC0+c3RhdHVzX2RldGFpbHNfY2FwYWNpdHkgPSAwOworICBsYl9jbGllbnQtPmdsYl9wb2xpY3kgPSBnbGJfcG9saWN5OworICByZXR1cm4gbGJfY2xpZW50OworfQorCitzdGF0aWMgdm9pZCBsYl9jbGllbnRfZGF0YV9kZXN0cm95KGxiX2NsaWVudF9kYXRhICpsYl9jbGllbnQpIHsKKyAgZ3JwY19jYWxsX2Rlc3Ryb3kobGJfY2xpZW50LT5sYl9jYWxsKTsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheV9kZXN0cm95KCZsYl9jbGllbnQtPmluaXRpYWxfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfZGVzdHJveSgmbGJfY2xpZW50LT50cmFpbGluZ19tZXRhZGF0YV9yZWN2KTsKKworICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kobGJfY2xpZW50LT5yZXF1ZXN0X3BheWxvYWQpOworCisgIGdwcl9mcmVlKGxiX2NsaWVudC0+c3RhdHVzX2RldGFpbHMpOworICBncHJfbXVfZGVzdHJveSgmbGJfY2xpZW50LT5tdSk7CisgIGdwcl9mcmVlKGxiX2NsaWVudCk7Cit9CitzdGF0aWMgZ3JwY19jYWxsICpsYl9jbGllbnRfZGF0YV9nZXRfY2FsbChsYl9jbGllbnRfZGF0YSAqbGJfY2xpZW50KSB7CisgIHJldHVybiBsYl9jbGllbnQtPmxiX2NhbGw7Cit9CisKKy8qCisgKiBBdXhpbGlhcnkgZnVuY3Rpb25zIGFuZCBMQiBjbGllbnQgY2FsbGJhY2tzLgorICovCitzdGF0aWMgdm9pZCBxdWVyeV9mb3JfYmFja2VuZHMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xiX2xiX3BvbGljeSAqZ2xiX3BvbGljeSkgeworICBHUFJfQVNTRVJUKGdsYl9wb2xpY3ktPmxiX2NoYW5uZWwgIT0gTlVMTCk7CisKKyAgZ2xiX3BvbGljeS0+bGJfY2xpZW50ID0gbGJfY2xpZW50X2RhdGFfY3JlYXRlKGdsYl9wb2xpY3kpOworICBncnBjX2NhbGxfZXJyb3IgY2FsbF9lcnJvcjsKKyAgZ3JwY19vcCBvcHNbMV07CisgIG1lbXNldChvcHMsIDAsIHNpemVvZihvcHMpKTsKKyAgZ3JwY19vcCAqb3AgPSBvcHM7CisgIG9wLT5vcCA9IEdSUENfT1BfU0VORF9JTklUSUFMX01FVEFEQVRBOworICBvcC0+ZGF0YS5zZW5kX2luaXRpYWxfbWV0YWRhdGEuY291bnQgPSAwOworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBjYWxsX2Vycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoX2FuZF9leGVjdXRlKAorICAgICAgZXhlY19jdHgsIGdsYl9wb2xpY3ktPmxiX2NsaWVudC0+bGJfY2FsbCwgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksCisgICAgICAmZ2xiX3BvbGljeS0+bGJfY2xpZW50LT5tZF9zZW50KTsKKyAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gY2FsbF9lcnJvcik7CisKKyAgb3AgPSBvcHM7CisgIG9wLT5vcCA9IEdSUENfT1BfUkVDVl9TVEFUVVNfT05fQ0xJRU5UOworICBvcC0+ZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQudHJhaWxpbmdfbWV0YWRhdGEgPQorICAgICAgJmdsYl9wb2xpY3ktPmxiX2NsaWVudC0+dHJhaWxpbmdfbWV0YWRhdGFfcmVjdjsKKyAgb3AtPmRhdGEucmVjdl9zdGF0dXNfb25fY2xpZW50LnN0YXR1cyA9ICZnbGJfcG9saWN5LT5sYl9jbGllbnQtPnN0YXR1czsKKyAgb3AtPmRhdGEucmVjdl9zdGF0dXNfb25fY2xpZW50LnN0YXR1c19kZXRhaWxzID0KKyAgICAgICZnbGJfcG9saWN5LT5sYl9jbGllbnQtPnN0YXR1c19kZXRhaWxzOworICBvcC0+ZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQuc3RhdHVzX2RldGFpbHNfY2FwYWNpdHkgPQorICAgICAgJmdsYl9wb2xpY3ktPmxiX2NsaWVudC0+c3RhdHVzX2RldGFpbHNfY2FwYWNpdHk7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIGNhbGxfZXJyb3IgPSBncnBjX2NhbGxfc3RhcnRfYmF0Y2hfYW5kX2V4ZWN1dGUoCisgICAgICBleGVjX2N0eCwgZ2xiX3BvbGljeS0+bGJfY2xpZW50LT5sYl9jYWxsLCBvcHMsIChzaXplX3QpKG9wIC0gb3BzKSwKKyAgICAgICZnbGJfcG9saWN5LT5sYl9jbGllbnQtPnNydl9zdGF0dXNfcmN2ZCk7CisgIEdQUl9BU1NFUlQoR1JQQ19DQUxMX09LID09IGNhbGxfZXJyb3IpOworfQorCitzdGF0aWMgdm9pZCBtZF9zZW50X2NiKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsIGdycGNfZXJyb3IgKmVycm9yKSB7CisgIGxiX2NsaWVudF9kYXRhICpsYl9jbGllbnQgPSBhcmc7CisgIEdQUl9BU1NFUlQobGJfY2xpZW50LT5sYl9jYWxsKTsKKyAgZ3JwY19vcCBvcHNbMV07CisgIG1lbXNldChvcHMsIDAsIHNpemVvZihvcHMpKTsKKyAgZ3JwY19vcCAqb3AgPSBvcHM7CisgIG9wLT5vcCA9IEdSUENfT1BfUkVDVl9JTklUSUFMX01FVEFEQVRBOworICBvcC0+ZGF0YS5yZWN2X2luaXRpYWxfbWV0YWRhdGEgPSAmbGJfY2xpZW50LT5pbml0aWFsX21ldGFkYXRhX3JlY3Y7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIGdycGNfY2FsbF9lcnJvciBjYWxsX2Vycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoX2FuZF9leGVjdXRlKAorICAgICAgZXhlY19jdHgsIGxiX2NsaWVudC0+bGJfY2FsbCwgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksCisgICAgICAmbGJfY2xpZW50LT5tZF9yY3ZkKTsKKyAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gY2FsbF9lcnJvcik7Cit9CisKK3N0YXRpYyB2b2lkIG1kX3JlY3ZfY2IoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywgZ3JwY19lcnJvciAqZXJyb3IpIHsKKyAgbGJfY2xpZW50X2RhdGEgKmxiX2NsaWVudCA9IGFyZzsKKyAgR1BSX0FTU0VSVChsYl9jbGllbnQtPmxiX2NhbGwpOworICBncnBjX29wIG9wc1sxXTsKKyAgbWVtc2V0KG9wcywgMCwgc2l6ZW9mKG9wcykpOworICBncnBjX29wICpvcCA9IG9wczsKKworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfTUVTU0FHRTsKKyAgb3AtPmRhdGEuc2VuZF9tZXNzYWdlID0gbGJfY2xpZW50LT5yZXF1ZXN0X3BheWxvYWQ7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIGdycGNfY2FsbF9lcnJvciBjYWxsX2Vycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoX2FuZF9leGVjdXRlKAorICAgICAgZXhlY19jdHgsIGxiX2NsaWVudC0+bGJfY2FsbCwgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksCisgICAgICAmbGJfY2xpZW50LT5yZXFfc2VudCk7CisgIEdQUl9BU1NFUlQoR1JQQ19DQUxMX09LID09IGNhbGxfZXJyb3IpOworfQorCitzdGF0aWMgdm9pZCByZXFfc2VudF9jYihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLCBncnBjX2Vycm9yICplcnJvcikgeworICBsYl9jbGllbnRfZGF0YSAqbGJfY2xpZW50ID0gYXJnOworCisgIGdycGNfb3Agb3BzWzFdOworICBtZW1zZXQob3BzLCAwLCBzaXplb2Yob3BzKSk7CisgIGdycGNfb3AgKm9wID0gb3BzOworCisgIG9wLT5vcCA9IEdSUENfT1BfUkVDVl9NRVNTQUdFOworICBvcC0+ZGF0YS5yZWN2X21lc3NhZ2UgPSAmbGJfY2xpZW50LT5yZXNwb25zZV9wYXlsb2FkOworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBncnBjX2NhbGxfZXJyb3IgY2FsbF9lcnJvciA9IGdycGNfY2FsbF9zdGFydF9iYXRjaF9hbmRfZXhlY3V0ZSgKKyAgICAgIGV4ZWNfY3R4LCBsYl9jbGllbnQtPmxiX2NhbGwsIG9wcywgKHNpemVfdCkob3AgLSBvcHMpLAorICAgICAgJmxiX2NsaWVudC0+cmVzX3JjdmQpOworICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBjYWxsX2Vycm9yKTsKK30KKworc3RhdGljIHZvaWQgcmVzX3JlY3ZfY2IoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywgZ3JwY19lcnJvciAqZXJyb3IpIHsKKyAgbGJfY2xpZW50X2RhdGEgKmxiX2NsaWVudCA9IGFyZzsKKyAgZ3JwY19vcCBvcHNbMl07CisgIG1lbXNldChvcHMsIDAsIHNpemVvZihvcHMpKTsKKyAgZ3JwY19vcCAqb3AgPSBvcHM7CisgIGlmIChsYl9jbGllbnQtPnJlc3BvbnNlX3BheWxvYWQgIT0gTlVMTCkgeworICAgIC8qIFJlY2VpdmVkIGRhdGEgZnJvbSB0aGUgTEIgc2VydmVyLiBMb29rIGluc2lkZQorICAgICAqIGxiX2NsaWVudC0+cmVzcG9uc2VfcGF5bG9hZCwgZm9yCisgICAgICogYSBzZXJ2ZXJsaXN0LiAqLworICAgIGdycGNfYnl0ZV9idWZmZXJfcmVhZGVyIGJicjsKKyAgICBncnBjX2J5dGVfYnVmZmVyX3JlYWRlcl9pbml0KCZiYnIsIGxiX2NsaWVudC0+cmVzcG9uc2VfcGF5bG9hZCk7CisgICAgZ3ByX3NsaWNlIHJlc3BvbnNlX3NsaWNlID0gZ3JwY19ieXRlX2J1ZmZlcl9yZWFkZXJfcmVhZGFsbCgmYmJyKTsKKyAgICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kobGJfY2xpZW50LT5yZXNwb25zZV9wYXlsb2FkKTsKKyAgICBncnBjX2dycGNsYl9zZXJ2ZXJsaXN0ICpzZXJ2ZXJsaXN0ID0KKyAgICAgICAgZ3JwY19ncnBjbGJfcmVzcG9uc2VfcGFyc2Vfc2VydmVybGlzdChyZXNwb25zZV9zbGljZSk7CisgICAgaWYgKHNlcnZlcmxpc3QgIT0gTlVMTCkgeworICAgICAgZ3ByX3NsaWNlX3VucmVmKHJlc3BvbnNlX3NsaWNlKTsKKyAgICAgIGlmIChncnBjX2xiX2dsYl90cmFjZSkgeworICAgICAgICBncHJfbG9nKEdQUl9JTkZPLCAiU2VydmVybGlzdCB3aXRoICV6dSBzZXJ2ZXJzIHJlY2VpdmVkIiwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJsaXN0LT5udW1fc2VydmVycyk7CisgICAgICB9CisKKyAgICAgIC8qIHVwZGF0ZSBzZXJ2ZXJsaXN0ICovCisgICAgICBpZiAoc2VydmVybGlzdC0+bnVtX3NlcnZlcnMgPiAwKSB7CisgICAgICAgIGlmIChncnBjX2dycGNsYl9zZXJ2ZXJsaXN0X2VxdWFscyhsYl9jbGllbnQtPmdsYl9wb2xpY3ktPnNlcnZlcmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJsaXN0KSkgeworICAgICAgICAgIGlmIChncnBjX2xiX2dsYl90cmFjZSkgeworICAgICAgICAgICAgZ3ByX2xvZyhHUFJfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgIkluY29taW5nIHNlcnZlciBsaXN0IGlkZW50aWNhbCB0byBjdXJyZW50LCBpZ25vcmluZy4iKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7IC8qIG5ldyBzZXJ2ZXJsaXN0ICovCisgICAgICAgICAgaWYgKGxiX2NsaWVudC0+Z2xiX3BvbGljeS0+c2VydmVybGlzdCAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBkaXNwb3NlIG9mIHRoZSBvbGQgc2VydmVybGlzdCAqLworICAgICAgICAgICAgZ3JwY19ncnBjbGJfZGVzdHJveV9zZXJ2ZXJsaXN0KGxiX2NsaWVudC0+Z2xiX3BvbGljeS0+c2VydmVybGlzdCk7CisgICAgICAgICAgfQorICAgICAgICAgIC8qIGFuZCB1cGRhdGUgdGhlIGNvcHkgaW4gdGhlIGdsYl9sYl9wb2xpY3kgaW5zdGFuY2UgKi8KKyAgICAgICAgICBsYl9jbGllbnQtPmdsYl9wb2xpY3ktPnNlcnZlcmxpc3QgPSBzZXJ2ZXJsaXN0OworICAgICAgICB9CisgICAgICAgIGlmIChsYl9jbGllbnQtPmdsYl9wb2xpY3ktPnJyX3BvbGljeSA9PSBOVUxMKSB7CisgICAgICAgICAgLyogaW5pdGlhbCAiaGFuZG92ZXIiLCBpbiB0aGlzIGNhc2UgZnJvbSBhIG51bGwgUlIgcG9saWN5LCBtZWFuaW5nCisgICAgICAgICAgICogaXQnbGwganVzdCBjcmVhdGUgdGhlIGZpcnN0IFJSIHBvbGljeSBpbnN0YW5jZSAqLworICAgICAgICAgIHJyX2hhbmRvdmVyKGV4ZWNfY3R4LCBsYl9jbGllbnQtPmdsYl9wb2xpY3ksIGVycm9yKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAvKiB1bnJlZiB0aGUgUlIgcG9saWN5LCBldmVudHVhbGx5IGxlYWRpbmcgdG8gaXRzIHN1YnN0aXR1dGlvbiB3aXRoIGEKKyAgICAgICAgICAgKiBuZXcgb25lIGNvbnN0cnVjdGVkIGZyb20gdGhlIHJlY2VpdmVkIHNlcnZlcmxpc3QgKHNlZQorICAgICAgICAgICAqIHJyX2Nvbm5lY3Rpdml0eV9jaGFuZ2VkKSAqLworICAgICAgICAgIEdSUENfTEJfUE9MSUNZX1VOUkVGKGV4ZWNfY3R4LCBsYl9jbGllbnQtPmdsYl9wb2xpY3ktPnJyX3BvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VydmVybGlzdF9yZWNlaXZlZCIpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoZ3JwY19sYl9nbGJfdHJhY2UpIHsKKyAgICAgICAgICBncHJfbG9nKEdQUl9JTkZPLAorICAgICAgICAgICAgICAgICAgIlJlY2VpdmVkIGVtcHR5IHNlcnZlciBsaXN0LiBQaWNrcyB3aWxsIHN0YXkgcGVuZGluZyB1bnRpbCBhICIKKyAgICAgICAgICAgICAgICAgICJyZXNwb25zZSB3aXRoID4gMCBzZXJ2ZXJzIGlzIHJlY2VpdmVkIik7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyoga2VlcCBsaXN0ZW5pbmcgZm9yIHNlcnZlcmxpc3QgdXBkYXRlcyAqLworICAgICAgb3AtPm9wID0gR1JQQ19PUF9SRUNWX01FU1NBR0U7CisgICAgICBvcC0+ZGF0YS5yZWN2X21lc3NhZ2UgPSAmbGJfY2xpZW50LT5yZXNwb25zZV9wYXlsb2FkOworICAgICAgb3AtPmZsYWdzID0gMDsKKyAgICAgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgICAgICBvcCsrOworICAgICAgY29uc3QgZ3JwY19jYWxsX2Vycm9yIGNhbGxfZXJyb3IgPSBncnBjX2NhbGxfc3RhcnRfYmF0Y2hfYW5kX2V4ZWN1dGUoCisgICAgICAgICAgZXhlY19jdHgsIGxiX2NsaWVudC0+bGJfY2FsbCwgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksCisgICAgICAgICAgJmxiX2NsaWVudC0+cmVzX3JjdmQpOyAvKiBsb29wICovCisgICAgICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBjYWxsX2Vycm9yKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHUFJfQVNTRVJUKHNlcnZlcmxpc3QgPT0gTlVMTCk7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJJbnZhbGlkIExCIHJlc3BvbnNlIHJlY2VpdmVkOiAnJXMnIiwKKyAgICAgICAgICAgIGdwcl9kdW1wX3NsaWNlKHJlc3BvbnNlX3NsaWNlLCBHUFJfRFVNUF9BU0NJSSkpOworICAgIGdwcl9zbGljZV91bnJlZihyZXNwb25zZV9zbGljZSk7CisKKyAgICAvKiBEaXNjb25uZWN0IGZyb20gc2VydmVyIHJldHVybmluZyBpbnZhbGlkIHJlc3BvbnNlLiAqLworICAgIG9wLT5vcCA9IEdSUENfT1BfU0VORF9DTE9TRV9GUk9NX0NMSUVOVDsKKyAgICBvcC0+ZmxhZ3MgPSAwOworICAgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgICAgb3ArKzsKKyAgICBncnBjX2NhbGxfZXJyb3IgY2FsbF9lcnJvciA9IGdycGNfY2FsbF9zdGFydF9iYXRjaF9hbmRfZXhlY3V0ZSgKKyAgICAgICAgZXhlY19jdHgsIGxiX2NsaWVudC0+bGJfY2FsbCwgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksCisgICAgICAgICZsYl9jbGllbnQtPmNsb3NlX3NlbnQpOworICAgIEdQUl9BU1NFUlQoR1JQQ19DQUxMX09LID09IGNhbGxfZXJyb3IpOworICB9CisgIC8qIGVtcHR5IHBheWxvYWQ6IGNhbGwgY2FuY2VsbGVkIGJ5IHNlcnZlci4gQ2xlYW51cHMgaGFwcGVuaW5nIGluCisgICAqIHNydl9zdGF0dXNfcmN2ZF9jYiAqLworfQorCitzdGF0aWMgdm9pZCBjbG9zZV9zZW50X2NiKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CisgIGlmIChncnBjX2xiX2dsYl90cmFjZSkgeworICAgIGdwcl9sb2coR1BSX0lORk8sCisgICAgICAgICAgICAiQ2xvc2UgZnJvbSBMQiBjbGllbnQgc2VudC4gV2FpdGluZyBmcm9tIHNlcnZlciBzdGF0dXMgbm93Iik7CisgIH0KK30KKworc3RhdGljIHZvaWQgc3J2X3N0YXR1c19yY3ZkX2NiKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICphcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19lcnJvciAqZXJyb3IpIHsKKyAgbGJfY2xpZW50X2RhdGEgKmxiX2NsaWVudCA9IGFyZzsKKyAgaWYgKGdycGNfbGJfZ2xiX3RyYWNlKSB7CisgICAgZ3ByX2xvZyhHUFJfSU5GTywKKyAgICAgICAgICAgICJzdGF0dXMgZnJvbSBsYiBzZXJ2ZXIgcmVjZWl2ZWQuIFN0YXR1cyA9ICVkLCBEZXRhaWxzID0gJyVzJywgIgorICAgICAgICAgICAgIkNhcGF0aWN5ICIKKyAgICAgICAgICAgICI9ICV6dSIsCisgICAgICAgICAgICBsYl9jbGllbnQtPnN0YXR1cywgbGJfY2xpZW50LT5zdGF0dXNfZGV0YWlscywKKyAgICAgICAgICAgIGxiX2NsaWVudC0+c3RhdHVzX2RldGFpbHNfY2FwYWNpdHkpOworICB9CisgIC8qIFRPRE8oZGdxKTogZGVhbCB3aXRoIHN0cmVhbSB0ZXJtaW5hdGlvbiBwcm9wZXJseSAoZmlyZSB1cCBhbm90aGVyIG9uZT8gZmFpbAorICAgKiB0aGUgb3JpZ2luYWwgY2FsbD8pICovCit9CisKKy8qIENvZGUgd2lyaW5nIHRoZSBwb2xpY3kgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29yZSAqLworc3RhdGljIGNvbnN0IGdycGNfbGJfcG9saWN5X3Z0YWJsZSBnbGJfbGJfcG9saWN5X3Z0YWJsZSA9IHsKKyAgICBnbGJfZGVzdHJveSwgICAgIGdsYl9zaHV0ZG93biwgICAgICAgICAgIGdsYl9waWNrLAorICAgIGdsYl9jYW5jZWxfcGljaywgZ2xiX2NhbmNlbF9waWNrcywgICAgICAgZ2xiX3Bpbmdfb25lLAorICAgIGdsYl9leGl0X2lkbGUsICAgZ2xiX2NoZWNrX2Nvbm5lY3Rpdml0eSwgZ2xiX25vdGlmeV9vbl9zdGF0ZV9jaGFuZ2V9OworCitzdGF0aWMgdm9pZCBnbGJfZmFjdG9yeV9yZWYoZ3JwY19sYl9wb2xpY3lfZmFjdG9yeSAqZmFjdG9yeSkge30KKworc3RhdGljIHZvaWQgZ2xiX2ZhY3RvcnlfdW5yZWYoZ3JwY19sYl9wb2xpY3lfZmFjdG9yeSAqZmFjdG9yeSkge30KKworc3RhdGljIGNvbnN0IGdycGNfbGJfcG9saWN5X2ZhY3RvcnlfdnRhYmxlIGdsYl9mYWN0b3J5X3Z0YWJsZSA9IHsKKyAgICBnbGJfZmFjdG9yeV9yZWYsIGdsYl9mYWN0b3J5X3VucmVmLCBnbGJfY3JlYXRlLCAiZ3JwY2xiIn07CisKK3N0YXRpYyBncnBjX2xiX3BvbGljeV9mYWN0b3J5IGdsYl9sYl9wb2xpY3lfZmFjdG9yeSA9IHsmZ2xiX2ZhY3RvcnlfdnRhYmxlfTsKKworZ3JwY19sYl9wb2xpY3lfZmFjdG9yeSAqZ3JwY19nbGJfbGJfZmFjdG9yeV9jcmVhdGUoKSB7CisgIHJldHVybiAmZ2xiX2xiX3BvbGljeV9mYWN0b3J5OworfQorCisvKiBQbHVnaW4gcmVnaXN0cmF0aW9uICovCit2b2lkIGdycGNfbGJfcG9saWN5X2dycGNsYl9pbml0KCkgeworICBncnBjX3JlZ2lzdGVyX2xiX3BvbGljeShncnBjX2dsYl9sYl9mYWN0b3J5X2NyZWF0ZSgpKTsKKyAgZ3JwY19yZWdpc3Rlcl90cmFjZXIoImdsYiIsICZncnBjX2xiX2dsYl90cmFjZSk7Cit9CisKK3ZvaWQgZ3JwY19sYl9wb2xpY3lfZ3JwY2xiX3NodXRkb3duKCkge30KZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9sb2FkZXIuYyBiL3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5oCnNpbWlsYXJpdHkgaW5kZXggNzclCnJlbmFtZSBmcm9tIHNyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9sb2FkZXIuYwpyZW5hbWUgdG8gc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmgKaW5kZXggMzRiZDg5Ny4uODM1NTJiNCAxMDA2NDQKLS0tIGEvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2xvYWRlci5jCisrKyBiL3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5oCkBAIC0zMSwyMiArMzEsMTQgQEAKICAqCiAgKi8KIAotI2luY2x1ZGUgPFB5dGhvbi5oPgotI2luY2x1ZGUgImxvYWRlci5oIgorI2lmbmRlZiBHUlBDX0NPUkVfRVhUX0xCX1BPTElDWV9HUlBDTEJfR1JQQ0xCX0gKKyNkZWZpbmUgR1JQQ19DT1JFX0VYVF9MQl9QT0xJQ1lfR1JQQ0xCX0dSUENMQl9ICiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYgIC8qIF9fY3BsdXNsdXMgICovCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvbGJfcG9saWN5X2ZhY3RvcnkuaCIKIAotaW50IHB5Z3JwY19sb2FkX2NvcmUoY2hhciAqcGF0aCkgeyByZXR1cm4gMTsgfQorLyoqIFJldHVybnMgYSBsb2FkIGJhbGFuY2luZyBmYWN0b3J5IGZvciB0aGUgZ2xiIHBvbGljeSwgd2hpY2ggdHJpZXMgdG8gY29ubmVjdAorICogdG8gYSBsb2FkIGJhbGFuY2luZyBzZXJ2ZXIgdG8gZGVjaWRlIHRoZSBuZXh0IHN1Y2Nlc3NmdWxseSBjb25uZWN0ZWQKKyAqIHN1YmNoYW5uZWwgdG8gcGljay4gKi8KK2dycGNfbGJfcG9saWN5X2ZhY3RvcnkgKmdycGNfZ2xiX2xiX2ZhY3RvcnlfY3JlYXRlKCk7CiAKLS8vIEN5dGhvbiBkb2Vzbid0IGhhdmUgUHlfQXRFeGl0IGJpbmRpbmdzLCBzbyB3ZSBjYWxsIHRoZSBDX0FQSSBkaXJlY3RseQotaW50IHB5Z3JwY19pbml0aWFsaXplX2NvcmUodm9pZCkgewotICBncnBjX2luaXQoKTsKLSAgcmV0dXJuIFB5X0F0RXhpdChncnBjX3NodXRkb3duKSA8IDAgPyAwIDogMTsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYgIC8qIF9fY3BsdXNsdXMgKi8KLQorI2VuZGlmIC8qIEdSUENfQ09SRV9FWFRfTEJfUE9MSUNZX0dSUENMQl9HUlBDTEJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuYyBiL3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmMKaW5kZXggNTliODk5OS4uZjQ3MjBhMSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuYworKysgYi9zcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5jCkBAIC0zOCw5ICszOCwxNSBAQAogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgogCiB0eXBlZGVmIHN0cnVjdCBkZWNvZGVfc2VydmVybGlzdF9hcmcgewotICBpbnQgZmlyc3RfcGFzczsKLSAgaW50IGk7CisgIC8qIFRoZSBmaXJzdCBwYXNzIGNvdW50cyB0aGUgbnVtYmVyIG9mIHNlcnZlcnMgaW4gdGhlIHNlcnZlciBsaXN0LiBUaGUgc2Vjb25kCisgICAqIG9uZSBhbGxvY2F0ZXMgYW5kIGRlY29kZXMuICovCisgIGJvb2wgZmlyc3RfcGFzczsKKyAgLyogVGhlIGRlY29kaW5nIGNhbGxiYWNrIGlzIGludm9rZWQgb25jZSBwZXIgc2VydmVyIGluIHNlcnZlcmxpc3QuIFJlbWVtYmVyCisgICAqIHdoaWNoIGluZGV4IG9mIHRoZSBzZXJ2ZXJsaXN0IGFyZSB3ZSBjdXJyZW50bHkgZGVjb2RpbmcgKi8KKyAgc2l6ZV90IGRlY29kaW5nX2lkeDsKKyAgLyogUG9wdWxhdGVkIGFmdGVyIHRoZSBmaXJzdCBwYXNzLiBOdW1iZXIgb2Ygc2VydmVyIGluIHRoZSBpbnB1dCBzZXJ2ZXJsaXN0ICovCiAgIHNpemVfdCBudW1fc2VydmVyczsKKyAgLyogVGhlIGRlY29kZWQgc2VydmVybGlzdCAqLwogICBncnBjX2dycGNsYl9zZXJ2ZXIgKipzZXJ2ZXJzOwogfSBkZWNvZGVfc2VydmVybGlzdF9hcmc7CiAKQEAgLTQ4LDIzICs1NCwyNCBAQAogc3RhdGljIGJvb2wgZGVjb2RlX3NlcnZlcmxpc3QocGJfaXN0cmVhbV90ICpzdHJlYW0sIGNvbnN0IHBiX2ZpZWxkX3QgKmZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmFyZykgewogICBkZWNvZGVfc2VydmVybGlzdF9hcmcgKmRlY19hcmcgPSAqYXJnOwotICBpZiAoZGVjX2FyZy0+Zmlyc3RfcGFzcyAhPSAwKSB7IC8qIGZpcnN0IHBhc3MgKi8KKyAgaWYgKGRlY19hcmctPmZpcnN0X3Bhc3MpIHsgLyogY291bnQgaG93IG1hbnkgc2VydmVyIGRvIHdlIGhhdmUgKi8KICAgICBncnBjX2dycGNsYl9zZXJ2ZXIgc2VydmVyOwogICAgIGlmICghcGJfZGVjb2RlKHN0cmVhbSwgZ3JwY19sYl92MV9TZXJ2ZXJfZmllbGRzLCAmc2VydmVyKSkgewogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBkZWNfYXJnLT5udW1fc2VydmVycysrOwotICB9IGVsc2UgeyAvKiBzZWNvbmQgcGFzcyAqLworICB9IGVsc2UgeyAvKiBzZWNvbmQgcGFzcy4gQWN0dWFsbHkgZGVjb2RlLiAqLwogICAgIGdycGNfZ3JwY2xiX3NlcnZlciAqc2VydmVyID0gZ3ByX21hbGxvYyhzaXplb2YoZ3JwY19ncnBjbGJfc2VydmVyKSk7CisgICAgbWVtc2V0KHNlcnZlciwgMCwgc2l6ZW9mKGdycGNfZ3JwY2xiX3NlcnZlcikpOwogICAgIEdQUl9BU1NFUlQoZGVjX2FyZy0+bnVtX3NlcnZlcnMgPiAwKTsKLSAgICBpZiAoZGVjX2FyZy0+aSA9PSAwKSB7IC8qIGZpcnN0IGl0ZXJhdGlvbiBvZiBzZWNvbmQgcGFzcyAqLworICAgIGlmIChkZWNfYXJnLT5kZWNvZGluZ19pZHggPT0gMCkgeyAvKiBmaXJzdCBpdGVyYXRpb24gb2Ygc2Vjb25kIHBhc3MgKi8KICAgICAgIGRlY19hcmctPnNlcnZlcnMgPQogICAgICAgICAgIGdwcl9tYWxsb2Moc2l6ZW9mKGdycGNfZ3JwY2xiX3NlcnZlciAqKSAqIGRlY19hcmctPm51bV9zZXJ2ZXJzKTsKICAgICB9CiAgICAgaWYgKCFwYl9kZWNvZGUoc3RyZWFtLCBncnBjX2xiX3YxX1NlcnZlcl9maWVsZHMsIHNlcnZlcikpIHsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgZGVjX2FyZy0+c2VydmVyc1tkZWNfYXJnLT5pKytdID0gc2VydmVyOworICAgIGRlY19hcmctPnNlcnZlcnNbZGVjX2FyZy0+ZGVjb2RpbmdfaWR4KytdID0gc2VydmVyOwogICB9CiAKICAgcmV0dXJuIHRydWU7CkBAIC0xMDIsNTcgKzEwOSw1OSBAQAogICBncHJfZnJlZShyZXF1ZXN0KTsKIH0KIAotZ3JwY19ncnBjbGJfcmVzcG9uc2UgKmdycGNfZ3JwY2xiX3Jlc3BvbnNlX3BhcnNlKGdwcl9zbGljZSBlbmNvZGVkX3Jlc3BvbnNlKSB7Ci0gIGJvb2wgc3RhdHVzOwordHlwZWRlZiBncnBjX2xiX3YxX0xvYWRCYWxhbmNlUmVzcG9uc2UgZ3JwY19ncnBjbGJfcmVzcG9uc2U7CitncnBjX2dycGNsYl9pbml0aWFsX3Jlc3BvbnNlICpncnBjX2dycGNsYl9pbml0aWFsX3Jlc3BvbnNlX3BhcnNlKAorICAgIGdwcl9zbGljZSBlbmNvZGVkX2dycGNfZ3JwY2xiX3Jlc3BvbnNlKSB7CiAgIHBiX2lzdHJlYW1fdCBzdHJlYW0gPQotICAgICAgcGJfaXN0cmVhbV9mcm9tX2J1ZmZlcihHUFJfU0xJQ0VfU1RBUlRfUFRSKGVuY29kZWRfcmVzcG9uc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUFJfU0xJQ0VfTEVOR1RIKGVuY29kZWRfcmVzcG9uc2UpKTsKLSAgZ3JwY19ncnBjbGJfcmVzcG9uc2UgKnJlcyA9IGdwcl9tYWxsb2Moc2l6ZW9mKGdycGNfZ3JwY2xiX3Jlc3BvbnNlKSk7Ci0gIG1lbXNldChyZXMsIDAsIHNpemVvZigqcmVzKSk7Ci0gIHN0YXR1cyA9IHBiX2RlY29kZSgmc3RyZWFtLCBncnBjX2xiX3YxX0xvYWRCYWxhbmNlUmVzcG9uc2VfZmllbGRzLCByZXMpOwotICBpZiAoIXN0YXR1cykgewotICAgIGdycGNfZ3JwY2xiX3Jlc3BvbnNlX2Rlc3Ryb3kocmVzKTsKKyAgICAgIHBiX2lzdHJlYW1fZnJvbV9idWZmZXIoR1BSX1NMSUNFX1NUQVJUX1BUUihlbmNvZGVkX2dycGNfZ3JwY2xiX3Jlc3BvbnNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BSX1NMSUNFX0xFTkdUSChlbmNvZGVkX2dycGNfZ3JwY2xiX3Jlc3BvbnNlKSk7CisgIGdycGNfZ3JwY2xiX3Jlc3BvbnNlIHJlczsKKyAgbWVtc2V0KCZyZXMsIDAsIHNpemVvZihncnBjX2dycGNsYl9yZXNwb25zZSkpOworICBpZiAoIXBiX2RlY29kZSgmc3RyZWFtLCBncnBjX2xiX3YxX0xvYWRCYWxhbmNlUmVzcG9uc2VfZmllbGRzLCAmcmVzKSkgewogICAgIHJldHVybiBOVUxMOwogICB9Ci0gIHJldHVybiByZXM7CisgIGdycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2UgKmluaXRpYWxfcmVzID0KKyAgICAgIGdwcl9tYWxsb2Moc2l6ZW9mKGdycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2UpKTsKKyAgbWVtY3B5KGluaXRpYWxfcmVzLCAmcmVzLmluaXRpYWxfcmVzcG9uc2UsCisgICAgICAgICBzaXplb2YoZ3JwY19ncnBjbGJfaW5pdGlhbF9yZXNwb25zZSkpOworCisgIHJldHVybiBpbml0aWFsX3JlczsKIH0KIAogZ3JwY19ncnBjbGJfc2VydmVybGlzdCAqZ3JwY19ncnBjbGJfcmVzcG9uc2VfcGFyc2Vfc2VydmVybGlzdCgKLSAgICBncHJfc2xpY2UgZW5jb2RlZF9yZXNwb25zZSkgeworICAgIGdwcl9zbGljZSBlbmNvZGVkX2dycGNfZ3JwY2xiX3Jlc3BvbnNlKSB7CiAgIGJvb2wgc3RhdHVzOwogICBkZWNvZGVfc2VydmVybGlzdF9hcmcgYXJnOwogICBwYl9pc3RyZWFtX3Qgc3RyZWFtID0KLSAgICAgIHBiX2lzdHJlYW1fZnJvbV9idWZmZXIoR1BSX1NMSUNFX1NUQVJUX1BUUihlbmNvZGVkX3Jlc3BvbnNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BSX1NMSUNFX0xFTkdUSChlbmNvZGVkX3Jlc3BvbnNlKSk7CisgICAgICBwYl9pc3RyZWFtX2Zyb21fYnVmZmVyKEdQUl9TTElDRV9TVEFSVF9QVFIoZW5jb2RlZF9ncnBjX2dycGNsYl9yZXNwb25zZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQUl9TTElDRV9MRU5HVEgoZW5jb2RlZF9ncnBjX2dycGNsYl9yZXNwb25zZSkpOwogICBwYl9pc3RyZWFtX3Qgc3RyZWFtX2F0X3N0YXJ0ID0gc3RyZWFtOwotICBncnBjX2dycGNsYl9yZXNwb25zZSAqcmVzID0gZ3ByX21hbGxvYyhzaXplb2YoZ3JwY19ncnBjbGJfcmVzcG9uc2UpKTsKLSAgbWVtc2V0KHJlcywgMCwgc2l6ZW9mKCpyZXMpKTsKKyAgZ3JwY19ncnBjbGJfcmVzcG9uc2UgcmVzOworICBtZW1zZXQoJnJlcywgMCwgc2l6ZW9mKGdycGNfZ3JwY2xiX3Jlc3BvbnNlKSk7CiAgIG1lbXNldCgmYXJnLCAwLCBzaXplb2YoZGVjb2RlX3NlcnZlcmxpc3RfYXJnKSk7CiAKLSAgcmVzLT5zZXJ2ZXJfbGlzdC5zZXJ2ZXJzLmZ1bmNzLmRlY29kZSA9IGRlY29kZV9zZXJ2ZXJsaXN0OwotICByZXMtPnNlcnZlcl9saXN0LnNlcnZlcnMuYXJnID0gJmFyZzsKLSAgYXJnLmZpcnN0X3Bhc3MgPSAxOwotICBzdGF0dXMgPSBwYl9kZWNvZGUoJnN0cmVhbSwgZ3JwY19sYl92MV9Mb2FkQmFsYW5jZVJlc3BvbnNlX2ZpZWxkcywgcmVzKTsKKyAgcmVzLnNlcnZlcl9saXN0LnNlcnZlcnMuZnVuY3MuZGVjb2RlID0gZGVjb2RlX3NlcnZlcmxpc3Q7CisgIHJlcy5zZXJ2ZXJfbGlzdC5zZXJ2ZXJzLmFyZyA9ICZhcmc7CisgIGFyZy5maXJzdF9wYXNzID0gdHJ1ZTsKKyAgc3RhdHVzID0gcGJfZGVjb2RlKCZzdHJlYW0sIGdycGNfbGJfdjFfTG9hZEJhbGFuY2VSZXNwb25zZV9maWVsZHMsICZyZXMpOwogICBpZiAoIXN0YXR1cykgewotICAgIGdycGNfZ3JwY2xiX3Jlc3BvbnNlX2Rlc3Ryb3kocmVzKTsKICAgICByZXR1cm4gTlVMTDsKICAgfQogCi0gIGFyZy5maXJzdF9wYXNzID0gMDsKKyAgYXJnLmZpcnN0X3Bhc3MgPSBmYWxzZTsKICAgc3RhdHVzID0KLSAgICAgIHBiX2RlY29kZSgmc3RyZWFtX2F0X3N0YXJ0LCBncnBjX2xiX3YxX0xvYWRCYWxhbmNlUmVzcG9uc2VfZmllbGRzLCByZXMpOworICAgICAgcGJfZGVjb2RlKCZzdHJlYW1fYXRfc3RhcnQsIGdycGNfbGJfdjFfTG9hZEJhbGFuY2VSZXNwb25zZV9maWVsZHMsICZyZXMpOwogICBpZiAoIXN0YXR1cykgewotICAgIGdycGNfZ3JwY2xiX3Jlc3BvbnNlX2Rlc3Ryb3kocmVzKTsKICAgICByZXR1cm4gTlVMTDsKICAgfQogCiAgIGdycGNfZ3JwY2xiX3NlcnZlcmxpc3QgKnNsID0gZ3ByX21hbGxvYyhzaXplb2YoZ3JwY19ncnBjbGJfc2VydmVybGlzdCkpOworICBtZW1zZXQoc2wsIDAsIHNpemVvZigqc2wpKTsKICAgc2wtPm51bV9zZXJ2ZXJzID0gYXJnLm51bV9zZXJ2ZXJzOwogICBzbC0+c2VydmVycyA9IGFyZy5zZXJ2ZXJzOwotICBpZiAocmVzLT5zZXJ2ZXJfbGlzdC5oYXNfZXhwaXJhdGlvbl9pbnRlcnZhbCkgewotICAgIHNsLT5leHBpcmF0aW9uX2ludGVydmFsID0gcmVzLT5zZXJ2ZXJfbGlzdC5leHBpcmF0aW9uX2ludGVydmFsOworICBpZiAocmVzLnNlcnZlcl9saXN0Lmhhc19leHBpcmF0aW9uX2ludGVydmFsKSB7CisgICAgc2wtPmV4cGlyYXRpb25faW50ZXJ2YWwgPSByZXMuc2VydmVyX2xpc3QuZXhwaXJhdGlvbl9pbnRlcnZhbDsKICAgfQotICBncnBjX2dycGNsYl9yZXNwb25zZV9kZXN0cm95KHJlcyk7CiAgIHJldHVybiBzbDsKIH0KIApAQCAtMTY3LDYgKzE3Niw3MiBAQAogICBncHJfZnJlZShzZXJ2ZXJsaXN0KTsKIH0KIAotdm9pZCBncnBjX2dycGNsYl9yZXNwb25zZV9kZXN0cm95KGdycGNfZ3JwY2xiX3Jlc3BvbnNlICpyZXNwb25zZSkgeworZ3JwY19ncnBjbGJfc2VydmVybGlzdCAqZ3JwY19ncnBjbGJfc2VydmVybGlzdF9jb3B5KAorICAgIGNvbnN0IGdycGNfZ3JwY2xiX3NlcnZlcmxpc3QgKnNsKSB7CisgIGdycGNfZ3JwY2xiX3NlcnZlcmxpc3QgKmNvcHkgPSBncHJfbWFsbG9jKHNpemVvZihncnBjX2dycGNsYl9zZXJ2ZXJsaXN0KSk7CisgIG1lbXNldChjb3B5LCAwLCBzaXplb2YoZ3JwY19ncnBjbGJfc2VydmVybGlzdCkpOworICBjb3B5LT5udW1fc2VydmVycyA9IHNsLT5udW1fc2VydmVyczsKKyAgbWVtY3B5KCZjb3B5LT5leHBpcmF0aW9uX2ludGVydmFsLCAmc2wtPmV4cGlyYXRpb25faW50ZXJ2YWwsCisgICAgICAgICBzaXplb2YoZ3JwY19ncnBjbGJfZHVyYXRpb24pKTsKKyAgY29weS0+c2VydmVycyA9IGdwcl9tYWxsb2Moc2l6ZW9mKGdycGNfZ3JwY2xiX3NlcnZlciAqKSAqIHNsLT5udW1fc2VydmVycyk7CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2wtPm51bV9zZXJ2ZXJzOyBpKyspIHsKKyAgICBjb3B5LT5zZXJ2ZXJzW2ldID0gZ3ByX21hbGxvYyhzaXplb2YoZ3JwY19ncnBjbGJfc2VydmVyKSk7CisgICAgbWVtY3B5KGNvcHktPnNlcnZlcnNbaV0sIHNsLT5zZXJ2ZXJzW2ldLCBzaXplb2YoZ3JwY19ncnBjbGJfc2VydmVyKSk7CisgIH0KKyAgcmV0dXJuIGNvcHk7Cit9CisKK2Jvb2wgZ3JwY19ncnBjbGJfc2VydmVybGlzdF9lcXVhbHMoY29uc3QgZ3JwY19ncnBjbGJfc2VydmVybGlzdCAqbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2dycGNsYl9zZXJ2ZXJsaXN0ICpyaHMpIHsKKyAgaWYgKChsaHMgPT0gTlVMTCkgfHwgKHJocyA9PSBOVUxMKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAobGhzLT5udW1fc2VydmVycyAhPSByaHMtPm51bV9zZXJ2ZXJzKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmIChncnBjX2dycGNsYl9kdXJhdGlvbl9jb21wYXJlKCZsaHMtPmV4cGlyYXRpb25faW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyaHMtPmV4cGlyYXRpb25faW50ZXJ2YWwpICE9IDApIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaHMtPm51bV9zZXJ2ZXJzOyBpKyspIHsKKyAgICBpZiAoIWdycGNfZ3JwY2xiX3NlcnZlcl9lcXVhbHMobGhzLT5zZXJ2ZXJzW2ldLCByaHMtPnNlcnZlcnNbaV0pKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiB0cnVlOworfQorCitib29sIGdycGNfZ3JwY2xiX3NlcnZlcl9lcXVhbHMoY29uc3QgZ3JwY19ncnBjbGJfc2VydmVyICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19ncnBjbGJfc2VydmVyICpyaHMpIHsKKyAgcmV0dXJuIG1lbWNtcChsaHMsIHJocywgc2l6ZW9mKGdycGNfZ3JwY2xiX3NlcnZlcikpID09IDA7Cit9CisKK2ludCBncnBjX2dycGNsYl9kdXJhdGlvbl9jb21wYXJlKGNvbnN0IGdycGNfZ3JwY2xiX2R1cmF0aW9uICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2dycGNsYl9kdXJhdGlvbiAqcmhzKSB7CisgIEdQUl9BU1NFUlQobGhzICYmIHJocyk7CisgIGlmIChsaHMtPmhhc19zZWNvbmRzICYmIHJocy0+aGFzX3NlY29uZHMpIHsKKyAgICBpZiAobGhzLT5zZWNvbmRzIDwgcmhzLT5zZWNvbmRzKSByZXR1cm4gLTE7CisgICAgaWYgKGxocy0+c2Vjb25kcyA+IHJocy0+c2Vjb25kcykgcmV0dXJuIDE7CisgIH0gZWxzZSBpZiAobGhzLT5oYXNfc2Vjb25kcykgeworICAgIHJldHVybiAxOworICB9IGVsc2UgaWYgKHJocy0+aGFzX3NlY29uZHMpIHsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICBHUFJfQVNTRVJUKGxocy0+c2Vjb25kcyA9PSByaHMtPnNlY29uZHMpOworICBpZiAobGhzLT5oYXNfbmFub3MgJiYgcmhzLT5oYXNfbmFub3MpIHsKKyAgICBpZiAobGhzLT5uYW5vcyA8IHJocy0+bmFub3MpIHJldHVybiAtMTsKKyAgICBpZiAobGhzLT5uYW5vcyA+IHJocy0+bmFub3MpIHJldHVybiAxOworICB9IGVsc2UgaWYgKGxocy0+aGFzX25hbm9zKSB7CisgICAgcmV0dXJuIDE7CisgIH0gZWxzZSBpZiAocmhzLT5oYXNfbmFub3MpIHsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICByZXR1cm4gMDsKK30KKwordm9pZCBncnBjX2dycGNsYl9pbml0aWFsX3Jlc3BvbnNlX2Rlc3Ryb3koCisgICAgZ3JwY19ncnBjbGJfaW5pdGlhbF9yZXNwb25zZSAqcmVzcG9uc2UpIHsKICAgZ3ByX2ZyZWUocmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuaCBiL3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmgKaW5kZXggNzFiNTYxNi4uOTcyNmM4NyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuaAorKysgYi9zcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5oCkBAIC00Niw3ICs0Niw3IEBACiAjZGVmaW5lIEdSUENfR1JQQ0xCX1NFUlZJQ0VfTkFNRV9NQVhfTEVOR1RIIDEyOAogCiB0eXBlZGVmIGdycGNfbGJfdjFfTG9hZEJhbGFuY2VSZXF1ZXN0IGdycGNfZ3JwY2xiX3JlcXVlc3Q7Ci10eXBlZGVmIGdycGNfbGJfdjFfTG9hZEJhbGFuY2VSZXNwb25zZSBncnBjX2dycGNsYl9yZXNwb25zZTsKK3R5cGVkZWYgZ3JwY19sYl92MV9Jbml0aWFsTG9hZEJhbGFuY2VSZXNwb25zZSBncnBjX2dycGNsYl9pbml0aWFsX3Jlc3BvbnNlOwogdHlwZWRlZiBncnBjX2xiX3YxX1NlcnZlciBncnBjX2dycGNsYl9zZXJ2ZXI7CiB0eXBlZGVmIGdycGNfbGJfdjFfRHVyYXRpb24gZ3JwY19ncnBjbGJfZHVyYXRpb247CiB0eXBlZGVmIHN0cnVjdCBncnBjX2dycGNsYl9zZXJ2ZXJsaXN0IHsKQEAgLTY0LDE5ICs2NCwzNyBAQAogLyoqIERlc3Ryb3kgXGEgcmVxdWVzdCAqLwogdm9pZCBncnBjX2dycGNsYl9yZXF1ZXN0X2Rlc3Ryb3koZ3JwY19ncnBjbGJfcmVxdWVzdCAqcmVxdWVzdCk7CiAKLS8qKiBQYXJzZSAoaWUsIGRlY29kZSkgdGhlIGJ5dGVzIGluIFxhIGVuY29kZWRfcmVzcG9uc2UgYXMgYSBcYQotICogZ3JwY19ncnBjbGJfcmVzcG9uc2UgKi8KLWdycGNfZ3JwY2xiX3Jlc3BvbnNlICpncnBjX2dycGNsYl9yZXNwb25zZV9wYXJzZShncHJfc2xpY2UgZW5jb2RlZF9yZXNwb25zZSk7CisvKiogUGFyc2UgKGllLCBkZWNvZGUpIHRoZSBieXRlcyBpbiBcYSBlbmNvZGVkX2dycGNfZ3JwY2xiX3Jlc3BvbnNlIGFzIGEgXGEKKyAqIGdycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2UgKi8KK2dycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2UgKmdycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2VfcGFyc2UoCisgICAgZ3ByX3NsaWNlIGVuY29kZWRfZ3JwY19ncnBjbGJfcmVzcG9uc2UpOworCisvKiogUGFyc2UgdGhlIGxpc3Qgb2Ygc2VydmVycyBmcm9tIGFuIGVuY29kZWQgXGEgZ3JwY19ncnBjbGJfcmVzcG9uc2UgKi8KK2dycGNfZ3JwY2xiX3NlcnZlcmxpc3QgKmdycGNfZ3JwY2xiX3Jlc3BvbnNlX3BhcnNlX3NlcnZlcmxpc3QoCisgICAgZ3ByX3NsaWNlIGVuY29kZWRfZ3JwY19ncnBjbGJfcmVzcG9uc2UpOworCisvKiogUmV0dXJuIGEgY29weSBvZiBcYSBzbC4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBcYQorICogZ3JwY19ncnBjbGJfZGVzdHJveV9zZXJ2ZXJsaXN0IG9uIHRoZSByZXR1cm5lZCBjb3B5LiAqLworZ3JwY19ncnBjbGJfc2VydmVybGlzdCAqZ3JwY19ncnBjbGJfc2VydmVybGlzdF9jb3B5KAorICAgIGNvbnN0IGdycGNfZ3JwY2xiX3NlcnZlcmxpc3QgKnNsKTsKKworYm9vbCBncnBjX2dycGNsYl9zZXJ2ZXJsaXN0X2VxdWFscyhjb25zdCBncnBjX2dycGNsYl9zZXJ2ZXJsaXN0ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfZ3JwY2xiX3NlcnZlcmxpc3QgKnJocyk7CisKK2Jvb2wgZ3JwY19ncnBjbGJfc2VydmVyX2VxdWFscyhjb25zdCBncnBjX2dycGNsYl9zZXJ2ZXIgKmxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2dycGNsYl9zZXJ2ZXIgKnJocyk7CiAKIC8qKiBEZXN0cm95IFxhIHNlcnZlcmxpc3QgKi8KIHZvaWQgZ3JwY19ncnBjbGJfZGVzdHJveV9zZXJ2ZXJsaXN0KGdycGNfZ3JwY2xiX3NlcnZlcmxpc3QgKnNlcnZlcmxpc3QpOwogCi0vKiogUGFyc2UgdGhlIGxpc3Qgb2Ygc2VydmVycyBmcm9tIGFuIGVuY29kZWQgXGEgZ3JwY19ncnBjbGJfcmVzcG9uc2UgKi8KLWdycGNfZ3JwY2xiX3NlcnZlcmxpc3QgKmdycGNfZ3JwY2xiX3Jlc3BvbnNlX3BhcnNlX3NlcnZlcmxpc3QoCi0gICAgZ3ByX3NsaWNlIGVuY29kZWRfcmVzcG9uc2UpOworLyoqIENvbXBhcmUgXGEgbGhzIGFnYWluc3QgXGEgcmhzIGFuZCByZXR1cm4gMCBpZiBcYSBsaHMgYW5kIFxhIHJocyBhcmUgZXF1YWwsCisgKiA8IDAgaWYgXGEgbGhzIHJlcHJlc2VudHMgYSBkdXJhdGlvbiBzaG9ydGVyIHRoYW4gXGEgcmhzIGFuZCA+IDAgb3RoZXJ3aXNlICovCitpbnQgZ3JwY19ncnBjbGJfZHVyYXRpb25fY29tcGFyZShjb25zdCBncnBjX2dycGNsYl9kdXJhdGlvbiAqbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19ncnBjbGJfZHVyYXRpb24gKnJocyk7CiAKLS8qKiBEZXN0cm95IFxhIHJlc3BvbnNlICovCi12b2lkIGdycGNfZ3JwY2xiX3Jlc3BvbnNlX2Rlc3Ryb3koZ3JwY19ncnBjbGJfcmVzcG9uc2UgKnJlc3BvbnNlKTsKKy8qKiBEZXN0cm95IFxhIGluaXRpYWxfcmVzcG9uc2UgKi8KK3ZvaWQgZ3JwY19ncnBjbGJfaW5pdGlhbF9yZXNwb25zZV9kZXN0cm95KAorICAgIGdycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2UgKnJlc3BvbnNlKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyBiL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jCmluZGV4IDllNGQzMjYuLmRmMWVhMGUgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jCisrKyBiL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jCkBAIC00Miw0MiArNDIsMTIgQEAKICNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuaCIKICNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuaCIKIAotc3RydWN0IGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnIHsKLSAgZ3JwY19sb2FkX3JlcG9ydGluZ19mbiBmbjsKLSAgdm9pZCAqdXNlcl9kYXRhOwotfTsKLQotZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnX2NyZWF0ZSgKLSAgICBncnBjX2xvYWRfcmVwb3J0aW5nX2ZuIGZuLCB2b2lkICp1c2VyX2RhdGEpIHsKLSAgR1BSX0FTU0VSVChmbiAhPSBOVUxMKTsKLSAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmxyYyA9Ci0gICAgICBncHJfbWFsbG9jKHNpemVvZihncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZykpOwotICBscmMtPmZuID0gZm47Ci0gIGxyYy0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwotICByZXR1cm4gbHJjOwotfQotCi1ncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZyAqZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWdfY29weSgKLSAgICBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZyAqc3JjKSB7Ci0gIHJldHVybiBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZ19jcmVhdGUoc3JjLT5mbiwgc3JjLT51c2VyX2RhdGEpOwotfQotCi12b2lkIGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnX2Rlc3Ryb3koZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmxyYykgewotICBncHJfZnJlZShscmMpOwotfQotCi12b2lkIGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnX2NhbGwoCi0gICAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmxyYywKLSAgICBjb25zdCBncnBjX2xvYWRfcmVwb3J0aW5nX2NhbGxfZGF0YSAqY2FsbF9kYXRhKSB7Ci0gIGxyYy0+Zm4oY2FsbF9kYXRhLCBscmMtPnVzZXJfZGF0YSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzX2xvYWRfcmVwb3J0aW5nX2VuYWJsZWQoY29uc3QgZ3JwY19jaGFubmVsX2FyZ3MgKmEpIHsKICAgaWYgKGEgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGEtPm51bV9hcmdzOyBpKyspIHsKICAgICBpZiAoMCA9PSBzdHJjbXAoYS0+YXJnc1tpXS5rZXksIEdSUENfQVJHX0VOQUJMRV9MT0FEX1JFUE9SVElORykpIHsKLSAgICAgIHJldHVybiBhLT5hcmdzW2ldLnR5cGUgPT0gR1JQQ19BUkdfUE9JTlRFUiAmJgotICAgICAgICAgICAgIGEtPmFyZ3NbaV0udmFsdWUucG9pbnRlci5wICE9IE5VTEw7CisgICAgICByZXR1cm4gYS0+YXJnc1tpXS50eXBlID09IEdSUENfQVJHX0lOVEVHRVIgJiYKKyAgICAgICAgICAgICBhLT5hcmdzW2ldLnZhbHVlLmludGVnZXIgIT0gMDsKICAgICB9CiAgIH0KICAgcmV0dXJuIGZhbHNlOwpAQCAtOTQsMzcgKzY0LDE3IEBACiAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBscmRfYXJnX2Rlc3Ryb3kodm9pZCAqcCkgeyBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZ19kZXN0cm95KHApOyB9Ci0KLXN0YXRpYyB2b2lkICpscmRfYXJnX2NvcHkodm9pZCAqcCkgewotICByZXR1cm4gZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWdfY29weShwKTsKLX0KLQotc3RhdGljIGludCBscmRfYXJnX2NtcCh2b2lkICphLCB2b2lkICpiKSB7Ci0gIGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnICpsaHMgPSBhOwotICBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZyAqcmhzID0gYjsKLSAgcmV0dXJuICEobGhzLT5mbiA9PSByaHMtPmZuICYmIGxocy0+dXNlcl9kYXRhID09IHJocy0+dXNlcl9kYXRhKTsKLX0KLQotc3RhdGljIGNvbnN0IGdycGNfYXJnX3BvaW50ZXJfdnRhYmxlIGxyZF9wdHJfdnRhYmxlID0gewotICAgIGxyZF9hcmdfY29weSwgbHJkX2FyZ19kZXN0cm95LCBscmRfYXJnX2NtcH07Ci0KLWdycGNfYXJnIGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnX2NyZWF0ZV9hcmcoCi0gICAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmxyYykgeworZ3JwY19hcmcgZ3JwY19sb2FkX3JlcG9ydGluZ19lbmFibGVfYXJnKCkgewogICBncnBjX2FyZyBhcmc7Ci0gIGFyZy50eXBlID0gR1JQQ19BUkdfUE9JTlRFUjsKKyAgYXJnLnR5cGUgPSBHUlBDX0FSR19JTlRFR0VSOwogICBhcmcua2V5ID0gR1JQQ19BUkdfRU5BQkxFX0xPQURfUkVQT1JUSU5HOwotICBhcmcudmFsdWUucG9pbnRlci5wID0gbHJjOwotICBhcmcudmFsdWUucG9pbnRlci52dGFibGUgPSAmbHJkX3B0cl92dGFibGU7CisgIGFyZy52YWx1ZS5pbnRlZ2VyID0gMTsKICAgcmV0dXJuIGFyZzsKIH0KIAogLyogUGx1Z2luIHJlZ2lzdHJhdGlvbiAqLwogCiB2b2lkIGdycGNfbG9hZF9yZXBvcnRpbmdfcGx1Z2luX2luaXQodm9pZCkgewotICBncnBjX2NoYW5uZWxfaW5pdF9yZWdpc3Rlcl9zdGFnZShHUlBDX0NMSUVOVF9DSEFOTkVMLCBJTlRfTUFYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXliZV9hZGRfbG9hZF9yZXBvcnRpbmdfZmlsdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSZncnBjX2xvYWRfcmVwb3J0aW5nX2ZpbHRlcik7CiAgIGdycGNfY2hhbm5lbF9pbml0X3JlZ2lzdGVyX3N0YWdlKEdSUENfU0VSVkVSX0NIQU5ORUwsIElOVF9NQVgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlX2FkZF9sb2FkX3JlcG9ydGluZ19maWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopJmdycGNfbG9hZF9yZXBvcnRpbmdfZmlsdGVyKTsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5oIGIvc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgKaW5kZXggMzE2Y2Q4OS4uZTM3ODE3ZCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgKKysrIGIvc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgKQEAgLTM0LDQyICszNCw0NyBAQAogI2lmbmRlZiBHUlBDX0NPUkVfRVhUX0xPQURfUkVQT1JUSU5HX0xPQURfUkVQT1JUSU5HX0gKICNkZWZpbmUgR1JQQ19DT1JFX0VYVF9MT0FEX1JFUE9SVElOR19MT0FEX1JFUE9SVElOR19ICiAKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvaW9tZ3IvY2xvc3VyZS5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuaCIKKyNpbmNsdWRlIDxncnBjL2ltcGwvY29kZWdlbi9ncnBjX3R5cGVzLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oIgogCi10eXBlZGVmIHN0cnVjdCBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZyBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZzsKKy8qKiBNZXRhZGF0YSBrZXkgZm9yIGluaXRpYWwgbWV0YWRhdGEgY29taW5nIGZyb20gY2xpZW50cyAqLworLyogVE9ETyhkZ3EpOiBjaGFuZ2UgdG8gdGhlIGZpbmFsIHZhbHVlIFRCRCAqLworI2RlZmluZSBHUlBDX0xPQURfUkVQT1JUSU5HX0lOSVRJQUxfTURfS0VZICJsb2FkLXJlcG9ydGluZy1pbml0aWFsIgogCi0vKiogQ2FsbCBpbmZvcm1hdGlvbiB0byBiZSBwYXNzZWQgdG8gdGhlIHByb3ZpZGVkIGxvYWQgcmVwb3J0aW5nIGZ1bmN0aW9uIHVwb24KLSAqIGNvbXBsZXRpb24gb2YgdGhlIGNhbGwgKi8KKy8qKiBNZXRhZGF0YSBrZXkgZm9yIHRyYWlsaW5nIG1ldGFkYXRhIGZyb20gc2VydmVycyAqLworLyogVE9ETyhkZ3EpOiBjaGFuZ2UgdG8gdGhlIGZpbmFsIHZhbHVlIFRCRCAqLworI2RlZmluZSBHUlBDX0xPQURfUkVQT1JUSU5HX1RSQUlMSU5HX01EX0tFWSAibG9hZC1yZXBvcnRpbmctdHJhaWxpbmciCisKKy8qKiBJZGVudGlmaWVycyBmb3IgdGhlIGludm9jYXRpb24gcG9pbnQgb2YgdGhlIHVzZXJzIExSIGNhbGxiYWNrICovCit0eXBlZGVmIGVudW0gZ3JwY19sb2FkX3JlcG9ydGluZ19zb3VyY2UgeworICBHUlBDX0xSX1BPSU5UX1VOS05PV04gPSAwLAorICBHUlBDX0xSX1BPSU5UX0NIQU5ORUxfQ1JFQVRJT04sCisgIEdSUENfTFJfUE9JTlRfQ0hBTk5FTF9ERVNUUlVDVElPTiwKKyAgR1JQQ19MUl9QT0lOVF9DQUxMX0NSRUFUSU9OLAorICBHUlBDX0xSX1BPSU5UX0NBTExfREVTVFJVQ1RJT04KK30gZ3JwY19sb2FkX3JlcG9ydGluZ19zb3VyY2U7CisKKy8qKiBDYWxsIGluZm9ybWF0aW9uIHRvIGJlIHBhc3NlZCB0byB0aGUgcHJvdmlkZWQgTFIgY2FsbGJhY2suICovCiB0eXBlZGVmIHN0cnVjdCBncnBjX2xvYWRfcmVwb3J0aW5nX2NhbGxfZGF0YSB7Ci0gIGNvbnN0IGdycGNfY2FsbF9zdGF0cyAqc3RhdHM7ICAgLyoqPCBTdGF0cyBmb3IgdGhlIGNhbGwgKi8KLSAgY29uc3QgY2hhciAqdHJhaWxpbmdfbWRfc3RyaW5nOyAvKio8IExSIHRyYWlsaW5nIG1ldGFkYXRhIGluZm8gKi8KKyAgY29uc3QgZ3JwY19sb2FkX3JlcG9ydGluZ19zb3VyY2Ugc291cmNlOyAvKio8IHBvaW50IG9mIGxhc3QgZGF0YSB1cGRhdGUuICovCisKKyAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY2hhbm5lbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRhdGEgKi8KKyAgaW50cHRyX3QgY2hhbm5lbF9pZDsKKworICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjYWxsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGF0YS4gSWYgdGhlIGNhbGwKKyAgICogaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQsIGl0J2xsIGhhdmUgYSB2YWx1ZSBvZiB6ZXJvLiAqLworICBpbnRwdHJfdCBjYWxsX2lkOworCisgIC8qKiBPbmx5IHZhbGlkIHdoZW4gXGEgc291cmNlIGlzIFxhIEdSUENfTFJfUE9JTlRfQ0FMTF9ERVNUUlVDVElPTiwgdGhhdCBpcywKKyAgICogb25jZSB0aGUgY2FsbCBoYXMgY29tcGxldGVkICovCisgIGNvbnN0IGdycGNfY2FsbF9maW5hbF9pbmZvICpmaW5hbF9pbmZvOworCisgIGNvbnN0IGNoYXIgKmluaXRpYWxfbWRfc3RyaW5nOyAgLyoqPCB2YWx1ZSBzdHJpbmcgZm9yIExSJ3MgaW5pdGlhbCBtZCBrZXkgKi8KKyAgY29uc3QgY2hhciAqdHJhaWxpbmdfbWRfc3RyaW5nOyAvKio8IHZhbHVlIHN0cmluZyBmb3IgTFIncyB0cmFpbGluZyBtZCBrZXkgKi8KKyAgY29uc3QgY2hhciAqbWV0aG9kX25hbWU7ICAgICAgICAvKio8IENvcnJlc3BvbmRzIHRvIDpwYXRoIGhlYWRlciAqLwogfSBncnBjX2xvYWRfcmVwb3J0aW5nX2NhbGxfZGF0YTsKIAotLyoqIEN1c3RvbSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYnkgdGhlIGxvYWQgcmVwb3J0aW5nIGZpbHRlci4gKi8KLXR5cGVkZWYgdm9pZCAoKmdycGNfbG9hZF9yZXBvcnRpbmdfZm4pKAotICAgIGNvbnN0IGdycGNfbG9hZF9yZXBvcnRpbmdfY2FsbF9kYXRhICpjYWxsX2RhdGEsIHZvaWQgKnVzZXJfZGF0YSk7Ci0KLS8qKiBSZWdpc3RlciBcYSBmbiBhcyB0aGUgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCBieSB0aGUgbG9hZCByZXBvcnRpbmcgZmlsdGVyLgotICogXGEgZm4gd2lsbCBiZSBpbnZva2VkIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGF0IHRoZSBlbmQgb2YgdGhlIGNhbGwuCi0gKgotICogRm9yIHRoZSBmaXJzdCBpbnZvY2F0aW9uLCBcYSBmbidzIGZpcnN0IGFyZ3VtZW50Ci0gKiAoZ3JwY19sb2FkX3JlcG9ydGluZ19jYWxsX2RhdGEqKSB3aWxsIGJlIE5VTEwuIFxhIHVzZXJfZGF0YSBpcyBhbHdheXMgcGFzc2VkCi0gKiBhcy1pcy4gKi8KLWdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnICpncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZ19jcmVhdGUoCi0gICAgZ3JwY19sb2FkX3JlcG9ydGluZ19mbiBmbiwgdm9pZCAqdXNlcl9kYXRhKTsKLQotZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnX2NvcHkoCi0gICAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKnNyYyk7Ci0KLXZvaWQgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWdfZGVzdHJveShncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZyAqbHJjKTsKLQotLyoqIEludm9rZSB0aGUgZnVuY3Rpb24gcmVnaXN0ZXJlZCBieSBcYSBncnBjX2xvYWRfcmVwb3J0aW5nX2luaXQuICovCi12b2lkIGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnX2NhbGwoCi0gICAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmxyYywKLSAgICBjb25zdCBncnBjX2xvYWRfcmVwb3J0aW5nX2NhbGxfZGF0YSAqY2FsbF9kYXRhKTsKLQogLyoqIFJldHVybiBhIFxhIGdycGNfYXJnIGVuYWJsaW5nIGxvYWQgcmVwb3J0aW5nICovCi1ncnBjX2FyZyBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZ19jcmVhdGVfYXJnKGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnICpscmMpOworZ3JwY19hcmcgZ3JwY19sb2FkX3JlcG9ydGluZ19lbmFibGVfYXJnKCk7CiAKICNlbmRpZiAvKiBHUlBDX0NPUkVfRVhUX0xPQURfUkVQT1JUSU5HX0xPQURfUkVQT1JUSU5HX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYyBiL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYwppbmRleCBmMzcyZjg4Li4zOTRmMGNiIDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMKKysrIGIvc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5jCkBAIC0zMSw2ICszMSw3IEBACiAgKgogICovCiAKKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N0cmluZ191dGlsLmg+CiAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KQEAgLTQyLDM4ICs0MywxMTIgQEAKICNpbmNsdWRlICJzcmMvY29yZS9saWIvcHJvZmlsaW5nL3RpbWVycy5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgiCiAKLXR5cGVkZWYgc3RydWN0IGNhbGxfZGF0YSB7IGNvbnN0IGNoYXIgKnRyYWlsaW5nX21kX3N0cmluZzsgfSBjYWxsX2RhdGE7Cit0eXBlZGVmIHN0cnVjdCBjYWxsX2RhdGEgeworICBpbnRwdHJfdCBpZDsgLyoqPCBhbiBpZCB1bmlxdWUgdG8gdGhlIGNhbGwgKi8KKyAgY2hhciAqdHJhaWxpbmdfbWRfc3RyaW5nOworICBjaGFyICppbml0aWFsX21kX3N0cmluZzsKKyAgY29uc3QgY2hhciAqc2VydmljZV9tZXRob2Q7CisKKyAgLyogc3RvcmVzIHRoZSByZWN2X2luaXRpYWxfbWV0YWRhdGEgb3AncyByZWFkeSBjbG9zdXJlLCB3aGljaCB3ZSB3cmFwIHdpdGggb3VyCisgICAqIG93biAob25faW5pdGlhbF9tZF9yZWFkeSkgaW4gb3JkZXIgdG8gY2FwdHVyZSB0aGUgaW5jb21pbmcgaW5pdGlhbCBtZXRhZGF0YQorICAgKiAqLworICBncnBjX2Nsb3N1cmUgKm9wc19yZWN2X2luaXRpYWxfbWV0YWRhdGFfcmVhZHk7CisKKyAgLyogdG8gZ2V0IG5vdGlmaWVkIG9mIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIGluY29taW5nIGluaXRpYWwgbWV0YWRhdGEuICovCisgIGdycGNfY2xvc3VyZSBvbl9pbml0aWFsX21kX3JlYWR5OworICBncnBjX21ldGFkYXRhX2JhdGNoICpyZWN2X2luaXRpYWxfbWV0YWRhdGE7Cit9IGNhbGxfZGF0YTsKKwogdHlwZWRlZiBzdHJ1Y3QgY2hhbm5lbF9kYXRhIHsKLSAgZ3ByX211IG11OwotICBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZyAqbHJjOworICBpbnRwdHJfdCBpZDsgLyoqPCBhbiBpZCB1bmlxdWUgdG8gdGhlIGNoYW5uZWwgKi8KIH0gY2hhbm5lbF9kYXRhOwogCi1zdGF0aWMgdm9pZCBpbnZva2VfbHJfZm5fbG9ja2VkKGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnICpscmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbG9hZF9yZXBvcnRpbmdfY2FsbF9kYXRhICpscl9jYWxsX2RhdGEpIHsKLSAgR1BSX1RJTUVSX0JFR0lOKCJsb2FkX3JlcG9ydGluZ19jb25maWdfZm4iLCAwKTsKLSAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWdfY2FsbChscmMsIGxyX2NhbGxfZGF0YSk7Ci0gIEdQUl9USU1FUl9FTkQoImxvYWRfcmVwb3J0aW5nX2NvbmZpZ19mbiIsIDApOwordHlwZWRlZiBzdHJ1Y3QgeworICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbTsKKyAgZ3JwY19leGVjX2N0eCAqZXhlY19jdHg7Cit9IHJlY3ZfbWRfZmlsdGVyX2FyZ3M7CisKK3N0YXRpYyBncnBjX21kZWxlbSAqcmVjdl9tZF9maWx0ZXIodm9pZCAqdXNlcl9kYXRhLCBncnBjX21kZWxlbSAqbWQpIHsKKyAgcmVjdl9tZF9maWx0ZXJfYXJncyAqYSA9IHVzZXJfZGF0YTsKKyAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0gPSBhLT5lbGVtOworICBjYWxsX2RhdGEgKmNhbGxkID0gZWxlbS0+Y2FsbF9kYXRhOworCisgIGlmIChtZC0+a2V5ID09IEdSUENfTURTVFJfUEFUSCkgeworICAgIGNhbGxkLT5zZXJ2aWNlX21ldGhvZCA9IGdycGNfbWRzdHJfYXNfY19zdHJpbmcobWQtPnZhbHVlKTsKKyAgfSBlbHNlIGlmIChtZC0+a2V5ID09IEdSUENfTURTVFJfTE9BRF9SRVBPUlRJTkdfSU5JVElBTCkgeworICAgIGNhbGxkLT5pbml0aWFsX21kX3N0cmluZyA9IGdwcl9zdHJkdXAoZ3JwY19tZHN0cl9hc19jX3N0cmluZyhtZC0+dmFsdWUpKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBtZDsKK30KKworc3RhdGljIHZvaWQgb25faW5pdGlhbF9tZF9yZWFkeShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Vycm9yICplcnIpIHsKKyAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0gPSB1c2VyX2RhdGE7CisgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CisKKyAgaWYgKGVyciA9PSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICByZWN2X21kX2ZpbHRlcl9hcmdzIGE7CisgICAgYS5lbGVtID0gZWxlbTsKKyAgICBhLmV4ZWNfY3R4ID0gZXhlY19jdHg7CisgICAgZ3JwY19tZXRhZGF0YV9iYXRjaF9maWx0ZXIoY2FsbGQtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YSwgcmVjdl9tZF9maWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmEpOworICAgIGlmIChjYWxsZC0+c2VydmljZV9tZXRob2QgPT0gTlVMTCkgeworICAgICAgZXJyID0KKyAgICAgICAgICBncnBjX2Vycm9yX2FkZF9jaGlsZChlcnIsIEdSUENfRVJST1JfQ1JFQVRFKCJNaXNzaW5nIDpwYXRoIGhlYWRlciIpKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgR1JQQ19FUlJPUl9SRUYoZXJyKTsKKyAgfQorICBjYWxsZC0+b3BzX3JlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeS0+Y2IoCisgICAgICBleGVjX2N0eCwgY2FsbGQtPm9wc19yZWN2X2luaXRpYWxfbWV0YWRhdGFfcmVhZHktPmNiX2FyZywgZXJyKTsKKyAgR1JQQ19FUlJPUl9VTlJFRihlcnIpOwogfQogCiAvKiBDb25zdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCi1zdGF0aWMgdm9pZCBpbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CitzdGF0aWMgZ3JwY19lcnJvciAqaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgewogICBjYWxsX2RhdGEgKmNhbGxkID0gZWxlbS0+Y2FsbF9kYXRhOwogICBtZW1zZXQoY2FsbGQsIDAsIHNpemVvZihjYWxsX2RhdGEpKTsKKworICBjYWxsZC0+aWQgPSAoaW50cHRyX3QpYXJncy0+Y2FsbF9zdGFjazsKKyAgZ3JwY19jbG9zdXJlX2luaXQoJmNhbGxkLT5vbl9pbml0aWFsX21kX3JlYWR5LCBvbl9pbml0aWFsX21kX3JlYWR5LCBlbGVtKTsKKworICAvKiBUT0RPKGRncSk6IGRvIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhCisgIGNoYW5uZWxfZGF0YSAqY2hhbmQgPSBlbGVtLT5jaGFubmVsX2RhdGE7CisgIGdycGNfbG9hZF9yZXBvcnRpbmdfY2FsbF9kYXRhIGxyX2NhbGxfZGF0YSA9IHtHUlBDX0xSX1BPSU5UX0NBTExfQ1JFQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50cHRyX3QpY2hhbmQtPmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludHB0cl90KWNhbGxkLT5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEx9OworICAqLworCisgIHJldHVybiBHUlBDX0VSUk9SX05PTkU7CiB9CiAKIC8qIERlc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwogc3RhdGljIHZvaWQgZGVzdHJveV9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX3N0YXRzICpzdGF0cywgdm9pZCAqaWdub3JlZCkgewotICBjaGFubmVsX2RhdGEgKmNoYW5kID0gZWxlbS0+Y2hhbm5lbF9kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX2ZpbmFsX2luZm8gKmZpbmFsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppZ25vcmVkKSB7CiAgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAKLSAgZ3JwY19sb2FkX3JlcG9ydGluZ19jYWxsX2RhdGEgbHJfY2FsbF9kYXRhID0ge3N0YXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGQtPnRyYWlsaW5nX21kX3N0cmluZ307CisgIC8qIFRPRE8oZGdxKTogZG8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEKKyAgY2hhbm5lbF9kYXRhICpjaGFuZCA9IGVsZW0tPmNoYW5uZWxfZGF0YTsKKyAgZ3JwY19sb2FkX3JlcG9ydGluZ19jYWxsX2RhdGEgbHJfY2FsbF9kYXRhID0ge0dSUENfTFJfUE9JTlRfQ0FMTF9ERVNUUlVDVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRwdHJfdCljaGFuZC0+aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50cHRyX3QpY2FsbGQtPmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxkLT5pbml0aWFsX21kX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxkLT50cmFpbGluZ19tZF9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZC0+c2VydmljZV9tZXRob2R9OworICAqLwogCi0gIGdwcl9tdV9sb2NrKCZjaGFuZC0+bXUpOwotICBpbnZva2VfbHJfZm5fbG9ja2VkKGNoYW5kLT5scmMsICZscl9jYWxsX2RhdGEpOwotICBncHJfbXVfdW5sb2NrKCZjaGFuZC0+bXUpOworICBncHJfZnJlZShjYWxsZC0+aW5pdGlhbF9tZF9zdHJpbmcpOworICBncHJfZnJlZShjYWxsZC0+dHJhaWxpbmdfbWRfc3RyaW5nKTsKIH0KIAogLyogQ29uc3RydWN0b3IgZm9yIGNoYW5uZWxfZGF0YSAqLwpAQCAtODUsMzcgKzE2MCw0MCBAQAogICBjaGFubmVsX2RhdGEgKmNoYW5kID0gZWxlbS0+Y2hhbm5lbF9kYXRhOwogICBtZW1zZXQoY2hhbmQsIDAsIHNpemVvZihjaGFubmVsX2RhdGEpKTsKIAotICBncHJfbXVfaW5pdCgmY2hhbmQtPm11KTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzLT5jaGFubmVsX2FyZ3MtPm51bV9hcmdzOyBpKyspIHsKLSAgICBpZiAoMCA9PSBzdHJjbXAoYXJncy0+Y2hhbm5lbF9hcmdzLT5hcmdzW2ldLmtleSwKLSAgICAgICAgICAgICAgICAgICAgR1JQQ19BUkdfRU5BQkxFX0xPQURfUkVQT1JUSU5HKSkgewotICAgICAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmFyZ19scmMgPQotICAgICAgICAgIGFyZ3MtPmNoYW5uZWxfYXJncy0+YXJnc1tpXS52YWx1ZS5wb2ludGVyLnA7Ci0gICAgICBjaGFuZC0+bHJjID0gZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWdfY29weShhcmdfbHJjKTsKLSAgICAgIEdQUl9BU1NFUlQoY2hhbmQtPmxyYyAhPSBOVUxMKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotICBHUFJfQVNTRVJUKGNoYW5kLT5scmMgIT0gTlVMTCk7IC8qIGFyZyBhY3R1YWxseSBmb3VuZCAqLworICBjaGFuZC0+aWQgPSAoaW50cHRyX3QpYXJncy0+Y2hhbm5lbF9zdGFjazsKIAotICBncHJfbXVfbG9jaygmY2hhbmQtPm11KTsKLSAgaW52b2tlX2xyX2ZuX2xvY2tlZChjaGFuZC0+bHJjLCBOVUxMKTsKLSAgZ3ByX211X3VubG9jaygmY2hhbmQtPm11KTsKKyAgLyogVE9ETyhkZ3EpOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgZGF0YQorICBncnBjX2xvYWRfcmVwb3J0aW5nX2NhbGxfZGF0YSBscl9jYWxsX2RhdGEgPSB7R1JQQ19MUl9QT0lOVF9DSEFOTkVMX0NSRUFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludHB0cl90KWNoYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEx9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIH0KIAogLyogRGVzdHJ1Y3RvciBmb3IgY2hhbm5lbCBkYXRhICovCiBzdGF0aWMgdm9pZCBkZXN0cm95X2NoYW5uZWxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9lbGVtZW50ICplbGVtKSB7CisgIC8qIFRPRE8oZGdxKTogZG8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEKICAgY2hhbm5lbF9kYXRhICpjaGFuZCA9IGVsZW0tPmNoYW5uZWxfZGF0YTsKLSAgZ3ByX211X2Rlc3Ryb3koJmNoYW5kLT5tdSk7Ci0gIGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnX2Rlc3Ryb3koY2hhbmQtPmxyYyk7CisgIGdycGNfbG9hZF9yZXBvcnRpbmdfY2FsbF9kYXRhIGxyX2NhbGxfZGF0YSA9IHsKKyAgICAgIEdSUENfTFJfUE9JTlRfQ0hBTk5FTF9ERVNUUlVDVElPTiwKKyAgICAgIChpbnRwdHJfdCljaGFuZC0+aWQsCisgICAgICAwLAorICAgICAgTlVMTCwKKyAgICAgIE5VTEwsCisgICAgICBOVUxMLAorICAgICAgTlVMTH07CisgICovCiB9CiAKIHN0YXRpYyBncnBjX21kZWxlbSAqbHJfdHJhaWxpbmdfbWRfZmlsdGVyKHZvaWQgKnVzZXJfZGF0YSwgZ3JwY19tZGVsZW0gKm1kKSB7CiAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtID0gdXNlcl9kYXRhOwogICBjYWxsX2RhdGEgKmNhbGxkID0gZWxlbS0+Y2FsbF9kYXRhOwogCi0gIGlmIChtZC0+a2V5ID09IEdSUENfTURTVFJfTE9BRF9SRVBPUlRJTkcpIHsKKyAgaWYgKG1kLT5rZXkgPT0gR1JQQ19NRFNUUl9MT0FEX1JFUE9SVElOR19UUkFJTElORykgewogICAgIGNhbGxkLT50cmFpbGluZ19tZF9zdHJpbmcgPSBncHJfc3RyZHVwKGdycGNfbWRzdHJfYXNfY19zdHJpbmcobWQtPnZhbHVlKSk7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KQEAgLTEyNyw4ICsyMDUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfdHJhbnNwb3J0X3N0cmVhbV9vcCAqb3ApIHsKICAgR1BSX1RJTUVSX0JFR0lOKCJscl9zdGFydF90cmFuc3BvcnRfc3RyZWFtX29wIiwgMCk7CisgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAKLSAgaWYgKG9wLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhKSB7CisgIGlmIChvcC0+cmVjdl9pbml0aWFsX21ldGFkYXRhKSB7CisgICAgY2FsbGQtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YSA9IG9wLT5yZWN2X2luaXRpYWxfbWV0YWRhdGE7CisgICAgLyogc3Vic3RpdHV0ZSBvdXIgY2FsbGJhY2sgZm9yIHRoZSBoaWdoZXIgY2FsbGJhY2sgKi8KKyAgICBjYWxsZC0+b3BzX3JlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeSA9IG9wLT5yZWN2X2luaXRpYWxfbWV0YWRhdGFfcmVhZHk7CisgICAgb3AtPnJlY3ZfaW5pdGlhbF9tZXRhZGF0YV9yZWFkeSA9ICZjYWxsZC0+b25faW5pdGlhbF9tZF9yZWFkeTsKKyAgfSBlbHNlIGlmIChvcC0+c2VuZF90cmFpbGluZ19tZXRhZGF0YSkgewogICAgIGdycGNfbWV0YWRhdGFfYmF0Y2hfZmlsdGVyKG9wLT5zZW5kX3RyYWlsaW5nX21ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxyX3RyYWlsaW5nX21kX2ZpbHRlciwgZWxlbSk7CiAgIH0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCBiL3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaAppbmRleCBmNjljZDZmLi4xNjBlZDMyIDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmgKKysrIGIvc3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaWZuZGVmIEdSUENfQ09SRV9FWFRfTE9BRF9SRVBPUlRJTkdfTE9BRF9SRVBPUlRJTkdfRklMVEVSX0gKICNkZWZpbmUgR1JQQ19DT1JFX0VYVF9MT0FEX1JFUE9SVElOR19MT0FEX1JFUE9SVElOR19GSUxURVJfSAogCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oIgogCiBleHRlcm4gY29uc3QgZ3JwY19jaGFubmVsX2ZpbHRlciBncnBjX2xvYWRfcmVwb3J0aW5nX2ZpbHRlcjsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMKaW5kZXggNjQ1YTAxMS4uNmY2ODU1NSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L2luc2VjdXJlL2NoYW5uZWxfY3JlYXRlLmMKQEAgLTg4LDcgKzg4LDggQEAKIH0KIAogc3RhdGljIHZvaWQgb25faGFuZHNoYWtlX2RvbmUoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfZW5kcG9pbnQgKmVuZHBvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKmFyZ3MsIHZvaWQgKnVzZXJfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKmFyZ3MsIHZvaWQgKnVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CiAgIGNvbm5lY3RvciAqYyA9IHVzZXJfZGF0YTsKICAgYy0+cmVzdWx0LT50cmFuc3BvcnQgPQogICAgICAgZ3JwY19jcmVhdGVfY2h0dHAyX3RyYW5zcG9ydChleGVjX2N0eCwgYXJncywgZW5kcG9pbnQsIDEpOwpAQCAtOTcsNyArOTgsNyBAQAogICBjLT5yZXN1bHQtPmNoYW5uZWxfYXJncyA9IGFyZ3M7CiAgIGdycGNfY2xvc3VyZSAqbm90aWZ5ID0gYy0+bm90aWZ5OwogICBjLT5ub3RpZnkgPSBOVUxMOwotICBncnBjX2V4ZWNfY3R4X3NjaGVkKGV4ZWNfY3R4LCBub3RpZnksIEdSUENfRVJST1JfTk9ORSwgTlVMTCk7CisgIGdycGNfZXhlY19jdHhfc2NoZWQoZXhlY19jdHgsIG5vdGlmeSwgZXJyb3IsIE5VTEwpOwogfQogCiBzdGF0aWMgdm9pZCBjb25uZWN0ZWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywgZ3JwY19lcnJvciAqZXJyb3IpIHsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvc2VjdXJlL3NlY3VyZV9jaGFubmVsX2NyZWF0ZS5jCmluZGV4IDAxZDk0OWEuLjRlMzNiNmYgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9zZWN1cmUvc2VjdXJlX2NoYW5uZWxfY3JlYXRlLmMKKysrIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvY2xpZW50L3NlY3VyZS9zZWN1cmVfY2hhbm5lbF9jcmVhdGUuYwpAQCAtMTI2LDE1ICsxMjYsMjIgQEAKIH0KIAogc3RhdGljIHZvaWQgb25faGFuZHNoYWtlX2RvbmUoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfZW5kcG9pbnQgKmVuZHBvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKmFyZ3MsIHZvaWQgKnVzZXJfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKmFyZ3MsIHZvaWQgKnVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CiAgIGNvbm5lY3RvciAqYyA9IHVzZXJfZGF0YTsKLSAgLy8gVE9ETyhyb3RoLCBqYm9ldWYpOiBDb252ZXJ0IHNlY3VyaXR5IGNvbm5lY3RvciBoYW5kc2hha2luZyB0byB1c2UgbmV3Ci0gIC8vIGhhbmRzaGFrZSBBUEksIGFuZCB0aGVuIG1vdmUgdGhlIGNvZGUgZnJvbSBvbl9zZWN1cmVfaGFuZHNoYWtlX2RvbmUoKQotICAvLyBpbnRvIHRoaXMgZnVuY3Rpb24uCi0gIGMtPnRtcF9hcmdzID0gYXJnczsKLSAgZ3JwY19jaGFubmVsX3NlY3VyaXR5X2Nvbm5lY3Rvcl9kb19oYW5kc2hha2UoZXhlY19jdHgsIGMtPnNlY3VyaXR5X2Nvbm5lY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQsIGMtPmFyZ3MuZGVhZGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uX3NlY3VyZV9oYW5kc2hha2VfZG9uZSwgYyk7CisgIGlmIChlcnJvciAhPSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICBncnBjX2Nsb3N1cmUgKm5vdGlmeSA9IGMtPm5vdGlmeTsKKyAgICBjLT5ub3RpZnkgPSBOVUxMOworICAgIGdycGNfZXhlY19jdHhfc2NoZWQoZXhlY19jdHgsIG5vdGlmeSwgZXJyb3IsIE5VTEwpOworICB9IGVsc2UgeworICAgIC8vIFRPRE8ocm90aCwgamJvZXVmKTogQ29udmVydCBzZWN1cml0eSBjb25uZWN0b3IgaGFuZHNoYWtpbmcgdG8gdXNlIG5ldworICAgIC8vIGhhbmRzaGFrZSBBUEksIGFuZCB0aGVuIG1vdmUgdGhlIGNvZGUgZnJvbSBvbl9zZWN1cmVfaGFuZHNoYWtlX2RvbmUoKQorICAgIC8vIGludG8gdGhpcyBmdW5jdGlvbi4KKyAgICBjLT50bXBfYXJncyA9IGFyZ3M7CisgICAgZ3JwY19jaGFubmVsX3NlY3VyaXR5X2Nvbm5lY3Rvcl9kb19oYW5kc2hha2UoCisgICAgICAgIGV4ZWNfY3R4LCBjLT5zZWN1cml0eV9jb25uZWN0b3IsIGVuZHBvaW50LCBjLT5hcmdzLmRlYWRsaW5lLAorICAgICAgICBvbl9zZWN1cmVfaGFuZHNoYWtlX2RvbmUsIGMpOworICB9CiB9CiAKIHN0YXRpYyB2b2lkIG9uX2luaXRpYWxfY29ubmVjdF9zdHJpbmdfc2VudChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9pbnNlY3VyZS9zZXJ2ZXJfY2h0dHAyLmMKaW5kZXggYTMzZmM5My4uOWNkMzc0NyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDIuYworKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMi5jCkBAIC01NSwyMSArNTUsMjggQEAKIH0gc2VydmVyX2Nvbm5lY3Rfc3RhdGU7CiAKIHN0YXRpYyB2b2lkIG9uX2hhbmRzaGFrZV9kb25lKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2VuZHBvaW50ICplbmRwb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9hcmdzICphcmdzLCB2b2lkICp1c2VyX2RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9hcmdzICphcmdzLCB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Vycm9yICplcnJvcikgewogICBzZXJ2ZXJfY29ubmVjdF9zdGF0ZSAqc3RhdGUgPSB1c2VyX2RhdGE7Ci0gIC8qCi0gICAqIEJld2FyZSB0aGF0IHRoZSBjYWxsIHRvIGdycGNfY3JlYXRlX2NodHRwMl90cmFuc3BvcnQoKSBoYXMgdG8gaGFwcGVuIGJlZm9yZQotICAgKiBncnBjX3RjcF9zZXJ2ZXJfZGVzdHJveSgpLiBUaGlzIGlzIGZpbmUgaGVyZSwgYnV0IHNpbWlsYXIgY29kZQotICAgKiBhc3luY2hyb25vdXNseSBkb2luZyBhIGhhbmRzaGFrZSBpbnN0ZWFkIG9mIGNhbGxpbmcgZ3JwY190Y3Bfc2VydmVyX3N0YXJ0KCkKLSAgICogKGFzIGluIHNlcnZlcl9zZWN1cmVfY2h0dHAyLmMpIG5lZWRzIHRvIGFkZCBzeW5jaHJvbml6YXRpb24gdG8gYXZvaWQgdGhpcwotICAgKiBjYXNlLgotICAgKi8KLSAgZ3JwY190cmFuc3BvcnQgKnRyYW5zcG9ydCA9Ci0gICAgICBncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KGV4ZWNfY3R4LCBhcmdzLCBlbmRwb2ludCwgMCk7Ci0gIGdycGNfc2VydmVyX3NldHVwX3RyYW5zcG9ydChleGVjX2N0eCwgc3RhdGUtPnNlcnZlciwgdHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmFjY2VwdGluZ19wb2xsc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zZXJ2ZXJfZ2V0X2NoYW5uZWxfYXJncyhzdGF0ZS0+c2VydmVyKSk7Ci0gIGdycGNfY2h0dHAyX3RyYW5zcG9ydF9zdGFydF9yZWFkaW5nKGV4ZWNfY3R4LCB0cmFuc3BvcnQsIE5VTEwsIDApOworICBpZiAoZXJyb3IgIT0gR1JQQ19FUlJPUl9OT05FKSB7CisgICAgY29uc3QgY2hhciAqZXJyb3Jfc3RyID0gZ3JwY19lcnJvcl9zdHJpbmcoZXJyb3IpOworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiSGFuZHNoYWtpbmcgZmFpbGVkOiAlcyIsIGVycm9yX3N0cik7CisgICAgZ3JwY19lcnJvcl9mcmVlX3N0cmluZyhlcnJvcl9zdHIpOworICAgIEdSUENfRVJST1JfVU5SRUYoZXJyb3IpOworICAgIGdycGNfaGFuZHNoYWtlX21hbmFnZXJfc2h1dGRvd24oZXhlY19jdHgsIHN0YXRlLT5oYW5kc2hha2VfbWdyKTsKKyAgfSBlbHNlIHsKKyAgICAvLyBCZXdhcmUgdGhhdCB0aGUgY2FsbCB0byBncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KCkgaGFzIHRvIGhhcHBlbgorICAgIC8vIGJlZm9yZSBncnBjX3RjcF9zZXJ2ZXJfZGVzdHJveSgpLiBUaGlzIGlzIGZpbmUgaGVyZSwgYnV0IHNpbWlsYXIgY29kZQorICAgIC8vIGFzeW5jaHJvbm91c2x5IGRvaW5nIGEgaGFuZHNoYWtlIGluc3RlYWQgb2YgY2FsbGluZworICAgIC8vIGdycGNfdGNwX3NlcnZlcl9zdGFydCgpIChhcyBpbiBzZXJ2ZXJfc2VjdXJlX2NodHRwMi5jKSBuZWVkcyB0byBhZGQKKyAgICAvLyBzeW5jaHJvbml6YXRpb24gdG8gYXZvaWQgdGhpcyBjYXNlLgorICAgIGdycGNfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPQorICAgICAgICBncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KGV4ZWNfY3R4LCBhcmdzLCBlbmRwb2ludCwgMCk7CisgICAgZ3JwY19zZXJ2ZXJfc2V0dXBfdHJhbnNwb3J0KGV4ZWNfY3R4LCBzdGF0ZS0+c2VydmVyLCB0cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5hY2NlcHRpbmdfcG9sbHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19zZXJ2ZXJfZ2V0X2NoYW5uZWxfYXJncyhzdGF0ZS0+c2VydmVyKSk7CisgICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0X3N0YXJ0X3JlYWRpbmcoZXhlY19jdHgsIHRyYW5zcG9ydCwgTlVMTCwgMCk7CisgIH0KICAgLy8gQ2xlYW4gdXAuCiAgIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koYXJncyk7CiAgIGdycGNfaGFuZHNoYWtlX21hbmFnZXJfZGVzdHJveShleGVjX2N0eCwgc3RhdGUtPmhhbmRzaGFrZV9tZ3IpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL3NlY3VyZS9zZXJ2ZXJfc2VjdXJlX2NodHRwMi5jCmluZGV4IDY3ZTVlZTguLmNjZWExNWEgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3NlcnZlci9zZWN1cmUvc2VydmVyX3NlY3VyZV9jaHR0cDIuYworKysgYi9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvc2VjdXJlL3NlcnZlcl9zZWN1cmVfY2h0dHAyLmMKQEAgLTU5LDcgKzU5LDcgQEAKICAgZ3JwY190Y3Bfc2VydmVyICp0Y3A7CiAgIGdycGNfc2VydmVyX3NlY3VyaXR5X2Nvbm5lY3RvciAqc2M7CiAgIGdycGNfc2VydmVyX2NyZWRlbnRpYWxzICpjcmVkczsKLSAgaW50IGlzX3NodXRkb3duOworICBib29sIGlzX3NodXRkb3duOwogICBncHJfbXUgbXU7CiAgIGdwcl9yZWZjb3VudCByZWZjb3VudDsKICAgZ3JwY19jbG9zdXJlIGRlc3Ryb3lfY2xvc3VyZTsKQEAgLTk2LDEyICs5NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZW5kcG9pbnQgKnNlY3VyZV9lbmRwb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2F1dGhfY29udGV4dCAqYXV0aF9jb250ZXh0KSB7CiAgIHNlcnZlcl9zZWN1cmVfY29ubmVjdCAqc3RhdGUgPSBzdGF0ZXA7Ci0gIGdycGNfdHJhbnNwb3J0ICp0cmFuc3BvcnQ7CiAgIGlmIChzdGF0dXMgPT0gR1JQQ19TRUNVUklUWV9PSykgewogICAgIGlmIChzZWN1cmVfZW5kcG9pbnQpIHsKICAgICAgIGdwcl9tdV9sb2NrKCZzdGF0ZS0+c3RhdGUtPm11KTsKICAgICAgIGlmICghc3RhdGUtPnN0YXRlLT5pc19zaHV0ZG93bikgewotICAgICAgICB0cmFuc3BvcnQgPSBncnBjX2NyZWF0ZV9jaHR0cDJfdHJhbnNwb3J0KAorICAgICAgICBncnBjX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gZ3JwY19jcmVhdGVfY2h0dHAyX3RyYW5zcG9ydCgKICAgICAgICAgICAgIGV4ZWNfY3R4LCBncnBjX3NlcnZlcl9nZXRfY2hhbm5lbF9hcmdzKHN0YXRlLT5zdGF0ZS0+c2VydmVyKSwKICAgICAgICAgICAgIHNlY3VyZV9lbmRwb2ludCwgMCk7CiAgICAgICAgIGdycGNfYXJnIGFyZ3NfdG9fYWRkWzJdOwpAQCAtMTI5LDEzICsxMjgsMjYgQEAKIH0KIAogc3RhdGljIHZvaWQgb25faGFuZHNoYWtlX2RvbmUoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfZW5kcG9pbnQgKmVuZHBvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKmFyZ3MsIHZvaWQgKnVzZXJfZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKmFyZ3MsIHZvaWQgKnVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CiAgIHNlcnZlcl9zZWN1cmVfY29ubmVjdCAqc3RhdGUgPSB1c2VyX2RhdGE7CisgIGlmIChlcnJvciAhPSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICBjb25zdCBjaGFyICplcnJvcl9zdHIgPSBncnBjX2Vycm9yX3N0cmluZyhlcnJvcik7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJIYW5kc2hha2luZyBmYWlsZWQ6ICVzIiwgZXJyb3Jfc3RyKTsKKyAgICBncnBjX2Vycm9yX2ZyZWVfc3RyaW5nKGVycm9yX3N0cik7CisgICAgR1JQQ19FUlJPUl9VTlJFRihlcnJvcik7CisgICAgZ3JwY19oYW5kc2hha2VfbWFuYWdlcl9zaHV0ZG93bihleGVjX2N0eCwgc3RhdGUtPmhhbmRzaGFrZV9tZ3IpOworICAgIGdycGNfaGFuZHNoYWtlX21hbmFnZXJfZGVzdHJveShleGVjX2N0eCwgc3RhdGUtPmhhbmRzaGFrZV9tZ3IpOworICAgIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koYXJncyk7CisgICAgc3RhdGVfdW5yZWYoc3RhdGUtPnN0YXRlKTsKKyAgICBncHJfZnJlZShzdGF0ZSk7CisgICAgcmV0dXJuOworICB9CisgIGdycGNfaGFuZHNoYWtlX21hbmFnZXJfZGVzdHJveShleGVjX2N0eCwgc3RhdGUtPmhhbmRzaGFrZV9tZ3IpOworICBzdGF0ZS0+aGFuZHNoYWtlX21nciA9IE5VTEw7CiAgIC8vIFRPRE8ocm90aCwgamJvZXVmKTogQ29udmVydCBzZWN1cml0eSBjb25uZWN0b3IgaGFuZHNoYWtpbmcgdG8gdXNlIG5ldwogICAvLyBoYW5kc2hha2UgQVBJLCBhbmQgdGhlbiBtb3ZlIHRoZSBjb2RlIGZyb20gb25fc2VjdXJlX2hhbmRzaGFrZV9kb25lKCkKICAgLy8gaW50byB0aGlzIGZ1bmN0aW9uLgotICBncnBjX2hhbmRzaGFrZV9tYW5hZ2VyX2Rlc3Ryb3koZXhlY19jdHgsIHN0YXRlLT5oYW5kc2hha2VfbWdyKTsKLSAgc3RhdGUtPmhhbmRzaGFrZV9tZ3IgPSBOVUxMOwogICBzdGF0ZS0+YXJncyA9IGFyZ3M7CiAgIGdycGNfc2VydmVyX3NlY3VyaXR5X2Nvbm5lY3Rvcl9kb19oYW5kc2hha2UoCiAgICAgICBleGVjX2N0eCwgc3RhdGUtPnN0YXRlLT5zYywgc3RhdGUtPmFjY2VwdG9yLCBlbmRwb2ludCwgc3RhdGUtPmRlYWRsaW5lLApAQCAtMTg3LDcgKzE5OSw3IEBACiAgIHNlcnZlcl9zZWN1cmVfc3RhdGUgKnN0YXRlID0gc3RhdGVwOwogICBncnBjX3RjcF9zZXJ2ZXIgKnRjcDsKICAgZ3ByX211X2xvY2soJnN0YXRlLT5tdSk7Ci0gIHN0YXRlLT5pc19zaHV0ZG93biA9IDE7CisgIHN0YXRlLT5pc19zaHV0ZG93biA9IHRydWU7CiAgIHN0YXRlLT5kZXN0cm95X2NhbGxiYWNrID0gY2FsbGJhY2s7CiAgIHRjcCA9IHN0YXRlLT50Y3A7CiAgIGdwcl9tdV91bmxvY2soJnN0YXRlLT5tdSk7CkBAIC0yNTIsNyArMjY0LDcgQEAKICAgc3RhdGUtPnRjcCA9IHRjcDsKICAgc3RhdGUtPnNjID0gc2M7CiAgIHN0YXRlLT5jcmVkcyA9IGdycGNfc2VydmVyX2NyZWRlbnRpYWxzX3JlZihjcmVkcyk7Ci0gIHN0YXRlLT5pc19zaHV0ZG93biA9IDA7CisgIHN0YXRlLT5pc19zaHV0ZG93biA9IGZhbHNlOwogICBncHJfbXVfaW5pdCgmc3RhdGUtPm11KTsKICAgZ3ByX3JlZl9pbml0KCZzdGF0ZS0+cmVmY291bnQsIDEpOwogCmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuYwppbmRleCBiZThhOGY4Li5kMDUwNDY3IDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvY2h0dHAyX3RyYW5zcG9ydC5jCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC9jaHR0cDJfdHJhbnNwb3J0LmMKQEAgLTIwMDUsNiArMjAwNSw3IEBACiBzdGF0aWMgdm9pZCBwYXJzaW5nX2FjdGlvbihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19lcnJvciAqZXJyb3IpIHsKICAgZ3JwY19jaHR0cDJfdHJhbnNwb3J0ICp0ID0gYXJnOworICBncnBjX2Vycm9yICplcnIgPSBHUlBDX0VSUk9SX05PTkU7CiAgIEdQUl9USU1FUl9CRUdJTigicmVhZGluZ19hY3Rpb24ucGFyc2UiLCAwKTsKICAgc2l6ZV90IGkgPSAwOwogICBncnBjX2Vycm9yICplcnJvcnNbM10gPSB7R1JQQ19FUlJPUl9SRUYoZXJyb3IpLCBHUlBDX0VSUk9SX05PTkUsCkBAIC0yMDEzLDE1ICsyMDE0LDEzIEBACiAgICAgZXJyb3JzWzFdID0gZ3JwY19jaHR0cDJfcGVyZm9ybV9yZWFkKGV4ZWNfY3R4LCAmdC0+cGFyc2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC0+cmVhZF9idWZmZXIuc2xpY2VzW2ldKTsKICAgfTsKLSAgaWYgKGkgIT0gdC0+cmVhZF9idWZmZXIuY291bnQpIHsKKyAgaWYgKGVycm9yc1sxXSA9PSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICBlcnIgPSBHUlBDX0VSUk9SX1JFRihlcnJvcik7CisgIH0gZWxzZSB7CiAgICAgZXJyb3JzWzJdID0gdHJ5X2h0dHBfcGFyc2luZyhleGVjX2N0eCwgdCk7CisgICAgZXJyID0gR1JQQ19FUlJPUl9DUkVBVEVfUkVGRVJFTkNJTkcoIkZhaWxlZCBwYXJzaW5nIEhUVFAvMiIsIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUFJfQVJSQVlfU0laRShlcnJvcnMpKTsKICAgfQotICBncnBjX2Vycm9yICplcnIgPQotICAgICAgZXJyb3JzWzBdID09IEdSUENfRVJST1JfTk9ORSAmJiBlcnJvcnNbMV0gPT0gR1JQQ19FUlJPUl9OT05FICYmCi0gICAgICAgICAgICAgIGVycm9yc1syXSA9PSBHUlBDX0VSUk9SX05PTkUKLSAgICAgICAgICA/IEdSUENfRVJST1JfTk9ORQotICAgICAgICAgIDogR1JQQ19FUlJPUl9DUkVBVEVfUkVGRVJFTkNJTkcoIkZhaWxlZCBwYXJzaW5nIEhUVFAvMiIsIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQUl9BUlJBWV9TSVpFKGVycm9ycykpOwogICBmb3IgKGkgPSAwOyBpIDwgR1BSX0FSUkFZX1NJWkUoZXJyb3JzKTsgaSsrKSB7CiAgICAgR1JQQ19FUlJPUl9VTlJFRihlcnJvcnNbaV0pOwogICB9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvd3JpdGluZy5jIGIvc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L3dyaXRpbmcuYwppbmRleCBlMGQ4NzcyLi44ZjdhMWY1IDEwMDY0NAotLS0gYS9zcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi90cmFuc3BvcnQvd3JpdGluZy5jCisrKyBiL3NyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL3RyYW5zcG9ydC93cml0aW5nLmMKQEAgLTIwMiw2ICsyMDIsNyBAQAogCiAgIEdQUl9USU1FUl9CRUdJTigiZmluYWxpemVfb3V0YnVmIiwgMCk7CiAKKyAgYm9vbCBpc19maXJzdF9kYXRhX2ZyYW1lID0gdHJ1ZTsKICAgd2hpbGUgKAogICAgICAgZ3JwY19jaHR0cDJfbGlzdF9wb3Bfd3JpdGluZ19zdHJlYW0odHJhbnNwb3J0X3dyaXRpbmcsICZzdHJlYW1fd3JpdGluZykpIHsKICAgICB1aW50MzJfdCBtYXhfb3V0Z29pbmcgPQpAQCAtMjY2LDYgKzI2NywxMSBAQAogICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmctPmlkLCAmc3RyZWFtX3dyaXRpbmctPmZsb3dfY29udHJvbGxlZF9idWZmZXIsCiAgICAgICAgICAgICBzZW5kX2J5dGVzLCBpc19sYXN0X2ZyYW1lLCAmc3RyZWFtX3dyaXRpbmctPnN0YXRzLAogICAgICAgICAgICAgJnRyYW5zcG9ydF93cml0aW5nLT5vdXRidWYpOworICAgICAgICBpZiAoaXNfZmlyc3RfZGF0YV9mcmFtZSkgeworICAgICAgICAgIC8qIFRPRE8oZGdxKTogdGhpcyBpcyBhIGhhY2suIEl0J2xsIGJlIGZpeCBpbiBhIGZ1dHVyZSByZWZhY3RvcmluZyAqLworICAgICAgICAgIHN0cmVhbV93cml0aW5nLT5zdGF0cy5kYXRhX2J5dGVzIC09IDU7IC8qIGRpc2NvdW50IGdycGMgZnJhbWluZyAqLworICAgICAgICAgIGlzX2ZpcnN0X2RhdGFfZnJhbWUgPSBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBHUlBDX0NIVFRQMl9GTE9XX0RFQklUX1NUUkVBTSgid3JpdGUiLCB0cmFuc3BvcnRfd3JpdGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3dyaXRpbmcsIG91dGdvaW5nX3dpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9ieXRlcyk7CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmMgYi9zcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmMKaW5kZXggODcxNzVkNy4uOThmMzA0ZiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5jCisrKyBiL3NyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suYwpAQCAtMTU3LDEyICsxNTcsMTMgQEAKICAgfQogfQogCi12b2lkIGdycGNfY2FsbF9zdGFja19pbml0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NoYW5uZWxfc3RhY2sgKmNoYW5uZWxfc3RhY2ssIGludCBpbml0aWFsX3JlZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfaW9tZ3JfY2JfZnVuYyBkZXN0cm95LCB2b2lkICpkZXN0cm95X2FyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2NvbnRleHRfZWxlbWVudCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdHJhbnNwb3J0X3NlcnZlcl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfc3RhY2sgKmNhbGxfc3RhY2spIHsKK2dycGNfZXJyb3IgKmdycGNfY2FsbF9zdGFja19pbml0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX3N0YWNrICpjaGFubmVsX3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaXRpYWxfcmVmcywgZ3JwY19pb21ncl9jYl9mdW5jIGRlc3Ryb3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkZXN0cm95X2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9jb250ZXh0X2VsZW1lbnQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0cmFuc3BvcnRfc2VydmVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfc3RhY2sgKmNhbGxfc3RhY2spIHsKICAgZ3JwY19jaGFubmVsX2VsZW1lbnQgKmNoYW5uZWxfZWxlbXMgPSBDSEFOTkVMX0VMRU1TX0ZST01fU1RBQ0soY2hhbm5lbF9zdGFjayk7CiAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgYXJnczsKICAgc2l6ZV90IGNvdW50ID0gY2hhbm5lbF9zdGFjay0+Y291bnQ7CkBAIC0xNzgsNiArMTc5LDcgQEAKICAgICAgICAgICAgICAgUk9VTkRfVVBfVE9fQUxJR05NRU5UX1NJWkUoY291bnQgKiBzaXplb2YoZ3JwY19jYWxsX2VsZW1lbnQpKTsKIAogICAvKiBpbml0IHBlci1maWx0ZXIgZGF0YSAqLworICBncnBjX2Vycm9yICpmaXJzdF9lcnJvciA9IEdSUENfRVJST1JfTk9ORTsKICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICBhcmdzLmNhbGxfc3RhY2sgPSBjYWxsX3N0YWNrOwogICAgIGFyZ3Muc2VydmVyX3RyYW5zcG9ydF9kYXRhID0gdHJhbnNwb3J0X3NlcnZlcl9kYXRhOwpAQCAtMTg1LDEwICsxODcsMTkgQEAKICAgICBjYWxsX2VsZW1zW2ldLmZpbHRlciA9IGNoYW5uZWxfZWxlbXNbaV0uZmlsdGVyOwogICAgIGNhbGxfZWxlbXNbaV0uY2hhbm5lbF9kYXRhID0gY2hhbm5lbF9lbGVtc1tpXS5jaGFubmVsX2RhdGE7CiAgICAgY2FsbF9lbGVtc1tpXS5jYWxsX2RhdGEgPSB1c2VyX2RhdGE7Ci0gICAgY2FsbF9lbGVtc1tpXS5maWx0ZXItPmluaXRfY2FsbF9lbGVtKGV4ZWNfY3R4LCAmY2FsbF9lbGVtc1tpXSwgJmFyZ3MpOworICAgIGdycGNfZXJyb3IgKmVycm9yID0KKyAgICAgICAgY2FsbF9lbGVtc1tpXS5maWx0ZXItPmluaXRfY2FsbF9lbGVtKGV4ZWNfY3R4LCAmY2FsbF9lbGVtc1tpXSwgJmFyZ3MpOworICAgIGlmIChlcnJvciAhPSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICAgIGlmIChmaXJzdF9lcnJvciA9PSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICAgICAgZmlyc3RfZXJyb3IgPSBlcnJvcjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdSUENfRVJST1JfVU5SRUYoZXJyb3IpOworICAgICAgfQorICAgIH0KICAgICB1c2VyX2RhdGEgKz0KICAgICAgICAgUk9VTkRfVVBfVE9fQUxJR05NRU5UX1NJWkUoY2FsbF9lbGVtc1tpXS5maWx0ZXItPnNpemVvZl9jYWxsX2RhdGEpOwogICB9CisgIHJldHVybiBmaXJzdF9lcnJvcjsKIH0KIAogdm9pZCBncnBjX2NhbGxfc3RhY2tfc2V0X3BvbGxzZXRfb3JfcG9sbHNldF9zZXQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCkBAIC0yMTcsNyArMjI4LDcgQEAKICAgICBncnBjX3BvbGxpbmdfZW50aXR5ICpwb2xsZW50KSB7fQogCiB2b2lkIGdycGNfY2FsbF9zdGFja19kZXN0cm95KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfc3RhY2sgKnN0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfc3RhdHMgKmNhbGxfc3RhdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9maW5hbF9pbmZvICpmaW5hbF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphbmRfZnJlZV9tZW1vcnkpIHsKICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW1zID0gQ0FMTF9FTEVNU19GUk9NX1NUQUNLKHN0YWNrKTsKICAgc2l6ZV90IGNvdW50ID0gc3RhY2stPmNvdW50OwpAQCAtMjI1LDcgKzIzNiw3IEBACiAKICAgLyogZGVzdHJveSBwZXItZmlsdGVyIGRhdGEgKi8KICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICBlbGVtc1tpXS5maWx0ZXItPmRlc3Ryb3lfY2FsbF9lbGVtKGV4ZWNfY3R4LCAmZWxlbXNbaV0sIGNhbGxfc3RhdHMsCisgICAgZWxlbXNbaV0uZmlsdGVyLT5kZXN0cm95X2NhbGxfZWxlbShleGVjX2N0eCwgJmVsZW1zW2ldLCBmaW5hbF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9PSBjb3VudCAtIDEgPyBhbmRfZnJlZV9tZW1vcnkgOiBOVUxMKTsKICAgfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oCmluZGV4IGQ3MmMwMTUuLmVlNjg3MDEgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfc3RhY2suaAorKysgYi9zcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrLmgKQEAgLTc1LDkgKzc1LDE0IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgIGdycGNfdHJhbnNwb3J0X3N0cmVhbV9zdGF0cyB0cmFuc3BvcnRfc3RyZWFtX3N0YXRzOwogICBncHJfdGltZXNwZWMgbGF0ZW5jeTsgLyogRnJvbSBjYWxsIGNyZWF0aW5nIHRvIGVucXVlaW5nIG9mIHJlY2VpdmVkIHN0YXR1cyAqLwotICBncnBjX3N0YXR1c19jb2RlIGZpbmFsX3N0YXR1czsKIH0gZ3JwY19jYWxsX3N0YXRzOwogCisvKiogSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhbGwgdXBvbiBjb21wbGV0aW9uLiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICBncnBjX2NhbGxfc3RhdHMgc3RhdHM7CisgIGdycGNfc3RhdHVzX2NvZGUgZmluYWxfc3RhdHVzOworfSBncnBjX2NhbGxfZmluYWxfaW5mbzsKKwogLyogQ2hhbm5lbCBmaWx0ZXJzIHNwZWNpZnk6CiAgICAxLiB0aGUgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgaW4gdGhlIGNoYW5uZWwgJiBjYWxsICh2aWEgdGhlIHNpemVvZl9YWFgKICAgICAgIG1lbWJlcnMpCkBAIC0xMTAsOCArMTE1LDkgQEAKICAgICAgb24gYSBjbGllbnQ7IGlmIGl0IGlzIG5vbi1OVUxMLCB0aGVuIGl0IHBvaW50cyB0byBtZW1vcnkgb3duZWQgYnkgdGhlCiAgICAgIHRyYW5zcG9ydCBhbmQgaXMgb24gdGhlIHNlcnZlci4gTW9zdCBmaWx0ZXJzIHdhbnQgdG8gaWdub3JlIHRoaXMKICAgICAgYXJndW1lbnQuICovCi0gIHZvaWQgKCppbml0X2NhbGxfZWxlbSkoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpOworICBncnBjX2Vycm9yICooKmluaXRfY2FsbF9lbGVtKShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpOwogICB2b2lkICgqc2V0X3BvbGxzZXRfb3JfcG9sbHNldF9zZXQpKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfcG9sbGluZ19lbnRpdHkgKnBvbGxlbnQpOwpAQCAtMTE5LDE2ICsxMjUsMTcgQEAKICAgICAgVGhlIGZpbHRlciBkb2VzIG5vdCBuZWVkIHRvIGRvIGFueSBjaGFpbmluZy4KICAgICAgVGhlIGJvdHRvbSBmaWx0ZXIgb2YgYSBzdGFjayB3aWxsIGJlIHBhc3NlZCBhIG5vbi1OVUxMIHBvaW50ZXIgdG8KICAgICAgXGEgYW5kX2ZyZWVfbWVtb3J5IHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB0byBncHJfZnJlZSB3aGVuIGRlc3RydWN0aW9uCi0gICAgIGlzIGNvbXBsZXRlLiAqLworICAgICBpcyBjb21wbGV0ZS4gXGEgZmluYWxfaW5mbyBjb250YWlucyBkYXRhIGFib3V0IHRoZSBjb21wbGV0ZWQgY2FsbCwgbWFpbmx5CisgICAgIGZvciByZXBvcnRpbmcgcHVycG9zZXMuICovCiAgIHZvaWQgKCpkZXN0cm95X2NhbGxfZWxlbSkoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9zdGF0cyAqc3RhdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX2ZpbmFsX2luZm8gKmZpbmFsX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYW5kX2ZyZWVfbWVtb3J5KTsKIAogICAvKiBzaXplb2YocGVyIGNoYW5uZWwgZGF0YSkgKi8KICAgc2l6ZV90IHNpemVvZl9jaGFubmVsX2RhdGE7CiAgIC8qIEluaXRpYWxpemUgcGVyLWNoYW5uZWwgZGF0YS4KLSAgICAgZWxlbSBpcyBpbml0aWFsaXplZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGNhbGwsIGFuZCBlbGVtLT5jaGFubmVsX2RhdGEgaXMKLSAgICAgd2hhdCBuZWVkcyBpbml0aWFsaXppbmcuCisgICAgIGVsZW0gaXMgaW5pdGlhbGl6ZWQgYXQgdGhlIGNyZWF0aW5nIG9mIHRoZSBjaGFubmVsLCBhbmQgZWxlbS0+Y2hhbm5lbF9kYXRhCisgICAgIGlzIHdoYXQgbmVlZHMgaW5pdGlhbGl6aW5nLgogICAgICBpc19maXJzdCwgaXNfbGFzdCBkZXNpZ25hdGUgdGhpcyBlbGVtZW50cyBwb3NpdGlvbiBpbiB0aGUgc3RhY2ssIGFuZCBhcmUKICAgICAgdXNlZnVsIGZvciBhc3NlcnRpbmcgY29ycmVjdCBjb25maWd1cmF0aW9uIGJ5IHVwcGVyIGxheWVyIGNvZGUuCiAgICAgIFRoZSBmaWx0ZXIgZG9lcyBub3QgbmVlZCB0byBkbyBhbnkgY2hhaW5pbmcgKi8KQEAgLTIwOSwxMiArMjE2LDEzIEBACiAvKiBJbml0aWFsaXplIGEgY2FsbCBzdGFjayBnaXZlbiBhIGNoYW5uZWwgc3RhY2suIHRyYW5zcG9ydF9zZXJ2ZXJfZGF0YSBpcwogICAgZXhwZWN0ZWQgdG8gYmUgTlVMTCBvbiBhIGNsaWVudCwgb3IgYW4gb3BhcXVlIHRyYW5zcG9ydCBvd25lZCBwb2ludGVyIG9uIHRoZQogICAgc2VydmVyLiAqLwotdm9pZCBncnBjX2NhbGxfc3RhY2tfaW5pdChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX3N0YWNrICpjaGFubmVsX3N0YWNrLCBpbnQgaW5pdGlhbF9yZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2lvbWdyX2NiX2Z1bmMgZGVzdHJveSwgdm9pZCAqZGVzdHJveV9hcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9jb250ZXh0X2VsZW1lbnQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnRyYW5zcG9ydF9zZXJ2ZXJfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX3N0YWNrICpjYWxsX3N0YWNrKTsKK2dycGNfZXJyb3IgKmdycGNfY2FsbF9zdGFja19pbml0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX3N0YWNrICpjaGFubmVsX3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaXRpYWxfcmVmcywgZ3JwY19pb21ncl9jYl9mdW5jIGRlc3Ryb3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkZXN0cm95X2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9jb250ZXh0X2VsZW1lbnQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0cmFuc3BvcnRfc2VydmVyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfc3RhY2sgKmNhbGxfc3RhY2spOwogLyogU2V0IGEgcG9sbHNldCBvciBhIHBvbGxzZXRfc2V0IGZvciBhIGNhbGwgc3RhY2s6IG11c3Qgb2NjdXIgYmVmb3JlIHRoZSBmaXJzdAogICogb3AgaXMgc3RhcnRlZCAqLwogdm9pZCBncnBjX2NhbGxfc3RhY2tfc2V0X3BvbGxzZXRfb3JfcG9sbHNldF9zZXQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCkBAIC0yNDMsNyArMjUxLDcgQEAKIAogLyogRGVzdHJveSBhIGNhbGwgc3RhY2sgKi8KIHZvaWQgZ3JwY19jYWxsX3N0YWNrX2Rlc3Ryb3koZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9zdGFjayAqc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9zdGF0cyAqY2FsbF9zdGF0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX2ZpbmFsX2luZm8gKmZpbmFsX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFuZF9mcmVlX21lbW9yeSk7CiAKIC8qIElnbm9yZSBzZXQgcG9sbHNldHtfc2V0fSAtIHVzZWQgYnkgZmlsdGVycyBpZiB0aGV5IGRvbid0IGNhcmUgYWJvdXQgcG9sbHNldHMKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9jaGFubmVsL2NvbXByZXNzX2ZpbHRlci5jIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvY29tcHJlc3NfZmlsdGVyLmMKaW5kZXggMzJlYmU1My4uMTM0MTgwZSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY29tcHJlc3NfZmlsdGVyLmMKKysrIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvY29tcHJlc3NfZmlsdGVyLmMKQEAgLTI1Niw4ICsyNTYsOSBAQAogfQogCiAvKiBDb25zdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCi1zdGF0aWMgdm9pZCBpbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CitzdGF0aWMgZ3JwY19lcnJvciAqaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgewogICAvKiBncmFiIHBvaW50ZXJzIHRvIG91ciBkYXRhIGZyb20gdGhlIGNhbGwgZWxlbWVudCAqLwogICBjYWxsX2RhdGEgKmNhbGxkID0gZWxlbS0+Y2FsbF9kYXRhOwogCkBAIC0yNjYsMTEgKzI2NywxNCBAQAogICBjYWxsZC0+aGFzX2NvbXByZXNzaW9uX2FsZ29yaXRobSA9IDA7CiAgIGdycGNfY2xvc3VyZV9pbml0KCZjYWxsZC0+Z290X3NsaWNlLCBnb3Rfc2xpY2UsIGVsZW0pOwogICBncnBjX2Nsb3N1cmVfaW5pdCgmY2FsbGQtPnNlbmRfZG9uZSwgc2VuZF9kb25lLCBlbGVtKTsKKworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOwogfQogCiAvKiBEZXN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9zdGF0cyAqc3RhdHMsIHZvaWQgKmlnbm9yZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9maW5hbF9pbmZvICpmaW5hbF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqaWdub3JlZCkgewogICAvKiBncmFiIHBvaW50ZXJzIHRvIG91ciBkYXRhIGZyb20gdGhlIGNhbGwgZWxlbWVudCAqLwogICBjYWxsX2RhdGEgKmNhbGxkID0gZWxlbS0+Y2FsbF9kYXRhOwogICBncHJfc2xpY2VfYnVmZmVyX2Rlc3Ryb3koJmNhbGxkLT5zbGljZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY29ubmVjdGVkX2NoYW5uZWwuYyBiL3NyYy9jb3JlL2xpYi9jaGFubmVsL2Nvbm5lY3RlZF9jaGFubmVsLmMKaW5kZXggMGE3ZDI3YS4uOTE4Mzc5YyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvY29ubmVjdGVkX2NoYW5uZWwuYworKysgYi9zcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5jCkBAIC04MSwxNiArODEsMTYgQEAKIH0KIAogLyogQ29uc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwotc3RhdGljIHZvaWQgaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworc3RhdGljIGdycGNfZXJyb3IgKmluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKICAgY2FsbF9kYXRhICpjYWxsZCA9IGVsZW0tPmNhbGxfZGF0YTsKICAgY2hhbm5lbF9kYXRhICpjaGFuZCA9IGVsZW0tPmNoYW5uZWxfZGF0YTsKLSAgaW50IHI7Ci0KLSAgciA9IGdycGNfdHJhbnNwb3J0X2luaXRfc3RyZWFtKAorICBpbnQgciA9IGdycGNfdHJhbnNwb3J0X2luaXRfc3RyZWFtKAogICAgICAgZXhlY19jdHgsIGNoYW5kLT50cmFuc3BvcnQsIFRSQU5TUE9SVF9TVFJFQU1fRlJPTV9DQUxMX0RBVEEoY2FsbGQpLAogICAgICAgJmFyZ3MtPmNhbGxfc3RhY2stPnJlZmNvdW50LCBhcmdzLT5zZXJ2ZXJfdHJhbnNwb3J0X2RhdGEpOwotICBHUFJfQVNTRVJUKHIgPT0gMCk7CisgIHJldHVybiByID09IDAgPyBHUlBDX0VSUk9SX05PTkUKKyAgICAgICAgICAgICAgICA6IEdSUENfRVJST1JfQ1JFQVRFKCJ0cmFuc3BvcnQgc3RyZWFtIGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRfcG9sbHNldF9vcl9wb2xsc2V0X3NldChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKQEAgLTEwNCw3ICsxMDQsNyBAQAogCiAvKiBEZXN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9zdGF0cyAqc3RhdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfZmluYWxfaW5mbyAqZmluYWxfaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFuZF9mcmVlX21lbW9yeSkgewogICBjYWxsX2RhdGEgKmNhbGxkID0gZWxlbS0+Y2FsbF9kYXRhOwogICBjaGFubmVsX2RhdGEgKmNoYW5kID0gZWxlbS0+Y2hhbm5lbF9kYXRhOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvaGFuZHNoYWtlci5jIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvaGFuZHNoYWtlci5jCmluZGV4IGIzZWUwZWQuLjZjM2NhMTkgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9jaGFubmVsL2hhbmRzaGFrZXIuYworKysgYi9zcmMvY29yZS9saWIvY2hhbm5lbC9oYW5kc2hha2VyLmMKQEAgLTEwMiw4ICsxMDIsOCBAQAogCiBzdGF0aWMgYm9vbCBpc19wb3dlcl9vZl8yKHNpemVfdCBuKSB7IHJldHVybiAobiAmIChuIC0gMSkpID09IDA7IH0KIAotdm9pZCBncnBjX2hhbmRzaGFrZV9tYW5hZ2VyX2FkZChncnBjX2hhbmRzaGFrZXIqIGhhbmRzaGFrZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfaGFuZHNoYWtlX21hbmFnZXIqIG1ncikgewordm9pZCBncnBjX2hhbmRzaGFrZV9tYW5hZ2VyX2FkZChncnBjX2hhbmRzaGFrZV9tYW5hZ2VyKiBtZ3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfaGFuZHNoYWtlciogaGFuZHNoYWtlcikgewogICAvLyBUbyBhdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZWFjaCBoYW5kc2hha2VyIHdlIGFkZCwgd2UgZG91YmxlCiAgIC8vIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXZlcnkgdGltZSB3ZSBuZWVkIG1vcmUuCiAgIHNpemVfdCByZWFsbG9jX2NvdW50ID0gMDsKQEAgLTEzMCw4ICsxMzAsNiBAQAogCiB2b2lkIGdycGNfaGFuZHNoYWtlX21hbmFnZXJfc2h1dGRvd24oZ3JwY19leGVjX2N0eCogZXhlY19jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19oYW5kc2hha2VfbWFuYWdlciogbWdyKSB7Ci0gIC8vIEZJWE1FOiBtYXliZSBjaGVjayB3aGljaCBoYW5kc2hha2VyIGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcywgYW5kCi0gIC8vIG9ubHkgc2h1dCBkb3duIHRoYXQgb25lPwogICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1nci0+Y291bnQ7ICsraSkgewogICAgIGdycGNfaGFuZHNoYWtlcl9zaHV0ZG93bihleGVjX2N0eCwgbWdyLT5oYW5kc2hha2Vyc1tpXSk7CiAgIH0KQEAgLTE0NSwxMCArMTQzLDE4IEBACiAvLyBoYW5kc2hha2VycyB0b2dldGhlci4KIHN0YXRpYyB2b2lkIGNhbGxfbmV4dF9oYW5kc2hha2VyKGdycGNfZXhlY19jdHgqIGV4ZWNfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19lbmRwb2ludCogZW5kcG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NoYW5uZWxfYXJncyogYXJncywgdm9pZCogdXNlcl9kYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NoYW5uZWxfYXJncyogYXJncywgdm9pZCogdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19lcnJvciogZXJyb3IpIHsKICAgZ3JwY19oYW5kc2hha2VfbWFuYWdlciogbWdyID0gdXNlcl9kYXRhOwogICBHUFJfQVNTRVJUKG1nci0+c3RhdGUgIT0gTlVMTCk7CiAgIEdQUl9BU1NFUlQobWdyLT5zdGF0ZS0+aW5kZXggPCBtZ3ItPmNvdW50KTsKKyAgLy8gSWYgd2UgZ290IGFuIGVycm9yLCBza2lwIGFsbCByZW1haW5pbmcgaGFuZHNoYWtlcnMgYW5kIGludm9rZSB0aGUKKyAgLy8gY2FsbGVyLXN1cHBsaWVkIGNhbGxiYWNrIGltbWVkaWF0ZWx5LgorICBpZiAoZXJyb3IgIT0gR1JQQ19FUlJPUl9OT05FKSB7CisgICAgbWdyLT5zdGF0ZS0+ZmluYWxfY2IoZXhlY19jdHgsIGVuZHBvaW50LCBhcmdzLCBtZ3ItPnN0YXRlLT5maW5hbF91c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOworICAgIHJldHVybjsKKyAgfQogICBncnBjX2hhbmRzaGFrZXJfZG9uZV9jYiBjYiA9IGNhbGxfbmV4dF9oYW5kc2hha2VyOwogICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IGhhbmRzaGFrZXIsIHVzZSB0aGUgY2FsbGVyLXN1cHBsaWVkIGNhbGxiYWNrCiAgIC8vIGFuZCB1c2VyX2RhdGEgaW5zdGVhZCBvZiBjaGFpbmluZyBiYWNrIHRvIHRoaXMgZnVuY3Rpb24gYWdhaW4uCkBAIC0xNzcsNyArMTgzLDcgQEAKICAgaWYgKG1nci0+Y291bnQgPT0gMCkgewogICAgIC8vIE5vIGhhbmRzaGFrZXJzIHJlZ2lzdGVyZWQsIHNvIHdlIGp1c3QgaW1tZWRpYXRlbHkgY2FsbCB0aGUgZG9uZQogICAgIC8vIGNhbGxiYWNrIHdpdGggdGhlIHBhc3NlZC1pbiBlbmRwb2ludC4KLSAgICBjYihleGVjX2N0eCwgZW5kcG9pbnQsIGFyZ3NfY29weSwgdXNlcl9kYXRhKTsKKyAgICBjYihleGVjX2N0eCwgZW5kcG9pbnQsIGFyZ3NfY29weSwgdXNlcl9kYXRhLCBHUlBDX0VSUk9SX05PTkUpOwogICB9IGVsc2UgewogICAgIEdQUl9BU1NFUlQobWdyLT5zdGF0ZSA9PSBOVUxMKTsKICAgICBtZ3ItPnN0YXRlID0gZ3ByX21hbGxvYyhzaXplb2Yoc3RydWN0IGdycGNfaGFuZHNoYWtlcl9zdGF0ZSkpOwpAQCAtMTg2LDYgKzE5Miw2IEBACiAgICAgbWdyLT5zdGF0ZS0+YWNjZXB0b3IgPSBhY2NlcHRvcjsKICAgICBtZ3ItPnN0YXRlLT5maW5hbF9jYiA9IGNiOwogICAgIG1nci0+c3RhdGUtPmZpbmFsX3VzZXJfZGF0YSA9IHVzZXJfZGF0YTsKLSAgICBjYWxsX25leHRfaGFuZHNoYWtlcihleGVjX2N0eCwgZW5kcG9pbnQsIGFyZ3NfY29weSwgbWdyKTsKKyAgICBjYWxsX25leHRfaGFuZHNoYWtlcihleGVjX2N0eCwgZW5kcG9pbnQsIGFyZ3NfY29weSwgbWdyLCBHUlBDX0VSUk9SX05PTkUpOwogICB9CiB9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvY2hhbm5lbC9oYW5kc2hha2VyLmggYi9zcmMvY29yZS9saWIvY2hhbm5lbC9oYW5kc2hha2VyLmgKaW5kZXggYjFlOTFkYi4uZGZjNDY5YyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvaGFuZHNoYWtlci5oCisrKyBiL3NyYy9jb3JlL2xpYi9jaGFubmVsL2hhbmRzaGFrZXIuaApAQCAtNjAsNyArNjAsNyBAQAogdHlwZWRlZiB2b2lkICgqZ3JwY19oYW5kc2hha2VyX2RvbmVfY2IpKGdycGNfZXhlY19jdHgqIGV4ZWNfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZW5kcG9pbnQqIGVuZHBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9hcmdzKiBhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHVzZXJfZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogdXNlcl9kYXRhLCBncnBjX2Vycm9yKiBlcnJvcik7CiAKIHN0cnVjdCBncnBjX2hhbmRzaGFrZXJfdnRhYmxlIHsKICAgLy8vIERlc3Ryb3lzIHRoZSBoYW5kc2hha2VyLgpAQCAtMTE1LDkgKzExNSw5IEBACiBncnBjX2hhbmRzaGFrZV9tYW5hZ2VyKiBncnBjX2hhbmRzaGFrZV9tYW5hZ2VyX2NyZWF0ZSgpOwogCiAvLy8gQWRkcyBhIGhhbmRzaGFrZXIgdG8gdGhlIGhhbmRzaGFrZSBtYW5hZ2VyLgotLy8vIFRha2VzIG93bmVyc2hpcCBvZiBcYSBtZ3IuCi12b2lkIGdycGNfaGFuZHNoYWtlX21hbmFnZXJfYWRkKGdycGNfaGFuZHNoYWtlciogaGFuZHNoYWtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19oYW5kc2hha2VfbWFuYWdlciogbWdyKTsKKy8vLyBUYWtlcyBvd25lcnNoaXAgb2YgXGEgaGFuZHNoYWtlci4KK3ZvaWQgZ3JwY19oYW5kc2hha2VfbWFuYWdlcl9hZGQoZ3JwY19oYW5kc2hha2VfbWFuYWdlciogbWdyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2hhbmRzaGFrZXIqIGhhbmRzaGFrZXIpOwogCiAvLy8gRGVzdHJveXMgdGhlIGhhbmRzaGFrZSBtYW5hZ2VyLgogdm9pZCBncnBjX2hhbmRzaGFrZV9tYW5hZ2VyX2Rlc3Ryb3koZ3JwY19leGVjX2N0eCogZXhlY19jdHgsCkBAIC0xMzQsOCArMTM0LDggQEAKIC8vLyBEb2VzIE5PVCB0YWtlIG93bmVyc2hpcCBvZiBcYSBhcmdzLiAgSW5zdGVhZCwgbWFrZXMgYSBjb3B5IGJlZm9yZQogLy8vIGludm9raW5nIHRoZSBmaXJzdCBoYW5kc2hha2VyLgogLy8vIFxhIGFjY2VwdG9yIHdpbGwgYmUgTlVMTCBmb3IgY2xpZW50LXNpZGUgaGFuZHNoYWtlcnMuCi0vLy8gSWYgc3VjY2Vzc2Z1bCwgaW52b2tlcyBcYSBjYiB3aXRoIFxhIHVzZXJfZGF0YSBhZnRlciBhbGwgaGFuZHNoYWtlcnMKLS8vLyBoYXZlIGNvbXBsZXRlZC4KKy8vLyBJbnZva2VzIFxhIGNiIHdpdGggXGEgdXNlcl9kYXRhIGFmdGVyIGVpdGhlciBhIGhhbmRzaGFrZXIgZmFpbHMgb3IKKy8vLyBhbGwgaGFuZHNoYWtlcnMgaGF2ZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lgogdm9pZCBncnBjX2hhbmRzaGFrZV9tYW5hZ2VyX2RvX2hhbmRzaGFrZSgKICAgICBncnBjX2V4ZWNfY3R4KiBleGVjX2N0eCwgZ3JwY19oYW5kc2hha2VfbWFuYWdlciogbWdyLAogICAgIGdycGNfZW5kcG9pbnQqIGVuZHBvaW50LCBjb25zdCBncnBjX2NoYW5uZWxfYXJncyogYXJncywKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfY2xpZW50X2ZpbHRlci5jIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9jbGllbnRfZmlsdGVyLmMKaW5kZXggODA1N2UyNS4uYTdhNzc1YyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9jbGllbnRfZmlsdGVyLmMKKysrIGIvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9jbGllbnRfZmlsdGVyLmMKQEAgLTE3NSwxNiArMTc1LDE5IEBACiB9CiAKIC8qIENvbnN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CiAgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIGNhbGxkLT5vbl9kb25lX3JlY3YgPSBOVUxMOwogICBncnBjX2Nsb3N1cmVfaW5pdCgmY2FsbGQtPmhjX29uX3JlY3YsIGhjX29uX3JlY3YsIGVsZW0pOworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOwogfQogCiAvKiBEZXN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9zdGF0cyAqc3RhdHMsIHZvaWQgKmlnbm9yZWQpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfZmluYWxfaW5mbyAqZmluYWxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlnbm9yZWQpIHt9CiAKIHN0YXRpYyBncnBjX21kZWxlbSAqc2NoZW1lX2Zyb21fYXJncyhjb25zdCBncnBjX2NoYW5uZWxfYXJncyAqYXJncykgewogICB1bnNpZ25lZCBpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL2NoYW5uZWwvaHR0cF9zZXJ2ZXJfZmlsdGVyLmMgYi9zcmMvY29yZS9saWIvY2hhbm5lbC9odHRwX3NlcnZlcl9maWx0ZXIuYwppbmRleCBkMGJlZWJkLi41Y2U1MWY5IDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvY2hhbm5lbC9odHRwX3NlcnZlcl9maWx0ZXIuYworKysgYi9zcmMvY29yZS9saWIvY2hhbm5lbC9odHRwX3NlcnZlcl9maWx0ZXIuYwpAQCAtMjI0LDE4ICsyMjQsMjEgQEAKIH0KIAogLyogQ29uc3RydWN0b3IgZm9yIGNhbGxfZGF0YSAqLwotc3RhdGljIHZvaWQgaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworc3RhdGljIGdycGNfZXJyb3IgKmluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKICAgLyogZ3JhYiBwb2ludGVycyB0byBvdXIgZGF0YSBmcm9tIHRoZSBjYWxsIGVsZW1lbnQgKi8KICAgY2FsbF9kYXRhICpjYWxsZCA9IGVsZW0tPmNhbGxfZGF0YTsKICAgLyogaW5pdGlhbGl6ZSBtZW1iZXJzICovCiAgIG1lbXNldChjYWxsZCwgMCwgc2l6ZW9mKCpjYWxsZCkpOwogICBncnBjX2Nsb3N1cmVfaW5pdCgmY2FsbGQtPmhzX29uX3JlY3YsIGhzX29uX3JlY3YsIGVsZW0pOworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOwogfQogCiAvKiBEZXN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9zdGF0cyAqc3RhdHMsIHZvaWQgKmlnbm9yZWQpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfZmluYWxfaW5mbyAqZmluYWxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlnbm9yZWQpIHt9CiAKIC8qIENvbnN0cnVjdG9yIGZvciBjaGFubmVsX2RhdGEgKi8KIHN0YXRpYyB2b2lkIGluaXRfY2hhbm5lbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL2lvbWdyL2Vycm9yLmggYi9zcmMvY29yZS9saWIvaW9tZ3IvZXJyb3IuaAppbmRleCAxM2Y4OThlLi5iYzc3ODEyIDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvaW9tZ3IvZXJyb3IuaAorKysgYi9zcmMvY29yZS9saWIvaW9tZ3IvZXJyb3IuaApAQCAtMTcxLDYgKzE3MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl90aW1lc3BlYyB2YWx1ZSkgR1JQQ19NVVNUX1VTRV9SRVNVTFQ7CiBncnBjX2Vycm9yICpncnBjX2Vycm9yX3NldF9zdHIoZ3JwY19lcnJvciAqc3JjLCBncnBjX2Vycm9yX3N0cnMgd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsdWUpIEdSUENfTVVTVF9VU0VfUkVTVUxUOworLy8vIFJldHVybnMgTlVMTCBpZiB0aGUgc3BlY2lmaWVkIHN0cmluZyBpcyBub3Qgc2V0LgorLy8vIENhbGxlciBkb2VzIE5PVCBvd24gcmV0dXJuIHZhbHVlLgogY29uc3QgY2hhciAqZ3JwY19lcnJvcl9nZXRfc3RyKGdycGNfZXJyb3IgKmVycm9yLCBncnBjX2Vycm9yX3N0cnMgd2hpY2gpOwogLy8vIEFkZCBhIGNoaWxkIGVycm9yOiBhbiBlcnJvciB0aGF0IGlzIGJlbGlldmVkIHRvIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcwogLy8vIGVycm9yIG9jY3VycmluZy4gQWxsb3dzIHJvb3QgY2F1c2luZyBoaWdoIGxldmVsIGVycm9ycyBmcm9tIGxvd2VyIGxldmVsCmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvaW9tZ3IvbmV0d29ya19zdGF0dXNfdHJhY2tlci5jIGIvc3JjL2NvcmUvbGliL2lvbWdyL25ldHdvcmtfc3RhdHVzX3RyYWNrZXIuYwppbmRleCA5MGMwNzRiLi5iNGJiN2UzIDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvaW9tZ3IvbmV0d29ya19zdGF0dXNfdHJhY2tlci5jCisrKyBiL3NyYy9jb3JlL2xpYi9pb21nci9uZXR3b3JrX3N0YXR1c190cmFja2VyLmMKQEAgLTU2LDYgKzU2LDE1IEBACiAgIC8vIFRPRE8obWFrYXJhbmRkKTogSW5zdGFsbCBjYWxsYmFjayB3aXRoIE9TIHRvIG1vbml0b3IgbmV0d29yayBzdGF0dXMuCiB9CiAKK3ZvaWQgZ3JwY19kZXN0cm95X25ldHdvcmtfc3RhdHVzX21vbml0b3IoKSB7CisgIGZvciAoZW5kcG9pbnRfbGxfbm9kZSAqY3VyciA9IGhlYWQ7IGN1cnIgIT0gTlVMTDspIHsKKyAgICBlbmRwb2ludF9sbF9ub2RlICpuZXh0ID0gY3Vyci0+bmV4dDsKKyAgICBncHJfZnJlZShjdXJyKTsKKyAgICBjdXJyID0gbmV4dDsKKyAgfQorICBncHJfbXVfZGVzdHJveSgmZ19lbmRwb2ludF9tdXRleCk7Cit9CisKIHZvaWQgZ3JwY19uZXR3b3JrX3N0YXR1c19yZWdpc3Rlcl9lbmRwb2ludChncnBjX2VuZHBvaW50ICplcCkgewogICBncHJfbXVfbG9jaygmZ19lbmRwb2ludF9tdXRleCk7CiAgIGlmIChoZWFkID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9pb21nci90Y3BfcG9zaXguYyBiL3NyYy9jb3JlL2xpYi9pb21nci90Y3BfcG9zaXguYwppbmRleCBlYzIxZTAzLi45NzRkNWFlIDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvaW9tZ3IvdGNwX3Bvc2l4LmMKKysrIGIvc3JjL2NvcmUvbGliL2lvbWdyL3RjcF9wb3NpeC5jCkBAIC0yODQsNyArMjg0LDcgQEAKIH0KIAogLyogcmV0dXJucyB0cnVlIGlmIGRvbmUsIGZhbHNlIGlmIHBlbmRpbmc7IGlmIHJldHVybmluZyB0cnVlLCAqZXJyb3IgaXMgc2V0ICovCi0jZGVmaW5lIE1BWF9XUklURV9JT1ZFQyAxMDI0CisjZGVmaW5lIE1BWF9XUklURV9JT1ZFQyAxMDAwCiBzdGF0aWMgYm9vbCB0Y3BfZmx1c2goZ3JwY190Y3AgKnRjcCwgZ3JwY19lcnJvciAqKmVycm9yKSB7CiAgIHN0cnVjdCBtc2doZHIgbXNnOwogICBzdHJ1Y3QgaW92ZWMgaW92W01BWF9XUklURV9JT1ZFQ107CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvaW9tZ3IvdWRwX3NlcnZlci5jIGIvc3JjL2NvcmUvbGliL2lvbWdyL3VkcF9zZXJ2ZXIuYwppbmRleCAxZWJjY2YyLi40ODAzMjQxIDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvaW9tZ3IvdWRwX3NlcnZlci5jCisrKyBiL3NyYy9jb3JlL2xpYi9pb21nci91ZHBfc2VydmVyLmMKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3RyaW5nX3V0aWwuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3luYy5oPgogI2luY2x1ZGUgPGdycGMvc3VwcG9ydC90aW1lLmg+CisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL2Vycm9yLmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL2V2X3Bvc2l4LmgiCiAjaW5jbHVkZSAic3JjL2NvcmUvbGliL2lvbWdyL3Jlc29sdmVfYWRkcmVzcy5oIgogI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9pb21nci9zb2NrYWRkcl91dGlscy5oIgpAQCAtMTI4LDcgKzEyOSw3IEBACiB9CiAKIHN0YXRpYyB2b2lkIGZpbmlzaF9zaHV0ZG93bihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY191ZHBfc2VydmVyICpzKSB7Ci0gIGdycGNfZXhlY19jdHhfZW5xdWV1ZShleGVjX2N0eCwgcy0+c2h1dGRvd25fY29tcGxldGUsIDEsIE5VTEwpOworICBncnBjX2V4ZWNfY3R4X3NjaGVkKGV4ZWNfY3R4LCBzLT5zaHV0ZG93bl9jb21wbGV0ZSwgR1JQQ19FUlJPUl9OT05FLCBOVUxMKTsKIAogICBncHJfbXVfZGVzdHJveSgmcy0+bXUpOwogICBncHJfY3ZfZGVzdHJveSgmcy0+Y3YpOwpAQCAtMTM4LDcgKzEzOSw3IEBACiB9CiAKIHN0YXRpYyB2b2lkIGRlc3Ryb3llZF9wb3J0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpzZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CiAgIGdycGNfdWRwX3NlcnZlciAqcyA9IHNlcnZlcjsKICAgZ3ByX211X2xvY2soJnMtPm11KTsKICAgcy0+ZGVzdHJveWVkX3BvcnRzKys7CkBAIC0yMTcsMTQgKzIxOCwyMyBAQAogICAgIGdvdG8gZXJyb3I7CiAgIH0KIAotICBpZiAoIWdycGNfc2V0X3NvY2tldF9ub25ibG9ja2luZyhmZCwgMSkgfHwgIWdycGNfc2V0X3NvY2tldF9jbG9leGVjKGZkLCAxKSkgewotICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiVW5hYmxlIHRvIGNvbmZpZ3VyZSBzb2NrZXQgJWQ6ICVzIiwgZmQsCi0gICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworICBpZiAoZ3JwY19zZXRfc29ja2V0X25vbmJsb2NraW5nKGZkLCAxKSAhPSBHUlBDX0VSUk9SX05PTkUpIHsKKyAgICBncHJfbG9nKEdQUl9FUlJPUiwgIlVuYWJsZSB0byBzZXQgbm9uYmxvY2tpbmcgJWQ6ICVzIiwgZmQsIHN0cmVycm9yKGVycm5vKSk7CisgICAgZ290byBlcnJvcjsKKyAgfQorICBpZiAoZ3JwY19zZXRfc29ja2V0X2Nsb2V4ZWMoZmQsIDEpICE9IEdSUENfRVJST1JfTk9ORSkgeworICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiVW5hYmxlIHRvIHNldCBjbG9leGVjICVkOiAlcyIsIGZkLCBzdHJlcnJvcihlcnJubykpOworICAgIGdvdG8gZXJyb3I7CiAgIH0KIAotICBpZiAoZ3JwY19zZXRfc29ja2V0X2lwX3BrdGluZm9faWZfcG9zc2libGUoZmQpICYmCi0gICAgICBhZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKLSAgICBncnBjX3NldF9zb2NrZXRfaXB2Nl9yZWN2cGt0aW5mb19pZl9wb3NzaWJsZShmZCk7CisgIGlmIChncnBjX3NldF9zb2NrZXRfaXBfcGt0aW5mb19pZl9wb3NzaWJsZShmZCkgIT0gR1JQQ19FUlJPUl9OT05FKSB7CisgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJVbmFibGUgdG8gc2V0IGlwX3BrdGluZm8uIik7CisgICAgZ290byBlcnJvcjsKKyAgfSBlbHNlIGlmIChhZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICBpZiAoZ3JwY19zZXRfc29ja2V0X2lwdjZfcmVjdnBrdGluZm9faWZfcG9zc2libGUoZmQpICE9IEdSUENfRVJST1JfTk9ORSkgeworICAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJVbmFibGUgdG8gc2V0IGlwdjZfcmVjdnBrdGluZm8uIik7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KICAgfQogCiAgIEdQUl9BU1NFUlQoYWRkcl9sZW4gPCB+KHNvY2tsZW5fdCkwKTsKQEAgLTI0MSwxMyArMjUxLDEzIEBACiAgICAgZ290byBlcnJvcjsKICAgfQogCi0gIGlmICghZ3JwY19zZXRfc29ja2V0X3NuZGJ1ZihmZCwgYnVmZmVyX3NpemVfYnl0ZXMpKSB7CisgIGlmIChncnBjX3NldF9zb2NrZXRfc25kYnVmKGZkLCBidWZmZXJfc2l6ZV9ieXRlcykgIT0gR1JQQ19FUlJPUl9OT05FKSB7CiAgICAgZ3ByX2xvZyhHUFJfRVJST1IsICJGYWlsZWQgdG8gc2V0IHNlbmQgYnVmZmVyIHNpemUgdG8gJWQgYnl0ZXMiLAogICAgICAgICAgICAgYnVmZmVyX3NpemVfYnl0ZXMpOwogICAgIGdvdG8gZXJyb3I7CiAgIH0KIAotICBpZiAoIWdycGNfc2V0X3NvY2tldF9yY3ZidWYoZmQsIGJ1ZmZlcl9zaXplX2J5dGVzKSkgeworICBpZiAoZ3JwY19zZXRfc29ja2V0X3JjdmJ1ZihmZCwgYnVmZmVyX3NpemVfYnl0ZXMpICE9IEdSUENfRVJST1JfTk9ORSkgewogICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiRmFpbGVkIHRvIHNldCByZWNlaXZlIGJ1ZmZlciBzaXplIHRvICVkIGJ5dGVzIiwKICAgICAgICAgICAgIGJ1ZmZlcl9zaXplX2J5dGVzKTsKICAgICBnb3RvIGVycm9yOwpAQCAtMjYzLDEwICsyNzMsMTAgQEAKIH0KIAogLyogZXZlbnQgbWFuYWdlciBjYWxsYmFjayB3aGVuIHJlYWRzIGFyZSByZWFkeSAqLwotc3RhdGljIHZvaWQgb25fcmVhZChncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgdm9pZCAqYXJnLCBib29sIHN1Y2Nlc3MpIHsKK3N0YXRpYyB2b2lkIG9uX3JlYWQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKmFyZywgZ3JwY19lcnJvciAqZXJyb3IpIHsKICAgc2VydmVyX3BvcnQgKnNwID0gYXJnOwogCi0gIGlmICghc3VjY2VzcykgeworICBpZiAoZXJyb3IgIT0gR1JQQ19FUlJPUl9OT05FKSB7CiAgICAgZ3ByX211X2xvY2soJnNwLT5zZXJ2ZXItPm11KTsKICAgICBpZiAoMCA9PSAtLXNwLT5zZXJ2ZXItPmFjdGl2ZV9wb3J0cykgewogICAgICAgZ3ByX211X3VubG9jaygmc3AtPnNlcnZlci0+bXUpOwpAQCAtMzY5LDcgKzM3OSw4IEBACiAgICAgLyogVHJ5IGxpc3RlbmluZyBvbiBJUHY2IGZpcnN0LiAqLwogICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyICopJndpbGQ2OwogICAgIGFkZHJfbGVuID0gc2l6ZW9mKHdpbGQ2KTsKLSAgICBmZCA9IGdycGNfY3JlYXRlX2R1YWxzdGFja19zb2NrZXQoYWRkciwgU09DS19ER1JBTSwgSVBQUk9UT19VRFAsICZkc21vZGUpOworICAgIC8vIFRPRE8ocmpzaGFkZSk6IFRlc3QgYW5kIHByb3BhZ2F0ZSB0aGUgcmV0dXJuZWQgZ3JwY19lcnJvcio6CisgICAgZ3JwY19jcmVhdGVfZHVhbHN0YWNrX3NvY2tldChhZGRyLCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCwgJmRzbW9kZSwgJmZkKTsKICAgICBhbGxvY2F0ZWRfcG9ydDEgPQogICAgICAgICBhZGRfc29ja2V0X3RvX3NlcnZlcihzLCBmZCwgYWRkciwgYWRkcl9sZW4sIHJlYWRfY2IsIG9ycGhhbl9jYik7CiAgICAgaWYgKGZkID49IDAgJiYgZHNtb2RlID09IEdSUENfRFNNT0RFX0RVQUxTVEFDSykgewpAQCAtMzg0LDcgKzM5NSw4IEBACiAgICAgYWRkcl9sZW4gPSBzaXplb2Yod2lsZDQpOwogICB9CiAKLSAgZmQgPSBncnBjX2NyZWF0ZV9kdWFsc3RhY2tfc29ja2V0KGFkZHIsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQLCAmZHNtb2RlKTsKKyAgLy8gVE9ETyhyanNoYWRlKTogVGVzdCBhbmQgcHJvcGFnYXRlIHRoZSByZXR1cm5lZCBncnBjX2Vycm9yKjoKKyAgZ3JwY19jcmVhdGVfZHVhbHN0YWNrX3NvY2tldChhZGRyLCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCwgJmRzbW9kZSwgJmZkKTsKICAgaWYgKGZkIDwgMCkgewogICAgIGdwcl9sb2coR1BSX0VSUk9SLCAiVW5hYmxlIHRvIGNyZWF0ZSBzb2NrZXQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9jbGllbnRfYXV0aF9maWx0ZXIuYyBiL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvY2xpZW50X2F1dGhfZmlsdGVyLmMKaW5kZXggZWQ3OTI5YS4uMmExYmY0ZCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9jbGllbnRfYXV0aF9maWx0ZXIuYworKysgYi9zcmMvY29yZS9saWIvc2VjdXJpdHkvdHJhbnNwb3J0L2NsaWVudF9hdXRoX2ZpbHRlci5jCkBAIC0yNjcsMTAgKzI2NywxMiBAQAogfQogCiAvKiBDb25zdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCi1zdGF0aWMgdm9pZCBpbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CitzdGF0aWMgZ3JwY19lcnJvciAqaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgewogICBjYWxsX2RhdGEgKmNhbGxkID0gZWxlbS0+Y2FsbF9kYXRhOwogICBtZW1zZXQoY2FsbGQsIDAsIHNpemVvZigqY2FsbGQpKTsKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogc3RhdGljIHZvaWQgc2V0X3BvbGxzZXRfb3JfcG9sbHNldF9zZXQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCkBAIC0yODIsNyArMjg0LDggQEAKIAogLyogRGVzdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCiBzdGF0aWMgdm9pZCBkZXN0cm95X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfc3RhdHMgKnN0YXRzLCB2b2lkICppZ25vcmVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfZmluYWxfaW5mbyAqZmluYWxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlnbm9yZWQpIHsKICAgY2FsbF9kYXRhICpjYWxsZCA9IGVsZW0tPmNhbGxfZGF0YTsKICAgZ3JwY19jYWxsX2NyZWRlbnRpYWxzX3VucmVmKGNhbGxkLT5jcmVkcyk7CiAgIGlmIChjYWxsZC0+aG9zdCAhPSBOVUxMKSB7CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvc2VjdXJpdHkvdHJhbnNwb3J0L2hhbmRzaGFrZS5jIGIvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9oYW5kc2hha2UuYwppbmRleCBiMzc0Y2E3Li41NDBhMTcyIDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvc2VjdXJpdHkvdHJhbnNwb3J0L2hhbmRzaGFrZS5jCisrKyBiL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvaGFuZHNoYWtlLmMKQEAgLTM1Nyw4ICszNTcsOSBAQAogICAgIGdwcl9tdV91bmxvY2soJnNlcnZlcl9jb25uZWN0b3ItPm11KTsKICAgfQogICBzZW5kX2hhbmRzaGFrZV9ieXRlc190b19wZWVyKGV4ZWNfY3R4LCBoKTsKLSAgZ3JwY190aW1lcl9pbml0KGV4ZWNfY3R4LCAmaC0+dGltZXIsIGRlYWRsaW5lLCBvbl90aW1lb3V0LCBoLAotICAgICAgICAgICAgICAgICAgZ3ByX25vdyhkZWFkbGluZS5jbG9ja190eXBlKSk7CisgIGdycGNfdGltZXJfaW5pdChleGVjX2N0eCwgJmgtPnRpbWVyLAorICAgICAgICAgICAgICAgICAgZ3ByX2NvbnZlcnRfY2xvY2tfdHlwZShkZWFkbGluZSwgR1BSX0NMT0NLX01PTk9UT05JQyksCisgICAgICAgICAgICAgICAgICBvbl90aW1lb3V0LCBoLCBncHJfbm93KEdQUl9DTE9DS19NT05PVE9OSUMpKTsKIH0KIAogdm9pZCBncnBjX3NlY3VyaXR5X2hhbmRzaGFrZV9zaHV0ZG93bihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvc2VjdXJlX2VuZHBvaW50LmMgYi9zcmMvY29yZS9saWIvc2VjdXJpdHkvdHJhbnNwb3J0L3NlY3VyZV9lbmRwb2ludC5jCmluZGV4IGJjNTBmOWQuLjAxNjljY2QgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvc2VjdXJlX2VuZHBvaW50LmMKKysrIGIvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9zZWN1cmVfZW5kcG9pbnQuYwpAQCAtMTI4LDcgKzEyOCw3IEBACiAKIHN0YXRpYyB2b2lkIGNhbGxfcmVhZF9jYihncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgc2VjdXJlX2VuZHBvaW50ICplcCwKICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2Vycm9yICplcnJvcikgewotICBpZiAoZmFsc2UgJiYgZ3JwY190cmFjZV9zZWN1cmVfZW5kcG9pbnQpIHsKKyAgaWYgKGdycGNfdHJhY2Vfc2VjdXJlX2VuZHBvaW50KSB7CiAgICAgc2l6ZV90IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGVwLT5yZWFkX2J1ZmZlci0+Y291bnQ7IGkrKykgewogICAgICAgY2hhciAqZGF0YSA9IGdwcl9kdW1wX3NsaWNlKGVwLT5yZWFkX2J1ZmZlci0+c2xpY2VzW2ldLApAQCAtMjU2LDcgKzI1Niw3IEBACiAKICAgZ3ByX3NsaWNlX2J1ZmZlcl9yZXNldF9hbmRfdW5yZWYoJmVwLT5vdXRwdXRfYnVmZmVyKTsKIAotICBpZiAoZmFsc2UgJiYgZ3JwY190cmFjZV9zZWN1cmVfZW5kcG9pbnQpIHsKKyAgaWYgKGdycGNfdHJhY2Vfc2VjdXJlX2VuZHBvaW50KSB7CiAgICAgZm9yIChpID0gMDsgaSA8IHNsaWNlcy0+Y291bnQ7IGkrKykgewogICAgICAgY2hhciAqZGF0YSA9CiAgICAgICAgICAgZ3ByX2R1bXBfc2xpY2Uoc2xpY2VzLT5zbGljZXNbaV0sIEdQUl9EVU1QX0hFWCB8IEdQUl9EVU1QX0FTQ0lJKTsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvc2VydmVyX2F1dGhfZmlsdGVyLmMgYi9zcmMvY29yZS9saWIvc2VjdXJpdHkvdHJhbnNwb3J0L3NlcnZlcl9hdXRoX2ZpbHRlci5jCmluZGV4IDEyZTc4OWIuLmRlZjE2YzggMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9zZWN1cml0eS90cmFuc3BvcnQvc2VydmVyX2F1dGhfZmlsdGVyLmMKKysrIGIvc3JjL2NvcmUvbGliL3NlY3VyaXR5L3RyYW5zcG9ydC9zZXJ2ZXJfYXV0aF9maWx0ZXIuYwpAQCAtMTk5LDggKzE5OSw5IEBACiB9CiAKIC8qIENvbnN0cnVjdG9yIGZvciBjYWxsX2RhdGEgKi8KLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CiAgIC8qIGdyYWIgcG9pbnRlcnMgdG8gb3VyIGRhdGEgZnJvbSB0aGUgY2FsbCBlbGVtZW50ICovCiAgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIGNoYW5uZWxfZGF0YSAqY2hhbmQgPSBlbGVtLT5jaGFubmVsX2RhdGE7CkBAIC0yMjIsMTEgKzIyMywxNCBAQAogICBhcmdzLT5jb250ZXh0W0dSUENfQ09OVEVYVF9TRUNVUklUWV0udmFsdWUgPSBzZXJ2ZXJfY3R4OwogICBhcmdzLT5jb250ZXh0W0dSUENfQ09OVEVYVF9TRUNVUklUWV0uZGVzdHJveSA9CiAgICAgICBncnBjX3NlcnZlcl9zZWN1cml0eV9jb250ZXh0X2Rlc3Ryb3k7CisKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogLyogRGVzdHJ1Y3RvciBmb3IgY2FsbF9kYXRhICovCiBzdGF0aWMgdm9pZCBkZXN0cm95X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfc3RhdHMgKnN0YXRzLCB2b2lkICppZ25vcmVkKSB7fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX2ZpbmFsX2luZm8gKmZpbmFsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppZ25vcmVkKSB7fQogCiAvKiBDb25zdHJ1Y3RvciBmb3IgY2hhbm5lbF9kYXRhICovCiBzdGF0aWMgdm9pZCBpbml0X2NoYW5uZWxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9zdXBwb3J0L2xvZy5jIGIvc3JjL2NvcmUvbGliL3N1cHBvcnQvbG9nLmMKaW5kZXggYmFlMDk1Ny4uODk5ZjEyMSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3N1cHBvcnQvbG9nLmMKKysrIGIvc3JjL2NvcmUvbGliL3N1cHBvcnQvbG9nLmMKQEAgLTc5LDE3ICs3OSwxOCBAQAogCiB2b2lkIGdwcl9sb2dfdmVyYm9zaXR5X2luaXQoKSB7CiAgIGNoYXIgKnZlcmJvc2l0eSA9IGdwcl9nZXRlbnYoIkdSUENfVkVSQk9TSVRZIik7Ci0gIGlmICh2ZXJib3NpdHkgPT0gTlVMTCkgcmV0dXJuOwogCi0gIGdwcl9hdG0gbWluX3NldmVyaXR5X3RvX3ByaW50ID0gR1BSX0xPR19WRVJCT1NJVFlfVU5TRVQ7Ci0gIGlmIChzdHJjbXAodmVyYm9zaXR5LCAiREVCVUciKSA9PSAwKSB7Ci0gICAgbWluX3NldmVyaXR5X3RvX3ByaW50ID0gKGdwcl9hdG0pR1BSX0xPR19TRVZFUklUWV9ERUJVRzsKLSAgfSBlbHNlIGlmIChzdHJjbXAodmVyYm9zaXR5LCAiSU5GTyIpID09IDApIHsKLSAgICBtaW5fc2V2ZXJpdHlfdG9fcHJpbnQgPSAoZ3ByX2F0bSlHUFJfTE9HX1NFVkVSSVRZX0lORk87Ci0gIH0gZWxzZSBpZiAoc3RyY21wKHZlcmJvc2l0eSwgIkVSUk9SIikgPT0gMCkgewotICAgIG1pbl9zZXZlcml0eV90b19wcmludCA9IChncHJfYXRtKUdQUl9MT0dfU0VWRVJJVFlfRVJST1I7CisgIGdwcl9hdG0gbWluX3NldmVyaXR5X3RvX3ByaW50ID0gR1BSX0xPR19TRVZFUklUWV9FUlJPUjsKKyAgaWYgKHZlcmJvc2l0eSAhPSBOVUxMKSB7CisgICAgaWYgKHN0cmNtcCh2ZXJib3NpdHksICJERUJVRyIpID09IDApIHsKKyAgICAgIG1pbl9zZXZlcml0eV90b19wcmludCA9IChncHJfYXRtKUdQUl9MT0dfU0VWRVJJVFlfREVCVUc7CisgICAgfSBlbHNlIGlmIChzdHJjbXAodmVyYm9zaXR5LCAiSU5GTyIpID09IDApIHsKKyAgICAgIG1pbl9zZXZlcml0eV90b19wcmludCA9IChncHJfYXRtKUdQUl9MT0dfU0VWRVJJVFlfSU5GTzsKKyAgICB9IGVsc2UgaWYgKHN0cmNtcCh2ZXJib3NpdHksICJFUlJPUiIpID09IDApIHsKKyAgICAgIG1pbl9zZXZlcml0eV90b19wcmludCA9IChncHJfYXRtKUdQUl9MT0dfU0VWRVJJVFlfRVJST1I7CisgICAgfQorICAgIGdwcl9mcmVlKHZlcmJvc2l0eSk7CiAgIH0KLSAgZ3ByX2ZyZWUodmVyYm9zaXR5KTsKICAgaWYgKChncHJfYXRtX25vX2JhcnJpZXJfbG9hZCgmZ19taW5fc2V2ZXJpdHlfdG9fcHJpbnQpKSA9PQogICAgICAgR1BSX0xPR19WRVJCT1NJVFlfVU5TRVQpIHsKICAgICBncHJfYXRtX25vX2JhcnJpZXJfc3RvcmUoJmdfbWluX3NldmVyaXR5X3RvX3ByaW50LCBtaW5fc2V2ZXJpdHlfdG9fcHJpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jIGIvc3JjL2NvcmUvbGliL3N1cmZhY2UvY2FsbC5jCmluZGV4IGZjOWRmNzYuLjc3MjY4MTEgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi9zdXJmYWNlL2NhbGwuYworKysgYi9zcmMvY29yZS9saWIvc3VyZmFjZS9jYWxsLmMKQEAgLTE1NCw4ICsxNTQsOSBAQAogICAvKiBSZWNlaXZlZCBjYWxsIHN0YXR1c2VzIGZyb20gdmFyaW91cyBzb3VyY2VzICovCiAgIHJlY2VpdmVkX3N0YXR1cyBzdGF0dXNbU1RBVFVTX1NPVVJDRV9DT1VOVF07CiAKLSAgLyogQ2FsbCBzdGF0czogb25seSB2YWxpZCBhZnRlciB0cmFpbGluZyBtZXRhZGF0YSByZWNlaXZlZCAqLwotICBncnBjX2NhbGxfc3RhdHMgc3RhdHM7CisgIC8qIENhbGwgZGF0YSB1c2VmdWwgdXNlZCBmb3IgcmVwb3J0aW5nLiBPbmx5IHZhbGlkIGFmdGVyIHRoZSBjYWxsIGhhcworICAgKiBjb21wbGV0ZWQgKi8KKyAgZ3JwY19jYWxsX2ZpbmFsX2luZm8gZmluYWxfaW5mbzsKIAogICAvKiBDb21wcmVzc2lvbiBhbGdvcml0aG0gZm9yICppbmNvbWluZyogZGF0YSAqLwogICBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobSBpbmNvbWluZ19jb21wcmVzc2lvbl9hbGdvcml0aG07CkBAIC0yNjMsOSArMjY0LDE5IEBACiAgICAgICBncHJfY29udmVydF9jbG9ja190eXBlKHNlbmRfZGVhZGxpbmUsIEdQUl9DTE9DS19NT05PVE9OSUMpOwogICBHUlBDX0NIQU5ORUxfSU5URVJOQUxfUkVGKGNoYW5uZWwsICJjYWxsIik7CiAgIC8qIGluaXRpYWwgcmVmY291bnQgZHJvcHBlZCBieSBncnBjX2NhbGxfZGVzdHJveSAqLwotICBncnBjX2NhbGxfc3RhY2tfaW5pdCgmZXhlY19jdHgsIGNoYW5uZWxfc3RhY2ssIDEsIGRlc3Ryb3lfY2FsbCwgY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgY2FsbC0+Y29udGV4dCwgc2VydmVyX3RyYW5zcG9ydF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICBDQUxMX1NUQUNLX0ZST01fQ0FMTChjYWxsKSk7CisgIGdycGNfZXJyb3IgKmVycm9yID0gZ3JwY19jYWxsX3N0YWNrX2luaXQoCisgICAgICAmZXhlY19jdHgsIGNoYW5uZWxfc3RhY2ssIDEsIGRlc3Ryb3lfY2FsbCwgY2FsbCwgY2FsbC0+Y29udGV4dCwKKyAgICAgIHNlcnZlcl90cmFuc3BvcnRfZGF0YSwgQ0FMTF9TVEFDS19GUk9NX0NBTEwoY2FsbCkpOworICBpZiAoZXJyb3IgIT0gR1JQQ19FUlJPUl9OT05FKSB7CisgICAgaW50cHRyX3Qgc3RhdHVzOworICAgIGlmICghZ3JwY19lcnJvcl9nZXRfaW50KGVycm9yLCBHUlBDX0VSUk9SX0lOVF9HUlBDX1NUQVRVUywgJnN0YXR1cykpCisgICAgICBzdGF0dXMgPSBHUlBDX1NUQVRVU19VTktOT1dOOworICAgIGNvbnN0IGNoYXIgKmVycm9yX3N0ciA9CisgICAgICAgIGdycGNfZXJyb3JfZ2V0X3N0cihlcnJvciwgR1JQQ19FUlJPUl9TVFJfREVTQ1JJUFRJT04pOworICAgIGNsb3NlX3dpdGhfc3RhdHVzKCZleGVjX2N0eCwgY2FsbCwgKGdycGNfc3RhdHVzX2NvZGUpc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3N0ciA9PSBOVUxMID8gInVua25vd24gZXJyb3IiIDogZXJyb3Jfc3RyKTsKKyAgICBHUlBDX0VSUk9SX1VOUkVGKGVycm9yKTsKKyAgfQogICBpZiAoY3EgIT0gTlVMTCkgewogICAgIEdQUl9BU1NFUlQoCiAgICAgICAgIHBvbGxzZXRfc2V0X2FsdGVybmF0aXZlID09IE5VTEwgJiYKQEAgLTM2MSw2ICszNzIsMjUgQEAKICAgR1JQQ19DQUxMX1NUQUNLX1VOUkVGKGV4ZWNfY3R4LCBDQUxMX1NUQUNLX0ZST01fQ0FMTChjKSwgUkVGX1JFQVNPTik7CiB9CiAKK3N0YXRpYyB2b2lkIGdldF9maW5hbF9zdGF0dXMoZ3JwY19jYWxsICpjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqc2V0X3ZhbHVlKShncnBjX3N0YXR1c19jb2RlIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNldF92YWx1ZV91c2VyX2RhdGEpIHsKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCBTVEFUVVNfU09VUkNFX0NPVU5UOyBpKyspIHsKKyAgICBpZiAoY2FsbC0+c3RhdHVzW2ldLmlzX3NldCkgeworICAgICAgc2V0X3ZhbHVlKGNhbGwtPnN0YXR1c1tpXS5jb2RlLCBzZXRfdmFsdWVfdXNlcl9kYXRhKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KKyAgaWYgKGNhbGwtPmlzX2NsaWVudCkgeworICAgIHNldF92YWx1ZShHUlBDX1NUQVRVU19VTktOT1dOLCBzZXRfdmFsdWVfdXNlcl9kYXRhKTsKKyAgfSBlbHNlIHsKKyAgICBzZXRfdmFsdWUoR1JQQ19TVEFUVVNfT0ssIHNldF92YWx1ZV91c2VyX2RhdGEpOworICB9Cit9CisKK3N0YXRpYyB2b2lkIHNldF9zdGF0dXNfdmFsdWVfZGlyZWN0bHkoZ3JwY19zdGF0dXNfY29kZSBzdGF0dXMsIHZvaWQgKmRlc3QpOwogc3RhdGljIHZvaWQgZGVzdHJveV9jYWxsKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpjYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CiAgIHNpemVfdCBpOwpAQCAtMzkyLDcgKzQyMiwxMSBAQAogICAgIEdSUENfQ1FfSU5URVJOQUxfVU5SRUYoYy0+Y3EsICJiaW5kIik7CiAgIH0KICAgZ3JwY19jaGFubmVsICpjaGFubmVsID0gYy0+Y2hhbm5lbDsKLSAgZ3JwY19jYWxsX3N0YWNrX2Rlc3Ryb3koZXhlY19jdHgsIENBTExfU1RBQ0tfRlJPTV9DQUxMKGMpLCAmYy0+c3RhdHMsIGMpOworCisgIGdldF9maW5hbF9zdGF0dXMoY2FsbCwgc2V0X3N0YXR1c192YWx1ZV9kaXJlY3RseSwKKyAgICAgICAgICAgICAgICAgICAmYy0+ZmluYWxfaW5mby5maW5hbF9zdGF0dXMpOworCisgIGdycGNfY2FsbF9zdGFja19kZXN0cm95KGV4ZWNfY3R4LCBDQUxMX1NUQUNLX0ZST01fQ0FMTChjKSwgJmMtPmZpbmFsX2luZm8sIGMpOwogICBHUlBDX0NIQU5ORUxfSU5URVJOQUxfVU5SRUYoZXhlY19jdHgsIGNoYW5uZWwsICJjYWxsIik7CiAgIEdQUl9USU1FUl9FTkQoImRlc3Ryb3lfY2FsbCIsIDApOwogfQpAQCAtNDE0LDI0ICs0NDgsNiBAQAogICB9CiB9CiAKLXN0YXRpYyB2b2lkIGdldF9maW5hbF9zdGF0dXMoZ3JwY19jYWxsICpjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqc2V0X3ZhbHVlKShncnBjX3N0YXR1c19jb2RlIGNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNldF92YWx1ZV91c2VyX2RhdGEpIHsKLSAgaW50IGk7Ci0gIGZvciAoaSA9IDA7IGkgPCBTVEFUVVNfU09VUkNFX0NPVU5UOyBpKyspIHsKLSAgICBpZiAoY2FsbC0+c3RhdHVzW2ldLmlzX3NldCkgewotICAgICAgc2V0X3ZhbHVlKGNhbGwtPnN0YXR1c1tpXS5jb2RlLCBzZXRfdmFsdWVfdXNlcl9kYXRhKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gIH0KLSAgaWYgKGNhbGwtPmlzX2NsaWVudCkgewotICAgIHNldF92YWx1ZShHUlBDX1NUQVRVU19VTktOT1dOLCBzZXRfdmFsdWVfdXNlcl9kYXRhKTsKLSAgfSBlbHNlIHsKLSAgICBzZXRfdmFsdWUoR1JQQ19TVEFUVVNfT0ssIHNldF92YWx1ZV91c2VyX2RhdGEpOwotICB9Ci19Ci0KIHN0YXRpYyB2b2lkIHNldF9zdGF0dXNfZnJvbV9lcnJvcihncnBjX2NhbGwgKmNhbGwsIHN0YXR1c19zb3VyY2Ugc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CiAgIGludHB0cl90IHN0YXR1czsKQEAgLTEzNjEsNiArMTM3Nyw5IEBACiAgIGludCBudW1fY29tcGxldGlvbl9jYWxsYmFja3NfbmVlZGVkID0gMTsKICAgZ3JwY19jYWxsX2Vycm9yIGVycm9yID0gR1JQQ19DQUxMX09LOwogCisgIC8vIHNlbnRfaW5pdGlhbF9tZXRhZGF0YSBndWFyZHMgYWdhaW5zdCB2YXJpYWJsZSByZXVzZS4KKyAgZ3JwY19tZXRhZGF0YSBjb21wcmVzc2lvbl9tZDsKKwogICBHUFJfVElNRVJfQkVHSU4oImdycGNfY2FsbF9zdGFydF9iYXRjaCIsIDApOwogCiAgIEdSUENfQ0FMTF9MT0dfQkFUQ0goR1BSX0lORk8sIGNhbGwsIG9wcywgbm9wcywgbm90aWZ5X3RhZyk7CkBAIC0xNDA2LDggKzE0MjUsNyBAQAogICAgICAgICAgIGdvdG8gZG9uZV93aXRoX2Vycm9yOwogICAgICAgICB9CiAgICAgICAgIC8qIHByb2Nlc3MgY29tcHJlc3Npb24gbGV2ZWwgKi8KLSAgICAgICAgZ3JwY19tZXRhZGF0YSBjb21wcmVzc2lvbl9tZDsKLSAgICAgICAgbWVtc2V0KCZjb21wcmVzc2lvbl9tZCwgMCwgc2l6ZW9mKGdycGNfbWV0YWRhdGEpKTsKKyAgICAgICAgbWVtc2V0KCZjb21wcmVzc2lvbl9tZCwgMCwgc2l6ZW9mKGNvbXByZXNzaW9uX21kKSk7CiAgICAgICAgIHNpemVfdCBhZGRpdGlvbmFsX21ldGFkYXRhX2NvdW50ID0gMDsKICAgICAgICAgZ3JwY19jb21wcmVzc2lvbl9sZXZlbCBlZmZlY3RpdmVfY29tcHJlc3Npb25fbGV2ZWw7CiAgICAgICAgIGJvb2wgbGV2ZWxfc2V0ID0gZmFsc2U7CkBAIC0xNjA4LDcgKzE2MjYsOCBAQAogICAgICAgICBiY3RsLT5yZWN2X2ZpbmFsX29wID0gMTsKICAgICAgICAgc3RyZWFtX29wLnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGEgPQogICAgICAgICAgICAgJmNhbGwtPm1ldGFkYXRhX2JhdGNoWzEgLyogaXNfcmVjZWl2aW5nICovXVsxIC8qIGlzX3RyYWlsaW5nICovXTsKLSAgICAgICAgc3RyZWFtX29wLmNvbGxlY3Rfc3RhdHMgPSAmY2FsbC0+c3RhdHMudHJhbnNwb3J0X3N0cmVhbV9zdGF0czsKKyAgICAgICAgc3RyZWFtX29wLmNvbGxlY3Rfc3RhdHMgPQorICAgICAgICAgICAgJmNhbGwtPmZpbmFsX2luZm8uc3RhdHMudHJhbnNwb3J0X3N0cmVhbV9zdGF0czsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdSUENfT1BfUkVDVl9DTE9TRV9PTl9TRVJWRVI6CiAgICAgICAgIC8qIEZsYWcgdmFsaWRhdGlvbjogY3VycmVudGx5IGFsbG93IG5vIGZsYWdzICovCkBAIC0xNjMwLDcgKzE2NDksOCBAQAogICAgICAgICBiY3RsLT5yZWN2X2ZpbmFsX29wID0gMTsKICAgICAgICAgc3RyZWFtX29wLnJlY3ZfdHJhaWxpbmdfbWV0YWRhdGEgPQogICAgICAgICAgICAgJmNhbGwtPm1ldGFkYXRhX2JhdGNoWzEgLyogaXNfcmVjZWl2aW5nICovXVsxIC8qIGlzX3RyYWlsaW5nICovXTsKLSAgICAgICAgc3RyZWFtX29wLmNvbGxlY3Rfc3RhdHMgPSAmY2FsbC0+c3RhdHMudHJhbnNwb3J0X3N0cmVhbV9zdGF0czsKKyAgICAgICAgc3RyZWFtX29wLmNvbGxlY3Rfc3RhdHMgPQorICAgICAgICAgICAgJmNhbGwtPmZpbmFsX2luZm8uc3RhdHMudHJhbnNwb3J0X3N0cmVhbV9zdGF0czsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jIGIvc3JjL2NvcmUvbGliL3N1cmZhY2UvbGFtZV9jbGllbnQuYwppbmRleCA1ZWE0Y2JhLi4xOWI3ODM2IDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvc3VyZmFjZS9sYW1lX2NsaWVudC5jCisrKyBiL3NyYy9jb3JlL2xpYi9zdXJmYWNlL2xhbWVfY2xpZW50LmMKQEAgLTEwNywxMSArMTA3LDE0IEBACiAgIEdSUENfRVJST1JfVU5SRUYob3AtPmRpc2Nvbm5lY3Rfd2l0aF9lcnJvcik7CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHt9CitzdGF0aWMgZ3JwY19lcnJvciAqaW5pdF9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgeworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOworfQogCiBzdGF0aWMgdm9pZCBkZXN0cm95X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfc3RhdHMgKnN0YXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX2ZpbmFsX2luZm8gKmZpbmFsX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphbmRfZnJlZV9tZW1vcnkpIHsKICAgZ3ByX2ZyZWUoYW5kX2ZyZWVfbWVtb3J5KTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi9zdXJmYWNlL3NlcnZlci5jIGIvc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMKaW5kZXggMmYxMDhhZi4uMWQ2MWVjMyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMKKysrIGIvc3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmMKQEAgLTg1Niw4ICs4NTYsOSBAQAogICB9CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CiAgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAgIGNoYW5uZWxfZGF0YSAqY2hhbmQgPSBlbGVtLT5jaGFubmVsX2RhdGE7CiAgIG1lbXNldChjYWxsZCwgMCwgc2l6ZW9mKGNhbGxfZGF0YSkpOwpAQCAtODY5LDEwICs4NzAsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgc2VydmVyX29uX3JlY3ZfaW5pdGlhbF9tZXRhZGF0YSwgZWxlbSk7CiAKICAgc2VydmVyX3JlZihjaGFuZC0+c2VydmVyKTsKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKIH0KIAogc3RhdGljIHZvaWQgZGVzdHJveV9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX3N0YXRzICpzdGF0cywgdm9pZCAqaWdub3JlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX2ZpbmFsX2luZm8gKmZpbmFsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppZ25vcmVkKSB7CiAgIGNoYW5uZWxfZGF0YSAqY2hhbmQgPSBlbGVtLT5jaGFubmVsX2RhdGE7CiAgIGNhbGxfZGF0YSAqY2FsbGQgPSBlbGVtLT5jYWxsX2RhdGE7CiAKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5jCmluZGV4IGM1ZjE2ZTUuLjhmM2U1YjUgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmMKKysrIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuYwpAQCAtNDUsMjEgKzQ1LDIxIEBACiAKIGdycGNfbWRlbGVtIGdycGNfc3RhdGljX21kZWxlbV90YWJsZVtHUlBDX1NUQVRJQ19NREVMRU1fQ09VTlRdOwogdWludHB0cl90IGdycGNfc3RhdGljX21kZWxlbV91c2VyX2RhdGFbR1JQQ19TVEFUSUNfTURFTEVNX0NPVU5UXSA9IHsKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDgsIDYsIDIsIDQsIDgsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfTsKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDQsIDgsIDYsIDIsIDQsIDgsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfTsKIAogY29uc3QgdWludDhfdCBncnBjX3N0YXRpY19tZXRhZGF0YV9lbGVtX2luZGljZXNbR1JQQ19TVEFUSUNfTURFTEVNX0NPVU5UICogMl0gPQotICAgIHsxMSwgMzUsIDEwLCAzNSwgMTIsIDM1LCAxMiwgNDksIDEzLCAzNSwgMTQsIDM1LCAxNSwgMzUsIDE2LCAzNSwgMTcsIDM1LAotICAgICAxOSwgMzUsIDIwLCAzNSwgMjEsIDM1LCAyNCwgMzUsIDI1LCAzNSwgMjYsIDM1LCAyNywgMzUsIDI4LCAzNSwgMjksIDM1LAotICAgICAzMCwgMTgsIDMwLCAzNSwgMzEsIDM1LCAzMiwgMzUsIDM2LCAzNSwgMzcsIDM1LCAzOCwgMzUsIDM5LCAzNSwgNDIsIDMzLAotICAgICA0MiwgMzQsIDQyLCA0OCwgNDIsIDUzLCA0MiwgNTQsIDQyLCA1NSwgNDIsIDU2LCA0MywgMzMsIDQzLCA0OCwgNDMsIDUzLAotICAgICA0NiwgMCwgIDQ2LCAxLCAgNDYsIDIsICA1MCwgMzUsIDU3LCAzNSwgNTgsIDM1LCA1OSwgMzUsIDYwLCAzNSwgNjEsIDM1LAotICAgICA2MiwgMzUsIDYzLCAzNSwgNjQsIDM1LCA2NSwgMzUsIDY2LCAzNSwgNjcsIDQwLCA2NywgNjksIDY3LCA3MiwgNjgsIDgwLAotICAgICA2OCwgODEsIDcwLCAzNSwgNzEsIDM1LCA3MywgMzUsIDc0LCAzNSwgNzUsIDM1LCA3NiwgMzUsIDc3LCA0MSwgNzcsIDUxLAotICAgICA3NywgNTIsIDc4LCAzNSwgNzksIDM1LCA4MiwgMywgIDgyLCA0LCAgODIsIDUsICA4MiwgNiwgIDgyLCA3LCAgODIsIDgsCi0gICAgIDgyLCA5LCAgODMsIDM1LCA4NCwgODUsIDg2LCAzNSwgODcsIDM1LCA4OCwgMzUsIDg5LCAzNSwgOTAsIDM1fTsKKyAgICB7MTEsIDMzLCAxMCwgMzMsIDEyLCAzMywgMTIsIDQ5LCAxMywgMzMsIDE0LCAzMywgMTUsIDMzLCAxNiwgMzMsIDE3LCAzMywKKyAgICAgMTksIDMzLCAyMCwgMzMsIDIxLCAzMywgMjIsIDMzLCAyMywgMzMsIDI0LCAzMywgMjUsIDMzLCAyNiwgMzMsIDI3LCAzMywKKyAgICAgMjgsIDE4LCAyOCwgMzMsIDI5LCAzMywgMzAsIDMzLCAzNCwgMzMsIDM1LCAzMywgMzYsIDMzLCAzNywgMzMsIDQwLCAzMSwKKyAgICAgNDAsIDMyLCA0MCwgNDgsIDQwLCA1MywgNDAsIDU0LCA0MCwgNTUsIDQwLCA1NiwgNDIsIDMxLCA0MiwgNDgsIDQyLCA1MywKKyAgICAgNDUsIDAsICA0NSwgMSwgIDQ1LCAyLCAgNTAsIDMzLCA1NywgMzMsIDU4LCAzMywgNTksIDMzLCA2MCwgMzMsIDYxLCAzMywKKyAgICAgNjIsIDMzLCA2MywgMzMsIDY0LCAzMywgNjUsIDMzLCA2NiwgMzMsIDY3LCAzMywgNjgsIDM4LCA2OCwgNzAsIDY4LCA3MywKKyAgICAgNjksIDgxLCA2OSwgODIsIDcxLCAzMywgNzIsIDMzLCA3NCwgMzMsIDc1LCAzMywgNzYsIDMzLCA3NywgMzMsIDc4LCAzOSwKKyAgICAgNzgsIDUxLCA3OCwgNTIsIDc5LCAzMywgODAsIDMzLCA4MywgMywgIDgzLCA0LCAgODMsIDUsICA4MywgNiwgIDgzLCA3LAorICAgICA4MywgOCwgIDgzLCA5LCAgODQsIDMzLCA4NSwgODYsIDg3LCAzMywgODgsIDMzLCA4OSwgMzMsIDkwLCAzMywgOTEsIDMzfTsKIAogY29uc3QgY2hhciAqY29uc3QgZ3JwY19zdGF0aWNfbWV0YWRhdGFfc3RyaW5nc1tHUlBDX1NUQVRJQ19NRFNUUl9DT1VOVF0gPSB7CiAgICAgIjAiLApAQCAtODQsOCArODQsNiBAQAogICAgICI6YXV0aG9yaXR5IiwKICAgICAiYXV0aG9yaXphdGlvbiIsCiAgICAgImNhY2hlLWNvbnRyb2wiLAotICAgICJjZW5zdXMtYmluIiwKLSAgICAiY2Vuc3VzLWJpbmFyeS1iaW4iLAogICAgICJjb250ZW50LWRpc3Bvc2l0aW9uIiwKICAgICAiY29udGVudC1lbmNvZGluZyIsCiAgICAgImNvbnRlbnQtbGFuZ3VhZ2UiLApAQCAtMTA1LDExICsxMDMsMTMgQEAKICAgICAiR0VUIiwKICAgICAiZ3JwYyIsCiAgICAgImdycGMtYWNjZXB0LWVuY29kaW5nIiwKKyAgICAiZ3JwYy1jZW5zdXMtYmluIiwKICAgICAiZ3JwYy1lbmNvZGluZyIsCiAgICAgImdycGMtaW50ZXJuYWwtZW5jb2RpbmctcmVxdWVzdCIsCiAgICAgImdycGMtbWVzc2FnZSIsCiAgICAgImdycGMtc3RhdHVzIiwKICAgICAiZ3JwYy10aW1lb3V0IiwKKyAgICAiZ3JwYy10cmFjaW5nLWJpbiIsCiAgICAgImd6aXAiLAogICAgICJnemlwLCBkZWZsYXRlIiwKICAgICAiaG9zdCIsCkBAIC0xMjYsNyArMTI2LDggQEAKICAgICAiaWYtdW5tb2RpZmllZC1zaW5jZSIsCiAgICAgImxhc3QtbW9kaWZpZWQiLAogICAgICJsaW5rIiwKLSAgICAibG9hZC1yZXBvcnRpbmciLAorICAgICJsb2FkLXJlcG9ydGluZy1pbml0aWFsIiwKKyAgICAibG9hZC1yZXBvcnRpbmctdHJhaWxpbmciLAogICAgICJsb2NhdGlvbiIsCiAgICAgIm1heC1mb3J3YXJkcyIsCiAgICAgIjptZXRob2QiLApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaCBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgKaW5kZXggNWZmMGQyZi4uYjUxYmFjYSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC9zdGF0aWNfbWV0YWRhdGEuaAorKysgYi9zcmMvY29yZS9saWIvdHJhbnNwb3J0L3N0YXRpY19tZXRhZGF0YS5oCkBAIC00NCw3ICs0NCw3IEBACiAKICNpbmNsdWRlICJzcmMvY29yZS9saWIvdHJhbnNwb3J0L21ldGFkYXRhLmgiCiAKLSNkZWZpbmUgR1JQQ19TVEFUSUNfTURTVFJfQ09VTlQgOTEKKyNkZWZpbmUgR1JQQ19TVEFUSUNfTURTVFJfQ09VTlQgOTIKIGV4dGVybiBncnBjX21kc3RyIGdycGNfc3RhdGljX21kc3RyX3RhYmxlW0dSUENfU1RBVElDX01EU1RSX0NPVU5UXTsKIC8qICIwIiAqLwogI2RlZmluZSBHUlBDX01EU1RSXzAgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVswXSkKQEAgLTkwLDU4ICs5MCw1OCBAQAogI2RlZmluZSBHUlBDX01EU1RSX0FVVEhPUklaQVRJT04gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyMF0pCiAvKiAiY2FjaGUtY29udHJvbCIgKi8KICNkZWZpbmUgR1JQQ19NRFNUUl9DQUNIRV9DT05UUk9MICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMjFdKQotLyogImNlbnN1cy1iaW4iICovCi0jZGVmaW5lIEdSUENfTURTVFJfQ0VOU1VTX0JJTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzIyXSkKLS8qICJjZW5zdXMtYmluYXJ5LWJpbiIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9DRU5TVVNfQklOQVJZX0JJTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzIzXSkKIC8qICJjb250ZW50LWRpc3Bvc2l0aW9uIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfRElTUE9TSVRJT04gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyNF0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9ESVNQT1NJVElPTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzIyXSkKIC8qICJjb250ZW50LWVuY29kaW5nIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfRU5DT0RJTkcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyNV0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9FTkNPRElORyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzIzXSkKIC8qICJjb250ZW50LWxhbmd1YWdlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfTEFOR1VBR0UgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyNl0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9MQU5HVUFHRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI0XSkKIC8qICJjb250ZW50LWxlbmd0aCIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9DT05URU5UX0xFTkdUSCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI3XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9DT05URU5UX0xFTkdUSCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI1XSkKIC8qICJjb250ZW50LWxvY2F0aW9uIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfTE9DQVRJT04gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyOF0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9MT0NBVElPTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI2XSkKIC8qICJjb250ZW50LXJhbmdlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfUkFOR0UgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVsyOV0pCisjZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9SQU5HRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI3XSkKIC8qICJjb250ZW50LXR5cGUiICovCi0jZGVmaW5lIEdSUENfTURTVFJfQ09OVEVOVF9UWVBFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzBdKQorI2RlZmluZSBHUlBDX01EU1RSX0NPTlRFTlRfVFlQRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI4XSkKIC8qICJjb29raWUiICovCi0jZGVmaW5lIEdSUENfTURTVFJfQ09PS0lFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzFdKQorI2RlZmluZSBHUlBDX01EU1RSX0NPT0tJRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzI5XSkKIC8qICJkYXRlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0RBVEUgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszMl0pCisjZGVmaW5lIEdSUENfTURTVFJfREFURSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzMwXSkKIC8qICJkZWZsYXRlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0RFRkxBVEUgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszM10pCisjZGVmaW5lIEdSUENfTURTVFJfREVGTEFURSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzMxXSkKIC8qICJkZWZsYXRlLGd6aXAiICovCi0jZGVmaW5lIEdSUENfTURTVFJfREVGTEFURV9DT01NQV9HWklQICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzRdKQorI2RlZmluZSBHUlBDX01EU1RSX0RFRkxBVEVfQ09NTUFfR1pJUCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzMyXSkKIC8qICIiICovCi0jZGVmaW5lIEdSUENfTURTVFJfRU1QVFkgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszNV0pCisjZGVmaW5lIEdSUENfTURTVFJfRU1QVFkgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszM10pCiAvKiAiZXRhZyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9FVEFHICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzZdKQorI2RlZmluZSBHUlBDX01EU1RSX0VUQUcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszNF0pCiAvKiAiZXhwZWN0IiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0VYUEVDVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzM3XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9FWFBFQ1QgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszNV0pCiAvKiAiZXhwaXJlcyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9FWFBJUkVTICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzhdKQorI2RlZmluZSBHUlBDX01EU1RSX0VYUElSRVMgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszNl0pCiAvKiAiZnJvbSIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9GUk9NICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbMzldKQorI2RlZmluZSBHUlBDX01EU1RSX0ZST00gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszN10pCiAvKiAiR0VUIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0dFVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQwXSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9HRVQgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszOF0pCiAvKiAiZ3JwYyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9HUlBDICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDFdKQorI2RlZmluZSBHUlBDX01EU1RSX0dSUEMgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVszOV0pCiAvKiAiZ3JwYy1hY2NlcHQtZW5jb2RpbmciICovCi0jZGVmaW5lIEdSUENfTURTVFJfR1JQQ19BQ0NFUFRfRU5DT0RJTkcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs0Ml0pCisjZGVmaW5lIEdSUENfTURTVFJfR1JQQ19BQ0NFUFRfRU5DT0RJTkcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs0MF0pCisvKiAiZ3JwYy1jZW5zdXMtYmluIiAqLworI2RlZmluZSBHUlBDX01EU1RSX0dSUENfQ0VOU1VTX0JJTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQxXSkKIC8qICJncnBjLWVuY29kaW5nIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0dSUENfRU5DT0RJTkcgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs0M10pCisjZGVmaW5lIEdSUENfTURTVFJfR1JQQ19FTkNPRElORyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQyXSkKIC8qICJncnBjLWludGVybmFsLWVuY29kaW5nLXJlcXVlc3QiICovCi0jZGVmaW5lIEdSUENfTURTVFJfR1JQQ19JTlRFUk5BTF9FTkNPRElOR19SRVFVRVNUICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDRdKQorI2RlZmluZSBHUlBDX01EU1RSX0dSUENfSU5URVJOQUxfRU5DT0RJTkdfUkVRVUVTVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQzXSkKIC8qICJncnBjLW1lc3NhZ2UiICovCi0jZGVmaW5lIEdSUENfTURTVFJfR1JQQ19NRVNTQUdFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDVdKQorI2RlZmluZSBHUlBDX01EU1RSX0dSUENfTUVTU0FHRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQ0XSkKIC8qICJncnBjLXN0YXR1cyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9HUlBDX1NUQVRVUyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQ2XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9HUlBDX1NUQVRVUyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQ1XSkKIC8qICJncnBjLXRpbWVvdXQiICovCi0jZGVmaW5lIEdSUENfTURTVFJfR1JQQ19USU1FT1VUICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDddKQorI2RlZmluZSBHUlBDX01EU1RSX0dSUENfVElNRU9VVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzQ2XSkKKy8qICJncnBjLXRyYWNpbmctYmluIiAqLworI2RlZmluZSBHUlBDX01EU1RSX0dSUENfVFJBQ0lOR19CSU4gKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs0N10pCiAvKiAiZ3ppcCIgKi8KICNkZWZpbmUgR1JQQ19NRFNUUl9HWklQICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNDhdKQogLyogImd6aXAsIGRlZmxhdGUiICovCkBAIC0xNzUsNjIgKzE3NSw2NCBAQAogI2RlZmluZSBHUlBDX01EU1RSX0xBU1RfTU9ESUZJRUQgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs2Ml0pCiAvKiAibGluayIgKi8KICNkZWZpbmUgR1JQQ19NRFNUUl9MSU5LICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNjNdKQotLyogImxvYWQtcmVwb3J0aW5nIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX0xPQURfUkVQT1JUSU5HICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNjRdKQorLyogImxvYWQtcmVwb3J0aW5nLWluaXRpYWwiICovCisjZGVmaW5lIEdSUENfTURTVFJfTE9BRF9SRVBPUlRJTkdfSU5JVElBTCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzY0XSkKKy8qICJsb2FkLXJlcG9ydGluZy10cmFpbGluZyIgKi8KKyNkZWZpbmUgR1JQQ19NRFNUUl9MT0FEX1JFUE9SVElOR19UUkFJTElORyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzY1XSkKIC8qICJsb2NhdGlvbiIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9MT0NBVElPTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzY1XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9MT0NBVElPTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzY2XSkKIC8qICJtYXgtZm9yd2FyZHMiICovCi0jZGVmaW5lIEdSUENfTURTVFJfTUFYX0ZPUldBUkRTICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNjZdKQorI2RlZmluZSBHUlBDX01EU1RSX01BWF9GT1JXQVJEUyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzY3XSkKIC8qICI6bWV0aG9kIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX01FVEhPRCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzY3XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9NRVRIT0QgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs2OF0pCiAvKiAiOnBhdGgiICovCi0jZGVmaW5lIEdSUENfTURTVFJfUEFUSCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzY4XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9QQVRIICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNjldKQogLyogIlBPU1QiICovCi0jZGVmaW5lIEdSUENfTURTVFJfUE9TVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzY5XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9QT1NUICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzBdKQogLyogInByb3h5LWF1dGhlbnRpY2F0ZSIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9QUk9YWV9BVVRIRU5USUNBVEUgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs3MF0pCisjZGVmaW5lIEdSUENfTURTVFJfUFJPWFlfQVVUSEVOVElDQVRFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzFdKQogLyogInByb3h5LWF1dGhvcml6YXRpb24iICovCi0jZGVmaW5lIEdSUENfTURTVFJfUFJPWFlfQVVUSE9SSVpBVElPTiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzcxXSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9QUk9YWV9BVVRIT1JJWkFUSU9OICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzJdKQogLyogIlBVVCIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9QVVQgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs3Ml0pCisjZGVmaW5lIEdSUENfTURTVFJfUFVUICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzNdKQogLyogInJhbmdlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1JBTkdFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzNdKQorI2RlZmluZSBHUlBDX01EU1RSX1JBTkdFICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzRdKQogLyogInJlZmVyZXIiICovCi0jZGVmaW5lIEdSUENfTURTVFJfUkVGRVJFUiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzc0XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9SRUZFUkVSICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzVdKQogLyogInJlZnJlc2giICovCi0jZGVmaW5lIEdSUENfTURTVFJfUkVGUkVTSCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzc1XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9SRUZSRVNIICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzZdKQogLyogInJldHJ5LWFmdGVyIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1JFVFJZX0FGVEVSICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzZdKQorI2RlZmluZSBHUlBDX01EU1RSX1JFVFJZX0FGVEVSICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzddKQogLyogIjpzY2hlbWUiICovCi0jZGVmaW5lIEdSUENfTURTVFJfU0NIRU1FICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzddKQorI2RlZmluZSBHUlBDX01EU1RSX1NDSEVNRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzc4XSkKIC8qICJzZXJ2ZXIiICovCi0jZGVmaW5lIEdSUENfTURTVFJfU0VSVkVSICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbNzhdKQorI2RlZmluZSBHUlBDX01EU1RSX1NFUlZFUiAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzc5XSkKIC8qICJzZXQtY29va2llIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1NFVF9DT09LSUUgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs3OV0pCisjZGVmaW5lIEdSUENfTURTVFJfU0VUX0NPT0tJRSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzgwXSkKIC8qICIvIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1NMQVNIICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbODBdKQorI2RlZmluZSBHUlBDX01EU1RSX1NMQVNIICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbODFdKQogLyogIi9pbmRleC5odG1sIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1NMQVNIX0lOREVYX0RPVF9IVE1MICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbODFdKQorI2RlZmluZSBHUlBDX01EU1RSX1NMQVNIX0lOREVYX0RPVF9IVE1MICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbODJdKQogLyogIjpzdGF0dXMiICovCi0jZGVmaW5lIEdSUENfTURTVFJfU1RBVFVTICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbODJdKQorI2RlZmluZSBHUlBDX01EU1RSX1NUQVRVUyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzgzXSkKIC8qICJzdHJpY3QtdHJhbnNwb3J0LXNlY3VyaXR5IiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1NUUklDVF9UUkFOU1BPUlRfU0VDVVJJVFkgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs4M10pCisjZGVmaW5lIEdSUENfTURTVFJfU1RSSUNUX1RSQU5TUE9SVF9TRUNVUklUWSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg0XSkKIC8qICJ0ZSIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9URSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg0XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9URSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg1XSkKIC8qICJ0cmFpbGVycyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9UUkFJTEVSUyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg1XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9UUkFJTEVSUyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg2XSkKIC8qICJ0cmFuc2Zlci1lbmNvZGluZyIgKi8KLSNkZWZpbmUgR1JQQ19NRFNUUl9UUkFOU0ZFUl9FTkNPRElORyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg2XSkKKyNkZWZpbmUgR1JQQ19NRFNUUl9UUkFOU0ZFUl9FTkNPRElORyAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg3XSkKIC8qICJ1c2VyLWFnZW50IiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1VTRVJfQUdFTlQgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs4N10pCisjZGVmaW5lIEdSUENfTURTVFJfVVNFUl9BR0VOVCAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg4XSkKIC8qICJ2YXJ5IiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1ZBUlkgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs4OF0pCisjZGVmaW5lIEdSUENfTURTVFJfVkFSWSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzg5XSkKIC8qICJ2aWEiICovCi0jZGVmaW5lIEdSUENfTURTVFJfVklBICgmZ3JwY19zdGF0aWNfbWRzdHJfdGFibGVbODldKQorI2RlZmluZSBHUlBDX01EU1RSX1ZJQSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzkwXSkKIC8qICJ3d3ctYXV0aGVudGljYXRlIiAqLwotI2RlZmluZSBHUlBDX01EU1RSX1dXV19BVVRIRU5USUNBVEUgKCZncnBjX3N0YXRpY19tZHN0cl90YWJsZVs5MF0pCisjZGVmaW5lIEdSUENfTURTVFJfV1dXX0FVVEhFTlRJQ0FURSAoJmdycGNfc3RhdGljX21kc3RyX3RhYmxlWzkxXSkKIAotI2RlZmluZSBHUlBDX1NUQVRJQ19NREVMRU1fQ09VTlQgODAKKyNkZWZpbmUgR1JQQ19TVEFUSUNfTURFTEVNX0NPVU5UIDgxCiBleHRlcm4gZ3JwY19tZGVsZW0gZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlW0dSUENfU1RBVElDX01ERUxFTV9DT1VOVF07CiBleHRlcm4gdWludHB0cl90IGdycGNfc3RhdGljX21kZWxlbV91c2VyX2RhdGFbR1JQQ19TVEFUSUNfTURFTEVNX0NPVU5UXTsKIC8qICJhY2NlcHQtY2hhcnNldCI6ICIiICovCkBAIC0zMzUsNzMgKzMzNyw3NiBAQAogI2RlZmluZSBHUlBDX01ERUxFTV9MQVNUX01PRElGSUVEX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzQ1XSkKIC8qICJsaW5rIjogIiIgKi8KICNkZWZpbmUgR1JQQ19NREVMRU1fTElOS19FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs0Nl0pCi0vKiAibG9hZC1yZXBvcnRpbmciOiAiIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9MT0FEX1JFUE9SVElOR19FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs0N10pCisvKiAibG9hZC1yZXBvcnRpbmctaW5pdGlhbCI6ICIiICovCisjZGVmaW5lIEdSUENfTURFTEVNX0xPQURfUkVQT1JUSU5HX0lOSVRJQUxfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNDddKQorLyogImxvYWQtcmVwb3J0aW5nLXRyYWlsaW5nIjogIiIgKi8KKyNkZWZpbmUgR1JQQ19NREVMRU1fTE9BRF9SRVBPUlRJTkdfVFJBSUxJTkdfRU1QVFkgXAorICAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs0OF0pCiAvKiAibG9jYXRpb24iOiAiIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9MT0NBVElPTl9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs0OF0pCisjZGVmaW5lIEdSUENfTURFTEVNX0xPQ0FUSU9OX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzQ5XSkKIC8qICJtYXgtZm9yd2FyZHMiOiAiIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9NQVhfRk9SV0FSRFNfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNDldKQorI2RlZmluZSBHUlBDX01ERUxFTV9NQVhfRk9SV0FSRFNfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNTBdKQogLyogIjptZXRob2QiOiAiR0VUIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9NRVRIT0RfR0VUICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzUwXSkKKyNkZWZpbmUgR1JQQ19NREVMRU1fTUVUSE9EX0dFVCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs1MV0pCiAvKiAiOm1ldGhvZCI6ICJQT1NUIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9NRVRIT0RfUE9TVCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs1MV0pCisjZGVmaW5lIEdSUENfTURFTEVNX01FVEhPRF9QT1NUICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzUyXSkKIC8qICI6bWV0aG9kIjogIlBVVCIgKi8KLSNkZWZpbmUgR1JQQ19NREVMRU1fTUVUSE9EX1BVVCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs1Ml0pCisjZGVmaW5lIEdSUENfTURFTEVNX01FVEhPRF9QVVQgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNTNdKQogLyogIjpwYXRoIjogIi8iICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1BBVEhfU0xBU0ggKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNTNdKQorI2RlZmluZSBHUlBDX01ERUxFTV9QQVRIX1NMQVNIICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzU0XSkKIC8qICI6cGF0aCI6ICIvaW5kZXguaHRtbCIgKi8KLSNkZWZpbmUgR1JQQ19NREVMRU1fUEFUSF9TTEFTSF9JTkRFWF9ET1RfSFRNTCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs1NF0pCisjZGVmaW5lIEdSUENfTURFTEVNX1BBVEhfU0xBU0hfSU5ERVhfRE9UX0hUTUwgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNTVdKQogLyogInByb3h5LWF1dGhlbnRpY2F0ZSI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1BST1hZX0FVVEhFTlRJQ0FURV9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs1NV0pCisjZGVmaW5lIEdSUENfTURFTEVNX1BST1hZX0FVVEhFTlRJQ0FURV9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs1Nl0pCiAvKiAicHJveHktYXV0aG9yaXphdGlvbiI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1BST1hZX0FVVEhPUklaQVRJT05fRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNTZdKQorI2RlZmluZSBHUlBDX01ERUxFTV9QUk9YWV9BVVRIT1JJWkFUSU9OX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzU3XSkKIC8qICJyYW5nZSI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1JBTkdFX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzU3XSkKKyNkZWZpbmUgR1JQQ19NREVMRU1fUkFOR0VfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNThdKQogLyogInJlZmVyZXIiOiAiIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9SRUZFUkVSX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzU4XSkKKyNkZWZpbmUgR1JQQ19NREVMRU1fUkVGRVJFUl9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs1OV0pCiAvKiAicmVmcmVzaCI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1JFRlJFU0hfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNTldKQorI2RlZmluZSBHUlBDX01ERUxFTV9SRUZSRVNIX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzYwXSkKIC8qICJyZXRyeS1hZnRlciI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1JFVFJZX0FGVEVSX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzYwXSkKKyNkZWZpbmUgR1JQQ19NREVMRU1fUkVUUllfQUZURVJfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNjFdKQogLyogIjpzY2hlbWUiOiAiZ3JwYyIgKi8KLSNkZWZpbmUgR1JQQ19NREVMRU1fU0NIRU1FX0dSUEMgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNjFdKQorI2RlZmluZSBHUlBDX01ERUxFTV9TQ0hFTUVfR1JQQyAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs2Ml0pCiAvKiAiOnNjaGVtZSI6ICJodHRwIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9TQ0hFTUVfSFRUUCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs2Ml0pCisjZGVmaW5lIEdSUENfTURFTEVNX1NDSEVNRV9IVFRQICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzYzXSkKIC8qICI6c2NoZW1lIjogImh0dHBzIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9TQ0hFTUVfSFRUUFMgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNjNdKQorI2RlZmluZSBHUlBDX01ERUxFTV9TQ0hFTUVfSFRUUFMgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNjRdKQogLyogInNlcnZlciI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1NFUlZFUl9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs2NF0pCisjZGVmaW5lIEdSUENfTURFTEVNX1NFUlZFUl9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs2NV0pCiAvKiAic2V0LWNvb2tpZSI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1NFVF9DT09LSUVfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNjVdKQorI2RlZmluZSBHUlBDX01ERUxFTV9TRVRfQ09PS0lFX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzY2XSkKIC8qICI6c3RhdHVzIjogIjIwMCIgKi8KLSNkZWZpbmUgR1JQQ19NREVMRU1fU1RBVFVTXzIwMCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs2Nl0pCisjZGVmaW5lIEdSUENfTURFTEVNX1NUQVRVU18yMDAgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNjddKQogLyogIjpzdGF0dXMiOiAiMjA0IiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9TVEFUVVNfMjA0ICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzY3XSkKKyNkZWZpbmUgR1JQQ19NREVMRU1fU1RBVFVTXzIwNCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs2OF0pCiAvKiAiOnN0YXR1cyI6ICIyMDYiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1NUQVRVU18yMDYgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNjhdKQorI2RlZmluZSBHUlBDX01ERUxFTV9TVEFUVVNfMjA2ICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzY5XSkKIC8qICI6c3RhdHVzIjogIjMwNCIgKi8KLSNkZWZpbmUgR1JQQ19NREVMRU1fU1RBVFVTXzMwNCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs2OV0pCisjZGVmaW5lIEdSUENfTURFTEVNX1NUQVRVU18zMDQgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzBdKQogLyogIjpzdGF0dXMiOiAiNDAwIiAqLwotI2RlZmluZSBHUlBDX01ERUxFTV9TVEFUVVNfNDAwICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzcwXSkKKyNkZWZpbmUgR1JQQ19NREVMRU1fU1RBVFVTXzQwMCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs3MV0pCiAvKiAiOnN0YXR1cyI6ICI0MDQiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1NUQVRVU180MDQgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzFdKQorI2RlZmluZSBHUlBDX01ERUxFTV9TVEFUVVNfNDA0ICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzcyXSkKIC8qICI6c3RhdHVzIjogIjUwMCIgKi8KLSNkZWZpbmUgR1JQQ19NREVMRU1fU1RBVFVTXzUwMCAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs3Ml0pCisjZGVmaW5lIEdSUENfTURFTEVNX1NUQVRVU181MDAgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzNdKQogLyogInN0cmljdC10cmFuc3BvcnQtc2VjdXJpdHkiOiAiIiAqLwogI2RlZmluZSBHUlBDX01ERUxFTV9TVFJJQ1RfVFJBTlNQT1JUX1NFQ1VSSVRZX0VNUFRZIFwKLSAgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzNdKQorICAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs3NF0pCiAvKiAidGUiOiAidHJhaWxlcnMiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1RFX1RSQUlMRVJTICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzc0XSkKKyNkZWZpbmUgR1JQQ19NREVMRU1fVEVfVFJBSUxFUlMgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzVdKQogLyogInRyYW5zZmVyLWVuY29kaW5nIjogIiIgKi8KLSNkZWZpbmUgR1JQQ19NREVMRU1fVFJBTlNGRVJfRU5DT0RJTkdfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzVdKQorI2RlZmluZSBHUlBDX01ERUxFTV9UUkFOU0ZFUl9FTkNPRElOR19FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs3Nl0pCiAvKiAidXNlci1hZ2VudCI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1VTRVJfQUdFTlRfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzZdKQorI2RlZmluZSBHUlBDX01ERUxFTV9VU0VSX0FHRU5UX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzc3XSkKIC8qICJ2YXJ5IjogIiIgKi8KLSNkZWZpbmUgR1JQQ19NREVMRU1fVkFSWV9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs3N10pCisjZGVmaW5lIEdSUENfTURFTEVNX1ZBUllfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzhdKQogLyogInZpYSI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1ZJQV9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs3OF0pCisjZGVmaW5lIEdSUENfTURFTEVNX1ZJQV9FTVBUWSAoJmdycGNfc3RhdGljX21kZWxlbV90YWJsZVs3OV0pCiAvKiAid3d3LWF1dGhlbnRpY2F0ZSI6ICIiICovCi0jZGVmaW5lIEdSUENfTURFTEVNX1dXV19BVVRIRU5USUNBVEVfRU1QVFkgKCZncnBjX3N0YXRpY19tZGVsZW1fdGFibGVbNzldKQorI2RlZmluZSBHUlBDX01ERUxFTV9XV1dfQVVUSEVOVElDQVRFX0VNUFRZICgmZ3JwY19zdGF0aWNfbWRlbGVtX3RhYmxlWzgwXSkKIAogZXh0ZXJuIGNvbnN0IHVpbnQ4X3QKICAgICBncnBjX3N0YXRpY19tZXRhZGF0YV9lbGVtX2luZGljZXNbR1JQQ19TVEFUSUNfTURFTEVNX0NPVU5UICogMl07CmRpZmYgLS1naXQgYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5oIGIvc3JjL2NvcmUvbGliL3RyYW5zcG9ydC90cmFuc3BvcnQuaAppbmRleCAwOGMwYTIzLi5lMzNmYzVjIDEwMDY0NAotLS0gYS9zcmMvY29yZS9saWIvdHJhbnNwb3J0L3RyYW5zcG9ydC5oCisrKyBiL3NyYy9jb3JlL2xpYi90cmFuc3BvcnQvdHJhbnNwb3J0LmgKQEAgLTEzOCw3ICsxMzgsNyBAQAogICAvKiogSWYgIT0gR1JQQ19FUlJPUl9OT05FLCBjYW5jZWwgdGhpcyBzdHJlYW0gKi8KICAgZ3JwY19lcnJvciAqY2FuY2VsX2Vycm9yOwogCi0gIC8qKiBJZiAhPSBHUlBDX0VSUk9SLCBzZW5kIGdycGMtc3RhdHVzLCBncnBjLW1lc3NhZ2UsIGFuZCBjbG9zZSB0aGlzCisgIC8qKiBJZiAhPSBHUlBDX0VSUk9SX05PTkUsIHNlbmQgZ3JwYy1zdGF0dXMsIGdycGMtbWVzc2FnZSwgYW5kIGNsb3NlIHRoaXMKICAgICAgIHN0cmVhbSBmb3IgYm90aCByZWFkaW5nIGFuZCB3cml0aW5nICovCiAgIGdycGNfZXJyb3IgKmNsb3NlX2Vycm9yOwogCmRpZmYgLS1naXQgYS9zcmMvY29yZS9wbHVnaW5fcmVnaXN0cnkvZ3JwY19wbHVnaW5fcmVnaXN0cnkuYyBiL3NyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jCmluZGV4IDkwNWNkNTkuLjdhN2E5Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jCisrKyBiL3NyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3BsdWdpbl9yZWdpc3RyeS5jCkBAIC0zNyw2ICszNyw4IEBACiBleHRlcm4gdm9pZCBncnBjX2NodHRwMl9wbHVnaW5fc2h1dGRvd24odm9pZCk7CiBleHRlcm4gdm9pZCBncnBjX2NsaWVudF9jb25maWdfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIGdycGNfY2xpZW50X2NvbmZpZ19zaHV0ZG93bih2b2lkKTsKK2V4dGVybiB2b2lkIGdycGNfbGJfcG9saWN5X2dycGNsYl9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgZ3JwY19sYl9wb2xpY3lfZ3JwY2xiX3NodXRkb3duKHZvaWQpOwogZXh0ZXJuIHZvaWQgZ3JwY19sYl9wb2xpY3lfcGlja19maXJzdF9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgZ3JwY19sYl9wb2xpY3lfcGlja19maXJzdF9zaHV0ZG93bih2b2lkKTsKIGV4dGVybiB2b2lkIGdycGNfbGJfcG9saWN5X3JvdW5kX3JvYmluX2luaXQodm9pZCk7CkBAIC01NSw2ICs1Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2h0dHAyX3BsdWdpbl9zaHV0ZG93bik7CiAgIGdycGNfcmVnaXN0ZXJfcGx1Z2luKGdycGNfY2xpZW50X2NvbmZpZ19pbml0LAogICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NsaWVudF9jb25maWdfc2h1dGRvd24pOworICBncnBjX3JlZ2lzdGVyX3BsdWdpbihncnBjX2xiX3BvbGljeV9ncnBjbGJfaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19sYl9wb2xpY3lfZ3JwY2xiX3NodXRkb3duKTsKICAgZ3JwY19yZWdpc3Rlcl9wbHVnaW4oZ3JwY19sYl9wb2xpY3lfcGlja19maXJzdF9pbml0LAogICAgICAgICAgICAgICAgICAgICAgICBncnBjX2xiX3BvbGljeV9waWNrX2ZpcnN0X3NodXRkb3duKTsKICAgZ3JwY19yZWdpc3Rlcl9wbHVnaW4oZ3JwY19sYl9wb2xpY3lfcm91bmRfcm9iaW5faW5pdCwKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3BsdWdpbl9yZWdpc3RyeS9ncnBjX3Vuc2VjdXJlX3BsdWdpbl9yZWdpc3RyeS5jIGIvc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfdW5zZWN1cmVfcGx1Z2luX3JlZ2lzdHJ5LmMKaW5kZXggNzk5NTA3OC4uYWQ0ZGRmMCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfdW5zZWN1cmVfcGx1Z2luX3JlZ2lzdHJ5LmMKKysrIGIvc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfdW5zZWN1cmVfcGx1Z2luX3JlZ2lzdHJ5LmMKQEAgLTQzLDYgKzQzLDggQEAKIGV4dGVybiB2b2lkIGdycGNfcmVzb2x2ZXJfc29ja2FkZHJfc2h1dGRvd24odm9pZCk7CiBleHRlcm4gdm9pZCBncnBjX2xvYWRfcmVwb3J0aW5nX3BsdWdpbl9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgZ3JwY19sb2FkX3JlcG9ydGluZ19wbHVnaW5fc2h1dGRvd24odm9pZCk7CitleHRlcm4gdm9pZCBncnBjX2xiX3BvbGljeV9ncnBjbGJfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIGdycGNfbGJfcG9saWN5X2dycGNsYl9zaHV0ZG93bih2b2lkKTsKIGV4dGVybiB2b2lkIGdycGNfbGJfcG9saWN5X3BpY2tfZmlyc3RfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIGdycGNfbGJfcG9saWN5X3BpY2tfZmlyc3Rfc2h1dGRvd24odm9pZCk7CiBleHRlcm4gdm9pZCBncnBjX2xiX3BvbGljeV9yb3VuZF9yb2Jpbl9pbml0KHZvaWQpOwpAQCAtNjEsNiArNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICBncnBjX3Jlc29sdmVyX3NvY2thZGRyX3NodXRkb3duKTsKICAgZ3JwY19yZWdpc3Rlcl9wbHVnaW4oZ3JwY19sb2FkX3JlcG9ydGluZ19wbHVnaW5faW5pdCwKICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19sb2FkX3JlcG9ydGluZ19wbHVnaW5fc2h1dGRvd24pOworICBncnBjX3JlZ2lzdGVyX3BsdWdpbihncnBjX2xiX3BvbGljeV9ncnBjbGJfaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19sYl9wb2xpY3lfZ3JwY2xiX3NodXRkb3duKTsKICAgZ3JwY19yZWdpc3Rlcl9wbHVnaW4oZ3JwY19sYl9wb2xpY3lfcGlja19maXJzdF9pbml0LAogICAgICAgICAgICAgICAgICAgICAgICBncnBjX2xiX3BvbGljeV9waWNrX2ZpcnN0X3NodXRkb3duKTsKICAgZ3JwY19yZWdpc3Rlcl9wbHVnaW4oZ3JwY19sYl9wb2xpY3lfcm91bmRfcm9iaW5faW5pdCwKZGlmZiAtLWdpdCBhL3NyYy9jcHAvZXh0L3Byb3RvX3NlcnZlcl9yZWZsZWN0aW9uLmggYi9zcmMvY3BwL2V4dC9wcm90b19zZXJ2ZXJfcmVmbGVjdGlvbi5oCmluZGV4IDIzYzEzMDUuLmY2NmYzYzIgMTAwNjQ0Ci0tLSBhL3NyYy9jcHAvZXh0L3Byb3RvX3NlcnZlcl9yZWZsZWN0aW9uLmgKKysrIGIvc3JjL2NwcC9leHQvcHJvdG9fc2VydmVyX3JlZmxlY3Rpb24uaApAQCAtMzAsMTMgKzMwLDMxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLworCisvKgorICAtIElmIHRoZSBnZW5lcmF0ZWQgaGVhZGVyIGBncnBjKysvZXh0L3JlZmxlY3Rpb24uZ3JwYy5wYi5oYCBuZWVkcyB0byBiZQorICAgIGluc3RhbGxlZCwgdGFyZ2V0IGBncnBjKytfcmVmbGVjdGlvbmAgaW4gYGJ1aWxkLnlhbWxgIHNob3VsZCB1c2UgdGhlCisgICAgZmlsZWdyb3VwIGBncnBjKytfcmVmbGVjdGlvbl9wcm90b2AsIGFuZCBHUlBDX05PX0dFTkVSQVRFRF9DT0RFIHNob3VsZCBub3QKKyAgICBiZSBkZWZpbmVkLgorICAtIElmIHRoZSBzZXJ2ZXIgcmVmbGVjdGlvbiBsaWJyYXJ5IG5lZWRzIHRvIGdlbmVyYXRlIGByZWZsZWN0aW9uLmdycGMucGIuaGAKKyAgICBmcm9tIGByZWZsZWN0aW9uLnByb3RvYCBhdCBjb21waWxlIHRpbWUsIHRoZSBnZW5lcmF0ZWQgaGVhZGVyCisgICAgYGdycGMrKy9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmhgIHNob3VsZCBub3QgYmUgaW5zdGFsbGVkLiBJbiB0aGlzIGNhc2UsCisgICAgdGFyZ2V0IGBncnBjKytfcmVmbGVjdGlvbmAgc2hvdWxkIGRlcGVuZCBvbiBgZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbmAsIGFuZAorICAgIEdSUENfTk9fR0VORVJBVEVEX0NPREUgc2hvdWxkIGJlIGRlZmluZWQuCisqLworCiAjaWZuZGVmIEdSUENfSU5URVJOQUxfQ1BQX0VYVF9QUk9UT19TRVJWRVJfUkVGTEVDVElPTl9ICiAjZGVmaW5lIEdSUENfSU5URVJOQUxfQ1BQX0VYVF9QUk9UT19TRVJWRVJfUkVGTEVDVElPTl9ICiAKICNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorLy8gR1JQQ19OT19HRU5FUkFURURfQ09ERSBpbmRpY2F0ZXMgZ2VuZXJhdGVkIHBiIGZpbGVzIHNob3VsZCBub3QgYmUgdXNlZAorI2lmZGVmIEdSUENfTk9fR0VORVJBVEVEX0NPREUKKyNpbmNsdWRlICJzcmMvcHJvdG8vZ3JwYy9yZWZsZWN0aW9uL3YxYWxwaGEvcmVmbGVjdGlvbi5ncnBjLnBiLmgiCisjZWxzZQogI2luY2x1ZGUgPGdycGMrKy9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmg+CisjZW5kaWYgIC8vIEdSUENfTk9fR0VORVJBVEVEX0NPREUKICNpbmNsdWRlIDxncnBjKysvZ3JwYysrLmg+CiAKIG5hbWVzcGFjZSBncnBjIHsKZGlmZiAtLWdpdCBhL3NyYy9jcHAvc2VydmVyL3NlcnZlcl9jb250ZXh0LmNjIGIvc3JjL2NwcC9zZXJ2ZXIvc2VydmVyX2NvbnRleHQuY2MKaW5kZXggNDMxMTdmZC4uMWNhNmEyYiAxMDA2NDQKLS0tIGEvc3JjL2NwcC9zZXJ2ZXIvc2VydmVyX2NvbnRleHQuY2MKKysrIGIvc3JjL2NwcC9zZXJ2ZXIvc2VydmVyX2NvbnRleHQuY2MKQEAgLTEyOSw3ICsxMjksOCBAQAogICAgICAgZGVhZGxpbmVfKGdwcl9pbmZfZnV0dXJlKEdQUl9DTE9DS19SRUFMVElNRSkpLAogICAgICAgY2FsbF8obnVsbHB0ciksCiAgICAgICBjcV8obnVsbHB0ciksCi0gICAgICBzZW50X2luaXRpYWxfbWV0YWRhdGFfKGZhbHNlKSB7fQorICAgICAgc2VudF9pbml0aWFsX21ldGFkYXRhXyhmYWxzZSksCisgICAgICBjb21wcmVzc2lvbl9sZXZlbF9zZXRfKGZhbHNlKSB7fQogCiBTZXJ2ZXJDb250ZXh0OjpTZXJ2ZXJDb250ZXh0KGdwcl90aW1lc3BlYyBkZWFkbGluZSwgZ3JwY19tZXRhZGF0YSogbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtZXRhZGF0YV9jb3VudCkKQEAgLTEzOSw3ICsxNDAsOCBAQAogICAgICAgZGVhZGxpbmVfKGRlYWRsaW5lKSwKICAgICAgIGNhbGxfKG51bGxwdHIpLAogICAgICAgY3FfKG51bGxwdHIpLAotICAgICAgc2VudF9pbml0aWFsX21ldGFkYXRhXyhmYWxzZSkgeworICAgICAgc2VudF9pbml0aWFsX21ldGFkYXRhXyhmYWxzZSksCisgICAgICBjb21wcmVzc2lvbl9sZXZlbF9zZXRfKGZhbHNlKSB7CiAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWV0YWRhdGFfY291bnQ7IGkrKykgewogICAgIGNsaWVudF9tZXRhZGF0YV8uaW5zZXJ0KHN0ZDo6cGFpcjxncnBjOjpzdHJpbmdfcmVmLCBncnBjOjpzdHJpbmdfcmVmPigKICAgICAgICAgbWV0YWRhdGFbaV0ua2V5LApAQCAtMTk0LDE1ICsxOTYsNiBAQAogICB9CiB9CiAKLXZvaWQgU2VydmVyQ29udGV4dDo6c2V0X2NvbXByZXNzaW9uX2xldmVsKGdycGNfY29tcHJlc3Npb25fbGV2ZWwgbGV2ZWwpIHsKLSAgLy8gVE9ETyhkZ3EpOiBnZXQgcmlkIG9mIGdycGNfY2FsbF9jb21wcmVzc2lvbl9mb3JfbGV2ZWwgYW5kIHByb3BhZ2F0ZSB0aGUKLSAgLy8gY29tcHJlc3Npb24gbGV2ZWwgYnkgYWRkaW5nIGEgbmV3IGFyZ3VtZW50IHRvCi0gIC8vIENhbGxPcFNlbmRJbml0aWFsTWV0YWRhdGE6OlNlbmRJbml0aWFsTWV0YWRhdGEuCi0gIGNvbnN0IGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtIGFsZ29yaXRobV9mb3JfbGV2ZWwgPQotICAgICAgZ3JwY19jYWxsX2NvbXByZXNzaW9uX2Zvcl9sZXZlbChjYWxsXywgbGV2ZWwpOwotICBzZXRfY29tcHJlc3Npb25fYWxnb3JpdGhtKGFsZ29yaXRobV9mb3JfbGV2ZWwpOwotfQotCiB2b2lkIFNlcnZlckNvbnRleHQ6OnNldF9jb21wcmVzc2lvbl9hbGdvcml0aG0oCiAgICAgZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG0gYWxnb3JpdGhtKSB7CiAgIGNoYXIqIGFsZ29yaXRobV9uYW1lID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvLm51Z2V0L3BhY2thZ2VzLmNvbmZpZyBiL3NyYy9jc2hhcnAvLm51Z2V0L3BhY2thZ2VzLmNvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE1NGIzNS4uMDAwMDAwMAotLS0gYS9zcmMvY3NoYXJwLy5udWdldC9wYWNrYWdlcy5jb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08cGFja2FnZXM+Ci0gIDxwYWNrYWdlIGlkPSJOVW5pdC5Db25zb2xlUnVubmVyIiB2ZXJzaW9uPSIzLjIuMCIgLz4KLSAgPHBhY2thZ2UgaWQ9Ik9wZW5Db3ZlciIgdmVyc2lvbj0iNC42LjUxOSIgLz4KLSAgPHBhY2thZ2UgaWQ9IlJlcG9ydEdlbmVyYXRvciIgdmVyc2lvbj0iMi40LjQuMCIgLz4KLTwvcGFja2FnZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkNvcmUuVGVzdHMvU2FuaXR5VGVzdC5jcyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlLlRlc3RzL1Nhbml0eVRlc3QuY3MKaW5kZXggNTAxOTkyYy4uOWQwNjlmYSAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkNvcmUuVGVzdHMvU2FuaXR5VGVzdC5jcworKysgYi9zcmMvY3NoYXJwL0dycGMuQ29yZS5UZXN0cy9TYW5pdHlUZXN0LmNzCkBAIC01OCwxMCArNTgsMTEgQEAKICAgICAgICAgW1Rlc3RdCiAgICAgICAgIHB1YmxpYyB2b2lkIFRlc3RzSnNvblVwVG9EYXRlKCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGRpc2NvdmVyZWRUZXN0cyA9IERpc2NvdmVyQWxsVGVzdENsYXNzZXMoKTsKLSAgICAgICAgICAgIHN0cmluZyBkaXNjb3ZlcmVkVGVzdHNKc29uID0gSnNvbkNvbnZlcnQuU2VyaWFsaXplT2JqZWN0KGRpc2NvdmVyZWRUZXN0cywgRm9ybWF0dGluZy5JbmRlbnRlZCk7CisgICAgICAgICAgICBEaWN0aW9uYXJ5PHN0cmluZywgTGlzdDxzdHJpbmc+PiBkaXNjb3ZlcmVkVGVzdHMgPSBEaXNjb3ZlckFsbFRlc3RDbGFzc2VzKCk7CisJCQlEaWN0aW9uYXJ5PHN0cmluZywgTGlzdDxzdHJpbmc+PiB0ZXN0c0Zyb21GaWxlIAorCQkJICAgID0gSnNvbkNvbnZlcnQuRGVzZXJpYWxpemVPYmplY3Q8RGljdGlvbmFyeTxzdHJpbmcsIExpc3Q8c3RyaW5nPj4+KFJlYWRUZXN0c0pzb24oKSk7CiAKLSAgICAgICAgICAgIEFzc2VydC5BcmVFcXVhbChkaXNjb3ZlcmVkVGVzdHNKc29uLCBSZWFkVGVzdHNKc29uKCkpOworICAgICAgICAgICAgQXNzZXJ0LkFyZUVxdWFsKGRpc2NvdmVyZWRUZXN0cywgdGVzdHNGcm9tRmlsZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLy8gPHN1bW1hcnk+CmRpZmYgLS1naXQgYS9zcmMvY3NoYXJwL0dycGMuQ29yZS5UZXN0cy9wYWNrYWdlcy5jb25maWcgYi9zcmMvY3NoYXJwL0dycGMuQ29yZS5UZXN0cy9wYWNrYWdlcy5jb25maWcKaW5kZXggYWE3ZDk1MS4uNmE5MzBjMSAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkNvcmUuVGVzdHMvcGFja2FnZXMuY29uZmlnCisrKyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlLlRlc3RzL3BhY2thZ2VzLmNvbmZpZwpAQCAtNCw0ICs0LDcgQEAKICAgPHBhY2thZ2UgaWQ9Ik5ld3RvbnNvZnQuSnNvbiIgdmVyc2lvbj0iNy4wLjEiIHRhcmdldEZyYW1ld29yaz0ibmV0NDUiIC8+CiAgIDxwYWNrYWdlIGlkPSJOVW5pdCIgdmVyc2lvbj0iMy4yLjAiIHRhcmdldEZyYW1ld29yaz0ibmV0NDUiIC8+CiAgIDxwYWNrYWdlIGlkPSJOVW5pdExpdGUiIHZlcnNpb249IjMuMi4wIiB0YXJnZXRGcmFtZXdvcms9Im5ldDQ1IiAvPgotPC9wYWNrYWdlcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgIDxwYWNrYWdlIGlkPSJOVW5pdC5Db25zb2xlUnVubmVyIiB2ZXJzaW9uPSIzLjIuMCIgLz4KKyAgPHBhY2thZ2UgaWQ9Ik9wZW5Db3ZlciIgdmVyc2lvbj0iNC42LjUxOSIgLz4KKyAgPHBhY2thZ2UgaWQ9IlJlcG9ydEdlbmVyYXRvciIgdmVyc2lvbj0iMi40LjQuMCIgLz4KKzwvcGFja2FnZXM+CmRpZmYgLS1naXQgYS9zcmMvY3NoYXJwL0dycGMuQ29yZS5UZXN0cy9wcm9qZWN0Lmpzb24gYi9zcmMvY3NoYXJwL0dycGMuQ29yZS5UZXN0cy9wcm9qZWN0Lmpzb24KaW5kZXggZjU4YmNiYi4uNGE2ODJkOSAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkNvcmUuVGVzdHMvcHJvamVjdC5qc29uCisrKyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlLlRlc3RzL3Byb2plY3QuanNvbgpAQCAtMTQsMTAgKzE0LDEwIEBACiAgICAgICAgIH0sCiAgICAgICAgICJjb3B5VG9PdXRwdXQiOiB7CiAgICAgICAgICAgIm1hcHBpbmdzIjogewotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDg2L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL2xpbnV4X3g2NC9saWJncnBjX2NzaGFycF9leHQuc28iOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL21hY29zeF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDY0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDg2LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuc28iOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTMzLDEwICszMywxMCBAQAogICAgICAgICB9LAogICAgICAgICAiY29weVRvT3V0cHV0IjogewogICAgICAgICAgICJtYXBwaW5ncyI6IHsKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDg2L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuc28iOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTU0LDcgKzU0LDEwIEBACiAgICAgfSwKICAgICAiTmV3dG9uc29mdC5Kc29uIjogIjguMC4zIiwKICAgICAiTlVuaXQiOiAiMy4yLjAiLAotICAgICJOVW5pdExpdGUiOiAiMy4yLjAtKiIKKyAgICAiTlVuaXRMaXRlIjogIjMuMi4wLSoiLAorICAgICJOVW5pdC5Db25zb2xlUnVubmVyIjogIjMuMi4wIiwKKyAgICAiT3BlbkNvdmVyIjogIjQuNi41MTkiLAorICAgICJSZXBvcnRHZW5lcmF0b3IiOiAiMi40LjQuMCIKICAgfSwKICAgImZyYW1ld29ya3MiOiB7CiAgICAgIm5ldDQ1IjogeyB9LApkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvR3JwYy5Db3JlLm51c3BlYyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlL0dycGMuQ29yZS5udXNwZWMKaW5kZXggNDc1OTNmNy4uNTQzNTQ5ZSAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvR3JwYy5Db3JlLm51c3BlYworKysgYi9zcmMvY3NoYXJwL0dycGMuQ29yZS9HcnBjLkNvcmUubnVzcGVjCkBAIC0yNSwxMSArMjUsMTEgQEAKICAgICA8ZmlsZSBzcmM9IioqXCouY3MiIHRhcmdldD0ic3JjIiAvPgogICAgIDxmaWxlIHNyYz0iR3JwYy5Db3JlLnRhcmdldHMiIHRhcmdldD0iXGJ1aWxkXG5ldDQ1XEdycGMuQ29yZS50YXJnZXRzIiAvPgogICAgIDwhLS0gd2l0aG91dCBiYWNrc2xhc2hlcyBpbiB0aGUgdGhlIHNvdXJjZSBwYXRoLCBudWdldCB3b24ndCBjb3B5IHRoZSBmaWxlcyAtLT4KLSAgICA8ZmlsZSBzcmM9Ii4uXG5hdGl2ZWxpYnNcd2luZG93c194ODZcZ3JwY19jc2hhcnBfZXh0LmRsbCIgdGFyZ2V0PSIvYnVpbGQvbmF0aXZlL2Jpbi93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIiAvPgotICAgIDxmaWxlIHNyYz0iLi5cbmF0aXZlbGlic1x3aW5kb3dzX3g2NFxncnBjX2NzaGFycF9leHQuZGxsIiB0YXJnZXQ9Ii9idWlsZC9uYXRpdmUvYmluL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiIC8+Ci0gICAgPGZpbGUgc3JjPSIuLlxuYXRpdmVsaWJzXGxpbnV4X3g4NlxsaWJncnBjX2NzaGFycF9leHQuc28iIHRhcmdldD0iL2J1aWxkL25hdGl2ZS9iaW4vbGludXhfeDg2L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIgLz4KLSAgICA8ZmlsZSBzcmM9Ii4uXG5hdGl2ZWxpYnNcbGludXhfeDY0XGxpYmdycGNfY3NoYXJwX2V4dC5zbyIgdGFyZ2V0PSIvYnVpbGQvbmF0aXZlL2Jpbi9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiAvPgotICAgIDxmaWxlIHNyYz0iLi5cbmF0aXZlbGlic1xtYWNvc3hfeDg2XGxpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIgdGFyZ2V0PSIvYnVpbGQvbmF0aXZlL2Jpbi9tYWNvc3hfeDg2L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIgLz4KLSAgICA8ZmlsZSBzcmM9Ii4uXG5hdGl2ZWxpYnNcbWFjb3N4X3g2NFxsaWJncnBjX2NzaGFycF9leHQuZHlsaWIiIHRhcmdldD0iL2J1aWxkL25hdGl2ZS9iaW4vbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiIC8+CisgICAgPGZpbGUgc3JjPSIuLlxuYXRpdmVsaWJzXHdpbmRvd3NfeDg2XGdycGNfY3NoYXJwX2V4dC5kbGwiIHRhcmdldD0iL3J1bnRpbWVzL3dpbi9uYXRpdmUvZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiIC8+CisgICAgPGZpbGUgc3JjPSIuLlxuYXRpdmVsaWJzXHdpbmRvd3NfeDY0XGdycGNfY3NoYXJwX2V4dC5kbGwiIHRhcmdldD0iL3J1bnRpbWVzL3dpbi9uYXRpdmUvZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiIC8+CisgICAgPGZpbGUgc3JjPSIuLlxuYXRpdmVsaWJzXGxpbnV4X3g4NlxsaWJncnBjX2NzaGFycF9leHQuc28iIHRhcmdldD0iL3J1bnRpbWVzL2xpbnV4L25hdGl2ZS9saWJncnBjX2NzaGFycF9leHQueDg2LnNvIiAvPgorICAgIDxmaWxlIHNyYz0iLi5cbmF0aXZlbGlic1xsaW51eF94NjRcbGliZ3JwY19jc2hhcnBfZXh0LnNvIiB0YXJnZXQ9Ii9ydW50aW1lcy9saW51eC9uYXRpdmUvbGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyIgLz4KKyAgICA8ZmlsZSBzcmM9Ii4uXG5hdGl2ZWxpYnNcbWFjb3N4X3g4NlxsaWJncnBjX2NzaGFycF9leHQuZHlsaWIiIHRhcmdldD0iL3J1bnRpbWVzL29zeC9uYXRpdmUvbGliZ3JwY19jc2hhcnBfZXh0Lng4Ni5keWxpYiIgLz4KKyAgICA8ZmlsZSBzcmM9Ii4uXG5hdGl2ZWxpYnNcbWFjb3N4X3g2NFxsaWJncnBjX2NzaGFycF9leHQuZHlsaWIiIHRhcmdldD0iL3J1bnRpbWVzL29zeC9uYXRpdmUvbGliZ3JwY19jc2hhcnBfZXh0Lng2NC5keWxpYiIgLz4KICAgPC9maWxlcz4KIDwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5Db3JlL0dycGMuQ29yZS50YXJnZXRzIGIvc3JjL2NzaGFycC9HcnBjLkNvcmUvR3JwYy5Db3JlLnRhcmdldHMKaW5kZXggNTAxZmM1MC4uMzM2N2Q1MSAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvR3JwYy5Db3JlLnRhcmdldHMKKysrIGIvc3JjL2NzaGFycC9HcnBjLkNvcmUvR3JwYy5Db3JlLnRhcmdldHMKQEAgLTEsMjkgKzEsMjkgQEAKIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpLi5cLi5cYnVpbGRcbmF0aXZlXGJpblx3aW5kb3dzX3g4NlxncnBjX2NzaGFycF9leHQuZGxsIj4KKyAgICA8Q29udGVudCBJbmNsdWRlPSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkuLlwuLlxydW50aW1lc1x3aW5cbmF0aXZlXGdycGNfY3NoYXJwX2V4dC54ODYuZGxsIj4KICAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICAgIDxMaW5rPm5hdGl2ZWxpYnNcd2luZG93c194ODZcZ3JwY19jc2hhcnBfZXh0LmRsbDwvTGluaz4KKyAgICAgIDxMaW5rPmdycGNfY3NoYXJwX2V4dC54ODYuZGxsPC9MaW5rPgogICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkuLlwuLlxidWlsZFxuYXRpdmVcYmluXHdpbmRvd3NfeDY0XGdycGNfY3NoYXJwX2V4dC5kbGwiPgorICAgIDxDb250ZW50IEluY2x1ZGU9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KS4uXC4uXHJ1bnRpbWVzXHdpblxuYXRpdmVcZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiPgogICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgICAgPExpbms+bmF0aXZlbGlic1x3aW5kb3dzX3g2NFxncnBjX2NzaGFycF9leHQuZGxsPC9MaW5rPgorICAgICAgPExpbms+Z3JwY19jc2hhcnBfZXh0Lng2NC5kbGw8L0xpbms+CiAgICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KS4uXC4uXGJ1aWxkXG5hdGl2ZVxiaW5cbGludXhfeDg2XGxpYmdycGNfY3NoYXJwX2V4dC5zbyI+CisgICAgPENvbnRlbnQgSW5jbHVkZT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpLi5cLi5ccnVudGltZXNcbGludXhcbmF0aXZlXGxpYmdycGNfY3NoYXJwX2V4dC54ODYuc28iPgogICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgICAgPExpbms+bmF0aXZlbGlic1xsaW51eF94ODZcbGliZ3JwY19jc2hhcnBfZXh0LnNvPC9MaW5rPgorICAgICAgPExpbms+bGliZ3JwY19jc2hhcnBfZXh0Lng4Ni5zbzwvTGluaz4KICAgICA8L0NvbnRlbnQ+Ci0gICAgPENvbnRlbnQgSW5jbHVkZT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpLi5cLi5cYnVpbGRcbmF0aXZlXGJpblxsaW51eF94NjRcbGliZ3JwY19jc2hhcnBfZXh0LnNvIj4KKyAgICA8Q29udGVudCBJbmNsdWRlPSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkuLlwuLlxydW50aW1lc1xsaW51eFxuYXRpdmVcbGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI+CiAgICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgICA8TGluaz5uYXRpdmVsaWJzXGxpbnV4X3g2NFxsaWJncnBjX2NzaGFycF9leHQuc288L0xpbms+CisgICAgICA8TGluaz5saWJncnBjX2NzaGFycF9leHQueDY0LnNvPC9MaW5rPgogICAgIDwvQ29udGVudD4KLSAgICA8Q29udGVudCBJbmNsdWRlPSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkuLlwuLlxidWlsZFxuYXRpdmVcYmluXG1hY29zeF94ODZcbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIj4KKyAgICA8Q29udGVudCBJbmNsdWRlPSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkuLlwuLlxydW50aW1lc1xvc3hcbmF0aXZlXGxpYmdycGNfY3NoYXJwX2V4dC54ODYuZHlsaWIiPgogICAgICAgPENvcHlUb091dHB1dERpcmVjdG9yeT5QcmVzZXJ2ZU5ld2VzdDwvQ29weVRvT3V0cHV0RGlyZWN0b3J5PgotICAgICAgPExpbms+bmF0aXZlbGlic1xtYWNvc3hfeDg2XGxpYmdycGNfY3NoYXJwX2V4dC5keWxpYjwvTGluaz4KKyAgICAgIDxMaW5rPmxpYmdycGNfY3NoYXJwX2V4dC54ODYuZHlsaWI8L0xpbms+CiAgICAgPC9Db250ZW50PgotICAgIDxDb250ZW50IEluY2x1ZGU9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KS4uXC4uXGJ1aWxkXG5hdGl2ZVxiaW5cbWFjb3N4X3g2NFxsaWJncnBjX2NzaGFycF9leHQuZHlsaWIiPgorICAgIDxDb250ZW50IEluY2x1ZGU9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KS4uXC4uXHJ1bnRpbWVzXG9zeFxuYXRpdmVcbGliZ3JwY19jc2hhcnBfZXh0Lng2NC5keWxpYiI+CiAgICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgICA8TGluaz5uYXRpdmVsaWJzXG1hY29zeF94NjRcbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliPC9MaW5rPgorICAgICAgPExpbms+bGliZ3JwY19jc2hhcnBfZXh0Lng2NC5keWxpYjwvTGluaz4KICAgICA8L0NvbnRlbnQ+CiAgIDwvSXRlbUdyb3VwPgogPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5Db3JlL0dycGNFbnZpcm9ubWVudC5jcyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlL0dycGNFbnZpcm9ubWVudC5jcwppbmRleCBlZWVkNjk5Li41NzRlOTAwIDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuQ29yZS9HcnBjRW52aXJvbm1lbnQuY3MKKysrIGIvc3JjL2NzaGFycC9HcnBjLkNvcmUvR3JwY0Vudmlyb25tZW50LmNzCkBAIC00Nyw3ICs0Nyw2IEBACiAgICAgLy8vIDwvc3VtbWFyeT4KICAgICBwdWJsaWMgY2xhc3MgR3JwY0Vudmlyb25tZW50CiAgICAgewotICAgICAgICBjb25zdCBMb2dMZXZlbCBEZWZhdWx0TG9nTGV2ZWwgPSBMb2dMZXZlbC5JbmZvOwogICAgICAgICBjb25zdCBpbnQgTWluRGVmYXVsdFRocmVhZFBvb2xTaXplID0gNDsKIAogICAgICAgICBzdGF0aWMgb2JqZWN0IHN0YXRpY0xvY2sgPSBuZXcgb2JqZWN0KCk7CkBAIC01OCw3ICs1Nyw3IEBACiAgICAgICAgIHN0YXRpYyByZWFkb25seSBIYXNoU2V0PENoYW5uZWw+IHJlZ2lzdGVyZWRDaGFubmVscyA9IG5ldyBIYXNoU2V0PENoYW5uZWw+KCk7CiAgICAgICAgIHN0YXRpYyByZWFkb25seSBIYXNoU2V0PFNlcnZlcj4gcmVnaXN0ZXJlZFNlcnZlcnMgPSBuZXcgSGFzaFNldDxTZXJ2ZXI+KCk7CiAKLSAgICAgICAgc3RhdGljIElMb2dnZXIgbG9nZ2VyID0gbmV3IExvZ0xldmVsRmlsdGVyTG9nZ2VyKG5ldyBDb25zb2xlTG9nZ2VyKCksIERlZmF1bHRMb2dMZXZlbCk7CisgICAgICAgIHN0YXRpYyBJTG9nZ2VyIGxvZ2dlciA9IG5ldyBOdWxsTG9nZ2VyKCk7CiAKICAgICAgICAgcmVhZG9ubHkgb2JqZWN0IG15TG9jayA9IG5ldyBvYmplY3QoKTsKICAgICAgICAgcmVhZG9ubHkgR3JwY1RocmVhZFBvb2wgdGhyZWFkUG9vbDsKZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5Db3JlL0ludGVybmFsL05hdGl2ZUV4dGVuc2lvbi5jcyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlL0ludGVybmFsL05hdGl2ZUV4dGVuc2lvbi5jcwppbmRleCBhNmQ3OTI1Li41MDliYWY3IDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuQ29yZS9JbnRlcm5hbC9OYXRpdmVFeHRlbnNpb24uY3MKKysrIGIvc3JjL2NzaGFycC9HcnBjLkNvcmUvSW50ZXJuYWwvTmF0aXZlRXh0ZW5zaW9uLmNzCkBAIC00NCw5ICs0NCw2IEBACiAgICAgLy8vIDwvc3VtbWFyeT4KICAgICBpbnRlcm5hbCBzZWFsZWQgY2xhc3MgTmF0aXZlRXh0ZW5zaW9uCiAgICAgewotICAgICAgICBjb25zdCBzdHJpbmcgTmF0aXZlTGlicmFyaWVzRGlyID0gIm5hdGl2ZWxpYnMiOwotICAgICAgICBjb25zdCBzdHJpbmcgRG54U3R5bGVOYXRpdmVMaWJyYXJpZXNEaXIgPSAiLi4vLi4vYnVpbGQvbmF0aXZlL2Jpbi8iOwotCiAgICAgICAgIHN0YXRpYyByZWFkb25seSBJTG9nZ2VyIExvZ2dlciA9IEdycGNFbnZpcm9ubWVudC5Mb2dnZXIuRm9yVHlwZTxOYXRpdmVFeHRlbnNpb24+KCk7CiAgICAgICAgIHN0YXRpYyByZWFkb25seSBvYmplY3Qgc3RhdGljTG9jayA9IG5ldyBvYmplY3QoKTsKICAgICAgICAgc3RhdGljIHZvbGF0aWxlIE5hdGl2ZUV4dGVuc2lvbiBpbnN0YW5jZTsKQEAgLTk4LDIwICs5NSwyNSBAQAogICAgICAgICBwcml2YXRlIHN0YXRpYyBVbm1hbmFnZWRMaWJyYXJ5IExvYWQoKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUT0RPOiBhbGxvdyBjdXN0b21pemluZyBwYXRoIHRvIG5hdGl2ZSBleHRlbnNpb24gKHBvc3NpYmx5IHRocm91Z2ggZXhwb3NpbmcgYSBHcnBjRW52aXJvbm1lbnQgcHJvcGVydHkpLgotCi0gICAgICAgICAgICB2YXIgbGlicmFyeUZsYXZvciA9IHN0cmluZy5Gb3JtYXQoInswfV97MX0iLCBHZXRQbGF0Zm9ybVN0cmluZygpLCBHZXRBcmNoaXRlY3R1cmVTdHJpbmcoKSk7Ci0KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjL3B1bGwvNzMwMyBmb3Igb25lIG9wdGlvbi4KICAgICAgICAgICAgIHZhciBhc3NlbWJseURpcmVjdG9yeSA9IFBhdGguR2V0RGlyZWN0b3J5TmFtZShHZXRBc3NlbWJseVBhdGgoKSk7CiAKICAgICAgICAgICAgIC8vIFdpdGggb2xkLXN0eWxlIFZTIHByb2plY3RzLCB0aGUgbmF0aXZlIGxpYnJhcmllcyBnZXQgY29waWVkIHVzaW5nIGEgLnRhcmdldHMgcnVsZSB0byB0aGUgYnVpbGQgb3V0cHV0IGZvbGRlcgogICAgICAgICAgICAgLy8gYWxvbmdzaWRlIHRoZSBjb21waWxlZCBhc3NlbWJseS4KLSAgICAgICAgICAgIHZhciBjbGFzc2ljUGF0aCA9IFBhdGguQ29tYmluZShhc3NlbWJseURpcmVjdG9yeSwgTmF0aXZlTGlicmFyaWVzRGlyLCBsaWJyYXJ5Rmxhdm9yLCBHZXROYXRpdmVMaWJyYXJ5RmlsZW5hbWUoKSk7CisgICAgICAgICAgICAvLyBXaXRoIGRvdG5ldCBjbGkgcHJvamVjdHMsIHRoZSBuYXRpdmUgbGlicmFyaWVzIChqdXN0IHRoZSByZXF1aXJlZCBvbmVzKSBhcmUgc2ltaWxhcmx5IGNvcGllZCB0byB0aGUgYnVpbHQgb3V0cHV0IGZvbGRlciwKKyAgICAgICAgICAgIC8vIHRocm91Z2ggdGhlIG1hZ2ljIG9mIE1pY3Jvc29mdC5ORVRDb3JlLlBsYXRmb3Jtcy4KKyAgICAgICAgICAgIHZhciBjbGFzc2ljUGF0aCA9IFBhdGguQ29tYmluZShhc3NlbWJseURpcmVjdG9yeSwgR2V0TmF0aXZlTGlicmFyeUZpbGVuYW1lKCkpOwogCiAgICAgICAgICAgICAvLyBETlgtc3R5bGUgcHJvamVjdC5qc29uIHByb2plY3RzIHdpbGwgdXNlIEdycGMuQ29yZSBhc3NlbWJseSBkaXJlY3RseSBpbiB0aGUgbG9jYXRpb24gd2hlcmUgaXQgZ290IHJlc3RvcmVkCiAgICAgICAgICAgICAvLyBieSBudWdldC4gV2UgbG9jYXRlIHRoZSBuYXRpdmUgbGlicmFyaWVzIGJhc2VkIG9uIGtub3duIHN0cnVjdHVyZSBvZiBHcnBjLkNvcmUgbnVnZXQgcGFja2FnZS4KLSAgICAgICAgICAgIHZhciBkbnhTdHlsZVBhdGggPSBQYXRoLkNvbWJpbmUoYXNzZW1ibHlEaXJlY3RvcnksIERueFN0eWxlTmF0aXZlTGlicmFyaWVzRGlyLCBsaWJyYXJ5Rmxhdm9yLCBHZXROYXRpdmVMaWJyYXJ5RmlsZW5hbWUoKSk7CiAKLSAgICAgICAgICAgIHJldHVybiBuZXcgVW5tYW5hZ2VkTGlicmFyeShuZXcgc3RyaW5nW10ge2NsYXNzaWNQYXRoLCBkbnhTdHlsZVBhdGh9KTsKKyAgICAgICAgICAgIC8vIFRPRE86IFN1cHBvcnQgLk5FVCBDb3JlIGFwcGxpY2F0aW9ucywgd2hpY2ggYWN0IHNsaWdodGx5IGRpZmZlcmVudGx5LiBXZSBtYXkgYmUgb2theSBpZiAiZG90bmV0IHB1Ymxpc2giCisgICAgICAgICAgICAvLyBpcyB1c2VkLCBidXQgImRvdG5ldCBydW4iIGxlYXZlcyB0aGUgbmF0aXZlIGxpYnJhcmllcyBpbi1wYWNrYWdlLCB3aGlsZSBjb3B5aW5nIGFzc2VtYmxpZXMuCisgICAgICAgICAgICBzdHJpbmcgcGxhdGZvcm0gPSBHZXRQbGF0Zm9ybVN0cmluZygpOworICAgICAgICAgICAgc3RyaW5nIHJlbGF0aXZlRGlyZWN0b3J5ID0gc3RyaW5nLkZvcm1hdCgiLi4vLi4vcnVudGltZXMvezB9L25hdGl2ZSIsIHBsYXRmb3JtKTsKKyAgICAgICAgICAgIHZhciBkbnhTdHlsZVBhdGggPSBQYXRoLkNvbWJpbmUoYXNzZW1ibHlEaXJlY3RvcnksIHJlbGF0aXZlRGlyZWN0b3J5LCBHZXROYXRpdmVMaWJyYXJ5RmlsZW5hbWUoKSk7CisgICAgICAgICAgICBzdHJpbmdbXSBwYXRocyA9IG5ld1tdIHsgY2xhc3NpY1BhdGgsIGRueFN0eWxlUGF0aCB9OworICAgICAgICAgICAgcmV0dXJuIG5ldyBVbm1hbmFnZWRMaWJyYXJ5KHBhdGhzKTsKICAgICAgICAgfQogCiAgICAgICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBHZXRBc3NlbWJseVBhdGgoKQpAQCAtMTQ3LDcgKzE0OSw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChQbGF0Zm9ybUFwaXMuSXNXaW5kb3dzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAid2luZG93cyI7CisgICAgICAgICAgICAgICAgcmV0dXJuICJ3aW4iOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKFBsYXRmb3JtQXBpcy5Jc0xpbnV4KQogICAgICAgICAgICAgewpAQCAtMTU1LDcgKzE1Nyw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoUGxhdGZvcm1BcGlzLklzTWFjT1NYKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAibWFjb3N4IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gIm9zeCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQgcGxhdGZvcm0uIik7CiAgICAgICAgIH0KQEAgLTE3NiwxNyArMTc4LDE4IEBACiAgICAgICAgIC8vIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGxpYnJhcnkKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIEdldE5hdGl2ZUxpYnJhcnlGaWxlbmFtZSgpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmluZyBhcmNoaXRlY3R1cmUgPSBHZXRBcmNoaXRlY3R1cmVTdHJpbmcoKTsKICAgICAgICAgICAgIGlmIChQbGF0Zm9ybUFwaXMuSXNXaW5kb3dzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAiZ3JwY19jc2hhcnBfZXh0LmRsbCI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5Gb3JtYXQoImdycGNfY3NoYXJwX2V4dC57MH0uZGxsIiwgYXJjaGl0ZWN0dXJlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChQbGF0Zm9ybUFwaXMuSXNMaW51eCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gImxpYmdycGNfY3NoYXJwX2V4dC5zbyI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5Gb3JtYXQoImxpYmdycGNfY3NoYXJwX2V4dC57MH0uc28iLCBhcmNoaXRlY3R1cmUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKFBsYXRmb3JtQXBpcy5Jc01hY09TWCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gImxpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5Gb3JtYXQoImxpYmdycGNfY3NoYXJwX2V4dC57MH0uZHlsaWIiLCBhcmNoaXRlY3R1cmUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlVuc3VwcG9ydGVkIHBsYXRmb3JtLiIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmMvY3NoYXJwL0dycGMuQ29yZS9JbnRlcm5hbC9OYXRpdmVNZXRob2RzLmNzIGIvc3JjL2NzaGFycC9HcnBjLkNvcmUvSW50ZXJuYWwvTmF0aXZlTWV0aG9kcy5jcwppbmRleCA2NTYwN2VkLi5mNDU3YzlkIDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuQ29yZS9JbnRlcm5hbC9OYXRpdmVNZXRob2RzLmNzCisrKyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlL0ludGVybmFsL05hdGl2ZU1ldGhvZHMuY3MKQEAgLTE1OSwyMTUgKzE1OSwxMDcgQEAKIAogICAgICAgICBwdWJsaWMgTmF0aXZlTWV0aG9kcyhVbm1hbmFnZWRMaWJyYXJ5IGxpYnJhcnkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChQbGF0Zm9ybUFwaXMuSXNMaW51eCB8fCBQbGF0Zm9ybUFwaXMuSXNNYWNPU1gpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfaW5pdCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfaW5pdF9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2h1dGRvd24gPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NodXRkb3duX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF92ZXJzaW9uX3N0cmluZyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfdmVyc2lvbl9zdHJpbmdfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfaW5pdCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfaW5pdF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zaHV0ZG93biA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc2h1dGRvd25fZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfdmVyc2lvbl9zdHJpbmcgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3ZlcnNpb25fc3RyaW5nX2RlbGVnYXRlPihsaWJyYXJ5KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X2NyZWF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X2luaXRpYWxfbWV0YWRhdGEgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9pbml0aWFsX21ldGFkYXRhX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3ZfbWVzc2FnZV9sZW5ndGggPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9tZXNzYWdlX2xlbmd0aF9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X21lc3NhZ2VfdG9fYnVmZmVyID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3ZfbWVzc2FnZV90b19idWZmZXJfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9zdGF0dXNfb25fY2xpZW50X3N0YXR1cyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X3N0YXR1c19vbl9jbGllbnRfc3RhdHVzX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3Zfc3RhdHVzX29uX2NsaWVudF9kZXRhaWxzID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3Zfc3RhdHVzX29uX2NsaWVudF9kZXRhaWxzX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3Zfc3RhdHVzX29uX2NsaWVudF90cmFpbGluZ19tZXRhZGF0YSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X3N0YXR1c19vbl9jbGllbnRfdHJhaWxpbmdfbWV0YWRhdGFfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfY2FsbCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9zZXJ2ZXJfcnBjX25ld19jYWxsX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X21ldGhvZCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9zZXJ2ZXJfcnBjX25ld19tZXRob2RfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfaG9zdCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9zZXJ2ZXJfcnBjX25ld19ob3N0X2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2RlYWRsaW5lID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2RlYWRsaW5lX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X3JlcXVlc3RfbWV0YWRhdGEgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfcmVxdWVzdF9tZXRhZGF0YV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X2Nsb3NlX29uX3NlcnZlcl9jYW5jZWxsZWQgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9jbG9zZV9vbl9zZXJ2ZXJfY2FuY2VsbGVkX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X2Rlc3Ryb3kgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfZGVzdHJveV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X2NyZWF0ZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X2luaXRpYWxfbWV0YWRhdGEgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9pbml0aWFsX21ldGFkYXRhX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9tZXNzYWdlX2xlbmd0aCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X21lc3NhZ2VfbGVuZ3RoX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9tZXNzYWdlX3RvX2J1ZmZlciA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X21lc3NhZ2VfdG9fYnVmZmVyX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9zdGF0dXNfb25fY2xpZW50X3N0YXR1cyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X3N0YXR1c19vbl9jbGllbnRfc3RhdHVzX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9zdGF0dXNfb25fY2xpZW50X2RldGFpbHMgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9zdGF0dXNfb25fY2xpZW50X2RldGFpbHNfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X3N0YXR1c19vbl9jbGllbnRfdHJhaWxpbmdfbWV0YWRhdGEgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9zdGF0dXNfb25fY2xpZW50X3RyYWlsaW5nX21ldGFkYXRhX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfY2FsbCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9zZXJ2ZXJfcnBjX25ld19jYWxsX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfbWV0aG9kID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X21ldGhvZF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2hvc3QgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfaG9zdF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2RlYWRsaW5lID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2RlYWRsaW5lX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfcmVxdWVzdF9tZXRhZGF0YSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9zZXJ2ZXJfcnBjX25ld19yZXF1ZXN0X21ldGFkYXRhX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9jbG9zZV9vbl9zZXJ2ZXJfY2FuY2VsbGVkID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3ZfY2xvc2Vfb25fc2VydmVyX2NhbmNlbGxlZF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X2Rlc3Ryb3kgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfZGVzdHJveV9kZWxlZ2F0ZT4obGlicmFyeSk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jb21wb3NpdGVfY2FsbF9jcmVkZW50aWFsc19jcmVhdGUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NvbXBvc2l0ZV9jYWxsX2NyZWRlbnRpYWxzX2NyZWF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9jcmVkZW50aWFsc19yZWxlYXNlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX2NyZWRlbnRpYWxzX3JlbGVhc2VfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY29tcG9zaXRlX2NhbGxfY3JlZGVudGlhbHNfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jb21wb3NpdGVfY2FsbF9jcmVkZW50aWFsc19jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9jcmVkZW50aWFsc19yZWxlYXNlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX2NyZWRlbnRpYWxzX3JlbGVhc2VfZGVsZWdhdGU+KGxpYnJhcnkpOwogCi0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9jYW5jZWwgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfY2FuY2VsX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX2NhbmNlbF93aXRoX3N0YXR1cyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9jYW5jZWxfd2l0aF9zdGF0dXNfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfdW5hcnkgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfdW5hcnlfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfY2xpZW50X3N0cmVhbWluZyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9zdGFydF9jbGllbnRfc3RyZWFtaW5nX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3N0YXJ0X3NlcnZlcl9zdHJlYW1pbmcgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfc2VydmVyX3N0cmVhbWluZ19kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9zdGFydF9kdXBsZXhfc3RyZWFtaW5nID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX3N0YXJ0X2R1cGxleF9zdHJlYW1pbmdfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc2VuZF9tZXNzYWdlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX3NlbmRfbWVzc2FnZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9zZW5kX2Nsb3NlX2Zyb21fY2xpZW50ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX3NlbmRfY2xvc2VfZnJvbV9jbGllbnRfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc2VuZF9zdGF0dXNfZnJvbV9zZXJ2ZXIgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfc2VuZF9zdGF0dXNfZnJvbV9zZXJ2ZXJfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfcmVjdl9tZXNzYWdlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX3JlY3ZfbWVzc2FnZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9yZWN2X2luaXRpYWxfbWV0YWRhdGEgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfcmVjdl9pbml0aWFsX21ldGFkYXRhX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3N0YXJ0X3NlcnZlcnNpZGUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfc2VydmVyc2lkZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9zZW5kX2luaXRpYWxfbWV0YWRhdGEgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfc2VuZF9pbml0aWFsX21ldGFkYXRhX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3NldF9jcmVkZW50aWFscyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9zZXRfY3JlZGVudGlhbHNfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfZ2V0X3BlZXIgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfZ2V0X3BlZXJfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfZGVzdHJveSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9kZXN0cm95X2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfY2FuY2VsID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX2NhbmNlbF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX2NhbmNlbF93aXRoX3N0YXR1cyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9jYW5jZWxfd2l0aF9zdGF0dXNfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9zdGFydF91bmFyeSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9zdGFydF91bmFyeV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3N0YXJ0X2NsaWVudF9zdHJlYW1pbmcgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfY2xpZW50X3N0cmVhbWluZ19kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3N0YXJ0X3NlcnZlcl9zdHJlYW1pbmcgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfc2VydmVyX3N0cmVhbWluZ19kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3N0YXJ0X2R1cGxleF9zdHJlYW1pbmcgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfZHVwbGV4X3N0cmVhbWluZ19kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3NlbmRfbWVzc2FnZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9zZW5kX21lc3NhZ2VfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9zZW5kX2Nsb3NlX2Zyb21fY2xpZW50ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX3NlbmRfY2xvc2VfZnJvbV9jbGllbnRfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9zZW5kX3N0YXR1c19mcm9tX3NlcnZlciA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9zZW5kX3N0YXR1c19mcm9tX3NlcnZlcl9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3JlY3ZfbWVzc2FnZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9yZWN2X21lc3NhZ2VfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9yZWN2X2luaXRpYWxfbWV0YWRhdGEgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfcmVjdl9pbml0aWFsX21ldGFkYXRhX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfc2VydmVyc2lkZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9zdGFydF9zZXJ2ZXJzaWRlX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc2VuZF9pbml0aWFsX21ldGFkYXRhID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jYWxsX3NlbmRfaW5pdGlhbF9tZXRhZGF0YV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3NldF9jcmVkZW50aWFscyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9zZXRfY3JlZGVudGlhbHNfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9nZXRfcGVlciA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2FsbF9nZXRfcGVlcl9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX2Rlc3Ryb3kgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NhbGxfZGVzdHJveV9kZWxlZ2F0ZT4obGlicmFyeSk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2FyZ3NfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jaGFubmVsX2FyZ3NfY3JlYXRlX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2FyZ3Nfc2V0X3N0cmluZyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX3NldF9zdHJpbmdfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfYXJnc19zZXRfaW50ZWdlciA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX3NldF9pbnRlZ2VyX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2FyZ3NfZGVzdHJveSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX2Rlc3Ryb3lfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX2NyZWF0ZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX2NyZWF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2FyZ3Nfc2V0X3N0cmluZyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX3NldF9zdHJpbmdfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX3NldF9pbnRlZ2VyID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jaGFubmVsX2FyZ3Nfc2V0X2ludGVnZXJfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX2Rlc3Ryb3kgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NoYW5uZWxfYXJnc19kZXN0cm95X2RlbGVnYXRlPihsaWJyYXJ5KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX292ZXJyaWRlX2RlZmF1bHRfc3NsX3Jvb3RzID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9vdmVycmlkZV9kZWZhdWx0X3NzbF9yb290cz4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc3NsX2NyZWRlbnRpYWxzX2NyZWF0ZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc3NsX2NyZWRlbnRpYWxzX2NyZWF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY29tcG9zaXRlX2NoYW5uZWxfY3JlZGVudGlhbHNfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jb21wb3NpdGVfY2hhbm5lbF9jcmVkZW50aWFsc19jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfY3JlZGVudGlhbHNfcmVsZWFzZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2hhbm5lbF9jcmVkZW50aWFsc19yZWxlYXNlX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX292ZXJyaWRlX2RlZmF1bHRfc3NsX3Jvb3RzID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9vdmVycmlkZV9kZWZhdWx0X3NzbF9yb290cz4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zc2xfY3JlZGVudGlhbHNfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zc2xfY3JlZGVudGlhbHNfY3JlYXRlX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NvbXBvc2l0ZV9jaGFubmVsX2NyZWRlbnRpYWxzX2NyZWF0ZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY29tcG9zaXRlX2NoYW5uZWxfY3JlZGVudGlhbHNfY3JlYXRlX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfY3JlZGVudGlhbHNfcmVsZWFzZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY2hhbm5lbF9jcmVkZW50aWFsc19yZWxlYXNlX2RlbGVnYXRlPihsaWJyYXJ5KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2luc2VjdXJlX2NoYW5uZWxfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9pbnNlY3VyZV9jaGFubmVsX2NyZWF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VjdXJlX2NoYW5uZWxfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zZWN1cmVfY2hhbm5lbF9jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfY3JlYXRlX2NhbGwgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NoYW5uZWxfY3JlYXRlX2NhbGxfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfY2hlY2tfY29ubmVjdGl2aXR5X3N0YXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jaGFubmVsX2NoZWNrX2Nvbm5lY3Rpdml0eV9zdGF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF93YXRjaF9jb25uZWN0aXZpdHlfc3RhdGUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NoYW5uZWxfd2F0Y2hfY29ubmVjdGl2aXR5X3N0YXRlX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2dldF90YXJnZXQgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NoYW5uZWxfZ2V0X3RhcmdldF9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9kZXN0cm95ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jaGFubmVsX2Rlc3Ryb3lfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2luc2VjdXJlX2NoYW5uZWxfY3JlYXRlX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlY3VyZV9jaGFubmVsX2NyZWF0ZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc2VjdXJlX2NoYW5uZWxfY3JlYXRlX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfY3JlYXRlX2NhbGwgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NoYW5uZWxfY3JlYXRlX2NhbGxfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9jaGVja19jb25uZWN0aXZpdHlfc3RhdGUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NoYW5uZWxfY2hlY2tfY29ubmVjdGl2aXR5X3N0YXRlX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfd2F0Y2hfY29ubmVjdGl2aXR5X3N0YXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jaGFubmVsX3dhdGNoX2Nvbm5lY3Rpdml0eV9zdGF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2dldF90YXJnZXQgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NoYW5uZWxfZ2V0X3RhcmdldF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2Rlc3Ryb3kgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NoYW5uZWxfZGVzdHJveV9kZWxlZ2F0ZT4obGlicmFyeSk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zaXplb2ZfZ3JwY19ldmVudCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc2l6ZW9mX2dycGNfZXZlbnRfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2l6ZW9mX2dycGNfZXZlbnQgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NpemVvZl9ncnBjX2V2ZW50X2RlbGVnYXRlPihsaWJyYXJ5KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX2NyZWF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9zaHV0ZG93biA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9zaHV0ZG93bl9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9uZXh0ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX25leHRfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfcGx1Y2sgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfcGx1Y2tfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfZGVzdHJveSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9kZXN0cm95X2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX2NyZWF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX3NodXRkb3duID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX3NodXRkb3duX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfbmV4dCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9uZXh0X2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfcGx1Y2sgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfcGx1Y2tfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9kZXN0cm95ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX2Rlc3Ryb3lfZGVsZWdhdGU+KGxpYnJhcnkpOwogCi0gICAgICAgICAgICAgICAgdGhpcy5ncHJzaGFycF9mcmVlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdwcnNoYXJwX2ZyZWVfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncHJzaGFycF9mcmVlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdwcnNoYXJwX2ZyZWVfZGVsZWdhdGU+KGxpYnJhcnkpOwogCi0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfY3JlYXRlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2FkZCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfYWRkX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9jb3VudCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfY291bnRfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2dldF9rZXkgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2dldF9rZXlfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2dldF92YWx1ZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfZ2V0X3ZhbHVlX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9nZXRfdmFsdWVfbGVuZ3RoID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9nZXRfdmFsdWVfbGVuZ3RoX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9kZXN0cm95X2Z1bGwgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2Rlc3Ryb3lfZnVsbF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9jcmVhdGUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2NyZWF0ZV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9hZGQgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2FkZF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9jb3VudCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfY291bnRfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfZ2V0X2tleSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfZ2V0X2tleV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9nZXRfdmFsdWUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2dldF92YWx1ZV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9nZXRfdmFsdWVfbGVuZ3RoID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9nZXRfdmFsdWVfbGVuZ3RoX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2Rlc3Ryb3lfZnVsbCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfZGVzdHJveV9mdWxsX2RlbGVnYXRlPihsaWJyYXJ5KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3JlZGlyZWN0X2xvZyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfcmVkaXJlY3RfbG9nX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3JlZGlyZWN0X2xvZyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfcmVkaXJlY3RfbG9nX2RlbGVnYXRlPihsaWJyYXJ5KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX21ldGFkYXRhX2NyZWRlbnRpYWxzX2NyZWF0ZV9mcm9tX3BsdWdpbiA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfbWV0YWRhdGFfY3JlZGVudGlhbHNfY3JlYXRlX2Zyb21fcGx1Z2luX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9jcmVkZW50aWFsc19ub3RpZnlfZnJvbV9wbHVnaW4gPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX21ldGFkYXRhX2NyZWRlbnRpYWxzX25vdGlmeV9mcm9tX3BsdWdpbl9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9jcmVkZW50aWFsc19jcmVhdGVfZnJvbV9wbHVnaW4gPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX21ldGFkYXRhX2NyZWRlbnRpYWxzX2NyZWF0ZV9mcm9tX3BsdWdpbl9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9jcmVkZW50aWFsc19ub3RpZnlfZnJvbV9wbHVnaW4gPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX21ldGFkYXRhX2NyZWRlbnRpYWxzX25vdGlmeV9mcm9tX3BsdWdpbl9kZWxlZ2F0ZT4obGlicmFyeSk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zc2xfc2VydmVyX2NyZWRlbnRpYWxzX2NyZWF0ZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc3NsX3NlcnZlcl9jcmVkZW50aWFsc19jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9jcmVkZW50aWFsc19yZWxlYXNlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zZXJ2ZXJfY3JlZGVudGlhbHNfcmVsZWFzZV9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zc2xfc2VydmVyX2NyZWRlbnRpYWxzX2NyZWF0ZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc3NsX3NlcnZlcl9jcmVkZW50aWFsc19jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX2NyZWRlbnRpYWxzX3JlbGVhc2UgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NlcnZlcl9jcmVkZW50aWFsc19yZWxlYXNlX2RlbGVnYXRlPihsaWJyYXJ5KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9jcmVhdGUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NlcnZlcl9jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9yZWdpc3Rlcl9jb21wbGV0aW9uX3F1ZXVlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zZXJ2ZXJfcmVnaXN0ZXJfY29tcGxldGlvbl9xdWV1ZV9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX2FkZF9pbnNlY3VyZV9odHRwMl9wb3J0ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zZXJ2ZXJfYWRkX2luc2VjdXJlX2h0dHAyX3BvcnRfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9hZGRfc2VjdXJlX2h0dHAyX3BvcnQgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NlcnZlcl9hZGRfc2VjdXJlX2h0dHAyX3BvcnRfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9zdGFydCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc2VydmVyX3N0YXJ0X2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zZXJ2ZXJfcmVxdWVzdF9jYWxsID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zZXJ2ZXJfcmVxdWVzdF9jYWxsX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zZXJ2ZXJfY2FuY2VsX2FsbF9jYWxscyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc2VydmVyX2NhbmNlbF9hbGxfY2FsbHNfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9zaHV0ZG93bl9hbmRfbm90aWZ5X2NhbGxiYWNrID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zZXJ2ZXJfc2h1dGRvd25fYW5kX25vdGlmeV9jYWxsYmFja19kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX2Rlc3Ryb3kgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NlcnZlcl9kZXN0cm95X2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9jcmVhdGUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NlcnZlcl9jcmVhdGVfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX3JlZ2lzdGVyX2NvbXBsZXRpb25fcXVldWUgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NlcnZlcl9yZWdpc3Rlcl9jb21wbGV0aW9uX3F1ZXVlX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9hZGRfaW5zZWN1cmVfaHR0cDJfcG9ydCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc2VydmVyX2FkZF9pbnNlY3VyZV9odHRwMl9wb3J0X2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9hZGRfc2VjdXJlX2h0dHAyX3BvcnQgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NlcnZlcl9hZGRfc2VjdXJlX2h0dHAyX3BvcnRfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX3N0YXJ0ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zZXJ2ZXJfc3RhcnRfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX3JlcXVlc3RfY2FsbCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc2VydmVyX3JlcXVlc3RfY2FsbF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zZXJ2ZXJfY2FuY2VsX2FsbF9jYWxscyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncnBjc2hhcnBfc2VydmVyX2NhbmNlbF9hbGxfY2FsbHNfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX3NodXRkb3duX2FuZF9ub3RpZnlfY2FsbGJhY2sgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3NlcnZlcl9zaHV0ZG93bl9hbmRfbm90aWZ5X2NhbGxiYWNrX2RlbGVnYXRlPihsaWJyYXJ5KTsKKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3NlcnZlcl9kZXN0cm95ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF9zZXJ2ZXJfZGVzdHJveV9kZWxlZ2F0ZT4obGlicmFyeSk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX25vdyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncHJzaGFycF9ub3dfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3Byc2hhcnBfaW5mX2Z1dHVyZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncHJzaGFycF9pbmZfZnV0dXJlX2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX2luZl9wYXN0ID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdwcnNoYXJwX2luZl9wYXN0X2RlbGVnYXRlPihsaWJyYXJ5KTsKLSAgICAgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX2NvbnZlcnRfY2xvY2tfdHlwZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncHJzaGFycF9jb252ZXJ0X2Nsb2NrX3R5cGVfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3Byc2hhcnBfc2l6ZW9mX3RpbWVzcGVjID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdwcnNoYXJwX3NpemVvZl90aW1lc3BlY19kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX25vdyA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncHJzaGFycF9ub3dfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncHJzaGFycF9pbmZfZnV0dXJlID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdwcnNoYXJwX2luZl9mdXR1cmVfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncHJzaGFycF9pbmZfcGFzdCA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncHJzaGFycF9pbmZfcGFzdF9kZWxlZ2F0ZT4obGlicmFyeSk7CisgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX2NvbnZlcnRfY2xvY2tfdHlwZSA9IEdldE1ldGhvZERlbGVnYXRlPERlbGVnYXRlcy5ncHJzaGFycF9jb252ZXJ0X2Nsb2NrX3R5cGVfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncHJzaGFycF9zaXplb2ZfdGltZXNwZWMgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3Byc2hhcnBfc2l6ZW9mX3RpbWVzcGVjX2RlbGVnYXRlPihsaWJyYXJ5KTsKIAotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3Rlc3RfY2FsbGJhY2sgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3Rlc3RfY2FsbGJhY2tfZGVsZWdhdGU+KGxpYnJhcnkpOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3Rlc3Rfbm9wID0gR2V0TWV0aG9kRGVsZWdhdGU8RGVsZWdhdGVzLmdycGNzaGFycF90ZXN0X25vcF9kZWxlZ2F0ZT4obGlicmFyeSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gV2luZG93cyBvciBmYWxsYmFjawotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2luaXQgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfaW5pdDsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zaHV0ZG93biA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9zaHV0ZG93bjsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF92ZXJzaW9uX3N0cmluZyA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF92ZXJzaW9uX3N0cmluZzsKLQotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfY3JlYXRlID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfY3JlYXRlOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9pbml0aWFsX21ldGFkYXRhID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9pbml0aWFsX21ldGFkYXRhOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9tZXNzYWdlX2xlbmd0aCA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3ZfbWVzc2FnZV9sZW5ndGg7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X21lc3NhZ2VfdG9fYnVmZmVyID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9tZXNzYWdlX3RvX2J1ZmZlcjsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3Zfc3RhdHVzX29uX2NsaWVudF9zdGF0dXMgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X3N0YXR1c19vbl9jbGllbnRfc3RhdHVzOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9zdGF0dXNfb25fY2xpZW50X2RldGFpbHMgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X3N0YXR1c19vbl9jbGllbnRfZGV0YWlsczsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3Zfc3RhdHVzX29uX2NsaWVudF90cmFpbGluZ19tZXRhZGF0YSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3Zfc3RhdHVzX29uX2NsaWVudF90cmFpbGluZ19tZXRhZGF0YTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2NhbGwgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9zZXJ2ZXJfcnBjX25ld19jYWxsOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfbWV0aG9kID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfbWV0aG9kOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfaG9zdCA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2hvc3Q7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9zZXJ2ZXJfcnBjX25ld19kZWFkbGluZSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2RlYWRsaW5lOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfcmVxdWVzdF9tZXRhZGF0YSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X3JlcXVlc3RfbWV0YWRhdGE7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X2Nsb3NlX29uX3NlcnZlcl9jYW5jZWxsZWQgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X2Nsb3NlX29uX3NlcnZlcl9jYW5jZWxsZWQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9kZXN0cm95ID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfZGVzdHJveTsKLQotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NvbXBvc2l0ZV9jYWxsX2NyZWRlbnRpYWxzX2NyZWF0ZSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9jb21wb3NpdGVfY2FsbF9jcmVkZW50aWFsc19jcmVhdGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9jcmVkZW50aWFsc19yZWxlYXNlID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NhbGxfY3JlZGVudGlhbHNfcmVsZWFzZTsKLQotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfY2FuY2VsID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NhbGxfY2FuY2VsOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfY2FuY2VsX3dpdGhfc3RhdHVzID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NhbGxfY2FuY2VsX3dpdGhfc3RhdHVzOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfdW5hcnkgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2FsbF9zdGFydF91bmFyeTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3N0YXJ0X2NsaWVudF9zdHJlYW1pbmcgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2FsbF9zdGFydF9jbGllbnRfc3RyZWFtaW5nOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfc2VydmVyX3N0cmVhbWluZyA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9jYWxsX3N0YXJ0X3NlcnZlcl9zdHJlYW1pbmc7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2FsbF9zdGFydF9kdXBsZXhfc3RyZWFtaW5nID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NhbGxfc3RhcnRfZHVwbGV4X3N0cmVhbWluZzsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3NlbmRfbWVzc2FnZSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9jYWxsX3NlbmRfbWVzc2FnZTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3NlbmRfY2xvc2VfZnJvbV9jbGllbnQgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2FsbF9zZW5kX2Nsb3NlX2Zyb21fY2xpZW50OwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc2VuZF9zdGF0dXNfZnJvbV9zZXJ2ZXIgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2FsbF9zZW5kX3N0YXR1c19mcm9tX3NlcnZlcjsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3JlY3ZfbWVzc2FnZSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9jYWxsX3JlY3ZfbWVzc2FnZTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3JlY3ZfaW5pdGlhbF9tZXRhZGF0YSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9jYWxsX3JlY3ZfaW5pdGlhbF9tZXRhZGF0YTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX3N0YXJ0X3NlcnZlcnNpZGUgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2FsbF9zdGFydF9zZXJ2ZXJzaWRlOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc2VuZF9pbml0aWFsX21ldGFkYXRhID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NhbGxfc2VuZF9pbml0aWFsX21ldGFkYXRhOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfc2V0X2NyZWRlbnRpYWxzID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NhbGxfc2V0X2NyZWRlbnRpYWxzOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NhbGxfZ2V0X3BlZXIgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2FsbF9nZXRfcGVlcjsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jYWxsX2Rlc3Ryb3kgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2FsbF9kZXN0cm95OwotCi0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX2NyZWF0ZSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9jaGFubmVsX2FyZ3NfY3JlYXRlOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfYXJnc19zZXRfc3RyaW5nID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NoYW5uZWxfYXJnc19zZXRfc3RyaW5nOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX2NoYW5uZWxfYXJnc19zZXRfaW50ZWdlciA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9jaGFubmVsX2FyZ3Nfc2V0X2ludGVnZXI7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX2Rlc3Ryb3kgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2hhbm5lbF9hcmdzX2Rlc3Ryb3k7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9vdmVycmlkZV9kZWZhdWx0X3NzbF9yb290cyA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9vdmVycmlkZV9kZWZhdWx0X3NzbF9yb290czsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zc2xfY3JlZGVudGlhbHNfY3JlYXRlID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX3NzbF9jcmVkZW50aWFsc19jcmVhdGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY29tcG9zaXRlX2NoYW5uZWxfY3JlZGVudGlhbHNfY3JlYXRlID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NvbXBvc2l0ZV9jaGFubmVsX2NyZWRlbnRpYWxzX2NyZWF0ZTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2NyZWRlbnRpYWxzX3JlbGVhc2UgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2hhbm5lbF9jcmVkZW50aWFsc19yZWxlYXNlOwotCi0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGUgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VjdXJlX2NoYW5uZWxfY3JlYXRlID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX3NlY3VyZV9jaGFubmVsX2NyZWF0ZTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2NyZWF0ZV9jYWxsID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NoYW5uZWxfY3JlYXRlX2NhbGw7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9jaGVja19jb25uZWN0aXZpdHlfc3RhdGUgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2hhbm5lbF9jaGVja19jb25uZWN0aXZpdHlfc3RhdGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF93YXRjaF9jb25uZWN0aXZpdHlfc3RhdGUgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2hhbm5lbF93YXRjaF9jb25uZWN0aXZpdHlfc3RhdGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY2hhbm5lbF9nZXRfdGFyZ2V0ID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NoYW5uZWxfZ2V0X3RhcmdldDsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jaGFubmVsX2Rlc3Ryb3kgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfY2hhbm5lbF9kZXN0cm95OwotCi0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2l6ZW9mX2dycGNfZXZlbnQgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfc2l6ZW9mX2dycGNfZXZlbnQ7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX2NyZWF0ZSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX2NyZWF0ZTsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX3NodXRkb3duID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfc2h1dGRvd247Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9uZXh0ID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfbmV4dDsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX3BsdWNrID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfcGx1Y2s7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9kZXN0cm95ID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX2NvbXBsZXRpb25fcXVldWVfZGVzdHJveTsKLQotICAgICAgICAgICAgICAgIHRoaXMuZ3Byc2hhcnBfZnJlZSA9IFBJbnZva2VNZXRob2RzLmdwcnNoYXJwX2ZyZWU7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9jcmVhdGUgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfY3JlYXRlOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2FkZCA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9hZGQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfY291bnQgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfY291bnQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfZ2V0X2tleSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9nZXRfa2V5OwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2dldF92YWx1ZSA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9nZXRfdmFsdWU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfZ2V0X3ZhbHVlX2xlbmd0aCA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9nZXRfdmFsdWVfbGVuZ3RoOwotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2Rlc3Ryb3lfZnVsbCA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9kZXN0cm95X2Z1bGw7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9yZWRpcmVjdF9sb2cgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfcmVkaXJlY3RfbG9nOwotCi0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfbWV0YWRhdGFfY3JlZGVudGlhbHNfY3JlYXRlX2Zyb21fcGx1Z2luID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX21ldGFkYXRhX2NyZWRlbnRpYWxzX2NyZWF0ZV9mcm9tX3BsdWdpbjsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9tZXRhZGF0YV9jcmVkZW50aWFsc19ub3RpZnlfZnJvbV9wbHVnaW4gPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfbWV0YWRhdGFfY3JlZGVudGlhbHNfbm90aWZ5X2Zyb21fcGx1Z2luOwotCi0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc3NsX3NlcnZlcl9jcmVkZW50aWFsc19jcmVhdGUgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfc3NsX3NlcnZlcl9jcmVkZW50aWFsc19jcmVhdGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX2NyZWRlbnRpYWxzX3JlbGVhc2UgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfc2VydmVyX2NyZWRlbnRpYWxzX3JlbGVhc2U7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zZXJ2ZXJfY3JlYXRlID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX3NlcnZlcl9jcmVhdGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX3JlZ2lzdGVyX2NvbXBsZXRpb25fcXVldWUgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfc2VydmVyX3JlZ2lzdGVyX2NvbXBsZXRpb25fcXVldWU7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX2FkZF9pbnNlY3VyZV9odHRwMl9wb3J0ID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX3NlcnZlcl9hZGRfaW5zZWN1cmVfaHR0cDJfcG9ydDsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zZXJ2ZXJfYWRkX3NlY3VyZV9odHRwMl9wb3J0ID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX3NlcnZlcl9hZGRfc2VjdXJlX2h0dHAyX3BvcnQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX3N0YXJ0ID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX3NlcnZlcl9zdGFydDsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF9zZXJ2ZXJfcmVxdWVzdF9jYWxsID0gUEludm9rZU1ldGhvZHMuZ3JwY3NoYXJwX3NlcnZlcl9yZXF1ZXN0X2NhbGw7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX2NhbmNlbF9hbGxfY2FsbHMgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfc2VydmVyX2NhbmNlbF9hbGxfY2FsbHM7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX3NodXRkb3duX2FuZF9ub3RpZnlfY2FsbGJhY2sgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfc2VydmVyX3NodXRkb3duX2FuZF9ub3RpZnlfY2FsbGJhY2s7Ci0gICAgICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfc2VydmVyX2Rlc3Ryb3kgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfc2VydmVyX2Rlc3Ryb3k7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX25vdyA9IFBJbnZva2VNZXRob2RzLmdwcnNoYXJwX25vdzsKLSAgICAgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX2luZl9mdXR1cmUgPSBQSW52b2tlTWV0aG9kcy5ncHJzaGFycF9pbmZfZnV0dXJlOwotICAgICAgICAgICAgICAgIHRoaXMuZ3Byc2hhcnBfaW5mX3Bhc3QgPSBQSW52b2tlTWV0aG9kcy5ncHJzaGFycF9pbmZfcGFzdDsKLSAgICAgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX2NvbnZlcnRfY2xvY2tfdHlwZSA9IFBJbnZva2VNZXRob2RzLmdwcnNoYXJwX2NvbnZlcnRfY2xvY2tfdHlwZTsKLSAgICAgICAgICAgICAgICB0aGlzLmdwcnNoYXJwX3NpemVvZl90aW1lc3BlYyA9IFBJbnZva2VNZXRob2RzLmdwcnNoYXJwX3NpemVvZl90aW1lc3BlYzsKLQotICAgICAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3Rlc3RfY2FsbGJhY2sgPSBQSW52b2tlTWV0aG9kcy5ncnBjc2hhcnBfdGVzdF9jYWxsYmFjazsKLSAgICAgICAgICAgICAgICB0aGlzLmdycGNzaGFycF90ZXN0X25vcCA9IFBJbnZva2VNZXRob2RzLmdycGNzaGFycF90ZXN0X25vcDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuZ3JwY3NoYXJwX3Rlc3RfY2FsbGJhY2sgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3Rlc3RfY2FsbGJhY2tfZGVsZWdhdGU+KGxpYnJhcnkpOworICAgICAgICAgICAgdGhpcy5ncnBjc2hhcnBfdGVzdF9ub3AgPSBHZXRNZXRob2REZWxlZ2F0ZTxEZWxlZ2F0ZXMuZ3JwY3NoYXJwX3Rlc3Rfbm9wX2RlbGVnYXRlPihsaWJyYXJ5KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vLyA8c3VtbWFyeT4KQEAgLTUxNiwzMTcgKzQwOCw1IEBACiAgICAgICAgICAgICBwdWJsaWMgZGVsZWdhdGUgQ2FsbEVycm9yIGdycGNzaGFycF90ZXN0X2NhbGxiYWNrX2RlbGVnYXRlKFtNYXJzaGFsQXMoVW5tYW5hZ2VkVHlwZS5GdW5jdGlvblB0cildIE9wQ29tcGxldGlvbkRlbGVnYXRlIGNhbGxiYWNrKTsKICAgICAgICAgICAgIHB1YmxpYyBkZWxlZ2F0ZSBJbnRQdHIgZ3JwY3NoYXJwX3Rlc3Rfbm9wX2RlbGVnYXRlKEludFB0ciBwdHIpOwogICAgICAgICB9Ci0KLSAgICAgICAgLy8vIDxzdW1tYXJ5PgotICAgICAgICAvLy8gRGVmYXVsdCBQSW52b2tlIGJpbmRpbmdzIGZvciBuYXRpdmUgbWV0aG9kcyB0aGF0IGFyZSB1c2VkIG9uIFdpbmRvd3MuCi0gICAgICAgIC8vLyBBbHRlcm5hdGl2ZWx5LCB0aGV5IGNhbiBhbHNvIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBvbiBNb25vCi0gICAgICAgIC8vLyAoaWYgbGliZ3JwY19jc2hhcnBfZXh0IGlzIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwgb3IgaXMgbWFkZSBhY2Nlc3NpYmxlIHRocm91Z2ggZS5nLiBMRF9MSUJSQVJZX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgICAgLy8vIG9yIHVzaW5nIE1vbm8ncyBkbGxNYXAgZmVhdHVyZSkuCi0gICAgICAgIC8vLyA8L3N1bW1hcnk+Ci0gICAgICAgIHByaXZhdGUgY2xhc3MgUEludm9rZU1ldGhvZHMKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRW52aXJvbm1lbnQKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfaW5pdCgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9zaHV0ZG93bigpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgZ3JwY3NoYXJwX3ZlcnNpb25fc3RyaW5nKCk7ICAvLyByZXR1cm5zIG5vdC1vd25lZCBjb25zdCBjaGFyKgotCi0gICAgICAgICAgICAvLyBCYXRjaENvbnRleHRTYWZlSGFuZGxlCi0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfY3JlYXRlKCk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIEludFB0ciBncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9yZWN2X2luaXRpYWxfbWV0YWRhdGEoQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9tZXNzYWdlX2xlbmd0aChCYXRjaENvbnRleHRTYWZlSGFuZGxlIGN0eCk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIHZvaWQgZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9tZXNzYWdlX3RvX2J1ZmZlcihCYXRjaENvbnRleHRTYWZlSGFuZGxlIGN0eCwgYnl0ZVtdIGJ1ZmZlciwgVUludFB0ciBidWZmZXJMZW4pOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBTdGF0dXNDb2RlIGdycGNzaGFycF9iYXRjaF9jb250ZXh0X3JlY3Zfc3RhdHVzX29uX2NsaWVudF9zdGF0dXMoQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9zdGF0dXNfb25fY2xpZW50X2RldGFpbHMoQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgpOyAgLy8gcmV0dXJucyBjb25zdCBjaGFyKgotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9zdGF0dXNfb25fY2xpZW50X3RyYWlsaW5nX21ldGFkYXRhKEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgY3R4KTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2FsbFNhZmVIYW5kbGUgZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfY2FsbChCYXRjaENvbnRleHRTYWZlSGFuZGxlIGN0eCk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIEludFB0ciBncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9zZXJ2ZXJfcnBjX25ld19tZXRob2QoQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgpOyAgLy8gcmV0dXJucyBjb25zdCBjaGFyKgotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfc2VydmVyX3JwY19uZXdfaG9zdChCYXRjaENvbnRleHRTYWZlSGFuZGxlIGN0eCk7ICAvLyByZXR1cm5zIGNvbnN0IGNoYXIqCi0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIFRpbWVzcGVjIGdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X2RlYWRsaW5lKEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgY3R4KTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gSW50UHRyIGdycGNzaGFycF9iYXRjaF9jb250ZXh0X3NlcnZlcl9ycGNfbmV3X3JlcXVlc3RfbWV0YWRhdGEoQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgZ3JwY3NoYXJwX2JhdGNoX2NvbnRleHRfcmVjdl9jbG9zZV9vbl9zZXJ2ZXJfY2FuY2VsbGVkKEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgY3R4KTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfYmF0Y2hfY29udGV4dF9kZXN0cm95KEludFB0ciBjdHgpOwotCi0gICAgICAgICAgICAvLyBDYWxsQ3JlZGVudGlhbHNTYWZlSGFuZGxlCi0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIENhbGxDcmVkZW50aWFsc1NhZmVIYW5kbGUgZ3JwY3NoYXJwX2NvbXBvc2l0ZV9jYWxsX2NyZWRlbnRpYWxzX2NyZWF0ZShDYWxsQ3JlZGVudGlhbHNTYWZlSGFuZGxlIGNyZWRzMSwgQ2FsbENyZWRlbnRpYWxzU2FmZUhhbmRsZSBjcmVkczIpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9jYWxsX2NyZWRlbnRpYWxzX3JlbGVhc2UoSW50UHRyIGNyZWRlbnRpYWxzKTsKLQotICAgICAgICAgICAgLy8gQ2FsbFNhZmVIYW5kbGUKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2FsbEVycm9yIGdycGNzaGFycF9jYWxsX2NhbmNlbChDYWxsU2FmZUhhbmRsZSBjYWxsKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2FsbEVycm9yIGdycGNzaGFycF9jYWxsX2NhbmNlbF93aXRoX3N0YXR1cyhDYWxsU2FmZUhhbmRsZSBjYWxsLCBTdGF0dXNDb2RlIHN0YXR1cywgc3RyaW5nIGRlc2NyaXB0aW9uKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2FsbEVycm9yIGdycGNzaGFycF9jYWxsX3N0YXJ0X3VuYXJ5KENhbGxTYWZlSGFuZGxlIGNhbGwsCi0gICAgICAgICAgICAgICAgQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgsIGJ5dGVbXSBzZW5kQnVmZmVyLCBVSW50UHRyIHNlbmRCdWZmZXJMZW4sIE1ldGFkYXRhQXJyYXlTYWZlSGFuZGxlIG1ldGFkYXRhQXJyYXksIFdyaXRlRmxhZ3Mgd3JpdGVGbGFncyk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIENhbGxFcnJvciBncnBjc2hhcnBfY2FsbF9zdGFydF9jbGllbnRfc3RyZWFtaW5nKENhbGxTYWZlSGFuZGxlIGNhbGwsCi0gICAgICAgICAgICAgICAgQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgsIE1ldGFkYXRhQXJyYXlTYWZlSGFuZGxlIG1ldGFkYXRhQXJyYXkpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDYWxsRXJyb3IgZ3JwY3NoYXJwX2NhbGxfc3RhcnRfc2VydmVyX3N0cmVhbWluZyhDYWxsU2FmZUhhbmRsZSBjYWxsLAotICAgICAgICAgICAgICAgIEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgY3R4LCBieXRlW10gc2VuZEJ1ZmZlciwgVUludFB0ciBzZW5kQnVmZmVyTGVuLAotICAgICAgICAgICAgICAgIE1ldGFkYXRhQXJyYXlTYWZlSGFuZGxlIG1ldGFkYXRhQXJyYXksIFdyaXRlRmxhZ3Mgd3JpdGVGbGFncyk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIENhbGxFcnJvciBncnBjc2hhcnBfY2FsbF9zdGFydF9kdXBsZXhfc3RyZWFtaW5nKENhbGxTYWZlSGFuZGxlIGNhbGwsCi0gICAgICAgICAgICAgICAgQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgsIE1ldGFkYXRhQXJyYXlTYWZlSGFuZGxlIG1ldGFkYXRhQXJyYXkpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDYWxsRXJyb3IgZ3JwY3NoYXJwX2NhbGxfc2VuZF9tZXNzYWdlKENhbGxTYWZlSGFuZGxlIGNhbGwsCi0gICAgICAgICAgICAgICAgQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgsIGJ5dGVbXSBzZW5kQnVmZmVyLCBVSW50UHRyIHNlbmRCdWZmZXJMZW4sIFdyaXRlRmxhZ3Mgd3JpdGVGbGFncywgYm9vbCBzZW5kRW1wdHlJbml0aWFsTWV0YWRhdGEpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDYWxsRXJyb3IgZ3JwY3NoYXJwX2NhbGxfc2VuZF9jbG9zZV9mcm9tX2NsaWVudChDYWxsU2FmZUhhbmRsZSBjYWxsLAotICAgICAgICAgICAgICAgIEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgY3R4KTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2FsbEVycm9yIGdycGNzaGFycF9jYWxsX3NlbmRfc3RhdHVzX2Zyb21fc2VydmVyKENhbGxTYWZlSGFuZGxlIGNhbGwsCi0gICAgICAgICAgICAgICAgQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgsIFN0YXR1c0NvZGUgc3RhdHVzQ29kZSwgc3RyaW5nIHN0YXR1c01lc3NhZ2UsIE1ldGFkYXRhQXJyYXlTYWZlSGFuZGxlIG1ldGFkYXRhQXJyYXksIGJvb2wgc2VuZEVtcHR5SW5pdGlhbE1ldGFkYXRhLAotICAgICAgICAgICAgICAgIGJ5dGVbXSBvcHRpb25hbFNlbmRCdWZmZXIsIFVJbnRQdHIgb3B0aW9uYWxTZW5kQnVmZmVyTGVuLCBXcml0ZUZsYWdzIHdyaXRlRmxhZ3MpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDYWxsRXJyb3IgZ3JwY3NoYXJwX2NhbGxfcmVjdl9tZXNzYWdlKENhbGxTYWZlSGFuZGxlIGNhbGwsCi0gICAgICAgICAgICAgICAgQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDYWxsRXJyb3IgZ3JwY3NoYXJwX2NhbGxfcmVjdl9pbml0aWFsX21ldGFkYXRhKENhbGxTYWZlSGFuZGxlIGNhbGwsCi0gICAgICAgICAgICAgICAgQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDYWxsRXJyb3IgZ3JwY3NoYXJwX2NhbGxfc3RhcnRfc2VydmVyc2lkZShDYWxsU2FmZUhhbmRsZSBjYWxsLAotICAgICAgICAgICAgICAgIEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgY3R4KTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2FsbEVycm9yIGdycGNzaGFycF9jYWxsX3NlbmRfaW5pdGlhbF9tZXRhZGF0YShDYWxsU2FmZUhhbmRsZSBjYWxsLAotICAgICAgICAgICAgICAgIEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgY3R4LCBNZXRhZGF0YUFycmF5U2FmZUhhbmRsZSBtZXRhZGF0YUFycmF5KTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2FsbEVycm9yIGdycGNzaGFycF9jYWxsX3NldF9jcmVkZW50aWFscyhDYWxsU2FmZUhhbmRsZSBjYWxsLCBDYWxsQ3JlZGVudGlhbHNTYWZlSGFuZGxlIGNyZWRlbnRpYWxzKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ1N0cmluZ1NhZmVIYW5kbGUgZ3JwY3NoYXJwX2NhbGxfZ2V0X3BlZXIoQ2FsbFNhZmVIYW5kbGUgY2FsbCk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIHZvaWQgZ3JwY3NoYXJwX2NhbGxfZGVzdHJveShJbnRQdHIgY2FsbCk7Ci0KLSAgICAgICAgICAgIC8vIENoYW5uZWxBcmdzU2FmZUhhbmRsZSAKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2hhbm5lbEFyZ3NTYWZlSGFuZGxlIGdycGNzaGFycF9jaGFubmVsX2FyZ3NfY3JlYXRlKFVJbnRQdHIgbnVtQXJncyk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiLCBDaGFyU2V0ID0gQ2hhclNldC5BbnNpKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIHZvaWQgZ3JwY3NoYXJwX2NoYW5uZWxfYXJnc19zZXRfc3RyaW5nKENoYW5uZWxBcmdzU2FmZUhhbmRsZSBhcmdzLCBVSW50UHRyIGluZGV4LCBzdHJpbmcga2V5LCBzdHJpbmcgdmFsdWUpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIiwgQ2hhclNldCA9IENoYXJTZXQuQW5zaSldCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9jaGFubmVsX2FyZ3Nfc2V0X2ludGVnZXIoQ2hhbm5lbEFyZ3NTYWZlSGFuZGxlIGFyZ3MsIFVJbnRQdHIgaW5kZXgsIHN0cmluZyBrZXksIGludCB2YWx1ZSk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIHZvaWQgZ3JwY3NoYXJwX2NoYW5uZWxfYXJnc19kZXN0cm95KEludFB0ciBhcmdzKTsKLQotICAgICAgICAgICAgLy8gQ2hhbm5lbENyZWRlbnRpYWxzU2FmZUhhbmRsZQotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIiwgQ2hhclNldCA9IENoYXJTZXQuQW5zaSldCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9vdmVycmlkZV9kZWZhdWx0X3NzbF9yb290cyhzdHJpbmcgcGVtUm9vdENlcnRzKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIsIENoYXJTZXQgPSBDaGFyU2V0LkFuc2kpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2hhbm5lbENyZWRlbnRpYWxzU2FmZUhhbmRsZSBncnBjc2hhcnBfc3NsX2NyZWRlbnRpYWxzX2NyZWF0ZShzdHJpbmcgcGVtUm9vdENlcnRzLCBzdHJpbmcga2V5Q2VydFBhaXJDZXJ0Q2hhaW4sIHN0cmluZyBrZXlDZXJ0UGFpclByaXZhdGVLZXkpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDaGFubmVsQ3JlZGVudGlhbHNTYWZlSGFuZGxlIGdycGNzaGFycF9jb21wb3NpdGVfY2hhbm5lbF9jcmVkZW50aWFsc19jcmVhdGUoQ2hhbm5lbENyZWRlbnRpYWxzU2FmZUhhbmRsZSBjaGFubmVsQ3JlZHMsIENhbGxDcmVkZW50aWFsc1NhZmVIYW5kbGUgY2FsbENyZWRzKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfY2hhbm5lbF9jcmVkZW50aWFsc19yZWxlYXNlKEludFB0ciBjcmVkZW50aWFscyk7Ci0KLSAgICAgICAgICAgIC8vIENoYW5uZWxTYWZlSGFuZGxlCi0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIENoYW5uZWxTYWZlSGFuZGxlIGdycGNzaGFycF9pbnNlY3VyZV9jaGFubmVsX2NyZWF0ZShzdHJpbmcgdGFyZ2V0LCBDaGFubmVsQXJnc1NhZmVIYW5kbGUgY2hhbm5lbEFyZ3MpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDaGFubmVsU2FmZUhhbmRsZSBncnBjc2hhcnBfc2VjdXJlX2NoYW5uZWxfY3JlYXRlKENoYW5uZWxDcmVkZW50aWFsc1NhZmVIYW5kbGUgY3JlZGVudGlhbHMsIHN0cmluZyB0YXJnZXQsIENoYW5uZWxBcmdzU2FmZUhhbmRsZSBjaGFubmVsQXJncyk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIENhbGxTYWZlSGFuZGxlIGdycGNzaGFycF9jaGFubmVsX2NyZWF0ZV9jYWxsKENoYW5uZWxTYWZlSGFuZGxlIGNoYW5uZWwsIENhbGxTYWZlSGFuZGxlIHBhcmVudENhbGwsIENvbnRleHRQcm9wYWdhdGlvbkZsYWdzIHByb3BhZ2F0aW9uTWFzaywgQ29tcGxldGlvblF1ZXVlU2FmZUhhbmRsZSBjcSwgc3RyaW5nIG1ldGhvZCwgc3RyaW5nIGhvc3QsIFRpbWVzcGVjIGRlYWRsaW5lKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gQ2hhbm5lbFN0YXRlIGdycGNzaGFycF9jaGFubmVsX2NoZWNrX2Nvbm5lY3Rpdml0eV9zdGF0ZShDaGFubmVsU2FmZUhhbmRsZSBjaGFubmVsLCBpbnQgdHJ5VG9Db25uZWN0KTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfY2hhbm5lbF93YXRjaF9jb25uZWN0aXZpdHlfc3RhdGUoQ2hhbm5lbFNhZmVIYW5kbGUgY2hhbm5lbCwgQ2hhbm5lbFN0YXRlIGxhc3RPYnNlcnZlZFN0YXRlLAotICAgICAgICAgICAgICAgIFRpbWVzcGVjIGRlYWRsaW5lLCBDb21wbGV0aW9uUXVldWVTYWZlSGFuZGxlIGNxLCBCYXRjaENvbnRleHRTYWZlSGFuZGxlIGN0eCk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIENTdHJpbmdTYWZlSGFuZGxlIGdycGNzaGFycF9jaGFubmVsX2dldF90YXJnZXQoQ2hhbm5lbFNhZmVIYW5kbGUgY2FsbCk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIHZvaWQgZ3JwY3NoYXJwX2NoYW5uZWxfZGVzdHJveShJbnRQdHIgY2hhbm5lbCk7Ci0KLSAgICAgICAgICAgIC8vIENvbXBsZXRpb25RdWV1ZUV2ZW50Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIGludCBncnBjc2hhcnBfc2l6ZW9mX2dycGNfZXZlbnQoKTsKLQotICAgICAgICAgICAgLy8gQ29tcGxldGlvblF1ZXVlU2FmZUhhbmRsZQotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDb21wbGV0aW9uUXVldWVTYWZlSGFuZGxlIGdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX2NyZWF0ZSgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9jb21wbGV0aW9uX3F1ZXVlX3NodXRkb3duKENvbXBsZXRpb25RdWV1ZVNhZmVIYW5kbGUgY3EpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDb21wbGV0aW9uUXVldWVFdmVudCBncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9uZXh0KENvbXBsZXRpb25RdWV1ZVNhZmVIYW5kbGUgY3EpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDb21wbGV0aW9uUXVldWVFdmVudCBncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9wbHVjayhDb21wbGV0aW9uUXVldWVTYWZlSGFuZGxlIGNxLCBJbnRQdHIgdGFnKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfY29tcGxldGlvbl9xdWV1ZV9kZXN0cm95KEludFB0ciBjcSk7Ci0KLSAgICAgICAgICAgIC8vIENTdHJpbmdTYWZlSGFuZGxlIAotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdwcnNoYXJwX2ZyZWUoSW50UHRyIHB0cik7Ci0KLSAgICAgICAgICAgIC8vIE1ldGFkYXRhQXJyYXlTYWZlSGFuZGxlCi0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIE1ldGFkYXRhQXJyYXlTYWZlSGFuZGxlIGdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9jcmVhdGUoVUludFB0ciBjYXBhY2l0eSk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiLCBDaGFyU2V0ID0gQ2hhclNldC5BbnNpKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIHZvaWQgZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2FkZChNZXRhZGF0YUFycmF5U2FmZUhhbmRsZSBhcnJheSwgc3RyaW5nIGtleSwgYnl0ZVtdIHZhbHVlLCBVSW50UHRyIHZhbHVlTGVuZ3RoKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gVUludFB0ciBncnBjc2hhcnBfbWV0YWRhdGFfYXJyYXlfY291bnQoSW50UHRyIG1ldGFkYXRhQXJyYXkpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2dldF9rZXkoSW50UHRyIG1ldGFkYXRhQXJyYXksIFVJbnRQdHIgaW5kZXgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2dldF92YWx1ZShJbnRQdHIgbWV0YWRhdGFBcnJheSwgVUludFB0ciBpbmRleCk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIFVJbnRQdHIgZ3JwY3NoYXJwX21ldGFkYXRhX2FycmF5X2dldF92YWx1ZV9sZW5ndGgoSW50UHRyIG1ldGFkYXRhQXJyYXksIFVJbnRQdHIgaW5kZXgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9tZXRhZGF0YV9hcnJheV9kZXN0cm95X2Z1bGwoSW50UHRyIGFycmF5KTsKLQotICAgICAgICAgICAgLy8gTmF0aXZlTG9nUmVkaXJlY3RvcgotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9yZWRpcmVjdF9sb2coR3ByTG9nRGVsZWdhdGUgY2FsbGJhY2spOwotCi0gICAgICAgICAgICAvLyBOYXRpdmVNZXRhZGF0YUNyZWRlbnRpYWxzUGx1Z2luCi0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIENhbGxDcmVkZW50aWFsc1NhZmVIYW5kbGUgZ3JwY3NoYXJwX21ldGFkYXRhX2NyZWRlbnRpYWxzX2NyZWF0ZV9mcm9tX3BsdWdpbihOYXRpdmVNZXRhZGF0YUludGVyY2VwdG9yIGludGVyY2VwdG9yKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIsIENoYXJTZXQgPSBDaGFyU2V0LkFuc2kpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfbWV0YWRhdGFfY3JlZGVudGlhbHNfbm90aWZ5X2Zyb21fcGx1Z2luKEludFB0ciBjYWxsYmFja1B0ciwgSW50UHRyIHVzZXJEYXRhLCBNZXRhZGF0YUFycmF5U2FmZUhhbmRsZSBtZXRhZGF0YUFycmF5LCBTdGF0dXNDb2RlIHN0YXR1c0NvZGUsIHN0cmluZyBlcnJvckRldGFpbHMpOwotCi0gICAgICAgICAgICAvLyBTZXJ2ZXJDcmVkZW50aWFsc1NhZmVIYW5kbGUKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIsIENoYXJTZXQgPSBDaGFyU2V0LkFuc2kpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gU2VydmVyQ3JlZGVudGlhbHNTYWZlSGFuZGxlIGdycGNzaGFycF9zc2xfc2VydmVyX2NyZWRlbnRpYWxzX2NyZWF0ZShzdHJpbmcgcGVtUm9vdENlcnRzLCBzdHJpbmdbXSBrZXlDZXJ0UGFpckNlcnRDaGFpbkFycmF5LCBzdHJpbmdbXSBrZXlDZXJ0UGFpclByaXZhdGVLZXlBcnJheSwgVUludFB0ciBudW1LZXlDZXJ0UGFpcnMsIGJvb2wgZm9yY2VDbGllbnRBdXRoKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfc2VydmVyX2NyZWRlbnRpYWxzX3JlbGVhc2UoSW50UHRyIGNyZWRlbnRpYWxzKTsKLQotICAgICAgICAgICAgLy8gU2VydmVyU2FmZUhhbmRsZQotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBTZXJ2ZXJTYWZlSGFuZGxlIGdycGNzaGFycF9zZXJ2ZXJfY3JlYXRlKENoYW5uZWxBcmdzU2FmZUhhbmRsZSBhcmdzKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfc2VydmVyX3JlZ2lzdGVyX2NvbXBsZXRpb25fcXVldWUoU2VydmVyU2FmZUhhbmRsZSBzZXJ2ZXIsIENvbXBsZXRpb25RdWV1ZVNhZmVIYW5kbGUgY3EpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgZ3JwY3NoYXJwX3NlcnZlcl9hZGRfaW5zZWN1cmVfaHR0cDJfcG9ydChTZXJ2ZXJTYWZlSGFuZGxlIHNlcnZlciwgc3RyaW5nIGFkZHIpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgZ3JwY3NoYXJwX3NlcnZlcl9hZGRfc2VjdXJlX2h0dHAyX3BvcnQoU2VydmVyU2FmZUhhbmRsZSBzZXJ2ZXIsIHN0cmluZyBhZGRyLCBTZXJ2ZXJDcmVkZW50aWFsc1NhZmVIYW5kbGUgY3JlZHMpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9zZXJ2ZXJfc3RhcnQoU2VydmVyU2FmZUhhbmRsZSBzZXJ2ZXIpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDYWxsRXJyb3IgZ3JwY3NoYXJwX3NlcnZlcl9yZXF1ZXN0X2NhbGwoU2VydmVyU2FmZUhhbmRsZSBzZXJ2ZXIsIENvbXBsZXRpb25RdWV1ZVNhZmVIYW5kbGUgY3EsIEJhdGNoQ29udGV4dFNhZmVIYW5kbGUgY3R4KTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gdm9pZCBncnBjc2hhcnBfc2VydmVyX2NhbmNlbF9hbGxfY2FsbHMoU2VydmVyU2FmZUhhbmRsZSBzZXJ2ZXIpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9zZXJ2ZXJfc2h1dGRvd25fYW5kX25vdGlmeV9jYWxsYmFjayhTZXJ2ZXJTYWZlSGFuZGxlIHNlcnZlciwgQ29tcGxldGlvblF1ZXVlU2FmZUhhbmRsZSBjcSwgQmF0Y2hDb250ZXh0U2FmZUhhbmRsZSBjdHgpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiB2b2lkIGdycGNzaGFycF9zZXJ2ZXJfZGVzdHJveShJbnRQdHIgc2VydmVyKTsKLQotICAgICAgICAgICAgLy8gVGltZXNwZWMKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gVGltZXNwZWMgZ3Byc2hhcnBfbm93KENsb2NrVHlwZSBjbG9ja1R5cGUpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBUaW1lc3BlYyBncHJzaGFycF9pbmZfZnV0dXJlKENsb2NrVHlwZSBjbG9ja1R5cGUpOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBUaW1lc3BlYyBncHJzaGFycF9pbmZfcGFzdChDbG9ja1R5cGUgY2xvY2tUeXBlKTsKLQotICAgICAgICAgICAgW0RsbEltcG9ydCgiZ3JwY19jc2hhcnBfZXh0LmRsbCIpXQotICAgICAgICAgICAgcHVibGljIHN0YXRpYyBleHRlcm4gVGltZXNwZWMgZ3Byc2hhcnBfY29udmVydF9jbG9ja190eXBlKFRpbWVzcGVjIHQsIENsb2NrVHlwZSB0YXJnZXRDbG9jayk7Ci0KLSAgICAgICAgICAgIFtEbGxJbXBvcnQoImdycGNfY3NoYXJwX2V4dC5kbGwiKV0KLSAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIGludCBncHJzaGFycF9zaXplb2ZfdGltZXNwZWMoKTsKLQotICAgICAgICAgICAgLy8gVGVzdGluZwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBDYWxsRXJyb3IgZ3JwY3NoYXJwX3Rlc3RfY2FsbGJhY2soW01hcnNoYWxBcyhVbm1hbmFnZWRUeXBlLkZ1bmN0aW9uUHRyKV0gT3BDb21wbGV0aW9uRGVsZWdhdGUgY2FsbGJhY2spOwotCi0gICAgICAgICAgICBbRGxsSW1wb3J0KCJncnBjX2NzaGFycF9leHQuZGxsIildCi0gICAgICAgICAgICBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgZ3JwY3NoYXJwX3Rlc3Rfbm9wKEludFB0ciBwdHIpOwotICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvSW50ZXJuYWwvVW5tYW5hZ2VkTGlicmFyeS5jcyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlL0ludGVybmFsL1VubWFuYWdlZExpYnJhcnkuY3MKaW5kZXggNWE4MDc0Ni4uZGM2MjliZCAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvSW50ZXJuYWwvVW5tYW5hZ2VkTGlicmFyeS5jcworKysgYi9zcmMvY3NoYXJwL0dycGMuQ29yZS9JbnRlcm5hbC9Vbm1hbmFnZWRMaWJyYXJ5LmNzCkBAIC04Miw2ICs4MiwzMiBAQAogICAgICAgICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPgogICAgICAgICBwdWJsaWMgSW50UHRyIExvYWRTeW1ib2woc3RyaW5nIHN5bWJvbE5hbWUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChQbGF0Zm9ybUFwaXMuSXNXaW5kb3dzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNDczMzEwIGZvciBiYWNrZ3JvdW5kIG9uIHRoaXMuCisgICAgICAgICAgICAgICAgaWYgKFBsYXRmb3JtQXBpcy5JczY0Qml0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdpbmRvd3MuR2V0UHJvY0FkZHJlc3ModGhpcy5oYW5kbGUsIHN5bWJvbE5hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBZZXMsIHdlIGNvdWxkIHBvdGVudGlhbGx5IHByZWRpY3QgdGhlIHNpemUuLi4gYnV0IGl0J3MgYSBsb3Qgc2ltcGxlciB0byBqdXN0IHRyeQorICAgICAgICAgICAgICAgICAgICAvLyBhbGwgdGhlIGNhbmRpZGF0ZXMuIE1vc3QgZnVuY3Rpb25zIGhhdmUgYSBzdWZmaXggb2YgQDAsIEA0IG9yIEA4IHNvIHdlIHdvbid0IGJlIHRyeWluZworICAgICAgICAgICAgICAgICAgICAvLyBtYW55IG9wdGlvbnMgLSBhbmQgaWYgaXQgdGFrZXMgYSBsaXR0bGUgYml0IGxvbmdlciB0byBmYWlsIGlmIHdlJ3ZlIHJlYWxseSBnb3QgdGhlIHdyb25nCisgICAgICAgICAgICAgICAgICAgIC8vIGxpYnJhcnksIHRoYXQncyBub3QgYSBiaWcgcHJvYmxlbS4gVGhpcyBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciBmdW5jdGlvbiBpbiB0aGUgbmF0aXZlIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIHN5bWJvbE5hbWUgPSAiXyIgKyBzeW1ib2xOYW1lICsgIkAiOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBzdGFja1NpemUgPSAwOyBzdGFja1NpemUgPCAxMjg7IHN0YWNrU2l6ZSArPSA0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnRQdHIgY2FuZGlkYXRlID0gV2luZG93cy5HZXRQcm9jQWRkcmVzcyh0aGlzLmhhbmRsZSwgc3ltYm9sTmFtZSArIHN0YWNrU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlICE9IEludFB0ci5aZXJvKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gRmFpbC4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEludFB0ci5aZXJvOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChQbGF0Zm9ybUFwaXMuSXNMaW51eCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoUGxhdGZvcm1BcGlzLklzTW9ubykKQEAgLTE0MiwxMyArMTY4LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRoOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRocm93IG5ldyBGaWxlTm90Rm91bmRFeGNlcHRpb24oU3RyaW5nLkZvcm1hdCgiRXJyb3IgbG9hZGluZyBuYXRpdmUgbGlicmFyeS4gTm90IGZvdW5kIGluIGFueSBvZiB0aGUgcG9zc2libGUgbG9jYXRpb25zIHswfSIsIGxpYnJhcnlQYXRoQWx0ZXJuYXRpdmVzKSk7CisgICAgICAgICAgICB0aHJvdyBuZXcgRmlsZU5vdEZvdW5kRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgIFN0cmluZy5Gb3JtYXQoIkVycm9yIGxvYWRpbmcgbmF0aXZlIGxpYnJhcnkuIE5vdCBmb3VuZCBpbiBhbnkgb2YgdGhlIHBvc3NpYmxlIGxvY2F0aW9uczogezB9IiwgCisgICAgICAgICAgICAgICAgICAgIHN0cmluZy5Kb2luKCIsIiwgbGlicmFyeVBhdGhBbHRlcm5hdGl2ZXMpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBXaW5kb3dzCiAgICAgICAgIHsKICAgICAgICAgICAgIFtEbGxJbXBvcnQoImtlcm5lbDMyLmRsbCIpXQogICAgICAgICAgICAgaW50ZXJuYWwgc3RhdGljIGV4dGVybiBJbnRQdHIgTG9hZExpYnJhcnkoc3RyaW5nIGZpbGVuYW1lKTsKKworICAgICAgICAgICAgW0RsbEltcG9ydCgia2VybmVsMzIuZGxsIildCisgICAgICAgICAgICBpbnRlcm5hbCBzdGF0aWMgZXh0ZXJuIEludFB0ciBHZXRQcm9jQWRkcmVzcyhJbnRQdHIgaE1vZHVsZSwgc3RyaW5nIHByb2NOYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIExpbnV4CmRpZmYgLS1naXQgYS9zcmMvY3NoYXJwL0dycGMuQ29yZS9OYXRpdmVEZXBzLkxpbnV4LnRhcmdldHMgYi9zcmMvY3NoYXJwL0dycGMuQ29yZS9OYXRpdmVEZXBzLkxpbnV4LnRhcmdldHMKaW5kZXggYTM4NDhjNi4uZTBjOTEzMiAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvTmF0aXZlRGVwcy5MaW51eC50YXJnZXRzCisrKyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlL05hdGl2ZURlcHMuTGludXgudGFyZ2V0cwpAQCAtMyw3ICszLDcgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8Q29udGVudCBJbmNsdWRlPSIuLlwuLlwuLlxsaWJzXCQoTmF0aXZlRGVwZW5kZW5jaWVzQ29uZmlndXJhdGlvblVuaXgpXGxpYmdycGNfY3NoYXJwX2V4dC5zbyI+CiAgICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgICA8TGluaz5uYXRpdmVsaWJzXGxpbnV4X3g2NFxsaWJncnBjX2NzaGFycF9leHQuc288L0xpbms+CisgICAgICA8TGluaz5saWJncnBjX2NzaGFycF9leHQueDY0LnNvPC9MaW5rPgogICAgIDwvQ29udGVudD4KICAgPC9JdGVtR3JvdXA+CiA8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvTmF0aXZlRGVwcy5NYWMudGFyZ2V0cyBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlL05hdGl2ZURlcHMuTWFjLnRhcmdldHMKaW5kZXggYzNjNjI2NC4uZTIyYzczOCAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvTmF0aXZlRGVwcy5NYWMudGFyZ2V0cworKysgYi9zcmMvY3NoYXJwL0dycGMuQ29yZS9OYXRpdmVEZXBzLk1hYy50YXJnZXRzCkBAIC0zLDcgKzMsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDb250ZW50IEluY2x1ZGU9Ii4uXC4uXC4uXGxpYnNcJChOYXRpdmVEZXBlbmRlbmNpZXNDb25maWd1cmF0aW9uVW5peClcbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIj4KICAgICAgIDxDb3B5VG9PdXRwdXREaXJlY3Rvcnk+UHJlc2VydmVOZXdlc3Q8L0NvcHlUb091dHB1dERpcmVjdG9yeT4KLSAgICAgIDxMaW5rPm5hdGl2ZWxpYnNcbWFjb3N4X3g4NlxsaWJncnBjX2NzaGFycF9leHQuZHlsaWI8L0xpbms+CisgICAgICA8TGluaz5saWJncnBjX2NzaGFycF9leHQueDg2LmR5bGliPC9MaW5rPgogICAgIDwvQ29udGVudD4KICAgPC9JdGVtR3JvdXA+CiA8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkNvcmUvTmF0aXZlRGVwcy5XaW5kb3dzLnRhcmdldHMgYi9zcmMvY3NoYXJwL0dycGMuQ29yZS9OYXRpdmVEZXBzLldpbmRvd3MudGFyZ2V0cwppbmRleCBmNmEzNDA1Li45M2RiMDkzIDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuQ29yZS9OYXRpdmVEZXBzLldpbmRvd3MudGFyZ2V0cworKysgYi9zcmMvY3NoYXJwL0dycGMuQ29yZS9OYXRpdmVEZXBzLldpbmRvd3MudGFyZ2V0cwpAQCAtMyw3ICszLDcgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8Q29udGVudCBJbmNsdWRlPSIuLlwuLlwuLlx2c3Byb2plY3RzXCQoTmF0aXZlRGVwZW5kZW5jaWVzQ29uZmlndXJhdGlvbilcZ3JwY19jc2hhcnBfZXh0LmRsbCI+CiAgICAgICA8Q29weVRvT3V0cHV0RGlyZWN0b3J5PlByZXNlcnZlTmV3ZXN0PC9Db3B5VG9PdXRwdXREaXJlY3Rvcnk+Ci0gICAgICA8TGluaz5uYXRpdmVsaWJzXHdpbmRvd3NfeDg2XGdycGNfY3NoYXJwX2V4dC5kbGw8L0xpbms+CisgICAgICA8TGluaz5ncnBjX2NzaGFycF9leHQueDg2LmRsbDwvTGluaz4KICAgICA8L0NvbnRlbnQ+CiAgIDwvSXRlbUdyb3VwPgogPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5Db3JlL3Byb2plY3QuanNvbiBiL3NyYy9jc2hhcnAvR3JwYy5Db3JlL3Byb2plY3QuanNvbgppbmRleCA0NTQ1ZDI2Li44MDc1MDg4IDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuQ29yZS9wcm9qZWN0Lmpzb24KKysrIGIvc3JjL2NzaGFycC9HcnBjLkNvcmUvcHJvamVjdC5qc29uCkBAIC0xNCwxMiArMTQsMTIgQEAKICAgICAiZmlsZXMiOiB7CiAgICAgICAibWFwcGluZ3MiOiB7CiAgICAgICAgICJidWlsZC9uZXQ0NS8iOiAiR3JwYy5Db3JlLnRhcmdldHMiLAotICAgICAgICAiYnVpbGQvbmF0aXZlL2Jpbi93aW5kb3dzX3g4Ni8iOiAiLi4vbmF0aXZlbGlicy93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgImJ1aWxkL25hdGl2ZS9iaW4vd2luZG93c194NjQvIjogIi4uL25hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICJidWlsZC9uYXRpdmUvYmluL2xpbnV4X3g4Ni8iOiAiLi4vbmF0aXZlbGlicy9saW51eF94ODYvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKLSAgICAgICAgImJ1aWxkL25hdGl2ZS9iaW4vbGludXhfeDY0LyI6ICIuLi9uYXRpdmVsaWJzL2xpbnV4X3g2NC9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAiYnVpbGQvbmF0aXZlL2Jpbi9tYWNvc3hfeDg2LyI6ICIuLi9uYXRpdmVsaWJzL21hY29zeF94ODYvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIiwKLSAgICAgICAgImJ1aWxkL25hdGl2ZS9iaW4vbWFjb3N4X3g2NC8iOiAiLi4vbmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKKyAgICAgICAgInJ1bnRpbWVzL3dpbi9uYXRpdmUvZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vbmF0aXZlbGlicy93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgInJ1bnRpbWVzL3dpbi9uYXRpdmUvZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vbmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgInJ1bnRpbWVzL2xpbnV4L25hdGl2ZS9saWJncnBjX2NzaGFycF9leHQueDg2LnNvIjogIi4uL25hdGl2ZWxpYnMvbGludXhfeDg2L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCisgICAgICAgICJydW50aW1lcy9saW51eC9uYXRpdmUvbGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi9uYXRpdmVsaWJzL2xpbnV4X3g2NC9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAicnVudGltZXMvb3N4L25hdGl2ZS9saWJncnBjX2NzaGFycF9leHQueDg2LmR5bGliIjogIi4uL25hdGl2ZWxpYnMvbWFjb3N4X3g4Ni9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiLAorICAgICAgICAicnVudGltZXMvb3N4L25hdGl2ZS9saWJncnBjX2NzaGFycF9leHQueDY0LmR5bGliIjogIi4uL25hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCiAgICAgICB9CiAgICAgfQogICB9LApkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkV4YW1wbGVzLk1hdGhDbGllbnQvcGFja2FnZXMuY29uZmlnIGIvc3JjL2NzaGFycC9HcnBjLkV4YW1wbGVzLk1hdGhDbGllbnQvcGFja2FnZXMuY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZWNlMDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY3NoYXJwL0dycGMuRXhhbXBsZXMuTWF0aENsaWVudC9wYWNrYWdlcy5jb25maWcKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPHBhY2thZ2VzPgorPC9wYWNrYWdlcz4KZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5FeGFtcGxlcy5NYXRoQ2xpZW50L3Byb2plY3QuanNvbiBiL3NyYy9jc2hhcnAvR3JwYy5FeGFtcGxlcy5NYXRoQ2xpZW50L3Byb2plY3QuanNvbgppbmRleCBiODY1Y2Q1Li4yMDZkNmM1IDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuRXhhbXBsZXMuTWF0aENsaWVudC9wcm9qZWN0Lmpzb24KKysrIGIvc3JjL2NzaGFycC9HcnBjLkV4YW1wbGVzLk1hdGhDbGllbnQvcHJvamVjdC5qc29uCkBAIC0xNCwxMCArMTQsMTAgQEAKICAgICAgICAgfSwKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAibWFwcGluZ3MiOiB7Ci0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54ODYuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpAQCAtMzMsMTAgKzMzLDEwIEBACiAgICAgICAgIH0sCiAgICAgICAgICJjb3B5VG9PdXRwdXQiOiB7CiAgICAgICAgICAgIm1hcHBpbmdzIjogewotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDg2LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkV4YW1wbGVzLk1hdGhTZXJ2ZXIvcGFja2FnZXMuY29uZmlnIGIvc3JjL2NzaGFycC9HcnBjLkV4YW1wbGVzLk1hdGhTZXJ2ZXIvcGFja2FnZXMuY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZWNlMDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY3NoYXJwL0dycGMuRXhhbXBsZXMuTWF0aFNlcnZlci9wYWNrYWdlcy5jb25maWcKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPHBhY2thZ2VzPgorPC9wYWNrYWdlcz4KZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5FeGFtcGxlcy5NYXRoU2VydmVyL3Byb2plY3QuanNvbiBiL3NyYy9jc2hhcnAvR3JwYy5FeGFtcGxlcy5NYXRoU2VydmVyL3Byb2plY3QuanNvbgppbmRleCBiODY1Y2Q1Li4yMDZkNmM1IDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuRXhhbXBsZXMuTWF0aFNlcnZlci9wcm9qZWN0Lmpzb24KKysrIGIvc3JjL2NzaGFycC9HcnBjLkV4YW1wbGVzLk1hdGhTZXJ2ZXIvcHJvamVjdC5qc29uCkBAIC0xNCwxMCArMTQsMTAgQEAKICAgICAgICAgfSwKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAibWFwcGluZ3MiOiB7Ci0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54ODYuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpAQCAtMzMsMTAgKzMzLDEwIEBACiAgICAgICAgIH0sCiAgICAgICAgICJjb3B5VG9PdXRwdXQiOiB7CiAgICAgICAgICAgIm1hcHBpbmdzIjogewotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDg2LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkV4YW1wbGVzLlRlc3RzL3Byb2plY3QuanNvbiBiL3NyYy9jc2hhcnAvR3JwYy5FeGFtcGxlcy5UZXN0cy9wcm9qZWN0Lmpzb24KaW5kZXggY2M1MThlYi4uYjRjNGM1ZiAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkV4YW1wbGVzLlRlc3RzL3Byb2plY3QuanNvbgorKysgYi9zcmMvY3NoYXJwL0dycGMuRXhhbXBsZXMuVGVzdHMvcHJvamVjdC5qc29uCkBAIC0xNCwxMCArMTQsMTAgQEAKICAgICAgICAgfSwKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAibWFwcGluZ3MiOiB7Ci0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54ODYuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpAQCAtMzMsMTAgKzMzLDEwIEBACiAgICAgICAgIH0sCiAgICAgICAgICJjb3B5VG9PdXRwdXQiOiB7CiAgICAgICAgICAgIm1hcHBpbmdzIjogewotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDg2LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkhlYWx0aENoZWNrLlRlc3RzL3Byb2plY3QuanNvbiBiL3NyYy9jc2hhcnAvR3JwYy5IZWFsdGhDaGVjay5UZXN0cy9wcm9qZWN0Lmpzb24KaW5kZXggZmJmOGQ5Mi4uZjQ0YTMyMiAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkhlYWx0aENoZWNrLlRlc3RzL3Byb2plY3QuanNvbgorKysgYi9zcmMvY3NoYXJwL0dycGMuSGVhbHRoQ2hlY2suVGVzdHMvcHJvamVjdC5qc29uCkBAIC0xNCwxMCArMTQsMTAgQEAKICAgICAgICAgfSwKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAibWFwcGluZ3MiOiB7Ci0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54ODYuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpAQCAtMzMsMTAgKzMzLDEwIEBACiAgICAgICAgIH0sCiAgICAgICAgICJjb3B5VG9PdXRwdXQiOiB7CiAgICAgICAgICAgIm1hcHBpbmdzIjogewotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDg2LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy5DbGllbnQvcHJvamVjdC5qc29uIGIvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy5DbGllbnQvcHJvamVjdC5qc29uCmluZGV4IDRhMjg0NmYuLjZiNjFhNGIgMTAwNjQ0Ci0tLSBhL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuQ2xpZW50L3Byb2plY3QuanNvbgorKysgYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLkNsaWVudC9wcm9qZWN0Lmpzb24KQEAgLTE1LDEwICsxNSwxMCBAQAogICAgICAgICAiY29weVRvT3V0cHV0IjogewogICAgICAgICAgICJpbmNsdWRlIjogImRhdGEvKiIsCiAgICAgICAgICAgIm1hcHBpbmdzIjogewotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDg2L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL2xpbnV4X3g2NC9saWJncnBjX2NzaGFycF9leHQuc28iOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL21hY29zeF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDY0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDg2LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuc28iOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTM1LDEwICszNSwxMCBAQAogICAgICAgICAiY29weVRvT3V0cHV0IjogewogICAgICAgICAgICJpbmNsdWRlIjogImRhdGEvKiIsCiAgICAgICAgICAgIm1hcHBpbmdzIjogewotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDg2LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy5RcHNXb3JrZXIvcGFja2FnZXMuY29uZmlnIGIvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy5RcHNXb3JrZXIvcGFja2FnZXMuY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZWNlMDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLlFwc1dvcmtlci9wYWNrYWdlcy5jb25maWcKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPHBhY2thZ2VzPgorPC9wYWNrYWdlcz4KZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuUXBzV29ya2VyL3Byb2plY3QuanNvbiBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuUXBzV29ya2VyL3Byb2plY3QuanNvbgppbmRleCA0YTI4NDZmLi42YjYxYTRiIDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLlFwc1dvcmtlci9wcm9qZWN0Lmpzb24KKysrIGIvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy5RcHNXb3JrZXIvcHJvamVjdC5qc29uCkBAIC0xNSwxMCArMTUsMTAgQEAKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAiaW5jbHVkZSI6ICJkYXRhLyoiLAogICAgICAgICAgICJtYXBwaW5ncyI6IHsKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LnNvIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CkBAIC0zNSwxMCArMzUsMTAgQEAKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAiaW5jbHVkZSI6ICJkYXRhLyoiLAogICAgICAgICAgICJtYXBwaW5ncyI6IHsKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDg2L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuc28iOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuU2VydmVyL3Byb2plY3QuanNvbiBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuU2VydmVyL3Byb2plY3QuanNvbgppbmRleCA0YTI4NDZmLi42YjYxYTRiIDEwMDY0NAotLS0gYS9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLlNlcnZlci9wcm9qZWN0Lmpzb24KKysrIGIvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy5TZXJ2ZXIvcHJvamVjdC5qc29uCkBAIC0xNSwxMCArMTUsMTAgQEAKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAiaW5jbHVkZSI6ICJkYXRhLyoiLAogICAgICAgICAgICJtYXBwaW5ncyI6IHsKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LnNvIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CkBAIC0zNSwxMCArMzUsMTAgQEAKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAiaW5jbHVkZSI6ICJkYXRhLyoiLAogICAgICAgICAgICJtYXBwaW5ncyI6IHsKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDg2L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuc28iOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuU3RyZXNzQ2xpZW50L3BhY2thZ2VzLmNvbmZpZyBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuU3RyZXNzQ2xpZW50L3BhY2thZ2VzLmNvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWVjZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy5TdHJlc3NDbGllbnQvcGFja2FnZXMuY29uZmlnCkBAIC0wLDAgKzEsMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxwYWNrYWdlcz4KKzwvcGFja2FnZXM+CmRpZmYgLS1naXQgYS9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLlN0cmVzc0NsaWVudC9wcm9qZWN0Lmpzb24gYi9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nLlN0cmVzc0NsaWVudC9wcm9qZWN0Lmpzb24KaW5kZXggNGEyODQ2Zi4uNmI2MWE0YiAxMDA2NDQKLS0tIGEvc3JjL2NzaGFycC9HcnBjLkludGVncmF0aW9uVGVzdGluZy5TdHJlc3NDbGllbnQvcHJvamVjdC5qc29uCisrKyBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuU3RyZXNzQ2xpZW50L3Byb2plY3QuanNvbgpAQCAtMTUsMTAgKzE1LDEwIEBACiAgICAgICAgICJjb3B5VG9PdXRwdXQiOiB7CiAgICAgICAgICAgImluY2x1ZGUiOiAiZGF0YS8qIiwKICAgICAgICAgICAibWFwcGluZ3MiOiB7Ci0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54ODYuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpAQCAtMzUsMTAgKzM1LDEwIEBACiAgICAgICAgICJjb3B5VG9PdXRwdXQiOiB7CiAgICAgICAgICAgImluY2x1ZGUiOiAiZGF0YS8qIiwKICAgICAgICAgICAibWFwcGluZ3MiOiB7Ci0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL2xpbnV4X3g2NC9saWJncnBjX2NzaGFycF9leHQuc28iOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL21hY29zeF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDY0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54ODYuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LnNvIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CmRpZmYgLS1naXQgYS9zcmMvY3NoYXJwL0dycGMuSW50ZWdyYXRpb25UZXN0aW5nL3Byb2plY3QuanNvbiBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvcHJvamVjdC5qc29uCmluZGV4IDYyOTc2MDAuLmRjZDljY2EgMTAwNjQ0Ci0tLSBhL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvcHJvamVjdC5qc29uCisrKyBiL3NyYy9jc2hhcnAvR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcvcHJvamVjdC5qc29uCkBAIC0xNSwxMCArMTUsMTAgQEAKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAiaW5jbHVkZSI6ICJkYXRhLyoiLAogICAgICAgICAgICJtYXBwaW5ncyI6IHsKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9EZWJ1Zy9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LnNvIjogIi4uLy4uLy4uL2xpYnMvZGJnL2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CkBAIC0zNSwxMCArMzUsMTAgQEAKICAgICAgICAgImNvcHlUb091dHB1dCI6IHsKICAgICAgICAgICAiaW5jbHVkZSI6ICJkYXRhLyoiLAogICAgICAgICAgICJtYXBwaW5ncyI6IHsKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAgICJuYXRpdmVsaWJzL3dpbmRvd3NfeDg2L2dycGNfY3NoYXJwX2V4dC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuc28iOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIiwKKyAgICAgICAgICAgICJsaWJncnBjX2NzaGFycF9leHQueDY0LmR5bGliIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9ub2RlL2V4dC9jYWxsX2NyZWRlbnRpYWxzLmNjIGIvc3JjL25vZGUvZXh0L2NhbGxfY3JlZGVudGlhbHMuY2MKaW5kZXggM2M4ZjBjNS4uODFmYzU1MiAxMDA2NDQKLS0tIGEvc3JjL25vZGUvZXh0L2NhbGxfY3JlZGVudGlhbHMuY2MKKysrIGIvc3JjL25vZGUvZXh0L2NhbGxfY3JlZGVudGlhbHMuY2MKQEAgLTY4LDYgKzY4LDggQEAKIE5hbjo6Q2FsbGJhY2sgKkNhbGxDcmVkZW50aWFsczo6Y29uc3RydWN0b3I7CiBQZXJzaXN0ZW50PEZ1bmN0aW9uVGVtcGxhdGU+IENhbGxDcmVkZW50aWFsczo6ZnVuX3RwbDsKIAorc3RhdGljIENhbGxiYWNrICpwbHVnaW5fY2FsbGJhY2s7CisKIENhbGxDcmVkZW50aWFsczo6Q2FsbENyZWRlbnRpYWxzKGdycGNfY2FsbF9jcmVkZW50aWFscyAqY3JlZGVudGlhbHMpCiAgICAgOiB3cmFwcGVkX2NyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKSB7fQogCkBAIC04OCw2ICs5MCwxMSBAQAogICAgICAgICAgICAgICAgTmFuOjpOZXc8RnVuY3Rpb25UZW1wbGF0ZT4oQ3JlYXRlRnJvbVBsdWdpbikpLlRvTG9jYWxDaGVja2VkKCkpOwogICBOYW46OlNldChleHBvcnRzLCBOYW46Ok5ldygiQ2FsbENyZWRlbnRpYWxzIikuVG9Mb2NhbENoZWNrZWQoKSwgY3RyKTsKICAgY29uc3RydWN0b3IgPSBuZXcgTmFuOjpDYWxsYmFjayhjdHIpOworCisgIExvY2FsPEZ1bmN0aW9uVGVtcGxhdGU+IGNhbGxiYWNrX3RwbCA9CisgICAgICBOYW46Ok5ldzxGdW5jdGlvblRlbXBsYXRlPihQbHVnaW5DYWxsYmFjayk7CisgIHBsdWdpbl9jYWxsYmFjayA9IG5ldyBDYWxsYmFjaygKKyAgICAgIE5hbjo6R2V0RnVuY3Rpb24oY2FsbGJhY2tfdHBsKS5Ub0xvY2FsQ2hlY2tlZCgpKTsKIH0KIAogYm9vbCBDYWxsQ3JlZGVudGlhbHM6Okhhc0luc3RhbmNlKExvY2FsPFZhbHVlPiB2YWwpIHsKQEAgLTE5NSwyMyArMjAyLDI4IEBACiAgICAgcmV0dXJuIE5hbjo6VGhyb3dUeXBlRXJyb3IoCiAgICAgICAgICJUaGUgY2FsbGJhY2sncyB0aGlyZCBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCIpOwogICB9CisgIGlmICghaW5mb1szXS0+SXNPYmplY3QoKSkgeworICAgIHJldHVybiBOYW46OlRocm93VHlwZUVycm9yKAorICAgICAgICAiVGhlIGNhbGxiYWNrJ3MgZm91cnRoIGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0Iik7CisgIH0KICAgc2hhcmVkX3B0cjxSZXNvdXJjZXM+IHJlc291cmNlcyhuZXcgUmVzb3VyY2VzKTsKICAgZ3JwY19zdGF0dXNfY29kZSBjb2RlID0gc3RhdGljX2Nhc3Q8Z3JwY19zdGF0dXNfY29kZT4oCiAgICAgICBOYW46OlRvPHVpbnQzMl90PihpbmZvWzBdKS5Gcm9tSnVzdCgpKTsKICAgVXRmOFN0cmluZyBkZXRhaWxzX3V0Zjhfc3RyKGluZm9bMV0pOwogICBjaGFyICpkZXRhaWxzID0gKmRldGFpbHNfdXRmOF9zdHI7CiAgIGdycGNfbWV0YWRhdGFfYXJyYXkgYXJyYXk7CisgIExvY2FsPE9iamVjdD4gY2FsbGJhY2tfZGF0YSA9IE5hbjo6VG88T2JqZWN0PihpbmZvWzNdKS5Ub0xvY2FsQ2hlY2tlZCgpOwogICBpZiAoIUNyZWF0ZU1ldGFkYXRhQXJyYXkoTmFuOjpUbzxPYmplY3Q+KGluZm9bMl0pLlRvTG9jYWxDaGVja2VkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJyYXksIHJlc291cmNlcykpewogICAgIHJldHVybiBOYW46OlRocm93RXJyb3IoIkZhaWxlZCB0byBwYXJzZSBtZXRhZGF0YSIpOwogICB9CiAgIGdycGNfY3JlZGVudGlhbHNfcGx1Z2luX21ldGFkYXRhX2NiIGNiID0KICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3JwY19jcmVkZW50aWFsc19wbHVnaW5fbWV0YWRhdGFfY2I+KAotICAgICAgICAgIE5hbjo6R2V0KGluZm8uQ2FsbGVlKCksCisgICAgICAgICAgTmFuOjpHZXQoY2FsbGJhY2tfZGF0YSwKICAgICAgICAgICAgICAgICAgICBOYW46Ok5ldygiY2IiKS5Ub0xvY2FsQ2hlY2tlZCgpCiAgICAgICAgICAgICAgICAgICAgKS5Ub0xvY2FsQ2hlY2tlZCgpLkFzPEV4dGVybmFsPigpLT5WYWx1ZSgpKTsKICAgdm9pZCAqdXNlcl9kYXRhID0KLSAgICAgIE5hbjo6R2V0KGluZm8uQ2FsbGVlKCksCisgICAgICBOYW46OkdldChjYWxsYmFja19kYXRhLAogICAgICAgICAgICAgICAgTmFuOjpOZXcoInVzZXJfZGF0YSIpLlRvTG9jYWxDaGVja2VkKCkKICAgICAgICAgICAgICAgICkuVG9Mb2NhbENoZWNrZWQoKS5BczxFeHRlcm5hbD4oKS0+VmFsdWUoKTsKICAgY2IodXNlcl9kYXRhLCBhcnJheS5tZXRhZGF0YSwgYXJyYXkuY291bnQsIGNvZGUsIGRldGFpbHMpOwpAQCAtMjI3LDE3ICsyMzksMTcgQEAKICAgd2hpbGUgKCFjYWxsYmFja3MuZW1wdHkoKSkgewogICAgIHBsdWdpbl9jYWxsYmFja19kYXRhICpkYXRhID0gY2FsbGJhY2tzLmZyb250KCk7CiAgICAgY2FsbGJhY2tzLnBvcF9mcm9udCgpOwotICAgIC8vIEF0dGFjaCBjYiBhbmQgdXNlcl9kYXRhIHRvIHBsdWdpbl9jYWxsYmFjayBzbyB0aGF0IGl0IGNhbiBhY2Nlc3MgdGhlbSBsYXRlcgotICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IHBsdWdpbl9jYWxsYmFjayA9IE5hbjo6R2V0RnVuY3Rpb24oCi0gICAgICAgIE5hbjo6TmV3PHY4OjpGdW5jdGlvblRlbXBsYXRlPihQbHVnaW5DYWxsYmFjaykpLlRvTG9jYWxDaGVja2VkKCk7Ci0gICAgTmFuOjpTZXQocGx1Z2luX2NhbGxiYWNrLCBOYW46Ok5ldygiY2IiKS5Ub0xvY2FsQ2hlY2tlZCgpLAorICAgIExvY2FsPE9iamVjdD4gY2FsbGJhY2tfZGF0YSA9IE5hbjo6TmV3PE9iamVjdD4oKTsKKyAgICBOYW46OlNldChjYWxsYmFja19kYXRhLCBOYW46Ok5ldygiY2IiKS5Ub0xvY2FsQ2hlY2tlZCgpLAogICAgICAgICAgICAgIE5hbjo6TmV3PHY4OjpFeHRlcm5hbD4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZGF0YS0+Y2IpKSk7Ci0gICAgTmFuOjpTZXQocGx1Z2luX2NhbGxiYWNrLCBOYW46Ok5ldygidXNlcl9kYXRhIikuVG9Mb2NhbENoZWNrZWQoKSwKKyAgICBOYW46OlNldChjYWxsYmFja19kYXRhLCBOYW46Ok5ldygidXNlcl9kYXRhIikuVG9Mb2NhbENoZWNrZWQoKSwKICAgICAgICAgICAgICBOYW46Ok5ldzx2ODo6RXh0ZXJuYWw+KGRhdGEtPnVzZXJfZGF0YSkpOwotICAgIGNvbnN0IGludCBhcmdjID0gMjsKKyAgICBjb25zdCBpbnQgYXJnYyA9IDM7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gYXJndlthcmdjXSA9IHsKICAgICAgIE5hbjo6TmV3KGRhdGEtPnNlcnZpY2VfdXJsKS5Ub0xvY2FsQ2hlY2tlZCgpLAotICAgICAgcGx1Z2luX2NhbGxiYWNrCisgICAgICBjYWxsYmFja19kYXRhLAorICAgICAgLy8gR2V0IExvY2FsPEZ1bmN0aW9uPiBmcm9tIE5hbjo6Q2FsbGJhY2sqCisgICAgICAqKnBsdWdpbl9jYWxsYmFjawogICAgIH07CiAgICAgTmFuOjpDYWxsYmFjayAqY2FsbGJhY2sgPSBzdGF0ZS0+Y2FsbGJhY2s7CiAgICAgY2FsbGJhY2stPkNhbGwoYXJnYywgYXJndik7CmRpZmYgLS1naXQgYS9zcmMvbm9kZS9oZWFsdGhfY2hlY2svcGFja2FnZS5qc29uIGIvc3JjL25vZGUvaGVhbHRoX2NoZWNrL3BhY2thZ2UuanNvbgppbmRleCA2N2Y1MzAxLi40MGUyNzYwIDEwMDY0NAotLS0gYS9zcmMvbm9kZS9oZWFsdGhfY2hlY2svcGFja2FnZS5qc29uCisrKyBiL3NyYy9ub2RlL2hlYWx0aF9jaGVjay9wYWNrYWdlLmpzb24KQEAgLTE5LDExICsxOSwxMSBAQAogICAgICJsb2Rhc2giOiAiXjMuOS4zIiwKICAgICAiZ29vZ2xlLXByb3RvYnVmIjogIl4zLjAuMC1hbHBoYS41IgogICB9LAotICAiZmlsZXMiOiB7CisgICJmaWxlcyI6IFsKICAgICAiTElDRU5TRSIsCiAgICAgImhlYWx0aC5qcyIsCiAgICAgInYxIgotICB9LAorICBdLAogICAibWFpbiI6ICJzcmMvbm9kZS9pbmRleC5qcyIsCiAgICJsaWNlbnNlIjogIkJTRC0zLUNsYXVzZSIKIH0KZGlmZiAtLWdpdCBhL3NyYy9ub2RlL3NyYy9jcmVkZW50aWFscy5qcyBiL3NyYy9ub2RlL3NyYy9jcmVkZW50aWFscy5qcwppbmRleCBiNzQ2ZDA2Li4wNDNkZjA2IDEwMDY0NAotLS0gYS9zcmMvbm9kZS9zcmMvY3JlZGVudGlhbHMuanMKKysrIGIvc3JjL25vZGUvc3JjL2NyZWRlbnRpYWxzLmpzCkBAIC05Miw3ICs5Miw4IEBACiAgKiBAcmV0dXJuIHtDYWxsQ3JlZGVudGlhbHN9IFRoZSBjcmVkZW50aWFscyBvYmplY3QKICAqLwogZXhwb3J0cy5jcmVhdGVGcm9tTWV0YWRhdGFHZW5lcmF0b3IgPSBmdW5jdGlvbihtZXRhZGF0YV9nZW5lcmF0b3IpIHsKLSAgcmV0dXJuIENhbGxDcmVkZW50aWFscy5jcmVhdGVGcm9tUGx1Z2luKGZ1bmN0aW9uKHNlcnZpY2VfdXJsLCBjYWxsYmFjaykgeworICByZXR1cm4gQ2FsbENyZWRlbnRpYWxzLmNyZWF0ZUZyb21QbHVnaW4oZnVuY3Rpb24oc2VydmljZV91cmwsIGNiX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaykgewogICAgIG1ldGFkYXRhX2dlbmVyYXRvcih7c2VydmljZV91cmw6IHNlcnZpY2VfdXJsfSwgZnVuY3Rpb24oZXJyb3IsIG1ldGFkYXRhKSB7CiAgICAgICB2YXIgY29kZSA9IGdycGMuc3RhdHVzLk9LOwogICAgICAgdmFyIG1lc3NhZ2UgPSAnJzsKQEAgLTEwNyw3ICsxMDgsNyBAQAogICAgICAgICAgIG1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGNhbGxiYWNrKGNvZGUsIG1lc3NhZ2UsIG1ldGFkYXRhLl9nZXRDb3JlUmVwcmVzZW50YXRpb24oKSk7CisgICAgICBjYWxsYmFjayhjb2RlLCBtZXNzYWdlLCBtZXRhZGF0YS5fZ2V0Q29yZVJlcHJlc2VudGF0aW9uKCksIGNiX2RhdGEpOwogICAgIH0pOwogICB9KTsKIH07CmRpZmYgLS1naXQgImEvc3JjL29iamVjdGl2ZS1jL1wwNDFQcm90b0NvbXBpbGVyLWdSUENQbHVnaW4ucG9kc3BlYyIgImIvc3JjL29iamVjdGl2ZS1jL1wwNDFQcm90b0NvbXBpbGVyLWdSUENQbHVnaW4ucG9kc3BlYyIKaW5kZXggNzJjYWRiOS4uOTdmNGY1OCAxMDA2NDQKLS0tICJhL3NyYy9vYmplY3RpdmUtYy9cMDQxUHJvdG9Db21waWxlci1nUlBDUGx1Z2luLnBvZHNwZWMiCisrKyAiYi9zcmMvb2JqZWN0aXZlLWMvXDA0MVByb3RvQ29tcGlsZXItZ1JQQ1BsdWdpbi5wb2RzcGVjIgpAQCAtMzYsNyArMzYsNyBAQAogICAjIGV4Y2xhbWF0aW9uIG1hcmsgZW5zdXJlcyB0aGF0IG90aGVyICJyZWd1bGFyIiBwb2RzIHdpbGwgYmUgYWJsZSB0byBmaW5kIGl0IGFzIGl0J2xsIGJlIGluc3RhbGxlZAogICAjIGJlZm9yZSB0aGVtLgogICBzLm5hbWUgICAgID0gJyFQcm90b0NvbXBpbGVyLWdSUENQbHVnaW4nCi0gIHYgPSAnMC4xNC4wJworICB2ID0gJzEuMC4wLXByZTEnCiAgIHMudmVyc2lvbiAgPSB2CiAgIHMuc3VtbWFyeSAgPSAnVGhlIGdSUEMgUHJvdG9DIHBsdWdpbiBnZW5lcmF0ZXMgT2JqZWN0aXZlLUMgZmlsZXMgZnJvbSAucHJvdG8gc2VydmljZXMuJwogICBzLmRlc2NyaXB0aW9uID0gPDwtREVTQwpAQCAtODIsNyArODIsNyBAQAogICBzLmF1dGhvcnMgID0geyAnVGhlIGdSUEMgY29udHJpYnV0b3JzJyA9PiAnZ3JwYy1wYWNrYWdlc0Bnb29nbGUuY29tJyB9CiAKICAgcmVwbyA9ICdncnBjL2dycGMnCi0gIHJlbGVhc2UgPSAncmVsZWFzZS0wXzE0XzEnCisgIHJlbGVhc2UgPSAib2JqZWN0aXZlLWMtdiN7dn0iCiAgIGZpbGUgPSAiZ3JwY19vYmplY3RpdmVfY19wbHVnaW4tI3t2fS1tYWNvcy14ODZfNjQuemlwIgogICBzLnNvdXJjZSA9IHsKICAgICA6aHR0cCA9PiAiaHR0cHM6Ly9naXRodWIuY29tLyN7cmVwb30vcmVsZWFzZXMvZG93bmxvYWQvI3tyZWxlYXNlfS8je2ZpbGV9IiwKZGlmZiAtLWdpdCAiYS9zcmMvb2JqZWN0aXZlLWMvXDA0MVByb3RvQ29tcGlsZXIucG9kc3BlYyIgImIvc3JjL29iamVjdGl2ZS1jL1wwNDFQcm90b0NvbXBpbGVyLnBvZHNwZWMiCmluZGV4IDVlNTliMjUuLjU2YWFjYzMgMTAwNjQ0Ci0tLSAiYS9zcmMvb2JqZWN0aXZlLWMvXDA0MVByb3RvQ29tcGlsZXIucG9kc3BlYyIKKysrICJiL3NyYy9vYmplY3RpdmUtYy9cMDQxUHJvdG9Db21waWxlci5wb2RzcGVjIgpAQCAtOTcsMTAgKzk3LDkgQEAKICAgcy5hdXRob3JzICA9IHsgJ1RoZSBQcm90b2NvbCBCdWZmZXJzIGNvbnRyaWJ1dG9ycycgPT4gJ3Byb3RvYnVmQGdvb2dsZWdyb3Vwcy5jb20nIH0KIAogICByZXBvID0gJ2dvb2dsZS9wcm90b2J1ZicKLSAgcmVsZWFzZSA9ICJ2I3t2fSIKICAgZmlsZSA9ICJwcm90b2MtI3t2fS1vc3gteDg2XzY0LnppcCIKICAgcy5zb3VyY2UgPSB7Ci0gICAgOmh0dHAgPT4gImh0dHBzOi8vZ2l0aHViLmNvbS8je3JlcG99L3JlbGVhc2VzL2Rvd25sb2FkLyN7cmVsZWFzZX0vI3tmaWxlfSIsCisgICAgOmh0dHAgPT4gImh0dHBzOi8vZ2l0aHViLmNvbS8je3JlcG99L3JlbGVhc2VzL2Rvd25sb2FkL3Yje3Z9LyN7ZmlsZX0iLAogICAgICMgVE9ETyhqY2FuaXphbGVzKTogQWRkIHNoYTEgb3Igc2hhMjU2CiAgICAgIyA6c2hhMSA9PiAnPz8nLAogICB9CmRpZmYgLS1naXQgYS9zcmMvb2JqZWN0aXZlLWMvQm9yaW5nU1NMLnBvZHNwZWMgYi9zcmMvb2JqZWN0aXZlLWMvQm9yaW5nU1NMLnBvZHNwZWMKaW5kZXggNDJiNDQzNC4uYjc1OTk5NyAxMDA2NDQKLS0tIGEvc3JjL29iamVjdGl2ZS1jL0JvcmluZ1NTTC5wb2RzcGVjCisrKyBiL3NyYy9vYmplY3RpdmUtYy9Cb3JpbmdTU0wucG9kc3BlYwpAQCAtMzEsNyArMzEsNyBAQAogCiBQb2Q6OlNwZWMubmV3IGRvIHxzfAogICBzLm5hbWUgICAgID0gJ0JvcmluZ1NTTCcKLSAgdmVyc2lvbiA9ICc0LjAnCisgIHZlcnNpb24gPSAnNS4wJwogICBzLnZlcnNpb24gID0gdmVyc2lvbgogICBzLnN1bW1hcnkgID0gJ0JvcmluZ1NTTCBpcyBhIGZvcmsgb2YgT3BlblNTTCB0aGF0IGlzIGRlc2lnbmVkIHRvIG1lZXQgR29vZ2xl4oCZcyBuZWVkcy4nCiAgICMgQWRhcHRlZCBmcm9tIHRoZSBob21lcGFnZToKQEAgLTY3LDggKzY3LDExIEBACiAgICMgIlRoZSBuYW1lIGFuZCBlbWFpbCBhZGRyZXNzZXMgb2YgdGhlIGxpYnJhcnkgbWFpbnRhaW5lcnMsIG5vdCB0aGUgUG9kc3BlYyBtYWludGFpbmVyLiIKICAgcy5hdXRob3JzICA9ICdBZGFtIExhbmdsZXknLCAnRGF2aWQgQmVuamFtaW4nLCAnTWF0dCBCcmFpdGh3YWl0ZScKIAotICBzLnNvdXJjZSA9IHsgOmdpdCA9PiAnaHR0cHM6Ly9ib3Jpbmdzc2wuZ29vZ2xlc291cmNlLmNvbS9ib3Jpbmdzc2wnLAotICAgICAgICAgICAgICAgOnRhZyA9PiAidmVyc2lvbl9mb3JfY29jb2Fwb2RzXyN7dmVyc2lvbn0iIH0KKyAgcy5zb3VyY2UgPSB7CisgICAgOmdpdCA9PiAnaHR0cHM6Ly9ib3Jpbmdzc2wuZ29vZ2xlc291cmNlLmNvbS9ib3Jpbmdzc2wnLAorICAgIDp0YWcgPT4gInZlcnNpb25fZm9yX2NvY29hcG9kc18je3ZlcnNpb259IiwKKyAgICAjIDpjb21taXQgPT4gJzhkMzQzYjQ0YmJhYjgyOWQxYTI4ZmRlZjY1MGNhOTVmN2RiNDQxMmUnLAorICB9CiAKICAgbmFtZSA9ICdvcGVuc3NsJwogCkBAIC0yMTksNyArMjIyLDcgQEAKICAgICAgICAqIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4KICAgICAgICAqIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuICovCiAKLSAgICAgIC8qIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGVycl9kYXRhX2dlbmVyYXRlLmdvLiAqLworICAgICAgIC8qIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGVycl9kYXRhX2dlbmVyYXRlLmdvLiAqLwogCiAgICAgICAjaW5jbHVkZSA8b3BlbnNzbC9iYXNlLmg+CiAgICAgICAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KQEAgLTM4NSw0MiArMzg4LDQyIEBACiAgICAgICAgICAgMHgyODM0MGMxOSwKICAgICAgICAgICAweDI4MzQ4MGFjLAogICAgICAgICAgIDB4MjgzNTAwZWEsCi0gICAgICAgICAgMHgyYzMyMjc3NSwKLSAgICAgICAgICAweDJjMzJhNzgzLAotICAgICAgICAgIDB4MmMzMzI3OTUsCi0gICAgICAgICAgMHgyYzMzYTdhNywKLSAgICAgICAgICAweDJjMzQyN2JiLAotICAgICAgICAgIDB4MmMzNGE3Y2QsCi0gICAgICAgICAgMHgyYzM1MjdlOCwKLSAgICAgICAgICAweDJjMzVhN2ZhLAotICAgICAgICAgIDB4MmMzNjI4MGQsCisgICAgICAgICAgMHgyYzMyMjdjYiwKKyAgICAgICAgICAweDJjMzJhN2Q5LAorICAgICAgICAgIDB4MmMzMzI3ZWIsCisgICAgICAgICAgMHgyYzMzYTdmZCwKKyAgICAgICAgICAweDJjMzQyODExLAorICAgICAgICAgIDB4MmMzNGE4MjMsCisgICAgICAgICAgMHgyYzM1MjgzZSwKKyAgICAgICAgICAweDJjMzVhODUwLAorICAgICAgICAgIDB4MmMzNjI4NjMsCiAgICAgICAgICAgMHgyYzM2ODMyZCwKLSAgICAgICAgICAweDJjMzcyODFhLAotICAgICAgICAgIDB4MmMzN2E4MmMsCi0gICAgICAgICAgMHgyYzM4MjgzZiwKLSAgICAgICAgICAweDJjMzhhODU2LAotICAgICAgICAgIDB4MmMzOTI4NjQsCi0gICAgICAgICAgMHgyYzM5YTg3NCwKLSAgICAgICAgICAweDJjM2EyODg2LAotICAgICAgICAgIDB4MmMzYWE4OWEsCi0gICAgICAgICAgMHgyYzNiMjhhYiwKLSAgICAgICAgICAweDJjM2JhOGNhLAotICAgICAgICAgIDB4MmMzYzI4ZGUsCi0gICAgICAgICAgMHgyYzNjYThmNCwKLSAgICAgICAgICAweDJjM2QyOTBkLAotICAgICAgICAgIDB4MmMzZGE5MmEsCi0gICAgICAgICAgMHgyYzNlMjkzYiwKLSAgICAgICAgICAweDJjM2VhOTQ5LAotICAgICAgICAgIDB4MmMzZjI5NjEsCi0gICAgICAgICAgMHgyYzNmYTk3OSwKLSAgICAgICAgICAweDJjNDAyOTg2LAorICAgICAgICAgIDB4MmMzNzI4NzAsCisgICAgICAgICAgMHgyYzM3YTg4MiwKKyAgICAgICAgICAweDJjMzgyODk1LAorICAgICAgICAgIDB4MmMzOGE4YWMsCisgICAgICAgICAgMHgyYzM5MjhiYSwKKyAgICAgICAgICAweDJjMzlhOGNhLAorICAgICAgICAgIDB4MmMzYTI4ZGMsCisgICAgICAgICAgMHgyYzNhYThmMCwKKyAgICAgICAgICAweDJjM2IyOTAxLAorICAgICAgICAgIDB4MmMzYmE5MjAsCisgICAgICAgICAgMHgyYzNjMjkzNCwKKyAgICAgICAgICAweDJjM2NhOTRhLAorICAgICAgICAgIDB4MmMzZDI5NjMsCisgICAgICAgICAgMHgyYzNkYTk4MCwKKyAgICAgICAgICAweDJjM2UyOTkxLAorICAgICAgICAgIDB4MmMzZWE5OWYsCisgICAgICAgICAgMHgyYzNmMjliNywKKyAgICAgICAgICAweDJjM2ZhOWNmLAorICAgICAgICAgIDB4MmM0MDI5ZGMsCiAgICAgICAgICAgMHgyYzQwOTBlNywKLSAgICAgICAgICAweDJjNDEyOTk3LAotICAgICAgICAgIDB4MmM0MWE5YWEsCisgICAgICAgICAgMHgyYzQxMjllZCwKKyAgICAgICAgICAweDJjNDFhYTAwLAogICAgICAgICAgIDB4MmM0MjEwYzAsCi0gICAgICAgICAgMHgyYzQyYTliYiwKKyAgICAgICAgICAweDJjNDJhYTExLAogICAgICAgICAgIDB4MmM0MzA3MjAsCi0gICAgICAgICAgMHgyYzQzYThiYywKKyAgICAgICAgICAweDJjNDNhOTEyLAogICAgICAgICAgIDB4MzAzMjAwMDAsCiAgICAgICAgICAgMHgzMDMyODAxNSwKICAgICAgICAgICAweDMwMzMwMDFmLApAQCAtNTk0LDE0NSArNTk3LDE0OCBAQAogICAgICAgICAgIDB4NDA0NjE5ZTgsCiAgICAgICAgICAgMHg0MDQ2OWEwOCwKICAgICAgICAgICAweDQwNDcxYTE2LAotICAgICAgICAgIDB4NDA0NzlhMmEsCi0gICAgICAgICAgMHg0MDQ4MWEzZiwKLSAgICAgICAgICAweDQwNDg5YTU4LAotICAgICAgICAgIDB4NDA0OTFhNmYsCi0gICAgICAgICAgMHg0MDQ5OWE4OSwKLSAgICAgICAgICAweDQwNGExYWEwLAotICAgICAgICAgIDB4NDA0YTlhYmUsCi0gICAgICAgICAgMHg0MDRiMWFkNiwKLSAgICAgICAgICAweDQwNGI5YWVkLAotICAgICAgICAgIDB4NDA0YzFiMDMsCi0gICAgICAgICAgMHg0MDRjOWIxNSwKLSAgICAgICAgICAweDQwNGQxYjM2LAotICAgICAgICAgIDB4NDA0ZDliNTgsCi0gICAgICAgICAgMHg0MDRlMWI2YywKLSAgICAgICAgICAweDQwNGU5Yjc5LAotICAgICAgICAgIDB4NDA0ZjFiOTAsCi0gICAgICAgICAgMHg0MDRmOWJhMCwKLSAgICAgICAgICAweDQwNTAxYmNhLAotICAgICAgICAgIDB4NDA1MDliZGUsCi0gICAgICAgICAgMHg0MDUxMWJmOSwKLSAgICAgICAgICAweDQwNTE5YzA5LAotICAgICAgICAgIDB4NDA1MjFjMjAsCi0gICAgICAgICAgMHg0MDUyOWMzMiwKLSAgICAgICAgICAweDQwNTMxYzRhLAotICAgICAgICAgIDB4NDA1MzljNWQsCi0gICAgICAgICAgMHg0MDU0MWM3MiwKLSAgICAgICAgICAweDQwNTQ5Yzk1LAotICAgICAgICAgIDB4NDA1NTFjYTMsCi0gICAgICAgICAgMHg0MDU1OWNjMCwKLSAgICAgICAgICAweDQwNTYxY2NkLAotICAgICAgICAgIDB4NDA1NjljZTYsCi0gICAgICAgICAgMHg0MDU3MWNmZSwKLSAgICAgICAgICAweDQwNTc5ZDExLAotICAgICAgICAgIDB4NDA1ODFkMjYsCi0gICAgICAgICAgMHg0MDU4OWQzOCwKLSAgICAgICAgICAweDQwNTkxZDQ4LAotICAgICAgICAgIDB4NDA1OTlkNjEsCi0gICAgICAgICAgMHg0MDVhMWQ3NSwKLSAgICAgICAgICAweDQwNWE5ZDg1LAotICAgICAgICAgIDB4NDA1YjFkOWQsCi0gICAgICAgICAgMHg0MDViOWRhZSwKLSAgICAgICAgICAweDQwNWMxZGMxLAotICAgICAgICAgIDB4NDA1YzlkZDIsCi0gICAgICAgICAgMHg0MDVkMWRkZiwKLSAgICAgICAgICAweDQwNWQ5ZGY2LAotICAgICAgICAgIDB4NDA1ZTFlMTYsCisgICAgICAgICAgMHg0MDQ3OWEzZCwKKyAgICAgICAgICAweDQwNDgxYTUyLAorICAgICAgICAgIDB4NDA0ODlhNmIsCisgICAgICAgICAgMHg0MDQ5MWE4MiwKKyAgICAgICAgICAweDQwNDk5YTljLAorICAgICAgICAgIDB4NDA0YTFhYjMsCisgICAgICAgICAgMHg0MDRhOWFkMSwKKyAgICAgICAgICAweDQwNGIxYWU5LAorICAgICAgICAgIDB4NDA0YjliMDAsCisgICAgICAgICAgMHg0MDRjMWIxNiwKKyAgICAgICAgICAweDQwNGM5YjI4LAorICAgICAgICAgIDB4NDA0ZDFiNDksCisgICAgICAgICAgMHg0MDRkOWI2YiwKKyAgICAgICAgICAweDQwNGUxYjdmLAorICAgICAgICAgIDB4NDA0ZTliOGMsCisgICAgICAgICAgMHg0MDRmMWJhMywKKyAgICAgICAgICAweDQwNGY5YmIzLAorICAgICAgICAgIDB4NDA1MDFiZGQsCisgICAgICAgICAgMHg0MDUwOWJmMSwKKyAgICAgICAgICAweDQwNTExYzBjLAorICAgICAgICAgIDB4NDA1MTljMWMsCisgICAgICAgICAgMHg0MDUyMWMzMywKKyAgICAgICAgICAweDQwNTI5YzQ1LAorICAgICAgICAgIDB4NDA1MzFjNWQsCisgICAgICAgICAgMHg0MDUzOWM3MCwKKyAgICAgICAgICAweDQwNTQxYzg1LAorICAgICAgICAgIDB4NDA1NDljYTgsCisgICAgICAgICAgMHg0MDU1MWNiNiwKKyAgICAgICAgICAweDQwNTU5Y2QzLAorICAgICAgICAgIDB4NDA1NjFjZTAsCisgICAgICAgICAgMHg0MDU2OWNmOSwKKyAgICAgICAgICAweDQwNTcxZDExLAorICAgICAgICAgIDB4NDA1NzlkMjQsCisgICAgICAgICAgMHg0MDU4MWQzOSwKKyAgICAgICAgICAweDQwNTg5ZDRiLAorICAgICAgICAgIDB4NDA1OTFkN2EsCisgICAgICAgICAgMHg0MDU5OWQ5MywKKyAgICAgICAgICAweDQwNWExZGE3LAorICAgICAgICAgIDB4NDA1YTlkYjcsCisgICAgICAgICAgMHg0MDViMWRjZiwKKyAgICAgICAgICAweDQwNWI5ZGUwLAorICAgICAgICAgIDB4NDA1YzFkZjMsCisgICAgICAgICAgMHg0MDVjOWUwNCwKKyAgICAgICAgICAweDQwNWQxZTExLAorICAgICAgICAgIDB4NDA1ZDllMjgsCisgICAgICAgICAgMHg0MDVlMWU0OCwKICAgICAgICAgICAweDQwNWU4YTk1LAotICAgICAgICAgIDB4NDA1ZjFlMzcsCi0gICAgICAgICAgMHg0MDVmOWU0NCwKLSAgICAgICAgICAweDQwNjAxZTUyLAotICAgICAgICAgIDB4NDA2MDllNzQsCi0gICAgICAgICAgMHg0MDYxMWU5YywKLSAgICAgICAgICAweDQwNjE5ZWIxLAotICAgICAgICAgIDB4NDA2MjFlYzgsCi0gICAgICAgICAgMHg0MDYyOWVkOSwKLSAgICAgICAgICAweDQwNjMxZWVhLAotICAgICAgICAgIDB4NDA2MzllZmYsCi0gICAgICAgICAgMHg0MDY0MWYxNiwKLSAgICAgICAgICAweDQwNjQ5ZjI3LAotICAgICAgICAgIDB4NDA2NTFmNDIsCi0gICAgICAgICAgMHg0MDY1OWY1OSwKLSAgICAgICAgICAweDQwNjYxZjcxLAotICAgICAgICAgIDB4NDA2NjlmOWIsCi0gICAgICAgICAgMHg0MDY3MWZjNiwKLSAgICAgICAgICAweDQwNjc5ZmU3LAotICAgICAgICAgIDB4NDA2ODFmZmEsCi0gICAgICAgICAgMHg0MDY4YTAxYiwKLSAgICAgICAgICAweDQwNjkyMDRkLAotICAgICAgICAgIDB4NDA2OWEwN2IsCi0gICAgICAgICAgMHg0MDZhMjA5YywKLSAgICAgICAgICAweDQwNmFhMGJjLAotICAgICAgICAgIDB4NDA2YjIyNDQsCi0gICAgICAgICAgMHg0MDZiYTI2NywKLSAgICAgICAgICAweDQwNmMyMjdkLAotICAgICAgICAgIDB4NDA2Y2E0YTksCi0gICAgICAgICAgMHg0MDZkMjRkOCwKLSAgICAgICAgICAweDQwNmRhNTAwLAotICAgICAgICAgIDB4NDA2ZTI1MTksCi0gICAgICAgICAgMHg0MDZlYTUzMSwKLSAgICAgICAgICAweDQwNmYyNTUwLAotICAgICAgICAgIDB4NDA2ZmE1NjUsCi0gICAgICAgICAgMHg0MDcwMjU3OCwKLSAgICAgICAgICAweDQwNzBhNTk1LAorICAgICAgICAgIDB4NDA1ZjFlNjksCisgICAgICAgICAgMHg0MDVmOWU3NiwKKyAgICAgICAgICAweDQwNjAxZTg0LAorICAgICAgICAgIDB4NDA2MDllYTYsCisgICAgICAgICAgMHg0MDYxMWVjZSwKKyAgICAgICAgICAweDQwNjE5ZWUzLAorICAgICAgICAgIDB4NDA2MjFlZmEsCisgICAgICAgICAgMHg0MDYyOWYwYiwKKyAgICAgICAgICAweDQwNjMxZjFjLAorICAgICAgICAgIDB4NDA2MzlmMzEsCisgICAgICAgICAgMHg0MDY0MWY0OCwKKyAgICAgICAgICAweDQwNjQ5ZjU5LAorICAgICAgICAgIDB4NDA2NTFmNzQsCisgICAgICAgICAgMHg0MDY1OWY4YiwKKyAgICAgICAgICAweDQwNjYxZmEzLAorICAgICAgICAgIDB4NDA2NjlmY2QsCisgICAgICAgICAgMHg0MDY3MWZmOCwKKyAgICAgICAgICAweDQwNjdhMDE5LAorICAgICAgICAgIDB4NDA2ODIwMmMsCisgICAgICAgICAgMHg0MDY4YTA0ZCwKKyAgICAgICAgICAweDQwNjkyMDdmLAorICAgICAgICAgIDB4NDA2OWEwYWQsCisgICAgICAgICAgMHg0MDZhMjBjZSwKKyAgICAgICAgICAweDQwNmFhMGVlLAorICAgICAgICAgIDB4NDA2YjIyNzYsCisgICAgICAgICAgMHg0MDZiYTI5OSwKKyAgICAgICAgICAweDQwNmMyMmFmLAorICAgICAgICAgIDB4NDA2Y2E0ZGIsCisgICAgICAgICAgMHg0MDZkMjUwYSwKKyAgICAgICAgICAweDQwNmRhNTMyLAorICAgICAgICAgIDB4NDA2ZTI1NGIsCisgICAgICAgICAgMHg0MDZlYTU2MywKKyAgICAgICAgICAweDQwNmYyNTgyLAorICAgICAgICAgIDB4NDA2ZmE1OTcsCisgICAgICAgICAgMHg0MDcwMjVhYSwKKyAgICAgICAgICAweDQwNzBhNWM3LAogICAgICAgICAgIDB4NDA3MTA4MDAsCi0gICAgICAgICAgMHg0MDcxYTVhNywKLSAgICAgICAgICAweDQwNzIyNWJhLAotICAgICAgICAgIDB4NDA3MmE1ZDMsCi0gICAgICAgICAgMHg0MDczMjVlYiwKKyAgICAgICAgICAweDQwNzFhNWQ5LAorICAgICAgICAgIDB4NDA3MjI1ZWMsCisgICAgICAgICAgMHg0MDcyYTYwNSwKKyAgICAgICAgICAweDQwNzMyNjFkLAogICAgICAgICAgIDB4NDA3MzkzNmQsCi0gICAgICAgICAgMHg0MDc0MjVmZiwKLSAgICAgICAgICAweDQwNzRhNjE5LAotICAgICAgICAgIDB4NDA3NTI2MmEsCi0gICAgICAgICAgMHg0MDc1YTYzZSwKLSAgICAgICAgICAweDQwNzYyNjRjLAorICAgICAgICAgIDB4NDA3NDI2MzEsCisgICAgICAgICAgMHg0MDc0YTY0YiwKKyAgICAgICAgICAweDQwNzUyNjVjLAorICAgICAgICAgIDB4NDA3NWE2NzAsCisgICAgICAgICAgMHg0MDc2MjY3ZSwKICAgICAgICAgICAweDQwNzY5MWFhLAotICAgICAgICAgIDB4NDA3NzI2NzEsCi0gICAgICAgICAgMHg0MDc3YTY5MywKLSAgICAgICAgICAweDQwNzgyNmFlLAotICAgICAgICAgIDB4NDA3OGE2YzMsCi0gICAgICAgICAgMHg0MDc5MjZkYSwKLSAgICAgICAgICAweDQwNzlhNmYwLAotICAgICAgICAgIDB4NDA3YTI2ZmMsCi0gICAgICAgICAgMHg0MDdhYTcwZiwKLSAgICAgICAgICAweDQwN2IyNzI0LAotICAgICAgICAgIDB4NDA3YmE3MzYsCi0gICAgICAgICAgMHg0MDdjMjc0YiwKLSAgICAgICAgICAweDQwN2NhNzU0LAotICAgICAgICAgIDB4NDA3ZDIwMzYsCi0gICAgICAgICAgMHg0MDdkOWJiMCwKLSAgICAgICAgICAweDQxZjQyMTZmLAotICAgICAgICAgIDB4NDFmOTIyMDEsCi0gICAgICAgICAgMHg0MWZlMjBmNCwKLSAgICAgICAgICAweDQxZmVhMmQwLAotICAgICAgICAgIDB4NDFmZjIzYzEsCi0gICAgICAgICAgMHg0MjAzMjE4OCwKLSAgICAgICAgICAweDQyMDgyMWFhLAotICAgICAgICAgIDB4NDIwOGExZTYsCi0gICAgICAgICAgMHg0MjA5MjBkOCwKLSAgICAgICAgICAweDQyMDlhMjIwLAotICAgICAgICAgIDB4NDIwYTIxMmYsCi0gICAgICAgICAgMHg0MjBhYTEwZiwKLSAgICAgICAgICAweDQyMGIyMTRmLAotICAgICAgICAgIDB4NDIwYmExYzgsCi0gICAgICAgICAgMHg0MjBjMjNkZCwKLSAgICAgICAgICAweDQyMGNhMjlkLAotICAgICAgICAgIDB4NDIwZDIyYjcsCi0gICAgICAgICAgMHg0MjBkYTJlZSwKLSAgICAgICAgICAweDQyMTIyMzA4LAotICAgICAgICAgIDB4NDIxNzIzYTQsCi0gICAgICAgICAgMHg0MjE3YTM0YSwKLSAgICAgICAgICAweDQyMWMyMzZjLAotICAgICAgICAgIDB4NDIxZjIzMjcsCi0gICAgICAgICAgMHg0MjIxMjNmNCwKLSAgICAgICAgICAweDQyMjYyMzg3LAotICAgICAgICAgIDB4NDIyYjI0OGQsCi0gICAgICAgICAgMHg0MjJiYTQ1NiwKLSAgICAgICAgICAweDQyMmMyNDc1LAotICAgICAgICAgIDB4NDIyY2E0MzAsCi0gICAgICAgICAgMHg0MjJkMjQwZiwKKyAgICAgICAgICAweDQwNzcyNmEzLAorICAgICAgICAgIDB4NDA3N2E2YzUsCisgICAgICAgICAgMHg0MDc4MjZlMCwKKyAgICAgICAgICAweDQwNzhhNzE5LAorICAgICAgICAgIDB4NDA3OTI3MzAsCisgICAgICAgICAgMHg0MDc5YTc0NiwKKyAgICAgICAgICAweDQwN2EyNzUyLAorICAgICAgICAgIDB4NDA3YWE3NjUsCisgICAgICAgICAgMHg0MDdiMjc3YSwKKyAgICAgICAgICAweDQwN2JhNzhjLAorICAgICAgICAgIDB4NDA3YzI3YTEsCisgICAgICAgICAgMHg0MDdjYTdhYSwKKyAgICAgICAgICAweDQwN2QyMDY4LAorICAgICAgICAgIDB4NDA3ZDliYzMsCisgICAgICAgICAgMHg0MDdlMjZmNSwKKyAgICAgICAgICAweDQwN2U5ZDViLAorICAgICAgICAgIDB4NDA3ZjFhMmEsCisgICAgICAgICAgMHg0MWY0MjFhMSwKKyAgICAgICAgICAweDQxZjkyMjMzLAorICAgICAgICAgIDB4NDFmZTIxMjYsCisgICAgICAgICAgMHg0MWZlYTMwMiwKKyAgICAgICAgICAweDQxZmYyM2YzLAorICAgICAgICAgIDB4NDIwMzIxYmEsCisgICAgICAgICAgMHg0MjA4MjFkYywKKyAgICAgICAgICAweDQyMDhhMjE4LAorICAgICAgICAgIDB4NDIwOTIxMGEsCisgICAgICAgICAgMHg0MjA5YTI1MiwKKyAgICAgICAgICAweDQyMGEyMTYxLAorICAgICAgICAgIDB4NDIwYWExNDEsCisgICAgICAgICAgMHg0MjBiMjE4MSwKKyAgICAgICAgICAweDQyMGJhMWZhLAorICAgICAgICAgIDB4NDIwYzI0MGYsCisgICAgICAgICAgMHg0MjBjYTJjZiwKKyAgICAgICAgICAweDQyMGQyMmU5LAorICAgICAgICAgIDB4NDIwZGEzMjAsCisgICAgICAgICAgMHg0MjEyMjMzYSwKKyAgICAgICAgICAweDQyMTcyM2Q2LAorICAgICAgICAgIDB4NDIxN2EzN2MsCisgICAgICAgICAgMHg0MjFjMjM5ZSwKKyAgICAgICAgICAweDQyMWYyMzU5LAorICAgICAgICAgIDB4NDIyMTI0MjYsCisgICAgICAgICAgMHg0MjI2MjNiOSwKKyAgICAgICAgICAweDQyMmIyNGJmLAorICAgICAgICAgIDB4NDIyYmE0ODgsCisgICAgICAgICAgMHg0MjJjMjRhNywKKyAgICAgICAgICAweDQyMmNhNDYyLAorICAgICAgICAgIDB4NDIyZDI0NDEsCiAgICAgICAgICAgMHg0NDMyMDcyYiwKICAgICAgICAgICAweDQ0MzI4NzNhLAogICAgICAgICAgIDB4NDQzMzA3NDYsCkBAIC03NzUsNjkgKzc4MSw2OSBAQAogICAgICAgICAgIDB4NGMzZDEzNmQsCiAgICAgICAgICAgMHg0YzNkOTM3YywKICAgICAgICAgICAweDRjM2UxMzg5LAotICAgICAgICAgIDB4NTAzMjI5Y2QsCi0gICAgICAgICAgMHg1MDMyYTlkYywKLSAgICAgICAgICAweDUwMzMyOWU3LAotICAgICAgICAgIDB4NTAzM2E5ZjcsCi0gICAgICAgICAgMHg1MDM0MmExMCwKLSAgICAgICAgICAweDUwMzRhYTJhLAotICAgICAgICAgIDB4NTAzNTJhMzgsCi0gICAgICAgICAgMHg1MDM1YWE0ZSwKLSAgICAgICAgICAweDUwMzYyYTYwLAotICAgICAgICAgIDB4NTAzNmFhNzYsCi0gICAgICAgICAgMHg1MDM3MmE4ZiwKLSAgICAgICAgICAweDUwMzdhYWEyLAotICAgICAgICAgIDB4NTAzODJhYmEsCi0gICAgICAgICAgMHg1MDM4YWFjYiwKLSAgICAgICAgICAweDUwMzkyYWUwLAotICAgICAgICAgIDB4NTAzOWFhZjQsCi0gICAgICAgICAgMHg1MDNhMmIxNCwKLSAgICAgICAgICAweDUwM2FhYjJhLAotICAgICAgICAgIDB4NTAzYjJiNDIsCi0gICAgICAgICAgMHg1MDNiYWI1NCwKLSAgICAgICAgICAweDUwM2MyYjcwLAotICAgICAgICAgIDB4NTAzY2FiODcsCi0gICAgICAgICAgMHg1MDNkMmJhMCwKLSAgICAgICAgICAweDUwM2RhYmI2LAotICAgICAgICAgIDB4NTAzZTJiYzMsCi0gICAgICAgICAgMHg1MDNlYWJkOSwKLSAgICAgICAgICAweDUwM2YyYmViLAorICAgICAgICAgIDB4NTAzMjJhMjMsCisgICAgICAgICAgMHg1MDMyYWEzMiwKKyAgICAgICAgICAweDUwMzMyYTNkLAorICAgICAgICAgIDB4NTAzM2FhNGQsCisgICAgICAgICAgMHg1MDM0MmE2NiwKKyAgICAgICAgICAweDUwMzRhYTgwLAorICAgICAgICAgIDB4NTAzNTJhOGUsCisgICAgICAgICAgMHg1MDM1YWFhNCwKKyAgICAgICAgICAweDUwMzYyYWI2LAorICAgICAgICAgIDB4NTAzNmFhY2MsCisgICAgICAgICAgMHg1MDM3MmFlNSwKKyAgICAgICAgICAweDUwMzdhYWY4LAorICAgICAgICAgIDB4NTAzODJiMTAsCisgICAgICAgICAgMHg1MDM4YWIyMSwKKyAgICAgICAgICAweDUwMzkyYjM2LAorICAgICAgICAgIDB4NTAzOWFiNGEsCisgICAgICAgICAgMHg1MDNhMmI2YSwKKyAgICAgICAgICAweDUwM2FhYjgwLAorICAgICAgICAgIDB4NTAzYjJiOTgsCisgICAgICAgICAgMHg1MDNiYWJhYSwKKyAgICAgICAgICAweDUwM2MyYmM2LAorICAgICAgICAgIDB4NTAzY2FiZGQsCisgICAgICAgICAgMHg1MDNkMmJmNiwKKyAgICAgICAgICAweDUwM2RhYzBjLAorICAgICAgICAgIDB4NTAzZTJjMTksCisgICAgICAgICAgMHg1MDNlYWMyZiwKKyAgICAgICAgICAweDUwM2YyYzQxLAogICAgICAgICAgIDB4NTAzZjgzODIsCi0gICAgICAgICAgMHg1MDQwMmJmZSwKLSAgICAgICAgICAweDUwNDBhYzBlLAotICAgICAgICAgIDB4NTA0MTJjMjgsCi0gICAgICAgICAgMHg1MDQxYWMzNywKLSAgICAgICAgICAweDUwNDIyYzUxLAotICAgICAgICAgIDB4NTA0MmFjNmUsCi0gICAgICAgICAgMHg1MDQzMmM3ZSwKLSAgICAgICAgICAweDUwNDNhYzhlLAotICAgICAgICAgIDB4NTA0NDJjOWQsCisgICAgICAgICAgMHg1MDQwMmM1NCwKKyAgICAgICAgICAweDUwNDBhYzY0LAorICAgICAgICAgIDB4NTA0MTJjN2UsCisgICAgICAgICAgMHg1MDQxYWM4ZCwKKyAgICAgICAgICAweDUwNDIyY2E3LAorICAgICAgICAgIDB4NTA0MmFjYzQsCisgICAgICAgICAgMHg1MDQzMmNkNCwKKyAgICAgICAgICAweDUwNDNhY2U0LAorICAgICAgICAgIDB4NTA0NDJjZjMsCiAgICAgICAgICAgMHg1MDQ0ODQzZiwKLSAgICAgICAgICAweDUwNDUyY2IxLAotICAgICAgICAgIDB4NTA0NWFjY2YsCi0gICAgICAgICAgMHg1MDQ2MmNlMiwKLSAgICAgICAgICAweDUwNDZhY2Y4LAotICAgICAgICAgIDB4NTA0NzJkMGEsCi0gICAgICAgICAgMHg1MDQ3YWQxZiwKLSAgICAgICAgICAweDUwNDgyZDQ1LAotICAgICAgICAgIDB4NTA0OGFkNTMsCi0gICAgICAgICAgMHg1MDQ5MmQ2NiwKLSAgICAgICAgICAweDUwNDlhZDdiLAotICAgICAgICAgIDB4NTA0YTJkOTEsCi0gICAgICAgICAgMHg1MDRhYWRhMSwKLSAgICAgICAgICAweDUwNGIyZGMxLAotICAgICAgICAgIDB4NTA0YmFkZDQsCi0gICAgICAgICAgMHg1MDRjMmRmNywKLSAgICAgICAgICAweDUwNGNhZTI1LAotICAgICAgICAgIDB4NTA0ZDJlMzcsCi0gICAgICAgICAgMHg1MDRkYWU1NCwKLSAgICAgICAgICAweDUwNGUyZTZmLAotICAgICAgICAgIDB4NTA0ZWFlOGIsCi0gICAgICAgICAgMHg1MDRmMmU5ZCwKLSAgICAgICAgICAweDUwNGZhZWI0LAotICAgICAgICAgIDB4NTA1MDJlYzMsCisgICAgICAgICAgMHg1MDQ1MmQwNywKKyAgICAgICAgICAweDUwNDVhZDI1LAorICAgICAgICAgIDB4NTA0NjJkMzgsCisgICAgICAgICAgMHg1MDQ2YWQ0ZSwKKyAgICAgICAgICAweDUwNDcyZDYwLAorICAgICAgICAgIDB4NTA0N2FkNzUsCisgICAgICAgICAgMHg1MDQ4MmQ5YiwKKyAgICAgICAgICAweDUwNDhhZGE5LAorICAgICAgICAgIDB4NTA0OTJkYmMsCisgICAgICAgICAgMHg1MDQ5YWRkMSwKKyAgICAgICAgICAweDUwNGEyZGU3LAorICAgICAgICAgIDB4NTA0YWFkZjcsCisgICAgICAgICAgMHg1MDRiMmUxNywKKyAgICAgICAgICAweDUwNGJhZTJhLAorICAgICAgICAgIDB4NTA0YzJlNGQsCisgICAgICAgICAgMHg1MDRjYWU3YiwKKyAgICAgICAgICAweDUwNGQyZThkLAorICAgICAgICAgIDB4NTA0ZGFlYWEsCisgICAgICAgICAgMHg1MDRlMmVjNSwKKyAgICAgICAgICAweDUwNGVhZWUxLAorICAgICAgICAgIDB4NTA0ZjJlZjMsCisgICAgICAgICAgMHg1MDRmYWYwYSwKKyAgICAgICAgICAweDUwNTAyZjE5LAogICAgICAgICAgIDB4NTA1MDg2ZWYsCi0gICAgICAgICAgMHg1MDUxMmVkNiwKKyAgICAgICAgICAweDUwNTEyZjJjLAogICAgICAgICAgIDB4NTgzMjBlYzksCiAgICAgICAgICAgMHg2ODMyMGU4YiwKICAgICAgICAgICAweDY4MzI4YzI1LApAQCAtMTIxOCw2ICsxMjI0LDcgQEAKICAgICAgICAgICAiREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9OR1xcMCIKICAgICAgICAgICAiREhfUF9UT09fTE9OR1xcMCIKICAgICAgICAgICAiRElHRVNUX0NIRUNLX0ZBSUxFRFxcMCIKKyAgICAgICAgICAiRE9XTkdSQURFX0RFVEVDVEVEXFwwIgogICAgICAgICAgICJEVExTX01FU1NBR0VfVE9PX0JJR1xcMCIKICAgICAgICAgICAiRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HXFwwIgogICAgICAgICAgICJFTVNfU1RBVEVfSU5DT05TSVNURU5UXFwwIgpAQCAtMTI1NCw2ICsxMjYxLDcgQEAKICAgICAgICAgICAiTk9fQ0lQSEVSU19BVkFJTEFCTEVcXDAiCiAgICAgICAgICAgIk5PX0NJUEhFUlNfUEFTU0VEXFwwIgogICAgICAgICAgICJOT19DSVBIRVJfTUFUQ0hcXDAiCisgICAgICAgICAgIk5PX0NPTU1PTl9TSUdOQVRVUkVfQUxHT1JJVEhNU1xcMCIKICAgICAgICAgICAiTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVEXFwwIgogICAgICAgICAgICJOT19NRVRIT0RfU1BFQ0lGSUVEXFwwIgogICAgICAgICAgICJOT19QMjU2X1NVUFBPUlRcXDAiCkBAIC0xMzQ0LDYgKzEzNTIsNyBAQAogICAgICAgICAgICJVTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE1cXDAiCiAgICAgICAgICAgIlVOU1VQUE9SVEVEX0VMTElQVElDX0NVUlZFXFwwIgogICAgICAgICAgICJVTlNVUFBPUlRFRF9QUk9UT0NPTFxcMCIKKyAgICAgICAgICAiVU5TVVBQT1JURURfUFJPVE9DT0xfRk9SX0NVU1RPTV9LRVlcXDAiCiAgICAgICAgICAgIldST05HX0NFUlRJRklDQVRFX1RZUEVcXDAiCiAgICAgICAgICAgIldST05HX0NJUEhFUl9SRVRVUk5FRFxcMCIKICAgICAgICAgICAiV1JPTkdfQ1VSVkVcXDAiCmRpZmYgLS1naXQgYS9zcmMvb2JqZWN0aXZlLWMvUHJvdG9SUEMvUHJvdG9SUEMubSBiL3NyYy9vYmplY3RpdmUtYy9Qcm90b1JQQy9Qcm90b1JQQy5tCmluZGV4IGU3MjMyZjIuLjgzZDFiNjUgMTAwNjQ0Ci0tLSBhL3NyYy9vYmplY3RpdmUtYy9Qcm90b1JQQy9Qcm90b1JQQy5tCisrKyBiL3NyYy9vYmplY3RpdmUtYy9Qcm90b1JQQy9Qcm90b1JQQy5tCkBAIC0zMyw3ICszMywxMSBAQAogCiAjaW1wb3J0ICJQcm90b1JQQy5oIgogCi0jaW1wb3J0IDxQcm90b2J1Zi9HUEJQcm90b2NvbEJ1ZmZlcnMuaD4KKyNpZiBHUEJfVVNFX1BST1RPQlVGX0ZSQU1FV09SS19JTVBPUlRTCisgI2ltcG9ydCA8UHJvdG9idWYvR1BCUHJvdG9jb2xCdWZmZXJzLmg+CisjZWxzZQorICNpbXBvcnQgPEdQQlByb3RvY29sQnVmZmVycy5oPgorI2VuZGlmCiAjaW1wb3J0IDxSeExpYnJhcnkvR1JYV3JpdGVhYmxlLmg+CiAjaW1wb3J0IDxSeExpYnJhcnkvR1JYV3JpdGVyK1RyYW5zZm9ybWF0aW9ucy5oPgogCmRpZmYgLS1naXQgYS9zcmMvb2JqZWN0aXZlLWMvUkVBRE1FLm1kIGIvc3JjL29iamVjdGl2ZS1jL1JFQURNRS5tZAppbmRleCBhMGNhNWY0Li42ZTkxN2RkIDEwMDY0NAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvUkVBRE1FLm1kCisrKyBiL3NyYy9vYmplY3RpdmUtYy9SRUFETUUubWQKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgc3JjID0gJy4nCiAKICAgIyBXZSdsbCB1c2UgcHJvdG9jIHdpdGggdGhlIGdSUEMgcGx1Z2luLgotICBzLmRlcGVuZGVuY3kgJyFQcm90b0NvbXBpbGVyLWdSUENQbHVnaW4nLCAnfj4gMC4xNCcKKyAgcy5kZXBlbmRlbmN5ICchUHJvdG9Db21waWxlci1nUlBDUGx1Z2luJywgJ34+IDEuMC4wLXByZTEnCiAKICAgIyBQb2RzIGRpcmVjdG9yeSBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYXBwJ3MgUG9kZmlsZSwgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHRoaXMgcG9kc3BlYy4KICAgcG9kc19yb290ID0gJzxwYXRoIHRvIHlvdXIgUG9kZmlsZT4vUG9kcycKZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9SZW1vdGVUZXN0Q2xpZW50L1JlbW90ZVRlc3QucG9kc3BlYyBiL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9SZW1vdGVUZXN0Q2xpZW50L1JlbW90ZVRlc3QucG9kc3BlYwppbmRleCA2ZTc4M2ZiLi43MjIyYTgwIDEwMDY0NAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvUmVtb3RlVGVzdENsaWVudC9SZW1vdGVUZXN0LnBvZHNwZWMKKysrIGIvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1JlbW90ZVRlc3RDbGllbnQvUmVtb3RlVGVzdC5wb2RzcGVjCkBAIC0xMSw3ICsxMSw3IEBACiAgIHMub3N4LmRlcGxveW1lbnRfdGFyZ2V0ID0gJzEwLjknCiAKICAgIyBSdW4gcHJvdG9jIHdpdGggdGhlIE9iamVjdGl2ZS1DIGFuZCBnUlBDIHBsdWdpbnMgdG8gZ2VuZXJhdGUgcHJvdG9jb2wgbWVzc2FnZXMgYW5kIGdSUEMgY2xpZW50cy4KLSAgcy5kZXBlbmRlbmN5ICIhUHJvdG9Db21waWxlci1nUlBDUGx1Z2luIiwgIn4+IDAuMTQiCisgIHMuZGVwZW5kZW5jeSAiIVByb3RvQ29tcGlsZXItZ1JQQ1BsdWdpbiIsICJ+PiAxLjAuMC1wcmUxIgogCiAgIHJlcG9fcm9vdCA9ICcuLi8uLi8uLi8uLicKICAgYmluX2RpciA9ICIje3JlcG9fcm9vdH0vYmlucy8kQ09ORklHIgpkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1JlbW90ZVRlc3RDbGllbnQvZW1wdHkucHJvdG8gYi9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvUmVtb3RlVGVzdENsaWVudC9lbXB0eS5wcm90bwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY3ODA0OC4uMDAwMDAwMAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvUmVtb3RlVGVzdENsaWVudC9lbXB0eS5wcm90bworKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotc3ludGF4ID0gInByb3RvMyI7Ci0KLXBhY2thZ2UgZ3JwYy50ZXN0aW5nOwotCi1vcHRpb24gb2JqY19jbGFzc19wcmVmaXggPSAiUk1UIjsKLQotLy8gQW4gZW1wdHkgbWVzc2FnZSB0aGF0IHlvdSBjYW4gcmUtdXNlIHRvIGF2b2lkIGRlZmluaW5nIGR1cGxpY2F0ZWQgZW1wdHkKLS8vIG1lc3NhZ2VzIGluIHlvdXIgcHJvamVjdC4gQSB0eXBpY2FsIGV4YW1wbGUgaXMgdG8gdXNlIGl0IGFzIGFyZ3VtZW50IG9yIHRoZQotLy8gcmV0dXJuIHZhbHVlIG9mIGEgc2VydmljZSBBUEkuIEZvciBpbnN0YW5jZToKLS8vCi0vLyAgIHNlcnZpY2UgRm9vIHsKLS8vICAgICBycGMgQmFyIChncnBjLnRlc3RpbmcuRW1wdHkpIHJldHVybnMgKGdycGMudGVzdGluZy5FbXB0eSkgeyB9OwotLy8gICB9OwotLy8KLW1lc3NhZ2UgRW1wdHkge30KZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9SZW1vdGVUZXN0Q2xpZW50L3Rlc3QucHJvdG8gYi9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvUmVtb3RlVGVzdENsaWVudC90ZXN0LnByb3RvCmluZGV4IDUxNGMzYjguLjVjMzU5YzUgMTAwNjQ0Ci0tLSBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9SZW1vdGVUZXN0Q2xpZW50L3Rlc3QucHJvdG8KKysrIGIvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1JlbW90ZVRlc3RDbGllbnQvdGVzdC5wcm90bwpAQCAtMzEsNyArMzEsNyBAQAogLy8gb2YgdW5hcnkvc3RyZWFtaW5nIHJlcXVlc3RzL3Jlc3BvbnNlcy4KIHN5bnRheCA9ICJwcm90bzMiOwogCi1pbXBvcnQgImVtcHR5LnByb3RvIjsKK2ltcG9ydCAiZ29vZ2xlL3Byb3RvYnVmL2VtcHR5LnByb3RvIjsKIGltcG9ydCAibWVzc2FnZXMucHJvdG8iOwogCiBwYWNrYWdlIGdycGMudGVzdGluZzsKQEAgLTQyLDcgKzQyLDcgQEAKIC8vIHBlcmZvcm1hbmNlIHdpdGggdmFyaW91cyB0eXBlcyBvZiBwYXlsb2FkLgogc2VydmljZSBUZXN0U2VydmljZSB7CiAgIC8vIE9uZSBlbXB0eSByZXF1ZXN0IGZvbGxvd2VkIGJ5IG9uZSBlbXB0eSByZXNwb25zZS4KLSAgcnBjIEVtcHR5Q2FsbChncnBjLnRlc3RpbmcuRW1wdHkpIHJldHVybnMgKGdycGMudGVzdGluZy5FbXB0eSk7CisgIHJwYyBFbXB0eUNhbGwoZ29vZ2xlLnByb3RvYnVmLkVtcHR5KSByZXR1cm5zIChnb29nbGUucHJvdG9idWYuRW1wdHkpOwogCiAgIC8vIE9uZSByZXF1ZXN0IGZvbGxvd2VkIGJ5IG9uZSByZXNwb25zZS4KICAgcnBjIFVuYXJ5Q2FsbChTaW1wbGVSZXF1ZXN0KSByZXR1cm5zIChTaW1wbGVSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU2FtcGxlL1BvZGZpbGUgYi9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU2FtcGxlL1BvZGZpbGUKaW5kZXggODc0MGIyZi4uZjZmMGMwMCAxMDA2NDQKLS0tIGEvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1NhbXBsZS9Qb2RmaWxlCisrKyBiL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUvUG9kZmlsZQpAQCAtMyw2ICszLDggQEAKIAogaW5zdGFsbCEgJ2NvY29hcG9kcycsIDpkZXRlcm1pbmlzdGljX3V1aWRzID0+IGZhbHNlCiAKK3VzZV9mcmFtZXdvcmtzISBpZiBFTlZbJ0ZSQU1FV09SS1MnXSA9PSAnWUVTJworCiAjIExvY2F0aW9uIG9mIGdSUEMncyByZXBvIHJvb3QgcmVsYXRpdmUgdG8gdGhpcyBmaWxlLgogR1JQQ19MT0NBTF9TUkMgPSAnLi4vLi4vLi4vLi4nCiAKZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUvU2FtcGxlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU2FtcGxlL1NhbXBsZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjMmE2ZDEuLmFiNzE1OWMgMTAwNjQ0Ci0tLSBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUvU2FtcGxlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1NhbXBsZS9TYW1wbGUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNyw3ICs3LDcgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQk0MjZBNTAyMEUwRTE1OEExMDFCQ0ExRDkgLyogbGliUG9kcy1TYW1wbGUuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMDA1NTkyODYxNUE2Rjg0MzRFMjZCNCAvKiBsaWJQb2RzLVNhbXBsZS5hICovOyB9OworCQkzRjAzNTY5NzM5MkY2MDEwNDlEM0RERTEgLyogUG9kc19TYW1wbGUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0MxQjI3RUEwQzQyODQyOUIwN0JDMzRCIC8qIFBvZHNfU2FtcGxlLmZyYW1ld29yayAqLzsgfTsKIAkJNjM2OUEyNzAxQTkzMjJFMjAwMTVGQzVDIC8qIG1haW4ubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNjlBMjZGMUE5MzIyRTIwMDE1RkM1QyAvKiBtYWluLm0gKi87IH07CiAJCTYzNjlBMjczMUE5MzIyRTIwMDE1RkM1QyAvKiBBcHBEZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM2OUEyNzIxQTkzMjJFMjAwMTVGQzVDIC8qIEFwcERlbGVnYXRlLm0gKi87IH07CiAJCTYzNjlBMjc2MUE5MzIyRTIwMDE1RkM1QyAvKiBWaWV3Q29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM2OUEyNzUxQTkzMjJFMjAwMTVGQzVDIC8qIFZpZXdDb250cm9sbGVyLm0gKi87IH07CkBAIC0yNiw3ICsyNiw3IEBACiAJCTYzNjlBMjc1MUE5MzIyRTIwMDE1RkM1QyAvKiBWaWV3Q29udHJvbGxlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBWaWV3Q29udHJvbGxlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzY5QTI3ODFBOTMyMkUyMDAxNUZDNUMgLyogQmFzZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGUuc3Rvcnlib2FyZDsgbmFtZSA9IEJhc2U7IHBhdGggPSBCYXNlLmxwcm9qL01haW4uc3Rvcnlib2FyZDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM2OUEyN0ExQTkzMjJFMjAwMTVGQzVDIC8qIEltYWdlcy54Y2Fzc2V0cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlci5hc3NldGNhdGFsb2c7IHBhdGggPSBJbWFnZXMueGNhc3NldHM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMDA1NTkyODYxNUE2Rjg0MzRFMjZCNCAvKiBsaWJQb2RzLVNhbXBsZS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAibGliUG9kcy1TYW1wbGUuYSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUNDMUIyN0VBMEM0Mjg0MjlCMDdCQzM0QiAvKiBQb2RzX1NhbXBsZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBQb2RzX1NhbXBsZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzQzAxREYzMTVDNEU3NDMzQkNFQzZFNiAvKiBQb2RzLVNhbXBsZS5kZWJ1Zy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmNsdWRlSW5JbmRleCA9IDE7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9ICJQb2RzLVNhbXBsZS5kZWJ1Zy54Y2NvbmZpZyI7IHBhdGggPSAiUG9kcy9UYXJnZXQgU3VwcG9ydCBGaWxlcy9Qb2RzLVNhbXBsZS9Qb2RzLVNhbXBsZS5kZWJ1Zy54Y2NvbmZpZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTM1LDcgKzM1LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTQyNkE1MDIwRTBFMTU4QTEwMUJDQTFEOSAvKiBsaWJQb2RzLVNhbXBsZS5hIGluIEZyYW1ld29ya3MgKi8sCisJCQkJM0YwMzU2OTczOTJGNjAxMDQ5RDNEREUxIC8qIFBvZHNfU2FtcGxlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtOTUsNyArOTUsNyBAQAogCQlDNEMyQzUyMTkwNTNFMDc5QzlFRkI5MzAgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQzIwMDU1OTI4NjE1QTZGODQzNEUyNkI0IC8qIGxpYlBvZHMtU2FtcGxlLmEgKi8sCisJCQkJQ0MxQjI3RUEwQzQyODQyOUIwN0JDMzRCIC8qIFBvZHNfU2FtcGxlLmZyYW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjksNyArMTI5LDcgQEAKIAkJNjM2OUEyNjIxQTkzMjJFMjAwMTVGQzVDIC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0ZXMgPSB7Ci0JCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA2MTA7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MzA7CiAJCQkJT1JHQU5JWkFUSU9OTkFNRSA9IGdSUEM7CiAJCQkJVGFyZ2V0QXR0cmlidXRlcyA9IHsKIAkJCQkJNjM2OUEyNjkxQTkzMjJFMjAwMTVGQzVDID0gewpAQCAtMjYwLDYgKzI2MCw3IEBACiAJCQkJIkNPREVfU0lHTl9JREVOVElUWVtzZGs9aXBob25lb3MqXSIgPSAiaVBob25lIERldmVsb3BlciI7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POwogCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUVOQUJMRV9URVNUQUJJTElUWSA9IFlFUzsKIAkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OwogCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POwogCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwpAQCAtMzI1LDYgKzMyNiw3IEBACiAJCQkJQVNTRVRDQVRBTE9HX0NPTVBJTEVSX0FQUElDT05fTkFNRSA9IEFwcEljb247CiAJCQkJSU5GT1BMSVNUX0ZJTEUgPSBTYW1wbGUvSW5mby5wbGlzdDsKIAkJCQlMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICIkKGluaGVyaXRlZCkgQGV4ZWN1dGFibGVfcGF0aC9GcmFtZXdvcmtzIjsKKwkJCQlQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSID0gIm9yZy5ncnBjLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKSI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC0zMzYsNiArMzM4LDcgQEAKIAkJCQlBU1NFVENBVEFMT0dfQ09NUElMRVJfQVBQSUNPTl9OQU1FID0gQXBwSWNvbjsKIAkJCQlJTkZPUExJU1RfRklMRSA9IFNhbXBsZS9JbmZvLnBsaXN0OwogCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0gIiQoaW5oZXJpdGVkKSBAZXhlY3V0YWJsZV9wYXRoL0ZyYW1ld29ya3MiOworCQkJCVBST0RVQ1RfQlVORExFX0lERU5USUZJRVIgPSAib3JnLmdycGMuJChQUk9EVUNUX05BTUU6cmZjMTAzNGlkZW50aWZpZXIpIjsKIAkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1NhbXBsZS9TYW1wbGUvSW5mby5wbGlzdCBiL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUvU2FtcGxlL0luZm8ucGxpc3QKaW5kZXggNDQzNjYzNS4uMmNkZjA5ZCAxMDA2NDQKLS0tIGEvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1NhbXBsZS9TYW1wbGUvSW5mby5wbGlzdAorKysgYi9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU2FtcGxlL1NhbXBsZS9JbmZvLnBsaXN0CkBAIC03LDcgKzcsNyBAQAogCTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+CiAJPHN0cmluZz4kKEVYRUNVVEFCTEVfTkFNRSk8L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxzdHJpbmc+b3JnLmdycGMuJChQUk9EVUNUX05BTUU6cmZjMTAzNGlkZW50aWZpZXIpPC9zdHJpbmc+CisJPHN0cmluZz4kKFBST0RVQ1RfQlVORExFX0lERU5USUZJRVIpPC9zdHJpbmc+CiAJPGtleT5DRkJ1bmRsZUluZm9EaWN0aW9uYXJ5VmVyc2lvbjwva2V5PgogCTxzdHJpbmc+Ni4wPC9zdHJpbmc+CiAJPGtleT5DRkJ1bmRsZU5hbWU8L2tleT4KZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUvU2FtcGxlL1ZpZXdDb250cm9sbGVyLm0gYi9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU2FtcGxlL1NhbXBsZS9WaWV3Q29udHJvbGxlci5tCmluZGV4IDQzM2E4YTIuLjcwMjQ0ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9TYW1wbGUvU2FtcGxlL1ZpZXdDb250cm9sbGVyLm0KKysrIGIvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1NhbXBsZS9TYW1wbGUvVmlld0NvbnRyb2xsZXIubQpAQCAtNjYsOSArNjYsOSBAQAogCiAgIC8vIFNhbWUgZXhhbXBsZSBjYWxsIHVzaW5nIHRoZSBnZW5lcmljIGdSUEMgY2xpZW50IGxpYnJhcnk6CiAKLSAgUHJvdG9NZXRob2QgKm1ldGhvZCA9IFtbUHJvdG9NZXRob2QgYWxsb2NdIGluaXRXaXRoUGFja2FnZTpAImdycGMudGVzdGluZyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTpAIlRlc3RTZXJ2aWNlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOkAiVW5hcnlDYWxsIl07CisgIEdSUENQcm90b01ldGhvZCAqbWV0aG9kID0gW1tHUlBDUHJvdG9NZXRob2QgYWxsb2NdIGluaXRXaXRoUGFja2FnZTpAImdycGMudGVzdGluZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOkAiVGVzdFNlcnZpY2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDpAIlVuYXJ5Q2FsbCJdOwogCiAgIEdSWFdyaXRlciAqcmVxdWVzdHNXcml0ZXIgPSBbR1JYV3JpdGVyIHdyaXRlcldpdGhWYWx1ZTpbcmVxdWVzdCBkYXRhXV07CiAKZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZS9JbmZvLnBsaXN0IGIvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1N3aWZ0U2FtcGxlL0luZm8ucGxpc3QKaW5kZXggMTBmMDQ1MC4uMmNkZjA5ZCAxMDA2NDQKLS0tIGEvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1N3aWZ0U2FtcGxlL0luZm8ucGxpc3QKKysrIGIvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1N3aWZ0U2FtcGxlL0luZm8ucGxpc3QKQEAgLTcsNyArNyw3IEBACiAJPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KIAk8c3RyaW5nPiQoRVhFQ1VUQUJMRV9OQU1FKTwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+Ci0JPHN0cmluZz5pby5ncnBjLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKTwvc3RyaW5nPgorCTxzdHJpbmc+JChQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSKTwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KIAk8c3RyaW5nPjYuMDwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVOYW1lPC9rZXk+CmRpZmYgLS1naXQgYS9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU3dpZnRTYW1wbGUvUG9kZmlsZSBiL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZS9Qb2RmaWxlCmluZGV4IDJmNzgzMzQuLmIwOGEzNDYgMTAwNjQ0Ci0tLSBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZS9Qb2RmaWxlCisrKyBiL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZS9Qb2RmaWxlCkBAIC0zLDYgKzMsOCBAQAogCiBpbnN0YWxsISAnY29jb2Fwb2RzJywgOmRldGVybWluaXN0aWNfdXVpZHMgPT4gZmFsc2UKIAordXNlX2ZyYW1ld29ya3MhCisKICMgTG9jYXRpb24gb2YgZ1JQQydzIHJlcG8gcm9vdCByZWxhdGl2ZSB0byB0aGlzIGZpbGUuCiBHUlBDX0xPQ0FMX1NSQyA9ICcuLi8uLi8uLi8uLicKIApkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1N3aWZ0U2FtcGxlL1N3aWZ0U2FtcGxlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU3dpZnRTYW1wbGUvU3dpZnRTYW1wbGUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYTFiMzBmLi5hZmMzZGE3IDEwMDY0NAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU3dpZnRTYW1wbGUvU3dpZnRTYW1wbGUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU3dpZnRTYW1wbGUvU3dpZnRTYW1wbGUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNywxMSArNywxMSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTJDMEIwMjRDQjc5ODgzOUUxN0Y3NjEyNiAvKiBQb2RzX1N3aWZ0U2FtcGxlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIzOTRGMzQzQkRFMTg2QzU0MzZEQkRCOSAvKiBQb2RzX1N3aWZ0U2FtcGxlLmZyYW1ld29yayAqLzsgfTsKIAkJNjMzQkZGQzgxQjk1MEIyMTAwMDdFNDI0IC8qIEFwcERlbGVnYXRlLnN3aWZ0IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMzQkZGQzcxQjk1MEIyMTAwMDdFNDI0IC8qIEFwcERlbGVnYXRlLnN3aWZ0ICovOyB9OwogCQk2MzNCRkZDQTFCOTUwQjIxMDAwN0U0MjQgLyogVmlld0NvbnRyb2xsZXIuc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzNCRkZDOTFCOTUwQjIxMDAwN0U0MjQgLyogVmlld0NvbnRyb2xsZXIuc3dpZnQgKi87IH07CiAJCTYzM0JGRkNEMUI5NTBCMjEwMDA3RTQyNCAvKiBNYWluLnN0b3J5Ym9hcmQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzM0JGRkNCMUI5NTBCMjEwMDA3RTQyNCAvKiBNYWluLnN0b3J5Ym9hcmQgKi87IH07CiAJCTYzM0JGRkNGMUI5NTBCMjEwMDA3RTQyNCAvKiBJbWFnZXMueGNhc3NldHMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzM0JGRkNFMUI5NTBCMjEwMDA3RTQyNCAvKiBJbWFnZXMueGNhc3NldHMgKi87IH07Ci0JCTkyRURCMTQwOEExRTFFN0REQUIyNUQ5QyAvKiBsaWJQb2RzLVN3aWZ0U2FtcGxlLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2OUJCNUM2Q0EzQzFGOTdFMDA3QUM1MjcgLyogbGliUG9kcy1Td2lmdFNhbXBsZS5hICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwpAQCAtMjEsOSArMjEsOCBAQAogCQk2MzNCRkZDOTFCOTUwQjIxMDAwN0U0MjQgLyogVmlld0NvbnRyb2xsZXIuc3dpZnQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnN3aWZ0OyBwYXRoID0gVmlld0NvbnRyb2xsZXIuc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzM0JGRkNDMUI5NTBCMjEwMDA3RTQyNCAvKiBCYXNlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZS5zdG9yeWJvYXJkOyBuYW1lID0gQmFzZTsgcGF0aCA9IEJhc2UubHByb2ovTWFpbi5zdG9yeWJvYXJkOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzNCRkZDRTFCOTUwQjIxMDAwN0U0MjQgLyogSW1hZ2VzLnhjYXNzZXRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyLmFzc2V0Y2F0YWxvZzsgcGF0aCA9IEltYWdlcy54Y2Fzc2V0czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjM2N0FEMjMxQjk1MTY1NTAwN0ZEM0E0IC8qIEJyaWRnaW5nLUhlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiQnJpZGdpbmctSGVhZGVyLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2OUJCNUM2Q0EzQzFGOTdFMDA3QUM1MjcgLyogbGliUG9kcy1Td2lmdFNhbXBsZS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAibGliUG9kcy1Td2lmdFNhbXBsZS5hIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQTdFNjE0QTQ5NEQ4OUQwMUJCMzk1NzYxIC8qIFBvZHMtU3dpZnRTYW1wbGUuZGVidWcueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5jbHVkZUluSW5kZXggPSAxOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSAiUG9kcy1Td2lmdFNhbXBsZS5kZWJ1Zy54Y2NvbmZpZyI7IHBhdGggPSAiUG9kcy9UYXJnZXQgU3VwcG9ydCBGaWxlcy9Qb2RzLVN3aWZ0U2FtcGxlL1BvZHMtU3dpZnRTYW1wbGUuZGVidWcueGNjb25maWciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMzk0RjM0M0JERTE4NkM1NDM2REJEQjkgLyogUG9kc19Td2lmdFNhbXBsZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBQb2RzX1N3aWZ0U2FtcGxlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQzMxNEUzRTI0NkFGMjNBQzI5QjM4RkNGIC8qIFBvZHMtU3dpZnRTYW1wbGUucmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmNsdWRlSW5JbmRleCA9IDE7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9ICJQb2RzLVN3aWZ0U2FtcGxlLnJlbGVhc2UueGNjb25maWciOyBwYXRoID0gIlBvZHMvVGFyZ2V0IFN1cHBvcnQgRmlsZXMvUG9kcy1Td2lmdFNhbXBsZS9Qb2RzLVN3aWZ0U2FtcGxlLnJlbGVhc2UueGNjb25maWciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0zMiw3ICszMSw3IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk5MkVEQjE0MDhBMUUxRTdEREFCMjVEOUMgLyogbGliUG9kcy1Td2lmdFNhbXBsZS5hIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMkMwQjAyNENCNzk4ODM5RTE3Rjc2MTI2IC8qIFBvZHNfU3dpZnRTYW1wbGUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC03NCw3ICs3Myw2IEBACiAJCQkJNjMzQkZGQ0IxQjk1MEIyMTAwMDdFNDI0IC8qIE1haW4uc3Rvcnlib2FyZCAqLywKIAkJCQk2MzNCRkZDRTFCOTUwQjIxMDAwN0U0MjQgLyogSW1hZ2VzLnhjYXNzZXRzICovLAogCQkJCTYzM0JGRkM1MUI5NTBCMjEwMDA3RTQyNCAvKiBTdXBwb3J0aW5nIEZpbGVzICovLAotCQkJCTYzNjdBRDIzMUI5NTE2NTUwMDdGRDNBNCAvKiBCcmlkZ2luZy1IZWFkZXIuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gU3dpZnRTYW1wbGU7CiAJCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CkBAIC05MCw3ICs4OCw3IEBACiAJCTlENjNBN0Y2NDIzOTg5QkEzMDY4MTBDQSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk2OUJCNUM2Q0EzQzFGOTdFMDA3QUM1MjcgLyogbGliUG9kcy1Td2lmdFNhbXBsZS5hICovLAorCQkJCUIzOTRGMzQzQkRFMTg2QzU0MzZEQkRCOSAvKiBQb2RzX1N3aWZ0U2FtcGxlLmZyYW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjUsNyArMTIzLDcgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1dGVzID0gewogCQkJCUxhc3RTd2lmdFVwZGF0ZUNoZWNrID0gMDcxMDsKLQkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDY0MDsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDczMDsKIAkJCQlPUkdBTklaQVRJT05OQU1FID0gZ1JQQzsKIAkJCQlUYXJnZXRBdHRyaWJ1dGVzID0gewogCQkJCQk2MzNCRkZDMTFCOTUwQjIxMDAwN0U0MjQgPSB7CkBAIC0yNTYsNiArMjU0LDcgQEAKIAkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CiAJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CiAJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJRU5BQkxFX1RFU1RBQklMSVRZID0gWUVTOwogCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CiAJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CiAJCQkJR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CkBAIC0zMjUsOCArMzI0LDkgQEAKIAkJCQlBU1NFVENBVEFMT0dfQ09NUElMRVJfQVBQSUNPTl9OQU1FID0gQXBwSWNvbjsKIAkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiAJCQkJTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMgPSAiJChpbmhlcml0ZWQpIEBleGVjdXRhYmxlX3BhdGgvRnJhbWV3b3JrcyI7CisJCQkJUFJPRFVDVF9CVU5ETEVfSURFTlRJRklFUiA9ICJpby5ncnBjLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKSI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLQkJCQlTV0lGVF9PQkpDX0JSSURHSU5HX0hFQURFUiA9ICJCcmlkZ2luZy1IZWFkZXIuaCI7CisJCQkJU1dJRlRfT0JKQ19CUklER0lOR19IRUFERVIgPSAiIjsKIAkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC0zMzgsOCArMzM4LDkgQEAKIAkJCQlBU1NFVENBVEFMT0dfQ09NUElMRVJfQVBQSUNPTl9OQU1FID0gQXBwSWNvbjsKIAkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiAJCQkJTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMgPSAiJChpbmhlcml0ZWQpIEBleGVjdXRhYmxlX3BhdGgvRnJhbWV3b3JrcyI7CisJCQkJUFJPRFVDVF9CVU5ETEVfSURFTlRJRklFUiA9ICJpby5ncnBjLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKSI7CiAJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLQkJCQlTV0lGVF9PQkpDX0JSSURHSU5HX0hFQURFUiA9ICJCcmlkZ2luZy1IZWFkZXIuaCI7CisJCQkJU1dJRlRfT0JKQ19CUklER0lOR19IRUFERVIgPSAiIjsKIAkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZS9WaWV3Q29udHJvbGxlci5zd2lmdCBiL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZS9WaWV3Q29udHJvbGxlci5zd2lmdAppbmRleCAyYTk1ZDJkLi5lN2JhYjEzIDEwMDY0NAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU3dpZnRTYW1wbGUvVmlld0NvbnRyb2xsZXIuc3dpZnQKKysrIGIvc3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1N3aWZ0U2FtcGxlL1ZpZXdDb250cm9sbGVyLnN3aWZ0CkBAIC0zMyw2ICszMyw4IEBACiAKIGltcG9ydCBVSUtpdAogCitpbXBvcnQgUmVtb3RlVGVzdAorCiBjbGFzcyBWaWV3Q29udHJvbGxlcjogVUlWaWV3Q29udHJvbGxlciB7CiAKICAgb3ZlcnJpZGUgZnVuYyB2aWV3RGlkTG9hZCgpIHsKQEAgLTYwLDcgKzYyLDcgQEAKIAogICAgIC8vIFNhbWUgYnV0IG1hbmlwdWxhdGluZyBoZWFkZXJzOgogCi0gICAgdmFyIFJQQyA6IFByb3RvUlBDISAvLyBOZWVkZWQgdG8gY29udmluY2UgU3dpZnQgdG8gY2FwdHVyZSBieSByZWZlcmVuY2UgKF9fYmxvY2spCisgICAgdmFyIFJQQyA6IEdSUENQcm90b0NhbGwhIC8vIE5lZWRlZCB0byBjb252aW5jZSBTd2lmdCB0byBjYXB0dXJlIGJ5IHJlZmVyZW5jZSAoX19ibG9jaykKICAgICBSUEMgPSBzZXJ2aWNlLlJQQ1RvVW5hcnlDYWxsV2l0aFJlcXVlc3QocmVxdWVzdCkgeyByZXNwb25zZSwgZXJyb3IgaW4KICAgICAgIGlmIGxldCByZXNwb25zZSA9IHJlc3BvbnNlIHsKICAgICAgICAgTlNMb2coIjIuIEZpbmlzaGVkIHN1Y2Nlc3NmdWxseSB3aXRoIHJlc3BvbnNlOlxuXChyZXNwb25zZSkiKQpAQCAtNzksNyArODEsNyBAQAogCiAgICAgLy8gU2FtZSBleGFtcGxlIGNhbGwgdXNpbmcgdGhlIGdlbmVyaWMgZ1JQQyBjbGllbnQgbGlicmFyeToKIAotICAgIGxldCBtZXRob2QgPSBQcm90b01ldGhvZChwYWNrYWdlOiAiZ3JwYy50ZXN0aW5nIiwgc2VydmljZTogIlRlc3RTZXJ2aWNlIiwgbWV0aG9kOiAiVW5hcnlDYWxsIikKKyAgICBsZXQgbWV0aG9kID0gR1JQQ1Byb3RvTWV0aG9kKHBhY2thZ2U6ICJncnBjLnRlc3RpbmciLCBzZXJ2aWNlOiAiVGVzdFNlcnZpY2UiLCBtZXRob2Q6ICJVbmFyeUNhbGwiKQogCiAgICAgbGV0IHJlcXVlc3RzV3JpdGVyID0gR1JYV3JpdGVyKHZhbHVlOiByZXF1ZXN0LmRhdGEoKSkKIApkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL0ludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQvSW5mby5wbGlzdCBiL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0L0luZm8ucGxpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE3MjgyMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0L0luZm8ucGxpc3QKQEAgLTAsMCArMSwyNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgorPHBsaXN0IHZlcnNpb249IjEuMCI+Cis8ZGljdD4KKwk8a2V5PkNGQnVuZGxlRGV2ZWxvcG1lbnRSZWdpb248L2tleT4KKwk8c3RyaW5nPmVuPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KKwk8c3RyaW5nPiQoRVhFQ1VUQUJMRV9OQU1FKTwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+CisJPHN0cmluZz4kKFBST0RVQ1RfQlVORExFX0lERU5USUZJRVIpPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUluZm9EaWN0aW9uYXJ5VmVyc2lvbjwva2V5PgorCTxzdHJpbmc+Ni4wPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZU5hbWU8L2tleT4KKwk8c3RyaW5nPiQoUFJPRFVDVF9OQU1FKTwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PgorCTxzdHJpbmc+Qk5ETDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KKwk8c3RyaW5nPjEuMDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVTaWduYXR1cmU8L2tleT4KKwk8c3RyaW5nPj8/Pz88L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgorCTxzdHJpbmc+MTwvc3RyaW5nPgorPC9kaWN0PgorPC9wbGlzdD4KZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZS9CcmlkZ2luZy1IZWFkZXIuaCBiL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0L0ludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQubQpzaW1pbGFyaXR5IGluZGV4IDc5JQpyZW5hbWUgZnJvbSBzcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU3dpZnRTYW1wbGUvQnJpZGdpbmctSGVhZGVyLmgKcmVuYW1lIHRvIHNyYy9vYmplY3RpdmUtYy90ZXN0cy9JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0L0ludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQubQppbmRleCA2NWY3NjhhLi5mYWI4YWQ4IDEwMDY0NAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU3dpZnRTYW1wbGUvQnJpZGdpbmctSGVhZGVyLmgKKysrIGIvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL0ludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQvSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5tCkBAIC0zMSwxNSArMzEsMjAgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBTd2lmdFNhbXBsZV9CcmlkZ2luZ19IZWFkZXJfaAotI2RlZmluZSBTd2lmdFNhbXBsZV9CcmlkZ2luZ19IZWFkZXJfaAorI2ltcG9ydCA8R1JQQ0NsaWVudC9HUlBDQ2FsbCtUZXN0cy5oPgogCi0jaW1wb3J0IDxSeExpYnJhcnkvR1JYV3JpdGVhYmxlLmg+Ci0jaW1wb3J0IDxSeExpYnJhcnkvR1JYV3JpdGVyLmg+Ci0jaW1wb3J0IDxSeExpYnJhcnkvR1JYV3JpdGVyK0ltbWVkaWF0ZS5oPgotI2ltcG9ydCA8R1JQQ0NsaWVudC9HUlBDQ2FsbC5oPgotI2ltcG9ydCA8UHJvdG9SUEMvUHJvdG9NZXRob2QuaD4KLSNpbXBvcnQgPFByb3RvUlBDL1Byb3RvUlBDLmg+Ci0jaW1wb3J0IDxSZW1vdGVUZXN0L1Rlc3QucGJycGMuaD4KKyNpbXBvcnQgIkludGVyb3BUZXN0cy5oIgogCi0jZW5kaWYKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGtSZW1vdGVTU0xIb3N0ID0gQCJncnBjLXRlc3Quc2FuZGJveC5nb29nbGVhcGlzLmNvbSI7CisKKy8qKiBUZXN0cyBpbiBJbnRlcm9wVGVzdHMubSwgc2VuZGluZyB0aGUgUlBDcyB0byBhIHJlbW90ZSBTU0wgc2VydmVyLiAqLworQGludGVyZmFjZSBJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0IDogSW50ZXJvcFRlc3RzCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0CisKKysgKE5TU3RyaW5nICopaG9zdCB7CisgIHJldHVybiBrUmVtb3RlU1NMSG9zdDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL1BvZGZpbGUgYi9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvUG9kZmlsZQppbmRleCBkYjExMjA4Li4zZDA2NjRhIDEwMDY0NAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvUG9kZmlsZQorKysgYi9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvUG9kZmlsZQpAQCAtMzksNiArMzksMjIgQEAKICAgcG9kICdnUlBDLUNvcmUvQ3JvbmV0LVRlc3RzJywgOnBhdGggPT4gR1JQQ19MT0NBTF9TUkMKIGVuZAogCit0YXJnZXQgJ0ludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQnIGRvCisgIHBvZCAnUHJvdG9idWYnLCA6cGF0aCA9PiAiI3tHUlBDX0xPQ0FMX1NSQ30vdGhpcmRfcGFydHkvcHJvdG9idWYiLCA6aW5oaWJpdF93YXJuaW5ncyA9PiB0cnVlCisKKyAgcG9kICchUHJvdG9Db21waWxlcicsICAgICAgICAgICAgOnBhdGggPT4gIiN7R1JQQ19MT0NBTF9TUkN9L3NyYy9vYmplY3RpdmUtYyIKKyAgcG9kICchUHJvdG9Db21waWxlci1nUlBDUGx1Z2luJywgOnBhdGggPT4gIiN7R1JQQ19MT0NBTF9TUkN9L3NyYy9vYmplY3RpdmUtYyIKKworICBwb2QgJ0JvcmluZ1NTTCcsICAgICAgIDpwb2RzcGVjID0+ICIje0dSUENfTE9DQUxfU1JDfS9zcmMvb2JqZWN0aXZlLWMiLCA6aW5oaWJpdF93YXJuaW5ncyA9PiB0cnVlCisgIHBvZCAnQ3JvbmV0RnJhbWV3b3JrJywgOnBvZHNwZWMgPT4gIiN7R1JQQ19MT0NBTF9TUkN9L3NyYy9vYmplY3RpdmUtYyIKKyAgCisgIHBvZCAnZ1JQQycsICAgICAgICAgICA6cGF0aCA9PiBHUlBDX0xPQ0FMX1NSQworICBwb2QgJ2dSUEMtQ29yZScsICAgICAgOnBhdGggPT4gR1JQQ19MT0NBTF9TUkMKKyAgcG9kICdnUlBDLVJ4TGlicmFyeScsIDpwYXRoID0+IEdSUENfTE9DQUxfU1JDCisgIHBvZCAnZ1JQQy1Qcm90b1JQQycsICA6cGF0aCA9PiBHUlBDX0xPQ0FMX1NSQworICBwb2QgJ1JlbW90ZVRlc3QnLCA6cGF0aCA9PiAiUmVtb3RlVGVzdENsaWVudCIKK2VuZAorCiAjIGdSUEMtQ29yZS5wb2RzcGVjIG5lZWRzIHRvIGJlIG1vZGlmaWVkIHRvIGJlIHN1Y2Nlc3NmdWxseSB1c2VkIGZvciBsb2NhbCBkZXZlbG9wbWVudC4gQSBQb2RmaWxlJ3MKICMgcHJlX2luc3RhbGwgaG9vayBsZXRzIHVzIGRvIHRoYXQuIFRoZSBibG9jayBwYXNzZWQgdG8gaXQgcnVucyBhZnRlciB0aGUgcG9kc3BlY3MgYXJlIGRvd25sb2FkZWQKICMgYW5kIGJlZm9yZSB0aGV5IGFyZSBpbnN0YWxsZWQgaW4gdGhlIHVzZXIgcHJvamVjdC4KZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9SZW1vdGVUZXN0Q2xpZW50L1JlbW90ZVRlc3QucG9kc3BlYyBiL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9SZW1vdGVUZXN0Q2xpZW50L1JlbW90ZVRlc3QucG9kc3BlYwppbmRleCA3ZDg0YTVhLi41M2JhMTAxIDEwMDY0NAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvUmVtb3RlVGVzdENsaWVudC9SZW1vdGVUZXN0LnBvZHNwZWMKKysrIGIvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL1JlbW90ZVRlc3RDbGllbnQvUmVtb3RlVGVzdC5wb2RzcGVjCkBAIC0xMSw3ICsxMSw3IEBACiAgIHMub3N4LmRlcGxveW1lbnRfdGFyZ2V0ID0gJzEwLjknCiAKICAgIyBSdW4gcHJvdG9jIHdpdGggdGhlIE9iamVjdGl2ZS1DIGFuZCBnUlBDIHBsdWdpbnMgdG8gZ2VuZXJhdGUgcHJvdG9jb2wgbWVzc2FnZXMgYW5kIGdSUEMgY2xpZW50cy4KLSAgcy5kZXBlbmRlbmN5ICIhUHJvdG9Db21waWxlci1nUlBDUGx1Z2luIiwgIn4+IDAuMTQiCisgIHMuZGVwZW5kZW5jeSAiIVByb3RvQ29tcGlsZXItZ1JQQ1BsdWdpbiIsICJ+PiAxLjAuMC1wcmUxIgogCiAgIHJlcG9fcm9vdCA9ICcuLi8uLi8uLi8uLicKICAgYmluX2RpciA9ICIje3JlcG9fcm9vdH0vYmlucy8kQ09ORklHIgpkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL1Rlc3RzLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYzgwYjA4Li4xZDkwMzQ3IDEwMDY0NAotLS0gYS9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNyw2ICs3LDcgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkwOUI3NkQ5NTg1QUNFNzQwMzgwNEQ5REMgLyogbGliUG9kcy1JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RTk0NDRDNzY0RjBGRkY2NEE3RUI1OEUgLyogbGliUG9kcy1JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LmEgKi87IH07CiAJCTBGOTIzMkY5ODRDMDg2NDNGRDQwQzM0RiAvKiBsaWJQb2RzLUludGVyb3BUZXN0c1JlbW90ZS5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREJFMDU5QjRBQzdBNTE5MTk0NjdFRUMwIC8qIGxpYlBvZHMtSW50ZXJvcFRlc3RzUmVtb3RlLmEgKi87IH07CiAJCTE2QTlFNzdCNkUzMzZCM0MwQjlCQTZFMCAvKiBsaWJQb2RzLUludGVyb3BUZXN0c0xvY2FsU1NMLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQkVERTQ1QkRBNjBERjFFMUM4OTUwQzAgLyogbGliUG9kcy1JbnRlcm9wVGVzdHNMb2NhbFNTTC5hICovOyB9OwogCQkyMERGREY4MjlERDk5M0E0QTAwRDU2NjIgLyogbGliUG9kcy1SeExpYnJhcnlVbml0VGVzdHMuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEJFNkRGMUM2MkQxNzM5RUJCMkM3OCAvKiBsaWJQb2RzLVJ4TGlicmFyeVVuaXRUZXN0cy5hICovOyB9OwpAQCAtMTQsNiArMTUsOSBAQAogCQkzRDdDODVGNkFBNjhDNEEyMDVFM0JBMTYgLyogbGliUG9kcy1UZXN0cy5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBERkYyRjNDOTdFRjA5OEZFNUEzMTcxIC8qIGxpYlBvZHMtVGVzdHMuYSAqLzsgfTsKIAkJNUU4QTVEQTcxRDM4NDBCNDAwMEY4QkM0IC8qIENvcmVDcm9uZXRFbmQyRW5kVGVzdHMubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFOEE1REE2MUQzODQwQjQwMDBGOEJDNCAvKiBDb3JlQ3JvbmV0RW5kMkVuZFRlc3RzLm0gKi87IH07CiAJCTVFOEE1REE5MUQzODQwQjQwMDBGOEJDNCAvKiBsaWJUZXN0cy5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM1Njk3QzcxQjE0RkMxMTAwN0E3MjgzIC8qIGxpYlRlc3RzLmEgKi87IH07CisJCTVFRTg0QkY0MUQ0NzE3RTQwMDUwQzZDQyAvKiBJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RUU4NEJGMzFENDcxN0U0MDA1MEM2Q0MgLyogSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5tICovOyB9OworCQk1RUU4NEJGNjFENDcxN0U0MDA1MEM2Q0MgLyogbGliVGVzdHMuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTY5N0M3MUIxNEZDMTEwMDdBNzI4MyAvKiBsaWJUZXN0cy5hICovOyB9OworCQk1RUU4NEJGRTFENDcxRDQwMDA1MEM2Q0MgLyogSW50ZXJvcFRlc3RzLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzVFRDJFQjFCMUEzQkM0MDBGREU1QzMgLyogSW50ZXJvcFRlc3RzLm0gKi87IH07CiAJCTYwRDJBNTdFRDU1OUYzNDQyOEMyRUVDNSAvKiBsaWJQb2RzLUNvcmVDcm9uZXRFbmQyRW5kVGVzdHMuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRDk4QUM0MTdCOTg4MkQzMkIxOUYyOCAvKiBsaWJQb2RzLUNvcmVDcm9uZXRFbmQyRW5kVGVzdHMuYSAqLzsgfTsKIAkJNjMxMkFFNEUxQjFCRjQ5QjAwMzQxREVFIC8qIEdSUENDbGllbnRUZXN0cy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMkFFNEQxQjFCRjQ5QjAwMzQxREVFIC8qIEdSUENDbGllbnRUZXN0cy5tICovOyB9OwogCQk2MzQyM0Y0QTFCMTUwQTVGMDA2Q0Y2M0MgLyogbGliVGVzdHMuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTY5N0M3MUIxNEZDMTEwMDdBNzI4MyAvKiBsaWJUZXN0cy5hICovOyB9OwpAQCAtNDgsNiArNTIsMTMgQEAKIAkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNjM1Njk3QzYxQjE0RkMxMTAwN0E3MjgzOwogCQkJcmVtb3RlSW5mbyA9IFRlc3RzOwogCQl9OworCQk1RUU4NEJGNzFENDcxN0U0MDA1MEM2Q0MgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gNjM1Njk3QkYxQjE0RkMxMTAwN0E3MjgzIC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNjM1Njk3QzYxQjE0RkMxMTAwN0E3MjgzOworCQkJcmVtb3RlSW5mbyA9IFRlc3RzOworCQl9OwogCQk2MzQyM0Y0QjFCMTUwQTVGMDA2Q0Y2M0MgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gNjM1Njk3QkYxQjE0RkMxMTAwN0E3MjgzIC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMTAyLDYgKzExMyw3IEBACiAJCTA3RDEwQTk2NTMyM0JFQTdGRTU5QTc0QiAvKiBQb2RzLVJ4TGlicmFyeVVuaXRUZXN0cy5kZWJ1Zy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmNsdWRlSW5JbmRleCA9IDE7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9ICJQb2RzLVJ4TGlicmFyeVVuaXRUZXN0cy5kZWJ1Zy54Y2NvbmZpZyI7IHBhdGggPSAiUG9kcy9UYXJnZXQgU3VwcG9ydCBGaWxlcy9Qb2RzLVJ4TGlicmFyeVVuaXRUZXN0cy9Qb2RzLVJ4TGlicmFyeVVuaXRUZXN0cy5kZWJ1Zy54Y2NvbmZpZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBNEY4OUQ5QzkwRTlDMzA5OTAyMThGMCAvKiBQb2RzLnJlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5jbHVkZUluSW5kZXggPSAxOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSBQb2RzLnJlbGVhc2UueGNjb25maWc7IHBhdGggPSAiUG9kcy9UYXJnZXQgU3VwcG9ydCBGaWxlcy9Qb2RzL1BvZHMucmVsZWFzZS54Y2NvbmZpZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBEMjI4NEMzREY3RTU3RjBFRDUwNEUzOSAvKiBQb2RzLUNvcmVDcm9uZXRFbmQyRW5kVGVzdHMuZGVidWcueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5jbHVkZUluSW5kZXggPSAxOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSAiUG9kcy1Db3JlQ3JvbmV0RW5kMkVuZFRlc3RzLmRlYnVnLnhjY29uZmlnIjsgcGF0aCA9ICJQb2RzL1RhcmdldCBTdXBwb3J0IEZpbGVzL1BvZHMtQ29yZUNyb25ldEVuZDJFbmRUZXN0cy9Qb2RzLUNvcmVDcm9uZXRFbmQyRW5kVGVzdHMuZGVidWcueGNjb25maWciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxN0Y2MEJGMjg3MUY2QUY4NUZCM0ZBMTIgLyogUG9kcy1JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LmRlYnVnLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluY2x1ZGVJbkluZGV4ID0gMTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gIlBvZHMtSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5kZWJ1Zy54Y2NvbmZpZyI7IHBhdGggPSAiUG9kcy9UYXJnZXQgU3VwcG9ydCBGaWxlcy9Qb2RzLUludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQvUG9kcy1JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LmRlYnVnLnhjY29uZmlnIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBERkYyRjNDOTdFRjA5OEZFNUEzMTcxIC8qIGxpYlBvZHMtVGVzdHMuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gImxpYlBvZHMtVGVzdHMuYSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTM1RjJCNkJGM0JBRThGMERDNEFGRDc2RSAvKiBsaWJQb2RzLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYlBvZHMuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJM0IwODYxRkM4MDUzODlDNTJEQjI2MEQ0IC8qIFBvZHMtUnhMaWJyYXJ5VW5pdFRlc3RzLnJlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5jbHVkZUluSW5kZXggPSAxOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IG5hbWUgPSAiUG9kcy1SeExpYnJhcnlVbml0VGVzdHMucmVsZWFzZS54Y2NvbmZpZyI7IHBhdGggPSAiUG9kcy9UYXJnZXQgU3VwcG9ydCBGaWxlcy9Qb2RzLVJ4TGlicmFyeVVuaXRUZXN0cy9Qb2RzLVJ4TGlicmFyeVVuaXRUZXN0cy5yZWxlYXNlLnhjY29uZmlnIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMSw2ICsxMjMsOSBAQAogCQk1NzYxRTk4OTc4RERERjEzNkE1OENCN0UgLyogUG9kcy1BbGxUZXN0cy5yZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluY2x1ZGVJbkluZGV4ID0gMTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gIlBvZHMtQWxsVGVzdHMucmVsZWFzZS54Y2NvbmZpZyI7IHBhdGggPSAiUG9kcy9UYXJnZXQgU3VwcG9ydCBGaWxlcy9Qb2RzLUFsbFRlc3RzL1BvZHMtQWxsVGVzdHMucmVsZWFzZS54Y2NvbmZpZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVFOEE1REE0MUQzODQwQjQwMDBGOEJDNCAvKiBDb3JlQ3JvbmV0RW5kMkVuZFRlc3RzLnhjdGVzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gQ29yZUNyb25ldEVuZDJFbmRUZXN0cy54Y3Rlc3Q7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVFOEE1REE2MUQzODQwQjQwMDBGOEJDNCAvKiBDb3JlQ3JvbmV0RW5kMkVuZFRlc3RzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IENvcmVDcm9uZXRFbmQyRW5kVGVzdHMubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUVFODRCRjExRDQ3MTdFNDAwNTBDNkNDIC8qIEludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQueGN0ZXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmNmYnVuZGxlOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LnhjdGVzdDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNUVFODRCRjMxRDQ3MTdFNDAwNTBDNkNDIC8qIEludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1RUU4NEJGNTFENDcxN0U0MDA1MEM2Q0MgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjMxMkFFNEQxQjFCRjQ5QjAwMzQxREVFIC8qIEdSUENDbGllbnRUZXN0cy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBHUlBDQ2xpZW50VGVzdHMubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM0MjNGNDQxQjE1MEE1RjAwNkNGNjNDIC8qIEFsbFRlc3RzLnhjdGVzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gQWxsVGVzdHMueGN0ZXN0OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk2MzQyM0Y1MDFCMTUxQjc3MDA2Q0Y2M0MgLyogUnhMaWJyYXJ5VW5pdFRlc3RzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFJ4TGlicmFyeVVuaXRUZXN0cy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4LDcgKzE0Myw5IEBACiAJCTYzRTI0MENEMUI2QzRFMkIwMDVGM0IwRSAvKiBJbnRlcm9wVGVzdHNMb2NhbFNTTC5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBJbnRlcm9wVGVzdHNMb2NhbFNTTC5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2M0UyNDBDRjFCNkM2M0RDMDA1RjNCMEUgLyogVGVzdENlcnRpZmljYXRlcy5idW5kbGUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAid3JhcHBlci5wbHVnLWluIjsgcGF0aCA9IFRlc3RDZXJ0aWZpY2F0ZXMuYnVuZGxlOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTJFOTdFM0Y0NjlDQzJBNzU4RDc3REUgLyogUG9kcy1JbnRlcm9wVGVzdHNMb2NhbFNTTC5yZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluY2x1ZGVJbkluZGV4ID0gMTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gIlBvZHMtSW50ZXJvcFRlc3RzTG9jYWxTU0wucmVsZWFzZS54Y2NvbmZpZyI7IHBhdGggPSAiUG9kcy9UYXJnZXQgU3VwcG9ydCBGaWxlcy9Qb2RzLUludGVyb3BUZXN0c0xvY2FsU1NML1BvZHMtSW50ZXJvcFRlc3RzTG9jYWxTU0wucmVsZWFzZS54Y2NvbmZpZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlFOTQ0NEM3NjRGMEZGRjY0QTdFQjU4RSAvKiBsaWJQb2RzLUludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gImxpYlBvZHMtSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5hIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQTU4QkU2REYxQzYyRDE3MzlFQkIyQzc4IC8qIGxpYlBvZHMtUnhMaWJyYXJ5VW5pdFRlc3RzLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9ICJsaWJQb2RzLVJ4TGlicmFyeVVuaXRUZXN0cy5hIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQUM0MTRFRjdBNkJGNzZFRDAyQjZFNDgwIC8qIFBvZHMtSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5yZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluY2x1ZGVJbkluZGV4ID0gMTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gIlBvZHMtSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5yZWxlYXNlLnhjY29uZmlnIjsgcGF0aCA9ICJQb2RzL1RhcmdldCBTdXBwb3J0IEZpbGVzL1BvZHMtSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC9Qb2RzLUludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQucmVsZWFzZS54Y2NvbmZpZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI5NEMyN0MwNjczM0NGOThDRTFCMjc1NyAvKiBQb2RzLUFsbFRlc3RzLmRlYnVnLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluY2x1ZGVJbkluZGV4ID0gMTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gIlBvZHMtQWxsVGVzdHMuZGVidWcueGNjb25maWciOyBwYXRoID0gIlBvZHMvVGFyZ2V0IFN1cHBvcnQgRmlsZXMvUG9kcy1BbGxUZXN0cy9Qb2RzLUFsbFRlc3RzLmRlYnVnLnhjY29uZmlnIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFMDg2RDVCNDcwREEzNjdENDE1QUIwIC8qIGxpYlBvZHMtQWxsVGVzdHMuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gImxpYlBvZHMtQWxsVGVzdHMuYSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCURCRTA1OUI0QUM3QTUxOTE5NDY3RUVDMCAvKiBsaWJQb2RzLUludGVyb3BUZXN0c1JlbW90ZS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAibGliUG9kcy1JbnRlcm9wVGVzdHNSZW1vdGUuYSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xNTIsNiArMTY5LDE1IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTVFRTg0QkVFMUQ0NzE3RTQwMDUwQzZDQyAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNUVFODRCRjYxRDQ3MTdFNDAwNTBDNkNDIC8qIGxpYlRlc3RzLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkwOUI3NkQ5NTg1QUNFNzQwMzgwNEQ5REMgLyogbGliUG9kcy1JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJNjM0MjNGNDExQjE1MEE1RjAwNkNGNjNDIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0yMTksNiArMjQ1LDcgQEAKIAkJCQlBNThCRTZERjFDNjJEMTczOUVCQjJDNzggLyogbGliUG9kcy1SeExpYnJhcnlVbml0VGVzdHMuYSAqLywKIAkJCQkyMERGRjJGM0M5N0VGMDk4RkU1QTMxNzEgLyogbGliUG9kcy1UZXN0cy5hICovLAogCQkJCUZCRDk4QUM0MTdCOTg4MkQzMkIxOUYyOCAvKiBsaWJQb2RzLUNvcmVDcm9uZXRFbmQyRW5kVGVzdHMuYSAqLywKKwkJCQk5RTk0NDRDNzY0RjBGRkY2NEE3RUI1OEUgLyogbGliUG9kcy1JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LmEgKi8sCiAJCQkpOwogCQkJbmFtZSA9IEZyYW1ld29ya3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQyLDYgKzI2OSw4IEBACiAJCQkJRTY3MzNCODM4QjI4NDUzNDM0QjU1NkUyIC8qIFBvZHMtVGVzdHMucmVsZWFzZS54Y2NvbmZpZyAqLywKIAkJCQkwRDIyODRDM0RGN0U1N0YwRUQ1MDRFMzkgLyogUG9kcy1Db3JlQ3JvbmV0RW5kMkVuZFRlc3RzLmRlYnVnLnhjY29uZmlnICovLAogCQkJCTRBRDk3MDk2RDEzRDc0MTZEQzkxQTcyQSAvKiBQb2RzLUNvcmVDcm9uZXRFbmQyRW5kVGVzdHMucmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQkxN0Y2MEJGMjg3MUY2QUY4NUZCM0ZBMTIgLyogUG9kcy1JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LmRlYnVnLnhjY29uZmlnICovLAorCQkJCUFDNDE0RUY3QTZCRjc2RUQwMkI2RTQ4MCAvKiBQb2RzLUludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQucmVsZWFzZS54Y2NvbmZpZyAqLywKIAkJCSk7CiAJCQluYW1lID0gUG9kczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTQsMTIgKzI4MywyMiBAQAogCQkJcGF0aCA9IENvcmVDcm9uZXRFbmQyRW5kVGVzdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1RUU4NEJGMjFENDcxN0U0MDA1MEM2Q0MgLyogSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNUVFODRCRjMxRDQ3MTdFNDAwNTBDNkNDIC8qIEludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQubSAqLywKKwkJCQk1RUU4NEJGNTFENDcxN0U0MDA1MEM2Q0MgLyogSW5mby5wbGlzdCAqLywKKwkJCSk7CisJCQlwYXRoID0gSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTYzNTY5N0JFMUIxNEZDMTEwMDdBNzI4MyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNjM1Njk3QzkxQjE0RkMxMTAwN0E3MjgzIC8qIFRlc3RzICovLAogCQkJCTYzRTI0MENGMUI2QzYzREMwMDVGM0IwRSAvKiBUZXN0Q2VydGlmaWNhdGVzLmJ1bmRsZSAqLywKIAkJCQk1RThBNURBNTFEMzg0MEI0MDAwRjhCQzQgLyogQ29yZUNyb25ldEVuZDJFbmRUZXN0cyAqLywKKwkJCQk1RUU4NEJGMjFENDcxN0U0MDA1MEM2Q0MgLyogSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldCAqLywKIAkJCQk2MzU2OTdDODFCMTRGQzExMDA3QTcyODMgLyogUHJvZHVjdHMgKi8sCiAJCQkJNTFFNDY1MEYzNEY4NTRGNDFGRjA1M0IzIC8qIFBvZHMgKi8sCiAJCQkJMTM2RDUzNUUxOTcyNzA5OUI5NDFEN0IxIC8qIEZyYW1ld29ya3MgKi8sCkBAIC0yNzYsNiArMzE1LDcgQEAKIAkJCQk2M0RDODQzNDFCRTE1Mjk0MDAwNzA4RTggLyogSW50ZXJvcFRlc3RzTG9jYWxTU0wueGN0ZXN0ICovLAogCQkJCTYzREM4NDQzMUJFMTUyQjUwMDA3MDhFOCAvKiBJbnRlcm9wVGVzdHNMb2NhbENsZWFydGV4dC54Y3Rlc3QgKi8sCiAJCQkJNUU4QTVEQTQxRDM4NDBCNDAwMEY4QkM0IC8qIENvcmVDcm9uZXRFbmQyRW5kVGVzdHMueGN0ZXN0ICovLAorCQkJCTVFRTg0QkYxMUQ0NzE3RTQwMDUwQzZDQyAvKiBJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LnhjdGVzdCAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzI4LDYgKzM2OCwyNyBAQAogCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDVFOEE1REE0MUQzODQwQjQwMDBGOEJDNCAvKiBDb3JlQ3JvbmV0RW5kMkVuZFRlc3RzLnhjdGVzdCAqLzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlLnVuaXQtdGVzdCI7CiAJCX07CisJCTVFRTg0QkYwMUQ0NzE3RTQwMDUwQzZDQyAvKiBJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0ICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDVFRTg0QkZCMUQ0NzE3RTQwMDUwQzZDQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQlDMEY3QjFGRjZGODhDQzVGQkYzNjJGNEMgLyogW0NQXSBDaGVjayBQb2RzIE1hbmlmZXN0LmxvY2sgKi8sCisJCQkJNUVFODRCRUQxRDQ3MTdFNDAwNTBDNkNDIC8qIFNvdXJjZXMgKi8sCisJCQkJNUVFODRCRUUxRDQ3MTdFNDAwNTBDNkNDIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJNUVFODRCRUYxRDQ3MTdFNDAwNTBDNkNDIC8qIFJlc291cmNlcyAqLywKKwkJCQkzMUY4RDFDNDA3MTk1Q0JGMEMwMjkyOUIgLyogW0NQXSBFbWJlZCBQb2RzIEZyYW1ld29ya3MgKi8sCisJCQkJREI0RDBFNzNDMjI5RjJGRjNCMzY0QUIzIC8qIFtDUF0gQ29weSBQb2RzIFJlc291cmNlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQk1RUU4NEJGODFENDcxN0U0MDA1MEM2Q0MgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldDsKKwkJCXByb2R1Y3ROYW1lID0gSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA1RUU4NEJGMTFENDcxN0U0MDA1MEM2Q0MgLyogSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC54Y3Rlc3QgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmJ1bmRsZS51bml0LXRlc3QiOworCQl9OwogCQk2MzQyM0Y0MzFCMTUwQTVGMDA2Q0Y2M0MgLyogQWxsVGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjM0MjNGNEQxQjE1MEE1RjAwNkNGNjNDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJBbGxUZXN0cyIgKi87CkBAIC00NjQsNiArNTI1LDkgQEAKIAkJCQkJNUU4QTVEQTMxRDM4NDBCNDAwMEY4QkM0ID0gewogCQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gNy4zLjE7CiAJCQkJCX07CisJCQkJCTVFRTg0QkYwMUQ0NzE3RTQwMDUwQzZDQyA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDcuMy4xOworCQkJCQl9OwogCQkJCQk2MzQyM0Y0MzFCMTUwQTVGMDA2Q0Y2M0MgPSB7CiAJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA2LjMuMTsKIAkJCQkJfTsKQEAgLTUwMyw2ICs1NjcsNyBAQAogCQkJCTYzREM4NDMzMUJFMTUyOTQwMDA3MDhFOCAvKiBJbnRlcm9wVGVzdHNMb2NhbFNTTCAqLywKIAkJCQk2M0RDODQ0MjFCRTE1MkI1MDAwNzA4RTggLyogSW50ZXJvcFRlc3RzTG9jYWxDbGVhcnRleHQgKi8sCiAJCQkJNUU4QTVEQTMxRDM4NDBCNDAwMEY4QkM0IC8qIENvcmVDcm9uZXRFbmQyRW5kVGVzdHMgKi8sCisJCQkJNUVFODRCRjAxRDQ3MTdFNDAwNTBDNkNDIC8qIEludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwpAQCAtNTE1LDYgKzU4MCwxMyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQk1RUU4NEJFRjFENDcxN0U0MDA1MEM2Q0MgLyogUmVzb3VyY2VzICovID0geworCQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJNjM0MjNGNDIxQjE1MEE1RjAwNkNGNjNDIC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtNTU1LDYgKzYyNywyMSBAQAogLyogRW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkzMUY4RDFDNDA3MTk1Q0JGMEMwMjkyOUIgLyogW0NQXSBFbWJlZCBQb2RzIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIltDUF0gRW1iZWQgUG9kcyBGcmFtZXdvcmtzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIlwiJHtTUkNST09UfS9Qb2RzL1RhcmdldCBTdXBwb3J0IEZpbGVzL1BvZHMtSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC9Qb2RzLUludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQtZnJhbWV3b3Jrcy5zaFwiXG4iOworCQkJc2hvd0VudlZhcnNJbkxvZyA9IDA7CisJCX07CiAJCTRDNDA2MzI3RDM5MDdBNUU1RkJBOEFDOSAvKiBbQ1BdIENoZWNrIFBvZHMgTWFuaWZlc3QubG9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC03ODAsNiArODY3LDIxIEBACiAJCQlzaGVsbFNjcmlwdCA9ICJkaWZmIFwiJHtQT0RTX1JPT1R9Ly4uL1BvZGZpbGUubG9ja1wiIFwiJHtQT0RTX1JPT1R9L01hbmlmZXN0LmxvY2tcIiA+IC9kZXYvbnVsbFxuaWYgW1sgJD8gIT0gMCBdXSA7IHRoZW5cbiAgICBjYXQgPDwgRU9NXG5lcnJvcjogVGhlIHNhbmRib3ggaXMgbm90IGluIHN5bmMgd2l0aCB0aGUgUG9kZmlsZS5sb2NrLiBSdW4gJ3BvZCBpbnN0YWxsJyBvciB1cGRhdGUgeW91ciBDb2NvYVBvZHMgaW5zdGFsbGF0aW9uLlxuRU9NXG4gICAgZXhpdCAxXG5maVxuIjsKIAkJCXNob3dFbnZWYXJzSW5Mb2cgPSAwOwogCQl9OworCQlDMEY3QjFGRjZGODhDQzVGQkYzNjJGNEMgLyogW0NQXSBDaGVjayBQb2RzIE1hbmlmZXN0LmxvY2sgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIltDUF0gQ2hlY2sgUG9kcyBNYW5pZmVzdC5sb2NrIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImRpZmYgXCIke1BPRFNfUk9PVH0vLi4vUG9kZmlsZS5sb2NrXCIgXCIke1BPRFNfUk9PVH0vTWFuaWZlc3QubG9ja1wiID4gL2Rldi9udWxsXG5pZiBbWyAkPyAhPSAwIF1dIDsgdGhlblxuICAgIGNhdCA8PCBFT01cbmVycm9yOiBUaGUgc2FuZGJveCBpcyBub3QgaW4gc3luYyB3aXRoIHRoZSBQb2RmaWxlLmxvY2suIFJ1biAncG9kIGluc3RhbGwnIG9yIHVwZGF0ZSB5b3VyIENvY29hUG9kcyBpbnN0YWxsYXRpb24uXG5FT01cbiAgICBleGl0IDFcbmZpXG4iOworCQkJc2hvd0VudlZhcnNJbkxvZyA9IDA7CisJCX07CiAJCUMyRTA5REM0QkQyMzlGNzExNjBGMENDMSAvKiBbQ1BdIENvcHkgUG9kcyBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtODI1LDYgKzkyNywyMSBAQAogCQkJc2hlbGxTY3JpcHQgPSAiXCIke1NSQ1JPT1R9L1BvZHMvVGFyZ2V0IFN1cHBvcnQgRmlsZXMvUG9kcy1SeExpYnJhcnlVbml0VGVzdHMvUG9kcy1SeExpYnJhcnlVbml0VGVzdHMtcmVzb3VyY2VzLnNoXCJcbiI7CiAJCQlzaG93RW52VmFyc0luTG9nID0gMDsKIAkJfTsKKwkJREI0RDBFNzNDMjI5RjJGRjNCMzY0QUIzIC8qIFtDUF0gQ29weSBQb2RzIFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiW0NQXSBDb3B5IFBvZHMgUmVzb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIlwiJHtTUkNST09UfS9Qb2RzL1RhcmdldCBTdXBwb3J0IEZpbGVzL1BvZHMtSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC9Qb2RzLUludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQtcmVzb3VyY2VzLnNoXCJcbiI7CisJCQlzaG93RW52VmFyc0luTG9nID0gMDsKKwkJfTsKIAkJRTYzNDY4Qzc2MEQwNzI0RjE4ODYxODIyIC8qIFtDUF0gRW1iZWQgUG9kcyBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTg2Niw2ICs5ODMsMTUgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJNUVFODRCRUQxRDQ3MTdFNDAwNTBDNkNDIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk1RUU4NEJGRTFENDcxRDQwMDA1MEM2Q0MgLyogSW50ZXJvcFRlc3RzLm0gaW4gU291cmNlcyAqLywKKwkJCQk1RUU4NEJGNDFENDcxN0U0MDA1MEM2Q0MgLyogSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5tIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTYzNDIzRjQwMUIxNTBBNUYwMDZDRjYzQyAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtOTMxLDYgKzEwNTcsMTEgQEAKIAkJCXRhcmdldCA9IDYzNTY5N0M2MUIxNEZDMTEwMDdBNzI4MyAvKiBUZXN0cyAqLzsKIAkJCXRhcmdldFByb3h5ID0gNUU4QTVEQUExRDM4NDBCNDAwMEY4QkM0IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKIAkJfTsKKwkJNUVFODRCRjgxRDQ3MTdFNDAwNTBDNkNDIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNjM1Njk3QzYxQjE0RkMxMTAwN0E3MjgzIC8qIFRlc3RzICovOworCQkJdGFyZ2V0UHJveHkgPSA1RUU4NEJGNzFENDcxN0U0MDA1MEM2Q0MgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk2MzQyM0Y0QzFCMTUwQTVGMDA2Q0Y2M0MgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA2MzU2OTdDNjFCMTRGQzExMDA3QTcyODMgLyogVGVzdHMgKi87CkBAIC05OTEsNiArMTEyMiw1MCBAQAogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OworCQk1RUU4NEJGOTFENDcxN0U0MDA1MEM2Q0MgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMTdGNjBCRjI4NzFGNkFGODVGQjNGQTEyIC8qIFBvZHMtSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC5kZWJ1Zy54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKKwkJCQkiQ09ERV9TSUdOX0lERU5USVRZW3Nkaz1pcGhvbmVvcypdIiA9ICJpUGhvbmUgRGV2ZWxvcGVyIjsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKKwkJCQlFTkFCTEVfVEVTVEFCSUxJVFkgPSBZRVM7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJDT0NPQVBPRFM9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiR1BCX1VTRV9QUk9UT0JVRl9GUkFNRVdPUktfSU1QT1JUUz0xIiwKKwkJCQkJIkdSUENfQ09NUElMRV9XSVRIX0NST05FVD0xIiwKKwkJCQkpOworCQkJCUlORk9QTElTVF9GSUxFID0gSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC9JbmZvLnBsaXN0OworCQkJCUlQSE9ORU9TX0RFUExPWU1FTlRfVEFSR0VUID0gOS4zOworCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0gIiQoaW5oZXJpdGVkKSBAZXhlY3V0YWJsZV9wYXRoL0ZyYW1ld29ya3MgQGxvYWRlcl9wYXRoL0ZyYW1ld29ya3MiOworCQkJCVBST0RVQ1RfQlVORExFX0lERU5USUZJRVIgPSBpby5ncnBjLkludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQ7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTVFRTg0QkZBMUQ0NzE3RTQwMDUwQzZDQyAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEFDNDE0RUY3QTZCRjc2RUQwMkI2RTQ4MCAvKiBQb2RzLUludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQucmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQU5BTFlaRVJfTk9OTlVMTCA9IFlFUzsKKwkJCQkiQ09ERV9TSUdOX0lERU5USVRZW3Nkaz1pcGhvbmVvcypdIiA9ICJpUGhvbmUgRGV2ZWxvcGVyIjsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIkNPQ09BUE9EUz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJHUEJfVVNFX1BST1RPQlVGX0ZSQU1FV09SS19JTVBPUlRTPTEiLAorCQkJCQkiR1JQQ19DT01QSUxFX1dJVEhfQ1JPTkVUPTEiLAorCQkJCSk7CisJCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0L0luZm8ucGxpc3Q7CisJCQkJSVBIT05FT1NfREVQTE9ZTUVOVF9UQVJHRVQgPSA5LjM7CisJCQkJTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMgPSAiJChpbmhlcml0ZWQpIEBleGVjdXRhYmxlX3BhdGgvRnJhbWV3b3JrcyBAbG9hZGVyX3BhdGgvRnJhbWV3b3JrcyI7CisJCQkJUFJPRFVDVF9CVU5ETEVfSURFTlRJRklFUiA9IGlvLmdycGMuSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldDsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OwogCQk2MzQyM0Y0RTFCMTUwQTVGMDA2Q0Y2M0MgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQjk0QzI3QzA2NzMzQ0Y5OENFMUIyNzU3IC8qIFBvZHMtQWxsVGVzdHMuZGVidWcueGNjb25maWcgKi87CkBAIC0xMjM5LDYgKzE0MTQsMTUgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CiAJCX07CisJCTVFRTg0QkZCMUQ0NzE3RTQwMDUwQzZDQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk1RUU4NEJGOTFENDcxN0U0MDA1MEM2Q0MgLyogRGVidWcgKi8sCisJCQkJNUVFODRCRkExRDQ3MTdFNDAwNTBDNkNDIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKIAkJNjM0MjNGNEQxQjE1MEE1RjAwNkNGNjNDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJBbGxUZXN0cyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKZGlmZiAtLWdpdCBhL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9UZXN0cy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0Lnhjc2NoZW1lIGIvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL1Rlc3RzLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0ludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQueGNzY2hlbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ5MmJlOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9UZXN0cy54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9JbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0Lnhjc2NoZW1lCkBAIC0wLDAgKzEsMTA0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFNjaGVtZQorICAgTGFzdFVwZ3JhZGVWZXJzaW9uID0gIjA3MzAiCisgICB2ZXJzaW9uID0gIjEuMyI+CisgICA8QnVpbGRBY3Rpb24KKyAgICAgIHBhcmFsbGVsaXplQnVpbGRhYmxlcyA9ICJZRVMiCisgICAgICBidWlsZEltcGxpY2l0RGVwZW5kZW5jaWVzID0gIllFUyI+CisgICAgICA8QnVpbGRBY3Rpb25FbnRyaWVzPgorICAgICAgICAgPEJ1aWxkQWN0aW9uRW50cnkKKyAgICAgICAgICAgIGJ1aWxkRm9yVGVzdGluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcgPSAiWUVTIgorICAgICAgICAgICAgYnVpbGRGb3JQcm9maWxpbmcgPSAiTk8iCisgICAgICAgICAgICBidWlsZEZvckFyY2hpdmluZyA9ICJOTyIKKyAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+CisgICAgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjVFRTg0QkYwMUQ0NzE3RTQwMDUwQzZDQyIKKyAgICAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC54Y3Rlc3QiCisgICAgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIkludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQiCisgICAgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpUZXN0cy54Y29kZXByb2oiPgorICAgICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAgICAgICA8L0J1aWxkQWN0aW9uRW50cnk+CisgICAgICA8L0J1aWxkQWN0aW9uRW50cmllcz4KKyAgIDwvQnVpbGRBY3Rpb24+CisgICA8VGVzdEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIuTExEQiIKKyAgICAgIHNob3VsZFVzZUxhdW5jaFNjaGVtZUFyZ3NFbnYgPSAiWUVTIj4KKyAgICAgIDxUZXN0YWJsZXM+CisgICAgICAgICA8VGVzdGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgIHNraXBwZWQgPSAiTk8iPgorICAgICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICI1RUU4NEJGMDFENDcxN0U0MDA1MEM2Q0MiCisgICAgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIkludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQueGN0ZXN0IgorICAgICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0IgorICAgICAgICAgICAgICAgUmVmZXJlbmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6VGVzdHMueGNvZGVwcm9qIj4KKyAgICAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAgICAgICAgPFNraXBwZWRUZXN0cz4KKyAgICAgICAgICAgICAgIDxUZXN0CisgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0gIkludGVyb3BUZXN0cyI+CisgICAgICAgICAgICAgICA8L1Rlc3Q+CisgICAgICAgICAgICA8L1NraXBwZWRUZXN0cz4KKyAgICAgICAgIDwvVGVzdGFibGVSZWZlcmVuY2U+CisgICAgICA8L1Rlc3RhYmxlcz4KKyAgICAgIDxNYWNyb0V4cGFuc2lvbj4KKyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiNUVFODRCRjAxRDQ3MTdFNDAwNTBDNkNDIgorICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LnhjdGVzdCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldCIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlRlc3RzLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvTWFjcm9FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgPC9UZXN0QWN0aW9uPgorICAgPExhdW5jaEFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgorICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCisgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIuTExEQiIKKyAgICAgIGxhdW5jaFN0eWxlID0gIjAiCisgICAgICB1c2VDdXN0b21Xb3JraW5nRGlyZWN0b3J5ID0gIk5PIgorICAgICAgaWdub3Jlc1BlcnNpc3RlbnRTdGF0ZU9uTGF1bmNoID0gIk5PIgorICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgorICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFsIgorICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4KKyAgICAgIDxNYWNyb0V4cGFuc2lvbj4KKyAgICAgICAgIDxCdWlsZGFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAgICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiNUVFODRCRjAxRDQ3MTdFNDAwNTBDNkNDIgorICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJJbnRlcm9wVGVzdHNSZW1vdGVXaXRoQ3JvbmV0LnhjdGVzdCIKKyAgICAgICAgICAgIEJsdWVwcmludE5hbWUgPSAiSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldCIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlRlc3RzLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvTWFjcm9FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgPC9MYXVuY2hBY3Rpb24+CisgICA8UHJvZmlsZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICBzaG91bGRVc2VMYXVuY2hTY2hlbWVBcmdzRW52ID0gIllFUyIKKyAgICAgIHNhdmVkVG9vbElkZW50aWZpZXIgPSAiIgorICAgICAgdXNlQ3VzdG9tV29ya2luZ0RpcmVjdG9yeSA9ICJOTyIKKyAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyI+CisgICAgICA8TWFjcm9FeHBhbnNpb24+CisgICAgICAgICA8QnVpbGRhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjVFRTg0QkYwMUQ0NzE3RTQwMDUwQzZDQyIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiSW50ZXJvcFRlc3RzUmVtb3RlV2l0aENyb25ldC54Y3Rlc3QiCisgICAgICAgICAgICBCbHVlcHJpbnROYW1lID0gIkludGVyb3BUZXN0c1JlbW90ZVdpdGhDcm9uZXQiCisgICAgICAgICAgICBSZWZlcmVuY2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpUZXN0cy54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAgICA8L01hY3JvRXhwYW5zaW9uPgorICAgPC9Qcm9maWxlQWN0aW9uPgorICAgPEFuYWx5emVBY3Rpb24KKyAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyI+CisgICA8L0FuYWx5emVBY3Rpb24+CisgICA8QXJjaGl2ZUFjdGlvbgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCisgICAgICByZXZlYWxBcmNoaXZlSW5Pcmdhbml6ZXIgPSAiWUVTIj4KKyAgIDwvQXJjaGl2ZUFjdGlvbj4KKzwvU2NoZW1lPgpkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL2J1aWxkX2V4YW1wbGVfdGVzdC5zaCBiL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9idWlsZF9leGFtcGxlX3Rlc3Quc2gKaW5kZXggNWMzNzY2Yi4uYWU3NTk0MSAxMDA3NTUKLS0tIGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL2J1aWxkX2V4YW1wbGVfdGVzdC5zaAorKysgYi9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvYnVpbGRfZXhhbXBsZV90ZXN0LnNoCkBAIC0zMSw0NCArMzEsMzMgQEAKICMgRG9uJ3QgcnVuIHRoaXMgc2NyaXB0IHN0YW5kYWxvbmUuIEluc3RlYWQsIHJ1biBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3Q6CiAjIC4vdG9vbHMvcnVuX3Rlc3RzL3J1bl90ZXN0cy5weSAtbCBvYmpjCiAKLXNldCAtZW8gcGlwZWZhaWwKK3NldCAtZXZvIHBpcGVmYWlsCiAKIGNkIGBkaXJuYW1lICQwYAogCi1CSU5ESVI9YHB3ZGAvLi4vLi4vLi4vYmlucy8kQ09ORklHCi1UTVBfUEFUSD0kUEFUSAotCi0jIElmIGBwcm90b2NgIGlzIG5vdCBmb3VuZCwgYWRkIGJpbnMvJENPTkZJRy9wcm90b2J1Zi9wcm90b2MgdG8gdGhlIHNlYXJjaCBwYXRoCi1oYXNoIHByb3RvYyAyPi9kZXYvbnVsbCB8fCBUTVBfUEFUSD0kQklORElSL3Byb3RvYnVmOiRUTVBfUEFUSAotCi0jIElmIGBwcm90b2MtZ2VuLW9iamNncnBjYCBpcyBub3QgZm91bmQsIG1ha2UgYSBzeW1saW5rIGZyb20KLSMgYmlucy8kQ09OR0lGL2dycGNfb2JqZWN0aXZlX2NfcGx1Z2luIGFuZCBhZGQgaXQgdG8gdGhlIHNlYXJjaCBwYXRoCi1QQVRIPSRUTVBfUEFUSCBoYXNoIHByb3RvYy1nZW4tb2JqY2dycGMgMj4vZGV2L251bGwgfHwgewotICBsbiAtc2YgJEJJTkRJUi9ncnBjX29iamVjdGl2ZV9jX3BsdWdpbiAkQklORElSL3Byb3RvYy1nZW4tb2JqY2dycGMKLSAgVE1QX1BBVEg9JEJJTkRJUjokVE1QX1BBVEgKLX0KLQogU0NIRU1FPUhlbGxvV29ybGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIEVYQU1QTEVfUEFUSD1leGFtcGxlcy9vYmplY3RpdmUtYy9oZWxsb3dvcmxkIFwKLSAgUEFUSD0kVE1QX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAuL2J1aWxkX29uZV9leGFtcGxlLnNoCiAKIFNDSEVNRT1Sb3V0ZUd1aWRlQ2xpZW50ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgRVhBTVBMRV9QQVRIPWV4YW1wbGVzL29iamVjdGl2ZS1jL3JvdXRlX2d1aWRlIFwKLSAgUEFUSD0kVE1QX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgLi9idWlsZF9vbmVfZXhhbXBsZS5zaAogCiBTQ0hFTUU9QXV0aFNhbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIEVYQU1QTEVfUEFUSD1leGFtcGxlcy9vYmplY3RpdmUtYy9hdXRoX3NhbXBsZSBcCi0gIFBBVEg9JFRNUF9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC4vYnVpbGRfb25lX2V4YW1wbGUuc2gKKworcm0gLWYgLi4vZXhhbXBsZXMvUmVtb3RlVGVzdENsaWVudC8qLntoLG19CisKK1NDSEVNRT1TYW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBFWEFNUExFX1BBVEg9c3JjL29iamVjdGl2ZS1jL2V4YW1wbGVzL1NhbXBsZSBcCiAgIC4vYnVpbGRfb25lX2V4YW1wbGUuc2gKIAogU0NIRU1FPVNhbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIEVYQU1QTEVfUEFUSD1zcmMvb2JqZWN0aXZlLWMvZXhhbXBsZXMvU2FtcGxlIFwKLSAgUEFUSD0kVE1QX1BBVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBGUkFNRVdPUktTPVlFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIC4vYnVpbGRfb25lX2V4YW1wbGUuc2gKIAogU0NIRU1FPVN3aWZ0U2FtcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgRVhBTVBMRV9QQVRIPXNyYy9vYmplY3RpdmUtYy9leGFtcGxlcy9Td2lmdFNhbXBsZSBcCi0gIFBBVEg9JFRNUF9QQVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAuL2J1aWxkX29uZV9leGFtcGxlLnNoCmRpZmYgLS1naXQgYS9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvYnVpbGRfb25lX2V4YW1wbGUuc2ggYi9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvYnVpbGRfb25lX2V4YW1wbGUuc2gKaW5kZXggMjRmYjhiNy4uOWZlZjY1OCAxMDA3NTUKLS0tIGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL2J1aWxkX29uZV9leGFtcGxlLnNoCisrKyBiL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9idWlsZF9vbmVfZXhhbXBsZS5zaApAQCAtMzEsNyArMzEsNyBAQAogIyBEb24ndCBydW4gdGhpcyBzY3JpcHQgc3RhbmRhbG9uZS4gSW5zdGVhZCwgcnVuIGZyb20gdGhlIHJlcG9zaXRvcnkgcm9vdDoKICMgLi90b29scy9ydW5fdGVzdHMvcnVuX3Rlc3RzLnB5IC1sIG9iamMKIAotc2V0IC1lCitzZXQgLWV2CiAKICMgUGFyYW1zOgogIyBFWEFNUExFX1BBVEggLSBkaXJlY3Rvcnkgb2YgdGhlIGV4YW1wbGUKQEAgLTU0LDcgKzU0LDcgQEAKIHNldCAtbyBwaXBlZmFpbAogWENPREVCVUlMRF9GSUxURVI9JyhePT09fF5cKlwqfFxiZmF0YWxcYnxcYmVycm9yXGJ8XGJ3YXJuaW5nXGJ8XGJmYWlsKScKIHhjb2RlYnVpbGQgXAotICAgIGNsZWFuIGJ1aWxkIFwKKyAgICBidWlsZCBcCiAgICAgLXdvcmtzcGFjZSAqLnhjd29ya3NwYWNlIFwKICAgICAtc2NoZW1lICRTQ0hFTUUgXAogICAgIC1kZXN0aW5hdGlvbiBuYW1lPSJpUGhvbmUgNiIgXApkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL2J1aWxkX3Rlc3RzLnNoIGIvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL2J1aWxkX3Rlc3RzLnNoCmluZGV4IDg1NDdiZmQuLmJjNWJjMDQgMTAwNzU1Ci0tLSBhL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9idWlsZF90ZXN0cy5zaAorKysgYi9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvYnVpbGRfdGVzdHMuc2gKQEAgLTQ0LDI2ICs0NCwxMCBAQAogICAgIGV4aXQgMQogfQogCi1CSU5ESVI9Li4vLi4vLi4vYmlucy8kQ09ORklHCi0KLWlmIFsgISAtZiAkQklORElSL3Byb3RvYnVmL3Byb3RvYyBdOyB0aGVuCi0gICAgaGFzaCBwcm90b2MgMj4vZGV2L251bGwgfHwgewotICAgICAgICBlY2hvID4mMiAiQ2FuJ3QgZmluZCBwcm90b2MuIE1ha2Ugc3VyZSBydW5fdGVzdHMucHkgaXMgbWFraW5nIiBcCi0gICAgICAgICAgICAgICAgICJncnBjX29iamVjdGl2ZV9jX3BsdWdpbiBiZWZvcmUgY2FsbGluZyB0aGlzIHNjcmlwdC4iCi0gICAgICAgIGV4aXQgMQotICAgIH0KLSAgICAjIFdoZW4gcHJvdG9jIGlzIGFscmVhZHkgaW5zdGFsbGVkLCBtYWtlIGRvZXNuJ3QgY29tcGlsZSBvbmUuIFB1dCBhIGxpbmsKLSAgICAjIHRoZXJlIHNvIHRoZSBwb2RzcGVjcyBjYW4gZG8gY29kZWdlbiB1c2luZyB0aGF0IHBhdGguCi0gICAgbWtkaXIgLXAgJEJJTkRJUi9wcm90b2J1ZgotICAgIGxuIC1zIGB3aGljaCBwcm90b2NgICRCSU5ESVIvcHJvdG9idWYvcHJvdG9jCi1maQotCi1bIC1mICRCSU5ESVIvaW50ZXJvcF9zZXJ2ZXIgXSB8fCB7Ci0gICAgZWNobyA+JjIgIkNhbid0IGZpbmQgdGhlIHRlc3Qgc2VydmVyLiBNYWtlIHN1cmUgcnVuX3Rlc3RzLnB5IGlzIG1ha2luZyIgXAotICAgICAgICAgICAgICJpbnRlcm9wX3NlcnZlciBiZWZvcmUgY2FsbGluZyB0aGlzIHNjcmlwdC4gSXQgbmVlZHMgdG8gYmUgZG9uZSIgXAotICAgICAgICAgICAgICJiZWZvcmUgYmVjYXVzZSBwb2QgaW5zdGFsbCBvZiBnUlBDIHJlbmFtZXMgc29tZSBDIGdSUEMgZmlsZXMiIFwKLSAgICAgICAgICAgICAiYW5kIG5vdCB0aGUgc2VydmVyJ3MgY29kZSByZWZlcmVuY2VzIHRvIHRoZW0uIgotICAgIGV4aXQgMQotfQorIyBjbGVhbiB0aGUgZGlyZWN0b3J5CitybSAtcmYgUG9kcworcm0gLXJmIFRlc3RzLnhjd29ya3NwYWNlCitybSAtZiBQb2RmaWxlLmxvY2sKK3JtIC1mIFJlbW90ZVRlc3RDbGllbnQvKi57aCxtfQogCiBwb2QgaW5zdGFsbApkaWZmIC0tZ2l0IGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL3J1bl90ZXN0cy5zaCBiL3NyYy9vYmplY3RpdmUtYy90ZXN0cy9ydW5fdGVzdHMuc2gKaW5kZXggYzRmYzU2NC4uYTI2NTE0OSAxMDA3NTUKLS0tIGEvc3JjL29iamVjdGl2ZS1jL3Rlc3RzL3J1bl90ZXN0cy5zaAorKysgYi9zcmMvb2JqZWN0aXZlLWMvdGVzdHMvcnVuX3Rlc3RzLnNoCkBAIC0zMSwxMyArMzEsMjEgQEAKICMgRG9uJ3QgcnVuIHRoaXMgc2NyaXB0IHN0YW5kYWxvbmUuIEluc3RlYWQsIHJ1biBmcm9tIHRoZSByZXBvc2l0b3J5IHJvb3Q6CiAjIC4vdG9vbHMvcnVuX3Rlc3RzL3J1bl90ZXN0cy5weSAtbCBvYmpjCiAKLXNldCAtZQorc2V0IC1ldgogCiBjZCAkKGRpcm5hbWUgJDApCiAKICMgUnVuIHRoZSB0ZXN0cyBzZXJ2ZXIuCi0uLi8uLi8uLi9iaW5zLyRDT05GSUcvaW50ZXJvcF9zZXJ2ZXIgLS1wb3J0PTUwNTAgJgotLi4vLi4vLi4vYmlucy8kQ09ORklHL2ludGVyb3Bfc2VydmVyIC0tcG9ydD01MDUxIC0tdXNlX3RscyAmCisKK0JJTkRJUj0uLi8uLi8uLi9iaW5zLyRDT05GSUcKKworWyAtZiAkQklORElSL2ludGVyb3Bfc2VydmVyIF0gfHwgeworICAgIGVjaG8gPiYyICJDYW4ndCBmaW5kIHRoZSB0ZXN0IHNlcnZlci4gTWFrZSBzdXJlIHJ1bl90ZXN0cy5weSBpcyBtYWtpbmciIFwKKyAgICAgICAgICAgICAiaW50ZXJvcF9zZXJ2ZXIgYmVmb3JlIGNhbGxpbmcgdGhpcyBzY3JpcHQuIgorICAgIGV4aXQgMQorfQorJEJJTkRJUi9pbnRlcm9wX3NlcnZlciAtLXBvcnQ9NTA1MCAmCiskQklORElSL2ludGVyb3Bfc2VydmVyIC0tcG9ydD01MDUxIC0tdXNlX3RscyAmCiAjIEtpbGwgdGhlbSB3aGVuIHRoaXMgc2NyaXB0IGV4aXRzLgogdHJhcCAna2lsbCAtOSBgam9icyAtcGAnIEVYSVQKIApkaWZmIC0tZ2l0IGEvc3JjL3BocC9SRUFETUUubWQgYi9zcmMvcGhwL1JFQURNRS5tZAppbmRleCA4YWJlZGM0Li43ZTk4MTliIDEwMDY0NAotLS0gYS9zcmMvcGhwL1JFQURNRS5tZAorKysgYi9zcmMvcGhwL1JFQURNRS5tZApAQCAtOSwyMyArOSwxMiBAQAogCiAjIyBFbnZpcm9ubWVudAogCi1QcmVyZXF1aXNpdGU6IGBwaHBgID49NS41LCBgcGhwaXplYCwgYHBlY2xgLCBgcGhwdW5pdGAKK1ByZXJlcXVpc2l0ZToKKyogYHBocGAgNS41IG9yIGFib3ZlLCA3LjAgb3IgYWJvdmUKKyogYHBlYXJgIGFuZCBgcGVjbGAKKyogYHBocHVuaXRgCiAKLSoqTGludXggKERlYmlhbik6KioKLQotYGBgc2gKLSQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgcGhwNSBwaHA1LWRldiBwaHAtcGVhcgotYGBgCi0KLSoqTGludXggKENlbnRPUyk6KioKLQotYGBgc2gKLSQgeXVtIGluc3RhbGwgcGhwNTV3Ci0kIHl1bSAtLWVuYWJsZXJlcG89cmVtaSxyZW1pLXBocDU1IGluc3RhbGwgcGhwLWRldmVsIHBocC1wZWFyCi1gYGAKLQotKipNYWMgT1MgWDoqKgotCisqKlBFQVI6KioKIGBgYHNoCiAkIGN1cmwgLU8gaHR0cDovL3BlYXIucGhwLm5ldC9nby1wZWFyLnBoYXIKICQgc3VkbyBwaHAgLWQgZGV0ZWN0X3VuaWNvZGU9MCBnby1wZWFyLnBoYXIKQEAgLTcyLDEzICs2MSw3IEBACiAKICMjIyBnUlBDIFBIUCBleHRlbnNpb24KIAotSW5zdGFsbCB0aGUgZ1JQQyBQSFAgZXh0ZW5zaW9uIGZyb20gUEVDTAotCi1gYGBzaAotJCBzdWRvIHBlY2wgaW5zdGFsbCBncnBjCi1gYGAKLQotT3IsIGNvbXBpbGUgZnJvbSBzb3VyY2UKK0NvbXBpbGUgdGhlIGdSUEMgUEhQIGV4dGVuc2lvbgogCiBgYGBzaAogJCBjZCBncnBjL3NyYy9waHAvZXh0L2dycGMKQEAgLTE0OCwxMiArMTMxLDggQEAKIFlvdSBuZWVkIHRvIGluc3RhbGwgYHByb3RvYy1nZW4tcGhwYCB0byBnZW5lcmF0ZSBzdHViIGNsYXNzIGAucGhwYCBmaWxlcyBmcm9tIHNlcnZpY2UgZGVmaW5pdGlvbiBgLnByb3RvYCBmaWxlcy4KIAogYGBgc2gKLSQgY2QgZ3JwYy9zcmMvcGhwL3ZlbmRvci9zdGFubGV5LWNoZXVuZy9wcm90b2J1Zi1waHAgIyBpZiB5b3UgaGFkIHJ1biBgY29tcG9zZXIgaW5zdGFsbGAgaW4gdGhlIHByZXZpb3VzIHN0ZXAKLQotT1IKLQotJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N0YW5sZXktY2hldW5nL1Byb3RvYnVmLVBIUCAjIGNsb25lIGZyb20gZ2l0aHViIHJlcG8KLQorJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N0YW5sZXktY2hldW5nL1Byb3RvYnVmLVBIUAorJCBjZCBQcm90b2J1Zi1QSFAKICQgZ2VtIGluc3RhbGwgcmFrZSByb25uCiAkIHJha2UgcGVhcjpwYWNrYWdlIHZlcnNpb249MS4wCiAkIHN1ZG8gcGVhciBpbnN0YWxsIFByb3RvYnVmLTEuMC50Z3oKQEAgLTE3NSw3ICsxNTQsNyBAQAogYGBgc2gKICQgY2QgZ3JwYwogJCBucG0gaW5zdGFsbAotJCBub2RlanMgc3JjL25vZGUvdGVzdC9tYXRoL21hdGhfc2VydmVyLmpzCiskIG5vZGUgc3JjL25vZGUvdGVzdC9tYXRoL21hdGhfc2VydmVyLmpzCiBgYGAKIAogIyMjIFJ1biB0ZXN0IGNsaWVudApAQCAtMjEyLDcgKzE5MSw3IEBACiBgYGBzaAogJCBjZCBncnBjCiAkIG5wbSBpbnN0YWxsCi0kIG5vZGVqcyBzcmMvbm9kZS90ZXN0L21hdGgvbWF0aF9zZXJ2ZXIuanMKKyQgbm9kZSBzcmMvbm9kZS90ZXN0L21hdGgvbWF0aF9zZXJ2ZXIuanMKIGBgYAogCiBNYWtlIHN1cmUgeW91IGhhdmUgcnVuIGBjb21wb3NlciBpbnN0YWxsYCB0byBnZW5lcmF0ZSB0aGUgYHZlbmRvci9hdXRvbG9hZC5waHBgIGZpbGUKQEAgLTI4Miw3ICsyNjEsNyBAQAogYGBgc2gKICQgY2QgZ3JwYwogJCBucG0gaW5zdGFsbAotJCBub2RlanMgc3JjL25vZGUvdGVzdC9tYXRoL21hdGhfc2VydmVyLmpzCiskIG5vZGUgc3JjL25vZGUvdGVzdC9tYXRoL21hdGhfc2VydmVyLmpzCiBgYGAKIAogTWFrZSBzdXJlIHlvdSBoYXZlIHJ1biBgY29tcG9zZXIgaW5zdGFsbGAgdG8gZ2VuZXJhdGUgdGhlIGB2ZW5kb3IvYXV0b2xvYWQucGhwYCBmaWxlCmRpZmYgLS1naXQgYS9zcmMvcGhwL2Jpbi9kZXRlcm1pbmVfZXh0ZW5zaW9uX2Rpci5zaCBiL3NyYy9waHAvYmluL2RldGVybWluZV9leHRlbnNpb25fZGlyLnNoCmluZGV4IGI0MzQyYWMuLmE1OTg4MjUgMTAwNzU1Ci0tLSBhL3NyYy9waHAvYmluL2RldGVybWluZV9leHRlbnNpb25fZGlyLnNoCisrKyBiL3NyYy9waHAvYmluL2RldGVybWluZV9leHRlbnNpb25fZGlyLnNoCkBAIC0yOSwxMSArMjksNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogc2V0IC1lCiBkZWZhdWx0X2V4dGVuc2lvbl9kaXI9JChwaHAtY29uZmlnIC0tZXh0ZW5zaW9uLWRpcikKLWlmIGNvbW1hbmQgLXYgYnJldyA+IC9kZXYvbnVsbCAmJiBcCi0gICBicmV3IGxzIC0tdmVyc2lvbnMgfCBncmVwIHBocDVbNTZdLWdycGMgPiAvZGV2L251bGw7IHRoZW4KLSAgIyB0aGUgZ3JwYyBwaHAgZXh0ZW5zaW9uIHdhcyBpbnN0YWxsZWQgYnkgaG9tZWJyZXcKLSAgOgotZWxpZiBbICEgLWUgJGRlZmF1bHRfZXh0ZW5zaW9uX2Rpci9ncnBjLnNvIF07IHRoZW4KK2lmIFsgISAtZSAkZGVmYXVsdF9leHRlbnNpb25fZGlyL2dycGMuc28gXTsgdGhlbgogICAjIHRoZSBncnBjIGV4dGVuc2lvbiBpcyBub3QgZm91bmQgaW4gdGhlIGRlZmF1bHQgUEhQIGV4dGVuc2lvbiBkaXIKICAgIyB0cnkgdGhlIHNvdXJjZSBtb2R1bGVzIGRpcmVjdG9yeQogICBtb2R1bGVfZGlyPS4uL2V4dC9ncnBjL21vZHVsZXMKZGlmZiAtLWdpdCBhL3NyYy9waHAvY29tcG9zZXIuanNvbiBiL3NyYy9waHAvY29tcG9zZXIuanNvbgppbmRleCA4ODQxODIwLi4xZWFjYzY0IDEwMDY0NAotLS0gYS9zcmMvcGhwL2NvbXBvc2VyLmpzb24KKysrIGIvc3JjL3BocC9jb21wb3Nlci5qc29uCkBAIC04LDcgKzgsOSBAQAogICAidmVyc2lvbiI6ICIxLjAuMCIsCiAgICJyZXF1aXJlIjogewogICAgICJwaHAiOiAiPj01LjUuMCIsCi0gICAgInN0YW5sZXktY2hldW5nL3Byb3RvYnVmLXBocCI6ICJ2MC42IiwKKyAgICAic3RhbmxleS1jaGV1bmcvcHJvdG9idWYtcGhwIjogInYwLjYiCisgIH0sCisgICJyZXF1aXJlLWRldiI6IHsKICAgICAiZ29vZ2xlL2F1dGgiOiAidjAuOSIKICAgfSwKICAgImF1dG9sb2FkIjogewpkaWZmIC0tZ2l0IGEvc3JjL3BocC9leHQvZ3JwYy9jYWxsLmMgYi9zcmMvcGhwL2V4dC9ncnBjL2NhbGwuYwppbmRleCBiZDFlY2NiLi42NmNhMTUxIDEwMDY0NAotLS0gYS9zcmMvcGhwL2V4dC9ncnBjL2NhbGwuYworKysgYi9zcmMvcGhwL2V4dC9ncnBjL2NhbGwuYwpAQCAtNTgsNjYgKzU4LDQ0IEBACiAjaW5jbHVkZSAiYnl0ZV9idWZmZXIuaCIKIAogemVuZF9jbGFzc19lbnRyeSAqZ3JwY19jZV9jYWxsOwotCi0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CisjaWYgUEhQX01BSk9SX1ZFUlNJT04gPj0gNworc3RhdGljIHplbmRfb2JqZWN0X2hhbmRsZXJzIGNhbGxfY2VfaGFuZGxlcnM7CisjZW5kaWYKIAogLyogRnJlZXMgYW5kIGRlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jYWxsICovCi12b2lkIGZyZWVfd3JhcHBlZF9ncnBjX2NhbGwodm9pZCAqb2JqZWN0IFRTUk1MU19EQykgewotICB3cmFwcGVkX2dycGNfY2FsbCAqY2FsbCA9ICh3cmFwcGVkX2dycGNfY2FsbCAqKW9iamVjdDsKLSAgaWYgKGNhbGwtPm93bmVkICYmIGNhbGwtPndyYXBwZWQgIT0gTlVMTCkgewotICAgIGdycGNfY2FsbF9kZXN0cm95KGNhbGwtPndyYXBwZWQpOworUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfU1RBUlQod3JhcHBlZF9ncnBjX2NhbGwpCisgIGlmIChwLT5vd25lZCAmJiBwLT53cmFwcGVkICE9IE5VTEwpIHsKKyAgICBncnBjX2NhbGxfZGVzdHJveShwLT53cmFwcGVkKTsKICAgfQotICB6ZW5kX29iamVjdF9zdGRfZHRvcigmY2FsbC0+c3RkIFRTUk1MU19DQyk7Ci0gIGVmcmVlKGNhbGwpOwotfQorUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfRU5EKCkKIAogLyogSW5pdGlhbGl6ZXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NhbGwgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIG9iamVjdAogICogb2YgYSBjbGFzcyBzcGVjaWZpZWQgYnkgY2xhc3NfdHlwZSAqLwotemVuZF9vYmplY3RfdmFsdWUgY3JlYXRlX3dyYXBwZWRfZ3JwY19jYWxsKHplbmRfY2xhc3NfZW50cnkgKmNsYXNzX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNSTUxTX0RDKSB7Ci0gIHplbmRfb2JqZWN0X3ZhbHVlIHJldHZhbDsKLSAgd3JhcHBlZF9ncnBjX2NhbGwgKmludGVybjsKLQotICBpbnRlcm4gPSAod3JhcHBlZF9ncnBjX2NhbGwgKillbWFsbG9jKHNpemVvZih3cmFwcGVkX2dycGNfY2FsbCkpOwotICBtZW1zZXQoaW50ZXJuLCAwLCBzaXplb2Yod3JhcHBlZF9ncnBjX2NhbGwpKTsKLQorcGhwX2dycGNfemVuZF9vYmplY3QgY3JlYXRlX3dyYXBwZWRfZ3JwY19jYWxsKHplbmRfY2xhc3NfZW50cnkgKmNsYXNzX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU1JNTFNfREMpIHsKKyAgUEhQX0dSUENfQUxMT0NfQ0xBU1NfT0JKRUNUKHdyYXBwZWRfZ3JwY19jYWxsKTsKICAgemVuZF9vYmplY3Rfc3RkX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlIFRTUk1MU19DQyk7CiAgIG9iamVjdF9wcm9wZXJ0aWVzX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLSAgcmV0dmFsLmhhbmRsZSA9IHplbmRfb2JqZWN0c19zdG9yZV9wdXQoCi0gICAgICBpbnRlcm4sICh6ZW5kX29iamVjdHNfc3RvcmVfZHRvcl90KXplbmRfb2JqZWN0c19kZXN0cm95X29iamVjdCwKLSAgICAgIGZyZWVfd3JhcHBlZF9ncnBjX2NhbGwsIE5VTEwgVFNSTUxTX0NDKTsKLSAgcmV0dmFsLmhhbmRsZXJzID0gemVuZF9nZXRfc3RkX29iamVjdF9oYW5kbGVycygpOwotICByZXR1cm4gcmV0dmFsOwotfQotCi0vKiBXcmFwcyBhIGdycGNfY2FsbCBzdHJ1Y3QgaW4gYSBQSFAgb2JqZWN0LiBPd25lZCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgc3RydWN0Ci0gICBzaG91bGQgYmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgdGhlIG9iamVjdCdzIGxpZmVjeWNsZSAqLwotenZhbCAqZ3JwY19waHBfd3JhcF9jYWxsKGdycGNfY2FsbCAqd3JhcHBlZCwgYm9vbCBvd25lZCBUU1JNTFNfREMpIHsKLSAgenZhbCAqY2FsbF9vYmplY3Q7Ci0gIE1BS0VfU1REX1pWQUwoY2FsbF9vYmplY3QpOwotICBvYmplY3RfaW5pdF9leChjYWxsX29iamVjdCwgZ3JwY19jZV9jYWxsKTsKLSAgd3JhcHBlZF9ncnBjX2NhbGwgKmNhbGwgPQotICAgICAgKHdyYXBwZWRfZ3JwY19jYWxsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdChjYWxsX29iamVjdCBUU1JNTFNfQ0MpOwotICBjYWxsLT53cmFwcGVkID0gd3JhcHBlZDsKLSAgY2FsbC0+b3duZWQgPSBvd25lZDsKLSAgcmV0dXJuIGNhbGxfb2JqZWN0OworICBQSFBfR1JQQ19GUkVFX0NMQVNTX09CSkVDVCh3cmFwcGVkX2dycGNfY2FsbCwgY2FsbF9jZV9oYW5kbGVycyk7CiB9CiAKIC8qIENyZWF0ZXMgYW5kIHJldHVybnMgYSBQSFAgYXJyYXkgb2JqZWN0IHdpdGggdGhlIGRhdGEgaW4gYQogICogZ3JwY19tZXRhZGF0YV9hcnJheS4gUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUgKi8KLXp2YWwgKmdycGNfcGFyc2VfbWV0YWRhdGFfYXJyYXkoZ3JwY19tZXRhZGF0YV9hcnJheSAqbWV0YWRhdGFfYXJyYXkgVFNSTUxTX0RDKSB7Cit6dmFsICpncnBjX3BhcnNlX21ldGFkYXRhX2FycmF5KGdycGNfbWV0YWRhdGFfYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1ldGFkYXRhX2FycmF5IFRTUk1MU19EQykgewogICBpbnQgY291bnQgPSBtZXRhZGF0YV9hcnJheS0+Y291bnQ7CiAgIGdycGNfbWV0YWRhdGEgKmVsZW1lbnRzID0gbWV0YWRhdGFfYXJyYXktPm1ldGFkYXRhOwotICBpbnQgaTsKICAgenZhbCAqYXJyYXk7Ci0gIHp2YWwgKipkYXRhID0gTlVMTDsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChhcnJheSk7CisgIGFycmF5X2luaXQoYXJyYXkpOworICBpbnQgaTsKICAgSGFzaFRhYmxlICphcnJheV9oYXNoOwogICB6dmFsICppbm5lcl9hcnJheTsKICAgY2hhciAqc3RyX2tleTsKICAgY2hhciAqc3RyX3ZhbDsKICAgc2l6ZV90IGtleV9sZW47Ci0gIE1BS0VfU1REX1pWQUwoYXJyYXkpOwotICBhcnJheV9pbml0KGFycmF5KTsKKyAgenZhbCAqZGF0YSA9IE5VTEw7CisKICAgYXJyYXlfaGFzaCA9IFpfQVJSVkFMX1AoYXJyYXkpOwogICBncnBjX21ldGFkYXRhICplbGVtOwogICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewpAQCAtMTI3LDkgKzEwNSw5IEBACiAgICAgbWVtY3B5KHN0cl9rZXksIGVsZW0tPmtleSwga2V5X2xlbik7CiAgICAgc3RyX3ZhbCA9IGVjYWxsb2MoZWxlbS0+dmFsdWVfbGVuZ3RoICsgMSwgc2l6ZW9mKGNoYXIpKTsKICAgICBtZW1jcHkoc3RyX3ZhbCwgZWxlbS0+dmFsdWUsIGVsZW0tPnZhbHVlX2xlbmd0aCk7Ci0gICAgaWYgKHplbmRfaGFzaF9maW5kKGFycmF5X2hhc2gsIHN0cl9rZXksIGtleV9sZW4sICh2b2lkICoqKWRhdGEpID09Ci0gICAgICAgIFNVQ0NFU1MpIHsKLSAgICAgIGlmIChaX1RZUEVfUCgqZGF0YSkgIT0gSVNfQVJSQVkpIHsKKyAgICBpZiAocGhwX2dycGNfemVuZF9oYXNoX2ZpbmQoYXJyYXlfaGFzaCwgc3RyX2tleSwga2V5X2xlbiwgKHZvaWQgKiopJmRhdGEpCisgICAgICAgID09IFNVQ0NFU1MpIHsKKyAgICAgIGlmIChaX1RZUEVfUChkYXRhKSAhPSBJU19BUlJBWSkgewogICAgICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbih6ZW5kX2V4Y2VwdGlvbl9nZXRfZGVmYXVsdChUU1JNTFNfQyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXRhZGF0YSBoYXNoIHNvbWVob3cgY29udGFpbnMgd3JvbmcgdHlwZXMuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSBUU1JNTFNfQ0MpOwpAQCAtMTM3LDExICsxMTUsMTMgQEAKICAgICAgICAgZWZyZWUoc3RyX3ZhbCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgfQotICAgICAgYWRkX25leHRfaW5kZXhfc3RyaW5nbCgqZGF0YSwgc3RyX3ZhbCwgZWxlbS0+dmFsdWVfbGVuZ3RoLCBmYWxzZSk7CisgICAgICBwaHBfZ3JwY19hZGRfbmV4dF9pbmRleF9zdHJpbmdsKGRhdGEsIHN0cl92YWwsIGVsZW0tPnZhbHVlX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogICAgIH0gZWxzZSB7Ci0gICAgICBNQUtFX1NURF9aVkFMKGlubmVyX2FycmF5KTsKKyAgICAgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwoaW5uZXJfYXJyYXkpOwogICAgICAgYXJyYXlfaW5pdChpbm5lcl9hcnJheSk7Ci0gICAgICBhZGRfbmV4dF9pbmRleF9zdHJpbmdsKGlubmVyX2FycmF5LCBzdHJfdmFsLCBlbGVtLT52YWx1ZV9sZW5ndGgsIGZhbHNlKTsKKyAgICAgIHBocF9ncnBjX2FkZF9uZXh0X2luZGV4X3N0cmluZ2woaW5uZXJfYXJyYXksIHN0cl92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0tPnZhbHVlX2xlbmd0aCwgZmFsc2UpOwogICAgICAgYWRkX2Fzc29jX3p2YWwoYXJyYXksIHN0cl9rZXksIGlubmVyX2FycmF5KTsKICAgICB9CiAgIH0KQEAgLTE1MSwxODUgKzEzMSw2NCBAQAogLyogUG9wdWxhdGVzIGEgZ3JwY19tZXRhZGF0YV9hcnJheSB3aXRoIHRoZSBkYXRhIGluIGEgUEhQIGFycmF5IG9iamVjdC4KICAgIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzIGFuZCBmYWxzZSBvbiBmYWlsdXJlICovCiBib29sIGNyZWF0ZV9tZXRhZGF0YV9hcnJheSh6dmFsICphcnJheSwgZ3JwY19tZXRhZGF0YV9hcnJheSAqbWV0YWRhdGEpIHsKLSAgenZhbCAqKmlubmVyX2FycmF5OwotICB6dmFsICoqdmFsdWU7CiAgIEhhc2hUYWJsZSAqYXJyYXlfaGFzaDsKLSAgSGFzaFBvc2l0aW9uIGFycmF5X3BvaW50ZXI7CiAgIEhhc2hUYWJsZSAqaW5uZXJfYXJyYXlfaGFzaDsKLSAgSGFzaFBvc2l0aW9uIGlubmVyX2FycmF5X3BvaW50ZXI7Ci0gIGNoYXIgKmtleTsKLSAgdWludCBrZXlfbGVuOwotICB1bG9uZyBpbmRleDsKKyAgenZhbCAqdmFsdWU7CisgIHp2YWwgKmlubmVyX2FycmF5OwogICBpZiAoWl9UWVBFX1AoYXJyYXkpICE9IElTX0FSUkFZKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdChtZXRhZGF0YSk7CiAgIGFycmF5X2hhc2ggPSBaX0FSUlZBTF9QKGFycmF5KTsKLSAgZm9yICh6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldF9leChhcnJheV9oYXNoLCAmYXJyYXlfcG9pbnRlcik7Ci0gICAgICAgemVuZF9oYXNoX2dldF9jdXJyZW50X2RhdGFfZXgoYXJyYXlfaGFzaCwgKHZvaWQqKikmaW5uZXJfYXJyYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFycmF5X3BvaW50ZXIpID09IFNVQ0NFU1M7Ci0gICAgICAgemVuZF9oYXNoX21vdmVfZm9yd2FyZF9leChhcnJheV9oYXNoLCAmYXJyYXlfcG9pbnRlcikpIHsKLSAgICBpZiAoemVuZF9oYXNoX2dldF9jdXJyZW50X2tleV9leChhcnJheV9oYXNoLCAma2V5LCAma2V5X2xlbiwgJmluZGV4LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheV9wb2ludGVyKSAhPSBIQVNIX0tFWV9JU19TVFJJTkcpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKFpfVFlQRV9QKCppbm5lcl9hcnJheSkgIT0gSVNfQVJSQVkpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaW5uZXJfYXJyYXlfaGFzaCA9IFpfQVJSVkFMX1AoKmlubmVyX2FycmF5KTsKLSAgICBtZXRhZGF0YS0+Y2FwYWNpdHkgKz0gemVuZF9oYXNoX251bV9lbGVtZW50cyhpbm5lcl9hcnJheV9oYXNoKTsKLSAgfQotICBtZXRhZGF0YS0+bWV0YWRhdGEgPSBncHJfbWFsbG9jKG1ldGFkYXRhLT5jYXBhY2l0eSAqIHNpemVvZihncnBjX21ldGFkYXRhKSk7Ci0gIGZvciAoemVuZF9oYXNoX2ludGVybmFsX3BvaW50ZXJfcmVzZXRfZXgoYXJyYXlfaGFzaCwgJmFycmF5X3BvaW50ZXIpOwotICAgICAgIHplbmRfaGFzaF9nZXRfY3VycmVudF9kYXRhX2V4KGFycmF5X2hhc2gsICh2b2lkKiopJmlubmVyX2FycmF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheV9wb2ludGVyKSA9PSBTVUNDRVNTOwotICAgICAgIHplbmRfaGFzaF9tb3ZlX2ZvcndhcmRfZXgoYXJyYXlfaGFzaCwgJmFycmF5X3BvaW50ZXIpKSB7Ci0gICAgaWYgKHplbmRfaGFzaF9nZXRfY3VycmVudF9rZXlfZXgoYXJyYXlfaGFzaCwgJmtleSwgJmtleV9sZW4sICZpbmRleCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJyYXlfcG9pbnRlcikgIT0gSEFTSF9LRVlfSVNfU1RSSU5HKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlubmVyX2FycmF5X2hhc2ggPSBaX0FSUlZBTF9QKCppbm5lcl9hcnJheSk7Ci0gICAgZm9yICh6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldF9leChpbm5lcl9hcnJheV9oYXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlubmVyX2FycmF5X3BvaW50ZXIpOwotICAgICAgICAgemVuZF9oYXNoX2dldF9jdXJyZW50X2RhdGFfZXgoaW5uZXJfYXJyYXlfaGFzaCwgKHZvaWQqKikmdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5uZXJfYXJyYXlfcG9pbnRlcikgPT0gU1VDQ0VTUzsKLSAgICAgICAgIHplbmRfaGFzaF9tb3ZlX2ZvcndhcmRfZXgoaW5uZXJfYXJyYXlfaGFzaCwgJmlubmVyX2FycmF5X3BvaW50ZXIpKSB7Ci0gICAgICBpZiAoWl9UWVBFX1AoKnZhbHVlKSAhPSBJU19TVFJJTkcpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgbWV0YWRhdGEtPm1ldGFkYXRhW21ldGFkYXRhLT5jb3VudF0ua2V5ID0ga2V5OwotICAgICAgbWV0YWRhdGEtPm1ldGFkYXRhW21ldGFkYXRhLT5jb3VudF0udmFsdWUgPSBaX1NUUlZBTF9QKCp2YWx1ZSk7Ci0gICAgICBtZXRhZGF0YS0+bWV0YWRhdGFbbWV0YWRhdGEtPmNvdW50XS52YWx1ZV9sZW5ndGggPSBaX1NUUkxFTl9QKCp2YWx1ZSk7Ci0gICAgICBtZXRhZGF0YS0+Y291bnQgKz0gMTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19CiAKLSNlbHNlCi0KLXN0YXRpYyB6ZW5kX29iamVjdF9oYW5kbGVycyBjYWxsX2NlX2hhbmRsZXJzOwotCi0vKiBGcmVlcyBhbmQgZGVzdHJveXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NhbGwgKi8KLXN0YXRpYyB2b2lkIGZyZWVfd3JhcHBlZF9ncnBjX2NhbGwoemVuZF9vYmplY3QgKm9iamVjdCkgewotICB3cmFwcGVkX2dycGNfY2FsbCAqY2FsbCA9IHdyYXBwZWRfZ3JwY19jYWxsX2Zyb21fb2JqKG9iamVjdCk7Ci0gIGlmIChjYWxsLT5vd25lZCAmJiBjYWxsLT53cmFwcGVkICE9IE5VTEwpIHsKLSAgICBncnBjX2NhbGxfZGVzdHJveShjYWxsLT53cmFwcGVkKTsKLSAgfQotICB6ZW5kX29iamVjdF9zdGRfZHRvcigmY2FsbC0+c3RkKTsKLX0KLQotLyogSW5pdGlhbGl6ZXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NhbGwgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuCi0gKiBvYmplY3Qgb2YgYSBjbGFzcyBzcGVjaWZpZWQgYnkgY2xhc3NfdHlwZSAqLwotemVuZF9vYmplY3QgKmNyZWF0ZV93cmFwcGVkX2dycGNfY2FsbCh6ZW5kX2NsYXNzX2VudHJ5ICpjbGFzc190eXBlKSB7Ci0gIHdyYXBwZWRfZ3JwY19jYWxsICppbnRlcm47Ci0gIGludGVybiA9IGVjYWxsb2MoMSwgc2l6ZW9mKHdyYXBwZWRfZ3JwY19jYWxsKSArCi0gICAgICAgICAgICAgICAgICAgemVuZF9vYmplY3RfcHJvcGVydGllc19zaXplKGNsYXNzX3R5cGUpKTsKLSAgemVuZF9vYmplY3Rfc3RkX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLSAgb2JqZWN0X3Byb3BlcnRpZXNfaW5pdCgmaW50ZXJuLT5zdGQsIGNsYXNzX3R5cGUpOwotICBpbnRlcm4tPnN0ZC5oYW5kbGVycyA9ICZjYWxsX2NlX2hhbmRsZXJzOwotICByZXR1cm4gJmludGVybi0+c3RkOwotfQotCi0vKiBXcmFwcyBhIGdycGNfY2FsbCBzdHJ1Y3QgaW4gYSBQSFAgb2JqZWN0LiBPd25lZCBpbmRpY2F0ZXMgd2hldGhlciB0aGUKLSAgIHN0cnVjdCBzaG91bGQgYmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgdGhlIG9iamVjdCdzIGxpZmVjeWNsZSAqLwotdm9pZCBncnBjX3BocF93cmFwX2NhbGwoZ3JwY19jYWxsICp3cmFwcGVkLCBib29sIG93bmVkLCB6dmFsICpjYWxsX29iamVjdCkgewotICBvYmplY3RfaW5pdF9leChjYWxsX29iamVjdCwgZ3JwY19jZV9jYWxsKTsKLSAgd3JhcHBlZF9ncnBjX2NhbGwgKmNhbGwgPSBaX1dSQVBQRURfR1JQQ19DQUxMX1AoY2FsbF9vYmplY3QpOwotICBjYWxsLT53cmFwcGVkID0gd3JhcHBlZDsKLSAgY2FsbC0+b3duZWQgPSBvd25lZDsKLX0KLQotLyogQ3JlYXRlcyBhbmQgcmV0dXJucyBhIFBIUCBhcnJheSBvYmplY3Qgd2l0aCB0aGUgZGF0YSBpbiBhCi0gKiBncnBjX21ldGFkYXRhX2FycmF5LiBSZXR1cm5zIE5VTEwgb24gZmFpbHVyZSAqLwotdm9pZCBncnBjX3BhcnNlX21ldGFkYXRhX2FycmF5KGdycGNfbWV0YWRhdGFfYXJyYXkgKm1ldGFkYXRhX2FycmF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp2YWwgKmFycmF5KSB7Ci0gIGludCBjb3VudCA9IG1ldGFkYXRhX2FycmF5LT5jb3VudDsKLSAgZ3JwY19tZXRhZGF0YSAqZWxlbWVudHMgPSBtZXRhZGF0YV9hcnJheS0+bWV0YWRhdGE7Ci0gIGludCBpOwotICB6dmFsICpkYXRhOwotICBIYXNoVGFibGUgKmFycmF5X2hhc2g7Ci0gIHp2YWwgaW5uZXJfYXJyYXk7Ci0gIGNoYXIgKnN0cl9rZXk7Ci0gIGNoYXIgKnN0cl92YWw7Ci0gIHNpemVfdCBrZXlfbGVuOwotCi0gIGFycmF5X2luaXQoYXJyYXkpOwotICBhcnJheV9oYXNoID0gSEFTSF9PRihhcnJheSk7Ci0gIGdycGNfbWV0YWRhdGEgKmVsZW07Ci0gIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgZWxlbSA9ICZlbGVtZW50c1tpXTsKLSAgICBrZXlfbGVuID0gc3RybGVuKGVsZW0tPmtleSk7Ci0gICAgc3RyX2tleSA9IGVjYWxsb2Moa2V5X2xlbiArIDEsIHNpemVvZihjaGFyKSk7Ci0gICAgbWVtY3B5KHN0cl9rZXksIGVsZW0tPmtleSwga2V5X2xlbik7Ci0gICAgc3RyX3ZhbCA9IGVjYWxsb2MoZWxlbS0+dmFsdWVfbGVuZ3RoICsgMSwgc2l6ZW9mKGNoYXIpKTsKLSAgICBtZW1jcHkoc3RyX3ZhbCwgZWxlbS0+dmFsdWUsIGVsZW0tPnZhbHVlX2xlbmd0aCk7Ci0gICAgaWYgKChkYXRhID0gemVuZF9oYXNoX3N0cl9maW5kKGFycmF5X2hhc2gsIHN0cl9rZXksIGtleV9sZW4pKSAhPSBOVUxMKSB7Ci0gICAgICBpZiAoWl9UWVBFX1AoZGF0YSkgIT0gSVNfQVJSQVkpIHsKLSAgICAgICAgemVuZF90aHJvd19leGNlcHRpb24oemVuZF9leGNlcHRpb25fZ2V0X2RlZmF1bHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ldGFkYXRhIGhhc2ggc29tZWhvdyBjb250YWlucyB3cm9uZyB0eXBlcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKLSAgICAgICAgZWZyZWUoc3RyX2tleSk7Ci0gICAgICAgIGVmcmVlKHN0cl92YWwpOwotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBhZGRfbmV4dF9pbmRleF9zdHJpbmdsKGRhdGEsIHN0cl92YWwsIGVsZW0tPnZhbHVlX2xlbmd0aCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGFycmF5X2luaXQoJmlubmVyX2FycmF5KTsKLSAgICAgIGFkZF9uZXh0X2luZGV4X3N0cmluZ2woJmlubmVyX2FycmF5LCBzdHJfdmFsLCBlbGVtLT52YWx1ZV9sZW5ndGgpOwotICAgICAgYWRkX2Fzc29jX3p2YWwoYXJyYXksIHN0cl9rZXksICZpbm5lcl9hcnJheSk7Ci0gICAgfQotICB9Ci19Ci0KLS8qIFBvcHVsYXRlcyBhIGdycGNfbWV0YWRhdGFfYXJyYXkgd2l0aCB0aGUgZGF0YSBpbiBhIFBIUCBhcnJheSBvYmplY3QuCi0gICBSZXR1cm5zIHRydWUgb24gc3VjY2VzcyBhbmQgZmFsc2Ugb24gZmFpbHVyZSAqLwotYm9vbCBjcmVhdGVfbWV0YWRhdGFfYXJyYXkoenZhbCAqYXJyYXksIGdycGNfbWV0YWRhdGFfYXJyYXkgKm1ldGFkYXRhKSB7Ci0gIHp2YWwgKmlubmVyX2FycmF5OwotICB6dmFsICp2YWx1ZTsKLSAgSGFzaFRhYmxlICphcnJheV9oYXNoOwotICBIYXNoVGFibGUgKmlubmVyX2FycmF5X2hhc2g7Ci0gIHplbmRfc3RyaW5nICprZXk7Ci0gIGlmIChaX1RZUEVfUChhcnJheSkgIT0gSVNfQVJSQVkpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgZ3JwY19tZXRhZGF0YV9hcnJheV9pbml0KG1ldGFkYXRhKTsKLSAgYXJyYXlfaGFzaCA9IEhBU0hfT0YoYXJyYXkpOwotCi0gIFpFTkRfSEFTSF9GT1JFQUNIX1NUUl9LRVlfVkFMKGFycmF5X2hhc2gsIGtleSwgaW5uZXJfYXJyYXkpIHsKLSAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgY2hhciAqa2V5OworICBpbnQga2V5X3R5cGU7CisgIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9TVFJfS0VZX1ZBTF9TVEFSVChhcnJheV9oYXNoLCBrZXksIGtleV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfYXJyYXkpCisgICAgaWYgKGtleV90eXBlICE9IEhBU0hfS0VZX0lTX1NUUklORyB8fCBrZXkgPT0gTlVMTCkgewogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoWl9UWVBFX1AoaW5uZXJfYXJyYXkpICE9IElTX0FSUkFZKSB7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlubmVyX2FycmF5X2hhc2ggPSBIQVNIX09GKGlubmVyX2FycmF5KTsKKyAgICBpbm5lcl9hcnJheV9oYXNoID0gWl9BUlJWQUxfUChpbm5lcl9hcnJheSk7CiAgICAgbWV0YWRhdGEtPmNhcGFjaXR5ICs9IHplbmRfaGFzaF9udW1fZWxlbWVudHMoaW5uZXJfYXJyYXlfaGFzaCk7Ci0gIH0KLSAgWkVORF9IQVNIX0ZPUkVBQ0hfRU5EKCk7CisgIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9FTkQoKQogCiAgIG1ldGFkYXRhLT5tZXRhZGF0YSA9IGdwcl9tYWxsb2MobWV0YWRhdGEtPmNhcGFjaXR5ICogc2l6ZW9mKGdycGNfbWV0YWRhdGEpKTsKIAotICBaRU5EX0hBU0hfRk9SRUFDSF9TVFJfS0VZX1ZBTChhcnJheV9oYXNoLCBrZXksIGlubmVyX2FycmF5KSB7Ci0gICAgaWYgKGtleSA9PSBOVUxMKSB7CisgIGNoYXIgKmtleTEgPSBOVUxMOworICBpbnQga2V5X3R5cGUxOworICBQSFBfR1JQQ19IQVNIX0ZPUkVBQ0hfU1RSX0tFWV9WQUxfU1RBUlQoYXJyYXlfaGFzaCwga2V5MSwga2V5X3R5cGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfYXJyYXkpCisgICAgaWYgKGtleV90eXBlMSAhPSBIQVNIX0tFWV9JU19TVFJJTkcpIHsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaW5uZXJfYXJyYXlfaGFzaCA9IEhBU0hfT0YoaW5uZXJfYXJyYXkpOwotCi0gICAgWkVORF9IQVNIX0ZPUkVBQ0hfVkFMKGlubmVyX2FycmF5X2hhc2gsIHZhbHVlKSB7CisgICAgaW5uZXJfYXJyYXlfaGFzaCA9IFpfQVJSVkFMX1AoaW5uZXJfYXJyYXkpOworICAgIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9WQUxfU1RBUlQoaW5uZXJfYXJyYXlfaGFzaCwgdmFsdWUpCiAgICAgICBpZiAoWl9UWVBFX1AodmFsdWUpICE9IElTX1NUUklORykgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICB9Ci0gICAgICBtZXRhZGF0YS0+bWV0YWRhdGFbbWV0YWRhdGEtPmNvdW50XS5rZXkgPSBaU1RSX1ZBTChrZXkpOworICAgICAgbWV0YWRhdGEtPm1ldGFkYXRhW21ldGFkYXRhLT5jb3VudF0ua2V5ID0ga2V5MTsKICAgICAgIG1ldGFkYXRhLT5tZXRhZGF0YVttZXRhZGF0YS0+Y291bnRdLnZhbHVlID0gWl9TVFJWQUxfUCh2YWx1ZSk7CiAgICAgICBtZXRhZGF0YS0+bWV0YWRhdGFbbWV0YWRhdGEtPmNvdW50XS52YWx1ZV9sZW5ndGggPSBaX1NUUkxFTl9QKHZhbHVlKTsKICAgICAgIG1ldGFkYXRhLT5jb3VudCArPSAxOwotICAgIH0gWkVORF9IQVNIX0ZPUkVBQ0hfRU5EKCk7Ci0gIH0gWkVORF9IQVNIX0ZPUkVBQ0hfRU5EKCk7CisgICAgUEhQX0dSUENfSEFTSF9GT1JFQUNIX0VORCgpCisgIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9FTkQoKQogICByZXR1cm4gdHJ1ZTsKIH0KIAotI2VuZGlmCisvKiBXcmFwcyBhIGdycGNfY2FsbCBzdHJ1Y3QgaW4gYSBQSFAgb2JqZWN0LiBPd25lZCBpbmRpY2F0ZXMgd2hldGhlciB0aGUKKyAgIHN0cnVjdCBzaG91bGQgYmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgdGhlIG9iamVjdCdzIGxpZmVjeWNsZSAqLworenZhbCAqZ3JwY19waHBfd3JhcF9jYWxsKGdycGNfY2FsbCAqd3JhcHBlZCwgYm9vbCBvd25lZCBUU1JNTFNfREMpIHsKKyAgenZhbCAqY2FsbF9vYmplY3Q7CisgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwoY2FsbF9vYmplY3QpOworICBvYmplY3RfaW5pdF9leChjYWxsX29iamVjdCwgZ3JwY19jZV9jYWxsKTsKKyAgd3JhcHBlZF9ncnBjX2NhbGwgKmNhbGwgPSBaX1dSQVBQRURfR1JQQ19DQUxMX1AoY2FsbF9vYmplY3QpOworICBjYWxsLT53cmFwcGVkID0gd3JhcHBlZDsKKyAgY2FsbC0+b3duZWQgPSBvd25lZDsKKyAgcmV0dXJuIGNhbGxfb2JqZWN0OworfQogCiAvKioKICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIENhbGwgY2xhc3MuCkBAIC0zNDEsMTggKzIwMCwxMSBAQAogUEhQX01FVEhPRChDYWxsLCBfX2NvbnN0cnVjdCkgewogICB6dmFsICpjaGFubmVsX29iajsKICAgY2hhciAqbWV0aG9kOworICBwaHBfZ3JwY19pbnQgbWV0aG9kX2xlbjsKICAgenZhbCAqZGVhZGxpbmVfb2JqOwogICBjaGFyICpob3N0X292ZXJyaWRlID0gTlVMTDsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgaW50IG1ldGhvZF9sZW47Ci0gIGludCBob3N0X292ZXJyaWRlX2xlbiA9IDA7Ci0gIHdyYXBwZWRfZ3JwY19jYWxsICpjYWxsID0KLSAgICAgICh3cmFwcGVkX2dycGNfY2FsbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoZ2V0VGhpcygpIFRTUk1MU19DQyk7Ci0jZWxzZQotICBzaXplX3QgbWV0aG9kX2xlbjsKLSAgc2l6ZV90IGhvc3Rfb3ZlcnJpZGVfbGVuID0gMDsKKyAgcGhwX2dycGNfaW50IGhvc3Rfb3ZlcnJpZGVfbGVuID0gMDsKICAgd3JhcHBlZF9ncnBjX2NhbGwgKmNhbGwgPSBaX1dSQVBQRURfR1JQQ19DQUxMX1AoZ2V0VGhpcygpKTsKLSNlbmRpZgogCiAgIC8qICJPc098cyIgPT0gMSBPYmplY3QsIDEgc3RyaW5nLCAxIE9iamVjdCwgMSBvcHRpb25hbCBzdHJpbmcgKi8KICAgaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAiT3NPfHMiLCAmY2hhbm5lbF9vYmosCkBAIC0zNjQsMTMgKzIxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIG9wdGlvbmFsIFN0cmluZyIsIDEgVFNSTUxTX0NDKTsKICAgICByZXR1cm47CiAgIH0KLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPQotICAgICAgKHdyYXBwZWRfZ3JwY19jaGFubmVsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdCgKLSAgICAgICAgICBjaGFubmVsX29iaiBUU1JNTFNfQ0MpOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPSBaX1dSQVBQRURfR1JQQ19DSEFOTkVMX1AoY2hhbm5lbF9vYmopOwotI2VuZGlmCiAgIGlmIChjaGFubmVsLT53cmFwcGVkID09IE5VTEwpIHsKICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCBmcm9tIGEgY2xvc2VkIENoYW5uZWwiLApAQCAtMzc4LDEzICsyMjQsNyBAQAogICAgIHJldHVybjsKICAgfQogICBhZGRfcHJvcGVydHlfenZhbChnZXRUaGlzKCksICJjaGFubmVsIiwgY2hhbm5lbF9vYmopOwotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqZGVhZGxpbmUgPQotICAgICAgKHdyYXBwZWRfZ3JwY190aW1ldmFsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdCgKLSAgICAgICAgICBkZWFkbGluZV9vYmogVFNSTUxTX0NDKTsKLSNlbHNlCiAgIHdyYXBwZWRfZ3JwY190aW1ldmFsICpkZWFkbGluZSA9IFpfV1JBUFBFRF9HUlBDX1RJTUVWQUxfUChkZWFkbGluZV9vYmopOwotI2VuZGlmCiAgIGNhbGwtPndyYXBwZWQgPQogICAgIGdycGNfY2hhbm5lbF9jcmVhdGVfY2FsbChjaGFubmVsLT53cmFwcGVkLCBOVUxMLCBHUlBDX1BST1BBR0FURV9ERUZBVUxUUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbl9xdWV1ZSwgbWV0aG9kLCBob3N0X292ZXJyaWRlLApAQCAtMzk4LDMyICsyMzgsMTggQEAKICAqIEByZXR1cm4gb2JqZWN0IE9iamVjdCB3aXRoIHJlc3VsdHMgb2YgYWxsIGFjdGlvbnMKICAqLwogUEhQX01FVEhPRChDYWxsLCBzdGFydEJhdGNoKSB7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIHdyYXBwZWRfZ3JwY19jYWxsICpjYWxsID0KLSAgICAgICh3cmFwcGVkX2dycGNfY2FsbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoZ2V0VGhpcygpIFRTUk1MU19DQyk7Ci0gIHp2YWwgKip2YWx1ZTsKLSAgenZhbCAqKmlubmVyX3ZhbHVlOwotICBIYXNoUG9zaXRpb24gYXJyYXlfcG9pbnRlcjsKLSAgenZhbCAqKm1lc3NhZ2VfdmFsdWU7Ci0gIHp2YWwgKiptZXNzYWdlX2ZsYWdzOwotICBjaGFyICprZXk7Ci0gIHVpbnQga2V5X2xlbjsKLSAgdWxvbmcgaW5kZXg7CiAgIHp2YWwgKnJlc3VsdDsKLSAgenZhbCAqcmVjdl9zdGF0dXM7Ci0gIE1BS0VfU1REX1pWQUwocmVzdWx0KTsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChyZXN1bHQpOwogICBvYmplY3RfaW5pdChyZXN1bHQpOwotI2Vsc2UKLSAgd3JhcHBlZF9ncnBjX2NhbGwgKmNhbGwgPSBaX1dSQVBQRURfR1JQQ19DQUxMX1AoZ2V0VGhpcygpKTsKKyAgcGhwX2dycGNfdWxvbmcgaW5kZXg7CisgIHp2YWwgKnJlY3Zfc3RhdHVzOworICBQSFBfR1JQQ19NQUtFX1NURF9aVkFMKHJlY3Zfc3RhdHVzKTsKKyAgb2JqZWN0X2luaXQocmVjdl9zdGF0dXMpOwogICB6dmFsICp2YWx1ZTsKICAgenZhbCAqaW5uZXJfdmFsdWU7CiAgIHp2YWwgKm1lc3NhZ2VfdmFsdWU7CiAgIHp2YWwgKm1lc3NhZ2VfZmxhZ3M7Ci0gIHplbmRfc3RyaW5nICprZXk7Ci0gIHplbmRfdWxvbmcgaW5kZXg7Ci0gIHp2YWwgcmVjdl9zdGF0dXM7Ci0gIG9iamVjdF9pbml0KHJldHVybl92YWx1ZSk7Ci0jZW5kaWYKKyAgd3JhcHBlZF9ncnBjX2NhbGwgKmNhbGwgPSBaX1dSQVBQRURfR1JQQ19DQUxMX1AoZ2V0VGhpcygpKTsKICAgCiAgIGdycGNfb3Agb3BzWzhdOwogICBzaXplX3Qgb3BfbnVtID0gMDsKQEAgLTQ0NSw3ICsyNzEsNiBAQAogICBjaGFyICptZXNzYWdlX3N0cjsKICAgc2l6ZV90IG1lc3NhZ2VfbGVuOwogCi0KICAgZ3JwY19tZXRhZGF0YV9hcnJheV9pbml0KCZtZXRhZGF0YSk7CiAgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmdHJhaWxpbmdfbWV0YWRhdGEpOwogICBncnBjX21ldGFkYXRhX2FycmF5X2luaXQoJnJlY3ZfbWV0YWRhdGEpOwpAQCAtNDYwLDY3ICsyODUsNjMgQEAKICAgICBnb3RvIGNsZWFudXA7CiAgIH0KIAotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotCiAgIGFycmF5X2hhc2ggPSBaX0FSUlZBTF9QKGFycmF5KTsKLSAgZm9yICh6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldF9leChhcnJheV9oYXNoLCAmYXJyYXlfcG9pbnRlcik7Ci0gICAgICAgemVuZF9oYXNoX2dldF9jdXJyZW50X2RhdGFfZXgoYXJyYXlfaGFzaCwgKHZvaWQqKikmdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFycmF5X3BvaW50ZXIpID09IFNVQ0NFU1M7Ci0gICAgICAgemVuZF9oYXNoX21vdmVfZm9yd2FyZF9leChhcnJheV9oYXNoLCAmYXJyYXlfcG9pbnRlcikpIHsKLSAgICBpZiAoemVuZF9oYXNoX2dldF9jdXJyZW50X2tleV9leChhcnJheV9oYXNoLCAma2V5LCAma2V5X2xlbiwgJmluZGV4LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheV9wb2ludGVyKSAhPSBIQVNIX0tFWV9JU19MT05HKSB7CisKKyAgY2hhciAqa2V5ID0gTlVMTDsKKyAgaW50IGtleV90eXBlOworICBQSFBfR1JQQ19IQVNIX0ZPUkVBQ0hfTE9OR19LRVlfVkFMX1NUQVJUKGFycmF5X2hhc2gsIGtleSwga2V5X3R5cGUsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKQorICAgIGlmIChrZXlfdHlwZSAhPSBIQVNIX0tFWV9JU19MT05HIHx8IGtleSAhPSBOVUxMKSB7CiAgICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhdGNoIGtleXMgbXVzdCBiZSBpbnRlZ2VycyIsIDEgVFNSTUxTX0NDKTsKICAgICAgIGdvdG8gY2xlYW51cDsKICAgICB9CiAgICAgc3dpdGNoKGluZGV4KSB7CiAgICAgY2FzZSBHUlBDX09QX1NFTkRfSU5JVElBTF9NRVRBREFUQToKLSAgICAgIGlmICghY3JlYXRlX21ldGFkYXRhX2FycmF5KCp2YWx1ZSwgJm1ldGFkYXRhKSkgeworICAgICAgaWYgKCFjcmVhdGVfbWV0YWRhdGFfYXJyYXkodmFsdWUsICZtZXRhZGF0YSkpIHsKICAgICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJhZCBtZXRhZGF0YSB2YWx1ZSBnaXZlbiIsIDEgVFNSTUxTX0NDKTsKICAgICAgICAgZ290byBjbGVhbnVwOwogICAgICAgfQotICAgICAgb3BzW29wX251bV0uZGF0YS5zZW5kX2luaXRpYWxfbWV0YWRhdGEuY291bnQgPQotICAgICAgICAgIG1ldGFkYXRhLmNvdW50OwotICAgICAgb3BzW29wX251bV0uZGF0YS5zZW5kX2luaXRpYWxfbWV0YWRhdGEubWV0YWRhdGEgPQotICAgICAgICAgIG1ldGFkYXRhLm1ldGFkYXRhOworICAgICAgb3BzW29wX251bV0uZGF0YS5zZW5kX2luaXRpYWxfbWV0YWRhdGEuY291bnQgPSBtZXRhZGF0YS5jb3VudDsKKyAgICAgIG9wc1tvcF9udW1dLmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLm1ldGFkYXRhID0gbWV0YWRhdGEubWV0YWRhdGE7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdSUENfT1BfU0VORF9NRVNTQUdFOgotICAgICAgaWYgKFpfVFlQRV9QUCh2YWx1ZSkgIT0gSVNfQVJSQVkpIHsKKyAgICAgIGlmIChaX1RZUEVfUCh2YWx1ZSkgIT0gSVNfQVJSQVkpIHsKICAgICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGFuIGFycmF5IGZvciBzZW5kIG1lc3NhZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIFRTUk1MU19DQyk7CiAgICAgICAgIGdvdG8gY2xlYW51cDsKICAgICAgIH0KLSAgICAgIG1lc3NhZ2VfaGFzaCA9IFpfQVJSVkFMX1BQKHZhbHVlKTsKLSAgICAgIGlmICh6ZW5kX2hhc2hfZmluZChtZXNzYWdlX2hhc2gsICJmbGFncyIsIHNpemVvZigiZmxhZ3MiKSwKKyAgICAgIG1lc3NhZ2VfaGFzaCA9IFpfQVJSVkFMX1AodmFsdWUpOworICAgICAgaWYgKHBocF9ncnBjX3plbmRfaGFzaF9maW5kKG1lc3NhZ2VfaGFzaCwgImZsYWdzIiwgc2l6ZW9mKCJmbGFncyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICoqKSZtZXNzYWdlX2ZsYWdzKSA9PSBTVUNDRVNTKSB7Ci0gICAgICAgIGlmIChaX1RZUEVfUFAobWVzc2FnZV9mbGFncykgIT0gSVNfTE9ORykgeworICAgICAgICBpZiAoWl9UWVBFX1AobWVzc2FnZV9mbGFncykgIT0gSVNfTE9ORykgewogICAgICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGFuIGludCBmb3IgbWVzc2FnZSBmbGFncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSBUU1JNTFNfQ0MpOwogICAgICAgICB9Ci0gICAgICAgIG9wc1tvcF9udW1dLmZsYWdzID0gWl9MVkFMX1BQKG1lc3NhZ2VfZmxhZ3MpICYgR1JQQ19XUklURV9VU0VEX01BU0s7CisgICAgICAgIG9wc1tvcF9udW1dLmZsYWdzID0gWl9MVkFMX1AobWVzc2FnZV9mbGFncykgJiBHUlBDX1dSSVRFX1VTRURfTUFTSzsKICAgICAgIH0KLSAgICAgIGlmICh6ZW5kX2hhc2hfZmluZChtZXNzYWdlX2hhc2gsICJtZXNzYWdlIiwgc2l6ZW9mKCJtZXNzYWdlIiksCisgICAgICBpZiAocGhwX2dycGNfemVuZF9oYXNoX2ZpbmQobWVzc2FnZV9oYXNoLCAibWVzc2FnZSIsIHNpemVvZigibWVzc2FnZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICoqKSZtZXNzYWdlX3ZhbHVlKSAhPSBTVUNDRVNTIHx8Ci0gICAgICAgICAgWl9UWVBFX1BQKG1lc3NhZ2VfdmFsdWUpICE9IElTX1NUUklORykgeworICAgICAgICAgIFpfVFlQRV9QKG1lc3NhZ2VfdmFsdWUpICE9IElTX1NUUklORykgewogICAgICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgYSBzdHJpbmcgZm9yIHNlbmQgbWVzc2FnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgVFNSTUxTX0NDKTsKICAgICAgICAgZ290byBjbGVhbnVwOwogICAgICAgfQogICAgICAgb3BzW29wX251bV0uZGF0YS5zZW5kX21lc3NhZ2UgPQotICAgICAgICAgIHN0cmluZ190b19ieXRlX2J1ZmZlcihaX1NUUlZBTF9QUChtZXNzYWdlX3ZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWl9TVFJMRU5fUFAobWVzc2FnZV92YWx1ZSkpOworICAgICAgICAgIHN0cmluZ190b19ieXRlX2J1ZmZlcihaX1NUUlZBTF9QKG1lc3NhZ2VfdmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaX1NUUkxFTl9QKG1lc3NhZ2VfdmFsdWUpKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1JQQ19PUF9TRU5EX0NMT1NFX0ZST01fQ0xJRU5UOgogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHUlBDX09QX1NFTkRfU1RBVFVTX0ZST01fU0VSVkVSOgotICAgICAgc3RhdHVzX2hhc2ggPSBaX0FSUlZBTF9QUCh2YWx1ZSk7Ci0gICAgICBpZiAoemVuZF9oYXNoX2ZpbmQoc3RhdHVzX2hhc2gsICJtZXRhZGF0YSIsIHNpemVvZigibWV0YWRhdGEiKSwKKyAgICAgIHN0YXR1c19oYXNoID0gWl9BUlJWQUxfUCh2YWx1ZSk7CisgICAgICBpZiAocGhwX2dycGNfemVuZF9oYXNoX2ZpbmQoc3RhdHVzX2hhc2gsICJtZXRhZGF0YSIsIHNpemVvZigibWV0YWRhdGEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKikmaW5uZXJfdmFsdWUpID09IFNVQ0NFU1MpIHsKLSAgICAgICAgaWYgKCFjcmVhdGVfbWV0YWRhdGFfYXJyYXkoKmlubmVyX3ZhbHVlLCAmdHJhaWxpbmdfbWV0YWRhdGEpKSB7CisgICAgICAgIGlmICghY3JlYXRlX21ldGFkYXRhX2FycmF5KGlubmVyX3ZhbHVlLCAmdHJhaWxpbmdfbWV0YWRhdGEpKSB7CiAgICAgICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmFkIHRyYWlsaW5nIG1ldGFkYXRhIHZhbHVlIGdpdmVuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIFRTUk1MU19DQyk7CkBAIC01MzEsMzIgKzM1MiwzMiBAQAogICAgICAgICBvcHNbb3BfbnVtXS5kYXRhLnNlbmRfc3RhdHVzX2Zyb21fc2VydmVyLnRyYWlsaW5nX21ldGFkYXRhX2NvdW50ID0KICAgICAgICAgICAgIHRyYWlsaW5nX21ldGFkYXRhLmNvdW50OwogICAgICAgfQotICAgICAgaWYgKHplbmRfaGFzaF9maW5kKHN0YXR1c19oYXNoLCAiY29kZSIsIHNpemVvZigiY29kZSIpLAorICAgICAgaWYgKHBocF9ncnBjX3plbmRfaGFzaF9maW5kKHN0YXR1c19oYXNoLCAiY29kZSIsIHNpemVvZigiY29kZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiopJmlubmVyX3ZhbHVlKSA9PSBTVUNDRVNTKSB7Ci0gICAgICAgIGlmIChaX1RZUEVfUFAoaW5uZXJfdmFsdWUpICE9IElTX0xPTkcpIHsKKyAgICAgICAgaWYgKFpfVFlQRV9QKGlubmVyX3ZhbHVlKSAhPSBJU19MT05HKSB7CiAgICAgICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhdHVzIGNvZGUgbXVzdCBiZSBhbiBpbnRlZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIFRTUk1MU19DQyk7CiAgICAgICAgICAgZ290byBjbGVhbnVwOwogICAgICAgICB9CiAgICAgICAgIG9wc1tvcF9udW1dLmRhdGEuc2VuZF9zdGF0dXNfZnJvbV9zZXJ2ZXIuc3RhdHVzID0KLSAgICAgICAgICAgIFpfTFZBTF9QUChpbm5lcl92YWx1ZSk7CisgICAgICAgICAgICBaX0xWQUxfUChpbm5lcl92YWx1ZSk7CiAgICAgICB9IGVsc2UgewogICAgICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZWdlciBzdGF0dXMgY29kZSBpcyByZXF1aXJlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgVFNSTUxTX0NDKTsKICAgICAgICAgZ290byBjbGVhbnVwOwogICAgICAgfQotICAgICAgaWYgKHplbmRfaGFzaF9maW5kKHN0YXR1c19oYXNoLCAiZGV0YWlscyIsIHNpemVvZigiZGV0YWlscyIpLAorICAgICAgaWYgKHBocF9ncnBjX3plbmRfaGFzaF9maW5kKHN0YXR1c19oYXNoLCAiZGV0YWlscyIsIHNpemVvZigiZGV0YWlscyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiopJmlubmVyX3ZhbHVlKSA9PSBTVUNDRVNTKSB7Ci0gICAgICAgIGlmIChaX1RZUEVfUFAoaW5uZXJfdmFsdWUpICE9IElTX1NUUklORykgeworICAgICAgICBpZiAoWl9UWVBFX1AoaW5uZXJfdmFsdWUpICE9IElTX1NUUklORykgewogICAgICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1cyBkZXRhaWxzIG11c3QgYmUgYSBzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgVFNSTUxTX0NDKTsKICAgICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgICAgIH0KICAgICAgICAgb3BzW29wX251bV0uZGF0YS5zZW5kX3N0YXR1c19mcm9tX3NlcnZlci5zdGF0dXNfZGV0YWlscyA9Ci0gICAgICAgICAgICBaX1NUUlZBTF9QUChpbm5lcl92YWx1ZSk7CisgICAgICAgICAgICBaX1NUUlZBTF9QKGlubmVyX3ZhbHVlKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHJpbmcgc3RhdHVzIGRldGFpbHMgaXMgcmVxdWlyZWQiLApAQCAtNTkxLDEzMiArNDEyLDcgQEAKICAgICBvcHNbb3BfbnVtXS5mbGFncyA9IDA7CiAgICAgb3BzW29wX251bV0ucmVzZXJ2ZWQgPSBOVUxMOwogICAgIG9wX251bSsrOwotICB9Ci0KLSNlbHNlCi0KLWFycmF5X2hhc2ggPSBIQVNIX09GKGFycmF5KTsKLSAgWkVORF9IQVNIX0ZPUkVBQ0hfS0VZX1ZBTChhcnJheV9oYXNoLCBpbmRleCwga2V5LCB2YWx1ZSkgewotICAgIGlmIChrZXkpIHsKLSAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiYmF0Y2gga2V5cyBtdXN0IGJlIGludGVnZXJzIiwgMSk7Ci0gICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgc3dpdGNoKGluZGV4KSB7Ci0gICAgY2FzZSBHUlBDX09QX1NFTkRfSU5JVElBTF9NRVRBREFUQToKLSAgICAgIGlmICghY3JlYXRlX21ldGFkYXRhX2FycmF5KHZhbHVlLCAmbWV0YWRhdGEpKSB7Ci0gICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWQgbWV0YWRhdGEgdmFsdWUgZ2l2ZW4iLCAxKTsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgfQotICAgICAgb3BzW29wX251bV0uZGF0YS5zZW5kX2luaXRpYWxfbWV0YWRhdGEuY291bnQgPSBtZXRhZGF0YS5jb3VudDsKLSAgICAgIG9wc1tvcF9udW1dLmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLm1ldGFkYXRhID0gbWV0YWRhdGEubWV0YWRhdGE7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdSUENfT1BfU0VORF9NRVNTQUdFOgotICAgICAgaWYgKFpfVFlQRV9QKHZhbHVlKSAhPSBJU19BUlJBWSkgewotICAgICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgYW4gYXJyYXkgZm9yIHNlbmQgbWVzc2FnZSIsIDEpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICB9Ci0gICAgICBtZXNzYWdlX2hhc2ggPSBIQVNIX09GKHZhbHVlKTsKLSAgICAgIGlmICgobWVzc2FnZV9mbGFncyA9Ci0gICAgICAgICAgIHplbmRfaGFzaF9zdHJfZmluZChtZXNzYWdlX2hhc2gsICJmbGFncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoImZsYWdzIikgLSAxKSkgIT0gTlVMTCkgewotICAgICAgICBpZiAoWl9UWVBFX1AobWVzc2FnZV9mbGFncykgIT0gSVNfTE9ORykgewotICAgICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGFuIGludCBmb3IgbWVzc2FnZSBmbGFncyIsIDEpOwotICAgICAgICB9Ci0gICAgICAgIG9wc1tvcF9udW1dLmZsYWdzID0gWl9MVkFMX1AobWVzc2FnZV9mbGFncykgJiBHUlBDX1dSSVRFX1VTRURfTUFTSzsKLSAgICAgIH0KLSAgICAgIGlmICgobWVzc2FnZV92YWx1ZSA9IHplbmRfaGFzaF9zdHJfZmluZChtZXNzYWdlX2hhc2gsICJtZXNzYWdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIm1lc3NhZ2UiKSAtIDEpKQotICAgICAgICAgID09IE5VTEwgfHwgWl9UWVBFX1AobWVzc2FnZV92YWx1ZSkgIT0gSVNfU1RSSU5HKSB7Ci0gICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBhIHN0cmluZyBmb3Igc2VuZCBtZXNzYWdlIiwgMSk7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgIH0KLSAgICAgIG9wc1tvcF9udW1dLmRhdGEuc2VuZF9tZXNzYWdlID0KLSAgICAgICAgc3RyaW5nX3RvX2J5dGVfYnVmZmVyKFpfU1RSVkFMX1AobWVzc2FnZV92YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaX1NUUkxFTl9QKG1lc3NhZ2VfdmFsdWUpKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1JQQ19PUF9TRU5EX0NMT1NFX0ZST01fQ0xJRU5UOgotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUlBDX09QX1NFTkRfU1RBVFVTX0ZST01fU0VSVkVSOgotICAgICAgc3RhdHVzX2hhc2ggPSBIQVNIX09GKHZhbHVlKTsKLSAgICAgIGlmICgoaW5uZXJfdmFsdWUgPSB6ZW5kX2hhc2hfc3RyX2ZpbmQoc3RhdHVzX2hhc2gsICJtZXRhZGF0YSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigibWV0YWRhdGEiKSAtIDEpKQotICAgICAgICAgICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKCFjcmVhdGVfbWV0YWRhdGFfYXJyYXkoaW5uZXJfdmFsdWUsICZ0cmFpbGluZ19tZXRhZGF0YSkpIHsKLSAgICAgICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWQgdHJhaWxpbmcgbWV0YWRhdGEgdmFsdWUgZ2l2ZW4iLCAxKTsKLSAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgb3BzW29wX251bV0uZGF0YS5zZW5kX3N0YXR1c19mcm9tX3NlcnZlci50cmFpbGluZ19tZXRhZGF0YSA9Ci0gICAgICAgICAgdHJhaWxpbmdfbWV0YWRhdGEubWV0YWRhdGE7Ci0gICAgICAgIG9wc1tvcF9udW1dLmRhdGEuc2VuZF9zdGF0dXNfZnJvbV9zZXJ2ZXIudHJhaWxpbmdfbWV0YWRhdGFfY291bnQgPQotICAgICAgICAgIHRyYWlsaW5nX21ldGFkYXRhLmNvdW50OwotICAgICAgfQotICAgICAgaWYgKChpbm5lcl92YWx1ZSA9IHplbmRfaGFzaF9zdHJfZmluZChzdGF0dXNfaGFzaCwgImNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoImNvZGUiKSAtIDEpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChaX1RZUEVfUChpbm5lcl92YWx1ZSkgIT0gSVNfTE9ORykgewotICAgICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1cyBjb2RlIG11c3QgYmUgYW4gaW50ZWdlciIsIDEpOwotICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICBvcHNbb3BfbnVtXS5kYXRhLnNlbmRfc3RhdHVzX2Zyb21fc2VydmVyLnN0YXR1cyA9Ci0gICAgICAgICAgWl9MVkFMX1AoaW5uZXJfdmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVnZXIgc3RhdHVzIGNvZGUgaXMgcmVxdWlyZWQiLCAxKTsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgfQotICAgICAgaWYgKChpbm5lcl92YWx1ZSA9IHplbmRfaGFzaF9zdHJfZmluZChzdGF0dXNfaGFzaCwgImRldGFpbHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoImRldGFpbHMiKSAtIDEpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChaX1RZUEVfUChpbm5lcl92YWx1ZSkgIT0gSVNfU1RSSU5HKSB7Ci0gICAgICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhdHVzIGRldGFpbHMgbXVzdCBiZSBhIHN0cmluZyIsIDEpOwotICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICBvcHNbb3BfbnVtXS5kYXRhLnNlbmRfc3RhdHVzX2Zyb21fc2VydmVyLnN0YXR1c19kZXRhaWxzID0KLSAgICAgICAgICBaX1NUUlZBTF9QKGlubmVyX3ZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHJpbmcgc3RhdHVzIGRldGFpbHMgaXMgcmVxdWlyZWQiLCAxKTsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUlBDX09QX1JFQ1ZfSU5JVElBTF9NRVRBREFUQToKLSAgICAgIG9wc1tvcF9udW1dLmRhdGEucmVjdl9pbml0aWFsX21ldGFkYXRhID0gJnJlY3ZfbWV0YWRhdGE7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdSUENfT1BfUkVDVl9NRVNTQUdFOgotICAgICAgb3BzW29wX251bV0uZGF0YS5yZWN2X21lc3NhZ2UgPSAmbWVzc2FnZTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1JQQ19PUF9SRUNWX1NUQVRVU19PTl9DTElFTlQ6Ci0gICAgICBvcHNbb3BfbnVtXS5kYXRhLnJlY3Zfc3RhdHVzX29uX2NsaWVudC50cmFpbGluZ19tZXRhZGF0YSA9Ci0gICAgICAgICZyZWN2X3RyYWlsaW5nX21ldGFkYXRhOwotICAgICAgb3BzW29wX251bV0uZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQuc3RhdHVzID0gJnN0YXR1czsKLSAgICAgIG9wc1tvcF9udW1dLmRhdGEucmVjdl9zdGF0dXNfb25fY2xpZW50LnN0YXR1c19kZXRhaWxzID0KLSAgICAgICAgJnN0YXR1c19kZXRhaWxzOwotICAgICAgb3BzW29wX251bV0uZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQuc3RhdHVzX2RldGFpbHNfY2FwYWNpdHkgPQotICAgICAgICAmc3RhdHVzX2RldGFpbHNfY2FwYWNpdHk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdSUENfT1BfUkVDVl9DTE9TRV9PTl9TRVJWRVI6Ci0gICAgICBvcHNbb3BfbnVtXS5kYXRhLnJlY3ZfY2xvc2Vfb25fc2VydmVyLmNhbmNlbGxlZCA9ICZjYW5jZWxsZWQ7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQga2V5IGluIGJhdGNoIiwgMSk7Ci0gICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotICAgIG9wc1tvcF9udW1dLm9wID0gKGdycGNfb3BfdHlwZSlpbmRleDsKLSAgICBvcHNbb3BfbnVtXS5mbGFncyA9IDA7Ci0gICAgb3BzW29wX251bV0ucmVzZXJ2ZWQgPSBOVUxMOwotICAgIG9wX251bSsrOwotICB9Ci0gIFpFTkRfSEFTSF9GT1JFQUNIX0VORCgpOwotCi0jZW5kaWYKKyAgUEhQX0dSUENfSEFTSF9GT1JFQUNIX0VORCgpCiAKICAgZXJyb3IgPSBncnBjX2NhbGxfc3RhcnRfYmF0Y2goY2FsbC0+d3JhcHBlZCwgb3BzLCBvcF9udW0sIGNhbGwtPndyYXBwZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwpAQCAtNzI4LDcgKzQyNCw5IEBACiAgIH0KICAgZ3JwY19jb21wbGV0aW9uX3F1ZXVlX3BsdWNrKGNvbXBsZXRpb25fcXVldWUsIGNhbGwtPndyYXBwZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfaW5mX2Z1dHVyZShHUFJfQ0xPQ0tfUkVBTFRJTUUpLCBOVUxMKTsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKKyNpZiBQSFBfTUFKT1JfVkVSU0lPTiA+PSA3CisgIHp2YWwgcmVjdl9tZDsKKyNlbmRpZgogICBmb3IgKGludCBpID0gMDsgaSA8IG9wX251bTsgaSsrKSB7CiAgICAgc3dpdGNoKG9wc1tpXS5vcCkgewogICAgIGNhc2UgR1JQQ19PUF9TRU5EX0lOSVRJQUxfTUVUQURBVEE6CkBAIC03NDQsMjkgKzQ0MiwzOCBAQAogICAgICAgYWRkX3Byb3BlcnR5X2Jvb2wocmVzdWx0LCAic2VuZF9zdGF0dXMiLCB0cnVlKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1JQQ19PUF9SRUNWX0lOSVRJQUxfTUVUQURBVEE6CisjaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CiAgICAgICBhcnJheSA9IGdycGNfcGFyc2VfbWV0YWRhdGFfYXJyYXkoJnJlY3ZfbWV0YWRhdGEgVFNSTUxTX0NDKTsKICAgICAgIGFkZF9wcm9wZXJ0eV96dmFsKHJlc3VsdCwgIm1ldGFkYXRhIiwgYXJyYXkpOwotICAgICAgWl9ERUxSRUZfUChhcnJheSk7CisjZWxzZQorICAgICAgcmVjdl9tZCA9ICpncnBjX3BhcnNlX21ldGFkYXRhX2FycmF5KCZyZWN2X21ldGFkYXRhKTsKKyAgICAgIGFkZF9wcm9wZXJ0eV96dmFsKHJlc3VsdCwgIm1ldGFkYXRhIiwgJnJlY3ZfbWQpOworI2VuZGlmCisgICAgICBQSFBfR1JQQ19ERUxSRUYoYXJyYXkpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHUlBDX09QX1JFQ1ZfTUVTU0FHRToKICAgICAgIGJ5dGVfYnVmZmVyX3RvX3N0cmluZyhtZXNzYWdlLCAmbWVzc2FnZV9zdHIsICZtZXNzYWdlX2xlbik7CiAgICAgICBpZiAobWVzc2FnZV9zdHIgPT0gTlVMTCkgewogICAgICAgICBhZGRfcHJvcGVydHlfbnVsbChyZXN1bHQsICJtZXNzYWdlIik7CiAgICAgICB9IGVsc2UgewotICAgICAgICBhZGRfcHJvcGVydHlfc3RyaW5nbChyZXN1bHQsICJtZXNzYWdlIiwgbWVzc2FnZV9zdHIsIG1lc3NhZ2VfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgICAgICAgIHBocF9ncnBjX2FkZF9wcm9wZXJ0eV9zdHJpbmdsKHJlc3VsdCwgIm1lc3NhZ2UiLCBtZXNzYWdlX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9sZW4sIGZhbHNlKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1JQQ19PUF9SRUNWX1NUQVRVU19PTl9DTElFTlQ6Ci0gICAgICBNQUtFX1NURF9aVkFMKHJlY3Zfc3RhdHVzKTsKLSAgICAgIG9iamVjdF9pbml0KHJlY3Zfc3RhdHVzKTsKKyNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKICAgICAgIGFycmF5ID0gZ3JwY19wYXJzZV9tZXRhZGF0YV9hcnJheSgmcmVjdl90cmFpbGluZ19tZXRhZGF0YSBUU1JNTFNfQ0MpOwogICAgICAgYWRkX3Byb3BlcnR5X3p2YWwocmVjdl9zdGF0dXMsICJtZXRhZGF0YSIsIGFycmF5KTsKLSAgICAgIFpfREVMUkVGX1AoYXJyYXkpOworI2Vsc2UKKyAgICAgIHJlY3ZfbWQgPSAqZ3JwY19wYXJzZV9tZXRhZGF0YV9hcnJheSgmcmVjdl90cmFpbGluZ19tZXRhZGF0YSk7CisgICAgICBhZGRfcHJvcGVydHlfenZhbChyZWN2X3N0YXR1cywgIm1ldGFkYXRhIiwgJnJlY3ZfbWQpOworI2VuZGlmCisgICAgICBQSFBfR1JQQ19ERUxSRUYoYXJyYXkpOwogICAgICAgYWRkX3Byb3BlcnR5X2xvbmcocmVjdl9zdGF0dXMsICJjb2RlIiwgc3RhdHVzKTsKLSAgICAgIGFkZF9wcm9wZXJ0eV9zdHJpbmcocmVjdl9zdGF0dXMsICJkZXRhaWxzIiwgc3RhdHVzX2RldGFpbHMsIHRydWUpOworICAgICAgcGhwX2dycGNfYWRkX3Byb3BlcnR5X3N0cmluZyhyZWN2X3N0YXR1cywgImRldGFpbHMiLCBzdGF0dXNfZGV0YWlscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CiAgICAgICBhZGRfcHJvcGVydHlfenZhbChyZXN1bHQsICJzdGF0dXMiLCByZWN2X3N0YXR1cyk7Ci0gICAgICBaX0RFTFJFRl9QKHJlY3Zfc3RhdHVzKTsKKyAgICAgIFBIUF9HUlBDX0RFTFJFRihyZWN2X3N0YXR1cyk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdSUENfT1BfUkVDVl9DTE9TRV9PTl9TRVJWRVI6CiAgICAgICBhZGRfcHJvcGVydHlfYm9vbChyZXN1bHQsICJjYW5jZWxsZWQiLCBjYW5jZWxsZWQpOwpAQCAtNzc1LDUwICs0ODIsNiBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0jZWxzZQotICBmb3IgKGludCBpID0gMDsgaSA8IG9wX251bTsgaSsrKSB7Ci0gICAgc3dpdGNoKG9wc1tpXS5vcCkgewotICAgIGNhc2UgR1JQQ19PUF9TRU5EX0lOSVRJQUxfTUVUQURBVEE6Ci0gICAgICBhZGRfcHJvcGVydHlfYm9vbChyZXR1cm5fdmFsdWUsICJzZW5kX21ldGFkYXRhIiwgdHJ1ZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdSUENfT1BfU0VORF9NRVNTQUdFOgotICAgICAgYWRkX3Byb3BlcnR5X2Jvb2wocmV0dXJuX3ZhbHVlLCAic2VuZF9tZXNzYWdlIiwgdHJ1ZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdSUENfT1BfU0VORF9DTE9TRV9GUk9NX0NMSUVOVDoKLSAgICAgIGFkZF9wcm9wZXJ0eV9ib29sKHJldHVybl92YWx1ZSwgInNlbmRfY2xvc2UiLCB0cnVlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1JQQ19PUF9TRU5EX1NUQVRVU19GUk9NX1NFUlZFUjoKLSAgICAgIGFkZF9wcm9wZXJ0eV9ib29sKHJldHVybl92YWx1ZSwgInNlbmRfc3RhdHVzIiwgdHJ1ZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdSUENfT1BfUkVDVl9JTklUSUFMX01FVEFEQVRBOgotICAgICAgZ3JwY19wYXJzZV9tZXRhZGF0YV9hcnJheSgmcmVjdl9tZXRhZGF0YSwgYXJyYXkpOwotICAgICAgYWRkX3Byb3BlcnR5X3p2YWwocmV0dXJuX3ZhbHVlLCAibWV0YWRhdGEiLCBhcnJheSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdSUENfT1BfUkVDVl9NRVNTQUdFOgotICAgICAgYnl0ZV9idWZmZXJfdG9fc3RyaW5nKG1lc3NhZ2UsICZtZXNzYWdlX3N0ciwgJm1lc3NhZ2VfbGVuKTsKLSAgICAgIGlmIChtZXNzYWdlX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGFkZF9wcm9wZXJ0eV9udWxsKHJldHVybl92YWx1ZSwgIm1lc3NhZ2UiKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFkZF9wcm9wZXJ0eV9zdHJpbmdsKHJldHVybl92YWx1ZSwgIm1lc3NhZ2UiLCBtZXNzYWdlX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9sZW4pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHUlBDX09QX1JFQ1ZfU1RBVFVTX09OX0NMSUVOVDoKLSAgICAgIG9iamVjdF9pbml0KCZyZWN2X3N0YXR1cyk7Ci0gICAgICBncnBjX3BhcnNlX21ldGFkYXRhX2FycmF5KCZyZWN2X3RyYWlsaW5nX21ldGFkYXRhLCBhcnJheSk7Ci0gICAgICBhZGRfcHJvcGVydHlfenZhbCgmcmVjdl9zdGF0dXMsICJtZXRhZGF0YSIsIGFycmF5KTsKLSAgICAgIGFkZF9wcm9wZXJ0eV9sb25nKCZyZWN2X3N0YXR1cywgImNvZGUiLCBzdGF0dXMpOwotICAgICAgYWRkX3Byb3BlcnR5X3N0cmluZygmcmVjdl9zdGF0dXMsICJkZXRhaWxzIiwgc3RhdHVzX2RldGFpbHMpOwotICAgICAgYWRkX3Byb3BlcnR5X3p2YWwocmV0dXJuX3ZhbHVlLCAic3RhdHVzIiwgJnJlY3Zfc3RhdHVzKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1JQQ19PUF9SRUNWX0NMT1NFX09OX1NFUlZFUjoKLSAgICAgIGFkZF9wcm9wZXJ0eV9ib29sKHJldHVybl92YWx1ZSwgImNhbmNlbGxlZCIsIGNhbmNlbGxlZCk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0jZW5kaWYKIAogY2xlYW51cDoKICAgZ3JwY19tZXRhZGF0YV9hcnJheV9kZXN0cm95KCZtZXRhZGF0YSk7CkBAIC04MzYsMTEgKzQ5OSw3IEBACiAgICAgICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kobWVzc2FnZSk7CiAgICAgfQogICB9Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CiAgIFJFVFVSTl9ERVNUUk9ZX1pWQUwocmVzdWx0KTsKLSNlbHNlCi0gIFJFVFVSTl9ERVNUUk9ZX1pWQUwocmV0dXJuX3ZhbHVlKTsKLSNlbmRpZgogfQogCiAvKioKQEAgLTg0OCwxNCArNTA3LDggQEAKICAqIEByZXR1cm4gc3RyaW5nIFRoZSBVUkkgb2YgdGhlIGVuZHBvaW50CiAgKi8KIFBIUF9NRVRIT0QoQ2FsbCwgZ2V0UGVlcikgewotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB3cmFwcGVkX2dycGNfY2FsbCAqY2FsbCA9Ci0gICAgICAod3JhcHBlZF9ncnBjX2NhbGwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOwotICBSRVRVUk5fU1RSSU5HKGdycGNfY2FsbF9nZXRfcGVlcihjYWxsLT53cmFwcGVkKSwgMSk7Ci0jZWxzZQogICB3cmFwcGVkX2dycGNfY2FsbCAqY2FsbCA9IFpfV1JBUFBFRF9HUlBDX0NBTExfUChnZXRUaGlzKCkpOwotICBSRVRVUk5fU1RSSU5HKGdycGNfY2FsbF9nZXRfcGVlcihjYWxsLT53cmFwcGVkKSk7Ci0jZW5kaWYKKyAgUEhQX0dSUENfUkVUVVJOX1NUUklORyhncnBjX2NhbGxfZ2V0X3BlZXIoY2FsbC0+d3JhcHBlZCksIDEpOwogfQogCiAvKioKQEAgLTg2MywxMiArNTE2LDcgQEAKICAqIGhhcyBub3QgYWxyZWFkeSBlbmRlZCB3aXRoIGFub3RoZXIgc3RhdHVzLgogICovCiBQSFBfTUVUSE9EKENhbGwsIGNhbmNlbCkgewotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB3cmFwcGVkX2dycGNfY2FsbCAqY2FsbCA9Ci0gICAgICAod3JhcHBlZF9ncnBjX2NhbGwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX2NhbGwgKmNhbGwgPSBaX1dSQVBQRURfR1JQQ19DQUxMX1AoZ2V0VGhpcygpKTsKLSNlbmRpZgogICBncnBjX2NhbGxfY2FuY2VsKGNhbGwtPndyYXBwZWQsIE5VTEwpOwogfQogCkBAIC04ODksMTcgKzUzNyw5IEBACiAgICAgcmV0dXJuOwogICB9CiAKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKmNyZWRzID0KLSAgICAgICh3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoCi0gICAgICAgICAgY3JlZHNfb2JqIFRTUk1MU19DQyk7Ci0gIHdyYXBwZWRfZ3JwY19jYWxsICpjYWxsID0KLSAgICAgICh3cmFwcGVkX2dycGNfY2FsbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoZ2V0VGhpcygpIFRTUk1MU19DQyk7Ci0jZWxzZQogICB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyAqY3JlZHMgPQogICAgIFpfV1JBUFBFRF9HUlBDX0NBTExfQ1JFRFNfUChjcmVkc19vYmopOwogICB3cmFwcGVkX2dycGNfY2FsbCAqY2FsbCA9IFpfV1JBUFBFRF9HUlBDX0NBTExfUChnZXRUaGlzKCkpOwotI2VuZGlmCiAKICAgZ3JwY19jYWxsX2Vycm9yIGVycm9yID0gR1JQQ19DQUxMX0VSUk9SOwogICBlcnJvciA9IGdycGNfY2FsbF9zZXRfY3JlZGVudGlhbHMoY2FsbC0+d3JhcHBlZCwgY3JlZHMtPndyYXBwZWQpOwpAQCAtOTIwLDEwICs1NjAsNSBAQAogICBJTklUX0NMQVNTX0VOVFJZKGNlLCAiR3JwY1xcQ2FsbCIsIGNhbGxfbWV0aG9kcyk7CiAgIGNlLmNyZWF0ZV9vYmplY3QgPSBjcmVhdGVfd3JhcHBlZF9ncnBjX2NhbGw7CiAgIGdycGNfY2VfY2FsbCA9IHplbmRfcmVnaXN0ZXJfaW50ZXJuYWxfY2xhc3MoJmNlIFRTUk1MU19DQyk7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPj0gNwotICBtZW1jcHkoJmNhbGxfY2VfaGFuZGxlcnMsIHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxlcnMoKSwKLSAgICAgICAgIHNpemVvZih6ZW5kX29iamVjdF9oYW5kbGVycykpOwotICBjYWxsX2NlX2hhbmRsZXJzLm9mZnNldCA9IFh0T2Zmc2V0T2Yod3JhcHBlZF9ncnBjX2NhbGwsIHN0ZCk7Ci0gIGNhbGxfY2VfaGFuZGxlcnMuZnJlZV9vYmogPSBmcmVlX3dyYXBwZWRfZ3JwY19jYWxsOwotI2VuZGlmCisgIFBIUF9HUlBDX0lOSVRfSEFORExFUih3cmFwcGVkX2dycGNfY2FsbCwgY2FsbF9jZV9oYW5kbGVycyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvcGhwL2V4dC9ncnBjL2NhbGwuaCBiL3NyYy9waHAvZXh0L2dycGMvY2FsbC5oCmluZGV4IDlmYzUyZDcuLmU0OWY5YjMgMTAwNjQ0Ci0tLSBhL3NyYy9waHAvZXh0L2dycGMvY2FsbC5oCisrKyBiL3NyYy9waHAvZXh0L2dycGMvY2FsbC5oCkBAIC00OCwzMSArNDgsMTkgQEAKIC8qIENsYXNzIGVudHJ5IGZvciB0aGUgQ2FsbCBQSFAgY2xhc3MgKi8KIGV4dGVybiB6ZW5kX2NsYXNzX2VudHJ5ICpncnBjX2NlX2NhbGw7CiAKKy8qIFdyYXBwZXIgc3RydWN0IGZvciBncnBjX2NhbGwgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgUEhQIG9iamVjdCAqLworUEhQX0dSUENfV1JBUF9PQkpFQ1RfU1RBUlQod3JhcHBlZF9ncnBjX2NhbGwpCisgIGJvb2wgb3duZWQ7CisgIGdycGNfY2FsbCAqd3JhcHBlZDsKK1BIUF9HUlBDX1dSQVBfT0JKRUNUX0VORCh3cmFwcGVkX2dycGNfY2FsbCkKKwogI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwogCi0vKiBXcmFwcGVyIHN0cnVjdCBmb3IgZ3JwY19jYWxsIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIFBIUCBvYmplY3QgKi8KLXR5cGVkZWYgc3RydWN0IHdyYXBwZWRfZ3JwY19jYWxsIHsKLSAgemVuZF9vYmplY3Qgc3RkOwotICBib29sIG93bmVkOwotICBncnBjX2NhbGwgKndyYXBwZWQ7Ci19IHdyYXBwZWRfZ3JwY19jYWxsOwotCi0vKiBDcmVhdGVzIGEgQ2FsbCBvYmplY3QgdGhhdCB3cmFwcyB0aGUgZ2l2ZW4gZ3JwY19jYWxsIHN0cnVjdCAqLwotenZhbCAqZ3JwY19waHBfd3JhcF9jYWxsKGdycGNfY2FsbCAqd3JhcHBlZCwgYm9vbCBvd25lZCBUU1JNTFNfREMpOwotCi0vKiBDcmVhdGVzIGFuZCByZXR1cm5zIGEgUEhQIGFzc29jaWF0aXZlIGFycmF5IG9mIG1ldGFkYXRhIGZyb20gYSBDIGFycmF5IG9mCi0gKiBjYWxsIG1ldGFkYXRhICovCi16dmFsICpncnBjX3BhcnNlX21ldGFkYXRhX2FycmF5KGdycGNfbWV0YWRhdGFfYXJyYXkgKm1ldGFkYXRhX2FycmF5IFRTUk1MU19EQyk7CisjZGVmaW5lIFpfV1JBUFBFRF9HUlBDX0NBTExfUCh6dikgXAorICAod3JhcHBlZF9ncnBjX2NhbGwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KHp2IFRTUk1MU19DQykKIAogI2Vsc2UKIAotLyogV3JhcHBlciBzdHJ1Y3QgZm9yIGdycGNfY2FsbCB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBQSFAgb2JqZWN0ICovCi10eXBlZGVmIHN0cnVjdCB3cmFwcGVkX2dycGNfY2FsbCB7Ci0gIGJvb2wgb3duZWQ7Ci0gIGdycGNfY2FsbCAqd3JhcHBlZDsKLSAgemVuZF9vYmplY3Qgc3RkOwotfSB3cmFwcGVkX2dycGNfY2FsbDsKLQogc3RhdGljIGlubGluZSB3cmFwcGVkX2dycGNfY2FsbAogKndyYXBwZWRfZ3JwY19jYWxsX2Zyb21fb2JqKHplbmRfb2JqZWN0ICpvYmopIHsKICAgcmV0dXJuICh3cmFwcGVkX2dycGNfY2FsbCopKChjaGFyKikob2JqKSAtCkBAIC04MSwxNSArNjksMTQgQEAKIAogI2RlZmluZSBaX1dSQVBQRURfR1JQQ19DQUxMX1AoenYpIHdyYXBwZWRfZ3JwY19jYWxsX2Zyb21fb2JqKFpfT0JKX1AoKHp2KSkpCiAKLS8qIENyZWF0ZXMgYSBDYWxsIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBncnBjX2NhbGwgc3RydWN0ICovCi12b2lkIGdycGNfcGhwX3dyYXBfY2FsbChncnBjX2NhbGwgKndyYXBwZWQsIGJvb2wgb3duZWQsIHp2YWwgKmNhbGxfb2JqZWN0KTsKKyNlbmRpZiAvKiBQSFBfTUFKT1JfVkVSU0lPTiAqLwogCiAvKiBDcmVhdGVzIGFuZCByZXR1cm5zIGEgUEhQIGFzc29jaWF0aXZlIGFycmF5IG9mIG1ldGFkYXRhIGZyb20gYSBDIGFycmF5IG9mCiAgKiBjYWxsIG1ldGFkYXRhICovCi12b2lkIGdycGNfcGFyc2VfbWV0YWRhdGFfYXJyYXkoZ3JwY19tZXRhZGF0YV9hcnJheSAqbWV0YWRhdGFfYXJyYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenZhbCAqYXJyYXkpOworenZhbCAqZ3JwY19wYXJzZV9tZXRhZGF0YV9hcnJheShncnBjX21ldGFkYXRhX2FycmF5ICptZXRhZGF0YV9hcnJheSBUU1JNTFNfREMpOwogCi0jZW5kaWYgLyogUEhQX01BSk9SX1ZFUlNJT04gKi8KKy8qIENyZWF0ZXMgYSBDYWxsIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBncnBjX2NhbGwgc3RydWN0ICovCit6dmFsICpncnBjX3BocF93cmFwX2NhbGwoZ3JwY19jYWxsICp3cmFwcGVkLCBib29sIG93bmVkIFRTUk1MU19EQyk7CiAKIC8qIEluaXRpYWxpemVzIHRoZSBDYWxsIFBIUCBjbGFzcyAqLwogdm9pZCBncnBjX2luaXRfY2FsbChUU1JNTFNfRCk7CmRpZmYgLS1naXQgYS9zcmMvcGhwL2V4dC9ncnBjL2NhbGxfY3JlZGVudGlhbHMuYyBiL3NyYy9waHAvZXh0L2dycGMvY2FsbF9jcmVkZW50aWFscy5jCmluZGV4IDcwYWFmZmIuLjY5MjFhNWQgMTAwNjQ0Ci0tLSBhL3NyYy9waHAvZXh0L2dycGMvY2FsbF9jcmVkZW50aWFscy5jCisrKyBiL3NyYy9waHAvZXh0L2dycGMvY2FsbF9jcmVkZW50aWFscy5jCkBAIC01Miw4OCArNTIsMzkgQEAKICNpbmNsdWRlIDxncnBjL2dycGNfc2VjdXJpdHkuaD4KIAogemVuZF9jbGFzc19lbnRyeSAqZ3JwY19jZV9jYWxsX2NyZWRlbnRpYWxzOwotCi0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CisjaWYgUEhQX01BSk9SX1ZFUlNJT04gPj0gNworc3RhdGljIHplbmRfb2JqZWN0X2hhbmRsZXJzIGNhbGxfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnM7CisjZW5kaWYKIAogLyogRnJlZXMgYW5kIGRlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzICovCi12b2lkIGZyZWVfd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHModm9pZCAqb2JqZWN0IFRTUk1MU19EQykgewotICB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyAqY3JlZHMgPQotICAgICAgKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzICopb2JqZWN0OwotICBpZiAoY3JlZHMtPndyYXBwZWQgIT0gTlVMTCkgewotICAgIGdycGNfY2FsbF9jcmVkZW50aWFsc19yZWxlYXNlKGNyZWRzLT53cmFwcGVkKTsKK1BIUF9HUlBDX0ZSRUVfV1JBUFBFRF9GVU5DX1NUQVJUKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKQorICBpZiAocC0+d3JhcHBlZCAhPSBOVUxMKSB7CisgICAgZ3JwY19jYWxsX2NyZWRlbnRpYWxzX3JlbGVhc2UocC0+d3JhcHBlZCk7CiAgIH0KLSAgemVuZF9vYmplY3Rfc3RkX2R0b3IoJmNyZWRzLT5zdGQgVFNSTUxTX0NDKTsKLSAgZWZyZWUoY3JlZHMpOwotfQorUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfRU5EKCkKIAogLyogSW5pdGlhbGl6ZXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgdG8gYmUKICAqIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmplY3Qgb2YgYSBjbGFzcyBzcGVjaWZpZWQgYnkgY2xhc3NfdHlwZSAqLwotemVuZF9vYmplY3RfdmFsdWUgY3JlYXRlX3dyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKAorcGhwX2dycGNfemVuZF9vYmplY3QgY3JlYXRlX3dyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKAogICAgIHplbmRfY2xhc3NfZW50cnkgKmNsYXNzX3R5cGUgVFNSTUxTX0RDKSB7Ci0gIHplbmRfb2JqZWN0X3ZhbHVlIHJldHZhbDsKLSAgd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKmludGVybjsKLQotICBpbnRlcm4gPSAod3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKillbWFsbG9jKAotICAgICAgc2l6ZW9mKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKSk7Ci0gIG1lbXNldChpbnRlcm4sIDAsIHNpemVvZih3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscykpOwotCisgIFBIUF9HUlBDX0FMTE9DX0NMQVNTX09CSkVDVCh3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyk7CiAgIHplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwogICBvYmplY3RfcHJvcGVydGllc19pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0gIHJldHZhbC5oYW5kbGUgPSB6ZW5kX29iamVjdHNfc3RvcmVfcHV0KAotICAgICAgaW50ZXJuLCAoemVuZF9vYmplY3RzX3N0b3JlX2R0b3JfdCl6ZW5kX29iamVjdHNfZGVzdHJveV9vYmplY3QsCi0gICAgICBmcmVlX3dyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzLCBOVUxMIFRTUk1MU19DQyk7Ci0gIHJldHZhbC5oYW5kbGVycyA9IHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxlcnMoKTsKLSAgcmV0dXJuIHJldHZhbDsKKyAgUEhQX0dSUENfRlJFRV9DTEFTU19PQkpFQ1Qod3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnMpOwogfQogCi16dmFsICpncnBjX3BocF93cmFwX2NhbGxfY3JlZGVudGlhbHMoZ3JwY19jYWxsX2NyZWRlbnRpYWxzICp3cmFwcGVkIFRTUk1MU19EQykgeworenZhbCAqZ3JwY19waHBfd3JhcF9jYWxsX2NyZWRlbnRpYWxzKGdycGNfY2FsbF9jcmVkZW50aWFscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp3cmFwcGVkIFRTUk1MU19EQykgewogICB6dmFsICpjcmVkZW50aWFsc19vYmplY3Q7Ci0gIE1BS0VfU1REX1pWQUwoY3JlZGVudGlhbHNfb2JqZWN0KTsKLSAgb2JqZWN0X2luaXRfZXgoY3JlZGVudGlhbHNfb2JqZWN0LCBncnBjX2NlX2NhbGxfY3JlZGVudGlhbHMpOwotICB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyAqY3JlZGVudGlhbHMgPQotICAgICAgKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdCgKLSAgICAgICAgICBjcmVkZW50aWFsc19vYmplY3QgVFNSTUxTX0NDKTsKLSAgY3JlZGVudGlhbHMtPndyYXBwZWQgPSB3cmFwcGVkOwotICByZXR1cm4gY3JlZGVudGlhbHNfb2JqZWN0OwotfQotCi0jZWxzZQotCi1zdGF0aWMgemVuZF9vYmplY3RfaGFuZGxlcnMgY2FsbF9jcmVkZW50aWFsc19jZV9oYW5kbGVyczsKLQotLyogRnJlZXMgYW5kIGRlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzICovCi1zdGF0aWMgdm9pZCBmcmVlX3dyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKHplbmRfb2JqZWN0ICpvYmplY3QpIHsKLSAgd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKmNyZWRzID0KLSAgICB3cmFwcGVkX2dycGNfY2FsbF9jcmVkc19mcm9tX29iaihvYmplY3QpOwotICBpZiAoY3JlZHMtPndyYXBwZWQgIT0gTlVMTCkgewotICAgIGdycGNfY2FsbF9jcmVkZW50aWFsc19yZWxlYXNlKGNyZWRzLT53cmFwcGVkKTsKLSAgfQotICB6ZW5kX29iamVjdF9zdGRfZHRvcigmY3JlZHMtPnN0ZCk7Ci19Ci0KLS8qIEluaXRpYWxpemVzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzIHRvIGJlCi0gKiBhc3NvY2lhdGVkIHdpdGggYW4gb2JqZWN0IG9mIGEgY2xhc3Mgc3BlY2lmaWVkIGJ5IGNsYXNzX3R5cGUgKi8KLXplbmRfb2JqZWN0ICpjcmVhdGVfd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMoemVuZF9jbGFzc19lbnRyeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2xhc3NfdHlwZSkgewotICB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyAqaW50ZXJuOwotICBpbnRlcm4gPSBlY2FsbG9jKDEsIHNpemVvZih3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscykgKwotICAgICAgICAgICAgICAgICAgIHplbmRfb2JqZWN0X3Byb3BlcnRpZXNfc2l6ZShjbGFzc190eXBlKSk7Ci0gIHplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0gIG9iamVjdF9wcm9wZXJ0aWVzX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLSAgaW50ZXJuLT5zdGQuaGFuZGxlcnMgPSAmY2FsbF9jcmVkZW50aWFsc19jZV9oYW5kbGVyczsKLSAgcmV0dXJuICZpbnRlcm4tPnN0ZDsKLX0KLQotdm9pZCBncnBjX3BocF93cmFwX2NhbGxfY3JlZGVudGlhbHMoZ3JwY19jYWxsX2NyZWRlbnRpYWxzICp3cmFwcGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenZhbCAqY3JlZGVudGlhbHNfb2JqZWN0KSB7CisgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwoY3JlZGVudGlhbHNfb2JqZWN0KTsKICAgb2JqZWN0X2luaXRfZXgoY3JlZGVudGlhbHNfb2JqZWN0LCBncnBjX2NlX2NhbGxfY3JlZGVudGlhbHMpOwogICB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyAqY3JlZGVudGlhbHMgPQogICAgIFpfV1JBUFBFRF9HUlBDX0NBTExfQ1JFRFNfUChjcmVkZW50aWFsc19vYmplY3QpOwogICBjcmVkZW50aWFscy0+d3JhcHBlZCA9IHdyYXBwZWQ7CisgIHJldHVybiBjcmVkZW50aWFsc19vYmplY3Q7CiB9CiAKLSNlbmRpZgotCiAvKioKICAqIENyZWF0ZSBjb21wb3NpdGUgY3JlZGVudGlhbHMgZnJvbSB0d28gZXhpc3RpbmcgY3JlZGVudGlhbHMuCiAgKiBAcGFyYW0gQ2FsbENyZWRlbnRpYWxzIGNyZWQxIFRoZSBmaXJzdCBjcmVkZW50aWFsCkBAIC0xNTMsMjkgKzEwNCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIDEgVFNSTUxTX0NDKTsKICAgICByZXR1cm47CiAgIH0KLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKmNyZWQxID0KLSAgICAgICh3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoCi0gICAgICAgICAgY3JlZDFfb2JqIFRTUk1MU19DQyk7Ci0gIHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzICpjcmVkMiA9Ci0gICAgICAod3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KAotICAgICAgICAgIGNyZWQyX29iaiBUU1JNTFNfQ0MpOwotICBncnBjX2NhbGxfY3JlZGVudGlhbHMgKmNyZWRzID0KLSAgICAgIGdycGNfY29tcG9zaXRlX2NhbGxfY3JlZGVudGlhbHNfY3JlYXRlKGNyZWQxLT53cmFwcGVkLCBjcmVkMi0+d3JhcHBlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICB6dmFsICpjcmVkc19vYmplY3QgPSBncnBjX3BocF93cmFwX2NhbGxfY3JlZGVudGlhbHMoY3JlZHMgVFNSTUxTX0NDKTsKLSAgUkVUVVJOX0RFU1RST1lfWlZBTChjcmVkc19vYmplY3QpOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKmNyZWQxID0KICAgICBaX1dSQVBQRURfR1JQQ19DQUxMX0NSRURTX1AoY3JlZDFfb2JqKTsKICAgd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKmNyZWQyID0KICAgICBaX1dSQVBQRURfR1JQQ19DQUxMX0NSRURTX1AoY3JlZDJfb2JqKTsKICAgZ3JwY19jYWxsX2NyZWRlbnRpYWxzICpjcmVkcyA9Ci0gICAgZ3JwY19jb21wb3NpdGVfY2FsbF9jcmVkZW50aWFsc19jcmVhdGUoY3JlZDEtPndyYXBwZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZDItPndyYXBwZWQsIE5VTEwpOwotICBncnBjX3BocF93cmFwX2NhbGxfY3JlZGVudGlhbHMoY3JlZHMsIHJldHVybl92YWx1ZSk7Ci0gIFJFVFVSTl9ERVNUUk9ZX1pWQUwocmV0dXJuX3ZhbHVlKTsKLSNlbmRpZgorICAgICAgZ3JwY19jb21wb3NpdGVfY2FsbF9jcmVkZW50aWFsc19jcmVhdGUoY3JlZDEtPndyYXBwZWQsIGNyZWQyLT53cmFwcGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIHp2YWwgKmNyZWRzX29iamVjdDsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChjcmVkc19vYmplY3QpOworICBjcmVkc19vYmplY3QgPSBncnBjX3BocF93cmFwX2NhbGxfY3JlZGVudGlhbHMoY3JlZHMgVFNSTUxTX0NDKTsKKyAgUkVUVVJOX0RFU1RST1lfWlZBTChjcmVkc19vYmplY3QpOwogfQogCiAvKioKQEAgLTIxNiwxMyArMTU1LDEwIEBACiAKICAgZ3JwY19jYWxsX2NyZWRlbnRpYWxzICpjcmVkcyA9CiAgICAgZ3JwY19tZXRhZGF0YV9jcmVkZW50aWFsc19jcmVhdGVfZnJvbV9wbHVnaW4ocGx1Z2luLCBOVUxMKTsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgenZhbCAqY3JlZHNfb2JqZWN0ID0gZ3JwY19waHBfd3JhcF9jYWxsX2NyZWRlbnRpYWxzKGNyZWRzIFRTUk1MU19DQyk7CisgIHp2YWwgKmNyZWRzX29iamVjdDsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChjcmVkc19vYmplY3QpOworICBjcmVkc19vYmplY3QgPSBncnBjX3BocF93cmFwX2NhbGxfY3JlZGVudGlhbHMoY3JlZHMgVFNSTUxTX0NDKTsKICAgUkVUVVJOX0RFU1RST1lfWlZBTChjcmVkc19vYmplY3QpOwotI2Vsc2UKLSAgZ3JwY19waHBfd3JhcF9jYWxsX2NyZWRlbnRpYWxzKGNyZWRzLCByZXR1cm5fdmFsdWUpOwotICBSRVRVUk5fREVTVFJPWV9aVkFMKHJldHVybl92YWx1ZSk7Ci0jZW5kaWYKIH0KIAogLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHBsdWdpbiBjcmVkcyBBUEkgKi8KQEAgLTIzNSwzNyArMTcxLDI4IEBACiAKICAgLyogcHJlcGFyZSB0byBjYWxsIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGggaW5mbyBmcm9tIHRoZQogICAgKiBncnBjX2F1dGhfbWV0YWRhdGFfY29udGV4dCAqLworICB6dmFsICphcmc7CisgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwoYXJnKTsKKyAgb2JqZWN0X2luaXQoYXJnKTsKKyAgcGhwX2dycGNfYWRkX3Byb3BlcnR5X3N0cmluZyhhcmcsICJzZXJ2aWNlX3VybCIsIGNvbnRleHQuc2VydmljZV91cmwsIHRydWUpOworICBwaHBfZ3JwY19hZGRfcHJvcGVydHlfc3RyaW5nKGFyZywgIm1ldGhvZF9uYW1lIiwgY29udGV4dC5tZXRob2RfbmFtZSwgdHJ1ZSk7CisgIHp2YWwgKnJldHZhbDsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChyZXR2YWwpOwogI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwogICB6dmFsICoqcGFyYW1zWzFdOwotICB6dmFsICphcmc7Ci0gIHp2YWwgKnJldHZhbDsKLSAgTUFLRV9TVERfWlZBTChhcmcpOwotICBvYmplY3RfaW5pdChhcmcpOwotICBhZGRfcHJvcGVydHlfc3RyaW5nKGFyZywgInNlcnZpY2VfdXJsIiwgY29udGV4dC5zZXJ2aWNlX3VybCwgdHJ1ZSk7Ci0gIGFkZF9wcm9wZXJ0eV9zdHJpbmcoYXJnLCAibWV0aG9kX25hbWUiLCBjb250ZXh0Lm1ldGhvZF9uYW1lLCB0cnVlKTsKICAgcGFyYW1zWzBdID0gJmFyZzsKLSAgc3RhdGUtPmZjaS0+cGFyYW1fY291bnQgPSAxOwogICBzdGF0ZS0+ZmNpLT5wYXJhbXMgPSBwYXJhbXM7CiAgIHN0YXRlLT5mY2ktPnJldHZhbF9wdHJfcHRyID0gJnJldHZhbDsKICNlbHNlCi0gIHp2YWwgYXJnOwotICB6dmFsIHJldHZhbDsKLSAgb2JqZWN0X2luaXQoJmFyZyk7Ci0gIGFkZF9wcm9wZXJ0eV9zdHJpbmcoJmFyZywgInNlcnZpY2VfdXJsIiwgY29udGV4dC5zZXJ2aWNlX3VybCk7Ci0gIGFkZF9wcm9wZXJ0eV9zdHJpbmcoJmFyZywgIm1ldGhvZF9uYW1lIiwgY29udGV4dC5tZXRob2RfbmFtZSk7Ci0gIHN0YXRlLT5mY2ktPnBhcmFtX2NvdW50ID0gMTsKLSAgc3RhdGUtPmZjaS0+cGFyYW1zID0gJmFyZzsKLSAgc3RhdGUtPmZjaS0+cmV0dmFsID0gJnJldHZhbDsKKyAgc3RhdGUtPmZjaS0+cGFyYW1zID0gYXJnOworICBzdGF0ZS0+ZmNpLT5yZXR2YWwgPSByZXR2YWw7CiAjZW5kaWYKKyAgc3RhdGUtPmZjaS0+cGFyYW1fY291bnQgPSAxOwogCiAgIC8qIGNhbGwgdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24gKi8KICAgemVuZF9jYWxsX2Z1bmN0aW9uKHN0YXRlLT5mY2ksIHN0YXRlLT5mY2lfY2FjaGUgVFNSTUxTX0NDKTsKIAotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwogICBpZiAoWl9UWVBFX1AocmV0dmFsKSAhPSBJU19BUlJBWSkgewotI2Vsc2UKLSAgaWYgKFpfVFlQRV9QKCZyZXR2YWwpICE9IElTX0FSUkFZKSB7Ci0jZW5kaWYKICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwbHVnaW4gY2FsbGJhY2sgbXVzdCByZXR1cm4gbWV0YWRhdGEgYXJyYXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgIDEgVFNSTUxTX0NDKTsKQEAgLTI3MywxMSArMjAwLDcgQEAKICAgfQogCiAgIGdycGNfbWV0YWRhdGFfYXJyYXkgbWV0YWRhdGE7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CiAgIGlmICghY3JlYXRlX21ldGFkYXRhX2FycmF5KHJldHZhbCwgJm1ldGFkYXRhKSkgewotI2Vsc2UKLSAgaWYgKCFjcmVhdGVfbWV0YWRhdGFfYXJyYXkoJnJldHZhbCwgJm1ldGFkYXRhKSkgewotI2VuZGlmCiAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtZXRhZGF0YSIsIDEgVFNSTUxTX0NDKTsKICAgICBncnBjX21ldGFkYXRhX2FycmF5X2Rlc3Ryb3koJm1ldGFkYXRhKTsKQEAgLTMxMiwxMyArMjM1LDYgQEAKICAgSU5JVF9DTEFTU19FTlRSWShjZSwgIkdycGNcXENhbGxDcmVkZW50aWFscyIsIGNhbGxfY3JlZGVudGlhbHNfbWV0aG9kcyk7CiAgIGNlLmNyZWF0ZV9vYmplY3QgPSBjcmVhdGVfd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHM7CiAgIGdycGNfY2VfY2FsbF9jcmVkZW50aWFscyA9IHplbmRfcmVnaXN0ZXJfaW50ZXJuYWxfY2xhc3MoJmNlIFRTUk1MU19DQyk7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPj0gNwotICBtZW1jcHkoJmNhbGxfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnMsCi0gICAgICAgICB6ZW5kX2dldF9zdGRfb2JqZWN0X2hhbmRsZXJzKCksCi0gICAgICAgICBzaXplb2YoemVuZF9vYmplY3RfaGFuZGxlcnMpKTsKLSAgY2FsbF9jcmVkZW50aWFsc19jZV9oYW5kbGVycy5vZmZzZXQgPQotICAgIFh0T2Zmc2V0T2Yod3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMsIHN0ZCk7Ci0gIGNhbGxfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnMuZnJlZV9vYmogPQotICAgIGZyZWVfd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHM7Ci0jZW5kaWYKKyAgUEhQX0dSUENfSU5JVF9IQU5ETEVSKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9jcmVkZW50aWFsc19jZV9oYW5kbGVycyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvcGhwL2V4dC9ncnBjL2NhbGxfY3JlZGVudGlhbHMuaCBiL3NyYy9waHAvZXh0L2dycGMvY2FsbF9jcmVkZW50aWFscy5oCmluZGV4IGUwNWUxNDYuLmMxZDg1YzAgMTAwNzU1Ci0tLSBhL3NyYy9waHAvZXh0L2dycGMvY2FsbF9jcmVkZW50aWFscy5oCisrKyBiL3NyYy9waHAvZXh0L2dycGMvY2FsbF9jcmVkZW50aWFscy5oCkBAIC00OSwzNCArNDksMjcgQEAKIC8qIENsYXNzIGVudHJ5IGZvciB0aGUgQ2FsbENyZWRlbnRpYWxzIFBIUCBjbGFzcyAqLwogZXh0ZXJuIHplbmRfY2xhc3NfZW50cnkgKmdycGNfY2VfY2FsbF9jcmVkZW50aWFsczsKIAotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotCiAvKiBXcmFwcGVyIHN0cnVjdCBmb3IgZ3JwY19jYWxsX2NyZWRlbnRpYWxzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQKICAqIHdpdGggYSBQSFAgb2JqZWN0ICovCi10eXBlZGVmIHN0cnVjdCB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyB7Ci0gIHplbmRfb2JqZWN0IHN0ZDsKK1BIUF9HUlBDX1dSQVBfT0JKRUNUX1NUQVJUKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKQogICBncnBjX2NhbGxfY3JlZGVudGlhbHMgKndyYXBwZWQ7Ci19IHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzOworUEhQX0dSUENfV1JBUF9PQkpFQ1RfRU5EKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKQorCisjaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CisKKyNkZWZpbmUgWl9XUkFQUEVEX0dSUENfQ0FMTF9DUkVEU19QKHp2KSBcCisgICh3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoenYgVFNSTUxTX0NDKQogCiAjZWxzZQogCi0vKiBXcmFwcGVyIHN0cnVjdCBmb3IgZ3JwY19jYWxsX2NyZWRlbnRpYWxzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQKLSAqIHdpdGggYSBQSFAgb2JqZWN0ICovCi10eXBlZGVmIHN0cnVjdCB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscyB7Ci0gIGdycGNfY2FsbF9jcmVkZW50aWFscyAqd3JhcHBlZDsKLSAgemVuZF9vYmplY3Qgc3RkOwotfSB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFsczsKLQogc3RhdGljIGlubGluZSB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFscwotKndyYXBwZWRfZ3JwY19jYWxsX2NyZWRzX2Zyb21fb2JqKHplbmRfb2JqZWN0ICpvYmopIHsKLSAgcmV0dXJuCi0gICAgKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKikoKGNoYXIqKShvYmopIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYdE9mZnNldE9mKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkKSk7Cisqd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHNfZnJvbV9vYmooemVuZF9vYmplY3QgKm9iaikgeworICByZXR1cm4gKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzKikoCisgICAgICAoY2hhciopKG9iaikgLSBYdE9mZnNldE9mKHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzLCBzdGQpKTsKIH0KIAotI2RlZmluZSBaX1dSQVBQRURfR1JQQ19DQUxMX0NSRURTX1AoenYpICAgICAgICAgICBcCi0gIHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRzX2Zyb21fb2JqKFpfT0JKX1AoKHp2KSkpCisjZGVmaW5lIFpfV1JBUFBFRF9HUlBDX0NBTExfQ1JFRFNfUCh6dikgXAorICB3cmFwcGVkX2dycGNfY2FsbF9jcmVkZW50aWFsc19mcm9tX29iaihaX09CSl9QKCh6dikpKQogCiAjZW5kaWYgLyogUEhQX01BSk9SX1ZFUlNJT04gKi8KIApkaWZmIC0tZ2l0IGEvc3JjL3BocC9leHQvZ3JwYy9jaGFubmVsLmMgYi9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWwuYwppbmRleCA2NzM3ZTM0Li5iNWEyYzlmIDEwMDY0NAotLS0gYS9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWwuYworKysgYi9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWwuYwpAQCAtNTYsMTIzICs1Niw1MiBAQAogI2luY2x1ZGUgInRpbWV2YWwuaCIKIAogemVuZF9jbGFzc19lbnRyeSAqZ3JwY19jZV9jaGFubmVsOwotCi0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CisjaWYgUEhQX01BSk9SX1ZFUlNJT04gPj0gNworc3RhdGljIHplbmRfb2JqZWN0X2hhbmRsZXJzIGNoYW5uZWxfY2VfaGFuZGxlcnM7CisjZW5kaWYKIAogLyogRnJlZXMgYW5kIGRlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jaGFubmVsICovCi12b2lkIGZyZWVfd3JhcHBlZF9ncnBjX2NoYW5uZWwodm9pZCAqb2JqZWN0IFRTUk1MU19EQykgewotICB3cmFwcGVkX2dycGNfY2hhbm5lbCAqY2hhbm5lbCA9ICh3cmFwcGVkX2dycGNfY2hhbm5lbCAqKW9iamVjdDsKLSAgaWYgKGNoYW5uZWwtPndyYXBwZWQgIT0gTlVMTCkgewotICAgIGdycGNfY2hhbm5lbF9kZXN0cm95KGNoYW5uZWwtPndyYXBwZWQpOworUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfU1RBUlQod3JhcHBlZF9ncnBjX2NoYW5uZWwpCisgIGlmIChwLT53cmFwcGVkICE9IE5VTEwpIHsKKyAgICBncnBjX2NoYW5uZWxfZGVzdHJveShwLT53cmFwcGVkKTsKICAgfQotICB6ZW5kX29iamVjdF9zdGRfZHRvcigmY2hhbm5lbC0+c3RkIFRTUk1MU19DQyk7Ci0gIGVmcmVlKGNoYW5uZWwpOwotfQorUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfRU5EKCkKIAogLyogSW5pdGlhbGl6ZXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NoYW5uZWwgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuCiAgKiBvYmplY3Qgb2YgYSBjbGFzcyBzcGVjaWZpZWQgYnkgY2xhc3NfdHlwZSAqLwotemVuZF9vYmplY3RfdmFsdWUgY3JlYXRlX3dyYXBwZWRfZ3JwY19jaGFubmVsKHplbmRfY2xhc3NfZW50cnkgKmNsYXNzX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNSTUxTX0RDKSB7Ci0gIHplbmRfb2JqZWN0X3ZhbHVlIHJldHZhbDsKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmludGVybjsKLSAgaW50ZXJuID0gKHdyYXBwZWRfZ3JwY19jaGFubmVsICopZW1hbGxvYyhzaXplb2Yod3JhcHBlZF9ncnBjX2NoYW5uZWwpKTsKLSAgbWVtc2V0KGludGVybiwgMCwgc2l6ZW9mKHdyYXBwZWRfZ3JwY19jaGFubmVsKSk7CitwaHBfZ3JwY196ZW5kX29iamVjdCBjcmVhdGVfd3JhcHBlZF9ncnBjX2NoYW5uZWwoemVuZF9jbGFzc19lbnRyeSAqY2xhc3NfdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTUk1MU19EQykgeworICBQSFBfR1JQQ19BTExPQ19DTEFTU19PQkpFQ1Qod3JhcHBlZF9ncnBjX2NoYW5uZWwpOwogICB6ZW5kX29iamVjdF9zdGRfaW5pdCgmaW50ZXJuLT5zdGQsIGNsYXNzX3R5cGUgVFNSTUxTX0NDKTsKICAgb2JqZWN0X3Byb3BlcnRpZXNfaW5pdCgmaW50ZXJuLT5zdGQsIGNsYXNzX3R5cGUpOwotICByZXR2YWwuaGFuZGxlID0gemVuZF9vYmplY3RzX3N0b3JlX3B1dCgKLSAgICAgIGludGVybiwgKHplbmRfb2JqZWN0c19zdG9yZV9kdG9yX3QpemVuZF9vYmplY3RzX2Rlc3Ryb3lfb2JqZWN0LAotICAgICAgZnJlZV93cmFwcGVkX2dycGNfY2hhbm5lbCwgTlVMTCBUU1JNTFNfQ0MpOwotICByZXR2YWwuaGFuZGxlcnMgPSB6ZW5kX2dldF9zdGRfb2JqZWN0X2hhbmRsZXJzKCk7Ci0gIHJldHVybiByZXR2YWw7CisgIFBIUF9HUlBDX0ZSRUVfQ0xBU1NfT0JKRUNUKHdyYXBwZWRfZ3JwY19jaGFubmVsLCBjaGFubmVsX2NlX2hhbmRsZXJzKTsKIH0KIAogdm9pZCBwaHBfZ3JwY19yZWFkX2FyZ3NfYXJyYXkoenZhbCAqYXJnc19hcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9hcmdzICphcmdzIFRTUk1MU19EQykgewogICBIYXNoVGFibGUgKmFycmF5X2hhc2g7Ci0gIEhhc2hQb3NpdGlvbiBhcnJheV9wb2ludGVyOwogICBpbnQgYXJnc19pbmRleDsKLSAgenZhbCAqKmRhdGE7Ci0gIGNoYXIgKmtleTsKLSAgdWludCBrZXlfbGVuOwotICB1bG9uZyBpbmRleDsKICAgYXJyYXlfaGFzaCA9IFpfQVJSVkFMX1AoYXJnc19hcnJheSk7Ci0gIGFyZ3MtPm51bV9hcmdzID0gemVuZF9oYXNoX251bV9lbGVtZW50cyhhcnJheV9oYXNoKTsKLSAgYXJncy0+YXJncyA9IGVjYWxsb2MoYXJncy0+bnVtX2FyZ3MsIHNpemVvZihncnBjX2FyZykpOwotICBhcmdzX2luZGV4ID0gMDsKLSAgZm9yICh6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldF9leChhcnJheV9oYXNoLCAmYXJyYXlfcG9pbnRlcik7Ci0gICAgICAgemVuZF9oYXNoX2dldF9jdXJyZW50X2RhdGFfZXgoYXJyYXlfaGFzaCwgKHZvaWQgKiopJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFycmF5X3BvaW50ZXIpID09IFNVQ0NFU1M7Ci0gICAgICAgemVuZF9oYXNoX21vdmVfZm9yd2FyZF9leChhcnJheV9oYXNoLCAmYXJyYXlfcG9pbnRlcikpIHsKLSAgICBpZiAoemVuZF9oYXNoX2dldF9jdXJyZW50X2tleV9leChhcnJheV9oYXNoLCAma2V5LCAma2V5X2xlbiwgJmluZGV4LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcnJheV9wb2ludGVyKSAhPSBIQVNIX0tFWV9JU19TVFJJTkcpIHsKLSAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJncyBrZXlzIG11c3QgYmUgc3RyaW5ncyIsIDEgVFNSTUxTX0NDKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXJncy0+YXJnc1thcmdzX2luZGV4XS5rZXkgPSBrZXk7Ci0gICAgc3dpdGNoIChaX1RZUEVfUCgqZGF0YSkpIHsKLSAgICBjYXNlIElTX0xPTkc6Ci0gICAgICBhcmdzLT5hcmdzW2FyZ3NfaW5kZXhdLnZhbHVlLmludGVnZXIgPSAoaW50KVpfTFZBTF9QKCpkYXRhKTsKLSAgICAgIGFyZ3MtPmFyZ3NbYXJnc19pbmRleF0udHlwZSA9IEdSUENfQVJHX0lOVEVHRVI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIElTX1NUUklORzoKLSAgICAgIGFyZ3MtPmFyZ3NbYXJnc19pbmRleF0udmFsdWUuc3RyaW5nID0gWl9TVFJWQUxfUCgqZGF0YSk7Ci0gICAgICBhcmdzLT5hcmdzW2FyZ3NfaW5kZXhdLnR5cGUgPSBHUlBDX0FSR19TVFJJTkc7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmdzIHZhbHVlcyBtdXN0IGJlIGludCBvciBzdHJpbmciLCAxIFRTUk1MU19DQyk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIGFyZ3NfaW5kZXgrKzsKLSAgfQotfQotCi0jZWxzZQotCi1zdGF0aWMgemVuZF9vYmplY3RfaGFuZGxlcnMgY2hhbm5lbF9jZV9oYW5kbGVyczsKLQotLyogRnJlZXMgYW5kIGRlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jaGFubmVsICovCi1zdGF0aWMgdm9pZCBmcmVlX3dyYXBwZWRfZ3JwY19jaGFubmVsKHplbmRfb2JqZWN0ICpvYmplY3QpIHsKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPSB3cmFwcGVkX2dycGNfY2hhbm5lbF9mcm9tX29iaihvYmplY3QpOwotICBpZiAoY2hhbm5lbC0+d3JhcHBlZCAhPSBOVUxMKSB7Ci0gICAgZ3JwY19jaGFubmVsX2Rlc3Ryb3koY2hhbm5lbC0+d3JhcHBlZCk7Ci0gIH0KLSAgemVuZF9vYmplY3Rfc3RkX2R0b3IoJmNoYW5uZWwtPnN0ZCk7Ci19Ci0KLS8qIEluaXRpYWxpemVzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jaGFubmVsIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbgotICogb2JqZWN0IG9mIGEgY2xhc3Mgc3BlY2lmaWVkIGJ5IGNsYXNzX3R5cGUgKi8KLXplbmRfb2JqZWN0ICpjcmVhdGVfd3JhcHBlZF9ncnBjX2NoYW5uZWwoemVuZF9jbGFzc19lbnRyeSAqY2xhc3NfdHlwZSkgewotICB3cmFwcGVkX2dycGNfY2hhbm5lbCAqaW50ZXJuOwotICBpbnRlcm4gPSBlY2FsbG9jKDEsIHNpemVvZih3cmFwcGVkX2dycGNfY2hhbm5lbCkgKwotICAgICAgICAgICAgICAgICAgIHplbmRfb2JqZWN0X3Byb3BlcnRpZXNfc2l6ZShjbGFzc190eXBlKSk7Ci0gIHplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0gIG9iamVjdF9wcm9wZXJ0aWVzX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLSAgaW50ZXJuLT5zdGQuaGFuZGxlcnMgPSAmY2hhbm5lbF9jZV9oYW5kbGVyczsKLSAgcmV0dXJuICZpbnRlcm4tPnN0ZDsKLX0KLQotdm9pZCBwaHBfZ3JwY19yZWFkX2FyZ3NfYXJyYXkoenZhbCAqYXJnc19hcnJheSwgZ3JwY19jaGFubmVsX2FyZ3MgKmFyZ3MpIHsKLSAgSGFzaFRhYmxlICphcnJheV9oYXNoOwotICBpbnQgYXJnc19pbmRleDsKLSAgenZhbCAqZGF0YTsKLSAgemVuZF9zdHJpbmcgKmtleTsKLSAgYXJyYXlfaGFzaCA9IEhBU0hfT0YoYXJnc19hcnJheSk7CiAgIGlmICghYXJyYXlfaGFzaCkgewogICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgImFycmF5X2hhc2ggaXMgTlVMTCIsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICJhcnJheV9oYXNoIGlzIE5VTEwiLCAxIFRTUk1MU19DQyk7CiAgICAgcmV0dXJuOwogICB9CiAgIGFyZ3MtPm51bV9hcmdzID0gemVuZF9oYXNoX251bV9lbGVtZW50cyhhcnJheV9oYXNoKTsKICAgYXJncy0+YXJncyA9IGVjYWxsb2MoYXJncy0+bnVtX2FyZ3MsIHNpemVvZihncnBjX2FyZykpOwogICBhcmdzX2luZGV4ID0gMDsKLSAgWkVORF9IQVNIX0ZPUkVBQ0hfU1RSX0tFWV9WQUwoYXJyYXlfaGFzaCwga2V5LCBkYXRhKSB7Ci0gICAgaWYgKGtleSA9PSBOVUxMKSB7CisKKyAgY2hhciAqa2V5ID0gTlVMTDsKKyAgenZhbCAqZGF0YTsKKyAgaW50IGtleV90eXBlOworCisgIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9TVFJfS0VZX1ZBTF9TVEFSVChhcnJheV9oYXNoLCBrZXksIGtleV90eXBlLCBkYXRhKQorICAgIGlmIChrZXlfdHlwZSAhPSBIQVNIX0tFWV9JU19TVFJJTkcpIHsKICAgICAgIHplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJncyBrZXlzIG11c3QgYmUgc3RyaW5ncyIsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3Mga2V5cyBtdXN0IGJlIHN0cmluZ3MiLCAxIFRTUk1MU19DQyk7CisgICAgICByZXR1cm47CiAgICAgfQotICAgIGFyZ3MtPmFyZ3NbYXJnc19pbmRleF0ua2V5ID0gWlNUUl9WQUwoa2V5KTsKKyAgICBhcmdzLT5hcmdzW2FyZ3NfaW5kZXhdLmtleSA9IGtleTsKICAgICBzd2l0Y2ggKFpfVFlQRV9QKGRhdGEpKSB7CiAgICAgY2FzZSBJU19MT05HOgogICAgICAgYXJncy0+YXJnc1thcmdzX2luZGV4XS52YWx1ZS5pbnRlZ2VyID0gKGludClaX0xWQUxfUChkYXRhKTsKQEAgLTE4NCwxNSArMTEzLDEzIEBACiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmdzIHZhbHVlcyBtdXN0IGJlIGludCBvciBzdHJpbmciLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmdzIHZhbHVlcyBtdXN0IGJlIGludCBvciBzdHJpbmciLCAxIFRTUk1MU19DQyk7CiAgICAgICByZXR1cm47CiAgICAgfQogICAgIGFyZ3NfaW5kZXgrKzsKLSAgfSBaRU5EX0hBU0hfRk9SRUFDSF9FTkQoKTsKKyAgUEhQX0dSUENfSEFTSF9GT1JFQUNIX0VORCgpCiB9CiAKLSNlbmRpZgotCiAvKioKICAqIENvbnN0cnVjdCBhbiBpbnN0YW5jZSBvZiB0aGUgQ2hhbm5lbCBjbGFzcy4gSWYgdGhlICRhcmdzIGFycmF5IGNvbnRhaW5zIGEKICAqICJjcmVkZW50aWFscyIga2V5IG1hcHBpbmcgdG8gYSBDaGFubmVsQ3JlZGVudGlhbHMgb2JqZWN0LCBhIHNlY3VyZSBjaGFubmVsCkBAIC0yMDEsMTggKzEyOCwxMCBAQAogICogQHBhcmFtIGFycmF5ICRhcmdzIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgQ2hhbm5lbCAob3B0aW9uYWwpCiAgKi8KIFBIUF9NRVRIT0QoQ2hhbm5lbCwgX19jb25zdHJ1Y3QpIHsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPQotICAgICAgKHdyYXBwZWRfZ3JwY19jaGFubmVsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdCgKLSAgICAgICAgICBnZXRUaGlzKCkgVFNSTUxTX0NDKTsKLSAgenZhbCAqKmNyZWRzX29iaiA9IE5VTEw7Ci0gIGludCB0YXJnZXRfbGVuZ3RoOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPSBaX1dSQVBQRURfR1JQQ19DSEFOTkVMX1AoZ2V0VGhpcygpKTsKICAgenZhbCAqY3JlZHNfb2JqID0gTlVMTDsKLSAgc2l6ZV90IHRhcmdldF9sZW5ndGg7Ci0jZW5kaWYKICAgY2hhciAqdGFyZ2V0OworICBwaHBfZ3JwY19pbnQgdGFyZ2V0X2xlbmd0aDsKICAgenZhbCAqYXJnc19hcnJheSA9IE5VTEw7CiAgIGdycGNfY2hhbm5lbF9hcmdzIGFyZ3M7CiAgIEhhc2hUYWJsZSAqYXJyYXlfaGFzaDsKQEAgLTIyNSw0MyArMTQ0LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoYW5uZWwgZXhwZWN0cyBhIHN0cmluZyBhbmQgYW4gYXJyYXkiLCAxIFRTUk1MU19DQyk7CiAgICAgcmV0dXJuOwogICB9Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CiAgIGFycmF5X2hhc2ggPSBaX0FSUlZBTF9QKGFyZ3NfYXJyYXkpOwotICBpZiAoemVuZF9oYXNoX2ZpbmQoYXJyYXlfaGFzaCwgImNyZWRlbnRpYWxzIiwgc2l6ZW9mKCJjcmVkZW50aWFscyIpLAorICBpZiAocGhwX2dycGNfemVuZF9oYXNoX2ZpbmQoYXJyYXlfaGFzaCwgImNyZWRlbnRpYWxzIiwgc2l6ZW9mKCJjcmVkZW50aWFscyIpLAogICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKiopJmNyZWRzX29iaikgPT0gU1VDQ0VTUykgewotICAgIGlmIChaX1RZUEVfUCgqY3JlZHNfb2JqKSA9PSBJU19OVUxMKSB7CisgICAgaWYgKFpfVFlQRV9QKGNyZWRzX29iaikgPT0gSVNfTlVMTCkgewogICAgICAgY3JlZHMgPSBOVUxMOwotICAgICAgemVuZF9oYXNoX2RlbChhcnJheV9oYXNoLCAiY3JlZGVudGlhbHMiLCAxMik7Ci0gICAgfSBlbHNlIGlmICh6ZW5kX2dldF9jbGFzc19lbnRyeSgqY3JlZHNfb2JqIFRTUk1MU19DQykgIT0KLSAgICAgICAgZ3JwY19jZV9jaGFubmVsX2NyZWRlbnRpYWxzKSB7CisgICAgICBwaHBfZ3JwY196ZW5kX2hhc2hfZGVsKGFycmF5X2hhc2gsICJjcmVkZW50aWFscyIsIHNpemVvZigiY3JlZGVudGlhbHMiKSk7CisgICAgfSBlbHNlIGlmIChQSFBfR1JQQ19HRVRfQ0xBU1NfRU5UUlkoY3JlZHNfb2JqKSAhPQorICAgICAgICAgICAgICAgZ3JwY19jZV9jaGFubmVsX2NyZWRlbnRpYWxzKSB7CiAgICAgICB6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyZWRlbnRpYWxzIG11c3QgYmUgYSBDaGFubmVsQ3JlZGVudGlhbHMgb2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgVFNSTUxTX0NDKTsKICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgewotICAgICAgY3JlZHMgPSAod3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KAotICAgICAgICAgICpjcmVkc19vYmogVFNSTUxTX0NDKTsKLSAgICAgIHplbmRfaGFzaF9kZWwoYXJyYXlfaGFzaCwgImNyZWRlbnRpYWxzIiwgMTIpOwotICAgIH0KLSAgfQotI2Vsc2UKLSAgYXJyYXlfaGFzaCA9IEhBU0hfT0YoYXJnc19hcnJheSk7Ci0gIGlmICgoY3JlZHNfb2JqID0gemVuZF9oYXNoX3N0cl9maW5kKGFycmF5X2hhc2gsICJjcmVkZW50aWFscyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigiY3JlZGVudGlhbHMiKSAtIDEpKSAhPSBOVUxMKSB7Ci0gICAgaWYgKFpfVFlQRV9QKGNyZWRzX29iaikgPT0gSVNfTlVMTCkgewotICAgICAgY3JlZHMgPSBOVUxMOwotICAgICAgemVuZF9oYXNoX3N0cl9kZWwoYXJyYXlfaGFzaCwgImNyZWRlbnRpYWxzIiwgc2l6ZW9mKCJjcmVkZW50aWFscyIpIC0gMSk7Ci0gICAgfSBlbHNlIGlmIChaX09CSl9QKGNyZWRzX29iaiktPmNlICE9IGdycGNfY2VfY2hhbm5lbF9jcmVkZW50aWFscykgewotICAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmVkZW50aWFscyBtdXN0IGJlIGEgQ2hhbm5lbENyZWRlbnRpYWxzIG9iamVjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKLSAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgewogICAgICAgY3JlZHMgPSBaX1dSQVBQRURfR1JQQ19DSEFOTkVMX0NSRURTX1AoY3JlZHNfb2JqKTsKLSAgICAgIHplbmRfaGFzaF9zdHJfZGVsKGFycmF5X2hhc2gsICJjcmVkZW50aWFscyIsIHNpemVvZigiY3JlZGVudGlhbHMiKSAtIDEpOworICAgICAgcGhwX2dycGNfemVuZF9oYXNoX2RlbChhcnJheV9oYXNoLCAiY3JlZGVudGlhbHMiLCBzaXplb2YoImNyZWRlbnRpYWxzIikpOwogICAgIH0KICAgfQotI2VuZGlmCiAgIHBocF9ncnBjX3JlYWRfYXJnc19hcnJheShhcmdzX2FycmF5LCAmYXJncyBUU1JNTFNfQ0MpOwogICBpZiAoY3JlZHMgPT0gTlVMTCkgewogICAgIGNoYW5uZWwtPndyYXBwZWQgPSBncnBjX2luc2VjdXJlX2NoYW5uZWxfY3JlYXRlKHRhcmdldCwgJmFyZ3MsIE5VTEwpOwpAQCAtMjc3LDE0ICsxNzYsOCBAQAogICogQHJldHVybiBzdHJpbmcgVGhlIFVSSSBvZiB0aGUgZW5kcG9pbnQKICAqLwogUEhQX01FVEhPRChDaGFubmVsLCBnZXRUYXJnZXQpIHsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPQotICAgICh3cmFwcGVkX2dycGNfY2hhbm5lbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoZ2V0VGhpcygpIFRTUk1MU19DQyk7Ci0gIFJFVFVSTl9TVFJJTkcoZ3JwY19jaGFubmVsX2dldF90YXJnZXQoY2hhbm5lbC0+d3JhcHBlZCksIDEpOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPSBaX1dSQVBQRURfR1JQQ19DSEFOTkVMX1AoZ2V0VGhpcygpKTsKLSAgUkVUVVJOX1NUUklORyhncnBjX2NoYW5uZWxfZ2V0X3RhcmdldChjaGFubmVsLT53cmFwcGVkKSk7Ci0jZW5kaWYKKyAgUEhQX0dSUENfUkVUVVJOX1NUUklORyhncnBjX2NoYW5uZWxfZ2V0X3RhcmdldChjaGFubmVsLT53cmFwcGVkKSwgMSk7CiB9CiAKIC8qKgpAQCAtMjkzLDEyICsxODYsNyBAQAogICogQHJldHVybiBsb25nIFRoZSBncnBjIGNvbm5lY3Rpdml0eSBzdGF0ZQogICovCiBQSFBfTUVUSE9EKENoYW5uZWwsIGdldENvbm5lY3Rpdml0eVN0YXRlKSB7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIHdyYXBwZWRfZ3JwY19jaGFubmVsICpjaGFubmVsID0KLSAgICAgICh3cmFwcGVkX2dycGNfY2hhbm5lbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoZ2V0VGhpcygpIFRTUk1MU19DQyk7Ci0jZWxzZQogICB3cmFwcGVkX2dycGNfY2hhbm5lbCAqY2hhbm5lbCA9IFpfV1JBUFBFRF9HUlBDX0NIQU5ORUxfUChnZXRUaGlzKCkpOwotI2VuZGlmCiAgIGJvb2wgdHJ5X3RvX2Nvbm5lY3QgPSBmYWxzZTsKIAogICAvKiAifGIiID09IDEgb3B0aW9uYWwgYm9vbCAqLwpAQCAtMzIwLDMyICsyMDgsMTkgQEAKICAqICAgICAgICAgICAgICBiZWZvcmUgZGVhZGxpbmUKICAqLwogUEhQX01FVEhPRChDaGFubmVsLCB3YXRjaENvbm5lY3Rpdml0eVN0YXRlKSB7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIGxvbmcgbGFzdF9zdGF0ZTsKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPQotICAgICAgKHdyYXBwZWRfZ3JwY19jaGFubmVsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdChnZXRUaGlzKCkgVFNSTUxTX0NDKTsKLSNlbHNlCi0gIHplbmRfbG9uZyBsYXN0X3N0YXRlOwogICB3cmFwcGVkX2dycGNfY2hhbm5lbCAqY2hhbm5lbCA9IFpfV1JBUFBFRF9HUlBDX0NIQU5ORUxfUChnZXRUaGlzKCkpOwotI2VuZGlmCisgIHBocF9ncnBjX2xvbmcgbGFzdF9zdGF0ZTsKICAgenZhbCAqZGVhZGxpbmVfb2JqOwogCiAgIC8qICJsTyIgPT0gMSBsb25nIDEgb2JqZWN0ICovCiAgIGlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgImxPIiwKICAgICAgICAgICAmbGFzdF9zdGF0ZSwgJmRlYWRsaW5lX29iaiwgZ3JwY19jZV90aW1ldmFsKSA9PSBGQUlMVVJFKSB7CiAgICAgemVuZF90aHJvd19leGNlcHRpb24oc3BsX2NlX0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiwKLSAgICAgICAgIndhdGNoQ29ubmVjdGl2aXR5U3RhdGUgZXhwZWN0cyAxIGxvbmcgMSB0aW1ldmFsIiwKLSAgICAgICAgMSBUU1JNTFNfQ0MpOworICAgICAgICAid2F0Y2hDb25uZWN0aXZpdHlTdGF0ZSBleHBlY3RzIDEgbG9uZyAxIHRpbWV2YWwiLCAxIFRTUk1MU19DQyk7CiAgICAgcmV0dXJuOwogICB9CiAKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKmRlYWRsaW5lID0KLSAgICAgICh3cmFwcGVkX2dycGNfdGltZXZhbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoCi0gICAgICAgICAgZGVhZGxpbmVfb2JqIFRTUk1MU19DQyk7Ci0jZWxzZQogICB3cmFwcGVkX2dycGNfdGltZXZhbCAqZGVhZGxpbmUgPSBaX1dSQVBQRURfR1JQQ19USU1FVkFMX1AoZGVhZGxpbmVfb2JqKTsKLSNlbmRpZgogICBncnBjX2NoYW5uZWxfd2F0Y2hfY29ubmVjdGl2aXR5X3N0YXRlKGNoYW5uZWwtPndyYXBwZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdycGNfY29ubmVjdGl2aXR5X3N0YXRlKWxhc3Rfc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVhZGxpbmUtPndyYXBwZWQsIGNvbXBsZXRpb25fcXVldWUsCkBAIC0zNjAsMTIgKzIzNSw3IEBACiAgKiBDbG9zZSB0aGUgY2hhbm5lbAogICovCiBQSFBfTUVUSE9EKENoYW5uZWwsIGNsb3NlKSB7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIHdyYXBwZWRfZ3JwY19jaGFubmVsICpjaGFubmVsID0KLSAgICAod3JhcHBlZF9ncnBjX2NoYW5uZWwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX2NoYW5uZWwgKmNoYW5uZWwgPSBaX1dSQVBQRURfR1JQQ19DSEFOTkVMX1AoZ2V0VGhpcygpKTsKLSNlbmRpZgogICBpZiAoY2hhbm5lbC0+d3JhcHBlZCAhPSBOVUxMKSB7CiAgICAgZ3JwY19jaGFubmVsX2Rlc3Ryb3koY2hhbm5lbC0+d3JhcHBlZCk7CiAgICAgY2hhbm5lbC0+d3JhcHBlZCA9IE5VTEw7CkBAIC0zODYsMTEgKzI1Niw1IEBACiAgIElOSVRfQ0xBU1NfRU5UUlkoY2UsICJHcnBjXFxDaGFubmVsIiwgY2hhbm5lbF9tZXRob2RzKTsKICAgY2UuY3JlYXRlX29iamVjdCA9IGNyZWF0ZV93cmFwcGVkX2dycGNfY2hhbm5lbDsKICAgZ3JwY19jZV9jaGFubmVsID0gemVuZF9yZWdpc3Rlcl9pbnRlcm5hbF9jbGFzcygmY2UgVFNSTUxTX0NDKTsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA+PSA3Ci0gIG1lbWNweSgmY2hhbm5lbF9jZV9oYW5kbGVycywgemVuZF9nZXRfc3RkX29iamVjdF9oYW5kbGVycygpLAotICAgICAgICAgc2l6ZW9mKHplbmRfb2JqZWN0X2hhbmRsZXJzKSk7Ci0gIGNoYW5uZWxfY2VfaGFuZGxlcnMub2Zmc2V0ID0KLSAgICBYdE9mZnNldE9mKHdyYXBwZWRfZ3JwY19jaGFubmVsLCBzdGQpOwotICBjaGFubmVsX2NlX2hhbmRsZXJzLmZyZWVfb2JqID0gZnJlZV93cmFwcGVkX2dycGNfY2hhbm5lbDsKLSNlbmRpZgorICBQSFBfR1JQQ19JTklUX0hBTkRMRVIod3JhcHBlZF9ncnBjX2NoYW5uZWwsIGNoYW5uZWxfY2VfaGFuZGxlcnMpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3BocC9leHQvZ3JwYy9jaGFubmVsLmggYi9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWwuaAppbmRleCBlYTVlZmVhLi4wYjgxNTY1IDEwMDc1NQotLS0gYS9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWwuaAorKysgYi9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWwuaApAQCAtNDgsMjkgKzQ4LDI1IEBACiAvKiBDbGFzcyBlbnRyeSBmb3IgdGhlIFBIUCBDaGFubmVsIGNsYXNzICovCiBleHRlcm4gemVuZF9jbGFzc19lbnRyeSAqZ3JwY19jZV9jaGFubmVsOwogCisvKiBXcmFwcGVyIHN0cnVjdCBmb3IgZ3JwY19jaGFubmVsIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIFBIUCBvYmplY3QgKi8KK1BIUF9HUlBDX1dSQVBfT0JKRUNUX1NUQVJUKHdyYXBwZWRfZ3JwY19jaGFubmVsKQorICBncnBjX2NoYW5uZWwgKndyYXBwZWQ7CitQSFBfR1JQQ19XUkFQX09CSkVDVF9FTkQod3JhcHBlZF9ncnBjX2NoYW5uZWwpCisKICNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKIAotLyogV3JhcHBlciBzdHJ1Y3QgZm9yIGdycGNfY2hhbm5lbCB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBQSFAgb2JqZWN0ICovCi10eXBlZGVmIHN0cnVjdCB3cmFwcGVkX2dycGNfY2hhbm5lbCB7Ci0gIHplbmRfb2JqZWN0IHN0ZDsKLSAgZ3JwY19jaGFubmVsICp3cmFwcGVkOwotfSB3cmFwcGVkX2dycGNfY2hhbm5lbDsKKyNkZWZpbmUgWl9XUkFQUEVEX0dSUENfQ0hBTk5FTF9QKHp2KSBcCisgICh3cmFwcGVkX2dycGNfY2hhbm5lbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoenYgVFNSTUxTX0NDKQogCiAjZWxzZQogCi0vKiBXcmFwcGVyIHN0cnVjdCBmb3IgZ3JwY19jaGFubmVsIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIFBIUCBvYmplY3QgKi8KLXR5cGVkZWYgc3RydWN0IHdyYXBwZWRfZ3JwY19jaGFubmVsIHsKLSAgZ3JwY19jaGFubmVsICp3cmFwcGVkOwotICB6ZW5kX29iamVjdCBzdGQ7Ci19IHdyYXBwZWRfZ3JwY19jaGFubmVsOwotCiBzdGF0aWMgaW5saW5lIHdyYXBwZWRfZ3JwY19jaGFubmVsCiAqd3JhcHBlZF9ncnBjX2NoYW5uZWxfZnJvbV9vYmooemVuZF9vYmplY3QgKm9iaikgewogICByZXR1cm4gKHdyYXBwZWRfZ3JwY19jaGFubmVsKikoKGNoYXIqKShvYmopIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFh0T2Zmc2V0T2Yod3JhcHBlZF9ncnBjX2NoYW5uZWwsIHN0ZCkpOwogfQogCi0jZGVmaW5lIFpfV1JBUFBFRF9HUlBDX0NIQU5ORUxfUCh6dikgICAgICAgICAgICBcCisjZGVmaW5lIFpfV1JBUFBFRF9HUlBDX0NIQU5ORUxfUCh6dikgXAogICB3cmFwcGVkX2dycGNfY2hhbm5lbF9mcm9tX29iaihaX09CSl9QKCh6dikpKQogCiAjZW5kaWYgLyogUEhQX01BSk9SX1ZFUlNJT04gKi8KZGlmZiAtLWdpdCBhL3NyYy9waHAvZXh0L2dycGMvY2hhbm5lbF9jcmVkZW50aWFscy5jIGIvc3JjL3BocC9leHQvZ3JwYy9jaGFubmVsX2NyZWRlbnRpYWxzLmMKaW5kZXggMTZiYTAzNi4uMGIzNTZhYSAxMDA2NDQKLS0tIGEvc3JjL3BocC9leHQvZ3JwYy9jaGFubmVsX2NyZWRlbnRpYWxzLmMKKysrIGIvc3JjL3BocC9leHQvZ3JwYy9jaGFubmVsX2NyZWRlbnRpYWxzLmMKQEAgLTUyLDYgKzUyLDkgQEAKICNpbmNsdWRlIDxncnBjL2dycGNfc2VjdXJpdHkuaD4KIAogemVuZF9jbGFzc19lbnRyeSAqZ3JwY19jZV9jaGFubmVsX2NyZWRlbnRpYWxzOworI2lmIFBIUF9NQUpPUl9WRVJTSU9OID49IDcKK3N0YXRpYyB6ZW5kX29iamVjdF9oYW5kbGVycyBjaGFubmVsX2NyZWRlbnRpYWxzX2NlX2hhbmRsZXJzOworI2VuZGlmCiBzdGF0aWMgY2hhciAqZGVmYXVsdF9wZW1fcm9vdF9jZXJ0cyA9IE5VTEw7CiAKIHN0YXRpYyBncnBjX3NzbF9yb290c19vdmVycmlkZV9yZXN1bHQgZ2V0X3NzbF9yb290c19vdmVycmlkZSgKQEAgLTYzLDg4ICs2NiwzNSBAQAogICByZXR1cm4gR1JQQ19TU0xfUk9PVFNfT1ZFUlJJREVfT0s7CiB9CiAKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLQogLyogRnJlZXMgYW5kIGRlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICovCi12b2lkIGZyZWVfd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHModm9pZCAqb2JqZWN0IFRTUk1MU19EQykgewotICB3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscyAqY3JlZHMgPQotICAgICAgKHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICopb2JqZWN0OwotICBpZiAoY3JlZHMtPndyYXBwZWQgIT0gTlVMTCkgewotICAgIGdycGNfY2hhbm5lbF9jcmVkZW50aWFsc19yZWxlYXNlKGNyZWRzLT53cmFwcGVkKTsKK1BIUF9HUlBDX0ZSRUVfV1JBUFBFRF9GVU5DX1NUQVJUKHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzKQorICBpZiAocC0+d3JhcHBlZCAhPSBOVUxMKSB7CisgICAgZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzX3JlbGVhc2UocC0+d3JhcHBlZCk7CiAgIH0KLSAgemVuZF9vYmplY3Rfc3RkX2R0b3IoJmNyZWRzLT5zdGQgVFNSTUxTX0NDKTsKLSAgZWZyZWUoY3JlZHMpOwotfQorUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfRU5EKCkKIAogLyogSW5pdGlhbGl6ZXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgdG8gYmUKICAqIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmplY3Qgb2YgYSBjbGFzcyBzcGVjaWZpZWQgYnkgY2xhc3NfdHlwZSAqLwotemVuZF9vYmplY3RfdmFsdWUgY3JlYXRlX3dyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzKAorcGhwX2dycGNfemVuZF9vYmplY3QgY3JlYXRlX3dyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzKAogICAgIHplbmRfY2xhc3NfZW50cnkgKmNsYXNzX3R5cGUgVFNSTUxTX0RDKSB7Ci0gIHplbmRfb2JqZWN0X3ZhbHVlIHJldHZhbDsKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKmludGVybjsKLQotICBpbnRlcm4gPSAod3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKillbWFsbG9jKAotICAgICAgc2l6ZW9mKHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzKSk7Ci0gIG1lbXNldChpbnRlcm4sIDAsIHNpemVvZih3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscykpOwotCisgIFBIUF9HUlBDX0FMTE9DX0NMQVNTX09CSkVDVCh3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscyk7CiAgIHplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwogICBvYmplY3RfcHJvcGVydGllc19pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0gIHJldHZhbC5oYW5kbGUgPSB6ZW5kX29iamVjdHNfc3RvcmVfcHV0KAotICAgICAgaW50ZXJuLCAoemVuZF9vYmplY3RzX3N0b3JlX2R0b3JfdCl6ZW5kX29iamVjdHNfZGVzdHJveV9vYmplY3QsCi0gICAgICBmcmVlX3dyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzLCBOVUxMIFRTUk1MU19DQyk7Ci0gIHJldHZhbC5oYW5kbGVycyA9IHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxlcnMoKTsKLSAgcmV0dXJuIHJldHZhbDsKKyAgUEhQX0dSUENfRlJFRV9DTEFTU19PQkpFQ1Qod3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnMpOwogfQogCiB6dmFsICpncnBjX3BocF93cmFwX2NoYW5uZWxfY3JlZGVudGlhbHMoZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKndyYXBwZWQgVFNSTUxTX0RDKSB7CiAgIHp2YWwgKmNyZWRlbnRpYWxzX29iamVjdDsKLSAgTUFLRV9TVERfWlZBTChjcmVkZW50aWFsc19vYmplY3QpOwotICBvYmplY3RfaW5pdF9leChjcmVkZW50aWFsc19vYmplY3QsIGdycGNfY2VfY2hhbm5lbF9jcmVkZW50aWFscyk7Ci0gIHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICpjcmVkZW50aWFscyA9Ci0gICAgICAod3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KAotICAgICAgICAgIGNyZWRlbnRpYWxzX29iamVjdCBUU1JNTFNfQ0MpOwotICBjcmVkZW50aWFscy0+d3JhcHBlZCA9IHdyYXBwZWQ7Ci0gIHJldHVybiBjcmVkZW50aWFsc19vYmplY3Q7Ci19Ci0KLSNlbHNlCi0KLXN0YXRpYyB6ZW5kX29iamVjdF9oYW5kbGVycyBjaGFubmVsX2NyZWRlbnRpYWxzX2NlX2hhbmRsZXJzOwotCi0vKiBGcmVlcyBhbmQgZGVzdHJveXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKi8KLXN0YXRpYyB2b2lkIGZyZWVfd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMoemVuZF9vYmplY3QgKm9iamVjdCkgewotICB3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscyAqY3JlZHMgPQotICAgIHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRzX2Zyb21fb2JqKG9iamVjdCk7Ci0gIGlmIChjcmVkcy0+d3JhcHBlZCAhPSBOVUxMKSB7Ci0gICAgZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzX3JlbGVhc2UoY3JlZHMtPndyYXBwZWQpOwotICB9Ci0gIHplbmRfb2JqZWN0X3N0ZF9kdG9yKCZjcmVkcy0+c3RkKTsKLX0KLQotLyogSW5pdGlhbGl6ZXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgdG8gYmUKLSAqIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmplY3Qgb2YgYSBjbGFzcyBzcGVjaWZpZWQgYnkgY2xhc3NfdHlwZSAqLwotemVuZF9vYmplY3QgKmNyZWF0ZV93cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscyh6ZW5kX2NsYXNzX2VudHJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjbGFzc190eXBlKSB7Ci0gIHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICppbnRlcm47Ci0gIGludGVybiA9IGVjYWxsb2MoMSwgc2l6ZW9mKHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzKSArCi0gICAgICAgICAgICAgICAgICAgemVuZF9vYmplY3RfcHJvcGVydGllc19zaXplKGNsYXNzX3R5cGUpKTsKLSAgemVuZF9vYmplY3Rfc3RkX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLSAgb2JqZWN0X3Byb3BlcnRpZXNfaW5pdCgmaW50ZXJuLT5zdGQsIGNsYXNzX3R5cGUpOwotICBpbnRlcm4tPnN0ZC5oYW5kbGVycyA9ICZjaGFubmVsX2NyZWRlbnRpYWxzX2NlX2hhbmRsZXJzOwotICByZXR1cm4gJmludGVybi0+c3RkOwotfQotCi12b2lkIGdycGNfcGhwX3dyYXBfY2hhbm5lbF9jcmVkZW50aWFscyhncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKndyYXBwZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6dmFsICpjcmVkZW50aWFsc19vYmplY3QpIHsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChjcmVkZW50aWFsc19vYmplY3QpOwogICBvYmplY3RfaW5pdF9leChjcmVkZW50aWFsc19vYmplY3QsIGdycGNfY2VfY2hhbm5lbF9jcmVkZW50aWFscyk7CiAgIHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICpjcmVkZW50aWFscyA9CiAgICAgWl9XUkFQUEVEX0dSUENfQ0hBTk5FTF9DUkVEU19QKGNyZWRlbnRpYWxzX29iamVjdCk7CiAgIGNyZWRlbnRpYWxzLT53cmFwcGVkID0gd3JhcHBlZDsKKyAgcmV0dXJuIGNyZWRlbnRpYWxzX29iamVjdDsKIH0KIAotI2VuZGlmCi0KIC8qKgogICogU2V0IGRlZmF1bHQgcm9vdHMgcGVtLgogICogQHBhcmFtIHN0cmluZyBwZW1fcm9vdHMgUEVNIGVuY29kaW5nIG9mIHRoZSBzZXJ2ZXIgcm9vdCBjZXJ0aWZpY2F0ZXMKQEAgLTE1MiwxMSArMTAyLDcgQEAKICAqLwogUEhQX01FVEhPRChDaGFubmVsQ3JlZGVudGlhbHMsIHNldERlZmF1bHRSb290c1BlbSkgewogICBjaGFyICpwZW1fcm9vdHM7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIGludCBwZW1fcm9vdHNfbGVuZ3RoOwotI2Vsc2UKLSAgc2l6ZV90IHBlbV9yb290c19sZW5ndGg7Ci0jZW5kaWYKKyAgcGhwX2dycGNfaW50IHBlbV9yb290c19sZW5ndGg7CiAKICAgLyogInMiID09IDEgc3RyaW5nICovCiAgIGlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgInMiLCAmcGVtX3Jvb3RzLApAQCAtMTc1LDEzICsxMjEsMTAgQEAKICAqLwogUEhQX01FVEhPRChDaGFubmVsQ3JlZGVudGlhbHMsIGNyZWF0ZURlZmF1bHQpIHsKICAgZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICpjcmVkcyA9IGdycGNfZ29vZ2xlX2RlZmF1bHRfY3JlZGVudGlhbHNfY3JlYXRlKCk7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIHp2YWwgKmNyZWRzX29iamVjdCA9IGdycGNfcGhwX3dyYXBfY2hhbm5lbF9jcmVkZW50aWFscyhjcmVkcyBUU1JNTFNfQ0MpOworICB6dmFsICpjcmVkc19vYmplY3Q7CisgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwoY3JlZHNfb2JqZWN0KTsKKyAgY3JlZHNfb2JqZWN0ID0gZ3JwY19waHBfd3JhcF9jaGFubmVsX2NyZWRlbnRpYWxzKGNyZWRzIFRTUk1MU19DQyk7CiAgIFJFVFVSTl9ERVNUUk9ZX1pWQUwoY3JlZHNfb2JqZWN0KTsKLSNlbHNlCi0gIGdycGNfcGhwX3dyYXBfY2hhbm5lbF9jcmVkZW50aWFscyhjcmVkcywgcmV0dXJuX3ZhbHVlKTsKLSAgUkVUVVJOX0RFU1RST1lfWlZBTChyZXR1cm5fdmFsdWUpOwotI2VuZGlmCiB9CiAKIC8qKgpAQCAtMTk3LDExICsxNDAsOSBAQAogICBjaGFyICpwZW1fcm9vdF9jZXJ0cyA9IE5VTEw7CiAgIGdycGNfc3NsX3BlbV9rZXlfY2VydF9wYWlyIHBlbV9rZXlfY2VydF9wYWlyOwogCi0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIGludCByb290X2NlcnRzX2xlbmd0aCA9IDAsIHByaXZhdGVfa2V5X2xlbmd0aCA9IDAsIGNlcnRfY2hhaW5fbGVuZ3RoID0gMDsKLSNlbHNlCi0gIHNpemVfdCByb290X2NlcnRzX2xlbmd0aCA9IDAsIHByaXZhdGVfa2V5X2xlbmd0aCA9IDAsIGNlcnRfY2hhaW5fbGVuZ3RoID0gMDsKLSNlbmRpZgorICBwaHBfZ3JwY19pbnQgcm9vdF9jZXJ0c19sZW5ndGggPSAwOworICBwaHBfZ3JwY19pbnQgcHJpdmF0ZV9rZXlfbGVuZ3RoID0gMDsKKyAgcGhwX2dycGNfaW50IGNlcnRfY2hhaW5fbGVuZ3RoID0gMDsKIAogICBwZW1fa2V5X2NlcnRfcGFpci5wcml2YXRlX2tleSA9IHBlbV9rZXlfY2VydF9wYWlyLmNlcnRfY2hhaW4gPSBOVUxMOwogCkBAIC0yMTksMTMgKzE2MCwxMCBAQAogICBncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKmNyZWRzID0gZ3JwY19zc2xfY3JlZGVudGlhbHNfY3JlYXRlKAogICAgICAgcGVtX3Jvb3RfY2VydHMsCiAgICAgICBwZW1fa2V5X2NlcnRfcGFpci5wcml2YXRlX2tleSA9PSBOVUxMID8gTlVMTCA6ICZwZW1fa2V5X2NlcnRfcGFpciwgTlVMTCk7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIHp2YWwgKmNyZWRzX29iamVjdCA9IGdycGNfcGhwX3dyYXBfY2hhbm5lbF9jcmVkZW50aWFscyhjcmVkcyBUU1JNTFNfQ0MpOworICB6dmFsICpjcmVkc19vYmplY3Q7CisgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwoY3JlZHNfb2JqZWN0KTsKKyAgY3JlZHNfb2JqZWN0ID0gZ3JwY19waHBfd3JhcF9jaGFubmVsX2NyZWRlbnRpYWxzKGNyZWRzIFRTUk1MU19DQyk7CiAgIFJFVFVSTl9ERVNUUk9ZX1pWQUwoY3JlZHNfb2JqZWN0KTsKLSNlbHNlCi0gIGdycGNfcGhwX3dyYXBfY2hhbm5lbF9jcmVkZW50aWFscyhjcmVkcywgcmV0dXJuX3ZhbHVlKTsKLSAgUkVUVVJOX0RFU1RST1lfWlZBTChyZXR1cm5fdmFsdWUpOwotI2VuZGlmCiB9CiAKIC8qKgpAQCAtMjQ2LDI5ICsxODQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRlQ29tcG9zaXRlIGV4cGVjdHMgMiBDcmVkZW50aWFscyIsIDEgVFNSTUxTX0NDKTsKICAgICByZXR1cm47CiAgIH0KLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKmNyZWQxID0KLSAgICAgICh3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscyAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoCi0gICAgICAgICAgY3JlZDFfb2JqIFRTUk1MU19DQyk7Ci0gIHdyYXBwZWRfZ3JwY19jYWxsX2NyZWRlbnRpYWxzICpjcmVkMiA9Ci0gICAgICAod3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KAotICAgICAgICAgIGNyZWQyX29iaiBUU1JNTFNfQ0MpOwotICBncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKmNyZWRzID0KLSAgICAgIGdycGNfY29tcG9zaXRlX2NoYW5uZWxfY3JlZGVudGlhbHNfY3JlYXRlKGNyZWQxLT53cmFwcGVkLCBjcmVkMi0+d3JhcHBlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICB6dmFsICpjcmVkc19vYmplY3QgPSBncnBjX3BocF93cmFwX2NoYW5uZWxfY3JlZGVudGlhbHMoY3JlZHMgVFNSTUxTX0NDKTsKLSAgUkVUVVJOX0RFU1RST1lfWlZBTChjcmVkc19vYmplY3QpOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKmNyZWQxID0KICAgICBaX1dSQVBQRURfR1JQQ19DSEFOTkVMX0NSRURTX1AoY3JlZDFfb2JqKTsKICAgd3JhcHBlZF9ncnBjX2NhbGxfY3JlZGVudGlhbHMgKmNyZWQyID0KICAgICBaX1dSQVBQRURfR1JQQ19DQUxMX0NSRURTX1AoY3JlZDJfb2JqKTsKICAgZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICpjcmVkcyA9Ci0gICAgZ3JwY19jb21wb3NpdGVfY2hhbm5lbF9jcmVkZW50aWFsc19jcmVhdGUoY3JlZDEtPndyYXBwZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZDItPndyYXBwZWQsIE5VTEwpOwotICBncnBjX3BocF93cmFwX2NoYW5uZWxfY3JlZGVudGlhbHMoY3JlZHMsIHJldHVybl92YWx1ZSk7Ci0gIFJFVFVSTl9ERVNUUk9ZX1pWQUwocmV0dXJuX3ZhbHVlKTsKLSNlbmRpZgorICAgICAgZ3JwY19jb21wb3NpdGVfY2hhbm5lbF9jcmVkZW50aWFsc19jcmVhdGUoY3JlZDEtPndyYXBwZWQsIGNyZWQyLT53cmFwcGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIHp2YWwgKmNyZWRzX29iamVjdDsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChjcmVkc19vYmplY3QpOworICBjcmVkc19vYmplY3QgPSBncnBjX3BocF93cmFwX2NoYW5uZWxfY3JlZGVudGlhbHMoY3JlZHMgVFNSTUxTX0NDKTsKKyAgUkVUVVJOX0RFU1RST1lfWlZBTChjcmVkc19vYmplY3QpOwogfQogCiAvKioKQEAgLTMwMCwxMyArMjI2LDYgQEAKICAgZ3JwY19zZXRfc3NsX3Jvb3RzX292ZXJyaWRlX2NhbGxiYWNrKGdldF9zc2xfcm9vdHNfb3ZlcnJpZGUpOwogICBjZS5jcmVhdGVfb2JqZWN0ID0gY3JlYXRlX3dyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzOwogICBncnBjX2NlX2NoYW5uZWxfY3JlZGVudGlhbHMgPSB6ZW5kX3JlZ2lzdGVyX2ludGVybmFsX2NsYXNzKCZjZSBUU1JNTFNfQ0MpOwotI2lmIFBIUF9NQUpPUl9WRVJTSU9OID49IDcKLSAgbWVtY3B5KCZjaGFubmVsX2NyZWRlbnRpYWxzX2NlX2hhbmRsZXJzLAotICAgICAgICAgemVuZF9nZXRfc3RkX29iamVjdF9oYW5kbGVycygpLAotICAgICAgICAgc2l6ZW9mKHplbmRfb2JqZWN0X2hhbmRsZXJzKSk7Ci0gIGNoYW5uZWxfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnMub2Zmc2V0ID0KLSAgICBYdE9mZnNldE9mKHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzLCBzdGQpOwotICBjaGFubmVsX2NyZWRlbnRpYWxzX2NlX2hhbmRsZXJzLmZyZWVfb2JqID0KLSAgICBmcmVlX3dyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzOwotI2VuZGlmCisgIFBIUF9HUlBDX0lOSVRfSEFORExFUih3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnMpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3BocC9leHQvZ3JwYy9jaGFubmVsX2NyZWRlbnRpYWxzLmggYi9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWxfY3JlZGVudGlhbHMuaAppbmRleCA0NDA3MWIxLi5iMDQzZDkxIDEwMDc1NQotLS0gYS9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWxfY3JlZGVudGlhbHMuaAorKysgYi9zcmMvcGhwL2V4dC9ncnBjL2NoYW5uZWxfY3JlZGVudGlhbHMuaApAQCAtNDksMzQgKzQ5LDI3IEBACiAvKiBDbGFzcyBlbnRyeSBmb3IgdGhlIENoYW5uZWxDcmVkZW50aWFscyBQSFAgY2xhc3MgKi8KIGV4dGVybiB6ZW5kX2NsYXNzX2VudHJ5ICpncnBjX2NlX2NoYW5uZWxfY3JlZGVudGlhbHM7CiAKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLQogLyogV3JhcHBlciBzdHJ1Y3QgZm9yIGdycGNfY2hhbm5lbF9jcmVkZW50aWFscyB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkCiAgKiB3aXRoIGEgUEhQIG9iamVjdCAqLwotdHlwZWRlZiBzdHJ1Y3Qgd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgewotICB6ZW5kX29iamVjdCBzdGQ7CitQSFBfR1JQQ19XUkFQX09CSkVDVF9TVEFSVCh3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscykgCiAgIGdycGNfY2hhbm5lbF9jcmVkZW50aWFscyAqd3JhcHBlZDsKLX0gd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHM7CitQSFBfR1JQQ19XUkFQX09CSkVDVF9FTkQod3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMpCisKKyNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKKworI2RlZmluZSBaX1dSQVBQRURfR1JQQ19DSEFOTkVMX0NSRURTX1AoenYpIFwKKyAgKHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdCh6diBUU1JNTFNfQ0MpCiAKICNlbHNlCiAKLS8qIFdyYXBwZXIgc3RydWN0IGZvciBncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZAotICogd2l0aCBhIFBIUCBvYmplY3QgKi8KLXR5cGVkZWYgc3RydWN0IHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzIHsKLSAgZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICp3cmFwcGVkOwotICB6ZW5kX29iamVjdCBzdGQ7Ci19IHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzOwotCiBzdGF0aWMgaW5saW5lIHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzCi0qd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZHNfZnJvbV9vYmooemVuZF9vYmplY3QgKm9iaikgewotICByZXR1cm4KLSAgICAod3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHMgKikKLSAgICAoKGNoYXIqKShvYmopIC0KLSAgICAgWHRPZmZzZXRPZih3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscywgc3RkKSk7Cisqd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZGVudGlhbHNfZnJvbV9vYmooemVuZF9vYmplY3QgKm9iaikgeworICByZXR1cm4gKHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzICopKAorICAgICAgKGNoYXIqKShvYmopIC0gWHRPZmZzZXRPZih3cmFwcGVkX2dycGNfY2hhbm5lbF9jcmVkZW50aWFscywgc3RkKSk7CiB9CiAKLSNkZWZpbmUgWl9XUkFQUEVEX0dSUENfQ0hBTk5FTF9DUkVEU19QKHp2KSAgICAgICAgICAgIFwKLSAgd3JhcHBlZF9ncnBjX2NoYW5uZWxfY3JlZHNfZnJvbV9vYmooWl9PQkpfUCgoenYpKSkKKyNkZWZpbmUgWl9XUkFQUEVEX0dSUENfQ0hBTk5FTF9DUkVEU19QKHp2KSBcCisgIHdyYXBwZWRfZ3JwY19jaGFubmVsX2NyZWRlbnRpYWxzX2Zyb21fb2JqKFpfT0JKX1AoKHp2KSkpCiAKICNlbmRpZiAvKiBQSFBfTUFKT1JfVkVSU0lPTiAqLwogCmRpZmYgLS1naXQgYS9zcmMvcGhwL2V4dC9ncnBjL3BhY2thZ2UueG1sIGIvc3JjL3BocC9leHQvZ3JwYy9wYWNrYWdlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmMmVlNS4uMDAwMDAwMAotLS0gYS9zcmMvcGhwL2V4dC9ncnBjL3BhY2thZ2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cGFja2FnZSBwYWNrYWdlcnZlcnNpb249IjEuOS41IiB2ZXJzaW9uPSIyLjAiIHhtbG5zPSJodHRwOi8vcGVhci5waHAubmV0L2R0ZC9wYWNrYWdlLTIuMCIgeG1sbnM6dGFza3M9Imh0dHA6Ly9wZWFyLnBocC5uZXQvZHRkL3Rhc2tzLTEuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vcGVhci5waHAubmV0L2R0ZC90YXNrcy0xLjAgaHR0cDovL3BlYXIucGhwLm5ldC9kdGQvdGFza3MtMS4wLnhzZCBodHRwOi8vcGVhci5waHAubmV0L2R0ZC9wYWNrYWdlLTIuMCBodHRwOi8vcGVhci5waHAubmV0L2R0ZC9wYWNrYWdlLTIuMC54c2QiPgotIDxuYW1lPmdycGM8L25hbWU+Ci0gPGNoYW5uZWw+cGVjbC5waHAubmV0PC9jaGFubmVsPgotIDxzdW1tYXJ5PkEgaGlnaCBwZXJmb3JtYW5jZSwgb3BlbiBzb3VyY2UsIGdlbmVyYWwgUlBDIGZyYW1ld29yayB0aGF0IHB1dHMgbW9iaWxlIGFuZCBIVFRQLzIgZmlyc3QuPC9zdW1tYXJ5PgotIDxkZXNjcmlwdGlvbj5SZW1vdGUgUHJvY2VkdXJlIENhbGxzIChSUENzKSBwcm92aWRlIGEgdXNlZnVsIGFic3RyYWN0aW9uIGZvciBidWlsZGluZyBkaXN0cmlidXRlZCBhcHBsaWNhdGlvbnMgYW5kIHNlcnZpY2VzLiBUaGUgbGlicmFyaWVzIGluIHRoaXMgcmVwb3NpdG9yeSBwcm92aWRlIGEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGdSUEMgcHJvdG9jb2wsIGxheWVyZWQgb3ZlciBIVFRQLzIuIFRoZXNlIGxpYnJhcmllcyBlbmFibGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGNsaWVudHMgYW5kIHNlcnZlcnMgdXNpbmcgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLjwvZGVzY3JpcHRpb24+Ci0gPGxlYWQ+Ci0gIDxuYW1lPlN0YW5sZXkgQ2hldW5nPC9uYW1lPgotICA8dXNlcj5zdGFubGV5Y2hldW5nPC91c2VyPgotICA8ZW1haWw+Z3JwYy1wYWNrYWdlc0Bnb29nbGUuY29tPC9lbWFpbD4KLSAgPGFjdGl2ZT55ZXM8L2FjdGl2ZT4KLSA8L2xlYWQ+Ci0gPGRhdGU+MjAxNi0wMS0xMzwvZGF0ZT4KLSA8dGltZT4xNjowNjowNzwvdGltZT4KLSA8dmVyc2lvbj4KLSAgPHJlbGVhc2U+MC43LjA8L3JlbGVhc2U+Ci0gIDxhcGk+MC43LjA8L2FwaT4KLSA8L3ZlcnNpb24+Ci0gPHN0YWJpbGl0eT4KLSAgPHJlbGVhc2U+YmV0YTwvcmVsZWFzZT4KLSAgPGFwaT5iZXRhPC9hcGk+Ci0gPC9zdGFiaWxpdHk+Ci0gPGxpY2Vuc2U+QlNEPC9saWNlbnNlPgotIDxub3Rlcz4KLS0gQnJlYWtpbmcgY2hhbmdlIHRvIENyZWRlbnRpYWxzIGNsYXNzIChyZW1vdmVkKSAjMzc2NQotLSBSZXBsYWNlZCBieSBDaGFubmVsQ3JlZGVudGlhbHMgYW5kIENhbGxDcmVkZW50aWFscyBjbGFzcyAjMzc2NQotLSBOZXcgcGx1Z2luIGJhc2VkIG1ldGFkYXRhIGF1dGggQVBJICM0Mzk0Ci0tIEV4cGxpY2l0IENoYW5uZWxDcmVkZW50aWFsczo6Y3JlYXRlSW5zZWN1cmUoKSBjYWxsCi0gPC9ub3Rlcz4KLSA8Y29udGVudHM+Ci0gIDxkaXIgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9Ii8iPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iZjIwMWQ2NDRmZGJkODIyOGZmZDFkNGE2OWNjNDRmMWYiIG5hbWU9InRlc3RzL2dycGMtYmFzaWMucGhwdCIgcm9sZT0idGVzdCIgLz4KLSAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBtZDVzdW09IjZmMTk4MjhmYjg2OWI3YjhhNTkwY2JiNzZiNGY5OTZkIiBuYW1lPSJieXRlX2J1ZmZlci5jIiByb2xlPSJzcmMiIC8+Ci0gICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbWQ1c3VtPSJjOGRlMGY4MTk0OTljNDhhZGZjOGQ3ZjQ3MmMwMTk2YiIgbmFtZT0iYnl0ZV9idWZmZXIuaCIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iZWU3ZWI3NzU3ZjllNmYwZTM2ZjhmNjE2YjZiZDBhZjUiIG5hbWU9ImNhbGwuYyIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iNDRjNTZiZDk5MTJkMjUzOGNiZDYwNTllM2UwNDUyYjYiIG5hbWU9ImNhbGwuaCIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iZmY5MGY2YzAzZWQ0NGI1ZjQxNzBiZjMyNTlhNjcwNGUiIG5hbWU9ImNhbGxfY3JlZGVudGlhbHMuYyIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iM2MzODYwZTFkODRmNDNjYjZiMmZiYWE4ZDJhZTFhYjciIG5hbWU9ImNhbGxfY3JlZGVudGlhbHMuaCIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iYWVlOWI2M2Y3OTA1MjJhZWMyYzY4MjA1NTI0MGNjNjEiIG5hbWU9ImNoYW5uZWwuYyIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iZWQ0YjAwYzBjZjM3MDJiMTE1ZDBjZmE4NzQ1MGRjMDkiIG5hbWU9ImNoYW5uZWwuaCIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iMWE1MWM3NmQwYjdiN2QzYWI1NzBlZDdkNjBjMmVhNDYiIG5hbWU9ImNoYW5uZWxfY3JlZGVudGlhbHMuYyIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iYTg2MjUwZTAzZjYxMGNlNmMyYzc1OTVhODRlMDg4MjEiIG5hbWU9ImNoYW5uZWxfY3JlZGVudGlhbHMuaCIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iNTVhYjdhNDJmOWRkOWJmYzdlMjhhNjFjZmM1ZmNhNjMiIG5hbWU9ImNvbXBsZXRpb25fcXVldWUuYyIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iZjEwYjViYjIzMmQ3NGE2ODc4ZTgyOWUyZTc2Y2RhYTIiIG5hbWU9ImNvbXBsZXRpb25fcXVldWUuaCIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iY2FmZWQyNTQxMjcwMDdmZjIyNzFkYWQ3ZDU2YTA2YzgiIG5hbWU9ImNvbmZpZy5tNCIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iMzhhMWJjOTc5ZDgxMGMzNmViYzJhNTJkNGI3YjUzMTkiIG5hbWU9IkNSRURJVFMiIHJvbGU9ImRvYyIgLz4KLSAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBtZDVzdW09Ijg4NDdjZjY3YjFiNTRjOTgxZDQ3ZWNiYjBkMTM5YTBjIiBuYW1lPSJMSUNFTlNFIiByb2xlPSJkb2MiIC8+Ci0gICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbWQ1c3VtPSIzMTMxYThhZjM4ZmU1OTE4ZTU0MDkwMTZiODlkNmNkYiIgbmFtZT0icGhwX2dycGMuYyIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iNjczYjA3ODU5ZDlmNjkyMzJmOGE3NTRjNTY3ODA2ODYiIG5hbWU9InBocF9ncnBjLmgiIHJvbGU9InNyYyIgLz4KLSAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBtZDVzdW09Ijc1MzNhNmQzZWEwMmM3OGNhZDIzYTk2NTFkZTA4MjVkIiBuYW1lPSJSRUFETUUubWQiIHJvbGU9ImRvYyIgLz4KLSAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBtZDVzdW09IjNlNGU5NjA0NTRlYmIyZmM3Yjc4YTg0MDQ5M2Y1MzE1IiBuYW1lPSJzZXJ2ZXIuYyIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iNGI3MzBmMDZkMTRjYmJiMDY0MmJkYmQxOTQ3NDk1OTUiIG5hbWU9InNlcnZlci5oIiByb2xlPSJzcmMiIC8+Ci0gICA8ZmlsZSBiYXNlaW5zdGFsbGRpcj0iLyIgbWQ1c3VtPSIzNGVhODgxZjFmZTk2MGQxOTBkMDcxMzQyMmNmODkxNiIgbmFtZT0ic2VydmVyX2NyZWRlbnRpYWxzLmMiIHJvbGU9InNyYyIgLz4KLSAgIDxmaWxlIGJhc2VpbnN0YWxsZGlyPSIvIiBtZDVzdW09IjljNGI0Y2MwNjM1NmE4YTM5YTE2YTA4NWE5Yjg1OTk2IiBuYW1lPSJzZXJ2ZXJfY3JlZGVudGlhbHMuaCIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iNzY0NmVjNzhjYjEzM2Y2NmJhNTllMDNjNmY0NTFlMzkiIG5hbWU9InRpbWV2YWwuYyIgcm9sZT0ic3JjIiAvPgotICAgPGZpbGUgYmFzZWluc3RhbGxkaXI9Ii8iIG1kNXN1bT0iNDk2ZTI3YTEwMGI0ZDkzY2EzZmIzNWM5MjRjNWUxNjMiIG5hbWU9InRpbWV2YWwuaCIgcm9sZT0ic3JjIiAvPgotICA8L2Rpcj4KLSA8L2NvbnRlbnRzPgotIDxkZXBlbmRlbmNpZXM+Ci0gIDxyZXF1aXJlZD4KLSAgIDxwaHA+Ci0gICAgPG1pbj41LjUuMDwvbWluPgotICAgPC9waHA+Ci0gICA8cGVhcmluc3RhbGxlcj4KLSAgICA8bWluPjEuNC4wPC9taW4+Ci0gICA8L3BlYXJpbnN0YWxsZXI+Ci0gIDwvcmVxdWlyZWQ+Ci0gPC9kZXBlbmRlbmNpZXM+Ci0gPHByb3ZpZGVzZXh0ZW5zaW9uPmdycGM8L3Byb3ZpZGVzZXh0ZW5zaW9uPgotIDxleHRzcmNyZWxlYXNlIC8+Ci0gPGNoYW5nZWxvZz4KLSAgPHJlbGVhc2U+Ci0gICA8dmVyc2lvbj4KLSAgICA8cmVsZWFzZT4wLjUuMDwvcmVsZWFzZT4KLSAgICA8YXBpPjAuNS4wPC9hcGk+Ci0gICA8L3ZlcnNpb24+Ci0gICA8c3RhYmlsaXR5PgotICAgIDxyZWxlYXNlPmFscGhhPC9yZWxlYXNlPgotICAgIDxhcGk+YWxwaGE8L2FwaT4KLSAgIDwvc3RhYmlsaXR5PgotICAgPGRhdGU+MjAxNS0wNi0xNjwvZGF0ZT4KLSAgIDxsaWNlbnNlPkJTRDwvbGljZW5zZT4KLSAgIDxub3Rlcz4KLUZpcnN0IGFscGhhIHJlbGVhc2UKLSAgIDwvbm90ZXM+Ci0gIDwvcmVsZWFzZT4KLSAgPHJlbGVhc2U+Ci0gICA8dmVyc2lvbj4KLSAgICA8cmVsZWFzZT4wLjUuMTwvcmVsZWFzZT4KLSAgICA8YXBpPjAuNS4xPC9hcGk+Ci0gICA8L3ZlcnNpb24+Ci0gICA8c3RhYmlsaXR5PgotICAgIDxyZWxlYXNlPmFscGhhPC9yZWxlYXNlPgotICAgIDxhcGk+YWxwaGE8L2FwaT4KLSAgIDwvc3RhYmlsaXR5PgotICAgPGRhdGU+MjAxNS0wNy0wOTwvZGF0ZT4KLSAgIDxsaWNlbnNlPkJTRDwvbGljZW5zZT4KLSAgIDxub3Rlcz4KLVVwZGF0ZSB0byB3cmFwIGdSUEMgQyBDb3JlIHZlcnNpb24gMC4xMC4wCi0gICA8L25vdGVzPgotICA8L3JlbGVhc2U+Ci0gIDxyZWxlYXNlPgotICAgPHZlcnNpb24+Ci0gICAgPHJlbGVhc2U+MC42LjA8L3JlbGVhc2U+Ci0gICAgPGFwaT4wLjYuMDwvYXBpPgotICAgPC92ZXJzaW9uPgotICAgPHN0YWJpbGl0eT4KLSAgICA8cmVsZWFzZT5iZXRhPC9yZWxlYXNlPgotICAgIDxhcGk+YmV0YTwvYXBpPgotICAgPC9zdGFiaWxpdHk+Ci0gICA8ZGF0ZT4yMDE1LTA5LTI0PC9kYXRlPgotICAgPGxpY2Vuc2U+QlNEPC9saWNlbnNlPgotICAgPG5vdGVzPgotLSBzdXBwb3J0IHBlciBtZXNzYWdlIGNvbXByZXNzaW9uIGRpc2FibGUKLS0gZXhwb3NlIHBlci1jYWxsIGhvc3Qgb3ZlcnJpZGUgb3B0aW9uCi0tIGV4cG9zZSBjb25uZWN0aXZpdHkgQVBJCi0tIGV4cG9zZSBjaGFubmVsIHRhcmdldCBhbmQgY2FsbCBwZWVyCi0tIGFkZCB1c2VyLWFnZW50Ci0tIHVwZGF0ZSB0byB3cmFwIGdSUEMgQyBjb3JlIGxpYnJhcnkgYmV0YSB2ZXJzaW9uIDAuMTEuMAotICAgPC9ub3Rlcz4KLSAgPC9yZWxlYXNlPgotICA8cmVsZWFzZT4KLSAgIDx2ZXJzaW9uPgotICAgIDxyZWxlYXNlPjAuNi4xPC9yZWxlYXNlPgotICAgIDxhcGk+MC42LjA8L2FwaT4KLSAgIDwvdmVyc2lvbj4KLSAgIDxzdGFiaWxpdHk+Ci0gICAgPHJlbGVhc2U+YmV0YTwvcmVsZWFzZT4KLSAgICA8YXBpPmJldGE8L2FwaT4KLSAgIDwvc3RhYmlsaXR5PgotICAgPGRhdGU+MjAxNS0xMC0yMTwvZGF0ZT4KLSAgIDxsaWNlbnNlPkJTRDwvbGljZW5zZT4KLSAgIDxub3Rlcz4KLS0gZml4ZWQgdW5kZWZpbmVkIGNvbnN0YW50IGZhdGFsIGVycm9yIHdoZW4gcnVuIHdpdGggYXBhY2hlL25naW54ICMyMjc1Ci0gICA8L25vdGVzPgotICA8L3JlbGVhc2U+Ci0gIDxyZWxlYXNlPgotICAgPHZlcnNpb24+Ci0gICAgPHJlbGVhc2U+MC43LjA8L3JlbGVhc2U+Ci0gICAgPGFwaT4wLjcuMDwvYXBpPgotICAgPC92ZXJzaW9uPgotICAgPHN0YWJpbGl0eT4KLSAgICA8cmVsZWFzZT5iZXRhPC9yZWxlYXNlPgotICAgIDxhcGk+YmV0YTwvYXBpPgotICAgPC9zdGFiaWxpdHk+Ci0gICA8ZGF0ZT4yMDE2LTAxLTEzPC9kYXRlPgotICAgPGxpY2Vuc2U+QlNEPC9saWNlbnNlPgotICAgPG5vdGVzPgotLSBCcmVha2luZyBjaGFuZ2UgdG8gQ3JlZGVudGlhbHMgY2xhc3MgKHJlbW92ZWQpICMzNzY1Ci0tIFJlcGxhY2VkIGJ5IENoYW5uZWxDcmVkZW50aWFscyBhbmQgQ2FsbENyZWRlbnRpYWxzIGNsYXNzICMzNzY1Ci0tIE5ldyBwbHVnaW4gYmFzZWQgbWV0YWRhdGEgYXV0aCBBUEkgIzQzOTQKLS0gRXhwbGljaXQgQ2hhbm5lbENyZWRlbnRpYWxzOjpjcmVhdGVJbnNlY3VyZSgpIGNhbGwKLSAgIDwvbm90ZXM+Ci0gIDwvcmVsZWFzZT4KLSA8L2NoYW5nZWxvZz4KLTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL3NyYy9waHAvZXh0L2dycGMvcGhwN193cmFwcGVyLmggYi9zcmMvcGhwL2V4dC9ncnBjL3BocDdfd3JhcHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOGQzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvcGhwL2V4dC9ncnBjL3BocDdfd3JhcHBlci5oCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworCisjaWZuZGVmIFBIUDdfV1JBUFBFUl9HUlBDX0gKKyNkZWZpbmUgUEhQN19XUkFQUEVSX0dSUENfSAorCisjaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CisKKyNkZWZpbmUgcGhwX2dycGNfaW50IGludAorI2RlZmluZSBwaHBfZ3JwY19sb25nIGxvbmcKKyNkZWZpbmUgcGhwX2dycGNfdWxvbmcgdWxvbmcKKyNkZWZpbmUgcGhwX2dycGNfemVuZF9vYmplY3QgemVuZF9vYmplY3RfdmFsdWUKKyNkZWZpbmUgcGhwX2dycGNfYWRkX3Byb3BlcnR5X3N0cmluZyhhcmcsIG5hbWUsIGNvbnRleHQsIGIpIFwKKyAgYWRkX3Byb3BlcnR5X3N0cmluZyhhcmcsIG5hbWUsIGNvbnRleHQsIGIpCisjZGVmaW5lIHBocF9ncnBjX2FkZF9wcm9wZXJ0eV9zdHJpbmdsKHJlcywgbmFtZSwgc3RyLCBsZW4sIGIpIFwKKyAgYWRkX3Byb3BlcnR5X3N0cmluZ2wocmVzLCBuYW1lLCBzdHIsIGxlbiwgYikKKyNkZWZpbmUgcGhwX2dycGNfYWRkX25leHRfaW5kZXhfc3RyaW5nbChkYXRhLCBzdHIsIGxlbiwgYikgXAorICBhZGRfbmV4dF9pbmRleF9zdHJpbmdsKGRhdGEsIHN0ciwgbGVuLCBiKQorCisjZGVmaW5lIFBIUF9HUlBDX1JFVFVSTl9TVFJJTkcodmFsLCBkdXApIFJFVFVSTl9TVFJJTkcodmFsLCBkdXApCisjZGVmaW5lIFBIUF9HUlBDX01BS0VfU1REX1pWQUwocHp2KSBNQUtFX1NURF9aVkFMKHB6dikKKyNkZWZpbmUgUEhQX0dSUENfREVMUkVGKHp2KSBaX0RFTFJFRl9QKHp2KQorCisjZGVmaW5lIFBIUF9HUlBDX1dSQVBfT0JKRUNUX1NUQVJUKG5hbWUpIFwKKyAgdHlwZWRlZiBzdHJ1Y3QgbmFtZSB7IFwKKyAgICB6ZW5kX29iamVjdCBzdGQ7CisjZGVmaW5lIFBIUF9HUlBDX1dSQVBfT0JKRUNUX0VORChuYW1lKSBcCisgIH0gbmFtZTsKKworI2RlZmluZSBQSFBfR1JQQ19GUkVFX1dSQVBQRURfRlVOQ19TVEFSVChjbGFzc19vYmplY3QpIFwKKyAgdm9pZCBmcmVlXyMjY2xhc3Nfb2JqZWN0KHZvaWQgKm9iamVjdCBUU1JNTFNfREMpIHsgXAorICAgIGNsYXNzX29iamVjdCAqcCA9IChjbGFzc19vYmplY3QgKilvYmplY3Q7CisjZGVmaW5lIFBIUF9HUlBDX0ZSRUVfV1JBUFBFRF9GVU5DX0VORCgpIFwKKyAgICB6ZW5kX29iamVjdF9zdGRfZHRvcigmcC0+c3RkIFRTUk1MU19DQyk7IFwKKyAgICBlZnJlZShwKTsgXAorICB9CisKKyNkZWZpbmUgUEhQX0dSUENfQUxMT0NfQ0xBU1NfT0JKRUNUKGNsYXNzX29iamVjdCkgXAorICBjbGFzc19vYmplY3QgKmludGVybjsgXAorICB6ZW5kX29iamVjdF92YWx1ZSByZXR2YWw7IFwKKyAgaW50ZXJuID0gKGNsYXNzX29iamVjdCAqKWVtYWxsb2Moc2l6ZW9mKGNsYXNzX29iamVjdCkpOyBcCisgIG1lbXNldChpbnRlcm4sIDAsIHNpemVvZihjbGFzc19vYmplY3QpKTsKKworI2RlZmluZSBQSFBfR1JQQ19GUkVFX0NMQVNTX09CSkVDVChjbGFzc19vYmplY3QsIGhhbmRsZXIpIFwKKyAgcmV0dmFsLmhhbmRsZSA9IHplbmRfb2JqZWN0c19zdG9yZV9wdXQoIFwKKyAgICBpbnRlcm4sICh6ZW5kX29iamVjdHNfc3RvcmVfZHRvcl90KXplbmRfb2JqZWN0c19kZXN0cm95X29iamVjdCwgXAorICAgIGZyZWVfIyNjbGFzc19vYmplY3QsIE5VTEwgVFNSTUxTX0NDKTsgXAorICByZXR2YWwuaGFuZGxlcnMgPSB6ZW5kX2dldF9zdGRfb2JqZWN0X2hhbmRsZXJzKCk7IFwKKyAgcmV0dXJuIHJldHZhbDsKKworI2RlZmluZSBQSFBfR1JQQ19IQVNIX0ZPUkVBQ0hfVkFMX1NUQVJUKGh0LCBkYXRhKSBcCisgIHp2YWwgKip0bXBfZGF0YSA9IE5VTEw7IFwKKyAgZm9yICh6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldChodCk7IFwKKyAgICAgICB6ZW5kX2hhc2hfZ2V0X2N1cnJlbnRfZGF0YShodCwgKHZvaWQqKikmdG1wX2RhdGEpID09IFNVQ0NFU1M7IFwKKyAgICAgICB6ZW5kX2hhc2hfbW92ZV9mb3J3YXJkKGh0KSkgeyBcCisgICAgZGF0YSA9ICp0bXBfZGF0YTsKKworI2RlZmluZSBQSFBfR1JQQ19IQVNIX0ZPUkVBQ0hfU1RSX0tFWV9WQUxfU1RBUlQoaHQsIGtleSwga2V5X3R5cGUsIGRhdGEpIFwKKyAgenZhbCAqKnRtcCMja2V5ID0gTlVMTDsgXAorICB1bG9uZyBpbmRleCMja2V5OyBcCisgIHVpbnQgbGVuIyNrZXk7IFwKKyAgZm9yICh6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldChodCk7IFwKKyAgICAgICB6ZW5kX2hhc2hfZ2V0X2N1cnJlbnRfZGF0YShodCwgKHZvaWQqKikmdG1wIyNrZXkpID09IFNVQ0NFU1M7IFwKKyAgICAgICB6ZW5kX2hhc2hfbW92ZV9mb3J3YXJkKGh0KSkgeyBcCisgICAga2V5X3R5cGUgPSB6ZW5kX2hhc2hfZ2V0X2N1cnJlbnRfa2V5X2V4KGh0LCAma2V5LCAmbGVuIyNrZXksICZpbmRleCMja2V5LFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCk7IFwKKyAgICBkYXRhID0gKnRtcCMja2V5OworCisjZGVmaW5lIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9MT05HX0tFWV9WQUxfU1RBUlQoaHQsIGtleSwga2V5X3R5cGUsIGluZGV4LFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKSBcCisgIHp2YWwgKip0bXAjI2tleSA9IE5VTEw7IFwKKyAgdWludCBsZW4jI2tleTsgXAorICBmb3IgKHplbmRfaGFzaF9pbnRlcm5hbF9wb2ludGVyX3Jlc2V0KGh0KTsgXAorICAgICAgIHplbmRfaGFzaF9nZXRfY3VycmVudF9kYXRhKGh0LCAodm9pZCoqKSZ0bXAjI2tleSkgPT0gU1VDQ0VTUzsgXAorICAgICAgIHplbmRfaGFzaF9tb3ZlX2ZvcndhcmQoaHQpKSB7IFwKKyAgICBrZXlfdHlwZSA9IHplbmRfaGFzaF9nZXRfY3VycmVudF9rZXlfZXgoaHQsICZrZXksICZsZW4jI2tleSwgJmluZGV4LFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCk7IFwKKyAgICBkYXRhID0gKnRtcCMja2V5OworCisjZGVmaW5lIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9FTkQoKSB9CisKK3N0YXRpYyBpbmxpbmUgaW50IHBocF9ncnBjX3plbmRfaGFzaF9maW5kKEhhc2hUYWJsZSAqaHQsIGNoYXIgKmtleSwgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSkgeworICB6dmFsICoqZGF0YSA9IE5VTEw7CisgIGlmICh6ZW5kX2hhc2hfZmluZChodCwga2V5LCBsZW4sICh2b2lkICoqKSZkYXRhKSA9PSBTVUNDRVNTKSB7CisgICAgKnZhbHVlID0gKmRhdGE7CisgICAgcmV0dXJuIFNVQ0NFU1M7CisgIH0gZWxzZSB7CisgICAgKnZhbHVlID0gTlVMTDsKKyAgICByZXR1cm4gRkFJTFVSRTsKKyAgfQorfQorCisjZGVmaW5lIHBocF9ncnBjX3plbmRfaGFzaF9kZWwgemVuZF9oYXNoX2RlbAorCisjZGVmaW5lIFBIUF9HUlBDX0dFVF9DTEFTU19FTlRSWShvYmplY3QpIHplbmRfZ2V0X2NsYXNzX2VudHJ5KG9iamVjdCBUU1JNTFNfQ0MpCisKKyNkZWZpbmUgUEhQX0dSUENfSU5JVF9IQU5ETEVSKGNsYXNzX29iamVjdCwgaGFuZGxlcl9uYW1lKQorCisjZWxzZQorCisjZGVmaW5lIHBocF9ncnBjX2ludCBzaXplX3QKKyNkZWZpbmUgcGhwX2dycGNfbG9uZyB6ZW5kX2xvbmcKKyNkZWZpbmUgcGhwX2dycGNfdWxvbmcgemVuZF91bG9uZworI2RlZmluZSBwaHBfZ3JwY196ZW5kX29iamVjdCB6ZW5kX29iamVjdCoKKyNkZWZpbmUgcGhwX2dycGNfYWRkX3Byb3BlcnR5X3N0cmluZyhhcmcsIG5hbWUsIGNvbnRleHQsIGIpIFwKKyAgYWRkX3Byb3BlcnR5X3N0cmluZyhhcmcsIG5hbWUsIGNvbnRleHQpCisjZGVmaW5lIHBocF9ncnBjX2FkZF9wcm9wZXJ0eV9zdHJpbmdsKHJlcywgbmFtZSwgc3RyLCBsZW4sIGIpIFwKKyAgYWRkX3Byb3BlcnR5X3N0cmluZ2wocmVzLCBuYW1lLCBzdHIsIGxlbikKKyNkZWZpbmUgcGhwX2dycGNfYWRkX25leHRfaW5kZXhfc3RyaW5nbChkYXRhLCBzdHIsIGxlbiwgYikgXAorICBhZGRfbmV4dF9pbmRleF9zdHJpbmdsKGRhdGEsIHN0ciwgbGVuKQorCisjZGVmaW5lIFBIUF9HUlBDX1JFVFVSTl9TVFJJTkcodmFsLCBkdXApIFJFVFVSTl9TVFJJTkcodmFsKQorI2RlZmluZSBQSFBfR1JQQ19NQUtFX1NURF9aVkFMKHB6dikgXAorICB6dmFsIF9zdGFja196dmFsXyMjcHp2OyBcCisgIHB6diA9ICYoX3N0YWNrX3p2YWxfIyNwenYpCisjZGVmaW5lIFBIUF9HUlBDX0RFTFJFRih6dikKKworI2RlZmluZSBQSFBfR1JQQ19XUkFQX09CSkVDVF9TVEFSVChuYW1lKSBcCisgIHR5cGVkZWYgc3RydWN0IG5hbWUgeworI2RlZmluZSBQSFBfR1JQQ19XUkFQX09CSkVDVF9FTkQobmFtZSkgXAorICAgIHplbmRfb2JqZWN0IHN0ZDsgXAorICB9IG5hbWU7CisKKyNkZWZpbmUgV1JBUFBFRF9PQkpFQ1RfRlJPTV9PQkooY2xhc3Nfb2JqZWN0LCBvYmopIFwKKyAgY2xhc3Nfb2JqZWN0IyNfZnJvbV9vYmoob2JqKTsKKworI2RlZmluZSBQSFBfR1JQQ19GUkVFX1dSQVBQRURfRlVOQ19TVEFSVChjbGFzc19vYmplY3QpIFwKKyAgc3RhdGljIHZvaWQgZnJlZV8jI2NsYXNzX29iamVjdCh6ZW5kX29iamVjdCAqb2JqZWN0KSB7IFwKKyAgICBjbGFzc19vYmplY3QgKnAgPSBXUkFQUEVEX09CSkVDVF9GUk9NX09CSihjbGFzc19vYmplY3QsIG9iamVjdCkKKyNkZWZpbmUgUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfRU5EKCkgXAorICAgIHplbmRfb2JqZWN0X3N0ZF9kdG9yKCZwLT5zdGQpOyBcCisgIH0KKworI2RlZmluZSBQSFBfR1JQQ19BTExPQ19DTEFTU19PQkpFQ1QoY2xhc3Nfb2JqZWN0KSBcCisgIGNsYXNzX29iamVjdCAqaW50ZXJuOyBcCisgIGludGVybiA9IGVjYWxsb2MoMSwgc2l6ZW9mKGNsYXNzX29iamVjdCkgKyBcCisgICAgICAgICAgICAgICAgICAgemVuZF9vYmplY3RfcHJvcGVydGllc19zaXplKGNsYXNzX3R5cGUpKTsKKworI2RlZmluZSBQSFBfR1JQQ19GUkVFX0NMQVNTX09CSkVDVChjbGFzc19vYmplY3QsIGhhbmRsZXIpIFwKKyAgaW50ZXJuLT5zdGQuaGFuZGxlcnMgPSAmaGFuZGxlcjsgXAorICByZXR1cm4gJmludGVybi0+c3RkOworCisjZGVmaW5lIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9WQUxfU1RBUlQoaHQsIGRhdGEpIFwKKyAgWkVORF9IQVNIX0ZPUkVBQ0hfVkFMKGh0LCBkYXRhKSB7CisKKyNkZWZpbmUgUEhQX0dSUENfSEFTSF9GT1JFQUNIX1NUUl9LRVlfVkFMX1NUQVJUKGh0LCBrZXksIGtleV90eXBlLCBkYXRhKSBcCisgIHplbmRfc3RyaW5nICooenNfIyNrZXkpOyBcCisgIFpFTkRfSEFTSF9GT1JFQUNIX1NUUl9LRVlfVkFMKGh0LCAoenNfIyNrZXkpLCBkYXRhKSB7IFwKKyAgICBpZiAoKHpzXyMja2V5KSA9PSBOVUxMKSB7a2V5ID0gTlVMTDsga2V5X3R5cGUgPSBIQVNIX0tFWV9JU19MT05HO30gXAorICAgIGVsc2Uge2tleSA9ICh6c18jI2tleSktPnZhbDsga2V5X3R5cGUgPSBIQVNIX0tFWV9JU19TVFJJTkc7fQorCisjZGVmaW5lIFBIUF9HUlBDX0hBU0hfRk9SRUFDSF9MT05HX0tFWV9WQUxfU1RBUlQoaHQsIGtleSwga2V5X3R5cGUsIGluZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkgXAorICB6ZW5kX3N0cmluZyAqKHpzXyMja2V5KTsgXAorICBaRU5EX0hBU0hfRk9SRUFDSF9LRVlfVkFMKGh0LCBpbmRleCwgenNfIyNrZXksIGRhdGEpIHsgXAorICAgIGlmICgoenNfIyNrZXkpID09IE5VTEwpIHtrZXkgPSBOVUxMOyBrZXlfdHlwZSA9IEhBU0hfS0VZX0lTX0xPTkc7fSBcCisgICAgZWxzZSB7a2V5ID0gKHpzXyMja2V5KS0+dmFsOyBrZXlfdHlwZSA9IEhBU0hfS0VZX0lTX1NUUklORzt9CisKKyNkZWZpbmUgUEhQX0dSUENfSEFTSF9GT1JFQUNIX0VORCgpIH0gWkVORF9IQVNIX0ZPUkVBQ0hfRU5EKCk7CisKK3N0YXRpYyBpbmxpbmUgaW50IHBocF9ncnBjX3plbmRfaGFzaF9maW5kKEhhc2hUYWJsZSAqaHQsIGNoYXIgKmtleSwgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKip2YWx1ZSkgeworICB6dmFsICp2YWx1ZV90bXAgPSB6ZW5kX2hhc2hfc3RyX2ZpbmQoaHQsIGtleSwgbGVuIC0xKTsKKyAgaWYgKHZhbHVlX3RtcCA9PSBOVUxMKSB7CisgICAgcmV0dXJuIEZBSUxVUkU7CisgIH0gZWxzZSB7CisgICAgKnZhbHVlID0gKHZvaWQgKil2YWx1ZV90bXA7CisgICAgcmV0dXJuIFNVQ0NFU1M7CisgIH0KK30KKworc3RhdGljIGlubGluZSBpbnQgcGhwX2dycGNfemVuZF9oYXNoX2RlbChIYXNoVGFibGUgKmh0LCBjaGFyICprZXksIGludCBsZW4pIHsKKyAgcmV0dXJuIHplbmRfaGFzaF9zdHJfZGVsKGh0LCBrZXksIGxlbiAtIDEpOworfQorCisjZGVmaW5lIFBIUF9HUlBDX0dFVF9DTEFTU19FTlRSWShvYmplY3QpIFpfT0JKX1Aob2JqZWN0KS0+Y2UKKworI2RlZmluZSBQSFBfR1JQQ19JTklUX0hBTkRMRVIoY2xhc3Nfb2JqZWN0LCBoYW5kbGVyX25hbWUpIFwKKyAgbWVtY3B5KCZoYW5kbGVyX25hbWUsIHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxlcnMoKSwgXAorICAgICAgICAgc2l6ZW9mKHplbmRfb2JqZWN0X2hhbmRsZXJzKSk7IFwKKyAgaGFuZGxlcl9uYW1lLm9mZnNldCA9IFh0T2Zmc2V0T2YoY2xhc3Nfb2JqZWN0LCBzdGQpOyBcCisgIGhhbmRsZXJfbmFtZS5mcmVlX29iaiA9IGZyZWVfIyNjbGFzc19vYmplY3QKKworI2VuZGlmIC8qIFBIUF9NQUpPUl9WRVJTSU9OICovCisKKyNlbmRpZiAvKiBQSFA3X1dSQVBQRVJfR1JQQ19IICovCmRpZmYgLS1naXQgYS9zcmMvcGhwL2V4dC9ncnBjL3BocF9ncnBjLmggYi9zcmMvcGhwL2V4dC9ncnBjL3BocF9ncnBjLmgKaW5kZXggYmQ3ZWU3NS4uZTU3YTA2NSAxMDA2NDQKLS0tIGEvc3JjL3BocC9leHQvZ3JwYy9waHBfZ3JwYy5oCisrKyBiL3NyYy9waHAvZXh0L2dycGMvcGhwX2dycGMuaApAQCAtNTcsNiArNTcsOCBAQAogCiAjaW5jbHVkZSAicGhwLmgiCiAKKyNpbmNsdWRlICJwaHA3X3dyYXBwZXIuaCIKKwogI2luY2x1ZGUgImdycGMvZ3JwYy5oIgogCiAjZGVmaW5lIFJFVFVSTl9ERVNUUk9ZX1pWQUwodmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9zcmMvcGhwL2V4dC9ncnBjL3NlcnZlci5jIGIvc3JjL3BocC9leHQvZ3JwYy9zZXJ2ZXIuYwppbmRleCA1MGZiMmQwLi5mYzIwYzQyIDEwMDY0NAotLS0gYS9zcmMvcGhwL2V4dC9ncnBjL3NlcnZlci5jCisrKyBiL3NyYy9waHAvZXh0L2dycGMvc2VydmVyLmMKQEAgLTU3LDg0ICs1NywzNyBAQAogI2luY2x1ZGUgInRpbWV2YWwuaCIKIAogemVuZF9jbGFzc19lbnRyeSAqZ3JwY19jZV9zZXJ2ZXI7Ci0KLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKKyNpZiBQSFBfTUFKT1JfVkVSU0lPTiA+PSA3CitzdGF0aWMgemVuZF9vYmplY3RfaGFuZGxlcnMgc2VydmVyX2NlX2hhbmRsZXJzOworI2VuZGlmCiAKIC8qIEZyZWVzIGFuZCBkZXN0cm95cyBhbiBpbnN0YW5jZSBvZiB3cmFwcGVkX2dycGNfc2VydmVyICovCi12b2lkIGZyZWVfd3JhcHBlZF9ncnBjX3NlcnZlcih2b2lkICpvYmplY3QgVFNSTUxTX0RDKSB7Ci0gIHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKnNlcnZlciA9ICh3cmFwcGVkX2dycGNfc2VydmVyICopb2JqZWN0OwotICBpZiAoc2VydmVyLT53cmFwcGVkICE9IE5VTEwpIHsKLSAgICBncnBjX3NlcnZlcl9zaHV0ZG93bl9hbmRfbm90aWZ5KHNlcnZlci0+d3JhcHBlZCwgY29tcGxldGlvbl9xdWV1ZSwgTlVMTCk7Ci0gICAgZ3JwY19zZXJ2ZXJfY2FuY2VsX2FsbF9jYWxscyhzZXJ2ZXItPndyYXBwZWQpOworUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfU1RBUlQod3JhcHBlZF9ncnBjX3NlcnZlcikKKyAgaWYgKHAtPndyYXBwZWQgIT0gTlVMTCkgeworICAgIGdycGNfc2VydmVyX3NodXRkb3duX2FuZF9ub3RpZnkocC0+d3JhcHBlZCwgY29tcGxldGlvbl9xdWV1ZSwgTlVMTCk7CisgICAgZ3JwY19zZXJ2ZXJfY2FuY2VsX2FsbF9jYWxscyhwLT53cmFwcGVkKTsKICAgICBncnBjX2NvbXBsZXRpb25fcXVldWVfcGx1Y2soY29tcGxldGlvbl9xdWV1ZSwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX2luZl9mdXR1cmUoR1BSX0NMT0NLX1JFQUxUSU1FKSwgTlVMTCk7Ci0gICAgZ3JwY19zZXJ2ZXJfZGVzdHJveShzZXJ2ZXItPndyYXBwZWQpOworICAgIGdycGNfc2VydmVyX2Rlc3Ryb3kocC0+d3JhcHBlZCk7CiAgIH0KLSAgemVuZF9vYmplY3Rfc3RkX2R0b3IoJnNlcnZlci0+c3RkIFRTUk1MU19DQyk7Ci0gIGVmcmVlKHNlcnZlcik7Ci19CitQSFBfR1JQQ19GUkVFX1dSQVBQRURfRlVOQ19FTkQoKQogCiAvKiBJbml0aWFsaXplcyBhbiBpbnN0YW5jZSBvZiB3cmFwcGVkX2dycGNfY2FsbCB0byBiZSBhc3NvY2lhdGVkIHdpdGggYW4gb2JqZWN0CiAgKiBvZiBhIGNsYXNzIHNwZWNpZmllZCBieSBjbGFzc190eXBlICovCi16ZW5kX29iamVjdF92YWx1ZSBjcmVhdGVfd3JhcHBlZF9ncnBjX3NlcnZlcih6ZW5kX2NsYXNzX2VudHJ5ICpjbGFzc190eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNSTUxTX0RDKSB7Ci0gIHplbmRfb2JqZWN0X3ZhbHVlIHJldHZhbDsKLSAgd3JhcHBlZF9ncnBjX3NlcnZlciAqaW50ZXJuOwotCi0gIGludGVybiA9ICh3cmFwcGVkX2dycGNfc2VydmVyICopZW1hbGxvYyhzaXplb2Yod3JhcHBlZF9ncnBjX3NlcnZlcikpOwotICBtZW1zZXQoaW50ZXJuLCAwLCBzaXplb2Yod3JhcHBlZF9ncnBjX3NlcnZlcikpOwotCitwaHBfZ3JwY196ZW5kX29iamVjdCBjcmVhdGVfd3JhcHBlZF9ncnBjX3NlcnZlcih6ZW5kX2NsYXNzX2VudHJ5ICpjbGFzc190eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU1JNTFNfREMpIHsKKyAgUEhQX0dSUENfQUxMT0NfQ0xBU1NfT0JKRUNUKHdyYXBwZWRfZ3JwY19zZXJ2ZXIpOwogICB6ZW5kX29iamVjdF9zdGRfaW5pdCgmaW50ZXJuLT5zdGQsIGNsYXNzX3R5cGUgVFNSTUxTX0NDKTsKICAgb2JqZWN0X3Byb3BlcnRpZXNfaW5pdCgmaW50ZXJuLT5zdGQsIGNsYXNzX3R5cGUpOwotICByZXR2YWwuaGFuZGxlID0gemVuZF9vYmplY3RzX3N0b3JlX3B1dCgKLSAgICAgIGludGVybiwgKHplbmRfb2JqZWN0c19zdG9yZV9kdG9yX3QpemVuZF9vYmplY3RzX2Rlc3Ryb3lfb2JqZWN0LAotICAgICAgZnJlZV93cmFwcGVkX2dycGNfc2VydmVyLCBOVUxMIFRTUk1MU19DQyk7Ci0gIHJldHZhbC5oYW5kbGVycyA9IHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxlcnMoKTsKLSAgcmV0dXJuIHJldHZhbDsKKyAgUEhQX0dSUENfRlJFRV9DTEFTU19PQkpFQ1Qod3JhcHBlZF9ncnBjX3NlcnZlciwgc2VydmVyX2NlX2hhbmRsZXJzKTsKIH0KIAotI2Vsc2UKLQotc3RhdGljIHplbmRfb2JqZWN0X2hhbmRsZXJzIHNlcnZlcl9jZV9oYW5kbGVyczsKLQotLyogRnJlZXMgYW5kIGRlc3Ryb3lzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKi8KLXN0YXRpYyB2b2lkIGZyZWVfd3JhcHBlZF9ncnBjX3NlcnZlcih6ZW5kX29iamVjdCAqb2JqZWN0KSB7Ci0gIHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKnNlcnZlciA9IHdyYXBwZWRfZ3JwY19zZXJ2ZXJfZnJvbV9vYmoob2JqZWN0KTsKLSAgaWYgKHNlcnZlci0+d3JhcHBlZCAhPSBOVUxMKSB7Ci0gICAgZ3JwY19zZXJ2ZXJfc2h1dGRvd25fYW5kX25vdGlmeShzZXJ2ZXItPndyYXBwZWQsIGNvbXBsZXRpb25fcXVldWUsIE5VTEwpOwotICAgIGdycGNfc2VydmVyX2NhbmNlbF9hbGxfY2FsbHMoc2VydmVyLT53cmFwcGVkKTsKLSAgICBncnBjX2NvbXBsZXRpb25fcXVldWVfcGx1Y2soY29tcGxldGlvbl9xdWV1ZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX2luZl9mdXR1cmUoR1BSX0NMT0NLX1JFQUxUSU1FKSwgTlVMTCk7Ci0gICAgZ3JwY19zZXJ2ZXJfZGVzdHJveShzZXJ2ZXItPndyYXBwZWQpOwotICB9Ci0gIHplbmRfb2JqZWN0X3N0ZF9kdG9yKCZzZXJ2ZXItPnN0ZCk7Ci19Ci0KLS8qIEluaXRpYWxpemVzIGFuIGluc3RhbmNlIG9mIHdyYXBwZWRfZ3JwY19jYWxsIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmplY3QKLSAqIG9mIGEgY2xhc3Mgc3BlY2lmaWVkIGJ5IGNsYXNzX3R5cGUgKi8KLXplbmRfb2JqZWN0ICpjcmVhdGVfd3JhcHBlZF9ncnBjX3NlcnZlcih6ZW5kX2NsYXNzX2VudHJ5ICpjbGFzc190eXBlKSB7Ci0gIHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKmludGVybjsKLSAgaW50ZXJuID0gZWNhbGxvYygxLCBzaXplb2Yod3JhcHBlZF9ncnBjX3NlcnZlcikgKwotICAgICAgICAgICAgICAgICAgIHplbmRfb2JqZWN0X3Byb3BlcnRpZXNfc2l6ZShjbGFzc190eXBlKSk7Ci0gIHplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0gIG9iamVjdF9wcm9wZXJ0aWVzX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLSAgaW50ZXJuLT5zdGQuaGFuZGxlcnMgPSAmc2VydmVyX2NlX2hhbmRsZXJzOwotICByZXR1cm4gJmludGVybi0+c3RkOwotfQotCi0jZW5kaWYKLQogLyoqCiAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBTZXJ2ZXIgY2xhc3MKICAqIEBwYXJhbSBhcnJheSAkYXJncyBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHNlcnZlciAob3B0aW9uYWwpCiAgKi8KIFBIUF9NRVRIT0QoU2VydmVyLCBfX2NvbnN0cnVjdCkgewotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB3cmFwcGVkX2dycGNfc2VydmVyICpzZXJ2ZXIgPQotICAgICAgKHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX3NlcnZlciAqc2VydmVyID0gWl9XUkFQUEVEX0dSUENfU0VSVkVSX1AoZ2V0VGhpcygpKTsKLSNlbmRpZgogICB6dmFsICphcmdzX2FycmF5ID0gTlVMTDsKICAgZ3JwY19jaGFubmVsX2FyZ3MgYXJnczsKIApAQCAtMTcyLDE2ICsxMjUsMTAgQEAKICAgZ3JwY19tZXRhZGF0YV9hcnJheSBtZXRhZGF0YTsKICAgZ3JwY19ldmVudCBldmVudDsKIAotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB3cmFwcGVkX2dycGNfc2VydmVyICpzZXJ2ZXIgPQotICAgICAgKHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOwotICB6dmFsICpyZXN1bHQ7Ci0gIE1BS0VfU1REX1pWQUwocmVzdWx0KTsKLSAgb2JqZWN0X2luaXQocmVzdWx0KTsKLSNlbHNlCiAgIHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKnNlcnZlciA9IFpfV1JBUFBFRF9HUlBDX1NFUlZFUl9QKGdldFRoaXMoKSk7Ci0gIG9iamVjdF9pbml0KHJldHVybl92YWx1ZSk7Ci0jZW5kaWYKKyAgenZhbCAqcmVzdWx0OworICBQSFBfR1JQQ19NQUtFX1NURF9aVkFMKHJlc3VsdCk7CisgIG9iamVjdF9pbml0KHJlc3VsdCk7CiAKICAgZ3JwY19jYWxsX2RldGFpbHNfaW5pdCgmZGV0YWlscyk7CiAgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmbWV0YWRhdGEpOwpAQCAtMjAyLDQwICsxNDksMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAxIFRTUk1MU19DQyk7CiAgICAgZ290byBjbGVhbnVwOwogICB9CisgIHBocF9ncnBjX2FkZF9wcm9wZXJ0eV9zdHJpbmcocmVzdWx0LCAibWV0aG9kIiwgZGV0YWlscy5tZXRob2QsIHRydWUpOworICBwaHBfZ3JwY19hZGRfcHJvcGVydHlfc3RyaW5nKHJlc3VsdCwgImhvc3QiLCBkZXRhaWxzLmhvc3QsIHRydWUpOwogI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwogICBhZGRfcHJvcGVydHlfenZhbChyZXN1bHQsICJjYWxsIiwgZ3JwY19waHBfd3JhcF9jYWxsKGNhbGwsIHRydWUgVFNSTUxTX0NDKSk7Ci0gIGFkZF9wcm9wZXJ0eV9zdHJpbmcocmVzdWx0LCAibWV0aG9kIiwgZGV0YWlscy5tZXRob2QsIHRydWUpOwotICBhZGRfcHJvcGVydHlfc3RyaW5nKHJlc3VsdCwgImhvc3QiLCBkZXRhaWxzLmhvc3QsIHRydWUpOwogICBhZGRfcHJvcGVydHlfenZhbChyZXN1bHQsICJhYnNvbHV0ZV9kZWFkbGluZSIsCiAgICAgICAgICAgICAgICAgICAgIGdycGNfcGhwX3dyYXBfdGltZXZhbChkZXRhaWxzLmRlYWRsaW5lIFRTUk1MU19DQykpOwogICBhZGRfcHJvcGVydHlfenZhbChyZXN1bHQsICJtZXRhZGF0YSIsIGdycGNfcGFyc2VfbWV0YWRhdGFfYXJyYXkoJm1ldGFkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU1JNTFNfQ0MpKTsKLSAKLWNsZWFudXA6Ci0gIGdycGNfY2FsbF9kZXRhaWxzX2Rlc3Ryb3koJmRldGFpbHMpOwotICBncnBjX21ldGFkYXRhX2FycmF5X2Rlc3Ryb3koJm1ldGFkYXRhKTsKLSAgUkVUVVJOX0RFU1RST1lfWlZBTChyZXN1bHQpOwotCiAjZWxzZQotCiAgIHp2YWwgenZfY2FsbDsKICAgenZhbCB6dl90aW1ldmFsOwogICB6dmFsIHp2X21kOwotICBncnBjX3BocF93cmFwX2NhbGwoY2FsbCwgdHJ1ZSwgJnp2X2NhbGwpOwotICBncnBjX3BocF93cmFwX3RpbWV2YWwoZGV0YWlscy5kZWFkbGluZSwgJnp2X3RpbWV2YWwpOwotICBncnBjX3BhcnNlX21ldGFkYXRhX2FycmF5KCZtZXRhZGF0YSwgJnp2X21kKTsKKyAgLy9UT0RPKHRoaW5rZXJvdSk6IHdoeSB1c2UgenZhbCogdG8gdW5pdCB0ZXN0IGVycm9yPworICB6dl9jYWxsID0gKmdycGNfcGhwX3dyYXBfY2FsbChjYWxsLCB0cnVlKTsKKyAgenZfdGltZXZhbCA9ICpncnBjX3BocF93cmFwX3RpbWV2YWwoZGV0YWlscy5kZWFkbGluZSk7CisgIHp2X21kID0gKmdycGNfcGFyc2VfbWV0YWRhdGFfYXJyYXkoJm1ldGFkYXRhKTsKIAotICBhZGRfcHJvcGVydHlfenZhbChyZXR1cm5fdmFsdWUsICJjYWxsIiwgJnp2X2NhbGwpOwotICBhZGRfcHJvcGVydHlfc3RyaW5nKHJldHVybl92YWx1ZSwgIm1ldGhvZCIsIGRldGFpbHMubWV0aG9kKTsKLSAgYWRkX3Byb3BlcnR5X3N0cmluZyhyZXR1cm5fdmFsdWUsICJob3N0IiwgZGV0YWlscy5ob3N0KTsKLSAgYWRkX3Byb3BlcnR5X3p2YWwocmV0dXJuX3ZhbHVlLCAiYWJzb2x1dGVfZGVhZGxpbmUiLCAmenZfdGltZXZhbCk7Ci0gIGFkZF9wcm9wZXJ0eV96dmFsKHJldHVybl92YWx1ZSwgIm1ldGFkYXRhIiwgJnp2X21kKTsKKyAgYWRkX3Byb3BlcnR5X3p2YWwocmVzdWx0LCAiY2FsbCIsICZ6dl9jYWxsKTsKKyAgYWRkX3Byb3BlcnR5X3p2YWwocmVzdWx0LCAiYWJzb2x1dGVfZGVhZGxpbmUiLCAmenZfdGltZXZhbCk7CisgIGFkZF9wcm9wZXJ0eV96dmFsKHJlc3VsdCwgIm1ldGFkYXRhIiwgJnp2X21kKTsKKyNlbmRpZgogCiAgY2xlYW51cDoKICAgZ3JwY19jYWxsX2RldGFpbHNfZGVzdHJveSgmZGV0YWlscyk7CiAgIGdycGNfbWV0YWRhdGFfYXJyYXlfZGVzdHJveSgmbWV0YWRhdGEpOwotICBSRVRVUk5fREVTVFJPWV9aVkFMKHJldHVybl92YWx1ZSk7Ci0jZW5kaWYKKyAgUkVUVVJOX0RFU1RST1lfWlZBTChyZXN1bHQpOwogfQogCiAvKioKQEAgLTI0NSwxNCArMTg0LDggQEAKICAqLwogUEhQX01FVEhPRChTZXJ2ZXIsIGFkZEh0dHAyUG9ydCkgewogICBjb25zdCBjaGFyICphZGRyOwotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICBpbnQgYWRkcl9sZW47Ci0gIHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKnNlcnZlciA9Ci0gICAgICAod3JhcHBlZF9ncnBjX3NlcnZlciAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoZ2V0VGhpcygpIFRTUk1MU19DQyk7Ci0jZWxzZQotICBzaXplX3QgYWRkcl9sZW47CisgIHBocF9ncnBjX2ludCBhZGRyX2xlbjsKICAgd3JhcHBlZF9ncnBjX3NlcnZlciAqc2VydmVyID0gWl9XUkFQUEVEX0dSUENfU0VSVkVSX1AoZ2V0VGhpcygpKTsKLSNlbmRpZgogCiAgIC8qICJzIiA9PSAxIHN0cmluZyAqLwogICBpZiAoemVuZF9wYXJzZV9wYXJhbWV0ZXJzKFpFTkRfTlVNX0FSR1MoKSBUU1JNTFNfQ0MsICJzIiwgJmFkZHIsICZhZGRyX2xlbikKQEAgLTI2NiwxNSArMTk5LDkgQEAKIAogUEhQX01FVEhPRChTZXJ2ZXIsIGFkZFNlY3VyZUh0dHAyUG9ydCkgewogICBjb25zdCBjaGFyICphZGRyOworICBwaHBfZ3JwY19pbnQgYWRkcl9sZW47CiAgIHp2YWwgKmNyZWRzX29iajsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgaW50IGFkZHJfbGVuOwotICB3cmFwcGVkX2dycGNfc2VydmVyICpzZXJ2ZXIgPQotICAgICAgKHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOwotI2Vsc2UKLSAgc2l6ZV90IGFkZHJfbGVuOwogICB3cmFwcGVkX2dycGNfc2VydmVyICpzZXJ2ZXIgPSBaX1dSQVBQRURfR1JQQ19TRVJWRVJfUChnZXRUaGlzKCkpOwotI2VuZGlmCiAKICAgLyogInNPIiA9PSAxIHN0cmluZywgMSBvYmplY3QgKi8KICAgaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAic08iLCAmYWRkciwgJmFkZHJfbGVuLApAQCAtMjg1LDE0ICsyMTIsOCBAQAogICAgICAgICAiYWRkX2h0dHAyX3BvcnQgZXhwZWN0cyBhIHN0cmluZyBhbmQgYSBTZXJ2ZXJDcmVkZW50aWFscyIsIDEgVFNSTUxTX0NDKTsKICAgICByZXR1cm47CiAgIH0KLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyAqY3JlZHMgPQotICAgICAgKHdyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KAotICAgICAgICAgIGNyZWRzX29iaiBUU1JNTFNfQ0MpOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyAqY3JlZHMgPQogICAgIFpfV1JBUFBFRF9HUlBDX1NFUlZFUl9DUkVEU19QKGNyZWRzX29iaik7Ci0jZW5kaWYKICAgUkVUVVJOX0xPTkcoZ3JwY19zZXJ2ZXJfYWRkX3NlY3VyZV9odHRwMl9wb3J0KHNlcnZlci0+d3JhcHBlZCwgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRzLT53cmFwcGVkKSk7CiB9CkBAIC0zMDIsMTIgKzIyMyw3IEBACiAgKiBAcmV0dXJuIFZvaWQKICAqLwogUEhQX01FVEhPRChTZXJ2ZXIsIHN0YXJ0KSB7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIHdyYXBwZWRfZ3JwY19zZXJ2ZXIgKnNlcnZlciA9Ci0gICAgICAod3JhcHBlZF9ncnBjX3NlcnZlciAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoZ2V0VGhpcygpIFRTUk1MU19DQyk7Ci0jZWxzZQogICB3cmFwcGVkX2dycGNfc2VydmVyICpzZXJ2ZXIgPSBaX1dSQVBQRURfR1JQQ19TRVJWRVJfUChnZXRUaGlzKCkpOwotI2VuZGlmCiAgIGdycGNfc2VydmVyX3N0YXJ0KHNlcnZlci0+d3JhcHBlZCk7CiB9CiAKQEAgLTMxNyw3ICsyMzMsNyBAQAogICBQSFBfTUUoU2VydmVyLCBhZGRIdHRwMlBvcnQsIE5VTEwsIFpFTkRfQUNDX1BVQkxJQykKICAgUEhQX01FKFNlcnZlciwgYWRkU2VjdXJlSHR0cDJQb3J0LCBOVUxMLCBaRU5EX0FDQ19QVUJMSUMpCiAgIFBIUF9NRShTZXJ2ZXIsIHN0YXJ0LCBOVUxMLCBaRU5EX0FDQ19QVUJMSUMpCi0gUEhQX0ZFX0VORAorICBQSFBfRkVfRU5ECiB9OwogCiB2b2lkIGdycGNfaW5pdF9zZXJ2ZXIoVFNSTUxTX0QpIHsKQEAgLTMyNSwxMCArMjQxLDUgQEAKICAgSU5JVF9DTEFTU19FTlRSWShjZSwgIkdycGNcXFNlcnZlciIsIHNlcnZlcl9tZXRob2RzKTsKICAgY2UuY3JlYXRlX29iamVjdCA9IGNyZWF0ZV93cmFwcGVkX2dycGNfc2VydmVyOwogICBncnBjX2NlX3NlcnZlciA9IHplbmRfcmVnaXN0ZXJfaW50ZXJuYWxfY2xhc3MoJmNlIFRTUk1MU19DQyk7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPj0gNwotICBtZW1jcHkoJnNlcnZlcl9jZV9oYW5kbGVycywgemVuZF9nZXRfc3RkX29iamVjdF9oYW5kbGVycygpLAotICAgICAgICAgc2l6ZW9mKHplbmRfb2JqZWN0X2hhbmRsZXJzKSk7Ci0gIHNlcnZlcl9jZV9oYW5kbGVycy5vZmZzZXQgPSBYdE9mZnNldE9mKHdyYXBwZWRfZ3JwY19zZXJ2ZXIsIHN0ZCk7Ci0gIHNlcnZlcl9jZV9oYW5kbGVycy5mcmVlX29iaiA9IGZyZWVfd3JhcHBlZF9ncnBjX3NlcnZlcjsKLSNlbmRpZgorICBQSFBfR1JQQ19JTklUX0hBTkRMRVIod3JhcHBlZF9ncnBjX3NlcnZlciwgc2VydmVyX2NlX2hhbmRsZXJzKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9waHAvZXh0L2dycGMvc2VydmVyLmggYi9zcmMvcGhwL2V4dC9ncnBjL3NlcnZlci5oCmluZGV4IGE3ZGY0NTYuLmE2MzViYzEgMTAwNzU1Ci0tLSBhL3NyYy9waHAvZXh0L2dycGMvc2VydmVyLmgKKysrIGIvc3JjL3BocC9leHQvZ3JwYy9zZXJ2ZXIuaApAQCAtNDgsMzAgKzQ4LDI1IEBACiAvKiBDbGFzcyBlbnRyeSBmb3IgdGhlIFNlcnZlciBQSFAgY2xhc3MgKi8KIGV4dGVybiB6ZW5kX2NsYXNzX2VudHJ5ICpncnBjX2NlX3NlcnZlcjsKIAorLyogV3JhcHBlciBzdHJ1Y3QgZm9yIGdycGNfc2VydmVyIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIFBIUCBvYmplY3QgKi8KK1BIUF9HUlBDX1dSQVBfT0JKRUNUX1NUQVJUKHdyYXBwZWRfZ3JwY19zZXJ2ZXIpCisgIGdycGNfc2VydmVyICp3cmFwcGVkOworUEhQX0dSUENfV1JBUF9PQkpFQ1RfRU5EKHdyYXBwZWRfZ3JwY19zZXJ2ZXIpCisKICNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKIAotLyogV3JhcHBlciBzdHJ1Y3QgZm9yIGdycGNfc2VydmVyIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIFBIUCBvYmplY3QgKi8KLXR5cGVkZWYgc3RydWN0IHdyYXBwZWRfZ3JwY19zZXJ2ZXIgewotICB6ZW5kX29iamVjdCBzdGQ7Ci0gIGdycGNfc2VydmVyICp3cmFwcGVkOwotfSB3cmFwcGVkX2dycGNfc2VydmVyOworI2RlZmluZSBaX1dSQVBQRURfR1JQQ19TRVJWRVJfUCh6dikgXAorICAod3JhcHBlZF9ncnBjX3NlcnZlciAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoenYgVFNSTUxTX0NDKQogCiAjZWxzZQogCi0vKiBXcmFwcGVyIHN0cnVjdCBmb3IgZ3JwY19zZXJ2ZXIgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgUEhQIG9iamVjdCAqLwotdHlwZWRlZiBzdHJ1Y3Qgd3JhcHBlZF9ncnBjX3NlcnZlciB7Ci0gIGdycGNfc2VydmVyICp3cmFwcGVkOwotICB6ZW5kX29iamVjdCBzdGQ7Ci19IHdyYXBwZWRfZ3JwY19zZXJ2ZXI7Ci0KIHN0YXRpYyBpbmxpbmUgd3JhcHBlZF9ncnBjX3NlcnZlcgogKndyYXBwZWRfZ3JwY19zZXJ2ZXJfZnJvbV9vYmooemVuZF9vYmplY3QgKm9iaikgewogICByZXR1cm4gKHdyYXBwZWRfZ3JwY19zZXJ2ZXIqKSgoY2hhciopKG9iaikgLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYdE9mZnNldE9mKHdyYXBwZWRfZ3JwY19zZXJ2ZXIsIHN0ZCkpOwogfQogCi0jZGVmaW5lIFpfV1JBUFBFRF9HUlBDX1NFUlZFUl9QKHp2KSAgICAgICAgICAgICBcCi0gIHdyYXBwZWRfZ3JwY19zZXJ2ZXJfZnJvbV9vYmooWl9PQkpfUCgoenYpKSkKKyNkZWZpbmUgWl9XUkFQUEVEX0dSUENfU0VSVkVSX1AoenYpIHdyYXBwZWRfZ3JwY19zZXJ2ZXJfZnJvbV9vYmooWl9PQkpfUCgoenYpKSkKIAogI2VuZGlmIC8qIFBIUF9NQUpPUl9WRVJTSU9OICovCiAKZGlmZiAtLWdpdCBhL3NyYy9waHAvZXh0L2dycGMvc2VydmVyX2NyZWRlbnRpYWxzLmMgYi9zcmMvcGhwL2V4dC9ncnBjL3NlcnZlcl9jcmVkZW50aWFscy5jCmluZGV4IDI5NjYzMmQuLmIwNTg5NmEgMTAwNjQ0Ci0tLSBhL3NyYy9waHAvZXh0L2dycGMvc2VydmVyX2NyZWRlbnRpYWxzLmMKKysrIGIvc3JjL3BocC9leHQvZ3JwYy9zZXJ2ZXJfY3JlZGVudGlhbHMuYwpAQCAtNTAsODkgKzUwLDM5IEBACiAjaW5jbHVkZSA8Z3JwYy9ncnBjX3NlY3VyaXR5Lmg+CiAKIHplbmRfY2xhc3NfZW50cnkgKmdycGNfY2Vfc2VydmVyX2NyZWRlbnRpYWxzOwotCi0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CisjaWYgUEhQX01BSk9SX1ZFUlNJT04gPj0gNworc3RhdGljIHplbmRfb2JqZWN0X2hhbmRsZXJzIHNlcnZlcl9jcmVkZW50aWFsc19jZV9oYW5kbGVyczsKKyNlbmRpZgogCiAvKiBGcmVlcyBhbmQgZGVzdHJveXMgYW4gaW5zdGFjZSBvZiB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzICovCi12b2lkIGZyZWVfd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyh2b2lkICpvYmplY3QgVFNSTUxTX0RDKSB7Ci0gIHdyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMgKmNyZWRzID0KLSAgICAgICh3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzICopb2JqZWN0OwotICBpZiAoY3JlZHMtPndyYXBwZWQgIT0gTlVMTCkgewotICAgIGdycGNfc2VydmVyX2NyZWRlbnRpYWxzX3JlbGVhc2UoY3JlZHMtPndyYXBwZWQpOworUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfU1RBUlQod3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscykKKyAgaWYgKHAtPndyYXBwZWQgIT0gTlVMTCkgeworICAgIGdycGNfc2VydmVyX2NyZWRlbnRpYWxzX3JlbGVhc2UocC0+d3JhcHBlZCk7CiAgIH0KLSAgemVuZF9vYmplY3Rfc3RkX2R0b3IoJmNyZWRzLT5zdGQgVFNSTUxTX0NDKTsKLSAgZWZyZWUoY3JlZHMpOwotfQorUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfRU5EKCkKIAogLyogSW5pdGlhbGl6ZXMgYW4gaW5zdGFjZSBvZiB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzIHRvIGJlIGFzc29jaWF0ZWQKICAqIHdpdGggYW4gb2JqZWN0IG9mIGEgY2xhc3Mgc3BlY2lmaWVkIGJ5IGNsYXNzX3R5cGUgKi8KLXplbmRfb2JqZWN0X3ZhbHVlIGNyZWF0ZV93cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzKAorcGhwX2dycGNfemVuZF9vYmplY3QgY3JlYXRlX3dyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMoCiAgICAgemVuZF9jbGFzc19lbnRyeSAqY2xhc3NfdHlwZSBUU1JNTFNfREMpIHsKLSAgemVuZF9vYmplY3RfdmFsdWUgcmV0dmFsOwotICB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzICppbnRlcm47Ci0KLSAgaW50ZXJuID0gKHdyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMgKillbWFsbG9jKAotICAgICAgc2l6ZW9mKHdyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMpKTsKLSAgbWVtc2V0KGludGVybiwgMCwgc2l6ZW9mKHdyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMpKTsKLQorICBQSFBfR1JQQ19BTExPQ19DTEFTU19PQkpFQ1Qod3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyk7CiAgIHplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwogICBvYmplY3RfcHJvcGVydGllc19pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0gIHJldHZhbC5oYW5kbGUgPSB6ZW5kX29iamVjdHNfc3RvcmVfcHV0KAotICAgICAgaW50ZXJuLCAoemVuZF9vYmplY3RzX3N0b3JlX2R0b3JfdCl6ZW5kX29iamVjdHNfZGVzdHJveV9vYmplY3QsCi0gICAgICBmcmVlX3dyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMsIE5VTEwgVFNSTUxTX0NDKTsKLSAgcmV0dmFsLmhhbmRsZXJzID0gemVuZF9nZXRfc3RkX29iamVjdF9oYW5kbGVycygpOwotICByZXR1cm4gcmV0dmFsOworICBQSFBfR1JQQ19GUkVFX0NMQVNTX09CSkVDVCh3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnMpOwogfQogCiB6dmFsICpncnBjX3BocF93cmFwX3NlcnZlcl9jcmVkZW50aWFscyhncnBjX3NlcnZlcl9jcmVkZW50aWFscwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKndyYXBwZWQgVFNSTUxTX0RDKSB7CiAgIHp2YWwgKnNlcnZlcl9jcmVkZW50aWFsc19vYmplY3Q7Ci0gIE1BS0VfU1REX1pWQUwoc2VydmVyX2NyZWRlbnRpYWxzX29iamVjdCk7Ci0gIG9iamVjdF9pbml0X2V4KHNlcnZlcl9jcmVkZW50aWFsc19vYmplY3QsIGdycGNfY2Vfc2VydmVyX2NyZWRlbnRpYWxzKTsKLSAgd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyAqc2VydmVyX2NyZWRlbnRpYWxzID0KLSAgICAgICh3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdCgKLSAgICAgICAgICBzZXJ2ZXJfY3JlZGVudGlhbHNfb2JqZWN0IFRTUk1MU19DQyk7Ci0gIHNlcnZlcl9jcmVkZW50aWFscy0+d3JhcHBlZCA9IHdyYXBwZWQ7Ci0gIHJldHVybiBzZXJ2ZXJfY3JlZGVudGlhbHNfb2JqZWN0OwotfQotCi0jZWxzZQotCi1zdGF0aWMgemVuZF9vYmplY3RfaGFuZGxlcnMgc2VydmVyX2NyZWRlbnRpYWxzX2NlX2hhbmRsZXJzOwotCi0vKiBGcmVlcyBhbmQgZGVzdHJveXMgYW4gaW5zdGFjZSBvZiB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzICovCi1zdGF0aWMgdm9pZCBmcmVlX3dyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMoemVuZF9vYmplY3QgKm9iamVjdCkgewotICB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzICpjcmVkcyA9Ci0gICAgd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkc19mcm9tX29iaihvYmplY3QpOwotICBpZiAoY3JlZHMtPndyYXBwZWQgIT0gTlVMTCkgewotICAgIGdycGNfc2VydmVyX2NyZWRlbnRpYWxzX3JlbGVhc2UoY3JlZHMtPndyYXBwZWQpOwotICB9Ci0gIHplbmRfb2JqZWN0X3N0ZF9kdG9yKCZjcmVkcy0+c3RkKTsKLX0KLQotLyogSW5pdGlhbGl6ZXMgYW4gaW5zdGFjZSBvZiB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzIHRvIGJlIGFzc29jaWF0ZWQKLSAqIHdpdGggYW4gb2JqZWN0IG9mIGEgY2xhc3Mgc3BlY2lmaWVkIGJ5IGNsYXNzX3R5cGUgKi8KLXplbmRfb2JqZWN0ICpjcmVhdGVfd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyh6ZW5kX2NsYXNzX2VudHJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNsYXNzX3R5cGUpIHsKLSAgd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyAqaW50ZXJuOwotICBpbnRlcm4gPSBlY2FsbG9jKDEsIHNpemVvZih3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzKSArCi0gICAgICAgICAgICAgICAgICAgemVuZF9vYmplY3RfcHJvcGVydGllc19zaXplKGNsYXNzX3R5cGUpKTsKLSAgemVuZF9vYmplY3Rfc3RkX2luaXQoJmludGVybi0+c3RkLCBjbGFzc190eXBlKTsKLSAgb2JqZWN0X3Byb3BlcnRpZXNfaW5pdCgmaW50ZXJuLT5zdGQsIGNsYXNzX3R5cGUpOwotICBpbnRlcm4tPnN0ZC5oYW5kbGVycyA9ICZzZXJ2ZXJfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnM7Ci0gIHJldHVybiAmaW50ZXJuLT5zdGQ7Ci19Ci0KLXZvaWQgZ3JwY19waHBfd3JhcF9zZXJ2ZXJfY3JlZGVudGlhbHMoZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMgKndyYXBwZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp2YWwgKnNlcnZlcl9jcmVkZW50aWFsc19vYmplY3QpIHsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChzZXJ2ZXJfY3JlZGVudGlhbHNfb2JqZWN0KTsKICAgb2JqZWN0X2luaXRfZXgoc2VydmVyX2NyZWRlbnRpYWxzX29iamVjdCwgZ3JwY19jZV9zZXJ2ZXJfY3JlZGVudGlhbHMpOwogICB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzICpzZXJ2ZXJfY3JlZGVudGlhbHMgPQogICAgIFpfV1JBUFBFRF9HUlBDX1NFUlZFUl9DUkVEU19QKHNlcnZlcl9jcmVkZW50aWFsc19vYmplY3QpOwogICBzZXJ2ZXJfY3JlZGVudGlhbHMtPndyYXBwZWQgPSB3cmFwcGVkOworICByZXR1cm4gc2VydmVyX2NyZWRlbnRpYWxzX29iamVjdDsKIH0KIAotI2VuZGlmCi0KIC8qKgogICogQ3JlYXRlIFNTTCBjcmVkZW50aWFscy4KICAqIEBwYXJhbSBzdHJpbmcgcGVtX3Jvb3RfY2VydHMgUEVNIGVuY29kaW5nIG9mIHRoZSBzZXJ2ZXIgcm9vdCBjZXJ0aWZpY2F0ZXMKQEAgLTE0NCwxMSArOTQsOSBAQAogICBjaGFyICpwZW1fcm9vdF9jZXJ0cyA9IDA7CiAgIGdycGNfc3NsX3BlbV9rZXlfY2VydF9wYWlyIHBlbV9rZXlfY2VydF9wYWlyOwogCi0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIGludCByb290X2NlcnRzX2xlbmd0aCA9IDAsIHByaXZhdGVfa2V5X2xlbmd0aCwgY2VydF9jaGFpbl9sZW5ndGg7Ci0jZWxzZQotICBzaXplX3Qgcm9vdF9jZXJ0c19sZW5ndGggPSAwLCBwcml2YXRlX2tleV9sZW5ndGgsIGNlcnRfY2hhaW5fbGVuZ3RoOwotI2VuZGlmCisgIHBocF9ncnBjX2ludCByb290X2NlcnRzX2xlbmd0aCA9IDA7CisgIHBocF9ncnBjX2ludCBwcml2YXRlX2tleV9sZW5ndGg7CisgIHBocF9ncnBjX2ludCBjZXJ0X2NoYWluX2xlbmd0aDsKIAogICAvKiAicyFzcyIgPT0gMSBudWxsYWJsZSBzdHJpbmcsIDIgc3RyaW5ncyAqLwogICAvKiBUT0RPOiBzdXBwb3J0IG11bHRpcGxlIGtleSBjZXJ0IHBhaXJzLiAqLwpAQCAtMTY1LDE5ICsxMTMsMTYgQEAKICAgZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMgKmNyZWRzID0gZ3JwY19zc2xfc2VydmVyX2NyZWRlbnRpYWxzX2NyZWF0ZV9leCgKICAgICAgIHBlbV9yb290X2NlcnRzLCAmcGVtX2tleV9jZXJ0X3BhaXIsIDEsCiAgICAgICBHUlBDX1NTTF9ET05UX1JFUVVFU1RfQ0xJRU5UX0NFUlRJRklDQVRFLCBOVUxMKTsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgenZhbCAqY3JlZHNfb2JqZWN0ID0gZ3JwY19waHBfd3JhcF9zZXJ2ZXJfY3JlZGVudGlhbHMoY3JlZHMgVFNSTUxTX0NDKTsKKyAgenZhbCAqY3JlZHNfb2JqZWN0OworICBQSFBfR1JQQ19NQUtFX1NURF9aVkFMKGNyZWRzX29iamVjdCk7CisgIGNyZWRzX29iamVjdCA9IGdycGNfcGhwX3dyYXBfc2VydmVyX2NyZWRlbnRpYWxzKGNyZWRzIFRTUk1MU19DQyk7CiAgIFJFVFVSTl9ERVNUUk9ZX1pWQUwoY3JlZHNfb2JqZWN0KTsKLSNlbHNlCi0gIGdycGNfcGhwX3dyYXBfc2VydmVyX2NyZWRlbnRpYWxzKGNyZWRzLCByZXR1cm5fdmFsdWUpOwotICBSRVRVUk5fREVTVFJPWV9aVkFMKHJldHVybl92YWx1ZSk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIHplbmRfZnVuY3Rpb25fZW50cnkgc2VydmVyX2NyZWRlbnRpYWxzX21ldGhvZHNbXSA9IHsKICAgUEhQX01FKFNlcnZlckNyZWRlbnRpYWxzLCBjcmVhdGVTc2wsIE5VTEwsCiAgICAgICAgICBaRU5EX0FDQ19QVUJMSUMgfCBaRU5EX0FDQ19TVEFUSUMpCi0gICBQSFBfRkVfRU5ECisgIFBIUF9GRV9FTkQKICB9OwogCiB2b2lkIGdycGNfaW5pdF9zZXJ2ZXJfY3JlZGVudGlhbHMoVFNSTUxTX0QpIHsKQEAgLTE4NSwxMyArMTMwLDYgQEAKICAgSU5JVF9DTEFTU19FTlRSWShjZSwgIkdycGNcXFNlcnZlckNyZWRlbnRpYWxzIiwgc2VydmVyX2NyZWRlbnRpYWxzX21ldGhvZHMpOwogICBjZS5jcmVhdGVfb2JqZWN0ID0gY3JlYXRlX3dyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHM7CiAgIGdycGNfY2Vfc2VydmVyX2NyZWRlbnRpYWxzID0gemVuZF9yZWdpc3Rlcl9pbnRlcm5hbF9jbGFzcygmY2UgVFNSTUxTX0NDKTsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA+PSA3Ci0gIG1lbWNweSgmc2VydmVyX2NyZWRlbnRpYWxzX2NlX2hhbmRsZXJzLAotICAgICAgICAgemVuZF9nZXRfc3RkX29iamVjdF9oYW5kbGVycygpLAotICAgICAgICAgc2l6ZW9mKHplbmRfb2JqZWN0X2hhbmRsZXJzKSk7Ci0gIHNlcnZlcl9jcmVkZW50aWFsc19jZV9oYW5kbGVycy5vZmZzZXQgPQotICAgIFh0T2Zmc2V0T2Yod3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscywgc3RkKTsKLSAgc2VydmVyX2NyZWRlbnRpYWxzX2NlX2hhbmRsZXJzLmZyZWVfb2JqID0KLSAgICBmcmVlX3dyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHM7Ci0jZW5kaWYKKyAgUEhQX0dSUENfSU5JVF9IQU5ETEVSKHdyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY3JlZGVudGlhbHNfY2VfaGFuZGxlcnMpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3BocC9leHQvZ3JwYy9zZXJ2ZXJfY3JlZGVudGlhbHMuaCBiL3NyYy9waHAvZXh0L2dycGMvc2VydmVyX2NyZWRlbnRpYWxzLmgKaW5kZXggZDM3ZmFmYy4uNjc4MWE2MSAxMDA3NTUKLS0tIGEvc3JjL3BocC9leHQvZ3JwYy9zZXJ2ZXJfY3JlZGVudGlhbHMuaAorKysgYi9zcmMvcGhwL2V4dC9ncnBjL3NlcnZlcl9jcmVkZW50aWFscy5oCkBAIC00OSwzMSArNDksMjcgQEAKIC8qIENsYXNzIGVudHJ5IGZvciB0aGUgU2VydmVyX0NyZWRlbnRpYWxzIFBIUCBjbGFzcyAqLwogZXh0ZXJuIHplbmRfY2xhc3NfZW50cnkgKmdycGNfY2Vfc2VydmVyX2NyZWRlbnRpYWxzOwogCi0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0KIC8qIFdyYXBwZXIgc3RydWN0IGZvciBncnBjX3NlcnZlcl9jcmVkZW50aWFscyB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBQSFAKICAqIG9iamVjdCAqLwotdHlwZWRlZiBzdHJ1Y3Qgd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyB7Ci0gIHplbmRfb2JqZWN0IHN0ZDsKK1BIUF9HUlBDX1dSQVBfT0JKRUNUX1NUQVJUKHdyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMpCiAgIGdycGNfc2VydmVyX2NyZWRlbnRpYWxzICp3cmFwcGVkOwotfSB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzOworUEhQX0dSUENfV1JBUF9PQkpFQ1RfRU5EKHdyYXBwZWRfZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMpCisKKyNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKKworI2RlZmluZSBaX1dSQVBQRURfR1JQQ19TRVJWRVJfQ1JFRFNfUCh6dikgXAorICAod3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoenYgVFNSTUxTX0NDKQogCiAjZWxzZQogCi10eXBlZGVmIHN0cnVjdCB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzIHsKLSAgZ3JwY19zZXJ2ZXJfY3JlZGVudGlhbHMgKndyYXBwZWQ7Ci0gIHplbmRfb2JqZWN0IHN0ZDsKLX0gd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFsczsKLQogc3RhdGljIGlubGluZSB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzCi0qd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkc19mcm9tX29iaih6ZW5kX29iamVjdCAqb2JqKSB7Ci0gIHJldHVybiAod3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyopCi0gICAgKChjaGFyKikob2JqKSAtCi0gICAgIFh0T2Zmc2V0T2Yod3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscywgc3RkKSk7Cisqd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFsc19mcm9tX29iaih6ZW5kX29iamVjdCAqb2JqKSB7CisgIHJldHVybiAod3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkZW50aWFscyopKAorICAgICAgKGNoYXIqKShvYmopIC0gWHRPZmZzZXRPZih3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzLCBzdGQpKTsKIH0KIAotI2RlZmluZSBaX1dSQVBQRURfR1JQQ19TRVJWRVJfQ1JFRFNfUCh6dikgICAgICAgICAgIFwKLSAgd3JhcHBlZF9ncnBjX3NlcnZlcl9jcmVkc19mcm9tX29iaihaX09CSl9QKCh6dikpKQorI2RlZmluZSBaX1dSQVBQRURfR1JQQ19TRVJWRVJfQ1JFRFNfUCh6dikgXAorICB3cmFwcGVkX2dycGNfc2VydmVyX2NyZWRlbnRpYWxzX2Zyb21fb2JqKFpfT0JKX1AoKHp2KSkpCiAKICNlbmRpZiAvKiBQSFBfTUFKT1JfVkVSU0lPTiAqLwogCmRpZmYgLS1naXQgYS9zcmMvcGhwL2V4dC9ncnBjL3RpbWV2YWwuYyBiL3NyYy9waHAvZXh0L2dycGMvdGltZXZhbC5jCmluZGV4IDhkYzk5N2MuLmUxNDVkOTYgMTAwNjQ0Ci0tLSBhL3NyYy9waHAvZXh0L2dycGMvdGltZXZhbC5jCisrKyBiL3NyYy9waHAvZXh0L2dycGMvdGltZXZhbC5jCkBAIC01MSw4NyArNTEsNDAgQEAKICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGltZS5oPgogCiB6ZW5kX2NsYXNzX2VudHJ5ICpncnBjX2NlX3RpbWV2YWw7Ci0KLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKKyNpZiBQSFBfTUFKT1JfVkVSU0lPTiA+PSA3CitzdGF0aWMgemVuZF9vYmplY3RfaGFuZGxlcnMgdGltZXZhbF9jZV9oYW5kbGVyczsKKyNlbmRpZgogCiAvKiBGcmVlcyBhbmQgZGVzdHJveXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NhbGwgKi8KLXZvaWQgZnJlZV93cmFwcGVkX2dycGNfdGltZXZhbCh2b2lkICpvYmplY3QgVFNSTUxTX0RDKSB7Ci0gICAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKnRpbWV2YWwgPSAod3JhcHBlZF9ncnBjX3RpbWV2YWwgKilvYmplY3Q7Ci0gICAgemVuZF9vYmplY3Rfc3RkX2R0b3IoJnRpbWV2YWwtPnN0ZCBUU1JNTFNfQ0MpOwotICAgIGVmcmVlKHRpbWV2YWwpOwotfQorUEhQX0dSUENfRlJFRV9XUkFQUEVEX0ZVTkNfU1RBUlQod3JhcHBlZF9ncnBjX3RpbWV2YWwpCitQSFBfR1JQQ19GUkVFX1dSQVBQRURfRlVOQ19FTkQoKQogCiAvKiBJbml0aWFsaXplcyBhbiBpbnN0YW5jZSBvZiB3cmFwcGVkX2dycGNfdGltZXZhbCB0byBiZSBhc3NvY2lhdGVkIHdpdGggYW4KICAqIG9iamVjdCBvZiBhIGNsYXNzIHNwZWNpZmllZCBieSBjbGFzc190eXBlICovCi16ZW5kX29iamVjdF92YWx1ZSBjcmVhdGVfd3JhcHBlZF9ncnBjX3RpbWV2YWwoemVuZF9jbGFzc19lbnRyeSAqY2xhc3NfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU1JNTFNfREMpIHsKLSAgemVuZF9vYmplY3RfdmFsdWUgcmV0dmFsOwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqaW50ZXJuOwotICBpbnRlcm4gPSAod3JhcHBlZF9ncnBjX3RpbWV2YWwgKillbWFsbG9jKHNpemVvZih3cmFwcGVkX2dycGNfdGltZXZhbCkpOwotICBtZW1zZXQoaW50ZXJuLCAwLCBzaXplb2Yod3JhcHBlZF9ncnBjX3RpbWV2YWwpKTsKK3BocF9ncnBjX3plbmRfb2JqZWN0IGNyZWF0ZV93cmFwcGVkX2dycGNfdGltZXZhbCh6ZW5kX2NsYXNzX2VudHJ5ICpjbGFzc190eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNSTUxTX0RDKSB7CisgIFBIUF9HUlBDX0FMTE9DX0NMQVNTX09CSkVDVCh3cmFwcGVkX2dycGNfdGltZXZhbCk7CiAgIHplbmRfb2JqZWN0X3N0ZF9pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOwogICBvYmplY3RfcHJvcGVydGllc19pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0gIHJldHZhbC5oYW5kbGUgPSB6ZW5kX29iamVjdHNfc3RvcmVfcHV0KAotICAgICAgaW50ZXJuLCAoemVuZF9vYmplY3RzX3N0b3JlX2R0b3JfdCl6ZW5kX29iamVjdHNfZGVzdHJveV9vYmplY3QsCi0gICAgICBmcmVlX3dyYXBwZWRfZ3JwY190aW1ldmFsLCBOVUxMIFRTUk1MU19DQyk7Ci0gIHJldHZhbC5oYW5kbGVycyA9IHplbmRfZ2V0X3N0ZF9vYmplY3RfaGFuZGxlcnMoKTsKLSAgcmV0dXJuIHJldHZhbDsKKyAgUEhQX0dSUENfRlJFRV9DTEFTU19PQkpFQ1Qod3JhcHBlZF9ncnBjX3RpbWV2YWwsIHRpbWV2YWxfY2VfaGFuZGxlcnMpOwogfQogCiB6dmFsICpncnBjX3BocF93cmFwX3RpbWV2YWwoZ3ByX3RpbWVzcGVjIHdyYXBwZWQgVFNSTUxTX0RDKSB7CiAgIHp2YWwgKnRpbWV2YWxfb2JqZWN0OwotICBNQUtFX1NURF9aVkFMKHRpbWV2YWxfb2JqZWN0KTsKLSAgb2JqZWN0X2luaXRfZXgodGltZXZhbF9vYmplY3QsIGdycGNfY2VfdGltZXZhbCk7Ci0gIHdyYXBwZWRfZ3JwY190aW1ldmFsICp0aW1ldmFsID0KLSAgICAgICh3cmFwcGVkX2dycGNfdGltZXZhbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoCi0gICAgICAgICAgdGltZXZhbF9vYmplY3QgVFNSTUxTX0NDKTsKLSAgbWVtY3B5KCZ0aW1ldmFsLT53cmFwcGVkLCAmd3JhcHBlZCwgc2l6ZW9mKGdwcl90aW1lc3BlYykpOwotICByZXR1cm4gdGltZXZhbF9vYmplY3Q7Ci19Ci0KLSNlbHNlCi0KLXN0YXRpYyB6ZW5kX29iamVjdF9oYW5kbGVycyB0aW1ldmFsX2NlX2hhbmRsZXJzOwotCi0vKiBGcmVlcyBhbmQgZGVzdHJveXMgYW4gaW5zdGFuY2Ugb2Ygd3JhcHBlZF9ncnBjX2NhbGwgKi8KLXN0YXRpYyB2b2lkIGZyZWVfd3JhcHBlZF9ncnBjX3RpbWV2YWwoemVuZF9vYmplY3QgKm9iamVjdCkgewotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqdGltZXZhbCA9IHdyYXBwZWRfZ3JwY190aW1ldmFsX2Zyb21fb2JqKG9iamVjdCk7Ci0gIHplbmRfb2JqZWN0X3N0ZF9kdG9yKCZ0aW1ldmFsLT5zdGQpOwotfQotCi0vKiBJbml0aWFsaXplcyBhbiBpbnN0YW5jZSBvZiB3cmFwcGVkX2dycGNfdGltZXZhbCB0byBiZSBhc3NvY2lhdGVkIHdpdGggYW4KLSAqIG9iamVjdCBvZiBhIGNsYXNzIHNwZWNpZmllZCBieSBjbGFzc190eXBlICovCi16ZW5kX29iamVjdCAqY3JlYXRlX3dyYXBwZWRfZ3JwY190aW1ldmFsKHplbmRfY2xhc3NfZW50cnkgKmNsYXNzX3R5cGUpIHsKLSAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKmludGVybjsKLSAgaW50ZXJuID0gZWNhbGxvYygxLCBzaXplb2Yod3JhcHBlZF9ncnBjX3RpbWV2YWwpICsKLSAgICAgICAgICAgICAgICAgICB6ZW5kX29iamVjdF9wcm9wZXJ0aWVzX3NpemUoY2xhc3NfdHlwZSkpOwotICB6ZW5kX29iamVjdF9zdGRfaW5pdCgmaW50ZXJuLT5zdGQsIGNsYXNzX3R5cGUpOwotICBvYmplY3RfcHJvcGVydGllc19pbml0KCZpbnRlcm4tPnN0ZCwgY2xhc3NfdHlwZSk7Ci0gIGludGVybi0+c3RkLmhhbmRsZXJzID0gJnRpbWV2YWxfY2VfaGFuZGxlcnM7Ci0gIHJldHVybiAmaW50ZXJuLT5zdGQ7Ci19Ci0KLXZvaWQgZ3JwY19waHBfd3JhcF90aW1ldmFsKGdwcl90aW1lc3BlYyB3cmFwcGVkLCB6dmFsICp0aW1ldmFsX29iamVjdCkgeworICBQSFBfR1JQQ19NQUtFX1NURF9aVkFMKHRpbWV2YWxfb2JqZWN0KTsKICAgb2JqZWN0X2luaXRfZXgodGltZXZhbF9vYmplY3QsIGdycGNfY2VfdGltZXZhbCk7CiAgIHdyYXBwZWRfZ3JwY190aW1ldmFsICp0aW1ldmFsID0gWl9XUkFQUEVEX0dSUENfVElNRVZBTF9QKHRpbWV2YWxfb2JqZWN0KTsKICAgbWVtY3B5KCZ0aW1ldmFsLT53cmFwcGVkLCAmd3JhcHBlZCwgc2l6ZW9mKGdwcl90aW1lc3BlYykpOworICByZXR1cm4gdGltZXZhbF9vYmplY3Q7CiB9CiAKLSNlbmRpZgotCiAvKioKICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFRpbWV2YWwgY2xhc3MKICAqIEBwYXJhbSBsb25nICR1c2VjIFRoZSBudW1iZXIgb2YgbWljcm9zZWNvbmRzIGluIHRoZSBpbnRlcnZhbAogICovCiBQSFBfTUVUSE9EKFRpbWV2YWwsIF9fY29uc3RydWN0KSB7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIHdyYXBwZWRfZ3JwY190aW1ldmFsICp0aW1ldmFsID0KLSAgICAgICh3cmFwcGVkX2dycGNfdGltZXZhbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoZ2V0VGhpcygpIFRTUk1MU19DQyk7Ci0gIGxvbmcgbWljcm9zZWNvbmRzOwotI2Vsc2UKICAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKnRpbWV2YWwgPSBaX1dSQVBQRURfR1JQQ19USU1FVkFMX1AoZ2V0VGhpcygpKTsKLSAgemVuZF9sb25nIG1pY3Jvc2Vjb25kczsKLSNlbmRpZgorICBwaHBfZ3JwY19sb25nIG1pY3Jvc2Vjb25kczsKIAogICAvKiAibCIgPT0gMSBsb25nICovCiAgIGlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgImwiLCAmbWljcm9zZWNvbmRzKSA9PQpAQCAtMTYwLDIzICsxMTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiYWRkIGV4cGVjdHMgYSBUaW1ldmFsIiwgMSBUU1JNTFNfQ0MpOwogICAgIHJldHVybjsKICAgfQotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqc2VsZiA9Ci0gICAgICAod3JhcHBlZF9ncnBjX3RpbWV2YWwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqb3RoZXIgPQotICAgICAgKHdyYXBwZWRfZ3JwY190aW1ldmFsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdChvdGhlcl9vYmogVFNSTUxTX0NDKTsKLSAgenZhbCAqc3VtID0KKyAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKnNlbGYgPSBaX1dSQVBQRURfR1JQQ19USU1FVkFMX1AoZ2V0VGhpcygpKTsKKyAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKm90aGVyID0gWl9XUkFQUEVEX0dSUENfVElNRVZBTF9QKG90aGVyX29iaik7CisgIHp2YWwgKnN1bTsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChzdW0pOworICBzdW0gPQogICAgICAgZ3JwY19waHBfd3JhcF90aW1ldmFsKGdwcl90aW1lX2FkZChzZWxmLT53cmFwcGVkLCBvdGhlci0+d3JhcHBlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU1JNTFNfQ0MpOwogICBSRVRVUk5fREVTVFJPWV9aVkFMKHN1bSk7Ci0jZWxzZQotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqc2VsZiA9IFpfV1JBUFBFRF9HUlBDX1RJTUVWQUxfUChnZXRUaGlzKCkpOwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqb3RoZXIgPSBaX1dSQVBQRURfR1JQQ19USU1FVkFMX1Aob3RoZXJfb2JqKTsKLQotICBncnBjX3BocF93cmFwX3RpbWV2YWwoZ3ByX3RpbWVfYWRkKHNlbGYtPndyYXBwZWQsIG90aGVyLT53cmFwcGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSk7Ci0gIFJFVFVSTl9ERVNUUk9ZX1pWQUwocmV0dXJuX3ZhbHVlKTsKLSNlbmRpZgogfQogCiAvKioKQEAgLTE5NSwyMiArMTM5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRyYWN0IGV4cGVjdHMgYSBUaW1ldmFsIiwgMSBUU1JNTFNfQ0MpOwogICAgIHJldHVybjsKICAgfQotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqc2VsZiA9Ci0gICAgICAod3JhcHBlZF9ncnBjX3RpbWV2YWwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqb3RoZXIgPQotICAgICAgKHdyYXBwZWRfZ3JwY190aW1ldmFsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdChvdGhlcl9vYmogVFNSTUxTX0NDKTsKLSAgenZhbCAqZGlmZiA9CisgIHdyYXBwZWRfZ3JwY190aW1ldmFsICpzZWxmID0gWl9XUkFQUEVEX0dSUENfVElNRVZBTF9QKGdldFRoaXMoKSk7CisgIHdyYXBwZWRfZ3JwY190aW1ldmFsICpvdGhlciA9IFpfV1JBUFBFRF9HUlBDX1RJTUVWQUxfUChvdGhlcl9vYmopOworICB6dmFsICpkaWZmOworICBQSFBfR1JQQ19NQUtFX1NURF9aVkFMKGRpZmYpOworICBkaWZmID0KICAgICAgIGdycGNfcGhwX3dyYXBfdGltZXZhbChncHJfdGltZV9zdWIoc2VsZi0+d3JhcHBlZCwgb3RoZXItPndyYXBwZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFNSTUxTX0NDKTsKICAgUkVUVVJOX0RFU1RST1lfWlZBTChkaWZmKTsKLSNlbHNlCi0gIHdyYXBwZWRfZ3JwY190aW1ldmFsICpzZWxmID0gWl9XUkFQUEVEX0dSUENfVElNRVZBTF9QKGdldFRoaXMoKSk7Ci0gIHdyYXBwZWRfZ3JwY190aW1ldmFsICpvdGhlciA9IFpfV1JBUFBFRF9HUlBDX1RJTUVWQUxfUChvdGhlcl9vYmopOwotICBncnBjX3BocF93cmFwX3RpbWV2YWwoZ3ByX3RpbWVfc3ViKHNlbGYtPndyYXBwZWQsIG90aGVyLT53cmFwcGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSk7Ci0gIFJFVFVSTl9ERVNUUk9ZX1pWQUwocmV0dXJuX3ZhbHVlKTsKLSNlbmRpZgogfQogCiAvKioKQEAgLTIzMiwxNSArMTY4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGFyZSBleHBlY3RzIHR3byBUaW1ldmFscyIsIDEgVFNSTUxTX0NDKTsKICAgICByZXR1cm47CiAgIH0KLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKmEgPQotICAgICAgKHdyYXBwZWRfZ3JwY190aW1ldmFsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdChhX29iaiBUU1JNTFNfQ0MpOwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqYiA9Ci0gICAgICAod3JhcHBlZF9ncnBjX3RpbWV2YWwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGJfb2JqIFRTUk1MU19DQyk7Ci0jZWxzZQogICB3cmFwcGVkX2dycGNfdGltZXZhbCAqYSA9IFpfV1JBUFBFRF9HUlBDX1RJTUVWQUxfUChhX29iaik7CiAgIHdyYXBwZWRfZ3JwY190aW1ldmFsICpiID0gWl9XUkFQUEVEX0dSUENfVElNRVZBTF9QKGJfb2JqKTsKLSNlbmRpZgogICBsb25nIHJlc3VsdCA9IGdwcl90aW1lX2NtcChhLT53cmFwcGVkLCBiLT53cmFwcGVkKTsKICAgUkVUVVJOX0xPTkcocmVzdWx0KTsKIH0KQEAgLTI2NSwxOSArMTk0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGFyZSBleHBlY3RzIHRocmVlIFRpbWV2YWxzIiwgMSBUU1JNTFNfQ0MpOwogICAgIHJldHVybjsKICAgfQotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB3cmFwcGVkX2dycGNfdGltZXZhbCAqYSA9Ci0gICAgICAod3JhcHBlZF9ncnBjX3RpbWV2YWwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KGFfb2JqIFRTUk1MU19DQyk7Ci0gIHdyYXBwZWRfZ3JwY190aW1ldmFsICpiID0KLSAgICAgICh3cmFwcGVkX2dycGNfdGltZXZhbCAqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoYl9vYmogVFNSTUxTX0NDKTsKLSAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKnRocmVzaCA9Ci0gICAgICAod3JhcHBlZF9ncnBjX3RpbWV2YWwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KAotICAgICAgICAgIHRocmVzaF9vYmogVFNSTUxTX0NDKTsKLSNlbHNlCiAgIHdyYXBwZWRfZ3JwY190aW1ldmFsICphID0gWl9XUkFQUEVEX0dSUENfVElNRVZBTF9QKGFfb2JqKTsKICAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKmIgPSBaX1dSQVBQRURfR1JQQ19USU1FVkFMX1AoYl9vYmopOwogICB3cmFwcGVkX2dycGNfdGltZXZhbCAqdGhyZXNoID0gWl9XUkFQUEVEX0dSUENfVElNRVZBTF9QKHRocmVzaF9vYmopOwotI2VuZGlmCiAgIGludCByZXN1bHQgPSBncHJfdGltZV9zaW1pbGFyKGEtPndyYXBwZWQsIGItPndyYXBwZWQsIHRocmVzaC0+d3JhcHBlZCk7CiAgIFJFVFVSTl9CT09MKHJlc3VsdCk7CiB9CkBAIC0yODcsMTMgKzIwNiwxMCBAQAogICogQHJldHVybiBUaW1ldmFsIFRoZSBjdXJyZW50IHRpbWUKICAqLwogUEhQX01FVEhPRChUaW1ldmFsLCBub3cpIHsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgenZhbCAqbm93ID0gZ3JwY19waHBfd3JhcF90aW1ldmFsKGdwcl9ub3coR1BSX0NMT0NLX1JFQUxUSU1FKSBUU1JNTFNfQ0MpOworICB6dmFsICpub3c7CisgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwobm93KTsKKyAgbm93ID0gZ3JwY19waHBfd3JhcF90aW1ldmFsKGdwcl9ub3coR1BSX0NMT0NLX1JFQUxUSU1FKSBUU1JNTFNfQ0MpOwogICBSRVRVUk5fREVTVFJPWV9aVkFMKG5vdyk7Ci0jZWxzZQotICBncnBjX3BocF93cmFwX3RpbWV2YWwoZ3ByX25vdyhHUFJfQ0xPQ0tfUkVBTFRJTUUpLCByZXR1cm5fdmFsdWUpOwotICBSRVRVUk5fREVTVFJPWV9aVkFMKHJldHVybl92YWx1ZSk7Ci0jZW5kaWYKIH0KIAogLyoqCkBAIC0zMDEsMTggKzIxNywxMyBAQAogICogQHJldHVybiBUaW1ldmFsIFplcm8gbGVuZ3RoIHRpbWUgaW50ZXJ2YWwKICAqLwogUEhQX01FVEhPRChUaW1ldmFsLCB6ZXJvKSB7Ci0jaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3Ci0gIHp2YWwgKmdycGNfcGhwX3RpbWV2YWxfemVybyA9CisgIHp2YWwgKmdycGNfcGhwX3RpbWV2YWxfemVybzsKKyAgUEhQX0dSUENfTUFLRV9TVERfWlZBTChncnBjX3BocF90aW1ldmFsX3plcm8pOworICBncnBjX3BocF90aW1ldmFsX3plcm8gPQogICAgICAgZ3JwY19waHBfd3JhcF90aW1ldmFsKGdwcl90aW1lXzAoR1BSX0NMT0NLX1JFQUxUSU1FKSBUU1JNTFNfQ0MpOwogICBSRVRVUk5fWlZBTChncnBjX3BocF90aW1ldmFsX3plcm8sCiAgICAgICAgICAgICAgIGZhbHNlLCAvKiBDb3B5IG9yaWdpbmFsIGJlZm9yZSByZXR1cm5pbmc/ICovCiAgICAgICAgICAgICAgIHRydWUgLyogRGVzdHJveSBvcmlnaW5hbCBiZWZvcmUgcmV0dXJuaW5nICovKTsKLSNlbHNlCi0gIGdycGNfcGhwX3dyYXBfdGltZXZhbChncHJfdGltZV8wKEdQUl9DTE9DS19SRUFMVElNRSksIHJldHVybl92YWx1ZSk7Ci0gIFJFVFVSTl9aVkFMKHJldHVybl92YWx1ZSwKLSAgICAgICAgICAgICAgZmFsc2UsIC8qIENvcHkgb3JpZ2luYWwgYmVmb3JlIHJldHVybmluZz8gKi8KLSAgICAgICAgICAgICAgdHJ1ZSAvKiBEZXN0cm95IG9yaWdpbmFsIGJlZm9yZSByZXR1cm5pbmcgKi8pOwotI2VuZGlmCiB9CiAKIC8qKgpAQCAtMzIwLDE0ICsyMzEsMTEgQEAKICAqIEByZXR1cm4gVGltZXZhbCBJbmZpbml0ZSBmdXR1cmUgdGltZSB2YWx1ZQogICovCiBQSFBfTUVUSE9EKFRpbWV2YWwsIGluZkZ1dHVyZSkgewotI2lmIFBIUF9NQUpPUl9WRVJTSU9OIDwgNwotICB6dmFsICpncnBjX3BocF90aW1ldmFsX2luZl9mdXR1cmUgPQorICB6dmFsICpncnBjX3BocF90aW1ldmFsX2luZl9mdXR1cmU7CisgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwoZ3JwY19waHBfdGltZXZhbF9pbmZfZnV0dXJlKTsKKyAgZ3JwY19waHBfdGltZXZhbF9pbmZfZnV0dXJlID0KICAgICAgIGdycGNfcGhwX3dyYXBfdGltZXZhbChncHJfaW5mX2Z1dHVyZShHUFJfQ0xPQ0tfUkVBTFRJTUUpIFRTUk1MU19DQyk7CiAgIFJFVFVSTl9ERVNUUk9ZX1pWQUwoZ3JwY19waHBfdGltZXZhbF9pbmZfZnV0dXJlKTsKLSNlbHNlCi0gIGdycGNfcGhwX3dyYXBfdGltZXZhbChncHJfaW5mX2Z1dHVyZShHUFJfQ0xPQ0tfUkVBTFRJTUUpLCByZXR1cm5fdmFsdWUpOwotICBSRVRVUk5fREVTVFJPWV9aVkFMKHJldHVybl92YWx1ZSk7Ci0jZW5kaWYKIH0KIAogLyoqCkBAIC0zMzUsMTQgKzI0MywxMSBAQAogICogQHJldHVybiBUaW1ldmFsIEluZmluaXRlIHBhc3QgdGltZSB2YWx1ZQogICovCiBQSFBfTUVUSE9EKFRpbWV2YWwsIGluZlBhc3QpIHsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgenZhbCAqZ3JwY19waHBfdGltZXZhbF9pbmZfcGFzdCA9CisgIHp2YWwgKmdycGNfcGhwX3RpbWV2YWxfaW5mX3Bhc3Q7CisgIFBIUF9HUlBDX01BS0VfU1REX1pWQUwoZ3JwY19waHBfdGltZXZhbF9pbmZfcGFzdCk7CisgIGdycGNfcGhwX3RpbWV2YWxfaW5mX3Bhc3QgPQogICAgICAgZ3JwY19waHBfd3JhcF90aW1ldmFsKGdwcl9pbmZfcGFzdChHUFJfQ0xPQ0tfUkVBTFRJTUUpIFRTUk1MU19DQyk7CiAgIFJFVFVSTl9ERVNUUk9ZX1pWQUwoZ3JwY19waHBfdGltZXZhbF9pbmZfcGFzdCk7Ci0jZWxzZQotICBncnBjX3BocF93cmFwX3RpbWV2YWwoZ3ByX2luZl9wYXN0KEdQUl9DTE9DS19SRUFMVElNRSksIHJldHVybl92YWx1ZSk7Ci0gIFJFVFVSTl9ERVNUUk9ZX1pWQUwocmV0dXJuX3ZhbHVlKTsKLSNlbmRpZgogfQogCiAvKioKQEAgLTM1MCwxMiArMjU1LDcgQEAKICAqIEByZXR1cm4gdm9pZAogICovCiBQSFBfTUVUSE9EKFRpbWV2YWwsIHNsZWVwVW50aWwpIHsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKLSAgd3JhcHBlZF9ncnBjX3RpbWV2YWwgKnRoaXMgPQotICAgICAgKHdyYXBwZWRfZ3JwY190aW1ldmFsICopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdChnZXRUaGlzKCkgVFNSTUxTX0NDKTsKLSNlbHNlCiAgIHdyYXBwZWRfZ3JwY190aW1ldmFsICp0aGlzID0gWl9XUkFQUEVEX0dSUENfVElNRVZBTF9QKGdldFRoaXMoKSk7Ci0jZW5kaWYKICAgZ3ByX3NsZWVwX3VudGlsKHRoaXMtPndyYXBwZWQpOwogfQogCkBAIC0zNzgsMTMgKzI3OCw3IEBACiAgIElOSVRfQ0xBU1NfRU5UUlkoY2UsICJHcnBjXFxUaW1ldmFsIiwgdGltZXZhbF9tZXRob2RzKTsKICAgY2UuY3JlYXRlX29iamVjdCA9IGNyZWF0ZV93cmFwcGVkX2dycGNfdGltZXZhbDsKICAgZ3JwY19jZV90aW1ldmFsID0gemVuZF9yZWdpc3Rlcl9pbnRlcm5hbF9jbGFzcygmY2UgVFNSTUxTX0NDKTsKLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA+PSA3Ci0gIG1lbWNweSgmdGltZXZhbF9jZV9oYW5kbGVycywgemVuZF9nZXRfc3RkX29iamVjdF9oYW5kbGVycygpLAotICAgICAgICAgc2l6ZW9mKHplbmRfb2JqZWN0X2hhbmRsZXJzKSk7Ci0gIHRpbWV2YWxfY2VfaGFuZGxlcnMub2Zmc2V0ID0KLSAgICBYdE9mZnNldE9mKHdyYXBwZWRfZ3JwY190aW1ldmFsLCBzdGQpOwotICB0aW1ldmFsX2NlX2hhbmRsZXJzLmZyZWVfb2JqID0gZnJlZV93cmFwcGVkX2dycGNfdGltZXZhbDsKLSNlbmRpZgorICBQSFBfR1JQQ19JTklUX0hBTkRMRVIod3JhcHBlZF9ncnBjX3RpbWV2YWwsIHRpbWV2YWxfY2VfaGFuZGxlcnMpOwogfQogCiB2b2lkIGdycGNfc2h1dGRvd25fdGltZXZhbChUU1JNTFNfRCkge30KZGlmZiAtLWdpdCBhL3NyYy9waHAvZXh0L2dycGMvdGltZXZhbC5oIGIvc3JjL3BocC9leHQvZ3JwYy90aW1ldmFsLmgKaW5kZXggZDRlYjJmYS4uNjNhMWQ3MCAxMDA3NTUKLS0tIGEvc3JjL3BocC9leHQvZ3JwYy90aW1ldmFsLmgKKysrIGIvc3JjL3BocC9leHQvZ3JwYy90aW1ldmFsLmgKQEAgLTUwLDI3ICs1MCwyNCBAQAogZXh0ZXJuIHplbmRfY2xhc3NfZW50cnkgKmdycGNfY2VfdGltZXZhbDsKIAogLyogV3JhcHBlciBzdHJ1Y3QgZm9yIHRpbWV2YWwgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgUEhQIG9iamVjdCAqLworUEhQX0dSUENfV1JBUF9PQkpFQ1RfU1RBUlQod3JhcHBlZF9ncnBjX3RpbWV2YWwpCisgIGdwcl90aW1lc3BlYyB3cmFwcGVkOworUEhQX0dSUENfV1JBUF9PQkpFQ1RfRU5EKHdyYXBwZWRfZ3JwY190aW1ldmFsKQorCiAjaWYgUEhQX01BSk9SX1ZFUlNJT04gPCA3CiAKLXR5cGVkZWYgc3RydWN0IHdyYXBwZWRfZ3JwY190aW1ldmFsIHsKLSAgemVuZF9vYmplY3Qgc3RkOwotICBncHJfdGltZXNwZWMgd3JhcHBlZDsKLX0gd3JhcHBlZF9ncnBjX3RpbWV2YWw7CisjZGVmaW5lIFpfV1JBUFBFRF9HUlBDX1RJTUVWQUxfUCh6dikgXAorICAod3JhcHBlZF9ncnBjX3RpbWV2YWwgKil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KHp2IFRTUk1MU19DQykKIAogI2Vsc2UKIAotdHlwZWRlZiBzdHJ1Y3Qgd3JhcHBlZF9ncnBjX3RpbWV2YWwgewotICBncHJfdGltZXNwZWMgd3JhcHBlZDsKLSAgemVuZF9vYmplY3Qgc3RkOwotfSB3cmFwcGVkX2dycGNfdGltZXZhbDsKLQogc3RhdGljIGlubGluZSB3cmFwcGVkX2dycGNfdGltZXZhbAogKndyYXBwZWRfZ3JwY190aW1ldmFsX2Zyb21fb2JqKHplbmRfb2JqZWN0ICpvYmopIHsKICAgcmV0dXJuICh3cmFwcGVkX2dycGNfdGltZXZhbCopKChjaGFyKikob2JqKSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYdE9mZnNldE9mKHdyYXBwZWRfZ3JwY190aW1ldmFsLCBzdGQpKTsKIH0KIAotI2RlZmluZSBaX1dSQVBQRURfR1JQQ19USU1FVkFMX1AoenYpICAgICAgICAgICAgXAorI2RlZmluZSBaX1dSQVBQRURfR1JQQ19USU1FVkFMX1AoenYpIFwKICAgd3JhcHBlZF9ncnBjX3RpbWV2YWxfZnJvbV9vYmooWl9PQkpfUCgoenYpKSkKIAogI2VuZGlmIC8qIFBIUF9NQUpPUl9WRVJTSU9OICovCkBAIC04MiwxMCArNzksNiBAQAogdm9pZCBncnBjX3NodXRkb3duX3RpbWV2YWwoVFNSTUxTX0QpOwogCiAvKiBDcmVhdGVzIGEgVGltZXZhbCBvYmplY3QgdGhhdCB3cmFwcyB0aGUgZ2l2ZW4gdGltZXZhbCBzdHJ1Y3QgKi8KLSNpZiBQSFBfTUFKT1JfVkVSU0lPTiA8IDcKIHp2YWwgKmdycGNfcGhwX3dyYXBfdGltZXZhbChncHJfdGltZXNwZWMgd3JhcHBlZCBUU1JNTFNfREMpOwotI2Vsc2UKLXZvaWQgZ3JwY19waHBfd3JhcF90aW1ldmFsKGdwcl90aW1lc3BlYyB3cmFwcGVkLCB6dmFsICp0aW1ldmFsX29iamVjdCk7Ci0jZW5kaWYgLyogUEhQX01BSk9SX1ZFUlNJT04gKi8KIAogI2VuZGlmIC8qIE5FVF9HUlBDX1BIUF9HUlBDX1RJTUVWQUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9jZW5zdXMvY2Vuc3VzLnByb3RvIGIvc3JjL3Byb3RvL2NlbnN1cy9jZW5zdXMucHJvdG8KaW5kZXggYzg2OWQ4NS4uYzJhNTk0YiAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2NlbnN1cy9jZW5zdXMucHJvdG8KKysrIGIvc3JjL3Byb3RvL2NlbnN1cy9jZW5zdXMucHJvdG8KQEAgLTMzLDEyICszMywxMiBAQAogCiAvLyBBbGwgdGhlIGNlbnN1cyBwcm90b3MuCiAvLwotLy8gTm9tZW5jbGF0dXJlIG5vdGU6IGNhcGl0YWxpemVkIG5hbWVzIGJlbG93IChsaWtlIE1ldHJpYykgYXJlIHByb3Rvcy4KKy8vIE5vbWVuY2xhdHVyZSBub3RlOiBjYXBpdGFsaXplZCBuYW1lcyBiZWxvdyAobGlrZSBSZXNvdXJjZSkgYXJlIHByb3Rvcy4KIC8vCi0vLyBDZW5zdXMgbGV0cyB5b3UgZGVmaW5lIGEgTWV0cmljIC0gc29tZXRoaW5nIHdoaWNoIGNhbiBiZSBtZWFzdXJlZCwgbGlrZSB0aGUKKy8vIENlbnN1cyBsZXRzIHlvdSBkZWZpbmUgYSBSZXNvdXJjZSAtIHNvbWV0aGluZyB3aGljaCBjYW4gYmUgbWVhc3VyZWQsIGxpa2UgdGhlCiAvLyBsYXRlbmN5IG9mIGFuIFJQQywgdGhlIG51bWJlciBvZiBDUFUgY3ljbGVzIHNwZW50IG9uIGFuIG9wZXJhdGlvbiwgb3IKIC8vIGFueXRoaW5nIGVsc2UgeW91IGNhcmUgdG8gbWVhc3VyZS4gWW91IGNhbiByZWNvcmQgaW5kaXZpZHVhbCBpbnN0YW5jZXMgb2YKLS8vIG1lYXN1cmVtZW50cyAoYSBkb3VibGUgdmFsdWUpIGZvciBldmVyeSBtZXRyaWMgb2YgaW50ZXJlc3QuIFRoZXNlCisvLyBtZWFzdXJlbWVudHMgKGEgZG91YmxlIHZhbHVlKSBmb3IgZXZlcnkgUmVzb3VyY2Ugb2YgaW50ZXJlc3QuIFRoZXNlCiAvLyBpbmRpdmlkdWFsIG1lYXN1cmVtZW50cyBhcmUgYWdncmVnYXRlZCB0b2dldGhlciBpbnRvIGFuIEFnZ3JlZ2F0aW9uLiBUaGVyZQogLy8gYXJlIHR3byBBZ2dyZWdhdGlvbiB0eXBlcyBhdmFpbGFibGU6IERpc3RyaWJ1dGlvbiAoZGVzY3JpYmVzIHRoZQogLy8gZGlzdHJpYnV0aW9uIG9mIGFsbCBtZWFzdXJlbWVudHMsIHBvc3NpYmx5IHdpdGggYSBoaXN0b2dyYW0pIGFuZApAQCAtNDcsOCArNDcsOCBAQAogLy8KIC8vIFlvdSBjYW4gZGVmaW5lIGhvdyB5b3VyIHN0YXRzIGFyZSBicm9rZW4gZG93biBieSBUYWcgdmFsdWVzIGFuZCB3aGljaAogLy8gQWdncmVnYXRpb25zIHRvIHVzZSB0aHJvdWdoIGEgVmlldy4gVGhlIGNvcnJlc3BvbmRpbmcgY29tYmluYXRpb24gb2YKLS8vIE1ldHJpYy9WaWV3L0FnZ3JlZ2F0aW9uIHdoaWNoIGlzIGF2YWlsYWJsZSB0byBjZW5zdXMgY2xpZW50cyBpcyBjYWxsZWQgYQotLy8gVmlld0FnZ3JlZ2F0aW9uLgorLy8gUmVzb3VyY2UvVmlldy9BZ2dyZWdhdGlvbiB3aGljaCBpcyBhdmFpbGFibGUgdG8gY2Vuc3VzIGNsaWVudHMgaXMgY2FsbGVkIGEKKy8vIE1ldHJpYy4KIAogCiAvLyBUaGUgZm9sbG93aW5nIHR3byB0eXBlcyBhcmUgY29waWVkIGZyb20KQEAgLTg1LDI2ICs4NSwyMyBAQAogICBpbnQzMiBuYW5vcyA9IDI7CiB9CiAKLS8vIERlc2NyaWJlcyBhIG1ldHJpYwotbWVzc2FnZSBNZXRyaWMgewotICAvLyBuYW1lIG9mIG1ldHJpYywgZS5nLiBycGNfbGF0ZW5jeSwgY3B1LgorLy8gRGVzY3JpYmVzIGEgUmVzb3VyY2UuCittZXNzYWdlIFJlc291cmNlIHsKKyAgLy8gbmFtZSBvZiByZXNvdXJjZSwgZS5nLiBycGNfbGF0ZW5jeSwgY3B1LiBNdXN0IGJlIHVuaXF1ZS4KICAgc3RyaW5nIG5hbWUgPSAxOwogCi0gIC8vIE1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIG1ldHJpYywgdXNlZCBpbiBkb2N1bWVudGF0aW9uLgorICAvLyBNb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSByZXNvdXJjZSwgdXNlZCBpbiBkb2N1bWVudGF0aW9uLgogICBzdHJpbmcgZGVzY3JpcHRpb24gPSAyOwogCiAgIC8vIEZ1bmRhbWVudGFsIHVuaXRzIG9mIG1lYXN1cmVtZW50IHN1cHBvcnRlZCBieSBDZW5zdXMKICAgLy8gVE9ETyhhdmVpdGNoKTogZXhwYW5kIHRoaXMgdG8gaW5jbHVkZSBvdGhlciBTLkkuIHVuaXRzPwotICBtZXNzYWdlIEJhc2ljVW5pdCB7Ci0gICAgZW51bSBNZWFzdXJlIHsKLSAgICAgIFVOS05PV04gPSAwOwotICAgICAgQklUUyA9IDE7Ci0gICAgICBCWVRFUyA9IDI7Ci0gICAgICBTRUNTID0gMzsKLSAgICAgIENPUkVTID0gNDsKLSAgICAgIE1BWF9VTklUUyA9IDU7Ci0gICAgfQotICAgIE1lYXN1cmUgdHlwZSA9IDE7CisgIGVudW0gQmFzaWNVbml0IHsKKyAgICBVTktOT1dOID0gMDsKKyAgICBCSVRTID0gMTsKKyAgICBCWVRFUyA9IDI7CisgICAgU0VDUyA9IDM7CisgICAgQ09SRVMgPSA0OworICAgIE1BWF9VTklUUyA9IDU7CiAgIH0KIAogICAvLyBNZWFzdXJlbWVudFVuaXQgbGV0cyB5b3UgYnVpbGQgY29tcG91bmQgdW5pdHMgb2YgdGhlIGZvcm0KQEAgLTEyNCw3ICsxMjEsNyBAQAogICAvLyAgICAgZGVub21pbmF0b3I6IFNFQ1MKICAgLy8gICAgIGRlbm9taW5hdG9yOiBTRUNTCiAgIC8vCi0gIC8vIFRvIHNwZWNpZnkgbXVsdGlwbGVzIChpbiBwb3dlciBvZiAxMCkgdW5pdHMsIHNwZWNpZnkgYSBub24temVybyBwcmVmaXgKKyAgLy8gVG8gc3BlY2lmeSBtdWx0aXBsZXMgKGluIHBvd2VyIG9mIDEwKSBvZiB1bml0cywgc3BlY2lmeSBhIG5vbi16ZXJvIHByZWZpeAogICAvLyB2YWx1ZSwgZm9yIGV4YW1wbGU6CiAgIC8vCiAgIC8vIC0gTUIvcyAoaS5lLiBtZWdhYnl0ZXMgLyBzKToKQEAgLTE0MSwzMiArMTM4LDQwIEBACiAgICAgcmVwZWF0ZWQgQmFzaWNVbml0IGRlbm9taW5hdG9yID0gMzsKICAgfQogCi0gIC8vIFRoZSB1bml0cyBpbiB3aGljaCB0aGUgTWV0cmljIHZhbHVlIGlzIHJlcG9ydGVkLgorICAvLyBUaGUgdW5pdHMgaW4gd2hpY2ggUmVzb3VyY2UgdmFsdWVzIGFyZSBtZWFzdXJlZC4KICAgTWVhc3VyZW1lbnRVbml0IHVuaXQgPSAzOwotCi0gIC8vIE1ldHJpY3Mgd2lsbCBiZSBhc3NpZ25lZCBhbiBJRCB3aGVuIHJlZ2lzdGVyZWQuIEludmFsaWQgaWYgPD0gMC4KLSAgaW50MzIgaWQgPSA0OwogfQogCi0vLyBBbiBBZ2dyZWdhdGlvbiBzdW1tYXJpemVzIGEgc2VyaWVzIG9mIGluZGl2aWR1YWwgTWV0cmljIG1lYXN1cmVtZW50cywgYW4KKy8vIEFuIEFnZ3JlZ2F0aW9uIHN1bW1hcml6ZXMgYSBzZXJpZXMgb2YgaW5kaXZpZHVhbCBSZXNvdXJjZSBtZWFzdXJlbWVudHMsIGFuCiAvLyBBZ2dyZWdhdGlvbkRlc2NyaXB0b3IgZGVzY3JpYmVzIGFuIEFnZ3JlZ2F0aW9uLgogbWVzc2FnZSBBZ2dyZWdhdGlvbkRlc2NyaXB0b3IgewotICAvLyBBdCBtb3N0IG9uZSBzZXQgb2Ygb3B0aW9ucy4gSWYgbmVpdGhlciBvcHRpb24gaXMgc2V0LCBhIGRlZmF1bHQgdHlwZQotICAvLyBvZiBEaXN0cmlidXRpb24gKHdpdGhvdXQgYSBoaXN0b2dyYW0gY29tcG9uZW50KSB3aWxsIGJlIHVzZWQuCisgIGVudW0gQWdncmVnYXRpb25UeXBlIHsKKyAgICAvLyBVbnNwZWNpZmllZC4gU2hvdWxkIG5vdCBiZSB1c2VkLgorICAgIFVOS05PV04gPSAwOworICAgIC8vIEEgY291bnQgb2YgbWVhc3VyZW1lbnRzIG1hZGUuCisgICAgQ09VTlQgPSAxOworICAgIC8vIEEgRGlzdHJpYnV0aW9uLgorICAgIERJU1RSSUJVVElPTiA9IDI7CisgICAgLy8gQ291bnRzIG92ZXIgZml4ZWQgdGltZSBpbnRlcnZhbHMuCisgICAgSU5URVJWQUwgPSAzOworICB9CisgIC8vIFRoZSB0eXBlIG9mIEFnZ3JlZ2F0aW9uLgorICBBZ2dyZWdhdGlvblR5cGUgdHlwZSA9IDE7CisKKyAgLy8gQXQgbW9zdCBvbmUgc2V0IG9mIG9wdGlvbnMuIEl0IGlzIGlsbGVnYWwgdG8gc3BlY2lmaXkgYW4gb3B0aW9uIGZvcgorICAvLyBDT1VOVCBBZ2dyZWdhdGlvbnMuIGludGVydmFsX2JvdW5kYXJpZXMgbXVzdCBiZSBzZXQgZm9yIElOVEVSVkFMIHR5cGVzLgorICAvLyBidWNrZXRfYm91bmRhcmllcyBhcmUgb3B0aW9uYWwgZm9yIERJU1RSSUJVVElPTiB0eXBlcy4KICAgb25lb2Ygb3B0aW9ucyB7Ci0gICAgLy8gRGVmaW5lcyB0aGUgaGlzdG9ncmFtIGJ1Y2tldCBib3VuZGFyaWVzIGZvciBEaXN0cmlidXRpb25zLgotICAgIEJ1Y2tldEJvdW5kYXJpZXMgYnVja2V0X2JvdW5kYXJpZXMgPSAxOworICAgIC8vIERlZmluZXMgaGlzdG9ncmFtIGJ1Y2tldCBib3VuZGFyaWVzIGZvciBEaXN0cmlidXRpb25zLgorICAgIEJ1Y2tldEJvdW5kYXJpZXMgYnVja2V0X2JvdW5kYXJpZXMgPSAyOwogICAgIC8vIERlZmluZXMgdGhlIHRpbWUgd2luZG93cyB0byByZWNvcmQgZm9yIEludGVydmFsU3RhdHMuCi0gICAgSW50ZXJ2YWxCb3VuZGFyaWVzIGludGVydmFsX2JvdW5kYXJpZXMgPSAyOworICAgIEludGVydmFsQm91bmRhcmllcyBpbnRlcnZhbF9ib3VuZGFyaWVzID0gMzsKICAgfQogCiAgIC8vIEEgRGlzdHJpYnV0aW9uIG1heSBvcHRpb25hbGx5IGNvbnRhaW4gYSBoaXN0b2dyYW0gb2YgdGhlIHZhbHVlcyBpbiB0aGUKLSAgLy8gcG9wdWxhdGlvbi4gVGhlIGJ1Y2tldCBib3VuZGFyaWVzIGZvciB0aGF0IGhpc3RvZ3JhbSBpcyBkZXNjcmliZWQgYnkKLSAgLy8gYGJ1Y2tldF9ib3VuZGFyaWVzYC4KLSAgLy8KLSAgLy8gRGVzY3JpYmVzIGhpc3RvZ3JhbSBidWNrZXQgYm91bmRhcmllcy4gRGVmaW5lcyBgc2l6ZShib3VuZHMpICsgMWAgKD0gTikKLSAgLy8gYnVja2V0cyAoZm9yIHNpemUoYm91bmRzKSA+PSAxOyBpZiBzaXplKGJvdW5kcykgPT0gMCwgdGhlbiBubyBoaXN0b2dyYW0KLSAgLy8gd2lsbCBiZSBkZWZpbmVkLiBUaGUgYm91bmRhcmllcyBmb3IgYnVja2V0IGluZGV4IGkgYXJlOgorICAvLyBwb3B1bGF0aW9uLiBUaGUgYnVja2V0IGJvdW5kYXJpZXMgZm9yIHRoYXQgaGlzdG9ncmFtIGFyZSBkZXNjcmliZWQgYnkKKyAgLy8gYGJ1Y2tldF9ib3VuZGFyaWVzYC4gVGhpcyBkZWZpbmVzIGBzaXplKGJvdW5kcykgKyAxYCAoPSBOKSBidWNrZXRzLiBUaGUKKyAgLy8gYm91bmRhcmllcyBmb3IgYnVja2V0IGluZGV4IGkgYXJlOgogICAvLwogICAvLyBbLWluZmluaXR5LCBib3VuZHNbaV0pIGZvciBpID09IDAKICAgLy8gW2JvdW5kc1tpLTFdLCBib3VuZHNbaV0pIGZvciAwIDwgaSA8IE4tMgpAQCAtMTk2LDggKzIwMSw4IEBACiAvLyBhIHNwZWNpZmllZCBzZXQgb2YgaGlzdG9ncmFtIGJ1Y2tldHMsIGFzIGRlZmluZWQgaW4KIC8vIEFnZ3JlZ2F0aW9uLmJ1Y2tldF9vcHRpb25zLgogLy8KLS8vIFRoZSBzdW1tYXJ5IHN0YXRpc3RpY3MgYXJlIHRoZSBjb3VudCwgbWVhbiwgc3VtIG9mIHRoZSBzcXVhcmVkIGRldmlhdGlvbiBmcm9tCi0vLyB0aGUgbWVhbiwgdGhlIG1pbmltdW0sIGFuZCB0aGUgbWF4aW11bSBvZiB0aGUgc2V0IG9mIHBvcHVsYXRpb24gb2YgdmFsdWVzLgorLy8gVGhlIHN1bW1hcnkgc3RhdGlzdGljcyBhcmUgdGhlIGNvdW50LCBtZWFuLCBtaW5pbXVtLCBhbmQgdGhlIG1heGltdW0gb2YgdGhlCisvLyBzZXQgb2YgcG9wdWxhdGlvbiBvZiB2YWx1ZXMuCiAvLwogLy8gQWx0aG91Z2ggaXQgaXMgbm90IGZvcmJpZGRlbiwgaXQgaXMgZ2VuZXJhbGx5IGEgYmFkIGlkZWEgdG8gaW5jbHVkZQogLy8gbm9uLWZpbml0ZSB2YWx1ZXMgKGluZmluaXRpZXMgb3IgTmFOcykgaW4gdGhlIHBvcHVsYXRpb24gb2YgdmFsdWVzLCBhcyB0aGlzCkBAIC0yNDMsNyArMjQ4LDcgQEAKIG1lc3NhZ2UgSW50ZXJ2YWxTdGF0cyB7CiAgIC8vIFN1bW1hcnkgc3RhdGlzdGljIG92ZXIgYSBzaW5nbGUgdGltZSB3aW5kb3cuCiAgIG1lc3NhZ2UgV2luZG93IHsKLSAgICAvLyBUaGUgd2luZG93IGR1cmF0aW9uLgorICAgIC8vIFRoZSB3aW5kb3cgZHVyYXRpb24uIE11c3QgYmUgcG9zaXRpdmUuCiAgICAgRHVyYXRpb24gd2luZG93X3NpemUgPSAxOwogICAgIC8vIFRoZSBudW1iZXIgb2YgbWVhc3VyZW1lbnRzIGluIHRoaXMgd2luZG93LgogICAgIGludDY0IGNvdW50ID0gMjsKQEAgLTI1MSw3ICsyNTYsNyBAQAogICAgIGRvdWJsZSBtZWFuID0gMzsKICAgfQogCi0gIC8vIEZ1bGwgc2V0IG9mIHdpbmRvd3MgZm9yIHRoaXMgbWV0cmljLgorICAvLyBGdWxsIHNldCBvZiB3aW5kb3dzIGZvciB0aGlzIGFnZ3JlZ2F0aW9uLgogICByZXBlYXRlZCBXaW5kb3cgd2luZG93ID0gMTsKIH0KIApAQCAtMjY0LDI0ICsyNjksMjQgQEAKIC8vIEEgVmlldyBzcGVjaWZpZXMgYW4gQWdncmVnYXRpb24gYW5kIGEgc2V0IG9mIHRhZyBrZXlzLiBUaGUgQWdncmVnYXRpb24gd2lsbAogLy8gYmUgYnJva2VuIGRvd24gYnkgdGhlIHVuaXF1ZSBzZXQgb2YgbWF0Y2hpbmcgdGFnIHZhbHVlcyBmb3IgZWFjaCBtZWFzdXJlbWVudC4KIG1lc3NhZ2UgVmlldyB7Ci0gIC8vIE5hbWUgb2Ygdmlldy4KKyAgLy8gTmFtZSBvZiB2aWV3LiBNdXN0IGJlIHVuaXF1ZS4KICAgc3RyaW5nIG5hbWUgPSAxOwogCiAgIC8vIE1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24sIGZvciBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLgogICBzdHJpbmcgZGVzY3JpcHRpb24gPSAyOwogCi0gIC8vIElEIG9mIE1ldHJpYyB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIFZpZXcuCi0gIGludDMyIG1ldHJpY19pZCA9IDM7CisgIC8vIE5hbWUgb2YgUmVzb3VyY2UgdG8gYmUgYnJva2VuIGRvd24gZm9yIHRoaXMgdmlldy4KKyAgc3RyaW5nIHJlc291cmNlX25hbWUgPSAzOwogCiAgIC8vIEFnZ3JlZ2F0aW9uIHR5cGUgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBWaWV3LgogICBBZ2dyZWdhdGlvbkRlc2NyaXB0b3IgYWdncmVnYXRpb24gPSA0OwogCi0gIC8vIFRhZyBrZXlzIHRvIG1hdGNoIHdpdGggYSBnaXZlbiBNZXRyaWMuIElmIG5vIGtleXMgYXJlIHNwZWNpZmllZCwgdGhlbiBhbGwKLSAgLy8gc3RhdHMgZm9yIHRoZSBNZXRyaWMgYXJlIHJlY29yZGVkLiBLZXlzIG11c3QgYmUgdW5pcXVlLgorICAvLyBUYWcga2V5cyB0byBtYXRjaCB3aXRoIGEgZ2l2ZW4gUmVzb3VyY2UgbWVhc3VyZW1lbnQuIElmIG5vIGtleXMgYXJlCisgIC8vIHNwZWNpZmllZCwgdGhlbiBhbGwgc3RhdHMgYXJlIHJlY29yZGVkLiBLZXlzIG11c3QgYmUgdW5pcXVlLgogICByZXBlYXRlZCBzdHJpbmcgdGFnX2tleSA9IDU7CiB9CiAKLS8vIEFuIEFnZ3JlZ2F0aW9uIHN1bW1hcml6ZXMgYSBzZXJpZXMgb2YgaW5kaXZpZHVhbCBNZXRyaWMgbWVhc3VyZXMuCisvLyBBbiBBZ2dyZWdhdGlvbiBzdW1tYXJpemVzIGEgc2VyaWVzIG9mIGluZGl2aWR1YWwgUmVzb3VyY2UgbWVhc3VyZW1lbnRzLgogbWVzc2FnZSBBZ2dyZWdhdGlvbiB7CiAgIC8vIE5hbWUgb2YgdGhpcyBhZ2dyZWdhdGlvbi4KICAgc3RyaW5nIG5hbWUgPSAxOwpAQCAtMjkxLDIzICsyOTYsMjcgQEAKIAogICAvLyBUaGUgZGF0YSBmb3IgdGhpcyBBZ2dyZWdhdGlvbi4KICAgb25lb2YgZGF0YSB7Ci0gICAgRGlzdHJpYnV0aW9uIGRpc3RyaWJ1dGlvbiA9IDM7Ci0gICAgSW50ZXJ2YWxTdGF0cyBpbnRlcnZhbF9zdGF0cyA9IDQ7CisgICAgdWludDY0IGNvdW50ID0gMzsKKyAgICBEaXN0cmlidXRpb24gZGlzdHJpYnV0aW9uID0gNDsKKyAgICBJbnRlcnZhbFN0YXRzIGludGVydmFsX3N0YXRzID0gNTsKICAgfQogCiAgIC8vIFRhZ3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQWdncmVnYXRpb24uCi0gIHJlcGVhdGVkIFRhZyB0YWcgPSA1OworICByZXBlYXRlZCBUYWcgdGFnID0gNjsKIH0KIAotLy8gQSBWaWV3QWdncmVnYXRpb25zIHJlcHJlc2VudHMgYWxsIHRoZSBBZ2dyZWdhdGlvbnMgZm9yIGEgcGFydGljdWxhciB2aWV3LgotbWVzc2FnZSBWaWV3QWdncmVnYXRpb25zIHsKKy8vIEEgTWV0cmljIHJlcHJlc2VudHMgYWxsIHRoZSBBZ2dyZWdhdGlvbnMgZm9yIGEgcGFydGljdWxhciB2aWV3LgorbWVzc2FnZSBNZXRyaWMgeworICAvLyBWaWV3IGFzc29jaWF0ZWQgd2l0aCB0aGlzIE1ldHJpYy4KKyAgc3RyaW5nIHZpZXdfbmFtZSA9IDE7CisKICAgLy8gQWdncmVnYXRpb25zIC0gZWFjaCB3aWxsIGhhdmUgYSB1bmlxdWUgc2V0IG9mIHRhZyB2YWx1ZXMgZm9yIHRoZSB0YWdfa2V5cwogICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgVmlldy4KLSAgcmVwZWF0ZWQgQWdncmVnYXRpb24gYWdncmVnYXRpb24gPSAxOworICByZXBlYXRlZCBBZ2dyZWdhdGlvbiBhZ2dyZWdhdGlvbiA9IDI7CiAKLSAgLy8gU3RhcnQgYW5kIGVuZCB0aW1lc3RhbXBzIG92ZXIgd2hpY2ggdGhlIHZhbHVlIHdhcyBhY2N1bXVsYXRlZC4gVGhlc2UKKyAgLy8gU3RhcnQgYW5kIGVuZCB0aW1lc3RhbXBzIG92ZXIgd2hpY2ggdGhlIG1ldHJpYyB3YXMgYWNjdW11bGF0ZWQuIFRoZXNlCiAgIC8vIHZhbHVlcyBhcmUgbm90IHJlbGV2YW50L2RlZmluZWQgZm9yIEludGVydmFsU3RhdHMgYWdncmVnYXRpb25zLCB3aGljaCBhcmUKICAgLy8gYWx3YXlzIGFjY3VtdWxhdGVkIG92ZXIgYSBmaXhlZCB0aW1lIHBlcmlvZC4KLSAgVGltZXN0YW1wIHN0YXJ0ID0gMjsKLSAgVGltZXN0YW1wIGVuZCA9IDM7CisgIFRpbWVzdGFtcCBzdGFydCA9IDM7CisgIFRpbWVzdGFtcCBlbmQgPSA0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9ncnBjaW8vLmdpdGlnbm9yZSBiL3NyYy9weXRob24vZ3JwY2lvLy5naXRpZ25vcmUKaW5kZXggN2NkOGZhYi4uMzMwOTc5NSAxMDA2NDQKLS0tIGEvc3JjL3B5dGhvbi9ncnBjaW8vLmdpdGlnbm9yZQorKysgYi9zcmMvcHl0aG9uL2dycGNpby8uZ2l0aWdub3JlCkBAIC0xNCwzICsxNCw0IEBACiBfZ3JwY2lvX21ldGFkYXRhLnB5CiBodG1sY292LwogZ3JwYy9fY3l0aG9uL19jcmVkZW50aWFscworcG9pc29uLmMKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvL191bml4Y2NvbXBpbGVyX3BhdGNoLnB5IGIvc3JjL3B5dGhvbi9ncnBjaW8vX3VuaXhjY29tcGlsZXJfcGF0Y2gucHkKaW5kZXggMGNlNWQ2My4uODk0YzNlZiAxMDA2NDQKLS0tIGEvc3JjL3B5dGhvbi9ncnBjaW8vX3VuaXhjY29tcGlsZXJfcGF0Y2gucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW8vX3VuaXhjY29tcGlsZXJfcGF0Y2gucHkKQEAgLTM0LDYgKzM0LDcgQEAKIGZyb20gZGlzdHV0aWxzIGltcG9ydCB1bml4Y2NvbXBpbGVyCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2hsZXgKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQpAQCAtNDcsNiArNDgsOSBAQAogICBTb21lIGNvbW1hbmRzIGxpa2UgYGdjY2AgKGFuZCBmcmllbmRzIGxpa2UgYGNsYW5nYCkgc3VwcG9ydCBjb21tYW5kIGZpbGVzIHRvCiAgIHdvcmsgYXJvdW5kIHNoZWxsIGNvbW1hbmQgbGVuZ3RoIGxpbWl0cy4KICAgIiIiCisgICMgU29tZXRpbWVzIGRpc3R1dGlscyBlbWJlZHMgdGhlIGV4ZWN1dGFibGVzIGFzIGZ1bGwgc3RyaW5ncyBpbmNsdWRpbmcgc29tZQorICAjIGhhcmQtY29kZWQgZmxhZ3MgcmF0aGVyIHRoYW4gYXMgbGlzdHMuCisgIGNvbW1hbmQgPSBsaXN0KHNobGV4LnNwbGl0KGNvbW1hbmRbMF0pKSArIGxpc3QoY29tbWFuZFsxOl0pCiAgIGNvbW1hbmRfYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoY29tbWFuZFswXS5zdHJpcCgpKQogICBpZiBjb21tYW5kX2Jhc2UgPT0gJ2NjYWNoZSc6CiAgICAgY29tbWFuZF9iYXNlID0gY29tbWFuZFs6Ml0KZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvL2NvbW1hbmRzLnB5IGIvc3JjL3B5dGhvbi9ncnBjaW8vY29tbWFuZHMucHkKaW5kZXggODZhNzNmYS4uZDM2YWMyMyAxMDA2NDQKLS0tIGEvc3JjL3B5dGhvbi9ncnBjaW8vY29tbWFuZHMucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW8vY29tbWFuZHMucHkKQEAgLTE4NCw2ICsxODQsNzEgQEAKICAgICBidWlsZF9weS5idWlsZF9weS5ydW4oc2VsZikKIAogCitkZWYgX3BvaXNvbl9leHRlbnNpb25zKGV4dGVuc2lvbnMsIG1lc3NhZ2UpOgorICAiIiJJbmNsdWRlcyBhIGZpbGUgdGhhdCB3aWxsIGFsd2F5cyBmYWlsIHRvIGNvbXBpbGUgaW4gYWxsIGV4dGVuc2lvbnMuIiIiCisgIHBvaXNvbl9maWxlbmFtZSA9IG9zLnBhdGguam9pbihQWVRIT05fU1RFTSwgJ3BvaXNvbi5jJykKKyAgd2l0aCBvcGVuKHBvaXNvbl9maWxlbmFtZSwgJ3cnKSBhcyBwb2lzb246CisgICAgcG9pc29uLndyaXRlKCcjZXJyb3Ige30nLmZvcm1hdChtZXNzYWdlKSkKKyAgZm9yIGV4dGVuc2lvbiBpbiBleHRlbnNpb25zOgorICAgIGV4dGVuc2lvbi5zb3VyY2VzID0gW3BvaXNvbl9maWxlbmFtZV0KKworZGVmIGNoZWNrX2FuZF91cGRhdGVfY3l0aG9uaXphdGlvbihleHRlbnNpb25zKToKKyAgIiIiUmVwbGFjZSAucHl4IGZpbGVzIHdpdGggdGhlaXIgZ2VuZXJhdGVkIGNvdW50ZXJwYXJ0cyBhbmQgcmV0dXJuIHdoZXRoZXIgb3IKKyAgICAgbm90IGN5dGhvbml6YXRpb24gc3RpbGwgbmVlZHMgdG8gb2NjdXIuIiIiCisgIGZvciBleHRlbnNpb24gaW4gZXh0ZW5zaW9uczoKKyAgICBnZW5lcmF0ZWRfcHl4X3NvdXJjZXMgPSBbXQorICAgIG90aGVyX3NvdXJjZXMgPSBbXQorICAgIGZvciBzb3VyY2UgaW4gZXh0ZW5zaW9uLnNvdXJjZXM6CisgICAgICBiYXNlLCBmaWxlX2V4dCA9IG9zLnBhdGguc3BsaXRleHQoc291cmNlKQorICAgICAgaWYgZmlsZV9leHQgPT0gJy5weXgnOgorICAgICAgICBnZW5lcmF0ZWRfcHl4X3NvdXJjZSA9IG5leHQoCisgICAgICAgICAgICAoYmFzZSArIGdlbl9leHQgZm9yIGdlbl9leHQgaW4gKCcuYycsICcuY3BwJywpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoYmFzZSArIGdlbl9leHQpKSwgTm9uZSkKKyAgICAgICAgaWYgZ2VuZXJhdGVkX3B5eF9zb3VyY2U6CisgICAgICAgICAgZ2VuZXJhdGVkX3B5eF9zb3VyY2VzLmFwcGVuZChnZW5lcmF0ZWRfcHl4X3NvdXJjZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdDeXRob24tZ2VuZXJhdGVkIGZpbGVzIGFyZSBtaXNzaW5nLi4uXG4nKQorICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgZWxzZToKKyAgICAgICAgb3RoZXJfc291cmNlcy5hcHBlbmQoc291cmNlKQorICAgIGV4dGVuc2lvbi5zb3VyY2VzID0gZ2VuZXJhdGVkX3B5eF9zb3VyY2VzICsgb3RoZXJfc291cmNlcworICBzeXMuc3RkZXJyLndyaXRlKCdGb3VuZCBjeXRob24tZ2VuZXJhdGVkIGZpbGVzLi4uXG4nKQorICByZXR1cm4gVHJ1ZQorCitkZWYgdHJ5X2N5dGhvbml6ZShleHRlbnNpb25zLCBsaW5ldHJhY2luZz1GYWxzZSwgbWFuZGF0b3J5PVRydWUpOgorICAiIiJBdHRlbXB0IHRvIGN5dGhvbml6ZSB0aGUgZXh0ZW5zaW9ucy4KKworICBBcmdzOgorICAgIGV4dGVuc2lvbnM6IEEgbGlzdCBvZiBgZGlzdHV0aWxzLmV4dGVuc2lvbi5FeHRlbnNpb25gLgorICAgIGxpbmV0cmFjaW5nOiBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byBlbmFibGUgbGluZXRyYWNpbmcuCisgICAgbWFuZGF0b3J5OiBXaGV0aGVyIG9yIG5vdCBoYXZpbmcgQ3l0aG9uLWdlbmVyYXRlZCBmaWxlcyBpcyBtYW5kYXRvcnkuIElmIGl0CisgICAgICBpcywgZXh0ZW5zaW9ucyB3aWxsIGJlIHBvaXNvbmVkIHdoZW4gdGhleSBjYW4ndCBiZSBmdWxseSBnZW5lcmF0ZWQuCisgICIiIgorICB0cnk6CisgICAgIyBCcmVhayBpbXBvcnQgc3R5bGUgdG8gZW5zdXJlIHdlIGhhdmUgYWNjZXNzIHRvIEN5dGhvbiBwb3N0LXNldHVwX3JlcXVpcmVzCisgICAgaW1wb3J0IEN5dGhvbi5CdWlsZAorICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaWYgbWFuZGF0b3J5OgorICAgICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAiVGhpcyBwYWNrYWdlIG5lZWRzIHRvIGdlbmVyYXRlIEMgZmlsZXMgd2l0aCBDeXRob24gYnV0IGl0IGNhbm5vdC4gIgorICAgICAgICAgICJQb2lzb25pbmcgZXh0ZW5zaW9uIHNvdXJjZXMgdG8gZGlzYWxsb3cgZXh0ZW5zaW9uIGNvbW1hbmRzLi4uIikKKyAgICAgIF9wb2lzb25fZXh0ZW5zaW9ucygKKyAgICAgICAgICBleHRlbnNpb25zLAorICAgICAgICAgICJFeHRlbnNpb25zIGhhdmUgYmVlbiBwb2lzb25lZCBkdWUgdG8gbWlzc2luZyBDeXRob24tZ2VuZXJhdGVkIGNvZGUuIikKKyAgICByZXR1cm4gZXh0ZW5zaW9ucworICBjeXRob25fY29tcGlsZXJfZGlyZWN0aXZlcyA9IHt9CisgIGlmIGxpbmV0cmFjaW5nOgorICAgIGFkZGl0aW9uYWxfZGVmaW5lX21hY3JvcyA9IFsoJ0NZVEhPTl9UUkFDRV9OT0dJTCcsICcxJyldCisgICAgY3l0aG9uX2NvbXBpbGVyX2RpcmVjdGl2ZXNbJ2xpbmV0cmFjZSddID0gVHJ1ZQorICByZXR1cm4gQ3l0aG9uLkJ1aWxkLmN5dGhvbml6ZSgKKyAgICBleHRlbnNpb25zLAorICAgIGluY2x1ZGVfcGF0aD1bCisgICAgICBpbmNsdWRlX2RpciBmb3IgZXh0ZW5zaW9uIGluIGV4dGVuc2lvbnMgZm9yIGluY2x1ZGVfZGlyIGluIGV4dGVuc2lvbi5pbmNsdWRlX2RpcnMKKyAgICBdLAorICAgIGNvbXBpbGVyX2RpcmVjdGl2ZXM9Y3l0aG9uX2NvbXBpbGVyX2RpcmVjdGl2ZXMKKyAgKQorCisKIGNsYXNzIEJ1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF9leHQpOgogICAiIiJDdXN0b20gYnVpbGRfZXh0IGNvbW1hbmQgdG8gZW5hYmxlIGNvbXBpbGVyLXNwZWNpZmljIGZsYWdzLiIiIgogCkBAIC0yMDEsNiArMjY2LDggQEAKICAgICBpZiBjb21waWxlciBpbiBCdWlsZEV4dC5MSU5LX09QVElPTlM6CiAgICAgICBmb3IgZXh0ZW5zaW9uIGluIHNlbGYuZXh0ZW5zaW9uczoKICAgICAgICAgZXh0ZW5zaW9uLmV4dHJhX2xpbmtfYXJncyArPSBsaXN0KEJ1aWxkRXh0LkxJTktfT1BUSU9OU1tjb21waWxlcl0pCisgICAgaWYgbm90IGNoZWNrX2FuZF91cGRhdGVfY3l0aG9uaXphdGlvbihzZWxmLmV4dGVuc2lvbnMpOgorICAgICAgc2VsZi5leHRlbnNpb25zID0gdHJ5X2N5dGhvbml6ZShzZWxmLmV4dGVuc2lvbnMpCiAgICAgdHJ5OgogICAgICAgYnVpbGRfZXh0LmJ1aWxkX2V4dC5idWlsZF9leHRlbnNpb25zKHNlbGYpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJvcjoKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX19pbml0X18ucHkgYi9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19faW5pdF9fLnB5CmluZGV4IGZkMDE1MTIuLjUxMzgzOWQgMTAwNjQ0Ci0tLSBhL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX19pbml0X18ucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fX2luaXRfXy5weQpAQCAtMzQ1LDcgKzM0NSw3IEBACiAgICAgVGhpcyBtZXRob2QgYmxvY2tzIHVudGlsIHRoZSB2YWx1ZSBpcyBhdmFpbGFibGUuCiAKICAgICBSZXR1cm5zOgotICAgICAgVGhlIGJ5dGVzIG9mIHRoZSBkZXRhaWxzIG9mIHRoZSBSUEMuCisgICAgICBUaGUgZGV0YWlscyBzdHJpbmcgb2YgdGhlIFJQQy4KICAgICAiIiIKICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIApAQCAtNzY0LDcgKzc2NCw3IEBACiAgICAgZGV0YWlscyB0byB0cmFuc21pdC4KIAogICAgIEFyZ3M6Ci0gICAgICBkZXRhaWxzOiBUaGUgZGV0YWlscyBieXRlcyBvZiB0aGUgUlBDIHRvIGJlIHRyYW5zbWl0dGVkIHRvCisgICAgICBkZXRhaWxzOiBUaGUgZGV0YWlscyBzdHJpbmcgb2YgdGhlIFJQQyB0byBiZSB0cmFuc21pdHRlZCB0bwogICAgICAgICB0aGUgaW52b2NhdGlvbiBzaWRlIG9mIHRoZSBSUEMuCiAgICAgIiIiCiAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCmRpZmYgLS1naXQgYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19jaGFubmVsLnB5IGIvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY2hhbm5lbC5weQppbmRleCAyOWRiYzNhLi4zMTE3ZGQxIDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19jaGFubmVsLnB5CisrKyBiL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2NoYW5uZWwucHkKQEAgLTM1MywxMiArMzUzLDEyIEBACiAgICAgZWxzZToKICAgICAgIHJldHVybiBtYXgoc2VsZi5fZGVhZGxpbmUgLSB0aW1lLnRpbWUoKSwgMCkKIAotICBkZWYgYWRkX2NhbmNlbGxhdGlvbl9jYWxsYmFjayhzZWxmLCBjYWxsYmFjayk6CisgIGRlZiBhZGRfY2FsbGJhY2soc2VsZiwgY2FsbGJhY2spOgogICAgIHdpdGggc2VsZi5fc3RhdGUuY29uZGl0aW9uOgogICAgICAgaWYgc2VsZi5fc3RhdGUuY2FsbGJhY2tzIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgZWxzZToKLSAgICAgICAgc2VsZi5fc3RhdGUuY2FsbGJhY2tzLmFwcGVuZChsYW1iZGEgdW51c2VkX2Z1dHVyZTogY2FsbGJhY2soKSkKKyAgICAgICAgc2VsZi5fc3RhdGUuY2FsbGJhY2tzLmFwcGVuZChsYW1iZGE6IGNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgZGVmIGluaXRpYWxfbWV0YWRhdGEoc2VsZik6CmRpZmYgLS1naXQgYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19jeXRob24vX2N5Z3JwYy9ncnBjLnB4aSBiL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9fY3lncnBjL2dycGMucHhpCmluZGV4IDc3MTQ1MDQuLjQyZmNlZDYgMTAwNjQ0Ci0tLSBhL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9fY3lncnBjL2dycGMucHhpCisrKyBiL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9fY3lncnBjL2dycGMucHhpCkBAIC0zMCwxOSArMzAsMjkgQEAKIGNpbXBvcnQgbGliYy50aW1lCiAKIAotY2RlZiBleHRlcm4gZnJvbSAiZ3JwYy9fY3l0aG9uL2xvYWRlci5oIjoKKyMgVHlwZWRlZiB0eXBlcyB3aXRoIGFwcHJveGltYXRlbHkgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHByb3ZpZGUgdGhlaXIgbmFtZXMgdG8KKyMgQ3l0aG9uCitjdHlwZWRlZiBpbnQgaW50MzJfdAorY3R5cGVkZWYgdW5zaWduZWQgdWludDMyX3QKK2N0eXBlZGVmIGxvbmcgaW50NjRfdAogCi0gIGN0eXBlZGVmIGludCBpbnQzMl90Ci0gIGN0eXBlZGVmIHVuc2lnbmVkIHVpbnQzMl90Ci0gIGN0eXBlZGVmIGxvbmcgaW50NjRfdAogCi0gIGludCBweWdycGNfbG9hZF9jb3JlKGNoYXIqKQotICBpbnQgcHlncnBjX2luaXRpYWxpemVfY29yZSgpCitjZGVmIGV4dGVybiBmcm9tICJncnBjL3N1cHBvcnQvYWxsb2MuaCI6CiAKICAgdm9pZCAqZ3ByX21hbGxvYyhzaXplX3Qgc2l6ZSkgbm9naWwKICAgdm9pZCBncHJfZnJlZSh2b2lkICpwdHIpIG5vZ2lsCiAgIHZvaWQgKmdwcl9yZWFsbG9jKHZvaWQgKnAsIHNpemVfdCBzaXplKSBub2dpbAogCisKK2NkZWYgZXh0ZXJuIGZyb20gImdycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmgiOgorCisgIHN0cnVjdCBncnBjX2J5dGVfYnVmZmVyX3JlYWRlcjoKKyAgICAjIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGludGVybmFscworICAgIHBhc3MKKworCitjZGVmIGV4dGVybiBmcm9tICJncnBjL2dycGMuaCI6CisKICAgY3R5cGVkZWYgc3RydWN0IGdwcl9zbGljZToKICAgICAjIGRvbid0IHdvcnJ5IGFib3V0IHdyaXRpbmcgb3V0IHRoZSBtZW1iZXJzIG9mIGdwcl9zbGljZTsgd2UgbmV2ZXIgYWNjZXNzCiAgICAgIyB0aGVtIGRpcmVjdGx5LgpAQCAtODYsNyArOTYsMjIgQEAKICAgZ3ByX3RpbWVzcGVjIGdwcl90aW1lX2FkZChncHJfdGltZXNwZWMgYSwgZ3ByX3RpbWVzcGVjIGIpIG5vZ2lsCiAKICAgaW50IGdwcl90aW1lX2NtcChncHJfdGltZXNwZWMgYSwgZ3ByX3RpbWVzcGVjIGIpIG5vZ2lsCi0gIAorCisgIGN0eXBlZGVmIHN0cnVjdCBncnBjX2J5dGVfYnVmZmVyOgorICAgICMgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgaW50ZXJuYWxzLgorICAgIHBhc3MKKworICBncnBjX2J5dGVfYnVmZmVyICpncnBjX3Jhd19ieXRlX2J1ZmZlcl9jcmVhdGUoZ3ByX3NsaWNlICpzbGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnNsaWNlcykgbm9naWwKKyAgc2l6ZV90IGdycGNfYnl0ZV9idWZmZXJfbGVuZ3RoKGdycGNfYnl0ZV9idWZmZXIgKmJiKSBub2dpbAorICB2b2lkIGdycGNfYnl0ZV9idWZmZXJfZGVzdHJveShncnBjX2J5dGVfYnVmZmVyICpieXRlX2J1ZmZlcikgbm9naWwKKworICBpbnQgZ3JwY19ieXRlX2J1ZmZlcl9yZWFkZXJfaW5pdChncnBjX2J5dGVfYnVmZmVyX3JlYWRlciAqcmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2J5dGVfYnVmZmVyICpidWZmZXIpIG5vZ2lsCisgIGludCBncnBjX2J5dGVfYnVmZmVyX3JlYWRlcl9uZXh0KGdycGNfYnl0ZV9idWZmZXJfcmVhZGVyICpyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9zbGljZSAqc2xpY2UpIG5vZ2lsCisgIHZvaWQgZ3JwY19ieXRlX2J1ZmZlcl9yZWFkZXJfZGVzdHJveShncnBjX2J5dGVfYnVmZmVyX3JlYWRlciAqcmVhZGVyKSBub2dpbAorCiAgIGN0eXBlZGVmIGVudW0gZ3JwY19zdGF0dXNfY29kZToKICAgICBHUlBDX1NUQVRVU19PSwogICAgIEdSUENfU1RBVFVTX0NBTkNFTExFRApAQCAtMTA3LDM3ICsxMzIsNiBAQAogICAgIEdSUENfU1RBVFVTX0RBVEFfTE9TUwogICAgIEdSUENfU1RBVFVTX19ET19OT1RfVVNFCiAKLSAgY3R5cGVkZWYgZW51bSBncnBjX3NzbF9yb290c19vdmVycmlkZV9yZXN1bHQ6Ci0gICAgR1JQQ19TU0xfUk9PVFNfT1ZFUlJJREVfT0sKLSAgICBHUlBDX1NTTF9ST09UU19PVkVSUklERV9GQUlMRURfUEVSTUFORU5UTFkKLSAgICBHUlBDX1NTTF9ST09UU19PVkVSUklERV9GQUlMRUQKLQotICBjdHlwZWRlZiBlbnVtIGdycGNfc3NsX2NsaWVudF9jZXJ0aWZpY2F0ZV9yZXF1ZXN0X3R5cGU6Ci0gICAgR1JQQ19TU0xfRE9OVF9SRVFVRVNUX0NMSUVOVF9DRVJUSUZJQ0FURSwKLSAgICBHUlBDX1NTTF9SRVFVRVNUX0NMSUVOVF9DRVJUSUZJQ0FURV9CVVRfRE9OVF9WRVJJRlkKLSAgICBHUlBDX1NTTF9SRVFVRVNUX0NMSUVOVF9DRVJUSUZJQ0FURV9BTkRfVkVSSUZZCi0gICAgR1JQQ19TU0xfUkVRVUVTVF9BTkRfUkVRVUlSRV9DTElFTlRfQ0VSVElGSUNBVEVfQlVUX0RPTlRfVkVSSUZZCi0gICAgR1JQQ19TU0xfUkVRVUVTVF9BTkRfUkVRVUlSRV9DTElFTlRfQ0VSVElGSUNBVEVfQU5EX1ZFUklGWQotCi0gIHN0cnVjdCBncnBjX2J5dGVfYnVmZmVyX3JlYWRlcjoKLSAgICAjIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGludGVybmFscwotICAgIHBhc3MKLQotICBjdHlwZWRlZiBzdHJ1Y3QgZ3JwY19ieXRlX2J1ZmZlcjoKLSAgICAjIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGludGVybmFscy4KLSAgICBwYXNzCi0KLSAgZ3JwY19ieXRlX2J1ZmZlciAqZ3JwY19yYXdfYnl0ZV9idWZmZXJfY3JlYXRlKGdwcl9zbGljZSAqc2xpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5zbGljZXMpIG5vZ2lsCi0gIHNpemVfdCBncnBjX2J5dGVfYnVmZmVyX2xlbmd0aChncnBjX2J5dGVfYnVmZmVyICpiYikgbm9naWwKLSAgdm9pZCBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3koZ3JwY19ieXRlX2J1ZmZlciAqYnl0ZV9idWZmZXIpIG5vZ2lsCi0KLSAgaW50IGdycGNfYnl0ZV9idWZmZXJfcmVhZGVyX2luaXQoZ3JwY19ieXRlX2J1ZmZlcl9yZWFkZXIgKnJlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19ieXRlX2J1ZmZlciAqYnVmZmVyKSBub2dpbAotICBpbnQgZ3JwY19ieXRlX2J1ZmZlcl9yZWFkZXJfbmV4dChncnBjX2J5dGVfYnVmZmVyX3JlYWRlciAqcmVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfc2xpY2UgKnNsaWNlKSBub2dpbAotICB2b2lkIGdycGNfYnl0ZV9idWZmZXJfcmVhZGVyX2Rlc3Ryb3koZ3JwY19ieXRlX2J1ZmZlcl9yZWFkZXIgKnJlYWRlcikgbm9naWwKLQogICBjb25zdCBjaGFyICpHUlBDX0FSR19QUklNQVJZX1VTRVJfQUdFTlRfU1RSSU5HCiAgIGNvbnN0IGNoYXIgKkdSUENfQVJHX0VOQUJMRV9DRU5TVVMKICAgY29uc3QgY2hhciAqR1JQQ19BUkdfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUwpAQCAtMzUzLDYgKzM0NywyMSBAQAogICB2b2lkIGdycGNfc2VydmVyX2NhbmNlbF9hbGxfY2FsbHMoZ3JwY19zZXJ2ZXIgKnNlcnZlcikgbm9naWwKICAgdm9pZCBncnBjX3NlcnZlcl9kZXN0cm95KGdycGNfc2VydmVyICpzZXJ2ZXIpIG5vZ2lsCiAKKworY2RlZiBleHRlcm4gZnJvbSAiZ3JwYy9ncnBjX3NlY3VyaXR5LmgiOgorCisgIGN0eXBlZGVmIGVudW0gZ3JwY19zc2xfcm9vdHNfb3ZlcnJpZGVfcmVzdWx0OgorICAgIEdSUENfU1NMX1JPT1RTX09WRVJSSURFX09LCisgICAgR1JQQ19TU0xfUk9PVFNfT1ZFUlJJREVfRkFJTEVEX1BFUk1BTkVOVExZCisgICAgR1JQQ19TU0xfUk9PVFNfT1ZFUlJJREVfRkFJTEVECisKKyAgY3R5cGVkZWYgZW51bSBncnBjX3NzbF9jbGllbnRfY2VydGlmaWNhdGVfcmVxdWVzdF90eXBlOgorICAgIEdSUENfU1NMX0RPTlRfUkVRVUVTVF9DTElFTlRfQ0VSVElGSUNBVEUsCisgICAgR1JQQ19TU0xfUkVRVUVTVF9DTElFTlRfQ0VSVElGSUNBVEVfQlVUX0RPTlRfVkVSSUZZCisgICAgR1JQQ19TU0xfUkVRVUVTVF9DTElFTlRfQ0VSVElGSUNBVEVfQU5EX1ZFUklGWQorICAgIEdSUENfU1NMX1JFUVVFU1RfQU5EX1JFUVVJUkVfQ0xJRU5UX0NFUlRJRklDQVRFX0JVVF9ET05UX1ZFUklGWQorICAgIEdSUENfU1NMX1JFUVVFU1RfQU5EX1JFUVVJUkVfQ0xJRU5UX0NFUlRJRklDQVRFX0FORF9WRVJJRlkKKwogICBjdHlwZWRlZiBzdHJ1Y3QgZ3JwY19zc2xfcGVtX2tleV9jZXJ0X3BhaXI6CiAgICAgY29uc3QgY2hhciAqcHJpdmF0ZV9rZXkKICAgICBjb25zdCBjaGFyICpjZXJ0aWZpY2F0ZV9jaGFpbiAiY2VydF9jaGFpbiIKQEAgLTQzOCw2ICs0NDcsOSBAQAogICBncnBjX2NhbGxfY3JlZGVudGlhbHMgKmdycGNfbWV0YWRhdGFfY3JlZGVudGlhbHNfY3JlYXRlX2Zyb21fcGx1Z2luKAogICAgICAgZ3JwY19tZXRhZGF0YV9jcmVkZW50aWFsc19wbHVnaW4gcGx1Z2luLCB2b2lkICpyZXNlcnZlZCkgbm9naWwKIAorCitjZGVmIGV4dGVybiBmcm9tICJncnBjL2NvbXByZXNzaW9uLmgiOgorCiAgIGN0eXBlZGVmIGVudW0gZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG06CiAgICAgR1JQQ19DT01QUkVTU19OT05FCiAgICAgR1JQQ19DT01QUkVTU19ERUZMQVRFCkBAIC00NzIsMyArNDg0LDQgQEAKICAgaW50IGdycGNfY29tcHJlc3Npb25fb3B0aW9uc19pc19hbGdvcml0aG1fZW5hYmxlZCgKICAgICAgIGNvbnN0IGdycGNfY29tcHJlc3Npb25fb3B0aW9ucyAqb3B0cywKICAgICAgIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtIGFsZ29yaXRobSkgbm9naWwKKwpkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2N5Z3JwYy5weXggYi9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19jeXRob24vY3lncnBjLnB5eAppbmRleCBlMDU1ZDMyLi5hOTUyMGI5IDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19jeXRob24vY3lncnBjLnB5eAorKysgYi9zcmMvcHl0aG9uL2dycGNpby9ncnBjL19jeXRob24vY3lncnBjLnB5eApAQCAtNDksMTEgKzQ5LDE4IEBACiAjCiAKIAotZGVmIF9pbml0aWFsaXplKCk6Ci0gIGlmIG5vdCBweWdycGNfaW5pdGlhbGl6ZV9jb3JlKCk6Ci0gICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2ZhaWxlZCB0byBpbml0aWFsaXplIGNvcmUgZ1JQQyBsaWJyYXJ5JykKK2NkZWYgZXh0ZXJuIGZyb20gIlB5dGhvbi5oIjoKIAorICBpbnQgUHlfQXRFeGl0KHZvaWQoKmZ1bmMpKCkpCisKKworZGVmIF9pbml0aWFsaXplKCk6CisgIGdycGNfaW5pdCgpCiAgIGdycGNfc2V0X3NzbF9yb290c19vdmVycmlkZV9jYWxsYmFjaygKICAgICAgICAgICA8Z3JwY19zc2xfcm9vdHNfb3ZlcnJpZGVfY2FsbGJhY2s+c3NsX3Jvb3RzX292ZXJyaWRlX2NhbGxiYWNrKQogCisgIGlmIFB5X0F0RXhpdChncnBjX3NodXRkb3duKSAhPSAwOgorICAgIHJhaXNlIEltcG9ydEVycm9yKCdmYWlsZWQgdG8gcmVnaXN0ZXIgZ1JQQyBsaWJyYXJ5IHNodXRkb3duIGNhbGxiYWNrcycpCisKKwogX2luaXRpYWxpemUoKQpkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2xvYWRlci5oIGIvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2xvYWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmZkMjI1Li4wMDAwMDAwCi0tLSBhL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9sb2FkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICoKLSAqLwotCi0jaWZuZGVmIFBZR1JQQ19MT0FERVJfSF8KLSNkZWZpbmUgUFlHUlBDX0xPQURFUl9IXwotCi0jaW5jbHVkZSAiaW1wb3J0cy5nZW5lcmF0ZWQuaCIKLQotLyogQWRkaXRpb25hbCBpbmNsdXNpb25zIG5vdCBjb3ZlcmVkIGJ5ICJpbXBvcnRzLmdlbmVyYXRlZC5oIiAqLwotI2luY2x1ZGUgPGdycGMvYnl0ZV9idWZmZXJfcmVhZGVyLmg+Ci0KLS8qIFRPRE8oYXRhc2gpIHJlbW92ZSBjcnVmdCAqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmICAvKiBfX2NwbHVzbHVzICovCi0KLS8qIEF0dGVtcHRzIHRvIGxvYWQgdGhlIGNvcmUgaWYgbmVjZXNzYXJ5LCBhbmQgcmV0dXJuIG5vbi16ZXJvIHVwb24gc3VjY2VzLiAqLwotaW50IHB5Z3JwY19sb2FkX2NvcmUoY2hhciAqcGF0aCk7Ci0KLS8qIEluaXRpYWxpemVzIGdycGMgYW5kIHJlZ2lzdGVycyBncnBjX3NodXRkb3duKCkgdG8gYmUgY2FsbGVkIHJpZ2h0IGJlZm9yZQotICogaW50ZXJwcmV0ZXIgZXhpdC4gIFJldHVybnMgbm9uLXplcm8gdXBvbiBzdWNjZXNzLgotICovCi1pbnQgcHlncnBjX2luaXRpYWxpemVfY29yZSh2b2lkKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYgIC8qIF9fY3BsdXNsdXMgKi8KLQotI2VuZGlmIC8qIEdSUENfUkJfQllURV9CVUZGRVJfSF8gKi8KLQpkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9iZXRhL19jbGllbnRfYWRhcHRhdGlvbnMucHkgYi9zcmMvcHl0aG9uL2dycGNpby9ncnBjL2JldGEvX2NsaWVudF9hZGFwdGF0aW9ucy5weQppbmRleCA3MzQxNWUwLi5lNGVlNDRkIDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjL2JldGEvX2NsaWVudF9hZGFwdGF0aW9ucy5weQorKysgYi9zcmMvcHl0aG9uL2dycGNpby9ncnBjL2JldGEvX2NsaWVudF9hZGFwdGF0aW9ucy5weQpAQCAtNjcsNyArNjcsNyBAQAogICBlcnJvcl9raW5kID0gZmFjZS5BYm9ydGlvbi5LaW5kLkxPQ0FMX0ZBSUxVUkUgaWYgcGFpciBpcyBOb25lIGVsc2UgcGFpclswXQogICByZXR1cm4gZmFjZS5BYm9ydGlvbigKICAgICAgIGVycm9yX2tpbmQsIHJwY19lcnJvcl9jYWxsLmluaXRpYWxfbWV0YWRhdGEoKSwKLSAgICAgIHJwY19lcnJvcl9jYWxsLnRyYWlsaW5nX21ldGFkYXRhKCksIGNvZGUsIHJwY19lcnJvcl9jb2RlLmRldGFpbHMoKSkKKyAgICAgIHJwY19lcnJvcl9jYWxsLnRyYWlsaW5nX21ldGFkYXRhKCksIGNvZGUsIHJwY19lcnJvcl9jYWxsLmRldGFpbHMoKSkKIAogCiBkZWYgX2Fib3J0aW9uX2Vycm9yKHJwY19lcnJvcl9jYWxsKToKQEAgLTE1OSw5ICsxNTksMTEgQEAKICAgICByZXR1cm4gc2VsZi5fY2FsbC50aW1lX3JlbWFpbmluZygpCiAKICAgZGVmIGFkZF9hYm9ydGlvbl9jYWxsYmFjayhzZWxmLCBhYm9ydGlvbl9jYWxsYmFjayk6Ci0gICAgcmVnaXN0ZXJlZCA9IHNlbGYuX2NhbGwuYWRkX2NhbGxiYWNrKAotICAgICAgICBsYW1iZGE6IGFib3J0aW9uX2NhbGxiYWNrKF9hYm9ydGlvbihzZWxmLl9jYWxsKSkpCi0gICAgcmV0dXJuIE5vbmUgaWYgcmVnaXN0ZXJlZCBlbHNlIF9hYm9ydGlvbihzZWxmLl9jYWxsKQorICAgIGRlZiBkb25lX2NhbGxiYWNrKCk6CisgICAgICBpZiBzZWxmLmNvZGUoKSBpcyBub3QgZ3JwYy5TdGF0dXNDb2RlLk9LOgorICAgICAgICBhYm9ydGlvbl9jYWxsYmFjayhfYWJvcnRpb24oc2VsZi5fY2FsbCkpCisgICAgcmVnaXN0ZXJlZCA9IHNlbGYuX2NhbGwuYWRkX2NhbGxiYWNrKGRvbmVfY2FsbGJhY2spCisgICAgcmV0dXJuIE5vbmUgaWYgcmVnaXN0ZXJlZCBlbHNlIGRvbmVfY2FsbGJhY2soKQogCiAgIGRlZiBwcm90b2NvbF9jb250ZXh0KHNlbGYpOgogICAgIHJldHVybiBfSW52b2NhdGlvblByb3RvY29sQ29udGV4dCgpCmRpZmYgLS1naXQgYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjX2NvcmVfZGVwZW5kZW5jaWVzLnB5IGIvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwY19jb3JlX2RlcGVuZGVuY2llcy5weQppbmRleCBmYzA5MDhiLi4wZjg1Zjg3IDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpby9ncnBjX2NvcmVfZGVwZW5kZW5jaWVzLnB5CisrKyBiL3NyYy9weXRob24vZ3JwY2lvL2dycGNfY29yZV9kZXBlbmRlbmNpZXMucHkKQEAgLTI0MCw2ICsyNDAsNyBAQAogICAnc3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvc2VydmVyL2luc2VjdXJlL3NlcnZlcl9jaHR0cDJfcG9zaXguYycsCiAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGUuYycsCiAgICdzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9jbGllbnQvaW5zZWN1cmUvY2hhbm5lbF9jcmVhdGVfcG9zaXguYycsCisgICdzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9ncnBjbGIuYycsCiAgICdzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5jJywKICAgJ3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5jJywKICAgJ3RoaXJkX3BhcnR5L25hbm9wYi9wYl9jb21tb24uYycsCkBAIC0yNTEsNiArMjUyLDcgQEAKICAgJ3NyYy9jb3JlL2V4dC9yZXNvbHZlci9zb2NrYWRkci9zb2NrYWRkcl9yZXNvbHZlci5jJywKICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5jJywKICAgJ3NyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuYycsCisgICdzcmMvY29yZS9leHQvY2Vuc3VzL2Jhc2VfcmVzb3VyY2VzLmMnLAogICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9jb250ZXh0LmMnLAogICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9nZW4vY2Vuc3VzLnBiLmMnLAogICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2NvbnRleHQuYycsCkBAIC0yNjAsNiArMjYyLDcgQEAKICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jJywKICAgJ3NyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMnLAogICAnc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYycsCisgICdzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMnLAogICAnc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMnLAogICAnc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfcGx1Z2luX3JlZ2lzdHJ5LmMnLAogICAnc3JjL2JvcmluZ3NzbC9lcnJfZGF0YS5jJywKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9NQU5JRkVTVC5pbiBiL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9NQU5JRkVTVC5pbgppbmRleCA3ZDI2NjQ3Li43NDA3ZjY0IDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvTUFOSUZFU1QuaW4KKysrIGIvc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL01BTklGRVNULmluCkBAIC0xLDMgKzEsNCBAQAoraW5jbHVkZSBncnBjX3ZlcnNpb24ucHkKIGluY2x1ZGUgaGVhbHRoX2NvbW1hbmRzLnB5Ci1ncmFmdCBncnBjX2hlYWx0aAorZ3JhZnQgZ3JwYwogZ2xvYmFsLWV4Y2x1ZGUgKi5weWMKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX2hlYWx0aC9oZWFsdGgvX19pbml0X18ucHkgYi9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwYy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBzcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwY19oZWFsdGgvaGVhbHRoL19faW5pdF9fLnB5CnJlbmFtZSB0byBzcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwYy9fX2luaXRfXy5weQppbmRleCA3MDg2NTE5Li5mY2M3MDQ4IDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwY19oZWFsdGgvaGVhbHRoL19faW5pdF9fLnB5CisrKyBiL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjL19faW5pdF9fLnB5CkBAIC0yNyw0ICsyNyw0IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0KK19faW1wb3J0X18oJ3BrZ19yZXNvdXJjZXMnKS5kZWNsYXJlX25hbWVzcGFjZShfX25hbWVfXykKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX2hlYWx0aC9fX2luaXRfXy5weSBiL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjL2hlYWx0aC9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL2dycGNfaGVhbHRoL19faW5pdF9fLnB5CnJlbmFtZSB0byBzcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwYy9oZWFsdGgvX19pbml0X18ucHkKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX2hlYWx0aC9oZWFsdGgvdjEvX19pbml0X18ucHkgYi9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwYy9oZWFsdGgvdjEvX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX2hlYWx0aC9oZWFsdGgvdjEvX19pbml0X18ucHkKcmVuYW1lIHRvIHNyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjL2hlYWx0aC92MS9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL2dycGNfaGVhbHRoL2hlYWx0aC92MS9oZWFsdGgucHkgYi9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwYy9oZWFsdGgvdjEvaGVhbHRoLnB5CnNpbWlsYXJpdHkgaW5kZXggODElCnJlbmFtZSBmcm9tIHNyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX2hlYWx0aC9oZWFsdGgvdjEvaGVhbHRoLnB5CnJlbmFtZSB0byBzcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwYy9oZWFsdGgvdjEvaGVhbHRoLnB5CmluZGV4IDhkYTYwYzcuLjgxMDhhYzEgMTAwNjQ0Ci0tLSBhL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX2hlYWx0aC9oZWFsdGgvdjEvaGVhbHRoLnB5CisrKyBiL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjL2hlYWx0aC92MS9oZWFsdGgucHkKQEAgLTMxLDEwICszMSwxMiBAQAogCiBpbXBvcnQgdGhyZWFkaW5nCiAKLWZyb20gZ3JwY19oZWFsdGguaGVhbHRoLnYxIGltcG9ydCBoZWFsdGhfcGIyCitpbXBvcnQgZ3JwYworCitmcm9tIGdycGMuaGVhbHRoLnYxIGltcG9ydCBoZWFsdGhfcGIyCiAKIAotY2xhc3MgSGVhbHRoU2VydmljZXIoaGVhbHRoX3BiMi5CZXRhSGVhbHRoU2VydmljZXIpOgorY2xhc3MgSGVhbHRoU2VydmljZXIoaGVhbHRoX3BiMi5IZWFsdGhTZXJ2aWNlcik6CiAgICIiIlNlcnZpY2VyIGhhbmRsaW5nIFJQQ3MgZm9yIHNlcnZpY2Ugc3RhdHVzZXMuIiIiCiAKICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtNDMsMTQgKzQ1LDEyIEBACiAKICAgZGVmIENoZWNrKHNlbGYsIHJlcXVlc3QsIGNvbnRleHQpOgogICAgIHdpdGggc2VsZi5fc2VydmVyX3N0YXR1c19sb2NrOgotICAgICAgaWYgcmVxdWVzdC5zZXJ2aWNlIG5vdCBpbiBzZWxmLl9zZXJ2ZXJfc3RhdHVzOgotICAgICAgICAjIFRPRE8oYXRhc2gpOiBvbmNlIHRoZSBQeXRob24gQVBJIGhhcyBhIHdheSBvZiBzZXR0aW5nIHRoZSBzZXJ2ZXIKLSAgICAgICAgIyBzdGF0dXMsIGJyaW5nIHVzIGludG8gY29uZm9ybWFuY2Ugd2l0aCB0aGUgaGVhbHRoIGNoZWNrIHNwZWMgYnkKLSAgICAgICAgIyByZXR1cm5pbmcgdGhlIE5PVF9GT1VORCBzdGF0dXMgaGVyZS4KLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisgICAgICBzdGF0dXMgPSBzZWxmLl9zZXJ2ZXJfc3RhdHVzLmdldChyZXF1ZXN0LnNlcnZpY2UpCisgICAgICBpZiBzdGF0dXMgaXMgTm9uZToKKyAgICAgICAgY29udGV4dC5zZXRfY29kZShncnBjLlN0YXR1c0NvZGUuTk9UX0ZPVU5EKQorICAgICAgICByZXR1cm4gaGVhbHRoX3BiMi5IZWFsdGhDaGVja1Jlc3BvbnNlKCkKICAgICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBoZWFsdGhfcGIyLkhlYWx0aENoZWNrUmVzcG9uc2UoCi0gICAgICAgICAgICBzdGF0dXM9c2VsZi5fc2VydmVyX3N0YXR1c1tyZXF1ZXN0LnNlcnZpY2VdKQorICAgICAgICByZXR1cm4gaGVhbHRoX3BiMi5IZWFsdGhDaGVja1Jlc3BvbnNlKHN0YXR1cz1zdGF0dXMpCiAKICAgZGVmIHNldChzZWxmLCBzZXJ2aWNlLCBzdGF0dXMpOgogICAgICIiIlNldHMgdGhlIHN0YXR1cyBvZiBhIHNlcnZpY2UuCkBAIC02Myw0ICs2MywzIEBACiAgICAgIiIiCiAgICAgd2l0aCBzZWxmLl9zZXJ2ZXJfc3RhdHVzX2xvY2s6CiAgICAgICBzZWxmLl9zZXJ2ZXJfc3RhdHVzW3NlcnZpY2VdID0gc3RhdHVzCi0KZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX2hlYWx0aC9oZWFsdGgvX19pbml0X18ucHkgYi9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwY192ZXJzaW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggODklCmNvcHkgZnJvbSBzcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwY19oZWFsdGgvaGVhbHRoL19faW5pdF9fLnB5CmNvcHkgdG8gc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL2dycGNfdmVyc2lvbi5weQppbmRleCA3MDg2NTE5Li5iZTBkMGNlIDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwY19oZWFsdGgvaGVhbHRoL19faW5pdF9fLnB5CisrKyBiL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX3ZlcnNpb24ucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorIyBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw0ICsyNyw2IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCisjIEFVVE8tR0VORVJBVEVEIEZST00gYCRSRVBPX1JPT1QvdGVtcGxhdGVzL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9ncnBjX3ZlcnNpb24ucHkudGVtcGxhdGVgISEhCiAKK1ZFUlNJT049JzEuMS4wLmRldjAnCmRpZmYgLS1naXQgYS9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvaGVhbHRoX2NvbW1hbmRzLnB5IGIvc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL2hlYWx0aF9jb21tYW5kcy5weQppbmRleCBhN2E1OWY2Li42NmRmMjVkIDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvaGVhbHRoX2NvbW1hbmRzLnB5CisrKyBiL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9oZWFsdGhfY29tbWFuZHMucHkKQEAgLTI5LDE2ICsyOSwxMCBAQAogCiAiIiJQcm92aWRlcyBkaXN0dXRpbHMgY29tbWFuZCBjbGFzc2VzIGZvciB0aGUgR1JQQyBQeXRob24gc2V0dXAgcHJvY2Vzcy4iIiIKIAotaW1wb3J0IGRpc3R1dGlscwotaW1wb3J0IGdsb2IKIGltcG9ydCBvcwotaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCiAKIGltcG9ydCBzZXR1cHRvb2xzCi1mcm9tIHNldHVwdG9vbHMuY29tbWFuZCBpbXBvcnQgYnVpbGRfcHkKIAogUk9PVF9ESVIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKQogSEVBTFRIX1BST1RPID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCAnLi4vLi4vcHJvdG8vZ3JwYy9oZWFsdGgvdjEvaGVhbHRoLnByb3RvJykKQEAgLTYwLDEyICs1NCwyNSBAQAogICAgIGlmIG9zLnBhdGguaXNmaWxlKEhFQUxUSF9QUk9UTyk6CiAgICAgICBzaHV0aWwuY29weWZpbGUoCiAgICAgICAgICAgSEVBTFRIX1BST1RPLAotICAgICAgICAgIG9zLnBhdGguam9pbihST09UX0RJUiwgJ2dycGNfaGVhbHRoL2hlYWx0aC92MS9oZWFsdGgucHJvdG8nKSkKKyAgICAgICAgICBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsICdncnBjL2hlYWx0aC92MS9oZWFsdGgucHJvdG8nKSkKIAogCi1jbGFzcyBCdWlsZFB5KGJ1aWxkX3B5LmJ1aWxkX3B5KToKLSAgIiIiQ3VzdG9tIHByb2plY3QgYnVpbGQgY29tbWFuZC4iIiIKK2NsYXNzIEJ1aWxkUGFja2FnZVByb3RvcyhzZXR1cHRvb2xzLkNvbW1hbmQpOgorICAiIiJDb21tYW5kIHRvIGdlbmVyYXRlIHByb2plY3QgKl9wYjIucHkgbW9kdWxlcyBmcm9tIHByb3RvIGZpbGVzLiIiIgorCisgIGRlc2NyaXB0aW9uID0gJ2J1aWxkIGdycGMgcHJvdG9idWYgbW9kdWxlcycKKyAgdXNlcl9vcHRpb25zID0gW10KKworICBkZWYgaW5pdGlhbGl6ZV9vcHRpb25zKHNlbGYpOgorICAgIHBhc3MKKworICBkZWYgZmluYWxpemVfb3B0aW9ucyhzZWxmKToKKyAgICBwYXNzCiAKICAgZGVmIHJ1bihzZWxmKToKLSAgICBzZWxmLnJ1bl9jb21tYW5kKCdidWlsZF9wcm90b19tb2R1bGVzJykKLSAgICBidWlsZF9weS5idWlsZF9weS5ydW4oc2VsZikKKyAgICAjIGR1ZSB0byBsaW1pdGF0aW9ucyBvZiB0aGUgcHJvdG8gZ2VuZXJhdG9yLCB3ZSByZXF1aXJlIHRoYXQgb25seSAqb25lKgorICAgICMgZGlyZWN0b3J5IGlzIHByb3ZpZGVkIGFzIGFuICdpbmNsdWRlJyBkaXJlY3RvcnkuIFdlIGFzc3VtZSBpdCdzIHRoZSAnJyBrZXkKKyAgICAjIHRvIGBzZWxmLmRpc3RyaWJ1dGlvbi5wYWNrYWdlX2RpcmAgKGFuZCBnZXQgYSBrZXkgZXJyb3IgaWYgaXQncyBub3QKKyAgICAjIHRoZXJlKS4KKyAgICBmcm9tIGdycGMudG9vbHMgaW1wb3J0IGNvbW1hbmQKKyAgICBjb21tYW5kLmJ1aWxkX3BhY2thZ2VfcHJvdG9zKHNlbGYuZGlzdHJpYnV0aW9uLnBhY2thZ2VfZGlyWycnXSkKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9zZXR1cC5weSBiL3NyYy9weXRob24vZ3JwY2lvX2hlYWx0aF9jaGVja2luZy9zZXR1cC5weQppbmRleCA3MGI0NTc1Li43MjdkNjI4IDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvc2V0dXAucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL3NldHVwLnB5CkBAIC0zMCw0OSArMzAsNDIgQEAKICIiIlNldHVwIG1vZHVsZSBmb3IgdGhlIEdSUEMgUHl0aG9uIHBhY2thZ2UncyBvcHRpb25hbCBoZWFsdGggY2hlY2tpbmcuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGNvcmUgYXMgX2NvcmUKIGltcG9ydCBzZXR1cHRvb2xzCiAKLWltcG9ydCBncnBjLnRvb2xzLmNvbW1hbmQKLQogIyBFbnN1cmUgd2UncmUgaW4gdGhlIHByb3BlciBkaXJlY3Rvcnkgd2hldGhlciBvciBub3Qgd2UncmUgYmVpbmcgdXNlZCBieSBwaXAuCiBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpCiAKICMgQnJlYWsgaW1wb3J0LXN0eWxlIHRvIGVuc3VyZSB3ZSBjYW4gYWN0dWFsbHkgZmluZCBvdXIgY29tbWFuZHMgbW9kdWxlLgogaW1wb3J0IGhlYWx0aF9jb21tYW5kcwotCi1QQUNLQUdFUyA9ICgKLSAgICBzZXR1cHRvb2xzLmZpbmRfcGFja2FnZXMoJy4nKQotKQoraW1wb3J0IGdycGNfdmVyc2lvbgogCiBQQUNLQUdFX0RJUkVDVE9SSUVTID0gewogICAgICcnOiAnLicsCiB9CiAKIFNFVFVQX1JFUVVJUkVTID0gKAotICAgICdncnBjaW8tdG9vbHM+PTAuMTQuMCcsCisgICAgJ2dycGNpby10b29scz49MC4xNS4wJywKICkKIAogSU5TVEFMTF9SRVFVSVJFUyA9ICgKLSAgICAnZ3JwY2lvPj0wLjEzLjEnLAorICAgICdncnBjaW8+PTAuMTUuMCcsCiApCiAKIENPTU1BTkRfQ0xBU1MgPSB7CiAgICAgIyBSdW4gcHJlcHJvY2VzcyBmcm9tIHRoZSByZXBvc2l0b3J5ICpiZWZvcmUqIGRvaW5nIGFueSBwYWNrYWdpbmchCiAgICAgJ3ByZXByb2Nlc3MnOiBoZWFsdGhfY29tbWFuZHMuQ29weVByb3RvTW9kdWxlcywKLQotICAgICdidWlsZF9wcm90b19tb2R1bGVzJzogZ3JwYy50b29scy5jb21tYW5kLkJ1aWxkUHJvdG9Nb2R1bGVzLAotICAgICdidWlsZF9weSc6IGhlYWx0aF9jb21tYW5kcy5CdWlsZFB5LAorICAgICdidWlsZF9wYWNrYWdlX3Byb3Rvcyc6IGhlYWx0aF9jb21tYW5kcy5CdWlsZFBhY2thZ2VQcm90b3MsCiB9CiAKIHNldHVwdG9vbHMuc2V0dXAoCiAgICAgbmFtZT0nZ3JwY2lvLWhlYWx0aC1jaGVja2luZycsCi0gICAgdmVyc2lvbj0nMC4xNC4wJywKLSAgICBwYWNrYWdlcz1saXN0KFBBQ0tBR0VTKSwKKyAgICB2ZXJzaW9uPWdycGNfdmVyc2lvbi5WRVJTSU9OLAorICAgIGxpY2Vuc2U9JzMtY2xhdXNlIEJTRCcsCiAgICAgcGFja2FnZV9kaXI9UEFDS0FHRV9ESVJFQ1RPUklFUywKKyAgICBwYWNrYWdlcz1zZXR1cHRvb2xzLmZpbmRfcGFja2FnZXMoJy4nKSwKKyAgICBuYW1lc3BhY2VfcGFja2FnZXM9WydncnBjJ10sCiAgICAgaW5zdGFsbF9yZXF1aXJlcz1JTlNUQUxMX1JFUVVJUkVTLAogICAgIHNldHVwX3JlcXVpcmVzPVNFVFVQX1JFUVVJUkVTLAogICAgIGNtZGNsYXNzPUNPTU1BTkRfQ0xBU1MKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX3Rlc3RzL2NvbW1hbmRzLnB5IGIvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvY29tbWFuZHMucHkKaW5kZXggMTcxODI5Yi4uNWVlNTUxYyAxMDA2NDQKLS0tIGEvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvY29tbWFuZHMucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvY29tbWFuZHMucHkKQEAgLTEzOCw3ICsxMzgsNyBAQAogCiAgIGRlZiBydW4oc2VsZik6CiAgICAgdHJ5OgotICAgICAgc2VsZi5ydW5fY29tbWFuZCgnYnVpbGRfcHJvdG9fbW9kdWxlcycpCisgICAgICBzZWxmLnJ1bl9jb21tYW5kKCdidWlsZF9wYWNrYWdlX3Byb3RvcycpCiAgICAgZXhjZXB0IENvbW1hbmRFcnJvciBhcyBlcnJvcjoKICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3dhcm5pbmc6ICVzXG4nICUgZXJyb3IubWVzc2FnZSkKICAgICBidWlsZF9weS5idWlsZF9weS5ydW4oc2VsZikKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX3Rlc3RzL3NldHVwLnB5IGIvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvc2V0dXAucHkKaW5kZXggN2VlZjQyMC4uMGFmYWY3ZCAxMDA2NDQKLS0tIGEvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvc2V0dXAucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvc2V0dXAucHkKQEAgLTc1LDcgKzc1LDcgQEAKICAgICAjIFJ1biBgcHJlcHJvY2Vzc2AgKmJlZm9yZSogZG9pbmcgYW55IHBhY2thZ2luZyEKICAgICAncHJlcHJvY2Vzcyc6IGNvbW1hbmRzLkdhdGhlclByb3RvLAogCi0gICAgJ2J1aWxkX3Byb3RvX21vZHVsZXMnOiBncnBjLnRvb2xzLmNvbW1hbmQuQnVpbGRQcm90b01vZHVsZXMsCisgICAgJ2J1aWxkX3BhY2thZ2VfcHJvdG9zJzogZ3JwYy50b29scy5jb21tYW5kLkJ1aWxkUGFja2FnZVByb3RvcywKICAgICAnYnVpbGRfcHknOiBjb21tYW5kcy5CdWlsZFB5LAogICAgICdydW5faW50ZXJvcCc6IGNvbW1hbmRzLlJ1bkludGVyb3AsCiAgICAgJ3Rlc3RfbGl0ZSc6IGNvbW1hbmRzLlRlc3RMaXRlCmRpZmYgLS1naXQgYS9zcmMvcHl0aG9uL2dycGNpb190ZXN0cy90ZXN0cy9oZWFsdGhfY2hlY2svX2hlYWx0aF9zZXJ2aWNlcl90ZXN0LnB5IGIvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvdGVzdHMvaGVhbHRoX2NoZWNrL19oZWFsdGhfc2VydmljZXJfdGVzdC5weQppbmRleCAxYjYzMzg4Li44MDMwMGQxIDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL2dycGNpb190ZXN0cy90ZXN0cy9oZWFsdGhfY2hlY2svX2hlYWx0aF9zZXJ2aWNlcl90ZXN0LnB5CisrKyBiL3NyYy9weXRob24vZ3JwY2lvX3Rlc3RzL3Rlc3RzL2hlYWx0aF9jaGVjay9faGVhbHRoX3NlcnZpY2VyX3Rlc3QucHkKQEAgLTI3LDQ4ICsyNyw2OCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIiIiVGVzdHMgb2YgZ3JwY19oZWFsdGguaGVhbHRoLnYxLmhlYWx0aC4iIiIKKyIiIlRlc3RzIG9mIGdycGMuaGVhbHRoLnYxLmhlYWx0aC4iIiIKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gZ3JwY19oZWFsdGguaGVhbHRoLnYxIGltcG9ydCBoZWFsdGgKLWZyb20gZ3JwY19oZWFsdGguaGVhbHRoLnYxIGltcG9ydCBoZWFsdGhfcGIyCitpbXBvcnQgZ3JwYworZnJvbSBncnBjLmZyYW1ld29yay5mb3VuZGF0aW9uIGltcG9ydCBsb2dnaW5nX3Bvb2wKK2Zyb20gZ3JwYy5oZWFsdGgudjEgaW1wb3J0IGhlYWx0aAorZnJvbSBncnBjLmhlYWx0aC52MSBpbXBvcnQgaGVhbHRoX3BiMgorCitmcm9tIHRlc3RzLnVuaXQuZnJhbWV3b3JrLmNvbW1vbiBpbXBvcnQgdGVzdF9jb25zdGFudHMKIAogCiBjbGFzcyBIZWFsdGhTZXJ2aWNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgIGRlZiBzZXRVcChzZWxmKToKLSAgICBzZWxmLnNlcnZpY2VyID0gaGVhbHRoLkhlYWx0aFNlcnZpY2VyKCkKLSAgICBzZWxmLnNlcnZpY2VyLnNldCgnJywgaGVhbHRoX3BiMi5IZWFsdGhDaGVja1Jlc3BvbnNlLlNFUlZJTkcpCi0gICAgc2VsZi5zZXJ2aWNlci5zZXQoJ2dycGMudGVzdC5UZXN0U2VydmljZVNlcnZpbmcnLAotICAgICAgICAgICAgICAgICAgICAgIGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXNwb25zZS5TRVJWSU5HKQotICAgIHNlbGYuc2VydmljZXIuc2V0KCdncnBjLnRlc3QuVGVzdFNlcnZpY2VVbmtub3duJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWFsdGhfcGIyLkhlYWx0aENoZWNrUmVzcG9uc2UuVU5LTk9XTikKLSAgICBzZWxmLnNlcnZpY2VyLnNldCgnZ3JwYy50ZXN0LlRlc3RTZXJ2aWNlTm90U2VydmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVhbHRoX3BiMi5IZWFsdGhDaGVja1Jlc3BvbnNlLk5PVF9TRVJWSU5HKQorICAgIHNlcnZpY2VyID0gaGVhbHRoLkhlYWx0aFNlcnZpY2VyKCkKKyAgICBzZXJ2aWNlci5zZXQoJycsIGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXNwb25zZS5TRVJWSU5HKQorICAgIHNlcnZpY2VyLnNldCgnZ3JwYy50ZXN0LlRlc3RTZXJ2aWNlU2VydmluZycsCisgICAgICAgICAgICAgICAgIGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXNwb25zZS5TRVJWSU5HKQorICAgIHNlcnZpY2VyLnNldCgnZ3JwYy50ZXN0LlRlc3RTZXJ2aWNlVW5rbm93bicsCisgICAgICAgICAgICAgICAgIGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXNwb25zZS5VTktOT1dOKQorICAgIHNlcnZpY2VyLnNldCgnZ3JwYy50ZXN0LlRlc3RTZXJ2aWNlTm90U2VydmluZycsCisgICAgICAgICAgICAgICAgIGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXNwb25zZS5OT1RfU0VSVklORykKKyAgICBzZXJ2ZXJfcG9vbCA9IGxvZ2dpbmdfcG9vbC5wb29sKHRlc3RfY29uc3RhbnRzLlRIUkVBRF9DT05DVVJSRU5DWSkKKyAgICBzZWxmLl9zZXJ2ZXIgPSBncnBjLnNlcnZlcihzZXJ2ZXJfcG9vbCkKKyAgICBwb3J0ID0gc2VsZi5fc2VydmVyLmFkZF9pbnNlY3VyZV9wb3J0KCdbOjpdOjAnKQorICAgIGhlYWx0aF9wYjIuYWRkX0hlYWx0aFNlcnZpY2VyX3RvX3NlcnZlcihzZXJ2aWNlciwgc2VsZi5fc2VydmVyKQorICAgIHNlbGYuX3NlcnZlci5zdGFydCgpCisKKyAgICBjaGFubmVsID0gZ3JwYy5pbnNlY3VyZV9jaGFubmVsKCdsb2NhbGhvc3Q6JWQnICUgcG9ydCkKKyAgICBzZWxmLl9zdHViID0gaGVhbHRoX3BiMi5IZWFsdGhTdHViKGNoYW5uZWwpCiAKICAgZGVmIHRlc3RfZW1wdHlfc2VydmljZShzZWxmKToKICAgICByZXF1ZXN0ID0gaGVhbHRoX3BiMi5IZWFsdGhDaGVja1JlcXVlc3QoKQotICAgIHJlc3AgPSBzZWxmLnNlcnZpY2VyLkNoZWNrKHJlcXVlc3QsIE5vbmUpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnN0YXR1cywgaGVhbHRoX3BiMi5IZWFsdGhDaGVja1Jlc3BvbnNlLlNFUlZJTkcpCisgICAgcmVzcCA9IHNlbGYuX3N0dWIuQ2hlY2socmVxdWVzdCkKKyAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXNwb25zZS5TRVJWSU5HLCByZXNwLnN0YXR1cykKIAogICBkZWYgdGVzdF9zZXJ2aW5nX3NlcnZpY2Uoc2VsZik6CiAgICAgcmVxdWVzdCA9IGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXF1ZXN0KAogICAgICAgICBzZXJ2aWNlPSdncnBjLnRlc3QuVGVzdFNlcnZpY2VTZXJ2aW5nJykKLSAgICByZXNwID0gc2VsZi5zZXJ2aWNlci5DaGVjayhyZXF1ZXN0LCBOb25lKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5zdGF0dXMsIGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXNwb25zZS5TRVJWSU5HKQorICAgIHJlc3AgPSBzZWxmLl9zdHViLkNoZWNrKHJlcXVlc3QpCisgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFsdGhfcGIyLkhlYWx0aENoZWNrUmVzcG9uc2UuU0VSVklORywgcmVzcC5zdGF0dXMpCiAKICAgZGVmIHRlc3RfdW5rbm93bl9zZXJpdmNlKHNlbGYpOgogICAgIHJlcXVlc3QgPSBoZWFsdGhfcGIyLkhlYWx0aENoZWNrUmVxdWVzdCgKICAgICAgICAgc2VydmljZT0nZ3JwYy50ZXN0LlRlc3RTZXJ2aWNlVW5rbm93bicpCi0gICAgcmVzcCA9IHNlbGYuc2VydmljZXIuQ2hlY2socmVxdWVzdCwgTm9uZSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Auc3RhdHVzLCBoZWFsdGhfcGIyLkhlYWx0aENoZWNrUmVzcG9uc2UuVU5LTk9XTikKKyAgICByZXNwID0gc2VsZi5fc3R1Yi5DaGVjayhyZXF1ZXN0KQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhbHRoX3BiMi5IZWFsdGhDaGVja1Jlc3BvbnNlLlVOS05PV04sIHJlc3Auc3RhdHVzKQogCiAgIGRlZiB0ZXN0X25vdF9zZXJ2aW5nX3NlcnZpY2Uoc2VsZik6CiAgICAgcmVxdWVzdCA9IGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXF1ZXN0KAogICAgICAgICBzZXJ2aWNlPSdncnBjLnRlc3QuVGVzdFNlcnZpY2VOb3RTZXJ2aW5nJykKLSAgICByZXNwID0gc2VsZi5zZXJ2aWNlci5DaGVjayhyZXF1ZXN0LCBOb25lKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5zdGF0dXMsIGhlYWx0aF9wYjIuSGVhbHRoQ2hlY2tSZXNwb25zZS5OT1RfU0VSVklORykKKyAgICByZXNwID0gc2VsZi5fc3R1Yi5DaGVjayhyZXF1ZXN0KQorICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhbHRoX3BiMi5IZWFsdGhDaGVja1Jlc3BvbnNlLk5PVF9TRVJWSU5HLCByZXNwLnN0YXR1cykKKworICBkZWYgdGVzdF9ub3RfZm91bmRfc2VydmljZShzZWxmKToKKyAgICByZXF1ZXN0ID0gaGVhbHRoX3BiMi5IZWFsdGhDaGVja1JlcXVlc3QoCisgICAgICAgIHNlcnZpY2U9J25vdC1mb3VuZCcpCisgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhncnBjLlJwY0Vycm9yKSBhcyBjb250ZXh0OgorICAgICAgcmVzcCA9IHNlbGYuX3N0dWIuQ2hlY2socmVxdWVzdCkKKyAgCisgICAgc2VsZi5hc3NlcnRFcXVhbChncnBjLlN0YXR1c0NvZGUuTk9UX0ZPVU5ELCBjb250ZXh0LmV4Y2VwdGlvbi5jb2RlKCkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvX3Rlc3RzL3Rlc3RzL3VuaXQvZnJhbWV3b3JrL2ludGVyZmFjZXMvZmFjZS9fZnV0dXJlX2ludm9jYXRpb25fYXN5bmNocm9ub3VzX2V2ZW50X3NlcnZpY2UucHkgYi9zcmMvcHl0aG9uL2dycGNpb190ZXN0cy90ZXN0cy91bml0L2ZyYW1ld29yay9pbnRlcmZhY2VzL2ZhY2UvX2Z1dHVyZV9pbnZvY2F0aW9uX2FzeW5jaHJvbm91c19ldmVudF9zZXJ2aWNlLnB5CmluZGV4IGQzMjIwOGYuLmRmNjIwYjEgMTAwNjQ0Ci0tLSBhL3NyYy9weXRob24vZ3JwY2lvX3Rlc3RzL3Rlc3RzL3VuaXQvZnJhbWV3b3JrL2ludGVyZmFjZXMvZmFjZS9fZnV0dXJlX2ludm9jYXRpb25fYXN5bmNocm9ub3VzX2V2ZW50X3NlcnZpY2UucHkKKysrIGIvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvdGVzdHMvdW5pdC9mcmFtZXdvcmsvaW50ZXJmYWNlcy9mYWNlL19mdXR1cmVfaW52b2NhdGlvbl9hc3luY2hyb25vdXNfZXZlbnRfc2VydmljZS5weQpAQCAtNDM0LDExICs0MzQsMTMgQEAKICAgICAgIGZvciB0ZXN0X21lc3NhZ2VzIGluIHRlc3RfbWVzc2FnZXNfc2VxdWVuY2U6CiAgICAgICAgIHJlcXVlc3QgPSB0ZXN0X21lc3NhZ2VzLnJlcXVlc3QoKQogICAgICAgICBjYWxsYmFjayA9IF9DYWxsYmFjaygpCisgICAgICAgIGFib3J0aW9uX2NhbGxiYWNrID0gX0NhbGxiYWNrKCkKIAogICAgICAgICB3aXRoIHNlbGYuX2NvbnRyb2wuZmFpbCgpOgogICAgICAgICAgIHJlc3BvbnNlX2Z1dHVyZSA9IHNlbGYuX2ludm9rZXIuZnV0dXJlKGdyb3VwLCBtZXRob2QpKAogICAgICAgICAgICAgICByZXF1ZXN0LCBfMzA2OV90ZXN0X2NvbnN0YW50LlJFQUxMWV9TSE9SVF9USU1FT1VUKQogICAgICAgICAgIHJlc3BvbnNlX2Z1dHVyZS5hZGRfZG9uZV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgICByZXNwb25zZV9mdXR1cmUuYWRkX2Fib3J0aW9uX2NhbGxiYWNrKGFib3J0aW9uX2NhbGxiYWNrKQogCiAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjYWxsYmFjay5mdXR1cmUoKSwgcmVzcG9uc2VfZnV0dXJlKQogICAgICAgICAgICMgQmVjYXVzZSB0aGUgc2VydmljZXIgZmFpbHMgb3V0c2lkZSBvZiB0aGUgdGhyZWFkIGZyb20gd2hpY2ggdGhlCkBAIC00NTAsNiArNDUyLDcgQEAKICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGZhY2UuRXhwaXJhdGlvbkVycm9yKToKICAgICAgICAgICAgIHJlc3BvbnNlX2Z1dHVyZS5yZXN1bHQoKQogICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlc3BvbnNlX2Z1dHVyZS50cmFjZWJhY2soKSkKKyAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShhYm9ydGlvbl9jYWxsYmFjay5mdXR1cmUoKSkKIAogICBkZWYgdGVzdEZhaWxlZFVuYXJ5UmVxdWVzdFN0cmVhbVJlc3BvbnNlKHNlbGYpOgogICAgIGZvciAoZ3JvdXAsIG1ldGhvZCksIHRlc3RfbWVzc2FnZXNfc2VxdWVuY2UgaW4gKApAQCAtNDcyLDExICs0NzUsMTMgQEAKICAgICAgIGZvciB0ZXN0X21lc3NhZ2VzIGluIHRlc3RfbWVzc2FnZXNfc2VxdWVuY2U6CiAgICAgICAgIHJlcXVlc3RzID0gdGVzdF9tZXNzYWdlcy5yZXF1ZXN0cygpCiAgICAgICAgIGNhbGxiYWNrID0gX0NhbGxiYWNrKCkKKyAgICAgICAgYWJvcnRpb25fY2FsbGJhY2sgPSBfQ2FsbGJhY2soKQogCiAgICAgICAgIHdpdGggc2VsZi5fY29udHJvbC5mYWlsKCk6CiAgICAgICAgICAgcmVzcG9uc2VfZnV0dXJlID0gc2VsZi5faW52b2tlci5mdXR1cmUoZ3JvdXAsIG1ldGhvZCkoCiAgICAgICAgICAgICAgIGl0ZXIocmVxdWVzdHMpLCBfMzA2OV90ZXN0X2NvbnN0YW50LlJFQUxMWV9TSE9SVF9USU1FT1VUKQogICAgICAgICAgIHJlc3BvbnNlX2Z1dHVyZS5hZGRfZG9uZV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgICByZXNwb25zZV9mdXR1cmUuYWRkX2Fib3J0aW9uX2NhbGxiYWNrKGFib3J0aW9uX2NhbGxiYWNrKQogCiAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjYWxsYmFjay5mdXR1cmUoKSwgcmVzcG9uc2VfZnV0dXJlKQogICAgICAgICAgICMgQmVjYXVzZSB0aGUgc2VydmljZXIgZmFpbHMgb3V0c2lkZSBvZiB0aGUgdGhyZWFkIGZyb20gd2hpY2ggdGhlCkBAIC00ODgsNiArNDkzLDcgQEAKICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGZhY2UuRXhwaXJhdGlvbkVycm9yKToKICAgICAgICAgICAgIHJlc3BvbnNlX2Z1dHVyZS5yZXN1bHQoKQogICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlc3BvbnNlX2Z1dHVyZS50cmFjZWJhY2soKSkKKyAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShhYm9ydGlvbl9jYWxsYmFjay5mdXR1cmUoKSkKIAogICBkZWYgdGVzdEZhaWxlZFN0cmVhbVJlcXVlc3RTdHJlYW1SZXNwb25zZShzZWxmKToKICAgICBmb3IgKGdyb3VwLCBtZXRob2QpLCB0ZXN0X21lc3NhZ2VzX3NlcXVlbmNlIGluICgKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5Ly5ydWJvY29wLnltbCBiL3NyYy9ydWJ5Ly5ydWJvY29wLnltbAppbmRleCAzNGJiNDc3Li4wZjYxY2NmIDEwMDY0NAotLS0gYS9zcmMvcnVieS8ucnVib2NvcC55bWwKKysrIGIvc3JjL3J1YnkvLnJ1Ym9jb3AueW1sCkBAIC01LDggKzUsOCBAQAogQWxsQ29wczoKICAgRXhjbHVkZToKICAgICAtICdiaW4vYXBpcy8qKi8qJwotICAgIC0gJ2Jpbi9tYXRoLnJiJwotICAgIC0gJ2Jpbi9tYXRoX3NlcnZpY2VzLnJiJworICAgIC0gJ2Jpbi9tYXRoX3BiLnJiJworICAgIC0gJ2Jpbi9tYXRoX3NlcnZpY2VzX3BiLnJiJwogICAgIC0gJ3BiL2dycGMvaGVhbHRoL3YxLyonCiAgICAgLSAncGIvdGVzdC8qKi8qJwogCmRpZmYgLS1naXQgYS9zcmMvcnVieS9iaW4vbWF0aF9jbGllbnQucmIgYi9zcmMvcnVieS9iaW4vbWF0aF9jbGllbnQucmIKaW5kZXggZDdlMDBlNC4uMWYyMzhhNyAxMDA3NTUKLS0tIGEvc3JjL3J1YnkvYmluL21hdGhfY2xpZW50LnJiCisrKyBiL3NyYy9ydWJ5L2Jpbi9tYXRoX2NsaWVudC5yYgpAQCAtNDAsNyArNDAsNyBAQAogJExPQURfUEFUSC51bnNoaWZ0KHRoaXNfZGlyKSB1bmxlc3MgJExPQURfUEFUSC5pbmNsdWRlPyh0aGlzX2RpcikKIAogcmVxdWlyZSAnZ3JwYycKLXJlcXVpcmUgJ21hdGhfc2VydmljZXMnCityZXF1aXJlICdtYXRoX3NlcnZpY2VzX3BiJwogcmVxdWlyZSAnb3B0cGFyc2UnCiAKIGluY2x1ZGUgR1JQQzo6Q29yZTo6VGltZUNvbnN0cwpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvYmluL21hdGgucmIgYi9zcmMvcnVieS9iaW4vbWF0aF9wYi5yYgpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvcnVieS9iaW4vbWF0aC5yYgpyZW5hbWUgdG8gc3JjL3J1YnkvYmluL21hdGhfcGIucmIKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L2Jpbi9tYXRoX3NlcnZlci5yYiBiL3NyYy9ydWJ5L2Jpbi9tYXRoX3NlcnZlci5yYgppbmRleCAxZWU0YzU2Li43NTFhNmViIDEwMDc1NQotLS0gYS9zcmMvcnVieS9iaW4vbWF0aF9zZXJ2ZXIucmIKKysrIGIvc3JjL3J1YnkvYmluL21hdGhfc2VydmVyLnJiCkBAIC00Miw3ICs0Miw3IEBACiByZXF1aXJlICdmb3J3YXJkYWJsZScKIHJlcXVpcmUgJ2dycGMnCiByZXF1aXJlICdsb2dnZXInCi1yZXF1aXJlICdtYXRoX3NlcnZpY2VzJworcmVxdWlyZSAnbWF0aF9zZXJ2aWNlc19wYicKIHJlcXVpcmUgJ29wdHBhcnNlJwogCiAjIFJ1YnlMb2dnZXIgZGVmaW5lcyBhIGxvZ2dlciBmb3IgZ1JQQyBiYXNlZCBvbiB0aGUgc3RhbmRhcmQgcnVieSBsb2dnZXIuCmRpZmYgLS1naXQgYS9zcmMvcnVieS9iaW4vbWF0aF9zZXJ2aWNlcy5yYiBiL3NyYy9ydWJ5L2Jpbi9tYXRoX3NlcnZpY2VzX3BiLnJiCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gc3JjL3J1YnkvYmluL21hdGhfc2VydmljZXMucmIKcmVuYW1lIHRvIHNyYy9ydWJ5L2Jpbi9tYXRoX3NlcnZpY2VzX3BiLnJiCmluZGV4IDJiOTc2MDIuLjJiYTE4MjUKLS0tIGEvc3JjL3J1YnkvYmluL21hdGhfc2VydmljZXMucmIKKysrIGIvc3JjL3J1YnkvYmluL21hdGhfc2VydmljZXNfcGIucmIKQEAgLTMyLDcgKzMyLDcgQEAKICMKIAogcmVxdWlyZSAnZ3JwYycKLXJlcXVpcmUgJ21hdGgnCityZXF1aXJlICdtYXRoX3BiJwogCiBtb2R1bGUgTWF0aAogICBtb2R1bGUgTWF0aApkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvZXh0L2dycGMvcmJfY2hhbm5lbC5jIGIvc3JjL3J1YnkvZXh0L2dycGMvcmJfY2hhbm5lbC5jCmluZGV4IDE4YTE1ZDAuLmU2ZDMwYTEgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L2V4dC9ncnBjL3JiX2NoYW5uZWwuYworKysgYi9zcmMvcnVieS9leHQvZ3JwYy9yYl9jaGFubmVsLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxncnBjL2dycGNfc2VjdXJpdHkuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RpbWUuaD4KICNpbmNsdWRlICJyYl9ncnBjLmgiCiAjaW5jbHVkZSAicmJfY2FsbC5oIgogI2luY2x1ZGUgInJiX2NoYW5uZWxfYXJncy5oIgpAQCAtNzEsNiArNzIsNyBAQAogCiAgIC8qIFRoZSBhY3R1YWwgY2hhbm5lbCAqLwogICBncnBjX2NoYW5uZWwgKndyYXBwZWQ7CisgIGdycGNfY29tcGxldGlvbl9xdWV1ZSAqcXVldWU7CiB9IGdycGNfcmJfY2hhbm5lbDsKIAogLyogRGVzdHJveXMgQ2hhbm5lbCBpbnN0YW5jZXMuICovCkBAIC04Myw2ICs4NSw3IEBACiAKICAgaWYgKGNoLT53cmFwcGVkICE9IE5VTEwpIHsKICAgICBncnBjX2NoYW5uZWxfZGVzdHJveShjaC0+d3JhcHBlZCk7CisgICAgZ3JwY19yYl9jb21wbGV0aW9uX3F1ZXVlX2Rlc3Ryb3koY2gtPnF1ZXVlKTsKICAgfQogCiAgIHhmcmVlKHApOwpAQCAtMTY1LDYgKzE2OCw3IEBACiAgIH0KICAgcmJfaXZhcl9zZXQoc2VsZiwgaWRfdGFyZ2V0LCB0YXJnZXQpOwogICB3cmFwcGVyLT53cmFwcGVkID0gY2g7CisgIHdyYXBwZXItPnF1ZXVlID0gZ3JwY19jb21wbGV0aW9uX3F1ZXVlX2NyZWF0ZShOVUxMKTsKICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTIwMywxNiArMjA3LDE4IEBACiAgICB0aGUgY29tcGxldGlvbiBxdWV1ZSB3aXRoIHN1Y2Nlc3M9MCAqLwogc3RhdGljIFZBTFVFIGdycGNfcmJfY2hhbm5lbF93YXRjaF9jb25uZWN0aXZpdHlfc3RhdGUoVkFMVUUgc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBTFVFIGxhc3Rfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUxVRSBjcXVldWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUxVRSBkZWFkbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBTFVFIHRhZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMVUUgZGVhZGxpbmUpIHsKICAgZ3JwY19yYl9jaGFubmVsICp3cmFwcGVyID0gTlVMTDsKICAgZ3JwY19jaGFubmVsICpjaCA9IE5VTEw7CiAgIGdycGNfY29tcGxldGlvbl9xdWV1ZSAqY3EgPSBOVUxMOwogCi0gIGNxID0gZ3JwY19yYl9nZXRfd3JhcHBlZF9jb21wbGV0aW9uX3F1ZXVlKGNxdWV1ZSk7CisgIHZvaWQgKnRhZyA9IHdyYXBwZXI7CisKKyAgZ3JwY19ldmVudCBldmVudDsKKwogICBUeXBlZERhdGFfR2V0X1N0cnVjdChzZWxmLCBncnBjX3JiX2NoYW5uZWwsICZncnBjX2NoYW5uZWxfZGF0YV90eXBlLCB3cmFwcGVyKTsKICAgY2ggPSB3cmFwcGVyLT53cmFwcGVkOworICBjcSA9IHdyYXBwZXItPnF1ZXVlOwogICBpZiAoY2ggPT0gTlVMTCkgewogICAgIHJiX3JhaXNlKHJiX2VSdW50aW1lRXJyb3IsICJjbG9zZWQhIik7CiAgICAgcmV0dXJuIFFuaWw7CkBAIC0yMjIsOSArMjI4LDE2IEBACiAgICAgICAoZ3JwY19jb25uZWN0aXZpdHlfc3RhdGUpTlVNMkxPTkcobGFzdF9zdGF0ZSksCiAgICAgICBncnBjX3JiX3RpbWVfdGltZXZhbChkZWFkbGluZSwgLyogYWJzb2x1dGUgdGltZSAqLyAwKSwKICAgICAgIGNxLAotICAgICAgUk9CSkVDVCh0YWcpKTsKKyAgICAgIHRhZyk7CiAKLSAgcmV0dXJuIFFuaWw7CisgIGV2ZW50ID0gcmJfY29tcGxldGlvbl9xdWV1ZV9wbHVjayhjcSwgdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX2luZl9mdXR1cmUoR1BSX0NMT0NLX1JFQUxUSU1FKSwgTlVMTCk7CisKKyAgaWYgKGV2ZW50LnN1Y2Nlc3MpIHsKKyAgICByZXR1cm4gUXRydWU7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIFFmYWxzZTsKKyAgfQogfQogCiAvKiBDcmVhdGUgYSBjYWxsIGdpdmVuIGEgZ3JwY19jaGFubmVsLCBpbiBvcmRlciB0byBjYWxsIG1ldGhvZC4gVGhlIHJlcXVlc3QKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L2V4dC9ncnBjL3JiX2NvbXBsZXRpb25fcXVldWUuaCBiL3NyYy9ydWJ5L2V4dC9ncnBjL3JiX2NvbXBsZXRpb25fcXVldWUuaAppbmRleCA5ZjhmNmFhLi5hYTlkYzY0IDEwMDY0NAotLS0gYS9zcmMvcnVieS9leHQvZ3JwYy9yYl9jb21wbGV0aW9uX3F1ZXVlLmgKKysrIGIvc3JjL3J1YnkvZXh0L2dycGMvcmJfY29tcGxldGlvbl9xdWV1ZS5oCkBAIC0zOCw5ICszOCw2IEBACiAKICNpbmNsdWRlIDxncnBjL2dycGMuaD4KIAotLyogR2V0cyB0aGUgd3JhcHBlZCBjb21wbGV0aW9uIHF1ZXVlIGZyb20gdGhlIHJ1Ynkgd3JhcHBlciAqLwotZ3JwY19jb21wbGV0aW9uX3F1ZXVlICpncnBjX3JiX2dldF93cmFwcGVkX2NvbXBsZXRpb25fcXVldWUoVkFMVUUgdik7Ci0KIHZvaWQgZ3JwY19yYl9jb21wbGV0aW9uX3F1ZXVlX2Rlc3Ryb3koZ3JwY19jb21wbGV0aW9uX3F1ZXVlICpjcSk7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvZXh0L2dycGMvcmJfZ3JwY19pbXBvcnRzLmdlbmVyYXRlZC5jIGIvc3JjL3J1YnkvZXh0L2dycGMvcmJfZ3JwY19pbXBvcnRzLmdlbmVyYXRlZC5jCmluZGV4IGQ3Zjg2MmMuLmFlZTU3YjEgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L2V4dC9ncnBjL3JiX2dycGNfaW1wb3J0cy5nZW5lcmF0ZWQuYworKysgYi9zcmMvcnVieS9leHQvZ3JwYy9yYl9ncnBjX2ltcG9ydHMuZ2VuZXJhdGVkLmMKQEAgLTYxLDE1ICs2MSwxMCBAQAogY2Vuc3VzX3RyYWNlX3NjYW5fc3RhcnRfdHlwZSBjZW5zdXNfdHJhY2Vfc2Nhbl9zdGFydF9pbXBvcnQ7CiBjZW5zdXNfZ2V0X3RyYWNlX3JlY29yZF90eXBlIGNlbnN1c19nZXRfdHJhY2VfcmVjb3JkX2ltcG9ydDsKIGNlbnN1c190cmFjZV9zY2FuX2VuZF90eXBlIGNlbnN1c190cmFjZV9zY2FuX2VuZF9pbXBvcnQ7CitjZW5zdXNfZGVmaW5lX3Jlc291cmNlX3R5cGUgY2Vuc3VzX2RlZmluZV9yZXNvdXJjZV9pbXBvcnQ7CitjZW5zdXNfZGVsZXRlX3Jlc291cmNlX3R5cGUgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZV9pbXBvcnQ7CitjZW5zdXNfcmVzb3VyY2VfaWRfdHlwZSBjZW5zdXNfcmVzb3VyY2VfaWRfaW1wb3J0OwogY2Vuc3VzX3JlY29yZF92YWx1ZXNfdHlwZSBjZW5zdXNfcmVjb3JkX3ZhbHVlc19pbXBvcnQ7Ci1jZW5zdXNfdmlld19jcmVhdGVfdHlwZSBjZW5zdXNfdmlld19jcmVhdGVfaW1wb3J0OwotY2Vuc3VzX3ZpZXdfZGVsZXRlX3R5cGUgY2Vuc3VzX3ZpZXdfZGVsZXRlX2ltcG9ydDsKLWNlbnN1c192aWV3X21ldHJpY190eXBlIGNlbnN1c192aWV3X21ldHJpY19pbXBvcnQ7Ci1jZW5zdXNfdmlld19uYWdncmVnYXRpb25zX3R5cGUgY2Vuc3VzX3ZpZXdfbmFnZ3JlZ2F0aW9uc19pbXBvcnQ7Ci1jZW5zdXNfdmlld190YWdzX3R5cGUgY2Vuc3VzX3ZpZXdfdGFnc19pbXBvcnQ7Ci1jZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zX3R5cGUgY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9uc19pbXBvcnQ7Ci1jZW5zdXNfdmlld19nZXRfZGF0YV90eXBlIGNlbnN1c192aWV3X2dldF9kYXRhX2ltcG9ydDsKLWNlbnN1c192aWV3X3Jlc2V0X3R5cGUgY2Vuc3VzX3ZpZXdfcmVzZXRfaW1wb3J0OwogZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fcGFyc2VfdHlwZSBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZV9pbXBvcnQ7CiBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9uYW1lX3R5cGUgZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fbmFtZV9pbXBvcnQ7CiBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9mb3JfbGV2ZWxfdHlwZSBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9mb3JfbGV2ZWxfaW1wb3J0OwpAQCAtMzM0LDE1ICszMjksMTAgQEAKICAgY2Vuc3VzX3RyYWNlX3NjYW5fc3RhcnRfaW1wb3J0ID0gKGNlbnN1c190cmFjZV9zY2FuX3N0YXJ0X3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfdHJhY2Vfc2Nhbl9zdGFydCIpOwogICBjZW5zdXNfZ2V0X3RyYWNlX3JlY29yZF9pbXBvcnQgPSAoY2Vuc3VzX2dldF90cmFjZV9yZWNvcmRfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c19nZXRfdHJhY2VfcmVjb3JkIik7CiAgIGNlbnN1c190cmFjZV9zY2FuX2VuZF9pbXBvcnQgPSAoY2Vuc3VzX3RyYWNlX3NjYW5fZW5kX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfdHJhY2Vfc2Nhbl9lbmQiKTsKKyAgY2Vuc3VzX2RlZmluZV9yZXNvdXJjZV9pbXBvcnQgPSAoY2Vuc3VzX2RlZmluZV9yZXNvdXJjZV90eXBlKSBHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiY2Vuc3VzX2RlZmluZV9yZXNvdXJjZSIpOworICBjZW5zdXNfZGVsZXRlX3Jlc291cmNlX2ltcG9ydCA9IChjZW5zdXNfZGVsZXRlX3Jlc291cmNlX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfZGVsZXRlX3Jlc291cmNlIik7CisgIGNlbnN1c19yZXNvdXJjZV9pZF9pbXBvcnQgPSAoY2Vuc3VzX3Jlc291cmNlX2lkX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfcmVzb3VyY2VfaWQiKTsKICAgY2Vuc3VzX3JlY29yZF92YWx1ZXNfaW1wb3J0ID0gKGNlbnN1c19yZWNvcmRfdmFsdWVzX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfcmVjb3JkX3ZhbHVlcyIpOwotICBjZW5zdXNfdmlld19jcmVhdGVfaW1wb3J0ID0gKGNlbnN1c192aWV3X2NyZWF0ZV90eXBlKSBHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiY2Vuc3VzX3ZpZXdfY3JlYXRlIik7Ci0gIGNlbnN1c192aWV3X2RlbGV0ZV9pbXBvcnQgPSAoY2Vuc3VzX3ZpZXdfZGVsZXRlX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfdmlld19kZWxldGUiKTsKLSAgY2Vuc3VzX3ZpZXdfbWV0cmljX2ltcG9ydCA9IChjZW5zdXNfdmlld19tZXRyaWNfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c192aWV3X21ldHJpYyIpOwotICBjZW5zdXNfdmlld19uYWdncmVnYXRpb25zX2ltcG9ydCA9IChjZW5zdXNfdmlld19uYWdncmVnYXRpb25zX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJjZW5zdXNfdmlld19uYWdncmVnYXRpb25zIik7Ci0gIGNlbnN1c192aWV3X3RhZ3NfaW1wb3J0ID0gKGNlbnN1c192aWV3X3RhZ3NfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c192aWV3X3RhZ3MiKTsKLSAgY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9uc19pbXBvcnQgPSAoY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9uc190eXBlKSBHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9ucyIpOwotICBjZW5zdXNfdmlld19nZXRfZGF0YV9pbXBvcnQgPSAoY2Vuc3VzX3ZpZXdfZ2V0X2RhdGFfdHlwZSkgR2V0UHJvY0FkZHJlc3MobGlicmFyeSwgImNlbnN1c192aWV3X2dldF9kYXRhIik7Ci0gIGNlbnN1c192aWV3X3Jlc2V0X2ltcG9ydCA9IChjZW5zdXNfdmlld19yZXNldF90eXBlKSBHZXRQcm9jQWRkcmVzcyhsaWJyYXJ5LCAiY2Vuc3VzX3ZpZXdfcmVzZXQiKTsKICAgZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fcGFyc2VfaW1wb3J0ID0gKGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX3BhcnNlX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZSIpOwogICBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9uYW1lX2ltcG9ydCA9IChncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9uYW1lX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9uYW1lIik7CiAgIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX2Zvcl9sZXZlbF9pbXBvcnQgPSAoZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fZm9yX2xldmVsX3R5cGUpIEdldFByb2NBZGRyZXNzKGxpYnJhcnksICJncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9mb3JfbGV2ZWwiKTsKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L2V4dC9ncnBjL3JiX2dycGNfaW1wb3J0cy5nZW5lcmF0ZWQuaCBiL3NyYy9ydWJ5L2V4dC9ncnBjL3JiX2dycGNfaW1wb3J0cy5nZW5lcmF0ZWQuaAppbmRleCAxNGRhNjM3Li4zYmI3NmZiIDEwMDY0NAotLS0gYS9zcmMvcnVieS9leHQvZ3JwYy9yYl9ncnBjX2ltcG9ydHMuZ2VuZXJhdGVkLmgKKysrIGIvc3JjL3J1YnkvZXh0L2dycGMvcmJfZ3JwY19pbXBvcnRzLmdlbmVyYXRlZC5oCkBAIC0xMzQsMzMgKzEzNCwxOCBAQAogdHlwZWRlZiB2b2lkKCpjZW5zdXNfdHJhY2Vfc2Nhbl9lbmRfdHlwZSkoKTsKIGV4dGVybiBjZW5zdXNfdHJhY2Vfc2Nhbl9lbmRfdHlwZSBjZW5zdXNfdHJhY2Vfc2Nhbl9lbmRfaW1wb3J0OwogI2RlZmluZSBjZW5zdXNfdHJhY2Vfc2Nhbl9lbmQgY2Vuc3VzX3RyYWNlX3NjYW5fZW5kX2ltcG9ydAordHlwZWRlZiBpbnQzMl90KCpjZW5zdXNfZGVmaW5lX3Jlc291cmNlX3R5cGUpKGNvbnN0IHVpbnQ4X3QgKnJlc291cmNlX3BiLCBzaXplX3QgcmVzb3VyY2VfcGJfc2l6ZSk7CitleHRlcm4gY2Vuc3VzX2RlZmluZV9yZXNvdXJjZV90eXBlIGNlbnN1c19kZWZpbmVfcmVzb3VyY2VfaW1wb3J0OworI2RlZmluZSBjZW5zdXNfZGVmaW5lX3Jlc291cmNlIGNlbnN1c19kZWZpbmVfcmVzb3VyY2VfaW1wb3J0Cit0eXBlZGVmIHZvaWQoKmNlbnN1c19kZWxldGVfcmVzb3VyY2VfdHlwZSkoaW50MzJfdCByZXNvdXJjZV9pZCk7CitleHRlcm4gY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZV90eXBlIGNlbnN1c19kZWxldGVfcmVzb3VyY2VfaW1wb3J0OworI2RlZmluZSBjZW5zdXNfZGVsZXRlX3Jlc291cmNlIGNlbnN1c19kZWxldGVfcmVzb3VyY2VfaW1wb3J0Cit0eXBlZGVmIGludDMyX3QoKmNlbnN1c19yZXNvdXJjZV9pZF90eXBlKShjb25zdCBjaGFyICpuYW1lKTsKK2V4dGVybiBjZW5zdXNfcmVzb3VyY2VfaWRfdHlwZSBjZW5zdXNfcmVzb3VyY2VfaWRfaW1wb3J0OworI2RlZmluZSBjZW5zdXNfcmVzb3VyY2VfaWQgY2Vuc3VzX3Jlc291cmNlX2lkX2ltcG9ydAogdHlwZWRlZiB2b2lkKCpjZW5zdXNfcmVjb3JkX3ZhbHVlc190eXBlKShjZW5zdXNfY29udGV4dCAqY29udGV4dCwgY2Vuc3VzX3ZhbHVlICp2YWx1ZXMsIHNpemVfdCBudmFsdWVzKTsKIGV4dGVybiBjZW5zdXNfcmVjb3JkX3ZhbHVlc190eXBlIGNlbnN1c19yZWNvcmRfdmFsdWVzX2ltcG9ydDsKICNkZWZpbmUgY2Vuc3VzX3JlY29yZF92YWx1ZXMgY2Vuc3VzX3JlY29yZF92YWx1ZXNfaW1wb3J0Ci10eXBlZGVmIGNlbnN1c192aWV3ICooKmNlbnN1c192aWV3X2NyZWF0ZV90eXBlKSh1aW50MzJfdCBtZXRyaWNfaWQsIGNvbnN0IGNlbnN1c19jb250ZXh0ICp0YWdzLCBjb25zdCBjZW5zdXNfYWdncmVnYXRpb24gKmFnZ3JlZ2F0aW9ucywgc2l6ZV90IG5hZ2dyZWdhdGlvbnMpOwotZXh0ZXJuIGNlbnN1c192aWV3X2NyZWF0ZV90eXBlIGNlbnN1c192aWV3X2NyZWF0ZV9pbXBvcnQ7Ci0jZGVmaW5lIGNlbnN1c192aWV3X2NyZWF0ZSBjZW5zdXNfdmlld19jcmVhdGVfaW1wb3J0Ci10eXBlZGVmIHZvaWQoKmNlbnN1c192aWV3X2RlbGV0ZV90eXBlKShjZW5zdXNfdmlldyAqdmlldyk7Ci1leHRlcm4gY2Vuc3VzX3ZpZXdfZGVsZXRlX3R5cGUgY2Vuc3VzX3ZpZXdfZGVsZXRlX2ltcG9ydDsKLSNkZWZpbmUgY2Vuc3VzX3ZpZXdfZGVsZXRlIGNlbnN1c192aWV3X2RlbGV0ZV9pbXBvcnQKLXR5cGVkZWYgc2l6ZV90KCpjZW5zdXNfdmlld19tZXRyaWNfdHlwZSkoY29uc3QgY2Vuc3VzX3ZpZXcgKnZpZXcpOwotZXh0ZXJuIGNlbnN1c192aWV3X21ldHJpY190eXBlIGNlbnN1c192aWV3X21ldHJpY19pbXBvcnQ7Ci0jZGVmaW5lIGNlbnN1c192aWV3X21ldHJpYyBjZW5zdXNfdmlld19tZXRyaWNfaW1wb3J0Ci10eXBlZGVmIHNpemVfdCgqY2Vuc3VzX3ZpZXdfbmFnZ3JlZ2F0aW9uc190eXBlKShjb25zdCBjZW5zdXNfdmlldyAqdmlldyk7Ci1leHRlcm4gY2Vuc3VzX3ZpZXdfbmFnZ3JlZ2F0aW9uc190eXBlIGNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnNfaW1wb3J0OwotI2RlZmluZSBjZW5zdXNfdmlld19uYWdncmVnYXRpb25zIGNlbnN1c192aWV3X25hZ2dyZWdhdGlvbnNfaW1wb3J0Ci10eXBlZGVmIGNvbnN0IGNlbnN1c19jb250ZXh0ICooKmNlbnN1c192aWV3X3RhZ3NfdHlwZSkoY29uc3QgY2Vuc3VzX3ZpZXcgKnZpZXcpOwotZXh0ZXJuIGNlbnN1c192aWV3X3RhZ3NfdHlwZSBjZW5zdXNfdmlld190YWdzX2ltcG9ydDsKLSNkZWZpbmUgY2Vuc3VzX3ZpZXdfdGFncyBjZW5zdXNfdmlld190YWdzX2ltcG9ydAotdHlwZWRlZiBjb25zdCBjZW5zdXNfYWdncmVnYXRpb24gKigqY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9uc190eXBlKShjb25zdCBjZW5zdXNfdmlldyAqdmlldyk7Ci1leHRlcm4gY2Vuc3VzX3ZpZXdfYWdncmVncmF0aW9uc190eXBlIGNlbnN1c192aWV3X2FnZ3JlZ3JhdGlvbnNfaW1wb3J0OwotI2RlZmluZSBjZW5zdXNfdmlld19hZ2dyZWdyYXRpb25zIGNlbnN1c192aWV3X2FnZ3JlZ3JhdGlvbnNfaW1wb3J0Ci10eXBlZGVmIGNvbnN0IGNlbnN1c192aWV3X2RhdGEgKigqY2Vuc3VzX3ZpZXdfZ2V0X2RhdGFfdHlwZSkoY29uc3QgY2Vuc3VzX3ZpZXcgKnZpZXcpOwotZXh0ZXJuIGNlbnN1c192aWV3X2dldF9kYXRhX3R5cGUgY2Vuc3VzX3ZpZXdfZ2V0X2RhdGFfaW1wb3J0OwotI2RlZmluZSBjZW5zdXNfdmlld19nZXRfZGF0YSBjZW5zdXNfdmlld19nZXRfZGF0YV9pbXBvcnQKLXR5cGVkZWYgdm9pZCgqY2Vuc3VzX3ZpZXdfcmVzZXRfdHlwZSkoY2Vuc3VzX3ZpZXcgKnZpZXcpOwotZXh0ZXJuIGNlbnN1c192aWV3X3Jlc2V0X3R5cGUgY2Vuc3VzX3ZpZXdfcmVzZXRfaW1wb3J0OwotI2RlZmluZSBjZW5zdXNfdmlld19yZXNldCBjZW5zdXNfdmlld19yZXNldF9pbXBvcnQKIHR5cGVkZWYgaW50KCpncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZV90eXBlKShjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtICphbGdvcml0aG0pOwogZXh0ZXJuIGdycGNfY29tcHJlc3Npb25fYWxnb3JpdGhtX3BhcnNlX3R5cGUgZ3JwY19jb21wcmVzc2lvbl9hbGdvcml0aG1fcGFyc2VfaW1wb3J0OwogI2RlZmluZSBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZSBncnBjX2NvbXByZXNzaW9uX2FsZ29yaXRobV9wYXJzZV9pbXBvcnQKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L2xpYi9ncnBjL2dlbmVyaWMvYmlkaV9jYWxsLnJiIGIvc3JjL3J1YnkvbGliL2dycGMvZ2VuZXJpYy9iaWRpX2NhbGwucmIKaW5kZXggNDI1ZGMzZS4uYzJhYzNjNCAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvbGliL2dycGMvZ2VuZXJpYy9iaWRpX2NhbGwucmIKKysrIGIvc3JjL3J1YnkvbGliL2dycGMvZ2VuZXJpYy9iaWRpX2NhbGwucmIKQEAgLTc2LDcgKzc2LDcgQEAKICAgICAjIGJsb2NrIHRoYXQgY2FuIGJlIGludm9rZWQgd2l0aCBlYWNoIHJlc3BvbnNlLgogICAgICMKICAgICAjIEBwYXJhbSByZXF1ZXN0cyB0aGUgRW51bWVyYWJsZSBvZiByZXF1ZXN0cyB0byBzZW5kCi0gICAgIyBAb3Bfbm90aWZpZXIgYSBOb3RpZmllciB1c2VkIHRvIHNpZ25hbCBjb21wbGV0aW9uCisgICAgIyBAcGFyYW0gb3Bfbm90aWZpZXIgYSBOb3RpZmllciB1c2VkIHRvIHNpZ25hbCBjb21wbGV0aW9uCiAgICAgIyBAcmV0dXJuIGFuIEVudW1lcmF0b3Igb2YgcmVxdWVzdHMgdG8geWllbGQKICAgICBkZWYgcnVuX29uX2NsaWVudChyZXF1ZXN0cywgb3Bfbm90aWZpZXIsICZibGspCiAgICAgICBAb3Bfbm90aWZpZXIgPSBvcF9ub3RpZmllcgpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvbGliL2dycGMvZ2VuZXJpYy9jbGllbnRfc3R1Yi5yYiBiL3NyYy9ydWJ5L2xpYi9ncnBjL2dlbmVyaWMvY2xpZW50X3N0dWIucmIKaW5kZXggOWQ2YmQzYi4uMGQ3YzFmNyAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvbGliL2dycGMvZ2VuZXJpYy9jbGllbnRfc3R1Yi5yYgorKysgYi9zcmMvcnVieS9saWIvZ3JwYy9nZW5lcmljL2NsaWVudF9zdHViLnJiCkBAIC0zNCw3ICszNCw4IEBACiBtb2R1bGUgR1JQQwogICAjIHJ1Ym9jb3A6ZGlzYWJsZSBNZXRyaWNzL1BhcmFtZXRlckxpc3RzCiAKLSAgIyBDbGllbnRTdHViIHJlcHJlc2VudHMgYW4gZW5kcG9pbnQgdXNlZCB0byBzZW5kIHJlcXVlc3RzIHRvIEdSUEMgc2VydmVycy4KKyAgIyBDbGllbnRTdHViIHJlcHJlc2VudHMgYSBjbGllbnQgY29ubmVjdGlvbiB0byBhIGdSUEMgc2VydmVyLCBhbmQgY2FuIGJlIHVzZWQKKyAgIyB0byBzZW5kIHJlcXVlc3RzLgogICBjbGFzcyBDbGllbnRTdHViCiAgICAgaW5jbHVkZSBDb3JlOjpTdGF0dXNDb2RlcwogICAgIGluY2x1ZGUgQ29yZTo6VGltZUNvbnN0cwpAQCAtNzUsOCArNzYsOSBAQAogICAgICMgbXlfc3R1YiA9IENsaWVudFN0dWIubmV3KGV4YW1wbGUuaG9zdC5jb206NTA1MDUsCiAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgOnRoaXNfY2hhbm5lbF9pc19pbnNlY3VyZSkKICAgICAjCi0gICAgIyBBbnkgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIGFyZSB0cmVhdGVkIGFzIGNoYW5uZWwgYXJndW1lbnRzIHVzZWQgdG8KLSAgICAjIGNvbmZpZ3VyZSB0aGUgUlBDIGNvbm5lY3Rpb24gdG8gdGhlIGhvc3QuCisgICAgIyBJZiBhIGNoYW5uZWxfb3ZlcnJpZGUgYXJndW1lbnQgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlCisgICAgIyB1bmRlcmx5aW5nIGNoYW5uZWwuIE90aGVyd2lzZSwgdGhlIGNoYW5uZWxfYXJncyBhcmd1bWVudCB3aWxsIGJlIHVzZWQKKyAgICAjIHRvIGNvbnN0cnVjdCBhIG5ldyB1bmRlcmx5aW5nIGNoYW5uZWwuCiAgICAgIwogICAgICMgVGhlcmUgYXJlIHNvbWUgc3BlY2lmaWMga2V5d29yZCBhcmdzIHRoYXQgYXJlIG5vdCB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUKICAgICAjIGNoYW5uZWw6CkBAIC05MSwxMCArOTMsMTcgQEAKICAgICAjCiAgICAgIyBAcGFyYW0gaG9zdCBbU3RyaW5nXSB0aGUgaG9zdCB0aGUgc3R1YiBjb25uZWN0cyB0bwogICAgICMgQHBhcmFtIGNyZWRzIFtDb3JlOjpDaGFubmVsQ3JlZGVudGlhbHN8U3ltYm9sXSB0aGUgY2hhbm5lbCBjcmVkZW50aWFscywgb3IKLSAgICAjICAgICA6dGhpc19jaGFubmVsX2lzX2luc2VjdXJlCisgICAgIyAgICAgOnRoaXNfY2hhbm5lbF9pc19pbnNlY3VyZSwgd2hpY2ggZXhwbGljaXRseSBpbmRpY2F0ZXMgdGhhdCB0aGUgY2xpZW50CisgICAgIyAgICAgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCBhbiBpbnNlY3VyZSBjb25uZWN0aW9uLiBOb3RlOiB0aGlzIGFyZ3VtZW50IGlzCisgICAgIyAgICAgaWdub3JlZCBpZiB0aGUgY2hhbm5lbF9vdmVycmlkZSBhcmd1bWVudCBpcyBwcm92aWRlZC4KICAgICAjIEBwYXJhbSBjaGFubmVsX292ZXJyaWRlIFtDb3JlOjpDaGFubmVsXSBhIHByZS1jcmVhdGVkIGNoYW5uZWwKICAgICAjIEBwYXJhbSB0aW1lb3V0IFtOdW1iZXJdIHRoZSBkZWZhdWx0IHRpbWVvdXQgdG8gdXNlIGluIHJlcXVlc3RzCi0gICAgIyBAcGFyYW0gY2hhbm5lbF9hcmdzIFtIYXNoXSB0aGUgY2hhbm5lbCBhcmd1bWVudHMKKyAgICAjIEBwYXJhbSBwcm9wYWdhdGVfbWFzayBbTnVtYmVyXSBBIGJpdHdpc2UgY29tYmluYXRpb24gb2YgZmxhZ3MgaW4KKyAgICAjICAgICBHUlBDOjpDb3JlOjpQcm9wYWdhdGVNYXNrcy4gSW5kaWNhdGVzIGhvdyBkYXRhIHNob3VsZCBiZSBwcm9wYWdhdGVkCisgICAgIyAgICAgZnJvbSBwYXJlbnQgc2VydmVyIGNhbGxzIHRvIGNoaWxkIGNsaWVudCBjYWxscyBpZiB0aGlzIGNsaWVudCBpcyBiZWluZworICAgICMgICAgIHVzZWQgd2l0aGluIGEgZ1JQQyBzZXJ2ZXIuCisgICAgIyBAcGFyYW0gY2hhbm5lbF9hcmdzIFtIYXNoXSB0aGUgY2hhbm5lbCBhcmd1bWVudHMuIE5vdGU6IHRoaXMgYXJndW1lbnQgaXMKKyAgICAjICAgICBpZ25vcmVkIGlmIHRoZSBjaGFubmVsX292ZXJyaWRlIGFyZ3VtZW50IGlzIHByb3ZpZGVkLgogICAgIGRlZiBpbml0aWFsaXplKGhvc3QsIGNyZWRzLAogICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfb3ZlcnJpZGU6IG5pbCwKICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiBuaWwsCkBAIC0zODksMTEgKzM5OCwxMSBAQAogICAgICMgQHBhcmFtIG1hcnNoYWwgW0Z1bmN0aW9uXSBmKG9iaiktPnN0cmluZyB0aGF0IG1hcnNoYWxzIHJlcXVlc3RzCiAgICAgIyBAcGFyYW0gdW5tYXJzaGFsIFtGdW5jdGlvbl0gZihzdHJpbmcpLT5vYmogdGhhdCB1bm1hcnNoYWxzIHJlc3BvbnNlcwogICAgICMgQHBhcmFtIGRlYWRsaW5lIFtUaW1lXSAob3B0aW9uYWwpIHRoZSB0aW1lIHRoZSByZXF1ZXN0IHNob3VsZCBjb21wbGV0ZQorICAgICMgQHBhcmFtIHJldHVybl9vcCBbdHJ1ZXxmYWxzZV0gcmV0dXJuIGFuIE9wZXJhdGlvbiBpZiB0cnVlCiAgICAgIyBAcGFyYW0gcGFyZW50IFtDb3JlOjpDYWxsXSBhIHByaW9yIGNhbGwgd2hvc2UgcmVzZXJ2ZWQgbWV0YWRhdGEKICAgICAjICAgd2lsbCBiZSBwcm9wYWdhdGVkIGJ5IHRoaXMgb25lLgogICAgICMgQHBhcmFtIGNyZWRlbnRpYWxzIFtDb3JlOjpDYWxsQ3JlZGVudGlhbHNdIGNyZWRlbnRpYWxzIHRvIHVzZSB3aGVuIG1ha2luZwogICAgICMgICB0aGUgY2FsbAotICAgICMgQHBhcmFtIHJldHVybl9vcCBbdHJ1ZXxmYWxzZV0gcmV0dXJuIGFuIE9wZXJhdGlvbiBpZiB0cnVlCiAgICAgIyBAcGFyYW0gbWV0YWRhdGEgW0hhc2hdIG1ldGFkYXRhIHRvIGJlIHNlbnQgdG8gdGhlIHNlcnZlcgogICAgICMgQHBhcmFtIGJsayBbQmxvY2tdIHdoZW4gcHJvdmlkZWQsIGlzIGV4ZWN1dGVkIGZvciBlYWNoIHJlc3BvbnNlCiAgICAgIyBAcmV0dXJuIFtFbnVtZXJhdG9yfG5pbHxPcGVyYXRpb25dIGFzIGRpc2N1c3NlZCBhYm92ZQpAQCAtNDMwLDcgKzQzOSw4IEBACiAgICAgIyBAcGFyYW0gdW5tYXJzaGFsIFtGdW5jdGlvbl0gZihzdHJpbmcpLT5vYmogdGhhdCB1bm1hcnNoYWxzIHJlc3BvbnNlcwogICAgICMgQHBhcmFtIHBhcmVudCBbR3JwYzo6Q2FsbF0gYSBwYXJlbnQgY2FsbCwgYXZhaWxhYmxlIHdoZW4gY2FsbHMgYXJlCiAgICAgIyAgIG1hZGUgZnJvbSBzZXJ2ZXIKLSAgICAjIEBwYXJhbSB0aW1lb3V0IFtUaW1lQ29uc3RdCisgICAgIyBAcGFyYW0gY3JlZGVudGlhbHMgW0NvcmU6OkNhbGxDcmVkZW50aWFsc10gY3JlZGVudGlhbHMgdG8gdXNlIHdoZW4gbWFraW5nCisgICAgIyAgIHRoZSBjYWxsCiAgICAgZGVmIG5ld19hY3RpdmVfY2FsbChtZXRob2QsIG1hcnNoYWwsIHVubWFyc2hhbCwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWRsaW5lOiBuaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IG5pbCwKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L2xpYi9ncnBjL2dlbmVyaWMvcnBjX3NlcnZlci5yYiBiL3NyYy9ydWJ5L2xpYi9ncnBjL2dlbmVyaWMvcnBjX3NlcnZlci5yYgppbmRleCBjOTJhNTMyLi43ZWEyMzcxIDEwMDY0NAotLS0gYS9zcmMvcnVieS9saWIvZ3JwYy9nZW5lcmljL3JwY19zZXJ2ZXIucmIKKysrIGIvc3JjL3J1YnkvbGliL2dycGMvZ2VuZXJpYy9ycGNfc2VydmVyLnJiCkBAIC0xNzIsMjIgKzE3MiwxOCBAQAogICAgICMgVGhlIFJQQyBzZXJ2ZXIgaXMgY29uZmlndXJlZCB1c2luZyBrZXl3b3JkIGFyZ3VtZW50cy4KICAgICAjCiAgICAgIyBUaGVyZSBhcmUgc29tZSBzcGVjaWZpYyBrZXl3b3JkIGFyZ3MgdXNlZCB0byBjb25maWd1cmUgdGhlIFJwY1NlcnZlcgotICAgICMgaW5zdGFuY2UsIGhvd2V2ZXIgb3RoZXIgYXJiaXRyYXJ5IGFyZSBhbGxvd2VkIGFuZCB3aGVuIHByZXNlbnQgYXJlIHVzZWQKLSAgICAjIHRvIGNvbmZpZ3VyZSB0aGUgbGlzdGVuaW5uZyBjb25uZWN0aW9uIHNldCB1cCBieSB0aGUgUnBjU2VydmVyLgotICAgICMKLSAgICAjICogcG9sbF9wZXJpb2Q6IHdoZW4gcHJlc2VudCwgdGhlIHNlcnZlciBwb2xscyBmb3IgbmV3IGV2ZW50cyB3aXRoIHRoaXMKLSAgICAjIHBlcmlvZAorICAgICMgaW5zdGFuY2UuCiAgICAgIwogICAgICMgKiBwb29sX3NpemU6IHRoZSBzaXplIG9mIHRoZSB0aHJlYWQgcG9vbCB0aGUgc2VydmVyIHVzZXMgdG8gcnVuIGl0cwogICAgICMgdGhyZWFkcwogICAgICMKLSAgICAjICogY3JlZHM6IFtHUlBDOjpDb3JlOjpTZXJ2ZXJDcmVkZW50aWFsc10KLSAgICAjIHRoZSBjcmVkZW50aWFscyB1c2VkIHRvIHNlY3VyZSB0aGUgc2VydmVyCi0gICAgIwogICAgICMgKiBtYXhfd2FpdGluZ19yZXF1ZXN0czogdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcXVlc3RzIHRoYXQgYXJlIG5vdAogICAgICMgYmVpbmcgaGFuZGxlZCB0byBhbGxvdy4gV2hlbiB0aGlzIGxpbWl0IGlzIGV4Y2VlZGVkLCB0aGUgc2VydmVyIHJlc3BvbmRzCiAgICAgIyB3aXRoIG5vdCBhdmFpbGFibGUgdG8gbmV3IHJlcXVlc3RzCiAgICAgIworICAgICMgKiBwb2xsX3BlcmlvZDogd2hlbiBwcmVzZW50LCB0aGUgc2VydmVyIHBvbGxzIGZvciBuZXcgZXZlbnRzIHdpdGggdGhpcworICAgICMgcGVyaW9kCisgICAgIwogICAgICMgKiBjb25uZWN0X21kX3Byb2M6CiAgICAgIyB3aGVuIG5vbi1uaWwgaXMgYSBwcm9jIGZvciBkZXRlcm1pbmluZyBtZXRhZGF0YSB0byB0byBzZW5kIGJhY2sgdGhlIGNsaWVudAogICAgICMgb24gcmVjZWl2aW5nIGFuIGludm9jYXRpb24gcmVxLiAgVGhlIHByb2Mgc2lnbmF0dXJlIGlzOgpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvcGIvZ3JwYy9oZWFsdGgvY2hlY2tlci5yYiBiL3NyYy9ydWJ5L3BiL2dycGMvaGVhbHRoL2NoZWNrZXIucmIKaW5kZXggZjczMTBkOS4uNGJjZTE3NCAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvcGIvZ3JwYy9oZWFsdGgvY2hlY2tlci5yYgorKysgYi9zcmMvcnVieS9wYi9ncnBjL2hlYWx0aC9jaGVja2VyLnJiCkBAIC0yOCw3ICsyOCw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIHJlcXVpcmUgJ2dycGMnCi1yZXF1aXJlICdncnBjL2hlYWx0aC92MS9oZWFsdGhfc2VydmljZXMnCityZXF1aXJlICdncnBjL2hlYWx0aC92MS9oZWFsdGhfc2VydmljZXNfcGInCiByZXF1aXJlICd0aHJlYWQnCiAKIG1vZHVsZSBHcnBjCmRpZmYgLS1naXQgYS9zcmMvcnVieS9wYi9ncnBjL2hlYWx0aC92MS9oZWFsdGgucmIgYi9zcmMvcnVieS9wYi9ncnBjL2hlYWx0aC92MS9oZWFsdGhfcGIucmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9ydWJ5L3BiL2dycGMvaGVhbHRoL3YxL2hlYWx0aC5yYgpyZW5hbWUgdG8gc3JjL3J1YnkvcGIvZ3JwYy9oZWFsdGgvdjEvaGVhbHRoX3BiLnJiCmRpZmYgLS1naXQgYS9zcmMvcnVieS9wYi9ncnBjL2hlYWx0aC92MS9oZWFsdGhfc2VydmljZXMucmIgYi9zcmMvcnVieS9wYi9ncnBjL2hlYWx0aC92MS9oZWFsdGhfc2VydmljZXNfcGIucmIKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gc3JjL3J1YnkvcGIvZ3JwYy9oZWFsdGgvdjEvaGVhbHRoX3NlcnZpY2VzLnJiCnJlbmFtZSB0byBzcmMvcnVieS9wYi9ncnBjL2hlYWx0aC92MS9oZWFsdGhfc2VydmljZXNfcGIucmIKaW5kZXggNjhhMzk1Ni4uOGNjMDFlOSAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvcGIvZ3JwYy9oZWFsdGgvdjEvaGVhbHRoX3NlcnZpY2VzLnJiCisrKyBiL3NyYy9ydWJ5L3BiL2dycGMvaGVhbHRoL3YxL2hlYWx0aF9zZXJ2aWNlc19wYi5yYgpAQCAtMzIsNyArMzIsNyBAQAogIwogCiByZXF1aXJlICdncnBjJwotcmVxdWlyZSAnZ3JwYy9oZWFsdGgvdjEvaGVhbHRoJworcmVxdWlyZSAnZ3JwYy9oZWFsdGgvdjEvaGVhbHRoX3BiJwogCiBtb2R1bGUgR3JwYwogICBtb2R1bGUgSGVhbHRoCmRpZmYgLS1naXQgYS9zcmMvcnVieS9wYi9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlX3NlcnZpY2VzLnJiIGIvc3JjL3J1YnkvcGIvZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZV9zZXJ2aWNlc19wYi5yYgpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBzcmMvcnVieS9wYi9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlX3NlcnZpY2VzLnJiCnJlbmFtZSB0byBzcmMvcnVieS9wYi9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlX3NlcnZpY2VzX3BiLnJiCmluZGV4IGViNTIzZmYuLmU1MWMyZjAgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L3BiL2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGVfc2VydmljZXMucmIKKysrIGIvc3JjL3J1YnkvcGIvZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZV9zZXJ2aWNlc19wYi5yYgpAQCAtMSw1ICsxLDUgQEAKICMgR2VuZXJhdGVkIGJ5IHRoZSBwcm90b2NvbCBidWZmZXIgY29tcGlsZXIuICBETyBOT1QgRURJVCEKLSMgU291cmNlOiBncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLnByb3RvIGZvciBwYWNrYWdlICdncnBjLnRlc3RpbmcuZHVwbGljYXRlJworIyBTb3VyY2U6IHNyYy9wcm90by9ncnBjL3Rlc3RpbmcvZHVwbGljYXRlL2VjaG9fZHVwbGljYXRlLnByb3RvIGZvciBwYWNrYWdlICdncnBjLnRlc3RpbmcuZHVwbGljYXRlJwogIyBPcmlnaW5hbCBmaWxlIGNvbW1lbnRzOgogIyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTM0LDcgKzM0LDcgQEAKICMKIAogcmVxdWlyZSAnZ3JwYycKLXJlcXVpcmUgJ2dycGMvdGVzdGluZy9kdXBsaWNhdGUvZWNob19kdXBsaWNhdGUnCityZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2R1cGxpY2F0ZS9lY2hvX2R1cGxpY2F0ZV9wYicKIAogbW9kdWxlIEdycGMKICAgbW9kdWxlIFRlc3RpbmcKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3BiL2dycGMvdGVzdGluZy9tZXRyaWNzLnJiIGIvc3JjL3J1YnkvcGIvZ3JwYy90ZXN0aW5nL21ldHJpY3NfcGIucmIKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gc3JjL3J1YnkvcGIvZ3JwYy90ZXN0aW5nL21ldHJpY3MucmIKcmVuYW1lIHRvIHNyYy9ydWJ5L3BiL2dycGMvdGVzdGluZy9tZXRyaWNzX3BiLnJiCmluZGV4IDNiM2M4Y2QuLjc3YjZjOTAgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L3BiL2dycGMvdGVzdGluZy9tZXRyaWNzLnJiCisrKyBiL3NyYy9ydWJ5L3BiL2dycGMvdGVzdGluZy9tZXRyaWNzX3BiLnJiCkBAIC0xLDUgKzEsNSBAQAogIyBHZW5lcmF0ZWQgYnkgdGhlIHByb3RvY29sIGJ1ZmZlciBjb21waWxlci4gIERPIE5PVCBFRElUIQotIyBzb3VyY2U6IGdycGMvdGVzdGluZy9tZXRyaWNzLnByb3RvCisjIHNvdXJjZTogc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXRyaWNzLnByb3RvCiAKIHJlcXVpcmUgJ2dvb2dsZS9wcm90b2J1ZicKIApkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvcGIvZ3JwYy90ZXN0aW5nL21ldHJpY3Nfc2VydmljZXMucmIgYi9zcmMvcnVieS9wYi9ncnBjL3Rlc3RpbmcvbWV0cmljc19zZXJ2aWNlc19wYi5yYgpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBzcmMvcnVieS9wYi9ncnBjL3Rlc3RpbmcvbWV0cmljc19zZXJ2aWNlcy5yYgpyZW5hbWUgdG8gc3JjL3J1YnkvcGIvZ3JwYy90ZXN0aW5nL21ldHJpY3Nfc2VydmljZXNfcGIucmIKaW5kZXggNDY3YjdiMy4uZTQ2MzY2YiAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvcGIvZ3JwYy90ZXN0aW5nL21ldHJpY3Nfc2VydmljZXMucmIKKysrIGIvc3JjL3J1YnkvcGIvZ3JwYy90ZXN0aW5nL21ldHJpY3Nfc2VydmljZXNfcGIucmIKQEAgLTEsNSArMSw1IEBACiAjIEdlbmVyYXRlZCBieSB0aGUgcHJvdG9jb2wgYnVmZmVyIGNvbXBpbGVyLiAgRE8gTk9UIEVESVQhCi0jIFNvdXJjZTogZ3JwYy90ZXN0aW5nL21ldHJpY3MucHJvdG8gZm9yIHBhY2thZ2UgJ2dycGMudGVzdGluZycKKyMgU291cmNlOiBzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21ldHJpY3MucHJvdG8gZm9yIHBhY2thZ2UgJ2dycGMudGVzdGluZycKICMgT3JpZ2luYWwgZmlsZSBjb21tZW50czoKICMgQ29weXJpZ2h0IDIwMTUtMjAxNiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTM4LDcgKzM4LDcgQEAKICMgc2VydmljZS4KIAogcmVxdWlyZSAnZ3JwYycKLXJlcXVpcmUgJ2dycGMvdGVzdGluZy9tZXRyaWNzJworcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXRyaWNzX3BiJwogCiBtb2R1bGUgR3JwYwogICBtb2R1bGUgVGVzdGluZwpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvcGIvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lbXB0eS5yYiBiL3NyYy9ydWJ5L3BiL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZW1wdHlfcGIucmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9ydWJ5L3BiL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZW1wdHkucmIKcmVuYW1lIHRvIHNyYy9ydWJ5L3BiL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZW1wdHlfcGIucmIKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3BiL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMucmIgYi9zcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzX3BiLnJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnJiCnJlbmFtZSB0byBzcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzX3BiLnJiCmRpZmYgLS1naXQgYS9zcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3QucmIgYi9zcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3RfcGIucmIKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVuYW1lIGZyb20gc3JjL3J1YnkvcGIvc3JjL3Byb3RvL2dycGMvdGVzdGluZy90ZXN0LnJiCnJlbmFtZSB0byBzcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3RfcGIucmIKaW5kZXggMjQ1YjVjZS4uMmNjOTg2MyAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvcGIvc3JjL3Byb3RvL2dycGMvdGVzdGluZy90ZXN0LnJiCisrKyBiL3NyYy9ydWJ5L3BiL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvdGVzdF9wYi5yYgpAQCAtMyw4ICszLDggQEAKIAogcmVxdWlyZSAnZ29vZ2xlL3Byb3RvYnVmJwogCi1yZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VtcHR5JwotcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlcycKK3JlcXVpcmUgJ3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvZW1wdHlfcGInCityZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzX3BiJwogR29vZ2xlOjpQcm90b2J1Zjo6RGVzY3JpcHRvclBvb2wuZ2VuZXJhdGVkX3Bvb2wuYnVpbGQgZG8KIGVuZAogCmRpZmYgLS1naXQgYS9zcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3Rfc2VydmljZXMucmIgYi9zcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3Rfc2VydmljZXNfcGIucmIKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gc3JjL3J1YnkvcGIvc3JjL3Byb3RvL2dycGMvdGVzdGluZy90ZXN0X3NlcnZpY2VzLnJiCnJlbmFtZSB0byBzcmMvcnVieS9wYi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3Rfc2VydmljZXNfcGIucmIKaW5kZXggMjY1MmRlNS4uZmRlMzI4ZSAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvcGIvc3JjL3Byb3RvL2dycGMvdGVzdGluZy90ZXN0X3NlcnZpY2VzLnJiCisrKyBiL3NyYy9ydWJ5L3BiL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvdGVzdF9zZXJ2aWNlc19wYi5yYgpAQCAtMzUsNyArMzUsNyBAQAogIwogCiByZXF1aXJlICdncnBjJwotcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy90ZXN0JworcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy90ZXN0X3BiJwogCiBtb2R1bGUgR3JwYwogICBtb2R1bGUgVGVzdGluZwpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvcGIvdGVzdC9jbGllbnQucmIgYi9zcmMvcnVieS9wYi90ZXN0L2NsaWVudC5yYgppbmRleCA0YzZkNDQxLi4xZTNhZTY1IDEwMDc1NQotLS0gYS9zcmMvcnVieS9wYi90ZXN0L2NsaWVudC5yYgorKysgYi9zcmMvcnVieS9wYi90ZXN0L2NsaWVudC5yYgpAQCAtNTIsOSArNTIsOSBAQAogcmVxdWlyZSAnZ29vZ2xlYXV0aCcKIHJlcXVpcmUgJ2dvb2dsZS9wcm90b2J1ZicKIAotcmVxdWlyZV9yZWxhdGl2ZSAnLi4vc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lbXB0eScKLXJlcXVpcmVfcmVsYXRpdmUgJy4uL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMnCi1yZXF1aXJlX3JlbGF0aXZlICcuLi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3Rfc2VydmljZXMnCityZXF1aXJlX3JlbGF0aXZlICcuLi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VtcHR5X3BiJworcmVxdWlyZV9yZWxhdGl2ZSAnLi4vc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlc19wYicKK3JlcXVpcmVfcmVsYXRpdmUgJy4uL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvdGVzdF9zZXJ2aWNlc19wYicKIAogQVVUSF9FTlYgPSBHb29nbGU6OkF1dGg6OkNyZWRlbnRpYWxzTG9hZGVyOjpFTlZfVkFSCiAKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3BiL3Rlc3Qvc2VydmVyLnJiIGIvc3JjL3J1YnkvcGIvdGVzdC9zZXJ2ZXIucmIKaW5kZXggMTFlZTNkNC4uMDgwODEyMSAxMDA3NTUKLS0tIGEvc3JjL3J1YnkvcGIvdGVzdC9zZXJ2ZXIucmIKKysrIGIvc3JjL3J1YnkvcGIvdGVzdC9zZXJ2ZXIucmIKQEAgLTUwLDkgKzUwLDkgQEAKIAogcmVxdWlyZSAnZ3JwYycKIAotcmVxdWlyZV9yZWxhdGl2ZSAnLi4vc3JjL3Byb3RvL2dycGMvdGVzdGluZy9lbXB0eScKLXJlcXVpcmVfcmVsYXRpdmUgJy4uL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMnCi1yZXF1aXJlX3JlbGF0aXZlICcuLi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3Rlc3Rfc2VydmljZXMnCityZXF1aXJlX3JlbGF0aXZlICcuLi9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2VtcHR5X3BiJworcmVxdWlyZV9yZWxhdGl2ZSAnLi4vc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlc19wYicKK3JlcXVpcmVfcmVsYXRpdmUgJy4uL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvdGVzdF9zZXJ2aWNlc19wYicKIAogIyBEZWJ1Z0lzVHJ1bmNhdGVkIGV4dGVuZHMgdGhlIGRlZmF1bHQgTG9nZ2VyIHRvIHRydW5jYXRlIGRlYnVnIG1lc3NhZ2VzCiBjbGFzcyBEZWJ1Z0lzVHJ1bmNhdGVkIDwgTG9nZ2VyCmRpZmYgLS1naXQgYS9zcmMvcnVieS9xcHMvY2xpZW50LnJiIGIvc3JjL3J1YnkvcXBzL2NsaWVudC5yYgppbmRleCA5MTdiMDEyLi43ZWQ2NDhhIDEwMDY0NAotLS0gYS9zcmMvcnVieS9xcHMvY2xpZW50LnJiCisrKyBiL3NyYy9ydWJ5L3Fwcy9jbGllbnQucmIKQEAgLTM4LDcgKzM4LDcgQEAKIAogcmVxdWlyZSAnZ3JwYycKIHJlcXVpcmUgJ2hpc3RvZ3JhbScKLXJlcXVpcmUgJ3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXNfc2VydmljZXMnCityZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzX3NlcnZpY2VzX3BiJwogCiBjbGFzcyBQb2lzc29uCiAgIGRlZiBpbnRlcmFycml2YWwKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3Fwcy9zZXJ2ZXIucmIgYi9zcmMvcnVieS9xcHMvc2VydmVyLnJiCmluZGV4IDUyYTg5Y2UuLmNkOThlZTEgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L3Fwcy9zZXJ2ZXIucmIKKysrIGIvc3JjL3J1YnkvcXBzL3NlcnZlci5yYgpAQCAtMzgsOSArMzgsOSBAQAogCiByZXF1aXJlICdncnBjJwogcmVxdWlyZSAncXBzLWNvbW1vbicKLXJlcXVpcmUgJ3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXMnCi1yZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzX3NlcnZpY2VzJwotcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cycKK3JlcXVpcmUgJ3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXNfcGInCityZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzX3NlcnZpY2VzX3BiJworcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0c19wYicKIAogY2xhc3MgQmVuY2htYXJrU2VydmljZUltcGwgPCBHcnBjOjpUZXN0aW5nOjpCZW5jaG1hcmtTZXJ2aWNlOjpTZXJ2aWNlCiAgIGRlZiB1bmFyeV9jYWxsKHJlcSwgX2NhbGwpCmRpZmYgLS1naXQgYS9zcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnJiIGIvc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbF9wYi5yYgpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBzcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sLnJiCnJlbmFtZSB0byBzcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sX3BiLnJiCmluZGV4IDk1OGZjYTMuLjAyMjA3YTIgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L3Fwcy9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL2NvbnRyb2wucmIKKysrIGIvc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbF9wYi5yYgpAQCAtMyw4ICszLDggQEAKIAogcmVxdWlyZSAnZ29vZ2xlL3Byb3RvYnVmJwogCi1yZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzJwotcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0cycKK3JlcXVpcmUgJ3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHNfcGInCityZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzX3BiJwogR29vZ2xlOjpQcm90b2J1Zjo6RGVzY3JpcHRvclBvb2wuZ2VuZXJhdGVkX3Bvb2wuYnVpbGQgZG8KICAgYWRkX21lc3NhZ2UgImdycGMudGVzdGluZy5Qb2lzc29uUGFyYW1zIiBkbwogICAgIG9wdGlvbmFsIDpvZmZlcmVkX2xvYWQsIDpkb3VibGUsIDEKQEAgLTEwOSw2ICsxMDksOCBAQAogICAgIHJlcGVhdGVkIDpzZXJ2ZXJfc3RhdHMsIDptZXNzYWdlLCA0LCAiZ3JwYy50ZXN0aW5nLlNlcnZlclN0YXRzIgogICAgIHJlcGVhdGVkIDpzZXJ2ZXJfY29yZXMsIDppbnQzMiwgNQogICAgIG9wdGlvbmFsIDpzdW1tYXJ5LCA6bWVzc2FnZSwgNiwgImdycGMudGVzdGluZy5TY2VuYXJpb1Jlc3VsdFN1bW1hcnkiCisgICAgcmVwZWF0ZWQgOmNsaWVudF9zdWNjZXNzLCA6Ym9vbCwgNworICAgIHJlcGVhdGVkIDpzZXJ2ZXJfc3VjY2VzcywgOmJvb2wsIDgKICAgZW5kCiAgIGFkZF9lbnVtICJncnBjLnRlc3RpbmcuQ2xpZW50VHlwZSIgZG8KICAgICB2YWx1ZSA6U1lOQ19DTElFTlQsIDAKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3Fwcy9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnJiIGIvc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvbWVzc2FnZXNfcGIucmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9ydWJ5L3Fwcy9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzLnJiCnJlbmFtZSB0byBzcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlc19wYi5yYgpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucmIgYi9zcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9wYXlsb2Fkc19wYi5yYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvcGF5bG9hZHMucmIKcmVuYW1lIHRvIHNyYy9ydWJ5L3Fwcy9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3BheWxvYWRzX3BiLnJiCmRpZmYgLS1naXQgYS9zcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5yYiBiL3NyYy9ydWJ5L3Fwcy9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzX3BiLnJiCnNpbWlsYXJpdHkgaW5kZXggNzIlCnJlbmFtZSBmcm9tIHNyYy9ydWJ5L3Fwcy9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzLnJiCnJlbmFtZSB0byBzcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlc19wYi5yYgppbmRleCBiMjY3NWMyLi41Y2UxM2JmIDEwMDY0NAotLS0gYS9zcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlcy5yYgorKysgYi9zcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlc19wYi5yYgpAQCAtMyw4ICszLDggQEAKIAogcmVxdWlyZSAnZ29vZ2xlL3Byb3RvYnVmJwogCi1yZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21lc3NhZ2VzJwotcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy9jb250cm9sJworcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy9tZXNzYWdlc19wYicKK3JlcXVpcmUgJ3NyYy9wcm90by9ncnBjL3Rlc3RpbmcvY29udHJvbF9wYicKIEdvb2dsZTo6UHJvdG9idWY6OkRlc2NyaXB0b3JQb29sLmdlbmVyYXRlZF9wb29sLmJ1aWxkIGRvCiBlbmQKIApkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXNfc2VydmljZXMucmIgYi9zcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlc19zZXJ2aWNlc19wYi5yYgpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBzcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlc19zZXJ2aWNlcy5yYgpyZW5hbWUgdG8gc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXNfc2VydmljZXNfcGIucmIKaW5kZXggOTRiOWExZS4uYmRiYjljOCAxMDA2NDQKLS0tIGEvc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXNfc2VydmljZXMucmIKKysrIGIvc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXNfc2VydmljZXNfcGIucmIKQEAgLTM0LDcgKzM0LDcgQEAKICMgb2YgdW5hcnkvc3RyZWFtaW5nIHJlcXVlc3RzL3Jlc3BvbnNlcy4KIAogcmVxdWlyZSAnZ3JwYycKLXJlcXVpcmUgJ3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc2VydmljZXMnCityZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzX3BiJwogCiBtb2R1bGUgR3JwYwogICBtb2R1bGUgVGVzdGluZwpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucmIgYi9zcmMvcnVieS9xcHMvc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zdGF0c19wYi5yYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL3J1YnkvcXBzL3NyYy9wcm90by9ncnBjL3Rlc3Rpbmcvc3RhdHMucmIKcmVuYW1lIHRvIHNyYy9ydWJ5L3Fwcy9zcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3N0YXRzX3BiLnJiCmRpZmYgLS1naXQgYS9zcmMvcnVieS9xcHMvd29ya2VyLnJiIGIvc3JjL3J1YnkvcXBzL3dvcmtlci5yYgppbmRleCA2NjVmYjg2Li4xMmI4MDg3IDEwMDc1NQotLS0gYS9zcmMvcnVieS9xcHMvd29ya2VyLnJiCisrKyBiL3NyYy9ydWJ5L3Fwcy93b3JrZXIucmIKQEAgLTQ0LDcgKzQ0LDcgQEAKIHJlcXVpcmUgJ2NsaWVudCcKIHJlcXVpcmUgJ3Fwcy1jb21tb24nCiByZXF1aXJlICdzZXJ2ZXInCi1yZXF1aXJlICdzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL3NlcnZpY2VzX3NlcnZpY2VzJworcmVxdWlyZSAnc3JjL3Byb3RvL2dycGMvdGVzdGluZy9zZXJ2aWNlc19zZXJ2aWNlc19wYicKIAogY2xhc3MgV29ya2VyU2VydmljZUltcGwgPCBHcnBjOjpUZXN0aW5nOjpXb3JrZXJTZXJ2aWNlOjpTZXJ2aWNlCiAgIGRlZiBjcHVfY29yZXMKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3NwZWMvcGIvZHVwbGljYXRlL2NvZGVnZW5fc3BlYy5yYiBiL3NyYy9ydWJ5L3NwZWMvcGIvZHVwbGljYXRlL2NvZGVnZW5fc3BlYy5yYgppbmRleCA1NGMxMzZjLi5lYTAyNDA5IDEwMDY0NAotLS0gYS9zcmMvcnVieS9zcGVjL3BiL2R1cGxpY2F0ZS9jb2RlZ2VuX3NwZWMucmIKKysrIGIvc3JjL3J1Ynkvc3BlYy9wYi9kdXBsaWNhdGUvY29kZWdlbl9zcGVjLnJiCkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAjIEdldCB0aGUgY3VycmVudCBjb250ZW50CiAgICAgICBzZXJ2aWNlX3BhdGggPSBGaWxlLmpvaW4ocm9vdF9kaXIsICdzcmMnLCAncnVieScsICdwYicsICdncnBjJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdGluZycsICdkdXBsaWNhdGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlY2hvX2R1cGxpY2F0ZV9zZXJ2aWNlcy5yYicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VjaG9fZHVwbGljYXRlX3NlcnZpY2VzX3BiLnJiJykKICAgICAgIHdhbnQgPSBuaWwKICAgICAgIEZpbGUub3BlbihzZXJ2aWNlX3BhdGgpIHsgfGZ8IHdhbnQgPSBmLnJlYWQgfQogCkBAIC01NCw3ICs1NCw3IEBACiAgICAgICBnb3QgPSBuaWwKICAgICAgIERpci5ta3RtcGRpciBkbyB8dG1wX2RpcnwKICAgICAgICAgZ2VuX291dCA9IEZpbGUuam9pbih0bXBfZGlyLCAnc3JjJywgJ3Byb3RvJywgJ2dycGMnLCAndGVzdGluZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2R1cGxpY2F0ZScsICdlY2hvX2R1cGxpY2F0ZV9zZXJ2aWNlcy5yYicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2R1cGxpY2F0ZScsICdlY2hvX2R1cGxpY2F0ZV9zZXJ2aWNlc19wYi5yYicpCiAgICAgICAgIHBpZCA9IHNwYXduKAogICAgICAgICAgICdwcm90b2MnLAogICAgICAgICAgICctSS4nLApkaWZmIC0tZ2l0IGEvc3JjL3J1Ynkvc3BlYy9wYi9oZWFsdGgvY2hlY2tlcl9zcGVjLnJiIGIvc3JjL3J1Ynkvc3BlYy9wYi9oZWFsdGgvY2hlY2tlcl9zcGVjLnJiCmluZGV4IGRlMTFjOWYuLjFiMmZhOTYgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L3NwZWMvcGIvaGVhbHRoL2NoZWNrZXJfc3BlYy5yYgorKysgYi9zcmMvcnVieS9zcGVjL3BiL2hlYWx0aC9jaGVja2VyX3NwZWMucmIKQEAgLTI4LDcgKzI4LDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogcmVxdWlyZSAnZ3JwYycKLXJlcXVpcmUgJ2dycGMvaGVhbHRoL3YxL2hlYWx0aCcKK3JlcXVpcmUgJ2dycGMvaGVhbHRoL3YxL2hlYWx0aF9wYicKIHJlcXVpcmUgJ2dycGMvaGVhbHRoL2NoZWNrZXInCiByZXF1aXJlICdvcGVuMycKIHJlcXVpcmUgJ3RtcGRpcicKQEAgLTQzLDcgKzQzLDcgQEAKICAgICAgIHNraXAgJ3Byb3RvYyB8fCBncnBjX3J1YnlfcGx1Z2luIG1pc3NpbmcsIGNhbm5vdCB2ZXJpZnkgaGVhbHRoIGNvZGUtZ2VuJwogICAgIGVsc2UKICAgICAgIGl0ICdzaG91bGQgYWxyZWFkeSBiZSBsb2FkZWQgaW5kaXJlY3RseSBpLmUsIHVzZWQgYnkgdGhlIG90aGVyIHNwZWNzJyBkbwotICAgICAgICBleHBlY3QocmVxdWlyZSgnZ3JwYy9oZWFsdGgvdjEvaGVhbHRoX3NlcnZpY2VzJykpLnRvIGJlKGZhbHNlKQorICAgICAgICBleHBlY3QocmVxdWlyZSgnZ3JwYy9oZWFsdGgvdjEvaGVhbHRoX3NlcnZpY2VzX3BiJykpLnRvIGJlKGZhbHNlKQogICAgICAgZW5kCiAKICAgICAgIGl0ICdzaG91bGQgaGF2ZSB0aGUgc2FtZSBjb250ZW50IGFzIGNyZWF0ZWQgYnkgY29kZSBnZW5lcmF0aW9uJyBkbwpAQCAtNTIsNyArNTIsNyBAQAogCiAgICAgICAgICMgR2V0IHRoZSBjdXJyZW50IGNvbnRlbnQKICAgICAgICAgc2VydmljZV9wYXRoID0gRmlsZS5qb2luKHJvb3RfZGlyLCAncnVieScsICdwYicsICdncnBjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFsdGgnLCAndjEnLCAnaGVhbHRoX3NlcnZpY2VzLnJiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFsdGgnLCAndjEnLCAnaGVhbHRoX3NlcnZpY2VzX3BiLnJiJykKICAgICAgICAgd2FudCA9IG5pbAogICAgICAgICBGaWxlLm9wZW4oc2VydmljZV9wYXRoKSB7IHxmfCB3YW50ID0gZi5yZWFkIH0KIApAQCAtNjIsNyArNjIsNyBAQAogICAgICAgICBnb3QgPSBuaWwKICAgICAgICAgRGlyLm1rdG1wZGlyIGRvIHx0bXBfZGlyfAogICAgICAgICAgIGdlbl9vdXQgPSBGaWxlLmpvaW4odG1wX2RpciwgJ2dycGMnLCAnaGVhbHRoJywgJ3YxJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFsdGhfc2VydmljZXMucmInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWx0aF9zZXJ2aWNlc19wYi5yYicpCiAgICAgICAgICAgcGlkID0gc3Bhd24oCiAgICAgICAgICAgICAncHJvdG9jJywKICAgICAgICAgICAgICctSS4nLApkaWZmIC0tZ2l0IGEvc3JjL3J1Ynkvc3RyZXNzL21ldHJpY3Nfc2VydmVyLnJiIGIvc3JjL3J1Ynkvc3RyZXNzL21ldHJpY3Nfc2VydmVyLnJiCmluZGV4IDEzNjM4YzQuLjJiN2Y3ODUgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L3N0cmVzcy9tZXRyaWNzX3NlcnZlci5yYgorKysgYi9zcmMvcnVieS9zdHJlc3MvbWV0cmljc19zZXJ2ZXIucmIKQEAgLTI3LDggKzI3LDggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLXJlcXVpcmVfcmVsYXRpdmUgJy4uL3BiL2dycGMvdGVzdGluZy9tZXRyaWNzLnJiJwotcmVxdWlyZV9yZWxhdGl2ZSAnLi4vcGIvZ3JwYy90ZXN0aW5nL21ldHJpY3Nfc2VydmljZXMucmInCityZXF1aXJlX3JlbGF0aXZlICcuLi9wYi9ncnBjL3Rlc3RpbmcvbWV0cmljc19wYi5yYicKK3JlcXVpcmVfcmVsYXRpdmUgJy4uL3BiL2dycGMvdGVzdGluZy9tZXRyaWNzX3NlcnZpY2VzX3BiLnJiJwogCiBjbGFzcyBHYXVnZQogICBkZWYgZ2V0X25hbWUKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3Rvb2xzL2Jpbi9ncnBjX3Rvb2xzX3J1YnlfcHJvdG9jLnJiIGIvc3JjL3J1YnkvdG9vbHMvYmluL2dycGNfdG9vbHNfcnVieV9wcm90b2MKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1lIGZyb20gc3JjL3J1YnkvdG9vbHMvYmluL2dycGNfdG9vbHNfcnVieV9wcm90b2MucmIKcmVuYW1lIHRvIHNyYy9ydWJ5L3Rvb2xzL2Jpbi9ncnBjX3Rvb2xzX3J1YnlfcHJvdG9jCmluZGV4IDNhMmE1YjguLmRhYjA2ZTcgMTAwNzU1Ci0tLSBhL3NyYy9ydWJ5L3Rvb2xzL2Jpbi9ncnBjX3Rvb2xzX3J1YnlfcHJvdG9jLnJiCisrKyBiL3NyYy9ydWJ5L3Rvb2xzL2Jpbi9ncnBjX3Rvb2xzX3J1YnlfcHJvdG9jCkBAIC0zMiwxMCArMzIsMTcgQEAKIAogcmVxdWlyZV9yZWxhdGl2ZSAnLi4vb3NfY2hlY2snCiAKLXByb3RvY19uYW1lID0gJ3Byb3RvYycgKyBSYkNvbmZpZzo6Q09ORklHWydFWEVFWFQnXQorZXh0ID0gUmJDb25maWc6OkNPTkZJR1snRVhFRVhUJ10KIAotcHJvdG9jX3BhdGggPSBGaWxlLmpvaW4oRmlsZS5kaXJuYW1lKF9fRklMRV9fKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJiQ29uZmlnOjpDT05GSUdbJ2hvc3RfY3B1J10gKyAnLScgKyBPUy5vc19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jX25hbWUpCitwcm90b2NfbmFtZSA9ICdwcm90b2MnICsgZXh0CiAKLWV4ZWMoWyBwcm90b2NfcGF0aCwgcHJvdG9jX3BhdGggXSwgKkFSR1YpCitwbHVnaW5fbmFtZSA9ICdncnBjX3J1YnlfcGx1Z2luJyArIGV4dAorCitwcm90b2NfZGlyID0gRmlsZS5qb2luKEZpbGUuZGlybmFtZShfX0ZJTEVfXyksCisgICAgICAgICAgICAgICAgICAgICAgIFJiQ29uZmlnOjpDT05GSUdbJ2hvc3RfY3B1J10gKyAnLScgKyBPUy5vc19uYW1lKQorCitwcm90b2NfcGF0aCA9IEZpbGUuam9pbihwcm90b2NfZGlyLCBwcm90b2NfbmFtZSkKKworcGx1Z2luX3BhdGggPSBGaWxlLmpvaW4ocHJvdG9jX2RpciwgcGx1Z2luX25hbWUpCisKK2V4ZWMoWyBwcm90b2NfcGF0aCwgcHJvdG9jX3BhdGggXSwgIi0tcGx1Z2luPXByb3RvYy1nZW4tZ3JwYz0je3BsdWdpbl9wYXRofSIsICpBUkdWKQpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvdG9vbHMvYmluL2dycGNfdG9vbHNfcnVieV9wcm90b2NfcGx1Z2luLnJiIGIvc3JjL3J1YnkvdG9vbHMvYmluL2dycGNfdG9vbHNfcnVieV9wcm90b2NfcGx1Z2luCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvcnVieS90b29scy9iaW4vZ3JwY190b29sc19ydWJ5X3Byb3RvY19wbHVnaW4ucmIKcmVuYW1lIHRvIHNyYy9ydWJ5L3Rvb2xzL2Jpbi9ncnBjX3Rvb2xzX3J1YnlfcHJvdG9jX3BsdWdpbgpkaWZmIC0tZ2l0IGEvc3JjL3J1YnkvdG9vbHMvZ3JwYy10b29scy5nZW1zcGVjIGIvc3JjL3J1YnkvdG9vbHMvZ3JwYy10b29scy5nZW1zcGVjCmluZGV4IDlmYTRiNjYuLjY4ZTJhN2EgMTAwNjQ0Ci0tLSBhL3NyYy9ydWJ5L3Rvb2xzL2dycGMtdG9vbHMuZ2Vtc3BlYworKysgYi9zcmMvcnVieS90b29scy9ncnBjLXRvb2xzLmdlbXNwZWMKQEAgLTE4LDUgKzE4LDUgQEAKIAogICBzLnBsYXRmb3JtID0gR2VtOjpQbGF0Zm9ybTo6UlVCWQogCi0gIHMuZXhlY3V0YWJsZXMgPSAldyggZ3JwY190b29sc19ydWJ5X3Byb3RvYy5yYiBncnBjX3Rvb2xzX3J1YnlfcHJvdG9jX3BsdWdpbi5yYiApCisgIHMuZXhlY3V0YWJsZXMgPSAldyggZ3JwY190b29sc19ydWJ5X3Byb3RvYyBncnBjX3Rvb2xzX3J1YnlfcHJvdG9jX3BsdWdpbiApCiBlbmQKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9DTWFrZUxpc3RzLnR4dC50ZW1wbGF0ZSBiL3RlbXBsYXRlcy9DTWFrZUxpc3RzLnR4dC50ZW1wbGF0ZQppbmRleCA1MmU4Yjg2Li40ZTQyMjM0IDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvQ01ha2VMaXN0cy50eHQudGVtcGxhdGUKKysrIGIvdGVtcGxhdGVzL0NNYWtlTGlzdHMudHh0LnRlbXBsYXRlCkBAIC00MiwxNCArNDIsMTYgQEAKICAgPCUhCiAgIGRlZiBnZXRfZGVwcyh0YXJnZXRfZGljdCk6CiAgICAgZGVwcyA9IFtdCisgICAgaWYgdGFyZ2V0X2RpY3QuZ2V0KCdiYXNlbGliJywgRmFsc2UpOgorICAgICAgZGVwcy5hcHBlbmQoIiR7X2dSUENfQkFTRUxJQl9MSUJSQVJJRVN9IikKICAgICBpZiB0YXJnZXRfZGljdC5nZXQoJ2J1aWxkJywgTm9uZSkgaW4gWydwcm90b2MnXToKLSAgICAgIGRlcHMuYXBwZW5kKCJsaWJwcm90b2MiKQorICAgICAgZGVwcy5hcHBlbmQoIiR7X2dSUENfUFJPVE9CVUZfUFJPVE9DX0xJQlJBUklFU30iKQogICAgIGlmIHRhcmdldF9kaWN0LmdldCgnc2VjdXJlJywgRmFsc2UpOgotICAgICAgZGVwcyA9IFsic3NsIl0KKyAgICAgIGRlcHMuYXBwZW5kKCIke19nUlBDX1NTTF9MSUJSQVJJRVN9IikKICAgICBpZiB0YXJnZXRfZGljdFsnbmFtZSddIGluIFsnZ3JwYysrJywgJ2dycGMrK191bnNlY3VyZScsICdncnBjKytfY29kZWdlbl9saWInXToKLSAgICAgIGRlcHMuYXBwZW5kKCJsaWJwcm90b2J1ZiIpCisgICAgICBkZXBzLmFwcGVuZCgiJHtfZ1JQQ19QUk9UT0JVRl9MSUJSQVJJRVN9IikKICAgICBlbGlmIHRhcmdldF9kaWN0WyduYW1lJ10gaW4gWydncnBjJ106Ci0gICAgICBkZXBzLmFwcGVuZCgiemxpYnN0YXRpYyIpCisgICAgICBkZXBzLmFwcGVuZCgiJHtfZ1JQQ19aTElCX0xJQlJBUklFU30iKQogICAgIGZvciBkIGluIHRhcmdldF9kaWN0LmdldCgnZGVwcycsIFtdKToKICAgICAgIGRlcHMuYXBwZW5kKGQpCiAgICAgcmV0dXJuIGRlcHMKQEAgLTY0LDM5ICs2NiwxMjcgQEAKICAgc2V0KFBBQ0tBR0VfQlVHUkVQT1JUICJodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjL2lzc3Vlcy8iKQogICBwcm9qZWN0KDwldGV4dD4ke1BBQ0tBR0VfTkFNRX08LyV0ZXh0PiBDIENYWCkKIAotICBpZihOT1QgQk9SSU5HU1NMX1JPT1RfRElSKQotICAgIHNldChCT1JJTkdTU0xfUk9PVF9ESVIgPCV0ZXh0PiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfTwvJXRleHQ+L3RoaXJkX3BhcnR5L2JvcmluZ3NzbCkKLSAgZW5kaWYoKQotICBpZihOT1QgUFJPVE9CVUZfUk9PVF9ESVIpCi0gICAgc2V0KFBST1RPQlVGX1JPT1RfRElSIDwldGV4dD4ke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn08LyV0ZXh0Pi90aGlyZF9wYXJ0eS9wcm90b2J1ZikKLSAgZW5kaWYoKQotICBpZihOT1QgWkxJQl9ST09UX0RJUikKLSAgICBzZXQoWkxJQl9ST09UX0RJUiA8JXRleHQ+JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9PC8ldGV4dD4vdGhpcmRfcGFydHkvemxpYikKKyAgc2V0KGdSUENfWkxJQl9QUk9WSURFUiAibW9kdWxlIiBDQUNIRSBTVFJJTkcgIlByb3ZpZGVyIG9mIHpsaWIgbGlicmFyeSIpCisgIHNldF9wcm9wZXJ0eShDQUNIRSBnUlBDX1pMSUJfUFJPVklERVIgUFJPUEVSVFkgU1RSSU5HUyAibW9kdWxlIiAicGFja2FnZSIpCisKKyAgc2V0KGdSUENfU1NMX1BST1ZJREVSICJtb2R1bGUiIENBQ0hFIFNUUklORyAiUHJvdmlkZXIgb2Ygc3NsIGxpYnJhcnkiKQorICBzZXRfcHJvcGVydHkoQ0FDSEUgZ1JQQ19TU0xfUFJPVklERVIgUFJPUEVSVFkgU1RSSU5HUyAibW9kdWxlIiAicGFja2FnZSIpCisKKyAgc2V0KGdSUENfUFJPVE9CVUZfUFJPVklERVIgIm1vZHVsZSIgQ0FDSEUgU1RSSU5HICJQcm92aWRlciBvZiBwcm90b2J1ZiBsaWJyYXJ5IikKKyAgc2V0X3Byb3BlcnR5KENBQ0hFIGdSUENfUFJPVE9CVUZfUFJPVklERVIgUFJPUEVSVFkgU1RSSU5HUyAibW9kdWxlIiAicGFja2FnZSIpCisKKyAgc2V0KGdSUENfVVNFX1BST1RPX0xJVEUgT0ZGIENBQ0hFIEJPT0wgIlVzZSB0aGUgcHJvdG9idWYtbGl0ZSBsaWJyYXJ5IikKKworICBpZiAoZ1JQQ19VU0VfUFJPVE9fTElURSkKKyAgICBzZXQoX2dSUENfUFJPVE9CVUZfTElCUkFSWV9OQU1FICJsaWJwcm90b2J1Zi1saXRlIikKKyAgICBhZGRfZGVmaW5pdGlvbnMoIi1ER1JQQ19VU0VfUFJPVE9fTElURSIpCisgIGVsc2UoKQorICAgIHNldChfZ1JQQ19QUk9UT0JVRl9MSUJSQVJZX05BTUUgImxpYnByb3RvYnVmIikKICAgZW5kaWYoKQogCi0gICMgQnVpbGRpbmcgdGhlIHByb3RvYnVmIHRlc3RzIHJlcXVpcmUgZ21vY2sgd2hhdCBpcyBub3QgcGFydCBvZiBhIHN0YW5kYXJkIHByb3RvYnVmIGNoZWNrb3V0LgotICAjIERpc2FibGUgdGhlbSB1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSByZXF1ZXN0ZWQgZnJvbSB0aGUgY21ha2UgY29tbWFuZCBsaW5lICh3aGVuIHdlIGFzc3VtZQotICAjIGdtb2NrIGlzIGRvd25sb2FkZWQgdG8gdGhlIHJpZ2h0IGxvY2F0aW9uIGluc2lkZSBwcm90b2J1ZikuCi0gIGlmKE5PVCBwcm90b2J1Zl9CVUlMRF9URVNUUykKLSAgICBzZXQocHJvdG9idWZfQlVJTERfVEVTVFMgT0ZGIENBQ0hFIEJPT0wgIkJ1aWxkIHByb3RvYnVmIHRlc3RzIikKKyAgaWYoIjwldGV4dD4ke2dSUENfWkxJQl9QUk9WSURFUn08LyV0ZXh0PiIgU1RSRVFVQUwgIm1vZHVsZSIpCisgICAgaWYoTk9UIFpMSUJfUk9PVF9ESVIpCisgICAgICBzZXQoWkxJQl9ST09UX0RJUiA8JXRleHQ+JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9PC8ldGV4dD4vdGhpcmRfcGFydHkvemxpYikKKyAgICBlbmRpZigpCisgICAgc2V0KFpMSUJfSU5DTFVERV9ESVIgIjwldGV4dD4ke1pMSUJfUk9PVF9ESVJ9PC8ldGV4dD4iKQorICAgIGlmKEVYSVNUUyAiPCV0ZXh0PiR7WkxJQl9ST09UX0RJUn08LyV0ZXh0Pi9DTWFrZUxpc3RzLnR4dCIpCisgICAgICAgIGFkZF9zdWJkaXJlY3RvcnkoPCV0ZXh0PiR7WkxJQl9ST09UX0RJUn08LyV0ZXh0PiB0aGlyZF9wYXJ0eS96bGliKQorICAgICAgICBpZihUQVJHRVQgemxpYnN0YXRpYykKKyAgICAgICAgICAgIHNldChfZ1JQQ19aTElCX0xJQlJBUklFUyB6bGlic3RhdGljKQorICAgICAgICBlbmRpZigpCisgICAgZWxzZSgpCisgICAgICAgIG1lc3NhZ2UoV0FSTklORyAiZ1JQQ19aTElCX1BST1ZJREVSIGlzIFwibW9kdWxlXCIgYnV0IFpMSUJfUk9PVF9ESVIgaXMgd3JvbmciKQorICAgIGVuZGlmKCkKKyAgZWxzZWlmKCI8JXRleHQ+JHtnUlBDX1pMSUJfUFJPVklERVJ9PC8ldGV4dD4iIFNUUkVRVUFMICJwYWNrYWdlIikKKyAgICBmaW5kX3BhY2thZ2UoWkxJQikKKyAgICBpZihUQVJHRVQgWkxJQjo6WkxJQikKKyAgICAgIHNldChfZ1JQQ19aTElCX0xJQlJBUklFUyBaTElCOjpaTElCKQorICAgIGVuZGlmKCkKKyAgICBzZXQoX2dSUENfRklORF9aTElCICJpZihOT1QgWkxJQl9GT1VORClcbiAgZmluZF9wYWNrYWdlKFpMSUIpXG5lbmRpZigpIikKICAgZW5kaWYoKQogCi0gIGFkZF9zdWJkaXJlY3RvcnkoPCV0ZXh0PiR7Qk9SSU5HU1NMX1JPT1RfRElSfTwvJXRleHQ+IHRoaXJkX3BhcnR5L2JvcmluZ3NzbCkKLSAgYWRkX3N1YmRpcmVjdG9yeSg8JXRleHQ+JHtQUk9UT0JVRl9ST09UX0RJUn08LyV0ZXh0Pi9jbWFrZSB0aGlyZF9wYXJ0eS9wcm90b2J1ZikKLSAgYWRkX3N1YmRpcmVjdG9yeSg8JXRleHQ+JHtaTElCX1JPT1RfRElSfTwvJXRleHQ+IHRoaXJkX3BhcnR5L3psaWIpCisgIGlmKCI8JXRleHQ+JHtnUlBDX1BST1RPQlVGX1BST1ZJREVSfTwvJXRleHQ+IiBTVFJFUVVBTCAibW9kdWxlIikKKyAgICAjIEJ1aWxkaW5nIHRoZSBwcm90b2J1ZiB0ZXN0cyByZXF1aXJlIGdtb2NrIHdoYXQgaXMgbm90IHBhcnQgb2YgYSBzdGFuZGFyZCBwcm90b2J1ZiBjaGVja291dC4KKyAgICAjIERpc2FibGUgdGhlbSB1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSByZXF1ZXN0ZWQgZnJvbSB0aGUgY21ha2UgY29tbWFuZCBsaW5lICh3aGVuIHdlIGFzc3VtZQorICAgICMgZ21vY2sgaXMgZG93bmxvYWRlZCB0byB0aGUgcmlnaHQgbG9jYXRpb24gaW5zaWRlIHByb3RvYnVmKS4KKyAgICBpZihOT1QgcHJvdG9idWZfQlVJTERfVEVTVFMpCisgICAgICBzZXQocHJvdG9idWZfQlVJTERfVEVTVFMgT0ZGIENBQ0hFIEJPT0wgIkJ1aWxkIHByb3RvYnVmIHRlc3RzIikKKyAgICBlbmRpZigpCisgICAgaWYoTk9UIFBST1RPQlVGX1JPT1RfRElSKQorICAgICAgc2V0KFBST1RPQlVGX1JPT1RfRElSIDwldGV4dD4ke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn08LyV0ZXh0Pi90aGlyZF9wYXJ0eS9wcm90b2J1ZikKKyAgICBlbmRpZigpCisgICAgaWYoRVhJU1RTICI8JXRleHQ+JHtQUk9UT0JVRl9ST09UX0RJUn08LyV0ZXh0Pi9jbWFrZS9DTWFrZUxpc3RzLnR4dCIpCisgICAgICBhZGRfc3ViZGlyZWN0b3J5KDwldGV4dD4ke1BST1RPQlVGX1JPT1RfRElSfTwvJXRleHQ+L2NtYWtlIHRoaXJkX3BhcnR5L3Byb3RvYnVmKQorICAgICAgaWYoVEFSR0VUIDwldGV4dD4ke19nUlBDX1BST1RPQlVGX0xJQlJBUllfTkFNRX08LyV0ZXh0PikKKyAgICAgICAgc2V0KF9nUlBDX1BST1RPQlVGX0xJQlJBUklFUyA8JXRleHQ+JHtfZ1JQQ19QUk9UT0JVRl9MSUJSQVJZX05BTUV9PC8ldGV4dD4pCisgICAgICBlbmRpZigpCisgICAgICBpZihUQVJHRVQgbGlicHJvdG9jKQorICAgICAgICBzZXQoX2dSUENfUFJPVE9CVUZfUFJPVE9DX0xJQlJBUklFUyBsaWJwcm90b2MpCisgICAgICBlbmRpZigpCisgICAgZWxzZSgpCisgICAgICAgIG1lc3NhZ2UoV0FSTklORyAiZ1JQQ19QUk9UT0JVRl9QUk9WSURFUiBpcyBcIm1vZHVsZVwiIGJ1dCBQUk9UT0JVRl9ST09UX0RJUiBpcyB3cm9uZyIpCisgICAgZW5kaWYoKQorICBlbHNlaWYoIjwldGV4dD4ke2dSUENfUFJPVE9CVUZfUFJPVklERVJ9PC8ldGV4dD4iIFNUUkVRVUFMICJwYWNrYWdlIikKKyAgICBmaW5kX3BhY2thZ2UocHJvdG9idWYgQ09ORklHKQorICAgIGlmKHByb3RvYnVmX0ZPVU5EKQorICAgICAgaWYoVEFSR0VUIHByb3RvYnVmOjo8JXRleHQ+JHtfZ1JQQ19QUk9UT0JVRl9MSUJSQVJZX05BTUV9PC8ldGV4dD4pCisgICAgICAgIHNldChfZ1JQQ19QUk9UT0JVRl9MSUJSQVJJRVMgcHJvdG9idWY6OjwldGV4dD4ke19nUlBDX1BST1RPQlVGX0xJQlJBUllfTkFNRX08LyV0ZXh0PikKKyAgICAgIGVuZGlmKCkKKyAgICAgIGlmKFRBUkdFVCBwcm90b2J1Zjo6bGlicHJvdG9jKQorICAgICAgICBzZXQoX2dSUENfUFJPVE9CVUZfUFJPVE9DX0xJQlJBUklFUyBwcm90b2J1Zjo6bGlicHJvdG9jKQorICAgICAgZW5kaWYoKQorICAgICAgc2V0KF9nUlBDX0ZJTkRfUFJPVE9CVUYgImlmKE5PVCBwcm90b2J1Zl9GT1VORClcbiAgZmluZF9wYWNrYWdlKHByb3RvYnVmIENPTkZJRylcbmVuZGlmKCkiKQorICAgIGVsc2UoKQorICAgICAgZmluZF9wYWNrYWdlKFByb3RvYnVmIE1PRFVMRSkKKyAgICAgIHNldChfZ1JQQ19GSU5EX1BST1RPQlVGICJpZihOT1QgUHJvdG9idWZfRk9VTkQpXG4gIGZpbmRfcGFja2FnZShQcm90b2J1ZilcbmVuZGlmKCkiKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQogCi0gIHNldChDTUFLRV9DX0ZMQUdTICAgIjwldGV4dD4ke0NNQUtFX0NfRkxBR1N9PC8ldGV4dD4gICAtc3RkPWMxMSIpCi0gIHNldChDTUFLRV9DWFhfRkxBR1MgIjwldGV4dD4ke0NNQUtFX0NYWF9GTEFHU308LyV0ZXh0PiAtc3RkPWMrKzExIikKKyAgaWYoIjwldGV4dD4ke2dSUENfU1NMX1BST1ZJREVSfTwvJXRleHQ+IiBTVFJFUVVBTCAibW9kdWxlIikKKyAgICBpZihOT1QgQk9SSU5HU1NMX1JPT1RfRElSKQorICAgICAgc2V0KEJPUklOR1NTTF9ST09UX0RJUiA8JXRleHQ+JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9PC8ldGV4dD4vdGhpcmRfcGFydHkvYm9yaW5nc3NsKQorICAgIGVuZGlmKCkKKyAgICBpZihFWElTVFMgIjwldGV4dD4ke0JPUklOR1NTTF9ST09UX0RJUn08LyV0ZXh0Pi9DTWFrZUxpc3RzLnR4dCIpCisgICAgICBhZGRfc3ViZGlyZWN0b3J5KDwldGV4dD4ke0JPUklOR1NTTF9ST09UX0RJUn08LyV0ZXh0PiB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wpCisgICAgICBpZihUQVJHRVQgc3NsKQorICAgICAgICBzZXQoX2dSUENfU1NMX0xJQlJBUklFUyBzc2wpCisgICAgICBlbmRpZigpCisgICAgZWxzZSgpCisgICAgICAgIG1lc3NhZ2UoV0FSTklORyAiZ1JQQ19TU0xfUFJPVklERVIgaXMgXCJtb2R1bGVcIiBidXQgQk9SSU5HU1NMX1JPT1RfRElSIGlzIHdyb25nIikKKyAgICBlbmRpZigpCisgIGVsc2VpZigiPCV0ZXh0PiR7Z1JQQ19TU0xfUFJPVklERVJ9PC8ldGV4dD4iIFNUUkVRVUFMICJwYWNrYWdlIikKKyAgICBmaW5kX3BhY2thZ2UoT3BlblNTTCkKKyAgICBpZihUQVJHRVQgT3BlblNTTDo6U1NMKQorICAgICAgc2V0KF9nUlBDX1NTTF9MSUJSQVJJRVMgT3BlblNTTDo6U1NMKQorICAgIGVuZGlmKCkKKyAgICBzZXQoX2dSUENfRklORF9TU0wgImlmKE5PVCBPcGVuU1NMX0ZPVU5EKVxuICBmaW5kX3BhY2thZ2UoT3BlblNTTClcbmVuZGlmKCkiKQorICBlbmRpZigpCisKKyAgaWYoTk9UIE1TVkMpCisgICAgc2V0KENNQUtFX0NfRkxBR1MgICAiPCV0ZXh0PiR7Q01BS0VfQ19GTEFHU308LyV0ZXh0PiAgIC1zdGQ9YzExIikKKyAgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICI8JXRleHQ+JHtDTUFLRV9DWFhfRkxBR1N9PC8ldGV4dD4gLXN0ZD1jKysxMSIpCisgIGVuZGlmKCkKKworICBpZihXSU4zMiBBTkQgTVNWQykKKyAgICBzZXQoX2dSUENfQkFTRUxJQl9MSUJSQVJJRVMgd3NvY2szMiB3czJfMzIpCisgIGVuZGlmKCkKKworICBpbmNsdWRlKEdOVUluc3RhbGxEaXJzKQorICBpZihOT1QgREVGSU5FRCBDTUFLRV9JTlNUQUxMX0NNQUtFRElSKQorICAgIHNldChDTUFLRV9JTlNUQUxMX0NNQUtFRElSICI8JXRleHQ+JHtDTUFLRV9JTlNUQUxMX0xJQkRJUn08LyV0ZXh0Pi9jbWFrZS9nUlBDIikKKyAgZW5kaWYoKQogCiAgICUgZm9yIGxpYiBpbiBsaWJzOgogICAlIGlmIGxpYi5idWlsZCBpbiBbImFsbCIsICJwcm90b2MiLCAidG9vbCJdOgogICAgICR7Y2NfbGlicmFyeShsaWIpfQorICAgICR7Y2NfaW5zdGFsbChsaWIpfQogICAlIGVuZGlmCiAgICUgZW5kZm9yCiAKICAgJSBmb3IgdGd0IGluIHRhcmdldHM6CiAgICUgaWYgdGd0LmJ1aWxkIGluIFsiYWxsIiwgInByb3RvYyIsICJ0b29sIl06CiAgICR7Y2NfYmluYXJ5KHRndCl9CisgICR7Y2NfaW5zdGFsbCh0Z3QpfQogICAlIGVuZGlmCiAgICUgZW5kZm9yCiAKQEAgLTExMiw3ICsyMDIsNyBAQAogICAgIFBSSVZBVEUgPCV0ZXh0PiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfTwvJXRleHQ+L2luY2x1ZGUKICAgICBQUklWQVRFIDwldGV4dD4ke0JPUklOR1NTTF9ST09UX0RJUn08LyV0ZXh0Pi9pbmNsdWRlCiAgICAgUFJJVkFURSA8JXRleHQ+JHtQUk9UT0JVRl9ST09UX0RJUn08LyV0ZXh0Pi9zcmMKLSAgICBQUklWQVRFIDwldGV4dD4ke1pMSUJfUk9PVF9ESVJ9PC8ldGV4dD4KKyAgICBQUklWQVRFIDwldGV4dD4ke1pMSUJfSU5DTFVERV9ESVJ9PC8ldGV4dD4KICAgICBQUklWQVRFIDwldGV4dD4ke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn08LyV0ZXh0Pi90aGlyZF9wYXJ0eS96bGliCiAgICkKIApAQCAtMTIzLDYgKzIxMywyMCBAQAogICAlIGVuZGZvcgogICApCiAgICUgZW5kaWYKKworICAlIGlmIGxlbihsaWIuZ2V0KCdwdWJsaWNfaGVhZGVycycsIFtdKSkgPiAwOgorICBmb3JlYWNoKF9oZHIKKyAgJSBmb3IgaGRyIGluIGxpYi5nZXQoJ3B1YmxpY19oZWFkZXJzJywgW10pOgorICAgICR7aGRyfQorICAlIGVuZGZvcgorICApCisgICAgc3RyaW5nKFJFUExBQ0UgImluY2x1ZGUvIiAiIiBfcGF0aCA8JXRleHQ+JHtfaGRyfTwvJXRleHQ+KQorICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3BhdGggPCV0ZXh0PiR7X3BhdGh9PC8ldGV4dD4gUEFUSCkKKyAgICBpbnN0YWxsKEZJTEVTIDwldGV4dD4ke19oZHJ9PC8ldGV4dD4KKyAgICAgIERFU1RJTkFUSU9OICI8JXRleHQ+JHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9LyR7X3BhdGh9PC8ldGV4dD4iCisgICAgKQorICBlbmRmb3JlYWNoKCkKKyAgJSBlbmRpZgogICA8LyVkZWY+CiAKICAgPCVkZWYgbmFtZT0iY2NfYmluYXJ5KHRndCkiPgpAQCAtMTUwLDMgKzI1NCwyMyBAQAogICAlIGVuZGlmCiAgIDwvJWRlZj4KIAorICA8JWRlZiBuYW1lPSJjY19pbnN0YWxsKHRndCkiPgorICBpbnN0YWxsKFRBUkdFVFMgJHt0Z3QubmFtZX0gRVhQT1JUIGdSUENUYXJnZXRzCisgICAgUlVOVElNRSBERVNUSU5BVElPTiA8JXRleHQ+JHtDTUFLRV9JTlNUQUxMX0JJTkRJUn08LyV0ZXh0PgorICAgIExJQlJBUlkgREVTVElOQVRJT04gPCV0ZXh0PiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9PC8ldGV4dD4KKyAgICBBUkNISVZFIERFU1RJTkFUSU9OIDwldGV4dD4ke0NNQUtFX0lOU1RBTExfTElCRElSfTwvJXRleHQ+CisgICkKKyAgPC8lZGVmPgorCisgIGluc3RhbGwoRVhQT1JUIGdSUENUYXJnZXRzCisgICAgREVTVElOQVRJT04gPCV0ZXh0PiR7Q01BS0VfSU5TVEFMTF9DTUFLRURJUn08LyV0ZXh0PgorICAgIE5BTUVTUEFDRSBnUlBDOjoKKyAgKQorCisgIGZvcmVhY2goX2NvbmZpZyBnUlBDQ29uZmlnIGdSUENDb25maWdWZXJzaW9uKQorICAgIGNvbmZpZ3VyZV9maWxlKHRvb2xzL2NtYWtlLzwldGV4dD4ke19jb25maWd9PC8ldGV4dD4uY21ha2UuaW4KKyAgICAgIDwldGV4dD4ke19jb25maWd9PC8ldGV4dD4uY21ha2UgQE9OTFkpCisgICAgaW5zdGFsbChGSUxFUyA8JXRleHQ+JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyR7X2NvbmZpZ308LyV0ZXh0Pi5jbWFrZQorICAgICAgREVTVElOQVRJT04gPCV0ZXh0PiR7Q01BS0VfSU5TVEFMTF9DTUFLRURJUn08LyV0ZXh0PgorICAgICkKKyAgZW5kZm9yZWFjaCgpCmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvTWFrZWZpbGUudGVtcGxhdGUgYi90ZW1wbGF0ZXMvTWFrZWZpbGUudGVtcGxhdGUKaW5kZXggY2IzMzY0My4uOWFmYzY1NiAxMDA2NDQKLS0tIGEvdGVtcGxhdGVzL01ha2VmaWxlLnRlbXBsYXRlCisrKyBiL3RlbXBsYXRlcy9NYWtlZmlsZS50ZW1wbGF0ZQpAQCAtNjQyLDggKzY0Miw4IEBACiAgIGVuZGlmCiAgIGVsc2UKICAgUENfTElCU19HUlBDWFggPSAtbHByb3RvYnVmCi0gIFBST1RPQ19QTFVHSU5TID0gJChQUk9UT0NfUExVR0lOU19BTEwpCiAgIGVuZGlmCisgIFBST1RPQ19QTFVHSU5TID0gJChQUk9UT0NfUExVR0lOU19BTEwpCiAgIGVsc2UKICAgaWZlcSAoJChIQVNfRU1CRURERURfUFJPVE9CVUYpLHRydWUpCiAgIFBST1RPQlVGX0RFUCA9ICQoTElCRElSKS8kKENPTkZJRykvcHJvdG9idWYvbGlicHJvdG9idWYuYQpkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL2dSUEMtQ29yZS5wb2RzcGVjLnRlbXBsYXRlIGIvdGVtcGxhdGVzL2dSUEMtQ29yZS5wb2RzcGVjLnRlbXBsYXRlCmluZGV4IDllZWVlMjIuLjEyZDA2YTcgMTAwNjQ0Ci0tLSBhL3RlbXBsYXRlcy9nUlBDLUNvcmUucG9kc3BlYy50ZW1wbGF0ZQorKysgYi90ZW1wbGF0ZXMvZ1JQQy1Db3JlLnBvZHNwZWMudGVtcGxhdGUKQEAgLTYyLDcgKzYyLDcgQEAKICAgJT4KICAgUG9kOjpTcGVjLm5ldyBkbyB8c3wKICAgICBzLm5hbWUgICAgID0gJ2dSUEMtQ29yZScKLSAgICB2ZXJzaW9uID0gJzAuMTQuMCcKKyAgICB2ZXJzaW9uID0gJzEuMC4wLXByZTEnCiAgICAgcy52ZXJzaW9uICA9IHZlcnNpb24KICAgICBzLnN1bW1hcnkgID0gJ0NvcmUgY3Jvc3MtcGxhdGZvcm0gZ1JQQyBsaWJyYXJ5LCB3cml0dGVuIGluIEMnCiAgICAgcy5ob21lcGFnZSA9ICdodHRwOi8vd3d3LmdycGMuaW8nCkBAIC03MSw3ICs3MSw3IEBACiAKICAgICBzLnNvdXJjZSA9IHsKICAgICAgIDpnaXQgPT4gJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMuZ2l0JywKLSAgICAgIDp0YWcgPT4gInJlbGVhc2UtI3t2ZXJzaW9uLmdzdWIoL1wuLywgJ18nKX0tb2JqZWN0aXZlYy0je3ZlcnNpb259IiwKKyAgICAgIDp0YWcgPT4gIm9iamVjdGl2ZS1jLXYje3ZlcnNpb259IiwKICAgICAgICMgVE9ETyhqY2FuaXphbGVzKTogRGVwZW5kIGV4cGxpY2l0bHkgb24gdGhlIG5hbm9wYiBwb2QsIGFuZCBkaXNhYmxlIHN1Ym1vZHVsZXMuCiAgICAgICA6c3VibW9kdWxlcyA9PiB0cnVlLAogICAgIH0KQEAgLTE0OSw3ICsxNDksNyBAQAogICAgICAgc3MuaGVhZGVyX21hcHBpbmdzX2RpciA9ICcuJwogICAgICAgc3MubGlicmFyaWVzID0gJ3onCiAgICAgICBzcy5kZXBlbmRlbmN5ICIje3MubmFtZX0vSW50ZXJmYWNlIiwgdmVyc2lvbgotICAgICAgc3MuZGVwZW5kZW5jeSAnQm9yaW5nU1NMJywgJ34+IDQuMCcKKyAgICAgIHNzLmRlcGVuZGVuY3kgJ0JvcmluZ1NTTCcsICd+PiA1LjAnCiAKICAgICAgICMgVG8gc2F2ZSB5b3UgZnJvbSBzY3JvbGxpbmcsIHRoaXMgaXMgdGhlIGxhc3QgcGFydCBvZiB0aGUgcG9kc3BlYy4KICAgICAgIHNzLnNvdXJjZV9maWxlcyA9ICR7cnVieV9tdWx0aWxpbmVfbGlzdChncnBjX3ByaXZhdGVfZmlsZXMobGlicyksIDIyKX0KZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9wYWNrYWdlLnhtbC50ZW1wbGF0ZSBiL3RlbXBsYXRlcy9wYWNrYWdlLnhtbC50ZW1wbGF0ZQppbmRleCA3NmM2ZmZmLi44N2IxMDM4IDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvcGFja2FnZS54bWwudGVtcGxhdGUKKysrIGIvdGVtcGxhdGVzL3BhY2thZ2UueG1sLnRlbXBsYXRlCkBAIC0xMiw3ICsxMiw3IEBACiAgICAgPGVtYWlsPmdycGMtcGFja2FnZXNAZ29vZ2xlLmNvbTwvZW1haWw+CiAgICAgPGFjdGl2ZT55ZXM8L2FjdGl2ZT4KICAgIDwvbGVhZD4KLSAgIDxkYXRlPjIwMTYtMDctMjE8L2RhdGU+CisgICA8ZGF0ZT4yMDE2LTA3LTI4PC9kYXRlPgogICAgPHRpbWU+MTY6MDY6MDc8L3RpbWU+CiAgICA8dmVyc2lvbj4KICAgICA8cmVsZWFzZT4ke3NldHRpbmdzLnBocF92ZXJzaW9uLnBocCgpfTwvcmVsZWFzZT4KQEAgLTI0LDcgKzI0LDcgQEAKICAgIDwvc3RhYmlsaXR5PgogICAgPGxpY2Vuc2U+QlNEPC9saWNlbnNlPgogICAgPG5vdGVzPgotICAtIFBIUDcgU3VwcG9ydCAjNzQ2NAorICAtIFBIUDcgU3VwcG9ydCBjb250aW51ZWQsIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uICM3NTQzCiAgICA8L25vdGVzPgogICAgPGNvbnRlbnRzPgogICAgIDxkaXIgYmFzZWluc3RhbGxkaXI9Ii8iIG5hbWU9Ii8iPgpAQCAtMjM0LDUgKzIzNCwyMCBAQAogICAtIFBIUDcgU3VwcG9ydCAjNzQ2NAogICAgICA8L25vdGVzPgogICAgIDwvcmVsZWFzZT4KKyAgICA8cmVsZWFzZT4KKyAgICAgPHZlcnNpb24+CisgICAgICA8cmVsZWFzZT4xLjAuMFJDMzwvcmVsZWFzZT4KKyAgICAgIDxhcGk+MS4wLjBSQzM8L2FwaT4KKyAgICAgPC92ZXJzaW9uPgorICAgICA8c3RhYmlsaXR5PgorICAgICAgPHJlbGVhc2U+c3RhYmxlPC9yZWxlYXNlPgorICAgICAgPGFwaT5zdGFibGU8L2FwaT4KKyAgICAgPC9zdGFiaWxpdHk+CisgICAgIDxkYXRlPjIwMTYtMDctMjg8L2RhdGU+CisgICAgIDxsaWNlbnNlPkJTRDwvbGljZW5zZT4KKyAgICAgPG5vdGVzPgorICAtIFBIUDcgU3VwcG9ydCBjb250aW51ZWQsIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uICM3NTQzCisgICAgIDwvbm90ZXM+CisgICAgPC9yZWxlYXNlPgogICAgPC9jaGFuZ2Vsb2c+CiAgIDwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9zcmMvY3NoYXJwL0dycGMuQ29yZS5UZXN0cy9wcm9qZWN0Lmpzb24udGVtcGxhdGUgYi90ZW1wbGF0ZXMvc3JjL2NzaGFycC9HcnBjLkNvcmUuVGVzdHMvcHJvamVjdC5qc29uLnRlbXBsYXRlCmluZGV4IGJjOWZhM2UuLmQxYWI5MzEgMTAwNjQ0Ci0tLSBhL3RlbXBsYXRlcy9zcmMvY3NoYXJwL0dycGMuQ29yZS5UZXN0cy9wcm9qZWN0Lmpzb24udGVtcGxhdGUKKysrIGIvdGVtcGxhdGVzL3NyYy9jc2hhcnAvR3JwYy5Db3JlLlRlc3RzL3Byb2plY3QuanNvbi50ZW1wbGF0ZQpAQCAtOCw3ICs4LDEwIEBACiAgICAgICB9LAogICAgICAgIk5ld3RvbnNvZnQuSnNvbiI6ICI4LjAuMyIsCiAgICAgICAiTlVuaXQiOiAiMy4yLjAiLAotICAgICAgIk5Vbml0TGl0ZSI6ICIzLjIuMC0qIgorICAgICAgIk5Vbml0TGl0ZSI6ICIzLjIuMC0qIiwKKyAgICAgICJOVW5pdC5Db25zb2xlUnVubmVyIjogIjMuMi4wIiwKKyAgICAgICJPcGVuQ292ZXIiOiAiNC42LjUxOSIsCisgICAgICAiUmVwb3J0R2VuZXJhdG9yIjogIjIuNC40LjAiCiAgICAgfSwKICAgICAiZnJhbWV3b3JrcyI6IHsKICAgICAgICJuZXQ0NSI6IHsgfSwKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9zcmMvY3NoYXJwL0dycGMuQ29yZS9wcm9qZWN0Lmpzb24udGVtcGxhdGUgYi90ZW1wbGF0ZXMvc3JjL2NzaGFycC9HcnBjLkNvcmUvcHJvamVjdC5qc29uLnRlbXBsYXRlCmluZGV4IGNkY2ViYzUuLjYzNTVkYjUgMTAwNjQ0Ci0tLSBhL3RlbXBsYXRlcy9zcmMvY3NoYXJwL0dycGMuQ29yZS9wcm9qZWN0Lmpzb24udGVtcGxhdGUKKysrIGIvdGVtcGxhdGVzL3NyYy9jc2hhcnAvR3JwYy5Db3JlL3Byb2plY3QuanNvbi50ZW1wbGF0ZQpAQCAtMTYsMTIgKzE2LDEyIEBACiAgICAgICAiZmlsZXMiOiB7CiAgICAgICAgICJtYXBwaW5ncyI6IHsKICAgICAgICAgICAiYnVpbGQvbmV0NDUvIjogIkdycGMuQ29yZS50YXJnZXRzIiwKLSAgICAgICAgICAiYnVpbGQvbmF0aXZlL2Jpbi93aW5kb3dzX3g4Ni8iOiAiLi4vbmF0aXZlbGlicy93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAiYnVpbGQvbmF0aXZlL2Jpbi93aW5kb3dzX3g2NC8iOiAiLi4vbmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIiwKLSAgICAgICAgICAiYnVpbGQvbmF0aXZlL2Jpbi9saW51eF94ODYvIjogIi4uL25hdGl2ZWxpYnMvbGludXhfeDg2L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgImJ1aWxkL25hdGl2ZS9iaW4vbGludXhfeDY0LyI6ICIuLi9uYXRpdmVsaWJzL2xpbnV4X3g2NC9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICJidWlsZC9uYXRpdmUvYmluL21hY29zeF94ODYvIjogIi4uL25hdGl2ZWxpYnMvbWFjb3N4X3g4Ni9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiLAotICAgICAgICAgICJidWlsZC9uYXRpdmUvYmluL21hY29zeF94NjQvIjogIi4uL25hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgInJ1bnRpbWVzL3dpbi9uYXRpdmUvZ3JwY19jc2hhcnBfZXh0Lng4Ni5kbGwiOiAiLi4vbmF0aXZlbGlicy93aW5kb3dzX3g4Ni9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAicnVudGltZXMvd2luL25hdGl2ZS9ncnBjX2NzaGFycF9leHQueDY0LmRsbCI6ICIuLi9uYXRpdmVsaWJzL3dpbmRvd3NfeDY0L2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICJydW50aW1lcy9saW51eC9uYXRpdmUvbGliZ3JwY19jc2hhcnBfZXh0Lng4Ni5zbyI6ICIuLi9uYXRpdmVsaWJzL2xpbnV4X3g4Ni9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICJydW50aW1lcy9saW51eC9uYXRpdmUvbGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi9uYXRpdmVsaWJzL2xpbnV4X3g2NC9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICJydW50aW1lcy9vc3gvbmF0aXZlL2xpYmdycGNfY3NoYXJwX2V4dC54ODYuZHlsaWIiOiAiLi4vbmF0aXZlbGlicy9tYWNvc3hfeDg2L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiIsCisgICAgICAgICAgInJ1bnRpbWVzL29zeC9uYXRpdmUvbGliZ3JwY19jc2hhcnBfZXh0Lng2NC5keWxpYiI6ICIuLi9uYXRpdmVsaWJzL21hY29zeF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICB9CiAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9zcmMvY3NoYXJwL2J1aWxkX29wdGlvbnMuaW5jbHVkZSBiL3RlbXBsYXRlcy9zcmMvY3NoYXJwL2J1aWxkX29wdGlvbnMuaW5jbHVkZQppbmRleCBhZTk2Yjk0Li4xNjlhNDVhIDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvc3JjL2NzaGFycC9idWlsZF9vcHRpb25zLmluY2x1ZGUKKysrIGIvdGVtcGxhdGVzL3NyYy9jc2hhcnAvYnVpbGRfb3B0aW9ucy5pbmNsdWRlCkBAIC0yMCwxMCArMjAsMTAgQEAKICAgICAgICAgICAiaW5jbHVkZSI6ICJkYXRhLyoiLAogICAgICAgICAgICUgZW5kaWYKICAgICAgICAgICAibWFwcGluZ3MiOiB7Ci0gICAgICAgICAgICAibmF0aXZlbGlicy93aW5kb3dzX3g2NC9ncnBjX2NzaGFycF9leHQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbGludXhfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvbWFjb3N4X3g2NC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54NjQuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMveDY0L0RlYnVnL2dycGNfY3NoYXJwX2V4dC5kbGwiLAorICAgICAgICAgICAgImdycGNfY3NoYXJwX2V4dC54ODYuZGxsIjogIi4uLy4uLy4uL3ZzcHJvamVjdHMvRGVidWcvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL2RiZy9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9kYmcvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpAQCAtNDIsMTAgKzQyLDEwIEBACiAgICAgICAgICAgImluY2x1ZGUiOiAiZGF0YS8qIiwKICAgICAgICAgICAlIGVuZGlmCiAgICAgICAgICAgIm1hcHBpbmdzIjogewotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194NjQvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL3g2NC9SZWxlYXNlL2dycGNfY3NoYXJwX2V4dC5kbGwiLAotICAgICAgICAgICAgIm5hdGl2ZWxpYnMvd2luZG93c194ODYvZ3JwY19jc2hhcnBfZXh0LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9saW51eF94NjQvbGliZ3JwY19jc2hhcnBfZXh0LnNvIjogIi4uLy4uLy4uL2xpYnMvb3B0L2xpYmdycGNfY3NoYXJwX2V4dC5zbyIsCi0gICAgICAgICAgICAibmF0aXZlbGlicy9tYWNvc3hfeDY0L2xpYmdycGNfY3NoYXJwX2V4dC5keWxpYiI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuZHlsaWIiCisgICAgICAgICAgICAiZ3JwY19jc2hhcnBfZXh0Lng2NC5kbGwiOiAiLi4vLi4vLi4vdnNwcm9qZWN0cy94NjQvUmVsZWFzZS9ncnBjX2NzaGFycF9leHQuZGxsIiwKKyAgICAgICAgICAgICJncnBjX2NzaGFycF9leHQueDg2LmRsbCI6ICIuLi8uLi8uLi92c3Byb2plY3RzL1JlbGVhc2UvZ3JwY19jc2hhcnBfZXh0LmRsbCIsCisgICAgICAgICAgICAibGliZ3JwY19jc2hhcnBfZXh0Lng2NC5zbyI6ICIuLi8uLi8uLi9saWJzL29wdC9saWJncnBjX2NzaGFycF9leHQuc28iLAorICAgICAgICAgICAgImxpYmdycGNfY3NoYXJwX2V4dC54NjQuZHlsaWIiOiAiLi4vLi4vLi4vbGlicy9vcHQvbGliZ3JwY19jc2hhcnBfZXh0LmR5bGliIgogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL3NyYy9ub2RlL2hlYWx0aF9jaGVjay9wYWNrYWdlLmpzb24udGVtcGxhdGUgYi90ZW1wbGF0ZXMvc3JjL25vZGUvaGVhbHRoX2NoZWNrL3BhY2thZ2UuanNvbi50ZW1wbGF0ZQppbmRleCAxMjQ4Y2VkLi45NmI5NzQ4IDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvc3JjL25vZGUvaGVhbHRoX2NoZWNrL3BhY2thZ2UuanNvbi50ZW1wbGF0ZQorKysgYi90ZW1wbGF0ZXMvc3JjL25vZGUvaGVhbHRoX2NoZWNrL3BhY2thZ2UuanNvbi50ZW1wbGF0ZQpAQCAtMjEsMTEgKzIxLDExIEBACiAgICAgICAibG9kYXNoIjogIl4zLjkuMyIsCiAgICAgICAiZ29vZ2xlLXByb3RvYnVmIjogIl4zLjAuMC1hbHBoYS41IgogICAgIH0sCi0gICAgImZpbGVzIjogeworICAgICJmaWxlcyI6IFsKICAgICAgICJMSUNFTlNFIiwKICAgICAgICJoZWFsdGguanMiLAogICAgICAgInYxIgotICAgIH0sCisgICAgXSwKICAgICAibWFpbiI6ICJzcmMvbm9kZS9pbmRleC5qcyIsCiAgICAgImxpY2Vuc2UiOiAiQlNELTMtQ2xhdXNlIgogICB9CmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2ltcG9ydHMuZ2VuZXJhdGVkLmMudGVtcGxhdGUgYi90ZW1wbGF0ZXMvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2ltcG9ydHMuZ2VuZXJhdGVkLmMudGVtcGxhdGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4M2JjY2EuLjAwMDAwMDAKLS0tIGEvdGVtcGxhdGVzL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9pbXBvcnRzLmdlbmVyYXRlZC5jLnRlbXBsYXRlCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotJVlBTUwgMS4yCi0tLS0gfAotICAvKgotICAgKgotICAgKiBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KLSAgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgICoKLSAgICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAgICogbWV0OgotICAgKgotICAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAgICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICAgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gICAqIGRpc3RyaWJ1dGlvbi4KLSAgICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICAgKgotICAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICAgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAgICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICAgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAgICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gICAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAgICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gICAqCi0gICAqLwotCi0gIC8qIFRPRE8oYXRhc2gpIHJlbW92ZSBjcnVmdCAqLwotICAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3BvcnRfcGxhdGZvcm0uaD4KLQotICAjaW5jbHVkZSAiaW1wb3J0cy5nZW5lcmF0ZWQuaCIKLQotCmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2ltcG9ydHMuZ2VuZXJhdGVkLmgudGVtcGxhdGUgYi90ZW1wbGF0ZXMvc3JjL3B5dGhvbi9ncnBjaW8vZ3JwYy9fY3l0aG9uL2ltcG9ydHMuZ2VuZXJhdGVkLmgudGVtcGxhdGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NWJjM2QuLjAwMDAwMDAKLS0tIGEvdGVtcGxhdGVzL3NyYy9weXRob24vZ3JwY2lvL2dycGMvX2N5dGhvbi9pbXBvcnRzLmdlbmVyYXRlZC5oLnRlbXBsYXRlCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotJVlBTUwgMS4yCi0tLS0gfAotICAvKgotICAgKgotICAgKiBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KLSAgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgICoKLSAgICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAgICogbWV0OgotICAgKgotICAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAgICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICAgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gICAqIGRpc3RyaWJ1dGlvbi4KLSAgICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICAgKgotICAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICAgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICAgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAgICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICAgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAgICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gICAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAgICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gICAqCi0gICAqLwotCi0gIC8qIFRPRE8oYXRhc2gpIHJlbW92ZSBjcnVmdCAqLwotICAjaWZuZGVmIFBZR1JQQ19DWVRIT05fV0lORE9XU19JTVBPUlRTX0hfCi0gICNkZWZpbmUgUFlHUlBDX0NZVEhPTl9XSU5ET1dTX0lNUE9SVFNfSF8KLQotICAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3BvcnRfcGxhdGZvcm0uaD4KLQotICAjaW5jbHVkZSA8Z3JwYy9ieXRlX2J1ZmZlci5oPgotICAjaW5jbHVkZSA8Z3JwYy9ieXRlX2J1ZmZlcl9yZWFkZXIuaD4KLSAgI2luY2x1ZGUgPGdycGMvY29tcHJlc3Npb24uaD4KLSAgI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgotICAjaW5jbHVkZSA8Z3JwYy9ncnBjX3NlY3VyaXR5Lmg+Ci0gICNpbmNsdWRlIDxncnBjL3N1cHBvcnQvYWxsb2MuaD4KLSAgI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9zbGljZS5oPgotICAjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RpbWUuaD4KLSAgI2luY2x1ZGUgPGdycGMvc3RhdHVzLmg+Ci0KLSAgI2VuZGlmCmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL2dycGNfdmVyc2lvbi5weS50ZW1wbGF0ZSBiL3RlbXBsYXRlcy9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZ3JwY192ZXJzaW9uLnB5LnRlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4OTQ2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZW1wbGF0ZXMvc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL2dycGNfdmVyc2lvbi5weS50ZW1wbGF0ZQpAQCAtMCwwICsxLDM0IEBACislWUFNTCAxLjIKKy0tLSB8CisgICMgQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisgICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgIworICAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAgIyBtZXQ6CisgICMKKyAgIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgICMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICAjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAgIyBkaXN0cmlidXRpb24uCisgICMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICAjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgICMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAgIworICAjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICAjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgICMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgICMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICAjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICAjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICAjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAgIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAgIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisgICMgQVVUTy1HRU5FUkFURUQgRlJPTSBgJFJFUE9fUk9PVC90ZW1wbGF0ZXMvc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL2dycGNfdmVyc2lvbi5weS50ZW1wbGF0ZWAhISEKKworICBWRVJTSU9OPScke3NldHRpbmdzLnB5dGhvbl92ZXJzaW9uLnBlcDQ0MCgpfScKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL2ludGVyb3B0ZXN0L2dycGNfaW50ZXJvcF9waHAvRG9ja2VyZmlsZS50ZW1wbGF0ZSBiL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL2ludGVyb3B0ZXN0L2dycGNfaW50ZXJvcF9waHAvRG9ja2VyZmlsZS50ZW1wbGF0ZQppbmRleCA2MjMyZTA4Li5mMzdlYWRhIDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9pbnRlcm9wdGVzdC9ncnBjX2ludGVyb3BfcGhwL0RvY2tlcmZpbGUudGVtcGxhdGUKKysrIGIvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvaW50ZXJvcHRlc3QvZ3JwY19pbnRlcm9wX3BocC9Eb2NrZXJmaWxlLnRlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogJVlBTUwgMS4yCiAtLS0gfAotICAjIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgorICAjIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgogICAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICMKICAgIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMyLDM0ICszMiw4IEBACiAgIEZST00gZGViaWFuOmplc3NpZQogICAKICAgPCVpbmNsdWRlIGZpbGU9Ii4uLy4uL2FwdF9nZXRfYmFzaWMuaW5jbHVkZSIvPgotICA8JWluY2x1ZGUgZmlsZT0iLi4vLi4vcHl0aG9uX2RlcHMuaW5jbHVkZSIvPgogICA8JWluY2x1ZGUgZmlsZT0iLi4vLi4vcnVieV9kZXBzLmluY2x1ZGUiLz4KICAgPCVpbmNsdWRlIGZpbGU9Ii4uLy4uL3BocF9kZXBzLmluY2x1ZGUiLz4KICAgPCVpbmNsdWRlIGZpbGU9Ii4uLy4uL3J1bl90ZXN0c19hZGRvbnMuaW5jbHVkZSIvPgotICAjIHJvbm46IGEgcnVieSB0b29sIHVzZWQgdG8gY29udmVydCBtYXJrZG93biB0byBtYW4gcGFnZXMsIHVzZWQgZHVyaW5nIHRoZQotICAjIGluc3RhbGwgb2YgUHJvdG9idWYgZXh0ZW5zaW9ucwotICAjCi0gICMgcmFrZTogYSBydWJ5IHZlcnNpb24gb2YgbWFrZSB1c2VkIHRvIGJ1aWxkIHRoZSBQSFAgUHJvdG9idWYgZXh0ZW5zaW9uCi0gIFJVTiAvYmluL2Jhc2ggLWwgLWMgInJ2bSBhbGwgZG8gZ2VtIGluc3RhbGwgcm9ubiByYWtlIgotICAKLSAgIyBJbnN0YWxsIGNvbXBvc2VyCi0gIFJVTiBjdXJsIC1zUyBodHRwczovL2dldGNvbXBvc2VyLm9yZy9pbnN0YWxsZXIgfCBwaHAKLSAgUlVOIG12IGNvbXBvc2VyLnBoYXIgL3Vzci9sb2NhbC9iaW4vY29tcG9zZXIKLSAgCi0gICMgQXMgYW4gYXR0ZW1wdCB0byB3b3JrIGFyb3VuZCAjNDIxMiwgdHJ5IHRvIHByZWZldGNoIFByb3RvYnVmLVBIUCBkZXBlbmRlbmN5Ci0gICMgaW50byBjb21wb3NlciBjYWNoZSB0byBwcmV2ZW50ICJjb21wb3NlciBpbnN0YWxsIiBmcm9tIGNsb25pbmcgb24gZWFjaCBidWlsZC4KLSAgUlVOIGdpdCBjbG9uZSAtLW1pcnJvciBodHRwczovL2dpdGh1Yi5jb20vc3RhbmxleS1jaGV1bmcvUHJvdG9idWYtUEhQLmdpdCAkeydcXCd9Ci0gICAgL3Jvb3QvLmNvbXBvc2VyL2NhY2hlL3Zjcy9naXQtZ2l0aHViLmNvbS1zdGFubGV5LWNoZXVuZy1Qcm90b2J1Zi1QSFAuZ2l0LwotICAKLSAgIyBEb3dubG9hZCB0aGUgcGF0Y2hlZCBQSFAgcHJvdG9idWYgc28gdGhhdCBQSFAgZ1JQQyBjbGllbnRzIGNhbiBiZSBnZW5lcmF0ZWQKLSAgIyBmcm9tIHByb3RvMyBzY2hlbWFzLgotICBSVU4gZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFubGV5LWNoZXVuZy9Qcm90b2J1Zi1QSFAuZ2l0IC92YXIvbG9jYWwvZ2l0L3Byb3RvYnVmLXBocAotICAKLSAgUlVOIC9iaW4vYmFzaCAtbCAtYyAicnZtIHVzZSBydWJ5LTIuMSAkeydcXCd9Ci0gICAgJiYgY2QgL3Zhci9sb2NhbC9naXQvcHJvdG9idWYtcGhwICR7J1xcJ30KLSAgICAmJiBydm0gYWxsIGRvIHJha2UgcGVhcjpwYWNrYWdlIHZlcnNpb249MS4wICR7J1xcJ30KLSAgICAmJiBwZWFyIGluc3RhbGwgUHJvdG9idWYtMS4wLnRneiIKLSAgCi0gICMgRGVmaW5lIHRoZSBkZWZhdWx0IGNvbW1hbmQuCi0gIENNRCBbImJhc2giXQorICA8JWluY2x1ZGUgZmlsZT0iLi4vLi4vcGhwX2NvbW1vbl9kZXBzLmluY2x1ZGUiLz4KICAgCmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9pbnRlcm9wdGVzdC9ncnBjX2ludGVyb3BfcGhwNy9Eb2NrZXJmaWxlLnRlbXBsYXRlIGIvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvaW50ZXJvcHRlc3QvZ3JwY19pbnRlcm9wX3BocDcvRG9ja2VyZmlsZS50ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjE1N2VlCi0tLSAvZGV2L251bGwKKysrIGIvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvaW50ZXJvcHRlc3QvZ3JwY19pbnRlcm9wX3BocDcvRG9ja2VyZmlsZS50ZW1wbGF0ZQpAQCAtMCwwICsxLDM3IEBACislWUFNTCAxLjIKKy0tLSB8CisgICMgQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisgICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgIworICAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAgIyBtZXQ6CisgICMKKyAgIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAgIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgICMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICAjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAgIyBkaXN0cmlidXRpb24uCisgICMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICAjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgICMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAgIworICAjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAgIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICAjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICAjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgICMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgICMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICAjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICAjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICAjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAgIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAgIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICAKKyAgRlJPTSBkZWJpYW46amVzc2llCisgIAorICA8JWluY2x1ZGUgZmlsZT0iLi4vLi4vcGhwN19kZXBzLmluY2x1ZGUiLz4KKyAgPCVpbmNsdWRlIGZpbGU9Ii4uLy4uL3J1YnlfZGVwcy5pbmNsdWRlIi8+CisgIDwlaW5jbHVkZSBmaWxlPSIuLi8uLi9ydW5fdGVzdHNfYWRkb25zLmluY2x1ZGUiLz4KKyAgPCVpbmNsdWRlIGZpbGU9Ii4uLy4uL3BocF9jb21tb25fZGVwcy5pbmNsdWRlIi8+CmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9waHA3X2RlcHMuaW5jbHVkZSBiL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL3BocDdfZGVwcy5pbmNsdWRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNGU1MDYKLS0tIC9kZXYvbnVsbAorKysgYi90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9waHA3X2RlcHMuaW5jbHVkZQpAQCAtMCwwICsxLDQ1IEBACisjPT09PT09PT09PT09PT09PT0KKyMgUEhQNyBkZXBlbmRlbmNpZXMKKworIyBJbnN0YWxsIEdpdCBhbmQgYmFzaWMgcGFja2FnZXMuCitSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC15ICR7J1xcJ30KKyAgYXV0b2NvbmYgJHsnXFwnfQorICBhdXRvbWFrZSAkeydcXCd9CisgIGJ1aWxkLWVzc2VudGlhbCAkeydcXCd9CisgIGNjYWNoZSAkeydcXCd9CisgIGN1cmwgJHsnXFwnfQorICBnaXQgJHsnXFwnfQorICBsaWJjdXJsNC1vcGVuc3NsLWRldiAkeydcXCd9CisgIGxpYmdtcC1kZXYgJHsnXFwnfQorICBsaWJnbXAzLWRldiAkeydcXCd9CisgIGxpYnNzbC1kZXYgJHsnXFwnfQorICBsaWJ0b29sICR7J1xcJ30KKyAgbGlieG1sMi1kZXYgJHsnXFwnfQorICBwa2ctY29uZmlnICR7J1xcJ30KKyAgcmUyYyAkeydcXCd9CisgIHRpbWUgJHsnXFwnfQorICB1bnppcCAkeydcXCd9CisgIHdnZXQgJHsnXFwnfQorICB6aXAgJiYgYXB0LWdldCBjbGVhbgorCisjIEluc3RhbGwgb3RoZXIgZGVwZW5kZW5jaWVzCitSVU4gbG4gLXNmIC91c3IvaW5jbHVkZS94ODZfNjQtbGludXgtZ251L2dtcC5oIC91c3IvaW5jbHVkZS9nbXAuaAorUlVOIHdnZXQgaHR0cDovL2Z0cC5nbnUub3JnL2dudS9iaXNvbi9iaXNvbi0yLjYuNC50YXIuZ3ogLU8gL3Zhci9sb2NhbC9iaXNvbi0yLjYuNC50YXIuZ3oKK1JVTiBjZCAvdmFyL2xvY2FsICR7J1xcJ30KKyAgJiYgdGFyIC16eHZmIGJpc29uLTIuNi40LnRhci5neiAkeydcXCd9CisgICYmIGNkIC92YXIvbG9jYWwvYmlzb24tMi42LjQgJHsnXFwnfQorICAmJiAuL2NvbmZpZ3VyZSAkeydcXCd9CisgICYmIG1ha2UgJHsnXFwnfQorICAmJiBtYWtlIGluc3RhbGwKKworIyBDb21waWxlIFBIUDcgZnJvbSBzb3VyY2UKK1JVTiBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3BocC9waHAtc3JjIC92YXIvbG9jYWwvZ2l0L3BocC1zcmMKK1JVTiBjZCAvdmFyL2xvY2FsL2dpdC9waHAtc3JjICR7J1xcJ30KKyAgJiYgZ2l0IGNoZWNrb3V0IFBIUC03LjAuOSAkeydcXCd9CisgICYmIC4vYnVpbGRjb25mIC0tZm9yY2UgJHsnXFwnfQorICAmJiAuL2NvbmZpZ3VyZSAkeydcXCd9CisgIC0td2l0aC1nbXAgJHsnXFwnfQorICAtLXdpdGgtb3BlbnNzbCAkeydcXCd9CisgIC0td2l0aC16bGliICR7J1xcJ30KKyAgJiYgbWFrZSAkeydcXCd9CisgICYmIG1ha2UgaW5zdGFsbApkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvcGhwX2NvbW1vbl9kZXBzLmluY2x1ZGUgYi90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9waHBfY29tbW9uX2RlcHMuaW5jbHVkZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODM5YmI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvcGhwX2NvbW1vbl9kZXBzLmluY2x1ZGUKQEAgLTAsMCArMSwyMSBAQAorIyByb25uOiBhIHJ1YnkgdG9vbCB1c2VkIHRvIGNvbnZlcnQgbWFya2Rvd24gdG8gbWFuIHBhZ2VzLCB1c2VkIGR1cmluZyB0aGUKKyMgaW5zdGFsbCBvZiBQcm90b2J1ZiBleHRlbnNpb25zCisjCisjIHJha2U6IGEgcnVieSB2ZXJzaW9uIG9mIG1ha2UgdXNlZCB0byBidWlsZCB0aGUgUEhQIFByb3RvYnVmIGV4dGVuc2lvbgorUlVOIC9iaW4vYmFzaCAtbCAtYyAicnZtIGFsbCBkbyBnZW0gaW5zdGFsbCByb25uIHJha2UiCisKKyMgSW5zdGFsbCBjb21wb3NlcgorUlVOIGN1cmwgLXNTIGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2luc3RhbGxlciB8IHBocAorUlVOIG12IGNvbXBvc2VyLnBoYXIgL3Vzci9sb2NhbC9iaW4vY29tcG9zZXIKKworIyBEb3dubG9hZCB0aGUgcGF0Y2hlZCBQSFAgcHJvdG9idWYgc28gdGhhdCBQSFAgZ1JQQyBjbGllbnRzIGNhbiBiZSBnZW5lcmF0ZWQKKyMgZnJvbSBwcm90bzMgc2NoZW1hcy4KK1JVTiBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N0YW5sZXktY2hldW5nL1Byb3RvYnVmLVBIUC5naXQgL3Zhci9sb2NhbC9naXQvcHJvdG9idWYtcGhwCisKK1JVTiAvYmluL2Jhc2ggLWwgLWMgInJ2bSB1c2UgcnVieS0yLjEgJHsnXFwnfQorICAmJiBjZCAvdmFyL2xvY2FsL2dpdC9wcm90b2J1Zi1waHAgJHsnXFwnfQorICAmJiBydm0gYWxsIGRvIHJha2UgcGVhcjpwYWNrYWdlIHZlcnNpb249MS4wICR7J1xcJ30KKyAgJiYgcGVhciBpbnN0YWxsIFByb3RvYnVmLTEuMC50Z3oiCisKKyMgRGVmaW5lIHRoZSBkZWZhdWx0IGNvbW1hbmQuCitDTUQgWyJiYXNoIl0KZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL3BocF9kZXBzLmluY2x1ZGUgYi90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9waHBfZGVwcy5pbmNsdWRlCmluZGV4IDczOTA0OWIuLmRhMDcxZTIgMTAwNjQ0Ci0tLSBhL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL3BocF9kZXBzLmluY2x1ZGUKKysrIGIvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvcGhwX2RlcHMuaW5jbHVkZQpAQCAtMywxMSArMyw1IEBACiAKICMgSW5zdGFsbCBkZXBlbmRlbmNpZXMKIAotUlVOIC9iaW4vYmFzaCAtbCAtYyAiZWNobyAnZGViIGh0dHA6Ly9wYWNrYWdlcy5kb3RkZWIub3JnIHdoZWV6eS1waHA1NSBhbGwnICR7J1xcJ30KLSAgICA+PiAvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9kb3RkZWIubGlzdCIKLVJVTiAvYmluL2Jhc2ggLWwgLWMgImVjaG8gJ2RlYi1zcmMgaHR0cDovL3BhY2thZ2VzLmRvdGRlYi5vcmcgd2hlZXp5LXBocDU1IGFsbCcgJHsnXFwnfQotICAgID4+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL2RvdGRlYi5saXN0IgotUlVOIHdnZXQgaHR0cDovL3d3dy5kb3RkZWIub3JnL2RvdGRlYi5ncGcgLU8tIHwgYXB0LWtleSBhZGQgLQotCiBSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC15ICR7J1xcJ30KICAgICBnaXQgcGhwNSBwaHA1LWRldiBwaHB1bml0IHVuemlwCmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9zdHJlc3NfdGVzdC9ncnBjX2ludGVyb3Bfc3RyZXNzX3BocC9Eb2NrZXJmaWxlLnRlbXBsYXRlIGIvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvc3RyZXNzX3Rlc3QvZ3JwY19pbnRlcm9wX3N0cmVzc19waHAvRG9ja2VyZmlsZS50ZW1wbGF0ZQppbmRleCBmOGRjMDc5Li4xM2EyNTBlIDEwMDY0NAotLS0gYS90ZW1wbGF0ZXMvdG9vbHMvZG9ja2VyZmlsZS9zdHJlc3NfdGVzdC9ncnBjX2ludGVyb3Bfc3RyZXNzX3BocC9Eb2NrZXJmaWxlLnRlbXBsYXRlCisrKyBiL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL3N0cmVzc190ZXN0L2dycGNfaW50ZXJvcF9zdHJlc3NfcGhwL0RvY2tlcmZpbGUudGVtcGxhdGUKQEAgLTQ3LDExICs0Nyw2IEBACiAgIFJVTiBjdXJsIC1zUyBodHRwczovL2dldGNvbXBvc2VyLm9yZy9pbnN0YWxsZXIgfCBwaHAKICAgUlVOIG12IGNvbXBvc2VyLnBoYXIgL3Vzci9sb2NhbC9iaW4vY29tcG9zZXIKICAgCi0gICMgQXMgYW4gYXR0ZW1wdCB0byB3b3JrIGFyb3VuZCAjNDIxMiwgdHJ5IHRvIHByZWZldGNoIFByb3RvYnVmLVBIUCBkZXBlbmRlbmN5Ci0gICMgaW50byBjb21wb3NlciBjYWNoZSB0byBwcmV2ZW50ICJjb21wb3NlciBpbnN0YWxsIiBmcm9tIGNsb25pbmcgb24gZWFjaCBidWlsZC4KLSAgUlVOIGdpdCBjbG9uZSAtLW1pcnJvciBodHRwczovL2dpdGh1Yi5jb20vc3RhbmxleS1jaGV1bmcvUHJvdG9idWYtUEhQLmdpdCAkeydcXCd9Ci0gICAgL3Jvb3QvLmNvbXBvc2VyL2NhY2hlL3Zjcy9naXQtZ2l0aHViLmNvbS1zdGFubGV5LWNoZXVuZy1Qcm90b2J1Zi1QSFAuZ2l0LwotICAKICAgIyBEb3dubG9hZCB0aGUgcGF0Y2hlZCBQSFAgcHJvdG9idWYgc28gdGhhdCBQSFAgZ1JQQyBjbGllbnRzIGNhbiBiZSBnZW5lcmF0ZWQKICAgIyBmcm9tIHByb3RvMyBzY2hlbWFzLgogICBSVU4gZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFubGV5LWNoZXVuZy9Qcm90b2J1Zi1QSFAuZ2l0IC92YXIvbG9jYWwvZ2l0L3Byb3RvYnVmLXBocApkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9waHA3X2plc3NpZV94NjQvRG9ja2VyZmlsZS50ZW1wbGF0ZSBiL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL3Rlc3QvcGhwN19qZXNzaWVfeDY0L0RvY2tlcmZpbGUudGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZhMjEzZAotLS0gL2Rldi9udWxsCisrKyBiL3RlbXBsYXRlcy90b29scy9kb2NrZXJmaWxlL3Rlc3QvcGhwN19qZXNzaWVfeDY0L0RvY2tlcmZpbGUudGVtcGxhdGUKQEAgLTAsMCArMSwzOCBAQAorJVlBTUwgMS4yCistLS0gfAorICAjIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICMKKyAgIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgICMgbWV0OgorICAjCisgICMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICAjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAgIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgICMgZGlzdHJpYnV0aW9uLgorICAjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAgIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICAjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgICMKKyAgIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgICMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAgIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAgIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICAjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICAjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAgIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAgIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAgIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAgCisgIEZST00gZGViaWFuOmplc3NpZQorICAKKyAgPCVpbmNsdWRlIGZpbGU9Ii4uLy4uL3BocDdfZGVwcy5pbmNsdWRlIi8+CisgIDwlaW5jbHVkZSBmaWxlPSIuLi8uLi9weXRob25fZGVwcy5pbmNsdWRlIi8+CisgIDwlaW5jbHVkZSBmaWxlPSIuLi8uLi9ydW5fdGVzdHNfYWRkb25zLmluY2x1ZGUiLz4KKyAgIyBEZWZpbmUgdGhlIGRlZmF1bHQgY29tbWFuZC4KKyAgQ01EIFsiYmFzaCJdCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL1JFQURNRSBiL3Rlc3QvY29yZS9jZW5zdXMvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MzYzYjcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL1JFQURNRQpAQCAtMCwwICsxLDcgQEAKK1Rlc3Qgc291cmNlIGFuZCBkYXRhIGZpbGVzIGZvciBDZW5zdXMuCisKK2JpbmFyeSBwcm90byBmaWxlcyAoKi5wYikgaW4gZGF0YSBkaXJlY3RvcnkgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSAqLnR4dCBmaWxlLAordmlhOgorCitCQVNFPSJmaWxlbmFtZSIKK2NhdCAkQkFTRS50eHQgfCBwcm90b2MgLS1lbmNvZGU9Z29vZ2xlLmNlbnN1cy5SZXNvdXJjZSBjZW5zdXMucHJvdG8gPiAkQkFTRS5wYgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2VtcHR5X25hbWUucGIgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZW1wdHlfbmFtZS5wYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDU0NzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX2VtcHR5X25hbWUucGIKQEAgLTAsMCArMSBAQAorGgMSAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZW1wdHlfbmFtZS50eHQgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZW1wdHlfbmFtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxZmQzMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9lbXB0eV9uYW1lLnR4dApAQCAtMCwwICsxLDUgQEAKKyMgTmFtZSBpcyBwcmVzZW50LCBidXQgZW1wdHkuCituYW1lIDogJycKK3VuaXQgeworICBudW1lcmF0b3IgOiBTRUNTCit9CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZnVsbC5wYiBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9mdWxsLnBiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YzZhMmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZnVsbC5wYgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZnVsbC50eHQgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZnVsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhMmZhZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9mdWxsLnR4dApAQCAtMCwwICsxLDkgQEAKKyMgQSBmdWxsIHJlc291cmNlIGRlZmluaXRpb24gLSBhbGwgZmllbGRzIGZpbGxlZCBvdXQuCituYW1lIDogJ2Z1bGxfcmVzb3VyY2UnCitkZXNjcmlwdGlvbiA6ICdBIHJlc291cmNlIHdpdGggZXZlcnl0aGluZyBkZWZpbmVkJwordW5pdCB7CisgICMgTWVnYWJpdHMgcGVyIHNlY29uZC4KKyAgcHJlZml4IDogNgorICBudW1lcmF0b3IgOiBCSVRTCisgIGRlbm9taW5hdG9yIDogU0VDUworfQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX21pbmltYWxfZ29vZC5wYiBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9taW5pbWFsX2dvb2QucGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzEwMGM0NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9taW5pbWFsX2dvb2QucGIKQEAgLTAsMCArMSwyIEBACisKKwxtaW5pbWFsX2dvb2QaAxIBAwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9taW5pbWFsX2dvb2QudHh0IGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX21pbmltYWxfZ29vZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdhN2U3MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9taW5pbWFsX2dvb2QudHh0CkBAIC0wLDAgKzEsNSBAQAorIyBBIG1pbmltYWwgImdvb2QiIFJlc291cmNlIGRlZmluaXRpb246IGhhcyBhIG5hbWUgYW5kIG51bWVyYXRvci91bml0LgorbmFtZSA6ICdtaW5pbWFsX2dvb2QnCit1bml0IHsKKyAgbnVtZXJhdG9yIDogU0VDUworfQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX25hbWUucGIgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fbmFtZS5wYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDU0NzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX25hbWUucGIKQEAgLTAsMCArMSBAQAorGgMSAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fbmFtZS50eHQgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fbmFtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxMmE5MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub19uYW1lLnR4dApAQCAtMCwwICsxLDQgQEAKKyMgVGhlIG1pbmltYWwgZ29vZCBSZXNvdXJjZSB3aXRob3V0IGEgbmFtZS4KK3VuaXQgeworICBudW1lcmF0b3IgOiBTRUNTCit9CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fbnVtZXJhdG9yLnBiIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX251bWVyYXRvci5wYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTVjY2VlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX251bWVyYXRvci5wYgpAQCAtMCwwICsxLDIgQEAKKworFXJlc291cmNlX25vX251bWVyYXRvchoOCP3//////////wEaAQMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fbnVtZXJhdG9yLnR4dCBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub19udW1lcmF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMWZlYzcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fbnVtZXJhdG9yLnR4dApAQCAtMCwwICsxLDYgQEAKKyMgUmVzb3VyY2Ugd2l0aG91dCBhIG51bWVyYXRvcgorbmFtZSA6ICdyZXNvdXJjZV9ub19udW1lcmF0b3InCit1bml0IHsKKyAgcHJlZml4IDogLTMKKyAgZGVub21pbmF0b3IgOiBTRUNTCit9CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fdW5pdC5wYiBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub191bml0LnBiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkY2EyNjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fdW5pdC5wYgpAQCAtMCwwICsxLDIgQEAKKworEHJlc291cmNlX25vX3VuaXQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fdW5pdC50eHQgYi90ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2Vfbm9fdW5pdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVkNTExNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub191bml0LnR4dApAQCAtMCwwICsxLDIgQEAKKyMgVGhlIG1pbmltYWwgZ29vZCByZXNvdXJjZSB3aXRob3V0IGEgdW5pdAorbmFtZSA6ICdyZXNvdXJjZV9ub191bml0JwpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NlbnN1cy9yZXNvdXJjZV90ZXN0LmMgYi90ZXN0L2NvcmUvY2Vuc3VzL3Jlc291cmNlX3Rlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTU1NmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2NlbnN1cy9yZXNvdXJjZV90ZXN0LmMKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKgorICogQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIgorI2luY2x1ZGUgPGdycGMvY2Vuc3VzLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L2xvZy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9wb3J0X3BsYXRmb3JtLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIKKyNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC90ZXN0X2NvbmZpZy5oIgorCisvLyBUZXN0IGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBmb3IgZGVhbGluZyB3aXRoIFJlc291cmNlcy4KKworLy8gSnVzdCBzdGFydHVwIGFuZCBzaHV0ZG93biByZXNvdXJjZXMgc3Vic3lzdGVtLgorc3RhdGljIHZvaWQgdGVzdF9lbmFibGVfZGlzYWJsZSgpIHsKKyAgaW5pdGlhbGl6ZV9yZXNvdXJjZXMoKTsKKyAgc2h1dGRvd25fcmVzb3VyY2VzKCk7Cit9CisKKy8vIEEgYmxhbmsvZW1wdHkgaW5pdGlhbGl6YXRpb24gc2hvdWxkIG5vdCB3b3JrLgorc3RhdGljIHZvaWQgdGVzdF9lbXB0eV9kZWZpbml0aW9uKCkgeworICBpbml0aWFsaXplX3Jlc291cmNlcygpOworICBpbnQzMl90IHJpZCA9IGNlbnN1c19kZWZpbmVfcmVzb3VyY2UoTlVMTCwgMCk7CisgIEdQUl9BU1NFUlQocmlkID09IC0xKTsKKyAgdWludDhfdCBidWZmZXJbNTBdID0gezB9OworICByaWQgPSBjZW5zdXNfZGVmaW5lX3Jlc291cmNlKGJ1ZmZlciwgNTApOworICBHUFJfQVNTRVJUKHJpZCA9PSAtMSk7CisgIHNodXRkb3duX3Jlc291cmNlcygpOworfQorCisvLyBHaXZlbiBhIGZpbGUgbmFtZSwgcmVhZCByYXcgcHJvdG8gYW5kIGRlZmluZSB0aGUgcmVzb3VyY2UgaW5jbHVkZWQgd2l0aGluLgorLy8gUmV0dXJucyByZXNvdXJjZSBpZCBmcm9tIGNlbnN1c19kZWZpbmVfcmVzb3VyY2UoKS4KK3N0YXRpYyBpbnQzMl90IGRlZmluZV9yZXNvdXJjZV9mcm9tX2ZpbGUoY29uc3QgY2hhciAqZmlsZSkgeworI2RlZmluZSBCVUZfU0laRSA1MTIKKyAgdWludDhfdCBidWZmZXJbQlVGX1NJWkVdOworICBGSUxFICppbnB1dCA9IGZvcGVuKGZpbGUsICJyYiIpOworICBHUFJfQVNTRVJUKGlucHV0ICE9IE5VTEwpOworICBzaXplX3QgbmJ5dGVzID0gZnJlYWQoYnVmZmVyLCAxLCBCVUZfU0laRSwgaW5wdXQpOworICBHUFJfQVNTRVJUKG5ieXRlcyAhPSAwICYmIG5ieXRlcyA8IEJVRl9TSVpFICYmIGZlb2YoaW5wdXQpICYmICFmZXJyb3IoaW5wdXQpKTsKKyAgaW50MzJfdCByaWQgPSBjZW5zdXNfZGVmaW5lX3Jlc291cmNlKGJ1ZmZlciwgbmJ5dGVzKTsKKyAgR1BSX0FTU0VSVChmY2xvc2UoaW5wdXQpID09IDApOworICByZXR1cm4gcmlkOworfQorCisvLyBUZXN0IGRlZmluaXRpb24gb2YgYSBzaW5nbGUgcmVzb3VyY2UsIHVzaW5nIGEgcHJvdG8gcmVhZCBmcm9tIGEgZmlsZS4gVGhlCisvLyBgc3VjY2VlZGAgcGFyYW1ldGVyIGluZGljYXRlcyB3aGV0aGVyIHdlIGV4cGVjdCB0aGUgZGVmaW5pdGlvbiB0byBzdWNjZWVkIG9yCisvLyBmYWlsLiBgbmFtZWAgaXMgdXNlZCB0byBjaGVjayB0aGF0IHRoZSByZXR1cm5lZCByZXNvdXJjZSBjYW4gYmUgbG9va2VkIHVwIGJ5CisvLyBuYW1lLgorc3RhdGljIHZvaWQgdGVzdF9kZWZpbmVfc2luZ2xlX3Jlc291cmNlKGNvbnN0IGNoYXIgKmZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZWVkKSB7CisgIGdwcl9sb2coR1BSX0lORk8sICJUZXN0IGRlZmluaW5nIHJlc291cmNlIFwiJXNcIlxuIiwgbmFtZSk7CisgIGluaXRpYWxpemVfcmVzb3VyY2VzKCk7CisgIGludDMyX3QgcmlkID0gZGVmaW5lX3Jlc291cmNlX2Zyb21fZmlsZShmaWxlKTsKKyAgaWYgKHN1Y2NlZWQpIHsKKyAgICBHUFJfQVNTRVJUKHJpZCA+PSAwKTsKKyAgICBpbnQzMl90IHJpZDIgPSBjZW5zdXNfcmVzb3VyY2VfaWQobmFtZSk7CisgICAgR1BSX0FTU0VSVChyaWQgPT0gcmlkMik7CisgIH0gZWxzZSB7CisgICAgR1BSX0FTU0VSVChyaWQgPCAwKTsKKyAgfQorICBzaHV0ZG93bl9yZXNvdXJjZXMoKTsKK30KKworLy8gVHJ5IGRlbGV0aW5nIHZhcmlvdXMgcmVzb3VyY2VzIChib3RoIHRob3NlIHRoYXQgZXhpc3QgYW5kIHRob3NlIHRoYXQgZG9uJ3QpLgorc3RhdGljIHZvaWQgdGVzdF9kZWxldGVfcmVzb3VyY2UoKSB7CisgIGluaXRpYWxpemVfcmVzb3VyY2VzKCk7CisgIC8vIFRyeSBkZWxldGluZyByZXNvdXJjZSBiZWZvcmUgYW55IGFyZSBkZWZpbmVkLgorICBjZW5zdXNfZGVsZXRlX3Jlc291cmNlKDApOworICAvLyBDcmVhdGUgYW5kIGNoZWNrIGEgY291cGxlIG9mIHJlc291cmNlcy4KKyAgaW50MzJfdCByaWQxID0gZGVmaW5lX3Jlc291cmNlX2Zyb21fZmlsZSgKKyAgICAgICJ0ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfbWluaW1hbF9nb29kLnBiIik7CisgIGludDMyX3QgcmlkMiA9CisgICAgICBkZWZpbmVfcmVzb3VyY2VfZnJvbV9maWxlKCJ0ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfZnVsbC5wYiIpOworICBHUFJfQVNTRVJUKHJpZDEgPj0gMCAmJiByaWQyID49IDAgJiYgcmlkMSAhPSByaWQyKTsKKyAgaW50MzJfdCByaWQzID0gY2Vuc3VzX3Jlc291cmNlX2lkKCJtaW5pbWFsX2dvb2QiKTsKKyAgaW50MzJfdCByaWQ0ID0gY2Vuc3VzX3Jlc291cmNlX2lkKCJmdWxsX3Jlc291cmNlIik7CisgIEdQUl9BU1NFUlQocmlkMSA9PSByaWQzICYmIHJpZDIgPT0gcmlkNCk7CisgIC8vIFRyeSBkZWxldGluZyBub24tZXhpc3RhbnQgcmVzb3VyY2VzLgorICBjZW5zdXNfZGVsZXRlX3Jlc291cmNlKC0xKTsKKyAgY2Vuc3VzX2RlbGV0ZV9yZXNvdXJjZShyaWQxICsgcmlkMiArIDEpOworICBjZW5zdXNfZGVsZXRlX3Jlc291cmNlKDEwMDAwMDAwKTsKKyAgLy8gRGVsZXRlIG9uZSBvZiB0aGUgcHJldmlvdXNseSBkZWZpbmVkIHJlc291cmNlcyBhbmQgY2hlY2sgZm9yIGRlbGV0aW9uLgorICBjZW5zdXNfZGVsZXRlX3Jlc291cmNlKHJpZDEpOworICByaWQzID0gY2Vuc3VzX3Jlc291cmNlX2lkKCJtaW5pbWFsX2dvb2QiKTsKKyAgR1BSX0FTU0VSVChyaWQzIDwgMCk7CisgIC8vIENoZWNrIHRoYXQgcmUtYWRkaW5nIHdvcmtzLgorICByaWQxID0gZGVmaW5lX3Jlc291cmNlX2Zyb21fZmlsZSgKKyAgICAgICJ0ZXN0L2NvcmUvY2Vuc3VzL2RhdGEvcmVzb3VyY2VfbWluaW1hbF9nb29kLnBiIik7CisgIEdQUl9BU1NFUlQocmlkMSA+PSAwKTsKKyAgcmlkMyA9IGNlbnN1c19yZXNvdXJjZV9pZCgibWluaW1hbF9nb29kIik7CisgIEdQUl9BU1NFUlQocmlkMSA9PSByaWQzKTsKKyAgc2h1dGRvd25fcmVzb3VyY2VzKCk7Cit9CisKKy8vIFRlc3QgZGVmaW5lIGJhc2UgcmVzb3VyY2VzLgorc3RhdGljIHZvaWQgdGVzdF9iYXNlX3Jlc291cmNlcygpIHsKKyAgaW5pdGlhbGl6ZV9yZXNvdXJjZXMoKTsKKyAgZGVmaW5lX2Jhc2VfcmVzb3VyY2VzKCk7CisgIGludDMyX3QgcmlkMSA9IGNlbnN1c19yZXNvdXJjZV9pZCgiY2xpZW50X3JwY19sYXRlbmN5Iik7CisgIGludDMyX3QgcmlkMiA9IGNlbnN1c19yZXNvdXJjZV9pZCgic2VydmVyX3JwY19sYXRlbmN5Iik7CisgIEdQUl9BU1NFUlQocmlkMSA+PSAwICYmIHJpZDIgPj0gMCAmJiByaWQxICE9IHJpZDIpOworICBzaHV0ZG93bl9yZXNvdXJjZXMoKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIGdycGNfdGVzdF9pbml0KGFyZ2MsIGFyZ3YpOworICB0ZXN0X2VuYWJsZV9kaXNhYmxlKCk7CisgIHRlc3RfZW1wdHlfZGVmaW5pdGlvbigpOworICB0ZXN0X2RlZmluZV9zaW5nbGVfcmVzb3VyY2UoInRlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9taW5pbWFsX2dvb2QucGIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pbmltYWxfZ29vZCIsIHRydWUpOworICB0ZXN0X2RlZmluZV9zaW5nbGVfcmVzb3VyY2UoInRlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9mdWxsLnBiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdWxsX3Jlc291cmNlIiwgdHJ1ZSk7CisgIHRlc3RfZGVmaW5lX3NpbmdsZV9yZXNvdXJjZSgidGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX25hbWUucGIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc291cmNlX25vX25hbWUiLCBmYWxzZSk7CisgIHRlc3RfZGVmaW5lX3NpbmdsZV9yZXNvdXJjZSgidGVzdC9jb3JlL2NlbnN1cy9kYXRhL3Jlc291cmNlX25vX251bWVyYXRvci5wYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2Vfbm9fbnVtZXJhdG9yIiwgZmFsc2UpOworICB0ZXN0X2RlZmluZV9zaW5nbGVfcmVzb3VyY2UoInRlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9ub191bml0LnBiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXNvdXJjZV9ub191bml0IiwgZmFsc2UpOworICB0ZXN0X2RlZmluZV9zaW5nbGVfcmVzb3VyY2UoInRlc3QvY29yZS9jZW5zdXMvZGF0YS9yZXNvdXJjZV9lbXB0eV9uYW1lLnBiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXNvdXJjZV9lbXB0eV9uYW1lIiwgZmFsc2UpOworICB0ZXN0X2RlbGV0ZV9yZXNvdXJjZSgpOworICB0ZXN0X2Jhc2VfcmVzb3VyY2VzKCk7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2NoYW5uZWwvY2hhbm5lbF9zdGFja190ZXN0LmMgYi90ZXN0L2NvcmUvY2hhbm5lbC9jaGFubmVsX3N0YWNrX3Rlc3QuYwppbmRleCBmOTU2MWJlLi41NjliM2Y3IDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvY2hhbm5lbC9jaGFubmVsX3N0YWNrX3Rlc3QuYworKysgYi90ZXN0L2NvcmUvY2hhbm5lbC9jaGFubmVsX3N0YWNrX3Rlc3QuYwpAQCAtNTMsMTcgKzUzLDIwIEBACiAgICooaW50ICopKGVsZW0tPmNoYW5uZWxfZGF0YSkgPSAwOwogfQogCi1zdGF0aWMgdm9pZCBjYWxsX2luaXRfZnVuYyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CitzdGF0aWMgZ3JwY19lcnJvciAqY2FsbF9pbml0X2Z1bmMoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jYWxsX2VsZW1lbnRfYXJncyAqYXJncykgewogICArKyooaW50ICopKGVsZW0tPmNoYW5uZWxfZGF0YSk7CiAgICooaW50ICopKGVsZW0tPmNhbGxfZGF0YSkgPSAwOworICByZXR1cm4gR1JQQ19FUlJPUl9OT05FOwogfQogCiBzdGF0aWMgdm9pZCBjaGFubmVsX2Rlc3Ryb3lfZnVuYyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9lbGVtZW50ICplbGVtKSB7fQogCiBzdGF0aWMgdm9pZCBjYWxsX2Rlc3Ryb3lfZnVuYyhncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfc3RhdHMgKnN0YXRzLCB2b2lkICppZ25vcmVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnBjX2NhbGxfZmluYWxfaW5mbyAqZmluYWxfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlnbm9yZWQpIHsKICAgKysqKGludCAqKShlbGVtLT5jaGFubmVsX2RhdGEpOwogfQogCkBAIC0xMzIsOCArMTM1LDEwIEBACiAgIEdQUl9BU1NFUlQoKmNoYW5uZWxfZGF0YSA9PSAwKTsKIAogICBjYWxsX3N0YWNrID0gZ3ByX21hbGxvYyhjaGFubmVsX3N0YWNrLT5jYWxsX3N0YWNrX3NpemUpOwotICBncnBjX2NhbGxfc3RhY2tfaW5pdCgmZXhlY19jdHgsIGNoYW5uZWxfc3RhY2ssIDEsIGZyZWVfY2FsbCwgY2FsbF9zdGFjaywgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgY2FsbF9zdGFjayk7CisgIGdycGNfZXJyb3IgKmVycm9yID0KKyAgICAgIGdycGNfY2FsbF9zdGFja19pbml0KCZleGVjX2N0eCwgY2hhbm5lbF9zdGFjaywgMSwgZnJlZV9jYWxsLCBjYWxsX3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgY2FsbF9zdGFjayk7CisgIEdQUl9BU1NFUlQoZXJyb3IgPT0gR1JQQ19FUlJPUl9OT05FKTsKICAgR1BSX0FTU0VSVChjYWxsX3N0YWNrLT5jb3VudCA9PSAxKTsKICAgY2FsbF9lbGVtID0gZ3JwY19jYWxsX3N0YWNrX2VsZW1lbnQoY2FsbF9zdGFjaywgMCk7CiAgIEdQUl9BU1NFUlQoY2FsbF9lbGVtLT5maWx0ZXIgPT0gY2hhbm5lbF9lbGVtLT5maWx0ZXIpOwpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvYmFkX3NlcnZlcl9yZXNwb25zZV90ZXN0LmMgYi90ZXN0L2NvcmUvZW5kMmVuZC9iYWRfc2VydmVyX3Jlc3BvbnNlX3Rlc3QuYwppbmRleCBjY2E3NWY1Li5hYjgwYWRmIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9iYWRfc2VydmVyX3Jlc3BvbnNlX3Rlc3QuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9iYWRfc2VydmVyX3Jlc3BvbnNlX3Rlc3QuYwpAQCAtNzEsNiArNzEsOCBAQAogCiAjZGVmaW5lIFVOUEFSU0VBQkxFX0RFVEFJTF9NU0cgIkZhaWxlZCBwYXJzaW5nIEhUVFAvMiIKIAorI2RlZmluZSBIVFRQMV9ERVRBSUxfTVNHICJUcnlpbmcgdG8gY29ubmVjdCBhbiBodHRwMS54IHNlcnZlciIKKwogLyogVE9ETyh6eWMpIENoZWNrIHRoZSBjb250ZW50IG9mIGluY29tbWluZyBkYXRhIGluc3RlYWQgb2YgdXNpbmcgdGhpcyBsZW5ndGggKi8KICNkZWZpbmUgRVhQRUNURURfSU5DT01JTkdfREFUQV9MRU5HVEggKHNpemVfdCkzMTAKIApAQCAtMzM0LDcgKzMzNiw3IEBACiAKICAgLyogaHR0cDEgcmVzcG9uc2UgKi8KICAgcnVuX3Rlc3QoSFRUUDFfUkVTUCwgc2l6ZW9mKEhUVFAxX1JFU1ApIC0gMSwgR1JQQ19TVEFUVVNfVU5BVkFJTEFCTEUsCi0gICAgICAgICAgIFVOUEFSU0VBQkxFX0RFVEFJTF9NU0cpOworICAgICAgICAgICBIVFRQMV9ERVRBSUxfTVNHKTsKIAogICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL2NxX3ZlcmlmaWVyLmMgYi90ZXN0L2NvcmUvZW5kMmVuZC9jcV92ZXJpZmllci5jCmluZGV4IDg5MDMwOWMuLmI3NzU2ODAgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS9lbmQyZW5kL2NxX3ZlcmlmaWVyLmMKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvY3FfdmVyaWZpZXIuYwpAQCAtMjU5LDkgKzI1OSwxMCBAQAogICBncHJfc3RydmVjX2Rlc3Ryb3koJmhhdmVfdGFncyk7CiB9CiAKLXZvaWQgY3FfdmVyaWZ5X2VtcHR5KGNxX3ZlcmlmaWVyICp2KSB7Ci0gIGdwcl90aW1lc3BlYyBkZWFkbGluZSA9IGdwcl90aW1lX2FkZChncHJfbm93KEdQUl9DTE9DS19SRUFMVElNRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHJfdGltZV9mcm9tX3NlY29uZHMoMSwgR1BSX1RJTUVTUEFOKSk7Cit2b2lkIGNxX3ZlcmlmeV9lbXB0eV90aW1lb3V0KGNxX3ZlcmlmaWVyICp2LCBpbnQgdGltZW91dF9zZWMpIHsKKyAgZ3ByX3RpbWVzcGVjIGRlYWRsaW5lID0KKyAgICAgIGdwcl90aW1lX2FkZChncHJfbm93KEdQUl9DTE9DS19SRUFMVElNRSksCisgICAgICAgICAgICAgICAgICAgZ3ByX3RpbWVfZnJvbV9zZWNvbmRzKHRpbWVvdXRfc2VjLCBHUFJfVElNRVNQQU4pKTsKICAgZ3JwY19ldmVudCBldjsKIAogICBHUFJfQVNTRVJUKHYtPmV4cGVjdC5uZXh0ID09ICZ2LT5leHBlY3QgJiYgImV4cGVjdGF0aW9uIHF1ZXVlIG11c3QgYmUgZW1wdHkiKTsKQEAgLTI3NSw2ICsyNzYsOCBAQAogICB9CiB9CiAKK3ZvaWQgY3FfdmVyaWZ5X2VtcHR5KGNxX3ZlcmlmaWVyICp2KSB7IGNxX3ZlcmlmeV9lbXB0eV90aW1lb3V0KHYsIDEpOyB9CisKIHN0YXRpYyBleHBlY3RhdGlvbiAqYWRkKGNxX3ZlcmlmaWVyICp2LCBncnBjX2NvbXBsZXRpb25fdHlwZSB0eXBlLCB2b2lkICp0YWcpIHsKICAgZXhwZWN0YXRpb24gKmUgPSBncHJfbWFsbG9jKHNpemVvZihleHBlY3RhdGlvbikpOwogICBlLT50eXBlID0gdHlwZTsKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL2NxX3ZlcmlmaWVyLmggYi90ZXN0L2NvcmUvZW5kMmVuZC9jcV92ZXJpZmllci5oCmluZGV4IDhjOWE4NWMuLmJmODI0NjggMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS9lbmQyZW5kL2NxX3ZlcmlmaWVyLmgKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvY3FfdmVyaWZpZXIuaApAQCAtNTUsNiArNTUsOSBAQAogLyogZW5zdXJlIHRoYXQgdGhlIGNvbXBsZXRpb24gcXVldWUgaXMgZW1wdHkgKi8KIHZvaWQgY3FfdmVyaWZ5X2VtcHR5KGNxX3ZlcmlmaWVyICp2KTsKIAorLyogZW5zdXJlIHRoYXQgdGhlIGNvbXBsZXRpb24gcXVldWUgaXMgZW1wdHksIHdhaXRpbmcgdXAgdG8gXGEgdGltZW91dCBzZWNzLiAqLwordm9pZCBjcV92ZXJpZnlfZW1wdHlfdGltZW91dChjcV92ZXJpZmllciAqdiwgaW50IHRpbWVvdXRfc2VjKTsKKwogLyogVmFyaW91cyBleHBlY3RhdGlvbiBtYXRjaGVycwogICAgQW55IGZ1bmN0aW9ucyB0YWtpbmcgLi4uIGV4cGVjdCBhIE5VTEwgdGVybWluYXRlZCBsaXN0IG9mIGtleS92YWx1ZSBwYWlycwogICAgKGVhY2ggcGFpciB1c2luZyB0d28gcGFyYW1ldGVyIHNsb3RzKSBvZiBtZXRhZGF0YSB0aGF0IE1VU1QgYmUgcHJlc2VudCBpbgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZW5kMmVuZF9ub3NlY190ZXN0cy5jIGIvdGVzdC9jb3JlL2VuZDJlbmQvZW5kMmVuZF9ub3NlY190ZXN0cy5jCmluZGV4IDAzZTU1ZjEuLjNlZmQxOGMgMTAwNjQ0Ci0tLSBhL3Rlc3QvY29yZS9lbmQyZW5kL2VuZDJlbmRfbm9zZWNfdGVzdHMuYworKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9lbmQyZW5kX25vc2VjX3Rlc3RzLmMKQEAgLTY5LDYgKzY5LDggQEAKIGV4dGVybiB2b2lkIGRpc2FwcGVhcmluZ19zZXJ2ZXJfcHJlX2luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBlbXB0eV9iYXRjaChncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKTsKIGV4dGVybiB2b2lkIGVtcHR5X2JhdGNoX3ByZV9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgZmlsdGVyX2NhbGxfaW5pdF9mYWlscyhncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKTsKK2V4dGVybiB2b2lkIGZpbHRlcl9jYWxsX2luaXRfZmFpbHNfcHJlX2luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBmaWx0ZXJfY2F1c2VzX2Nsb3NlKGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpOwogZXh0ZXJuIHZvaWQgZmlsdGVyX2NhdXNlc19jbG9zZV9wcmVfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIGdyYWNlZnVsX3NlcnZlcl9zaHV0ZG93bihncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKTsKQEAgLTgzLDYgKzg1LDggQEAKIGV4dGVybiB2b2lkIGludm9rZV9sYXJnZV9yZXF1ZXN0X3ByZV9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgbGFyZ2VfbWV0YWRhdGEoZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZyk7CiBleHRlcm4gdm9pZCBsYXJnZV9tZXRhZGF0YV9wcmVfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIGxvYWRfcmVwb3J0aW5nX2hvb2soZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZyk7CitleHRlcm4gdm9pZCBsb2FkX3JlcG9ydGluZ19ob29rX3ByZV9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgbWF4X2NvbmN1cnJlbnRfc3RyZWFtcyhncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKTsKIGV4dGVybiB2b2lkIG1heF9jb25jdXJyZW50X3N0cmVhbXNfcHJlX2luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBtYXhfbWVzc2FnZV9sZW5ndGgoZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZyk7CkBAIC0xMzgsNiArMTQyLDcgQEAKICAgZGVmYXVsdF9ob3N0X3ByZV9pbml0KCk7CiAgIGRpc2FwcGVhcmluZ19zZXJ2ZXJfcHJlX2luaXQoKTsKICAgZW1wdHlfYmF0Y2hfcHJlX2luaXQoKTsKKyAgZmlsdGVyX2NhbGxfaW5pdF9mYWlsc19wcmVfaW5pdCgpOwogICBmaWx0ZXJfY2F1c2VzX2Nsb3NlX3ByZV9pbml0KCk7CiAgIGdyYWNlZnVsX3NlcnZlcl9zaHV0ZG93bl9wcmVfaW5pdCgpOwogICBoaWdoX2luaXRpYWxfc2Vxbm9fcHJlX2luaXQoKTsKQEAgLTE0NSw2ICsxNTAsNyBAQAogICBpZGVtcG90ZW50X3JlcXVlc3RfcHJlX2luaXQoKTsKICAgaW52b2tlX2xhcmdlX3JlcXVlc3RfcHJlX2luaXQoKTsKICAgbGFyZ2VfbWV0YWRhdGFfcHJlX2luaXQoKTsKKyAgbG9hZF9yZXBvcnRpbmdfaG9va19wcmVfaW5pdCgpOwogICBtYXhfY29uY3VycmVudF9zdHJlYW1zX3ByZV9pbml0KCk7CiAgIG1heF9tZXNzYWdlX2xlbmd0aF9wcmVfaW5pdCgpOwogICBuZWdhdGl2ZV9kZWFkbGluZV9wcmVfaW5pdCgpOwpAQCAtMTg2LDYgKzE5Miw3IEBACiAgICAgZGVmYXVsdF9ob3N0KGNvbmZpZyk7CiAgICAgZGlzYXBwZWFyaW5nX3NlcnZlcihjb25maWcpOwogICAgIGVtcHR5X2JhdGNoKGNvbmZpZyk7CisgICAgZmlsdGVyX2NhbGxfaW5pdF9mYWlscyhjb25maWcpOwogICAgIGZpbHRlcl9jYXVzZXNfY2xvc2UoY29uZmlnKTsKICAgICBncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd24oY29uZmlnKTsKICAgICBoaWdoX2luaXRpYWxfc2Vxbm8oY29uZmlnKTsKQEAgLTE5Myw2ICsyMDAsNyBAQAogICAgIGlkZW1wb3RlbnRfcmVxdWVzdChjb25maWcpOwogICAgIGludm9rZV9sYXJnZV9yZXF1ZXN0KGNvbmZpZyk7CiAgICAgbGFyZ2VfbWV0YWRhdGEoY29uZmlnKTsKKyAgICBsb2FkX3JlcG9ydGluZ19ob29rKGNvbmZpZyk7CiAgICAgbWF4X2NvbmN1cnJlbnRfc3RyZWFtcyhjb25maWcpOwogICAgIG1heF9tZXNzYWdlX2xlbmd0aChjb25maWcpOwogICAgIG5lZ2F0aXZlX2RlYWRsaW5lKGNvbmZpZyk7CkBAIC0yNjgsNiArMjc2LDEwIEBACiAgICAgICBlbXB0eV9iYXRjaChjb25maWcpOwogICAgICAgY29udGludWU7CiAgICAgfQorICAgIGlmICgwID09IHN0cmNtcCgiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIsIGFyZ3ZbaV0pKSB7CisgICAgICBmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzKGNvbmZpZyk7CisgICAgICBjb250aW51ZTsKKyAgICB9CiAgICAgaWYgKDAgPT0gc3RyY21wKCJmaWx0ZXJfY2F1c2VzX2Nsb3NlIiwgYXJndltpXSkpIHsKICAgICAgIGZpbHRlcl9jYXVzZXNfY2xvc2UoY29uZmlnKTsKICAgICAgIGNvbnRpbnVlOwpAQCAtMjk2LDYgKzMwOCwxMCBAQAogICAgICAgbGFyZ2VfbWV0YWRhdGEoY29uZmlnKTsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KKyAgICBpZiAoMCA9PSBzdHJjbXAoImxvYWRfcmVwb3J0aW5nX2hvb2siLCBhcmd2W2ldKSkgeworICAgICAgbG9hZF9yZXBvcnRpbmdfaG9vayhjb25maWcpOworICAgICAgY29udGludWU7CisgICAgfQogICAgIGlmICgwID09IHN0cmNtcCgibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIsIGFyZ3ZbaV0pKSB7CiAgICAgICBtYXhfY29uY3VycmVudF9zdHJlYW1zKGNvbmZpZyk7CiAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL2VuZDJlbmRfdGVzdHMuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL2VuZDJlbmRfdGVzdHMuYwppbmRleCA4NzdiMWIxLi5lM2Q3OTFhIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9lbmQyZW5kX3Rlc3RzLmMKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvZW5kMmVuZF90ZXN0cy5jCkBAIC03MSw2ICs3MSw4IEBACiBleHRlcm4gdm9pZCBkaXNhcHBlYXJpbmdfc2VydmVyX3ByZV9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgZW1wdHlfYmF0Y2goZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZyk7CiBleHRlcm4gdm9pZCBlbXB0eV9iYXRjaF9wcmVfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIGZpbHRlcl9jYWxsX2luaXRfZmFpbHMoZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZyk7CitleHRlcm4gdm9pZCBmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzX3ByZV9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgZmlsdGVyX2NhdXNlc19jbG9zZShncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKTsKIGV4dGVybiB2b2lkIGZpbHRlcl9jYXVzZXNfY2xvc2VfcHJlX2luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd24oZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZyk7CkBAIC04NSw2ICs4Nyw4IEBACiBleHRlcm4gdm9pZCBpbnZva2VfbGFyZ2VfcmVxdWVzdF9wcmVfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIGxhcmdlX21ldGFkYXRhKGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpOwogZXh0ZXJuIHZvaWQgbGFyZ2VfbWV0YWRhdGFfcHJlX2luaXQodm9pZCk7CitleHRlcm4gdm9pZCBsb2FkX3JlcG9ydGluZ19ob29rKGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpOworZXh0ZXJuIHZvaWQgbG9hZF9yZXBvcnRpbmdfaG9va19wcmVfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIG1heF9jb25jdXJyZW50X3N0cmVhbXMoZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZyk7CiBleHRlcm4gdm9pZCBtYXhfY29uY3VycmVudF9zdHJlYW1zX3ByZV9pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgbWF4X21lc3NhZ2VfbGVuZ3RoKGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpOwpAQCAtMTQxLDYgKzE0NSw3IEBACiAgIGRlZmF1bHRfaG9zdF9wcmVfaW5pdCgpOwogICBkaXNhcHBlYXJpbmdfc2VydmVyX3ByZV9pbml0KCk7CiAgIGVtcHR5X2JhdGNoX3ByZV9pbml0KCk7CisgIGZpbHRlcl9jYWxsX2luaXRfZmFpbHNfcHJlX2luaXQoKTsKICAgZmlsdGVyX2NhdXNlc19jbG9zZV9wcmVfaW5pdCgpOwogICBncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd25fcHJlX2luaXQoKTsKICAgaGlnaF9pbml0aWFsX3NlcW5vX3ByZV9pbml0KCk7CkBAIC0xNDgsNiArMTUzLDcgQEAKICAgaWRlbXBvdGVudF9yZXF1ZXN0X3ByZV9pbml0KCk7CiAgIGludm9rZV9sYXJnZV9yZXF1ZXN0X3ByZV9pbml0KCk7CiAgIGxhcmdlX21ldGFkYXRhX3ByZV9pbml0KCk7CisgIGxvYWRfcmVwb3J0aW5nX2hvb2tfcHJlX2luaXQoKTsKICAgbWF4X2NvbmN1cnJlbnRfc3RyZWFtc19wcmVfaW5pdCgpOwogICBtYXhfbWVzc2FnZV9sZW5ndGhfcHJlX2luaXQoKTsKICAgbmVnYXRpdmVfZGVhZGxpbmVfcHJlX2luaXQoKTsKQEAgLTE5MCw2ICsxOTYsNyBAQAogICAgIGRlZmF1bHRfaG9zdChjb25maWcpOwogICAgIGRpc2FwcGVhcmluZ19zZXJ2ZXIoY29uZmlnKTsKICAgICBlbXB0eV9iYXRjaChjb25maWcpOworICAgIGZpbHRlcl9jYWxsX2luaXRfZmFpbHMoY29uZmlnKTsKICAgICBmaWx0ZXJfY2F1c2VzX2Nsb3NlKGNvbmZpZyk7CiAgICAgZ3JhY2VmdWxfc2VydmVyX3NodXRkb3duKGNvbmZpZyk7CiAgICAgaGlnaF9pbml0aWFsX3NlcW5vKGNvbmZpZyk7CkBAIC0xOTcsNiArMjA0LDcgQEAKICAgICBpZGVtcG90ZW50X3JlcXVlc3QoY29uZmlnKTsKICAgICBpbnZva2VfbGFyZ2VfcmVxdWVzdChjb25maWcpOwogICAgIGxhcmdlX21ldGFkYXRhKGNvbmZpZyk7CisgICAgbG9hZF9yZXBvcnRpbmdfaG9vayhjb25maWcpOwogICAgIG1heF9jb25jdXJyZW50X3N0cmVhbXMoY29uZmlnKTsKICAgICBtYXhfbWVzc2FnZV9sZW5ndGgoY29uZmlnKTsKICAgICBuZWdhdGl2ZV9kZWFkbGluZShjb25maWcpOwpAQCAtMjc2LDYgKzI4NCwxMCBAQAogICAgICAgZW1wdHlfYmF0Y2goY29uZmlnKTsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KKyAgICBpZiAoMCA9PSBzdHJjbXAoImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiLCBhcmd2W2ldKSkgeworICAgICAgZmlsdGVyX2NhbGxfaW5pdF9mYWlscyhjb25maWcpOworICAgICAgY29udGludWU7CisgICAgfQogICAgIGlmICgwID09IHN0cmNtcCgiZmlsdGVyX2NhdXNlc19jbG9zZSIsIGFyZ3ZbaV0pKSB7CiAgICAgICBmaWx0ZXJfY2F1c2VzX2Nsb3NlKGNvbmZpZyk7CiAgICAgICBjb250aW51ZTsKQEAgLTMwNCw2ICszMTYsMTAgQEAKICAgICAgIGxhcmdlX21ldGFkYXRhKGNvbmZpZyk7CiAgICAgICBjb250aW51ZTsKICAgICB9CisgICAgaWYgKDAgPT0gc3RyY21wKCJsb2FkX3JlcG9ydGluZ19ob29rIiwgYXJndltpXSkpIHsKKyAgICAgIGxvYWRfcmVwb3J0aW5nX2hvb2soY29uZmlnKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KICAgICBpZiAoMCA9PSBzdHJjbXAoIm1heF9jb25jdXJyZW50X3N0cmVhbXMiLCBhcmd2W2ldKSkgewogICAgICAgbWF4X2NvbmN1cnJlbnRfc3RyZWFtcyhjb25maWcpOwogICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkX3JlcG9ydGluZy5jIGIvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZF9yZXBvcnRpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmQzOTIzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZF9yZXBvcnRpbmcuYwpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqCisgKiBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJ0ZXN0L2NvcmUvZW5kMmVuZC9lbmQyZW5kX3Rlc3RzLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9ob3N0X3BvcnQuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgorI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL2NsaWVudF9jaGFubmVsLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCisjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKKwordHlwZWRlZiBzdHJ1Y3QgbG9hZF9yZXBvcnRpbmdfZml4dHVyZV9kYXRhIHsKKyAgY2hhciAqbG9jYWxhZGRyOworfSBsb2FkX3JlcG9ydGluZ19maXh0dXJlX2RhdGE7CisKK3N0YXRpYyBncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlIGNodHRwMl9jcmVhdGVfZml4dHVyZV9sb2FkX3JlcG9ydGluZygKKyAgICBncnBjX2NoYW5uZWxfYXJncyAqY2xpZW50X2FyZ3MsIGdycGNfY2hhbm5lbF9hcmdzICpzZXJ2ZXJfYXJncykgeworICBncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlIGY7CisgIGludCBwb3J0ID0gZ3JwY19waWNrX3VudXNlZF9wb3J0X29yX2RpZSgpOworICBsb2FkX3JlcG9ydGluZ19maXh0dXJlX2RhdGEgKmZmZCA9CisgICAgICBncHJfbWFsbG9jKHNpemVvZihsb2FkX3JlcG9ydGluZ19maXh0dXJlX2RhdGEpKTsKKyAgbWVtc2V0KCZmLCAwLCBzaXplb2YoZikpOworCisgIGdwcl9qb2luX2hvc3RfcG9ydCgmZmZkLT5sb2NhbGFkZHIsICJsb2NhbGhvc3QiLCBwb3J0KTsKKworICBmLmZpeHR1cmVfZGF0YSA9IGZmZDsKKyAgZi5jcSA9IGdycGNfY29tcGxldGlvbl9xdWV1ZV9jcmVhdGUoTlVMTCk7CisKKyAgcmV0dXJuIGY7Cit9CisKK3ZvaWQgY2h0dHAyX2luaXRfY2xpZW50X2xvYWRfcmVwb3J0aW5nKGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgKmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NoYW5uZWxfYXJncyAqY2xpZW50X2FyZ3MpIHsKKyAgbG9hZF9yZXBvcnRpbmdfZml4dHVyZV9kYXRhICpmZmQgPSBmLT5maXh0dXJlX2RhdGE7CisgIGYtPmNsaWVudCA9IGdycGNfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGUoZmZkLT5sb2NhbGFkZHIsIGNsaWVudF9hcmdzLCBOVUxMKTsKKyAgR1BSX0FTU0VSVChmLT5jbGllbnQpOworfQorCit2b2lkIGNodHRwMl9pbml0X3NlcnZlcl9sb2FkX3JlcG9ydGluZyhncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlICpmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKnNlcnZlcl9hcmdzKSB7CisgIGxvYWRfcmVwb3J0aW5nX2ZpeHR1cmVfZGF0YSAqZmZkID0gZi0+Zml4dHVyZV9kYXRhOworICBncnBjX2FyZyBhcmcgPSBncnBjX2xvYWRfcmVwb3J0aW5nX2VuYWJsZV9hcmcoKTsKKyAgaWYgKGYtPnNlcnZlcikgeworICAgIGdycGNfc2VydmVyX2Rlc3Ryb3koZi0+c2VydmVyKTsKKyAgfQorICBzZXJ2ZXJfYXJncyA9IGdycGNfY2hhbm5lbF9hcmdzX2NvcHlfYW5kX2FkZChzZXJ2ZXJfYXJncywgJmFyZywgMSk7CisgIGYtPnNlcnZlciA9IGdycGNfc2VydmVyX2NyZWF0ZShzZXJ2ZXJfYXJncywgTlVMTCk7CisgIGdycGNfY2hhbm5lbF9hcmdzX2Rlc3Ryb3koc2VydmVyX2FyZ3MpOworICBncnBjX3NlcnZlcl9yZWdpc3Rlcl9jb21wbGV0aW9uX3F1ZXVlKGYtPnNlcnZlciwgZi0+Y3EsIE5VTEwpOworICBHUFJfQVNTRVJUKGdycGNfc2VydmVyX2FkZF9pbnNlY3VyZV9odHRwMl9wb3J0KGYtPnNlcnZlciwgZmZkLT5sb2NhbGFkZHIpKTsKKyAgZ3JwY19zZXJ2ZXJfc3RhcnQoZi0+c2VydmVyKTsKK30KKwordm9pZCBjaHR0cDJfdGVhcl9kb3duX2xvYWRfcmVwb3J0aW5nKGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgKmYpIHsKKyAgbG9hZF9yZXBvcnRpbmdfZml4dHVyZV9kYXRhICpmZmQgPSBmLT5maXh0dXJlX2RhdGE7CisgIGdwcl9mcmVlKGZmZC0+bG9jYWxhZGRyKTsKKyAgZ3ByX2ZyZWUoZmZkKTsKK30KKworLyogQWxsIHRlc3QgY29uZmlndXJhdGlvbnMgKi8KK3N0YXRpYyBncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnc1tdID0geworICAgIHsiY2h0dHAyL2Z1bGxzdGFjaytsb2FkX3JlcG9ydGluZyIsCisgICAgIEZFQVRVUkVfTUFTS19TVVBQT1JUU19ERUxBWUVEX0NPTk5FQ1RJT04sCisgICAgIGNodHRwMl9jcmVhdGVfZml4dHVyZV9sb2FkX3JlcG9ydGluZywgY2h0dHAyX2luaXRfY2xpZW50X2xvYWRfcmVwb3J0aW5nLAorICAgICBjaHR0cDJfaW5pdF9zZXJ2ZXJfbG9hZF9yZXBvcnRpbmcsIGNodHRwMl90ZWFyX2Rvd25fbG9hZF9yZXBvcnRpbmd9LAorfTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgIHNpemVfdCBpOworCisgIGdycGNfdGVzdF9pbml0KGFyZ2MsIGFyZ3YpOworICBncnBjX2VuZDJlbmRfdGVzdHNfcHJlX2luaXQoKTsKKyAgZ3JwY19pbml0KCk7CisKKyAgZm9yIChpID0gMDsgaSA8IHNpemVvZihjb25maWdzKSAvIHNpemVvZigqY29uZmlncyk7IGkrKykgeworICAgIGdycGNfZW5kMmVuZF90ZXN0cyhhcmdjLCBhcmd2LCBjb25maWdzW2ldKTsKKyAgfQorCisgIGdycGNfc2h1dGRvd24oKTsKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmcuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmcuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVkMDJmOS4uMDAwMDAwMAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkcmVwb3J0aW5nLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICovCi0KLSNpbmNsdWRlICJ0ZXN0L2NvcmUvZW5kMmVuZC9lbmQyZW5kX3Rlc3RzLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgotI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9ob3N0X3BvcnQuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KLSNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+Ci0jaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3VzZWZ1bC5oPgotI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL2NsaWVudF9jaGFubmVsLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgiCi0jaW5jbHVkZSAic3JjL2NvcmUvZXh0L3RyYW5zcG9ydC9jaHR0cDIvdHJhbnNwb3J0L2NodHRwMl90cmFuc3BvcnQuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX2FyZ3MuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jb25uZWN0ZWRfY2hhbm5lbC5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2h0dHBfc2VydmVyX2ZpbHRlci5oIgotI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXJmYWNlL2NoYW5uZWwuaCIKLSNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9zZXJ2ZXIuaCIKLSNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCi0jaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKLQotc3RhdGljIGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnICpnX2NsaWVudF9scmM7Ci1zdGF0aWMgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWcgKmdfc2VydmVyX2xyYzsKLQotdHlwZWRlZiBzdHJ1Y3QgZnVsbHN0YWNrX2ZpeHR1cmVfZGF0YSB7Ci0gIGNoYXIgKmxvY2FsYWRkcjsKLX0gZnVsbHN0YWNrX2ZpeHR1cmVfZGF0YTsKLQotc3RhdGljIGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgY2h0dHAyX2NyZWF0ZV9maXh0dXJlX2Z1bGxzdGFjaygKLSAgICBncnBjX2NoYW5uZWxfYXJncyAqY2xpZW50X2FyZ3MsIGdycGNfY2hhbm5lbF9hcmdzICpzZXJ2ZXJfYXJncykgewotICBncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlIGY7Ci0gIGludCBwb3J0ID0gZ3JwY19waWNrX3VudXNlZF9wb3J0X29yX2RpZSgpOwotICBmdWxsc3RhY2tfZml4dHVyZV9kYXRhICpmZmQgPSBncHJfbWFsbG9jKHNpemVvZihmdWxsc3RhY2tfZml4dHVyZV9kYXRhKSk7Ci0gIG1lbXNldCgmZiwgMCwgc2l6ZW9mKGYpKTsKLQotICBncHJfam9pbl9ob3N0X3BvcnQoJmZmZC0+bG9jYWxhZGRyLCAibG9jYWxob3N0IiwgcG9ydCk7Ci0KLSAgZi5maXh0dXJlX2RhdGEgPSBmZmQ7Ci0gIGYuY3EgPSBncnBjX2NvbXBsZXRpb25fcXVldWVfY3JlYXRlKE5VTEwpOwotCi0gIHJldHVybiBmOwotfQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGludDY0X3QgdG90YWxfYnl0ZXM7Ci0gIGJvb2wgZnVsbHlfcHJvY2Vzc2VkOwotICB1aW50MzJfdCBpbml0aWFsX3Rva2VuOwotICB1aW50MzJfdCBmaW5hbF90b2tlbjsKLX0gYWdncmVnYXRlZF9id19zdGF0czsKLQotc3RhdGljIHZvaWQgc2FtcGxlX2ZuKGNvbnN0IGdycGNfbG9hZF9yZXBvcnRpbmdfY2FsbF9kYXRhICpjYWxsX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKSB7Ci0gIEdQUl9BU1NFUlQodXNlcl9kYXRhICE9IE5VTEwpOwotICBhZ2dyZWdhdGVkX2J3X3N0YXRzICpjdXN0b21fc3RhdHMgPSAoYWdncmVnYXRlZF9id19zdGF0cyAqKXVzZXJfZGF0YTsKLSAgaWYgKGNhbGxfZGF0YSA9PSBOVUxMKSB7Ci0gICAgLyogaW5pdGlhbCBpbnZvY2F0aW9uICovCi0gICAgY3VzdG9tX3N0YXRzLT5pbml0aWFsX3Rva2VuID0gMHhERUFEQkVFRjsKLSAgfSBlbHNlIHsKLSAgICAvKiBmaW5hbCBpbnZvY2F0aW9uICovCi0gICAgY3VzdG9tX3N0YXRzLT50b3RhbF9ieXRlcyA9Ci0gICAgICAgIChpbnQ2NF90KShjYWxsX2RhdGEtPnN0YXRzLT50cmFuc3BvcnRfc3RyZWFtX3N0YXRzLm91dGdvaW5nLmRhdGFfYnl0ZXMgKwotICAgICAgICAgICAgICAgICAgY2FsbF9kYXRhLT5zdGF0cy0+dHJhbnNwb3J0X3N0cmVhbV9zdGF0cy5pbmNvbWluZy5kYXRhX2J5dGVzKTsKLSAgICBjdXN0b21fc3RhdHMtPmZpbmFsX3Rva2VuID0gMHhDQUZFRDAwRDsKLSAgICBjdXN0b21fc3RhdHMtPmZ1bGx5X3Byb2Nlc3NlZCA9IHRydWU7Ci0gIH0KLX0KLQotdm9pZCBjaHR0cDJfaW5pdF9jbGllbnRfZnVsbHN0YWNrKGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgKmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKmNsaWVudF9hcmdzKSB7Ci0gIGZ1bGxzdGFja19maXh0dXJlX2RhdGEgKmZmZCA9IGYtPmZpeHR1cmVfZGF0YTsKLSAgZ3JwY19hcmcgYXJnID0gZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWdfY3JlYXRlX2FyZyhnX2NsaWVudF9scmMpOwotICBjbGllbnRfYXJncyA9IGdycGNfY2hhbm5lbF9hcmdzX2NvcHlfYW5kX2FkZChjbGllbnRfYXJncywgJmFyZywgMSk7Ci0gIGYtPmNsaWVudCA9IGdycGNfaW5zZWN1cmVfY2hhbm5lbF9jcmVhdGUoZmZkLT5sb2NhbGFkZHIsIGNsaWVudF9hcmdzLCBOVUxMKTsKLSAgZ3JwY19jaGFubmVsX2FyZ3NfZGVzdHJveShjbGllbnRfYXJncyk7Ci0gIEdQUl9BU1NFUlQoZi0+Y2xpZW50KTsKLX0KLQotdm9pZCBjaHR0cDJfaW5pdF9zZXJ2ZXJfZnVsbHN0YWNrKGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgKmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKnNlcnZlcl9hcmdzKSB7Ci0gIGZ1bGxzdGFja19maXh0dXJlX2RhdGEgKmZmZCA9IGYtPmZpeHR1cmVfZGF0YTsKLSAgaWYgKGYtPnNlcnZlcikgewotICAgIGdycGNfc2VydmVyX2Rlc3Ryb3koZi0+c2VydmVyKTsKLSAgfQotICBncnBjX2FyZyBhcmcgPSBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZ19jcmVhdGVfYXJnKGdfc2VydmVyX2xyYyk7Ci0gIHNlcnZlcl9hcmdzID0gZ3JwY19jaGFubmVsX2FyZ3NfY29weV9hbmRfYWRkKHNlcnZlcl9hcmdzLCAmYXJnLCAxKTsKLSAgZi0+c2VydmVyID0gZ3JwY19zZXJ2ZXJfY3JlYXRlKHNlcnZlcl9hcmdzLCBOVUxMKTsKLSAgZ3JwY19jaGFubmVsX2FyZ3NfZGVzdHJveShzZXJ2ZXJfYXJncyk7Ci0gIGdycGNfc2VydmVyX3JlZ2lzdGVyX2NvbXBsZXRpb25fcXVldWUoZi0+c2VydmVyLCBmLT5jcSwgTlVMTCk7Ci0gIEdQUl9BU1NFUlQoZ3JwY19zZXJ2ZXJfYWRkX2luc2VjdXJlX2h0dHAyX3BvcnQoZi0+c2VydmVyLCBmZmQtPmxvY2FsYWRkcikpOwotICBncnBjX3NlcnZlcl9zdGFydChmLT5zZXJ2ZXIpOwotfQotCi12b2lkIGNodHRwMl90ZWFyX2Rvd25fZnVsbHN0YWNrKGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgKmYpIHsKLSAgZnVsbHN0YWNrX2ZpeHR1cmVfZGF0YSAqZmZkID0gZi0+Zml4dHVyZV9kYXRhOwotICBncHJfZnJlZShmZmQtPmxvY2FsYWRkcik7Ci0gIGdwcl9mcmVlKGZmZCk7Ci19Ci0KLS8qIEFsbCB0ZXN0IGNvbmZpZ3VyYXRpb25zICovCi1zdGF0aWMgZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZ3NbXSA9IHsKLSAgICB7ImNodHRwMi9mdWxsc3RhY2srbG9hZHJlcG9ydGluZyIsIEZFQVRVUkVfTUFTS19TVVBQT1JUU19ERUxBWUVEX0NPTk5FQ1RJT04sCi0gICAgIGNodHRwMl9jcmVhdGVfZml4dHVyZV9mdWxsc3RhY2ssIGNodHRwMl9pbml0X2NsaWVudF9mdWxsc3RhY2ssCi0gICAgIGNodHRwMl9pbml0X3NlcnZlcl9mdWxsc3RhY2ssIGNodHRwMl90ZWFyX2Rvd25fZnVsbHN0YWNrfSwKLX07Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICBzaXplX3QgaTsKLQotICBhZ2dyZWdhdGVkX2J3X3N0YXRzICphZ2dyX3N0YXRzX2NsaWVudCA9Ci0gICAgICBncHJfbWFsbG9jKHNpemVvZihhZ2dyZWdhdGVkX2J3X3N0YXRzKSk7Ci0gIGFnZ3Jfc3RhdHNfY2xpZW50LT50b3RhbF9ieXRlcyA9IC0xOwotICBhZ2dyX3N0YXRzX2NsaWVudC0+ZnVsbHlfcHJvY2Vzc2VkID0gZmFsc2U7Ci0gIGFnZ3JlZ2F0ZWRfYndfc3RhdHMgKmFnZ3Jfc3RhdHNfc2VydmVyID0KLSAgICAgIGdwcl9tYWxsb2Moc2l6ZW9mKGFnZ3JlZ2F0ZWRfYndfc3RhdHMpKTsKLSAgYWdncl9zdGF0c19zZXJ2ZXItPnRvdGFsX2J5dGVzID0gLTE7Ci0gIGFnZ3Jfc3RhdHNfc2VydmVyLT5mdWxseV9wcm9jZXNzZWQgPSBmYWxzZTsKLQotICBnX2NsaWVudF9scmMgPQotICAgICAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWdfY3JlYXRlKHNhbXBsZV9mbiwgYWdncl9zdGF0c19jbGllbnQpOwotICBnX3NlcnZlcl9scmMgPQotICAgICAgZ3JwY19sb2FkX3JlcG9ydGluZ19jb25maWdfY3JlYXRlKHNhbXBsZV9mbiwgYWdncl9zdGF0c19zZXJ2ZXIpOwotCi0gIGdycGNfdGVzdF9pbml0KGFyZ2MsIGFyZ3YpOwotICBncnBjX2VuZDJlbmRfdGVzdHNfcHJlX2luaXQoKTsKLSAgZ3JwY19pbml0KCk7Ci0KLSAgZm9yIChpID0gMDsgaSA8IHNpemVvZihjb25maWdzKSAvIHNpemVvZigqY29uZmlncyk7IGkrKykgewotICAgIGdycGNfZW5kMmVuZF90ZXN0cyhhcmdjLCBhcmd2LCBjb25maWdzW2ldKTsKLSAgfQotCi0gIGdycGNfc2h1dGRvd24oKTsKLQotICBncnBjX2xvYWRfcmVwb3J0aW5nX2NvbmZpZ19kZXN0cm95KGdfY2xpZW50X2xyYyk7Ci0gIGdycGNfbG9hZF9yZXBvcnRpbmdfY29uZmlnX2Rlc3Ryb3koZ19zZXJ2ZXJfbHJjKTsKLQotICBpZiAoYWdncl9zdGF0c19jbGllbnQtPmZ1bGx5X3Byb2Nlc3NlZCkgewotICAgIEdQUl9BU1NFUlQoYWdncl9zdGF0c19jbGllbnQtPnRvdGFsX2J5dGVzID49IDApOwotICAgIEdQUl9BU1NFUlQoYWdncl9zdGF0c19jbGllbnQtPmluaXRpYWxfdG9rZW4gPT0gMHhERUFEQkVFRik7Ci0gICAgR1BSX0FTU0VSVChhZ2dyX3N0YXRzX2NsaWVudC0+ZmluYWxfdG9rZW4gPT0gMHhDQUZFRDAwRCk7Ci0gIH0KLSAgaWYgKGFnZ3Jfc3RhdHNfc2VydmVyLT5mdWxseV9wcm9jZXNzZWQpIHsKLSAgICBHUFJfQVNTRVJUKGFnZ3Jfc3RhdHNfc2VydmVyLT50b3RhbF9ieXRlcyA+PSAwKTsKLSAgICBHUFJfQVNTRVJUKGFnZ3Jfc3RhdHNfc2VydmVyLT5pbml0aWFsX3Rva2VuID09IDB4REVBREJFRUYpOwotICAgIEdQUl9BU1NFUlQoYWdncl9zdGF0c19zZXJ2ZXItPmZpbmFsX3Rva2VuID09IDB4Q0FGRUQwMEQpOwotICB9Ci0KLSAgZ3ByX2ZyZWUoYWdncl9zdGF0c19jbGllbnQpOwotICBncHJfZnJlZShhZ2dyX3N0YXRzX3NlcnZlcik7Ci0KLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvZW5kMmVuZC9mdXp6ZXJzL2hwYWNrLmRpY3Rpb25hcnkgYi90ZXN0L2NvcmUvZW5kMmVuZC9mdXp6ZXJzL2hwYWNrLmRpY3Rpb25hcnkKaW5kZXggMDk3ZTlhOC4uMzE1N2RmYyAxMDA2NDQKLS0tIGEvdGVzdC9jb3JlL2VuZDJlbmQvZnV6emVycy9ocGFjay5kaWN0aW9uYXJ5CisrKyBiL3Rlc3QvY29yZS9lbmQyZW5kL2Z1enplcnMvaHBhY2suZGljdGlvbmFyeQpAQCAtMjEsOCArMjEsNiBAQAogIlx4MEE6YXV0aG9yaXR5IgogIlx4MERhdXRob3JpemF0aW9uIgogIlx4MERjYWNoZS1jb250cm9sIgotIlx4MEFjZW5zdXMtYmluIgotIlx4MTFjZW5zdXMtYmluYXJ5LWJpbiIKICJceDEzY29udGVudC1kaXNwb3NpdGlvbiIKICJceDEwY29udGVudC1lbmNvZGluZyIKICJceDEwY29udGVudC1sYW5ndWFnZSIKQEAgLTQyLDExICs0MCwxMyBAQAogIlx4MDNHRVQiCiAiXHgwNGdycGMiCiAiXHgxNGdycGMtYWNjZXB0LWVuY29kaW5nIgorIlx4MEZncnBjLWNlbnN1cy1iaW4iCiAiXHgwRGdycGMtZW5jb2RpbmciCiAiXHgxRWdycGMtaW50ZXJuYWwtZW5jb2RpbmctcmVxdWVzdCIKICJceDBDZ3JwYy1tZXNzYWdlIgogIlx4MEJncnBjLXN0YXR1cyIKICJceDBDZ3JwYy10aW1lb3V0IgorIlx4MTBncnBjLXRyYWNpbmctYmluIgogIlx4MDRnemlwIgogIlx4MERnemlwLCBkZWZsYXRlIgogIlx4MDRob3N0IgpAQCAtNjMsNyArNjMsOCBAQAogIlx4MTNpZi11bm1vZGlmaWVkLXNpbmNlIgogIlx4MERsYXN0LW1vZGlmaWVkIgogIlx4MDRsaW5rIgotIlx4MEVsb2FkLXJlcG9ydGluZyIKKyJceDE2bG9hZC1yZXBvcnRpbmctaW5pdGlhbCIKKyJceDE3bG9hZC1yZXBvcnRpbmctdHJhaWxpbmciCiAiXHgwOGxvY2F0aW9uIgogIlx4MENtYXgtZm9yd2FyZHMiCiAiXHgwNzptZXRob2QiCkBAIC0xMzcsNyArMTM4LDggQEAKICJceDAwXHgxM2lmLXVubW9kaWZpZWQtc2luY2VceDAwIgogIlx4MDBceDBEbGFzdC1tb2RpZmllZFx4MDAiCiAiXHgwMFx4MDRsaW5rXHgwMCIKLSJceDAwXHgwRWxvYWQtcmVwb3J0aW5nXHgwMCIKKyJceDAwXHgxNmxvYWQtcmVwb3J0aW5nLWluaXRpYWxceDAwIgorIlx4MDBceDE3bG9hZC1yZXBvcnRpbmctdHJhaWxpbmdceDAwIgogIlx4MDBceDA4bG9jYXRpb25ceDAwIgogIlx4MDBceDBDbWF4LWZvcndhcmRzXHgwMCIKICJceDAwXHgwNzptZXRob2RceDAzR0VUIgpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2VuZDJlbmQvZ2VuX2J1aWxkX3lhbWwucHkgYi90ZXN0L2NvcmUvZW5kMmVuZC9nZW5fYnVpbGRfeWFtbC5weQppbmRleCBmYjcyNzU0Li5lNTliN2RjIDEwMDc1NQotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC9nZW5fYnVpbGRfeWFtbC5weQorKysgYi90ZXN0L2NvcmUvZW5kMmVuZC9nZW5fYnVpbGRfeWFtbC5weQpAQCAtNTMsMTMgKzUzLDEzIEBACiBFTkQyRU5EX0ZJWFRVUkVTID0gewogICAgICdoMl9jb21wcmVzcyc6IGRlZmF1bHRfdW5zZWN1cmVfZml4dHVyZV9vcHRpb25zLAogICAgICdoMl9jZW5zdXMnOiBkZWZhdWx0X3Vuc2VjdXJlX2ZpeHR1cmVfb3B0aW9ucywKKyAgICAnaDJfbG9hZF9yZXBvcnRpbmcnOiBkZWZhdWx0X3Vuc2VjdXJlX2ZpeHR1cmVfb3B0aW9ucywKICAgICAnaDJfZmFrZXNlYyc6IGRlZmF1bHRfc2VjdXJlX2ZpeHR1cmVfb3B0aW9ucy5fcmVwbGFjZShjaV9tYWM9RmFsc2UpLAogICAgICdoMl9mZCc6IGZkX3Vuc2VjdXJlX2ZpeHR1cmVfb3B0aW9ucywKICAgICAnaDJfZnVsbCc6IGRlZmF1bHRfdW5zZWN1cmVfZml4dHVyZV9vcHRpb25zLAogICAgICdoMl9mdWxsK3BpcGUnOiBkZWZhdWx0X3Vuc2VjdXJlX2ZpeHR1cmVfb3B0aW9ucy5fcmVwbGFjZSgKICAgICAgICAgcGxhdGZvcm1zPVsnbGludXgnXSksCiAgICAgJ2gyX2Z1bGwrdHJhY2UnOiBkZWZhdWx0X3Vuc2VjdXJlX2ZpeHR1cmVfb3B0aW9ucy5fcmVwbGFjZSh0cmFjaW5nPVRydWUpLAotICAgICdoMl9sb2FkcmVwb3J0aW5nJzogZGVmYXVsdF91bnNlY3VyZV9maXh0dXJlX29wdGlvbnMsCiAgICAgJ2gyX29hdXRoMic6IGRlZmF1bHRfc2VjdXJlX2ZpeHR1cmVfb3B0aW9ucy5fcmVwbGFjZShjaV9tYWM9RmFsc2UpLAogICAgICdoMl9wcm94eSc6IGRlZmF1bHRfdW5zZWN1cmVfZml4dHVyZV9vcHRpb25zLl9yZXBsYWNlKGluY2x1ZGVzX3Byb3h5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lfbWFjPUZhbHNlKSwKQEAgLTEwMiw2ICsxMDIsNyBAQAogICAgICdkaXNhcHBlYXJpbmdfc2VydmVyJzogY29ubmVjdGl2aXR5X3Rlc3Rfb3B0aW9ucywKICAgICAnZW1wdHlfYmF0Y2gnOiBkZWZhdWx0X3Rlc3Rfb3B0aW9ucywKICAgICAnZmlsdGVyX2NhdXNlc19jbG9zZSc6IGRlZmF1bHRfdGVzdF9vcHRpb25zLAorICAgICdmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzJzogZGVmYXVsdF90ZXN0X29wdGlvbnMsCiAgICAgJ2dyYWNlZnVsX3NlcnZlcl9zaHV0ZG93bic6IGRlZmF1bHRfdGVzdF9vcHRpb25zLl9yZXBsYWNlKGNwdV9jb3N0PUxPV0NQVSksCiAgICAgJ2hwYWNrX3NpemUnOiBkZWZhdWx0X3Rlc3Rfb3B0aW9ucy5fcmVwbGFjZShwcm94eWFibGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWFibGU9RmFsc2UpLApAQCAtMTE1LDYgKzExNiw3IEBACiAgICAgJ25ldHdvcmtfc3RhdHVzX2NoYW5nZSc6IGRlZmF1bHRfdGVzdF9vcHRpb25zLAogICAgICdub19vcCc6IGRlZmF1bHRfdGVzdF9vcHRpb25zLAogICAgICdwYXlsb2FkJzogZGVmYXVsdF90ZXN0X29wdGlvbnMsCisgICAgJ2xvYWRfcmVwb3J0aW5nX2hvb2snOiBkZWZhdWx0X3Rlc3Rfb3B0aW9ucywKICAgICAncGluZ19wb25nX3N0cmVhbWluZyc6IGRlZmF1bHRfdGVzdF9vcHRpb25zLAogICAgICdwaW5nJzogY29ubmVjdGl2aXR5X3Rlc3Rfb3B0aW9ucy5fcmVwbGFjZShwcm94eWFibGU9RmFsc2UpLAogICAgICdyZWdpc3RlcmVkX2NhbGwnOiBkZWZhdWx0X3Rlc3Rfb3B0aW9ucywKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYWxsX2luaXRfZmFpbHMuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYWxsX2luaXRfZmFpbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDkxODNiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhbGxfaW5pdF9mYWlscy5jCkBAIC0wLDAgKzEsMjczIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInRlc3QvY29yZS9lbmQyZW5kL2VuZDJlbmRfdGVzdHMuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3JwYy9ieXRlX2J1ZmZlci5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGltZS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKyNpbmNsdWRlICJzcmMvY29yZS9saWIvY2hhbm5lbC9jaGFubmVsX3N0YWNrX2J1aWxkZXIuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsX2luaXQuaCIKKyNpbmNsdWRlICJ0ZXN0L2NvcmUvZW5kMmVuZC9jcV92ZXJpZmllci5oIgorCitlbnVtIHsgVElNRU9VVCA9IDIwMDAwMCB9OworCitzdGF0aWMgYm9vbCBnX2VuYWJsZV9maWx0ZXIgPSBmYWxzZTsKKworc3RhdGljIHZvaWQgKnRhZyhpbnRwdHJfdCB0KSB7IHJldHVybiAodm9pZCAqKXQ7IH0KKworc3RhdGljIGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgYmVnaW5fdGVzdChncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXN0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9hcmdzICpjbGllbnRfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKnNlcnZlcl9hcmdzKSB7CisgIGdycGNfZW5kMmVuZF90ZXN0X2ZpeHR1cmUgZjsKKyAgZ3ByX2xvZyhHUFJfSU5GTywgIiVzLyVzIiwgdGVzdF9uYW1lLCBjb25maWcubmFtZSk7CisgIGYgPSBjb25maWcuY3JlYXRlX2ZpeHR1cmUoY2xpZW50X2FyZ3MsIHNlcnZlcl9hcmdzKTsKKyAgY29uZmlnLmluaXRfc2VydmVyKCZmLCBzZXJ2ZXJfYXJncyk7CisgIGNvbmZpZy5pbml0X2NsaWVudCgmZiwgY2xpZW50X2FyZ3MpOworICByZXR1cm4gZjsKK30KKworc3RhdGljIGdwcl90aW1lc3BlYyBuX3NlY29uZHNfdGltZShpbnQgbikgeworICByZXR1cm4gR1JQQ19USU1FT1VUX1NFQ09ORFNfVE9fREVBRExJTkUobik7Cit9CisKK3N0YXRpYyBncHJfdGltZXNwZWMgZml2ZV9zZWNvbmRzX3RpbWUodm9pZCkgeyByZXR1cm4gbl9zZWNvbmRzX3RpbWUoNSk7IH0KKworc3RhdGljIHZvaWQgZHJhaW5fY3EoZ3JwY19jb21wbGV0aW9uX3F1ZXVlICpjcSkgeworICBncnBjX2V2ZW50IGV2OworICBkbyB7CisgICAgZXYgPSBncnBjX2NvbXBsZXRpb25fcXVldWVfbmV4dChjcSwgZml2ZV9zZWNvbmRzX3RpbWUoKSwgTlVMTCk7CisgIH0gd2hpbGUgKGV2LnR5cGUgIT0gR1JQQ19RVUVVRV9TSFVURE9XTik7Cit9CisKK3N0YXRpYyB2b2lkIHNodXRkb3duX3NlcnZlcihncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlICpmKSB7CisgIGlmICghZi0+c2VydmVyKSByZXR1cm47CisgIGdycGNfc2VydmVyX3NodXRkb3duX2FuZF9ub3RpZnkoZi0+c2VydmVyLCBmLT5jcSwgdGFnKDEwMDApKTsKKyAgR1BSX0FTU0VSVChncnBjX2NvbXBsZXRpb25fcXVldWVfcGx1Y2soCisgICAgICAgICAgICAgICAgIGYtPmNxLCB0YWcoMTAwMCksIEdSUENfVElNRU9VVF9TRUNPTkRTX1RPX0RFQURMSU5FKDUpLCBOVUxMKQorICAgICAgICAgICAgICAgICAudHlwZSA9PSBHUlBDX09QX0NPTVBMRVRFKTsKKyAgZ3JwY19zZXJ2ZXJfZGVzdHJveShmLT5zZXJ2ZXIpOworICBmLT5zZXJ2ZXIgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCBzaHV0ZG93bl9jbGllbnQoZ3JwY19lbmQyZW5kX3Rlc3RfZml4dHVyZSAqZikgeworICBpZiAoIWYtPmNsaWVudCkgcmV0dXJuOworICBncnBjX2NoYW5uZWxfZGVzdHJveShmLT5jbGllbnQpOworICBmLT5jbGllbnQgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCBlbmRfdGVzdChncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlICpmKSB7CisgIHNodXRkb3duX3NlcnZlcihmKTsKKyAgc2h1dGRvd25fY2xpZW50KGYpOworCisgIGdycGNfY29tcGxldGlvbl9xdWV1ZV9zaHV0ZG93bihmLT5jcSk7CisgIGRyYWluX2NxKGYtPmNxKTsKKyAgZ3JwY19jb21wbGV0aW9uX3F1ZXVlX2Rlc3Ryb3koZi0+Y3EpOworfQorCisvLyBTaW1wbGUgcmVxdWVzdCB2aWEgYSBzZXJ2ZXIgZmlsdGVyIHRoYXQgYWx3YXlzIGZhaWxzIHRvIGluaXRpYWxpemUKKy8vIHRoZSBjYWxsLgorc3RhdGljIHZvaWQgdGVzdF9yZXF1ZXN0KGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcpIHsKKyAgZ3JwY19jYWxsICpjOworICBncnBjX2NhbGwgKnM7CisgIGdwcl9zbGljZSByZXF1ZXN0X3BheWxvYWRfc2xpY2UgPSBncHJfc2xpY2VfZnJvbV9jb3BpZWRfc3RyaW5nKCJoZWxsbyB3b3JsZCIpOworICBncnBjX2J5dGVfYnVmZmVyICpyZXF1ZXN0X3BheWxvYWQgPQorICAgICAgZ3JwY19yYXdfYnl0ZV9idWZmZXJfY3JlYXRlKCZyZXF1ZXN0X3BheWxvYWRfc2xpY2UsIDEpOworICBncHJfdGltZXNwZWMgZGVhZGxpbmUgPSBmaXZlX3NlY29uZHNfdGltZSgpOworICBncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlIGYgPQorICAgICAgYmVnaW5fdGVzdChjb25maWcsICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIiwgTlVMTCwgTlVMTCk7CisgIGNxX3ZlcmlmaWVyICpjcXYgPSBjcV92ZXJpZmllcl9jcmVhdGUoZi5jcSk7CisgIGdycGNfb3Agb3BzWzZdOworICBncnBjX29wICpvcDsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSBpbml0aWFsX21ldGFkYXRhX3JlY3Y7CisgIGdycGNfbWV0YWRhdGFfYXJyYXkgdHJhaWxpbmdfbWV0YWRhdGFfcmVjdjsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSByZXF1ZXN0X21ldGFkYXRhX3JlY3Y7CisgIGdycGNfYnl0ZV9idWZmZXIgKnJlcXVlc3RfcGF5bG9hZF9yZWN2ID0gTlVMTDsKKyAgZ3JwY19jYWxsX2RldGFpbHMgY2FsbF9kZXRhaWxzOworICBncnBjX3N0YXR1c19jb2RlIHN0YXR1czsKKyAgZ3JwY19jYWxsX2Vycm9yIGVycm9yOworICBjaGFyICpkZXRhaWxzID0gTlVMTDsKKyAgc2l6ZV90IGRldGFpbHNfY2FwYWNpdHkgPSAwOworCisgIGMgPSBncnBjX2NoYW5uZWxfY3JlYXRlX2NhbGwoZi5jbGllbnQsIE5VTEwsIEdSUENfUFJPUEFHQVRFX0RFRkFVTFRTLCBmLmNxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZm9vIiwgImZvby50ZXN0Lmdvb2dsZS5mciIsIGRlYWRsaW5lLCBOVUxMKTsKKyAgR1BSX0FTU0VSVChjKTsKKworICBncnBjX21ldGFkYXRhX2FycmF5X2luaXQoJmluaXRpYWxfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmdHJhaWxpbmdfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmcmVxdWVzdF9tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19jYWxsX2RldGFpbHNfaW5pdCgmY2FsbF9kZXRhaWxzKTsKKworICBtZW1zZXQob3BzLCAwLCBzaXplb2Yob3BzKSk7CisgIG9wID0gb3BzOworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfSU5JVElBTF9NRVRBREFUQTsKKyAgb3AtPmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLmNvdW50ID0gMDsKKyAgb3AtPmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLm1ldGFkYXRhID0gTlVMTDsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9TRU5EX01FU1NBR0U7CisgIG9wLT5kYXRhLnNlbmRfbWVzc2FnZSA9IHJlcXVlc3RfcGF5bG9hZDsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9TRU5EX0NMT1NFX0ZST01fQ0xJRU5UOworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBvcC0+b3AgPSBHUlBDX09QX1JFQ1ZfSU5JVElBTF9NRVRBREFUQTsKKyAgb3AtPmRhdGEucmVjdl9pbml0aWFsX21ldGFkYXRhID0gJmluaXRpYWxfbWV0YWRhdGFfcmVjdjsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9SRUNWX1NUQVRVU19PTl9DTElFTlQ7CisgIG9wLT5kYXRhLnJlY3Zfc3RhdHVzX29uX2NsaWVudC50cmFpbGluZ19tZXRhZGF0YSA9ICZ0cmFpbGluZ19tZXRhZGF0YV9yZWN2OworICBvcC0+ZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQuc3RhdHVzID0gJnN0YXR1czsKKyAgb3AtPmRhdGEucmVjdl9zdGF0dXNfb25fY2xpZW50LnN0YXR1c19kZXRhaWxzID0gJmRldGFpbHM7CisgIG9wLT5kYXRhLnJlY3Zfc3RhdHVzX29uX2NsaWVudC5zdGF0dXNfZGV0YWlsc19jYXBhY2l0eSA9ICZkZXRhaWxzX2NhcGFjaXR5OworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBlcnJvciA9IGdycGNfY2FsbF9zdGFydF9iYXRjaChjLCBvcHMsIChzaXplX3QpKG9wIC0gb3BzKSwgdGFnKDEpLCBOVUxMKTsKKyAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworCisgIGVycm9yID0KKyAgICAgIGdycGNfc2VydmVyX3JlcXVlc3RfY2FsbChmLnNlcnZlciwgJnMsICZjYWxsX2RldGFpbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVlc3RfbWV0YWRhdGFfcmVjdiwgZi5jcSwgZi5jcSwgdGFnKDEwMSkpOworICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBlcnJvcik7CisKKyAgY3FfZXhwZWN0X2NvbXBsZXRpb24oY3F2LCB0YWcoMSksIDEpOworICBjcV92ZXJpZnkoY3F2KTsKKworICBHUFJfQVNTRVJUKHN0YXR1cyA9PSBHUlBDX1NUQVRVU19QRVJNSVNTSU9OX0RFTklFRCk7CisgIEdQUl9BU1NFUlQoMCA9PSBzdHJjbXAoZGV0YWlscywgImFjY2VzcyBkZW5pZWQiKSk7CisKKyAgZ3ByX2ZyZWUoZGV0YWlscyk7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfZGVzdHJveSgmaW5pdGlhbF9tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheV9kZXN0cm95KCZ0cmFpbGluZ19tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheV9kZXN0cm95KCZyZXF1ZXN0X21ldGFkYXRhX3JlY3YpOworICBncnBjX2NhbGxfZGV0YWlsc19kZXN0cm95KCZjYWxsX2RldGFpbHMpOworCisgIGdycGNfY2FsbF9kZXN0cm95KGMpOworCisgIGNxX3ZlcmlmaWVyX2Rlc3Ryb3koY3F2KTsKKworICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kocmVxdWVzdF9wYXlsb2FkKTsKKyAgZ3JwY19ieXRlX2J1ZmZlcl9kZXN0cm95KHJlcXVlc3RfcGF5bG9hZF9yZWN2KTsKKworICBlbmRfdGVzdCgmZik7CisgIGNvbmZpZy50ZWFyX2Rvd25fZGF0YSgmZik7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBUZXN0IGZpbHRlciAtIGFsd2F5cyBmYWlscyB0byBpbml0aWFsaXplIGEgY2FsbAorICovCisKK3N0YXRpYyBncnBjX2Vycm9yICppbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7CisgIHJldHVybiBncnBjX2Vycm9yX3NldF9pbnQoR1JQQ19FUlJPUl9DUkVBVEUoImFjY2VzcyBkZW5pZWQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX0VSUk9SX0lOVF9HUlBDX1NUQVRVUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX1NUQVRVU19QRVJNSVNTSU9OX0RFTklFRCk7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCBncnBjX2NhbGxfZWxlbWVudCAqZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9maW5hbF9pbmZvICpmaW5hbF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYW5kX2ZyZWVfbWVtb3J5KSB7fQorCitzdGF0aWMgdm9pZCBpbml0X2NoYW5uZWxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2hhbm5lbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2VsZW1lbnRfYXJncyAqYXJncykge30KKworc3RhdGljIHZvaWQgZGVzdHJveV9jaGFubmVsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NoYW5uZWxfZWxlbWVudCAqZWxlbSkge30KKworc3RhdGljIGNvbnN0IGdycGNfY2hhbm5lbF9maWx0ZXIgdGVzdF9maWx0ZXIgPSB7CisgICAgZ3JwY19jYWxsX25leHRfb3AsCisgICAgZ3JwY19jaGFubmVsX25leHRfb3AsCisgICAgMCwKKyAgICBpbml0X2NhbGxfZWxlbSwKKyAgICBncnBjX2NhbGxfc3RhY2tfaWdub3JlX3NldF9wb2xsc2V0X29yX3BvbGxzZXRfc2V0LAorICAgIGRlc3Ryb3lfY2FsbF9lbGVtLAorICAgIDAsCisgICAgaW5pdF9jaGFubmVsX2VsZW0sCisgICAgZGVzdHJveV9jaGFubmVsX2VsZW0sCisgICAgZ3JwY19jYWxsX25leHRfZ2V0X3BlZXIsCisgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMifTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFJlZ2lzdHJhdGlvbgorICovCisKK3N0YXRpYyBib29sIG1heWJlX2FkZF9maWx0ZXIoZ3JwY19jaGFubmVsX3N0YWNrX2J1aWxkZXIgKmJ1aWxkZXIsIHZvaWQgKmFyZykgeworICBpZiAoZ19lbmFibGVfZmlsdGVyKSB7CisgICAgLy8gV2FudCB0byBhZGQgdGhlIGZpbHRlciBhcyBjbG9zZSB0byB0aGUgZW5kIGFzIHBvc3NpYmxlLCB0byBtYWtlCisgICAgLy8gc3VyZSB0aGF0IGFsbCBvZiB0aGUgZmlsdGVycyB3b3JrIHdlbGwgdG9nZXRoZXIuICBIb3dldmVyLCB3ZQorICAgIC8vIGNhbid0IGFkZCBpdCBhdCB0aGUgdmVyeSBlbmQsIGJlY2F1c2UgdGhlIGNvbm5lY3RlZCBjaGFubmVsIGZpbHRlcgorICAgIC8vIG11c3QgYmUgdGhlIGxhc3Qgb25lLiAgU28gd2UgYWRkIGl0IHJpZ2h0IGJlZm9yZSB0aGUgbGFzdCBvbmUuCisgICAgZ3JwY19jaGFubmVsX3N0YWNrX2J1aWxkZXJfaXRlcmF0b3IgKml0ID0KKyAgICAgICAgZ3JwY19jaGFubmVsX3N0YWNrX2J1aWxkZXJfY3JlYXRlX2l0ZXJhdG9yX2F0X2xhc3QoYnVpbGRlcik7CisgICAgR1BSX0FTU0VSVChncnBjX2NoYW5uZWxfc3RhY2tfYnVpbGRlcl9tb3ZlX3ByZXYoaXQpKTsKKyAgICBjb25zdCBib29sIHJldHZhbCA9IGdycGNfY2hhbm5lbF9zdGFja19idWlsZGVyX2FkZF9maWx0ZXJfYmVmb3JlKAorICAgICAgICBpdCwgJnRlc3RfZmlsdGVyLCBOVUxMLCBOVUxMKTsKKyAgICBncnBjX2NoYW5uZWxfc3RhY2tfYnVpbGRlcl9pdGVyYXRvcl9kZXN0cm95KGl0KTsKKyAgICByZXR1cm4gcmV0dmFsOworICB9IGVsc2UgeworICAgIHJldHVybiB0cnVlOworICB9Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfcGx1Z2luKHZvaWQpIHsKKyAgZ3JwY19jaGFubmVsX2luaXRfcmVnaXN0ZXJfc3RhZ2UoR1JQQ19TRVJWRVJfQ0hBTk5FTCwgSU5UX01BWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVfYWRkX2ZpbHRlciwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfcGx1Z2luKHZvaWQpIHt9CisKK3ZvaWQgZmlsdGVyX2NhbGxfaW5pdF9mYWlscyhncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKSB7CisgIGdfZW5hYmxlX2ZpbHRlciA9IHRydWU7CisgIHRlc3RfcmVxdWVzdChjb25maWcpOworICBnX2VuYWJsZV9maWx0ZXIgPSBmYWxzZTsKK30KKwordm9pZCBmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzX3ByZV9pbml0KHZvaWQpIHsKKyAgZ3JwY19yZWdpc3Rlcl9wbHVnaW4oaW5pdF9wbHVnaW4sIGRlc3Ryb3lfcGx1Z2luKTsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYXVzZXNfY2xvc2UuYyBiL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ZpbHRlcl9jYXVzZXNfY2xvc2UuYwppbmRleCA1MjZjMDVjLi5jNmMzNmQ2IDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9maWx0ZXJfY2F1c2VzX2Nsb3NlLmMKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhdXNlc19jbG9zZS5jCkBAIC0yMzMsMTEgKzIzMywxNCBAQAogICBncnBjX2NhbGxfbmV4dF9vcChleGVjX2N0eCwgZWxlbSwgb3ApOwogfQogCi1zdGF0aWMgdm9pZCBpbml0X2NhbGxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwgZ3JwY19jYWxsX2VsZW1lbnQgKmVsZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NhbGxfZWxlbWVudF9hcmdzICphcmdzKSB7fQorc3RhdGljIGdycGNfZXJyb3IgKmluaXRfY2FsbF9lbGVtKGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfY2FsbF9lbGVtZW50X2FyZ3MgKmFyZ3MpIHsKKyAgcmV0dXJuIEdSUENfRVJST1JfTk9ORTsKK30KIAogc3RhdGljIHZvaWQgZGVzdHJveV9jYWxsX2VsZW0oZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIGdycGNfY2FsbF9lbGVtZW50ICplbGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JwY19jYWxsX3N0YXRzICpzdGF0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdycGNfY2FsbF9maW5hbF9pbmZvICpmaW5hbF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYW5kX2ZyZWVfbWVtb3J5KSB7fQogCiBzdGF0aWMgdm9pZCBpbml0X2NoYW5uZWxfZWxlbShncnBjX2V4ZWNfY3R4ICpleGVjX2N0eCwKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2xvYWRfcmVwb3J0aW5nX2hvb2suYyBiL3Rlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2xvYWRfcmVwb3J0aW5nX2hvb2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzY1MTk4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvbG9hZF9yZXBvcnRpbmdfaG9vay5jCkBAIC0wLDAgKzEsMzIxIEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgInRlc3QvY29yZS9lbmQyZW5kL2VuZDJlbmRfdGVzdHMuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3JwYy9ieXRlX2J1ZmZlci5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9sb2cuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvc3RyaW5nX3V0aWwuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGltZS5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC91c2VmdWwuaD4KKyNpbmNsdWRlICJ0ZXN0L2NvcmUvZW5kMmVuZC9jcV92ZXJpZmllci5oIgorCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvZXh0L2xvYWRfcmVwb3J0aW5nL2xvYWRfcmVwb3J0aW5nX2ZpbHRlci5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi90cmFuc3BvcnQvc3RhdGljX21ldGFkYXRhLmgiCisKK2VudW0geyBUSU1FT1VUID0gMjAwMDAwIH07CisKK3N0YXRpYyB2b2lkICp0YWcoaW50cHRyX3QgdCkgeyByZXR1cm4gKHZvaWQgKil0OyB9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgZ3ByX211IG11OworICBpbnRwdHJfdCBjaGFubmVsX2lkOworICBpbnRwdHJfdCBjYWxsX2lkOworCisgIGNoYXIgKmluaXRpYWxfbWRfc3RyOworICBjaGFyICp0cmFpbGluZ19tZF9zdHI7CisgIGNoYXIgKm1ldGhvZF9uYW1lOworCisgIHVpbnQ2NF90IGluY29taW5nX2J5dGVzOworICB1aW50NjRfdCBvdXRnb2luZ19ieXRlczsKKworICBncnBjX3N0YXR1c19jb2RlIGNhbGxfZmluYWxfc3RhdHVzOworCisgIGJvb2wgZnVsbHlfcHJvY2Vzc2VkOworfSBsb2FkX3JlcG9ydGluZ19kYXRhOworCitzdGF0aWMgZ3JwY19lbmQyZW5kX3Rlc3RfZml4dHVyZSBiZWdpbl90ZXN0KGdycGNfZW5kMmVuZF90ZXN0X2NvbmZpZyBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19jaGFubmVsX2FyZ3MgKmNsaWVudF9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnBjX2NoYW5uZWxfYXJncyAqc2VydmVyX2FyZ3MpIHsKKyAgZ3JwY19lbmQyZW5kX3Rlc3RfZml4dHVyZSBmOworICBncHJfbG9nKEdQUl9JTkZPLCAiJXMvJXMiLCB0ZXN0X25hbWUsIGNvbmZpZy5uYW1lKTsKKworICBmID0gY29uZmlnLmNyZWF0ZV9maXh0dXJlKGNsaWVudF9hcmdzLCBzZXJ2ZXJfYXJncyk7CisgIGNvbmZpZy5pbml0X3NlcnZlcigmZiwgc2VydmVyX2FyZ3MpOworICBjb25maWcuaW5pdF9jbGllbnQoJmYsIGNsaWVudF9hcmdzKTsKKworICByZXR1cm4gZjsKK30KKworc3RhdGljIGdwcl90aW1lc3BlYyBuX3NlY29uZHNfdGltZShpbnQgbikgeworICByZXR1cm4gR1JQQ19USU1FT1VUX1NFQ09ORFNfVE9fREVBRExJTkUobik7Cit9CisKK3N0YXRpYyBncHJfdGltZXNwZWMgZml2ZV9zZWNvbmRzX3RpbWUodm9pZCkgeyByZXR1cm4gbl9zZWNvbmRzX3RpbWUoNSk7IH0KKworc3RhdGljIHZvaWQgZHJhaW5fY3EoZ3JwY19jb21wbGV0aW9uX3F1ZXVlICpjcSkgeworICBncnBjX2V2ZW50IGV2OworICBkbyB7CisgICAgZXYgPSBncnBjX2NvbXBsZXRpb25fcXVldWVfbmV4dChjcSwgZml2ZV9zZWNvbmRzX3RpbWUoKSwgTlVMTCk7CisgIH0gd2hpbGUgKGV2LnR5cGUgIT0gR1JQQ19RVUVVRV9TSFVURE9XTik7Cit9CisKK3N0YXRpYyB2b2lkIHNodXRkb3duX3NlcnZlcihncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlICpmKSB7CisgIGlmICghZi0+c2VydmVyKSByZXR1cm47CisgIGdycGNfc2VydmVyX3NodXRkb3duX2FuZF9ub3RpZnkoZi0+c2VydmVyLCBmLT5jcSwgdGFnKDEwMDApKTsKKyAgR1BSX0FTU0VSVChncnBjX2NvbXBsZXRpb25fcXVldWVfcGx1Y2soCisgICAgICAgICAgICAgICAgIGYtPmNxLCB0YWcoMTAwMCksIEdSUENfVElNRU9VVF9TRUNPTkRTX1RPX0RFQURMSU5FKDUpLCBOVUxMKQorICAgICAgICAgICAgICAgICAudHlwZSA9PSBHUlBDX09QX0NPTVBMRVRFKTsKKyAgZ3JwY19zZXJ2ZXJfZGVzdHJveShmLT5zZXJ2ZXIpOworICBmLT5zZXJ2ZXIgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCBzaHV0ZG93bl9jbGllbnQoZ3JwY19lbmQyZW5kX3Rlc3RfZml4dHVyZSAqZikgeworICBpZiAoIWYtPmNsaWVudCkgcmV0dXJuOworICBncnBjX2NoYW5uZWxfZGVzdHJveShmLT5jbGllbnQpOworICBmLT5jbGllbnQgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCBlbmRfdGVzdChncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlICpmKSB7CisgIHNodXRkb3duX3NlcnZlcihmKTsKKyAgc2h1dGRvd25fY2xpZW50KGYpOworCisgIGdycGNfY29tcGxldGlvbl9xdWV1ZV9zaHV0ZG93bihmLT5jcSk7CisgIGRyYWluX2NxKGYtPmNxKTsKKyAgZ3JwY19jb21wbGV0aW9uX3F1ZXVlX2Rlc3Ryb3koZi0+Y3EpOworfQorCitzdGF0aWMgdm9pZCByZXF1ZXN0X3Jlc3BvbnNlX3dpdGhfcGF5bG9hZChncnBjX2VuZDJlbmRfdGVzdF9maXh0dXJlIGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRob2RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlcXVlc3RfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVzcG9uc2VfbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JwY19tZXRhZGF0YSAqaW5pdGlhbF9scl9tZXRhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfbWV0YWRhdGEgKnRyYWlsaW5nX2xyX21ldGFkYXRhKSB7CisgIGdwcl9zbGljZSByZXF1ZXN0X3BheWxvYWRfc2xpY2UgPSBncHJfc2xpY2VfZnJvbV9zdGF0aWNfc3RyaW5nKHJlcXVlc3RfbXNnKTsKKyAgZ3ByX3NsaWNlIHJlc3BvbnNlX3BheWxvYWRfc2xpY2UgPSBncHJfc2xpY2VfZnJvbV9zdGF0aWNfc3RyaW5nKHJlc3BvbnNlX21zZyk7CisgIGdycGNfY2FsbCAqYzsKKyAgZ3JwY19jYWxsICpzOworICBncnBjX2J5dGVfYnVmZmVyICpyZXF1ZXN0X3BheWxvYWQgPQorICAgICAgZ3JwY19yYXdfYnl0ZV9idWZmZXJfY3JlYXRlKCZyZXF1ZXN0X3BheWxvYWRfc2xpY2UsIDEpOworICBncnBjX2J5dGVfYnVmZmVyICpyZXNwb25zZV9wYXlsb2FkID0KKyAgICAgIGdycGNfcmF3X2J5dGVfYnVmZmVyX2NyZWF0ZSgmcmVzcG9uc2VfcGF5bG9hZF9zbGljZSwgMSk7CisgIGdwcl90aW1lc3BlYyBkZWFkbGluZSA9IGZpdmVfc2Vjb25kc190aW1lKCk7CisgIGNxX3ZlcmlmaWVyICpjcXYgPSBjcV92ZXJpZmllcl9jcmVhdGUoZi5jcSk7CisgIGdycGNfb3Agb3BzWzZdOworICBncnBjX29wICpvcDsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSBpbml0aWFsX21ldGFkYXRhX3JlY3Y7CisgIGdycGNfbWV0YWRhdGFfYXJyYXkgdHJhaWxpbmdfbWV0YWRhdGFfcmVjdjsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSByZXF1ZXN0X21ldGFkYXRhX3JlY3Y7CisgIGdycGNfYnl0ZV9idWZmZXIgKnJlcXVlc3RfcGF5bG9hZF9yZWN2ID0gTlVMTDsKKyAgZ3JwY19ieXRlX2J1ZmZlciAqcmVzcG9uc2VfcGF5bG9hZF9yZWN2ID0gTlVMTDsKKyAgZ3JwY19jYWxsX2RldGFpbHMgY2FsbF9kZXRhaWxzOworICBncnBjX3N0YXR1c19jb2RlIHN0YXR1czsKKyAgZ3JwY19jYWxsX2Vycm9yIGVycm9yOworICBjaGFyICpkZXRhaWxzID0gTlVMTDsKKyAgc2l6ZV90IGRldGFpbHNfY2FwYWNpdHkgPSAwOworICBpbnQgd2FzX2NhbmNlbGxlZCA9IDI7CisKKyAgYyA9IGdycGNfY2hhbm5lbF9jcmVhdGVfY2FsbChmLmNsaWVudCwgTlVMTCwgR1JQQ19QUk9QQUdBVEVfREVGQVVMVFMsIGYuY3EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX25hbWUsICJmb28udGVzdC5nb29nbGUuZnIiLCBkZWFkbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgR1BSX0FTU0VSVChjKTsKKworICBncnBjX21ldGFkYXRhX2FycmF5X2luaXQoJmluaXRpYWxfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmdHJhaWxpbmdfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfaW5pdCgmcmVxdWVzdF9tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19jYWxsX2RldGFpbHNfaW5pdCgmY2FsbF9kZXRhaWxzKTsKKworICBtZW1zZXQob3BzLCAwLCBzaXplb2Yob3BzKSk7CisgIG9wID0gb3BzOworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfSU5JVElBTF9NRVRBREFUQTsKKyAgR1BSX0FTU0VSVChpbml0aWFsX2xyX21ldGFkYXRhICE9IE5VTEwpOworICBvcC0+ZGF0YS5zZW5kX2luaXRpYWxfbWV0YWRhdGEuY291bnQgPSAxOworICBvcC0+ZGF0YS5zZW5kX2luaXRpYWxfbWV0YWRhdGEubWV0YWRhdGEgPSBpbml0aWFsX2xyX21ldGFkYXRhOworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfTUVTU0FHRTsKKyAgb3AtPmRhdGEuc2VuZF9tZXNzYWdlID0gcmVxdWVzdF9wYXlsb2FkOworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfQ0xPU0VfRlJPTV9DTElFTlQ7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIG9wLT5vcCA9IEdSUENfT1BfUkVDVl9JTklUSUFMX01FVEFEQVRBOworICBvcC0+ZGF0YS5yZWN2X2luaXRpYWxfbWV0YWRhdGEgPSAmaW5pdGlhbF9tZXRhZGF0YV9yZWN2OworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBvcC0+b3AgPSBHUlBDX09QX1JFQ1ZfTUVTU0FHRTsKKyAgb3AtPmRhdGEucmVjdl9tZXNzYWdlID0gJnJlc3BvbnNlX3BheWxvYWRfcmVjdjsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9SRUNWX1NUQVRVU19PTl9DTElFTlQ7CisgIG9wLT5kYXRhLnJlY3Zfc3RhdHVzX29uX2NsaWVudC50cmFpbGluZ19tZXRhZGF0YSA9ICZ0cmFpbGluZ19tZXRhZGF0YV9yZWN2OworICBvcC0+ZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQuc3RhdHVzID0gJnN0YXR1czsKKyAgb3AtPmRhdGEucmVjdl9zdGF0dXNfb25fY2xpZW50LnN0YXR1c19kZXRhaWxzID0gJmRldGFpbHM7CisgIG9wLT5kYXRhLnJlY3Zfc3RhdHVzX29uX2NsaWVudC5zdGF0dXNfZGV0YWlsc19jYXBhY2l0eSA9ICZkZXRhaWxzX2NhcGFjaXR5OworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBlcnJvciA9IGdycGNfY2FsbF9zdGFydF9iYXRjaChjLCBvcHMsIChzaXplX3QpKG9wIC0gb3BzKSwgdGFnKDEpLCBOVUxMKTsKKyAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworCisgIGVycm9yID0KKyAgICAgIGdycGNfc2VydmVyX3JlcXVlc3RfY2FsbChmLnNlcnZlciwgJnMsICZjYWxsX2RldGFpbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVlc3RfbWV0YWRhdGFfcmVjdiwgZi5jcSwgZi5jcSwgdGFnKDEwMSkpOworICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBlcnJvcik7CisgIGNxX2V4cGVjdF9jb21wbGV0aW9uKGNxdiwgdGFnKDEwMSksIDEpOworICBjcV92ZXJpZnkoY3F2KTsKKworICBtZW1zZXQob3BzLCAwLCBzaXplb2Yob3BzKSk7CisgIG9wID0gb3BzOworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfSU5JVElBTF9NRVRBREFUQTsKKyAgb3AtPmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLmNvdW50ID0gMDsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9SRUNWX01FU1NBR0U7CisgIG9wLT5kYXRhLnJlY3ZfbWVzc2FnZSA9ICZyZXF1ZXN0X3BheWxvYWRfcmVjdjsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgZXJyb3IgPSBncnBjX2NhbGxfc3RhcnRfYmF0Y2gocywgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksIHRhZygxMDIpLCBOVUxMKTsKKyAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworCisgIGNxX2V4cGVjdF9jb21wbGV0aW9uKGNxdiwgdGFnKDEwMiksIDEpOworICBjcV92ZXJpZnkoY3F2KTsKKworICBtZW1zZXQob3BzLCAwLCBzaXplb2Yob3BzKSk7CisgIG9wID0gb3BzOworICBvcC0+b3AgPSBHUlBDX09QX1JFQ1ZfQ0xPU0VfT05fU0VSVkVSOworICBvcC0+ZGF0YS5yZWN2X2Nsb3NlX29uX3NlcnZlci5jYW5jZWxsZWQgPSAmd2FzX2NhbmNlbGxlZDsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9TRU5EX01FU1NBR0U7CisgIG9wLT5kYXRhLnNlbmRfbWVzc2FnZSA9IHJlc3BvbnNlX3BheWxvYWQ7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIG9wLT5vcCA9IEdSUENfT1BfU0VORF9TVEFUVVNfRlJPTV9TRVJWRVI7CisgIEdQUl9BU1NFUlQodHJhaWxpbmdfbHJfbWV0YWRhdGEgIT0gTlVMTCk7CisgIG9wLT5kYXRhLnNlbmRfc3RhdHVzX2Zyb21fc2VydmVyLnRyYWlsaW5nX21ldGFkYXRhX2NvdW50ID0gMTsKKyAgb3AtPmRhdGEuc2VuZF9zdGF0dXNfZnJvbV9zZXJ2ZXIudHJhaWxpbmdfbWV0YWRhdGEgPSB0cmFpbGluZ19scl9tZXRhZGF0YTsKKyAgb3AtPmRhdGEuc2VuZF9zdGF0dXNfZnJvbV9zZXJ2ZXIuc3RhdHVzID0gR1JQQ19TVEFUVVNfT0s7CisgIG9wLT5kYXRhLnNlbmRfc3RhdHVzX2Zyb21fc2VydmVyLnN0YXR1c19kZXRhaWxzID0gInh5eiI7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIGVycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoKHMsIG9wcywgKHNpemVfdCkob3AgLSBvcHMpLCB0YWcoMTAzKSwgTlVMTCk7CisgIEdQUl9BU1NFUlQoR1JQQ19DQUxMX09LID09IGVycm9yKTsKKworICBjcV9leHBlY3RfY29tcGxldGlvbihjcXYsIHRhZygxMDMpLCAxKTsKKyAgY3FfZXhwZWN0X2NvbXBsZXRpb24oY3F2LCB0YWcoMSksIDEpOworICBjcV92ZXJpZnkoY3F2KTsKKworICBHUFJfQVNTRVJUKHN0YXR1cyA9PSBHUlBDX1NUQVRVU19PSyk7CisKKyAgZ3ByX2ZyZWUoZGV0YWlscyk7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfZGVzdHJveSgmaW5pdGlhbF9tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheV9kZXN0cm95KCZ0cmFpbGluZ19tZXRhZGF0YV9yZWN2KTsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheV9kZXN0cm95KCZyZXF1ZXN0X21ldGFkYXRhX3JlY3YpOworICBncnBjX2NhbGxfZGV0YWlsc19kZXN0cm95KCZjYWxsX2RldGFpbHMpOworCisgIGdycGNfY2FsbF9kZXN0cm95KGMpOworICBncnBjX2NhbGxfZGVzdHJveShzKTsKKworICBjcV92ZXJpZmllcl9kZXN0cm95KGNxdik7CisKKyAgZ3JwY19ieXRlX2J1ZmZlcl9kZXN0cm95KHJlcXVlc3RfcGF5bG9hZCk7CisgIGdycGNfYnl0ZV9idWZmZXJfZGVzdHJveShyZXNwb25zZV9wYXlsb2FkKTsKKyAgZ3JwY19ieXRlX2J1ZmZlcl9kZXN0cm95KHJlcXVlc3RfcGF5bG9hZF9yZWN2KTsKKyAgZ3JwY19ieXRlX2J1ZmZlcl9kZXN0cm95KHJlc3BvbnNlX3BheWxvYWRfcmVjdik7Cit9CisKKy8qIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGZvciB0ZXN0aW5nIHB1cnBvc2VzICovCitleHRlcm4gdm9pZCAoKmdfbG9hZF9yZXBvcnRpbmdfZm4pKAorICAgIGNvbnN0IGdycGNfbG9hZF9yZXBvcnRpbmdfY2FsbF9kYXRhICpjYWxsX2RhdGEpOworCitzdGF0aWMgdm9pZCB0ZXN0X2xvYWRfcmVwb3J0aW5nX2hvb2soZ3JwY19lbmQyZW5kX3Rlc3RfY29uZmlnIGNvbmZpZykgeworICAvKiBUT0RPKGRncSk6IHRoaXMgdGVzdCBpcyBjdXJyZW50bHkgYSBub29wIHVudGlsIExSIGlzIGZ1bGx5IGRlZmluZWQuCisgICAqIExlYXZpbmcgdGhlIHJlc3QgaGVyZSwgYXMgaXQnbGwgbGlrZWx5IGJlIHJldXNhYmxlLiAqLworCisgIC8qIEludHJvZHVjZSBsb2FkIHJlcG9ydGluZyBmb3IgdGhlIHNlcnZlciB0aHJvdWdoIGl0cyBhcmd1bWVudHMgKi8KKyAgZ3JwY19hcmcgYXJnID0gZ3JwY19sb2FkX3JlcG9ydGluZ19lbmFibGVfYXJnKCk7CisgIGdycGNfY2hhbm5lbF9hcmdzICpscl9zZXJ2ZXJfYXJncyA9CisgICAgICBncnBjX2NoYW5uZWxfYXJnc19jb3B5X2FuZF9hZGQoTlVMTCwgJmFyZywgMSk7CisKKyAgZ3JwY19lbmQyZW5kX3Rlc3RfZml4dHVyZSBmID0KKyAgICAgIGJlZ2luX3Rlc3QoY29uZmlnLCAidGVzdF9sb2FkX3JlcG9ydGluZ19ob29rIiwgTlVMTCwgbHJfc2VydmVyX2FyZ3MpOworCisgIGNvbnN0IGNoYXIgKm1ldGhvZF9uYW1lID0gIi9nUlBDRlRXIjsKKyAgY29uc3QgY2hhciAqcmVxdWVzdF9tc2cgPSAidGhlIG1zZyBmcm9tIHRoZSBjbGllbnQiOworICBjb25zdCBjaGFyICpyZXNwb25zZV9tc2cgPSAiLi4uIGFuZCB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyIjsKKworICBncnBjX21ldGFkYXRhIGluaXRpYWxfbHJfbWV0YWRhdGE7CisgIGdycGNfbWV0YWRhdGEgdHJhaWxpbmdfbHJfbWV0YWRhdGE7CisKKyAgaW5pdGlhbF9scl9tZXRhZGF0YS5rZXkgPSBHUlBDX0xPQURfUkVQT1JUSU5HX0lOSVRJQUxfTURfS0VZOworICBpbml0aWFsX2xyX21ldGFkYXRhLnZhbHVlID0gImNsaWVudC10b2tlbiI7CisgIGluaXRpYWxfbHJfbWV0YWRhdGEudmFsdWVfbGVuZ3RoID0gc3RybGVuKGluaXRpYWxfbHJfbWV0YWRhdGEudmFsdWUpOworICBtZW1zZXQoJmluaXRpYWxfbHJfbWV0YWRhdGEuaW50ZXJuYWxfZGF0YSwgMCwKKyAgICAgICAgIHNpemVvZihpbml0aWFsX2xyX21ldGFkYXRhLmludGVybmFsX2RhdGEpKTsKKworICB0cmFpbGluZ19scl9tZXRhZGF0YS5rZXkgPSBHUlBDX0xPQURfUkVQT1JUSU5HX1RSQUlMSU5HX01EX0tFWTsKKyAgdHJhaWxpbmdfbHJfbWV0YWRhdGEudmFsdWUgPSAic2VydmVyLXRva2VuIjsKKyAgdHJhaWxpbmdfbHJfbWV0YWRhdGEudmFsdWVfbGVuZ3RoID0gc3RybGVuKHRyYWlsaW5nX2xyX21ldGFkYXRhLnZhbHVlKTsKKyAgbWVtc2V0KCZ0cmFpbGluZ19scl9tZXRhZGF0YS5pbnRlcm5hbF9kYXRhLCAwLAorICAgICAgICAgc2l6ZW9mKHRyYWlsaW5nX2xyX21ldGFkYXRhLmludGVybmFsX2RhdGEpKTsKKworICByZXF1ZXN0X3Jlc3BvbnNlX3dpdGhfcGF5bG9hZChmLCBtZXRob2RfbmFtZSwgcmVxdWVzdF9tc2csIHJlc3BvbnNlX21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaXRpYWxfbHJfbWV0YWRhdGEsICZ0cmFpbGluZ19scl9tZXRhZGF0YSk7CisgIGVuZF90ZXN0KCZmKTsKKyAgZ3JwY19jaGFubmVsX2FyZ3NfZGVzdHJveShscl9zZXJ2ZXJfYXJncyk7CisgIGNvbmZpZy50ZWFyX2Rvd25fZGF0YSgmZik7Cit9CisKK3ZvaWQgbG9hZF9yZXBvcnRpbmdfaG9vayhncnBjX2VuZDJlbmRfdGVzdF9jb25maWcgY29uZmlnKSB7CisgIHRlc3RfbG9hZF9yZXBvcnRpbmdfaG9vayhjb25maWcpOworfQorCit2b2lkIGxvYWRfcmVwb3J0aW5nX2hvb2tfcHJlX2luaXQodm9pZCkge30KZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9pb21nci91ZHBfc2VydmVyX3Rlc3QuYyBiL3Rlc3QvY29yZS9pb21nci91ZHBfc2VydmVyX3Rlc3QuYwppbmRleCAzMTUyZmI3Li5hOTU5YTdlIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvaW9tZ3IvdWRwX3NlcnZlcl90ZXN0LmMKKysrIGIvdGVzdC9jb3JlL2lvbWdyL3VkcF9zZXJ2ZXJfdGVzdC5jCkBAIC03MCw3ICs3MCw4IEBACiAgIGdfbnVtYmVyX29mX3JlYWRzKys7CiAgIGdfbnVtYmVyX29mX2J5dGVzX3JlYWQgKz0gKGludClieXRlX2NvdW50OwogCi0gIGdycGNfcG9sbHNldF9raWNrKGdfcG9sbHNldCwgTlVMTCk7CisgIEdQUl9BU1NFUlQoCisgICAgICBHUlBDX0xPR19JRl9FUlJPUigicG9sbHNldF9raWNrIiwgZ3JwY19wb2xsc2V0X2tpY2soZ19wb2xsc2V0LCBOVUxMKSkpOwogICBncHJfbXVfdW5sb2NrKGdfbXUpOwogfQogCkBAIC0xNzksOCArMTgwLDEwIEBACiAgICAgd2hpbGUgKGdfbnVtYmVyX29mX3JlYWRzID09IG51bWJlcl9vZl9yZWFkc19iZWZvcmUgJiYKICAgICAgICAgICAgZ3ByX3RpbWVfY21wKGRlYWRsaW5lLCBncHJfbm93KGRlYWRsaW5lLmNsb2NrX3R5cGUpKSA+IDApIHsKICAgICAgIGdycGNfcG9sbHNldF93b3JrZXIgKndvcmtlciA9IE5VTEw7Ci0gICAgICBncnBjX3BvbGxzZXRfd29yaygmZXhlY19jdHgsIGdfcG9sbHNldCwgJndvcmtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdwcl9ub3coR1BSX0NMT0NLX01PTk9UT05JQyksIGRlYWRsaW5lKTsKKyAgICAgIEdQUl9BU1NFUlQoR1JQQ19MT0dfSUZfRVJST1IoCisgICAgICAgICAgInBvbGxzZXRfd29yayIsCisgICAgICAgICAgZ3JwY19wb2xsc2V0X3dvcmsoJmV4ZWNfY3R4LCBnX3BvbGxzZXQsICZ3b3JrZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3ByX25vdyhHUFJfQ0xPQ0tfTU9OT1RPTklDKSwgZGVhZGxpbmUpKSk7CiAgICAgICBncHJfbXVfdW5sb2NrKGdfbXUpOwogICAgICAgZ3JwY19leGVjX2N0eF9maW5pc2goJmV4ZWNfY3R4KTsKICAgICAgIGdwcl9tdV9sb2NrKGdfbXUpOwpAQCAtMTk5LDcgKzIwMiw4IEBACiAgIEdQUl9BU1NFUlQoZ19udW1iZXJfb2Zfb3JwaGFuX2NhbGxzID09IDEpOwogfQogCi1zdGF0aWMgdm9pZCBkZXN0cm95X3BvbGxzZXQoZ3JwY19leGVjX2N0eCAqZXhlY19jdHgsIHZvaWQgKnAsIGJvb2wgc3VjY2Vzcykgeworc3RhdGljIHZvaWQgZGVzdHJveV9wb2xsc2V0KGdycGNfZXhlY19jdHggKmV4ZWNfY3R4LCB2b2lkICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdycGNfZXJyb3IgKmVycm9yKSB7CiAgIGdycGNfcG9sbHNldF9kZXN0cm95KHApOwogfQogCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbmFub3BiL2Z1enplcl9yZXNwb25zZS5jIGIvdGVzdC9jb3JlL25hbm9wYi9mdXp6ZXJfcmVzcG9uc2UuYwppbmRleCAyMWE1ZDdiLi43NWE5OWZhIDEwMDY0NAotLS0gYS90ZXN0L2NvcmUvbmFub3BiL2Z1enplcl9yZXNwb25zZS5jCisrKyBiL3Rlc3QvY29yZS9uYW5vcGIvZnV6emVyX3Jlc3BvbnNlLmMKQEAgLTQzLDkgKzQzLDkgQEAKIAogaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgZ3ByX3NsaWNlIHNsaWNlID0gZ3ByX3NsaWNlX2Zyb21fY29waWVkX2J1ZmZlcigoY29uc3QgY2hhciAqKWRhdGEsIHNpemUpOwotICBncnBjX2dycGNsYl9yZXNwb25zZSAqcmVzcG9uc2U7Ci0gIGlmICgocmVzcG9uc2UgPSBncnBjX2dycGNsYl9yZXNwb25zZV9wYXJzZShzbGljZSkpKSB7Ci0gICAgZ3JwY19ncnBjbGJfcmVzcG9uc2VfZGVzdHJveShyZXNwb25zZSk7CisgIGdycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2UgKnJlc3BvbnNlOworICBpZiAoKHJlc3BvbnNlID0gZ3JwY19ncnBjbGJfaW5pdGlhbF9yZXNwb25zZV9wYXJzZShzbGljZSkpKSB7CisgICAgZ3JwY19ncnBjbGJfaW5pdGlhbF9yZXNwb25zZV9kZXN0cm95KHJlc3BvbnNlKTsKICAgfQogICBncHJfc2xpY2VfdW5yZWYoc2xpY2UpOwogICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Rlc3QvY3BwL2VuZDJlbmQvYXN5bmNfZW5kMmVuZF90ZXN0LmNjIGIvdGVzdC9jcHAvZW5kMmVuZC9hc3luY19lbmQyZW5kX3Rlc3QuY2MKaW5kZXggNGE4OTM2ZC4uYWM3OWZlOCAxMDA2NDQKLS0tIGEvdGVzdC9jcHAvZW5kMmVuZC9hc3luY19lbmQyZW5kX3Rlc3QuY2MKKysrIGIvdGVzdC9jcHAvZW5kMmVuZC9hc3luY19lbmQyZW5kX3Rlc3QuY2MKQEAgLTIwMCw2ICsyMDAsMTAgQEAKICAgYm9vbCBzcGluXzsKIH07CiAKK2Jvb2wgcGx1Z2luX2hhc19zeW5jX21ldGhvZHMoc3RkOjp1bmlxdWVfcHRyPFNlcnZlckJ1aWxkZXJQbHVnaW4+JiBwbHVnaW4pIHsKKyAgcmV0dXJuIHBsdWdpbi0+aGFzX3N5bmNfbWV0aG9kcygpOworfQorCiAvLyBUaGlzIGNsYXNzIGRpc2FibGVzIHRoZSBzZXJ2ZXIgYnVpbGRlciBwbHVnaW5zIHRoYXQgbWF5IGFkZCBzeW5jIHNlcnZpY2VzIHRvCiAvLyB0aGUgc2VydmVyLiBJZiB0aGVyZSBhcmUgc3luYyBzZXJ2aWNlcywgVW5pbXBsZW1lbnRlZFJwYyB0ZXN0IHdpbGwgdHJpZ2VyCiAvLyB0aGUgc3luYyB1bmtvd24gcnBjIHJvdXRpbmUgb24gdGhlIHNlcnZlciBzaWRlLCByYXRoZXIgdGhhbiB0aGUgYXN5bmMgb25lCkBAIC0yMTAsMTQgKzIxNCw5IEBACiAKICAgdm9pZCBVcGRhdGVQbHVnaW5zKHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTZXJ2ZXJCdWlsZGVyUGx1Z2luPj4qIHBsdWdpbnMpCiAgICAgICBHUlBDX09WRVJSSURFIHsKLSAgICBhdXRvIHBsdWdpbiA9IHBsdWdpbnMtPmJlZ2luKCk7Ci0gICAgd2hpbGUgKHBsdWdpbiAhPSBwbHVnaW5zLT5lbmQoKSkgewotICAgICAgaWYgKCgqcGx1Z2luKS0+aGFzX3N5bmNfbWV0aG9kcygpKSB7Ci0gICAgICAgIHBsdWdpbnMtPmVyYXNlKHBsdWdpbisrKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHBsdWdpbisrOwotICAgICAgfQotICAgIH0KKyAgICBwbHVnaW5zLT5lcmFzZShzdGQ6OnJlbW92ZV9pZihwbHVnaW5zLT5iZWdpbigpLCBwbHVnaW5zLT5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5faGFzX3N5bmNfbWV0aG9kcyksCisgICAgICAgICAgICAgICAgICAgcGx1Z2lucy0+ZW5kKCkpOwogICB9CiB9OwogCmRpZmYgLS1naXQgYS90ZXN0L2NwcC9lbmQyZW5kL2VuZDJlbmRfdGVzdC5jYyBiL3Rlc3QvY3BwL2VuZDJlbmQvZW5kMmVuZF90ZXN0LmNjCmluZGV4IDBmODdhZTMuLjQ2YTU4ZDMgMTAwNjQ0Ci0tLSBhL3Rlc3QvY3BwL2VuZDJlbmQvZW5kMmVuZF90ZXN0LmNjCisrKyBiL3Rlc3QvY3BwL2VuZDJlbmQvZW5kMmVuZF90ZXN0LmNjCkBAIC0xNDE0LDcgKzE0MTQsNyBAQAogICBzdGQ6OnNoYXJlZF9wdHI8Y29uc3QgQXV0aENvbnRleHQ+IGF1dGhfY3R4ID0gY29udGV4dC5hdXRoX2NvbnRleHQoKTsKICAgc3RkOjp2ZWN0b3I8Z3JwYzo6c3RyaW5nX3JlZj4gdHN0ID0KICAgICAgIGF1dGhfY3R4LT5GaW5kUHJvcGVydHlWYWx1ZXMoInRyYW5zcG9ydF9zZWN1cml0eV90eXBlIik7Ci0gIEVYUEVDVF9FUSgxdSwgdHN0LnNpemUoKSk7CisgIEFTU0VSVF9FUSgxdSwgdHN0LnNpemUoKSk7CiAgIEVYUEVDVF9FUShHZXRQYXJhbSgpLmNyZWRlbnRpYWxzX3R5cGUsIFRvU3RyaW5nKHRzdFswXSkpOwogICBpZiAoR2V0UGFyYW0oKS5jcmVkZW50aWFsc190eXBlID09IGtUbHNDcmVkZW50aWFsc1R5cGUpIHsKICAgICBFWFBFQ1RfRVEoIng1MDlfc3ViamVjdF9hbHRlcm5hdGl2ZV9uYW1lIiwKZGlmZiAtLWdpdCBhL3Rlc3QvY3BwL2VuZDJlbmQvcHJvdG9fc2VydmVyX3JlZmxlY3Rpb25fdGVzdC5jYyBiL3Rlc3QvY3BwL2VuZDJlbmQvcHJvdG9fc2VydmVyX3JlZmxlY3Rpb25fdGVzdC5jYwppbmRleCBmOGZjMzliLi5lZmJiMGUxIDEwMDY0NAotLS0gYS90ZXN0L2NwcC9lbmQyZW5kL3Byb3RvX3NlcnZlcl9yZWZsZWN0aW9uX3Rlc3QuY2MKKysrIGIvdGVzdC9jcHAvZW5kMmVuZC9wcm90b19zZXJ2ZXJfcmVmbGVjdGlvbl90ZXN0LmNjCkBAIC0zMSw3ICszMSw2IEBACiAgKgogICovCiAKLSNpbmNsdWRlIDxnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5oPgogI2luY2x1ZGUgPGdycGMrKy9jaGFubmVsLmg+CiAjaW5jbHVkZSA8Z3JwYysrL2NsaWVudF9jb250ZXh0Lmg+CiAjaW5jbHVkZSA8Z3JwYysrL2NyZWF0ZV9jaGFubmVsLmg+CkBAIC01OSw3ICs1OCw3IEBACiAKICAgdm9pZCBTZXRVcCgpIEdSUENfT1ZFUlJJREUgewogICAgIHBvcnRfID0gZ3JwY19waWNrX3VudXNlZF9wb3J0X29yX2RpZSgpOwotICAgIHJlZl9kZXNjX3Bvb2xfID0gZ29vZ2xlOjpwcm90b2J1Zjo6RGVzY3JpcHRvclBvb2w6OmdlbmVyYXRlZF9wb29sKCk7CisgICAgcmVmX2Rlc2NfcG9vbF8gPSBwcm90b2J1Zjo6RGVzY3JpcHRvclBvb2w6OmdlbmVyYXRlZF9wb29sKCk7CiAKICAgICBTZXJ2ZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZ3JwYzo6c3RyaW5nIHNlcnZlcl9hZGRyZXNzID0gImxvY2FsaG9zdDoiICsgdG9fc3RyaW5nKHBvcnRfKTsKQEAgLTczLDcgKzcyLDcgQEAKICAgICAgICAgQ3JlYXRlQ2hhbm5lbCh0YXJnZXQsIEluc2VjdXJlQ2hhbm5lbENyZWRlbnRpYWxzKCkpOwogICAgIHN0dWJfID0gZ3JwYzo6dGVzdGluZzo6RWNob1Rlc3RTZXJ2aWNlOjpOZXdTdHViKGNoYW5uZWwpOwogICAgIGRlc2NfZGJfLnJlc2V0KG5ldyBQcm90b1JlZmxlY3Rpb25EZXNjcmlwdG9yRGF0YWJhc2UoY2hhbm5lbCkpOwotICAgIGRlc2NfcG9vbF8ucmVzZXQobmV3IGdvb2dsZTo6cHJvdG9idWY6OkRlc2NyaXB0b3JQb29sKGRlc2NfZGJfLmdldCgpKSk7CisgICAgZGVzY19wb29sXy5yZXNldChuZXcgcHJvdG9idWY6OkRlc2NyaXB0b3JQb29sKGRlc2NfZGJfLmdldCgpKSk7CiAgIH0KIAogICBzdHJpbmcgdG9fc3RyaW5nKGNvbnN0IGludCBudW1iZXIpIHsKQEAgLTgzLDE1ICs4MiwxNSBAQAogICB9CiAKICAgdm9pZCBDb21wYXJlU2VydmljZShjb25zdCBncnBjOjpzdHJpbmcmIHNlcnZpY2UpIHsKLSAgICBjb25zdCBnb29nbGU6OnByb3RvYnVmOjpTZXJ2aWNlRGVzY3JpcHRvciogc2VydmljZV9kZXNjID0KKyAgICBjb25zdCBwcm90b2J1Zjo6U2VydmljZURlc2NyaXB0b3IqIHNlcnZpY2VfZGVzYyA9CiAgICAgICAgIGRlc2NfcG9vbF8tPkZpbmRTZXJ2aWNlQnlOYW1lKHNlcnZpY2UpOwotICAgIGNvbnN0IGdvb2dsZTo6cHJvdG9idWY6OlNlcnZpY2VEZXNjcmlwdG9yKiByZWZfc2VydmljZV9kZXNjID0KKyAgICBjb25zdCBwcm90b2J1Zjo6U2VydmljZURlc2NyaXB0b3IqIHJlZl9zZXJ2aWNlX2Rlc2MgPQogICAgICAgICByZWZfZGVzY19wb29sXy0+RmluZFNlcnZpY2VCeU5hbWUoc2VydmljZSk7CiAgICAgRVhQRUNUX1RSVUUoc2VydmljZV9kZXNjICE9IG51bGxwdHIpOwogICAgIEVYUEVDVF9UUlVFKHJlZl9zZXJ2aWNlX2Rlc2MgIT0gbnVsbHB0cik7CiAgICAgRVhQRUNUX0VRKHNlcnZpY2VfZGVzYy0+RGVidWdTdHJpbmcoKSwgcmVmX3NlcnZpY2VfZGVzYy0+RGVidWdTdHJpbmcoKSk7CiAKLSAgICBjb25zdCBnb29nbGU6OnByb3RvYnVmOjpGaWxlRGVzY3JpcHRvciogZmlsZV9kZXNjID0gc2VydmljZV9kZXNjLT5maWxlKCk7CisgICAgY29uc3QgcHJvdG9idWY6OkZpbGVEZXNjcmlwdG9yKiBmaWxlX2Rlc2MgPSBzZXJ2aWNlX2Rlc2MtPmZpbGUoKTsKICAgICBpZiAoa25vd25fZmlsZXNfLmZpbmQoZmlsZV9kZXNjLT5wYWNrYWdlKCkgKyAiLyIgKyBmaWxlX2Rlc2MtPm5hbWUoKSkgIT0KICAgICAgICAga25vd25fZmlsZXNfLmVuZCgpKSB7CiAgICAgICBFWFBFQ1RfRVEoZmlsZV9kZXNjLT5EZWJ1Z1N0cmluZygpLApAQCAtMTA1LDkgKzEwNCw5IEBACiAgIH0KIAogICB2b2lkIENvbXBhcmVNZXRob2QoY29uc3QgZ3JwYzo6c3RyaW5nJiBtZXRob2QpIHsKLSAgICBjb25zdCBnb29nbGU6OnByb3RvYnVmOjpNZXRob2REZXNjcmlwdG9yKiBtZXRob2RfZGVzYyA9CisgICAgY29uc3QgcHJvdG9idWY6Ok1ldGhvZERlc2NyaXB0b3IqIG1ldGhvZF9kZXNjID0KICAgICAgICAgZGVzY19wb29sXy0+RmluZE1ldGhvZEJ5TmFtZShtZXRob2QpOwotICAgIGNvbnN0IGdvb2dsZTo6cHJvdG9idWY6Ok1ldGhvZERlc2NyaXB0b3IqIHJlZl9tZXRob2RfZGVzYyA9CisgICAgY29uc3QgcHJvdG9idWY6Ok1ldGhvZERlc2NyaXB0b3IqIHJlZl9tZXRob2RfZGVzYyA9CiAgICAgICAgIHJlZl9kZXNjX3Bvb2xfLT5GaW5kTWV0aG9kQnlOYW1lKG1ldGhvZCk7CiAgICAgRVhQRUNUX1RSVUUobWV0aG9kX2Rlc2MgIT0gbnVsbHB0cik7CiAgICAgRVhQRUNUX1RSVUUocmVmX21ldGhvZF9kZXNjICE9IG51bGxwdHIpOwpAQCAtMTIyLDkgKzEyMSw4IEBACiAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgZ29vZ2xlOjpwcm90b2J1Zjo6RGVzY3JpcHRvciogZGVzYyA9Ci0gICAgICAgIGRlc2NfcG9vbF8tPkZpbmRNZXNzYWdlVHlwZUJ5TmFtZSh0eXBlKTsKLSAgICBjb25zdCBnb29nbGU6OnByb3RvYnVmOjpEZXNjcmlwdG9yKiByZWZfZGVzYyA9CisgICAgY29uc3QgcHJvdG9idWY6OkRlc2NyaXB0b3IqIGRlc2MgPSBkZXNjX3Bvb2xfLT5GaW5kTWVzc2FnZVR5cGVCeU5hbWUodHlwZSk7CisgICAgY29uc3QgcHJvdG9idWY6OkRlc2NyaXB0b3IqIHJlZl9kZXNjID0KICAgICAgICAgcmVmX2Rlc2NfcG9vbF8tPkZpbmRNZXNzYWdlVHlwZUJ5TmFtZSh0eXBlKTsKICAgICBFWFBFQ1RfVFJVRShkZXNjICE9IG51bGxwdHIpOwogICAgIEVYUEVDVF9UUlVFKHJlZl9kZXNjICE9IG51bGxwdHIpOwpAQCAtMTM1LDEwICsxMzMsMTAgQEAKICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZlcj4gc2VydmVyXzsKICAgc3RkOjp1bmlxdWVfcHRyPGdycGM6OnRlc3Rpbmc6OkVjaG9UZXN0U2VydmljZTo6U3R1Yj4gc3R1Yl87CiAgIHN0ZDo6dW5pcXVlX3B0cjxQcm90b1JlZmxlY3Rpb25EZXNjcmlwdG9yRGF0YWJhc2U+IGRlc2NfZGJfOwotICBzdGQ6OnVuaXF1ZV9wdHI8Z29vZ2xlOjpwcm90b2J1Zjo6RGVzY3JpcHRvclBvb2w+IGRlc2NfcG9vbF87CisgIHN0ZDo6dW5pcXVlX3B0cjxwcm90b2J1Zjo6RGVzY3JpcHRvclBvb2w+IGRlc2NfcG9vbF87CiAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdHJpbmc+IGtub3duX2ZpbGVzXzsKICAgc3RkOjp1bm9yZGVyZWRfc2V0PHN0cmluZz4ga25vd25fdHlwZXNfOwotICBjb25zdCBnb29nbGU6OnByb3RvYnVmOjpEZXNjcmlwdG9yUG9vbCogcmVmX2Rlc2NfcG9vbF87CisgIGNvbnN0IHByb3RvYnVmOjpEZXNjcmlwdG9yUG9vbCogcmVmX2Rlc2NfcG9vbF87CiAgIGludCBwb3J0XzsKICAgcmVmbGVjdGlvbjo6UHJvdG9TZXJ2ZXJSZWZsZWN0aW9uUGx1Z2luIHBsdWdpbl87CiB9OwpkaWZmIC0tZ2l0IGEvdGVzdC9jcHAvZW5kMmVuZC9zZXJ2ZXJfYnVpbGRlcl9wbHVnaW5fdGVzdC5jYyBiL3Rlc3QvY3BwL2VuZDJlbmQvc2VydmVyX2J1aWxkZXJfcGx1Z2luX3Rlc3QuY2MKaW5kZXggNzc4YTJiZS4uYjk2N2E1ZCAxMDA2NDQKLS0tIGEvdGVzdC9jcHAvZW5kMmVuZC9zZXJ2ZXJfYnVpbGRlcl9wbHVnaW5fdGVzdC5jYworKysgYi90ZXN0L2NwcC9lbmQyZW5kL3NlcnZlcl9idWlsZGVyX3BsdWdpbl90ZXN0LmNjCkBAIC0xOTEsNyArMTkxLDcgQEAKICAgICAvLyB3ZSBydW4gc29tZSB0ZXN0cyB3aXRob3V0IGEgc2VydmljZSwgYW5kIGZvciB0aG9zZSB3ZSBuZWVkIHRvIHN1cHBseSBhCiAgICAgLy8gZnJlcXVlbnRseSBwb2xsZWQgY29tcGxldGlvbiBxdWV1ZQogICAgIGNxXyA9IGJ1aWxkZXJfLT5BZGRDb21wbGV0aW9uUXVldWUoKTsKLSAgICBjcV90aHJlYWRfID0gZ3JwYzo6dGhyZWFkKHN0ZDo6YmluZCgmU2VydmVyQnVpbGRlclBsdWdpblRlc3Q6OlJ1bkNRLCB0aGlzKSk7CisgICAgY3FfdGhyZWFkXyA9IG5ldyBncnBjOjp0aHJlYWQoJlNlcnZlckJ1aWxkZXJQbHVnaW5UZXN0OjpSdW5DUSwgdGhpcyk7CiAgICAgc2VydmVyXyA9IGJ1aWxkZXJfLT5CdWlsZEFuZFN0YXJ0KCk7CiAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQcmVzZW50KCkpOwogICB9CkBAIC0yMDksNyArMjA5LDggQEAKICAgICBFWFBFQ1RfVFJVRShwbHVnaW4tPmZpbmlzaF9pc19jYWxsZWQoKSk7CiAgICAgc2VydmVyXy0+U2h1dGRvd24oKTsKICAgICBjcV8tPlNodXRkb3duKCk7Ci0gICAgY3FfdGhyZWFkXy5qb2luKCk7CisgICAgY3FfdGhyZWFkXy0+am9pbigpOworICAgIGRlbGV0ZSBjcV90aHJlYWRfOwogICB9CiAKICAgc3RyaW5nIHRvX3N0cmluZyhjb25zdCBpbnQgbnVtYmVyKSB7CkBAIC0yMjQsNyArMjI1LDcgQEAKICAgc3RkOjp1bmlxdWVfcHRyPGdycGM6OnRlc3Rpbmc6OkVjaG9UZXN0U2VydmljZTo6U3R1Yj4gc3R1Yl87CiAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2ZXJDb21wbGV0aW9uUXVldWU+IGNxXzsKICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZlcj4gc2VydmVyXzsKLSAgZ3JwYzo6dGhyZWFkIGNxX3RocmVhZF87CisgIGdycGM6OnRocmVhZCogY3FfdGhyZWFkXzsKICAgVGVzdFNlcnZpY2VJbXBsIHNlcnZpY2VfOwogICBpbnQgcG9ydF87CiAKZGlmZiAtLWdpdCBhL3Rlc3QvY3BwL2dycGNsYi9ncnBjbGJfYXBpX3Rlc3QuY2MgYi90ZXN0L2NwcC9ncnBjbGIvZ3JwY2xiX2FwaV90ZXN0LmNjCmluZGV4IGJmNzc4NzguLjMzZGUxZWUgMTAwNjQ0Ci0tLSBhL3Rlc3QvY3BwL2dycGNsYi9ncnBjbGJfYXBpX3Rlc3QuY2MKKysrIGIvdGVzdC9jcHAvZ3JwY2xiL2dycGNsYl9hcGlfdGVzdC5jYwpAQCAtNTgsMjYgKzU4LDI0IEBACiAgIGdycGNfZ3JwY2xiX3JlcXVlc3RfZGVzdHJveShjX3JlcSk7CiB9CiAKLVRFU1RfRihHcnBjbGJUZXN0LCBQYXJzZVJlc3BvbnNlKSB7CitURVNUX0YoR3JwY2xiVGVzdCwgUGFyc2VJbml0aWFsUmVzcG9uc2UpIHsKICAgTG9hZEJhbGFuY2VSZXNwb25zZSByZXNwb25zZTsKICAgYXV0byogaW5pdGlhbF9yZXNwb25zZSA9IHJlc3BvbnNlLm11dGFibGVfaW5pdGlhbF9yZXNwb25zZSgpOwogICBhdXRvKiBjbGllbnRfc3RhdHNfcmVwb3J0X2ludGVydmFsID0KICAgICAgIGluaXRpYWxfcmVzcG9uc2UtPm11dGFibGVfY2xpZW50X3N0YXRzX3JlcG9ydF9pbnRlcnZhbCgpOwogICBjbGllbnRfc3RhdHNfcmVwb3J0X2ludGVydmFsLT5zZXRfc2Vjb25kcygxMjMpOwogICBjbGllbnRfc3RhdHNfcmVwb3J0X2ludGVydmFsLT5zZXRfbmFub3MoNDU2KTsKLQogICBjb25zdCBzdGQ6OnN0cmluZyBlbmNvZGVkX3Jlc3BvbnNlID0gcmVzcG9uc2UuU2VyaWFsaXplQXNTdHJpbmcoKTsKICAgZ3ByX3NsaWNlIGVuY29kZWRfc2xpY2UgPQogICAgICAgZ3ByX3NsaWNlX2Zyb21fY29waWVkX3N0cmluZyhlbmNvZGVkX3Jlc3BvbnNlLmNfc3RyKCkpOwotICBncnBjX2dycGNsYl9yZXNwb25zZSogY19yZXNwb25zZSA9IGdycGNfZ3JwY2xiX3Jlc3BvbnNlX3BhcnNlKGVuY29kZWRfc2xpY2UpOwotICBFWFBFQ1RfVFJVRShjX3Jlc3BvbnNlLT5oYXNfaW5pdGlhbF9yZXNwb25zZSk7Ci0gIEVYUEVDVF9GQUxTRShjX3Jlc3BvbnNlLT5pbml0aWFsX3Jlc3BvbnNlLmhhc19sb2FkX2JhbGFuY2VyX2RlbGVnYXRlKTsKLSAgRVhQRUNUX0VRKGNfcmVzcG9uc2UtPmluaXRpYWxfcmVzcG9uc2UuY2xpZW50X3N0YXRzX3JlcG9ydF9pbnRlcnZhbC5zZWNvbmRzLAotICAgICAgICAgICAgMTIzKTsKLSAgRVhQRUNUX0VRKGNfcmVzcG9uc2UtPmluaXRpYWxfcmVzcG9uc2UuY2xpZW50X3N0YXRzX3JlcG9ydF9pbnRlcnZhbC5uYW5vcywKLSAgICAgICAgICAgIDQ1Nik7CisKKyAgZ3JwY19ncnBjbGJfaW5pdGlhbF9yZXNwb25zZSogY19pbml0aWFsX3Jlc3BvbnNlID0KKyAgICAgIGdycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2VfcGFyc2UoZW5jb2RlZF9zbGljZSk7CisgIEVYUEVDVF9GQUxTRShjX2luaXRpYWxfcmVzcG9uc2UtPmhhc19sb2FkX2JhbGFuY2VyX2RlbGVnYXRlKTsKKyAgRVhQRUNUX0VRKGNfaW5pdGlhbF9yZXNwb25zZS0+Y2xpZW50X3N0YXRzX3JlcG9ydF9pbnRlcnZhbC5zZWNvbmRzLCAxMjMpOworICBFWFBFQ1RfRVEoY19pbml0aWFsX3Jlc3BvbnNlLT5jbGllbnRfc3RhdHNfcmVwb3J0X2ludGVydmFsLm5hbm9zLCA0NTYpOwogICBncHJfc2xpY2VfdW5yZWYoZW5jb2RlZF9zbGljZSk7Ci0gIGdycGNfZ3JwY2xiX3Jlc3BvbnNlX2Rlc3Ryb3koY19yZXNwb25zZSk7CisgIGdycGNfZ3JwY2xiX2luaXRpYWxfcmVzcG9uc2VfZGVzdHJveShjX2luaXRpYWxfcmVzcG9uc2UpOwogfQogCiBURVNUX0YoR3JwY2xiVGVzdCwgUGFyc2VSZXNwb25zZVNlcnZlckxpc3QpIHsKZGlmZiAtLWdpdCBhL3Rlc3QvY3BwL2dycGNsYi9ncnBjbGJfdGVzdC5jYyBiL3Rlc3QvY3BwL2dycGNsYi9ncnBjbGJfdGVzdC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDMwZjlkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jcHAvZ3JwY2xiL2dycGNsYl90ZXN0LmNjCkBAIC0wLDAgKzEsNjg4IEBACisvKgorICoKKyAqIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGNpbnR0eXBlcz4KKyNpbmNsdWRlIDxjc3RkYXJnPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxzdHJpbmc+CisKK2V4dGVybiAiQyIgeworI2luY2x1ZGUgPGdycGMvZ3JwYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9hbGxvYy5oPgorI2luY2x1ZGUgPGdycGMvc3VwcG9ydC9ob3N0X3BvcnQuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvbG9nLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N0cmluZ191dGlsLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3N5bmMuaD4KKyNpbmNsdWRlIDxncnBjL3N1cHBvcnQvdGhkLmg+CisjaW5jbHVkZSA8Z3JwYy9zdXBwb3J0L3RpbWUuaD4KKworI2luY2x1ZGUgInNyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL2NsaWVudF9jaGFubmVsLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL2NoYW5uZWwvY2hhbm5lbF9zdGFjay5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3N0cmluZy5oIgorI2luY2x1ZGUgInNyYy9jb3JlL2xpYi9zdXBwb3J0L3RtcGZpbGUuaCIKKyNpbmNsdWRlICJzcmMvY29yZS9saWIvc3VyZmFjZS9jaGFubmVsLmgiCisjaW5jbHVkZSAic3JjL2NvcmUvbGliL3N1cmZhY2Uvc2VydmVyLmgiCisjaW5jbHVkZSAidGVzdC9jb3JlL2VuZDJlbmQvY3FfdmVyaWZpZXIuaCIKKyNpbmNsdWRlICJ0ZXN0L2NvcmUvdXRpbC9wb3J0LmgiCisjaW5jbHVkZSAidGVzdC9jb3JlL3V0aWwvdGVzdF9jb25maWcuaCIKK30KKworI2luY2x1ZGUgInNyYy9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuaCIKKworI2RlZmluZSBOVU1fQkFDS0VORFMgNAorCisvLyBUT0RPKGRncSk6IE90aGVyIHNjZW5hcmlvcyBpbiBuZWVkIG9mIHRlc3Rpbmc6CisvLyAtIFNlbmQgYW4gZW1wdHkgc2VydmVybGlzdCB1cGRhdGUgYW5kIHZlcmlmeSB0aGF0IHRoZSBjbGllbnQgcmVxdWVzdCBibG9ja3MKKy8vICAgdW50aWwgYSBuZXcgc2VydmVybGlzdCB3aXRoIGFjdHVhbCBjb250ZW50cyBpcyBhdmFpbGFibGUuCisvLyAtIFNlbmQgaWRlbnRpY2FsIHNlcnZlcmxpc3QgdXBkYXRlCisvLyAtIFRlc3QgcmVjZXB0aW9uIG9mIGludmFsaWQgc2VydmVybGlzdAorLy8gLSBUZXN0IHBpbmdpbmcKKy8vIC0gVGVzdCBhZ2FpbnN0IGEgbm9uLUxCIHNlcnZlci4gVGhhdCBzZXJ2ZXIgc2hvdWxkIHJldHVybiBVTklNUExFTUVOVEVEIGFuZAorLy8gICB0aGUgY2FsbCBzaG91bGQgZmFpbC4KKy8vIC0gUmFuZG9tIExCIHNlcnZlciBjbG9zaW5nIHRoZSBzdHJlYW0gdW5leHBlY3RlZGx5LgorCituYW1lc3BhY2UgZ3JwYyB7CituYW1lc3BhY2UgeworCit0eXBlZGVmIHN0cnVjdCBjbGllbnRfZml4dHVyZSB7CisgIGdycGNfY2hhbm5lbCAqY2xpZW50OworICBjaGFyICpzZXJ2ZXJfdXJpOworICBncnBjX2NvbXBsZXRpb25fcXVldWUgKmNxOworfSBjbGllbnRfZml4dHVyZTsKKwordHlwZWRlZiBzdHJ1Y3Qgc2VydmVyX2ZpeHR1cmUgeworICBncnBjX3NlcnZlciAqc2VydmVyOworICBncnBjX2NhbGwgKnNlcnZlcl9jYWxsOworICBncnBjX2NvbXBsZXRpb25fcXVldWUgKmNxOworICBjaGFyICpzZXJ2ZXJzX2hvc3Rwb3J0OworICBpbnQgcG9ydDsKKyAgZ3ByX3RoZF9pZCB0aWQ7CisgIGludCBudW1fY2FsbHNfc2VydmljZWQ7Cit9IHNlcnZlcl9maXh0dXJlOworCit0eXBlZGVmIHN0cnVjdCB0ZXN0X2ZpeHR1cmUgeworICBzZXJ2ZXJfZml4dHVyZSBsYl9zZXJ2ZXI7CisgIHNlcnZlcl9maXh0dXJlIGxiX2JhY2tlbmRzW05VTV9CQUNLRU5EU107CisgIGNsaWVudF9maXh0dXJlIGNsaWVudDsKKyAgaW50IGxiX3NlcnZlcl91cGRhdGVfZGVsYXlfbXM7Cit9IHRlc3RfZml4dHVyZTsKKworc3RhdGljIHZvaWQgKnRhZyhpbnRwdHJfdCB0KSB7IHJldHVybiAodm9pZCAqKXQ7IH0KKworc3RhdGljIGdwcl9zbGljZSBidWlsZF9yZXNwb25zZV9wYXlsb2FkX3NsaWNlKAorICAgIGNvbnN0IGNoYXIgKmhvc3QsIGludCAqcG9ydHMsIHNpemVfdCBucG9ydHMsCisgICAgaW50NjRfdCBleHBpcmF0aW9uX2ludGVydmFsX3NlY3MsIGludDMyX3QgZXhwaXJhdGlvbl9pbnRlcnZhbF9uYW5vcykgeworICAvLyBzZXJ2ZXJfbGlzdCB7CisgIC8vICAgc2VydmVycyB7CisgIC8vICAgICBpcF9hZGRyZXNzOiAiMTI3LjAuMC4xIgorICAvLyAgICAgcG9ydDogLi4uCisgIC8vICAgICBsb2FkX2JhbGFuY2VfdG9rZW46ICJ0b2tlbi4uLiIKKyAgLy8gICB9CisgIC8vICAgLi4uCisgIC8vIH0KKyAgZ3JwYzo6bGI6OnYxOjpMb2FkQmFsYW5jZVJlc3BvbnNlIHJlc3BvbnNlOworICBhdXRvICpzZXJ2ZXJsaXN0ID0gcmVzcG9uc2UubXV0YWJsZV9zZXJ2ZXJfbGlzdCgpOworCisgIGlmIChleHBpcmF0aW9uX2ludGVydmFsX3NlY3MgPiAwIHx8IGV4cGlyYXRpb25faW50ZXJ2YWxfbmFub3MgPiAwKSB7CisgICAgYXV0byAqZXhwaXJhdGlvbl9pbnRlcnZhbCA9IHNlcnZlcmxpc3QtPm11dGFibGVfZXhwaXJhdGlvbl9pbnRlcnZhbCgpOworICAgIGlmIChleHBpcmF0aW9uX2ludGVydmFsX3NlY3MgPiAwKSB7CisgICAgICBleHBpcmF0aW9uX2ludGVydmFsLT5zZXRfc2Vjb25kcyhleHBpcmF0aW9uX2ludGVydmFsX3NlY3MpOworICAgIH0KKyAgICBpZiAoZXhwaXJhdGlvbl9pbnRlcnZhbF9uYW5vcyA+IDApIHsKKyAgICAgIGV4cGlyYXRpb25faW50ZXJ2YWwtPnNldF9uYW5vcyhleHBpcmF0aW9uX2ludGVydmFsX25hbm9zKTsKKyAgICB9CisgIH0KKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBucG9ydHM7IGkrKykgeworICAgIGF1dG8gKnNlcnZlciA9IHNlcnZlcmxpc3QtPmFkZF9zZXJ2ZXJzKCk7CisgICAgc2VydmVyLT5zZXRfaXBfYWRkcmVzcyhob3N0KTsKKyAgICBzZXJ2ZXItPnNldF9wb3J0KHBvcnRzW2ldKTsKKyAgICAvLyBUaGUgZm9sbG93aW5nIGxvbmcgbG9uZyBpbnQgY2FzdCBpcyBtZWFudCB0byB3b3JrIGFyb3VuZCB0aGUKKyAgICAvLyBkaXNmdW5jdGlvbmFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6dG9fc3RyaW5nIGluIGdjYyA0LjQsIHdoaWNoIGRvZXNuJ3QKKyAgICAvLyBoYXZlIGEgdmVyc2lvbiBmb3IgaW50IGJ1dCBkb2VzIGhhdmUgb25lIGZvciBsb25nIGxvbmcgaW50LgorICAgIHNlcnZlci0+c2V0X2xvYWRfYmFsYW5jZV90b2tlbigidG9rZW4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp0b19zdHJpbmcoKGxvbmcgbG9uZyBpbnQpcG9ydHNbaV0pKTsKKyAgfQorCisgIGdwcl9sb2coR1BSX0lORk8sICJnZW5lcmF0aW5nIHJlc3BvbnNlOiAlcyIsCisgICAgICAgICAgcmVzcG9uc2UuU2hvcnREZWJ1Z1N0cmluZygpLmNfc3RyKCkpOworCisgIGNvbnN0IGdwcl9zbGljZSByZXNwb25zZV9zbGljZSA9CisgICAgICBncHJfc2xpY2VfZnJvbV9jb3BpZWRfc3RyaW5nKHJlc3BvbnNlLlNlcmlhbGl6ZUFzU3RyaW5nKCkuY19zdHIoKSk7CisgIHJldHVybiByZXNwb25zZV9zbGljZTsKK30KKworc3RhdGljIHZvaWQgZHJhaW5fY3EoZ3JwY19jb21wbGV0aW9uX3F1ZXVlICpjcSkgeworICBncnBjX2V2ZW50IGV2OworICBkbyB7CisgICAgZXYgPSBncnBjX2NvbXBsZXRpb25fcXVldWVfbmV4dChjcSwgR1JQQ19USU1FT1VUX1NFQ09ORFNfVE9fREVBRExJTkUoNSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgfSB3aGlsZSAoZXYudHlwZSAhPSBHUlBDX1FVRVVFX1NIVVRET1dOKTsKK30KKworc3RhdGljIHZvaWQgc2xlZXBfbXMoaW50IGRlbGF5X21zKSB7CisgIGdwcl9zbGVlcF91bnRpbChncHJfdGltZV9hZGQoZ3ByX25vdyhHUFJfQ0xPQ0tfUkVBTFRJTUUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwcl90aW1lX2Zyb21fbWlsbGlzKGRlbGF5X21zLCBHUFJfVElNRVNQQU4pKSk7Cit9CisKK3N0YXRpYyB2b2lkIHN0YXJ0X2xiX3NlcnZlcihzZXJ2ZXJfZml4dHVyZSAqc2YsIGludCAqcG9ydHMsIHNpemVfdCBucG9ydHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVwZGF0ZV9kZWxheV9tcykgeworICBncnBjX2NhbGwgKnM7CisgIGNxX3ZlcmlmaWVyICpjcXYgPSBjcV92ZXJpZmllcl9jcmVhdGUoc2YtPmNxKTsKKyAgZ3JwY19vcCBvcHNbNl07CisgIGdycGNfb3AgKm9wOworICBncnBjX21ldGFkYXRhX2FycmF5IHJlcXVlc3RfbWV0YWRhdGFfcmVjdjsKKyAgZ3JwY19jYWxsX2RldGFpbHMgY2FsbF9kZXRhaWxzOworICBncnBjX2NhbGxfZXJyb3IgZXJyb3I7CisgIGludCB3YXNfY2FuY2VsbGVkID0gMjsKKyAgZ3JwY19ieXRlX2J1ZmZlciAqcmVxdWVzdF9wYXlsb2FkX3JlY3Y7CisgIGdycGNfYnl0ZV9idWZmZXIgKnJlc3BvbnNlX3BheWxvYWQ7CisKKyAgbWVtc2V0KG9wcywgMCwgc2l6ZW9mKG9wcykpOworICBncnBjX21ldGFkYXRhX2FycmF5X2luaXQoJnJlcXVlc3RfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfY2FsbF9kZXRhaWxzX2luaXQoJmNhbGxfZGV0YWlscyk7CisKKyAgZXJyb3IgPSBncnBjX3NlcnZlcl9yZXF1ZXN0X2NhbGwoc2YtPnNlcnZlciwgJnMsICZjYWxsX2RldGFpbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXF1ZXN0X21ldGFkYXRhX3JlY3YsIHNmLT5jcSwgc2YtPmNxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcoMjAwKSk7CisgIEdQUl9BU1NFUlQoR1JQQ19DQUxMX09LID09IGVycm9yKTsKKyAgZ3ByX2xvZyhHUFJfSU5GTywgIkxCIFNlcnZlclslc10gdXAiLCBzZi0+c2VydmVyc19ob3N0cG9ydCk7CisgIGNxX2V4cGVjdF9jb21wbGV0aW9uKGNxdiwgdGFnKDIwMCksIDEpOworICBjcV92ZXJpZnkoY3F2KTsKKyAgZ3ByX2xvZyhHUFJfSU5GTywgIkxCIFNlcnZlclslc10gYWZ0ZXIgdGFnIDIwMCIsIHNmLT5zZXJ2ZXJzX2hvc3Rwb3J0KTsKKworICBvcCA9IG9wczsKKyAgb3AtPm9wID0gR1JQQ19PUF9TRU5EX0lOSVRJQUxfTUVUQURBVEE7CisgIG9wLT5kYXRhLnNlbmRfaW5pdGlhbF9tZXRhZGF0YS5jb3VudCA9IDA7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIG9wLT5vcCA9IEdSUENfT1BfUkVDVl9DTE9TRV9PTl9TRVJWRVI7CisgIG9wLT5kYXRhLnJlY3ZfY2xvc2Vfb25fc2VydmVyLmNhbmNlbGxlZCA9ICZ3YXNfY2FuY2VsbGVkOworICBvcC0+ZmxhZ3MgPSAwOworICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICBvcCsrOworICBlcnJvciA9IGdycGNfY2FsbF9zdGFydF9iYXRjaChzLCBvcHMsIChzaXplX3QpKG9wIC0gb3BzKSwgdGFnKDIwMSksIE5VTEwpOworICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBlcnJvcik7CisgIGdwcl9sb2coR1BSX0lORk8sICJMQiBTZXJ2ZXJbJXNdIGFmdGVyIHRhZyAyMDEiLCBzZi0+c2VydmVyc19ob3N0cG9ydCk7CisKKyAgLy8gcmVjZWl2ZSByZXF1ZXN0IGZvciBiYWNrZW5kcworICBvcCA9IG9wczsKKyAgb3AtPm9wID0gR1JQQ19PUF9SRUNWX01FU1NBR0U7CisgIG9wLT5kYXRhLnJlY3ZfbWVzc2FnZSA9ICZyZXF1ZXN0X3BheWxvYWRfcmVjdjsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgZXJyb3IgPSBncnBjX2NhbGxfc3RhcnRfYmF0Y2gocywgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksIHRhZygyMDIpLCBOVUxMKTsKKyAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworICBjcV9leHBlY3RfY29tcGxldGlvbihjcXYsIHRhZygyMDIpLCAxKTsKKyAgY3FfdmVyaWZ5KGNxdik7CisgIGdwcl9sb2coR1BSX0lORk8sICJMQiBTZXJ2ZXJbJXNdIGFmdGVyIFJFQ1ZfTVNHIiwgc2YtPnNlcnZlcnNfaG9zdHBvcnQpOworICAvLyBUT0RPKGRncSk6IHZhbGlkYXRlIHJlcXVlc3QuCisgIGdycGNfYnl0ZV9idWZmZXJfZGVzdHJveShyZXF1ZXN0X3BheWxvYWRfcmVjdik7CisgIGdwcl9zbGljZSByZXNwb25zZV9wYXlsb2FkX3NsaWNlOworICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgIGlmIChpID09IDApIHsKKyAgICAgIC8vIEZpcnN0IGhhbGYgb2YgdGhlIHBvcnRzLgorICAgICAgcmVzcG9uc2VfcGF5bG9hZF9zbGljZSA9CisgICAgICAgICAgYnVpbGRfcmVzcG9uc2VfcGF5bG9hZF9zbGljZSgiMTI3LjAuMC4xIiwgcG9ydHMsIG5wb3J0cyAvIDIsIC0xLCAtMSk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIFNlY29uZCBoYWxmIG9mIHRoZSBwb3J0cy4KKyAgICAgIHNsZWVwX21zKHVwZGF0ZV9kZWxheV9tcyk7CisgICAgICByZXNwb25zZV9wYXlsb2FkX3NsaWNlID0KKyAgICAgICAgICBidWlsZF9yZXNwb25zZV9wYXlsb2FkX3NsaWNlKCIxMjcuMC4wLjEiLCBwb3J0cyArIChucG9ydHMgLyAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChucG9ydHMgKyAxKSAvIDIgLyogY2VpbCAqLywgLTEsIC0xKTsKKyAgICB9CisKKyAgICByZXNwb25zZV9wYXlsb2FkID0gZ3JwY19yYXdfYnl0ZV9idWZmZXJfY3JlYXRlKCZyZXNwb25zZV9wYXlsb2FkX3NsaWNlLCAxKTsKKyAgICBvcCA9IG9wczsKKyAgICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfTUVTU0FHRTsKKyAgICBvcC0+ZGF0YS5zZW5kX21lc3NhZ2UgPSByZXNwb25zZV9wYXlsb2FkOworICAgIG9wLT5mbGFncyA9IDA7CisgICAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgICBvcCsrOworICAgIGVycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoKHMsIG9wcywgKHNpemVfdCkob3AgLSBvcHMpLCB0YWcoMjAzKSwgTlVMTCk7CisgICAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworICAgIGNxX2V4cGVjdF9jb21wbGV0aW9uKGNxdiwgdGFnKDIwMyksIDEpOworICAgIGNxX3ZlcmlmeShjcXYpOworICAgIGdwcl9sb2coR1BSX0lORk8sICJMQiBTZXJ2ZXJbJXNdIGFmdGVyIFNFTkRfTUVTU0FHRSwgaXRlciAlZCIsCisgICAgICAgICAgICBzZi0+c2VydmVyc19ob3N0cG9ydCwgaSk7CisKKyAgICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kocmVzcG9uc2VfcGF5bG9hZCk7CisgICAgZ3ByX3NsaWNlX3VucmVmKHJlc3BvbnNlX3BheWxvYWRfc2xpY2UpOworICB9CisgIGdwcl9sb2coR1BSX0lORk8sICJMQiBTZXJ2ZXJbJXNdIHNodXR0aW5nIGRvd24iLCBzZi0+c2VydmVyc19ob3N0cG9ydCk7CisKKyAgb3AgPSBvcHM7CisgIG9wLT5vcCA9IEdSUENfT1BfU0VORF9TVEFUVVNfRlJPTV9TRVJWRVI7CisgIG9wLT5kYXRhLnNlbmRfc3RhdHVzX2Zyb21fc2VydmVyLnRyYWlsaW5nX21ldGFkYXRhX2NvdW50ID0gMDsKKyAgb3AtPmRhdGEuc2VuZF9zdGF0dXNfZnJvbV9zZXJ2ZXIuc3RhdHVzID0gR1JQQ19TVEFUVVNfT0s7CisgIG9wLT5kYXRhLnNlbmRfc3RhdHVzX2Zyb21fc2VydmVyLnN0YXR1c19kZXRhaWxzID0gInh5eiI7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIGVycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoKHMsIG9wcywgKHNpemVfdCkob3AgLSBvcHMpLCB0YWcoMjA0KSwgTlVMTCk7CisgIEdQUl9BU1NFUlQoR1JQQ19DQUxMX09LID09IGVycm9yKTsKKworICBjcV9leHBlY3RfY29tcGxldGlvbihjcXYsIHRhZygyMDEpLCAxKTsKKyAgY3FfZXhwZWN0X2NvbXBsZXRpb24oY3F2LCB0YWcoMjA0KSwgMSk7CisgIGNxX3ZlcmlmeShjcXYpOworICBncHJfbG9nKEdQUl9JTkZPLCAiTEIgU2VydmVyWyVzXSBhZnRlciB0YWcgMjA0LiBBbGwgZG9uZS4gTEIgc2VydmVyIG91dCIsCisgICAgICAgICAgc2YtPnNlcnZlcnNfaG9zdHBvcnQpOworCisgIGdycGNfY2FsbF9kZXN0cm95KHMpOworCisgIGNxX3ZlcmlmaWVyX2Rlc3Ryb3koY3F2KTsKKworICBncnBjX21ldGFkYXRhX2FycmF5X2Rlc3Ryb3koJnJlcXVlc3RfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfY2FsbF9kZXRhaWxzX2Rlc3Ryb3koJmNhbGxfZGV0YWlscyk7Cit9CisKK3N0YXRpYyB2b2lkIHN0YXJ0X2JhY2tlbmRfc2VydmVyKHNlcnZlcl9maXh0dXJlICpzZikgeworICBncnBjX2NhbGwgKnM7CisgIGNxX3ZlcmlmaWVyICpjcXY7CisgIGdycGNfb3Agb3BzWzZdOworICBncnBjX29wICpvcDsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSByZXF1ZXN0X21ldGFkYXRhX3JlY3Y7CisgIGdycGNfY2FsbF9kZXRhaWxzIGNhbGxfZGV0YWlsczsKKyAgZ3JwY19jYWxsX2Vycm9yIGVycm9yOworICBpbnQgd2FzX2NhbmNlbGxlZDsKKyAgZ3JwY19ieXRlX2J1ZmZlciAqcmVxdWVzdF9wYXlsb2FkX3JlY3Y7CisgIGdycGNfYnl0ZV9idWZmZXIgKnJlc3BvbnNlX3BheWxvYWQ7CisgIGdycGNfZXZlbnQgZXY7CisKKyAgd2hpbGUgKHRydWUpIHsKKyAgICBtZW1zZXQob3BzLCAwLCBzaXplb2Yob3BzKSk7CisgICAgY3F2ID0gY3FfdmVyaWZpZXJfY3JlYXRlKHNmLT5jcSk7CisgICAgd2FzX2NhbmNlbGxlZCA9IDI7CisgICAgZ3JwY19tZXRhZGF0YV9hcnJheV9pbml0KCZyZXF1ZXN0X21ldGFkYXRhX3JlY3YpOworICAgIGdycGNfY2FsbF9kZXRhaWxzX2luaXQoJmNhbGxfZGV0YWlscyk7CisKKyAgICBlcnJvciA9IGdycGNfc2VydmVyX3JlcXVlc3RfY2FsbChzZi0+c2VydmVyLCAmcywgJmNhbGxfZGV0YWlscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVxdWVzdF9tZXRhZGF0YV9yZWN2LCBzZi0+Y3EsIHNmLT5jcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcoMTAwKSk7CisgICAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworICAgIGdwcl9sb2coR1BSX0lORk8sICJTZXJ2ZXJbJXNdIHVwIiwgc2YtPnNlcnZlcnNfaG9zdHBvcnQpOworICAgIGV2ID0gZ3JwY19jb21wbGV0aW9uX3F1ZXVlX25leHQoc2YtPmNxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19USU1FT1VUX1NFQ09ORFNfVE9fREVBRExJTkUoNjApLCBOVUxMKTsKKyAgICBpZiAoIWV2LnN1Y2Nlc3MpIHsKKyAgICAgIGdwcl9sb2coR1BSX0lORk8sICJTZXJ2ZXJbJXNdIGJlaW5nIHRvcm4gZG93biIsIHNmLT5zZXJ2ZXJzX2hvc3Rwb3J0KTsKKyAgICAgIGNxX3ZlcmlmaWVyX2Rlc3Ryb3koY3F2KTsKKyAgICAgIGdycGNfbWV0YWRhdGFfYXJyYXlfZGVzdHJveSgmcmVxdWVzdF9tZXRhZGF0YV9yZWN2KTsKKyAgICAgIGdycGNfY2FsbF9kZXRhaWxzX2Rlc3Ryb3koJmNhbGxfZGV0YWlscyk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIEdQUl9BU1NFUlQoZXYudHlwZSA9PSBHUlBDX09QX0NPTVBMRVRFKTsKKyAgICBncHJfbG9nKEdQUl9JTkZPLCAiU2VydmVyWyVzXSBhZnRlciB0YWcgMTAwIiwgc2YtPnNlcnZlcnNfaG9zdHBvcnQpOworCisgICAgb3AgPSBvcHM7CisgICAgb3AtPm9wID0gR1JQQ19PUF9TRU5EX0lOSVRJQUxfTUVUQURBVEE7CisgICAgb3AtPmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLmNvdW50ID0gMDsKKyAgICBvcC0+ZmxhZ3MgPSAwOworICAgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgICAgb3ArKzsKKyAgICBvcC0+b3AgPSBHUlBDX09QX1JFQ1ZfQ0xPU0VfT05fU0VSVkVSOworICAgIG9wLT5kYXRhLnJlY3ZfY2xvc2Vfb25fc2VydmVyLmNhbmNlbGxlZCA9ICZ3YXNfY2FuY2VsbGVkOworICAgIG9wLT5mbGFncyA9IDA7CisgICAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgICBvcCsrOworICAgIGVycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoKHMsIG9wcywgKHNpemVfdCkob3AgLSBvcHMpLCB0YWcoMTAxKSwgTlVMTCk7CisgICAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworICAgIGdwcl9sb2coR1BSX0lORk8sICJTZXJ2ZXJbJXNdIGFmdGVyIHRhZyAxMDEiLCBzZi0+c2VydmVyc19ob3N0cG9ydCk7CisKKyAgICBib29sIGV4aXQgPSBmYWxzZTsKKyAgICBncHJfc2xpY2UgcmVzcG9uc2VfcGF5bG9hZF9zbGljZSA9CisgICAgICAgIGdwcl9zbGljZV9mcm9tX2NvcGllZF9zdHJpbmcoImhlbGxvIHlvdSIpOworICAgIHdoaWxlICghZXhpdCkgeworICAgICAgb3AgPSBvcHM7CisgICAgICBvcC0+b3AgPSBHUlBDX09QX1JFQ1ZfTUVTU0FHRTsKKyAgICAgIG9wLT5kYXRhLnJlY3ZfbWVzc2FnZSA9ICZyZXF1ZXN0X3BheWxvYWRfcmVjdjsKKyAgICAgIG9wLT5mbGFncyA9IDA7CisgICAgICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICAgICAgb3ArKzsKKyAgICAgIGVycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoKHMsIG9wcywgKHNpemVfdCkob3AgLSBvcHMpLCB0YWcoMTAyKSwgTlVMTCk7CisgICAgICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBlcnJvcik7CisgICAgICBldiA9IGdycGNfY29tcGxldGlvbl9xdWV1ZV9uZXh0KAorICAgICAgICAgIHNmLT5jcSwgR1JQQ19USU1FT1VUX1NFQ09ORFNfVE9fREVBRExJTkUoMyksIE5VTEwpOworICAgICAgaWYgKGV2LnR5cGUgPT0gR1JQQ19PUF9DT01QTEVURSAmJiBldi5zdWNjZXNzKSB7CisgICAgICAgIEdQUl9BU1NFUlQoZXYudGFnID0gdGFnKDEwMikpOworICAgICAgICBpZiAocmVxdWVzdF9wYXlsb2FkX3JlY3YgPT0gTlVMTCkgeworICAgICAgICAgIGV4aXQgPSB0cnVlOworICAgICAgICAgIGdwcl9sb2coR1BSX0lORk8sCisgICAgICAgICAgICAgICAgICAiU2VydmVyWyVzXSByZWN2IFwiY2xvc2VcIiBmcm9tIGNsaWVudCwgZXhpdGluZy4gQ2FsbCAjJWQiLAorICAgICAgICAgICAgICAgICAgc2YtPnNlcnZlcnNfaG9zdHBvcnQsIHNmLT5udW1fY2FsbHNfc2VydmljZWQpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBncHJfbG9nKEdQUl9JTkZPLCAiU2VydmVyWyVzXSBmb3JjZWQgdG8gc2h1dGRvd24uIENhbGwgIyVkIiwKKyAgICAgICAgICAgICAgICBzZi0+c2VydmVyc19ob3N0cG9ydCwgc2YtPm51bV9jYWxsc19zZXJ2aWNlZCk7CisgICAgICAgIGV4aXQgPSB0cnVlOworICAgICAgfQorICAgICAgZ3ByX2xvZyhHUFJfSU5GTywgIlNlcnZlclslc10gYWZ0ZXIgdGFnIDEwMi4gQ2FsbCAjJWQiLAorICAgICAgICAgICAgICBzZi0+c2VydmVyc19ob3N0cG9ydCwgc2YtPm51bV9jYWxsc19zZXJ2aWNlZCk7CisKKyAgICAgIGlmICghZXhpdCkgeworICAgICAgICByZXNwb25zZV9wYXlsb2FkID0KKyAgICAgICAgICAgIGdycGNfcmF3X2J5dGVfYnVmZmVyX2NyZWF0ZSgmcmVzcG9uc2VfcGF5bG9hZF9zbGljZSwgMSk7CisgICAgICAgIG9wID0gb3BzOworICAgICAgICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfTUVTU0FHRTsKKyAgICAgICAgb3AtPmRhdGEuc2VuZF9tZXNzYWdlID0gcmVzcG9uc2VfcGF5bG9hZDsKKyAgICAgICAgb3AtPmZsYWdzID0gMDsKKyAgICAgICAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgICAgICAgb3ArKzsKKyAgICAgICAgZXJyb3IgPQorICAgICAgICAgICAgZ3JwY19jYWxsX3N0YXJ0X2JhdGNoKHMsIG9wcywgKHNpemVfdCkob3AgLSBvcHMpLCB0YWcoMTAzKSwgTlVMTCk7CisgICAgICAgIEdQUl9BU1NFUlQoR1JQQ19DQUxMX09LID09IGVycm9yKTsKKyAgICAgICAgZXYgPSBncnBjX2NvbXBsZXRpb25fcXVldWVfbmV4dCgKKyAgICAgICAgICAgIHNmLT5jcSwgR1JQQ19USU1FT1VUX1NFQ09ORFNfVE9fREVBRExJTkUoMyksIE5VTEwpOworICAgICAgICBpZiAoZXYudHlwZSA9PSBHUlBDX09QX0NPTVBMRVRFICYmIGV2LnN1Y2Nlc3MpIHsKKyAgICAgICAgICBHUFJfQVNTRVJUKGV2LnRhZyA9IHRhZygxMDMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBncHJfbG9nKEdQUl9JTkZPLCAiU2VydmVyWyVzXSBmb3JjZWQgdG8gc2h1dGRvd24uIENhbGwgIyVkIiwKKyAgICAgICAgICAgICAgICAgIHNmLT5zZXJ2ZXJzX2hvc3Rwb3J0LCBzZi0+bnVtX2NhbGxzX3NlcnZpY2VkKTsKKyAgICAgICAgICBleGl0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBncHJfbG9nKEdQUl9JTkZPLCAiU2VydmVyWyVzXSBhZnRlciB0YWcgMTAzLiBDYWxsICMlZCIsCisgICAgICAgICAgICAgICAgc2YtPnNlcnZlcnNfaG9zdHBvcnQsIHNmLT5udW1fY2FsbHNfc2VydmljZWQpOworICAgICAgICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kocmVzcG9uc2VfcGF5bG9hZCk7CisgICAgICB9CisKKyAgICAgIGdycGNfYnl0ZV9idWZmZXJfZGVzdHJveShyZXF1ZXN0X3BheWxvYWRfcmVjdik7CisgICAgfQorICAgICsrc2YtPm51bV9jYWxsc19zZXJ2aWNlZDsKKworICAgIGdwcl9sb2coR1BSX0lORk8sICJTZXJ2ZXJbJXNdIE9VVCBPRiBUSEUgTE9PUCIsIHNmLT5zZXJ2ZXJzX2hvc3Rwb3J0KTsKKyAgICBncHJfc2xpY2VfdW5yZWYocmVzcG9uc2VfcGF5bG9hZF9zbGljZSk7CisKKyAgICBvcCA9IG9wczsKKyAgICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfU1RBVFVTX0ZST01fU0VSVkVSOworICAgIG9wLT5kYXRhLnNlbmRfc3RhdHVzX2Zyb21fc2VydmVyLnRyYWlsaW5nX21ldGFkYXRhX2NvdW50ID0gMDsKKyAgICBvcC0+ZGF0YS5zZW5kX3N0YXR1c19mcm9tX3NlcnZlci5zdGF0dXMgPSBHUlBDX1NUQVRVU19PSzsKKyAgICBvcC0+ZGF0YS5zZW5kX3N0YXR1c19mcm9tX3NlcnZlci5zdGF0dXNfZGV0YWlscyA9ICJCYWNrZW5kIHNlcnZlciBvdXQgYS1vayI7CisgICAgb3AtPmZsYWdzID0gMDsKKyAgICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICAgIG9wKys7CisgICAgZXJyb3IgPSBncnBjX2NhbGxfc3RhcnRfYmF0Y2gocywgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksIHRhZygxMDQpLCBOVUxMKTsKKyAgICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBlcnJvcik7CisKKyAgICBjcV9leHBlY3RfY29tcGxldGlvbihjcXYsIHRhZygxMDEpLCAxKTsKKyAgICBjcV9leHBlY3RfY29tcGxldGlvbihjcXYsIHRhZygxMDQpLCAxKTsKKyAgICBjcV92ZXJpZnkoY3F2KTsKKyAgICBncHJfbG9nKEdQUl9JTkZPLCAiU2VydmVyWyVzXSBET05FLiBBZnRlciBzZXJ2aWNpbmcgJWQgY2FsbHMiLAorICAgICAgICAgICAgc2YtPnNlcnZlcnNfaG9zdHBvcnQsIHNmLT5udW1fY2FsbHNfc2VydmljZWQpOworCisgICAgZ3JwY19jYWxsX2Rlc3Ryb3kocyk7CisgICAgY3FfdmVyaWZpZXJfZGVzdHJveShjcXYpOworICAgIGdycGNfbWV0YWRhdGFfYXJyYXlfZGVzdHJveSgmcmVxdWVzdF9tZXRhZGF0YV9yZWN2KTsKKyAgICBncnBjX2NhbGxfZGV0YWlsc19kZXN0cm95KCZjYWxsX2RldGFpbHMpOworICB9Cit9CisKK3N0YXRpYyB2b2lkIHBlcmZvcm1fcmVxdWVzdChjbGllbnRfZml4dHVyZSAqY2YpIHsKKyAgZ3JwY19jYWxsICpjOworICBjcV92ZXJpZmllciAqY3F2ID0gY3FfdmVyaWZpZXJfY3JlYXRlKGNmLT5jcSk7CisgIGdycGNfb3Agb3BzWzZdOworICBncnBjX29wICpvcDsKKyAgZ3JwY19tZXRhZGF0YV9hcnJheSBpbml0aWFsX21ldGFkYXRhX3JlY3Y7CisgIGdycGNfbWV0YWRhdGFfYXJyYXkgdHJhaWxpbmdfbWV0YWRhdGFfcmVjdjsKKyAgZ3JwY19zdGF0dXNfY29kZSBzdGF0dXM7CisgIGdycGNfY2FsbF9lcnJvciBlcnJvcjsKKyAgY2hhciAqZGV0YWlscyA9IE5VTEw7CisgIHNpemVfdCBkZXRhaWxzX2NhcGFjaXR5ID0gMDsKKyAgZ3JwY19ieXRlX2J1ZmZlciAqcmVxdWVzdF9wYXlsb2FkOworICBncnBjX2J5dGVfYnVmZmVyICpyZXNwb25zZV9wYXlsb2FkX3JlY3Y7CisgIGludCBpOworCisgIG1lbXNldChvcHMsIDAsIHNpemVvZihvcHMpKTsKKyAgZ3ByX3NsaWNlIHJlcXVlc3RfcGF5bG9hZF9zbGljZSA9IGdwcl9zbGljZV9mcm9tX2NvcGllZF9zdHJpbmcoImhlbGxvIHdvcmxkIik7CisKKyAgYyA9IGdycGNfY2hhbm5lbF9jcmVhdGVfY2FsbChjZi0+Y2xpZW50LCBOVUxMLCBHUlBDX1BST1BBR0FURV9ERUZBVUxUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZi0+Y3EsICIvZm9vIiwgImZvby50ZXN0Lmdvb2dsZS5mcjoxMjM0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlBDX1RJTUVPVVRfU0VDT05EU19UT19ERUFETElORSgxMDAwKSwgTlVMTCk7CisgIGdwcl9sb2coR1BSX0lORk8sICJDYWxsIDB4JSIgUFJJeFBUUiAiIGNyZWF0ZWQiLCAoaW50cHRyX3QpYyk7CisgIEdQUl9BU1NFUlQoYyk7CisgIGNoYXIgKnBlZXI7CisKKyAgZ3JwY19tZXRhZGF0YV9hcnJheV9pbml0KCZpbml0aWFsX21ldGFkYXRhX3JlY3YpOworICBncnBjX21ldGFkYXRhX2FycmF5X2luaXQoJnRyYWlsaW5nX21ldGFkYXRhX3JlY3YpOworCisgIG9wID0gb3BzOworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfSU5JVElBTF9NRVRBREFUQTsKKyAgb3AtPmRhdGEuc2VuZF9pbml0aWFsX21ldGFkYXRhLmNvdW50ID0gMDsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgb3AtPm9wID0gR1JQQ19PUF9SRUNWX0lOSVRJQUxfTUVUQURBVEE7CisgIG9wLT5kYXRhLnJlY3ZfaW5pdGlhbF9tZXRhZGF0YSA9ICZpbml0aWFsX21ldGFkYXRhX3JlY3Y7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIG9wLT5vcCA9IEdSUENfT1BfUkVDVl9TVEFUVVNfT05fQ0xJRU5UOworICBvcC0+ZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQudHJhaWxpbmdfbWV0YWRhdGEgPSAmdHJhaWxpbmdfbWV0YWRhdGFfcmVjdjsKKyAgb3AtPmRhdGEucmVjdl9zdGF0dXNfb25fY2xpZW50LnN0YXR1cyA9ICZzdGF0dXM7CisgIG9wLT5kYXRhLnJlY3Zfc3RhdHVzX29uX2NsaWVudC5zdGF0dXNfZGV0YWlscyA9ICZkZXRhaWxzOworICBvcC0+ZGF0YS5yZWN2X3N0YXR1c19vbl9jbGllbnQuc3RhdHVzX2RldGFpbHNfY2FwYWNpdHkgPSAmZGV0YWlsc19jYXBhY2l0eTsKKyAgb3AtPmZsYWdzID0gMDsKKyAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgb3ArKzsKKyAgZXJyb3IgPSBncnBjX2NhbGxfc3RhcnRfYmF0Y2goYywgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksIHRhZygxKSwgTlVMTCk7CisgIEdQUl9BU1NFUlQoR1JQQ19DQUxMX09LID09IGVycm9yKTsKKworICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgcmVxdWVzdF9wYXlsb2FkID0gZ3JwY19yYXdfYnl0ZV9idWZmZXJfY3JlYXRlKCZyZXF1ZXN0X3BheWxvYWRfc2xpY2UsIDEpOworCisgICAgb3AgPSBvcHM7CisgICAgb3AtPm9wID0gR1JQQ19PUF9TRU5EX01FU1NBR0U7CisgICAgb3AtPmRhdGEuc2VuZF9tZXNzYWdlID0gcmVxdWVzdF9wYXlsb2FkOworICAgIG9wLT5mbGFncyA9IDA7CisgICAgb3AtPnJlc2VydmVkID0gTlVMTDsKKyAgICBvcCsrOworICAgIG9wLT5vcCA9IEdSUENfT1BfUkVDVl9NRVNTQUdFOworICAgIG9wLT5kYXRhLnJlY3ZfbWVzc2FnZSA9ICZyZXNwb25zZV9wYXlsb2FkX3JlY3Y7CisgICAgb3AtPmZsYWdzID0gMDsKKyAgICBvcC0+cmVzZXJ2ZWQgPSBOVUxMOworICAgIG9wKys7CisgICAgZXJyb3IgPSBncnBjX2NhbGxfc3RhcnRfYmF0Y2goYywgb3BzLCAoc2l6ZV90KShvcCAtIG9wcyksIHRhZygyKSwgTlVMTCk7CisgICAgR1BSX0FTU0VSVChHUlBDX0NBTExfT0sgPT0gZXJyb3IpOworCisgICAgcGVlciA9IGdycGNfY2FsbF9nZXRfcGVlcihjKTsKKyAgICBjcV9leHBlY3RfY29tcGxldGlvbihjcXYsIHRhZygyKSwgMSk7CisgICAgY3FfdmVyaWZ5KGNxdik7CisgICAgZ3ByX2ZyZWUocGVlcik7CisKKyAgICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kocmVxdWVzdF9wYXlsb2FkKTsKKyAgICBncnBjX2J5dGVfYnVmZmVyX2Rlc3Ryb3kocmVzcG9uc2VfcGF5bG9hZF9yZWN2KTsKKyAgfQorCisgIGdwcl9zbGljZV91bnJlZihyZXF1ZXN0X3BheWxvYWRfc2xpY2UpOworCisgIG9wID0gb3BzOworICBvcC0+b3AgPSBHUlBDX09QX1NFTkRfQ0xPU0VfRlJPTV9DTElFTlQ7CisgIG9wLT5mbGFncyA9IDA7CisgIG9wLT5yZXNlcnZlZCA9IE5VTEw7CisgIG9wKys7CisgIGVycm9yID0gZ3JwY19jYWxsX3N0YXJ0X2JhdGNoKGMsIG9wcywgKHNpemVfdCkob3AgLSBvcHMpLCB0YWcoMyksIE5VTEwpOworICBHUFJfQVNTRVJUKEdSUENfQ0FMTF9PSyA9PSBlcnJvcik7CisKKyAgY3FfZXhwZWN0X2NvbXBsZXRpb24oY3F2LCB0YWcoMSksIDEpOworICBjcV9leHBlY3RfY29tcGxldGlvbihjcXYsIHRhZygzKSwgMSk7CisgIGNxX3ZlcmlmeShjcXYpOworICBwZWVyID0gZ3JwY19jYWxsX2dldF9wZWVyKGMpOworICBncHJfbG9nKEdQUl9JTkZPLCAiQ2xpZW50IERPTkUgV0lUSCBTRVJWRVIgJXMgIiwgcGVlcik7CisgIGdwcl9mcmVlKHBlZXIpOworCisgIGdycGNfY2FsbF9kZXN0cm95KGMpOworCisgIGNxX3ZlcmlmeV9lbXB0eV90aW1lb3V0KGNxdiwgMSk7CisgIGNxX3ZlcmlmaWVyX2Rlc3Ryb3koY3F2KTsKKworICBncnBjX21ldGFkYXRhX2FycmF5X2Rlc3Ryb3koJmluaXRpYWxfbWV0YWRhdGFfcmVjdik7CisgIGdycGNfbWV0YWRhdGFfYXJyYXlfZGVzdHJveSgmdHJhaWxpbmdfbWV0YWRhdGFfcmVjdik7CisgIGdwcl9mcmVlKGRldGFpbHMpOworfQorCitzdGF0aWMgdm9pZCBzZXR1cF9jbGllbnQoY29uc3QgY2hhciAqc2VydmVyX2hvc3Rwb3J0LCBjbGllbnRfZml4dHVyZSAqY2YpIHsKKyAgY2YtPmNxID0gZ3JwY19jb21wbGV0aW9uX3F1ZXVlX2NyZWF0ZShOVUxMKTsKKyAgY2YtPnNlcnZlcl91cmkgPSBncHJfc3RyZHVwKHNlcnZlcl9ob3N0cG9ydCk7CisgIGNmLT5jbGllbnQgPSBncnBjX2luc2VjdXJlX2NoYW5uZWxfY3JlYXRlKGNmLT5zZXJ2ZXJfdXJpLCBOVUxMLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQgdGVhcmRvd25fY2xpZW50KGNsaWVudF9maXh0dXJlICpjZikgeworICBncnBjX2NvbXBsZXRpb25fcXVldWVfc2h1dGRvd24oY2YtPmNxKTsKKyAgZHJhaW5fY3EoY2YtPmNxKTsKKyAgZ3JwY19jb21wbGV0aW9uX3F1ZXVlX2Rlc3Ryb3koY2YtPmNxKTsKKyAgY2YtPmNxID0gTlVMTDsKKyAgZ3JwY19jaGFubmVsX2Rlc3Ryb3koY2YtPmNsaWVudCk7CisgIGNmLT5jbGllbnQgPSBOVUxMOworICBncHJfZnJlZShjZi0+c2VydmVyX3VyaSk7Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwX3NlcnZlcihjb25zdCBjaGFyICpob3N0LCBzZXJ2ZXJfZml4dHVyZSAqc2YpIHsKKyAgaW50IGFzc2lnbmVkX3BvcnQ7CisKKyAgc2YtPmNxID0gZ3JwY19jb21wbGV0aW9uX3F1ZXVlX2NyZWF0ZShOVUxMKTsKKyAgY29uc3QgY2hhciAqY29sb25faWR4ID0gc3RyY2hyKGhvc3QsICc6Jyk7CisgIGlmIChjb2xvbl9pZHgpIHsKKyAgICBjb25zdCBjaGFyICpwb3J0X3N0ciA9IGNvbG9uX2lkeCArIDE7CisgICAgc2YtPnBvcnQgPSBhdG9pKHBvcnRfc3RyKTsKKyAgICBzZi0+c2VydmVyc19ob3N0cG9ydCA9IGdwcl9zdHJkdXAoaG9zdCk7CisgIH0gZWxzZSB7CisgICAgc2YtPnBvcnQgPSBncnBjX3BpY2tfdW51c2VkX3BvcnRfb3JfZGllKCk7CisgICAgZ3ByX2pvaW5faG9zdF9wb3J0KCZzZi0+c2VydmVyc19ob3N0cG9ydCwgaG9zdCwgc2YtPnBvcnQpOworICB9CisKKyAgc2YtPnNlcnZlciA9IGdycGNfc2VydmVyX2NyZWF0ZShOVUxMLCBOVUxMKTsKKyAgZ3JwY19zZXJ2ZXJfcmVnaXN0ZXJfY29tcGxldGlvbl9xdWV1ZShzZi0+c2VydmVyLCBzZi0+Y3EsIE5VTEwpOworICBHUFJfQVNTRVJUKChhc3NpZ25lZF9wb3J0ID0gZ3JwY19zZXJ2ZXJfYWRkX2luc2VjdXJlX2h0dHAyX3BvcnQoCisgICAgICAgICAgICAgICAgICBzZi0+c2VydmVyLCBzZi0+c2VydmVyc19ob3N0cG9ydCkpID4gMCk7CisgIEdQUl9BU1NFUlQoc2YtPnBvcnQgPT0gYXNzaWduZWRfcG9ydCk7CisgIGdycGNfc2VydmVyX3N0YXJ0KHNmLT5zZXJ2ZXIpOworfQorCitzdGF0aWMgdm9pZCB0ZWFyZG93bl9zZXJ2ZXIoc2VydmVyX2ZpeHR1cmUgKnNmKSB7CisgIGlmICghc2YtPnNlcnZlcikgcmV0dXJuOworCisgIGdwcl9sb2coR1BSX0lORk8sICJTZXJ2ZXJbJXNdIHNodXR0aW5nIGRvd24iLCBzZi0+c2VydmVyc19ob3N0cG9ydCk7CisgIGdycGNfc2VydmVyX3NodXRkb3duX2FuZF9ub3RpZnkoc2YtPnNlcnZlciwgc2YtPmNxLCB0YWcoMTAwMCkpOworICBHUFJfQVNTRVJUKGdycGNfY29tcGxldGlvbl9xdWV1ZV9wbHVjaygKKyAgICAgICAgICAgICAgICAgc2YtPmNxLCB0YWcoMTAwMCksIEdSUENfVElNRU9VVF9TRUNPTkRTX1RPX0RFQURMSU5FKDUpLCBOVUxMKQorICAgICAgICAgICAgICAgICAudHlwZSA9PSBHUlBDX09QX0NPTVBMRVRFKTsKKyAgZ3JwY19zZXJ2ZXJfZGVzdHJveShzZi0+c2VydmVyKTsKKyAgZ3ByX3RoZF9qb2luKHNmLT50aWQpOworCisgIHNmLT5zZXJ2ZXIgPSBOVUxMOworICBncnBjX2NvbXBsZXRpb25fcXVldWVfc2h1dGRvd24oc2YtPmNxKTsKKyAgZHJhaW5fY3Eoc2YtPmNxKTsKKyAgZ3JwY19jb21wbGV0aW9uX3F1ZXVlX2Rlc3Ryb3koc2YtPmNxKTsKKworICBncHJfbG9nKEdQUl9JTkZPLCAiU2VydmVyWyVzXSBieWUgYnllIiwgc2YtPnNlcnZlcnNfaG9zdHBvcnQpOworICBncHJfZnJlZShzZi0+c2VydmVyc19ob3N0cG9ydCk7Cit9CisKK3N0YXRpYyB2b2lkIGZvcmtfYmFja2VuZF9zZXJ2ZXIodm9pZCAqYXJnKSB7CisgIHNlcnZlcl9maXh0dXJlICpzZiA9IHN0YXRpY19jYXN0PHNlcnZlcl9maXh0dXJlICo+KGFyZyk7CisgIHN0YXJ0X2JhY2tlbmRfc2VydmVyKHNmKTsKK30KKworc3RhdGljIHZvaWQgZm9ya19sYl9zZXJ2ZXIodm9pZCAqYXJnKSB7CisgIHRlc3RfZml4dHVyZSAqdGYgPSBzdGF0aWNfY2FzdDx0ZXN0X2ZpeHR1cmUgKj4oYXJnKTsKKyAgaW50IHBvcnRzW05VTV9CQUNLRU5EU107CisgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX0JBQ0tFTkRTOyBpKyspIHsKKyAgICBwb3J0c1tpXSA9IHRmLT5sYl9iYWNrZW5kc1tpXS5wb3J0OworICB9CisgIHN0YXJ0X2xiX3NlcnZlcigmdGYtPmxiX3NlcnZlciwgcG9ydHMsIE5VTV9CQUNLRU5EUywKKyAgICAgICAgICAgICAgICAgIHRmLT5sYl9zZXJ2ZXJfdXBkYXRlX2RlbGF5X21zKTsKK30KKworc3RhdGljIHZvaWQgc2V0dXBfdGVzdF9maXh0dXJlKHRlc3RfZml4dHVyZSAqdGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxiX3NlcnZlcl91cGRhdGVfZGVsYXlfbXMpIHsKKyAgdGYtPmxiX3NlcnZlcl91cGRhdGVfZGVsYXlfbXMgPSBsYl9zZXJ2ZXJfdXBkYXRlX2RlbGF5X21zOworCisgIGdwcl90aGRfb3B0aW9ucyBvcHRpb25zID0gZ3ByX3RoZF9vcHRpb25zX2RlZmF1bHQoKTsKKyAgZ3ByX3RoZF9vcHRpb25zX3NldF9qb2luYWJsZSgmb3B0aW9ucyk7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fQkFDS0VORFM7ICsraSkgeworICAgIHNldHVwX3NlcnZlcigiMTI3LjAuMC4xIiwgJnRmLT5sYl9iYWNrZW5kc1tpXSk7CisgICAgZ3ByX3RoZF9uZXcoJnRmLT5sYl9iYWNrZW5kc1tpXS50aWQsIGZvcmtfYmFja2VuZF9zZXJ2ZXIsCisgICAgICAgICAgICAgICAgJnRmLT5sYl9iYWNrZW5kc1tpXSwgJm9wdGlvbnMpOworICB9CisKKyAgc2V0dXBfc2VydmVyKCIxMjcuMC4wLjEiLCAmdGYtPmxiX3NlcnZlcik7CisgIGdwcl90aGRfbmV3KCZ0Zi0+bGJfc2VydmVyLnRpZCwgZm9ya19sYl9zZXJ2ZXIsICZ0Zi0+bGJfc2VydmVyLCAmb3B0aW9ucyk7CisKKyAgY2hhciAqc2VydmVyX3VyaTsKKyAgZ3ByX2FzcHJpbnRmKCZzZXJ2ZXJfdXJpLCAiaXB2NDolcz9sYl9wb2xpY3k9Z3JwY2xiJmxiX2VuYWJsZWQ9MSIsCisgICAgICAgICAgICAgICB0Zi0+bGJfc2VydmVyLnNlcnZlcnNfaG9zdHBvcnQpOworICBzZXR1cF9jbGllbnQoc2VydmVyX3VyaSwgJnRmLT5jbGllbnQpOworICBncHJfZnJlZShzZXJ2ZXJfdXJpKTsKK30KKworc3RhdGljIHZvaWQgdGVhcmRvd25fdGVzdF9maXh0dXJlKHRlc3RfZml4dHVyZSAqdGYpIHsKKyAgdGVhcmRvd25fY2xpZW50KCZ0Zi0+Y2xpZW50KTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fQkFDS0VORFM7ICsraSkgeworICAgIHRlYXJkb3duX3NlcnZlcigmdGYtPmxiX2JhY2tlbmRzW2ldKTsKKyAgfQorICB0ZWFyZG93bl9zZXJ2ZXIoJnRmLT5sYl9zZXJ2ZXIpOworfQorCisvLyBUaGUgTEIgc2VydmVyIHdpbGwgc2VuZCB0d28gdXBkYXRlczogYmF0Y2ggMSBhbmQgYmF0Y2ggMi4gRWFjaCBiYXRjaAorLy8gY29udGFpbnMKKy8vIHR3byBhZGRyZXNzZXMsIGJvdGggb2YgYSB2YWxpZCBhbmQgcnVubmluZyBiYWNrZW5kIHNlcnZlci4gQmF0Y2ggMSBpcworLy8gcmVhZGlseQorLy8gYXZhaWxhYmxlIGFuZCBwcm92aWRlZCBhcyBzb29uIGFzIHRoZSBjbGllbnQgZXN0YWJsaXNoZXMgdGhlIHN0cmVhbWluZworLy8gY2FsbC4KKy8vIEJhdGNoIDIgaXMgc2VudCBhZnRlciBhIGRlbGF5IG9mIFxhIGxiX3NlcnZlcl91cGRhdGVfZGVsYXlfbXMKKy8vIG1pbGxpc2Vjb25kcy4KK3N0YXRpYyB0ZXN0X2ZpeHR1cmUgdGVzdF91cGRhdGUoaW50IGxiX3NlcnZlcl91cGRhdGVfZGVsYXlfbXMpIHsKKyAgZ3ByX2xvZyhHUFJfSU5GTywgInN0YXJ0ICVzKCVkKSIsIF9fZnVuY19fLCBsYl9zZXJ2ZXJfdXBkYXRlX2RlbGF5X21zKTsKKyAgdGVzdF9maXh0dXJlIHRmOworICBtZW1zZXQoJnRmLCAwLCBzaXplb2YodGYpKTsKKyAgc2V0dXBfdGVzdF9maXh0dXJlKCZ0ZiwgbGJfc2VydmVyX3VwZGF0ZV9kZWxheV9tcyk7CisgIHBlcmZvcm1fcmVxdWVzdCgKKyAgICAgICZ0Zi5jbGllbnQpOyAgLy8gImNvbnN1bWVzIiAxc3QgYmFja2VuZCBzZXJ2ZXIgb2YgMXN0IHNlcnZlcmxpc3QKKyAgcGVyZm9ybV9yZXF1ZXN0KAorICAgICAgJnRmLmNsaWVudCk7ICAvLyAiY29uc3VtZXMiIDJuZCBiYWNrZW5kIHNlcnZlciBvZiAxc3Qgc2VydmVybGlzdAorCisgIHBlcmZvcm1fcmVxdWVzdCgKKyAgICAgICZ0Zi5jbGllbnQpOyAgLy8gImNvbnN1bWVzIiAxc3QgYmFja2VuZCBzZXJ2ZXIgb2YgMm5kIHNlcnZlcmxpc3QKKyAgcGVyZm9ybV9yZXF1ZXN0KAorICAgICAgJnRmLmNsaWVudCk7ICAvLyAiY29uc3VtZXMiIDJuZCBiYWNrZW5kIHNlcnZlciBvZiAybmQgc2VydmVybGlzdAorCisgIHRlYXJkb3duX3Rlc3RfZml4dHVyZSgmdGYpOworICBncHJfbG9nKEdQUl9JTkZPLCAiZW5kICVzKCVkKSIsIF9fZnVuY19fLCBsYl9zZXJ2ZXJfdXBkYXRlX2RlbGF5X21zKTsKKyAgcmV0dXJuIHRmOworfQorCit9ICAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBncnBjCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICBncnBjX3Rlc3RfaW5pdChhcmdjLCBhcmd2KTsKKyAgZ3JwY19pbml0KCk7CisKKyAgZ3JwYzo6dGVzdF9maXh0dXJlIHRmX3Jlc3VsdDsKKyAgLy8gQ2xpZW50cyB0YWtlIGEgYml0IG92ZXIgb25lIHNlY29uZCB0byBjb21wbGV0ZSBhIGNhbGwgKHRoZSBsYXN0IHBhcnQgb2YgdGhlCisgIC8vIGNhbGwgc2xlZXBzIGZvciAxIHNlY29uZCB3aGlsZSB2ZXJpZnlpbmcgdGhlIGNsaWVudCdzIGNvbXBsZXRpb24gcXVldWUgaXMKKyAgLy8gZW1wdHkpLiBUaGVyZWZvcmU6CisgIC8vCisgIC8vIElmIHRoZSBMQiBzZXJ2ZXIgd2FpdHMgODAwbXMgYmVmb3JlIHNlbmRpbmcgYW4gdXBkYXRlLCBpdCB3aWxsIGFycml2ZQorICAvLyBiZWZvcmUgdGhlIGZpcnN0IGNsaWVudCByZXF1ZXN0IGlzIGRvbmUsIHNraXBwaW5nIHRoZSBzZWNvbmQgc2VydmVyIGZyb20KKyAgLy8gYmF0Y2ggMSBhbHRvZ2V0aGVyOiB0aGUgMm5kIGNsaWVudCByZXF1ZXN0IHdpbGwgZ28gdG8gdGhlIDFzdCBzZXJ2ZXIgb2YKKyAgLy8gYmF0Y2ggMiAoaWUsIHRoZSB0aGlyZCBvbmUgb3V0IG9mIHRoZSBmb3VyIHRvdGFsIHNlcnZlcnMpLgorICB0Zl9yZXN1bHQgPSBncnBjOjp0ZXN0X3VwZGF0ZSg4MDApOworICBHUFJfQVNTRVJUKHRmX3Jlc3VsdC5sYl9iYWNrZW5kc1swXS5udW1fY2FsbHNfc2VydmljZWQgPT0gMSk7CisgIEdQUl9BU1NFUlQodGZfcmVzdWx0LmxiX2JhY2tlbmRzWzFdLm51bV9jYWxsc19zZXJ2aWNlZCA9PSAwKTsKKyAgR1BSX0FTU0VSVCh0Zl9yZXN1bHQubGJfYmFja2VuZHNbMl0ubnVtX2NhbGxzX3NlcnZpY2VkID09IDIpOworICBHUFJfQVNTRVJUKHRmX3Jlc3VsdC5sYl9iYWNrZW5kc1szXS5udW1fY2FsbHNfc2VydmljZWQgPT0gMSk7CisKKyAgLy8gSWYgdGhlIExCIHNlcnZlciB3YWl0cyAxNTAwbXMsIHRoZSB1cGRhdGUgYXJyaXZlcyBhZnRlciBoYXZpbmcgcGlja2VkIHRoZQorICAvLyAybmQgc2VydmVyIGZyb20gYmF0Y2ggMSBidXQgYmVmb3JlIHRoZSBuZXh0IHBpY2sgZm9yIHRoZSBmaXJzdCBzZXJ2ZXIgb2YKKyAgLy8gYmF0Y2ggMi4gQWxsIHNlcnZlciBhcmUgdXNlZC4KKyAgdGZfcmVzdWx0ID0gZ3JwYzo6dGVzdF91cGRhdGUoMTUwMCk7CisgIEdQUl9BU1NFUlQodGZfcmVzdWx0LmxiX2JhY2tlbmRzWzBdLm51bV9jYWxsc19zZXJ2aWNlZCA9PSAxKTsKKyAgR1BSX0FTU0VSVCh0Zl9yZXN1bHQubGJfYmFja2VuZHNbMV0ubnVtX2NhbGxzX3NlcnZpY2VkID09IDEpOworICBHUFJfQVNTRVJUKHRmX3Jlc3VsdC5sYl9iYWNrZW5kc1syXS5udW1fY2FsbHNfc2VydmljZWQgPT0gMSk7CisgIEdQUl9BU1NFUlQodGZfcmVzdWx0LmxiX2JhY2tlbmRzWzNdLm51bV9jYWxsc19zZXJ2aWNlZCA9PSAxKTsKKworICAvLyBJZiB0aGUgTEIgc2VydmVyIHdhaXRzID4gMjAwMG1zLCB0aGUgdXBkYXRlIGFycml2ZXMgYWZ0ZXIgdGhlIGZpcnN0IHR3bworICAvLyByZXF1ZXN0IGFyZSBkb25lIGFuZCB0aGUgdGhpcmQgcGljayBpcyBwZXJmb3JtZWQsIHdoaWNoIHJldHVybnMsIGluIFJSCisgIC8vIGZhc2hpb24sIHRoZSAxc3Qgc2VydmVyIG9mIHRoZSAxc3QgdXBkYXRlLiBUaGVyZWZvcmUsIHRoZSBzZWNvbmQgc2VydmVyIG9mCisgIC8vIGJhdGNoIDEgaXMgaGl0IHR3aWNlLCB3aGVyZWFzIHRoZSBmaXJzdCBzZXJ2ZXIgb2YgYmF0Y2ggMiBpcyBuZXZlciBoaXQuCisgIHRmX3Jlc3VsdCA9IGdycGM6OnRlc3RfdXBkYXRlKDIxMDApOworICBHUFJfQVNTRVJUKHRmX3Jlc3VsdC5sYl9iYWNrZW5kc1swXS5udW1fY2FsbHNfc2VydmljZWQgPT0gMik7CisgIEdQUl9BU1NFUlQodGZfcmVzdWx0LmxiX2JhY2tlbmRzWzFdLm51bV9jYWxsc19zZXJ2aWNlZCA9PSAxKTsKKyAgR1BSX0FTU0VSVCh0Zl9yZXN1bHQubGJfYmFja2VuZHNbMl0ubnVtX2NhbGxzX3NlcnZpY2VkID09IDEpOworICBHUFJfQVNTRVJUKHRmX3Jlc3VsdC5sYl9iYWNrZW5kc1szXS5udW1fY2FsbHNfc2VydmljZWQgPT0gMCk7CisKKyAgZ3JwY19zaHV0ZG93bigpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Rlc3QvY3BwL3Fwcy9saW1pdF9jb3Jlcy5jYyBiL3Rlc3QvY3BwL3Fwcy9saW1pdF9jb3Jlcy5jYwppbmRleCA1OWVkMzY5Li5iNWMyMjI1IDEwMDY0NAotLS0gYS90ZXN0L2NwcC9xcHMvbGltaXRfY29yZXMuY2MKKysrIGIvdGVzdC9jcHAvcXBzL2xpbWl0X2NvcmVzLmNjCkBAIC02OCw5ICs2OCw5IEBACiAgICAgICBjb3Jlc19zZXQrKzsKICAgICB9CiAgIH0KLSAgR1BSX0FTU0VSVChzY2hlZF9zZXRhZmZpbml0eSgwLCBzaXplLCBjcHVwKSA9PSAwKTsKKyAgYm9vbCBhZmZpbml0eV9zZXQgPSAoc2NoZWRfc2V0YWZmaW5pdHkoMCwgc2l6ZSwgY3B1cCkgPT0gMCk7CiAgIENQVV9GUkVFKGNwdXApOwotICByZXR1cm4gY29yZXNfc2V0OworICByZXR1cm4gYWZmaW5pdHlfc2V0ID8gY29yZXNfc2V0IDogbnVtX2NvcmVzOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvdGVzdC9jcHAvdXRpbC9wcm90b19yZWZsZWN0aW9uX2Rlc2NyaXB0b3JfZGF0YWJhc2UuY2MgYi90ZXN0L2NwcC91dGlsL3Byb3RvX3JlZmxlY3Rpb25fZGVzY3JpcHRvcl9kYXRhYmFzZS5jYwppbmRleCAyZDg0NzAxLi44ZmQ0NjZmIDEwMDY0NAotLS0gYS90ZXN0L2NwcC91dGlsL3Byb3RvX3JlZmxlY3Rpb25fZGVzY3JpcHRvcl9kYXRhYmFzZS5jYworKysgYi90ZXN0L2NwcC91dGlsL3Byb3RvX3JlZmxlY3Rpb25fZGVzY3JpcHRvcl9kYXRhYmFzZS5jYwpAQCAtNjYsNyArNjYsNyBAQAogfQogCiBib29sIFByb3RvUmVmbGVjdGlvbkRlc2NyaXB0b3JEYXRhYmFzZTo6RmluZEZpbGVCeU5hbWUoCi0gICAgY29uc3Qgc3RyaW5nJiBmaWxlbmFtZSwgZ29vZ2xlOjpwcm90b2J1Zjo6RmlsZURlc2NyaXB0b3JQcm90byogb3V0cHV0KSB7CisgICAgY29uc3Qgc3RyaW5nJiBmaWxlbmFtZSwgcHJvdG9idWY6OkZpbGVEZXNjcmlwdG9yUHJvdG8qIG91dHB1dCkgewogICBpZiAoY2FjaGVkX2RiXy5GaW5kRmlsZUJ5TmFtZShmaWxlbmFtZSwgb3V0cHV0KSkgewogICAgIHJldHVybiB0cnVlOwogICB9CkBAIC0xMTEsNyArMTExLDcgQEAKIH0KIAogYm9vbCBQcm90b1JlZmxlY3Rpb25EZXNjcmlwdG9yRGF0YWJhc2U6OkZpbmRGaWxlQ29udGFpbmluZ1N5bWJvbCgKLSAgICBjb25zdCBzdHJpbmcmIHN5bWJvbF9uYW1lLCBnb29nbGU6OnByb3RvYnVmOjpGaWxlRGVzY3JpcHRvclByb3RvKiBvdXRwdXQpIHsKKyAgICBjb25zdCBzdHJpbmcmIHN5bWJvbF9uYW1lLCBwcm90b2J1Zjo6RmlsZURlc2NyaXB0b3JQcm90byogb3V0cHV0KSB7CiAgIGlmIChjYWNoZWRfZGJfLkZpbmRGaWxlQ29udGFpbmluZ1N5bWJvbChzeW1ib2xfbmFtZSwgb3V0cHV0KSkgewogICAgIHJldHVybiB0cnVlOwogICB9CkBAIC0xNTgsNyArMTU4LDcgQEAKIAogYm9vbCBQcm90b1JlZmxlY3Rpb25EZXNjcmlwdG9yRGF0YWJhc2U6OkZpbmRGaWxlQ29udGFpbmluZ0V4dGVuc2lvbigKICAgICBjb25zdCBzdHJpbmcmIGNvbnRhaW5pbmdfdHlwZSwgaW50IGZpZWxkX251bWJlciwKLSAgICBnb29nbGU6OnByb3RvYnVmOjpGaWxlRGVzY3JpcHRvclByb3RvKiBvdXRwdXQpIHsKKyAgICBwcm90b2J1Zjo6RmlsZURlc2NyaXB0b3JQcm90byogb3V0cHV0KSB7CiAgIGlmIChjYWNoZWRfZGJfLkZpbmRGaWxlQ29udGFpbmluZ0V4dGVuc2lvbihjb250YWluaW5nX3R5cGUsIGZpZWxkX251bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCkpIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4NiwxMCArMjg2LDEwIEBACiAgIHJldHVybiBmYWxzZTsKIH0KIAotY29uc3QgZ29vZ2xlOjpwcm90b2J1Zjo6RmlsZURlc2NyaXB0b3JQcm90bworY29uc3QgcHJvdG9idWY6OkZpbGVEZXNjcmlwdG9yUHJvdG8KIFByb3RvUmVmbGVjdGlvbkRlc2NyaXB0b3JEYXRhYmFzZTo6UGFyc2VGaWxlRGVzY3JpcHRvclByb3RvUmVzcG9uc2UoCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGJ5dGVfZmRfcHJvdG8pIHsKLSAgZ29vZ2xlOjpwcm90b2J1Zjo6RmlsZURlc2NyaXB0b3JQcm90byBmaWxlX2Rlc2NfcHJvdG87CisgIHByb3RvYnVmOjpGaWxlRGVzY3JpcHRvclByb3RvIGZpbGVfZGVzY19wcm90bzsKICAgZmlsZV9kZXNjX3Byb3RvLlBhcnNlRnJvbVN0cmluZyhieXRlX2ZkX3Byb3RvKTsKICAgcmV0dXJuIGZpbGVfZGVzY19wcm90bzsKIH0KQEAgLTI5Nyw3ICsyOTcsNyBAQAogdm9pZCBQcm90b1JlZmxlY3Rpb25EZXNjcmlwdG9yRGF0YWJhc2U6OkFkZEZpbGVGcm9tUmVzcG9uc2UoCiAgICAgY29uc3QgZ3JwYzo6cmVmbGVjdGlvbjo6djFhbHBoYTo6RmlsZURlc2NyaXB0b3JSZXNwb25zZSYgcmVzcG9uc2UpIHsKICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXNwb25zZS5maWxlX2Rlc2NyaXB0b3JfcHJvdG9fc2l6ZSgpOyArK2kpIHsKLSAgICBjb25zdCBnb29nbGU6OnByb3RvYnVmOjpGaWxlRGVzY3JpcHRvclByb3RvIGZpbGVfcHJvdG8gPQorICAgIGNvbnN0IHByb3RvYnVmOjpGaWxlRGVzY3JpcHRvclByb3RvIGZpbGVfcHJvdG8gPQogICAgICAgICBQYXJzZUZpbGVEZXNjcmlwdG9yUHJvdG9SZXNwb25zZShyZXNwb25zZS5maWxlX2Rlc2NyaXB0b3JfcHJvdG8oaSkpOwogICAgIGlmIChrbm93bl9maWxlc18uZmluZChmaWxlX3Byb3RvLm5hbWUoKSkgPT0ga25vd25fZmlsZXNfLmVuZCgpKSB7CiAgICAgICBrbm93bl9maWxlc18uaW5zZXJ0KGZpbGVfcHJvdG8ubmFtZSgpKTsKZGlmZiAtLWdpdCBhL3Rlc3QvY3BwL3V0aWwvcHJvdG9fcmVmbGVjdGlvbl9kZXNjcmlwdG9yX2RhdGFiYXNlLmggYi90ZXN0L2NwcC91dGlsL3Byb3RvX3JlZmxlY3Rpb25fZGVzY3JpcHRvcl9kYXRhYmFzZS5oCmluZGV4IDk5YzAwNjcuLmViN2NmNDkgMTAwNjQ0Ci0tLSBhL3Rlc3QvY3BwL3V0aWwvcHJvdG9fcmVmbGVjdGlvbl9kZXNjcmlwdG9yX2RhdGFiYXNlLmgKKysrIGIvdGVzdC9jcHAvdXRpbC9wcm90b19yZWZsZWN0aW9uX2Rlc2NyaXB0b3JfZGF0YWJhc2UuaApAQCAtMzgsMTkgKzM4LDE5IEBACiAjaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlIDxnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5oPgotI2luY2x1ZGUgPGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnBiLmg+Ci0jaW5jbHVkZSA8Z29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3JfZGF0YWJhc2UuaD4KKy8vIEdSUENfTk9fR0VORVJBVEVEX0NPREUgaW5kaWNhdGVzIGdlbmVyYXRlZCBwYiBmaWxlcyBzaG91bGQgbm90IGJlIHVzZWQKKyNpZmRlZiBHUlBDX05PX0dFTkVSQVRFRF9DT0RFCisjaW5jbHVkZSAic3JjL3Byb3RvL2dycGMvcmVmbGVjdGlvbi92MWFscGhhL3JlZmxlY3Rpb24uZ3JwYy5wYi5oIgorI2Vsc2UKICNpbmNsdWRlIDxncnBjKysvZXh0L3JlZmxlY3Rpb24uZ3JwYy5wYi5oPgorI2VuZGlmICAvLyBHUlBDX05PX0dFTkVSQVRFRF9DT0RFCiAjaW5jbHVkZSA8Z3JwYysrL2dycGMrKy5oPgotCiBuYW1lc3BhY2UgZ3JwYyB7CiAKIC8vIFByb3RvUmVmbGVjdGlvbkRlc2NyaXB0b3JEYXRhYmFzZSB0YWtlcyBhIHN0dWIgb2YgU2VydmVyUmVmbGVjdGlvbiBhbmQKIC8vIHByb3ZpZGVzIHRoZSBtZXRob2RzIGRlZmluZWQgYnkgRGVzY3JpcHRvckRhdGFiYXNlIGludGVyZmFjZXMuIEl0IGNhbiBiZSB1c2VkCiAvLyB0byBmZWVkIGEgRGVzY3JpcHRvclBvb2wgaW5zdGFuY2UuCi1jbGFzcyBQcm90b1JlZmxlY3Rpb25EZXNjcmlwdG9yRGF0YWJhc2UKLSAgICA6IHB1YmxpYyBnb29nbGU6OnByb3RvYnVmOjpEZXNjcmlwdG9yRGF0YWJhc2UgeworY2xhc3MgUHJvdG9SZWZsZWN0aW9uRGVzY3JpcHRvckRhdGFiYXNlIDogcHVibGljIHByb3RvYnVmOjpEZXNjcmlwdG9yRGF0YWJhc2UgewogIHB1YmxpYzoKICAgZXhwbGljaXQgUHJvdG9SZWZsZWN0aW9uRGVzY3JpcHRvckRhdGFiYXNlKAogICAgICAgc3RkOjp1bmlxdWVfcHRyPHJlZmxlY3Rpb246OnYxYWxwaGE6OlNlcnZlclJlZmxlY3Rpb246OlN0dWI+IHN0dWIpOwpAQCAtNjUsMTQgKzY1LDEzIEBACiAgIC8vIEZpbmQgYSBmaWxlIGJ5IGZpbGUgbmFtZS4gIEZpbGxzIGluIGluICpvdXRwdXQgYW5kIHJldHVybnMgdHJ1ZSBpZiBmb3VuZC4KICAgLy8gT3RoZXJ3aXNlLCByZXR1cm5zIGZhbHNlLCBsZWF2aW5nIHRoZSBjb250ZW50cyBvZiAqb3V0cHV0IHVuZGVmaW5lZC4KICAgYm9vbCBGaW5kRmlsZUJ5TmFtZShjb25zdCBzdHJpbmcmIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZTo6cHJvdG9idWY6OkZpbGVEZXNjcmlwdG9yUHJvdG8qIG91dHB1dCkKLSAgICAgIEdSUENfT1ZFUlJJREU7CisgICAgICAgICAgICAgICAgICAgICAgcHJvdG9idWY6OkZpbGVEZXNjcmlwdG9yUHJvdG8qIG91dHB1dCkgR1JQQ19PVkVSUklERTsKIAogICAvLyBGaW5kIHRoZSBmaWxlIHRoYXQgZGVjbGFyZXMgdGhlIGdpdmVuIGZ1bGx5LXF1YWxpZmllZCBzeW1ib2wgbmFtZS4KICAgLy8gSWYgZm91bmQsIGZpbGxzIGluICpvdXRwdXQgYW5kIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIHJldHVybnMgZmFsc2UKICAgLy8gYW5kIGxlYXZlcyAqb3V0cHV0IHVuZGVmaW5lZC4KICAgYm9vbCBGaW5kRmlsZUNvbnRhaW5pbmdTeW1ib2woY29uc3Qgc3RyaW5nJiBzeW1ib2xfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xlOjpwcm90b2J1Zjo6RmlsZURlc2NyaXB0b3JQcm90byogb3V0cHV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2J1Zjo6RmlsZURlc2NyaXB0b3JQcm90byogb3V0cHV0KQogICAgICAgR1JQQ19PVkVSUklERTsKIAogICAvLyBGaW5kIHRoZSBmaWxlIHdoaWNoIGRlZmluZXMgYW4gZXh0ZW5zaW9uIGV4dGVuZGluZyB0aGUgZ2l2ZW4gbWVzc2FnZSB0eXBlCkBAIC04MSw3ICs4MCw3IEBACiAgIC8vIG11c3QgYmUgYSBmdWxseS1xdWFsaWZpZWQgdHlwZSBuYW1lLgogICBib29sIEZpbmRGaWxlQ29udGFpbmluZ0V4dGVuc2lvbigKICAgICAgIGNvbnN0IHN0cmluZyYgY29udGFpbmluZ190eXBlLCBpbnQgZmllbGRfbnVtYmVyLAotICAgICAgZ29vZ2xlOjpwcm90b2J1Zjo6RmlsZURlc2NyaXB0b3JQcm90byogb3V0cHV0KSBHUlBDX09WRVJSSURFOworICAgICAgcHJvdG9idWY6OkZpbGVEZXNjcmlwdG9yUHJvdG8qIG91dHB1dCkgR1JQQ19PVkVSUklERTsKIAogICAvLyBGaW5kcyB0aGUgdGFnIG51bWJlcnMgdXNlZCBieSBhbGwga25vd24gZXh0ZW5zaW9ucyBvZgogICAvLyBleHRlbmRlZV90eXBlLCBhbmQgYXBwZW5kcyB0aGVtIHRvIG91dHB1dCBpbiBhbiB1bmRlZmluZWQKQEAgLTEwMiw3ICsxMDEsNyBAQAogICAgICAgZ3JwYzo6cmVmbGVjdGlvbjo6djFhbHBoYTo6U2VydmVyUmVmbGVjdGlvblJlc3BvbnNlPgogICAgICAgQ2xpZW50U3RyZWFtOwogCi0gIGNvbnN0IGdvb2dsZTo6cHJvdG9idWY6OkZpbGVEZXNjcmlwdG9yUHJvdG8gUGFyc2VGaWxlRGVzY3JpcHRvclByb3RvUmVzcG9uc2UoCisgIGNvbnN0IHByb3RvYnVmOjpGaWxlRGVzY3JpcHRvclByb3RvIFBhcnNlRmlsZURlc2NyaXB0b3JQcm90b1Jlc3BvbnNlKAogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGJ5dGVfZmRfcHJvdG8pOwogCiAgIHZvaWQgQWRkRmlsZUZyb21SZXNwb25zZSgKQEAgLTEyMyw3ICsxMjIsNyBAQAogICBzdGQ6OnVub3JkZXJlZF9tYXA8c3RyaW5nLCBzdGQ6OnZlY3RvcjxpbnQ+PiBjYWNoZWRfZXh0ZW5zaW9uX251bWJlcnNfOwogICBzdGQ6Om11dGV4IHN0cmVhbV9tdXRleF87CiAKLSAgZ29vZ2xlOjpwcm90b2J1Zjo6U2ltcGxlRGVzY3JpcHRvckRhdGFiYXNlIGNhY2hlZF9kYl87CisgIHByb3RvYnVmOjpTaW1wbGVEZXNjcmlwdG9yRGF0YWJhc2UgY2FjaGVkX2RiXzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBncnBjCmRpZmYgLS1naXQgYS90ZXN0L2Rpc3RyaWIvcHl0aG9uL3J1bl9kaXN0cmliX3Rlc3Quc2ggYi90ZXN0L2Rpc3RyaWIvcHl0aG9uL3J1bl9kaXN0cmliX3Rlc3Quc2gKaW5kZXggOGE5ODNiYy4uMGMyMTU0OCAxMDA3NTUKLS0tIGEvdGVzdC9kaXN0cmliL3B5dGhvbi9ydW5fZGlzdHJpYl90ZXN0LnNoCisrKyBiL3Rlc3QvZGlzdHJpYi9weXRob24vcnVuX2Rpc3RyaWJfdGVzdC5zaApAQCAtMzMsMzQgKzMzLDQ3IEBACiBjZCAkKGRpcm5hbWUgJDApCiAKICMgUGljayB1cCB0aGUgc291cmNlIGRpc3QgYXJjaGl2ZSB3aGF0ZXZlciBpdHMgdmVyc2lvbiBpcworU0RJU1RfQVJDSElWRVM9JEVYVEVSTkFMX0dJVF9ST09UL2lucHV0X2FydGlmYWN0cy9ncnBjaW8tKi50YXIuZ3oKIEJESVNUX0FSQ0hJVkVTPSRFWFRFUk5BTF9HSVRfUk9PVC9pbnB1dF9hcnRpZmFjdHMvZ3JwY2lvLSoud2hsCitUT09MU19TRElTVF9BUkNISVZFUz0kRVhURVJOQUxfR0lUX1JPT1QvaW5wdXRfYXJ0aWZhY3RzL2dycGNpb190b29scy0qLnRhci5negogVE9PTFNfQkRJU1RfQVJDSElWRVM9JEVYVEVSTkFMX0dJVF9ST09UL2lucHV0X2FydGlmYWN0cy9ncnBjaW9fdG9vbHMtKi53aGwKIAotaWYgWyAhIC1mICR7U0RJU1RfQVJDSElWRX0gXQotdGhlbgotICBlY2hvICJBcmNoaXZlICR7U0RJU1RfQVJDSElWRX0gZG9lcyBub3QgZXhpc3QuIgotICBleGl0IDEKLWZpCitmdW5jdGlvbiBtYWtlX3ZpcnR1YWxlbnYoKSB7CisgIHZpcnR1YWxlbnYgJDEKKyAgJDEvYmluL3B5dGhvbiAtbSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgc2l4IHBpcAorICAkMS9iaW4vcHl0aG9uIC1tIHBpcCBpbnN0YWxsIGN5dGhvbgorfQogCi1QWVRIT049cHl0aG9uMgotUElQPXBpcDIKLXdoaWNoICRQWVRIT04gfHwgUFlUSE9OPXB5dGhvbgotd2hpY2ggJFBJUCB8fCBQSVA9cGlwCitmdW5jdGlvbiBhdF9sZWFzdF9vbmVfaW5zdGFsbHMoKSB7CisgIGZvciBmaWxlIGluICIkQCI7IGRvCisgICAgaWYgcHl0aG9uIC1tIHBpcCBpbnN0YWxsICRmaWxlOyB0aGVuCisgICAgICByZXR1cm4gMAorICAgIGZpCisgIGRvbmUKKyAgcmV0dXJuIC0xCit9CiAKLSMgVE9ETyhqdGF0dGVybXVzY2gpOiB0aGlzIHNob3VsZG4ndCBiZSByZXF1aXJlZAotIyBUT0RPKGp0YXR0ZXJtdXNjaCk6IHJ1biB0aGUgY29tbWFuZCB0d2ljZSB0byB3b3JrYXJvdW5kIGRvY2tlci1vbi1vdmVybGF5Ci0jIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyL2lzc3Vlcy8xMjMyNwotIyAoZmlyc3QgYXR0ZW1wdCB3aWxsIGZhaWwgd2hlbiB1c2luZyBkb2NrZXIgd2l0aCBvdmVybGF5RlMpCi0ke1BJUH0gaW5zdGFsbCAtLXVwZ3JhZGUgc2l4IHBpcCB8fCAke1BJUH0gaW5zdGFsbCAtLXVwZ3JhZGUgc2l4IHBpcAorbWFrZV92aXJ0dWFsZW52IGJkaXN0X3Rlc3QKK21ha2VfdmlydHVhbGVudiBzZGlzdF90ZXN0CiAKLSMgQXQgbGVhc3Qgb25lIG9mIHRoZSBiZGlzdCBwYWNrYWdlcyBoYXMgdG8gc3VjY2VlZCAod2hpY2hldmVyIG9uZSBtYXRjaGVzIHRoZQotIyB0ZXN0IG1hY2hpbmUsIGFueXdheSkuCi1mb3IgYmRpc3QgaW4gJHtCRElTVF9BUkNISVZFU30gJHtUT09MU19CRElTVF9BUkNISVZFU307IGRvCi0gICgkUFlUSE9OIC1tIHBpcCBpbnN0YWxsICRiZGlzdCkgfHwgdHJ1ZQotZG9uZQorIworIyBJbnN0YWxsIG91ciBkaXN0cmlidXRpb25zIGluIG9yZGVyIG9mIGRlcGVuZGVuY2llcworIworCisoc291cmNlIGJkaXN0X3Rlc3QvYmluL2FjdGl2YXRlICYmIGF0X2xlYXN0X29uZV9pbnN0YWxscyAke0JESVNUX0FSQ0hJVkVTfSkKKyhzb3VyY2UgYmRpc3RfdGVzdC9iaW4vYWN0aXZhdGUgJiYgYXRfbGVhc3Rfb25lX2luc3RhbGxzICR7VE9PTFNfQkRJU1RfQVJDSElWRVN9KQorCisoc291cmNlIHNkaXN0X3Rlc3QvYmluL2FjdGl2YXRlICYmIGF0X2xlYXN0X29uZV9pbnN0YWxscyAke1NESVNUX0FSQ0hJVkVTfSkKKyhzb3VyY2Ugc2Rpc3RfdGVzdC9iaW4vYWN0aXZhdGUgJiYgYXRfbGVhc3Rfb25lX2luc3RhbGxzICR7VE9PTFNfU0RJU1RfQVJDSElWRVN9KQorCisjCisjIFRlc3Qgb3VyIGRpc3RyaWJ1dGlvbnMKKyMKIAogIyBUT0RPKGp0YXR0ZXJtdXNjaCk6IGFkZCBhIC5wcm90byBmaWxlIHRvIHRoZSBkaXN0cmlidGVzdCwgZ2VuZXJhdGUgcHl0aG9uCiAjIGNvZGUgZnJvbSBpdCBhbmQgdGhlbiB1c2UgdGhlIGdlbmVyYXRlZCBjb2RlIGZyb20gZGlzdHJpYnRlc3QucHkKLSRQWVRIT04gLW0gZ3JwYy50b29scy5wcm90b2MKKyhzb3VyY2UgYmRpc3RfdGVzdC9iaW4vYWN0aXZhdGUgJiYgcHl0aG9uIC1tIGdycGMudG9vbHMucHJvdG9jIC0taGVscCkKKyhzb3VyY2Ugc2Rpc3RfdGVzdC9iaW4vYWN0aXZhdGUgJiYgcHl0aG9uIC1tIGdycGMudG9vbHMucHJvdG9jIC0taGVscCkKIAotJFBZVEhPTiBkaXN0cmlidGVzdC5weQorKHNvdXJjZSBiZGlzdF90ZXN0L2Jpbi9hY3RpdmF0ZSAmJiBweXRob24gZGlzdHJpYnRlc3QucHkpCisoc291cmNlIHNkaXN0X3Rlc3QvYmluL2FjdGl2YXRlICYmIHB5dGhvbiBkaXN0cmlidGVzdC5weSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2NtYWtlL2dSUENDb25maWcuY21ha2UuaW4gYi90b29scy9jbWFrZS9nUlBDQ29uZmlnLmNtYWtlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZjA2NzQKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9jbWFrZS9nUlBDQ29uZmlnLmNtYWtlLmluCkBAIC0wLDAgKzEsNyBAQAorIyBEZXBlbmQgcGFja2FnZXMNCitAX2dSUENfRklORF9aTElCQA0KK0BfZ1JQQ19GSU5EX1BST1RPQlVGQA0KK0BfZ1JQQ19GSU5EX1NTTEANCisNCisjIFRhcmdldHMNCitpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ1JQQ1RhcmdldHMuY21ha2UpDQpkaWZmIC0tZ2l0IGEvdG9vbHMvY21ha2UvZ1JQQ0NvbmZpZ1ZlcnNpb24uY21ha2UuaW4gYi90b29scy9jbWFrZS9nUlBDQ29uZmlnVmVyc2lvbi5jbWFrZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2MxOWZkCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvY21ha2UvZ1JQQ0NvbmZpZ1ZlcnNpb24uY21ha2UuaW4KQEAgLTAsMCArMSwxMSBAQAorc2V0KFBBQ0tBR0VfVkVSU0lPTiAiQFBBQ0tBR0VfVkVSU0lPTkAiKQ0KKw0KKyMgQ2hlY2sgd2hldGhlciB0aGUgcmVxdWVzdGVkIFBBQ0tBR0VfRklORF9WRVJTSU9OIGlzIGNvbXBhdGlibGUNCitpZigiJHtQQUNLQUdFX1ZFUlNJT059IiBWRVJTSU9OX0xFU1MgIiR7UEFDS0FHRV9GSU5EX1ZFUlNJT059IikNCisgICAgc2V0KFBBQ0tBR0VfVkVSU0lPTl9DT01QQVRJQkxFIEZBTFNFKQ0KK2Vsc2UoKQ0KKyAgICBzZXQoUEFDS0FHRV9WRVJTSU9OX0NPTVBBVElCTEUgVFJVRSkNCisgICAgaWYgKCIke1BBQ0tBR0VfVkVSU0lPTn0iIFZFUlNJT05fRVFVQUwgIiR7UEFDS0FHRV9GSU5EX1ZFUlNJT059IikNCisgICAgICAgIHNldChQQUNLQUdFX1ZFUlNJT05fRVhBQ1QgVFJVRSkNCisgICAgZW5kaWYoKQ0KK2VuZGlmKCkNCmRpZmYgLS1naXQgYS90b29scy9jb2RlZ2VuL2NvcmUvZ2VuX3N0YXRpY19tZXRhZGF0YS5weSBiL3Rvb2xzL2NvZGVnZW4vY29yZS9nZW5fc3RhdGljX21ldGFkYXRhLnB5CmluZGV4IGZhYTgzODYuLjg1OWFkY2IgMTAwNzU1Ci0tLSBhL3Rvb2xzL2NvZGVnZW4vY29yZS9nZW5fc3RhdGljX21ldGFkYXRhLnB5CisrKyBiL3Rvb2xzL2NvZGVnZW4vY29yZS9nZW5fc3RhdGljX21ldGFkYXRhLnB5CkBAIC01MCw4ICs1MCw4IEBACiAgICAgJ2hvc3QnLAogICAgICdncnBjLW1lc3NhZ2UnLAogICAgICdncnBjLXN0YXR1cycsCi0gICAgJ2NlbnN1cy1iaW4nLAotICAgICdjZW5zdXMtYmluYXJ5LWJpbicsCisgICAgJ2dycGMtdHJhY2luZy1iaW4nLAorICAgICdncnBjLWNlbnN1cy1iaW4nLAogICAgICcnLAogICAgICgnZ3JwYy1zdGF0dXMnLCAnMCcpLAogICAgICgnZ3JwYy1zdGF0dXMnLCAnMScpLApAQCAtMTA4LDcgKzEwOCw4IEBACiAgICAgKCdpZi1yYW5nZScsICcnKSwKICAgICAoJ2lmLXVubW9kaWZpZWQtc2luY2UnLCAnJyksCiAgICAgKCdsYXN0LW1vZGlmaWVkJywgJycpLAotICAgICgnbG9hZC1yZXBvcnRpbmcnLCAnJyksCisgICAgKCdsb2FkLXJlcG9ydGluZy1pbml0aWFsJywgJycpLAorICAgICgnbG9hZC1yZXBvcnRpbmctdHJhaWxpbmcnLCAnJyksCiAgICAgKCdsaW5rJywgJycpLAogICAgICgnbG9jYXRpb24nLCAnJyksCiAgICAgKCdtYXgtZm9yd2FyZHMnLCAnJyksCmRpZmYgLS1naXQgYS90b29scy9kaXN0cmliL2NoZWNrX2luY2x1ZGVfZ3VhcmRzLnB5IGIvdG9vbHMvZGlzdHJpYi9jaGVja19pbmNsdWRlX2d1YXJkcy5weQppbmRleCA1NmIyOTI0Li4yODMxMjgxIDEwMDc1NQotLS0gYS90b29scy9kaXN0cmliL2NoZWNrX2luY2x1ZGVfZ3VhcmRzLnB5CisrKyBiL3Rvb2xzL2Rpc3RyaWIvY2hlY2tfaW5jbHVkZV9ndWFyZHMucHkKQEAgLTIwMCw2ICsyMDAsNiBAQAogCiBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVfbGlzdDoKICAgaWYgZmlsZW5hbWUgaW4gS05PV05fQkFEOiBjb250aW51ZQotICBvayA9IHZhbGlkYXRvci5jaGVjayhmaWxlbmFtZSwgYXJncy5maXgpCisgIG9rID0gb2sgYW5kIHZhbGlkYXRvci5jaGVjayhmaWxlbmFtZSwgYXJncy5maXgpCiAKIHN5cy5leGl0KDAgaWYgb2sgZWxzZSAxKQpkaWZmIC0tZ2l0IGEvdG9vbHMvZGlzdHJpYi9weXRob24vZG9jZ2VuLnB5IGIvdG9vbHMvZGlzdHJpYi9weXRob24vZG9jZ2VuLnB5CmluZGV4IGY1ZTg5ZjEuLjE1YmQ4ZDggMTAwNzU1Ci0tLSBhL3Rvb2xzL2Rpc3RyaWIvcHl0aG9uL2RvY2dlbi5weQorKysgYi90b29scy9kaXN0cmliL3B5dGhvbi9kb2NnZW4ucHkKQEAgLTcxLDYgKzcxLDggQEAKIAogc3VicHJvY2Vzc19hcmd1bWVudHNfbGlzdCA9IFsKICAgICB7J2FyZ3MnOiBbJ3ZpcnR1YWxlbnYnLCBWSVJUVUFMRU5WX0RJUl0sICdlbnYnOiBlbnZpcm9ubWVudH0sCisgICAgeydhcmdzJzogW1ZJUlRVQUxFTlZfUElQX1BBVEgsICdpbnN0YWxsJywgJy0tdXBncmFkZScsICdwaXAnXSwKKyAgICAgJ2Vudic6IGVudmlyb25tZW50fSwKICAgICB7J2FyZ3MnOiBbVklSVFVBTEVOVl9QSVBfUEFUSCwgJ2luc3RhbGwnLCAnLXInLCBSRVFVSVJFTUVOVFNfUEFUSF0sCiAgICAgICdlbnYnOiBlbnZpcm9ubWVudH0sCiAgICAgeydhcmdzJzogW1ZJUlRVQUxFTlZfUFlUSE9OX1BBVEgsIFNFVFVQX1BBVEgsICdidWlsZCddLCAnZW52JzogZW52aXJvbm1lbnR9LApkaWZmIC0tZ2l0IGEvdG9vbHMvZGlzdHJpYi9weXRob24vZ3JwY2lvX3Rvb2xzL1JFQURNRS5yc3QgYi90b29scy9kaXN0cmliL3B5dGhvbi9ncnBjaW9fdG9vbHMvUkVBRE1FLnJzdAppbmRleCA4OTQ2YTFkLi41NTUyMWQxIDEwMDY0NAotLS0gYS90b29scy9kaXN0cmliL3B5dGhvbi9ncnBjaW9fdG9vbHMvUkVBRE1FLnJzdAorKysgYi90b29scy9kaXN0cmliL3B5dGhvbi9ncnBjaW9fdG9vbHMvUkVBRE1FLnJzdApAQCAtMTIyLDYgKzEyMiw3IEBACiAgICAgdGhpcmRfcGFydHkvcHJvdG9idWYvc3JjL2dvb2dsZS9wcm90b2J1Zi9zdHVicy9tYXRobGltaXRzLmg6MTczOjMxOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ1NJR05FRF9JTlRfTUFYJwogICAgIHN0YXRpYyBjb25zdCBUeXBlIGtQb3NNYXggPSBTSUdORURfSU5UX01BWChUeXBlKTsgXFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisKICAgQW5kIHlvdXIgdG9vbGNoYWluIGlzIEdDQyAoYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCB1cCB0aHJvdWdoIGF0IGxlYXN0CiAgIEdDQyA2LjApLCB0aGlzIGlzIHByb2JhYmx5IGEgYnVnIHdoZXJlIEdDQyBjaG9rZXMgb24gY29uc3RhbnQgZXhwcmVzc2lvbnMKICAgd2hlbiB0aGUgOmNvZGU6YC1md3JhcHZgIGZsYWcgaXMgc3BlY2lmaWVkLiBZb3Ugc2hvdWxkIGNvbnNpZGVyIHNldHRpbmcgeW91cgpAQCAtMTM2LDMgKzEzNyw0MiBAQAogOjoKIAogICAkIHB5dGhvbiAtbSBncnBjLnRvb2xzLnByb3RvYyAtSSRJTkNMVURFIC0tcHl0aG9uX291dD0kT1VUUFVUIC0tZ3JwY19weXRob25fb3V0PSRPVVRQVVQgJFBST1RPX0ZJTEVTCisKK1RvIHVzZSBhcyBhIGJ1aWxkIHN0ZXAgaW4gZGlzdHV0aWxzLWJhc2VkIHByb2plY3RzLCB5b3UgbWF5IHVzZSB0aGUgcHJvdmlkZWQKK2NvbW1hbmQgY2xhc3MgaW4geW91ciA6Y29kZTpgc2V0dXAucHlgOgorCis6OgorCisgIHNldHVwdG9vbHMuc2V0dXAoCisgICAgIyAuLi4KKyAgICBjbWRjbGFzcz17CisgICAgICAnYnVpbGRfcHJvdG9fbW9kdWxlcyc6IGdycGMudG9vbHMuY29tbWFuZC5CdWlsZFBhY2thZ2VQcm90b3MsCisgICAgfQorICAgICMgLi4uCisgICkKKworSW52b2NhdGlvbiBvZiB0aGUgY29tbWFuZCB3aWxsIHdhbGsgdGhlIHByb2plY3QgdHJlZSBhbmQgdHJhbnNwaWxlIGV2ZXJ5Cis6Y29kZTpgLnByb3RvYCBmaWxlIGludG8gYSA6Y29kZTpgX3BiMi5weWAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisKK05vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgYXBwcm9hY2ggcmVxdWlyZXMgOmNvZGU6YGdycGNpby10b29sc2AgdG8gYmUKK2luc3RhbGxlZCBvbiB0aGUgbWFjaGluZSBiZWZvcmUgdGhlIHNldHVwIHNjcmlwdCBpcyBpbnZva2VkIChpLmUuIG5vCitjb21iaW5hdGlvbiBvZiA6Y29kZTpgc2V0dXBfcmVxdWlyZXNgIG9yIDpjb2RlOmBpbnN0YWxsX3JlcXVpcmVzYCB3aWxsIHByb3ZpZGUKK2FjY2VzcyB0byA6Y29kZTpgZ3JwYy50b29scy5jb21tYW5kLkJ1aWxkUGFja2FnZVByb3Rvc2AgaWYgaXQgaXNuJ3QgYWxyZWFkeQoraW5zdGFsbGVkKS4gT25lIHdheSB0byB3b3JrIGFyb3VuZCB0aGlzIGNhbiBiZSBmb3VuZCBpbiBvdXIKKzpjb2RlOmBncnBjaW8taGVhbHRoLWNoZWNraW5nYAorYHBhY2thZ2UgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvZ3JwY2lvLWhlYWx0aC1jaGVja2luZz5gXzoKKworOjoKKworICBjbGFzcyBCdWlsZFBhY2thZ2VQcm90b3Moc2V0dXB0b29scy5Db21tYW5kKToKKyAgICAiIiJDb21tYW5kIHRvIGdlbmVyYXRlIHByb2plY3QgKl9wYjIucHkgbW9kdWxlcyBmcm9tIHByb3RvIGZpbGVzLiIiIgorICAgICMgLi4uCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgIGZyb20gZ3JwYy50b29scyBpbXBvcnQgY29tbWFuZAorICAgICAgY29tbWFuZC5idWlsZF9wYWNrYWdlX3Byb3RvcyhzZWxmLmRpc3RyaWJ1dGlvbi5wYWNrYWdlX2RpclsnJ10pCisKK05vdyBpbmNsdWRpbmcgOmNvZGU6YGdycGNpby10b29sc2AgaW4gOmNvZGU6YHNldHVwX3JlcXVpcmVzYCB3aWxsIHByb3ZpZGUgdGhlCitjb21tYW5kIG9uLXNldHVwIGFzIGRlc2lyZWQuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbW1hbmQgY2xhc3NlcywgY29uc3VsdCA6Y29kZTpgZGlzdHV0aWxzYCBhbmQKKzpjb2RlOmBzZXR1cHRvb2xzYCBkb2N1bWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvdG9vbHMvZGlzdHJpYi9weXRob24vZ3JwY2lvX3Rvb2xzL2dycGMvdG9vbHMvY29tbWFuZC5weSBiL3Rvb2xzL2Rpc3RyaWIvcHl0aG9uL2dycGNpb190b29scy9ncnBjL3Rvb2xzL2NvbW1hbmQucHkKaW5kZXggY2NmMzhiNy4uMjUyMDA5OSAxMDA2NDQKLS0tIGEvdG9vbHMvZGlzdHJpYi9weXRob24vZ3JwY2lvX3Rvb2xzL2dycGMvdG9vbHMvY29tbWFuZC5weQorKysgYi90b29scy9kaXN0cmliL3B5dGhvbi9ncnBjaW9fdG9vbHMvZ3JwYy90b29scy9jb21tYW5kLnB5CkBAIC0zNSw3ICszNSwyNiBAQAogZnJvbSBncnBjLnRvb2xzIGltcG9ydCBwcm90b2MKIAogCi1jbGFzcyBCdWlsZFByb3RvTW9kdWxlcyhzZXR1cHRvb2xzLkNvbW1hbmQpOgorZGVmIGJ1aWxkX3BhY2thZ2VfcHJvdG9zKHBhY2thZ2Vfcm9vdCk6CisgIHByb3RvX2ZpbGVzID0gW10KKyAgaW5jbHVzaW9uX3Jvb3QgPSBvcy5wYXRoLmFic3BhdGgocGFja2FnZV9yb290KQorICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhpbmNsdXNpb25fcm9vdCk6CisgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgorICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5wcm90bycpOgorICAgICAgICBwcm90b19maWxlcy5hcHBlbmQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihyb290LCBmaWxlbmFtZSkpKQorCisgIGZvciBwcm90b19maWxlIGluIHByb3RvX2ZpbGVzOgorICAgIGNvbW1hbmQgPSBbCisgICAgICAgICdncnBjLnRvb2xzLnByb3RvYycsCisgICAgICAgICctLXByb3RvX3BhdGg9e30nLmZvcm1hdChpbmNsdXNpb25fcm9vdCksCisgICAgICAgICctLXB5dGhvbl9vdXQ9e30nLmZvcm1hdChpbmNsdXNpb25fcm9vdCksCisgICAgICAgICctLWdycGNfcHl0aG9uX291dD17fScuZm9ybWF0KGluY2x1c2lvbl9yb290KSwKKyAgICBdICsgW3Byb3RvX2ZpbGVdCisgICAgaWYgcHJvdG9jLm1haW4oY29tbWFuZCkgIT0gMDoKKyAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ3dhcm5pbmc6IHt9IGZhaWxlZCcuZm9ybWF0KGNvbW1hbmQpKQorCisKK2NsYXNzIEJ1aWxkUGFja2FnZVByb3RvcyhzZXR1cHRvb2xzLkNvbW1hbmQpOgogICAiIiJDb21tYW5kIHRvIGdlbmVyYXRlIHByb2plY3QgKl9wYjIucHkgbW9kdWxlcyBmcm9tIHByb3RvIGZpbGVzLiIiIgogCiAgIGRlc2NyaXB0aW9uID0gJ2J1aWxkIGdycGMgcHJvdG9idWYgbW9kdWxlcycKQEAgLTUyLDE5ICs3MSw0IEBACiAgICAgIyBkaXJlY3RvcnkgaXMgcHJvdmlkZWQgYXMgYW4gJ2luY2x1ZGUnIGRpcmVjdG9yeS4gV2UgYXNzdW1lIGl0J3MgdGhlICcnIGtleQogICAgICMgdG8gYHNlbGYuZGlzdHJpYnV0aW9uLnBhY2thZ2VfZGlyYCAoYW5kIGdldCBhIGtleSBlcnJvciBpZiBpdCdzIG5vdAogICAgICMgdGhlcmUpLgotICAgIHByb3RvX2ZpbGVzID0gW10KLSAgICBpbmNsdXNpb25fcm9vdCA9IG9zLnBhdGguYWJzcGF0aChzZWxmLmRpc3RyaWJ1dGlvbi5wYWNrYWdlX2RpclsnJ10pCi0gICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoaW5jbHVzaW9uX3Jvb3QpOgotICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgotICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLnByb3RvJyk6Ci0gICAgICAgICAgcHJvdG9fZmlsZXMuYXBwZW5kKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpKSkKLQotICAgIGZvciBwcm90b19maWxlIGluIHByb3RvX2ZpbGVzOgotICAgICAgY29tbWFuZCA9IFsKLSAgICAgICAgICAnZ3JwYy50b29scy5wcm90b2MnLAotICAgICAgICAgICctLXByb3RvX3BhdGg9e30nLmZvcm1hdChpbmNsdXNpb25fcm9vdCksCi0gICAgICAgICAgJy0tcHl0aG9uX291dD17fScuZm9ybWF0KGluY2x1c2lvbl9yb290KSwKLSAgICAgICAgICAnLS1ncnBjX3B5dGhvbl9vdXQ9e30nLmZvcm1hdChpbmNsdXNpb25fcm9vdCksCi0gICAgICBdICsgW3Byb3RvX2ZpbGVdCi0gICAgICBpZiBwcm90b2MubWFpbihjb21tYW5kKSAhPSAwOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCd3YXJuaW5nOiB7fSBmYWlsZWQnLmZvcm1hdChjb21tYW5kKSkKKyAgICBidWlsZF9wYWNrYWdlX3Byb3RvcyhzZWxmLmRpc3RyaWJ1dGlvbi5wYWNrYWdlX2RpclsnJ10pCmRpZmYgLS1naXQgYS90b29scy9kaXN0cmliL3B5dGhvbi9ncnBjaW9fdG9vbHMvc2V0dXAucHkgYi90b29scy9kaXN0cmliL3B5dGhvbi9ncnBjaW9fdG9vbHMvc2V0dXAucHkKaW5kZXggYmIyYzcxZC4uYmIxZjFjZiAxMDA2NDQKLS0tIGEvdG9vbHMvZGlzdHJpYi9weXRob24vZ3JwY2lvX3Rvb2xzL3NldHVwLnB5CisrKyBiL3Rvb2xzL2Rpc3RyaWIvcHl0aG9uL2dycGNpb190b29scy9zZXR1cC5weQpAQCAtMjgsMTEgKzI4LDEzIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBleHRlbnNpb24KK2Zyb20gZGlzdHV0aWxzIGltcG9ydCB1dGlsCiBpbXBvcnQgZXJybm8KIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBwa2dfcmVzb3VyY2VzCiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQogaW1wb3J0IHNobGV4CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCkBAIC04OSw2ICs5MSwxMyBAQAogRVhUUkFfQ09NUElMRV9BUkdTID0gc2hsZXguc3BsaXQoRVhUUkFfRU5WX0NPTVBJTEVfQVJHUykKIEVYVFJBX0xJTktfQVJHUyA9IHNobGV4LnNwbGl0KEVYVFJBX0VOVl9MSU5LX0FSR1MpCiAKK0NDX0ZJTEVTID0gWworICBvcy5wYXRoLm5vcm1wYXRoKGNjX2ZpbGUpIGZvciBjY19maWxlIGluIHByb3RvY19saWJfZGVwcy5DQ19GSUxFU10KK1BST1RPX0ZJTEVTID0gWworICBvcy5wYXRoLm5vcm1wYXRoKHByb3RvX2ZpbGUpIGZvciBwcm90b19maWxlIGluIHByb3RvY19saWJfZGVwcy5QUk9UT19GSUxFU10KK0NDX0lOQ0xVREUgPSBvcy5wYXRoLm5vcm1wYXRoKHByb3RvY19saWJfZGVwcy5DQ19JTkNMVURFKQorUFJPVE9fSU5DTFVERSA9IG9zLnBhdGgubm9ybXBhdGgocHJvdG9jX2xpYl9kZXBzLlBST1RPX0lOQ0xVREUpCisKIEdSUENfUFlUSE9OX1RPT0xTX1BBQ0tBR0UgPSAnZ3JwYy50b29scycKIEdSUENfUFlUSE9OX1BST1RPX1JFU09VUkNFU19OQU1FID0gJ19wcm90bycKIApAQCAtMTA0LDE0ICsxMTMsMTggQEAKICAgaWYgbWFjX3RhcmdldCBhbmQgKHBrZ19yZXNvdXJjZXMucGFyc2VfdmVyc2lvbihtYWNfdGFyZ2V0KSA8CiAJCSAgICAgcGtnX3Jlc291cmNlcy5wYXJzZV92ZXJzaW9uKCcxMC45LjAnKSk6CiAgICAgb3MuZW52aXJvblsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuOScKKyAgICBvcy5lbnZpcm9uWydfUFlUSE9OX0hPU1RfUExBVEZPUk0nXSA9IHJlLnN1YigKKyAgICAgICAgcidtYWNvc3gtWzAtOV0rXC5bMC05XSstKC4rKScsCisgICAgICAgIHInbWFjb3N4LTEwLjktXDEnLAorICAgICAgICB1dGlsLmdldF9wbGF0Zm9ybSgpKQogCiBkZWYgcGFja2FnZV9kYXRhKCk6CiAgIHRvb2xzX3BhdGggPSBHUlBDX1BZVEhPTl9UT09MU19QQUNLQUdFLnJlcGxhY2UoJy4nLCBvcy5wYXRoLnNlcCkKICAgcHJvdG9fcmVzb3VyY2VzX3BhdGggPSBvcy5wYXRoLmpvaW4odG9vbHNfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JQQ19QWVRIT05fUFJPVE9fUkVTT1VSQ0VTX05BTUUpCiAgIHByb3RvX2ZpbGVzID0gW10KLSAgZm9yIHByb3RvX2ZpbGUgaW4gcHJvdG9jX2xpYl9kZXBzLlBST1RPX0ZJTEVTOgotICAgIHNvdXJjZSA9IG9zLnBhdGguam9pbihwcm90b2NfbGliX2RlcHMuUFJPVE9fSU5DTFVERSwgcHJvdG9fZmlsZSkKKyAgZm9yIHByb3RvX2ZpbGUgaW4gUFJPVE9fRklMRVM6CisgICAgc291cmNlID0gb3MucGF0aC5qb2luKFBST1RPX0lOQ0xVREUsIHByb3RvX2ZpbGUpCiAgICAgdGFyZ2V0ID0gb3MucGF0aC5qb2luKHByb3RvX3Jlc291cmNlc19wYXRoLCBwcm90b19maWxlKQogICAgIHJlbGF0aXZlX3RhcmdldCA9IG9zLnBhdGguam9pbihHUlBDX1BZVEhPTl9QUk9UT19SRVNPVVJDRVNfTkFNRSwgcHJvdG9fZmlsZSkKICAgICB0cnk6CkBAIC0xMjcsMjIgKzE0MCwyMiBAQAogCiBkZWYgZXh0ZW5zaW9uX21vZHVsZXMoKToKICAgaWYgQlVJTERfV0lUSF9DWVRIT046Ci0gICAgcGx1Z2luX3NvdXJjZXMgPSBbJ2dycGMvdG9vbHMvX3Byb3RvY19jb21waWxlci5weXgnXQorICAgIHBsdWdpbl9zb3VyY2VzID0gW29zLnBhdGguam9pbignZ3JwYycsICd0b29scycsICdfcHJvdG9jX2NvbXBpbGVyLnB5eCcpXQogICBlbHNlOgotICAgIHBsdWdpbl9zb3VyY2VzID0gWydncnBjL3Rvb2xzL19wcm90b2NfY29tcGlsZXIuY3BwJ10KKyAgICBwbHVnaW5fc291cmNlcyA9IFtvcy5wYXRoLmpvaW4oJ2dycGMnLCAndG9vbHMnLCAnX3Byb3RvY19jb21waWxlci5jcHAnKV0KICAgcGx1Z2luX3NvdXJjZXMgKz0gWwotICAgICAgJ2dycGMvdG9vbHMvbWFpbi5jYycsCi0gICAgICAnZ3JwY19yb290L3NyYy9jb21waWxlci9weXRob25fZ2VuZXJhdG9yLmNjJ10gKyBbCi0gICAgICBvcy5wYXRoLmpvaW4ocHJvdG9jX2xpYl9kZXBzLkNDX0lOQ0xVREUsIGNjX2ZpbGUpCi0gICAgICBmb3IgY2NfZmlsZSBpbiBwcm90b2NfbGliX2RlcHMuQ0NfRklMRVNdCisgICAgb3MucGF0aC5qb2luKCdncnBjJywgJ3Rvb2xzJywgJ21haW4uY2MnKSwKKyAgICBvcy5wYXRoLmpvaW4oJ2dycGNfcm9vdCcsICdzcmMnLCAnY29tcGlsZXInLCAncHl0aG9uX2dlbmVyYXRvci5jYycpXSArIFsKKyAgICBvcy5wYXRoLmpvaW4oQ0NfSU5DTFVERSwgY2NfZmlsZSkKKyAgICBmb3IgY2NfZmlsZSBpbiBDQ19GSUxFU10KICAgcGx1Z2luX2V4dCA9IGV4dGVuc2lvbi5FeHRlbnNpb24oCiAgICAgICBuYW1lPSdncnBjLnRvb2xzLl9wcm90b2NfY29tcGlsZXInLAogICAgICAgc291cmNlcz1wbHVnaW5fc291cmNlcywKICAgICAgIGluY2x1ZGVfZGlycz1bCiAgICAgICAgICAgJy4nLAogICAgICAgICAgICdncnBjX3Jvb3QnLAotICAgICAgICAgICdncnBjX3Jvb3QvaW5jbHVkZScsCi0gICAgICAgICAgcHJvdG9jX2xpYl9kZXBzLkNDX0lOQ0xVREUsCisgICAgICAgICAgb3MucGF0aC5qb2luKCdncnBjX3Jvb3QnLCAnaW5jbHVkZScpLAorICAgICAgICAgIENDX0lOQ0xVREUsCiAgICAgICBdLAogICAgICAgbGFuZ3VhZ2U9J2MrKycsCiAgICAgICBkZWZpbmVfbWFjcm9zPWxpc3QoREVGSU5FX01BQ1JPUyksCmRpZmYgLS1naXQgYS90b29scy9kaXN0cmliL3B5dGhvbi9tYWtlX2dycGNpb190b29scy5weSBiL3Rvb2xzL2Rpc3RyaWIvcHl0aG9uL21ha2VfZ3JwY2lvX3Rvb2xzLnB5CmluZGV4IGZkOWIzOGIuLmFkZjU4NDQgMTAwNzU1Ci0tLSBhL3Rvb2xzL2Rpc3RyaWIvcHl0aG9uL21ha2VfZ3JwY2lvX3Rvb2xzLnB5CisrKyBiL3Rvb2xzL2Rpc3RyaWIvcHl0aG9uL21ha2VfZ3JwY2lvX3Rvb2xzLnB5CkBAIC0yOSwxMiArMjksMTggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IGVycm5vCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgdXVpZAogCiBERVBTX0ZJTEVfQ09OVEVOVD0iIiIKICMgQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCkBAIC0xMjQsMjAgKzEzMCw4OCBAQAogICAgICAgcHJvdG9faW5jbHVkZT1yZXByKEdSUENfUFlUSE9OX1BST1RPQlVGX1JFTEFUSVZFX1JPT1QpKQogICByZXR1cm4gZGVwc19maWxlX2NvbnRlbnQKIAorZGVmIGxvbmdfcGF0aChwYXRoKToKKyAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgIHJldHVybiAnXFxcXD9cXCcgKyBwYXRoCisgIGVsc2U6CisgICAgcmV0dXJuIHBhdGgKKworZGVmIGF0b21pY19maWxlX2NvcHkoc3JjLCBkc3QpOgorICAiIiJCYXNlZCBvbiB0aGUgbG9jay1mcmVlLXdoYWNrLWEtbW9sZSBhbGdvcml0aG0sIGRlcGVuZGluZyBvbiBmaWxlc3lzdGVtCisgICAgIHJlbmFtaW5nIGJlaW5nIGF0b21pYy4gRGVzY3JpYmVkIGF0IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4MDkwODgzLgorICAiIiIKKyAgdHJ5OgorICAgIGlmIGZpbGVjbXAuY21wKHNyYywgZHN0KToKKyAgICAgIHJldHVybgorICBleGNlcHQ6CisgICAgcGFzcworICBkc3RfZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShkc3QpKQorICBkc3RfYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoZHN0KQorICB0aGlzX2lkID0gc3RyKHV1aWQudXVpZDQoKSkucmVwbGFjZSgnLicsICctJykKKyAgdGVtcG9yYXJ5X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3t9Lnt9LnRtcCcuZm9ybWF0KGRzdF9iYXNlLCB0aGlzX2lkKSkKKyAgbW9sZV9maWxlID0gb3MucGF0aC5qb2luKGRzdF9kaXIsICd7fS57fS5tb2xlLnRtcCcuZm9ybWF0KGRzdF9iYXNlLCB0aGlzX2lkKSkKKyAgbW9sZV9wYXR0ZXJuID0gb3MucGF0aC5qb2luKGRzdF9kaXIsICd7fS4qLm1vbGUudG1wJy5mb3JtYXQoZHN0X2Jhc2UpKQorICBzcmMgPSBsb25nX3BhdGgoc3JjKQorICBkc3QgPSBsb25nX3BhdGgoZHN0KQorICB0ZW1wb3JhcnlfZmlsZSA9IGxvbmdfcGF0aCh0ZW1wb3JhcnlfZmlsZSkKKyAgbW9sZV9maWxlID0gbG9uZ19wYXRoKG1vbGVfZmlsZSkKKyAgbW9sZV9wYXR0ZXJuID0gbG9uZ19wYXRoKG1vbGVfcGF0dGVybikKKyAgc2h1dGlsLmNvcHkyKHNyYywgdGVtcG9yYXJ5X2ZpbGUpCisgIHRyeToKKyAgICBvcy5yZW5hbWUodGVtcG9yYXJ5X2ZpbGUsIG1vbGVfZmlsZSkKKyAgZXhjZXB0OgorICAgIHByaW50KCdFcnJvciBtb3ZpbmcgdGVtcG9yYXJ5IGZpbGUge30gdG8ge30nLmZvcm1hdCh0ZW1wb3JhcnlfZmlsZSwgbW9sZV9maWxlKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgIHByaW50KCd3aGlsZSB0cnlpbmcgdG8gY29weSBmaWxlIHt9IHRvIHt9Jy5mb3JtYXQoc3JjLCBkc3QpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgcmFpc2UKKyAgZm9yIG90aGVyX2ZpbGUgaW4gZ2xvYi5nbG9iKG1vbGVfcGF0dGVybik6CisgICAgb3RoZXJfaWQgPSBvdGhlcl9maWxlLnNwbGl0KCcuJylbLTNdCisgICAgaWYgdGhpc19pZCA9PSBvdGhlcl9pZDoKKyAgICAgIHBhc3MKKyAgICBlbGlmIHRoaXNfaWQgPCBvdGhlcl9pZDoKKyAgICAgIHRyeToKKyAgICAgICAgb3MucmVtb3ZlKG90aGVyX2ZpbGUpCisgICAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgdHJ5OgorICAgICAgICBvcy5yZW1vdmUobW9sZV9maWxlKQorICAgICAgZXhjZXB0OgorICAgICAgICBwYXNzCisgICAgICB0aGlzX2lkID0gb3RoZXJfaWQKKyAgICAgIG1vbGVfZmlsZSA9IG90aGVyX2ZpbGUKKyAgdHJ5OgorICAgIGlmIGZpbGVjbXAuY21wKHNyYywgZHN0KToKKyAgICAgIHRyeToKKyAgICAgICAgb3MucmVtb3ZlKG1vbGVfZmlsZSkKKyAgICAgIGV4Y2VwdDoKKyAgICAgICAgcGFzcworICAgICAgcmV0dXJuCisgIGV4Y2VwdDoKKyAgICBwYXNzCisgIHRyeToKKyAgICBvcy5yZW5hbWUobW9sZV9maWxlLCBkc3QpCisgIGV4Y2VwdDoKKyAgICBwYXNzCisKIAogZGVmIG1haW4oKToKICAgb3MuY2hkaXIoR1JQQ19ST09UKQogCi0gIGZvciB0cmVlIGluIFtHUlBDX1BZVEhPTl9QUk9UT0JVRiwKLSAgICAgICAgICAgICAgIEdSUENfUFlUSE9OX1BST1RPQ19QTFVHSU5TLAotICAgICAgICAgICAgICAgR1JQQ19QWVRIT05fSU5DTFVERV06Ci0gICAgdHJ5OgotICAgICAgc2h1dGlsLnJtdHJlZSh0cmVlKQotICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgXzoKLSAgICAgIHBhc3MKLSAgc2h1dGlsLmNvcHl0cmVlKEdSUENfUFJPVE9CVUYsIEdSUENfUFlUSE9OX1BST1RPQlVGKQotICBzaHV0aWwuY29weXRyZWUoR1JQQ19QUk9UT0NfUExVR0lOUywgR1JQQ19QWVRIT05fUFJPVE9DX1BMVUdJTlMpCi0gIHNodXRpbC5jb3B5dHJlZShHUlBDX0lOQ0xVREUsIEdSUENfUFlUSE9OX0lOQ0xVREUpCisgIGZvciBzb3VyY2UsIHRhcmdldCBpbiBbCisgICAgICAoR1JQQ19QUk9UT0JVRiwgR1JQQ19QWVRIT05fUFJPVE9CVUYpLAorICAgICAgKEdSUENfUFJPVE9DX1BMVUdJTlMsIEdSUENfUFlUSE9OX1BST1RPQ19QTFVHSU5TKSwKKyAgICAgIChHUlBDX0lOQ0xVREUsIEdSUENfUFlUSE9OX0lOQ0xVREUpXToKKyAgICBmb3Igc291cmNlX2RpciwgXywgZmlsZXMgaW4gb3Mud2Fsayhzb3VyY2UpOgorICAgICAgdGFyZ2V0X2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4odGFyZ2V0LCBvcy5wYXRoLnJlbHBhdGgoc291cmNlX2Rpciwgc291cmNlKSkpCisgICAgICB0cnk6CisgICAgICAgIG9zLm1ha2VkaXJzKHRhcmdldF9kaXIpCisgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRUVYSVNUOgorICAgICAgICAgIHJhaXNlCisgICAgICBmb3IgcmVsYXRpdmVfZmlsZSBpbiBmaWxlczoKKyAgICAgICAgc291cmNlX2ZpbGUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHNvdXJjZV9kaXIsIHJlbGF0aXZlX2ZpbGUpKQorICAgICAgICB0YXJnZXRfZmlsZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4odGFyZ2V0X2RpciwgcmVsYXRpdmVfZmlsZSkpCisgICAgICAgIGF0b21pY19maWxlX2NvcHkoc291cmNlX2ZpbGUsIHRhcmdldF9maWxlKQogCiAgIHRyeToKICAgICBwcm90b2NfbGliX2RlcHNfY29udGVudCA9IGdldF9kZXBzKCkKZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2FyY2hfeDY0L0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9hcmNoX3g2NC9Eb2NrZXJmaWxlCmluZGV4IDJmNzljYzMuLmRmZjcyZWUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2FyY2hfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fYXJjaF94NjQvRG9ja2VyZmlsZQpAQCAtMzMsNCArMzMsNCBAQAogUlVOIHBhY21hbiAtLW5vY29uZmlybSAtUyBvcGVuc3NsCiBSVU4gcGFjbWFuIC0tbm9jb25maXJtIC1TIHB5dGhvbjIKIFJVTiBwYWNtYW4gLS1ub2NvbmZpcm0gLVMgcHl0aG9uMi1waXAKLQorUlVOIHBpcCBpbnN0YWxsIHZpcnR1YWxlbnYKZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2NlbnRvczZfeDY0L0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9jZW50b3M2X3g2NC9Eb2NrZXJmaWxlCmluZGV4IGQ0ZjQ3MzcuLjk2NzQ1MDEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2NlbnRvczZfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fY2VudG9zNl94NjQvRG9ja2VyZmlsZQpAQCAtNDQsMyArNDQsNSBAQAogCiAjICJ3aGljaCIgY29tbWFuZCByZXF1aXJlZCBieSBweXRob24ncyBydW5fZGlzdHJpYl90ZXN0LnNoCiBSVU4geXVtIGluc3RhbGwgLXkgd2hpY2gKKworUlVOIHBpcCBpbnN0YWxsIHZpcnR1YWxlbnYKZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2NlbnRvczdfeDY0L0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9jZW50b3M3X3g2NC9Eb2NrZXJmaWxlCmluZGV4IGNhNjRmYTcuLjAxMjdmZTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2NlbnRvczdfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fY2VudG9zN194NjQvRG9ja2VyZmlsZQpAQCAtMzIsNCArMzIsNCBAQAogUlVOIHl1bSBpbnN0YWxsIC15IHB5dGhvbgogUlVOIHl1bSBpbnN0YWxsIC15IGVwZWwtcmVsZWFzZQogUlVOIHl1bSBpbnN0YWxsIC15IHB5dGhvbi1waXAKLQorUlVOIHBpcCBpbnN0YWxsIHZpcnR1YWxlbnYKZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2ZlZG9yYTIwX3g2NC9Eb2NrZXJmaWxlIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fZmVkb3JhMjBfeDY0L0RvY2tlcmZpbGUKaW5kZXggOGIwZjc2OS4uM2QzNjM2ZSAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fZmVkb3JhMjBfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fZmVkb3JhMjBfeDY0L0RvY2tlcmZpbGUKQEAgLTM1LDMgKzM1LDUgQEAKICMgVHJ5aW5nIHR3aWNlIG1ha2VzIGl0IHdvcmsgZmluZS4KICMgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzEwMTgwCiBSVU4gcGlwIGluc3RhbGwgLS11cGdyYWRlIHNpeCB8fCBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgc2l4CisKK1JVTiBwaXAgaW5zdGFsbCB2aXJ0dWFsZW52CmRpZmYgLS1naXQgYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9mZWRvcmEyMV94NjQvRG9ja2VyZmlsZSBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2ZlZG9yYTIxX3g2NC9Eb2NrZXJmaWxlCmluZGV4IGZjYmUwNTMuLjBiMWI2YWUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2ZlZG9yYTIxX3g2NC9Eb2NrZXJmaWxlCisrKyBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2ZlZG9yYTIxX3g2NC9Eb2NrZXJmaWxlCkBAIC00MCwzICs0MCw1IEBACiAjIFRyeWluZyB0d2ljZSBtYWtlcyBpdCB3b3JrIGZpbmUuCiAjIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2NrZXIvZG9ja2VyL2lzc3Vlcy8xMDE4MAogUlVOIHBpcDIgaW5zdGFsbCAtLXVwZ3JhZGUgc2l4IHx8IHBpcDIgaW5zdGFsbCAtLXVwZ3JhZGUgc2l4CisKK1JVTiBwaXAyIGluc3RhbGwgdmlydHVhbGVudgpkaWZmIC0tZ2l0IGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fZmVkb3JhMjJfeDY0L0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9mZWRvcmEyMl94NjQvRG9ja2VyZmlsZQppbmRleCBkZGNhY2I0Li40ZDc1MDM0IDEwMDY0NAotLS0gYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9mZWRvcmEyMl94NjQvRG9ja2VyZmlsZQorKysgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9mZWRvcmEyMl94NjQvRG9ja2VyZmlsZQpAQCAtMzAsMyArMzAsNCBAQAogRlJPTSBmZWRvcmE6MjIKIAogUlVOIHl1bSBjbGVhbiBhbGwgJiYgeXVtIHVwZGF0ZSAteSAmJiB5dW0gaW5zdGFsbCAteSBweXRob24gcHl0aG9uLXBpcAorUlVOIHBpcCBpbnN0YWxsIHZpcnR1YWxlbnYKZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2ZlZG9yYTIzX3g2NC9Eb2NrZXJmaWxlIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fZmVkb3JhMjNfeDY0L0RvY2tlcmZpbGUKaW5kZXggZDQ1MTk1ZS4uYTFiYzliYSAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fZmVkb3JhMjNfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fZmVkb3JhMjNfeDY0L0RvY2tlcmZpbGUKQEAgLTMwLDMgKzMwLDQgQEAKIEZST00gZmVkb3JhOjIzCiAKIFJVTiB5dW0gY2xlYW4gYWxsICYmIHl1bSB1cGRhdGUgLXkgJiYgeXVtIGluc3RhbGwgLXkgcHl0aG9uIHB5dGhvbi1waXAKK1JVTiBwaXAgaW5zdGFsbCB2aXJ0dWFsZW52CmRpZmYgLS1naXQgYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9qZXNzaWVfeDY0L0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9qZXNzaWVfeDY0L0RvY2tlcmZpbGUKaW5kZXggODNkZjRlZC4uN2RjMzJhMCAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25famVzc2llX3g2NC9Eb2NrZXJmaWxlCisrKyBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2plc3NpZV94NjQvRG9ja2VyZmlsZQpAQCAtMzAsMyArMzAsNCBAQAogRlJPTSBkZWJpYW46amVzc2llCiAKIFJVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgcHl0aG9uIHB5dGhvbi1waXAKK1JVTiBwaXAgaW5zdGFsbCB2aXJ0dWFsZW52CmRpZmYgLS1naXQgYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9qZXNzaWVfeDg2L0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl9qZXNzaWVfeDg2L0RvY2tlcmZpbGUKaW5kZXggMTlhZGRiMi4uMDRjMTQwMiAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25famVzc2llX3g4Ni9Eb2NrZXJmaWxlCisrKyBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX2plc3NpZV94ODYvRG9ja2VyZmlsZQpAQCAtMzEsNiArMzEsOCBAQAogCiBSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC15IHB5dGhvbiBweXRob24tcGlwCiAKK1JVTiBwaXAgaW5zdGFsbCB2aXJ0dWFsZW52CisKICMgZG9ja2VyIGlzIHJ1bm5pbmcgb24gYSA2NC1iaXQgbWFjaGluZSwgc28gd2UgbmVlZCB0bwogIyBvdmVycmlkZSAidW5hbWUgLW0iIHRvIHJlcG9ydCBpNjg2IGluc3RlYWQgb2YgeDg2XzY0LCBvdGhlcndpc2UKICMgcHl0aG9uIHdpbGwgY2hvb3NlIGEgd3JvbmcgYmluYXJ5IHBhY2thZ2UgdG8gaW5zdGFsbC4KZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX29wZW5zdXNlX3g2NC9Eb2NrZXJmaWxlIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fb3BlbnN1c2VfeDY0L0RvY2tlcmZpbGUKaW5kZXggZmUxNDA2Yi4uMjcxNTljNyAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fb3BlbnN1c2VfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fb3BlbnN1c2VfeDY0L0RvY2tlcmZpbGUKQEAgLTM4LDMgKzM4LDUgQEAKICMgV2l0aG91dCB0aGlzLCBwaXAgd29uJ3QgYmUgYWJsZSB0byBjb25uZWN0IHRvCiAjIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3NpbXBsZS8KIFJVTiB6eXBwZXIgLS1ub24taW50ZXJhY3RpdmUgaW5zdGFsbCBjYS1jZXJ0aWZpY2F0ZXMtbW96aWxsYQorCitSVU4gcGlwIGluc3RhbGwgdmlydHVhbGVudgpkaWZmIC0tZ2l0IGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fdWJ1bnR1MTIwNF94NjQvRG9ja2VyZmlsZSBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX3VidW50dTEyMDRfeDY0L0RvY2tlcmZpbGUKaW5kZXggNDA2OGZiZS4uN2E4YzkxYiAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fdWJ1bnR1MTIwNF94NjQvRG9ja2VyZmlsZQorKysgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl91YnVudHUxMjA0X3g2NC9Eb2NrZXJmaWxlCkBAIC0zMCwzICszMCw1IEBACiBGUk9NIHVidW50dToxMi4wNAogCiBSVU4gYXB0LWdldCB1cGRhdGUgLXkgJiYgYXB0LWdldCBpbnN0YWxsIC15IHB5dGhvbiBweXRob24tcGlwCisKK1JVTiBwaXAgaW5zdGFsbCB2aXJ0dWFsZW52CmRpZmYgLS1naXQgYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl91YnVudHUxNDA0X3g2NC9Eb2NrZXJmaWxlIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fdWJ1bnR1MTQwNF94NjQvRG9ja2VyZmlsZQppbmRleCAwODU4ZmIwLi42NTE4OWE0IDEwMDY0NAotLS0gYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl91YnVudHUxNDA0X3g2NC9Eb2NrZXJmaWxlCisrKyBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX3VidW50dTE0MDRfeDY0L0RvY2tlcmZpbGUKQEAgLTMwLDMgKzMwLDUgQEAKIEZST00gdWJ1bnR1OjE0LjA0CiAKIFJVTiBhcHQtZ2V0IHVwZGF0ZSAteSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgcHl0aG9uIHB5dGhvbi1waXAKKworUlVOIHBpcCBpbnN0YWxsIHZpcnR1YWxlbnYKZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX3VidW50dTE1MDRfeDY0L0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl91YnVudHUxNTA0X3g2NC9Eb2NrZXJmaWxlCmluZGV4IGVkNmZmZGQuLmFiZjM2YzQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX3VidW50dTE1MDRfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fdWJ1bnR1MTUwNF94NjQvRG9ja2VyZmlsZQpAQCAtMzAsMyArMzAsNSBAQAogRlJPTSB1YnVudHU6MTUuMDQKIAogUlVOIGFwdC1nZXQgdXBkYXRlIC15ICYmIGFwdC1nZXQgaW5zdGFsbCAteSBweXRob24gcHl0aG9uLXBpcAorCitSVU4gcGlwIGluc3RhbGwgdmlydHVhbGVudgpkaWZmIC0tZ2l0IGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fdWJ1bnR1MTUxMF94NjQvRG9ja2VyZmlsZSBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX3VidW50dTE1MTBfeDY0L0RvY2tlcmZpbGUKaW5kZXggOWUzZTBjMi4uNmU4NjJkMiAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fdWJ1bnR1MTUxMF94NjQvRG9ja2VyZmlsZQorKysgYi90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl91YnVudHUxNTEwX3g2NC9Eb2NrZXJmaWxlCkBAIC0zMCwzICszMCw1IEBACiBGUk9NIHVidW50dToxNS4xMAogCiBSVU4gYXB0LWdldCB1cGRhdGUgLXkgJiYgYXB0LWdldCBpbnN0YWxsIC15IHB5dGhvbiBweXRob24tcGlwCisKK1JVTiBwaXAgaW5zdGFsbCB2aXJ0dWFsZW52CmRpZmYgLS1naXQgYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl91YnVudHUxNjA0X3g2NC9Eb2NrZXJmaWxlIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fdWJ1bnR1MTYwNF94NjQvRG9ja2VyZmlsZQppbmRleCA1MDk4ZGE4Li41OWY0ZmVhIDEwMDY0NAotLS0gYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl91YnVudHUxNjA0X3g2NC9Eb2NrZXJmaWxlCisrKyBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX3VidW50dTE2MDRfeDY0L0RvY2tlcmZpbGUKQEAgLTMwLDMgKzMwLDUgQEAKIEZST00gdWJ1bnR1OjE2LjA0CiAKIFJVTiBhcHQtZ2V0IHVwZGF0ZSAteSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgcHl0aG9uIHB5dGhvbi1waXAKKworUlVOIHBpcCBpbnN0YWxsIHZpcnR1YWxlbnYKZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX3doZWV6eV94NjQvRG9ja2VyZmlsZSBiL3Rvb2xzL2RvY2tlcmZpbGUvZGlzdHJpYnRlc3QvcHl0aG9uX3doZWV6eV94NjQvRG9ja2VyZmlsZQppbmRleCA2NjE2NWVlLi5iYzg4MTZkIDEwMDY0NAotLS0gYS90b29scy9kb2NrZXJmaWxlL2Rpc3RyaWJ0ZXN0L3B5dGhvbl93aGVlenlfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS9kaXN0cmlidGVzdC9weXRob25fd2hlZXp5X3g2NC9Eb2NrZXJmaWxlCkBAIC0zMCwzICszMCw1IEBACiBGUk9NIGRlYmlhbjp3aGVlenkKIAogUlVOIGFwdC1nZXQgdXBkYXRlIC15ICYmIGFwdC1nZXQgaW5zdGFsbCAteSBweXRob24gcHl0aG9uLXBpcAorCitSVU4gcGlwIGluc3RhbGwgdmlydHVhbGVudgpkaWZmIC0tZ2l0IGEvdG9vbHMvZG9ja2VyZmlsZS9pbnRlcm9wdGVzdC9ncnBjX2ludGVyb3BfcGhwL0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL2ludGVyb3B0ZXN0L2dycGNfaW50ZXJvcF9waHAvRG9ja2VyZmlsZQppbmRleCA2NWE4MzM0Li4wZDYxNzFjIDEwMDY0NAotLS0gYS90b29scy9kb2NrZXJmaWxlL2ludGVyb3B0ZXN0L2dycGNfaW50ZXJvcF9waHAvRG9ja2VyZmlsZQorKysgYi90b29scy9kb2NrZXJmaWxlL2ludGVyb3B0ZXN0L2dycGNfaW50ZXJvcF9waHAvRG9ja2VyZmlsZQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCisjIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYzLDIxICs2Myw2IEBACiAjIEJ1aWxkIHByb2ZpbGluZwogUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB0aW1lICYmIGFwdC1nZXQgY2xlYW4KIAotIz09PT09PT09PT09PT09PT09PT09Ci0jIFB5dGhvbiBkZXBlbmRlbmNpZXMKLQotIyBJbnN0YWxsIGRlcGVuZGVuY2llcwotCi1SVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC15IFwKLSAgICBweXRob24tYWxsLWRldiBcCi0gICAgcHl0aG9uMy1hbGwtZGV2IFwKLSAgICBweXRob24tcGlwCi0KLSMgSW5zdGFsbCBQeXRob24gcGFja2FnZXMgZnJvbSBQeVBJCi1SVU4gcGlwIGluc3RhbGwgcGlwIC0tdXBncmFkZQotUlVOIHBpcCBpbnN0YWxsIHZpcnR1YWxlbnYKLVJVTiBwaXAgaW5zdGFsbCBmdXR1cmVzPT0yLjIuMCBlbnVtMzQ9PTEuMC40IHByb3RvYnVmPT0zLjAuMGEyIHNpeD09MS4xMC4wCi0KICM9PT09PT09PT09PT09PT09PT0KICMgUnVieSBkZXBlbmRlbmNpZXMKIApAQCAtOTgsMTIgKzgzLDYgQEAKIAogIyBJbnN0YWxsIGRlcGVuZGVuY2llcwogCi1SVU4gL2Jpbi9iYXNoIC1sIC1jICJlY2hvICdkZWIgaHR0cDovL3BhY2thZ2VzLmRvdGRlYi5vcmcgd2hlZXp5LXBocDU1IGFsbCcgXAotICAgID4+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL2RvdGRlYi5saXN0IgotUlVOIC9iaW4vYmFzaCAtbCAtYyAiZWNobyAnZGViLXNyYyBodHRwOi8vcGFja2FnZXMuZG90ZGViLm9yZyB3aGVlenktcGhwNTUgYWxsJyBcCi0gICAgPj4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvZG90ZGViLmxpc3QiCi1SVU4gd2dldCBodHRwOi8vd3d3LmRvdGRlYi5vcmcvZG90ZGViLmdwZyAtTy0gfCBhcHQta2V5IGFkZCAtCi0KIFJVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgXAogICAgIGdpdCBwaHA1IHBocDUtZGV2IHBocHVuaXQgdW56aXAKIApAQCAtMTI4LDExICsxMDcsNiBAQAogUlVOIGN1cmwgLXNTIGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2luc3RhbGxlciB8IHBocAogUlVOIG12IGNvbXBvc2VyLnBoYXIgL3Vzci9sb2NhbC9iaW4vY29tcG9zZXIKIAotIyBBcyBhbiBhdHRlbXB0IHRvIHdvcmsgYXJvdW5kICM0MjEyLCB0cnkgdG8gcHJlZmV0Y2ggUHJvdG9idWYtUEhQIGRlcGVuZGVuY3kKLSMgaW50byBjb21wb3NlciBjYWNoZSB0byBwcmV2ZW50ICJjb21wb3NlciBpbnN0YWxsIiBmcm9tIGNsb25pbmcgb24gZWFjaCBidWlsZC4KLVJVTiBnaXQgY2xvbmUgLS1taXJyb3IgaHR0cHM6Ly9naXRodWIuY29tL3N0YW5sZXktY2hldW5nL1Byb3RvYnVmLVBIUC5naXQgXAotICAvcm9vdC8uY29tcG9zZXIvY2FjaGUvdmNzL2dpdC1naXRodWIuY29tLXN0YW5sZXktY2hldW5nLVByb3RvYnVmLVBIUC5naXQvCi0KICMgRG93bmxvYWQgdGhlIHBhdGNoZWQgUEhQIHByb3RvYnVmIHNvIHRoYXQgUEhQIGdSUEMgY2xpZW50cyBjYW4gYmUgZ2VuZXJhdGVkCiAjIGZyb20gcHJvdG8zIHNjaGVtYXMuCiBSVU4gZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFubGV5LWNoZXVuZy9Qcm90b2J1Zi1QSFAuZ2l0IC92YXIvbG9jYWwvZ2l0L3Byb3RvYnVmLXBocApAQCAtMTQ0LDMgKzExOCw0IEBACiAKICMgRGVmaW5lIHRoZSBkZWZhdWx0IGNvbW1hbmQuCiBDTUQgWyJiYXNoIl0KKwpkaWZmIC0tZ2l0IGEvdG9vbHMvZG9ja2VyZmlsZS9pbnRlcm9wdGVzdC9ncnBjX2ludGVyb3BfcGhwNy9Eb2NrZXJmaWxlIGIvdG9vbHMvZG9ja2VyZmlsZS9pbnRlcm9wdGVzdC9ncnBjX2ludGVyb3BfcGhwNy9Eb2NrZXJmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOGYyNWYKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9kb2NrZXJmaWxlL2ludGVyb3B0ZXN0L2dycGNfaW50ZXJvcF9waHA3L0RvY2tlcmZpbGUKQEAgLTAsMCArMSwxMjUgQEAKKyMgQ29weXJpZ2h0IDIwMTYsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitGUk9NIGRlYmlhbjpqZXNzaWUKKworIz09PT09PT09PT09PT09PT09CisjIFBIUDcgZGVwZW5kZW5jaWVzCisKKyMgSW5zdGFsbCBHaXQgYW5kIGJhc2ljIHBhY2thZ2VzLgorUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBcCisgIGF1dG9jb25mIFwKKyAgYXV0b21ha2UgXAorICBidWlsZC1lc3NlbnRpYWwgXAorICBjY2FjaGUgXAorICBjdXJsIFwKKyAgZ2l0IFwKKyAgbGliY3VybDQtb3BlbnNzbC1kZXYgXAorICBsaWJnbXAtZGV2IFwKKyAgbGliZ21wMy1kZXYgXAorICBsaWJzc2wtZGV2IFwKKyAgbGlidG9vbCBcCisgIGxpYnhtbDItZGV2IFwKKyAgcGtnLWNvbmZpZyBcCisgIHJlMmMgXAorICB0aW1lIFwKKyAgdW56aXAgXAorICB3Z2V0IFwKKyAgemlwICYmIGFwdC1nZXQgY2xlYW4KKworIyBJbnN0YWxsIG90aGVyIGRlcGVuZGVuY2llcworUlVOIGxuIC1zZiAvdXNyL2luY2x1ZGUveDg2XzY0LWxpbnV4LWdudS9nbXAuaCAvdXNyL2luY2x1ZGUvZ21wLmgKK1JVTiB3Z2V0IGh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvYmlzb24vYmlzb24tMi42LjQudGFyLmd6IC1PIC92YXIvbG9jYWwvYmlzb24tMi42LjQudGFyLmd6CitSVU4gY2QgL3Zhci9sb2NhbCBcCisgICYmIHRhciAtenh2ZiBiaXNvbi0yLjYuNC50YXIuZ3ogXAorICAmJiBjZCAvdmFyL2xvY2FsL2Jpc29uLTIuNi40IFwKKyAgJiYgLi9jb25maWd1cmUgXAorICAmJiBtYWtlIFwKKyAgJiYgbWFrZSBpbnN0YWxsCisKKyMgQ29tcGlsZSBQSFA3IGZyb20gc291cmNlCitSVU4gZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9waHAvcGhwLXNyYyAvdmFyL2xvY2FsL2dpdC9waHAtc3JjCitSVU4gY2QgL3Zhci9sb2NhbC9naXQvcGhwLXNyYyBcCisgICYmIGdpdCBjaGVja291dCBQSFAtNy4wLjkgXAorICAmJiAuL2J1aWxkY29uZiAtLWZvcmNlIFwKKyAgJiYgLi9jb25maWd1cmUgXAorICAtLXdpdGgtZ21wIFwKKyAgLS13aXRoLW9wZW5zc2wgXAorICAtLXdpdGgtemxpYiBcCisgICYmIG1ha2UgXAorICAmJiBtYWtlIGluc3RhbGwKKworIz09PT09PT09PT09PT09PT09PQorIyBSdWJ5IGRlcGVuZGVuY2llcworCisjIEluc3RhbGwgcnZtCitSVU4gZ3BnIC0ta2V5c2VydmVyIGhrcDovL2tleXMuZ251cGcubmV0IC0tcmVjdi1rZXlzIDQwOUI2QjE3OTZDMjc1NDYyQTE3MDMxMTM4MDRCQjgyRDM5REMwRTMKK1JVTiBcY3VybCAtc1NMIGh0dHBzOi8vZ2V0LnJ2bS5pbyB8IGJhc2ggLXMgc3RhYmxlCisKKyMgSW5zdGFsbCBSdWJ5IDIuMQorUlVOIC9iaW4vYmFzaCAtbCAtYyAicnZtIGluc3RhbGwgcnVieS0yLjEiCitSVU4gL2Jpbi9iYXNoIC1sIC1jICJydm0gdXNlIC0tZGVmYXVsdCBydWJ5LTIuMSIKK1JVTiAvYmluL2Jhc2ggLWwgLWMgImVjaG8gJ2dlbTogLS1uby1yaSAtLW5vLXJkb2MnID4gfi8uZ2VtcmMiCitSVU4gL2Jpbi9iYXNoIC1sIC1jICJlY2hvICdleHBvcnQgUEFUSD0vdXNyL2xvY2FsL3J2bS9iaW46JFBBVEgnID4+IH4vLmJhc2hyYyIKK1JVTiAvYmluL2Jhc2ggLWwgLWMgImVjaG8gJ3J2bSAtLWRlZmF1bHQgdXNlIHJ1YnktMi4xJyA+PiB+Ly5iYXNocmMiCitSVU4gL2Jpbi9iYXNoIC1sIC1jICJnZW0gaW5zdGFsbCBidW5kbGVyIC0tbm8tcmkgLS1uby1yZG9jIgorCisjIFByZXBhcmUgY2NhY2hlCitSVU4gbG4gLXMgL3Vzci9iaW4vY2NhY2hlIC91c3IvbG9jYWwvYmluL2djYworUlVOIGxuIC1zIC91c3IvYmluL2NjYWNoZSAvdXNyL2xvY2FsL2Jpbi9nKysKK1JVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vY2MKK1JVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vYysrCitSVU4gbG4gLXMgL3Vzci9iaW4vY2NhY2hlIC91c3IvbG9jYWwvYmluL2NsYW5nCitSVU4gbG4gLXMgL3Vzci9iaW4vY2NhY2hlIC91c3IvbG9jYWwvYmluL2NsYW5nKysKKworCitSVU4gbWtkaXIgL3Zhci9sb2NhbC9qZW5raW5zCisKKyMgcm9ubjogYSBydWJ5IHRvb2wgdXNlZCB0byBjb252ZXJ0IG1hcmtkb3duIHRvIG1hbiBwYWdlcywgdXNlZCBkdXJpbmcgdGhlCisjIGluc3RhbGwgb2YgUHJvdG9idWYgZXh0ZW5zaW9ucworIworIyByYWtlOiBhIHJ1YnkgdmVyc2lvbiBvZiBtYWtlIHVzZWQgdG8gYnVpbGQgdGhlIFBIUCBQcm90b2J1ZiBleHRlbnNpb24KK1JVTiAvYmluL2Jhc2ggLWwgLWMgInJ2bSBhbGwgZG8gZ2VtIGluc3RhbGwgcm9ubiByYWtlIgorCisjIEluc3RhbGwgY29tcG9zZXIKK1JVTiBjdXJsIC1zUyBodHRwczovL2dldGNvbXBvc2VyLm9yZy9pbnN0YWxsZXIgfCBwaHAKK1JVTiBtdiBjb21wb3Nlci5waGFyIC91c3IvbG9jYWwvYmluL2NvbXBvc2VyCisKKyMgRG93bmxvYWQgdGhlIHBhdGNoZWQgUEhQIHByb3RvYnVmIHNvIHRoYXQgUEhQIGdSUEMgY2xpZW50cyBjYW4gYmUgZ2VuZXJhdGVkCisjIGZyb20gcHJvdG8zIHNjaGVtYXMuCitSVU4gZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFubGV5LWNoZXVuZy9Qcm90b2J1Zi1QSFAuZ2l0IC92YXIvbG9jYWwvZ2l0L3Byb3RvYnVmLXBocAorCitSVU4gL2Jpbi9iYXNoIC1sIC1jICJydm0gdXNlIHJ1YnktMi4xIFwKKyAgJiYgY2QgL3Zhci9sb2NhbC9naXQvcHJvdG9idWYtcGhwIFwKKyAgJiYgcnZtIGFsbCBkbyByYWtlIHBlYXI6cGFja2FnZSB2ZXJzaW9uPTEuMCBcCisgICYmIHBlYXIgaW5zdGFsbCBQcm90b2J1Zi0xLjAudGd6IgorCisjIERlZmluZSB0aGUgZGVmYXVsdCBjb21tYW5kLgorQ01EIFsiYmFzaCJdCisKZGlmZiAtLWdpdCBhL3NyYy9ydWJ5L3Rvb2xzL2Jpbi9ncnBjX3Rvb2xzX3J1YnlfcHJvdG9jLnJiIGIvdG9vbHMvZG9ja2VyZmlsZS9pbnRlcm9wdGVzdC9ncnBjX2ludGVyb3BfcGhwNy9idWlsZF9pbnRlcm9wLnNoCnNpbWlsYXJpdHkgaW5kZXggNzElCmNvcHkgZnJvbSBzcmMvcnVieS90b29scy9iaW4vZ3JwY190b29sc19ydWJ5X3Byb3RvYy5yYgpjb3B5IHRvIHRvb2xzL2RvY2tlcmZpbGUvaW50ZXJvcHRlc3QvZ3JwY19pbnRlcm9wX3BocDcvYnVpbGRfaW50ZXJvcC5zaAppbmRleCAzYTJhNWI4Li4yNjFkZGVkIDEwMDc1NQotLS0gYS9zcmMvcnVieS90b29scy9iaW4vZ3JwY190b29sc19ydWJ5X3Byb3RvYy5yYgorKysgYi90b29scy9kb2NrZXJmaWxlL2ludGVyb3B0ZXN0L2dycGNfaW50ZXJvcF9waHA3L2J1aWxkX2ludGVyb3Auc2gKQEAgLTEsNCArMSw0IEBACi0jIS91c3IvYmluL2VudiBydWJ5CisjIS9iaW4vYmFzaAogIyBDb3B5cmlnaHQgMjAxNiwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKQEAgLTI3LDE1ICsyNywyNiBAQAogIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBCdWlsZHMgUEhQIGludGVyb3Agc2VydmVyIGFuZCBjbGllbnQgaW4gYSBiYXNlIGltYWdlLgorc2V0IC1leAogCi1yZXF1aXJlICdyYmNvbmZpZycKK21rZGlyIC1wIC92YXIvbG9jYWwvZ2l0CitnaXQgY2xvbmUgLS1yZWN1cnNpdmUgL3Zhci9sb2NhbC9qZW5raW5zL2dycGMgL3Zhci9sb2NhbC9naXQvZ3JwYwogCi1yZXF1aXJlX3JlbGF0aXZlICcuLi9vc19jaGVjaycKKyMgY29weSBzZXJ2aWNlIGFjY291bnQga2V5cyBpZiBhdmFpbGFibGUKK2NwIC1yIC92YXIvbG9jYWwvamVua2lucy9zZXJ2aWNlX2FjY291bnQgJEhPTUUgfHwgdHJ1ZQogCi1wcm90b2NfbmFtZSA9ICdwcm90b2MnICsgUmJDb25maWc6OkNPTkZJR1snRVhFRVhUJ10KK2NkIC92YXIvbG9jYWwvZ2l0L2dycGMKK3J2bSAtLWRlZmF1bHQgdXNlIHJ1YnktMi4xCiAKLXByb3RvY19wYXRoID0gRmlsZS5qb2luKEZpbGUuZGlybmFtZShfX0ZJTEVfXyksCi0gICAgICAgICAgICAgICAgICAgICAgICBSYkNvbmZpZzo6Q09ORklHWydob3N0X2NwdSddICsgJy0nICsgT1Mub3NfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvY19uYW1lKQorIyBnUlBDIGNvcmUgYW5kIHByb3RvYnVmIG5lZWQgdG8gYmUgaW5zdGFsbGVkCittYWtlIGluc3RhbGwKIAotZXhlYyhbIHByb3RvY19wYXRoLCBwcm90b2NfcGF0aCBdLCAqQVJHVikKKyhjZCBzcmMvcGhwL2V4dC9ncnBjICYmIHBocGl6ZSAmJiAuL2NvbmZpZ3VyZSAmJiBtYWtlKQorCisoY2QgdGhpcmRfcGFydHkvcHJvdG9idWYgJiYgbWFrZSBpbnN0YWxsKQorCisoY2Qgc3JjL3BocCAmJiBjb21wb3NlciBpbnN0YWxsKQorCisoY2Qgc3JjL3BocCAmJiBwcm90b2MtZ2VuLXBocCAtaSB0ZXN0cy9pbnRlcm9wLyAtbyB0ZXN0cy9pbnRlcm9wLyB0ZXN0cy9pbnRlcm9wL3Rlc3QucHJvdG8pCmRpZmYgLS1naXQgYS90b29scy9kb2NrZXJmaWxlL3N0cmVzc190ZXN0L2dycGNfaW50ZXJvcF9zdHJlc3NfcGhwL0RvY2tlcmZpbGUgYi90b29scy9kb2NrZXJmaWxlL3N0cmVzc190ZXN0L2dycGNfaW50ZXJvcF9zdHJlc3NfcGhwL0RvY2tlcmZpbGUKaW5kZXggYmJiZGQ0YS4uMDcxNmJlNSAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS9zdHJlc3NfdGVzdC9ncnBjX2ludGVyb3Bfc3RyZXNzX3BocC9Eb2NrZXJmaWxlCisrKyBiL3Rvb2xzL2RvY2tlcmZpbGUvc3RyZXNzX3Rlc3QvZ3JwY19pbnRlcm9wX3N0cmVzc19waHAvRG9ja2VyZmlsZQpAQCAtMTAzLDEyICsxMDMsNiBAQAogCiAjIEluc3RhbGwgZGVwZW5kZW5jaWVzCiAKLVJVTiAvYmluL2Jhc2ggLWwgLWMgImVjaG8gJ2RlYiBodHRwOi8vcGFja2FnZXMuZG90ZGViLm9yZyB3aGVlenktcGhwNTUgYWxsJyBcCi0gICAgPj4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvZG90ZGViLmxpc3QiCi1SVU4gL2Jpbi9iYXNoIC1sIC1jICJlY2hvICdkZWItc3JjIGh0dHA6Ly9wYWNrYWdlcy5kb3RkZWIub3JnIHdoZWV6eS1waHA1NSBhbGwnIFwKLSAgICA+PiAvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9kb3RkZWIubGlzdCIKLVJVTiB3Z2V0IGh0dHA6Ly93d3cuZG90ZGViLm9yZy9kb3RkZWIuZ3BnIC1PLSB8IGFwdC1rZXkgYWRkIC0KLQogUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBcCiAgICAgZ2l0IHBocDUgcGhwNS1kZXYgcGhwdW5pdCB1bnppcAogCkBAIC0xMzMsMTEgKzEyNyw2IEBACiBSVU4gY3VybCAtc1MgaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvaW5zdGFsbGVyIHwgcGhwCiBSVU4gbXYgY29tcG9zZXIucGhhciAvdXNyL2xvY2FsL2Jpbi9jb21wb3NlcgogCi0jIEFzIGFuIGF0dGVtcHQgdG8gd29yayBhcm91bmQgIzQyMTIsIHRyeSB0byBwcmVmZXRjaCBQcm90b2J1Zi1QSFAgZGVwZW5kZW5jeQotIyBpbnRvIGNvbXBvc2VyIGNhY2hlIHRvIHByZXZlbnQgImNvbXBvc2VyIGluc3RhbGwiIGZyb20gY2xvbmluZyBvbiBlYWNoIGJ1aWxkLgotUlVOIGdpdCBjbG9uZSAtLW1pcnJvciBodHRwczovL2dpdGh1Yi5jb20vc3RhbmxleS1jaGV1bmcvUHJvdG9idWYtUEhQLmdpdCBcCi0gIC9yb290Ly5jb21wb3Nlci9jYWNoZS92Y3MvZ2l0LWdpdGh1Yi5jb20tc3RhbmxleS1jaGV1bmctUHJvdG9idWYtUEhQLmdpdC8KLQogIyBEb3dubG9hZCB0aGUgcGF0Y2hlZCBQSFAgcHJvdG9idWYgc28gdGhhdCBQSFAgZ1JQQyBjbGllbnRzIGNhbiBiZSBnZW5lcmF0ZWQKICMgZnJvbSBwcm90bzMgc2NoZW1hcy4KIFJVTiBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N0YW5sZXktY2hldW5nL1Byb3RvYnVmLVBIUC5naXQgL3Zhci9sb2NhbC9naXQvcHJvdG9idWYtcGhwCmRpZmYgLS1naXQgYS90b29scy9kb2NrZXJmaWxlL3Rlc3QvbXVsdGlsYW5nX2plc3NpZV94NjQvRG9ja2VyZmlsZSBiL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9tdWx0aWxhbmdfamVzc2llX3g2NC9Eb2NrZXJmaWxlCmluZGV4IDkyYzg0MzYuLjEzZjdjMTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9tdWx0aWxhbmdfamVzc2llX3g2NC9Eb2NrZXJmaWxlCisrKyBiL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9tdWx0aWxhbmdfamVzc2llX3g2NC9Eb2NrZXJmaWxlCkBAIC0xMDAsMTIgKzEwMCw2IEBACiAKICMgSW5zdGFsbCBkZXBlbmRlbmNpZXMKIAotUlVOIC9iaW4vYmFzaCAtbCAtYyAiZWNobyAnZGViIGh0dHA6Ly9wYWNrYWdlcy5kb3RkZWIub3JnIHdoZWV6eS1waHA1NSBhbGwnIFwKLSAgICA+PiAvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9kb3RkZWIubGlzdCIKLVJVTiAvYmluL2Jhc2ggLWwgLWMgImVjaG8gJ2RlYi1zcmMgaHR0cDovL3BhY2thZ2VzLmRvdGRlYi5vcmcgd2hlZXp5LXBocDU1IGFsbCcgXAotICAgID4+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL2RvdGRlYi5saXN0IgotUlVOIHdnZXQgaHR0cDovL3d3dy5kb3RkZWIub3JnL2RvdGRlYi5ncGcgLU8tIHwgYXB0LWtleSBhZGQgLQotCiBSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC15IFwKICAgICBnaXQgcGhwNSBwaHA1LWRldiBwaHB1bml0IHVuemlwCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9waHA3X2plc3NpZV94NjQvRG9ja2VyZmlsZSBiL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9waHA3X2plc3NpZV94NjQvRG9ja2VyZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjEzMzg5Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS90ZXN0L3BocDdfamVzc2llX3g2NC9Eb2NrZXJmaWxlCkBAIC0wLDAgKzEsMTA1IEBACisjIENvcHlyaWdodCAyMDE2LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworRlJPTSBkZWJpYW46amVzc2llCisKKyM9PT09PT09PT09PT09PT09PQorIyBQSFA3IGRlcGVuZGVuY2llcworCisjIEluc3RhbGwgR2l0IGFuZCBiYXNpYyBwYWNrYWdlcy4KK1JVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgXAorICBhdXRvY29uZiBcCisgIGF1dG9tYWtlIFwKKyAgYnVpbGQtZXNzZW50aWFsIFwKKyAgY2NhY2hlIFwKKyAgY3VybCBcCisgIGdpdCBcCisgIGxpYmN1cmw0LW9wZW5zc2wtZGV2IFwKKyAgbGliZ21wLWRldiBcCisgIGxpYmdtcDMtZGV2IFwKKyAgbGlic3NsLWRldiBcCisgIGxpYnRvb2wgXAorICBsaWJ4bWwyLWRldiBcCisgIHBrZy1jb25maWcgXAorICByZTJjIFwKKyAgdGltZSBcCisgIHVuemlwIFwKKyAgd2dldCBcCisgIHppcCAmJiBhcHQtZ2V0IGNsZWFuCisKKyMgSW5zdGFsbCBvdGhlciBkZXBlbmRlbmNpZXMKK1JVTiBsbiAtc2YgL3Vzci9pbmNsdWRlL3g4Nl82NC1saW51eC1nbnUvZ21wLmggL3Vzci9pbmNsdWRlL2dtcC5oCitSVU4gd2dldCBodHRwOi8vZnRwLmdudS5vcmcvZ251L2Jpc29uL2Jpc29uLTIuNi40LnRhci5neiAtTyAvdmFyL2xvY2FsL2Jpc29uLTIuNi40LnRhci5negorUlVOIGNkIC92YXIvbG9jYWwgXAorICAmJiB0YXIgLXp4dmYgYmlzb24tMi42LjQudGFyLmd6IFwKKyAgJiYgY2QgL3Zhci9sb2NhbC9iaXNvbi0yLjYuNCBcCisgICYmIC4vY29uZmlndXJlIFwKKyAgJiYgbWFrZSBcCisgICYmIG1ha2UgaW5zdGFsbAorCisjIENvbXBpbGUgUEhQNyBmcm9tIHNvdXJjZQorUlVOIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMgL3Zhci9sb2NhbC9naXQvcGhwLXNyYworUlVOIGNkIC92YXIvbG9jYWwvZ2l0L3BocC1zcmMgXAorICAmJiBnaXQgY2hlY2tvdXQgUEhQLTcuMC45IFwKKyAgJiYgLi9idWlsZGNvbmYgLS1mb3JjZSBcCisgICYmIC4vY29uZmlndXJlIFwKKyAgLS13aXRoLWdtcCBcCisgIC0td2l0aC1vcGVuc3NsIFwKKyAgLS13aXRoLXpsaWIgXAorICAmJiBtYWtlIFwKKyAgJiYgbWFrZSBpbnN0YWxsCisKKyM9PT09PT09PT09PT09PT09PT09PQorIyBQeXRob24gZGVwZW5kZW5jaWVzCisKKyMgSW5zdGFsbCBkZXBlbmRlbmNpZXMKKworUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBcCisgICAgcHl0aG9uLWFsbC1kZXYgXAorICAgIHB5dGhvbjMtYWxsLWRldiBcCisgICAgcHl0aG9uLXBpcAorCisjIEluc3RhbGwgUHl0aG9uIHBhY2thZ2VzIGZyb20gUHlQSQorUlVOIHBpcCBpbnN0YWxsIHBpcCAtLXVwZ3JhZGUKK1JVTiBwaXAgaW5zdGFsbCB2aXJ0dWFsZW52CitSVU4gcGlwIGluc3RhbGwgZnV0dXJlcz09Mi4yLjAgZW51bTM0PT0xLjAuNCBwcm90b2J1Zj09My4wLjBhMiBzaXg9PTEuMTAuMAorCisjIFByZXBhcmUgY2NhY2hlCitSVU4gbG4gLXMgL3Vzci9iaW4vY2NhY2hlIC91c3IvbG9jYWwvYmluL2djYworUlVOIGxuIC1zIC91c3IvYmluL2NjYWNoZSAvdXNyL2xvY2FsL2Jpbi9nKysKK1JVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vY2MKK1JVTiBsbiAtcyAvdXNyL2Jpbi9jY2FjaGUgL3Vzci9sb2NhbC9iaW4vYysrCitSVU4gbG4gLXMgL3Vzci9iaW4vY2NhY2hlIC91c3IvbG9jYWwvYmluL2NsYW5nCitSVU4gbG4gLXMgL3Vzci9iaW4vY2NhY2hlIC91c3IvbG9jYWwvYmluL2NsYW5nKysKKworCitSVU4gbWtkaXIgL3Zhci9sb2NhbC9qZW5raW5zCisKKyMgRGVmaW5lIHRoZSBkZWZhdWx0IGNvbW1hbmQuCitDTUQgWyJiYXNoIl0KZGlmZiAtLWdpdCBhL3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9waHBfamVzc2llX3g2NC9Eb2NrZXJmaWxlIGIvdG9vbHMvZG9ja2VyZmlsZS90ZXN0L3BocF9qZXNzaWVfeDY0L0RvY2tlcmZpbGUKaW5kZXggMmVmNmUxZC4uMTdlYTM2YiAxMDA2NDQKLS0tIGEvdG9vbHMvZG9ja2VyZmlsZS90ZXN0L3BocF9qZXNzaWVfeDY0L0RvY2tlcmZpbGUKKysrIGIvdG9vbHMvZG9ja2VyZmlsZS90ZXN0L3BocF9qZXNzaWVfeDY0L0RvY2tlcmZpbGUKQEAgLTgzLDEyICs4Myw2IEBACiAKICMgSW5zdGFsbCBkZXBlbmRlbmNpZXMKIAotUlVOIC9iaW4vYmFzaCAtbCAtYyAiZWNobyAnZGViIGh0dHA6Ly9wYWNrYWdlcy5kb3RkZWIub3JnIHdoZWV6eS1waHA1NSBhbGwnIFwKLSAgICA+PiAvZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9kb3RkZWIubGlzdCIKLVJVTiAvYmluL2Jhc2ggLWwgLWMgImVjaG8gJ2RlYi1zcmMgaHR0cDovL3BhY2thZ2VzLmRvdGRlYi5vcmcgd2hlZXp5LXBocDU1IGFsbCcgXAotICAgID4+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL2RvdGRlYi5saXN0IgotUlVOIHdnZXQgaHR0cDovL3d3dy5kb3RkZWIub3JnL2RvdGRlYi5ncGcgLU8tIHwgYXB0LWtleSBhZGQgLQotCiBSVU4gYXB0LWdldCB1cGRhdGUgJiYgYXB0LWdldCBpbnN0YWxsIC15IFwKICAgICBnaXQgcGhwNSBwaHA1LWRldiBwaHB1bml0IHVuemlwCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuY29yZS5pbnRlcm5hbCBiL3Rvb2xzL2RveHlnZW4vRG94eWZpbGUuY29yZS5pbnRlcm5hbAppbmRleCA2MmNmNWNjLi5lMDMyODViIDEwMDY0NAotLS0gYS90b29scy9kb3h5Z2VuL0RveHlmaWxlLmNvcmUuaW50ZXJuYWwKKysrIGIvdG9vbHMvZG94eWdlbi9Eb3h5ZmlsZS5jb3JlLmludGVybmFsCkBAIC05MzEsNiArOTMxLDcgQEAKIHNyYy9jb3JlL2V4dC9jbGllbnRfY29uZmlnL3N1YmNoYW5uZWxfY2FsbF9ob2xkZXIuaCBcCiBzcmMvY29yZS9leHQvY2xpZW50X2NvbmZpZy9zdWJjaGFubmVsX2luZGV4LmggXAogc3JjL2NvcmUvZXh0L2NsaWVudF9jb25maWcvdXJpX3BhcnNlci5oIFwKK3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5oIFwKIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmggXAogc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmggXAogdGhpcmRfcGFydHkvbmFub3BiL3BiLmggXApAQCAtOTQwLDExICs5NDEsMTMgQEAKIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZy5oIFwKIHNyYy9jb3JlL2V4dC9sb2FkX3JlcG9ydGluZy9sb2FkX3JlcG9ydGluZ19maWx0ZXIuaCBcCiBzcmMvY29yZS9leHQvY2Vuc3VzL2FnZ3JlZ2F0aW9uLmggXAorc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX3JwY19zdGF0cy5oIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19maWx0ZXIuaCBcCiBzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuaCBcCitzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmggXAogc3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmggXAogc3JjL2NvcmUvbGliL3N1cmZhY2UvaW5pdC5jIFwKIHNyYy9jb3JlL2xpYi9jaGFubmVsL2NoYW5uZWxfYXJncy5jIFwKQEAgLTExMTEsNiArMTExNCw3IEBACiBzcmMvY29yZS9leHQvdHJhbnNwb3J0L2NodHRwMi9zZXJ2ZXIvaW5zZWN1cmUvc2VydmVyX2NodHRwMl9wb3NpeC5jIFwKIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZS5jIFwKIHNyYy9jb3JlL2V4dC90cmFuc3BvcnQvY2h0dHAyL2NsaWVudC9pbnNlY3VyZS9jaGFubmVsX2NyZWF0ZV9wb3NpeC5jIFwKK3NyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jIFwKIHNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2xvYWRfYmFsYW5jZXJfYXBpLmMgXAogc3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmMgXAogdGhpcmRfcGFydHkvbmFub3BiL3BiX2NvbW1vbi5jIFwKQEAgLTExMjIsNiArMTEyNiw3IEBACiBzcmMvY29yZS9leHQvcmVzb2x2ZXIvc29ja2FkZHIvc29ja2FkZHJfcmVzb2x2ZXIuYyBcCiBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmcuYyBcCiBzcmMvY29yZS9leHQvbG9hZF9yZXBvcnRpbmcvbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMgXAorc3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5jIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvY29udGV4dC5jIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5jIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvZ3JwY19jb250ZXh0LmMgXApAQCAtMTEzMSw2ICsxMTM2LDcgQEAKIHNyYy9jb3JlL2V4dC9jZW5zdXMvbWxvZy5jIFwKIHNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMgXAogc3JjL2NvcmUvZXh0L2NlbnN1cy9wbGFjZWhvbGRlcnMuYyBcCitzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmMgXAogc3JjL2NvcmUvZXh0L2NlbnN1cy90cmFjaW5nLmMgXAogc3JjL2NvcmUvcGx1Z2luX3JlZ2lzdHJ5L2dycGNfcGx1Z2luX3JlZ2lzdHJ5LmMgXAogaW5jbHVkZS9ncnBjL3N1cHBvcnQvYWxsb2MuaCBcCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvYXJ0aWZhY3RfdGFyZ2V0cy5weSBiL3Rvb2xzL3J1bl90ZXN0cy9hcnRpZmFjdF90YXJnZXRzLnB5CmluZGV4IGU5MjY3YmUuLjg1NTBlZTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3J1bl90ZXN0cy9hcnRpZmFjdF90YXJnZXRzLnB5CisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9hcnRpZmFjdF90YXJnZXRzLnB5CkBAIC0zMCwxMSArMzAsMTQgQEAKIAogIiIiRGVmaW5pdGlvbiBvZiB0YXJnZXRzIHRvIGJ1aWxkIGFydGlmYWN0cy4iIiIKIAoraW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzeXMKKwogaW1wb3J0IGpvYnNldAogCiAKIGRlZiBjcmVhdGVfZG9ja2VyX2pvYnNwZWMobmFtZSwgZG9ja2VyZmlsZV9kaXIsIHNoZWxsX2NvbW1hbmQsIGVudmlyb249e30sCi0gICAgICAgICAgICAgICAgICAgZmxha2VfcmV0cmllcz0wLCB0aW1lb3V0X3JldHJpZXM9MCk6CisgICAgICAgICAgICAgICAgICAgZmxha2VfcmV0cmllcz0wLCB0aW1lb3V0X3JldHJpZXM9MCwgdGltZW91dF9zZWNvbmRzPTMwKjYwKToKICAgIiIiQ3JlYXRlcyBqb2JzcGVjIGZvciBhIHRhc2sgcnVubmluZyB1bmRlciBkb2NrZXIuIiIiCiAgIGVudmlyb24gPSBlbnZpcm9uLmNvcHkoKQogICBlbnZpcm9uWydSVU5fQ09NTUFORCddID0gc2hlbGxfY29tbWFuZApAQCAtNDksMjAgKzUyLDIwIEBACiAgICAgICAgICAgY21kbGluZT1bJ3Rvb2xzL3J1bl90ZXN0cy9kb2NrZXJpemUvYnVpbGRfYW5kX3J1bl9kb2NrZXIuc2gnXSArIGRvY2tlcl9hcmdzLAogICAgICAgICAgIGVudmlyb249ZG9ja2VyX2VudiwKICAgICAgICAgICBzaG9ydG5hbWU9J2J1aWxkX2FydGlmYWN0LiVzJyAlIChuYW1lKSwKLSAgICAgICAgICB0aW1lb3V0X3NlY29uZHM9MzAqNjAsCisgICAgICAgICAgdGltZW91dF9zZWNvbmRzPXRpbWVvdXRfc2Vjb25kcywKICAgICAgICAgICBmbGFrZV9yZXRyaWVzPWZsYWtlX3JldHJpZXMsCiAgICAgICAgICAgdGltZW91dF9yZXRyaWVzPXRpbWVvdXRfcmV0cmllcykKICAgcmV0dXJuIGpvYnNwZWMKIAogCiBkZWYgY3JlYXRlX2pvYnNwZWMobmFtZSwgY21kbGluZSwgZW52aXJvbj1Ob25lLCBzaGVsbD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICBmbGFrZV9yZXRyaWVzPTAsIHRpbWVvdXRfcmV0cmllcz0wKToKKyAgICAgICAgICAgICAgICAgICBmbGFrZV9yZXRyaWVzPTAsIHRpbWVvdXRfcmV0cmllcz0wLCB0aW1lb3V0X3NlY29uZHM9MzAqNjApOgogICAiIiJDcmVhdGVzIGpvYnNwZWMuIiIiCiAgIGpvYnNwZWMgPSBqb2JzZXQuSm9iU3BlYygKICAgICAgICAgICBjbWRsaW5lPWNtZGxpbmUsCiAgICAgICAgICAgZW52aXJvbj1lbnZpcm9uLAogICAgICAgICAgIHNob3J0bmFtZT0nYnVpbGRfYXJ0aWZhY3QuJXMnICUgKG5hbWUpLAotICAgICAgICAgIHRpbWVvdXRfc2Vjb25kcz0zMCo2MCwKKyAgICAgICAgICB0aW1lb3V0X3NlY29uZHM9dGltZW91dF9zZWNvbmRzLAogICAgICAgICAgIGZsYWtlX3JldHJpZXM9Zmxha2VfcmV0cmllcywKICAgICAgICAgICB0aW1lb3V0X3JldHJpZXM9dGltZW91dF9yZXRyaWVzLAogICAgICAgICAgIHNoZWxsPXNoZWxsKQpAQCAtNzYsMjcgKzc5LDMwIEBACiAgICd4NjQnOiAnLW02NCcKIH0KIAotcHl0aG9uX3ZlcnNpb25fYXJjaF9tYXAgPSB7Ci0gICd4ODYnOiAnUHl0aG9uMjdfMzJiaXRzJywKLSAgJ3g2NCc6ICdQeXRob24yNycKK3B5dGhvbl93aW5kb3dzX3ZlcnNpb25fYXJjaF9tYXAgPSB7CisgICgneDg2JywgJzIuNycpOiAnUHl0aG9uMjdfMzJiaXRzJywKKyAgKCd4NjQnLCAnMi43Jyk6ICdQeXRob24yNycsCisgICgneDg2JywgJzMuNCcpOiAnUHl0aG9uMzRfMzJiaXRzJywKKyAgKCd4NjQnLCAnMy40Jyk6ICdQeXRob24zNCcsCiB9CiAKIGNsYXNzIFB5dGhvbkFydGlmYWN0OgogICAiIiJCdWlsZHMgUHl0aG9uIGFydGlmYWN0cy4iIiIKIAotICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGFyY2gsIG1hbnlsaW51eF9idWlsZD1Ob25lKToKKyAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBhcmNoLCBweXRob25fdmVyc2lvbiwgbWFueWxpbnV4X2J1aWxkPU5vbmUpOgogICAgIGlmIG1hbnlsaW51eF9idWlsZDoKLSAgICAgIHNlbGYubmFtZSA9ICdweXRob25fJXNfJXNfJXMnICUgKHBsYXRmb3JtLCBhcmNoLCBtYW55bGludXhfYnVpbGQpCisgICAgICBzZWxmLm5hbWUgPSAncHl0aG9uJXNfJXNfJXNfJXMnICUgKHB5dGhvbl92ZXJzaW9uLCBwbGF0Zm9ybSwgYXJjaCwgbWFueWxpbnV4X2J1aWxkKQogICAgIGVsc2U6Ci0gICAgICBzZWxmLm5hbWUgPSAncHl0aG9uXyVzXyVzJyAlIChwbGF0Zm9ybSwgYXJjaCkKKyAgICAgIHNlbGYubmFtZSA9ICdweXRob24lc18lc18lcycgJSAocHl0aG9uX3ZlcnNpb24sIHBsYXRmb3JtLCBhcmNoKQogICAgIHNlbGYucGxhdGZvcm0gPSBwbGF0Zm9ybQogICAgIHNlbGYuYXJjaCA9IGFyY2gKLSAgICBzZWxmLmxhYmVscyA9IFsnYXJ0aWZhY3QnLCAncHl0aG9uJywgcGxhdGZvcm0sIGFyY2hdCi0gICAgc2VsZi5weXRob25fdmVyc2lvbiA9IHB5dGhvbl92ZXJzaW9uX2FyY2hfbWFwW2FyY2hdCisgICAgc2VsZi5sYWJlbHMgPSBbJ2FydGlmYWN0JywgJ3B5dGhvbicsIHB5dGhvbl92ZXJzaW9uLCBwbGF0Zm9ybSwgYXJjaF0KKyAgICBzZWxmLnB5dGhvbl92ZXJzaW9uID0gcHl0aG9uX3ZlcnNpb24KKyAgICBzZWxmLnB5dGhvbl93aW5kb3dzX3ByZWZpeCA9IHB5dGhvbl93aW5kb3dzX3ZlcnNpb25fYXJjaF9tYXBbYXJjaCwgcHl0aG9uX3ZlcnNpb25dCiAgICAgc2VsZi5tYW55bGludXhfYnVpbGQgPSBtYW55bGludXhfYnVpbGQKIAogICBkZWYgcHJlX2J1aWxkX2pvYnNwZWNzKHNlbGYpOgotICAgICAgcmV0dXJuIFtdCisgICAgcmV0dXJuIFtdCiAKICAgZGVmIGJ1aWxkX2pvYnNwZWMoc2VsZik6CiAgICAgZW52aXJvbiA9IHt9CkBAIC0xMDcsMjYgKzExMywyNyBAQAogICAgICAgIyBzcGVjaWFsIHBsYWNlcy4uLgogICAgICAgZW52aXJvblsnUFlUSE9OJ10gPSAnL29wdC9weXRob24ve30vYmluL3B5dGhvbicuZm9ybWF0KHNlbGYubWFueWxpbnV4X2J1aWxkKQogICAgICAgZW52aXJvblsnUElQJ10gPSAnL29wdC9weXRob24ve30vYmluL3BpcCcuZm9ybWF0KHNlbGYubWFueWxpbnV4X2J1aWxkKQotICAgICAgIyBPdXIgZG9ja2VyIGltYWdlIGhhcyBhbGwgdGhlIHByZXJlcXVpc2l0ZXMgcGlwLWluc3RhbGxlZCBhbHJlYWR5LgotICAgICAgZW52aXJvblsnU0tJUF9QSVBfSU5TVEFMTCddID0gJzEnCiAgICAgICAjIFBsYXRmb3JtIGF1dG9kZXRlY3Rpb24gZm9yIHRoZSBtYW55bGludXgxIGltYWdlIGJyZWFrcyBzbyB3ZSBzZXQgdGhlCiAgICAgICAjIGRlZmluZXMgb3Vyc2VsdmVzLgogICAgICAgIyBUT0RPKGF0YXNoKSBnZXQgYmV0dGVyIHBsYXRmb3JtLWRldGVjdGlvbiBzdXBwb3J0IGluIGNvcmUgc28gd2UgZG9uJ3QKICAgICAgICMgbmVlZCB0byBkbyB0aGlzIG1hbnVhbGx5Li4uCiAgICAgICBlbnZpcm9uWydDRkxBR1MnXSA9ICctREdQUl9NQU5ZTElOVVgxPTEnCisgICAgICBlbnZpcm9uWydCVUlMRF9IRUFMVEhfQ0hFQ0tJTkcnXSA9ICdUUlVFJworICAgICAgZW52aXJvblsnQlVJTERfTUFOWUxJTlVYX1dIRUVMJ10gPSAnVFJVRScKICAgICAgIHJldHVybiBjcmVhdGVfZG9ja2VyX2pvYnNwZWMoc2VsZi5uYW1lLAogICAgICAgICAgICd0b29scy9kb2NrZXJmaWxlL2dycGNfYXJ0aWZhY3RfcHl0aG9uX21hbnlsaW51eF8lcycgJSBzZWxmLmFyY2gsCiAgICAgICAgICAgJ3Rvb2xzL3J1bl90ZXN0cy9idWlsZF9hcnRpZmFjdF9weXRob24uc2gnLAotICAgICAgICAgIGVudmlyb249ZW52aXJvbikKKyAgICAgICAgICBlbnZpcm9uPWVudmlyb24sCisgICAgICAgICAgdGltZW91dF9zZWNvbmRzPTYwKjYwKQogICAgIGVsaWYgc2VsZi5wbGF0Zm9ybSA9PSAnd2luZG93cyc6CiAgICAgICByZXR1cm4gY3JlYXRlX2pvYnNwZWMoc2VsZi5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsndG9vbHNcXHJ1bl90ZXN0c1xcYnVpbGRfYXJ0aWZhY3RfcHl0aG9uLmJhdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHl0aG9uX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHl0aG9uX3dpbmRvd3NfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMzInIGlmIHNlbGYuYXJjaCA9PSAneDg2JyBlbHNlICc2NCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUpCiAgICAgZWxzZToKLSAgICAgIGVudmlyb25bJ1NLSVBfUElQX0lOU1RBTEwnXSA9ICdUUlVFJworICAgICAgZW52aXJvblsnUFlUSE9OJ10gPSAncHl0aG9ue30nLmZvcm1hdChzZWxmLnB5dGhvbl92ZXJzaW9uKQogICAgICAgcmV0dXJuIGNyZWF0ZV9qb2JzcGVjKHNlbGYubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Rvb2xzL3J1bl90ZXN0cy9idWlsZF9hcnRpZmFjdF9weXRob24uc2gnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9uPWVudmlyb24pCkBAIC0zMjMsMTMgKzMzMCwxOCBAQAogICAgICAgICAgICBmb3IgQ2xzIGluIChDU2hhcnBFeHRBcnRpZmFjdCwgTm9kZUV4dEFydGlmYWN0LCBQcm90b2NBcnRpZmFjdCkKICAgICAgICAgICAgZm9yIHBsYXRmb3JtIGluICgnbGludXgnLCAnbWFjb3MnLCAnd2luZG93cycpCiAgICAgICAgICAgIGZvciBhcmNoIGluICgneDg2JywgJ3g2NCcpXSArCi0gICAgICAgICAgW1B5dGhvbkFydGlmYWN0KCdsaW51eCcsICd4ODYnLCAnY3AyNy1jcDI3bScpLAotICAgICAgICAgICBQeXRob25BcnRpZmFjdCgnbGludXgnLCAneDg2JywgJ2NwMjctY3AyN211JyksCi0gICAgICAgICAgIFB5dGhvbkFydGlmYWN0KCdsaW51eCcsICd4NjQnLCAnY3AyNy1jcDI3bScpLAotICAgICAgICAgICBQeXRob25BcnRpZmFjdCgnbGludXgnLCAneDY0JywgJ2NwMjctY3AyN211JyksCi0gICAgICAgICAgIFB5dGhvbkFydGlmYWN0KCdtYWNvcycsICd4NjQnKSwKLSAgICAgICAgICAgUHl0aG9uQXJ0aWZhY3QoJ3dpbmRvd3MnLCAneDg2JyksCi0gICAgICAgICAgIFB5dGhvbkFydGlmYWN0KCd3aW5kb3dzJywgJ3g2NCcpLAorICAgICAgICAgIFtQeXRob25BcnRpZmFjdCgnbGludXgnLCAneDg2JywgJzIuNycsICdjcDI3LWNwMjdtJyksCisgICAgICAgICAgIFB5dGhvbkFydGlmYWN0KCdsaW51eCcsICd4ODYnLCAnMi43JywgJ2NwMjctY3AyN211JyksCisgICAgICAgICAgIFB5dGhvbkFydGlmYWN0KCdsaW51eCcsICd4NjQnLCAnMi43JywgJ2NwMjctY3AyN20nKSwKKyAgICAgICAgICAgUHl0aG9uQXJ0aWZhY3QoJ2xpbnV4JywgJ3g2NCcsICcyLjcnLCAnY3AyNy1jcDI3bXUnKSwKKyAgICAgICAgICAgUHl0aG9uQXJ0aWZhY3QoJ21hY29zJywgJ3g2NCcsICcyLjcnKSwKKyAgICAgICAgICAgUHl0aG9uQXJ0aWZhY3QoJ3dpbmRvd3MnLCAneDg2JywgJzIuNycpLAorICAgICAgICAgICBQeXRob25BcnRpZmFjdCgnd2luZG93cycsICd4NjQnLCAnMi43JyksCisgICAgICAgICAgIFB5dGhvbkFydGlmYWN0KCdsaW51eCcsICd4ODYnLCAnMy40JywgJ2NwMzQtY3AzNG0nKSwKKyAgICAgICAgICAgUHl0aG9uQXJ0aWZhY3QoJ2xpbnV4JywgJ3g2NCcsICczLjQnLCAnY3AzNC1jcDM0bScpLAorICAgICAgICAgICBQeXRob25BcnRpZmFjdCgnbWFjb3MnLCAneDY0JywgJzMuNCcpLAorICAgICAgICAgICBQeXRob25BcnRpZmFjdCgnd2luZG93cycsICd4ODYnLCAnMy40JyksCisgICAgICAgICAgIFB5dGhvbkFydGlmYWN0KCd3aW5kb3dzJywgJ3g2NCcsICczLjQnKSwKICAgICAgICAgICAgUnVieUFydGlmYWN0KCdsaW51eCcsICd4ODYnKSwKICAgICAgICAgICAgUnVieUFydGlmYWN0KCdsaW51eCcsICd4NjQnKSwKICAgICAgICAgICAgUnVieUFydGlmYWN0KCdtYWNvcycsICd4NjQnKSwKZGlmZiAtLWdpdCBhL3Rvb2xzL3J1bl90ZXN0cy9idWlsZF9hcnRpZmFjdF9weXRob24uYmF0IGIvdG9vbHMvcnVuX3Rlc3RzL2J1aWxkX2FydGlmYWN0X3B5dGhvbi5iYXQKaW5kZXggYTdiMWE1OC4uMDc0YTNjNiAxMDA2NDQKLS0tIGEvdG9vbHMvcnVuX3Rlc3RzL2J1aWxkX2FydGlmYWN0X3B5dGhvbi5iYXQKKysrIGIvdG9vbHMvcnVuX3Rlc3RzL2J1aWxkX2FydGlmYWN0X3B5dGhvbi5iYXQKQEAgLTQyLDExICs0MiwxOSBAQAogCiBAcmVtIEJ1aWxkIGdSUEMgUHl0aG9uIGV4dGVuc2lvbnMKIHB5dGhvbiBzZXR1cC5weSBidWlsZF9leHQgLWMgbWluZ3czMgotcHl0aG9uIHRvb2xzXGRpc3RyaWJccHl0aG9uXGdycGNpb190b29sc1xzZXR1cC5weSBidWlsZF9leHQgLWMgbWluZ3czMgorCitwdXNoZCB0b29sc1xkaXN0cmliXHB5dGhvblxncnBjaW9fdG9vbHMKK3B5dGhvbiBzZXR1cC5weSBidWlsZF9leHQgLWMgbWluZ3czMgorcG9wZAorCiAKIEByZW0gQnVpbGQgZ1JQQyBQeXRob24gZGlzdHJpYnV0aW9ucwogcHl0aG9uIHNldHVwLnB5IGJkaXN0X3doZWVsCi1weXRob24gdG9vbHNcZGlzdHJpYlxweXRob25cZ3JwY2lvX3Rvb2xzXHNldHVwLnB5IGJkaXN0X3doZWVsCisKK3B1c2hkIHRvb2xzXGRpc3RyaWJccHl0aG9uXGdycGNpb190b29scworcHl0aG9uIHNldHVwLnB5IGJkaXN0X3doZWVsCitwb3BkCisKIAogbWtkaXIgYXJ0aWZhY3RzCiB4Y29weSAvWSAvSSAvUyBkaXN0XCogYXJ0aWZhY3RzXCB8fCBnb3RvIDplcnJvcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcnVuX3Rlc3RzL2J1aWxkX2FydGlmYWN0X3B5dGhvbi5zaCBiL3Rvb2xzL3J1bl90ZXN0cy9idWlsZF9hcnRpZmFjdF9weXRob24uc2gKaW5kZXggNTVmOGViNi4uOGY4MzMwZSAxMDA3NTUKLS0tIGEvdG9vbHMvcnVuX3Rlc3RzL2J1aWxkX2FydGlmYWN0X3B5dGhvbi5zaAorKysgYi90b29scy9ydW5fdGVzdHMvYnVpbGRfYXJ0aWZhY3RfcHl0aG9uLnNoCkBAIC0zOSwxNSArMzksNiBAQAogZXhwb3J0IEFVRElUV0hFRUw9JHtBVURJVFdIRUVMOi1hdWRpdHdoZWVsfQogCiAKLWlmIFsgIiRTS0lQX1BJUF9JTlNUQUxMIiA9PSAiIiBdCi10aGVuCi0gICR7UElQfSBpbnN0YWxsIC0tdXBncmFkZSBzaXgKLSAgIyBUaGVyZSdzIGEgYnVnIGluIG5ld2VyIHZlcnNpb25zIG9mIHNldHVwdG9vbHMgKHNlZQotICAjIGh0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvaXNzdWVzLzUwMy9wa2dfcmVzb3VyY2VzX3ZlbmRvcnBhY2thZ2luZ3JlcXVpcmVtZW50c2kpCi0gICR7UElQfSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgJ3NldHVwdG9vbHM9PTE4JwotICAke1BJUH0gaW5zdGFsbCAtcnJlcXVpcmVtZW50cy50eHQKLWZpCi0KICMgQnVpbGQgdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gZmlyc3QgYmVjYXVzZSBNQU5JRkVTVC5pbiBjYW5ub3Qgb3ZlcnJpZGUKICMgZXhjbHVzaW9uIG9mIGJ1aWx0IHNoYXJlZCBvYmplY3RzIGFtb25nIHBhY2thZ2UgcmVzb3VyY2VzIChmb3Igc29tZQogIyBpbmV4cGxpY2FibGUgcmVhc29uKS4KQEAgLTcxLDE1ICs2MiwzMyBAQAogICAke1BZVEhPTn0gdG9vbHMvZGlzdHJpYi9weXRob24vZ3JwY2lvX3Rvb2xzL3NldHVwLnB5IGJkaXN0X3doZWVsCiAKIG1rZGlyIC1wIGFydGlmYWN0cwotaWYgY29tbWFuZCAtdiAke0FVRElUV0hFRUx9CitpZiBbICIkQlVJTERfTUFOWUxJTlVYX1dIRUVMIiAhPSAiIiBdCiB0aGVuCiAgIGZvciB3aGVlbCBpbiBkaXN0Lyoud2hsOyBkbwogICAgICR7QVVESVRXSEVFTH0gcmVwYWlyICR3aGVlbCAtdyBhcnRpZmFjdHMvCisgICAgcm0gJHdoZWVsCiAgIGRvbmUKICAgZm9yIHdoZWVsIGluIHRvb2xzL2Rpc3RyaWIvcHl0aG9uL2dycGNpb190b29scy9kaXN0Lyoud2hsOyBkbwogICAgICR7QVVESVRXSEVFTH0gcmVwYWlyICR3aGVlbCAtdyBhcnRpZmFjdHMvCisgICAgcm0gJHdoZWVsCiAgIGRvbmUKIGZpCiAKKyMgV2UgbmVlZCB0byB1c2UgdGhlIGJ1aWx0IGdycGNpby10b29scy9ncnBjaW8gdG8gY29tcGlsZSB0aGUgaGVhbHRoIHByb3RvCisjIFdoZWVscyBhcmUgbm90IHN1cHBvcnRlZCBieSBzZXR1cF9yZXF1aXJlcy9kZXBlbmRlbmN5X2xpbmtzLCBzbyB3ZQorIyBtYW51YWxseSBpbnN0YWxsIHRoZSBkZXBlbmRlbmN5LiAgTm90ZSB3ZSBzaG91bGQgb25seSBkbyB0aGlzIGlmIHdlCisjIGFyZSBpbiBhIGRvY2tlciBpbWFnZSBvciBpbiBhIHZpcnR1YWxlbnYuCitpZiBbICIkQlVJTERfSEVBTFRIX0NIRUNLSU5HIiAhPSAiIiBdCit0aGVuCisgICR7UElQfSBpbnN0YWxsIC1ycmVxdWlyZW1lbnRzLnR4dAorICAke1BJUH0gaW5zdGFsbCBncnBjaW8gLS1uby1pbmRleCAtLWZpbmQtbGlua3MgImZpbGU6Ly8ke1BXRH0vYXJ0aWZhY3RzLyIKKyAgJHtQSVB9IGluc3RhbGwgZ3JwY2lvLXRvb2xzIC0tbm8taW5kZXggLS1maW5kLWxpbmtzICJmaWxlOi8vJHtQV0R9L2FydGlmYWN0cy8iCisKKyAgIyBCdWlsZCBnUlBDIGhlYWx0aCBjaGVjayBzb3VyY2UgZGlzdHJpYnV0aW9uCisgICR7U0VUQVJDSF9DTUR9ICR7UFlUSE9OfSBzcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvc2V0dXAucHkgXAorICAgICAgcHJlcHJvY2VzcyBidWlsZF9wYWNrYWdlX3Byb3RvcyBzZGlzdAorICBjcCAtciBzcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvZGlzdC8qIGFydGlmYWN0cworZmkKKwogY3AgLXIgZGlzdC8qIGFydGlmYWN0cwogY3AgLXIgdG9vbHMvZGlzdHJpYi9weXRob24vZ3JwY2lvX3Rvb2xzL2Rpc3QvKiBhcnRpZmFjdHMKZGlmZiAtLWdpdCBhL3Rvb2xzL3J1bl90ZXN0cy9idWlsZF9wYWNrYWdlX25vZGUuc2ggYi90b29scy9ydW5fdGVzdHMvYnVpbGRfcGFja2FnZV9ub2RlLnNoCmluZGV4IGZmNGNmZGIuLmVmNGExMGMgMTAwNzU1Ci0tLSBhL3Rvb2xzL3J1bl90ZXN0cy9idWlsZF9wYWNrYWdlX25vZGUuc2gKKysrIGIvdG9vbHMvcnVuX3Rlc3RzL2J1aWxkX3BhY2thZ2Vfbm9kZS5zaApAQCAtNjEsNyArNjEsNyBAQAogd2VsbF9rbm93bl9wcm90b3M9KCBhbnkgYXBpIGNvbXBpbGVyL3BsdWdpbiBkZXNjcmlwdG9yIGR1cmF0aW9uIGVtcHR5IGZpZWxkX21hc2sgc291cmNlX2NvbnRleHQgc3RydWN0IHRpbWVzdGFtcCB0eXBlIHdyYXBwZXJzICkKIAogZm9yIGFyY2ggaW4ge3g4Nix4NjR9OyBkbwotICBjYXNlIGFyY2ggaW4KKyAgY2FzZSAkYXJjaCBpbgogICAgIHg4NikKICAgICAgIG5vZGVfYXJjaD1pYTMyCiAgICAgICA7OwpAQCAtNzAsNyArNzAsNyBAQAogICAgICAgOzsKICAgZXNhYwogICBmb3IgcGxhdCBpbiB7d2luZG93cyxsaW51eCxtYWNvc307IGRvCi0gICAgY2FzZSBwbGF0IGluCisgICAgY2FzZSAkcGxhdCBpbgogICAgICAgd2luZG93cykKICAgICAgICAgbm9kZV9wbGF0PXdpbjMyCiAgICAgICAgIDs7CmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvYnVpbGRfcHl0aG9uLnNoIGIvdG9vbHMvcnVuX3Rlc3RzL2J1aWxkX3B5dGhvbi5zaAppbmRleCA5Y2IzY2IxLi43MjdiMTFlIDEwMDc1NQotLS0gYS90b29scy9ydW5fdGVzdHMvYnVpbGRfcHl0aG9uLnNoCisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9idWlsZF9weXRob24uc2gKQEAgLTE1NSw3ICsxNTUsOSBAQAogICBjZCAkUFdECiB9CiAKLSRWRU5WX1BZVEhPTiAtbSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcGlwIHNldHVwdG9vbHMKKyRWRU5WX1BZVEhPTiAtbSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcGlwCisjIFRPRE8oaHR0cHM6Ly9naXRodWIuY29tL3B5cGEvc2V0dXB0b29scy9pc3N1ZXMvNzA5KSBnZXQgdGhlIGxhdGVzdCBzZXR1cHRvb2xzCiskVkVOVl9QWVRIT04gLW0gcGlwIGluc3RhbGwgc2V0dXB0b29scz09MjUuMS4xCiAkVkVOVl9QWVRIT04gLW0gcGlwIGluc3RhbGwgY3l0aG9uCiBwaXBfaW5zdGFsbF9kaXIgJFJPT1QKICRWRU5WX1BZVEhPTiAkUk9PVC90b29scy9kaXN0cmliL3B5dGhvbi9tYWtlX2dycGNpb190b29scy5weQpAQCAtMTY0LDcgKzE2Niw4IEBACiAjIGV0Yy4uLgogcGlwX2luc3RhbGxfZGlyICRST09UCiAkVkVOVl9QWVRIT04gJFJPT1Qvc3JjL3B5dGhvbi9ncnBjaW9faGVhbHRoX2NoZWNraW5nL3NldHVwLnB5IHByZXByb2Nlc3MKKyRWRU5WX1BZVEhPTiAkUk9PVC9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcvc2V0dXAucHkgYnVpbGRfcGFja2FnZV9wcm90b3MKIHBpcF9pbnN0YWxsX2RpciAkUk9PVC9zcmMvcHl0aG9uL2dycGNpb19oZWFsdGhfY2hlY2tpbmcKICRWRU5WX1BZVEhPTiAkUk9PVC9zcmMvcHl0aG9uL2dycGNpb190ZXN0cy9zZXR1cC5weSBwcmVwcm9jZXNzCi0kVkVOVl9QWVRIT04gJFJPT1Qvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMvc2V0dXAucHkgYnVpbGRfcHJvdG9fbW9kdWxlcworJFZFTlZfUFlUSE9OICRST09UL3NyYy9weXRob24vZ3JwY2lvX3Rlc3RzL3NldHVwLnB5IGJ1aWxkX3BhY2thZ2VfcHJvdG9zCiBwaXBfaW5zdGFsbF9kaXIgJFJPT1Qvc3JjL3B5dGhvbi9ncnBjaW9fdGVzdHMKZGlmZiAtLWdpdCBhL3Rvb2xzL3J1bl90ZXN0cy9wcmVfYnVpbGRfY3NoYXJwLmJhdCBiL3Rvb2xzL3J1bl90ZXN0cy9wcmVfYnVpbGRfY3NoYXJwLmJhdAppbmRleCBlNzEzMWQ1Li41ODBkNTYzIDEwMDY0NAotLS0gYS90b29scy9ydW5fdGVzdHMvcHJlX2J1aWxkX2NzaGFycC5iYXQKKysrIGIvdG9vbHMvcnVuX3Rlc3RzL3ByZV9idWlsZF9jc2hhcnAuYmF0CkBAIC0zOCw4ICszOCw2MSBAQAogc2V0IE5VR0VUPUM6XG51Z2V0XG51Z2V0LmV4ZQogCiBpZiBleGlzdCAlTlVHRVQlICgKKyAgQHJlbSBSZXN0b3JlIEdycGMgcGFja2FnZXMgYnkgcGFja2FnZXMgc2luY2UgTnVnZXQgY2xpZW50IDMuNC40IGRvZXNudCBzdXBwb3J0IHJlc3RvcmUKKyAgQHJlbSBieSBzb2x1dGlvbgorICBAcmVtIE1vdmluZyBpbnRvIGVhY2ggZGlyZWN0b3J5IHRvIGxldCB0aGUgcmVzdG9yZXMgd29yayB3aXRoIGJvdGggbnVnZXQgMy40IGFuZCAyLjgKICAgJU5VR0VUJSByZXN0b3JlIHZzcHJvamVjdHMvZ3JwY19jc2hhcnBfZXh0LnNsbiB8fCBnb3RvIDplcnJvcgotICAlTlVHRVQlIHJlc3RvcmUgc3JjL2NzaGFycC9HcnBjLnNsbiB8fCBnb3RvIDplcnJvcgorCisgIGNkIHNyYy9jc2hhcnAKKworICBjZCBHcnBjLkF1dGggfHwgZ290byA6ZXJyb3IKKyAgJU5VR0VUJSByZXN0b3JlIC1QYWNrYWdlc0RpcmVjdG9yeSAuLi9wYWNrYWdlcyB8fCBnb3RvIDplcnJvcgorICBjZCAuLgorCisgIGNkIEdycGMuQ29yZSB8fCBnb3RvIDplcnJvcgorICAlTlVHRVQlIHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzIHx8IGdvdG8gOmVycm9yCisgIGNkIC4uCisKKyAgY2QgR3JwYy5Db3JlLlRlc3RzIHx8IGdvdG8gOmVycm9yCisgICVOVUdFVCUgcmVzdG9yZSAtUGFja2FnZXNEaXJlY3RvcnkgLi4vcGFja2FnZXMgfHwgZ290byA6ZXJyb3IKKyAgY2QgLi4KKworICBjZCBHcnBjLkV4YW1wbGVzLk1hdGhDbGllbnQgfHwgZ290byA6ZXJyb3IKKyAgJU5VR0VUJSByZXN0b3JlIC1QYWNrYWdlc0RpcmVjdG9yeSAuLi9wYWNrYWdlcyB8fCBnb3RvIDplcnJvcgorICBjZCAuLgorCisgIGNkIEdycGMuRXhhbXBsZXMuTWF0aFNlcnZlciB8fCBnb3RvIDplcnJvcgorICAlTlVHRVQlIHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzIHx8IGdvdG8gOmVycm9yCisgIGNkIC4uCisKKyAgY2QgR3JwYy5FeGFtcGxlcyB8fCBnb3RvIDplcnJvcgorICAlTlVHRVQlIHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzIHx8IGdvdG8gOmVycm9yCisgIGNkIC4uCisKKyAgY2QgR3JwYy5IZWFsdGhDaGVjay5UZXN0cyB8fCBnb3RvIDplcnJvcgorICAlTlVHRVQlIHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzIHx8IGdvdG8gOmVycm9yCisgIGNkIC4uCisKKyAgY2QgR3JwYy5IZWFsdGhDaGVjayB8fCBnb3RvIDplcnJvcgorICAlTlVHRVQlIHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzIHx8IGdvdG8gOmVycm9yCisgIGNkIC4uCisKKyAgY2QgR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuQ2xpZW50IHx8IGdvdG8gOmVycm9yCisgICVOVUdFVCUgcmVzdG9yZSAtUGFja2FnZXNEaXJlY3RvcnkgLi4vcGFja2FnZXMgfHwgZ290byA6ZXJyb3IKKyAgY2QgLi4KKworICBjZCBHcnBjLkludGVncmF0aW9uVGVzdGluZy5RcHNXb3JrZXIgfHwgZ290byA6ZXJyb3IKKyAgJU5VR0VUJSByZXN0b3JlIC1QYWNrYWdlc0RpcmVjdG9yeSAuLi9wYWNrYWdlcyB8fCBnb3RvIDplcnJvcgorICBjZCAuLgorCisgIGNkIEdycGMuSW50ZWdyYXRpb25UZXN0aW5nLlN0cmVzc0NsaWVudCB8fCBnb3RvIDplcnJvcgorICAlTlVHRVQlIHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzIHx8IGdvdG8gOmVycm9yCisgIGNkIC4uCisKKyAgY2QgR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcgfHwgZ290byA6ZXJyb3IKKyAgJU5VR0VUJSByZXN0b3JlIC1QYWNrYWdlc0RpcmVjdG9yeSAuLi9wYWNrYWdlcyB8fCBnb3RvIDplcnJvcgorCisgIGNkIC9kICV+ZHAwXC4uXC4uIHx8IGdvdG8gOmVycm9yCiApCiAKIGVuZGxvY2FsCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvcHJlX2J1aWxkX2NzaGFycC5zaCBiL3Rvb2xzL3J1bl90ZXN0cy9wcmVfYnVpbGRfY3NoYXJwLnNoCmluZGV4IDNmZjFhNGUuLjBmZDNiOTIgMTAwNzU1Ci0tLSBhL3Rvb2xzL3J1bl90ZXN0cy9wcmVfYnVpbGRfY3NoYXJwLnNoCisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9wcmVfYnVpbGRfY3NoYXJwLnNoCkBAIC0zNyw1ICszNyw1NCBAQAogCiBpZiBbIC14ICIkKGNvbW1hbmQgLXYgbnVnZXQpIiBdCiB0aGVuCi0gIG51Z2V0IHJlc3RvcmUgR3JwYy5zbG4KKyAgIyBSZXN0b3JpbmcgTnVnZXQgcGFja2FnZXMgYnkgcGFja2FnZXMgcmF0aGVyIHRoYW4gYnkgc29sdXRpb24gYmVjYXVzZSBvZgorICAjIGluYWJpbGl0eSB0byByZXN0b3JlIGJ5IHNvbHV0aW9uIHdpdGggTnVnZXQgY2xpZW50IDMuNC40CisgICMgTW92aW5nIGludG8gZWFjaCBkaXJlY3RvcnkgdG8gbGV0IHRoZSByZXN0b3JlcyB3b3JrIHdpdGggbnVnZXQgMy40IGFuZCAyLjgKKyAgY2QgR3JwYy5BdXRoCisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5Db3JlLlRlc3RzCisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5Db3JlCisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5FeGFtcGxlcy5NYXRoQ2xpZW50CisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5FeGFtcGxlcy5NYXRoU2VydmVyCisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5FeGFtcGxlcworICBudWdldCByZXN0b3JlIC1QYWNrYWdlc0RpcmVjdG9yeSAuLi9wYWNrYWdlcworICBjZCAuLgorCisgIGNkIEdycGMuSGVhbHRoQ2hlY2suVGVzdHMKKyAgbnVnZXQgcmVzdG9yZSAtUGFja2FnZXNEaXJlY3RvcnkgLi4vcGFja2FnZXMKKyAgY2QgLi4KKworICBjZCBHcnBjLkhlYWx0aENoZWNrCisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuQ2xpZW50CisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuUXBzV29ya2VyCisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcuU3RyZXNzQ2xpZW50CisgIG51Z2V0IHJlc3RvcmUgLVBhY2thZ2VzRGlyZWN0b3J5IC4uL3BhY2thZ2VzCisgIGNkIC4uCisKKyAgY2QgR3JwYy5JbnRlZ3JhdGlvblRlc3RpbmcKKyAgbnVnZXQgcmVzdG9yZSAtUGFja2FnZXNEaXJlY3RvcnkgLi4vcGFja2FnZXMKKyAgY2QgLi4KIGZpCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvcnVuX2ludGVyb3BfdGVzdHMucHkgYi90b29scy9ydW5fdGVzdHMvcnVuX2ludGVyb3BfdGVzdHMucHkKaW5kZXggMmU1YTJmNy4uNzgwOTZiMiAxMDA3NTUKLS0tIGEvdG9vbHMvcnVuX3Rlc3RzL3J1bl9pbnRlcm9wX3Rlc3RzLnB5CisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9ydW5faW50ZXJvcF90ZXN0cy5weQpAQCAtMjY4LDYgKzI2OCwzMSBAQAogICAgIHJldHVybiAncGhwJwogCiAKK2NsYXNzIFBIUDdMYW5ndWFnZToKKworICBkZWYgX19pbml0X18oc2VsZik6CisgICAgc2VsZi5jbGllbnRfY3dkID0gTm9uZQorICAgIHNlbGYuc2FmZW5hbWUgPSBzdHIoc2VsZikKKworICBkZWYgY2xpZW50X2NtZChzZWxmLCBhcmdzKToKKyAgICByZXR1cm4gWydzcmMvcGhwL2Jpbi9pbnRlcm9wX2NsaWVudC5zaCddICsgYXJncworCisgIGRlZiBjbG91ZF90b19wcm9kX2VudihzZWxmKToKKyAgICByZXR1cm4ge30KKworICBkZWYgZ2xvYmFsX2VudihzZWxmKToKKyAgICByZXR1cm4ge30KKworICBkZWYgdW5pbXBsZW1lbnRlZF90ZXN0X2Nhc2VzKHNlbGYpOgorICAgIHJldHVybiBfU0tJUF9DT01QUkVTU0lPTgorCisgIGRlZiB1bmltcGxlbWVudGVkX3Rlc3RfY2FzZXNfc2VydmVyKHNlbGYpOgorICAgIHJldHVybiBbXQorCisgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgIHJldHVybiAncGhwNycKKworCiBjbGFzcyBSdWJ5TGFuZ3VhZ2U6CiAKICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtMzQ2LDYgKzM3MSw3IEBACiAgICAgJ2phdmEnIDogSmF2YUxhbmd1YWdlKCksCiAgICAgJ25vZGUnIDogTm9kZUxhbmd1YWdlKCksCiAgICAgJ3BocCcgOiAgUEhQTGFuZ3VhZ2UoKSwKKyAgICAncGhwNycgOiAgUEhQN0xhbmd1YWdlKCksCiAgICAgJ3J1YnknIDogUnVieUxhbmd1YWdlKCksCiAgICAgJ3B5dGhvbicgOiBQeXRob25MYW5ndWFnZSgpLAogfQpAQCAtNDA5LDcgKzQzNSw3IEBACiAgIGRlZmF1bHRfYWNjb3VudF9hcmcgPSAnLS1kZWZhdWx0X3NlcnZpY2VfYWNjb3VudD04MzAyOTMyNjMzODQtY29tcHV0ZUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbScKIAogICBpZiB0ZXN0X2Nhc2UgaW4gWydqd3RfdG9rZW5fY3JlZHMnLCAncGVyX3JwY19jcmVkcycsICdvYXV0aDJfYXV0aF90b2tlbiddOgotICAgIGlmIGxhbmd1YWdlIGluIFsnY3NoYXJwJywgJ25vZGUnLCAncGhwJywgJ3B5dGhvbicsICdydWJ5J106CisgICAgaWYgbGFuZ3VhZ2UgaW4gWydjc2hhcnAnLCAnbm9kZScsICdwaHAnLCAncGhwNycsICdweXRob24nLCAncnVieSddOgogICAgICAgZW52WydHT09HTEVfQVBQTElDQVRJT05fQ1JFREVOVElBTFMnXSA9IGtleV9maWxlcGF0aAogICAgIGVsc2U6CiAgICAgICBjbWRhcmdzICs9IFtrZXlfZmlsZV9hcmddCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvcnVuX3Rlc3RzLnB5IGIvdG9vbHMvcnVuX3Rlc3RzL3J1bl90ZXN0cy5weQppbmRleCA1N2ZmZjJlLi41NDI0MTVkIDEwMDc1NQotLS0gYS90b29scy9ydW5fdGVzdHMvcnVuX3Rlc3RzLnB5CisrKyBiL3Rvb2xzL3J1bl90ZXN0cy9ydW5fdGVzdHMucHkKQEAgLTYzLDcgKzYzLDkgQEAKIG9zLmNoZGlyKF9ST09UKQogCiAKLV9GT1JDRV9FTlZJUk9OX0ZPUl9XUkFQUEVSUyA9IHt9CitfRk9SQ0VfRU5WSVJPTl9GT1JfV1JBUFBFUlMgPSB7CisgICdHUlBDX1ZFUkJPU0lUWSc6ICdERUJVRycsCit9CiAKIAogX1BPTExJTkdfU1RSQVRFR0lFUyA9IHsKQEAgLTE2NCw3ICsxNjYsOCBAQAogICAgICAgZm9yIHBvbGxpbmdfc3RyYXRlZ3kgaW4gcG9sbGluZ19zdHJhdGVnaWVzOgogICAgICAgICBlbnY9eydHUlBDX0RFRkFVTFRfU1NMX1JPT1RTX0ZJTEVfUEFUSCc6CiAgICAgICAgICAgICAgICAgIF9ST09UICsgJy9zcmMvY29yZS9saWIvdHNpL3Rlc3RfY3JlZHMvY2EucGVtJywKLSAgICAgICAgICAgICAnR1JQQ19QT0xMX1NUUkFURUdZJzogcG9sbGluZ19zdHJhdGVneX0KKyAgICAgICAgICAgICAnR1JQQ19QT0xMX1NUUkFURUdZJzogcG9sbGluZ19zdHJhdGVneSwKKyAgICAgICAgICAgICAnR1JQQ19WRVJCT1NJVFknOiAnREVCVUcnfQogICAgICAgICBzaG9ydG5hbWVfZXh0ID0gJycgaWYgcG9sbGluZ19zdHJhdGVneT09J2FsbCcgZWxzZSAnIEdSUENfUE9MTF9TVFJBVEVHWT0lcycgJSBwb2xsaW5nX3N0cmF0ZWd5CiAgICAgICAgIGlmIHNlbGYuY29uZmlnLmJ1aWxkX2NvbmZpZyBpbiB0YXJnZXRbJ2V4Y2x1ZGVfY29uZmlncyddOgogICAgICAgICAgIGNvbnRpbnVlCkBAIC0zNzgsNiArMzgxLDQyIEBACiAgICAgcmV0dXJuICdwaHAnCiAKIAorY2xhc3MgUGhwN0xhbmd1YWdlKG9iamVjdCk6CisKKyAgZGVmIGNvbmZpZ3VyZShzZWxmLCBjb25maWcsIGFyZ3MpOgorICAgIHNlbGYuY29uZmlnID0gY29uZmlnCisgICAgc2VsZi5hcmdzID0gYXJncworICAgIF9jaGVja19jb21waWxlcihzZWxmLmFyZ3MuY29tcGlsZXIsIFsnZGVmYXVsdCddKQorCisgIGRlZiB0ZXN0X3NwZWNzKHNlbGYpOgorICAgIHJldHVybiBbc2VsZi5jb25maWcuam9iX3NwZWMoWydzcmMvcGhwL2Jpbi9ydW5fdGVzdHMuc2gnXSwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9uPV9GT1JDRV9FTlZJUk9OX0ZPUl9XUkFQUEVSUyldCisKKyAgZGVmIHByZV9idWlsZF9zdGVwcyhzZWxmKToKKyAgICByZXR1cm4gW10KKworICBkZWYgbWFrZV90YXJnZXRzKHNlbGYpOgorICAgIHJldHVybiBbJ3N0YXRpY19jJywgJ3NoYXJlZF9jJ10KKworICBkZWYgbWFrZV9vcHRpb25zKHNlbGYpOgorICAgIHJldHVybiBbXQorCisgIGRlZiBidWlsZF9zdGVwcyhzZWxmKToKKyAgICByZXR1cm4gW1sndG9vbHMvcnVuX3Rlc3RzL2J1aWxkX3BocC5zaCddXQorCisgIGRlZiBwb3N0X3Rlc3RzX3N0ZXBzKHNlbGYpOgorICAgIHJldHVybiBbWyd0b29scy9ydW5fdGVzdHMvcG9zdF90ZXN0c19waHAuc2gnXV0KKworICBkZWYgbWFrZWZpbGVfbmFtZShzZWxmKToKKyAgICByZXR1cm4gJ01ha2VmaWxlJworCisgIGRlZiBkb2NrZXJmaWxlX2RpcihzZWxmKToKKyAgICByZXR1cm4gJ3Rvb2xzL2RvY2tlcmZpbGUvdGVzdC9waHA3X2plc3NpZV8lcycgJSBfZG9ja2VyX2FyY2hfc3VmZml4KHNlbGYuYXJncy5hcmNoKQorCisgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgIHJldHVybiAncGhwNycKKworCiBjbGFzcyBQeXRob25Db25maWcoY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnUHl0aG9uQ29uZmlnJywgWwogICAgICduYW1lJywgJ2J1aWxkJywgJ3J1biddKSk6CiAgICIiIlR1cGxlIG9mIGNvbW1hbmRzIChuYW1lZCBzLnQuICd3aGF0IGl0IHNheXMgb24gdGhlIHRpbicgYXBwbGllcykiIiIKQEAgLTc0Niw2ICs3ODUsNyBAQAogICAgICdjJzogQ0xhbmd1YWdlKCdjJywgJ2MnKSwKICAgICAnbm9kZSc6IE5vZGVMYW5ndWFnZSgpLAogICAgICdwaHAnOiBQaHBMYW5ndWFnZSgpLAorICAgICdwaHA3JzogUGhwN0xhbmd1YWdlKCksCiAgICAgJ3B5dGhvbic6IFB5dGhvbkxhbmd1YWdlKCksCiAgICAgJ3J1YnknOiBSdWJ5TGFuZ3VhZ2UoKSwKICAgICAnY3NoYXJwJzogQ1NoYXJwTGFuZ3VhZ2UoKSwKZGlmZiAtLWdpdCBhL3Rvb2xzL3J1bl90ZXN0cy9zYW5pdHkvY2hlY2tfc291cmNlc19hbmRfaGVhZGVycy5weSBiL3Rvb2xzL3J1bl90ZXN0cy9zYW5pdHkvY2hlY2tfc291cmNlc19hbmRfaGVhZGVycy5weQppbmRleCBjMDI4NDk5Li4yOGMxZGM0IDEwMDc1NQotLS0gYS90b29scy9ydW5fdGVzdHMvc2FuaXR5L2NoZWNrX3NvdXJjZXNfYW5kX2hlYWRlcnMucHkKKysrIGIvdG9vbHMvcnVuX3Rlc3RzL3Nhbml0eS9jaGVja19zb3VyY2VzX2FuZF9oZWFkZXJzLnB5CkBAIC01NSw3ICs1NSw4IEBACiAgIGZvciBkZXAgaW4gdGFyZ2V0WydkZXBzJ106CiAgICAgaWYgdGFyZ2V0X2hhc19oZWFkZXIoZ2V0X3RhcmdldChkZXApLCBuYW1lKToKICAgICAgIHJldHVybiBUcnVlCi0gIGlmIG5hbWUgPT0gJ3NyYy9jb3JlL2xpYi9wcm9maWxpbmcvc3RhcF9wcm9iZXMuaCc6CisgIGlmIG5hbWUgaW4gWydzcmMvY29yZS9saWIvcHJvZmlsaW5nL3N0YXBfcHJvYmVzLmgnLAorICAgICAgICAgICAgICAnc3JjL3Byb3RvL2dycGMvcmVmbGVjdGlvbi92MWFscGhhL3JlZmxlY3Rpb24uZ3JwYy5wYi5oJ106CiAgICAgcmV0dXJuIFRydWUKICAgcmV0dXJuIEZhbHNlCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3J1bl90ZXN0cy9zb3VyY2VzX2FuZF9oZWFkZXJzLmpzb24gYi90b29scy9ydW5fdGVzdHMvc291cmNlc19hbmRfaGVhZGVycy5qc29uCmluZGV4IDY1OTU5ZGEuLmZjZjE0N2QgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3J1bl90ZXN0cy9zb3VyY2VzX2FuZF9oZWFkZXJzLmpzb24KKysrIGIvdG9vbHMvcnVuX3Rlc3RzL3NvdXJjZXNfYW5kX2hlYWRlcnMuanNvbgpAQCAtMTQ5LDYgKzE0OSwyMiBAQAogICAgIF0sIAogICAgICJoZWFkZXJzIjogW10sIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiY2Vuc3VzX3Jlc291cmNlX3Rlc3QiLCAKKyAgICAic3JjIjogWworICAgICAgInRlc3QvY29yZS9jZW5zdXMvcmVzb3VyY2VfdGVzdC5jIgorICAgIF0sIAorICAgICJ0aGlyZF9wYXJ0eSI6IGZhbHNlLCAKKyAgICAidHlwZSI6ICJ0YXJnZXQiCisgIH0sIAorICB7CisgICAgImRlcHMiOiBbCisgICAgICAiZ3ByIiwgCisgICAgICAiZ3ByX3Rlc3RfdXRpbCIsIAorICAgICAgImdycGMiLCAKKyAgICAgICJncnBjX3Rlc3RfdXRpbCIKKyAgICBdLCAKKyAgICAiaGVhZGVycyI6IFtdLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAogICAgICJuYW1lIjogImNoYW5uZWxfY3JlYXRlX3Rlc3QiLCAKICAgICAic3JjIjogWwogICAgICAgInRlc3QvY29yZS9zdXJmYWNlL2NoYW5uZWxfY3JlYXRlX3Rlc3QuYyIKQEAgLTIyNTQsNiArMjI3MCwyNyBAQAogICAgICAgImdycGMrK190ZXN0X3V0aWwiLCAKICAgICAgICJncnBjX3Rlc3RfdXRpbCIKICAgICBdLCAKKyAgICAiaGVhZGVycyI6IFsKKyAgICAgICJzcmMvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLmdycGMucGIuaCIsIAorICAgICAgInNyYy9wcm90by9ncnBjL2xiL3YxL2xvYWRfYmFsYW5jZXIucGIuaCIKKyAgICBdLCAKKyAgICAibGFuZ3VhZ2UiOiAiYysrIiwgCisgICAgIm5hbWUiOiAiZ3JwY2xiX3Rlc3QiLCAKKyAgICAic3JjIjogWworICAgICAgInRlc3QvY3BwL2dycGNsYi9ncnBjbGJfdGVzdC5jYyIKKyAgICBdLCAKKyAgICAidGhpcmRfcGFydHkiOiBmYWxzZSwgCisgICAgInR5cGUiOiAidGFyZ2V0IgorICB9LCAKKyAgeworICAgICJkZXBzIjogWworICAgICAgImdwciIsIAorICAgICAgImdwcl90ZXN0X3V0aWwiLCAKKyAgICAgICJncnBjIiwgCisgICAgICAiZ3JwYysrIiwgCisgICAgICAiZ3JwYysrX3Rlc3RfdXRpbCIsIAorICAgICAgImdycGNfdGVzdF91dGlsIgorICAgIF0sIAogICAgICJoZWFkZXJzIjogW10sIAogICAgICJsYW5ndWFnZSI6ICJjKysiLCAKICAgICAibmFtZSI6ICJoeWJyaWRfZW5kMmVuZF90ZXN0IiwgCkBAIC0zNjEwLDkgKzM2NDcsOSBAQAogICAgIF0sIAogICAgICJoZWFkZXJzIjogW10sIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJzcmMiOiBbCi0gICAgICAidGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZy5jIgorICAgICAgInRlc3QvY29yZS9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRfcmVwb3J0aW5nLmMiCiAgICAgXSwgCiAgICAgInRoaXJkX3BhcnR5IjogZmFsc2UsIAogICAgICJ0eXBlIjogInRhcmdldCIKQEAgLTM4ODIsOSArMzkxOSw5IEBACiAgICAgXSwgCiAgICAgImhlYWRlcnMiOiBbXSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInNyYyI6IFsKLSAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkcmVwb3J0aW5nLmMiCisgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZF9yZXBvcnRpbmcuYyIKICAgICBdLCAKICAgICAidGhpcmRfcGFydHkiOiBmYWxzZSwgCiAgICAgInR5cGUiOiAidGFyZ2V0IgpAQCAtNDE3Nyw2ICs0MjE0LDcgQEAKICAgICAgICJncHIiLCAKICAgICAgICJncnBjX2Jhc2UiLCAKICAgICAgICJncnBjX2xiX3BvbGljeV9ncnBjbGIiLCAKKyAgICAgICJncnBjX2xiX3BvbGljeV9ncnBjbGIiLCAKICAgICAgICJncnBjX2xiX3BvbGljeV9waWNrX2ZpcnN0IiwgCiAgICAgICAiZ3JwY19sYl9wb2xpY3lfcm91bmRfcm9iaW4iLCAKICAgICAgICJncnBjX2xvYWRfcmVwb3J0aW5nIiwgCkBAIC00MjMwLDYgKzQyNjgsNyBAQAogICAgICAgImdwciIsIAogICAgICAgImdwcl90ZXN0X3V0aWwiLCAKICAgICAgICJncnBjIiwgCisgICAgICAiZ3JwY19iYXNlIiwgCiAgICAgICAiZ3JwY190ZXN0X3V0aWxfYmFzZSIKICAgICBdLCAKICAgICAiaGVhZGVycyI6IFsKQEAgLTQyNzEsNiArNDMxMCw3IEBACiAgICAgICAiZ3ByIiwgCiAgICAgICAiZ3JwY19iYXNlIiwgCiAgICAgICAiZ3JwY19sYl9wb2xpY3lfZ3JwY2xiIiwgCisgICAgICAiZ3JwY19sYl9wb2xpY3lfZ3JwY2xiIiwgCiAgICAgICAiZ3JwY19sYl9wb2xpY3lfcGlja19maXJzdCIsIAogICAgICAgImdycGNfbGJfcG9saWN5X3JvdW5kX3JvYmluIiwgCiAgICAgICAiZ3JwY19sb2FkX3JlcG9ydGluZyIsIApAQCAtNDM2MSwyNSArNDQwMSwxOSBAQAogICB7CiAgICAgImRlcHMiOiBbCiAgICAgICAiZ3JwYysrIiwgCi0gICAgICAiZ3JwYysrX2NvZGVnZW5fcHJvdG8iCisgICAgICAiZ3JwYysrX3JlZmxlY3Rpb25fcHJvdG8iCiAgICAgXSwgCiAgICAgImhlYWRlcnMiOiBbCiAgICAgICAiaW5jbHVkZS9ncnBjKysvZXh0L3Byb3RvX3NlcnZlcl9yZWZsZWN0aW9uX3BsdWdpbi5oIiwgCi0gICAgICAiaW5jbHVkZS9ncnBjKysvZXh0L3JlZmxlY3Rpb24uZ3JwYy5wYi5oIiwgCi0gICAgICAiaW5jbHVkZS9ncnBjKysvZXh0L3JlZmxlY3Rpb24ucGIuaCIsIAogICAgICAgInNyYy9jcHAvZXh0L3Byb3RvX3NlcnZlcl9yZWZsZWN0aW9uLmgiCiAgICAgXSwgCiAgICAgImxhbmd1YWdlIjogImMrKyIsIAogICAgICJuYW1lIjogImdycGMrK19yZWZsZWN0aW9uIiwgCiAgICAgInNyYyI6IFsKICAgICAgICJpbmNsdWRlL2dycGMrKy9leHQvcHJvdG9fc2VydmVyX3JlZmxlY3Rpb25fcGx1Z2luLmgiLCAKLSAgICAgICJpbmNsdWRlL2dycGMrKy9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmgiLCAKLSAgICAgICJpbmNsdWRlL2dycGMrKy9leHQvcmVmbGVjdGlvbi5wYi5oIiwgCiAgICAgICAic3JjL2NwcC9leHQvcHJvdG9fc2VydmVyX3JlZmxlY3Rpb24uY2MiLCAKICAgICAgICJzcmMvY3BwL2V4dC9wcm90b19zZXJ2ZXJfcmVmbGVjdGlvbi5oIiwgCi0gICAgICAic3JjL2NwcC9leHQvcHJvdG9fc2VydmVyX3JlZmxlY3Rpb25fcGx1Z2luLmNjIiwgCi0gICAgICAic3JjL2NwcC9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmNjIiwgCi0gICAgICAic3JjL2NwcC9leHQvcmVmbGVjdGlvbi5wYi5jYyIKKyAgICAgICJzcmMvY3BwL2V4dC9wcm90b19zZXJ2ZXJfcmVmbGVjdGlvbl9wbHVnaW4uY2MiCiAgICAgXSwgCiAgICAgInRoaXJkX3BhcnR5IjogZmFsc2UsIAogICAgICJ0eXBlIjogImxpYiIKQEAgLTQzODcsNiArNDQyMSwxOCBAQAogICB7CiAgICAgImRlcHMiOiBbXSwgCiAgICAgImhlYWRlcnMiOiBbCisgICAgICAic3JjL3Byb3RvL2dycGMvcmVmbGVjdGlvbi92MWFscGhhL3JlZmxlY3Rpb24uZ3JwYy5wYi5oIiwgCisgICAgICAic3JjL3Byb3RvL2dycGMvcmVmbGVjdGlvbi92MWFscGhhL3JlZmxlY3Rpb24ucGIuaCIKKyAgICBdLCAKKyAgICAibGFuZ3VhZ2UiOiAiYysrIiwgCisgICAgIm5hbWUiOiAiZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbiIsIAorICAgICJzcmMiOiBbXSwgCisgICAgInRoaXJkX3BhcnR5IjogZmFsc2UsIAorICAgICJ0eXBlIjogImxpYiIKKyAgfSwgCisgIHsKKyAgICAiZGVwcyI6IFtdLCAKKyAgICAiaGVhZGVycyI6IFsKICAgICAgICJ0ZXN0L2NwcC91dGlsL3Rlc3RfY29uZmlnLmgiCiAgICAgXSwgCiAgICAgImxhbmd1YWdlIjogImMrKyIsIApAQCAtNTM3Nyw2ICs1NDIzLDcgQEAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9kZWZhdWx0X2hvc3QuYyIsIAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2Rpc2FwcGVhcmluZ19zZXJ2ZXIuYyIsIAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2VtcHR5X2JhdGNoLmMiLCAKKyAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9maWx0ZXJfY2FsbF9pbml0X2ZhaWxzLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9maWx0ZXJfY2F1c2VzX2Nsb3NlLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9ncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd24uYyIsIAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2hpZ2hfaW5pdGlhbF9zZXFuby5jIiwgCkBAIC01Mzg0LDYgKzU0MzEsNyBAQAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2lkZW1wb3RlbnRfcmVxdWVzdC5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvaW52b2tlX2xhcmdlX3JlcXVlc3QuYyIsIAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2xhcmdlX21ldGFkYXRhLmMiLCAKKyAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9sb2FkX3JlcG9ydGluZ19ob29rLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9tYXhfY29uY3VycmVudF9zdHJlYW1zLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9tYXhfbWVzc2FnZV9sZW5ndGguYyIsIAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL25lZ2F0aXZlX2RlYWRsaW5lLmMiLCAKQEAgLTU0MzcsNiArNTQ4NSw3IEBACiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZGVmYXVsdF9ob3N0LmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9kaXNhcHBlYXJpbmdfc2VydmVyLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9lbXB0eV9iYXRjaC5jIiwgCisgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhbGxfaW5pdF9mYWlscy5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZmlsdGVyX2NhdXNlc19jbG9zZS5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvZ3JhY2VmdWxfc2VydmVyX3NodXRkb3duLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9oaWdoX2luaXRpYWxfc2Vxbm8uYyIsIApAQCAtNTQ0NCw2ICs1NDkzLDcgQEAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9pZGVtcG90ZW50X3JlcXVlc3QuYyIsIAogICAgICAgInRlc3QvY29yZS9lbmQyZW5kL3Rlc3RzL2ludm9rZV9sYXJnZV9yZXF1ZXN0LmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9sYXJnZV9tZXRhZGF0YS5jIiwgCisgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvbG9hZF9yZXBvcnRpbmdfaG9vay5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvbWF4X2NvbmN1cnJlbnRfc3RyZWFtcy5jIiwgCiAgICAgICAidGVzdC9jb3JlL2VuZDJlbmQvdGVzdHMvbWF4X21lc3NhZ2VfbGVuZ3RoLmMiLCAKICAgICAgICJ0ZXN0L2NvcmUvZW5kMmVuZC90ZXN0cy9uZWdhdGl2ZV9kZWFkbGluZS5jIiwgCkBAIC01NDc2LDExICs1NTI2LDEzIEBACiAgICAgImhlYWRlcnMiOiBbCiAgICAgICAiaW5jbHVkZS9ncnBjL2NlbnN1cy5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9hZ2dyZWdhdGlvbi5oIiwgCisgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9iYXNlX3Jlc291cmNlcy5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfaW50ZXJmYWNlLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2NlbnN1c19ycGNfc3RhdHMuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvZ2VuL2NlbnN1cy5wYi5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ncnBjX2ZpbHRlci5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9tbG9nLmgiLCAKKyAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3Jlc291cmNlLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3JwY19tZXRyaWNfaWQuaCIKICAgICBdLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIApAQCAtNTQ4OCw2ICs1NTQwLDggQEAKICAgICAic3JjIjogWwogICAgICAgImluY2x1ZGUvZ3JwYy9jZW5zdXMuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYWdncmVnYXRpb24uaCIsIAorICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuYyIsIAorICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvYmFzZV9yZXNvdXJjZXMuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvY2Vuc3VzX2ludGVyZmFjZS5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9jZW5zdXNfcnBjX3N0YXRzLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL2NvbnRleHQuYyIsIApAQCAtNTUwMiw2ICs1NTU2LDggQEAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL21sb2cuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9jZW5zdXMvb3BlcmF0aW9uLmMiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3BsYWNlaG9sZGVycy5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9yZXNvdXJjZS5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2NlbnN1cy9ycGNfbWV0cmljX2lkLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvY2Vuc3VzL3RyYWNpbmcuYyIKICAgICBdLCAKQEAgLTYwNTUsMTIgKzYxMTEsMTUgQEAKICAgICAgICJuYW5vcGIiCiAgICAgXSwgCiAgICAgImhlYWRlcnMiOiBbCisgICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5oIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvcHJvdG8vZ3JwYy9sYi92MS9sb2FkX2JhbGFuY2VyLnBiLmgiCiAgICAgXSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKICAgICAibmFtZSI6ICJncnBjX2xiX3BvbGljeV9ncnBjbGIiLCAKICAgICAic3JjIjogWworICAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL2dycGNsYi5jIiwgCisgICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvZ3JwY2xiLmgiLCAKICAgICAgICJzcmMvY29yZS9leHQvbGJfcG9saWN5L2dycGNsYi9sb2FkX2JhbGFuY2VyX2FwaS5jIiwgCiAgICAgICAic3JjL2NvcmUvZXh0L2xiX3BvbGljeS9ncnBjbGIvbG9hZF9iYWxhbmNlcl9hcGkuaCIsIAogICAgICAgInNyYy9jb3JlL2V4dC9sYl9wb2xpY3kvZ3JwY2xiL3Byb3RvL2dycGMvbGIvdjEvbG9hZF9iYWxhbmNlci5wYi5jIiwgCkBAIC02NzU5LDUgKzY4MTgsMjQgQEAKICAgICBdLCAKICAgICAidGhpcmRfcGFydHkiOiBmYWxzZSwgCiAgICAgInR5cGUiOiAiZmlsZWdyb3VwIgorICB9LCAKKyAgeworICAgICJkZXBzIjogWworICAgICAgImdycGMrK19jb2RlZ2VuX3Byb3RvIgorICAgIF0sIAorICAgICJoZWFkZXJzIjogWworICAgICAgImluY2x1ZGUvZ3JwYysrL2V4dC9yZWZsZWN0aW9uLmdycGMucGIuaCIsIAorICAgICAgImluY2x1ZGUvZ3JwYysrL2V4dC9yZWZsZWN0aW9uLnBiLmgiCisgICAgXSwgCisgICAgImxhbmd1YWdlIjogImMrKyIsIAorICAgICJuYW1lIjogImdycGMrK19yZWZsZWN0aW9uX3Byb3RvIiwgCisgICAgInNyYyI6IFsKKyAgICAgICJpbmNsdWRlL2dycGMrKy9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmgiLCAKKyAgICAgICJpbmNsdWRlL2dycGMrKy9leHQvcmVmbGVjdGlvbi5wYi5oIiwgCisgICAgICAic3JjL2NwcC9leHQvcmVmbGVjdGlvbi5ncnBjLnBiLmNjIiwgCisgICAgICAic3JjL2NwcC9leHQvcmVmbGVjdGlvbi5wYi5jYyIKKyAgICBdLCAKKyAgICAidGhpcmRfcGFydHkiOiBmYWxzZSwgCisgICAgInR5cGUiOiAiZmlsZWdyb3VwIgogICB9CiBdCmRpZmYgLS1naXQgYS90b29scy9ydW5fdGVzdHMvdGVzdHMuanNvbiBiL3Rvb2xzL3J1bl90ZXN0cy90ZXN0cy5qc29uCmluZGV4IGQ5NDMwMWIuLmY2MDhhYTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3J1bl90ZXN0cy90ZXN0cy5qc29uCisrKyBiL3Rvb2xzL3J1bl90ZXN0cy90ZXN0cy5qc29uCkBAIC0xODIsNiArMTgyLDI3IEBACiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJndGVzdCI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImNlbnN1c19yZXNvdXJjZV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IiwgCisgICAgICAid2luZG93cyIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IiwgCisgICAgICAid2luZG93cyIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJndGVzdCI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAogICAgICJuYW1lIjogImNoYW5uZWxfY3JlYXRlX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgImxpbnV4IiwgCkBAIC0yMzAxLDYgKzIzMjIsMjcgQEAKICAgICAiY3B1X2Nvc3QiOiAxLjAsIAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJndGVzdCI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYysrIiwgCisgICAgIm5hbWUiOiAiZ3JwY2xiX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiLCAKKyAgICAgICJ3aW5kb3dzIgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFtdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiLCAKKyAgICAgICJ3aW5kb3dzIgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImd0ZXN0IjogdHJ1ZSwgCiAgICAgImxhbmd1YWdlIjogImMrKyIsIAogICAgICJuYW1lIjogImh5YnJpZF9lbmQyZW5kX3Rlc3QiLCAKQEAgLTQ2NzgsNiArNDcyMCwyOCBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfY2Vuc3VzX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC00ODMyLDYgKzQ4OTYsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2NlbnN1c190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtNTU1OCw2ICs1NjQ0LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9jb21wcmVzc190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtNTcxMiw2ICs1ODIwLDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9jb21wcmVzc190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtNjQyNCw2ICs2NTU0LDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mYWtlc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC02NTcxLDYgKzY3MjIsMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2Zha2VzZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTcxOTAsNiArNzM2MiwyNiBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mZF90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC03MzMwLDYgKzc1MjIsMjYgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfZmRfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtNzk3OCw2ICs4MTkwLDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC04MTMyLDYgKzgzNjYsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2Z1bGxfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTg3NzQsNiArOTAzMCwyMiBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfZnVsbCtwaXBlX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC04ODg2LDYgKzkxNTgsMjIgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2Z1bGwrcGlwZV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtOTQ5OCw2ICs5Nzg2LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsK3RyYWNlX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC05NjMwLDYgKzk5NDAsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2Z1bGwrdHJhY2VfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTEwMDYwLDcgKzEwMzkyLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTAwODIsNyArMTA0MTQsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDEwNCw3ICsxMDQzNiw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwMTI2LDcgKzEwNDU4LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTAxNDgsNyArMTA0ODAsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDE3MCw3ICsxMDUwMiw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwMTkyLDcgKzEwNTI0LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTAyMTQsNyArMTA1NDYsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDIzNiw3ICsxMDU2OCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwMjU4LDcgKzEwNTkwLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTAyODAsNyArMTA2MTIsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDMwMiw3ICsxMDYzNCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwMzI0LDcgKzEwNjU2LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTAzNDYsNyArMTA2NzgsMjkgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTAzNjgsNyArMTA3MjIsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDM5MCw3ICsxMDc0NCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwNDEyLDcgKzEwNzY2LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA0MzQsNyArMTA3ODgsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDQ1Niw3ICsxMDgxMCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwNDc4LDcgKzEwODMyLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA1MDAsNyArMTA4NTQsMjkgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA1MjIsNyArMTA4OTgsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDU0NCw3ICsxMDkyMCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwNTY2LDcgKzEwOTQyLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA1ODgsNyArMTA5NjQsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDYxMCw3ICsxMDk4Niw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwNjMyLDcgKzExMDA4LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA2NTQsNyArMTEwMzAsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDY3Niw3ICsxMTA1Miw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwNjk4LDcgKzExMDc0LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA3MjAsNyArMTEwOTYsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDc0Miw3ICsxMTExOCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwNzY0LDcgKzExMTQwLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA3ODYsNyArMTExNjIsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDgwOCw3ICsxMTE4NCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwODMwLDcgKzExMjA2LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA4NTIsNyArMTEyMjgsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMDg3NCw3ICsxMTI1MCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTEwODk2LDcgKzExMjcyLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMTA5MTgsNyArMTEyOTQsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0xMTIyMiw2ICsxMTU5OCwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfb2F1dGgyX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xMTM2OSw2ICsxMTc2NiwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImxvYWRfcmVwb3J0aW5nX2hvb2siCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfb2F1dGgyX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJtYXhfY29uY3VycmVudF9zdHJlYW1zIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xMjAyMCw2ICsxMjQzOCwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfcHJveHlfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTEyMTQ2LDYgKzEyNTg1LDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9wcm94eV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X21lc3NhZ2VfbGVuZ3RoIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xMjcxMyw2ICsxMzE3MywyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfc29ja3BhaXJfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTEyODYwLDYgKzEzMzQxLDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zb2NrcGFpcl90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTM0NDgsNiArMTM5NTAsMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NvY2twYWlyK3RyYWNlX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xMzU3NCw2ICsxNDA5NywyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImxvYWRfcmVwb3J0aW5nX2hvb2siCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfc29ja3BhaXIrdHJhY2VfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTE0MTYyLDYgKzE0NzA2LDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zb2NrcGFpcl8xYnl0ZV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTQzMDksNiArMTQ4NzQsMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NvY2twYWlyXzFieXRlX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJtYXhfY29uY3VycmVudF9zdHJlYW1zIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xNDk3NCw2ICsxNTU2MCwyOCBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfc3NsX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xNTEyOCw2ICsxNTczNiwyOCBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImxvYWRfcmVwb3J0aW5nX2hvb2siCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfc3NsX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJtYXhfY29uY3VycmVudF9zdHJlYW1zIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xNTg1NCw2ICsxNjQ4NCwyOCBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfc3NsX2NlcnRfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTE2MDA4LDYgKzE2NjYwLDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zc2xfY2VydF90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTY2NzgsNiArMTczNTIsMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NzbF9wcm94eV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTY4MDQsNiArMTc0OTksMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NzbF9wcm94eV90ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X21lc3NhZ2VfbGVuZ3RoIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xNzQwMCw2ICsxODExNiwyNiBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl91ZHNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTc1NDAsNiArMTgyNzYsMjYgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfdWRzX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTE4MjA2LDYgKzE4OTYyLDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9jZW5zdXNfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTE4MzYwLDYgKzE5MTM4LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9jZW5zdXNfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTE5MDY0LDYgKzE5ODY0LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9jb21wcmVzc19ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMTkyMTgsNiArMjAwNDAsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2NvbXByZXNzX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJtYXhfY29uY3VycmVudF9zdHJlYW1zIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xOTgzNiw2ICsyMDY4MCwyNiBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mZF9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0xOTk3Niw2ICsyMDg0MCwyNiBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImxvYWRfcmVwb3J0aW5nX2hvb2siCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mZF9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJtYXhfY29uY3VycmVudF9zdHJlYW1zIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0yMDYwMiw2ICsyMTQ4NiwyOCBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfZnVsbF9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAiZmlsdGVyX2NhdXNlc19jbG9zZSIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjA3NTYsNiArMjE2NjIsMjggQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2Z1bGxfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTIxMzgyLDYgKzIyMzEwLDIyIEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsK3BpcGVfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTIxNDk0LDYgKzIyNDM4LDIyIEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsK3BpcGVfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTIyMDg0LDYgKzIzMDQ0LDI4IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9mdWxsK3RyYWNlX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0yMjIxNiw2ICsyMzE5OCwyOCBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImxvYWRfcmVwb3J0aW5nX2hvb2siCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfZnVsbCt0cmFjZV9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjI2NDYsNyArMjM2NTAsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMjY2OCw3ICsyMzY3Miw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIyNjkwLDcgKzIzNjk0LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjI3MTIsNyArMjM3MTYsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMjczNCw3ICsyMzczOCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIyNzU2LDcgKzIzNzYwLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjI3NzgsNyArMjM3ODIsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMjgwMCw3ICsyMzgwNCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIyODIyLDcgKzIzODI2LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjI4NDQsNyArMjM4NDgsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMjg2Niw3ICsyMzg3MCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIyODg4LDcgKzIzODkyLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjI5MTAsNyArMjM5MTQsMjkgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjI5MzIsNyArMjM5NTgsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMjk1NCw3ICsyMzk4MCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIyOTc2LDcgKzI0MDAyLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjI5OTgsNyArMjQwMjQsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMzAyMCw3ICsyNDA0Niw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIzMDQyLDcgKzI0MDY4LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjMwNjQsNyArMjQwOTAsMjkgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKKyAgICAgICJsb2FkX3JlcG9ydGluZ19ob29rIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjMwODYsNyArMjQxMzQsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMzEwOCw3ICsyNDE1Niw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIzMTMwLDcgKzI0MTc4LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjMxNTIsNyArMjQyMDAsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMzE3NCw3ICsyNDIyMiw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIzMTk2LDcgKzI0MjQ0LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjMyMTgsNyArMjQyNjYsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMzI0MCw3ICsyNDI4OCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIzMjYyLDcgKzI0MzEwLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjMyODQsNyArMjQzMzIsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMzMwNiw3ICsyNDM1NCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIzMzI4LDcgKzI0Mzc2LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjMzNTAsNyArMjQzOTgsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMzM3Miw3ICsyNDQyMCw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIzMzk0LDcgKzI0NDQyLDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjM0MTYsNyArMjQ0NjQsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMzQzOCw3ICsyNDQ4Niw3IEBACiAgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKICAgICAiZmxha3kiOiBmYWxzZSwgCiAgICAgImxhbmd1YWdlIjogImMiLCAKLSAgICAibmFtZSI6ICJoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKKyAgICAibmFtZSI6ICJoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0IiwgCiAgICAgInBsYXRmb3JtcyI6IFsKICAgICAgICJ3aW5kb3dzIiwgCiAgICAgICAibGludXgiLCAKQEAgLTIzNDYwLDcgKzI0NTA4LDcgQEAKICAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAogICAgICJmbGFreSI6IGZhbHNlLCAKICAgICAibGFuZ3VhZ2UiOiAiYyIsIAotICAgICJuYW1lIjogImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAorICAgICJuYW1lIjogImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAKICAgICAicGxhdGZvcm1zIjogWwogICAgICAgIndpbmRvd3MiLCAKICAgICAgICJsaW51eCIsIApAQCAtMjM0ODIsNyArMjQ1MzAsNyBAQAogICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCiAgICAgImZsYWt5IjogZmFsc2UsIAogICAgICJsYW5ndWFnZSI6ICJjIiwgCi0gICAgIm5hbWUiOiAiaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0IiwgCisgICAgIm5hbWUiOiAiaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdCIsIAogICAgICJwbGF0Zm9ybXMiOiBbCiAgICAgICAid2luZG93cyIsIAogICAgICAgImxpbnV4IiwgCkBAIC0yMzcyMyw2ICsyNDc3MSwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfcHJveHlfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTIzODQ5LDYgKzI0OTE4LDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9wcm94eV9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X21lc3NhZ2VfbGVuZ3RoIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0yNDM5NSw2ICsyNTQ4NSwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImZpbHRlcl9jYWxsX2luaXRfZmFpbHMiCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfc29ja3BhaXJfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTI0NTQyLDYgKzI1NjUzLDI3IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFtdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zb2NrcGFpcl9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjUxMDksNiArMjYyNDEsMjcgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NvY2twYWlyK3RyYWNlX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0yNTIzNSw2ICsyNjM4OCwyNyBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImxvYWRfcmVwb3J0aW5nX2hvb2siCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfc29ja3BhaXIrdHJhY2Vfbm9zZWNfdGVzdCIsIAorICAgICJwbGF0Zm9ybXMiOiBbCisgICAgICAid2luZG93cyIsIAorICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgIm1heF9jb25jdXJyZW50X3N0cmVhbXMiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTI1ODIyLDYgKzI2OTk2LDI5IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAiZmlsdGVyX2NhbGxfaW5pdF9mYWlscyIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgInBvc2l4IgorICAgIF0sIAorICAgICJjcHVfY29zdCI6IDEuMCwgCisgICAgImV4Y2x1ZGVfY29uZmlncyI6IFsKKyAgICAgICJtc2FuIgorICAgIF0sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3NvY2twYWlyXzFieXRlX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgIndpbmRvd3MiLCAKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJmaWx0ZXJfY2F1c2VzX2Nsb3NlIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCkBAIC0yNTk4Myw2ICsyNzE4MCwyOSBAQAogICB9LCAKICAgewogICAgICJhcmdzIjogWworICAgICAgImxvYWRfcmVwb3J0aW5nX2hvb2siCisgICAgXSwgCisgICAgImNpX3BsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbCisgICAgICAibXNhbiIKKyAgICBdLCAKKyAgICAiZmxha3kiOiBmYWxzZSwgCisgICAgImxhbmd1YWdlIjogImMiLCAKKyAgICAibmFtZSI6ICJoMl9zb2NrcGFpcl8xYnl0ZV9ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJ3aW5kb3dzIiwgCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdCisgIH0sIAorICB7CisgICAgImFyZ3MiOiBbCiAgICAgICAibWF4X2NvbmN1cnJlbnRfc3RyZWFtcyIKICAgICBdLCAKICAgICAiY2lfcGxhdGZvcm1zIjogWwpAQCAtMjY2MTQsNiArMjc4MzQsMjYgQEAKICAgfSwgCiAgIHsKICAgICAiYXJncyI6IFsKKyAgICAgICJmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzIgorICAgIF0sIAorICAgICJjaV9wbGF0Zm9ybXMiOiBbCisgICAgICAibGludXgiLCAKKyAgICAgICJtYWMiLCAKKyAgICAgICJwb3NpeCIKKyAgICBdLCAKKyAgICAiY3B1X2Nvc3QiOiAxLjAsIAorICAgICJleGNsdWRlX2NvbmZpZ3MiOiBbXSwgCisgICAgImZsYWt5IjogZmFsc2UsIAorICAgICJsYW5ndWFnZSI6ICJjIiwgCisgICAgIm5hbWUiOiAiaDJfdWRzX25vc2VjX3Rlc3QiLCAKKyAgICAicGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXQorICB9LCAKKyAgeworICAgICJhcmdzIjogWwogICAgICAgImZpbHRlcl9jYXVzZXNfY2xvc2UiCiAgICAgXSwgCiAgICAgImNpX3BsYXRmb3JtcyI6IFsKQEAgLTI2NzU0LDYgKzI3OTk0LDI2IEBACiAgIH0sIAogICB7CiAgICAgImFyZ3MiOiBbCisgICAgICAibG9hZF9yZXBvcnRpbmdfaG9vayIKKyAgICBdLCAKKyAgICAiY2lfcGxhdGZvcm1zIjogWworICAgICAgImxpbnV4IiwgCisgICAgICAibWFjIiwgCisgICAgICAicG9zaXgiCisgICAgXSwgCisgICAgImNwdV9jb3N0IjogMS4wLCAKKyAgICAiZXhjbHVkZV9jb25maWdzIjogW10sIAorICAgICJmbGFreSI6IGZhbHNlLCAKKyAgICAibGFuZ3VhZ2UiOiAiYyIsIAorICAgICJuYW1lIjogImgyX3Vkc19ub3NlY190ZXN0IiwgCisgICAgInBsYXRmb3JtcyI6IFsKKyAgICAgICJsaW51eCIsIAorICAgICAgIm1hYyIsIAorICAgICAgInBvc2l4IgorICAgIF0KKyAgfSwgCisgIHsKKyAgICAiYXJncyI6IFsKICAgICAgICJtYXhfY29uY3VycmVudF9zdHJlYW1zIgogICAgIF0sIAogICAgICJjaV9wbGF0Zm9ybXMiOiBbCmRpZmYgLS1naXQgYS92c3Byb2plY3RzL2J1aWxkdGVzdHNfYy5zbG4gYi92c3Byb2plY3RzL2J1aWxkdGVzdHNfYy5zbG4KaW5kZXggNzIzMjQ0MC4uYzI4ZjNiYSAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy9idWlsZHRlc3RzX2Muc2xuCisrKyBiL3ZzcHJvamVjdHMvYnVpbGR0ZXN0c19jLnNsbgpAQCAtMTA5LDYgKzEwOSwxNyBAQAogCQl7QjIzRDNEMUEtOTQzOC00RURBLUJFQjYtOUEwQTAzRDE3NzkyfSA9IHtCMjNEM0QxQS05NDM4LTRFREEtQkVCNi05QTBBMDNEMTc3OTJ9CiAJRW5kUHJvamVjdFNlY3Rpb24KIEVuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY2Vuc3VzX3Jlc291cmNlX3Rlc3QiLCAidmN4cHJvalx0ZXN0XGNlbnN1c19yZXNvdXJjZV90ZXN0XGNlbnN1c19yZXNvdXJjZV90ZXN0LnZjeHByb2oiLCAiezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0iCisJUHJvamVjdFNlY3Rpb24obXlQcm9wZXJ0aWVzKSA9IHByZVByb2plY3QKKyAgICAgICAgCWxpYiA9ICJGYWxzZSIKKwlFbmRQcm9qZWN0U2VjdGlvbgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJezE3QkNBRkMwLTVGREMtNEM5NC1BRUI5LTk1RjNFMjIwNjE0Qn0gPSB7MTdCQ0FGQzAtNUZEQy00Qzk0LUFFQjktOTVGM0UyMjA2MTRCfQorCQl7MjlEMTY4ODUtNzIyOC00QzMxLTgxRUQtNUY5MTg3QzdGMkE5fSA9IHsyOUQxNjg4NS03MjI4LTRDMzEtODFFRC01RjkxODdDN0YyQTl9CisJCXtFQUIwQTYyOS0xN0E5LTQ0REItQjVGRi1FOTFBNzIxRkUwMzd9ID0ge0VBQjBBNjI5LTE3QTktNDREQi1CNUZGLUU5MUE3MjFGRTAzN30KKwkJe0IyM0QzRDFBLTk0MzgtNEVEQS1CRUI2LTlBMEEwM0QxNzc5Mn0gPSB7QjIzRDNEMUEtOTQzOC00RURBLUJFQjYtOUEwQTAzRDE3NzkyfQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImNoYW5uZWxfY3JlYXRlX3Rlc3QiLCAidmN4cHJvalx0ZXN0XGNoYW5uZWxfY3JlYXRlX3Rlc3RcY2hhbm5lbF9jcmVhdGVfdGVzdC52Y3hwcm9qIiwgIntBRkM4ODQ4NC0zQTJFLTMyQkMtMjVCMi0yM0RGNzQxRDRGM0R9IgogCVByb2plY3RTZWN0aW9uKG15UHJvcGVydGllcykgPSBwcmVQcm9qZWN0CiAgICAgICAgIAlsaWIgPSAiRmFsc2UiCkBAIC03NDgsNyArNzU5LDcgQEAKIAkJe0IyM0QzRDFBLTk0MzgtNEVEQS1CRUI2LTlBMEEwM0QxNzc5Mn0gPSB7QjIzRDNEMUEtOTQzOC00RURBLUJFQjYtOUEwQTAzRDE3NzkyfQogCUVuZFByb2plY3RTZWN0aW9uCiBFbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdCIsICJ2Y3hwcm9qXHRlc3QvZW5kMmVuZC9maXh0dXJlc1xoMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3RcaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0LnZjeHByb2oiLCAiezY3OUVBNTVDLTczOTktNTNFOC03OUYwLTgyRkJEQjNEREUwN30iCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImgyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QiLCAidmN4cHJvalx0ZXN0L2VuZDJlbmQvZml4dHVyZXNcaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdFxoMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0LnZjeHByb2oiLCAiezRCOUVCQkFFLUQ4MzgtRUMwOS0wQjEwLTJENDUyMEZCQzBGRn0iCiAJUHJvamVjdFNlY3Rpb24obXlQcm9wZXJ0aWVzKSA9IHByZVByb2plY3QKICAgICAgICAgCWxpYiA9ICJGYWxzZSIKIAlFbmRQcm9qZWN0U2VjdGlvbgpAQCAtNzYwLDcgKzc3MSw3IEBACiAJCXtCMjNEM0QxQS05NDM4LTRFREEtQkVCNi05QTBBMDNEMTc3OTJ9ID0ge0IyM0QzRDFBLTk0MzgtNEVEQS1CRUI2LTlBMEEwM0QxNzc5Mn0KIAlFbmRQcm9qZWN0U2VjdGlvbgogRW5kUHJvamVjdAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJoMl9sb2FkcmVwb3J0aW5nX3Rlc3QiLCAidmN4cHJvalx0ZXN0L2VuZDJlbmQvZml4dHVyZXNcaDJfbG9hZHJlcG9ydGluZ190ZXN0XGgyX2xvYWRyZXBvcnRpbmdfdGVzdC52Y3hwcm9qIiwgIntCMTA3MTMwRS1FQTMzLUMxMTQtOUNCNi03OEExOEM5MjlGNjR9IgorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJoMl9sb2FkX3JlcG9ydGluZ190ZXN0IiwgInZjeHByb2pcdGVzdC9lbmQyZW5kL2ZpeHR1cmVzXGgyX2xvYWRfcmVwb3J0aW5nX3Rlc3RcaDJfbG9hZF9yZXBvcnRpbmdfdGVzdC52Y3hwcm9qIiwgIntGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9IgogCVByb2plY3RTZWN0aW9uKG15UHJvcGVydGllcykgPSBwcmVQcm9qZWN0CiAgICAgICAgIAlsaWIgPSAiRmFsc2UiCiAJRW5kUHJvamVjdFNlY3Rpb24KQEAgLTE1OTksNiArMTYxMCwyMiBAQAogCQl7NUMxQ0ZDMkQtQUYzQy1EN0NCLUJBNzQtRDI2N0U5MUNCQzczfS5SZWxlYXNlLURMTHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgogCQl7NUMxQ0ZDMkQtQUYzQy1EN0NCLUJBNzQtRDI2N0U5MUNCQzczfS5SZWxlYXNlLURMTHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKIAkJezVDMUNGQzJELUFGM0MtRDdDQi1CQTc0LUQyNjdFOTFDQkM3M30uUmVsZWFzZS1ETEx8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MThDRjk5QjUtM0M2MS1FQzNELTk1MDktM0M5NTMzNEMzQjg4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uRGVidWctRExMfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9LkRlYnVnLURMTHxXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uRGVidWctRExMfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uRGVidWctRExMfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9LlJlbGVhc2UtRExMfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uUmVsZWFzZS1ETEx8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH0uUmVsZWFzZS1ETEx8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsxOENGOTlCNS0zQzYxLUVDM0QtOTUwOS0zQzk1MzM0QzNCODh9LlJlbGVhc2UtRExMfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKIAkJe0FGQzg4NDg0LTNBMkUtMzJCQy0yNUIyLTIzREY3NDFENEYzRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKIAkJe0FGQzg4NDg0LTNBMkUtMzJCQy0yNUIyLTIzREY3NDFENEYzRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAogCQl7QUZDODg0ODQtM0EyRS0zMkJDLTI1QjItMjNERjc0MUQ0RjNEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKQEAgLTI2MDcsMzggKzI2MzQsMzggQEAKIAkJe0VFQkVGQTc1LUM2MjUtQzgyMy1GRTk2LTlBRDY0ODg3QjU3RH0uUmVsZWFzZS1ETEx8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKIAkJe0VFQkVGQTc1LUM2MjUtQzgyMy1GRTk2LTlBRDY0ODg3QjU3RH0uUmVsZWFzZS1ETEx8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CiAJCXtFRUJFRkE3NS1DNjI1LUM4MjMtRkU5Ni05QUQ2NDg4N0I1N0R9LlJlbGVhc2UtRExMfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKLQkJezY3OUVBNTVDLTczOTktNTNFOC03OUYwLTgyRkJEQjNEREUwN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKLQkJezY3OUVBNTVDLTczOTktNTNFOC03OUYwLTgyRkJEQjNEREUwN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAotCQl7Njc5RUE1NUMtNzM5OS01M0U4LTc5RjAtODJGQkRCM0RERTA3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJezY3OUVBNTVDLTczOTktNTNFOC03OUYwLTgyRkJEQjNEREUwN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKLQkJezY3OUVBNTVDLTczOTktNTNFOC03OUYwLTgyRkJEQjNEREUwN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCi0JCXs2NzlFQTU1Qy03Mzk5LTUzRTgtNzlGMC04MkZCREIzRERFMDd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0Ci0JCXs2NzlFQTU1Qy03Mzk5LTUzRTgtNzlGMC04MkZCREIzRERFMDd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKLQkJezY3OUVBNTVDLTczOTktNTNFOC03OUYwLTgyRkJEQjNEREUwN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0Ci0JCXs2NzlFQTU1Qy03Mzk5LTUzRTgtNzlGMC04MkZCREIzRERFMDd9LkRlYnVnLURMTHxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgotCQl7Njc5RUE1NUMtNzM5OS01M0U4LTc5RjAtODJGQkRCM0RERTA3fS5EZWJ1Zy1ETEx8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCi0JCXs2NzlFQTU1Qy03Mzk5LTUzRTgtNzlGMC04MkZCREIzRERFMDd9LkRlYnVnLURMTHx4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0Ci0JCXs2NzlFQTU1Qy03Mzk5LTUzRTgtNzlGMC04MkZCREIzRERFMDd9LkRlYnVnLURMTHx4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAotCQl7Njc5RUE1NUMtNzM5OS01M0U4LTc5RjAtODJGQkRCM0RERTA3fS5SZWxlYXNlLURMTHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXs2NzlFQTU1Qy03Mzk5LTUzRTgtNzlGMC04MkZCREIzRERFMDd9LlJlbGVhc2UtRExMfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCi0JCXs2NzlFQTU1Qy03Mzk5LTUzRTgtNzlGMC04MkZCREIzRERFMDd9LlJlbGVhc2UtRExMfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAotCQl7Njc5RUE1NUMtNzM5OS01M0U4LTc5RjAtODJGQkRCM0RERTA3fS5SZWxlYXNlLURMTHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0Ci0JCXtCMTA3MTMwRS1FQTMzLUMxMTQtOUNCNi03OEExOEM5MjlGNjR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0JCXtCMTA3MTMwRS1FQTMzLUMxMTQtOUNCNi03OEExOEM5MjlGNjR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKLQkJe0IxMDcxMzBFLUVBMzMtQzExNC05Q0I2LTc4QTE4QzkyOUY2NH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXtCMTA3MTMwRS1FQTMzLUMxMTQtOUNCNi03OEExOEM5MjlGNjR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0Ci0JCXtCMTA3MTMwRS1FQTMzLUMxMTQtOUNCNi03OEExOEM5MjlGNjR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAotCQl7QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCi0JCXtCMTA3MTMwRS1FQTMzLUMxMTQtOUNCNi03OEExOEM5MjlGNjR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAotCQl7QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fS5EZWJ1Zy1ETEx8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKLQkJe0IxMDcxMzBFLUVBMzMtQzExNC05Q0I2LTc4QTE4QzkyOUY2NH0uRGVidWctRExMfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fS5EZWJ1Zy1ETEx8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAotCQl7QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fS5EZWJ1Zy1ETEx8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKLQkJe0IxMDcxMzBFLUVBMzMtQzExNC05Q0I2LTc4QTE4QzkyOUY2NH0uUmVsZWFzZS1ETEx8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgotCQl7QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fS5SZWxlYXNlLURMTHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgotCQl7QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fS5SZWxlYXNlLURMTHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKLQkJe0IxMDcxMzBFLUVBMzMtQzExNC05Q0I2LTc4QTE4QzkyOUY2NH0uUmVsZWFzZS1ETEx8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NEI5RUJCQUUtRDgzOC1FQzA5LTBCMTAtMkQ0NTIwRkJDMEZGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NEI5RUJCQUUtRDgzOC1FQzA5LTBCMTAtMkQ0NTIwRkJDMEZGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs0QjlFQkJBRS1EODM4LUVDMDktMEIxMC0yRDQ1MjBGQkMwRkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NEI5RUJCQUUtRDgzOC1FQzA5LTBCMTAtMkQ0NTIwRkJDMEZGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NEI5RUJCQUUtRDgzOC1FQzA5LTBCMTAtMkQ0NTIwRkJDMEZGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezRCOUVCQkFFLUQ4MzgtRUMwOS0wQjEwLTJENDUyMEZCQzBGRn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezRCOUVCQkFFLUQ4MzgtRUMwOS0wQjEwLTJENDUyMEZCQzBGRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NEI5RUJCQUUtRDgzOC1FQzA5LTBCMTAtMkQ0NTIwRkJDMEZGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezRCOUVCQkFFLUQ4MzgtRUMwOS0wQjEwLTJENDUyMEZCQzBGRn0uRGVidWctRExMfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs0QjlFQkJBRS1EODM4LUVDMDktMEIxMC0yRDQ1MjBGQkMwRkZ9LkRlYnVnLURMTHxXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezRCOUVCQkFFLUQ4MzgtRUMwOS0wQjEwLTJENDUyMEZCQzBGRn0uRGVidWctRExMfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezRCOUVCQkFFLUQ4MzgtRUMwOS0wQjEwLTJENDUyMEZCQzBGRn0uRGVidWctRExMfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs0QjlFQkJBRS1EODM4LUVDMDktMEIxMC0yRDQ1MjBGQkMwRkZ9LlJlbGVhc2UtRExMfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezRCOUVCQkFFLUQ4MzgtRUMwOS0wQjEwLTJENDUyMEZCQzBGRn0uUmVsZWFzZS1ETEx8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezRCOUVCQkFFLUQ4MzgtRUMwOS0wQjEwLTJENDUyMEZCQzBGRn0uUmVsZWFzZS1ETEx8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs0QjlFQkJBRS1EODM4LUVDMDktMEIxMC0yRDQ1MjBGQkMwRkZ9LlJlbGVhc2UtRExMfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0YwQTA2NzIzLTJFM0UtRkU5Ny0zNEI3LUEyQkEyNkQ5OEI4M30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0YwQTA2NzIzLTJFM0UtRkU5Ny0zNEI3LUEyQkEyNkQ5OEI4M30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7RjBBMDY3MjMtMkUzRS1GRTk3LTM0QjctQTJCQTI2RDk4QjgzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0YwQTA2NzIzLTJFM0UtRkU5Ny0zNEI3LUEyQkEyNkQ5OEI4M30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0YwQTA2NzIzLTJFM0UtRkU5Ny0zNEI3LUEyQkEyNkQ5OEI4M30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0YwQTA2NzIzLTJFM0UtRkU5Ny0zNEI3LUEyQkEyNkQ5OEI4M30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9LkRlYnVnLURMTHxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RjBBMDY3MjMtMkUzRS1GRTk3LTM0QjctQTJCQTI2RDk4QjgzfS5EZWJ1Zy1ETEx8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9LkRlYnVnLURMTHx4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9LkRlYnVnLURMTHx4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7RjBBMDY3MjMtMkUzRS1GRTk3LTM0QjctQTJCQTI2RDk4QjgzfS5SZWxlYXNlLURMTHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9LlJlbGVhc2UtRExMfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9LlJlbGVhc2UtRExMfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7RjBBMDY3MjMtMkUzRS1GRTk3LTM0QjctQTJCQTI2RDk4QjgzfS5SZWxlYXNlLURMTHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CiAJCXswRjc2MUZGMy0zNDJBLUM0MjktNzExRi1GNzYxODFCQUE1MkR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCiAJCXswRjc2MUZGMy0zNDJBLUM0MjktNzExRi1GNzYxODFCQUE1MkR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKIAkJezBGNzYxRkYzLTM0MkEtQzQyOS03MTFGLUY3NjE4MUJBQTUyRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbi9ncnBjKytfcmVmbGVjdGlvbl9jb2RlZ2VuLnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbi9ncnBjKytfcmVmbGVjdGlvbl9jb2RlZ2VuLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDllMTBjMgotLS0gL2Rldi9udWxsCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjKytfcmVmbGVjdGlvbl9jb2RlZ2VuL2dycGMrK19yZWZsZWN0aW9uX2NvZGVnZW4udmN4cHJvagpAQCAtMCwwICsxLDE2OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxMi4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDOEE5MjVCRi00MzczLUQ4NUQtNjBBRS05NkNEQ0JCRjMzRjJ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8SWdub3JlV2FybkludERpckluVGVtcERldGVjdGVkPnRydWU8L0lnbm9yZVdhcm5JbnREaXJJblRlbXBEZXRlY3RlZD4KKyAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpSW50RGlyXCQoTVNCdWlsZFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnMTAuMCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnMTEuMCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnMTIuMCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnMTQuMCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJz09J0RlYnVnJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKSc9PSdSZWxlYXNlJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xnbG9iYWwucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHdpbnNvY2sucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJz09J0RlYnVnJyI+CisgICAgPFRhcmdldE5hbWU+Z3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbjwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJz09J1JlbGVhc2UnIj4KKyAgICA8VGFyZ2V0TmFtZT5ncnBjKytfcmVmbGVjdGlvbl9jb2RlZ2VuPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U0RMQ2hlY2s+dHJ1ZTwvU0RMQ2hlY2s+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRpb249IiQoSmVua2lucykiPk5vbmU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8TWluaW1hbFJlYnVpbGQgQ29uZGl0aW9uPSIkKEplbmtpbnMpIj5mYWxzZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24gQ29uZGl0aW9uPSIhJChKZW5raW5zKSI+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IiQoSmVua2lucykiPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisKKyAgICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U0RMQ2hlY2s+dHJ1ZTwvU0RMQ2hlY2s+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRpb249IiQoSmVua2lucykiPk5vbmU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8TWluaW1hbFJlYnVpbGQgQ29uZGl0aW9uPSIkKEplbmtpbnMpIj5mYWxzZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24gQ29uZGl0aW9uPSIhJChKZW5raW5zKSI+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IiQoSmVua2lucykiPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisKKyAgICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPk5vdFVzaW5nPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8U0RMQ2hlY2s+dHJ1ZTwvU0RMQ2hlY2s+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8VHJlYXRXYXJuaW5nQXNFcnJvcj50cnVlPC9UcmVhdFdhcm5pbmdBc0Vycm9yPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQgQ29uZGl0aW9uPSIkKEplbmtpbnMpIj5Ob25lPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPE1pbmltYWxSZWJ1aWxkIENvbmRpdGlvbj0iJChKZW5raW5zKSI+ZmFsc2U8L01pbmltYWxSZWJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uIENvbmRpdGlvbj0iISQoSmVua2lucykiPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24gQ29uZGl0aW9uPSIkKEplbmtpbnMpIj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorCisgICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Tm90VXNpbmc8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxTRExDaGVjaz50cnVlPC9TRExDaGVjaz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxUcmVhdFdhcm5pbmdBc0Vycm9yPnRydWU8L1RyZWF0V2FybmluZ0FzRXJyb3I+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdCBDb25kaXRpb249IiQoSmVua2lucykiPk5vbmU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8TWluaW1hbFJlYnVpbGQgQ29uZGl0aW9uPSIkKEplbmtpbnMpIj5mYWxzZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24gQ29uZGl0aW9uPSIhJChKZW5raW5zKSI+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IiQoSmVua2lucykiPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHJlZmxlY3Rpb25cdjFhbHBoYVxyZWZsZWN0aW9uLnBiLmNjIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHJlZmxlY3Rpb25cdjFhbHBoYVxyZWZsZWN0aW9uLnBiLmgiPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNccmVmbGVjdGlvblx2MWFscGhhXHJlZmxlY3Rpb24uZ3JwYy5wYi5jYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1xyZWZsZWN0aW9uXHYxYWxwaGFccmVmbGVjdGlvbi5ncnBjLnBiLmgiPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFRhcmdldCBOYW1lPSJFbnN1cmVOdUdldFBhY2thZ2VCdWlsZEltcG9ydHMiIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8RXJyb3JUZXh0PlRoaXMgcHJvamVjdCByZWZlcmVuY2VzIE51R2V0IHBhY2thZ2UocykgdGhhdCBhcmUgbWlzc2luZyBvbiB0aGlzIGNvbXB1dGVyLiBFbmFibGUgTnVHZXQgUGFja2FnZSBSZXN0b3JlIHRvIGRvd25sb2FkIHRoZW0uICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly9nby5taWNyb3NvZnQuY29tL2Z3bGluay8/TGlua0lEPTMyMjEwNS4gVGhlIG1pc3NpbmcgZmlsZSBpcyB7MH0uPC9FcnJvclRleHQ+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KKwpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK19yZWZsZWN0aW9uX2NvZGVnZW4vZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbi52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbi9ncnBjKytfcmVmbGVjdGlvbl9jb2RlZ2VuLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzdkY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMrK19yZWZsZWN0aW9uX2NvZGVnZW4vZ3JwYysrX3JlZmxlY3Rpb25fY29kZWdlbi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXHJlZmxlY3Rpb25cdjFhbHBoYVxyZWZsZWN0aW9uLnByb3RvIj4KKyAgICAgIDxGaWx0ZXI+c3JjXHByb3RvXGdycGNccmVmbGVjdGlvblx2MWFscGhhPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorCisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2Q2ZjQ1ZDQ5LTkyZGItMDBmNy0zZGQ0LWU1M2Y1NzY4ZDgwY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNccHJvdG8iPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezMyYjk1MWY0LWNlZjEtMjRhMy1mZmI5LWJiMjI5ZjBjZGQ2YX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNccHJvdG9cZ3JwYyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OGZkY2I5ZjMtNGQ4Ni0yZjQ5LTVjMTUtYzkyZTBlMGY0ZmJhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xwcm90b1xncnBjXHJlZmxlY3Rpb24iPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezA5OGEwNzRjLWYzZGUtMjg0MC04MDA5LTFhMzg0MGFmMWVmY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNccHJvdG9cZ3JwY1xyZWZsZWN0aW9uXHYxYWxwaGEiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezIxOWZmMzcxLTdkM2EtMTMwYy01NzkyLWJlMzY1MTRhNGU5OH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgorCmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2oKaW5kZXggMzM0ODVkMy4uMTIwOWEwMSAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjL2dycGMudmN4cHJvagpAQCAtNDQwLDYgKzQ0MCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2xpZW50X2NvbmZpZ1xzdWJjaGFubmVsX2NhbGxfaG9sZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2xpZW50X2NvbmZpZ1xzdWJjaGFubmVsX2luZGV4LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2xpZW50X2NvbmZpZ1x1cmlfcGFyc2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbGJfcG9saWN5XGdycGNsYlxncnBjbGIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiXGxvYWRfYmFsYW5jZXJfYXBpLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbGJfcG9saWN5XGdycGNsYlxwcm90b1xncnBjXGxiXHYxXGxvYWRfYmFsYW5jZXIucGIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRoaXJkX3BhcnR5XG5hbm9wYlxwYi5oIiAvPgpAQCAtNDQ5LDExICs0NTAsMTMgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZ1xsb2FkX3JlcG9ydGluZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxvYWRfcmVwb3J0aW5nXGxvYWRfcmVwb3J0aW5nX2ZpbHRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xhZ2dyZWdhdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xiYXNlX3Jlc291cmNlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xjZW5zdXNfaW50ZXJmYWNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGNlbnN1c19ycGNfc3RhdHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcZ2VuXGNlbnN1cy5wYi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xncnBjX2ZpbHRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xtbG9nLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJlc291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJwY19tZXRyaWNfaWQuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CkBAIC03ODcsNiArNzkwLDggQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXGNsaWVudFxpbnNlY3VyZVxjaGFubmVsX2NyZWF0ZV9wb3NpeC5jIj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiXGdycGNsYi5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiXGxvYWRfYmFsYW5jZXJfYXBpLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJccHJvdG9cZ3JwY1xsYlx2MVxsb2FkX2JhbGFuY2VyLnBiLmMiPgpAQCAtODA5LDYgKzgxNCw4IEBACiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbG9hZF9yZXBvcnRpbmdcbG9hZF9yZXBvcnRpbmdfZmlsdGVyLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xiYXNlX3Jlc291cmNlcy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcY29udGV4dC5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcZ2VuXGNlbnN1cy5wYi5jIj4KQEAgLTgyNyw2ICs4MzQsOCBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xwbGFjZWhvbGRlcnMuYyI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJlc291cmNlLmMiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1x0cmFjaW5nLmMiPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVccGx1Z2luX3JlZ2lzdHJ5XGdycGNfcGx1Z2luX3JlZ2lzdHJ5LmMiPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGMvZ3JwYy52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2ouZmlsdGVycwppbmRleCBhMjFkODczLi45MjY4M2EyIDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2ouZmlsdGVycworKysgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwYy9ncnBjLnZjeHByb2ouZmlsdGVycwpAQCAtNDk2LDYgKzQ5Niw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcdHJhbnNwb3J0XGNodHRwMlxjbGllbnRcaW5zZWN1cmVcY2hhbm5lbF9jcmVhdGVfcG9zaXguYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFx0cmFuc3BvcnRcY2h0dHAyXGNsaWVudFxpbnNlY3VyZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcZ3JwY2xiLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcbGJfcG9saWN5XGdycGNsYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcbG9hZF9iYWxhbmNlcl9hcGkuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01MjksNiArNTMyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZ1xsb2FkX3JlcG9ydGluZ19maWx0ZXIuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xiYXNlX3Jlc291cmNlcy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xjb250ZXh0LmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01NTYsNiArNTYyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccGxhY2Vob2xkZXJzLmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJlc291cmNlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHRyYWNpbmcuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEwNzksNiArMTA4OCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2xpZW50X2NvbmZpZ1x1cmlfcGFyc2VyLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2xpZW50X2NvbmZpZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcZ3JwY2xiLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcbGJfcG9saWN5XGdycGNsYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcbG9hZF9iYWxhbmNlcl9hcGkuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMTA2LDYgKzExMTgsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xhZ2dyZWdhdGlvbi5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xiYXNlX3Jlc291cmNlcy5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xjZW5zdXNfaW50ZXJmYWNlLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMTIxLDYgKzExMzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xtbG9nLmgiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJlc291cmNlLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJwY19tZXRyaWNfaWQuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Rlc3RfdXRpbC9ncnBjX3Rlc3RfdXRpbC52Y3hwcm9qIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdGVzdF91dGlsL2dycGNfdGVzdF91dGlsLnZjeHByb2oKaW5kZXggZjBhOGY3Yi4uY2ZhMjlkMCAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdGVzdF91dGlsL2dycGNfdGVzdF91dGlsLnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdGVzdF91dGlsL2dycGNfdGVzdF91dGlsLnZjeHByb2oKQEAgLTE0Nyw2ICsxNDcsMzUgQEAKICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogCiAgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcYnl0ZV9idWZmZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xieXRlX2J1ZmZlcl9yZWFkZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xjb21wcmVzc2lvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGdycGMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xncnBjX3Bvc2l4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcc3RhdHVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGJ5dGVfYnVmZmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGJ5dGVfYnVmZmVyX3JlYWRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxjb21wcmVzc2lvbl90eXBlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxjb25uZWN0aXZpdHlfc3RhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cZ3JwY190eXBlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxwcm9wYWdhdGlvbl9iaXRzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN0YXR1cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhbGxvYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX2djY19hdG9taWMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtX2djY19zeW5jLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV93aW5kb3dzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGxvZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxwb3J0X3BsYXRmb3JtLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHNsaWNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHNsaWNlX2J1ZmZlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfZ2VuZXJpYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX3Bvc2l4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXHN5bmNfd2luZG93cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblx0aW1lLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZGF0YVxzc2xfdGVzdF9kYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcc2VjdXJpdHlcb2F1dGgyX3V0aWxzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxjcV92ZXJpZmllci5oIiAvPgpAQCAtMTYwLDYgKzE4OSw4NSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXHV0aWxccG9ydC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXHV0aWxccG9ydF9zZXJ2ZXJfY2xpZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcdXRpbFxzbGljZV9zcGxpdHRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9hcmdzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX3N0YWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX3N0YWNrX2J1aWxkZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNvbXByZXNzX2ZpbHRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY29ubmVjdGVkX2NoYW5uZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNvbnRleHQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGhhbmRzaGFrZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGh0dHBfY2xpZW50X2ZpbHRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcaHR0cF9zZXJ2ZXJfZmlsdGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY29tcHJlc3Npb25cYWxnb3JpdGhtX21ldGFkYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY29tcHJlc3Npb25cbWVzc2FnZV9jb21wcmVzcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGRlYnVnXHRyYWNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaHR0cFxmb3JtYXRfcmVxdWVzdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBcaHR0cGNsaS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBccGFyc2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcY2xvc3VyZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGVuZHBvaW50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZW5kcG9pbnRfcGFpci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGVycm9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXZfZXBvbGxfbGludXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxldl9wb2xsX2FuZF9lcG9sbF9wb3NpeC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGV2X3BvbGxfcG9zaXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxldl9wb3NpeC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGV4ZWNfY3R4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXhlY3V0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxpb2NwX3dpbmRvd3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxpb21nci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGlvbWdyX2ludGVybmFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcaW9tZ3JfcG9zaXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxsb2FkX2ZpbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxuZXR3b3JrX3N0YXR1c190cmFja2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccG9sbGluZ19lbnRpdHkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxwb2xsc2V0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccG9sbHNldF9zZXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxwb2xsc2V0X3NldF93aW5kb3dzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccG9sbHNldF93aW5kb3dzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccmVzb2x2ZV9hZGRyZXNzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcc29ja2FkZHIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxzb2NrYWRkcl9wb3NpeC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHNvY2thZGRyX3V0aWxzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcc29ja2FkZHJfd2luZG93cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHNvY2tldF91dGlsc19wb3NpeC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHNvY2tldF93aW5kb3dzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdGNwX2NsaWVudC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRjcF9wb3NpeC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRjcF9zZXJ2ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0Y3Bfd2luZG93cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRpbWVfYXZlcmFnZWRfc3RhdHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0aW1lci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRpbWVyX2hlYXAuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx1ZHBfc2VydmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdW5peF9zb2NrZXRzX3Bvc2l4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcd2FrZXVwX2ZkX3BpcGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3YWtldXBfZmRfcG9zaXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3b3JrcXVldWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3b3JrcXVldWVfcG9zaXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3b3JrcXVldWVfd2luZG93cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGpzb25canNvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGpzb25canNvbl9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxqc29uXGpzb25fcmVhZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcanNvblxqc29uX3dyaXRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYXBpX3RyYWNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjYWxsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjYWxsX3Rlc3Rfb25seS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9pbml0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX3N0YWNrX3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNvbXBsZXRpb25fcXVldWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGV2ZW50X3N0cmluZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcaW5pdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcbGFtZV9jbGllbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHNlcnZlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxieXRlX3N0cmVhbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjb25uZWN0aXZpdHlfc3RhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGFfYmF0Y2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcc3RhdGljX21ldGFkYXRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHRyYW5zcG9ydC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnRfaW1wbC5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGRhdGFcY2xpZW50X2NlcnRzLmMiPgpAQCAtMTk2LDYgKzMwNCwxODIgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVx1dGlsXHNsaWNlX3NwbGl0dGVyLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9hcmdzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9zdGFjay5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNoYW5uZWxfc3RhY2tfYnVpbGRlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNvbXByZXNzX2ZpbHRlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNvbm5lY3RlZF9jaGFubmVsLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcaGFuZHNoYWtlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGh0dHBfY2xpZW50X2ZpbHRlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGh0dHBfc2VydmVyX2ZpbHRlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjb21wcmVzc2lvblxjb21wcmVzc2lvbi5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjb21wcmVzc2lvblxtZXNzYWdlX2NvbXByZXNzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGRlYnVnXHRyYWNlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBcZm9ybWF0X3JlcXVlc3QuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaHR0cFxodHRwY2xpLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBccGFyc2VyLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGNsb3N1cmUuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZW5kcG9pbnQuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZW5kcG9pbnRfcGFpcl9wb3NpeC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxlbmRwb2ludF9wYWlyX3dpbmRvd3MuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXJyb3IuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXZfZXBvbGxfbGludXguYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXZfcG9sbF9hbmRfZXBvbGxfcG9zaXguYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXZfcG9sbF9wb3NpeC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxldl9wb3NpeC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxleGVjX2N0eC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxleGVjdXRvci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxpb2NwX3dpbmRvd3MuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcaW9tZ3IuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcaW9tZ3JfcG9zaXguYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcaW9tZ3Jfd2luZG93cy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxsb2FkX2ZpbGUuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcbmV0d29ya19zdGF0dXNfdHJhY2tlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxwb2xsaW5nX2VudGl0eS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxwb2xsc2V0X3NldF93aW5kb3dzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHBvbGxzZXRfd2luZG93cy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxyZXNvbHZlX2FkZHJlc3NfcG9zaXguYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccmVzb2x2ZV9hZGRyZXNzX3dpbmRvd3MuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcc29ja2FkZHJfdXRpbHMuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcc29ja2V0X3V0aWxzX2NvbW1vbl9wb3NpeC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxzb2NrZXRfdXRpbHNfbGludXguYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcc29ja2V0X3V0aWxzX3Bvc2l4LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHNvY2tldF93aW5kb3dzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRjcF9jbGllbnRfcG9zaXguYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdGNwX2NsaWVudF93aW5kb3dzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRjcF9wb3NpeC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0Y3Bfc2VydmVyX3Bvc2l4LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRjcF9zZXJ2ZXJfd2luZG93cy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0Y3Bfd2luZG93cy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0aW1lX2F2ZXJhZ2VkX3N0YXRzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRpbWVyLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRpbWVyX2hlYXAuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdWRwX3NlcnZlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx1bml4X3NvY2tldHNfcG9zaXguYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdW5peF9zb2NrZXRzX3Bvc2l4X25vb3AuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcd2FrZXVwX2ZkX2V2ZW50ZmQuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcd2FrZXVwX2ZkX25vc3BlY2lhbC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3YWtldXBfZmRfcGlwZS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3YWtldXBfZmRfcG9zaXguYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcd29ya3F1ZXVlX3Bvc2l4LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHdvcmtxdWV1ZV93aW5kb3dzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGpzb25canNvbi5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxqc29uXGpzb25fcmVhZGVyLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGpzb25canNvbl9zdHJpbmcuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcanNvblxqc29uX3dyaXRlci5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGFsYXJtLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYXBpX3RyYWNlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYnl0ZV9idWZmZXIuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxieXRlX2J1ZmZlcl9yZWFkZXIuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjYWxsLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2FsbF9kZXRhaWxzLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2FsbF9sb2dfYmF0Y2guYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9pbml0LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9waW5nLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbF9zdGFja190eXBlLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY29tcGxldGlvbl9xdWV1ZS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGV2ZW50X3N0cmluZy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGxhbWVfY2xpZW50LmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcbWV0YWRhdGFfYXJyYXkuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxzZXJ2ZXIuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVx2YWxpZGF0ZV9tZXRhZGF0YS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXHZlcnNpb24uYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XGJ5dGVfc3RyZWFtLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjb25uZWN0aXZpdHlfc3RhdGUuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XG1ldGFkYXRhLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxtZXRhZGF0YV9iYXRjaC5jIj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcc3RhdGljX21ldGFkYXRhLmMiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnQuYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHRyYW5zcG9ydF9vcF9zdHJpbmcuYyI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcdmN4cHJvalwuXGdwcl90ZXN0X3V0aWxcZ3ByX3Rlc3RfdXRpbC52Y3hwcm9qIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Rlc3RfdXRpbC9ncnBjX3Rlc3RfdXRpbC52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovZ3JwY190ZXN0X3V0aWwvZ3JwY190ZXN0X3V0aWwudmN4cHJvai5maWx0ZXJzCmluZGV4IGExZDMxZWIuLjkxMzc3NGQgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Rlc3RfdXRpbC9ncnBjX3Rlc3RfdXRpbC52Y3hwcm9qLmZpbHRlcnMKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdGVzdF91dGlsL2dycGNfdGVzdF91dGlsLnZjeHByb2ouZmlsdGVycwpAQCAtNTIsNiArNTIsMzUzIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcdXRpbFxzbGljZV9zcGxpdHRlci5jIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXHV0aWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNoYW5uZWxfYXJncy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNoYW5uZWw8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNoYW5uZWxfc3RhY2suYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjaGFubmVsX3N0YWNrX2J1aWxkZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjb21wcmVzc19maWx0ZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxjb25uZWN0ZWRfY2hhbm5lbC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNoYW5uZWw8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGhhbmRzaGFrZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxodHRwX2NsaWVudF9maWx0ZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxodHRwX3NlcnZlcl9maWx0ZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY29tcHJlc3Npb25cY29tcHJlc3Npb24uYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjb21wcmVzc2lvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNvbXByZXNzaW9uXG1lc3NhZ2VfY29tcHJlc3MuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjb21wcmVzc2lvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGRlYnVnXHRyYWNlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcZGVidWc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxodHRwXGZvcm1hdF9yZXF1ZXN0LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaHR0cDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGh0dHBcaHR0cGNsaS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGh0dHA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxodHRwXHBhcnNlci5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGh0dHA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxjbG9zdXJlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxlbmRwb2ludC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZW5kcG9pbnRfcGFpcl9wb3NpeC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZW5kcG9pbnRfcGFpcl93aW5kb3dzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxlcnJvci5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXZfZXBvbGxfbGludXguYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGV2X3BvbGxfYW5kX2Vwb2xsX3Bvc2l4LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxldl9wb2xsX3Bvc2l4LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxldl9wb3NpeC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXhlY19jdHguYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGV4ZWN1dG9yLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxpb2NwX3dpbmRvd3MuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGlvbWdyLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxpb21ncl9wb3NpeC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcaW9tZ3Jfd2luZG93cy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcbG9hZF9maWxlLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxuZXR3b3JrX3N0YXR1c190cmFja2VyLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxwb2xsaW5nX2VudGl0eS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccG9sbHNldF9zZXRfd2luZG93cy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccG9sbHNldF93aW5kb3dzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxyZXNvbHZlX2FkZHJlc3NfcG9zaXguYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHJlc29sdmVfYWRkcmVzc193aW5kb3dzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxzb2NrYWRkcl91dGlscy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcc29ja2V0X3V0aWxzX2NvbW1vbl9wb3NpeC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcc29ja2V0X3V0aWxzX2xpbnV4LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxzb2NrZXRfdXRpbHNfcG9zaXguYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHNvY2tldF93aW5kb3dzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0Y3BfY2xpZW50X3Bvc2l4LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0Y3BfY2xpZW50X3dpbmRvd3MuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRjcF9wb3NpeC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdGNwX3NlcnZlcl9wb3NpeC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdGNwX3NlcnZlcl93aW5kb3dzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0Y3Bfd2luZG93cy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdGltZV9hdmVyYWdlZF9zdGF0cy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdGltZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRpbWVyX2hlYXAuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHVkcF9zZXJ2ZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHVuaXhfc29ja2V0c19wb3NpeC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdW5peF9zb2NrZXRzX3Bvc2l4X25vb3AuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHdha2V1cF9mZF9ldmVudGZkLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3YWtldXBfZmRfbm9zcGVjaWFsLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3YWtldXBfZmRfcGlwZS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcd2FrZXVwX2ZkX3Bvc2l4LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3b3JrcXVldWVfcG9zaXguYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHdvcmtxdWV1ZV93aW5kb3dzLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxqc29uXGpzb24uYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxqc29uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcanNvblxqc29uX3JlYWRlci5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGpzb248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxqc29uXGpzb25fc3RyaW5nLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcanNvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGpzb25canNvbl93cml0ZXIuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxqc29uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxhbGFybS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGFwaV90cmFjZS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGJ5dGVfYnVmZmVyLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcYnl0ZV9idWZmZXJfcmVhZGVyLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2FsbC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNhbGxfZGV0YWlscy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNhbGxfbG9nX2JhdGNoLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcY2hhbm5lbC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfaW5pdC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfcGluZy5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWxfc3RhY2tfdHlwZS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNvbXBsZXRpb25fcXVldWUuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxldmVudF9zdHJpbmcuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxsYW1lX2NsaWVudC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXG1ldGFkYXRhX2FycmF5LmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2Vcc2VydmVyLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcdmFsaWRhdGVfbWV0YWRhdGEuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVx2ZXJzaW9uLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxieXRlX3N0cmVhbS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjb25uZWN0aXZpdHlfc3RhdGUuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGEuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGFfYmF0Y2guYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcc3RhdGljX21ldGFkYXRhLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHRyYW5zcG9ydC5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnRfb3Bfc3RyaW5nLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGJ5dGVfYnVmZmVyLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xieXRlX2J1ZmZlcl9yZWFkZXIuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGNvbXByZXNzaW9uLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xncnBjLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xncnBjX3Bvc2l4LmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xzdGF0dXMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwYzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxieXRlX2J1ZmZlci5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxieXRlX2J1ZmZlcl9yZWFkZXIuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29tcHJlc3Npb25fdHlwZXMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cY29ubmVjdGl2aXR5X3N0YXRlLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGdycGNfdHlwZXMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccHJvcGFnYXRpb25fYml0cy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzdGF0dXMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYWxsb2MuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cYXRtLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV9nY2NfYXRvbWljLmgiPgorICAgICAgPEZpbHRlcj5pbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxpbmNsdWRlXGdycGNcaW1wbFxjb2RlZ2VuXGF0bV9nY2Nfc3luYy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxhdG1fd2luZG93cy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxsb2cuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5ccG9ydF9wbGF0Zm9ybS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzbGljZV9idWZmZXIuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luYy5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX2dlbmVyaWMuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cc3luY19wb3NpeC5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5caW5jbHVkZVxncnBjXGltcGxcY29kZWdlblxzeW5jX3dpbmRvd3MuaCI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW48L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXGluY2x1ZGVcZ3JwY1xpbXBsXGNvZGVnZW5cdGltZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW5jbHVkZVxncnBjXGltcGxcY29kZWdlbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGRhdGFcc3NsX3Rlc3RfZGF0YS5oIj4KQEAgLTkzLDkgKzQ0MCwyOTEgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVx1dGlsXHNsaWNlX3NwbGl0dGVyLmgiPgogICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcdXRpbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9hcmdzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2hhbm5lbDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY2hhbm5lbF9zdGFjay5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNoYW5uZWw8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNoYW5uZWxfc3RhY2tfYnVpbGRlci5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNoYW5uZWw8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNvbXByZXNzX2ZpbHRlci5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNoYW5uZWw8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGNvbm5lY3RlZF9jaGFubmVsLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY2hhbm5lbDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGNoYW5uZWxcY29udGV4dC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGNoYW5uZWw8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjaGFubmVsXGhhbmRzaGFrZXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxodHRwX2NsaWVudF9maWx0ZXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY2hhbm5lbFxodHRwX3NlcnZlcl9maWx0ZXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxjaGFubmVsPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcY29tcHJlc3Npb25cYWxnb3JpdGhtX21ldGFkYXRhLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY29tcHJlc3Npb248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxjb21wcmVzc2lvblxtZXNzYWdlX2NvbXByZXNzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcY29tcHJlc3Npb248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxkZWJ1Z1x0cmFjZS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGRlYnVnPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaHR0cFxmb3JtYXRfcmVxdWVzdC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGh0dHA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxodHRwXGh0dHBjbGkuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxodHRwPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaHR0cFxwYXJzZXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxodHRwPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcY2xvc3VyZS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZW5kcG9pbnQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGVuZHBvaW50X3BhaXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGVycm9yLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxldl9lcG9sbF9saW51eC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXZfcG9sbF9hbmRfZXBvbGxfcG9zaXguaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGV2X3BvbGxfcG9zaXguaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGV2X3Bvc2l4LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxleGVjX2N0eC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcZXhlY3V0b3IuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGlvY3Bfd2luZG93cy5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcaW9tZ3IuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXGlvbWdyX2ludGVybmFsLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxpb21ncl9wb3NpeC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcbG9hZF9maWxlLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxuZXR3b3JrX3N0YXR1c190cmFja2VyLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxwb2xsaW5nX2VudGl0eS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccG9sbHNldC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccG9sbHNldF9zZXQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHBvbGxzZXRfc2V0X3dpbmRvd3MuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHBvbGxzZXRfd2luZG93cy5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JccmVzb2x2ZV9hZGRyZXNzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxzb2NrYWRkci5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcc29ja2FkZHJfcG9zaXguaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHNvY2thZGRyX3V0aWxzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxzb2NrYWRkcl93aW5kb3dzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclxzb2NrZXRfdXRpbHNfcG9zaXguaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHNvY2tldF93aW5kb3dzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0Y3BfY2xpZW50LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0Y3BfcG9zaXguaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRjcF9zZXJ2ZXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHRjcF93aW5kb3dzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0aW1lX2F2ZXJhZ2VkX3N0YXRzLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx0aW1lci5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdGltZXJfaGVhcC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdWRwX3NlcnZlci5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3JcdW5peF9zb2NrZXRzX3Bvc2l4LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3YWtldXBfZmRfcGlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcd2FrZXVwX2ZkX3Bvc2l4LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcaW9tZ3I8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxpb21nclx3b3JrcXVldWUuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGlvbWdyXHdvcmtxdWV1ZV9wb3NpeC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGlvbWdyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcaW9tZ3Jcd29ya3F1ZXVlX3dpbmRvd3MuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxpb21ncjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGpzb25canNvbi5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGpzb248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxqc29uXGpzb25fY29tbW9uLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcanNvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXGpzb25canNvbl9yZWFkZXIuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxqc29uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcanNvblxqc29uX3dyaXRlci5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXGpzb248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGFwaV90cmFjZS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNhbGwuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjYWxsX3Rlc3Rfb25seS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGNoYW5uZWwuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX2luaXQuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjaGFubmVsX3N0YWNrX3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlxzdXJmYWNlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcc3VyZmFjZVxjb21wbGV0aW9uX3F1ZXVlLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcZXZlbnRfc3RyaW5nLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2VcaW5pdC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHN1cmZhY2U8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlxzdXJmYWNlXGxhbWVfY2xpZW50LmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHN1cmZhY2Vcc2VydmVyLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcc3VyZmFjZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxieXRlX3N0cmVhbS5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFxjb25uZWN0aXZpdHlfc3RhdGUuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGEuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcbWV0YWRhdGFfYmF0Y2guaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGxpYlx0cmFuc3BvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGxpYlx0cmFuc3BvcnRcc3RhdGljX21ldGFkYXRhLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxsaWJcdHJhbnNwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxsaWJcdHJhbnNwb3J0XHRyYW5zcG9ydC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcbGliXHRyYW5zcG9ydFx0cmFuc3BvcnRfaW1wbC5oIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcbGliXHRyYW5zcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KIAogICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW5jbHVkZSI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NTAxMjk0NDAtYWZmNy03ZGY3LTY4MmMtYjk2NzFiZTE5YTZmfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImluY2x1ZGVcZ3JwYyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZDQ0OGIwNzgtOTVhNi02ZmNhLWZlNGEtOGI0NGRkNzFmMzU5fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImluY2x1ZGVcZ3JwY1xpbXBsIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszMTRhNjgwMS02ZmUzLTkyMTEtMzNkOC1lY2YzMzMyYzExNTF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iaW5jbHVkZVxncnBjXGltcGxcY29kZWdlbiI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OGU5N2YxZTEtZjRkMS1hNTZlLTA4MzctNzkwMTc3OGZiM2I5fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InNyYyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57N2QxMDdkN2MtMWRhMy05NTI1LTNiYTEtM2E0MTFiNTUyZWE4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xjb3JlIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmN2JmYWM5MS01ZWIyLWRlYTctNDYwMS02YzYzZWRiYmY5OTd9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcbGliIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmNGU4YzYxZS0xY2E2LTBmZGQtN2I1ZS1iN2Y5YTMwYzlhMjF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcbGliXGNoYW5uZWwiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezFjZDE1MDNjLWJlYzAtNWFkZS1jNzVmLWFhMjVjODA5NzVlY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxsaWJcY29tcHJlc3Npb24iPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezA5NjMyNTgyLTJjYzMtNTYxOC1kNjczLTY1ZDM4ODRmOGNlNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxsaWJcZGVidWciPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezJjMWE3MmU5LTg4NmUtODA4Mi05ZDJmLTBmYzljYjNhYjk5Nn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxsaWJcaHR0cCI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NDg2MmVjY2UtZmEwNy1lYjVlLTVjMDUtYmZhNzUzYzhiZmU1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xjb3JlXGxpYlxpb21nciI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZmM3ZjQ4OGUtMDhiNC04MzY2LTM3MjAtMWY3ZmZhYTBiMGIzfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xjb3JlXGxpYlxqc29uIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4OWJjOGY4My1lMjlhLWRkYWItOGY2Yi0yMmRmMTFjZGM4Njd9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXGNvcmVcbGliXHN1cmZhY2UiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezdmMmI3ZGNhLTM5NWYtOTRkZC1jOWFkLTlhMjg2YmQ5NzUxZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNcY29yZVxsaWJcdHJhbnNwb3J0Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns1MjQ5ZTg4NC1lYTA3LTY3ODItNTMxZC1lYzYyMmM1NGI5YWZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0idGVzdCI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YTI3ODNkZTMtNGZjZi03MThkLWE4NTktYzIxMDgzNTBmZjMzfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvaiBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvagppbmRleCAzYTM2MTBkNS4uYWMyNzM1NSAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdW5zZWN1cmUvZ3JwY191bnNlY3VyZS52Y3hwcm9qCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvagpAQCAtNDA3LDYgKzQwNyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2xpZW50X2NvbmZpZ1x1cmlfcGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbG9hZF9yZXBvcnRpbmdcbG9hZF9yZXBvcnRpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZ1xsb2FkX3JlcG9ydGluZ19maWx0ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiXGdycGNsYi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcbG9hZF9iYWxhbmNlcl9hcGkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiXHByb3RvXGdycGNcbGJcdjFcbG9hZF9iYWxhbmNlci5wYi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGhpcmRfcGFydHlcbmFub3BiXHBiLmgiIC8+CkBAIC00MTQsMTEgKzQxNSwxMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGhpcmRfcGFydHlcbmFub3BiXHBiX2RlY29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGhpcmRfcGFydHlcbmFub3BiXHBiX2VuY29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xhZ2dyZWdhdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xiYXNlX3Jlc291cmNlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xjZW5zdXNfaW50ZXJmYWNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGNlbnN1c19ycGNfc3RhdHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcZ2VuXGNlbnN1cy5wYi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xncnBjX2ZpbHRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xtbG9nLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJlc291cmNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHJwY19tZXRyaWNfaWQuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CkBAIC03MDIsNiArNzA1LDggQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZ1xsb2FkX3JlcG9ydGluZ19maWx0ZXIuYyI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbGJfcG9saWN5XGdycGNsYlxncnBjbGIuYyI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcbGJfcG9saWN5XGdycGNsYlxsb2FkX2JhbGFuY2VyX2FwaS5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiXHByb3RvXGdycGNcbGJcdjFcbG9hZF9iYWxhbmNlci5wYi5jIj4KQEAgLTcxNiw2ICs3MjEsOCBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxyb3VuZF9yb2Jpblxyb3VuZF9yb2Jpbi5jIj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYmFzZV9yZXNvdXJjZXMuYyI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGNvbnRleHQuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXGdlblxjZW5zdXMucGIuYyI+CkBAIC03MzQsNiArNzQxLDggQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccGxhY2Vob2xkZXJzLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xyZXNvdXJjZS5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcdHJhY2luZy5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXHBsdWdpbl9yZWdpc3RyeVxncnBjX3Vuc2VjdXJlX3BsdWdpbl9yZWdpc3RyeS5jIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL2dycGNfdW5zZWN1cmUvZ3JwY191bnNlY3VyZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYmVjMDg5ZS4uMjc2ZmUzN2UgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvai5maWx0ZXJzCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai9ncnBjX3Vuc2VjdXJlL2dycGNfdW5zZWN1cmUudmN4cHJvai5maWx0ZXJzCkBAIC00MjEsNiArNDIxLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZ1xsb2FkX3JlcG9ydGluZ19maWx0ZXIuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcZ3JwY2xiLmMiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcbGJfcG9saWN5XGdycGNsYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcbG9hZF9iYWxhbmNlcl9hcGkuYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00NDIsNiArNDQ1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsYl9wb2xpY3lccm91bmRfcm9iaW5ccm91bmRfcm9iaW4uYyI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxsYl9wb2xpY3lccm91bmRfcm9iaW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYmFzZV9yZXNvdXJjZXMuYyI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcY29udGV4dC5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDY5LDYgKzQ3NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXHBsYWNlaG9sZGVycy5jIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1xyZXNvdXJjZS5jIj4KKyAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGNlbnN1c1x0cmFjaW5nLmMiPgogICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcY2Vuc3VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05MjAsNiArOTI5LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZ1xsb2FkX3JlcG9ydGluZ19maWx0ZXIuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxsb2FkX3JlcG9ydGluZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcZ3JwY2xiLmgiPgorICAgICAgPEZpbHRlcj5zcmNcY29yZVxleHRcbGJfcG9saWN5XGdycGNsYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXGNvcmVcZXh0XGxiX3BvbGljeVxncnBjbGJcbG9hZF9iYWxhbmNlcl9hcGkuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxsYl9wb2xpY3lcZ3JwY2xiPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC05NDEsNiArOTUzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYWdncmVnYXRpb24uaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcYmFzZV9yZXNvdXJjZXMuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNcY2Vuc3VzX2ludGVyZmFjZS5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtOTU2LDYgKzk3MSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNcY29yZVxleHRcY2Vuc3VzXG1sb2cuaCI+CiAgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccmVzb3VyY2UuaCI+CisgICAgICA8RmlsdGVyPnNyY1xjb3JlXGV4dFxjZW5zdXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xjb3JlXGV4dFxjZW5zdXNccnBjX21ldHJpY19pZC5oIj4KICAgICAgIDxGaWx0ZXI+c3JjXGNvcmVcZXh0XGNlbnN1czwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZHJlcG9ydGluZ190ZXN0LnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC52Y3hwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTUlCmNvcHkgZnJvbSB2c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmdfdGVzdC9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QudmN4cHJvagpjb3B5IHRvIHZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0LnZjeHByb2oKaW5kZXggMjA3NjU0OC4uYzRmYmQ1NCAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZHJlcG9ydGluZ190ZXN0LnZjeHByb2oKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvY2Vuc3VzX3Jlc291cmNlX3Rlc3QvY2Vuc3VzX3Jlc291cmNlX3Rlc3QudmN4cHJvagpAQCAtMjAsNyArMjAsNyBAQAogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgIDwvSXRlbUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntCMTA3MTMwRS1FQTMzLUMxMTQtOUNCNi03OEExOEM5MjlGNjR9PC9Qcm9qZWN0R3VpZD4KKyAgICA8UHJvamVjdEd1aWQ+ezE4Q0Y5OUI1LTNDNjEtRUMzRC05NTA5LTNDOTUzMzRDM0I4OH08L1Byb2plY3RHdWlkPgogICAgIDxJZ25vcmVXYXJuSW50RGlySW5UZW1wRGV0ZWN0ZWQ+dHJ1ZTwvSWdub3JlV2FybkludERpckluVGVtcERldGVjdGVkPgogICAgIDxJbnREaXI+JChTb2x1dGlvbkRpcilJbnREaXJcJChNU0J1aWxkUHJvamVjdE5hbWUpXDwvSW50RGlyPgogICA8L1Byb3BlcnR5R3JvdXA+CkBAIC02MCwxNCArNjAsMTQgQEAKICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknPT0nRGVidWcnIj4KLSAgICA8VGFyZ2V0TmFtZT5oMl9sb2FkcmVwb3J0aW5nX3Rlc3Q8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWU+Y2Vuc3VzX3Jlc291cmNlX3Rlc3Q8L1RhcmdldE5hbWU+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfemxpYj5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfemxpYj4KICAgICA8Q29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc196bGliPkRlYnVnPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD4KICAgICA8Q29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc19vcGVuc3NsPkRlYnVnPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKSc9PSdSZWxlYXNlJyI+Ci0gICAgPFRhcmdldE5hbWU+aDJfbG9hZHJlcG9ydGluZ190ZXN0PC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPmNlbnN1c19yZXNvdXJjZV90ZXN0PC9UYXJnZXROYW1lPgogICAgIDxMaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+c3RhdGljPC9MaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPENvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfemxpYj5SZWxlYXNlPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD4KQEAgLTE1OCwxMyArMTU4LDEwIEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KIAogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXNcaDJfbG9hZHJlcG9ydGluZy5jIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxjZW5zdXNccmVzb3VyY2VfdGVzdC5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1x2Y3hwcm9qXHRlc3QvZW5kMmVuZC90ZXN0c1xlbmQyZW5kX3Rlc3RzXGVuZDJlbmRfdGVzdHMudmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57MUYxRjkwODQtMkE5My1CODBFLTM2NEYtNTc1NDg5NEFGQUI0fTwvUHJvamVjdD4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1x2Y3hwcm9qXC5cZ3JwY190ZXN0X3V0aWxcZ3JwY190ZXN0X3V0aWwudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57MTdCQ0FGQzAtNUZEQy00Qzk0LUFFQjktOTVGM0UyMjA2MTRCfTwvUHJvamVjdD4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC9jZW5zdXNfcmVzb3VyY2VfdGVzdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNmYWFjNQotLS0gL2Rldi9udWxsCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0L2NlbnN1c19yZXNvdXJjZV90ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGNlbnN1c1xyZXNvdXJjZV90ZXN0LmMiPgorICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcY2Vuc3VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorCisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJ0ZXN0Ij4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszMTNhYWQ0ZS1kMzNiLTg4YzUtN2Q5NC1lMDRhNGNiMGM5MTJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0idGVzdFxjb3JlIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmZjJkNzRlZi0yMjhhLTE3MzktN2ZhNy03ZGNjYmVjNWIwYzV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0idGVzdFxjb3JlXGNlbnN1cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NGY1MjliZDktMzk2Zi0wMjdjLWJjNDktZjlhNmJiYzk3YzcyfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdC52Y3hwcm9qIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0L2gyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QudmN4cHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSB2c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdC9oMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QudmN4cHJvagpyZW5hbWUgdG8gdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0L2gyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QudmN4cHJvagppbmRleCA2YTZhYzVlLi4xY2NjNmJiIDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdC9oMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QvaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdC52Y3hwcm9qCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgPC9JdGVtR3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+ezY3OUVBNTVDLTczOTktNTNFOC03OUYwLTgyRkJEQjNEREUwN308L1Byb2plY3RHdWlkPgorICAgIDxQcm9qZWN0R3VpZD57NEI5RUJCQUUtRDgzOC1FQzA5LTBCMTAtMkQ0NTIwRkJDMEZGfTwvUHJvamVjdEd1aWQ+CiAgICAgPElnbm9yZVdhcm5JbnREaXJJblRlbXBEZXRlY3RlZD50cnVlPC9JZ25vcmVXYXJuSW50RGlySW5UZW1wRGV0ZWN0ZWQ+CiAgICAgPEludERpcj4kKFNvbHV0aW9uRGlyKUludERpclwkKE1TQnVpbGRQcm9qZWN0TmFtZSlcPC9JbnREaXI+CiAgIDwvUHJvcGVydHlHcm91cD4KQEAgLTYwLDE0ICs2MCwxNCBAQAogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKSc9PSdEZWJ1ZyciPgotICAgIDxUYXJnZXROYW1lPmgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZT5oMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0PC9UYXJnZXROYW1lPgogICAgIDxMaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+c3RhdGljPC9MaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPENvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfemxpYj5EZWJ1ZzwvQ29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc196bGliPgogICAgIDxMaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+c3RhdGljPC9MaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+CiAgICAgPENvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD5EZWJ1ZzwvQ29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc19vcGVuc3NsPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknPT0nUmVsZWFzZSciPgotICAgIDxUYXJnZXROYW1lPmgyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZT5oMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0PC9UYXJnZXROYW1lPgogICAgIDxMaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+c3RhdGljPC9MaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPENvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfemxpYj5SZWxlYXNlPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD4KQEAgLTE1OCw3ICsxNTgsNyBAQAogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAKICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGZpeHR1cmVzXGgyX2xvYWRyZXBvcnRpbmcuYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxmaXh0dXJlc1xoMl9sb2FkX3JlcG9ydGluZy5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmdfdGVzdC9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QudmN4cHJvai5maWx0ZXJzIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0L2gyX2xvYWRfcmVwb3J0aW5nX25vc2VjX3Rlc3QudmN4cHJvai5maWx0ZXJzCnNpbWlsYXJpdHkgaW5kZXggNjglCnJlbmFtZSBmcm9tIHZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfdGVzdC52Y3hwcm9qLmZpbHRlcnMKcmVuYW1lIHRvIHZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdC9oMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0LnZjeHByb2ouZmlsdGVycwppbmRleCBhZmU1NDMyLi43MmRmMjNlIDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmdfdGVzdC9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QudmN4cHJvai5maWx0ZXJzCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZF9yZXBvcnRpbmdfbm9zZWNfdGVzdC9oMl9sb2FkX3JlcG9ydGluZ19ub3NlY190ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMSwyMyArMSwyMyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGZpeHR1cmVzXGgyX2xvYWRyZXBvcnRpbmcuYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxmaXh0dXJlc1xoMl9sb2FkX3JlcG9ydGluZy5jIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAKICAgPEl0ZW1Hcm91cD4KICAgICA8RmlsdGVyIEluY2x1ZGU9InRlc3QiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhmNzM3NjBhLTc0ZGMtMDVlZi02NWUxLWZhOGM0NGNjZjkxOH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YWJmZjlhZWYtNTg2ZS02NWQyLWJlYjgtZTYzOTJlY2Y3NDQwfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9InRlc3RcY29yZSI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57YTI4MDA3OWUtYjYyNi0zMzNlLTA2MzYtOGZlNmViNzg4Y2ExfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmZDMxY2JmMS04Y2ZmLTJlNmEtNjE4ZC1hMDE4NTU5OTc4Mzl9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0idGVzdFxjb3JlXGVuZDJlbmQiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2MxYWE3M2Q2LTUwM2EtMDZjMC00MmIyLTA3OTNhNDgwNWU5Nn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YzZjYzExM2YtZGRiNC03MzNiLTVjMTAtOGY5OGFhMmQ3ZDIyfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9InRlc3RcY29yZVxlbmQyZW5kXGZpeHR1cmVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszZTczOGU4OS1kYzI3LWY5MjktY2M4Zi0xYWE5NGMyNDM0NWJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezJjZDE1YTNiLWE3ZTYtYjg0Ny1iNmM0LTdjNmNjMDNlYWNjMn08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CiAgIDwvSXRlbUdyb3VwPgogPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZHJlcG9ydGluZ190ZXN0LnZjeHByb2ogYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZF9yZXBvcnRpbmdfdGVzdC52Y3hwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIHZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfdGVzdC52Y3hwcm9qCnJlbmFtZSB0byB2c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZF9yZXBvcnRpbmdfdGVzdC52Y3hwcm9qCmluZGV4IDIwNzY1NDguLmQ1ZDFhMTUgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfdGVzdC52Y3hwcm9qCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZF9yZXBvcnRpbmdfdGVzdC9oMl9sb2FkX3JlcG9ydGluZ190ZXN0LnZjeHByb2oKQEAgLTIwLDcgKzIwLDcgQEAKICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fTwvUHJvamVjdEd1aWQ+CisgICAgPFByb2plY3RHdWlkPntGMEEwNjcyMy0yRTNFLUZFOTctMzRCNy1BMkJBMjZEOThCODN9PC9Qcm9qZWN0R3VpZD4KICAgICA8SWdub3JlV2FybkludERpckluVGVtcERldGVjdGVkPnRydWU8L0lnbm9yZVdhcm5JbnREaXJJblRlbXBEZXRlY3RlZD4KICAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpSW50RGlyXCQoTVNCdWlsZFByb2plY3ROYW1lKVw8L0ludERpcj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgpAQCAtNjAsMTQgKzYwLDE0IEBACiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJz09J0RlYnVnJyI+Ci0gICAgPFRhcmdldE5hbWU+aDJfbG9hZHJlcG9ydGluZ190ZXN0PC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPmgyX2xvYWRfcmVwb3J0aW5nX3Rlc3Q8L1RhcmdldE5hbWU+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfemxpYj5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfemxpYj4KICAgICA8Q29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc196bGliPkRlYnVnPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD4KICAgICA8Q29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc19vcGVuc3NsPkRlYnVnPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKSc9PSdSZWxlYXNlJyI+Ci0gICAgPFRhcmdldE5hbWU+aDJfbG9hZHJlcG9ydGluZ190ZXN0PC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPmgyX2xvYWRfcmVwb3J0aW5nX3Rlc3Q8L1RhcmdldE5hbWU+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfemxpYj5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfemxpYj4KICAgICA8Q29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc196bGliPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfemxpYj4KICAgICA8TGlua2FnZS1ncnBjX2RlcGVuZGVuY2llc19vcGVuc3NsPnN0YXRpYzwvTGlua2FnZS1ncnBjX2RlcGVuZGVuY2llc19vcGVuc3NsPgpAQCAtMTU4LDcgKzE1OCw3IEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KIAogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXNcaDJfbG9hZHJlcG9ydGluZy5jIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXGZpeHR1cmVzXGgyX2xvYWRfcmVwb3J0aW5nLmMiPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfdGVzdC52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZF9yZXBvcnRpbmdfdGVzdC52Y3hwcm9qLmZpbHRlcnMKc2ltaWxhcml0eSBpbmRleCA2OCUKY29weSBmcm9tIHZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfdGVzdC52Y3hwcm9qLmZpbHRlcnMKY29weSB0byB2c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZF9yZXBvcnRpbmdfdGVzdC52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYWZlNTQzMi4uOTViMDQ5YyAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZHJlcG9ydGluZ190ZXN0LnZjeHByb2ouZmlsdGVycworKysgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRfcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZF9yZXBvcnRpbmdfdGVzdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTEsMjMgKzEsMjMgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFxmaXh0dXJlc1xoMl9sb2FkcmVwb3J0aW5nLmMiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXNcaDJfbG9hZF9yZXBvcnRpbmcuYyI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXGZpeHR1cmVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogCiAgIDxJdGVtR3JvdXA+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJ0ZXN0Ij4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4ZjczNzYwYS03NGRjLTA1ZWYtNjVlMS1mYThjNDRjY2Y5MTh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezQ2N2NlYWE5LTNhNTEtZDVkZi0wNTU2LTFlZjhlOTFmNWQ3ZH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJ0ZXN0XGNvcmUiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2EyODAwNzllLWI2MjYtMzMzZS0wNjM2LThmZTZlYjc4OGNhMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MWVjMjkyNTQtOTA2NC0wMzM4LTc4Y2EtOTRkOGNmZGJkOTVjfTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9InRlc3RcY29yZVxlbmQyZW5kIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjMWFhNzNkNi01MDNhLTA2YzAtNDJiMi0wNzkzYTQ4MDVlOTZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezU4ZmM4NGUxLTdkYzktYTUxNy0zNTllLTdkN2UxYzQxNzQzMn08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJ0ZXN0XGNvcmVcZW5kMmVuZFxmaXh0dXJlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2U3MzhlODktZGMyNy1mOTI5LWNjOGYtMWFhOTRjMjQzNDVifTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5MmVmMDllMC01OTJiLTBjYTUtNGQ3OS01OTI5YWUxNTllZDV9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgogICA8L0l0ZW1Hcm91cD4KIDwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdC52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL2ZpeHR1cmVzL2gyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdC9oMl9sb2FkcmVwb3J0aW5nX25vc2VjX3Rlc3QudmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWQxYmIwLi4wMDAwMDAwCi0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ19ub3NlY190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfbm9zZWNfdGVzdC52Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXNcaDJfbG9hZHJlcG9ydGluZy5jIj4KLSAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+Ci0KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9InRlc3QiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhhZGM4OWZiLWU0NDctNzdiYy1jNDYyLTNkYmE2YWJjZjM0NH08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgPC9GaWx0ZXI+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJ0ZXN0XGNvcmUiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNjMmMwMWY1LTJhMTgtMWJlZS02ZWUwLTIxN2Q0MTVlMmE5NX08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgPC9GaWx0ZXI+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJ0ZXN0XGNvcmVcZW5kMmVuZCI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2VmYTBmNDEtNTgwMi02YThlLTM2ZWUtZjI0NmEyMDFhMWE1fTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICA8L0ZpbHRlcj4KLSAgICA8RmlsdGVyIEluY2x1ZGU9InRlc3RcY29yZVxlbmQyZW5kXGZpeHR1cmVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszNjZlYjI0Zi00OWU5LWQ1N2YtZTIwZi03MjlkMWUwZmI4OTJ9PC9VbmlxdWVJZGVudGlmaWVyPgotICAgIDwvRmlsdGVyPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KLQpkaWZmIC0tZ2l0IGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMudmN4cHJvaiBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzLnZjeHByb2oKaW5kZXggMjhjZWQyZC4uYTUwMGZlMyAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMudmN4cHJvagorKysgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qCkBAIC0xNzksNiArMTc5LDggQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGVtcHR5X2JhdGNoLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZmlsdGVyX2NhbGxfaW5pdF9mYWlscy5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGZpbHRlcl9jYXVzZXNfY2xvc2UuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xncmFjZWZ1bF9zZXJ2ZXJfc2h1dGRvd24uYyI+CkBAIC0xOTMsNiArMTk1LDggQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGxhcmdlX21ldGFkYXRhLmMiPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcbG9hZF9yZXBvcnRpbmdfaG9vay5jIj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXG1heF9jb25jdXJyZW50X3N0cmVhbXMuYyI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xtYXhfbWVzc2FnZV9sZW5ndGguYyI+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qLmZpbHRlcnMgYi92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy52Y3hwcm9qLmZpbHRlcnMKaW5kZXggN2M3MjUzNS4uNmYyMjk0YyAxMDA2NDQKLS0tIGEvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzL2VuZDJlbmRfbm9zZWNfdGVzdHMudmN4cHJvai5maWx0ZXJzCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF9ub3NlY190ZXN0cy9lbmQyZW5kX25vc2VjX3Rlc3RzLnZjeHByb2ouZmlsdGVycwpAQCAtNDMsNiArNDMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZW1wdHlfYmF0Y2guYyI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXHRlc3RzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzLmMiPgorICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZmlsdGVyX2NhdXNlc19jbG9zZS5jIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcdGVzdHM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTY0LDYgKzY3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGxhcmdlX21ldGFkYXRhLmMiPgogICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0czwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcbG9hZF9yZXBvcnRpbmdfaG9vay5jIj4KKyAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcdGVzdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXG1heF9jb25jdXJyZW50X3N0cmVhbXMuYyI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXHRlc3RzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CmRpZmYgLS1naXQgYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfdGVzdHMvZW5kMmVuZF90ZXN0cy52Y3hwcm9qIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX3Rlc3RzL2VuZDJlbmRfdGVzdHMudmN4cHJvagppbmRleCBiYzA2NGNkLi43NjE0MDg5IDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfdGVzdHMvZW5kMmVuZF90ZXN0cy52Y3hwcm9qCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF90ZXN0cy9lbmQyZW5kX3Rlc3RzLnZjeHByb2oKQEAgLTE4MSw2ICsxODEsOCBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZW1wdHlfYmF0Y2guYyI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xmaWx0ZXJfY2FsbF9pbml0X2ZhaWxzLmMiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcZmlsdGVyX2NhdXNlc19jbG9zZS5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGdyYWNlZnVsX3NlcnZlcl9zaHV0ZG93bi5jIj4KQEAgLTE5NSw2ICsxOTcsOCBAQAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcbGFyZ2VfbWV0YWRhdGEuYyI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xsb2FkX3JlcG9ydGluZ19ob29rLmMiPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcbWF4X2NvbmN1cnJlbnRfc3RyZWFtcy5jIj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXG1heF9tZXNzYWdlX2xlbmd0aC5jIj4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF90ZXN0cy9lbmQyZW5kX3Rlc3RzLnZjeHByb2ouZmlsdGVycyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvdGVzdHMvZW5kMmVuZF90ZXN0cy9lbmQyZW5kX3Rlc3RzLnZjeHByb2ouZmlsdGVycwppbmRleCBkOTU5YzgwLi5kYjMzNmYwIDEwMDY0NAotLS0gYS92c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9lbmQyZW5kL3Rlc3RzL2VuZDJlbmRfdGVzdHMvZW5kMmVuZF90ZXN0cy52Y3hwcm9qLmZpbHRlcnMKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC90ZXN0cy9lbmQyZW5kX3Rlc3RzL2VuZDJlbmRfdGVzdHMudmN4cHJvai5maWx0ZXJzCkBAIC00Niw2ICs0Niw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xlbXB0eV9iYXRjaC5jIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcdGVzdHM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY29yZVxlbmQyZW5kXHRlc3RzXGZpbHRlcl9jYWxsX2luaXRfZmFpbHMuYyI+CisgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXHRlc3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xmaWx0ZXJfY2F1c2VzX2Nsb3NlLmMiPgogICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0czwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNjcsNiArNzAsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcbGFyZ2VfbWV0YWRhdGEuYyI+CiAgICAgICA8RmlsdGVyPnRlc3RcY29yZVxlbmQyZW5kXHRlc3RzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0c1xsb2FkX3JlcG9ydGluZ19ob29rLmMiPgorICAgICAgPEZpbHRlcj50ZXN0XGNvcmVcZW5kMmVuZFx0ZXN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcdGVzdHNcbWF4X2NvbmN1cnJlbnRfc3RyZWFtcy5jIj4KICAgICAgIDxGaWx0ZXI+dGVzdFxjb3JlXGVuZDJlbmRcdGVzdHM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfdGVzdC52Y3hwcm9qIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZ3JwY2xiX3Rlc3QvZ3JwY2xiX3Rlc3QudmN4cHJvagpzaW1pbGFyaXR5IGluZGV4IDkxJQpjb3B5IGZyb20gdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZW5kMmVuZC9maXh0dXJlcy9oMl9sb2FkcmVwb3J0aW5nX3Rlc3QvaDJfbG9hZHJlcG9ydGluZ190ZXN0LnZjeHByb2oKY29weSB0byB2c3Byb2plY3RzL3ZjeHByb2ovdGVzdC9ncnBjbGJfdGVzdC9ncnBjbGJfdGVzdC52Y3hwcm9qCmluZGV4IDIwNzY1NDguLjkxYjlhNmUgMTAwNjQ0Ci0tLSBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2VuZDJlbmQvZml4dHVyZXMvaDJfbG9hZHJlcG9ydGluZ190ZXN0L2gyX2xvYWRyZXBvcnRpbmdfdGVzdC52Y3hwcm9qCisrKyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2dycGNsYl90ZXN0L2dycGNsYl90ZXN0LnZjeHByb2oKQEAgLTIwLDcgKzIwLDcgQEAKICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57QjEwNzEzMEUtRUEzMy1DMTE0LTlDQjYtNzhBMThDOTI5RjY0fTwvUHJvamVjdEd1aWQ+CisgICAgPFByb2plY3RHdWlkPns5RDZGRkUxNy1BQkYwLUE4NTEtMjY4RS05RTNFOEM1NzNDQkJ9PC9Qcm9qZWN0R3VpZD4KICAgICA8SWdub3JlV2FybkludERpckluVGVtcERldGVjdGVkPnRydWU8L0lnbm9yZVdhcm5JbnREaXJJblRlbXBEZXRlY3RlZD4KICAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpSW50RGlyXCQoTVNCdWlsZFByb2plY3ROYW1lKVw8L0ludERpcj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgpAQCAtNTMsMjEgKzUzLDIzIEBACiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcY3BwdGVzdC5wcm9wcyIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcZ2xvYmFsLnByb3BzIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xvcGVuc3NsLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1xwcm90b2J1Zi5wcm9wcyIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcd2luc29jay5wcm9wcyIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcemxpYi5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknPT0nRGVidWcnIj4KLSAgICA8VGFyZ2V0TmFtZT5oMl9sb2FkcmVwb3J0aW5nX3Rlc3Q8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWU+Z3JwY2xiX3Rlc3Q8L1RhcmdldE5hbWU+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfemxpYj5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfemxpYj4KICAgICA8Q29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc196bGliPkRlYnVnPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD4KICAgICA8Q29uZmlndXJhdGlvbi1ncnBjX2RlcGVuZGVuY2llc19vcGVuc3NsPkRlYnVnPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX29wZW5zc2w+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKSc9PSdSZWxlYXNlJyI+Ci0gICAgPFRhcmdldE5hbWU+aDJfbG9hZHJlcG9ydGluZ190ZXN0PC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPmdycGNsYl90ZXN0PC9UYXJnZXROYW1lPgogICAgIDxMaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+c3RhdGljPC9MaW5rYWdlLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPENvbmZpZ3VyYXRpb24tZ3JwY19kZXBlbmRlbmNpZXNfemxpYj5SZWxlYXNlPC9Db25maWd1cmF0aW9uLWdycGNfZGVwZW5kZW5jaWVzX3psaWI+CiAgICAgPExpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD5zdGF0aWM8L0xpbmthZ2UtZ3JwY19kZXBlbmRlbmNpZXNfb3BlbnNzbD4KQEAgLTE1OCwyNCArMTYwLDM1IEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KIAogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdGVzdFxjb3JlXGVuZDJlbmRcZml4dHVyZXNcaDJfbG9hZHJlcG9ydGluZy5jIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXGxiXHYxXGxvYWRfYmFsYW5jZXIucGIuY2MiPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cc3JjXHByb3RvXGdycGNcbGJcdjFcbG9hZF9iYWxhbmNlci5wYi5oIj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHNyY1xwcm90b1xncnBjXGxiXHYxXGxvYWRfYmFsYW5jZXIuZ3JwYy5wYi5jYyI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1xsYlx2MVxsb2FkX2JhbGFuY2VyLmdycGMucGIuaCI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx0ZXN0XGNwcFxncnBjbGJcZ3JwY2xiX3Rlc3QuY2MiPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHZjeHByb2pcdGVzdC9lbmQyZW5kL3Rlc3RzXGVuZDJlbmRfdGVzdHNcZW5kMmVuZF90ZXN0cy52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0PnsxRjFGOTA4NC0yQTkzLUI4MEUtMzY0Ri01NzU0ODk0QUZBQjR9PC9Qcm9qZWN0PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHZjeHByb2pcLlxncnBjX3Rlc3RfdXRpbFxncnBjX3Rlc3RfdXRpbC52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0PnsxN0JDQUZDMC01RkRDLTRDOTQtQUVCOS05NUYzRTIyMDYxNEJ9PC9Qcm9qZWN0PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHZjeHByb2pcLlxncnBjXGdycGMudmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57MjlEMTY4ODUtNzIyOC00QzMxLTgxRUQtNUY5MTg3QzdGMkE5fTwvUHJvamVjdD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHZjeHByb2pcLlxncHJcZ3ByLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e0IyM0QzRDFBLTk0MzgtNEVEQS1CRUI2LTlBMEEwM0QxNzc5Mn08L1Byb2plY3Q+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcdmN4cHJvalwuXGdwcl90ZXN0X3V0aWxcZ3ByX3Rlc3RfdXRpbC52Y3hwcm9qIj4KICAgICAgIDxQcm9qZWN0PntFQUIwQTYyOS0xN0E5LTQ0REItQjVGRi1FOTFBNzIxRkUwMzd9PC9Qcm9qZWN0PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlx2c3Byb2plY3RzXHZjeHByb2pcLlxncHJcZ3ByLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e0IyM0QzRDFBLTk0MzgtNEVEQS1CRUI2LTlBMEEwM0QxNzc5Mn08L1Byb2plY3Q+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1x2Y3hwcm9qXC5cZ3JwY1xncnBjLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezI5RDE2ODg1LTcyMjgtNEMzMS04MUVELTVGOTE4N0M3RjJBOX08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcdmN4cHJvalwuXGdycGMrK1xncnBjKysudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57QzE4N0EwOTMtQTBGRS00ODlELUE0MEEtNkUzM0RFMEY5RkVCfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iJChTb2x1dGlvbkRpcilcLi5cdnNwcm9qZWN0c1x2Y3hwcm9qXC5cZ3JwYysrX3Rlc3RfdXRpbFxncnBjKytfdGVzdF91dGlsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezBCRTc3NzQxLTU1MkEtOTI5Qi1BNDk3LTRFRjdFQ0UxN0E2NH08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHZzcHJvamVjdHNcdmN4cHJvalwuXGdycGNfdGVzdF91dGlsXGdycGNfdGVzdF91dGlsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezE3QkNBRkMwLTVGREMtNEM5NC1BRUI5LTk1RjNFMjIwNjE0Qn08L1Byb2plY3Q+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2dycGNsYl90ZXN0L2dycGNsYl90ZXN0LnZjeHByb2ouZmlsdGVycyBiL3ZzcHJvamVjdHMvdmN4cHJvai90ZXN0L2dycGNsYl90ZXN0L2dycGNsYl90ZXN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDkzZGYyCi0tLSAvZGV2L251bGwKKysrIGIvdnNwcm9qZWN0cy92Y3hwcm9qL3Rlc3QvZ3JwY2xiX3Rlc3QvZ3JwY2xiX3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKFNvbHV0aW9uRGlyKVwuLlxzcmNccHJvdG9cZ3JwY1xsYlx2MVxsb2FkX2JhbGFuY2VyLnByb3RvIj4KKyAgICAgIDxGaWx0ZXI+c3JjXHByb3RvXGdycGNcbGJcdjE8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoU29sdXRpb25EaXIpXC4uXHRlc3RcY3BwXGdycGNsYlxncnBjbGJfdGVzdC5jYyI+CisgICAgICA8RmlsdGVyPnRlc3RcY3BwXGdycGNsYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKworICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswODJiYmNiYy1iYmQ4LWRiN2QtYWZlOS1mYTBmZWM3Njg2M2R9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXHByb3RvIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3YzYxOTk1YS04MGMyLWVmM2QtMGE0Yi1iYWYyMjIxYzEyZjh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0ic3JjXHByb3RvXGdycGMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2ZjMjkyMGQ0LTkwMmMtZmRmMC1kNGI4LTZiMjJlMTM2MTEwNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJzcmNccHJvdG9cZ3JwY1xsYiI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NDc3ODM1MmEtNTU5Zi1iMDA4LWUzZDItNGFlOTE4MTI2MGRmfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InNyY1xwcm90b1xncnBjXGxiXHYxIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszNmE0MzI2Yi00ZjJhLTQ3MjAtYjczMC1lNDBmZTA3OGZkNDB9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0idGVzdCI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTBiYTU1YTItMzdkOS01MDI5LTZmNGUtNjRmMDk3MzA3MzQwfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9InRlc3RcY3BwIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthZDY3ZDZiYS1kMDhiLTc4NzktMjkyOS0yMGYwZjAxYzk5MTh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0idGVzdFxjcHBcZ3JwY2xiIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0NDk4ZmEzMC0yZGFiLTU4NGMtNTcxMS1hMTA1NWNlYzMwZjZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KKwo=