ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvY2NvbXBsZXRlLnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQvY2NvbXBsZXRlLnZpbQppbmRleCBjOGUyNThkLi5jNzE4NTI1IDEwMDY0NAotLS0gYS9ydW50aW1lL2F1dG9sb2FkL2Njb21wbGV0ZS52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9jY29tcGxldGUudmltCkBAIC0xLDEwICsxLDEwIEBACiAiIFZpbSBjb21wbGV0aW9uIHNjcmlwdAogIiBMYW5ndWFnZToJQwogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZToJMjAwNSBTZXAgMTAKKyIgTGFzdCBDaGFuZ2U6CTIwMDUgU2VwIDEzCiAKIAotIiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHRoZSAnb2NjdWx0ZnVuYycgb3B0aW9uLgorIiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHRoZSAnb21uaWZ1bmMnIG9wdGlvbi4KIGZ1bmN0aW9uISBjY29tcGxldGUjQ29tcGxldGUoZmluZHN0YXJ0LCBiYXNlKQogICBpZiBhOmZpbmRzdGFydAogICAgICIgTG9jYXRlIHRoZSBzdGFydCBvZiB0aGUgaXRlbSwgaW5jbHVkaW5nICIuIiBhbmQgIi0+Ii4KQEAgLTM4LDEyICszOCwxMiBAQAogICAiIDIuIGluIHRhZ3MgZmlsZShzKSAobGlrZSB3aXRoICI6dGFnIikKICAgIiAzLiBpbiBjdXJyZW50IGZpbGUgKGxpa2Ugd2l0aCAiZ0QiKQogICBsZXQgcmVzID0gW10KLSAgaWYgc2VhcmNoZGVjbChpdGVtc1swXSkgPT0gMAorICBpZiBzZWFyY2hkZWNsKGl0ZW1zWzBdLCAwLCAxKSA9PSAwCiAgICAgIiBGb3VuZCwgbm93IGZpZ3VyZSBvdXQgdGhlIHR5cGUuCiAgICAgIiBUT0RPOiBqb2luIHByZXZpb3VzIGxpbmUgaWYgaXQgbWFrZXMgc2Vuc2UKICAgICBsZXQgbGluZSA9IGdldGxpbmUoJy4nKQogICAgIGxldCBjb2wgPSBjb2woJy4nKQotICAgIGxldCByZXMgPSBjY29tcGxldGUjTmV4dGl0ZW0oc3RycGFydChsaW5lLCAwLCBjb2wpLCBpdGVtc1sxOl0pCisgICAgbGV0IHJlcyA9IHM6TmV4dGl0ZW0oc3RycGFydChsaW5lLCAwLCBjb2wpLCBpdGVtc1sxOl0pCiAgIGVuZGlmCiAKICAgaWYgbGVuKHJlcykgPT0gMApAQCAtNTQsNyArNTQsNyBAQAogICAgIGZvciBpIGluIHJhbmdlKGxlbihkaWNsaXN0KSkKICAgICAgICIgTmV3IGN0YWdzIGhhcyB0aGUgInR5cGVuYW1lIiBmaWVsZC4KICAgICAgIGlmIGhhc19rZXkoZGljbGlzdFtpXSwgJ3R5cGVuYW1lJykKLQljYWxsIGV4dGVuZChyZXMsIGNjb21wbGV0ZSNTdHJ1Y3RNZW1iZXJzKGRpY2xpc3RbaV1bJ3R5cGVuYW1lJ10sIGl0ZW1zWzE6XSkpCisJY2FsbCBleHRlbmQocmVzLCBzOlN0cnVjdE1lbWJlcnMoZGljbGlzdFtpXVsndHlwZW5hbWUnXSwgaXRlbXNbMTpdKSkKICAgICAgIGVuZGlmCiAKICAgICAgICIgRm9yIGEgdmFyaWFibGUgdXNlIHRoZSBjb21tYW5kLCB3aGljaCBtdXN0IGJlIGEgc2VhcmNoIHBhdHRlcm4gdGhhdApAQCAtNjMsNyArNjMsNyBAQAogCWxldCBsaW5lID0gZGljbGlzdFtpXVsnY21kJ10KIAlpZiBsaW5lWzBdID09ICcvJyAmJiBsaW5lWzFdID09ICdeJwogCSAgbGV0IGNvbCA9IG1hdGNoKGxpbmUsIGl0ZW1zWzBdKQotCSAgY2FsbCBleHRlbmQocmVzLCBjY29tcGxldGUjTmV4dGl0ZW0oc3RycGFydChsaW5lLCAyLCBjb2wgLSAyKSwgaXRlbXNbMTpdKQorCSAgY2FsbCBleHRlbmQocmVzLCBzOk5leHRpdGVtKHN0cnBhcnQobGluZSwgMiwgY29sIC0gMiksIGl0ZW1zWzE6XSkpCiAJZW5kaWYKICAgICAgIGVuZGlmCiAgICAgZW5kZm9yCkBAIC03NCwxOSArNzQsMzAgQEAKICAgICAiIFRPRE86IGpvaW4gcHJldmlvdXMgbGluZSBpZiBpdCBtYWtlcyBzZW5zZQogICAgIGxldCBsaW5lID0gZ2V0bGluZSgnLicpCiAgICAgbGV0IGNvbCA9IGNvbCgnLicpCi0gICAgbGV0IHJlcyA9IGNjb21wbGV0ZSNOZXh0aXRlbShzdHJwYXJ0KGxpbmUsIDAsIGNvbCksIGl0ZW1zWzE6XSkKKyAgICBsZXQgcmVzID0gczpOZXh0aXRlbShzdHJwYXJ0KGxpbmUsIDAsIGNvbCksIGl0ZW1zWzE6XSkKKyAgZW5kaWYKKworICAiIElmIHRoZSBvbmUgYW5kIG9ubHkgbWF0Y2ggd2FzIHdoYXQncyBhbHJlYWR5IHRoZXJlIGFuZCBpdCBpcyBhIGNvbXBvc2l0ZQorICAiIHR5cGUsIGFkZCBhICIuIiBvciAiLT4iLgorICBpZiBsZW4ocmVzKSA9PSAxICYmIHJlc1swXVsnbWF0Y2gnXSA9PSBpdGVtc1stMV0gJiYgbGVuKHM6U2VhcmNoTWVtYmVycyhyZXMsIFsnJ10pKSA+IDAKKyAgICAiIElmIHRoZXJlIGlzIGEgJyonIGJlZm9yZSB0aGUgbmFtZSB1c2UgIi0+Ii4KKyAgICBpZiBtYXRjaChyZXNbMF1bJ3RhZ2xpbmUnXSwgJ1wqXHMqJyAuIHJlc1swXVsnbWF0Y2gnXSkgPiAwCisgICAgICBsZXQgcmVzWzBdWydtYXRjaCddIC49ICctPicKKyAgICBlbHNlCisgICAgICBsZXQgcmVzWzBdWydtYXRjaCddIC49ICcuJworICAgIGVuZGlmCiAgIGVuZGlmCiAKICAgIiBUaGUgYmFzZXRleHQgaXMgdXAgdG8gdGhlIGxhc3QgIi4iIG9yICItPiIgYW5kIHdvbid0IGJlIGNoYW5nZWQuICBUaGUKICAgIiBtYXRjaGluZyBtZW1iZXJzIGFyZSBjb25jYXRlbmF0ZWQgdG8gdGhpcy4KICAgbGV0IGJhc2V0ZXh0ID0gbWF0Y2hzdHIoYTpiYXNlLCAnLipcKFwuXHwtPlwpJykKLSAgcmV0dXJuIG1hcChyZXMsICdiYXNldGV4dCAuIHY6dmFsJykKKyAgcmV0dXJuIG1hcChyZXMsICdiYXNldGV4dCAuIHY6dmFsWyJtYXRjaCJdJykKIGVuZGZ1bmMKIAogIiBGaW5kIGNvbXBvc2luZyB0eXBlIGluICJsZWFkIiBhbmQgbWF0Y2ggaXRlbXNbMF0gd2l0aCBpdC4KICIgUmVwZWF0IHRoaXMgcmVjdXJzaXZlbHkgZm9yIGl0ZW1zWzFdLCBpZiBpdCdzIHRoZXJlLgogIiBSZXR1cm4gdGhlIGxpc3Qgb2YgbWF0Y2hlcy4KLWZ1bmN0aW9uISBjY29tcGxldGUjTmV4dGl0ZW0obGVhZCwgaXRlbXMpCitmdW5jdGlvbiEgczpOZXh0aXRlbShsZWFkLCBpdGVtcykKIAogICAiIFVzZSB0aGUgdGV4dCB1cCB0byB0aGUgdmFyaWFibGUgbmFtZSBhbmQgc3BsaXQgaXQgaW4gdG9rZW5zLgogICBsZXQgdG9rZW5zID0gc3BsaXQoYTpsZWFkLCAnXHNcK1x8XDwnKQpAQCAtOTcsNyArMTA4LDcgQEAKIAogICAgICIgUmVjb2duaXplICJzdHJ1Y3QgZm9vYmFyIiBhbmQgInVuaW9uIGZvb2JhciIuCiAgICAgaWYgKHRva2Vuc1t0aWR4XSA9PSAnc3RydWN0JyB8fCB0b2tlbnNbdGlkeF0gPT0gJ3VuaW9uJykgJiYgdGlkeCArIDEgPCBsZW4odG9rZW5zKQotICAgICAgbGV0IHJlcyA9IGNjb21wbGV0ZSNTdHJ1Y3RNZW1iZXJzKHRva2Vuc1t0aWR4XSAuICc6JyAuIHRva2Vuc1t0aWR4ICsgMV0sIGE6aXRlbXMpCisgICAgICBsZXQgcmVzID0gczpTdHJ1Y3RNZW1iZXJzKHRva2Vuc1t0aWR4XSAuICc6JyAuIHRva2Vuc1t0aWR4ICsgMV0sIGE6aXRlbXMpCiAgICAgICBicmVhawogICAgIGVuZGlmCiAKQEAgLTEwOCwyMCArMTE5LDQyIEBACiAKICAgICAiIFVzZSB0aGUgdGFncyBmaWxlIHRvIGZpbmQgb3V0IGlmIHRoaXMgaXMgYSB0eXBlZGVmLgogICAgIGxldCBkaWNsaXN0ID0gdGFnbGlzdCgnXicgLiB0b2tlbnNbdGlkeF0gLiAnJCcpCi0gICAgZm9yIGkgaW4gcmFuZ2UobGVuKGRpY2xpc3QpKQorICAgIGZvciB0YWdpZHggaW4gcmFuZ2UobGVuKGRpY2xpc3QpKQogICAgICAgIiBOZXcgY3RhZ3MgaGFzIHRoZSAidHlwZW5hbWUiIGZpZWxkLgotICAgICAgaWYgaGFzX2tleShkaWNsaXN0W2ldLCAndHlwZW5hbWUnKQotCWNhbGwgZXh0ZW5kKHJlcywgY2NvbXBsZXRlI1N0cnVjdE1lbWJlcnMoZGljbGlzdFtpXVsndHlwZW5hbWUnXSwgYTppdGVtcykpCisgICAgICBpZiBoYXNfa2V5KGRpY2xpc3RbdGFnaWR4XSwgJ3R5cGVuYW1lJykKKwljYWxsIGV4dGVuZChyZXMsIHM6U3RydWN0TWVtYmVycyhkaWNsaXN0W3RhZ2lkeF1bJ3R5cGVuYW1lJ10sIGE6aXRlbXMpKQogCWNvbnRpbnVlCiAgICAgICBlbmRpZgogCi0gICAgICAiIEZvciBvbGQgY3RhZ3Mgd2Ugb25seSByZWNvZ25pemUgInR5cGVkZWYgc3RydWN0IGZvb2JhciIgaW4gdGhlIHRhZ3MKLSAgICAgICIgZmlsZSBjb21tYW5kLgotICAgICAgbGV0IGNtZCA9IGRpY2xpc3RbaV1bJ2NtZCddCi0gICAgICBsZXQgY2kgPSBtYXRjaGVuZChjbWQsICd0eXBlZGVmXHNcK3N0cnVjdFxzXCsnKQotICAgICAgaWYgY2kgPiAxCi0JbGV0IG5hbWUgPSBtYXRjaHN0cihjbWQsICdcdyonLCBjaSkKLQljYWxsIGV4dGVuZChyZXMsIGNjb21wbGV0ZSNTdHJ1Y3RNZW1iZXJzKCdzdHJ1Y3Q6JyAuIG5hbWUsIGE6aXRlbXMpKQorICAgICAgIiBPbmx5IGhhbmRsZSB0eXBlZGVmcyBoZXJlLgorICAgICAgaWYgZGljbGlzdFt0YWdpZHhdWydraW5kJ10gIT0gJ3QnCisJY29udGludWUKKyAgICAgIGVuZGlmCisKKyAgICAgICIgRm9yIG9sZCBjdGFncyB3ZSByZWNvZ25pemUgInR5cGVkZWYgc3RydWN0IGFhYSIgYW5kCisgICAgICAiICJ0eXBlZGVmIHVuaW9uIGJiYiIgaW4gdGhlIHRhZ3MgZmlsZSBjb21tYW5kLgorICAgICAgbGV0IGNtZCA9IGRpY2xpc3RbdGFnaWR4XVsnY21kJ10KKyAgICAgIGxldCBlaSA9IG1hdGNoZW5kKGNtZCwgJ3R5cGVkZWZcc1wrJykKKyAgICAgIGlmIGVpID4gMQorCWxldCBjbWR0b2tlbnMgPSBzcGxpdChzdHJwYXJ0KGNtZCwgZWkpLCAnXHNcK1x8XDwnKQorCWlmIGxlbihjbWR0b2tlbnMpID4gMQorCSAgaWYgY21kdG9rZW5zWzBdID09ICdzdHJ1Y3QnIHx8IGNtZHRva2Vuc1swXSA9PSAndW5pb24nCisJICAgIGxldCBuYW1lID0gJycKKwkgICAgIiBVc2UgdGhlIGZpcnN0IGlkZW50aWZpZXIgYWZ0ZXIgdGhlICJzdHJ1Y3QiIG9yICJ1bmlvbiIKKwkgICAgZm9yIHRpIGluIHJhbmdlKGxlbihjbWR0b2tlbnMpIC0gMSkKKwkgICAgICBpZiBjbWR0b2tlbnNbdGldID1+ICdeXHcnCisJCWxldCBuYW1lID0gY21kdG9rZW5zW3RpXQorCQlicmVhaworCSAgICAgIGVuZGlmCisJICAgIGVuZGZvcgorCSAgICBpZiBuYW1lICE9ICcnCisJICAgICAgY2FsbCBleHRlbmQocmVzLCBzOlN0cnVjdE1lbWJlcnMoY21kdG9rZW5zWzBdIC4gJzonIC4gbmFtZSwgYTppdGVtcykpCisJICAgIGVuZGlmCisJICBlbHNlCisJICAgICIgQ291bGQgYmUgInR5cGVkZWYgb3RoZXJfVCBzb21lX1QiLgorCSAgICBjYWxsIGV4dGVuZChyZXMsIHM6TmV4dGl0ZW0oY21kdG9rZW5zWzBdLCBhOml0ZW1zKSkKKwkgIGVuZGlmCisJZW5kaWYKICAgICAgIGVuZGlmCiAgICAgZW5kZm9yCiAgICAgaWYgbGVuKHJlcykgPiAwCkBAIC0xMzMsMTIgKzE2NiwxMyBAQAogZW5kZnVuY3Rpb24KIAogCi0iIFJldHVybiBhIGxpc3Qgd2l0aCByZXN1bHRpbmcgbWF0Y2hlcwotZnVuY3Rpb24hIGNjb21wbGV0ZSNTdHJ1Y3RNZW1iZXJzKHR5cGVuYW1lLCBpdGVtcykKKyIgUmV0dXJuIGEgbGlzdCB3aXRoIHJlc3VsdGluZyBtYXRjaGVzLgorIiBFYWNoIG1hdGNoIGlzIGEgZGljdGlvbmFyeSB3aXRoICJtYXRjaCIgYW5kICJ0YWdsaW5lIiBlbnRyaWVzLgorZnVuY3Rpb24hIHM6U3RydWN0TWVtYmVycyh0eXBlbmFtZSwgaXRlbXMpCiAgICIgVG9kbzogV2hhdCBhYm91dCBsb2NhbCBzdHJ1Y3R1cmVzPwogICBsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCiAgIGlmIGZuYW1lcyA9PSAnJwotICAgIHJldHVybiBbW10sIFtdXQorICAgIHJldHVybiBbXQogICBlbmRpZgogCiAgIGxldCB0eXBlbmFtZSA9IGE6dHlwZW5hbWUKQEAgLTE1Myw0NSArMTg3LDQ5IEBACiAgICAgbGV0IHR5cGVuYW1lID0gc3Vic3RpdHV0ZSh0eXBlbmFtZSwgJzpbXjpdKjo6JywgJzonLCAnJykKICAgZW5kd2hpbGUKIAotICBsZXQgbWVtYmVycyA9IFtdCi0gIGxldCB0YWdsaW5lcyA9IFtdCisgIGxldCBtYXRjaGVzID0gW10KICAgZm9yIGwgaW4gcWZsaXN0CiAgICAgbGV0IG1lbWIgPSBtYXRjaHN0cihsWyd0ZXh0J10sICdbXlx0XSonKQogICAgIGlmIG1lbWIgPX4gJ14nIC4gYTppdGVtc1swXQotICAgICAgY2FsbCBhZGQobWVtYmVycywgbWVtYikKLSAgICAgIGNhbGwgYWRkKHRhZ2xpbmVzLCBsWyd0ZXh0J10pCisgICAgICBjYWxsIGFkZChtYXRjaGVzLCB7J21hdGNoJzogbWVtYiwgJ3RhZ2xpbmUnOiBsWyd0ZXh0J119KQogICAgIGVuZGlmCiAgIGVuZGZvcgogCi0gIGlmIGxlbihtZW1iZXJzKSA+IDAKKyAgaWYgbGVuKG1hdGNoZXMpID4gMAogICAgICIgTm8gZnVydGhlciBpdGVtcywgcmV0dXJuIHRoZSByZXN1bHQuCiAgICAgaWYgbGVuKGE6aXRlbXMpID09IDEKLSAgICAgIHJldHVybiBtZW1iZXJzCisgICAgICByZXR1cm4gbWF0Y2hlcwogICAgIGVuZGlmCiAKICAgICAiIE1vcmUgaXRlbXMgZm9sbG93aW5nLiAgRm9yIGVhY2ggb2YgdGhlIHBvc3NpYmxlIG1lbWJlcnMgZmluZCB0aGUKICAgICAiIG1hdGNoaW5nIGZvbGxvd2luZyBtZW1iZXJzLgotICAgIGxldCByZXMgPSBbXQotICAgIGZvciBpIGluIHJhbmdlKGxlbihtZW1iZXJzKSkKLSAgICAgIGxldCBsaW5lID0gdGFnbGluZXNbaV0KLSAgICAgIGxldCBlID0gbWF0Y2hlbmQobGluZSwgJ1x0dHlwZW5hbWU6JykKLSAgICAgIGlmIGUgPiAwCi0JIiBVc2UgdHlwZW5hbWUgZmllbGQKLQlsZXQgbmFtZSA9IG1hdGNoc3RyKGxpbmUsICdbXlx0XSonLCBlKQotCWNhbGwgZXh0ZW5kKHJlcywgY2NvbXBsZXRlI1N0cnVjdE1lbWJlcnMobmFtZSwgYTppdGVtc1sxOl0pKQotICAgICAgZWxzZQotCWxldCBzID0gbWF0Y2gobGluZSwgJ1x0XHpzL14nKQotCWlmIHMgPiAwCi0JICBsZXQgZSA9IG1hdGNoKGxpbmUsIG1lbWJlcnNbaV0sIHMpCi0JICBpZiBlID4gMAotCSAgICBjYWxsIGV4dGVuZChyZXMsIGNjb21wbGV0ZSNOZXh0aXRlbShzdHJwYXJ0KGxpbmUsIHMsIGUgLSBzKSwgYTppdGVtc1sxOl0pKQotCSAgZW5kaWYKLQllbmRpZgotICAgICAgZW5kaWYKLSAgICBlbmRmb3IKLSAgICByZXR1cm4gcmVzCisgICAgcmV0dXJuIHM6U2VhcmNoTWVtYmVycyhtYXRjaGVzLCBhOml0ZW1zWzE6XSkKICAgZW5kaWYKIAogICAiIEZhaWxlZCB0byBmaW5kIGFueXRoaW5nLgogICByZXR1cm4gW10KIGVuZGZ1bmN0aW9uCisKKyIgRm9yIG1hdGNoaW5nIG1lbWJlcnMsIGZpbmQgbWF0Y2hlcyBmb3IgZm9sbG93aW5nIGl0ZW1zLgorZnVuY3Rpb24hIHM6U2VhcmNoTWVtYmVycyhtYXRjaGVzLCBpdGVtcykKKyAgbGV0IHJlcyA9IFtdCisgIGZvciBpIGluIHJhbmdlKGxlbihhOm1hdGNoZXMpKQorICAgIGxldCBsaW5lID0gYTptYXRjaGVzW2ldWyd0YWdsaW5lJ10KKyAgICBsZXQgZSA9IG1hdGNoZW5kKGxpbmUsICdcdHR5cGVuYW1lOicpCisgICAgaWYgZSA+IDAKKyAgICAgICIgVXNlIHR5cGVuYW1lIGZpZWxkCisgICAgICBsZXQgbmFtZSA9IG1hdGNoc3RyKGxpbmUsICdbXlx0XSonLCBlKQorICAgICAgY2FsbCBleHRlbmQocmVzLCBzOlN0cnVjdE1lbWJlcnMobmFtZSwgYTppdGVtcykpCisgICAgZWxzZQorICAgICAgIiBVc2UgdGhlIHNlYXJjaCBjb21tYW5kICh0aGUgZGVjbGFyYXRpb24gaXRzZWxmKS4KKyAgICAgIGxldCBzID0gbWF0Y2gobGluZSwgJ1x0XHpzL14nKQorICAgICAgaWYgcyA+IDAKKwlsZXQgZSA9IG1hdGNoKGxpbmUsIGE6bWF0Y2hlc1tpXVsnbWF0Y2gnXSwgcykKKwlpZiBlID4gMAorCSAgY2FsbCBleHRlbmQocmVzLCBzOk5leHRpdGVtKHN0cnBhcnQobGluZSwgcywgZSAtIHMpLCBhOml0ZW1zKSkKKwllbmRpZgorICAgICAgZW5kaWYKKyAgICBlbmRpZgorICBlbmRmb3IKKyAgcmV0dXJuIHJlcworZW5kZnVuYwpkaWZmIC0tZ2l0IGEvcnVudGltZS9hdXRvbG9hZC9odG1sY29tcGxldGUudmltIGIvcnVudGltZS9hdXRvbG9hZC9odG1sY29tcGxldGUudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MGUxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL2F1dG9sb2FkL2h0bWxjb21wbGV0ZS52aW0KQEAgLTAsMCArMSwyNDMgQEAKKyIgVmltIGNvbXBsZXRpb24gc2NyaXB0CisiIExhbmd1YWdlOglYSFRNTCAxLjAgU3RyaWN0CisiIE1haW50YWluZXI6CU1pa29sYWogTWFjaG93c2tpICggbWlrbWFjaCBBVCB3cCBET1QgcGwgKQorIiBMYXN0IENoYW5nZToJMjAwNSBTZXAgMTMKKworZnVuY3Rpb24hIGh0bWxjb21wbGV0ZSNDb21wbGV0ZVRhZ3MoZmluZHN0YXJ0LCBiYXNlKQorICBpZiBhOmZpbmRzdGFydAorICAgICIgbG9jYXRlIHRoZSBzdGFydCBvZiB0aGUgd29yZAorICAgIGxldCBsaW5lID0gZ2V0bGluZSgnLicpCisgICAgbGV0IHN0YXJ0ID0gY29sKCcuJykgLSAxCisgICAgd2hpbGUgc3RhcnQgPj0gMCAmJiBsaW5lW3N0YXJ0IC0gMV0gIX4gJzwnCisgICAgICBsZXQgc3RhcnQgLT0gMQorICAgIGVuZHdoaWxlCisJbGV0IGc6c3QgPSBzdGFydAorICAgIHJldHVybiBzdGFydAorICBlbHNlCisJIiBTZXQgYXR0cmlidXRlIGdyb3VwcworICAgIGxldCBnOmNvcmVhdHRycyA9IFsiaWQiLCAiY2xhc3MiLCAic3R5bGUiLCAidGl0bGUiXSAKKyAgICBsZXQgZzppMThuID0gWyJsYW5nIiwgInhtbDpsYW5nIiwgImRpciJdCisgICAgbGV0IGc6ZXZlbnRzID0gWyJvbmNsaWNrIiwgIm9uZGJsY2xpY2siLCAib25tb3VzZWRvd24iLCAib25tb3VzZXVwIiwgIm9ubW91c2Vtb3ZlIiwKKyAgICAJCQlcICJvbm1vdXNlb3V0IiwgIm9ua2V5cHJlc3MiLCAib25rZXlkb3duIiwgIm9ua2V5dXAiXQorICAgIGxldCBnOmZvY3VzID0gWyJhY2Nlc3NrZXkiLCAidGFiaW5kZXgiLCAib25mb2N1cyIsICJvbmJsdXIiXQorICAgIGxldCBnOmNvcmVncm91cCA9IGc6Y29yZWF0dHJzCisgICAgbGV0IGc6Y29yZWdyb3VwID0gZXh0ZW5kKGc6Y29yZWdyb3VwLCBnOmkxOG4pCisgICAgbGV0IGc6Y29yZWdyb3VwID0gZXh0ZW5kKGc6Y29yZWdyb3VwLCBnOmV2ZW50cykKKyAgICAiIGZpbmQgdGFncyBtYXRjaGluZyB3aXRoICJhOmJhc2UiCisgICAgbGV0IHJlcyA9IFtdCisJIiBJZiBhOmJhc2UgY29udGFpbnMgPiBpdCBtZWFucyB3ZSBhcmUgYWxyZWFkeSBvdXRzaWRlIG9mIHRhZyBhbmQgd2UKKwkiIHNob3VsZCBhYmFuZG9uIGFjdGlvbgorCWlmIGE6YmFzZSA9fiAnPicKKwkJcmV0dXJuIFtdCisJZW5kaWYKKwkiIElmIGE6YmFzZSBjb250YWlucyB3aGl0ZSBzcGFjZSBpdCBpcyBhdHRyaWJ1dGUuIAorCSIgSXQgY291bGQgYmUgYWxzbyB2YWx1ZSBvZiBhdHRyaWJ1dGUuLi4KKwkiIFBvc3NpYmxlIHNpdHVhdGlvbnMgd2hlcmUgYW55IHByZWRpY3Rpb24gd291bGQgYmUgZGlmZmljdWx0OgorCSIgMS4gRXZlbnRzIGF0dHJpYnV0ZXMKKwlpZiBhOmJhc2UgPX4gJ1xzJworCQkiIFNvcnQgb3V0IHN0eWxlLCBjbGFzcywgYW5kIG9uKiBjYXNlcworCQkiIFBlcmZlY3Qgc29sdXRpb24gZm9yIHN0eWxlIHdvdWxkIGJlIHN3aXRjaGluZyBmb3IgQ1NTIGNvbXBsZXRpb24uIElzCisJCSIgaXQgcG9zc2libGU/CisJCSIgQWxzbyByZXRyaWV2aW5nIGNsYXNzIG5hbWVzIGZyb20gY3VycmVudCBmaWxlIGFuZCBsaW5rZWQKKwkJIiBzdHlsZXNoZWV0cy4KKwkJaWYgYTpiYXNlID1+ICJcXChvblthLXpdKlxcfHN0eWxlXFx8Y2xhc3NcXClcXHMqPVxccypbXCInXSIKKwkJCWxldCBzdHJpcGJhc2UgPSBtYXRjaHN0cihhOmJhc2UsICIuKlxcKG9uW2Etel0qXFx8c3R5bGVcXHxjbGFzc1xcKVxccyo9XFxzKltcIiddXFx6cy4qIikKKwkJCSIgTm93IHdlIGhhdmUgYTpiYXNlIHN0cmlwcGVkIGZyb20gYWxsIGNoYXJzIHVwIHRvIHN0eWxlL2NsYXNzLgorCQkJIiBJdCBtYXkgZmFpbCB3aXRoIHNvbWUgc3RyYW5nZSBzdHlsZSB2YWx1ZSBjb21iaW5hdGlvbnMuCisJCQlpZiBzdHJpcGJhc2UgIX4gIltcIiddIgorCQkJCXJldHVybiBbXQorCQkJZW5kaWYKKwkJZW5kaWYKKwkJIiBXZSBoYXZlIHRvIGdldCBmaXJzdCB3b3JkIHRvIG9mZmVyCisJCSIgcHJvcGVyIGF0dHJpYnV0ZXMuCisJCWxldCB0YWcgPSBzcGxpdChhOmJhc2UpWzBdCisJCSIgR2V0IGxhc3Qgd29yZCwgaXQgc2hvdWxkIGJlIGF0dHIgbmFtZQorCQlsZXQgYXR0ciA9IG1hdGNoc3RyKGE6YmFzZSwgJy4qXHNcenMuKicpCisJCSIgSWYgYXR0ciBjb250YWlucyA9XHMqW1wiJ10gd2UgY2F0Y2hlZCB2YWx1ZSBvZiBhdHRyaWJ1dGUKKwkJaWYgYXR0ciA9fiAiPVxzKltcIiddIgorCQkJIiBMZXQgZG8gYXR0cmlidXRlIHNwZWNpZmljIGNvbXBsZXRpb24KKwkJCWxldCBhdHRybmFtZSA9IG1hdGNoc3RyKGF0dHIsICcuKlx6ZVxzKj0nKQorCQkJbGV0IGVudGVyZWRfdmFsdWUgPSBtYXRjaHN0cihhdHRyLCAiLio9XFxzKltcIiddXFx6cy4qIikKKwkJCWxldCB2YWx1ZXMgPSBbXQorCQkJaWYgYXR0cm5hbWUgPT0gJ21lZGlhJworCQkJCWxldCB2YWx1ZXMgPSBbInNjcmVlbiIsICJ0dHkiLCAidHYiLCAicHJvamVjdGlvbiIsICJoYW5kaGVsZCIsICJwcmludCIsICJicmFpbGxlIiwgImF1cmFsIiwgImFsbCJdCisJCQllbHNlaWYgYXR0cm5hbWUgPT0gJ3htbDpzcGFjZScKKwkJCQlsZXQgdmFsdWVzID0gWyJwcmVzZXJ2ZSJdCisJCQllbHNlaWYgYXR0cm5hbWUgPT0gJ3NoYXBlJworCQkJCWlmIGE6YmFzZSA9fiAnXmFcPicKKwkJCQkJbGV0IHZhbHVlcyA9IFsicmVjdCJdCisJCQkJZWxzZQorCQkJCQlsZXQgdmFsdWVzID0gWyJyZWN0IiwgImNpcmNsZSIsICJwb2x5IiwgImRlZmF1bHQiXQorCQkJCWVuZGlmCisJCQllbHNlaWYgYXR0cm5hbWUgPT0gJ3ZhbHVldHlwZScKKwkJCQlsZXQgdmFsdWVzID0gWyJkYXRhIiwgInJlZiIsICJvYmplY3QiXQorCQkJZWxzZWlmIGF0dHJuYW1lID09ICdtZXRob2QnCisJCQkJbGV0IHZhbHVlcyA9IFsiZ2V0IiwgInBvc3QiXQorCQkJZWxzZWlmIGF0dHJuYW1lID09ICdmcmFtZScKKwkJCQlsZXQgdmFsdWVzID0gWyJ2b2lkIiwgImFib3ZlIiwgImJlbG93IiwgImhzaWRlcyIsICJsaHMiLCAicmhzIiwgInZzaWRlcyIsICJib3giLCAiYm9yZGVyIl0KKwkJCWVsc2VpZiBhdHRybmFtZSA9PSAncnVsZXMnCisJCQkJbGV0IHZhbHVlcyA9IFsibm9uZSIsICJncm91cHMiLCAicm93cyIsICJhbGwiXQorCQkJZWxzZWlmIGF0dHJuYW1lID09ICdhbGlnbicKKwkJCQlsZXQgdmFsdWVzID0gWyJsZWZ0IiwgImNlbnRlciIsICJyaWdodCIsICJqdXN0aWZ5IiwgImNoYXIiXQorCQkJZWxzZWlmIGF0dHJuYW1lID09ICd2YWxpZ24nCisJCQkJbGV0IHZhbHVlcyA9IFsidG9wIiwgIm1pZGRsZSIsICJib3R0b20iLCAiYmFzZWxpbmUiXQorCQkJZWxzZWlmIGF0dHJuYW1lID09ICdzY29wZScKKwkJCQlsZXQgdmFsdWVzID0gWyJyb3ciLCAiY29sIiwgInJvd2dyb3VwIiwgImNvbGdyb3VwIl0KKwkJCWVsc2VpZiBhdHRybmFtZSA9PSAnaHJlZicKKwkJCQkiIE5vdyB3ZSBhcmUgbG9va2luZyBmb3IgbG9jYWwgYW5jaG9ycyBkZWZpbmVkIGJ5IG5hbWUgb3IgaWQKKwkJCQlpZiBlbnRlcmVkX3ZhbHVlID1+ICdeIycKKwkJCQkJbGV0IGZpbGUgPSBqb2luKGdldGxpbmUoMSwgbGluZSgnJCcpKSwgJyAnKQorCQkJCQkiIFNwbGl0IGl0IGJlIHN1cmUgdGhlcmUgd2lsbCBiZSBvbmUgaWQvbmFtZSBlbGVtZW50IGluCisJCQkJCSIgaXRlbSwgaXQgd2lsbCBiZSBhbHNvIGZpcnN0IHdvcmQgW2EtekEtWjAtOV8tXSBpbiBlbGVtZW50CisJCQkJCWxldCBvbmVlbGVtZW50ID0gc3BsaXQoZmlsZSwgIlxcKG1ldGEgXFwpXFxAPCFcXChuYW1lXFx8aWRcXClcXHMqPVxccypbXCInXSIpCisJCQkJCWZvciBpIGluIG9uZWVsZW1lbnQKKwkJCQkJCWxldCB2YWx1ZXMgKz0gWycjJy5tYXRjaHN0cihpLCAiXlthLXpBLVpdW2EtekEtWjAtOSVfLV0qIildCisJCQkJCWVuZGZvcgorCQkJCWVuZGlmCisJCQllbHNlaWYgYXR0cm5hbWUgPT0gJ3R5cGUnCisJCQkJaWYgYTpiYXNlID1+ICdeaW5wdXQnCisJCQkJCWxldCB2YWx1ZXMgPSBbImlucHV0LXRleHQiLCAicGFzc3dvcmQiLCAiY2hlY2tib3giLCAicmFkaW8iLCAic3VibWl0IiwgInJlc2V0IiwgImlucHV0LWZpbGUiLCAiaGlkZGVuIiwgImlucHV0LWltYWdlIiwgImlucHV0LWJ1dHRvbiJdCisJCQkJZWxzZWlmIGE6YmFzZSA9fiAnXmJ1dHRvbicKKwkJCQkJbGV0IHZhbHVlcyA9IFsiYnV0dG9uIiwgInN1Ym1pdCIsICJyZXNldCJdCisJCQkJZW5kaWYKKwkJCWVsc2UKKwkJCQlyZXR1cm4gW10KKwkJCWVuZGlmCisKKwkJCWlmIGxlbih2YWx1ZXMpID09IDAKKwkJCQlyZXR1cm4gW10KKwkJCWVuZGlmCisKKwkJCSIgV2UgbmVlZCBzcGVjaWFsIHZlcnNpb24gb2Ygc2Jhc2UKKwkJCWxldCBhdHRyYmFzZSA9IG1hdGNoc3RyKGE6YmFzZSwgIi4qW1wiJ10iKQorCisJCQlmb3IgbSBpbiB2YWx1ZXMKKwkJCQlpZiBtID1+ICdeJyAuIGVudGVyZWRfdmFsdWUKKwkJCQkJY2FsbCBhZGQocmVzLCBhdHRyYmFzZSAuIG0gLiAnIiAnKQorCQkJCWVuZGlmCisJCQllbmRmb3IKKwkJZW5kaWYKKwkJIiBTaG9ydGVuIGE6YmFzZSB0byBub3QgaW5jbHVkZSBsYXN0IHdvcmQKKwkJbGV0IHNiYXNlID0gbWF0Y2hzdHIoYTpiYXNlLCAnLipcemVccy4qJykKKwkJaWYgdGFnID1+ICdeXChhYmJyXHxhY3JvbnltXHxiXHxiZG9cfGJpZ1x8Y2FwdGlvblx8Y2l0ZVx8Y29kZVx8ZGRcfGRmblx8ZGl2XHxkbFx8ZHRcfGVtXHxmaWVsZHNldFx8aFxkXHxrYmRcfGxpXHxub3NjcmlwdFx8b2xcfHBcfHNhbXBcfHNtYWxsXHxzcGFuXHxzdHJvbmdcfHN1Ylx8c3VwXHx0dFx8dWxcfHZhclwpJCcKKwkJCWxldCBhdHRycyA9IGc6Y29yZWdyb3VwCisJCWVsc2VpZiB0YWcgPT0gJ2EnCisJCQlsZXQgdGFnc3BlYyA9IFsiY2hhcnNldCIsICJ0eXBlIiwgIm5hbWUiLCAiaHJlZiIsICJocmVmbGFuZyIsICJyZWwiLCAicmV2IiwgInNoYXBlIiwgImNvb3JkcyJdCisJCQlsZXQgYXR0cnMgPSBleHRlbmQodGFnc3BlYywgZzpjb3JlZ3JvdXApCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIGc6Zm9jdXMpCisJCWVsc2VpZiB0YWcgPT0gJ2FyZWEnCisJCQlsZXQgYXR0cnMgPSBnOmNvcmVncm91cAorCQllbHNlaWYgdGFnID09ICdiYXNlJworCQkJbGV0IGF0dHJzID0gWyJocmVmIiwgImlkIl0KKwkJZWxzZWlmIHRhZyA9PSAnYmxvY2txdW90ZScKKwkJCWxldCBhdHRycyA9IGc6Y29yZWdyb3VwCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsiY2l0ZSJdKQorCQllbHNlaWYgdGFnID09ICdib2R5JworCQkJbGV0IGF0dHJzID0gZzpjb3JlZ3JvdXAKKwkJCWxldCBhdHRycyA9IGV4dGVuZChhdHRycywgWyJvbmxvYWQiLCAib251bmxvYWQiXSkKKwkJZWxzZWlmIHRhZyA9PSAnYnInCisJCQlsZXQgYXR0cnMgPSBnOmNvcmVhdHRycworCQllbHNlaWYgdGFnID09ICdidXR0b24nCisJCQlsZXQgYXR0cnMgPSBnOmNvcmVhdHRycworCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBnOmZvY3VzKQorCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBbIm5hbWUiLCAidmFsdWUiLCAidHlwZSJdKQorCQllbHNlaWYgdGFnID09ICdeXChjb2xcfGNvbGdyb3VwXCkkJworCQkJbGV0IGF0dHJzID0gZzpjb3JlYXR0cnMKKwkJCWxldCBhdHRycyA9IGV4dGVuZChhdHRycywgWyJzcGFuIiwgIndpZHRoIiwgImFsaWduIiwgImNoYXIiLCAiY2hhcm9mZiIsICJ2YWxpZ24iXSkKKwkJZWxzZWlmIHRhZyA9fiAnXlwoZGVsXHxpbnNcKSQnCisJCQlsZXQgYXR0cnMgPSBnOmNvcmVhdHRycworCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBbImNpdGUiLCAiZGF0ZXRpbWUiXSkKKwkJZWxzZWlmIHRhZyA9PSAnZm9ybScKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsiYWN0aW9uIiwgIm1ldGhvZCIsICJlbmN0eXBlIiwgIm9uc3VibWl0IiwgIm9ucmVzZXQiLCAiYWNjZXB0IiwgImFjY2VwdC1jaGFyc2V0Il0pCisJCWVsc2VpZiB0YWcgPT0gJ2hlYWQnCisJCQlsZXQgYXR0cnMgPSBnOmkxOG4KKwkJCWxldCBhdHRycyA9IGV4dGVuZChhdHRycywgWyJpZCIsICJwcm9maWxlIl0pCisJCWVsc2VpZiB0YWcgPT0gJ2h0bWwnCisJCQlsZXQgYXR0cnMgPSBnOmkxOG4KKwkJCWxldCBhdHRycyA9IGV4dGVuZChhdHRycywgWyJpZCIsICJ4bWxucyJdKQorCQllbHNlaWYgdGFnID09ICdpbWcnCisJCQlsZXQgYXR0cnMgPSBnOmNvcmVhdHRycworCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBbInNyYyIsICJhbHQiLCAibG9uZ2Rlc2MiLCAiaGVpZ2h0IiwgIndpZHRoIiwgInVzZW1hcCIsICJpc21hcCJdKQorCQllbHNlaWYgdGFnID09ICdpbnB1dCcKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIGc6Zm9jdXMpCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsidHlwZSIsICJuYW1lIiwgInZhbHVlIiwgImNoZWNrZWQiLCAiZGlzYWJsZWQiLCAicmVhZG9ubHkiLCAic2l6ZSIsICJtYXhsZW5ndGgiLCAic3JjIiwgImFsdCIsICJ1c2VtYXAiLCAib25zZWxlY3QiLCAib25jaGFuZ2UiLCAiYWNjZXB0Il0pCisJCWVsc2VpZiB0YWcgPT0gJ2xhYmVsJworCQkJbGV0IGF0dHJzID0gZzpjb3JlYXR0cnMKKwkJCWxldCBhdHRycyA9IGV4dGVuZChhdHRycywgWyJmb3IiLCAiYWNjZXNza2V5IiwgIm9uZm9jdXMiLCAib25ibHVyIl0pCisJCWVsc2VpZiB0YWcgPT0gJ2xlZ2VuZCcKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsiYWNjZXNza2V5Il0pCisJCWVsc2VpZiB0YWcgPT0gJ2xpbmsnCisJCQlsZXQgYXR0cnMgPSBnOmNvcmVhdHRycworCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBbImNoYXJzZXQiLCAiaHJlZiIsICJocmVmbGFuZyIsICJ0eXBlIiwgInJlbCIsICJyZXYiLCAibWVkaWEiXSkKKwkJZWxzZWlmIHRhZyA9PSAnbWFwJworCQkJbGV0IGF0dHJzID0gZzppMThuCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIGc6ZXZlbnRzKQorCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBbImlkIiwgImNsYXNzIiwgInN0eWxlIiwgInRpdGxlIiwgIm5hbWUiXSkKKwkJZWxzZWlmIHRhZyA9PSAnbWV0YScKKwkJCWxldCBhdHRycyA9IGc6aTE4bgorCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBbImlkIiwgImh0dHAtZXF1aXYiLCAiY29udGVudCIsICJzY2hlbWUiLCAibmFtZSJdKQorCQllbHNlaWYgdGFnID09ICd0aXRsZScKKwkJCWxldCBhdHRycyA9IGc6aTE4bgorCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBbImlkIl0pCisJCWVsc2VpZiB0YWcgPT0gJ29iamVjdCcKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsiZGVjbGFyZSIsICJjbGFzc2lkIiwgImNvZGViYXNlIiwgImRhdGEiLCAidHlwZSIsICJjb2RldHlwZSIsICJhcmNoaXZlIiwgInN0YW5kYnkiLCAiaGVpZ2h0IiwgIndpZHRoIiwgInVzZW1hcCIsICJuYW1lIiwgInRhYmluZGV4Il0pCisJCWVsc2VpZiB0YWcgPT0gJ29wdGdyb3VwJworCQkJbGV0IGF0dHJzID0gZzpjb3JlYXR0cnMKKwkJCWxldCBhdHRycyA9IGV4dGVuZChhdHRycywgWyJkaXNibGVkIiwgImxhYmVsIl0pCisJCWVsc2VpZiB0YWcgPT0gJ29wdGlvbicKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsiZGlzYmxlZCIsICJzZWxlY3RlZCIsICJ2YWx1ZSIsICJsYWJlbCJdKQorCQllbHNlaWYgdGFnID09ICdwYXJhbScKKwkJCWxldCBhdHRycyA9IFsiaWQiLCAibmFtZSIsICJ2YWx1ZSIsICJ2YWx1ZXR5cGUiLCAidHlwZSJdCisJCWVsc2VpZiB0YWcgPT0gJ3ByZScKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsieG1sOnNwYWNlIl0pCisJCWVsc2VpZiB0YWcgPT0gJ3EnCisJCQlsZXQgYXR0cnMgPSBnOmNvcmVhdHRycworCQkJbGV0IGF0dHJzID0gZXh0ZW5kKGF0dHJzLCBbImNpdGUiXSkKKwkJZWxzZWlmIHRhZyA9PSAnc2NyaXB0JworCQkJbGV0IGF0dHJzID0gWyJpZCIsICJjaGFyc2V0IiwgInR5cGUiLCAic3JjIiwgImRlZmVyIiwgInhtbDpzcGFjZSJdCisJCWVsc2VpZiB0YWcgPT0gJ3NlbGVjdCcKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsibmFtZSIsICJzaXplIiwgIm11bHRpcGxlIiwgImRpc2FibGVkIiwgInRhYmluZGV4IiwgIm9uZm9jdXMiLCAib25ibHVyIiwgIm9uY2hhbmdlIl0pCisJCWVsc2VpZiB0YWcgPT0gJ3N0eWxlJworCQkJbGV0IGF0dHJzID0gZzpjb3JlYXR0cnMKKwkJCWxldCBhdHRycyA9IGV4dGVuZChhdHRycywgWyJpZCIsICJ0eXBlIiwgIm1lZGlhIiwgInRpdGxlIiwgInhtbDpzcGFjZSJdKQorCQllbHNlaWYgdGFnID09ICd0YWJsZScKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsic3VtbWFyeSIsICJ3aWR0aCIsICJib3JkZXIiLCAiZnJhbWUiLCAicnVsZXMiICJjZWxsc3BhY2luZyIsICJjZWxscGFkZGluZyJdKQorCQllbHNlaWYgdGFnID1+ICdeXCh0aGVhZFx8dGZvb3RcfHRib2R5XHx0clwpJCcKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsiYWxpZ24iLCAiY2hhciIsICJjaGFyb2ZmIiwgInZhbGlnbiJdKQorCQllbHNlaWYgdGFnID09ICd0ZXh0YXJlYScKKwkJCWxldCBhdHRycyA9IGc6Y29yZWF0dHJzCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIGc6Zm9jdXMpCisJCQlsZXQgYXR0cnMgPSBleHRlbmQoYXR0cnMsIFsibmFtZSIsICJyb3dzIiwgImNvbHMiLCAiZGlzYWJsZWQiLCAicmVhZG9ubHkiLCAib25zZWxlY3QiLCAib25jaGFuZ2UiXSkKKwkJZWxzZWlmIHRhZyA9fiAnXlwodGhcfHRkXCkkJworCQkJbGV0IGF0dHJzID0gZzpjb3JlYXR0cnMKKwkJCWxldCBhdHRycyA9IGV4dGVuZChhdHRycywgWyJhYmJyIiwgImhlYWRlcnMiLCAic2NvcGUiLCAicm93c3BhbiIsICJjb2xzcGFuIiwgImFsaWduIiwgImNoYXIiLCAiY2hhcm9mZiIsICJ2YWxpZ24iXSkKKwkJZW5kaWYKKworCQlmb3IgbSBpbiBzb3J0KGF0dHJzKQorCQkJaWYgbSA9fiAnXicgLiBhdHRyCisJCQkJaWYgbSA9fiAnXlwoaXNtYXBcfGRlZmVyXHxkZWNsYXJlXHxub2hyZWZcfGNoZWNrZWRcfGRpc2FibGVkXHxzZWxlY3RlZFx8cmVhZG9ubHlcKSQnCisJCQkJCWNhbGwgYWRkKHJlcywgc2Jhc2UuJyAnLm0pCisJCQkJZWxzZQorCQkJCQljYWxsIGFkZChyZXMsIHNiYXNlLicgJy5tLic9IicpCisJCQkJZW5kaWYKKwkJCWVuZGlmCisJCWVuZGZvcgorCQlyZXR1cm4gcmVzCisJZW5kaWYKKyAgICBmb3IgbSBpbiBzcGxpdCgiYSBhYmJyIGFjcm9ueW0gYWRkcmVzcyBhcmVhIGIgYmFzZSBiZG8gYmlnIGJsb2NrcXVvdGUgYm9keSBiciBidXR0b24gY2FwdGlvbiBjaXRlIGNvZGUgY29sIGNvbGdyb3VwIGRkIGRlbCBkZm4gZGl2IGRsIGR0IGVtIGZpZWxkc2V0IGZvcm0gaGVhZCBoMSBoMiBoMyBoNCBoNSBoNiBociBodG1sIGkgaW1nIGlucHV0IGlucyBrYmQgbGFiZWwgbGVnZW5kIGxpIGxpbmsgbWFwIG1ldGEgbm9zY3JpcHQgb2JqZWN0IG9sIG9wdGdyb3VwIG9wdGlvbiBwIHBhcmFtIHByZSBxIHNhbXAgc2NyaXB0IHNlbGVjdCBzbWFsbCBzcGFuIHN0cm9uZyBzdHlsZSBzdWIgc3VwIHRhYmxlIHRib2R5IHRkIHRleHRhcmVhIHRmb290IHRoIHRoZWFkIHRpdGxlIHRyIHR0IHVsIHZhciIpCisJCWlmIG0gPX4gJ14nIC4gYTpiYXNlCisJCQljYWxsIGFkZChyZXMsIG0pCisJCWVuZGlmCisgICAgZW5kZm9yCisgICAgcmV0dXJuIHJlcworICBlbmRpZgorZW5kZnVuY3Rpb24KZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvbmV0cncudmltIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KaW5kZXggMzdkZDEzZC4uYzc0MzRhZiAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9uZXRydy52aW0KQEAgLTEsNyArMSw3IEBACiAiIG5ldHJ3LnZpbTogSGFuZGxlcyBmaWxlIHRyYW5zZmVyIGFuZCByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcgYWNyb3NzIGEgbmV0d29yawogIiAgICAgICAgICAgIEFVVE9MT0FEIFBPUlRJT04KLSIgRGF0ZToJCVNlcCAwOSwgMjAwNQotIiBWZXJzaW9uOgk2OQorIiBEYXRlOgkJU2VwIDEyLCAyMDA1CisiIFZlcnNpb246CTcwCiAiIE1haW50YWluZXI6CUNoYXJsZXMgRSBDYW1wYmVsbCwgSnIgPGRyY2hpcE5PU1BBTSBhdCBjYW1wYmVsbGZhbWlseSBkb3QgYml6PgogIiBHZXRMYXRlc3RWaW1TY3JpcHRzOiAxMDc1IDEgOkF1dG9JbnN0YWxsOiBuZXRydy52aW0KICIgQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4ge3t7MQpAQCAtMjYsNyArMjYsNyBAQAogIGVjaG9obCBXYXJuaW5nTXNnIHwgZWNobyAiKioqbmV0cncqKiogeW91IG5lZWQgdmltIHZlcnNpb24gNy4wIG9yIGxhdGVyIGZvciB2ZXJzaW9uICIuZzpsb2FkZWRfbmV0cncuIiBvZiBuZXRydyIgfCBlY2hvaGwgTm9uZQogIGZpbmlzaAogZW5kaWYKLWxldCBnOmxvYWRlZF9uZXRydyA9ICJ2NjkiCitsZXQgZzpsb2FkZWRfbmV0cncgPSAidjcwIgogbGV0IHM6a2VlcGNwbyAgICAgID0gJmNwbwogc2V0IGNwbyZ2aW0KICIgY2FsbCBEZWNobygiZG9pbmcgYXV0b2xvYWQvbmV0cncudmltIikKQEAgLTExNDMsNyArMTE0Myw3IEBACiAgICBrZWVwanVtcHMgMWQKIAogICAgIiBzYXZlIGNlcnRhaW4gd2luZG93LW9yaWVudGVkIHZhcmlhYmxlcyBpbnRvIGJ1ZmZlci1vcmllbnRlZCB2YXJpYWJsZXMKLSAgIGNhbGwgczpCdWZXaW5WYXJzKCkKKyAgIGNhbGwgczpTZXRCdWZXaW5WYXJzKCkKICAgIGNhbGwgczpOZXRPcHRpb25SZXN0b3JlKCkKICAgIHNldGxvY2FsIG5vbW9kCiAKQEAgLTIyMzcsMTIgKzIyMzcsMTAgQEAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldE9idGFpbjogb2J0YWluIGZpbGUgdW5kZXIgY3Vyc29yIChmb3IgcmVtb3RlIGJyb3dzaW5nIHN1cHBvcnQpIHt7ezIKIGZ1biEgczpOZXRPYnRhaW4oKQotICBpZiAhZXhpc3RzKCJzOm5ldHJ3X3VzZXJzX3N0bCIpCi0gICBsZXQgczpuZXRyd191c2Vyc19zdGw9ICZzdGwKLSAgZW5kaWYKICAgbGV0IGZuYW1lPSBleHBhbmQoIjxjV09SRD4iKQotICBleGUgJ3NldCBzdGw9JWZcICVoJW0lciU9T2J0YWluaW5nXCAnLmVzY2FwZShmbmFtZSwnICcpCi0gIHJlZHJhdyEKKworICAiIE5ldHJ3U3RhdHVzTGluZSBzdXBwb3J0IC0gZm9yIG9idGFpbmluZyBzdXBwb3J0CisgIGNhbGwgczpTZXR1cE5ldHJ3U3RhdHVzTGluZSgnJWYgJWglbSVyJT0lOSpPYnRhaW5pbmcgJy5mbmFtZSkKIAogIiAgY2FsbCBEZnVuYygiTmV0T2J0YWluKCkgbWV0aG9kPSIudzpuZXRyd19tZXRob2QpCiAgIGlmIGV4aXN0cygidzpuZXRyd19tZXRob2QiKSAmJiB3Om5ldHJ3X21ldGhvZCA9fiAnWzIzNV0nCkBAIC0yMzIwLDYgKzIzMTgsOCBAQAogICAgICBlY2hvaGwgRXJyb3IgfCBlY2hvICIqKipuZXRydyoqKiB0aGlzIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgZnRwIiB8IGVjaG9obCBOb25lCiAgICAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKICAgICBlbmRpZgorICAgIGxldCAmc3RsICAgICAgICA9IHM6bmV0cndfdXNlcnNfc3RsCisgICAgbGV0ICZsYXN0c3RhdHVzID0gczpuZXRyd191c2Vyc19scwogIiAgICBjYWxsIERyZXQoIk5ldE9idGFpbiIpCiAgICAgcmV0dXJuCiAgICBlbmRpZgpAQCAtMjM0Myw3ICsyMzQzLDggQEAKICAgZW5kaWYKIAogICAiIHJlc3RvcmUgc3RhdHVzIGxpbmUKLSAgbGV0ICZzdGw9IHM6bmV0cndfdXNlcnNfc3RsCisgIGxldCAmc3RsICAgICAgICA9IHM6bmV0cndfdXNlcnNfc3RsCisgIGxldCAmbGFzdHN0YXR1cyA9IHM6bmV0cndfdXNlcnNfbHMKICAgcmVkcmF3IQogCiAiICBjYWxsIERyZXQoIk5ldE9idGFpbiIpCkBAIC0yNjExLDcgKzI2MTIsNyBAQAogICBsZXQgdzpuZXRyd19wcnZkaXI9IGI6bmV0cndfY3VyZGlyCiAKICAgIiBzYXZlIGNlcnRhaW4gd2luZG93LW9yaWVudGVkIHZhcmlhYmxlcyBpbnRvIGJ1ZmZlci1vcmllbnRlZCB2YXJpYWJsZXMKLSAgY2FsbCBzOkJ1ZldpblZhcnMoKQorICBjYWxsIHM6U2V0QnVmV2luVmFycygpCiAgIGNhbGwgczpOZXRPcHRpb25SZXN0b3JlKCkKICAgc2V0bG9jYWwgbm9tYSBub21vZCBub251IGJoPWhpZGUgbm9ibAogCkBAIC0zMDQyLDEyICszMDQzLDggQEAKICAgICAgZW5kaWYKICAgICBlbmRpZgogCi0gICAgIiBOZXRyd1N0YXR1c0xpbmUgc3VwcG9ydAorICAgICIgTmV0cndTdGF0dXNMaW5lIHN1cHBvcnQgLSBmb3IgZXhwbG9yaW5nIHN1cHBvcnQKICAgICBsZXQgdzpuZXRyd19leHBsb3JlX2luZHg9IGluZHgKLSAgICBpZiAhZXhpc3RzKCJzOm5ldHJ3X3VzZXJzX3N0bCIpCi0gICAgIGxldCBzOm5ldHJ3X3VzZXJzX3N0bD0gJnN0bAotICAgIGVuZGlmCi0gICAgc2V0IHN0bD0lZlwgJWglbSVyJT0le05ldHJ3U3RhdHVzTGluZSgpfQogIiAgICBjYWxsIERlY2hvKCJleHBsb3JlbGlzdDwiLmpvaW4odzpuZXRyd19leHBsb3JlX2xpc3QsJywnKS4iPiBsZW49Ii53Om5ldHJ3X2V4cGxvcmVfbGlzdGxlbikKIAogICAgICIgc2FuaXR5IGNoZWNrCkBAIC0zMDYwLDE1ICszMDU3LDIxIEBACiAgICAgZW5kaWYKIAogICAgIGV4ZSAibGV0IGRpcmZpbGU9IHc6bmV0cndfZXhwbG9yZV9saXN0WyIuaW5keC4iXSIKLSIgICAgY2FsbCBEZWNobygiZGlyZmlsZTwiLmRpcmZpbGUuIj4gaW5keD0iLmluZHgpCisiICAgIGNhbGwgRGVjaG8oImRpcmZpbGU9dzpuZXRyd19leHBsb3JlX2xpc3RbaW5keD0iLmluZHguIl09IDwiLmRpcmZpbGUuIj4iKQogICAgIGxldCBuZXdkaXI9IHN1YnN0aXR1dGUoZGlyZmlsZSwnL1teL10qJCcsJycsJ2UnKQogIiAgICBjYWxsIERlY2hvKCJuZXdkaXI8Ii5uZXdkaXIuIj4iKQorCiAiICAgIGNhbGwgRGVjaG8oImNhbGxpbmcgTG9jYWxCcm93c2UobmV3ZGlyPCIubmV3ZGlyLiI+KSIpCiAgICAgY2FsbCBzOkxvY2FsQnJvd3NlKG5ld2RpcikKLSAgICBjYWxsIHNlYXJjaChzdWJzdGl0dXRlKGRpcmZpbGUsIl4uKi8iLCIiLCIiKSwiVyIpCisgICAgaWYgdzpuZXRyd19sb25nbGlzdCA9PSAwIHx8IHc6bmV0cndfbG9uZ2xpc3QgPT0gMQorICAgICBjYWxsIHNlYXJjaCgnXicuc3Vic3RpdHV0ZShkaXJmaWxlLCJeLiovIiwiIiwiIikuJ1w+JywiVyIpCisgICAgZWxzZQorICAgICBjYWxsIHNlYXJjaCgnXDwnLnN1YnN0aXR1dGUoZGlyZmlsZSwiXi4qLyIsIiIsIiIpLidcPicsInciKQorICAgIGVuZGlmCiAgICAgbGV0IHc6bmV0cndfZXhwbG9yZV9tdGNoY250ID0gaW5keCArIDEKICAgICBsZXQgdzpuZXRyd19leHBsb3JlX2J1Zm5yICAgPSBidWZucigiLiIpCiAgICAgbGV0IHc6bmV0cndfZXhwbG9yZV9saW5lICAgID0gbGluZSgiLiIpCisgICAgY2FsbCBzOlNldHVwTmV0cndTdGF0dXNMaW5lKCclZiAlaCVtJXIlPSU5KiV7TmV0cndTdGF0dXNMaW5lKCl9JykKICIgICAgY2FsbCBEZWNobygiZXhwbG9yZTogbXRjaGNudD0iLnc6bmV0cndfZXhwbG9yZV9tdGNoY250LiIgYnVmbnI9Ii53Om5ldHJ3X2V4cGxvcmVfYnVmbnIuIiBsaW5lIyIudzpuZXRyd19leHBsb3JlX2xpbmUpCiAKICAgIGVsc2UKQEAgLTMwODgsMTIgKzMwOTEsNzMgQEAKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBTZXR1cE5ldHJ3U3RhdHVzTGluZToge3t7MgorZnVuISBzOlNldHVwTmV0cndTdGF0dXNMaW5lKHN0YXRsaW5lKQorIiAgY2FsbCBEZnVuYygiU2V0dXBOZXRyd1N0YXR1c0xpbmUoc3RhdGxpbmU8Ii5hOnN0YXRsaW5lLiI+KSIpCisKKyAgaWYgIWV4aXN0cygiczpuZXRyd19zZXR1cF9zdGF0bGluZSIpCisgICBsZXQgczpuZXRyd19zZXR1cF9zdGF0bGluZT0gMQorIiAgIGNhbGwgRGVjaG8oImRvIGZpcnN0LXRpbWUgc3RhdHVzIGxpbmUgc2V0dXAiKQorCisgICBpZiAhZXhpc3RzKCJzOm5ldHJ3X3VzZXJzX3N0bCIpCisgICAgbGV0IHM6bmV0cndfdXNlcnNfc3RsPSAmc3RsCisgICBlbmRpZgorICAgaWYgIWV4aXN0cygiczpuZXRyd191c2Vyc19scyIpCisgICAgbGV0IHM6bmV0cndfdXNlcnNfbHM9ICZsYXN0c3RhdHVzCisgICBlbmRpZgorCisgICAiIHNldCB1cCBVc2VyOSBoaWdobGlnaHRpbmcgYXMgbmVlZGVkCisgICBsZXQga2VlcGE9IEBhCisgICByZWRpciBAYQorICAgdHJ5CisgICAgaGkgVXNlcjkKKyAgIGNhdGNoIC9eVmltXCUoKFxhXCspXClcPTpFNDExLworICAgIGlmICZiZyA9PSAiZGFyayIKKyAgICAgaGkgVXNlcjkgY3Rlcm1mZz15ZWxsb3cgY3Rlcm1iZz1ibHVlIGd1aWZnPXllbGxvdyBndWliZz1ibHVlCisgICAgZWxzZQorICAgICBoaSBVc2VyOSBjdGVybWJnPXllbGxvdyBjdGVybWZnPWJsdWUgZ3VpYmc9eWVsbG93IGd1aWZnPWJsdWUKKyAgICBlbmRpZgorICAgZW5kdHJ5CisgICByZWRpciBFTkQKKyAgIGxldCBAYT0ga2VlcGEKKyAgZW5kaWYKKworICAiIHNldCB1cCBzdGF0dXMgbGluZSAobWF5IHVzZSBVc2VyOSBoaWdobGlnaHRpbmcpCisgICIgaW5zdXJlIHRoYXQgd2luZG93cyBoYXZlIGEgc3RhdHVzbGluZQorICAiIG1ha2Ugc3VyZSBzdGF0dXNsaW5lIGlzIGRpc3BsYXllZAorICBsZXQgJnN0bD1hOnN0YXRsaW5lCisgIHNldCBsYXN0c3RhdHVzPTIKKyIgIGNhbGwgRGVjaG8oInN0bD0iLiZzdGwpCisgIHJlZHJhdyEKKworIiAgY2FsbCBEcmV0KCJTZXR1cE5ldHJ3U3RhdHVzTGluZSA6IHN0bD0iLiZzdGwpCitlbmRmdW4KKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTmV0cndTdGF0dXNMaW5lOiB7e3syCiBmdW4hIE5ldHJ3U3RhdHVzTGluZSgpCi0iICBsZXQgZzpzdGxtc2c9ICJYYnVmbnI9Ii53Om5ldHJ3X2V4cGxvcmVfYnVmbnIuIiBidWZucj0iLmJ1Zm5yKCIuIikuIiBYbGluZSMiLnc6bmV0cndfZXhwbG9yZV9saW5lLiIgbGluZSMiLmxpbmUoIi4iKQorCisgICIgdnZ2IE5ldHJ3U3RhdHVzTGluZSgpIGRlYnVnZ2luZyB2dnYKKyIgIGxldCBnOnN0bG1zZz0iIgorIiAgaWYgIWV4aXN0cygidzpuZXRyd19leHBsb3JlX2J1Zm5yIikKKyIgICBsZXQgZzpzdGxtc2c9IiFYPGV4cGxvcmVfYnVmbnI+IgorIiAgZWxzZWlmIHc6bmV0cndfZXhwbG9yZV9idWZuciAhPSBidWZucigiLiIpCisiICAgbGV0IGc6c3RsbXNnPSJleHBsb3JlX2J1Zm5yIT0iLmJ1Zm5yKCIuIikKKyIgIGVuZGlmCisiICBpZiAhZXhpc3RzKCJ3Om5ldHJ3X2V4cGxvcmVfbGluZSIpCisiICAgbGV0IGc6c3RsbXNnPSIgIVg8ZXhwbG9yZV9saW5lPiIKKyIgIGVsc2VpZiB3Om5ldHJ3X2V4cGxvcmVfbGluZSAhPSBsaW5lKCIuIikKKyIgICBsZXQgZzpzdGxtc2c9IiBleHBsb3JlX2xpbmUhPXtsaW5lKC4pPCIubGluZSgiLiIpLiI+IgorIiAgZW5kaWYKKyIgIGlmICFleGlzdHMoInc6bmV0cndfZXhwbG9yZV9saXN0IikKKyIgICBsZXQgZzpzdGxtc2c9IiAhWDxleHBsb3JlX2xpc3Q+IgorIiAgZW5kaWYKKyAgIiBeXl4gTmV0cndTdGF0dXNMaW5lKCkgZGVidWdnaW5nIF5eXgorCiAgIGlmICFleGlzdHMoInc6bmV0cndfZXhwbG9yZV9idWZuciIpIHx8IHc6bmV0cndfZXhwbG9yZV9idWZuciAhPSBidWZucigiLiIpIHx8ICFleGlzdHMoInc6bmV0cndfZXhwbG9yZV9saW5lIikgfHwgdzpuZXRyd19leHBsb3JlX2xpbmUgIT0gbGluZSgiLiIpIHx8ICFleGlzdHMoInc6bmV0cndfZXhwbG9yZV9saXN0IikKICAgICIgcmVzdG9yZSB1c2VyJ3Mgc3RhdHVzIGxpbmUKLSAgIGxldCAmc3RsPSBzOm5ldHJ3X3VzZXJzX3N0bAorICAgbGV0ICZzdGwgICAgICAgID0gczpuZXRyd191c2Vyc19zdGwKKyAgIGxldCAmbGFzdHN0YXR1cyA9IHM6bmV0cndfdXNlcnNfbHMKICAgIGlmIGV4aXN0cygidzpuZXRyd19leHBsb3JlX2J1Zm5yIil8dW5sZXQgdzpuZXRyd19leHBsb3JlX2J1Zm5yfGVuZGlmCiAgICBpZiBleGlzdHMoInc6bmV0cndfZXhwbG9yZV9saW5lIil8dW5sZXQgdzpuZXRyd19leHBsb3JlX2xpbmV8ZW5kaWYKICAgIHJldHVybiAiIgpAQCAtMzU5MSwxNCArMzY1NSwxNCBAQAogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIEJ1ZldpblZhcnM6ICh1c2VkIGJ5IE5ldEJyb3dzZSgpIGFuZCBMb2NhbEJyb3dzZSgpKSB7e3sxCisiIFNldEJ1ZldpblZhcnM6ICh1c2VkIGJ5IE5ldEJyb3dzZSgpIGFuZCBMb2NhbEJyb3dzZSgpKSB7e3sxCiAiICAgVG8gYWxsb3cgc2VwYXJhdGUgd2luZG93cyB0byBoYXZlIHRoZWlyIG93biBhY3Rpdml0aWVzLCBzdWNoIGFzCiAiICAgRXhwbG9yZSAqKi9wYXR0ZXJuLCBzZXZlcmFsIHZhcmlhYmxlcyBoYXZlIGJlZW4gbWFkZSB3aW5kb3ctb3JpZW50ZWQuCiAiICAgSG93ZXZlciwgd2hlbiB0aGUgdXNlciBzcGxpdHMgYSBicm93c2VyIHdpbmRvdyAoZXg6IGN0cmwtdyBzKSwgdGhlc2UKLSIgICB2YXJpYWJsZXMgYXJlIG5vdCBpbmhlcml0ZWQgYnkgdGhlIG5ldyB3aW5kb3cuICBCdWZXaW5WYXJzKCkgYW5kCisiICAgdmFyaWFibGVzIGFyZSBub3QgaW5oZXJpdGVkIGJ5IHRoZSBuZXcgd2luZG93LiAgU2V0QnVmV2luVmFycygpIGFuZAogIiAgIFVzZUJ1ZldpblZhcnMoKSBnZXQgYXJvdW5kIHRoYXQuCi1mdW4hIHM6QnVmV2luVmFycygpCi0iICBjYWxsIERmdW5jKCJCdWZXaW5WYXJzKCkiKQorZnVuISBzOlNldEJ1ZldpblZhcnMoKQorIiAgY2FsbCBEZnVuYygiU2V0QnVmV2luVmFycygpIikKICAgaWYgZXhpc3RzKCJ3Om5ldHJ3X2xvbmdsaXN0IikgICAgICAgfGxldCBiOm5ldHJ3X2xvbmdsaXN0ICAgICAgICA9IHc6bmV0cndfbG9uZ2xpc3QgICAgICAgfGVuZGlmCiAgIGlmIGV4aXN0cygidzpuZXRyd19iYW5uZXJjbnQiKSAgICAgIHxsZXQgYjpuZXRyd19iYW5uZXJjbnQgICAgICAgPSB3Om5ldHJ3X2Jhbm5lcmNudCAgICAgIHxlbmRpZgogICBpZiBleGlzdHMoInc6bmV0cndfbWV0aG9kIikgICAgICAgICB8bGV0IGI6bmV0cndfbWV0aG9kICAgICAgICAgID0gdzpuZXRyd19tZXRob2QgICAgICAgICB8ZW5kaWYKQEAgLTM2MDksNyArMzY3Myw3IEBACiAgIGlmIGV4aXN0cygidzpuZXRyd19leHBsb3JlX2J1Zm5yIikgIHxsZXQgYjpuZXRyd19leHBsb3JlX2J1Zm5yICAgPSB3Om5ldHJ3X2V4cGxvcmVfYnVmbnIgIHxlbmRpZgogICBpZiBleGlzdHMoInc6bmV0cndfZXhwbG9yZV9saW5lIikgICB8bGV0IGI6bmV0cndfZXhwbG9yZV9saW5lICAgID0gdzpuZXRyd19leHBsb3JlX2xpbmUgICB8ZW5kaWYKICAgaWYgZXhpc3RzKCJ3Om5ldHJ3X2V4cGxvcmVfbGlzdCIpICAgfGxldCBiOm5ldHJ3X2V4cGxvcmVfbGlzdCAgICA9IHc6bmV0cndfZXhwbG9yZV9saXN0ICAgfGVuZGlmCi0iICBjYWxsIERyZXQoIkJ1ZldpblZhcnMiKQorIiAgY2FsbCBEcmV0KCJTZXRCdWZXaW5WYXJzIikKIGVuZGZ1bgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZGlncmFwaC50eHQgYi9ydW50aW1lL2RvYy9kaWdyYXBoLnR4dAppbmRleCAyMDFkNmEwLi5jNzU3MDhlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9kaWdyYXBoLnR4dAorKysgYi9ydW50aW1lL2RvYy9kaWdyYXBoLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpkaWdyYXBoLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMDYKKypkaWdyYXBoLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMTEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE2Niw3ICsxNjYsOCBAQAogRXhjZXB0aW9uOiBSRkMxMzQ1IGRvZXNuJ3Qgc3BlY2lmeSB0aGUgZXVybyBzaWduLiAgSW4gVmltIHRoZSBkaWdyYXBoID1lIHdhcwogYWRkZWQgZm9yIHRoaXMuICBOb3RlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbGF0aW4xLCB3aGVyZSB0aGUgZGlncmFwaCBDdSBpcwogdXNlZCBmb3IgdGhlIGN1cnJlbmN5IHNpZ24sIGFuZCBsYXRpbjkgKGlzby04ODU5LTE1KSwgd2hlcmUgdGhlIGRpZ3JhcGggPWUgaXMKLXVzZWQgZm9yIHRoZSBldXJvIHNpZ24sIHdoaWxlIGJvdGggb2YgdGhlbSBhcmUgdGhlIGNoYXJhY3RlciAxNjQsIDB4YTQuCit1c2VkIGZvciB0aGUgZXVybyBzaWduLCB3aGlsZSBib3RoIG9mIHRoZW0gYXJlIHRoZSBjaGFyYWN0ZXIgMTY0LCAweGE0LiAgRm9yCitjb21wYXRpYmlsaXR5IHdpdGggenNoIEV1IGNhbiBhbHNvIGJlIHVzZWQgZm9yIHRoZSBldXJvIHNpZ24uCiAKIAkJCQkJCQkqZGlncmFwaC10YWJsZSoKIGNoYXIgIGRpZ3JhcGgJaGV4CWRlYwlvZmZpY2lhbCBuYW1lIH4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggYzdmZWU4My4uNmUzZDI2YyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEwCisqZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNjA3LDcgKzE2MDcsOCBAQAogcmVzb2x2ZSgge2ZpbGVuYW1lfSkJCVN0cmluZwlnZXQgZmlsZW5hbWUgYSBzaG9ydGN1dCBwb2ludHMgdG8KIHJldmVyc2UoIHtsaXN0fSkJCUxpc3QJcmV2ZXJzZSB7bGlzdH0gaW4tcGxhY2UKIHNlYXJjaCgge3BhdHRlcm59IFssIHtmbGFnc31dKQlOdW1iZXIJc2VhcmNoIGZvciB7cGF0dGVybn0KLXNlYXJjaGRlY2woe25hbWV9IFssIHtnbG9iYWx9XSkgTnVtYmVyICBzZWFyY2ggZm9yIHZhcmlhYmxlIGRlY2xhcmF0aW9uCitzZWFyY2hkZWNsKHtuYW1lfSBbLCB7Z2xvYmFsfSBbLCB7dGhpc2Jsb2NrfV1dKQorCQkJCU51bWJlciAgc2VhcmNoIGZvciB2YXJpYWJsZSBkZWNsYXJhdGlvbgogc2VhcmNocGFpcigge3N0YXJ0fSwge21pZGRsZX0sIHtlbmR9IFssIHtmbGFnc30gWywge3NraXB9XV0pCiAJCQkJTnVtYmVyCXNlYXJjaCBmb3Igb3RoZXIgZW5kIG9mIHN0YXJ0L2VuZCBwYWlyCiBzZXJ2ZXIyY2xpZW50KCB7Y2xpZW50aWR9LCB7c3RyaW5nfSkKQEAgLTM3MzAsMTAgKzM3MzEsMTcgQEAKIAkJICAgIDplbmR3aGlsZQogPAogCi1zZWFyY2hkZWNsKHtuYW1lfSBbLCB7Z2xvYmFsfV0pCQkJCSpzZWFyY2hkZWNsKCkqCi0JCVNlYXJjaCBmb3IgdGhlIGRlY2xhcmF0aW9uIG9mIHtuYW1lfS4gIFdpdGhvdXQge2dsb2JhbH0gb3IKLQkJd2l0aCBhIHplcm8ge2dsb2JhbH0gYXJndW1lbnQgdGhpcyB3b3JrcyBsaWtlIHxnZHwuICBXaXRoIGEKLQkJbm9uLXplcm8ge2dsb2JhbH0gYXJndW1lbnQgaXQgd29ya3MgbGlrZSB8Z0R8Lgorc2VhcmNoZGVjbCh7bmFtZX0gWywge2dsb2JhbH0gWywge3RoaXNibG9ja31dXSkJCQkqc2VhcmNoZGVjbCgpKgorCQlTZWFyY2ggZm9yIHRoZSBkZWNsYXJhdGlvbiBvZiB7bmFtZX0uCisJCQorCQlXaXRoIGEgbm9uLXplcm8ge2dsb2JhbH0gYXJndW1lbnQgaXQgd29ya3MgbGlrZSB8Z0R8LCBmaW5kCisJCWZpcnN0IG1hdGNoIGluIHRoZSBmaWxlLiAgT3RoZXJ3aXNlIGl0IHdvcmtzIGxpa2UgfGdkfCwgZmluZAorCQlmaXJzdCBtYXRjaCBpbiB0aGUgZnVuY3Rpb24uCisKKwkJV2l0aCBhIG5vbi16ZXJvIHt0aGlzYmxvY2t9IGFyZ3VtZW50IG1hdGNoZXMgaW4gYSB7fSBibG9jaworCQl0aGF0IGVuZHMgYmVmb3JlIHRoZSBjdXJzb3IgcG9zaXRpb24gYXJlIGlnbm9yZWQuICBBdm9pZHMKKwkJZmluZGluZyB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgb25seSB2YWxpZCBpbiBhbm90aGVyIHNjb3BlLgorCiAJCU1vdmVzIHRoZSBjdXJzb3IgdG8gdGhlIGZvdW5kIG1hdGNoLgogCQlSZXR1cm5zIHplcm8gZm9yIHN1Y2Nlc3MsIG5vbi16ZXJvIGZvciBmYWlsdXJlLgogCQlFeGFtcGxlOiA+CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pbnNlcnQudHh0IGIvcnVudGltZS9kb2MvaW5zZXJ0LnR4dAppbmRleCAzMjQ3MzA1Li45NzY0MTA3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pbnNlcnQudHh0CisrKyBiL3J1bnRpbWUvZG9jL2luc2VydC50eHQKQEAgLTEsNCArMSw0IEBACi0qaW5zZXJ0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEwCisqaW5zZXJ0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEzCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC01NjksNyArNTY5LDcgQEAKIDguIGRlZmluaXRpb25zIG9yIG1hY3JvcwkJCQl8aV9DVFJMLVhfQ1RSTC1EfAogOS4gVmltIGNvbW1hbmQtbGluZQkJCQkJfGlfQ1RSTC1YX0NUUkwtVnwKIDEwLiBVc2VyIGRlZmluZWQgY29tcGxldGlvbgkJCQl8aV9DVFJMLVhfQ1RSTC1VfAotMTEuIE9jY3VsdCBjb21wbGV0aW9uCQkJCQl8aV9DVFJMLVhfQ1RSTC1PfAorMTEuIG9tbmkgY29tcGxldGlvbgkJCQkJfGlfQ1RSTC1YX0NUUkwtT3wKIDEyLiBTcGVsbGluZyBzdWdnZXN0aW9ucwkJCQl8aV9DVFJMLVhfc3wKIDEzLiBrZXl3b3JkcyBpbiAnY29tcGxldGUnCQkJCXxpX0NUUkwtTnwKIApAQCAtNjc0LDYgKzY3NCw5IEBACiAJanVzdCB0eXBlOgogCSAgICBwcmludGYoIiglZywgJWcsICVnKSIsIHZlY3RvclswXSwgXlBbMV0sIF5QWzJdKTsKIAorVGhlIHNlYXJjaCB3cmFwcyBhcm91bmQgdGhlIGVuZCBvZiB0aGUgZmlsZSwgdGhlIHZhbHVlIG9mICd3cmFwc2NhbicgaXMgbm90Cit1c2VkIGhlcmUuCisKIE11bHRpcGxlIHJlcGVhdHMgb2YgdGhlIHNhbWUgY29tcGxldGlvbiBhcmUgc2tpcHBlZDsgdGh1cyBhIGRpZmZlcmVudCBtYXRjaAogd2lsbCBiZSBpbnNlcnRlZCBhdCBlYWNoIENUUkwtTiBhbmQgQ1RSTC1QICh1bmxlc3MgdGhlcmUgaXMgb25seSBvbmUKIG1hdGNoaW5nIGtleXdvcmQpLgpAQCAtODgyLDEzICs4ODUsMTMgQEAKIAkJCXByZXZpb3VzIG9uZS4KIAogCi1PY2N1bHQgY29tcGxldGlvbgkJCQkJKmNvbXBsLW9jY3VsdCoKK09tbmkgY29tcGxldGlvbgkJCQkJCSpjb21wbC1vbW5pKgogCiBDb21wbGV0aW9uIGlzIGRvbmUgYnkgYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSB1c2VyIHdpdGggdGhlCi0nb2NjdWx0ZnVuYycgb3B0aW9uLiAgVGhpcyBpcyB0byBiZSB1c2VkIGZvciBmaWxldHlwZS1zcGVjaWZpYyBjb21wbGV0aW9uLgorJ29tbmlmdW5jJyBvcHRpb24uICBUaGlzIGlzIHRvIGJlIHVzZWQgZm9yIGZpbGV0eXBlLXNwZWNpZmljIGNvbXBsZXRpb24uCiAKIFNlZSB0aGUgJ2NvbXBsZXRlZnVuYycgaGVscCBmb3IgaG93IHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIGFuIGV4YW1wbGUuCi1Gb3IgcmVtYXJrcyBhYm91dCBzcGVjaWZpYyBmaWxldHlwZXMgc2VlIHxjb21wbC1vY2N1bHQtZmlsZXR5cGVzfC4KK0ZvciByZW1hcmtzIGFib3V0IHNwZWNpZmljIGZpbGV0eXBlcyBzZWUgfGNvbXBsLW9tbmktZmlsZXR5cGVzfC4KIAogCQkJCQkJCSppX0NUUkwtWF9DVFJMLU8qCiBDVFJMLVggQ1RSTC1PCQlHdWVzcyB3aGF0IGtpbmQgb2YgaXRlbSBpcyBpbiBmcm9udCBvZiB0aGUgY3Vyc29yIGFuZApAQCAtOTQ5LDE0ICs5NTIsMTQgQEAKIAkJCW90aGVyIGNvbnRleHRzIHVubGVzcyBhIGRvdWJsZSBDVFJMLVggaXMgdXNlZC4KIAogCi1GaWxldHlwZS1zcGVjaWZpYyByZW1hcmtzIGZvciBvY2N1bHQgY29tcGxldGlvbgkgICAgKmNvbXBsLW9jY3VsdC1maWxldHlwZXMqCitGaWxldHlwZS1zcGVjaWZpYyByZW1hcmtzIGZvciBvbW5pIGNvbXBsZXRpb24JICAgICpjb21wbC1vbW5pLWZpbGV0eXBlcyoKIAotQwkJCQkJCQkqZnQtYy1vY2N1bHQqCitDCQkJCQkJCSpmdC1jLW9tbmkqCiAKLUNvbXBsZXRpb24gcmVxdWlyZXMgYSB0YWdzIGZpbGUuICBZb3Ugc2hvdWxkIHVzZSBFeHViZXJhbnQgY3RhZ3MsIGJlY2F1c2UgaXQKLWFkZHMgZXh0cmEgaW5mb3JtYXRpb24gdGhhdCBpcyBuZWVkZWQgZm9yIGNvbXBsZXRpb24uICBZb3UgY2FuIGZpbmQgaXQgaGVyZToKLWh0dHA6Ly9jdGFncy5zb3VyY2Vmb3JnZS5uZXQvCi1Gb3IgdmVyc2lvbiA1LjUuNCB5b3UgbmVlZCB0byBhZGQgYSBwYXRjaCB0aGF0IGFkZHMgdGhlICJ0eXBlbmFtZToiIGZpZWxkOgorQ29tcGxldGlvbiBvZiBDIGNvZGUgcmVxdWlyZXMgYSB0YWdzIGZpbGUuICBZb3Ugc2hvdWxkIHVzZSBFeHViZXJhbnQgY3RhZ3MsCitiZWNhdXNlIGl0IGFkZHMgZXh0cmEgaW5mb3JtYXRpb24gdGhhdCBpcyBuZWVkZWQgZm9yIGNvbXBsZXRpb24uICBZb3UgY2FuIGZpbmQKK2l0IGhlcmU6IGh0dHA6Ly9jdGFncy5zb3VyY2Vmb3JnZS5uZXQvCitGb3IgdmVyc2lvbiA1LjUuNCB5b3Ugc2hvdWxkIGFkZCBhIHBhdGNoIHRoYXQgYWRkcyB0aGUgInR5cGVuYW1lOiIgZmllbGQ6CiBmdHA6Ly9mdHAudmltLm9yZy9wdWIvdmltL3Vuc3RhYmxlL3BhdGNoZXMvY3RhZ3MtNS41LjQucGF0Y2gKIAogSWYgeW91IHdhbnQgdG8gY29tcGxldGUgc3lzdGVtIGZ1bmN0aW9ucyB5b3UgY2FuIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMuICBVc2UKQEAgLTk3NCw2ICs5NzcsOSBAQAogdG8gcmVjb2duaXplIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSBhbmQgZmlndXJlIG91dCB3aGF0IG1lbWJlcnMgaXQgaGFzLgogVGhpcyBtZWFucyBvbmx5IG1lbWJlcnMgdmFsaWQgZm9yIHRoZSB2YXJpYWJsZSB3aWxsIGJlIGxpc3RlZC4KIAorV2hlbiBhIG1lbWJlciBuYW1lIGFscmVhZHkgd2FzIGNvbXBsZXRlLCBDVFJMLVggQ1RSTC1PIHdpbGwgYWRkIGEgIi4iIG9yCisiLT4iIGZvciBjb21wb3NpdGUgdHlwZXMuCisKIFZpbSBkb2Vzbid0IGluY2x1ZGUgYSBDIGNvbXBpbGVyLCBvbmx5IHRoZSBtb3N0IG9idmlvdXNseSBmb3JtYXR0ZWQKIGRlY2xhcmF0aW9ucyBhcmUgcmVjb2duaXplZC4gIFByZXByb2Nlc3NvciBzdHVmZiBtYXkgY2F1c2UgY29uZnVzaW9uLgogV2hlbiB0aGUgc2FtZSBzdHJ1Y3R1cmUgbmFtZSBhcHBlYXJzIGluIG11bHRpcGxlIHBsYWNlcyBhbGwgcG9zc2libGUgbWVtYmVycwpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAppbmRleCA5MTA3NjE1Li43Y2M4MTcwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEwCisqb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IFNlcCAxMwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xOSw3ICsxOSw3IEBACiAJc3RyaW5nCQloYXMgYSBzdHJpbmcgdmFsdWUKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0xLiBTZXR0aW5nIG9wdGlvbnMJCQkJCSpzZXQtb3B0aW9uKgorMS4gU2V0dGluZyBvcHRpb25zCQkJCQkqc2V0LW9wdGlvbiogKkU3NjQqCiAKIAkJCQkJCQkqOnNlKiAqOnNldCoKIDpzZVt0XQkJCVNob3cgYWxsIG9wdGlvbnMgdGhhdCBkaWZmZXIgZnJvbSB0aGVpciBkZWZhdWx0IHZhbHVlLgpAQCAtNDYwMiw4ICs0NjAyLDggQEAKIAlUaGUgbWluaW11bSB2YWx1ZSBpcyAxLCB0aGUgbWF4aW11bSB2YWx1ZSBpcyAxMC4KIAlOT1RFOiAnbnVtYmVyd2lkdGgnIGlzIHJlc2V0IHRvIDggd2hlbiAnY29tcGF0aWJsZScgaXMgc2V0LgogCi0JCQkJCQkqJ29jY3VsdGZ1bmMnKiAqJ29mdScqCi0nb2NjdWx0ZnVuYycgJ29mdScJc3RyaW5nCShkZWZhdWx0OiBlbXB0eSkKKwkJCQkJCSonb21uaWZ1bmMnKiAqJ29mdScqCisnb21uaWZ1bmMnICdvZnUnCXN0cmluZwkoZGVmYXVsdDogZW1wdHkpCiAJCQlsb2NhbCB0byBidWZmZXIKIAkJCXtub3QgaW4gVml9CiAJCQl7bm90IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGhvdXQgdGhlICtldmFsCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9wYXR0ZXJuLnR4dCBiL3J1bnRpbWUvZG9jL3BhdHRlcm4udHh0CmluZGV4IDg0ZTliZjUuLjJjYzU5MjEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BhdHRlcm4udHh0CisrKyBiL3J1bnRpbWUvZG9jL3BhdHRlcm4udHh0CkBAIC0xLDQgKzEsNCBAQAotKnBhdHRlcm4udHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEF1ZyAxOAorKnBhdHRlcm4udHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IFNlcCAxMgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTE3LDYgKzExNywxNCBAQAogCQkJbGlrZSAiZ2QiLCBleGNlcHQgdGhhdCB0aGUgc2VhcmNoIGZvciB0aGUga2V5d29yZAogCQkJYWx3YXlzIHN0YXJ0cyBpbiBsaW5lIDEuICB7bm90IGluIFZpfQogCisJCQkJCQkJKjFnZCoKKzFnZAkJCUxpa2UgImdkIiwgYnV0IGlnbm9yZSBtYXRjaGVzIGluc2lkZSBhIHt9IGJsb2NrIHRoYXQKKwkJCWVuZHMgYmVmb3JlIHRoZSBjdXJzb3IgcG9zaXRpb24uIHtub3QgaW4gVml9CisKKwkJCQkJCQkqMWdEKgorMWdECQkJTGlrZSAiZ0QiLCBidXQgaWdub3JlIG1hdGNoZXMgaW5zaWRlIGEge30gYmxvY2sgdGhhdAorCQkJZW5kcyBiZWZvcmUgdGhlIGN1cnNvciBwb3NpdGlvbi4ge25vdCBpbiBWaX0KKwogCQkJCQkJCSpDVFJMLUMqCiBDVFJMLUMJCQlJbnRlcnJ1cHQgY3VycmVudCAoc2VhcmNoKSBjb21tYW5kLiAgVXNlIENUUkwtQnJlYWsgb24KIAkJCU1TLURPUyB8ZG9zLUNUUkwtQnJlYWt8LgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfbmV0cncudHh0IGIvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CmluZGV4IGU1Njk2ZTcuLjRkNDQ2ZjYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dAorKysgYi9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKQEAgLTEsNCArMSw0IEBACi0qcGlfbmV0cncudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMC4gIExhc3QgY2hhbmdlOiBTZXAgMDcsIDIwMDUKKypwaV9uZXRydy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wLiAgTGFzdCBjaGFuZ2U6IFNlcCAxMiwgMjAwNQogCiAKIAkJVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCkBAIC0zMzMsNiArMzMzLDcgQEAKIAogVW5mb3J0dW5hdGVseSB0aGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSBmb3IgbmV0cncgdG8gZmVlZCBhIHBhc3N3b3JkIHRvCiBzY3AuICBUaHVzIGV2ZXJ5IHRyYW5zZmVyIHZpYSBzY3Agd2lsbCByZXF1aXJlIHJlLWVudHJ5IG9mIHRoZSBwYXNzd29yZC4KK0hvd2V2ZXIsIHxuZXRydy1saXN0aGFja3wgY2FuIGhlbHAgd2l0aCB0aGlzIHByb2JsZW0uCiAKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0zNDEsMjAgKzM0MiwyNyBAQAogTmV0d29yay1vcmllbnRlZCBmaWxlIHRyYW5zZmVycyBhcmUgYXZhaWxhYmxlIGJ5IGRlZmF1bHQgd2hlbmV2ZXIKIHwnbm9jb21wYXRpYmxlJ3wgbW9kZSBpcyBlbmFibGVkLiAgVGhlIDxuZXRydy52aW0+IGZpbGUgcmVzaWRlcyBpbiB5b3VyCiBzeXN0ZW0ncyB2aW0tcGx1Z2luIGRpcmVjdG9yeSBhbmQgaXMgc291cmNlZCBhdXRvbWF0aWNhbGx5IHdoZW5ldmVyIHlvdSBicmluZwotdXAgdmltLgotCit1cCB2aW0uICBJIHN1Z2dlc3QgdGhhdCwgYXQgYSBtaW5pbXVtLCB5b3UgaGF2ZSBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIGluIHlvdXIKKzwudmltcmM+IGN1c3RvbWl6YXRpb24gZmlsZTogPgorCXNldCBub2NwCisJaWYgdmVyc2lvbiA+PSA2MDAKKwkgIGZpbGV0eXBlIHBsdWdpbiBpbmRlbnQgb24KKwllbmRpZgorPAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDQuIFRyYW5zcGFyZW50IEZpbGUgVHJhbnNmZXIJCQkJKm5ldHJ3LXRyYW5zcGFyZW50KgogCiBUcmFuc3BhcmVudCBmaWxlIHRyYW5zZmVycyBvY2N1ciB3aGVuZXZlciBhIHJlZ3VsYXIgZmlsZSByZWFkIG9yIHdyaXRlCiAoaW52b2tlZCB2aWEgYW4gfDphdXRvY21kfCBmb3IgfEJ1ZlJlYWRDbWR8IG9yIHxCdWZXcml0ZUNtZHwgZXZlbnRzKSBpcyBtYWRlLgotVGh1cyBvbmUgbWF5IHVzZSBmaWxlcyBhY3Jvc3MgbmV0d29ya3MgYXMgaWYgdGhleSB3ZXJlIGxvY2FsLiA+CitUaHVzIG9uZSBtYXkgdXNlIGZpbGVzIGFjcm9zcyBuZXR3b3JrcyBqdXN0IGFzIHNpbXBseSBhcyBpZiB0aGV5IHdlcmUgbG9jYWwuID4KIAogCXZpbSBmdHA6Ly9bdXNlckBdbWFjaGluZS9wYXRoCiAJLi4uCiAJOndxCiAKK1NlZSB8bmV0cnctYWN0aXZhdGV8IGZvciBtb3JlIG9uIGhvdyB0byBlbmNvdXJhZ2UgeW91ciB2aW0gdG8gdXNlIHBsdWdpbnMKK3N1Y2ggYXMgbmV0cncuCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogNS4gRXggQ29tbWFuZHMJCQkJCQkqbmV0cnctZXgqCkBAIC0zNjgsOCArMzc2LDcgQEAKIDpbcmFuZ2VdTncge25ldGZpbGV9IFt7bmV0ZmlsZX1dLi4uCiAJCVdyaXRlIHRoZSBzcGVjaWZpZWQgbGluZXMgdG8gdGhlIHtuZXRmaWxlfS4KIAotOk5yZWFkCi0JCVJlYWQgdGhlIHNwZWNpZmllZCBsaW5lcyBpbnRvIHRoZSBjdXJyZW50Cis6TnJlYWQJCVJlYWQgdGhlIHNwZWNpZmllZCBsaW5lcyBpbnRvIHRoZSBjdXJyZW50CiAJCWJ1ZmZlciBmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBpbgogCQliOm5ldHJ3X2xhc3RmaWxlLgogCkBAIC00MDAsMTAgKzQwNywxMSBAQAogCiBUaGUgc2NyaXB0IDxuZXRydy52aW0+IHVzZXMgc2V2ZXJhbCB2YXJpYWJsZXMgd2hpY2ggY2FuIGFmZmVjdCA8bmV0cncudmltPidzCiBiZWhhdmlvci4gIFRoZXNlIHZhcmlhYmxlcyB0eXBpY2FsbHkgbWF5IGJlIHNldCBpbiB0aGUgdXNlcidzIDwudmltcmM+IGZpbGU6Ci0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIAlOZXRydyBPcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0KKyhhbHNvIHNlZSB8bmV0cnctc2V0dGluZ3N8KSA+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgIE5ldHJ3IE9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0KIAlPcHRpb24JCQlNZWFuaW5nCiAJLS0tLS0tLS0tLS0tLS0JCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA8CkBAIC04NTksNyArODY3LDIxIEBACiBXaGVuIGJyb3dzaW5nIGEgcmVtb3RlIGRpcmVjdG9yeSwgb25lIG1heSBvYnRhaW4gYSBmaWxlIHVuZGVyIHRoZSBjdXJzb3IgKGllLgogZ2V0IGEgY29weSBvbiB5b3VyIGxvY2FsIG1hY2hpbmUsIGJ1dCBub3QgZWRpdCBpdCkgYnkgcHJlc3NpbmcgdGhlIE8ga2V5LgogT25seSBmdHAgYW5kIHNjcCBhcmUgc3VwcG9ydGVkIGZvciB0aGlzIG9wZXJhdGlvbiAoYnV0IHNpbmNlIHRoZXNlIHR3byBhcmUKLWF2YWlsYWJsZSBmb3IgYnJvd3NpbmcsIHRoYXQgc2hvdWxkbid0IGJlIGEgcHJvYmxlbSkuCithdmFpbGFibGUgZm9yIGJyb3dzaW5nLCB0aGF0IHNob3VsZG4ndCBiZSBhIHByb2JsZW0pLiAgVGhlIHN0YXR1cyBiYXIKK3dpbGwgdGhlbiBzaG93LCBvbiBpdHMgcmlnaHQgaGFuZCBzaWRlLCBhIG1lc3NhZ2UgbGlrZSAiT2J0YWluaW5nIGZpbGVuYW1lIi4KK1RoZSBzdGF0dXNsaW5lIHdpbGwgYmUgcmVzdG9yZWQgYWZ0ZXIgdGhlIHRyYW5zZmVyIGlzIGNvbXBsZXRlLgorCitOZXRydyBjYW4gYWxzbyAib2J0YWluIiBhIGZpbGUgdXNpbmcgdGhlIGxvY2FsIGJyb3dzZXIuICBOZXRydydzIGRpc3BsYXkKK29mIGEgZGlyZWN0b3J5IGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyBWaW0ncyAiY3VycmVudCBkaXJlY3RvcnkiLAordW5sZXNzIHxnOm5ldHJ3X2tlZXBkaXJ8IGlzIHNldCB0byAwIGluIHRoZSB1c2VyJ3MgPC52aW1yYz4uICBPbmUgbWF5IHNlbGVjdAorYSBmaWxlIHVzaW5nIHRoZSBsb2NhbCBicm93c2VyIChieSBwdXR0aW5nIHRoZSBjdXJzb3Igb24gaXQpIGFuZCBwcmVzc2luZworIk8iIHdpbGwgdGhlbiAib2J0YWluIiB0aGUgZmlsZTsgaWUuIGNvcHkgaXQgdG8gVmltJ3MgY3VycmVudCBkaXJlY3RvcnkuCisKK1JlbGF0ZWQgdG9waWNzOgorICogVG8gc2VlIHdoYXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzLCB1c2UgfDpwd2R8CisgKiBUbyBtYWtlIHRoZSBjdXJyZW50bHkgYnJvd3NlZCBkaXJlY3RvcnkgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBzZWUgfG5ldHJ3LWN8CisgKiBUbyBhdXRvbWF0aWNhbGx5IG1ha2UgdGhlIGN1cnJlbnRseSBicm93c2VkIGRpcmVjdG9yeSB0aGUgY3VycmVudAorICAgZGlyZWN0b3J5LCBzZWUgfGc6bmV0cndfa2VlcGRpcnwuCiAKIAogVEhJTiwgTE9ORywgQU5EIFdJREUgTElTVElOR1MJCQkJCSpuZXRydy1pKgpAQCAtMTI1Nyw2ICsxMjc5LDkgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMTAuIEhpc3RvcnkJCQkJCQkqbmV0cnctaGlzdG9yeSoKIAorCXY3MDogKiB3aGVuIHVzaW5nIHxuZXRydy1PfCwgdGhlICJPYnRhaW5pbmcgZmlsZW5hbWUiIG1lc3NhZ2UgaXMgbm93CisJICAgICAgIHNob3duIHVzaW5nIHxobC1Vc2VyOXwuICBJZiBVc2VyOSBoYXMgbm90IGJlZW4gZGVmaW5lZCwgbmV0cncKKwkgICAgICAgd2lsbCBkZWZpbmUgaXQuCiAJdjY5OiAqIEJ1Z2ZpeDogd2luOTUvOTggbWFjaGluZXMgd2VyZSBleHBlcmllbmNpbmcgYQogCSAgICAgICAiRTEyMTogVW5kZWZpbmVkIHZhcmlhYmxlOiBnOm5ldHJ3X3dpbjk1ZnRwIiBtZXNzYWdlCiAJdjY4OiAqIGRvdWJsZS1jbGljay1sZWZ0bW91c2Ugc2VsZWN0cyB3b3JkIHVuZGVyIG1vdXNlCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9xdWlja3JlZi50eHQgYi9ydW50aW1lL2RvYy9xdWlja3JlZi50eHQKaW5kZXggYzg1OTdhNi4uZjQ2MTBhZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcXVpY2tyZWYudHh0CisrKyBiL3J1bnRpbWUvZG9jL3F1aWNrcmVmLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpxdWlja3JlZi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMDEKKypxdWlja3JlZi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMTMKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTc3Miw3ICs3NzIsNyBAQAogfCducmZvcm1hdHMnfAkgIHwnbmYnfCAgICAgbnVtYmVyIGZvcm1hdHMgcmVjb2duaXplZCBmb3IgQ1RSTC1BIGNvbW1hbmQKIHwnbnVtYmVyJ3wJICB8J251J3wgICAgIHByaW50IHRoZSBsaW5lIG51bWJlciBpbiBmcm9udCBvZiBlYWNoIGxpbmUKIHwnbnVtYmVyd2lkdGgnfAkgIHwnbnV3J3wgICAgbnVtYmVyIG9mIGNvbHVtbnMgdXNlZCBmb3IgdGhlIGxpbmUgbnVtYmVyCi18J29jY3VsdGZ1bmMnfCAgICB8J29mdSd8ICAgIGZ1bmN0aW9uIGZvciBmaWxldHlwZS1zcGVjaWZpYyBjb21wbGV0aW9uCit8J29tbmlmdW5jJ3wgICAgICB8J29mdSd8ICAgIGZ1bmN0aW9uIGZvciBmaWxldHlwZS1zcGVjaWZpYyBjb21wbGV0aW9uCiB8J29zZmlsZXR5cGUnfAkgIHwnb2Z0J3wgICAgb3BlcmF0aW5nIHN5c3RlbS1zcGVjaWZpYyBmaWxldHlwZSBpbmZvcm1hdGlvbgogfCdwYXJhZ3JhcGhzJ3wJICB8J3BhcmEnfCAgIG5yb2ZmIG1hY3JvcyB0aGF0IHNlcGFyYXRlIHBhcmFncmFwaHMKIHwncGFzdGUnfAkJICAgICBhbGxvdyBwYXN0aW5nIHRleHQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3NwZWxsLnR4dCBiL3J1bnRpbWUvZG9jL3NwZWxsLnR4dAppbmRleCA0OWY3MjdkLi5kMmZhOTc2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zcGVsbC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3BlbGwudHh0CkBAIC0xLDQgKzEsNCBAQAotKnNwZWxsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgQXVnIDMwCisqc3BlbGwudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMTIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNjAsNyArNjAsNyBAQAogW1MJCQlMaWtlICJdUyIgYnV0IHNlYXJjaCBiYWNrd2FyZHMuCiAKIAotVG8gYWRkIHdvcmRzIHRvIHlvdXIgb3duIHdvcmQgbGlzdDoJCQkJKkU3NjQqCitUbyBhZGQgd29yZHMgdG8geW91ciBvd24gd29yZCBsaXN0OgogCiAJCQkJCQkJKnpnKgogemcJCQlBZGQgd29yZCB1bmRlciB0aGUgY3Vyc29yIGFzIGEgZ29vZCB3b3JkIHRvIHRoZSBmaXJzdApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3ludGF4LnR4dCBiL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKaW5kZXggZjMyMTBlYS4uMmExMjg5NCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3ludGF4LnR4dAorKysgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CkBAIC0xLDQgKzEsNCBAQAotKnN5bnRheC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEF1ZyAzMAorKnN5bnRheC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IFNlcCAxMwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zOTY5LDcgKzM5NjksNyBAQAogCQkJCQkJCSpobC1XaWxkTWVudSoKIFdpbGRNZW51CWN1cnJlbnQgbWF0Y2ggaW4gJ3dpbGRtZW51JyBjb21wbGV0aW9uCiAKLQkJCQkJCSpobC1Vc2VyMSogKmhsLVVzZXIxLi45KgorCQkJCQkqaGwtVXNlcjEqICpobC1Vc2VyMS4uOSogKmhsLVVzZXI5KgogVGhlICdzdGF0dXNsaW5lJyBzeW50YXggYWxsb3dzIHRoZSB1c2Ugb2YgOSBkaWZmZXJlbnQgaGlnaGxpZ2h0cyBpbiB0aGUKIHN0YXR1c2xpbmUgYW5kIHJ1bGVyICh2aWEgJ3J1bGVyZm9ybWF0JykuICBUaGUgbmFtZXMgYXJlIFVzZXIxIHRvIFVzZXI5LgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCAzYzk1NDU4Li40ZGMwNDE0IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTYwNyw5ICs2MDcsOSBAQAogJ251bWJlcicJb3B0aW9ucy50eHQJLyonbnVtYmVyJyoKICdudW1iZXJ3aWR0aCcJb3B0aW9ucy50eHQJLyonbnVtYmVyd2lkdGgnKgogJ251dycJb3B0aW9ucy50eHQJLyonbnV3JyoKLSdvY2N1bHRmdW5jJwlvcHRpb25zLnR4dAkvKidvY2N1bHRmdW5jJyoKICdvZnQnCW9wdGlvbnMudHh0CS8qJ29mdCcqCiAnb2Z1JwlvcHRpb25zLnR4dAkvKidvZnUnKgorJ29tbmlmdW5jJwlvcHRpb25zLnR4dAkvKidvbW5pZnVuYycqCiAnb3AnCXZpX2RpZmYudHh0CS8qJ29wJyoKICdvcGVuJwl2aV9kaWZmLnR4dAkvKidvcGVuJyoKICdvcHRpbWl6ZScJdmlfZGlmZi50eHQJLyonb3B0aW1pemUnKgpAQCAtMTQ4NCw2ICsxNDg0LDggQEAKIDEyLjYJdXNyXzEyLnR4dAkvKjEyLjYqCiAxMi43CXVzcl8xMi50eHQJLyoxMi43KgogMTIuOAl1c3JfMTIudHh0CS8qMTIuOCoKKzFnRAlwYXR0ZXJuLnR4dAkvKjFnRCoKKzFnZAlwYXR0ZXJuLnR4dAkvKjFnZCoKIDIwLjEJdXNyXzIwLnR4dAkvKjIwLjEqCiAyMC4yCXVzcl8yMC50eHQJLyoyMC4yKgogMjAuMwl1c3JfMjAudHh0CS8qMjAuMyoKQEAgLTM3NTIsNyArMzc1NCw3IEBACiBFNzYxCXNwZWxsLnR4dAkvKkU3NjEqCiBFNzYyCXNwZWxsLnR4dAkvKkU3NjIqCiBFNzYzCXNwZWxsLnR4dAkvKkU3NjMqCi1FNzY0CXNwZWxsLnR4dAkvKkU3NjQqCitFNzY0CW9wdGlvbnMudHh0CS8qRTc2NCoKIEU3NjUJb3B0aW9ucy50eHQJLypFNzY1KgogRTc2NglldmFsLnR4dAkvKkU3NjYqCiBFNzY3CWV2YWwudHh0CS8qRTc2NyoKQEAgLTQ0NjAsOCArNDQ2Miw4IEBACiBjb21wbC1mdW5jdGlvbglpbnNlcnQudHh0CS8qY29tcGwtZnVuY3Rpb24qCiBjb21wbC1nZW5lcmljCWluc2VydC50eHQJLypjb21wbC1nZW5lcmljKgogY29tcGwta2V5d29yZAlpbnNlcnQudHh0CS8qY29tcGwta2V5d29yZCoKLWNvbXBsLW9jY3VsdAlpbnNlcnQudHh0CS8qY29tcGwtb2NjdWx0KgotY29tcGwtb2NjdWx0LWZpbGV0eXBlcwlpbnNlcnQudHh0CS8qY29tcGwtb2NjdWx0LWZpbGV0eXBlcyoKK2NvbXBsLW9tbmkJaW5zZXJ0LnR4dAkvKmNvbXBsLW9tbmkqCitjb21wbC1vbW5pLWZpbGV0eXBlcwlpbnNlcnQudHh0CS8qY29tcGwtb21uaS1maWxldHlwZXMqCiBjb21wbC1zcGVsbGluZwlpbnNlcnQudHh0CS8qY29tcGwtc3BlbGxpbmcqCiBjb21wbC10YWcJaW5zZXJ0LnR4dAkvKmNvbXBsLXRhZyoKIGNvbXBsLXZpbQlpbnNlcnQudHh0CS8qY29tcGwtdmltKgpAQCAtNDk2Miw3ICs0OTY0LDcgQEAKIGZ0LWFzcHZicy1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LWFzcHZicy1zeW50YXgqCiBmdC1iYXNoLXN5bnRheAlzeW50YXgudHh0CS8qZnQtYmFzaC1zeW50YXgqCiBmdC1iYXNpYy1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LWJhc2ljLXN5bnRheCoKLWZ0LWMtb2NjdWx0CWluc2VydC50eHQJLypmdC1jLW9jY3VsdCoKK2Z0LWMtb21uaQlpbnNlcnQudHh0CS8qZnQtYy1vbW5pKgogZnQtYy1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LWMtc3ludGF4KgogZnQtY2gtc3ludGF4CXN5bnRheC50eHQJLypmdC1jaC1zeW50YXgqCiBmdC1jaGFuZ2Vsb2ctcGx1Z2luCWZpbGV0eXBlLnR4dAkvKmZ0LWNoYW5nZWxvZy1wbHVnaW4qCkBAIC01MzYzLDYgKzUzNjUsNyBAQAogaGwtVG9vbHRpcAlzeW50YXgudHh0CS8qaGwtVG9vbHRpcCoKIGhsLVVzZXIxCXN5bnRheC50eHQJLypobC1Vc2VyMSoKIGhsLVVzZXIxLi45CXN5bnRheC50eHQJLypobC1Vc2VyMS4uOSoKK2hsLVVzZXI5CXN5bnRheC50eHQJLypobC1Vc2VyOSoKIGhsLVZlcnRTcGxpdAlzeW50YXgudHh0CS8qaGwtVmVydFNwbGl0KgogaGwtVmlzdWFsCXN5bnRheC50eHQJLypobC1WaXN1YWwqCiBobC1WaXN1YWxOT1MJc3ludGF4LnR4dAkvKmhsLVZpc3VhbE5PUyoKQEAgLTU5NzcsNiArNTk4MCw3IEBACiBuZXctbXVsdGktbGFuZwl2ZXJzaW9uNi50eHQJLypuZXctbXVsdGktbGFuZyoKIG5ldy1uZXRydy1leHBsb3JlCXZlcnNpb243LnR4dAkvKm5ldy1uZXRydy1leHBsb3JlKgogbmV3LW5ldHdvcmstZmlsZXMJdmVyc2lvbjYudHh0CS8qbmV3LW5ldHdvcmstZmlsZXMqCituZXctb21uaS1jb21wbGV0aW9uCXZlcnNpb243LnR4dAkvKm5ldy1vbW5pLWNvbXBsZXRpb24qCiBuZXctb3BlcmF0b3ItbW9kCXZlcnNpb242LnR4dAkvKm5ldy1vcGVyYXRvci1tb2QqCiBuZXctb3B0aW9ucy01LjIJdmVyc2lvbjUudHh0CS8qbmV3LW9wdGlvbnMtNS4yKgogbmV3LW9wdGlvbnMtNS40CXZlcnNpb241LnR4dAkvKm5ldy1vcHRpb25zLTUuNCoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RvZG8udHh0IGIvcnVudGltZS9kb2MvdG9kby50eHQKaW5kZXggNWZlYWY2OS4uYWIxNGZiOCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdG9kby50eHQKKysrIGIvcnVudGltZS9kb2MvdG9kby50eHQKQEAgLTEsNCArMSw0IEBACi0qdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEwCisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEzCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMxLDEwICszMSwxMiBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0gS25vd24gYnVncyBhbmQgY3VycmVudCB3b3JrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNjb21wbGV0ZToKLS0gV2hlbiBhIHR5cGVkZWYgb3Igc3RydWN0IGlzIGxvY2FsIHRvIGEgZmlsZSBvbmx5IHVzZSBpdCBpbiB0aGF0IGZpbGU/CiAtIEhvdyB0byB1c2UgYSBwb3B1cCBtZW51PwotLSB3aGVuIGEgc3RydWN0IHJlZmVyZW5jZSBpcyBhbHJlYWR5IGNvbXBsZXRlIGFuZCBDVFJMLVggQ1RSTC1PIGlzIHVzZWQsIGFkZCBhCi0gICIuIiBvciAiLT4iPworLSBXaGVuIGEgdHlwZWRlZiBvciBzdHJ1Y3QgaXMgbG9jYWwgdG8gYSBmaWxlIG9ubHkgdXNlIGl0IGluIHRoYXQgZmlsZT8KKworV2hlbiAnZm9sZGNvbHVtbicgaXMgMSBzaG93IG1vcmUgKyB0byBiZSBhYmxlIHRvIG9wZW4gYWxsIGZvbGRzPyAoRG9ub2h1ZSkKKworQWZ0ZXIgdmkiIGFub3RoZXIgaSIgc2hvdWxkIGluY2x1ZGUgdGhlIHF1b3Rlcy4KIAogTWFjIHVuaWNvZGUgcGF0Y2ggKERhIFdvb24gSnVuZyk6CiAtIHNlbGVjdGluZyBwcm9wb3J0aW9uYWwgZm9udCBicmVha3MgZGlzcGxheQpAQCAtNjMsMjEgKzY1LDI3IEBACiAKIFBMQU5ORUQgRk9SIFZFUlNJT04gNy4wOgogCi0tICAgT2NjdWx0IGNvbXBsZXRpb246IFVuZGVyc3RhbmRzIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBhbmQgZmluZHMgbWF0Y2hlcworLSAgIE9tbmkgY29tcGxldGlvbjogVW5kZXJzdGFuZHMgdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIGFuZCBmaW5kcyBtYXRjaGVzCiAgICAgdGhhdCBtYWtlIHNlbnNlLiAgRXNwLiBtZW1iZXJzIG9mIGNsYXNzZXMvc3RydWN0cy4KIAogICAgIEl0J3Mgbm90IG11Y2ggZGlmZmVyZW50IGZyb20gb3RoZXIgSW5zZXJ0LW1vZGUgY29tcGxldGlvbiwgdXNlIHRoZSBzYW1lCi0gICAgbWVjaGFuaXNtLiAgVXNlIENUUkwtWCBDVFJMLU8gYW5kICdvY2N1bHRmdW5jJy4gIFNldCAnb2NjdWx0ZnVuYycgaW4gdGhlCisgICAgbWVjaGFuaXNtLiAgVXNlIENUUkwtWCBDVFJMLU8gYW5kICdvbW5pZnVuYycuICBTZXQgJ29tbmlmdW5jJyBpbiB0aGUKICAgICBmaWxldHlwZSBwbHVnaW4sIGRlZmluZSB0aGUgZnVuY3Rpb24gaW4gdGhlIGF1dG9sb2FkIGRpcmVjdG9yeS4KICAgICAKICAgICBTZXBhcmF0ZWx5IGRldmVsb3AgdGhlIGNvbXBsZXRpb24gbG9naWMgYW5kIHRoZSBVSS4gIFdoZW4gYWRkaW5nIFVJIHN0dWZmCiAgICAgbWFrZSBpdCB3b3JrIGZvciBhbGwgY29tcGxldGlvbiBtZXRob2RzLgogCiAgICAgVUk6Ci0gICAgLSBBdCBmaXJzdDogdXNlICd3aWxkbWVudScga2luZCBvZiB0aGluZy4KLSAgICAtIE5pY2VyOiBEaXNwbGF5IHRoZSBsaXN0IG9mIGNob2ljZXMgcmlnaHQgdW5kZXIgdGhlIHBsYWNlIHdoZXJlIHRoZXkKKyAgICAtIERpc3BsYXkgdGhlIGxpc3Qgb2YgY2hvaWNlcyByaWdodCB1bmRlciB0aGUgcGxhY2Ugd2hlcmUgdGhleQogICAgICAgd291bGQgYmUgaW5zZXJ0ZWQgaW4gYSBraW5kIG9mIG1lbnkgKHVzZSBzY3JvbGxiYXIgd2hlbiB0aGVyZSBhcmUgbWFueQogICAgICAgYWx0ZXJuYXRpdmVzKS4KKyAgICAgIEF0IGZpcnN0IGluIGEgdGVybWluYWwsIHRoZW4gYWRkIEdVSSBpbXBsZW1lbnRhdGlvbnMuCisgICAgLSBXaGVuIHVzaW5nIHRhZ3MsIHNob3cgbWF0Y2ggaW4gcHJldmlldyB3aW5kb3cgKGZ1bmN0aW9uIHByb3RvdHlwZSwKKyAgICAgIHN0cnVjdCBtZW1iZXIsIGV0Yy4pLgorICAgICAgT3IgdXNlIG9uZSB3aW5kb3cgZm9yIG1hdGNoZXMsIGFub3RoZXIgZm9yIGNvbnRleHQvaW5mbyAoRG91ZyBLZWFybnMsCisgICAgICAyMDA1IFNlcCAxMykKKyAgICAtIElkZWFzIG9uOiBodHRwOi8vd3d3Lndob2xldG9tYXRvLmNvbS8KKwogCiAgICAgQ29tcGxldGlvbiBsb2dpYzoKIAlVc2UgcnVudGltZS9hdXRvbG9hZC97ZmlsZXR5cGV9Y29tcGxldGUudmltIGZpbGVzLgpAQCAtOTIsNiArMTAwLDEyIEBACiAJICAgIGNvbXBsaXN0WzBdWydoZWxwZnVuYyddID0gZnVuY3Rpb24gdGhhdCBzaG93cyBoZWxwIHRleHQKIAkgICAgZXRjLgogCisJQ2FuIENUUkwtXSAoanVtcCB0byB0YWcpIGluY2x1ZGUgdGhlICIuIiBhbmQgIi0+IiB0byByZXN0cmljdCB0aGUKKwludW1iZXIgb2YgcG9zc2libGUgbWF0Y2hlcz8gKEZsZW1taW5nIE1hZHNlbikKKworCUluIGdlbmVyYWw6IEJlc2lkZXMgY29tcGxldGlvbiwgZmlndXJlIG91dCB0aGUgdHlwZSBvZiBhIHZhcmlhYmxlCisJYW5kIHVzZSBpdCBmb3IgaW5mb3JtYXRpb24uCisKIAlJZGVhcyBmcm9tIG90aGVyczoKIAlodHRwOi8vd3d3LnZpbS5vcmcvc2NyaXB0cy9zY3JpcHQucGhwP3NjcmlwdF9pZD03NDcKIAkgICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9pbnNlbnZpbQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0IGIvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CmluZGV4IDBhNjkyMzMuLmNlMGIzMmIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dAorKysgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKQEAgLTEsNCArMSw0IEBACi0qdmVyc2lvbjcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEwCisqdmVyc2lvbjcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDEzCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yMCw2ICsyMCw3IEBACiAKIFZpbSBzY3JpcHQgZW5oYW5jZW1lbnRzCQkJfG5ldy12aW0tc2NyaXB0fAogU3BlbGwgY2hlY2tpbmcJCQkJfG5ldy1zcGVsbHwKK09tbmkgY29tcGxldGlvbgkJCQl8bmV3LW9tbmktY29tcGxldGlvbnwKIEtERSBzdXBwb3J0CQkJCXxuZXctS0RFfAogTXpTY2hlbWUgaW50ZXJmYWNlCQkJfG5ldy1NelNjaGVtZXwKIFByaW50aW5nIG11bHRpLWJ5dGUgdGV4dAkJfG5ldy1wcmludC1tdWx0aS1ieXRlfApAQCAtMTgwLDYgKzE4MSwyMiBAQAogTXVjaCBtb3JlIGluZm8gaGVyZTogfHNwZWxsfC4KIAogCitPbW5pIGNvbXBsZXRpb24JCQkJCSpuZXctb21uaS1jb21wbGV0aW9uKgorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBjb3VsZCBhbHNvIGJlIGNhbGxlZCAiaW50ZWxsaXNlbnNlIiwgYnV0IHRoYXQgaXMgYSB0cmFkZW1hcmsuICBJdCBpcyBhCitzbWFydCBraW5kIG9mIGNvbXBsZXRpb24uICBUaGUgdGV4dCBpbiBmcm9udCBvZiB0aGUgY3Vyc29yIGlzIGluc3BlY3RlZCB0bworZmlndXJlIG91dCB3aGF0IGNvdWxkIGJlIGZvbGxvd2luZy4gIFRoaXMgY29uc2lkZXJzIHN0cnVjdCBhbmQgY2xhc3MgbWVtYmVycywKK3VuaW9ucywgZXRjLgorCitVc2UgQ1RSTC1YIENUUkwtTyBpbiBJbnNlcnQgbW9kZSB0byBzdGFydCB0aGUgY29tcGxldGlvbi4gIHxpX0NUUkwtWF9DVFJMLU98CisKK1RoZSAnb21uaWZ1bmMnIG9wdGlvbiBpcyBzZXQgYnkgZmlsZXR5cGUgcGx1Z2lucyB0byBkZWZpbmUgdGhlIGZ1bmN0aW9uIHRoYXQKK2ZpZ3VyZXMgb3V0IHRoZSBjb21wbGV0aW9uLgorCitDdXJyZW50bHkgb25seSBDIGlzIHN1cHBvcnRlZC4gfGZ0LWMtb21uaXwKKworCiBLREUgc3VwcG9ydAkJCQkJCSpuZXctS0RFKgogLS0tLS0tLS0tLS0KIApAQCAtMzQ5LDYgKzM2Niw3IEBACiAnY29tcGxldGVmdW5jJwkJVGhlIG5hbWUgb2YgYSBmdW5jdGlvbiB1c2VkIGZvciB1c2VyLXNwZWNpZmllZCBJbnNlcnQKIAkJCW1vZGUgY29tcGxldGlvbi4gIENUUkwtWCBDVFJMLVUgY2FuIGJlIHVzZWQgaW4gSW5zZXJ0CiAJCQltb2RlIHRvIGRvIGFueSBraW5kIG9mIGNvbXBsZXRpb24uICAoVGFybyBNdXJhb2thKQorJ29tbmlmdW5jJwkJVGhlIG5hbWUgb2YgYSBmdW5jdGlvbiB1c2VkIGZvciBvbW5pIGNvbXBsZXRpb24uCiAncXVvdGVlc2NhcGUnCQlDaGFyYWN0ZXJzIHVzZWQgdG8gZXNjYXBlIHF1b3RlcyBpbnNpZGUgYSBzdHJpbmcuCiAJCQlVc2VkIGZvciB0aGUgYSIsIGEnIGFuZCBhYCB0ZXh0IG9iamVjdHMuIHxhJ3wKICdudW1iZXJ3aWR0aCcJCU1pbmltYWwgd2lkdGggb2YgdGhlIHNwYWNlIHVzZWQgZm9yIHRoZSAnbnVtYmVyJwpAQCAtNDUwLDYgKzQ2OCw3IEBACiB8cmVtb3ZlKCl8CQlyZW1vdmUgb25lIG9yIG1vcmUgaXRlbXMgZnJvbSBhIExpc3Qgb3IgRGljdGlvbmFyeQogfHJlcGVhdCgpfCAJCXJlcGVhdCAiZXhwciIgImNvdW50IiB0aW1lcyAoQ2hyaXN0b3BoZSBQb3VjZXQpCiB8cmV2ZXJzZSgpfAkJcmV2ZXJzZSB0aGUgb3JkZXIgb2YgYSBMaXN0Cit8c2VhcmNoZGVjbCgpfAkJc2VhcmNoIGZvciBkZWNsYXJhdGlvbiBvZiB2YXJpYWJsZQogfHNldHFmbGlzdCgpfAkJY3JlYXRlIGEgcXVpY2tmaXggbGlzdCAoWWVnYXBwYW4gTGFrc2htYW5hbikKIHxzb3J0KCl8CQlzb3J0IGEgTGlzdAogfHNvdW5kZm9sZCgpfAkJZ2V0IHRoZSBzb3VuZC1hLWxpa2UgZXF1aXZhbGVudCBvZiBhIHdvcmQKQEAgLTU3Niw2ICs1OTUsOSBAQAogCiAiOmZ1bmN0aW9uIC9wYXR0ZXJuIiBsaXN0cyBmdW5jdGlvbnMgbWF0Y2hpbmcgdGhlIHBhdHRlcm4uCiAKKyIxZ2QiIGNhbiBiZSB1c2VkIGxpa2UgImdkIiBidXQgaWdub3JlcyBtYXRjaGVzIGluIGEge30gYmxvY2sgdGhhdCBlbmRzIGJlZm9yZQordGhlIGN1cnNvciBwb3NpdGlvbi4gIExpa2V3aXNlIGZvciAiMWdEIiBhbmQgImdEIi4KKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBJTVBST1ZFTUVOVFMJCQkJCQkqaW1wcm92ZW1lbnRzLTcqCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vaHRtbC52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL2h0bWwudmltCmluZGV4IDgwYjA0Y2QuLjRmN2U5N2QgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vaHRtbC52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi9odG1sLnZpbQpAQCAtMTQsNiArMTQsOCBAQAogCiBzZXRsb2NhbCBjb21tZW50c3RyaW5nPTwhLS0lcy0tPgogCitzZXRsb2NhbCBvbW5pZnVuYz1odG1sY29tcGxldGUjQ29tcGxldGVUYWdzCisKICIgSFRNTDogIHRoYW5rcyB0byBKb2hhbm5lcyBaZWxsbmVyIGFuZCBCZW5qaSBGaXNoZXIuCiBpZiBleGlzdHMoImxvYWRlZF9tYXRjaGl0IikKICAgICBsZXQgYjptYXRjaF9pZ25vcmVjYXNlID0gMQpkaWZmIC0tZ2l0IGEvcnVudGltZS9vcHR3aW4udmltIGIvcnVudGltZS9vcHR3aW4udmltCmluZGV4IDdhYTFlMGYuLjA2ZDI5NzYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvb3B0d2luLnZpbQorKysgYi9ydW50aW1lL29wdHdpbi52aW0KQEAgLTEsNyArMSw3IEBACiAiIFRoZXNlIGNvbW1hbmRzIGNyZWF0ZSB0aGUgb3B0aW9uIHdpbmRvdy4KICIKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDUgU2VwIDAxCisiIExhc3QgQ2hhbmdlOgkyMDA1IFNlcCAxMwogCiAiIElmIHRoZXJlIGFscmVhZHkgaXMgYW4gb3B0aW9uIHdpbmRvdywganVtcCB0byB0aGF0IG9uZS4KIGlmIGJ1Zndpbm5yKCJvcHRpb24td2luZG93IikgPiAwCkBAIC03MDQsNyArNzA0LDcgQEAKICAgY2FsbCBhcHBlbmQoIiQiLCAiY29tcGxldGVmdW5jXHR1c2VyIGRlZmluZWQgZnVuY3Rpb24gZm9yIEluc2VydCBtb2RlIGNvbXBsZXRpb24iKQogICBjYWxsIGFwcGVuZCgiJCIsICJcdChsb2NhbCB0byBidWZmZXIpIikKICAgY2FsbCA8U0lEPk9wdGlvbkwoImNmdSIpCi0gIGNhbGwgYXBwZW5kKCIkIiwgIm9jY3VsdGZ1bmNcdGZ1bmN0aW9uIGZvciBmaWxldHlwZS1zcGVjaWZpYyBJbnNlcnQgbW9kZSBjb21wbGV0aW9uIikKKyAgY2FsbCBhcHBlbmQoIiQiLCAib21uaWZ1bmNcdGZ1bmN0aW9uIGZvciBmaWxldHlwZS1zcGVjaWZpYyBJbnNlcnQgbW9kZSBjb21wbGV0aW9uIikKICAgY2FsbCBhcHBlbmQoIiQiLCAiXHQobG9jYWwgdG8gYnVmZmVyKSIpCiAgIGNhbGwgPFNJRD5PcHRpb25MKCJvZnUiKQogICBjYWxsIGFwcGVuZCgiJCIsICJkaWN0aW9uYXJ5XHRsaXN0IG9mIGRpY3Rpb25hcnkgZmlsZXMgZm9yIGtleXdvcmQgY29tcGxldGlvbiIpCmRpZmYgLS1naXQgYS9ydW50aW1lL3NwZWxsL3J1L3J1X1JVLmRpZmYgYi9ydW50aW1lL3NwZWxsL3J1L3J1X1JVLmRpZmYKaW5kZXggYzc5ZmIwYy4uNDY1ZGEzZSAxMDA2NDQKLS0tIGEvcnVudGltZS9zcGVsbC9ydS9ydV9SVS5kaWZmCisrKyBiL3J1bnRpbWUvc3BlbGwvcnUvcnVfUlUuZGlmZgpAQCAtMSw4ICsxLDggQEAKICoqKiBydV9SVS5vcmlnLmFmZglTdW4gQXVnIDI4IDIxOjEyOjI3IDIwMDUKLS0tLSBydV9SVS5hZmYJU3VuIFNlcCAgNCAxNzoyMTo0MCAyMDA1CistLS0gcnVfUlUuYWZmCU1vbiBTZXAgMTIgMjI6MTA6MjIgMjAwNQogKioqKioqKioqKioqKioqCiAqKiogMyw0ICoqKioKLS0tLSAzLDEzIC0tLS0KKy0tLSAzLDExIC0tLS0KICAgCiArIEZPTCDBwtfHxMWj1trJysvMzc7P0NLT1NXGyMPe293Y2d/cwNEKICsgTE9XIMHC18fExaPW2snKy8zNzs/Q0tPU1cbIw97b3djZ39zA0QpAQCAtMTEsOCArMTEsNiBAQAogKyBTT0ZPRlJPTSDBwtfHxMWj1trJysvMzc7P0NLT1NXGyMPe293Y2d/cwNHh4vfn5OWz9vrp6uvs7e7v8PLz9PXm6OP++/34+f/84PEKICsgU09GT1RPICAgxcLXx8TFxdbaxcrLzM7OxdDS09TFxsjD3tvb2MUnxcXF5eL35+Tl5fb65err7O7u5fDy8/Tl5ujj/vv7+OUn5eXlCiArIAotKyBNSURXT1JEICctCi0rIAogICBTRlggTCBZIDUyCiAqKiogcnVfUlUub3JpZy5kaWMJU3VuIEF1ZyAyOCAyMToxMjoyNyAyMDA1CiAtLS0gcnVfUlUuZGljCVN1biBTZXAgIDQgMTc6MjM6MjcgMjAwNQpkaWZmIC0tZ2l0IGEvcnVudGltZS9zcGVsbC9ydS9ydV9ZTy5kaWZmIGIvcnVudGltZS9zcGVsbC9ydS9ydV9ZTy5kaWZmCmluZGV4IGNkMmViNWEuLjc0MTM3MmQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3BlbGwvcnUvcnVfWU8uZGlmZgorKysgYi9ydW50aW1lL3NwZWxsL3J1L3J1X1lPLmRpZmYKQEAgLTEsOCArMSw4IEBACiAqKiogcnVfWU8ub3JpZy5hZmYJU3VuIEF1ZyAyOCAyMToxMjozNSAyMDA1Ci0tLS0gcnVfWU8uYWZmCVN1biBTZXAgIDQgMTc6MjM6NTEgMjAwNQorLS0tIHJ1X1lPLmFmZglNb24gU2VwIDEyIDIyOjEwOjMyIDIwMDUKICoqKioqKioqKioqKioqKgogKioqIDMsNCAqKioqCi0tLS0gMywxMyAtLS0tCistLS0gMywxMSAtLS0tCiAgIAogKyBGT0wgwcLXx8TFo9baycrLzM3Oz9DS09TVxsjD3tvd2Nnf3MDRCiArIExPVyDBwtfHxMWj1trJysvMzc7P0NLT1NXGyMPe293Y2d/cwNEKQEAgLTExLDggKzExLDYgQEAKICsgU09GT0ZST00gwcLXx8TFo9baycrLzM3Oz9DS09TVxsjD3tvd2Nnf3MDR4eL35+Tls/b66err7O3u7/Dy8/T15ujj/vv9+Pn//ODxCiArIFNPRk9UTyAgIMXC18fExcXW2sXKy8zOzsXQ0tPUxcbIw97b29jFJ8XFxeXi9+fk5eX2+uXq6+zu7uXw8vP05ebo4/77+/jlJ+Xl5QogKyAKLSsgTUlEV09SRCAnLQotKyAKICAgU0ZYIEwgWSA1NgogKioqIHJ1X1lPLm9yaWcuZGljCVN1biBBdWcgMjggMjE6MTI6MzUgMjAwNQogLS0tIHJ1X1lPLmRpYwlTdW4gU2VwICA0IDE3OjI0OjI2IDIwMDUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0gYi9ydW50aW1lL3N5bnRheC92aW0udmltCmluZGV4IGMyNzEyYmEuLjQ2ZjQyZTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3ZpbS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvdmltLnZpbQpAQCAtMjAsNyArMjAsNyBAQAogc3luIG1hdGNoICAgdmltQ29tbWFuZCBjb250YWluZWQJIlw8elstK14uPV0iCiAKICIgdmltT3B0aW9ucyBhcmUgY2F1Z2h0IG9ubHkgd2hlbiBjb250YWluZWQgaW4gYSB2aW1TZXQge3t7Mgotc3luIGtleXdvcmQgdmltT3B0aW9uIGNvbnRhaW5lZAk6IGFjZCBhaSBha20gYWwgYWxlcGggYWxsb3dyZXZpbnMgYWx0a2V5bWFwIGFtYml3aWR0aCBhbWJ3IGFudGkgYW50aWFsaWFzIGFyIGFyYWIgYXJhYmljIGFyYWJpY3NoYXBlIGFyaSBhcnNoYXBlIGF1dG9jaGRpciBhdXRvaW5kZW50IGF1dG9yZWFkIGF1dG93cml0ZSBhdXRvd3JpdGVhbGwgYXcgYXdhIGJhY2tncm91bmQgYmFja3NwYWNlIGJhY2t1cCBiYWNrdXBjb3B5IGJhY2t1cGRpciBiYWNrdXBleHQgYmFja3Vwc2tpcCBiYWxsb29uZGVsYXkgYmFsbG9vbmV2YWwgYmFsbG9vbmV4cHIgYmRpciBiZGxheSBiZXZhbCBiZXggYmV4cHIgYmcgYmggYmluIGJpbmFyeSBiaW9zayBiaW9za2V5IGJrIGJrYyBibCBib21iIGJyZWFrYXQgYnJrIGJyb3dzZWRpciBicyBic2RpciBic2sgYnQgYnVmaGlkZGVuIGJ1Zmxpc3RlZCBidWZ0eXBlIGNhc2VtYXAgY2IgY2N2IGNkIGNkcGF0aCBjZWRpdCBjZiBjZnUgY2ggY2hhcmNvbnZlcnQgY2kgY2luIGNpbmRlbnQgY2luayBjaW5rZXlzIGNpbm8gY2lub3B0aW9ucyBjaW53IGNpbndvcmRzIGNsaXBib2FyZCBjbWRoZWlnaHQgY21kd2luaGVpZ2h0IGNtcCBjbXMgY28gY29sdW1ucyBjb20gY29tbWVudHMgY29tbWVudHN0cmluZyBjb21wYXRpYmxlIGNvbXBsZXRlIGNvbXBsZXRlZnVuYyBjb25maXJtIGNvbnNrIGNvbnNrZXkgY29weWluZGVudCBjcCBjcG8gY3BvcHRpb25zIGNwdCBjc2NvcGVwYXRoY29tcCBjc2NvcGVwcmcgY3Njb3BlcXVpY2tmaXggY3Njb3BldGFnIGNzY29wZXRhZ29yZGVyIGNzY29wZXZlcmJvc2UgY3NwYyBjc3ByZyBjc3FmIGNzdCBjc3RvIGNzdmVyYiBjd2ggZGVidWcgZGVjbyBkZWYgZGVmaW5lIGRlbGNvbWJpbmUgZGV4IGRnIGRpY3QgZGljdGlvbmFyeSBkaWZmIGRpZmZleHByIGRpZmZvcHQgZGlncmFwaCBkaXAgZGlyIGRpcmVjdG9yeSBkaXNwbGF5IGR5IGVhIGVhZCBlYWRpcmVjdGlvbiBlYiBlZCBlZGNvbXBhdGlibGUgZWYgZWZtIGVpIGVrIGVuYyBlbmNvZGluZyBlbmRvZmxpbmUgZW9sIGVwIGVxdWFsYWx3YXlzIGVxdWFscHJnIGVycm9yYmVsbHMgZXJyb3JmaWxlIGVycm9yZm9ybWF0IGVzY2tleXMgZXQgZXZlbnRpZ25vcmUgZXggZXhwYW5kdGFiIGV4cmMgZmNsIGZjcyBmZGMgZmRlIGZkaSBmZGwgZmRscyBmZG0gZmRuIGZkbyBmZHQgZmVuIGZlbmMgZmVuY3MgZmYgZmZzIGZpbGVlbmNvZGluZyBmaWxlZW5jb2RpbmdzIGZpbGVmb3JtYXQgZmlsZWZvcm1hdHMgZmlsZXR5cGUgZmlsbGNoYXJzIGZrIGZrbWFwIGZscCBmbWwgZm1yIGZvIGZvbGRjbG9zZSBmb2xkY29sdW1uIGZvbGRlbmFibGUgZm9sZGV4cHIgZm9sZGlnbm9yZSBmb2xkbGV2ZWwgZm9sZGxldmVsc3RhcnQgZm9sZG1hcmtlciBmb2xkbWV0aG9kIGZvbGRtaW5saW5lcyBmb2xkbmVzdG1heCBmb2xkb3BlbiBmb2xkdGV4dCBmb3JtYXRsaXN0cGF0IGZvcm1hdG9wdGlvbnMgZm9ybWF0cHJnIGZwIGZzIGZzeW5jIGZ0IGdjciBnZCBnZGVmYXVsdCBnZm0gZ2ZuIGdmcyBnZncgZ2hyIGdvIGdwIGdyZXBmb3JtYXQgZ3JlcHByZyBndWljdXJzb3IgZ3VpZm9udCBndWlmb250c2V0IGd1aWZvbnR3aWRlIGd1aWhlYWRyb29tIGd1aW9wdGlvbnMgZ3VpcHR5IGhlbHBmaWxlIGhlbHBoZWlnaHQgaGVscGxhbmcgaGYgaGggaGkgaGlkIGhpZGRlbiBoaWdobGlnaHQgaGlzdG9yeSBoayBoa21hcCBoa21hcHAgaGtwIGhsIGhsZyBobHMgaGxzZWFyY2ggaWMgaWNvbiBpY29uc3RyaW5nIGlnbm9yZWNhc2UgaW0gaW1hY3RpdmF0ZWtleSBpbWFrIGltYyBpbWNtZGxpbmUgaW1kIGltZGlzYWJsZSBpbWkgaW1pbnNlcnQgaW1zIGltc2VhcmNoIGluYyBpbmNsdWRlIGluY2x1ZGVleHByIGluY3NlYXJjaCBpbmRlIGluZGVudGV4cHIgaW5kZW50a2V5cyBpbmRrIGluZXggaW5mIGluZmVyY2FzZSBpbnNlcnRtb2RlIGlzIGlzZiBpc2ZuYW1lIGlzaSBpc2lkZW50IGlzayBpc2tleXdvcmQgaXNwIGlzcHJpbnQgam9pbnNwYWNlcyBqcyBrZXkga2V5bWFwIGtleW1vZGVsIGtleXdvcmRwcmcga20ga21wIGtwIGxhbmdtYXAgbGFuZ21lbnUgbGFzdHN0YXR1cyBsYXp5cmVkcmF3IGxiciBsY3MgbGluZWJyZWFrIGxpbmVzIGxpbmVzcGFjZSBsaXNwIGxpc3B3b3JkcyBsaXN0IGxpc3RjaGFycyBsbSBsbWFwIGxvYWRwbHVnaW5zIGxwbCBscyBsc3AgbHcgbHogbWEgbWFnaWMgbWFrZWVmIG1ha2VwcmcgbWF0IG1hdGNocGFpcnMgbWF0Y2h0aW1lIG1heGZ1bmNkZXB0aCBtYXhtYXBkZXB0aCBtYXhtZW0gbWF4bWVtcGF0dGVybiBtYXhtZW10b3QgbWVmIG1lbnVpdGVtcyBtZmQgbWggbWlzIG1rc3BlbGxtZW0gbWwgbWxzIG1tIG1tZCBtbXAgbW10IG1vZCBtb2RlbGluZSBtb2RlbGluZXMgbW9kaWZpYWJsZSBtb2RpZmllZCBtb3JlIG1vdXNlIG1vdXNlZiBtb3VzZWZvY3VzIG1vdXNlaGlkZSBtb3VzZW0gbW91c2Vtb2RlbCBtb3VzZXMgbW91c2VzaGFwZSBtb3VzZXQgbW91c2V0aW1lIG1wIG1wcyBtc20gbXpxIG16cXVhbnR1bSBuZiBucmZvcm1hdHMgbnUgbnVtYmVyIG51bWJlcndpZHRoIG51dyBvY2N1bHRmdW5jIG9mdCBvZnUgb3NmaWxldHlwZSBwYSBwYXJhIHBhcmFncmFwaHMgcGFzdGUgcGFzdGV0b2dnbGUgcGF0Y2hleHByIHBhdGNobW9kZSBwYXRoIHBkZXYgcGVuYyBwZXggcGV4cHIgcGZuIHBoZWFkZXIgcGkgcG0gcG1iY3MgcG1iZm4gcG9wdCBwcmVzZXJ2ZWluZGVudCBwcmV2aWV3aGVpZ2h0IHByZXZpZXd3aW5kb3cgcHJpbnRkZXZpY2UgcHJpbnRlbmNvZGluZyBwcmludGV4cHIgcHJpbnRmb250IHByaW50aGVhZGVyIHByaW50bWJjaGFyc2V0IHByaW50bWJmb250IHByaW50b3B0aW9ucyBwcm9tcHQgcHQgcHZoIHB2dyBxZSBxdW90ZWVzY2FwZSByZWFkb25seSByZW1hcCByZXBvcnQgcmVzdG9yZXNjcmVlbiByZXZpbnMgcmkgcmlnaHRsZWZ0IHJpZ2h0bGVmdGNtZCBybCBybGMgcm8gcnMgcnRwIHJ1IHJ1ZiBydWxlciBydWxlcmZvcm1hdCBydW50aW1lcGF0aCBzYiBzYm8gc2JyIHNjIHNjYiBzY3Igc2Nyb2xsIHNjcm9sbGJpbmQgc2Nyb2xsanVtcCBzY3JvbGxvZmYgc2Nyb2xsb3B0IHNjcyBzZWN0IHNlY3Rpb25zIHNlY3VyZSBzZWwgc2VsZWN0aW9uIHNlbGVjdG1vZGUgc2Vzc2lvbm9wdGlvbnMgc2Z0IHNoIHNoY2Ygc2hlbGwgc2hlbGxjbWRmbGFnIHNoZWxscGlwZSBzaGVsbHF1b3RlIHNoZWxscmVkaXIgc2hlbGxzbGFzaCBzaGVsbHRlbXAgc2hlbGx0eXBlIHNoZWxseHF1b3RlIHNoaWZ0cm91bmQgc2hpZnR3aWR0aCBzaG0gc2hvcnRtZXNzIHNob3J0bmFtZSBzaG93YnJlYWsgc2hvd2NtZCBzaG93ZnVsbHRhZyBzaG93bWF0Y2ggc2hvd21vZGUgc2hxIHNpIHNpZGVzY3JvbGwgc2lkZXNjcm9sbG9mZiBzaXNvIHNqIHNsbSBzbSBzbWFydGNhc2Ugc21hcnRpbmRlbnQgc21hcnR0YWIgc21jIHNtZCBzbiBzbyBzb2Z0dGFic3RvcCBzb2wgc3Agc3BjIHNwZWxsIHNwZWxsY2FwY2hlY2sgc3BlbGxmaWxlIHNwZWxsbGFuZyBzcGVsbHN1Z2dlc3Qgc3BmIHNwbCBzcGxpdGJlbG93IHNwbGl0cmlnaHQgc3ByIHNwcyBzciBzcnIgc3Mgc3NsIHNzb3Agc3Qgc3RhIHN0YXJ0b2ZsaW5lIHN0YXR1c2xpbmUgc3RsIHN0bXAgc3RzIHN1IHN1YSBzdWZmaXhlcyBzdWZmaXhlc2FkZCBzdyBzd2FwZmlsZSBzd2Fwc3luYyBzd2Igc3dmIHN3aXRjaGJ1ZiBzd3Mgc3hxIHN5biBzeW5tYXhjb2wgc3ludGF4IHRhIHRhYnN0b3AgdGFnIHRhZ2JzZWFyY2ggdGFnbGVuZ3RoIHRhZ3JlbGF0aXZlIHRhZ3MgdGFnc3RhY2sgdGIgdGJpIHRiaWRpIHRiaXMgdGJzIHRlbmMgdGVybSB0ZXJtYmlkaSB0ZXJtZW5jb2RpbmcgdGVyc2UgdGV4dGF1dG8gdGV4dG1vZGUgdGV4dHdpZHRoIHRmIHRnc3QgdGhlc2F1cnVzIHRpbGRlb3AgdGltZW91dCB0aW1lb3V0bGVuIHRpdGxlIHRpdGxlbGVuIHRpdGxlb2xkIHRpdGxlc3RyaW5nIHRsIHRtIHRvIHRvb2xiYXIgdG9vbGJhcmljb25zaXplIHRvcCB0ciB0cyB0c2wgdHNyIHR0aW1lb3V0IHR0aW1lb3V0bGVuIHR0bSB0dHkgdHR5YnVpbHRpbiB0dHlmYXN0IHR0eW0gdHR5bW91c2UgdHR5c2Nyb2xsIHR0eXR5cGUgdHcgdHggdWMgdWwgdW5kb2xldmVscyB1cGRhdGVjb3VudCB1cGRhdGV0aW1lIHV0IHZiIHZicyB2ZGlyIHZlIHZlcmJvc2UgdmVyYm9zZWZpbGUgdmZpbGUgdmkgdmlld2RpciB2aWV3b3B0aW9ucyB2aW1pbmZvIHZpcnR1YWxlZGl0IHZpc3VhbGJlbGwgdm9wIHdhIHdhayB3YXJuIHdiIHdjIHdjbSB3ZCB3ZWlyZGludmVydCB3Zmggd2ggd2hpY2h3cmFwIHdpIHdpZyB3aWxkY2hhciB3aWxkY2hhcm0gd2lsZGlnbm9yZSB3aWxkbWVudSB3aWxkbW9kZSB3aWxkb3B0aW9ucyB3aW0gd2luYWx0a2V5cyB3aW5kb3cgd2luZml4aGVpZ2h0IHdpbmhlaWdodCB3aW5taW5oZWlnaHQgd2lubWlud2lkdGggd2lud2lkdGggd2l2IHdpdyB3bSB3bWggd21udSB3bXcgd29wIHdyYXAgd3JhcG1hcmdpbiB3cmFwc2NhbiB3cml0ZSB3cml0ZWFueSB3cml0ZWJhY2t1cCB3cml0ZWRlbGF5IHdzIHd3IAorc3luIGtleXdvcmQgdmltT3B0aW9uIGNvbnRhaW5lZAk6IGFjZCBhaSBha20gYWwgYWxlcGggYWxsb3dyZXZpbnMgYWx0a2V5bWFwIGFtYml3aWR0aCBhbWJ3IGFudGkgYW50aWFsaWFzIGFyIGFyYWIgYXJhYmljIGFyYWJpY3NoYXBlIGFyaSBhcnNoYXBlIGF1dG9jaGRpciBhdXRvaW5kZW50IGF1dG9yZWFkIGF1dG93cml0ZSBhdXRvd3JpdGVhbGwgYXcgYXdhIGJhY2tncm91bmQgYmFja3NwYWNlIGJhY2t1cCBiYWNrdXBjb3B5IGJhY2t1cGRpciBiYWNrdXBleHQgYmFja3Vwc2tpcCBiYWxsb29uZGVsYXkgYmFsbG9vbmV2YWwgYmFsbG9vbmV4cHIgYmRpciBiZGxheSBiZXZhbCBiZXggYmV4cHIgYmcgYmggYmluIGJpbmFyeSBiaW9zayBiaW9za2V5IGJrIGJrYyBibCBib21iIGJyZWFrYXQgYnJrIGJyb3dzZWRpciBicyBic2RpciBic2sgYnQgYnVmaGlkZGVuIGJ1Zmxpc3RlZCBidWZ0eXBlIGNhc2VtYXAgY2IgY2N2IGNkIGNkcGF0aCBjZWRpdCBjZiBjZnUgY2ggY2hhcmNvbnZlcnQgY2kgY2luIGNpbmRlbnQgY2luayBjaW5rZXlzIGNpbm8gY2lub3B0aW9ucyBjaW53IGNpbndvcmRzIGNsaXBib2FyZCBjbWRoZWlnaHQgY21kd2luaGVpZ2h0IGNtcCBjbXMgY28gY29sdW1ucyBjb20gY29tbWVudHMgY29tbWVudHN0cmluZyBjb21wYXRpYmxlIGNvbXBsZXRlIGNvbXBsZXRlZnVuYyBjb25maXJtIGNvbnNrIGNvbnNrZXkgY29weWluZGVudCBjcCBjcG8gY3BvcHRpb25zIGNwdCBjc2NvcGVwYXRoY29tcCBjc2NvcGVwcmcgY3Njb3BlcXVpY2tmaXggY3Njb3BldGFnIGNzY29wZXRhZ29yZGVyIGNzY29wZXZlcmJvc2UgY3NwYyBjc3ByZyBjc3FmIGNzdCBjc3RvIGNzdmVyYiBjd2ggZGVidWcgZGVjbyBkZWYgZGVmaW5lIGRlbGNvbWJpbmUgZGV4IGRnIGRpY3QgZGljdGlvbmFyeSBkaWZmIGRpZmZleHByIGRpZmZvcHQgZGlncmFwaCBkaXAgZGlyIGRpcmVjdG9yeSBkaXNwbGF5IGR5IGVhIGVhZCBlYWRpcmVjdGlvbiBlYiBlZCBlZGNvbXBhdGlibGUgZWYgZWZtIGVpIGVrIGVuYyBlbmNvZGluZyBlbmRvZmxpbmUgZW9sIGVwIGVxdWFsYWx3YXlzIGVxdWFscHJnIGVycm9yYmVsbHMgZXJyb3JmaWxlIGVycm9yZm9ybWF0IGVzY2tleXMgZXQgZXZlbnRpZ25vcmUgZXggZXhwYW5kdGFiIGV4cmMgZmNsIGZjcyBmZGMgZmRlIGZkaSBmZGwgZmRscyBmZG0gZmRuIGZkbyBmZHQgZmVuIGZlbmMgZmVuY3MgZmYgZmZzIGZpbGVlbmNvZGluZyBmaWxlZW5jb2RpbmdzIGZpbGVmb3JtYXQgZmlsZWZvcm1hdHMgZmlsZXR5cGUgZmlsbGNoYXJzIGZrIGZrbWFwIGZscCBmbWwgZm1yIGZvIGZvbGRjbG9zZSBmb2xkY29sdW1uIGZvbGRlbmFibGUgZm9sZGV4cHIgZm9sZGlnbm9yZSBmb2xkbGV2ZWwgZm9sZGxldmVsc3RhcnQgZm9sZG1hcmtlciBmb2xkbWV0aG9kIGZvbGRtaW5saW5lcyBmb2xkbmVzdG1heCBmb2xkb3BlbiBmb2xkdGV4dCBmb3JtYXRsaXN0cGF0IGZvcm1hdG9wdGlvbnMgZm9ybWF0cHJnIGZwIGZzIGZzeW5jIGZ0IGdjciBnZCBnZGVmYXVsdCBnZm0gZ2ZuIGdmcyBnZncgZ2hyIGdvIGdwIGdyZXBmb3JtYXQgZ3JlcHByZyBndWljdXJzb3IgZ3VpZm9udCBndWlmb250c2V0IGd1aWZvbnR3aWRlIGd1aWhlYWRyb29tIGd1aW9wdGlvbnMgZ3VpcHR5IGhlbHBmaWxlIGhlbHBoZWlnaHQgaGVscGxhbmcgaGYgaGggaGkgaGlkIGhpZGRlbiBoaWdobGlnaHQgaGlzdG9yeSBoayBoa21hcCBoa21hcHAgaGtwIGhsIGhsZyBobHMgaGxzZWFyY2ggaWMgaWNvbiBpY29uc3RyaW5nIGlnbm9yZWNhc2UgaW0gaW1hY3RpdmF0ZWtleSBpbWFrIGltYyBpbWNtZGxpbmUgaW1kIGltZGlzYWJsZSBpbWkgaW1pbnNlcnQgaW1zIGltc2VhcmNoIGluYyBpbmNsdWRlIGluY2x1ZGVleHByIGluY3NlYXJjaCBpbmRlIGluZGVudGV4cHIgaW5kZW50a2V5cyBpbmRrIGluZXggaW5mIGluZmVyY2FzZSBpbnNlcnRtb2RlIGlzIGlzZiBpc2ZuYW1lIGlzaSBpc2lkZW50IGlzayBpc2tleXdvcmQgaXNwIGlzcHJpbnQgam9pbnNwYWNlcyBqcyBrZXkga2V5bWFwIGtleW1vZGVsIGtleXdvcmRwcmcga20ga21wIGtwIGxhbmdtYXAgbGFuZ21lbnUgbGFzdHN0YXR1cyBsYXp5cmVkcmF3IGxiciBsY3MgbGluZWJyZWFrIGxpbmVzIGxpbmVzcGFjZSBsaXNwIGxpc3B3b3JkcyBsaXN0IGxpc3RjaGFycyBsbSBsbWFwIGxvYWRwbHVnaW5zIGxwbCBscyBsc3AgbHcgbHogbWEgbWFnaWMgbWFrZWVmIG1ha2VwcmcgbWF0IG1hdGNocGFpcnMgbWF0Y2h0aW1lIG1heGZ1bmNkZXB0aCBtYXhtYXBkZXB0aCBtYXhtZW0gbWF4bWVtcGF0dGVybiBtYXhtZW10b3QgbWVmIG1lbnVpdGVtcyBtZmQgbWggbWlzIG1rc3BlbGxtZW0gbWwgbWxzIG1tIG1tZCBtbXAgbW10IG1vZCBtb2RlbGluZSBtb2RlbGluZXMgbW9kaWZpYWJsZSBtb2RpZmllZCBtb3JlIG1vdXNlIG1vdXNlZiBtb3VzZWZvY3VzIG1vdXNlaGlkZSBtb3VzZW0gbW91c2Vtb2RlbCBtb3VzZXMgbW91c2VzaGFwZSBtb3VzZXQgbW91c2V0aW1lIG1wIG1wcyBtc20gbXpxIG16cXVhbnR1bSBuZiBucmZvcm1hdHMgbnUgbnVtYmVyIG51bWJlcndpZHRoIG51dyBvbW5pZnVuYyBvZnQgb2Z1IG9zZmlsZXR5cGUgcGEgcGFyYSBwYXJhZ3JhcGhzIHBhc3RlIHBhc3RldG9nZ2xlIHBhdGNoZXhwciBwYXRjaG1vZGUgcGF0aCBwZGV2IHBlbmMgcGV4IHBleHByIHBmbiBwaGVhZGVyIHBpIHBtIHBtYmNzIHBtYmZuIHBvcHQgcHJlc2VydmVpbmRlbnQgcHJldmlld2hlaWdodCBwcmV2aWV3d2luZG93IHByaW50ZGV2aWNlIHByaW50ZW5jb2RpbmcgcHJpbnRleHByIHByaW50Zm9udCBwcmludGhlYWRlciBwcmludG1iY2hhcnNldCBwcmludG1iZm9udCBwcmludG9wdGlvbnMgcHJvbXB0IHB0IHB2aCBwdncgcWUgcXVvdGVlc2NhcGUgcmVhZG9ubHkgcmVtYXAgcmVwb3J0IHJlc3RvcmVzY3JlZW4gcmV2aW5zIHJpIHJpZ2h0bGVmdCByaWdodGxlZnRjbWQgcmwgcmxjIHJvIHJzIHJ0cCBydSBydWYgcnVsZXIgcnVsZXJmb3JtYXQgcnVudGltZXBhdGggc2Igc2JvIHNiciBzYyBzY2Igc2NyIHNjcm9sbCBzY3JvbGxiaW5kIHNjcm9sbGp1bXAgc2Nyb2xsb2ZmIHNjcm9sbG9wdCBzY3Mgc2VjdCBzZWN0aW9ucyBzZWN1cmUgc2VsIHNlbGVjdGlvbiBzZWxlY3Rtb2RlIHNlc3Npb25vcHRpb25zIHNmdCBzaCBzaGNmIHNoZWxsIHNoZWxsY21kZmxhZyBzaGVsbHBpcGUgc2hlbGxxdW90ZSBzaGVsbHJlZGlyIHNoZWxsc2xhc2ggc2hlbGx0ZW1wIHNoZWxsdHlwZSBzaGVsbHhxdW90ZSBzaGlmdHJvdW5kIHNoaWZ0d2lkdGggc2htIHNob3J0bWVzcyBzaG9ydG5hbWUgc2hvd2JyZWFrIHNob3djbWQgc2hvd2Z1bGx0YWcgc2hvd21hdGNoIHNob3dtb2RlIHNocSBzaSBzaWRlc2Nyb2xsIHNpZGVzY3JvbGxvZmYgc2lzbyBzaiBzbG0gc20gc21hcnRjYXNlIHNtYXJ0aW5kZW50IHNtYXJ0dGFiIHNtYyBzbWQgc24gc28gc29mdHRhYnN0b3Agc29sIHNwIHNwYyBzcGVsbCBzcGVsbGNhcGNoZWNrIHNwZWxsZmlsZSBzcGVsbGxhbmcgc3BlbGxzdWdnZXN0IHNwZiBzcGwgc3BsaXRiZWxvdyBzcGxpdHJpZ2h0IHNwciBzcHMgc3Igc3JyIHNzIHNzbCBzc29wIHN0IHN0YSBzdGFydG9mbGluZSBzdGF0dXNsaW5lIHN0bCBzdG1wIHN0cyBzdSBzdWEgc3VmZml4ZXMgc3VmZml4ZXNhZGQgc3cgc3dhcGZpbGUgc3dhcHN5bmMgc3diIHN3ZiBzd2l0Y2hidWYgc3dzIHN4cSBzeW4gc3lubWF4Y29sIHN5bnRheCB0YSB0YWJzdG9wIHRhZyB0YWdic2VhcmNoIHRhZ2xlbmd0aCB0YWdyZWxhdGl2ZSB0YWdzIHRhZ3N0YWNrIHRiIHRiaSB0YmlkaSB0YmlzIHRicyB0ZW5jIHRlcm0gdGVybWJpZGkgdGVybWVuY29kaW5nIHRlcnNlIHRleHRhdXRvIHRleHRtb2RlIHRleHR3aWR0aCB0ZiB0Z3N0IHRoZXNhdXJ1cyB0aWxkZW9wIHRpbWVvdXQgdGltZW91dGxlbiB0aXRsZSB0aXRsZWxlbiB0aXRsZW9sZCB0aXRsZXN0cmluZyB0bCB0bSB0byB0b29sYmFyIHRvb2xiYXJpY29uc2l6ZSB0b3AgdHIgdHMgdHNsIHRzciB0dGltZW91dCB0dGltZW91dGxlbiB0dG0gdHR5IHR0eWJ1aWx0aW4gdHR5ZmFzdCB0dHltIHR0eW1vdXNlIHR0eXNjcm9sbCB0dHl0eXBlIHR3IHR4IHVjIHVsIHVuZG9sZXZlbHMgdXBkYXRlY291bnQgdXBkYXRldGltZSB1dCB2YiB2YnMgdmRpciB2ZSB2ZXJib3NlIHZlcmJvc2VmaWxlIHZmaWxlIHZpIHZpZXdkaXIgdmlld29wdGlvbnMgdmltaW5mbyB2aXJ0dWFsZWRpdCB2aXN1YWxiZWxsIHZvcCB3YSB3YWsgd2FybiB3YiB3YyB3Y20gd2Qgd2VpcmRpbnZlcnQgd2ZoIHdoIHdoaWNod3JhcCB3aSB3aWcgd2lsZGNoYXIgd2lsZGNoYXJtIHdpbGRpZ25vcmUgd2lsZG1lbnUgd2lsZG1vZGUgd2lsZG9wdGlvbnMgd2ltIHdpbmFsdGtleXMgd2luZG93IHdpbmZpeGhlaWdodCB3aW5oZWlnaHQgd2lubWluaGVpZ2h0IHdpbm1pbndpZHRoIHdpbndpZHRoIHdpdiB3aXcgd20gd21oIHdtbnUgd213IHdvcCB3cmFwIHdyYXBtYXJnaW4gd3JhcHNjYW4gd3JpdGUgd3JpdGVhbnkgd3JpdGViYWNrdXAgd3JpdGVkZWxheSB3cyB3dyAKIAogIiB2aW1PcHRpb25zOiBUaGVzZSBhcmUgdGhlIHR1cm4tb2ZmIHNldHRpbmcgdmFyaWFudHMge3t7Mgogc3luIGtleXdvcmQgdmltT3B0aW9uIGNvbnRhaW5lZAlub2FjZCBub2FpIG5vYWttIG5vYWxsb3dyZXZpbnMgbm9hbHRrZXltYXAgbm9hbnRpIG5vYW50aWFsaWFzIG5vYXIgbm9hcmFiIG5vYXJhYmljIG5vYXJhYmljc2hhcGUgbm9hcmkgbm9hcnNoYXBlIG5vYXV0b2NoZGlyIG5vYXV0b2luZGVudCBub2F1dG9yZWFkIG5vYXV0b3dyaXRlIG5vYXV0b3dyaXRlYWxsIG5vYXcgbm9hd2Egbm9iYWNrdXAgbm9iYWxsb29uZXZhbCBub2JldmFsIG5vYmluIG5vYmluYXJ5IG5vYmlvc2sgbm9iaW9za2V5IG5vYmsgbm9ibCBub2JvbWIgbm9idWZsaXN0ZWQgbm9jZiBub2NpIG5vY2luIG5vY2luZGVudCBub2NvbXBhdGlibGUgbm9jb25maXJtIG5vY29uc2sgbm9jb25za2V5IG5vY29weWluZGVudCBub2NwIG5vY3Njb3BldGFnIG5vY3Njb3BldmVyYm9zZSBub2NzdCBub2NzdmVyYiBub2RlY28gbm9kZWxjb21iaW5lIG5vZGcgbm9kaWZmIG5vZGlncmFwaCBub2Rpc2FibGUgbm9lYSBub2ViIG5vZWQgbm9lZGNvbXBhdGlibGUgbm9layBub2VuZG9mbGluZSBub2VvbCBub2VxdWFsYWx3YXlzIG5vZXJyb3JiZWxscyBub2VzY2tleXMgbm9ldCBub2V4IG5vZXhwYW5kdGFiIG5vZXhyYyBub2ZlbiBub2ZrIG5vZmttYXAgbm9mb2xkZW5hYmxlIG5vZ2Qgbm9nZGVmYXVsdCBub2d1aXB0eSBub2hpZCBub2hpZGRlbiBub2hrIG5vaGttYXAgbm9oa21hcHAgbm9oa3Agbm9obHMgbm9obHNlYXJjaCBub2ljIG5vaWNvbiBub2lnbm9yZWNhc2Ugbm9pbSBub2ltYyBub2ltY21kbGluZSBub2ltZCBub2luY3NlYXJjaCBub2luZiBub2luZmVyY2FzZSBub2luc2VydG1vZGUgbm9pcyBub2pvaW5zcGFjZXMgbm9qcyBub2xhenlyZWRyYXcgbm9sYnIgbm9saW5lYnJlYWsgbm9saXNwIG5vbGlzdCBub2xvYWRwbHVnaW5zIG5vbHBsIG5vbHogbm9tYSBub21hZ2ljIG5vbWggbm9tbCBub21vZCBub21vZGVsaW5lIG5vbW9kaWZpYWJsZSBub21vZGlmaWVkIG5vbW9yZSBub21vdXNlZiBub21vdXNlZm9jdXMgbm9tb3VzZWhpZGUgbm9udSBub251bWJlciBub3Bhc3RlIG5vcGkgbm9wcmVzZXJ2ZWluZGVudCBub3ByZXZpZXd3aW5kb3cgbm9wcm9tcHQgbm9wdncgbm9yZWFkb25seSBub3JlbWFwIG5vcmVzdG9yZXNjcmVlbiBub3JldmlucyBub3JpIG5vcmlnaHRsZWZ0IG5vcmlnaHRsZWZ0Y21kIG5vcmwgbm9ybGMgbm9ybyBub3JzIG5vcnUgbm9ydWxlciBub3NiIG5vc2Mgbm9zY2Igbm9zY3JvbGxiaW5kIG5vc2NzIG5vc2VjdXJlIG5vc2Z0IG5vc2hlbGxzbGFzaCBub3NoZWxsdGVtcCBub3NoaWZ0cm91bmQgbm9zaG9ydG5hbWUgbm9zaG93Y21kIG5vc2hvd2Z1bGx0YWcgbm9zaG93bWF0Y2ggbm9zaG93bW9kZSBub3NpIG5vc20gbm9zbWFydGNhc2Ugbm9zbWFydGluZGVudCBub3NtYXJ0dGFiIG5vc21kIG5vc24gbm9zb2wgbm9zcGVsbCBub3NwbGl0YmVsb3cgbm9zcGxpdHJpZ2h0IG5vc3ByIG5vc3Igbm9zc2wgbm9zdGEgbm9zdGFydG9mbGluZSBub3N0bXAgbm9zd2FwZmlsZSBub3N3ZiBub3RhIG5vdGFnYnNlYXJjaCBub3RhZ3JlbGF0aXZlIG5vdGFnc3RhY2sgbm90Ymkgbm90YmlkaSBub3RicyBub3Rlcm1iaWRpIG5vdGVyc2Ugbm90ZXh0YXV0byBub3RleHRtb2RlIG5vdGYgbm90Z3N0IG5vdGlsZGVvcCBub3RpbWVvdXQgbm90aXRsZSBub3RvIG5vdG9wIG5vdHIgbm90dGltZW91dCBub3R0eWJ1aWx0aW4gbm90dHlmYXN0IG5vdHggbm92YiBub3Zpc3VhbGJlbGwgbm93YSBub3dhcm4gbm93YiBub3dlaXJkaW52ZXJ0IG5vd2ZoIG5vd2lsZG1lbnUgbm93aW5maXhoZWlnaHQgbm93aXYgbm93bW51IG5vd3JhcCBub3dyYXBzY2FuIG5vd3JpdGUgbm93cml0ZWFueSBub3dyaXRlYmFja3VwIG5vd3MgCg==