ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvemlwLnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQvemlwLnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTFiMWExCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9hdXRvbG9hZC96aXAudmltCkBAIC0wLDAgKzEsMjI2IEBACisiIHppcC52aW06IEhhbmRsZXMgYnJvd3NpbmcgemlwZmlsZXMKKyIgICAgICAgICAgICBBVVRPTE9BRCBQT1JUSU9OCisiIERhdGU6CQkJU2VwIDE2LCAyMDA1CisiIFZlcnNpb246CQkyCisiIE1haW50YWluZXI6CUNoYXJsZXMgRSBDYW1wYmVsbCwgSnIgPGRyY2hpcE5PU1BBTSBhdCBjYW1wYmVsbGZhbWlseSBkb3QgYml6PgorIiBMaWNlbnNlOgkJVmltIExpY2Vuc2UgIChzZWUgdmltJ3MgOmhlbHAgbGljZW5zZSkKKyIgQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDIwMDUgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIHt7ezEKKyIgICAgICAgICAgICAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkIHRvIHVzZSBhbmQgZGlzdHJpYnV0ZSB0aGlzIGNvZGUsCisiICAgICAgICAgICAgICAgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQKKyIgICAgICAgICAgICAgICBub3RpY2UgaXMgY29waWVkIHdpdGggaXQuIExpa2UgYW55dGhpbmcgZWxzZSB0aGF0J3MgZnJlZSwKKyIgICAgICAgICAgICAgICB6aXBQbHVnaW4udmltIGlzIHByb3ZpZGVkICphcyBpcyogYW5kIGNvbWVzIHdpdGggbm8gd2FycmFudHkKKyIgICAgICAgICAgICAgICBvZiBhbnkga2luZCwgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLiBCeSB1c2luZyB0aGlzCisiICAgICAgICAgICAgICAgcGx1Z2luLCB5b3UgYWdyZWUgdGhhdCBpbiBubyBldmVudCB3aWxsIHRoZSBjb3B5cmlnaHQKKyIgICAgICAgICAgICAgICBob2xkZXIgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyByZXN1bHRpbmcgZnJvbSB0aGUgdXNlCisiICAgICAgICAgICAgICAgb2YgdGhpcyBzb2Z0d2FyZS4KKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgSW5pdGlhbGl6YXRpb246IHt7ezEKK2xldCBzOmtlZXBjcG89ICZjcG8KK3NldCBjcG8mdmltCitpZiBleGlzdHMoImc6bG9hZGVkX3ppcCIpCisgZmluaXNoCitlbmRpZgorCitsZXQgZzpsb2FkZWRfemlwPSAidjIiCisKKyIgLS0tLS0tLS0tLS0tLS0tLQorIiAgRnVuY3Rpb25zOiB7e3sxCisiIC0tLS0tLS0tLS0tLS0tLS0KKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIgemlwI0Jyb3dzZToge3t7MgorZnVuISB6aXAjQnJvd3NlKHppcGZpbGUpCisiICBjYWxsIERmdW5jKCJ6aXAjQnJvd3NlKHppcGZpbGU8Ii5hOnppcGZpbGUuIj4pIikKKworICAiIHNhbml0eSBjaGVja3MKKyAgaWYgIWV4ZWN1dGFibGUoInVuemlwIikKKyAgIGVjaG9obCBFcnJvciB8IGVjaG8gIioqKmVycm9yKioqICh6aXAjQnJvd3NlKSB1bnppcCBub3QgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtIgorICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQorIiAgIGNhbGwgRHJldCgiemlwI0Jyb3dzZSIpCisgICByZXR1cm4KKyAgZW5kaWYKKyAgaWYgIWZpbGVyZWFkYWJsZShhOnppcGZpbGUpCisgICBlY2hvaGwgRXJyb3IgfCBlY2hvICIqKiplcnJvcioqKiAoemlwI0Jyb3dzZSkgRmlsZSBub3QgcmVhZGFibGU8Ii5hOnppcGZpbGUuIj4iIHwgZWNob2hsIE5vbmUKKyAgIGNhbGwgaW5wdXRzYXZlKCl8Y2FsbCBpbnB1dCgiUHJlc3MgPGNyPiB0byBjb250aW51ZSIpfGNhbGwgaW5wdXRyZXN0b3JlKCkKKyIgICBjYWxsIERyZXQoInppcCNCcm93c2UiKQorICAgcmV0dXJuCisgIGVuZGlmCisgIGlmICZtYSAhPSAxCisgICBzZXQgbWEKKyAgZW5kaWYKKyAgbGV0IHc6emlwZmlsZT0gYTp6aXBmaWxlCisKKyAgc2V0bG9jYWwgbm9zd2FwZmlsZQorICBzZXRsb2NhbCBidWZ0eXBlPW5vZmlsZQorICBzZXRsb2NhbCBidWZoaWRkZW49aGlkZQorICBzZXRsb2NhbCBub2J1Zmxpc3RlZAorICBzZXRsb2NhbCBub3dyYXAKKyAgc2V0IGZ0PXRhcgorCisgICIgZ2l2ZSBoZWFkZXIKKyAgZXhlICIkcHV0ID0nIi4nXCInLiIgemlwLnZpbSB2ZXJzaW9uICIuZzpsb2FkZWRfemlwLiInIgorICBleGUgIiRwdXQgPSciLidcIicuIiBCcm93c2luZyB6aXBmaWxlICIuYTp6aXBmaWxlLiInIgorICBleGUgIiRwdXQgPSciLidcIicuIiBTZWxlY3QgYSBmaWxlIHdpdGggY3Vyc29yIGFuZCBwcmVzcyBFTlRFUiIuIiciCisgICRwdXQgPScnCisgIDBkCisgICQKKworICBleGUgInNpbGVudCByISB1bnppcCAtbCAiLmE6emlwZmlsZQorICAkZAorICBzaWxlbnQgNCwkdi9eXHNcK1xkXCtcc1x7MCw1fVxkL2QKKyAgc2lsZW50ICA0LCRzL15cJSguKlwpXHNcK1woXFNcKS9cMS8KKworICBzZXRsb2NhbCBub21hIG5vbW9kIHJvCisgIG5vcmVtYXAgPHNpbGVudD4gPGJ1ZmZlcj4gPGNyPiA6Y2FsbCA8U0lEPlppcEJyb3dzZVNlbGVjdCgpPGNyPgorCisiICBjYWxsIERyZXQoInppcCNCcm93c2UiKQorZW5kZnVuCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIFppcEJyb3dzZVNlbGVjdDoge3t7MgorZnVuISBzOlppcEJyb3dzZVNlbGVjdCgpCisiICBjYWxsIERmdW5jKCJaaXBCcm93c2VTZWxlY3QoKSB6aXBmaWxlPCIudzp6aXBmaWxlLiI+IikKKyAgbGV0IGZuYW1lPSBnZXRsaW5lKCIuIikKKworICAiIHNhbml0eSBjaGVjaworICBpZiBmbmFtZSA9fiAnXiInCisiICAgY2FsbCBEcmV0KCJaaXBCcm93c2VTZWxlY3QiKQorICAgcmV0dXJuCisgIGVuZGlmCisgIGlmIGZuYW1lID1+ICcvJCcKKyAgIGVjaG9obCBFcnJvciB8IGVjaG8gIioqKmVycm9yKioqICh6aXAjQnJvd3NlKSBQbGVhc2Ugc3BlY2lmeSBhIGZpbGUsIG5vdCBhIGRpcmVjdG9yeSIgfCBlY2hvaGwgTm9uZQorICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQorIiAgIGNhbGwgRHJldCgiWmlwQnJvd3NlU2VsZWN0IikKKyAgIHJldHVybgorICBlbmRpZgorCisiICBjYWxsIERlY2hvKCJmbmFtZTwiLmZuYW1lLiI+IikKKworICAiIGdldCB6aXBmaWxlIHRvIHRoZSBuZXctd2luZG93CisgIGxldCB6aXBmaWxlPSBzdWJzdGl0dXRlKHc6emlwZmlsZSwnLnppcCQnLCcnLCdlJykKKworICBuZXcKKyAgd2luY21kIF8KKyAgZXhlICJlIHppcGZpbGU6Ii56aXBmaWxlLic6Jy5mbmFtZQorICBmaWxldHlwZSBkZXRlY3QKKworIiAgY2FsbCBEcmV0KCJaaXBCcm93c2VTZWxlY3QiKQorZW5kZnVuCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIHppcCNSZWFkOiB7e3syCitmdW4hIHppcCNSZWFkKGZuYW1lLG1vZGUpCisiICBjYWxsIERmdW5jKCJ6aXAjUmVhZChmbmFtZTwiLmE6Zm5hbWUuIj4sbW9kZT0iLmE6bW9kZS4iKSIpCisgIGxldCB6aXBmaWxlID0gc3Vic3RpdHV0ZShhOmZuYW1lLCd6aXBmaWxlOlwoLlx7LX1cKTouKiQnLCdcMScsJycpCisgIGxldCBmbmFtZSAgID0gc3Vic3RpdHV0ZShhOmZuYW1lLCd6aXBmaWxlOi5cey19OlwoLipcKSQnLCdcMScsJycpCisiICBjYWxsIERlY2hvKCJ6aXBmaWxlPCIuemlwZmlsZS4iPiBmbmFtZTwiLmZuYW1lLiI+IikKKworICBleGUgInIhIHVuemlwIC1wICIuemlwZmlsZS4iICIuZm5hbWUKKworICAiIGNsZWFudXAKKyAgMGQKKyAgc2V0IG5vbW9kCisKKyIgIGNhbGwgRHJldCgiemlwI1JlYWQiKQorZW5kZnVuCisKKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiIHppcCNXcml0ZToge3t7MgorZnVuISB6aXAjV3JpdGUoZm5hbWUpCisiICBjYWxsIERmdW5jKCJ6aXAjV3JpdGUoZm5hbWU8Ii5hOmZuYW1lLiIpIikKKworICAiIHNhbml0eSBjaGVja3MKKyAgaWYgIWV4ZWN1dGFibGUoInppcCIpCisgICBlY2hvaGwgRXJyb3IgfCBlY2hvICIqKiplcnJvcioqKiAoemlwI1dyaXRlKSBzb3JyeSwgeW91ciBzeXN0ZW0gZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSB0aGUgemlwIHBnbSIgfCBlY2hvaGwgTm9uZQorICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQorIiAgIGNhbGwgRHJldCgiemlwI1dyaXRlIikKKyAgIHJldHVybgorICBlbmRpZgorICBpZiAhZXhpc3RzKCIqbWtkaXIiKQorICAgZWNob2hsIEVycm9yIHwgZWNobyAiKioqZXJyb3IqKiogKHppcCNXcml0ZSkgc29ycnksIG1rZGlyKCkgZG9lc24ndCB3b3JrIG9uIHlvdXIgc3lzdGVtIiB8IGVjaG9obCBOb25lCisgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCisiICAgY2FsbCBEcmV0KCJ6aXAjV3JpdGUiKQorICAgcmV0dXJuCisgIGVuZGlmCisKKyAgbGV0IGN1cmRpcj0gZ2V0Y3dkKCkKKyAgbGV0IHRtcGRpcj0gdGVtcG5hbWUoKQorIiAgY2FsbCBEZWNobygib3JpZyB0ZW1wbmFtZTwiLnRtcGRpci4iPiIpCisgIGlmIHRtcGRpciA9fiAnXC4nCisgICBsZXQgdG1wZGlyPSBzdWJzdGl0dXRlKHRtcGRpciwnXC5bXi5dKiQnLCcnLCdlJykKKyAgZW5kaWYKKyIgIGNhbGwgRGVjaG8oInRtcGRpcjwiLnRtcGRpci4iPiIpCisgIGNhbGwgbWtkaXIodG1wZGlyLCJwIikKKworICAiIGF0dGVtcHQgdG8gY2hhbmdlIHRvIHRoZSBpbmRpY2F0ZWQgZGlyZWN0b3J5CisgIHRyeQorICAgZXhlICJjZCAiLmVzY2FwZSh0bXBkaXIsJyBcJykKKyAgY2F0Y2ggL15WaW1cJSgoXGFcKylcKVw9OkUzNDQvCisgICBlY2hvaGwgRXJyb3IgfCBlY2hvICIqKiplcnJvcioqKiAoemlwI1dyaXRlKSBjYW5ub3QgY2QgdG8gdGVtcG9yYXJ5IGRpcmVjdG9yeSIgfCBFY2hvaGwgTm9uZQorICAgY2FsbCBpbnB1dHNhdmUoKXxjYWxsIGlucHV0KCJQcmVzcyA8Y3I+IHRvIGNvbnRpbnVlIil8Y2FsbCBpbnB1dHJlc3RvcmUoKQorIiAgIGNhbGwgRHJldCgiemlwI1dyaXRlIikKKyAgIHJldHVybgorICBlbmR0cnkKKyIgIGNhbGwgRGVjaG8oImN1cnJlbnQgZGlyZWN0b3J5IG5vdzogIi5nZXRjd2QoKSkKKworICAiIHBsYWNlIHRlbXBvcmFyeSBmaWxlcyB1bmRlciAuLi4vX1pJUFZJTV8vCisgIGlmIGlzZGlyZWN0b3J5KCJfWklQVklNXyIpCisgICBjYWxsIHM6Um1kaXIoIl9aSVBWSU1fIikKKyAgZW5kaWYKKyAgY2FsbCBta2RpcigiX1pJUFZJTV8iKQorICBjZCBfWklQVklNXworIiAgY2FsbCBEZWNobygiY3VycmVudCBkaXJlY3Rvcnkgbm93OiAiLmdldGN3ZCgpKQorCisgIGxldCB6aXBmaWxlID0gc3Vic3RpdHV0ZShhOmZuYW1lLCd6aXBmaWxlOlwoLlx7LX1cKTouKiQnLCdcMScsJycpCisgIGxldCBmbmFtZSAgID0gc3Vic3RpdHV0ZShhOmZuYW1lLCd6aXBmaWxlOi5cey19OlwoLipcKSQnLCdcMScsJycpCisgIGxldCBkaXJwYXRoID0gc3Vic3RpdHV0ZShmbmFtZSwnL1teL11cKyQnLCcnLCdlJykKKyAgaWYgemlwZmlsZSAhfiAnLycKKyAgIGxldCB6aXBmaWxlPSBjdXJkaXIuJy8nLnppcGZpbGUKKyAgZW5kaWYKKyIgIGNhbGwgRGVjaG8oInppcGZpbGU8Ii56aXBmaWxlLiI+IGZuYW1lPCIuZm5hbWUuIj4iKQorCisgIGNhbGwgbWtkaXIoZGlycGF0aCwicCIpCisgIGV4ZSAidyEgIi5mbmFtZQorICBpZiBleGVjdXRhYmxlKCJjeWdwYXRoIikKKyAgIGxldCBkaXJwYXRoID0gc3Vic3RpdHV0ZShzeXN0ZW0oImN5Z3BhdGggIi5kaXJwYXRoKSwnXG4nLCcnLCdlJykKKyAgIGxldCB6aXBmaWxlID0gc3Vic3RpdHV0ZShzeXN0ZW0oImN5Z3BhdGggIi56aXBmaWxlKSwnXG4nLCcnLCdlJykKKyAgZW5kaWYKKworIiAgY2FsbCBEZWNobygiemlwIC11ICIuemlwZmlsZS4iLnppcCAiLmZuYW1lKQorICBjYWxsIHN5c3RlbSgiemlwIC11ICIuemlwZmlsZS4iLnppcCAiLmZuYW1lKQorICBpZiB2OnNoZWxsX2Vycm9yICE9IDAKKyAgIGVjaG9obCBFcnJvciB8IGVjaG8gIioqKmVycm9yKioqICh6aXAjV3JpdGUpIHNvcnJ5LCB1bmFibGUgdG8gdXBkYXRlICIuemlwZmlsZS4iIHdpdGggIi5mbmFtZSB8IGVjaG9obCBOb25lCisgICBjYWxsIGlucHV0c2F2ZSgpfGNhbGwgaW5wdXQoIlByZXNzIDxjcj4gdG8gY29udGludWUiKXxjYWxsIGlucHV0cmVzdG9yZSgpCisgIGVuZGlmCisgIAorICAiIGNsZWFudXAgYW5kIHJlc3RvcmUgY3VycmVudCBkaXJlY3RvcnkKKyAgY2QgLi4KKyAgY2FsbCBzOlJtZGlyKCJfWklQVklNXyIpCisgIGV4ZSAiY2QgIi5lc2NhcGUoY3VyZGlyLCcgXCcpCisgIHNldGxvY2FsIG5vbW9kCisKKyIgIGNhbGwgRHJldCgiemlwI1dyaXRlIikKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBSbWRpcjoge3t7MgorZnVuISBzOlJtZGlyKGZuYW1lKQorIiAgY2FsbCBEZnVuYygiUm1kaXIoZm5hbWU8Ii5hOmZuYW1lLiI+KSIpCisgIGlmIGhhcygidW5peCIpCisgICBjYWxsIHN5c3RlbSgiL2Jpbi9ybSAtcmYgIi5hOmZuYW1lKQorICBlbHNlaWYgaGFzKCJ3aW4zMiIpIHx8IGhhcygid2luOTUiKSB8fCBoYXMoIndpbjY0IikgfHwgaGFzKCJ3aW4xNiIpCisgICBpZiAmc2hlbGwgPX4/ICJzaCQiCisgICAgY2FsbCBzeXN0ZW0oIi9iaW4vcm0gLXJmICIuYTpmbmFtZSkKKyAgIGVsc2UKKyAgICBjYWxsIHN5c3RlbSgiZGVsIC9TICIuYTpmbmFtZSkKKyAgIGVuZGlmCisgIGVuZGlmCisiICBjYWxsIERyZXQoIlJtZGlyIikKK2VuZGZ1bgorCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBNb2RlbGluZXMgQW5kIFJlc3RvcmF0aW9uOiB7e3sxCitsZXQgJmNwbz0gczprZWVwY3BvCit1bmxldCBzOmtlZXBjcG8KKyIgdmltOnRzPTggZmRtPW1hcmtlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9jb21waWxlci9lcnVieS52aW0gYi9ydW50aW1lL2NvbXBpbGVyL2VydWJ5LnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDg1YmYxCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9jb21waWxlci9lcnVieS52aW0KQEAgLTAsMCArMSwzOCBAQAorIiBWaW0gY29tcGlsZXIgZmlsZQorIiBMYW5ndWFnZToJZVJ1YnkKKyIgTWFpbnRhaW5lcjoJRG91ZyBLZWFybnMgPGRqa2VhMiBhdCBndXMuZ3NjaXQubW9uYXNoLmVkdS5hdT4KKyIgSW5mbzoJCSRJZCQKKyIgVVJMOgkJaHR0cDovL3ZpbS1ydWJ5LnNvdXJjZWZvcmdlLm5ldAorIiBBbm9uIENWUzoJU2VlIGFib3ZlIHNpdGUKKyIgTGljZW5jZToJR1BMIChodHRwOi8vd3d3LmdudS5vcmcpCisiIERpc2NsYWltZXI6CisiICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisiICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaWYgZXhpc3RzKCJjdXJyZW50X2NvbXBpbGVyIikKKyAgZmluaXNoCitlbmRpZgorbGV0IGN1cnJlbnRfY29tcGlsZXIgPSAiZXJ1YnkiCisKK2lmIGV4aXN0cygiOkNvbXBpbGVyU2V0IikgIT0gMgkJIiBvbGRlciBWaW0gYWx3YXlzIHVzZWQgOnNldGxvY2FsCisgIGNvbW1hbmQgLW5hcmdzPSogQ29tcGlsZXJTZXQgc2V0bG9jYWwgPGFyZ3M+CitlbmRpZgorCitsZXQgczpjcG9fc2F2ZSA9ICZjcG8KK3NldCBjcG8tPUMKKworQ29tcGlsZXJTZXQgbWFrZXByZz1lcnVieQorCitDb21waWxlclNldCBlcnJvcmZvcm1hdD1lcnVieTpcICVmOiVsOiVtLAorCQkgICAgICAgXCVFJWY6JWw6XCAlbSwKKwkJICAgICAgIFwlLVolcF4sCisJCSAgICAgICBcJUMlbSwKKwkJICAgICAgIFwlLUclLiUjCisKK2xldCAmY3BvID0gczpjcG9fc2F2ZQordW5sZXQgczpjcG9fc2F2ZQorCisiIHZpbTogbm93cmFwIHN3PTIgc3RzPTIgdHM9OCBmZj11bml4OgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZXZhbC50eHQgYi9ydW50aW1lL2RvYy9ldmFsLnR4dAppbmRleCA2ZTNkMjZjLi4zNjhiNDQ0IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ldmFsLnR4dAorKysgYi9ydW50aW1lL2RvYy9ldmFsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMTIKKypldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMTUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTQ5NzIsNyArNDk3Miw3IEBACiAJICAgZWNobyAiRG9uZSEiCiAJZW5kZnVuY3Rpb24KIAotVGhlIGZpbGUgbmFtZSBhbmQgdGhlIG5hbWUgdXNlZCBiZWZvcmUgdGhlIGNvbG9uIGluIHRoZSBmdW5jdGlvbiBtdXN0IG1hdGNoCitUaGUgZmlsZSBuYW1lIGFuZCB0aGUgbmFtZSB1c2VkIGJlZm9yZSB0aGUgIyBpbiB0aGUgZnVuY3Rpb24gbXVzdCBtYXRjaAogZXhhY3RseSwgYW5kIHRoZSBkZWZpbmVkIGZ1bmN0aW9uIG11c3QgaGF2ZSB0aGUgbmFtZSBleGFjdGx5IGFzIGl0IHdpbGwgYmUKIGNhbGxlZC4KIApAQCAtNDk4Myw5ICs0OTgzLDYgQEAKIAogVmltIHdpbGwgbG9vayBmb3IgdGhlIGZpbGUgImF1dG9sb2FkL2Zvby9iYXIudmltIiBpbiAncnVudGltZXBhdGgnLgogCi1UaGUgbmFtZSBiZWZvcmUgdGhlIGZpcnN0IGNvbG9uIG11c3QgYmUgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9uZywKLW90aGVyd2lzZSBpdCBsb29rcyBsaWtlIGEgc2NvcGUsIHN1Y2ggYXMgInM6Ii4KLQogVGhpcyBhbHNvIHdvcmtzIHdoZW4gcmVhZGluZyBhIHZhcmlhYmxlIHRoYXQgaGFzIG5vdCBiZWVuIHNldCB5ZXQ6ID4KIAogCTpsZXQgbCA9IGZvbyNiYXIjbHZhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZmlsZXR5cGUudHh0IGIvcnVudGltZS9kb2MvZmlsZXR5cGUudHh0CmluZGV4IGU2OGI3NWEuLjA3ZDQ0MjUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2ZpbGV0eXBlLnR4dAorKysgYi9ydW50aW1lL2RvYy9maWxldHlwZS50eHQKQEAgLTEsNCArMSw0IEBACi0qZmlsZXR5cGUudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgQXVnIDMwCisqZmlsZXR5cGUudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDE2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xODQsNyArMTg0LDggQEAKIDwgIDMuIFRvIHVzZSB0aGUgbmV3IGZpbGV0eXBlIGRldGVjdGlvbiB5b3UgbXVzdCByZXN0YXJ0IFZpbS4KIAogICAgVGhlIGZpbGVzIGluIHRoZSAiZnRkZXRlY3QiIGRpcmVjdG9yeSBhcmUgdXNlZCBhZnRlciBhbGwgdGhlIGRlZmF1bHQKLSAgIGNoZWNrcywgdGh1cyB0aGV5IGNhbiBvdmVycnVsZSBhIHByZXZpb3VzbHkgZGV0ZWN0ZWQgZmlsZSB0eXBlLgorICAgY2hlY2tzLCB0aHVzIHRoZXkgY2FuIG92ZXJydWxlIGEgcHJldmlvdXNseSBkZXRlY3RlZCBmaWxlIHR5cGUuICBCdXQgeW91CisgICBjYW4gYWxzbyB1c2UgfDpzZXRmaWxldHlwZXwgdG8ga2VlcCBhIHByZXZpb3VzbHkgZGV0ZWN0ZWQgZmlsZXR5cGUuCiAKIEIuIElmIHlvdSB3YW50IHRvIGRldGVjdCB5b3VyIGZpbGUgYWZ0ZXIgdGhlIGRlZmF1bHQgZmlsZSB0eXBlIGNoZWNrcy4KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFncyBiL3J1bnRpbWUvZG9jL3RhZ3MKaW5kZXggNGRjMDQxNC4uNDUxMjEyMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFncworKysgYi9ydW50aW1lL2RvYy90YWdzCkBAIC01Mjk0LDcgKzUyOTQsNiBAQAogaGVicmV3LnR4dAloZWJyZXcudHh0CS8qaGVicmV3LnR4dCoKIGhlbHAJdmFyaW91cy50eHQJLypoZWxwKgogaGVscC1jb250ZXh0CWhlbHAudHh0CS8qaGVscC1jb250ZXh0KgotaGVscC10YWdzCXRhZ3MJMQogaGVscC10cmFuc2xhdGVkCXZhcmlvdXMudHh0CS8qaGVscC10cmFuc2xhdGVkKgogaGVscC14dGVybS13aW5kb3cJdmFyaW91cy50eHQJLypoZWxwLXh0ZXJtLXdpbmRvdyoKIGhlbHAudHh0CWhlbHAudHh0CS8qaGVscC50eHQqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IDY1ZTc2YjkuLmNiZDc3ZDAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IFNlcCAxNAorKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IFNlcCAxNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zMCw2ICszMCw4IEBACiAJCQkJCQkJKmtub3duLWJ1Z3MqCiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBLbm93biBidWdzIGFuZCBjdXJyZW50IHdvcmsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorVGVzdDExIGZhaWxzIHNvbWV0aW1lcy4gKGF0aGVuYSwgaHVnZSBmZWF0dXJlcykKKwogY2NvbXBsZXRlOgogLSBIb3cgdG8gdXNlIGEgcG9wdXAgbWVudT8KIC0gV2hlbiBhIHR5cGVkZWYgb3Igc3RydWN0IGlzIGxvY2FsIHRvIGEgZmlsZSBvbmx5IHVzZSBpdCBpbiB0aGF0IGZpbGU/CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKaW5kZXggY2UwYjMyYi4uZTRlOTgxYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMTMKKyp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBTZXAgMTUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTEzNjEsNCArMTM2MSw3IEBACiBHVUk6IFdoZW4gc2Nyb2xsaW5nIHdpdGggdGhlIHNjcm9sbGJhciBhbmQgdGhlcmUgaXMgYSBsaW5lIHRoYXQgZG9lc24ndCBmaXQKIHJlZHJhd2luZyBtYXkgZmFpbC4gIE1ha2Ugc3VyZSB3X3NraXBjb2wgaXMgdmFsaWQgYmVmb3JlIHJlZHJhd2luZy4KIAorImRGeGQ7IiBkZWxldGVkIHRoZSBjaGFyYWN0ZXIgdW5kZXIgdGhlIGN1cnNvciwgImQ7IiBkaWRuJ3QgcmVtZW1iZXIgdGhlCitleGNsdXNpdmVuZXNzIG9mIHRoZSBtb3Rpb24uCisKICB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy96aXAudHh0IGIvcnVudGltZS9kb2MvemlwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTk1NDYwCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9kb2MvemlwLnR4dApAQCAtMCwwICsxLDMxIEBACisqemlwLnR4dCoJWmlwIEZpbGUgSW50ZXJmYWNlCQkJCVNlcCAxNiwgMjAwNQorCitBdXRob3I6ICBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4gIDxOZHJPY2hpcEBTY2FtcGJlbGxQZmFtaWx5LkFiaXpNPgorCSAgKHJlbW92ZSBOT1NQQU0gZnJvbSBDYW1wYmVsbCdzIGVtYWlsIGZpcnN0KQorQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDIwMDUgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIHt7ezEgKnppcC1jb3B5cmlnaHQqCisgICAgICAgICAgICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgY29kZSwKKwkgICAgICB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgcHJvdmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodAorCSAgICAgIG5vdGljZSBpcyBjb3BpZWQgd2l0aCBpdC4gTGlrZSBhbnl0aGluZyBlbHNlIHRoYXQncyBmcmVlLAorCSAgICAgIHppcC52aW0gYW5kIHppcFBsdWdpbi52aW0gYXJlIHByb3ZpZGVkICphcyBpcyogYW5kIGNvbWVzIHdpdGggbm8KKwkgICAgICB3YXJyYW50eSBvZiBhbnkga2luZCwgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLiBCeSB1c2luZyB0aGlzCisJICAgICAgcGx1Z2luLCB5b3UgYWdyZWUgdGhhdCBpbiBubyBldmVudCB3aWxsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGJlCisJICAgICAgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyByZXN1bHRpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorMS4gQ29udGVudHMJCQkJCSp6aXAqICp6aXAtY29udGVudHMqCisgICAxLiBDb250ZW50cy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufHppcC1jb250ZW50c3wKKyAgIDIuIFVzYWdlLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58emlwLXVzYWdlfAorICAgMy4gSGlzdG9yeS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnx6aXAtaGlzdG9yeXwKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisyLiBVc2FnZQkJCQkJKnppcC11c2FnZSogKnppcC1tYW51YWwqCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorMy4gSGlzdG9yeQkJCQkJKnppcC1oaXN0b3J5KgorICAgdjIgU2VwIDE2LCAyMDA1ICogc2lsZW5jZWQgc29tZSBjb21tYW5kcyAoYXZvaWRpbmcgaGl0LWVudGVyIHByb21wdCkKKyAgICAgICAgICAgICAgICAgICAqIGJlZ2FuIHRlc3RpbmcgdW5kZXIgV2luZG93czsgd29ya3MgdGh1cyBmYXIKKwkJICAgKiBmaWxldHlwZSBkZXRlY3Rpb24gZml4ZWQKKyAgIHYxIFNlcCAxNSwgMjAwNSAqIEluaXRpYWwgcmVsZWFzZSwgaGFkIGJyb3dzaW4sIHJlYWRpbmcsIGFuZCB3cml0aW5nCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQordmltOnR3PTc4OnRzPTg6ZnQ9aGVscApkaWZmIC0tZ2l0IGEvcnVudGltZS9mdHBsdWdpbi9ydWJ5LnZpbSBiL3J1bnRpbWUvZnRwbHVnaW4vcnVieS52aW0KaW5kZXggZTIxYWZlZS4uYjI2MjI1OCAxMDA2NDQKLS0tIGEvcnVudGltZS9mdHBsdWdpbi9ydWJ5LnZpbQorKysgYi9ydW50aW1lL2Z0cGx1Z2luL3J1YnkudmltCkBAIC0xLDE0ICsxLDEyNSBAQAogIiBWaW0gZmlsZXR5cGUgcGx1Z2luCi0iIExhbmd1YWdlOiAgICAgUnVieQotIiBNYWludGFpbmVyOiAgIEdhdmluIFNpbmNsYWlyIDxnc2luY2xhaXJAc295YWJlYW4uY29tLmF1PgotIiBMYXN0IENoYW5nZTogIDIwMDIvMDgvMTIKLSIgVVJMOiB3d3cuc295YWJlYW4uY29tLmF1L2dhdmluL3ZpbS9pbmRleC5odG1sCisiIExhbmd1YWdlOglSdWJ5CisiIE1haW50YWluZXI6CUdhdmluIFNpbmNsYWlyIDxnc2luY2xhaXIgYXQgc295YWJlYW4uY29tLmF1PgorIiBJbmZvOiAgICAgICAgICRJZCQKKyIgVVJMOiAgICAgICAgICBodHRwOi8vdmltLXJ1Ynkuc291cmNlZm9yZ2UubmV0CisiIEFub24gQ1ZTOiAgICAgU2VlIGFib3ZlIHNpdGUKKyIgTGljZW5jZTogICAgICBHUEwgKGh0dHA6Ly93d3cuZ251Lm9yZykKKyIgRGlzY2xhaW1lcjoKKyIgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisiICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisiICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyIgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIgorIiBPcmlnaW5hbCBtYXRjaGl0IHN1cHBvcnQgdGhhbmtzIHRvIE5lZCBLb256LiAgU2VlIGhpcyBmdHBsdWdpbi9ydWJ5LnZpbSBhdAorIiAgIGh0dHA6Ly9iaWtlLW5vbWFkLmNvbS92aW0vcnVieS52aW0uCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIiBPbmx5IGRvIHRoaXMgd2hlbiBub3QgZG9uZSB5ZXQgZm9yIHRoaXMgYnVmZmVyCiBpZiAoZXhpc3RzKCJiOmRpZF9mdHBsdWdpbiIpKQotICAgIGZpbmlzaAorICBmaW5pc2gKIGVuZGlmCiBsZXQgYjpkaWRfZnRwbHVnaW4gPSAxCiAKLSIgVGhlcmUgYXJlIG5vIGtub3duIHNldHRpbmcgcGFydGljdWxhcmx5IGFwcHJvcHJpYXRlIGZvciBSdWJ5LiAgUGxlYXNlCi0iIGNvbnRhY3QgdGhlIG1haW50YWluZXIgaWYgeW91IHRoaW5rIG9mIHNvbWUuCitsZXQgczpjcG9fc2F2ZSA9ICZjcG8KK3NldCBjcG8mdmltCisKKyIgTWF0Y2hpdCBzdXBwb3J0CitpZiBleGlzdHMoImxvYWRlZF9tYXRjaGl0IikgJiYgIWV4aXN0cygiYjptYXRjaF93b3JkcyIpCisgIGxldCBiOm1hdGNoX2lnbm9yZWNhc2UgPSAwCisKKyAiIFRPRE86IGltcHJvdmUgb3B0aW9uYWwgZG8gbG9vcHMKKyBsZXQgYjptYXRjaF93b3JkcyA9CisgICAgXCAnXCUoJyAuCisgICAgXCAgICAgJ1wlKFwlKFwuXHxcOlw6XClccypcKVxAPCFcPFwlKGNsYXNzXHxtb2R1bGVcfGJlZ2luXHxkZWZcfGNhc2VcfGZvclx8ZG9cKVw+JyAuCisgICAgXCAgICdcfCcgLgorICAgIFwgICAgICdcJShcJSheXHxcLlwuXC5cPVx8W1wsOz0oWzw+flwqLyUhJl58Ky1dXClccypcKVxAPD1cJShpZlx8dW5sZXNzXHx1bnRpbFx8d2hpbGVcKVw+JyAuCisgICAgXCAnXCknIC4KKyAgICBcICc6JyAuCisgICAgXCAnXCUoJyAuCisgICAgXCAgICAgJ1wlKFwlKFwuXHxcOlw6XClccypcKVxAPCFcPFwlKGVsc2VcfGVsc2lmXHxlbnN1cmVcfHdoZW5cKVw+JyAuCisgICAgXCAgICdcfCcgLgorICAgIFwgICAgICdcJShcJSheXHw7XClccypcKVxAPD1cPHJlc2N1ZVw+JyAuCisgICAgXCAnXCknIC4KKyAgICBcICc6JyAuCisgICAgXCAnXCUoXCUoXC5cfFw6XDpcKVxzKlwpXEA8IVw8ZW5kXD4nCisKKyAgbGV0IGI6bWF0Y2hfc2tpcCA9CisgICAgIFwgInN5bklEYXR0cihzeW5JRChsaW5lKCcuJyksY29sKCcuJyksMCksJ25hbWUnKSA9fiAnIiAuCisgICAgIFwgIlxcPHJ1YnlcXCUoU3RyaW5nXFx8U3RyaW5nRGVsaW1pdGVyXFx8QVNDSUlDb2RlXFx8SW50ZXJwb2xhdGlvblxcfCIgLgorICAgICBcICJOb0ludGVycG9sYXRpb25cXHxFc2NhcGVcXHxDb21tZW50XFx8RG9jdW1lbnRhdGlvblxcKVxcPiciCisKK2VuZGlmCisKK3NldGxvY2FsIGZvcm1hdG9wdGlvbnMtPXQgZm9ybWF0b3B0aW9ucys9Y3JvcWwKKworc2V0bG9jYWwgaW5jbHVkZT1eXFxzKlxcPFxcKGxvYWRcXFx8XHcqcmVxdWlyZVxcKVxcPgorc2V0bG9jYWwgaW5jbHVkZWV4cHI9c3Vic3RpdHV0ZShzdWJzdGl0dXRlKHY6Zm5hbWUsJzo6JywnLycsJ2cnKSwnJCcsJy5yYicsJycpCitzZXRsb2NhbCBzdWZmaXhlc2FkZD0ucmIKKworIiBUT0RPOgorInNldGxvY2FsIGRlZmluZT1eXFxzKmRlZgorCitzZXRsb2NhbCBjb21tZW50cz06Iworc2V0bG9jYWwgY29tbWVudHN0cmluZz0jXCAlcworCitpZiAhZXhpc3RzKCJzOnJ1YnlwYXRoIikKKyAgaWYgZXhlY3V0YWJsZSgicnVieSIpCisgICAgaWYgJnNoZWxseHF1b3RlID09ICInIgorICAgICAgbGV0IHM6cnVieXBhdGggPSBzeXN0ZW0oJ3J1YnkgLWUgInB1dHMgKGJlZ2luOyByZXF1aXJlICVxe3J1YnlnZW1zfTsgR2VtLmFsbF9sb2FkX3BhdGhzOyByZXNjdWUgTG9hZEVycm9yOyBbXTsgZW5kICsgJDopLmpvaW4oJXF7LH0pIicpCisgICAgZWxzZQorICAgICAgbGV0IHM6cnVieXBhdGggPSBzeXN0ZW0oInJ1YnkgLWUgJ3B1dHMgKGJlZ2luOyByZXF1aXJlICVxe3J1YnlnZW1zfTsgR2VtLmFsbF9sb2FkX3BhdGhzOyByZXNjdWUgTG9hZEVycm9yOyBbXTsgZW5kICsgJDopLmpvaW4oJXF7LH0pJyIpCisgICAgZW5kaWYKKyAgICBsZXQgczpydWJ5cGF0aCA9IHN1YnN0aXR1dGUoczpydWJ5cGF0aCwnLC4kJywnLCwnLCcnKQorICBlbHNlCisgICAgIiBJZiB3ZSBjYW4ndCBjYWxsIHJ1YnkgdG8gZ2V0IGl0cyBwYXRoLCBqdXN0IGRlZmF1bHQgdG8gdXNpbmcgdGhlCisgICAgIiBjdXJyZW50IGRpcmVjdG9yeSBhbmQgdGhlIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgIGxldCBzOnJ1YnlwYXRoID0gIi4sLCIKKyAgZW5kaWYKK2VuZGlmCisKK2xldCAmbDpwYXRoID0gczpydWJ5cGF0aAorCitpZiBoYXMoImd1aV93aW4zMiIpICYmICFleGlzdHMoImI6YnJvd3NlZmlsdGVyIikKKyAgbGV0IGI6YnJvd3NlZmlsdGVyID0gIlJ1YnkgU291cmNlIEZpbGVzICgqLnJiKVx0Ki5yYlxuIiAuCisgICAgICAgICAgICAgICAgICAgICBcICJBbGwgRmlsZXMgKCouKilcdCouKlxuIgorZW5kaWYKKworbGV0IGI6dW5kb19mdHBsdWdpbiA9ICJzZXRsIGZvPCBpbmM8IGluZXg8IHN1YTwgZGVmPCBjb208IGNtczwgcGF0aDwgIgorICAgICAgXCAifCB1bmxldCEgYjpicm93c2VmaWx0ZXIgYjptYXRjaF9pZ25vcmVjYXNlIGI6bWF0Y2hfd29yZHMgYjptYXRjaF9za2lwIgorCitsZXQgJmNwbyA9IHM6Y3BvX3NhdmUKK3VubGV0IHM6Y3BvX3NhdmUKKworIgorIiBJbnN0cnVjdGlvbnMgZm9yIGVuYWJsaW5nICJtYXRjaGl0IiBzdXBwb3J0OgorIgorIiAxLiBMb29rIGZvciB0aGUgbGF0ZXN0ICJtYXRjaGl0IiBwbHVnaW4gYXQKKyIKKyIgICAgICAgICBodHRwOi8vd3d3LnZpbS5vcmcvc2NyaXB0cy9zY3JpcHQucGhwP3NjcmlwdF9pZD0zOQorIgorIiAgICBJdCBpcyBhbHNvIHBhY2thZ2VkIHdpdGggVmltLCBpbiB0aGUgJFZJTVJVTlRJTUUvbWFjcm9zIGRpcmVjdG9yeS4KKyIKKyIgMi4gQ29weSAibWF0Y2hpdC50eHQiIGludG8gYSAiZG9jIiBkaXJlY3RvcnkgKGUuZy4gJEhPTUUvLnZpbS9kb2MpLgorIgorIiAzLiBDb3B5ICJtYXRjaGl0LnZpbSIgaW50byBhICJwbHVnaW4iIGRpcmVjdG9yeSAoZS5nLiAkSE9NRS8udmltL3BsdWdpbikuCisiCisiIDQuIEVuc3VyZSB0aGlzIGZpbGUgKGZ0cGx1Z2luL3J1YnkudmltKSBpcyBpbnN0YWxsZWQuCisiCisiIDUuIEVuc3VyZSB5b3UgaGF2ZSB0aGlzIGxpbmUgaW4geW91ciAkSE9NRS8udmltcmM6CisiICAgICAgICAgZmlsZXR5cGUgcGx1Z2luIG9uCisiCisiIDYuIFJlc3RhcnQgVmltIGFuZCBjcmVhdGUgdGhlIG1hdGNoaXQgZG9jdW1lbnRhdGlvbjoKKyIKKyIgICAgICAgICA6aGVscHRhZ3Mgfi8udmltL2RvYworIgorIiAgICBOb3cgeW91IGNhbiBkbyAiOmhlbHAgbWF0Y2hpdCIsIGFuZCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlICIlIiBvbiBSdWJ5CisiICAgIGtleXdvcmRzLiAgVHJ5ICI6ZWNobyBiOm1hdGNoX3dvcmRzIiB0byBiZSBzdXJlLgorIgorIiBUaGFua3MgdG8gTWFyayBKLiBSZWVkIGZvciB0aGUgaW5zdHJ1Y3Rpb25zLiAgU2VlICI6aGVscCB2aW1yYyIgZm9yIHRoZQorIiBsb2NhdGlvbnMgb2YgcGx1Z2luIGRpcmVjdG9yaWVzLCBldGMuLCBhcyB0aGVyZSBhcmUgc2V2ZXJhbCBvcHRpb25zLCBhbmQgaXQKKyIgZGlmZmVycyBvbiBXaW5kb3dzLiAgRW1haWwgZ3NpbmNsYWlyQHNveWFiZWFuLmNvbS5hdSBpZiB5b3UgbmVlZCBoZWxwLgorIgorCisiIHZpbTogbm93cmFwIHN3PTIgc3RzPTIgdHM9OCBmZj11bml4OgpkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvcnVieS52aW0gYi9ydW50aW1lL2luZGVudC9ydWJ5LnZpbQppbmRleCBjZTA3OGYyLi5mZjIyYmJiIDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9ydWJ5LnZpbQorKysgYi9ydW50aW1lL2luZGVudC9ydWJ5LnZpbQpAQCAtMSwxMSArMSwyMCBAQAogIiBWaW0gaW5kZW50IGZpbGUKLSIgTGFuZ3VhZ2U6CVJ1YnkKLSIgTWFpbnRhaW5lcjoJR2F2aW4gU2luY2xhaXIgPGdzaW5jbGFpckBzb3lhYmVhbi5jb20uYXU+Ci0iIExhc3QgQ2hhbmdlOgkyMDAzIE1heSAxMQotIiBVUkw6IHd3dy5zb3lhYmVhbi5jb20uYXUvZ2F2aW4vdmltL2luZGV4Lmh0bWwKLSIgQ2hhbmdlczogKHNpbmNlIHZpbSA2LjEpCi0iICAtIGluZGVudGF0aW9uIGFmdGVyIGEgbGluZSBlbmRpbmcgaW4gY29tbWEsIGV0YywgKGV2ZW4gaW4gYSBjb21tZW50KSB3YXMKLSIgICAgYnJva2VuLCBub3cgZml4ZWQgKDIwMDIvMDgvMTQpCisiIExhbmd1YWdlOiAgICAgUnVieQorIiBNYWludGFpbmVyOiAgIEdhdmluIFNpbmNsYWlyIDxnc2luY2xhaXIgYXQgc295YWJlYW4uY29tLmF1PgorIiBEZXZlbG9wZXI6ICAgIE5pa29sYWkgV2VpYnVsbCA8c291cmNlIGF0IHBjcHBvcHBlci5vcmc+CisiIEluZm86ICAgICAgICAgJElkJAorIiBVUkw6ICAgICAgICAgIGh0dHA6Ly92aW0tcnVieS5ydWJ5Zm9yZ2Uub3JnLworIiBBbm9uIENWUzogICAgIFNlZSBhYm92ZSBzaXRlCisiIExpY2VuY2U6ICAgICAgR1BMIChodHRwOi8vd3d3LmdudS5vcmcpCisiIERpc2NsYWltZXI6CisiICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisiICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIiAwLiBJbml0aWFsaXphdGlvbiB7e3sxCisiID09PT09PT09PT09PT09PT09CiAKICIgT25seSBsb2FkIHRoaXMgaW5kZW50IGZpbGUgd2hlbiBubyBvdGhlciB3YXMgbG9hZGVkLgogaWYgZXhpc3RzKCJiOmRpZF9pbmRlbnQiKQpAQCAtMTMsNTUgKzIyLDM2MyBAQAogZW5kaWYKIGxldCBiOmRpZF9pbmRlbnQgPSAxCiAKKyIgTm93LCBzZXQgdXAgb3VyIGluZGVudGF0aW9uIGV4cHJlc3Npb24gYW5kIGtleXMgdGhhdCB0cmlnZ2VyIGl0Lgogc2V0bG9jYWwgaW5kZW50ZXhwcj1HZXRSdWJ5SW5kZW50KCkKLXNldGxvY2FsIG5vbGlzcAotc2V0bG9jYWwgbm9zbWFydGluZGVudAotc2V0bG9jYWwgYXV0b2luZGVudAotc2V0bG9jYWwgaW5kZW50a2V5cys9PWVuZCw9ZWxzZSw9ZWxzaWYsPXdoZW4sPWVuc3VyZSw9cmVzY3VlCitzZXRsb2NhbCBpbmRlbnRrZXlzPTB7LDB9LDApLDBdLCFeRixvLE8sZQorc2V0bG9jYWwgaW5kZW50a2V5cys9PWVuZCw9ZWxzaWYsPXdoZW4sPWVuc3VyZSw9cmVzY3VlLD09YmVnaW4sPT1lbmQKIAogIiBPbmx5IGRlZmluZSB0aGUgZnVuY3Rpb24gb25jZS4KIGlmIGV4aXN0cygiKkdldFJ1YnlJbmRlbnQiKQogICBmaW5pc2gKIGVuZGlmCiAKK2xldCBzOmNwb19zYXZlID0gJmNwbworc2V0IGNwbyZ2aW0KKworIiAxLiBWYXJpYWJsZXMge3t7MQorIiA9PT09PT09PT09PT0KKworIiBSZWdleCBvZiBzeW50YXggZ3JvdXAgbmFtZXMgdGhhdCBhcmUgb3IgZGVsaW1pdCBzdHJpbmcgb3IgYXJlIGNvbW1lbnRzLgorbGV0IHM6c3luZ19zdHJjb20gPSAnXDxydWJ5XCUoU3RyaW5nXHxTdHJpbmdEZWxpbWl0ZXJcfEFTQ0lJQ29kZScgLgorICAgICAgXCAnXHxJbnRlcnBvbGF0aW9uXHxOb0ludGVycG9sYXRpb25cfEVzY2FwZVx8Q29tbWVudFx8RG9jdW1lbnRhdGlvblwpXD4nCisKKyIgUmVnZXggb2Ygc3ludGF4IGdyb3VwIG5hbWVzIHRoYXQgYXJlIHN0cmluZ3Mgb3IgY29tbWVudHMuCitsZXQgczpzeW5nX3N0cmNvbTIgPSAnXDxydWJ5XCUoU3RyaW5nJyAuCisgICAgICBcICdcfEludGVycG9sYXRpb25cfE5vSW50ZXJwb2xhdGlvblx8RXNjYXBlXHxDb21tZW50XHxEb2N1bWVudGF0aW9uXClcPicKKworIiBSZWdleCBvZiBzeW50YXggZ3JvdXAgbmFtZXMgdGhhdCBhcmUgc3RyaW5ncy4KK2xldCBzOnN5bmdfc3RyaW5nID0KKyAgICAgIFwgJ1w8cnVieVwlKFN0cmluZ1x8SW50ZXJwb2xhdGlvblx8Tm9JbnRlcnBvbGF0aW9uXHxFc2NhcGVcKVw+JworCisiIFJlZ2V4IG9mIHN5bnRheCBncm91cCBuYW1lcyB0aGF0IGFyZSBzdHJpbmdzIG9yIGRvY3VtZW50YXRpb24uCitsZXQgczpzeW5nX3N0cmluZ2RvYyA9CisgIFwnXDxydWJ5XCUoU3RyaW5nXHxJbnRlcnBvbGF0aW9uXHxOb0ludGVycG9sYXRpb25cfEVzY2FwZVx8RG9jdW1lbnRhdGlvblwpXD4nCisKKyIgRXhwcmVzc2lvbiB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIHNraXAgYSBtYXRjaCB3aXRoIHNlYXJjaHBhaXIoKS4KK2xldCBzOnNraXBfZXhwciA9CisgICAgICBcICJzeW5JRGF0dHIoc3luSUQobGluZSgnLicpLGNvbCgnLicpLDApLCduYW1lJykgPX4gJyIuczpzeW5nX3N0cmNvbS4iJyIKKworIiBSZWdleCB1c2VkIGZvciB3b3JkcyB0aGF0LCBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLCBhZGQgYSBsZXZlbCBvZiBpbmRlbnQuCitsZXQgczpydWJ5X2luZGVudF9rZXl3b3JkcyA9ICdeXHMqXHpzXDxcJShtb2R1bGVcfGNsYXNzXHxkZWZcfGlmXHxmb3InIC4KKyAgICAgIFwgJ1x8d2hpbGVcfHVudGlsXHxlbHNlXHxlbHNpZlx8Y2FzZVx8d2hlblx8dW5sZXNzXHxiZWdpblx8ZW5zdXJlJyAuCisgICAgICBcICdcfHJlc2N1ZVwpXD4nIC4KKyAgICAgIFwgJ1x8XCUoWyorLyw9Oi1dXHw8PFx8Pj5cKVxzKlx6cycgLgorICAgICAgXCAgICAnXDxcJShpZlx8Zm9yXHx3aGlsZVx8dW50aWxcfGNhc2VcfHVubGVzc1x8YmVnaW5cKVw+JworCisiIFJlZ2V4IHVzZWQgZm9yIHdvcmRzIHRoYXQsIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUsIHJlbW92ZSBhIGxldmVsIG9mIGluZGVudC4KK2xldCBzOnJ1YnlfZGVpbmRlbnRfa2V5d29yZHMgPQorICAgICAgXCAnXlxzKlx6c1w8XCUoZW5zdXJlXHxlbHNlXHxyZXNjdWVcfGVsc2lmXHx3aGVuXHxlbmRcKVw+JworCisiIFJlZ2V4IHRoYXQgZGVmaW5lcyB0aGUgc3RhcnQtbWF0Y2ggZm9yIHRoZSAnZW5kJyBrZXl3b3JkLgorImxldCBzOmVuZF9zdGFydF9yZWdleCA9ICdcJSheXHxbXi5dXClcPFwlKG1vZHVsZVx8Y2xhc3NcfGRlZlx8aWZcfGZvclx8d2hpbGVcfHVudGlsXHxjYXNlXHx1bmxlc3NcfGJlZ2luXHxkb1wpXD4nCisiIFRPRE86IHRoZSBkbyBoZXJlIHNob3VsZCBiZSByZXN0cmljdGVkIHNvbWV3aGF0IChvbmx5IGF0IGVuZCBvZiBsaW5lKT8KK2xldCBzOmVuZF9zdGFydF9yZWdleCA9ICdeXHMqXHpzXDxcJShtb2R1bGVcfGNsYXNzXHxkZWZcfGlmXHxmb3InIC4KKyAgICAgIFwgJ1x8d2hpbGVcfHVudGlsXHxjYXNlXHx1bmxlc3NcfGJlZ2luXClcPicgLgorICAgICAgXCAnXHxcJShbKisvLD06LV1cfDw8XHw+PlwpXHMqXHpzJyAuCisgICAgICBcICAgICdcPFwlKGlmXHxmb3JcfHdoaWxlXHx1bnRpbFx8Y2FzZVx8dW5sZXNzXHxiZWdpblwpXD4nIC4KKyAgICAgIFwgJ1x8XDxkb1w+JworCisiIFJlZ2V4IHRoYXQgZGVmaW5lcyB0aGUgbWlkZGxlLW1hdGNoIGZvciB0aGUgJ2VuZCcga2V5d29yZC4KK2xldCBzOmVuZF9taWRkbGVfcmVnZXggPSAnXDxcJShlbnN1cmVcfGVsc2VcfFwlKFwlKF5cfDtcKVxzKlwpXEA8PVw8cmVzY3VlXD5cfHdoZW5cfGVsc2lmXClcPicKKworIiBSZWdleCB0aGF0IGRlZmluZXMgdGhlIGVuZC1tYXRjaCBmb3IgdGhlICdlbmQnIGtleXdvcmQuCitsZXQgczplbmRfZW5kX3JlZ2V4ID0gJ1wlKF5cfFteLl1cKVxAPD1cPGVuZFw+JworCisiIEV4cHJlc3Npb24gdXNlZCBmb3Igc2VhcmNocGFpcigpIGNhbGwgZm9yIGZpbmRpbmcgbWF0Y2ggZm9yICdlbmQnIGtleXdvcmQuCitsZXQgczplbmRfc2tpcF9leHByID0gczpza2lwX2V4cHIgLgorICAgICAgXCAnIHx8IChleHBhbmQoIjxjd29yZD4iKSA9PSAiZG8iJyAuCisgICAgICBcICcgJiYgZ2V0bGluZSgiLiIpID1+ICJeXFxzKlxcPHdoaWxlXFx8dW50aWxcXHxmb3JcXD4iKScKKworIiBSZWdleCB0aGF0IGRlZmluZXMgY29udGludWF0aW9uIGxpbmVzLCBub3QgaW5jbHVkaW5nICgsIHssIG9yIFsuCitsZXQgczpjb250aW51YXRpb25fcmVnZXggPSAnXCUoW1xcKisvLiw9Oi1dXHxcV1t8Jj9dXHx8fFx8JiZcKVxzKlwlKCMuKlwpXD0kJworCisiIFJlZ2V4IHRoYXQgZGVmaW5lcyBjb250aW51YXRpb24gbGluZXMuCisiIFRPRE86IHRoaXMgbmVlZHMgdG8gZGVhbCB3aXRoIGlmIC4uLjogYW5kIHNvIG9uCitsZXQgczpjb250aW51YXRpb25fcmVnZXgyID0KKyAgICAgIFwgJ1wlKFtcXCorLy4sPTooe1stXVx8XFdbfCY/XVx8fHxcfCYmXClccypcJSgjLipcKVw9JCcKKworIiBSZWdleCB0aGF0IGRlZmluZXMgYmxvY2tzLgorbGV0IHM6YmxvY2tfcmVnZXggPQorICAgICAgXCAnXCUoXDxkb1w+XHx7XClccypcJSh8XCUoWypAXVw9XGhcdyosXD1ccypcKVwlKCxccypbKkBdXD1caFx3KlwpKnxcKVw9XHMqXCUoIy4qXClcPSQnCisKKyIgMi4gQXV4aWxpYXJ5IEZ1bmN0aW9ucyB7e3sxCisiID09PT09PT09PT09PT09PT09PT09PT0KKworIiBDaGVjayBpZiB0aGUgY2hhcmFjdGVyIGF0IGxudW06Y29sIGlzIGluc2lkZSBhIHN0cmluZywgY29tbWVudCwgb3IgaXMgYXNjaWkuCitmdW5jdGlvbiBzOklzSW5TdHJpbmdPckNvbW1lbnQobG51bSwgY29sKQorICByZXR1cm4gc3luSURhdHRyKHN5bklEKGE6bG51bSwgYTpjb2wsIDApLCAnbmFtZScpID1+IHM6c3luZ19zdHJjb20KK2VuZGZ1bmN0aW9uCisKKyIgQ2hlY2sgaWYgdGhlIGNoYXJhY3RlciBhdCBsbnVtOmNvbCBpcyBpbnNpZGUgYSBzdHJpbmcgb3IgY29tbWVudC4KK2Z1bmN0aW9uIHM6SXNJblN0cmluZ09yQ29tbWVudDIobG51bSwgY29sKQorICByZXR1cm4gc3luSURhdHRyKHN5bklEKGE6bG51bSwgYTpjb2wsIDApLCAnbmFtZScpID1+IHM6c3luZ19zdHJjb20yCitlbmRmdW5jdGlvbgorCisiIENoZWNrIGlmIHRoZSBjaGFyYWN0ZXIgYXQgbG51bTpjb2wgaXMgaW5zaWRlIGEgc3RyaW5nLgorZnVuY3Rpb24gczpJc0luU3RyaW5nKGxudW0sIGNvbCkKKyAgcmV0dXJuIHN5bklEYXR0cihzeW5JRChhOmxudW0sIGE6Y29sLCAwKSwgJ25hbWUnKSA9fiBzOnN5bmdfc3RyaW5nCitlbmRmdW5jdGlvbgorCisiIENoZWNrIGlmIHRoZSBjaGFyYWN0ZXIgYXQgbG51bTpjb2wgaXMgaW5zaWRlIGEgc3RyaW5nIG9yIGRvY3VtZW50YXRpb24uCitmdW5jdGlvbiBzOklzSW5TdHJpbmdPckRvY3VtZW50YXRpb24obG51bSwgY29sKQorICByZXR1cm4gc3luSURhdHRyKHN5bklEKGE6bG51bSwgYTpjb2wsIDApLCAnbmFtZScpID1+IHM6c3luZ19zdHJpbmdkb2MKK2VuZGZ1bmN0aW9uCisKKyIgRmluZCBsaW5lIGFib3ZlICdsbnVtJyB0aGF0IGlzbid0IGVtcHR5LCBpbiBhIGNvbW1lbnQsIG9yIGluIGEgc3RyaW5nLgorZnVuY3Rpb24gczpQcmV2Tm9uQmxhbmtOb25TdHJpbmcobG51bSkKKyAgbGV0IGluX2Jsb2NrID0gMAorICBsZXQgbG51bSA9IHByZXZub25ibGFuayhhOmxudW0pCisgIHdoaWxlIGxudW0gPiAwCisgICAgIiBHbyBpbiBhbmQgb3V0IG9mIGJsb2NrcyBjb21tZW50cyBhcyBuZWNlc3NhcnkuCisgICAgIiBJZiB0aGUgbGluZSBpc24ndCBlbXB0eSAod2l0aCBvcHQuIGNvbW1lbnQpIG9yIGluIGEgc3RyaW5nLCBlbmQgc2VhcmNoLgorICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQorICAgIGlmIGxpbmUgPX4gJ149YmVnaW4kJworICAgICAgaWYgaW5fYmxvY2sKKyAgICAgICAgbGV0IGluX2Jsb2NrID0gMAorICAgICAgZWxzZQorICAgICAgICBicmVhaworICAgICAgZW5kaWYKKyAgICBlbHNlaWYgIWluX2Jsb2NrICYmIGxpbmUgPX4gJ149ZW5kJCcKKyAgICAgIGxldCBpbl9ibG9jayA9IDEKKyAgICBlbHNlaWYgIWluX2Jsb2NrICYmIGxpbmUgIX4gJ15ccyojLiokJyAmJiAhKHM6SXNJblN0cmluZ09yQ29tbWVudChsbnVtLCAxKQorICAgICAgICAgIFwgJiYgczpJc0luU3RyaW5nT3JDb21tZW50KGxudW0sIHN0cmxlbihsaW5lKSkpCisgICAgICBicmVhaworICAgIGVuZGlmCisgICAgbGV0IGxudW0gPSBwcmV2bm9uYmxhbmsobG51bSAtIDEpCisgIGVuZHdoaWxlCisgIHJldHVybiBsbnVtCitlbmRmdW5jdGlvbgorCisiIEZpbmQgbGluZSBhYm92ZSAnbG51bScgdGhhdCBzdGFydGVkIHRoZSBjb250aW51YXRpb24gJ2xudW0nIG1heSBiZSBwYXJ0IG9mLgorZnVuY3Rpb24gczpHZXRNU0wobG51bSkKKyAgIiBTdGFydCBvbiB0aGUgbGluZSB3ZSdyZSBhdCBhbmQgdXNlIGl0cyBpbmRlbnQuCisgIGxldCBtc2wgPSBhOmxudW0KKyAgbGV0IGxudW0gPSBzOlByZXZOb25CbGFua05vblN0cmluZyhhOmxudW0gLSAxKQorICB3aGlsZSBsbnVtID4gMAorICAgICIgSWYgd2UgaGF2ZSBhIGNvbnRpbnVhdGlvbiBsaW5lLCBvciB3ZSdyZSBpbiBhIHN0cmluZywgdXNlIGxpbmUgYXMgTVNMLgorICAgICIgT3RoZXJ3aXNlLCB0ZXJtaW5hdGUgc2VhcmNoIGFzIHdlIGhhdmUgZm91bmQgb3VyIE1TTCBhbHJlYWR5LgorICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQorICAgIGxldCBjb2wgPSBtYXRjaChsaW5lLCBzOmNvbnRpbnVhdGlvbl9yZWdleDIpICsgMQorICAgIGlmIChjb2wgPiAwICYmICFzOklzSW5TdHJpbmdPckNvbW1lbnQobG51bSwgY29sKSkKKyAgICAgICAgICBcIHx8IHM6SXNJblN0cmluZyhsbnVtLCBzdHJsZW4obGluZSkpCisgICAgICBsZXQgbXNsID0gbG51bQorICAgIGVsc2UKKyAgICAgIGJyZWFrCisgICAgZW5kaWYKKyAgICBsZXQgbG51bSA9IHM6UHJldk5vbkJsYW5rTm9uU3RyaW5nKGxudW0gLSAxKQorICBlbmR3aGlsZQorICByZXR1cm4gbXNsCitlbmRmdW5jdGlvbgorCisiIENoZWNrIGlmIGxpbmUgJ2xudW0nIGhhcyBtb3JlIG9wZW5pbmcgYnJhY2tldHMgdGhhbiBjbG9zaW5nIG9uZXMuCitmdW5jdGlvbiBzOkxpbmVIYXNPcGVuaW5nQnJhY2tldHMobG51bSkKKyAgbGV0IG9wZW5fMCA9IDAKKyAgbGV0IG9wZW5fMiA9IDAKKyAgbGV0IG9wZW5fNCA9IDAKKyAgbGV0IGxpbmUgPSBnZXRsaW5lKGE6bG51bSkKKyAgbGV0IHBvcyA9IG1hdGNoKGxpbmUsICdbXVsoKXt9XScsIDApCisgIHdoaWxlIHBvcyAhPSAtMQorICAgIGlmICFzOklzSW5TdHJpbmdPckNvbW1lbnQoYTpsbnVtLCBwb3MgKyAxKQorICAgICAgbGV0IGlkeCA9IHN0cmlkeCgnKCl7fVtdJywgbGluZVtwb3NdKQorICAgICAgaWYgaWR4ICUgMiA9PSAwCisgICAgICAgIGxldCBvcGVuX3tpZHh9ID0gb3Blbl97aWR4fSArIDEKKyAgICAgIGVsc2UKKyAgICAgICAgbGV0IG9wZW5fe2lkeCAtIDF9ID0gb3Blbl97aWR4IC0gMX0gLSAxCisgICAgICBlbmRpZgorICAgIGVuZGlmCisgICAgbGV0IHBvcyA9IG1hdGNoKGxpbmUsICdbXVsoKXt9XScsIHBvcyArIDEpCisgIGVuZHdoaWxlCisgIHJldHVybiAob3Blbl8wID4gMCkgLiAob3Blbl8yID4gMCkgLiAob3Blbl80ID4gMCkKK2VuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uIHM6TWF0Y2gobG51bSwgcmVnZXgpCisgIGxldCBjb2wgPSBtYXRjaChnZXRsaW5lKGE6bG51bSksIGE6cmVnZXgpICsgMQorICByZXR1cm4gY29sID4gMCAmJiAhczpJc0luU3RyaW5nT3JDb21tZW50KGE6bG51bSwgY29sKSA/IGNvbCA6IDAKK2VuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uIHM6TWF0Y2hMYXN0KGxudW0sIHJlZ2V4KQorICBsZXQgbGluZSA9IGdldGxpbmUoYTpsbnVtKQorICBsZXQgY29sID0gbWF0Y2gobGluZSwgJy4qXHpzJyAuIGE6cmVnZXgpCisgIHdoaWxlIGNvbCAhPSAtMSAmJiBzOklzSW5TdHJpbmdPckNvbW1lbnQoYTpsbnVtLCBjb2wpCisgICAgbGV0IGxpbmUgPSBzdHJwYXJ0KGxpbmUsIDAsIGNvbCkKKyAgICBsZXQgY29sID0gbWF0Y2gobGluZSwgJy4qJyAuIGE6cmVnZXgpCisgIGVuZHdoaWxlCisgIHJldHVybiBjb2wgKyAxCitlbmRmdW5jdGlvbgorCisiIDMuIEdldFJ1YnlJbmRlbnQgRnVuY3Rpb24ge3t7MQorIiA9PT09PT09PT09PT09PT09PT09PT09PT09CisKIGZ1bmN0aW9uIEdldFJ1YnlJbmRlbnQoKQotICAiIEZpbmQgYSBub24tYmxhbmsgbGluZSBhYm92ZSB0aGUgY3VycmVudCBsaW5lLgotICBsZXQgbG51bSA9IHByZXZub25ibGFuayh2OmxudW0gLSAxKQorICAiIDMuMS4gU2V0dXAge3t7MgorICAiIC0tLS0tLS0tLS0KKworICAiIFNldCB1cCB2YXJpYWJsZXMgZm9yIHJlc3RvcmluZyBwb3NpdGlvbiBpbiBmaWxlLiAgQ291bGQgdXNlIHY6bG51bSBoZXJlLgorICBsZXQgdmNvbCA9IGNvbCgnLicpCisKKyAgIiAzLjIuIFdvcmsgb24gdGhlIGN1cnJlbnQgbGluZSB7e3syCisgICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAiIEdldCB0aGUgY3VycmVudCBsaW5lLgorICBsZXQgbGluZSA9IGdldGxpbmUodjpsbnVtKQorICBsZXQgaW5kID0gLTEKKworICAiIElmIHdlIGdvdCBhIGNsb3NpbmcgYnJhY2tldCBvbiBhbiBlbXB0eSBsaW5lLCBmaW5kIGl0cyBtYXRjaCBhbmQgaW5kZW50CisgICIgYWNjb3JkaW5nIHRvIGl0LiAgRm9yIHBhcmVudGhlc2VzIHdlIGluZGVudCB0byBpdHMgY29sdW1uIC0gMSwgZm9yIHRoZQorICAiIG90aGVycyB3ZSBpbmRlbnQgdG8gdGhlIGNvbnRhaW5pbmcgbGluZSdzIE1TTCdzIGxldmVsLiAgUmV0dXJuIC0xIGlmIGZhaWwuCisgIGxldCBjb2wgPSBtYXRjaGVuZChsaW5lLCAnXlxzKltdfSldJykKKyAgaWYgY29sID4gMCAmJiAhczpJc0luU3RyaW5nT3JDb21tZW50KHY6bG51bSwgY29sKQorICAgIGNhbGwgY3Vyc29yKHY6bG51bSwgY29sKQorICAgIGxldCBicyA9IHN0cnBhcnQoJygpe31bXScsIHN0cmlkeCgnKX1dJywgbGluZVtjb2wgLSAxXSkgKiAyLCAyKQorICAgIGlmIHNlYXJjaHBhaXIoZXNjYXBlKGJzWzBdLCAnXFsnKSwgJycsIGJzWzFdLCAnYlcnLCBzOnNraXBfZXhwcikgPiAwCisgICAgICBsZXQgaW5kID0gbGluZVtjb2wtMV09PScpJyA/IHZpcnRjb2woJy4nKS0xIDogaW5kZW50KHM6R2V0TVNMKGxpbmUoJy4nKSkpCisgICAgZW5kaWYKKyAgICByZXR1cm4gaW5kCisgIGVuZGlmCisKKyAgIiBJZiB3ZSBoYXZlIGEgPWJlZ2luIG9yID1lbmQgc2V0IGluZGVudCB0byBmaXJzdCBjb2x1bW4uCisgIGlmIG1hdGNoKGxpbmUsICdeXHMqXCUoPWJlZ2luXHw9ZW5kXCkkJykgIT0gLTEKKyAgICByZXR1cm4gMAorICBlbmRpZgorCisgICIgSWYgd2UgaGF2ZSBhIGRlaW5kZW50aW5nIGtleXdvcmQsIGZpbmQgaXRzIG1hdGNoIGFuZCBpbmRlbnQgdG8gaXRzIGxldmVsLgorICAiIFRPRE86IHRoaXMgaXMgbWVzc3kKKyAgaWYgczpNYXRjaCh2OmxudW0sIHM6cnVieV9kZWluZGVudF9rZXl3b3JkcykKKyIgICAgbGV0IGxudW0gPSBzOlByZXZOb25CbGFua05vblN0cmluZyh2OmxudW0gLSAxKQorIgorIiAgICBpZiBsbnVtID09IDAKKyIgICAgICByZXR1cm4gMAorIiAgICBlbmRpZgorIgorIiAgICByZXR1cm4gaW5kZW50KHY6bG51bSkgLSAmc3cKKyAgICBjYWxsIGN1cnNvcih2OmxudW0sIDEpCisgICAgaWYgc2VhcmNocGFpcihzOmVuZF9zdGFydF9yZWdleCwgczplbmRfbWlkZGxlX3JlZ2V4LCBzOmVuZF9lbmRfcmVnZXgsICdiVycsCisgICAgICAgICAgICBcIHM6ZW5kX3NraXBfZXhwcikgPiAwCisgICAgICBpZiBzdHJwYXJ0KGdldGxpbmUoJy4nKSwgMCwgY29sKCcuJykgLSAxKSA9fiAnPVxzKicKKyAgICAgICAgbGV0IGluZCA9IHZpcnRjb2woJy4nKSAtIDEKKyAgICAgIGVsc2UKKyAgICAgICAgbGV0IGluZCA9IGluZGVudCgnLicpCisgICAgICBlbmRpZgorICAgIGVuZGlmCisgICAgcmV0dXJuIGluZAorICBlbmRpZgorCisgICIgSWYgd2UgYXJlIGluIGEgbXVsdGktbGluZSBzdHJpbmcgb3IgbGluZS1jb21tZW50LCBkb24ndCBkbyBhbnl0aGluZyB0byBpdC4KKyAgaWYgczpJc0luU3RyaW5nT3JEb2N1bWVudGF0aW9uKHY6bG51bSwgbWF0Y2hlbmQobGluZSwgJ15ccyonKSArIDEpCisgICAgcmV0dXJuIGluZGVudCgnLicpCisgIGVuZGlmCisKKyAgIiAzLjMuIFdvcmsgb24gdGhlIHByZXZpb3VzIGxpbmUuIHt7ezIKKyAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIiBGaW5kIGEgbm9uLWJsYW5rLCBub24tbXVsdGktbGluZSBzdHJpbmcgbGluZSBhYm92ZSB0aGUgY3VycmVudCBsaW5lLgorICBsZXQgbG51bSA9IHM6UHJldk5vbkJsYW5rTm9uU3RyaW5nKHY6bG51bSAtIDEpCiAKICAgIiBBdCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgdXNlIHplcm8gaW5kZW50LgogICBpZiBsbnVtID09IDAKICAgICByZXR1cm4gMAogICBlbmRpZgogCi0gICIgSWYgdGhlIGxpbmUgdHJhaWxlZCB3aXRoIFsqKywuKF0gLSBidXQgbm90IGluIGEgY29tbWVudCAtIHRydXN0IHRoZSB1c2VyCi0gIGlmIGdldGxpbmUobG51bSkgPX4gJ1woXFteI1xdLipcKT9cKFwqXHxcLlx8K1x8LFx8KFwpXChccyojLipcKVw9JCcKLSAgICByZXR1cm4gLTEKLSAgZW5kaWYKLQotICAiIEFkZCBhICdzaGlmdHdpZHRoJyBhZnRlciBsaW5lcyBiZWdpbm5pbmcgd2l0aDoKLSAgIiBtb2R1bGUsIGNsYXNzLCBkZXYsIGlmLCBmb3IsIHdoaWxlLCB1bnRpbCwgZWxzZSwgZWxzaWYsIGNhc2UsIHdoZW4sIHsKKyAgIiBTZXQgdXAgdmFyaWFibGVzIGZvciBjdXJyZW50IGxpbmUuCisgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQogICBsZXQgaW5kID0gaW5kZW50KGxudW0pCi0gIGxldCBmbGFnID0gMAotICBpZiBnZXRsaW5lKGxudW0pID1+ICdeXHMqXChtb2R1bGVcPlx8Y2xhc3NcPlx8ZGVmXD5cfGlmXD5cfGZvclw+XHx3aGlsZVw+XHx1bnRpbFw+XHxlbHNlXD5cfGVsc2lmXD5cfGNhc2VcPlx8d2hlblw+XHx1bmxlc3NcfGJlZ2luXHxlbnN1cmVcPlx8cmVzY3VlXD5cKScKLQlcIHx8IGdldGxpbmUobG51bSkgPX4gJ3tccyokJwotCVwgfHwgZ2V0bGluZShsbnVtKSA9fiAnXCh7XHxcPGRvXD5cKS4qfC4qfFxzKiQnCi0JXCB8fCBnZXRsaW5lKGxudW0pID1+ICdcPGRvXD5cKFxzKiMuKlwpXD0kJwotICAgIGxldCBpbmQgPSBpbmQgKyAmc3cKLSAgICBsZXQgZmxhZyA9IDEKKworICAiIElmIHRoZSBwcmV2aW91cyBsaW5lIGVuZGVkIHdpdGggYSBibG9jayBvcGVuaW5nLCBhZGQgYSBsZXZlbCBvZiBpbmRlbnQuCisgIGlmIHM6TWF0Y2gobG51bSwgczpibG9ja19yZWdleCkKKyAgICByZXR1cm4gaW5kZW50KHM6R2V0TVNMKGxudW0pKSArICZzdwogICBlbmRpZgogCi0gICIgU3VidHJhY3QgYSAnc2hpZnR3aWR0aCcgYWZ0ZXIgbGluZXMgZW5kaW5nIHdpdGgKLSAgIiAiZW5kIiB3aGVuIHRoZXkgYmVnaW4gd2l0aCB3aGlsZSwgaWYsIGZvciwgdW50aWwKLSAgaWYgZmxhZyA9PSAxICYmIGdldGxpbmUobG51bSkgPX4gJ1w8ZW5kXD5cKFxzKiMuKlwpXD0kJwotICAgIGxldCBpbmQgPSBpbmQgLSAmc3cKKyAgIiBJZiB0aGUgcHJldmlvdXMgbGluZSBjb250YWluZWQgYW4gb3BlbmluZyBicmFja2V0LCBhbmQgd2UgYXJlIHN0aWxsIGluIGl0LAorICAiIGFkZCBpbmRlbnQgZGVwZW5kaW5nIG9uIHRoZSBicmFja2V0IHR5cGUuCisgIGlmIGxpbmUgPX4gJ1tbKHtdJworICAgIGxldCBjb3VudHMgPSBzOkxpbmVIYXNPcGVuaW5nQnJhY2tldHMobG51bSkKKyAgICBpZiBjb3VudHNbMF0gPT0gJzEnICYmIHNlYXJjaHBhaXIoJygnLCAnJywgJyknLCAnYlcnLCBzOnNraXBfZXhwcikgPiAwCisgICAgICByZXR1cm4gdmlydGNvbCgnLicpCisgICAgZWxzZWlmIGNvdW50c1sxXSA9PSAnMScgfHwgY291bnRzWzJdID09ICcxJworICAgICAgcmV0dXJuIGluZCArICZzdworICAgIGVsc2UKKyAgICAgIGNhbGwgY3Vyc29yKHY6bG51bSwgdmNvbCkKKyAgICBlbmQKICAgZW5kaWYKIAotICAiIFN1YnRyYWN0IGEgJ3NoaWZ0d2lkdGgnIG9uIGVuZCwgZWxzZSBhbmQsIGVsc2lmLCB3aGVuIGFuZCB9Ci0gIGlmIGdldGxpbmUodjpsbnVtKSA9fiAnXlxzKlwoZW5kXD5cfGVsc2VcPlx8ZWxzaWZcPlx8d2hlblw+XHxlbnN1cmVcPlx8cmVzY3VlXD5cfH1cKScKLSAgICBsZXQgaW5kID0gaW5kIC0gJnN3CisgICIgSWYgdGhlIHByZXZpb3VzIGxpbmUgZW5kZWQgd2l0aCBhbiAiZW5kIiwgbWF0Y2ggdGhhdCAiZW5kInMgYmVnaW5uaW5nJ3MKKyAgIiBpbmRlbnQuCisgIGxldCBjb2wgPSBzOk1hdGNoKGxudW0sICdcJSheXHxbXi5dXClcPGVuZFw+XHMqXCUoIy4qXClcPSQnKQorICBpZiBjb2wgPiAwCisgICAgY2FsbCBjdXJzb3IobG51bSwgY29sKQorICAgIGlmIHNlYXJjaHBhaXIoczplbmRfc3RhcnRfcmVnZXgsICcnLCBzOmVuZF9lbmRfcmVnZXgsICdiVycsCisgICAgICAgICAgICAgICAgXCBzOmVuZF9za2lwX2V4cHIpID4gMAorICAgICAgbGV0IG4gPSBsaW5lKCcuJykKKyAgICAgIGxldCBpbmQgPSBpbmRlbnQoJy4nKQorICAgICAgbGV0IG1zbCA9IHM6R2V0TVNMKG4pCisgICAgICBpZiBtc2wgIT0gbgorICAgICAgICBsZXQgaW5kID0gaW5kZW50KG1zbCkKKyAgICAgIGVuZAorICAgICAgcmV0dXJuIGluZAorICAgIGVuZGlmCisgIGVuZAorCisgIGxldCBjb2wgPSBzOk1hdGNoKGxudW0sIHM6cnVieV9pbmRlbnRfa2V5d29yZHMpCisgIGlmIGNvbCA+IDAKKyAgICBjYWxsIGN1cnNvcihsbnVtLCBjb2wpCisgICAgbGV0IGluZCA9IHZpcnRjb2woJy4nKSAtIDEgKyAmc3cKKyIgICAgbGV0IGluZCA9IGluZGVudChsbnVtKSArICZzdworICAgICIgVE9ETzogbWFrZSB0aGlzIGJldHRlciAod2UgbmVlZCB0byBjb3VudCB0aGVtKSAob3IsIGlmIGEgc2VhcmNocGFpcgorICAgICIgZmFpbHMsIHdlIGtub3cgdGhhdCBzb21ldGhpbmcgaXMgbGFja2luZyBhbiBlbmQgYW5kIHRodXMgd2UgaW5kZW50IGEKKyAgICAiIGxldmVsCisgICAgaWYgczpNYXRjaChsbnVtLCBzOmVuZF9lbmRfcmVnZXgpCisgICAgICBsZXQgaW5kID0gaW5kZW50KCcuJykKKyAgICBlbmRpZgorICAgIHJldHVybiBpbmQKICAgZW5kaWYKIAorICAiIDMuNC4gV29yayBvbiB0aGUgTVNMIGxpbmUuIHt7ezIKKyAgIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICIgU2V0IHVwIHZhcmlhYmxlcyB0byB1c2UgYW5kIHNlYXJjaCBmb3IgTVNMIHRvIHRoZSBwcmV2aW91cyBsaW5lLgorICBsZXQgcF9sbnVtID0gbG51bQorICBsZXQgbG51bSA9IHM6R2V0TVNMKGxudW0pCisKKyAgIiBJZiB0aGUgcHJldmlvdXMgbGluZSB3YXNuJ3QgYSBNU0wgYW5kIGlzIGNvbnRpbnVhdGlvbiByZXR1cm4gaXRzIGluZGVudC4KKyAgIiBUT0RPOiB0aGUgfHwgczpJc0luU3RyaW5nKCkgdGhpbmcgd29ycmllcyBtZSBhIGJpdC4KKyAgaWYgcF9sbnVtICE9IGxudW0KKyAgICBpZiBzOk1hdGNoKHBfbG51bSxzOmNvbnRpbnVhdGlvbl9yZWdleCl8fHM6SXNJblN0cmluZyhwX2xudW0sc3RybGVuKGxpbmUpKQorICAgICAgcmV0dXJuIGluZAorICAgIGVuZGlmCisgIGVuZGlmCisKKyAgIiBTZXQgdXAgbW9yZSB2YXJpYWJsZXMsIG5vdyB0aGF0IHdlIGtub3cgd2Ugd2Fzbid0IGNvbnRpbnVhdGlvbiBib3VuZC4KKyAgbGV0IGxpbmUgPSBnZXRsaW5lKGxudW0pCisgIGxldCBtc2xfaW5kID0gaW5kZW50KGxudW0pCisKKyAgIiBJZiB0aGUgTVNMIGxpbmUgaGFkIGFuIGluZGVudGluZyBrZXl3b3JkIGluIGl0LCBhZGQgYSBsZXZlbCBvZiBpbmRlbnQuCisgICIgVE9ETzogdGhpcyBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBjb250cml2ZWQgdGhpbmdzIHN1Y2ggYXMKKyAgIiBtb2R1bGUgRm9vOyBjbGFzcyBCYXI7IGVuZAorICBpZiBzOk1hdGNoKGxudW0sIHM6cnVieV9pbmRlbnRfa2V5d29yZHMpCisgICAgbGV0IGluZCA9IG1zbF9pbmQgKyAmc3cKKyAgICBpZiBzOk1hdGNoKGxudW0sIHM6ZW5kX2VuZF9yZWdleCkKKyAgICAgIGxldCBpbmQgPSBpbmQgLSAmc3cKKyAgICBlbmRpZgorICAgIHJldHVybiBpbmQKKyAgZW5kaWYKKworICAiIElmIHRoZSBwcmV2aW91cyBsaW5lIGVuZGVkIHdpdGggWyorLy4tPV0sIGluZGVudCBvbmUgZXh0cmEgbGV2ZWwuCisgIGlmIHM6TWF0Y2gobG51bSwgczpjb250aW51YXRpb25fcmVnZXgpCisgICAgaWYgbG51bSA9PSBwX2xudW0KKyAgICAgIGxldCBpbmQgPSBtc2xfaW5kICsgJnN3CisgICAgZWxzZQorICAgICAgbGV0IGluZCA9IG1zbF9pbmQKKyAgICBlbmRpZgorICBlbmRpZgorCisgICIgfX19MgorCiAgIHJldHVybiBpbmQKIGVuZGZ1bmN0aW9uCiAKLSIgdmltOnN3PTIKKyIgfX19MQorCitsZXQgJmNwbyA9IHM6Y3BvX3NhdmUKK3VubGV0IHM6Y3BvX3NhdmUKKworIiB2aW06IG5vd3JhcCBzdz0yIHN0cz0yIHRzPTggZmY9dW5peDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL3RhbWlsX3RzY2lpLnZpbSBiL3J1bnRpbWUva2V5bWFwL3RhbWlsX3RzY2lpLnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTA3YzE3Ci0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9rZXltYXAvdGFtaWxfdHNjaWkudmltCkBAIC0wLDAgKzEsNTcyIEBACisiIEtleW1hcCBmaWxlIGZvciB0aGUgZWRpdGluZyBUYW1pbCBsYW5ndWFnZSBmaWxlcyBpbiBUU0NJSSBlbmNvZGluZy4NCisiDQorIiBNYWludGFpbmVyOiBZZWdhcHBhbiBMYWtzaG1hbmFuICh5ZWdhcHBhbiBBVCB5YWhvbyBET1QgY29tKQ0KKyIgTGFzdCB1cGRhdGVkOiBBdWd1c3QgNCwgMjAwNQ0KKyINCisiIFlvdSB3aWxsIG5lZWQgYSBmaXhlZCB3aWR0aCBUU0NJSSBmb250IHRvIHVzZSB0aGlzIGVuY29kaW5nLiAgVGhlDQorIiBBdmFyYW5nYWwgVFNDSUkgZml4ZWQgd2lkdGggZm9udCAoVFNDX0F2YXJhbmdhbEZ4ZCkgaXMgdXNlZCB0byB0ZXN0DQorIiB0aGlzIGtleW1hcC4NCisiDQorIiBWaXNpdCBodHRwOi8vd3d3LnRzY2lpLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgVFNDSUkNCisiIGVuY29kaW5nLg0KKyIgDQorbGV0IGI6a2V5bWFwX25hbWUgPSAidGFtaWxfdHNjaWkiDQorDQorbG9hZGtleW1hcA0KKw0KKyIgVXlpciAoVm93ZWxzKSBsZXR0ZXJzDQorYSAgICAgIDxjaGFyLTE3MT4NCithYSAgICAgPGNoYXItMTcyPg0KK0EgICAgICA8Y2hhci0xNzI+DQoraSAgICAgIDxjaGFyLTE3Mz4NCitpaSAgICAgPGNoYXItMTc0Pg0KK0kgICAgICA8Y2hhci0xNzQ+DQordSAgICAgIDxjaGFyLTE3NT4NCit1dSAgICAgPGNoYXItMTc2Pg0KK1UgICAgICA8Y2hhci0xNzY+DQorZSAgICAgIDxjaGFyLTE3Nz4NCitlZSAgICAgPGNoYXItMTc4Pg0KK0UgICAgICA8Y2hhci0xNzg+DQorYWkgICAgIDxjaGFyLTE3OT4NCitvICAgICAgPGNoYXItMTgwPg0KK29vICAgICA8Y2hhci0xODE+DQorTyAgICAgIDxjaGFyLTE4MT4NCithdSAgICAgPGNoYXItMTgyPg0KK3EgICAgICA8Y2hhci0xODM+DQorDQorIiBtZXkgKENvbnNvbmFudHMpIGxldHRlcnMNCitrICAgICAgPGNoYXItMjM2Pg0KK2thICAgICA8Y2hhci0xODQ+DQora2FhICAgIDxjaGFyLTE4ND48Y2hhci0xNjE+DQora0EgICAgIDxjaGFyLTE4ND48Y2hhci0xNjE+DQora2kgICAgIDxjaGFyLTE4ND48Y2hhci0xNjI+DQora2lpICAgIDxjaGFyLTE4ND48Y2hhci0xNjM+DQora0kgICAgIDxjaGFyLTE4ND48Y2hhci0xNjM+DQora3UgICAgIDxjaGFyLTIwND4NCitrdXUgICAgPGNoYXItMjIwPg0KK2tVICAgICA8Y2hhci0yMjA+DQora2UgICAgIDxjaGFyLTE2Nj48Y2hhci0xODQ+DQora2VlICAgIDxjaGFyLTE2Nz48Y2hhci0xODQ+DQora0UgICAgIDxjaGFyLTE2Nz48Y2hhci0xODQ+DQora2FpICAgIDxjaGFyLTE2OD48Y2hhci0xODQ+DQora28gICAgIDxjaGFyLTE2Nj48Y2hhci0xODQ+PGNoYXItMTYxPg0KK2tvbyAgICA8Y2hhci0xNjc+PGNoYXItMTg0PjxjaGFyLTE2MT4NCitrTyAgICAgPGNoYXItMTY3PjxjaGFyLTE4ND48Y2hhci0xNjE+DQora2F1ICAgIDxjaGFyLTE2Nj48Y2hhci0xODQ+PGNoYXItMTk5Pg0KKw0KK2cgICAgICA8Y2hhci0yMzY+DQorZ2EgICAgIDxjaGFyLTE4ND4NCitnYWEgICAgPGNoYXItMTg0PjxjaGFyLTE2MT4NCitnQSAgICAgPGNoYXItMTg0PjxjaGFyLTE2MT4NCitnaSAgICAgPGNoYXItMTg0PjxjaGFyLTE2Mj4NCitnaWkgICAgPGNoYXItMTg0PjxjaGFyLTE2Mz4NCitnSSAgICAgPGNoYXItMTg0PjxjaGFyLTE2Mz4NCitndSAgICAgPGNoYXItMjA0Pg0KK2d1dSAgICA8Y2hhci0yMjA+DQorZ1UgICAgIDxjaGFyLTIyMD4NCitnZSAgICAgPGNoYXItMTY2PjxjaGFyLTE4ND4NCitnZWUgICAgPGNoYXItMTY3PjxjaGFyLTE4ND4NCitnRSAgICAgPGNoYXItMTY3PjxjaGFyLTE4ND4NCitnYWkgICAgPGNoYXItMTY4PjxjaGFyLTE4ND4NCitnbyAgICAgPGNoYXItMTY2PjxjaGFyLTE4ND48Y2hhci0xNjE+DQorZ29vICAgIDxjaGFyLTE2Nz48Y2hhci0xODQ+PGNoYXItMTYxPg0KK2dPICAgICA8Y2hhci0xNjc+PGNoYXItMTg0PjxjaGFyLTE2MT4NCitnYXUgICAgPGNoYXItMTY2PjxjaGFyLTE4ND48Y2hhci0xOTk+DQorDQorbmcgICAgIDxjaGFyLTIzNz4NCituZ2EgICAgPGNoYXItMTg1Pg0KK25nYWEgICA8Y2hhci0xODU+PGNoYXItMTYxPg0KK25nQSAgICA8Y2hhci0xODU+PGNoYXItMTYxPg0KK25naSAgICA8Y2hhci0xODU+PGNoYXItMTYyPg0KK25naWkgICA8Y2hhci0xODU+PGNoYXItMTYzPg0KK25nSSAgICA8Y2hhci0xODU+PGNoYXItMTYzPg0KK25ndSAgICA8Y2hhci0xNTM+DQorbmd1dSAgIDxjaGFyLTE1NT4NCituZ1UgICAgPGNoYXItMTU1Pg0KK25nZSAgICA8Y2hhci0xNjY+PGNoYXItMTg1Pg0KK25nZWUgICA8Y2hhci0xNjc+PGNoYXItMTg1Pg0KK25nRSAgICA8Y2hhci0xNjc+PGNoYXItMTg1Pg0KK25nYWkgICA8Y2hhci0xNjg+PGNoYXItMTg1Pg0KK25nbyAgICA8Y2hhci0xNjY+PGNoYXItMTg1PjxjaGFyLTE2MT4NCituZ29vICAgPGNoYXItMTY3PjxjaGFyLTE4NT48Y2hhci0xNjE+DQorbmdPICAgIDxjaGFyLTE2Nz48Y2hhci0xODU+PGNoYXItMTYxPg0KK25nYXUgICA8Y2hhci0xNjY+PGNoYXItMTg1PjxjaGFyLTE5OT4NCisNCitjaCAgICAgPGNoYXItMjM4Pg0KK2NoYSAgICA8Y2hhci0xODY+DQorY2hhYSAgIDxjaGFyLTE4Nj48Y2hhci0xNjE+DQorY2hBICAgIDxjaGFyLTE4Nj48Y2hhci0xNjE+DQorY2hpICAgIDxjaGFyLTE4Nj48Y2hhci0xNjI+DQorY2hpaSAgIDxjaGFyLTE4Nj48Y2hhci0xNjM+DQorY2hJICAgIDxjaGFyLTE4Nj48Y2hhci0xNjM+DQorY2h1ICAgIDxjaGFyLTIwND4NCitjaHV1ICAgPGNoYXItMjIxPg0KK2NoVSAgICA8Y2hhci0yMjE+DQorY2hlICAgIDxjaGFyLTE2Nj48Y2hhci0xODY+DQorY2hlZSAgIDxjaGFyLTE2Nz48Y2hhci0xODY+DQorY2hFICAgIDxjaGFyLTE2Nz48Y2hhci0xODY+DQorY2hhaSAgIDxjaGFyLTE2OD48Y2hhci0xODY+DQorY2hvICAgIDxjaGFyLTE2Nj48Y2hhci0xODY+PGNoYXItMTYxPg0KK2Nob28gICA8Y2hhci0xNjc+PGNoYXItMTg2PjxjaGFyLTE2MT4NCitjaE8gICAgPGNoYXItMTY3PjxjaGFyLTE4Nj48Y2hhci0xNjE+DQorY2hhdSAgIDxjaGFyLTE2Nj48Y2hhci0xODY+PGNoYXItMTk5Pg0KKw0KK3MgICAgICA8Y2hhci0yMzg+DQorc2EgICAgIDxjaGFyLTE4Nj4NCitzYWEgICAgPGNoYXItMTg2PjxjaGFyLTE2MT4NCitzQSAgICAgPGNoYXItMTg2PjxjaGFyLTE2MT4NCitzaSAgICAgPGNoYXItMTg2PjxjaGFyLTE2Mj4NCitzaWkgICAgPGNoYXItMTg2PjxjaGFyLTE2Mz4NCitzSSAgICAgPGNoYXItMTg2PjxjaGFyLTE2Mz4NCitzdSAgICAgPGNoYXItMjA0Pg0KK3N1dSAgICA8Y2hhci0yMjE+DQorc1UgICAgIDxjaGFyLTIyMT4NCitzZSAgICAgPGNoYXItMTY2PjxjaGFyLTE4Nj4NCitzZWUgICAgPGNoYXItMTY3PjxjaGFyLTE4Nj4NCitzRSAgICAgPGNoYXItMTY3PjxjaGFyLTE4Nj4NCitzYWkgICAgPGNoYXItMTY4PjxjaGFyLTE4Nj4NCitzbyAgICAgPGNoYXItMTY2PjxjaGFyLTE4Nj48Y2hhci0xNjE+DQorc29vICAgIDxjaGFyLTE2Nz48Y2hhci0xODY+PGNoYXItMTYxPg0KK3NPICAgICA8Y2hhci0xNjc+PGNoYXItMTg2PjxjaGFyLTE2MT4NCitzYXUgICAgPGNoYXItMTY2PjxjaGFyLTE4Nj48Y2hhci0xOTk+DQorDQorbmogICAgIDxjaGFyLTIzOT4NCituamEgICAgPGNoYXItMTg3Pg0KK25qYWEgICA8Y2hhci0xODc+PGNoYXItMTYxPg0KK25qQSAgICA8Y2hhci0xODc+PGNoYXItMTYxPg0KK25qaSAgICA8Y2hhci0xODc+PGNoYXItMTYyPg0KK25qaWkgICA8Y2hhci0xODc+PGNoYXItMTYzPg0KK25qSSAgICA8Y2hhci0xODc+PGNoYXItMTYzPg0KK25qdSAgICA8Y2hhci0xNTQ+DQorbmp1dSAgIDxjaGFyLTE1Nj4NCitualUgICAgPGNoYXItMTU2Pg0KK25qZSAgICA8Y2hhci0xNjY+PGNoYXItMTg3Pg0KK25qZWUgICA8Y2hhci0xNjc+PGNoYXItMTg3Pg0KK25qRSAgICA8Y2hhci0xNjc+PGNoYXItMTg3Pg0KK25qYWkgICA8Y2hhci0xNjg+PGNoYXItMTg3Pg0KK25qbyAgICA8Y2hhci0xNjY+PGNoYXItMTg3PjxjaGFyLTE2MT4NCituam9vICAgPGNoYXItMTY3PjxjaGFyLTE4Nz48Y2hhci0xNjE+DQorbmpPICAgIDxjaGFyLTE2Nz48Y2hhci0xODc+PGNoYXItMTYxPg0KK25qYXUgICA8Y2hhci0xNjY+PGNoYXItMTg3PjxjaGFyLTE5OT4NCisNCit0ICAgICAgPGNoYXItMjQwPg0KK3RhICAgICA8Y2hhci0xODg+DQordGFhICAgIDxjaGFyLTE4OD48Y2hhci0xNjE+DQordEEgICAgIDxjaGFyLTE4OD48Y2hhci0xNjE+DQordGkgICAgIDxjaGFyLTIwMj4NCit0aWkgICAgPGNoYXItMjAzPg0KK3RJICAgICA8Y2hhci0yMDM+DQordHUgICAgIDxjaGFyLTIwNj4NCit0dXUgICAgPGNoYXItMjIyPg0KK3RVICAgICA8Y2hhci0yMjI+DQordGUgICAgIDxjaGFyLTE2Nj48Y2hhci0xODg+DQordGVlICAgIDxjaGFyLTE2Nz48Y2hhci0xODg+DQordEUgICAgIDxjaGFyLTE2Nz48Y2hhci0xODg+DQordGFpICAgIDxjaGFyLTE2OD48Y2hhci0xODg+DQordG8gICAgIDxjaGFyLTE2Nj48Y2hhci0xODg+PGNoYXItMTYxPg0KK3RvbyAgICA8Y2hhci0xNjc+PGNoYXItMTg4PjxjaGFyLTE2MT4NCit0TyAgICAgPGNoYXItMTY3PjxjaGFyLTE4OD48Y2hhci0xNjE+DQordGF1ICAgIDxjaGFyLTE2Nj48Y2hhci0xODg+PGNoYXItMTk5Pg0KKw0KK2QgICAgICA8Y2hhci0yNDA+DQorZGEgICAgIDxjaGFyLTE4OD4NCitkYWEgICAgPGNoYXItMTg4PjxjaGFyLTE2MT4NCitkQSAgICAgPGNoYXItMTg4PjxjaGFyLTE2MT4NCitkaSAgICAgPGNoYXItMjAyPg0KK2RpaSAgICA8Y2hhci0yMDM+DQorZEkgICAgIDxjaGFyLTIwMz4NCitkdSAgICAgPGNoYXItMjA2Pg0KK2R1dSAgICA8Y2hhci0yMjI+DQorZFUgICAgIDxjaGFyLTIyMj4NCitkZSAgICAgPGNoYXItMTY2PjxjaGFyLTE4OD4NCitkZWUgICAgPGNoYXItMTY3PjxjaGFyLTE4OD4NCitkRSAgICAgPGNoYXItMTY3PjxjaGFyLTE4OD4NCitkYWkgICAgPGNoYXItMTY4PjxjaGFyLTE4OD4NCitkbyAgICAgPGNoYXItMTY2PjxjaGFyLTE4OD48Y2hhci0xNjE+DQorZG9vICAgIDxjaGFyLTE2Nz48Y2hhci0xODg+PGNoYXItMTYxPg0KK2RPICAgICA8Y2hhci0xNjc+PGNoYXItMTg4PjxjaGFyLTE2MT4NCitkYXUgICAgPGNoYXItMTY2PjxjaGFyLTE4OD48Y2hhci0xOTk+DQorDQorTiAgICAgIDxjaGFyLTI0MT4NCitOYSAgICAgPGNoYXItMTg5Pg0KK05hYSAgICA8Y2hhci0xODk+PGNoYXItMTYxPg0KK05BICAgICA8Y2hhci0xODk+PGNoYXItMTYxPg0KK05pICAgICA8Y2hhci0xODk+PGNoYXItMTYyPg0KK05paSAgICA8Y2hhci0xODk+PGNoYXItMTYzPg0KK05JICAgICA8Y2hhci0xODk+PGNoYXItMTYzPg0KK051ICAgICA8Y2hhci0yMDc+DQorTnV1ICAgIDxjaGFyLTIyMz4NCitOVSAgICAgPGNoYXItMjIzPg0KK05lICAgICA8Y2hhci0xNjY+PGNoYXItMTg5Pg0KK05lZSAgICA8Y2hhci0xNjc+PGNoYXItMTg5Pg0KK05FICAgICA8Y2hhci0xNjc+PGNoYXItMTg5Pg0KK05haSAgICA8Y2hhci0xNjg+PGNoYXItMTg5Pg0KK05vICAgICA8Y2hhci0xNjY+PGNoYXItMTg5PjxjaGFyLTE2MT4NCitOb28gICAgPGNoYXItMTY3PjxjaGFyLTE4OT48Y2hhci0xNjE+DQorTk8gICAgIDxjaGFyLTE2Nz48Y2hhci0xODk+PGNoYXItMTYxPg0KK05hdSAgICA8Y2hhci0xNjY+PGNoYXItMTg5PjxjaGFyLTE5OT4NCisNCit0aCAgICAgPGNoYXItMjQyPg0KK3RoYSAgICA8Y2hhci0xOTA+DQordGhhYSAgIDxjaGFyLTE5MD48Y2hhci0xNjE+DQordGhBICAgIDxjaGFyLTE5MD48Y2hhci0xNjE+DQordGhpICAgIDxjaGFyLTE5MD48Y2hhci0xNjI+DQordGhpaSAgIDxjaGFyLTE5MD48Y2hhci0xNjM+DQordGhJICAgIDxjaGFyLTE5MD48Y2hhci0xNjM+DQordGh1ICAgIDxjaGFyLTIwOD4NCit0aHV1ICAgPGNoYXItMjI0Pg0KK3RoVSAgICA8Y2hhci0yMjQ+DQordGhlICAgIDxjaGFyLTE2Nj48Y2hhci0xOTA+DQordGhlZSAgIDxjaGFyLTE2Nz48Y2hhci0xOTA+DQordGhFICAgIDxjaGFyLTE2Nz48Y2hhci0xOTA+DQordGhhaSAgIDxjaGFyLTE2OD48Y2hhci0xOTA+DQordGhvICAgIDxjaGFyLTE2Nj48Y2hhci0xOTA+PGNoYXItMTYxPg0KK3Rob28gICA8Y2hhci0xNjc+PGNoYXItMTkwPjxjaGFyLTE2MT4NCit0aE8gICAgPGNoYXItMTY3PjxjaGFyLTE5MD48Y2hhci0xNjE+DQordGhhdSAgIDxjaGFyLTE2Nj48Y2hhci0xOTA+PGNoYXItMTk5Pg0KKw0KK3cgICAgICA8Y2hhci0yNDM+DQord2EgICAgIDxjaGFyLTE5MT4NCit3YWEgICAgPGNoYXItMTkxPjxjaGFyLTE2MT4NCit3QSAgICAgPGNoYXItMTkxPjxjaGFyLTE2MT4NCit3aSAgICAgPGNoYXItMTkxPjxjaGFyLTE2Mj4NCit3aWkgICAgPGNoYXItMTkxPjxjaGFyLTE2Mz4NCit3SSAgICAgPGNoYXItMTkxPjxjaGFyLTE2Mz4NCit3dSAgICAgPGNoYXItMjA5Pg0KK3d1dSAgICA8Y2hhci0yMjU+DQord1UgICAgIDxjaGFyLTIyNT4NCit3ZSAgICAgPGNoYXItMTY2PjxjaGFyLTE5MT4NCit3ZWUgICAgPGNoYXItMTY3PjxjaGFyLTE5MT4NCit3RSAgICAgPGNoYXItMTY3PjxjaGFyLTE5MT4NCit3YWkgICAgPGNoYXItMTY4PjxjaGFyLTE5MT4NCit3byAgICAgPGNoYXItMTY2PjxjaGFyLTE5MT48Y2hhci0xNjE+DQord29vICAgIDxjaGFyLTE2Nz48Y2hhci0xOTE+PGNoYXItMTYxPg0KK3dPICAgICA8Y2hhci0xNjc+PGNoYXItMTkxPjxjaGFyLTE2MT4NCit3YXUgICAgPGNoYXItMTY2PjxjaGFyLTE5MT48Y2hhci0xOTk+DQorDQorbi0gICAgIDxjaGFyLTI0Mz4NCituLWEgICAgPGNoYXItMTkxPg0KK24tYWEgICA8Y2hhci0xOTE+PGNoYXItMTYxPg0KK24tQSAgICA8Y2hhci0xOTE+PGNoYXItMTYxPg0KK24taSAgICA8Y2hhci0xOTE+PGNoYXItMTYyPg0KK24taWkgICA8Y2hhci0xOTE+PGNoYXItMTYzPg0KK24tSSAgICA8Y2hhci0xOTE+PGNoYXItMTYzPg0KK24tdSAgICA8Y2hhci0yMDk+DQorbi11dSAgIDxjaGFyLTIyNT4NCituLVUgICAgPGNoYXItMjI1Pg0KK24tZSAgICA8Y2hhci0xNjY+PGNoYXItMTkxPg0KK24tZWUgICA8Y2hhci0xNjc+PGNoYXItMTkxPg0KK24tRSAgICA8Y2hhci0xNjc+PGNoYXItMTkxPg0KK24tYWkgICA8Y2hhci0xNjg+PGNoYXItMTkxPg0KK24tbyAgICA8Y2hhci0xNjY+PGNoYXItMTkxPjxjaGFyLTE2MT4NCituLW9vICAgPGNoYXItMTY3PjxjaGFyLTE5MT48Y2hhci0xNjE+DQorbi1PICAgIDxjaGFyLTE2Nz48Y2hhci0xOTE+PGNoYXItMTYxPg0KK24tYXUgICA8Y2hhci0xNjY+PGNoYXItMTkxPjxjaGFyLTE5OT4NCisNCitwICAgICAgPGNoYXItMjQ0Pg0KK3BhICAgICA8Y2hhci0xOTI+DQorcGFhICAgIDxjaGFyLTE5Mj48Y2hhci0xNjE+DQorcEEgICAgIDxjaGFyLTE5Mj48Y2hhci0xNjE+DQorcGkgICAgIDxjaGFyLTE5Mj48Y2hhci0xNjI+DQorcGlpICAgIDxjaGFyLTE5Mj48Y2hhci0xNjM+DQorcEkgICAgIDxjaGFyLTE5Mj48Y2hhci0xNjM+DQorcHUgICAgIDxjaGFyLTIxMD4NCitwdXUgICAgPGNoYXItMjI2Pg0KK3BVICAgICA8Y2hhci0yMjY+DQorcGUgICAgIDxjaGFyLTE2Nj48Y2hhci0xOTI+DQorcGVlICAgIDxjaGFyLTE2Nz48Y2hhci0xOTI+DQorcEUgICAgIDxjaGFyLTE2Nz48Y2hhci0xOTI+DQorcGFpICAgIDxjaGFyLTE2OD48Y2hhci0xOTI+DQorcG8gICAgIDxjaGFyLTE2Nj48Y2hhci0xOTI+PGNoYXItMTYxPg0KK3BvbyAgICA8Y2hhci0xNjc+PGNoYXItMTkyPjxjaGFyLTE2MT4NCitwTyAgICAgPGNoYXItMTY3PjxjaGFyLTE5Mj48Y2hhci0xNjE+DQorcGF1ICAgIDxjaGFyLTE2Nj48Y2hhci0xOTI+PGNoYXItMTk5Pg0KKw0KK2IgICAgICA8Y2hhci0yNDQ+DQorYmEgICAgIDxjaGFyLTE5Mj4NCitiYWEgICAgPGNoYXItMTkyPjxjaGFyLTE2MT4NCitiQSAgICAgPGNoYXItMTkyPjxjaGFyLTE2MT4NCitiaSAgICAgPGNoYXItMTkyPjxjaGFyLTE2Mj4NCitiaWkgICAgPGNoYXItMTkyPjxjaGFyLTE2Mz4NCitiSSAgICAgPGNoYXItMTkyPjxjaGFyLTE2Mz4NCitidSAgICAgPGNoYXItMjEwPg0KK2J1dSAgICA8Y2hhci0yMjY+DQorYlUgICAgIDxjaGFyLTIyNj4NCitiZSAgICAgPGNoYXItMTY2PjxjaGFyLTE5Mj4NCitiZWUgICAgPGNoYXItMTY3PjxjaGFyLTE5Mj4NCitiRSAgICAgPGNoYXItMTY3PjxjaGFyLTE5Mj4NCitiYWkgICAgPGNoYXItMTY4PjxjaGFyLTE5Mj4NCitibyAgICAgPGNoYXItMTY2PjxjaGFyLTE5Mj48Y2hhci0xNjE+DQorYm9vICAgIDxjaGFyLTE2Nz48Y2hhci0xOTI+PGNoYXItMTYxPg0KK2JPICAgICA8Y2hhci0xNjc+PGNoYXItMTkyPjxjaGFyLTE2MT4NCitiYXUgICAgPGNoYXItMTY2PjxjaGFyLTE5Mj48Y2hhci0xOTk+DQorDQorbSAgICAgIDxjaGFyLTI0NT4NCittYSAgICAgPGNoYXItMTkzPg0KK21hYSAgICA8Y2hhci0xOTM+PGNoYXItMTYxPg0KK21BICAgICA8Y2hhci0xOTM+PGNoYXItMTYxPg0KK21pICAgICA8Y2hhci0xOTM+PGNoYXItMTYyPg0KK21paSAgICA8Y2hhci0xOTM+PGNoYXItMTYzPg0KK21JICAgICA8Y2hhci0xOTM+PGNoYXItMTYzPg0KK211ICAgICA8Y2hhci0yMTE+DQorbXV1ICAgIDxjaGFyLTIyNz4NCittVSAgICAgPGNoYXItMjI3Pg0KK21lICAgICA8Y2hhci0xNjY+PGNoYXItMTkzPg0KK21lZSAgICA8Y2hhci0xNjc+PGNoYXItMTkzPg0KK21FICAgICA8Y2hhci0xNjc+PGNoYXItMTkzPg0KK21haSAgICA8Y2hhci0xNjg+PGNoYXItMTkzPg0KK21vICAgICA8Y2hhci0xNjY+PGNoYXItMTkzPjxjaGFyLTE2MT4NCittb28gICAgPGNoYXItMTY3PjxjaGFyLTE5Mz48Y2hhci0xNjE+DQorbU8gICAgIDxjaGFyLTE2Nz48Y2hhci0xOTM+PGNoYXItMTYxPg0KK21hdSAgICA8Y2hhci0xNjY+PGNoYXItMTkzPjxjaGFyLTE5OT4NCisNCit5ICAgICAgPGNoYXItMjQ2Pg0KK3lhICAgICA8Y2hhci0xOTQ+DQoreWFhICAgIDxjaGFyLTE5ND48Y2hhci0xNjE+DQoreUEgICAgIDxjaGFyLTE5ND48Y2hhci0xNjE+DQoreWkgICAgIDxjaGFyLTE5ND48Y2hhci0xNjI+DQoreWlpICAgIDxjaGFyLTE5ND48Y2hhci0xNjM+DQoreUkgICAgIDxjaGFyLTE5ND48Y2hhci0xNjM+DQoreXUgICAgIDxjaGFyLTIxMj4NCit5dXUgICAgPGNoYXItMjI4Pg0KK3lVICAgICA8Y2hhci0yMjg+DQoreWUgICAgIDxjaGFyLTE2Nj48Y2hhci0xOTQ+DQoreWVlICAgIDxjaGFyLTE2Nz48Y2hhci0xOTQ+DQoreUUgICAgIDxjaGFyLTE2Nz48Y2hhci0xOTQ+DQoreWFpICAgIDxjaGFyLTE2OD48Y2hhci0xOTQ+DQoreW8gICAgIDxjaGFyLTE2Nj48Y2hhci0xOTQ+PGNoYXItMTYxPg0KK3lvbyAgICA8Y2hhci0xNjc+PGNoYXItMTk0PjxjaGFyLTE2MT4NCit5TyAgICAgPGNoYXItMTY3PjxjaGFyLTE5ND48Y2hhci0xNjE+DQoreWF1ICAgIDxjaGFyLTE2Nj48Y2hhci0xOTQ+PGNoYXItMTk5Pg0KKw0KK3IgICAgICA8Y2hhci0yNDc+DQorcmEgICAgIDxjaGFyLTE5NT4NCityYWEgICAgPGNoYXItMTk1PjxjaGFyLTE2MT4NCityQSAgICAgPGNoYXItMTk1PjxjaGFyLTE2MT4NCityaSAgICAgPGNoYXItMTk1PjxjaGFyLTE2Mj4NCityaWkgICAgPGNoYXItMTk1PjxjaGFyLTE2Mz4NCitySSAgICAgPGNoYXItMTk1PjxjaGFyLTE2Mz4NCitydSAgICAgPGNoYXItMjEzPg0KK3J1dSAgICA8Y2hhci0yMjk+DQorclUgICAgIDxjaGFyLTIyOT4NCityZSAgICAgPGNoYXItMTY2PjxjaGFyLTE5NT4NCityZWUgICAgPGNoYXItMTY3PjxjaGFyLTE5NT4NCityRSAgICAgPGNoYXItMTY3PjxjaGFyLTE5NT4NCityYWkgICAgPGNoYXItMTY4PjxjaGFyLTE5NT4NCitybyAgICAgPGNoYXItMTY2PjxjaGFyLTE5NT48Y2hhci0xNjE+DQorcm9vICAgIDxjaGFyLTE2Nz48Y2hhci0xOTU+PGNoYXItMTYxPg0KK3JPICAgICA8Y2hhci0xNjc+PGNoYXItMTk1PjxjaGFyLTE2MT4NCityYXUgICAgPGNoYXItMTY2PjxjaGFyLTE5NT48Y2hhci0xOTk+DQorDQorbCAgICAgIDxjaGFyLTI0OD4NCitsYSAgICAgPGNoYXItMTk2Pg0KK2xhYSAgICA8Y2hhci0xOTY+PGNoYXItMTYxPg0KK2xBICAgICA8Y2hhci0xOTY+PGNoYXItMTYxPg0KK2xpICAgICA8Y2hhci0xOTY+PGNoYXItMTYyPg0KK2xpaSAgICA8Y2hhci0xOTY+PGNoYXItMTYzPg0KK2xJICAgICA8Y2hhci0xOTY+PGNoYXItMTYzPg0KK2x1ICAgICA8Y2hhci0yMTQ+DQorbHV1ICAgIDxjaGFyLTIzMD4NCitsVSAgICAgPGNoYXItMjMwPg0KK2xlICAgICA8Y2hhci0xNjY+PGNoYXItMTk2Pg0KK2xlZSAgICA8Y2hhci0xNjc+PGNoYXItMTk2Pg0KK2xFICAgICA8Y2hhci0xNjc+PGNoYXItMTk2Pg0KK2xhaSAgICA8Y2hhci0xNjg+PGNoYXItMTk2Pg0KK2xvICAgICA8Y2hhci0xNjY+PGNoYXItMTk2PjxjaGFyLTE2MT4NCitsb28gICAgPGNoYXItMTY3PjxjaGFyLTE5Nj48Y2hhci0xNjE+DQorbE8gICAgIDxjaGFyLTE2Nz48Y2hhci0xOTY+PGNoYXItMTYxPg0KK2xhdSAgICA8Y2hhci0xNjY+PGNoYXItMTk2PjxjaGFyLTE5OT4NCisNCit2ICAgICAgPGNoYXItMjQ5Pg0KK3ZhICAgICA8Y2hhci0xOTc+DQordmFhICAgIDxjaGFyLTE5Nz48Y2hhci0xNjE+DQordkEgICAgIDxjaGFyLTE5Nz48Y2hhci0xNjE+DQordmkgICAgIDxjaGFyLTE5Nz48Y2hhci0xNjI+DQordmlpICAgIDxjaGFyLTE5Nz48Y2hhci0xNjM+DQordkkgICAgIDxjaGFyLTE5Nz48Y2hhci0xNjM+DQordnUgICAgIDxjaGFyLTIxNT4NCit2dXUgICAgPGNoYXItMjMxPg0KK3ZVICAgICA8Y2hhci0yMzE+DQordmUgICAgIDxjaGFyLTE2Nj48Y2hhci0xOTc+DQordmVlICAgIDxjaGFyLTE2Nz48Y2hhci0xOTc+DQordkUgICAgIDxjaGFyLTE2Nz48Y2hhci0xOTc+DQordmFpICAgIDxjaGFyLTE2OD48Y2hhci0xOTc+DQordm8gICAgIDxjaGFyLTE2Nj48Y2hhci0xOTc+PGNoYXItMTYxPg0KK3ZvbyAgICA8Y2hhci0xNjc+PGNoYXItMTk3PjxjaGFyLTE2MT4NCit2TyAgICAgPGNoYXItMTY3PjxjaGFyLTE5Nz48Y2hhci0xNjE+DQordmF1ICAgIDxjaGFyLTE2Nj48Y2hhci0xOTc+PGNoYXItMTk5Pg0KKw0KK3ogICAgICA8Y2hhci0yNTA+DQoremEgICAgIDxjaGFyLTE5OD4NCit6YWEgICAgPGNoYXItMTk4PjxjaGFyLTE2MT4NCit6QSAgICAgPGNoYXItMTk4PjxjaGFyLTE2MT4NCit6aSAgICAgPGNoYXItMTk4PjxjaGFyLTE2Mj4NCit6aWkgICAgPGNoYXItMTk4PjxjaGFyLTE2Mz4NCit6SSAgICAgPGNoYXItMTk4PjxjaGFyLTE2Mz4NCit6dSAgICAgPGNoYXItMjE2Pg0KK3p1dSAgICA8Y2hhci0yMzI+DQorelUgICAgIDxjaGFyLTIzMj4NCit6ZSAgICAgPGNoYXItMTY2PjxjaGFyLTE5OD4NCit6ZWUgICAgPGNoYXItMTY3PjxjaGFyLTE5OD4NCit6RSAgICAgPGNoYXItMTY3PjxjaGFyLTE5OD4NCit6YWkgICAgPGNoYXItMTY4PjxjaGFyLTE5OD4NCit6byAgICAgPGNoYXItMTY2PjxjaGFyLTE5OD48Y2hhci0xNjE+DQorem9vICAgIDxjaGFyLTE2Nz48Y2hhci0xOTg+PGNoYXItMTYxPg0KK3pPICAgICA8Y2hhci0xNjc+PGNoYXItMTk4PjxjaGFyLTE2MT4NCit6YXUgICAgPGNoYXItMTY2PjxjaGFyLTE5OD48Y2hhci0xOTk+DQorDQorTCAgICAgIDxjaGFyLTI1MT4NCitMYSAgICAgPGNoYXItMTk5Pg0KK0xhYSAgICA8Y2hhci0xOTk+PGNoYXItMTYxPg0KK0xBICAgICA8Y2hhci0xOTk+PGNoYXItMTYxPg0KK0xpICAgICA8Y2hhci0xOTk+PGNoYXItMTYyPg0KK0xpaSAgICA8Y2hhci0xOTk+PGNoYXItMTYzPg0KK0xJICAgICA8Y2hhci0xOTk+PGNoYXItMTYzPg0KK0x1ICAgICA8Y2hhci0yMTc+DQorTHV1ICAgIDxjaGFyLTIzMz4NCitMVSAgICAgPGNoYXItMjMzPg0KK0xlICAgICA8Y2hhci0xNjY+PGNoYXItMTk5Pg0KK0xlZSAgICA8Y2hhci0xNjc+PGNoYXItMTk5Pg0KK0xFICAgICA8Y2hhci0xNjc+PGNoYXItMTk5Pg0KK0xhaSAgICA8Y2hhci0xNjg+PGNoYXItMTk5Pg0KK0xvICAgICA8Y2hhci0xNjY+PGNoYXItMTk5PjxjaGFyLTE2MT4NCitMb28gICAgPGNoYXItMTY3PjxjaGFyLTE5OT48Y2hhci0xNjE+DQorTE8gICAgIDxjaGFyLTE2Nz48Y2hhci0xOTk+PGNoYXItMTYxPg0KK0xhdSAgICA8Y2hhci0xNjY+PGNoYXItMTk5PjxjaGFyLTE5OT4NCisNCitSICAgICAgPGNoYXItMjUyPg0KK1JhICAgICA8Y2hhci0yMDA+DQorUmFhICAgIDxjaGFyLTIwMD48Y2hhci0xNjE+DQorUkEgICAgIDxjaGFyLTIwMD48Y2hhci0xNjE+DQorUmkgICAgIDxjaGFyLTIwMD48Y2hhci0xNjI+DQorUmlpICAgIDxjaGFyLTIwMD48Y2hhci0xNjM+DQorUkkgICAgIDxjaGFyLTIwMD48Y2hhci0xNjM+DQorUnUgICAgIDxjaGFyLTIxOD4NCitSdXUgICAgPGNoYXItMjM0Pg0KK1JVICAgICA8Y2hhci0yMzQ+DQorUmUgICAgIDxjaGFyLTE2Nj48Y2hhci0yMDA+DQorUmVlICAgIDxjaGFyLTE2Nz48Y2hhci0yMDA+DQorUkUgICAgIDxjaGFyLTE2Nz48Y2hhci0yMDA+DQorUmFpICAgIDxjaGFyLTE2OD48Y2hhci0yMDA+DQorUm8gICAgIDxjaGFyLTE2Nj48Y2hhci0yMDA+PGNoYXItMTYxPg0KK1JvbyAgICA8Y2hhci0xNjc+PGNoYXItMjAwPjxjaGFyLTE2MT4NCitSTyAgICAgPGNoYXItMTY3PjxjaGFyLTIwMD48Y2hhci0xNjE+DQorUmF1ICAgIDxjaGFyLTE2Nj48Y2hhci0yMDA+PGNoYXItMTk5Pg0KKw0KK24gICAgICA8Y2hhci0yNTM+DQorbmEgICAgIDxjaGFyLTIwMT4NCituYWEgICAgPGNoYXItMjAxPjxjaGFyLTE2MT4NCituQSAgICAgPGNoYXItMjAxPjxjaGFyLTE2MT4NCituaSAgICAgPGNoYXItMjAxPjxjaGFyLTE2Mj4NCituaWkgICAgPGNoYXItMjAxPjxjaGFyLTE2Mz4NCituSSAgICAgPGNoYXItMjAxPjxjaGFyLTE2Mz4NCitudSAgICAgPGNoYXItMjE5Pg0KK251dSAgICA8Y2hhci0yMzU+DQorblUgICAgIDxjaGFyLTIzNT4NCituZSAgICAgPGNoYXItMTY2PjxjaGFyLTIwMT4NCituZWUgICAgPGNoYXItMTY3PjxjaGFyLTIwMT4NCituRSAgICAgPGNoYXItMTY3PjxjaGFyLTIwMT4NCituYWkgICAgPGNoYXItMTY4PjxjaGFyLTIwMT4NCitubyAgICAgPGNoYXItMTY2PjxjaGFyLTIwMT48Y2hhci0xNjE+DQorbm9vICAgIDxjaGFyLTE2Nz48Y2hhci0yMDE+PGNoYXItMTYxPg0KK25PICAgICA8Y2hhci0xNjc+PGNoYXItMjAxPjxjaGFyLTE2MT4NCituYXUgICAgPGNoYXItMTY2PjxjaGFyLTIwMT48Y2hhci0xOTk+DQorDQorIiBHcmFudGhhIGxldHRlcnMNCitqICAgICAgPGNoYXItMTM2Pg0KK2phICAgICA8Y2hhci0xMzE+DQoramFhICAgIDxjaGFyLTEzMT48Y2hhci0xNjE+DQorakEgICAgIDxjaGFyLTEzMT48Y2hhci0xNjE+DQoramkgICAgIDxjaGFyLTEzMT48Y2hhci0xNjI+DQoramlpICAgIDxjaGFyLTEzMT48Y2hhci0xNjM+DQorakkgICAgIDxjaGFyLTEzMT48Y2hhci0xNjM+DQoranUgICAgIDxjaGFyLTEzMT48Y2hhci0xNjQ+DQoranV1ICAgIDxjaGFyLTEzMT48Y2hhci0xNjQ+DQoralUgICAgIDxjaGFyLTEzMT48Y2hhci0xNjU+DQoramUgICAgIDxjaGFyLTE2Nj48Y2hhci0xMzE+DQoramVlICAgIDxjaGFyLTE2Nz48Y2hhci0xMzE+DQorakUgICAgIDxjaGFyLTE2Nz48Y2hhci0xMzE+DQoramFpICAgIDxjaGFyLTE2OD48Y2hhci0xMzE+DQoram8gICAgIDxjaGFyLTE2Nj48Y2hhci0xMzE+PGNoYXItMTYxPg0KK2pvbyAgICA8Y2hhci0xNjc+PGNoYXItMTMxPjxjaGFyLTE2MT4NCitqTyAgICAgPGNoYXItMTY3PjxjaGFyLTEzMT48Y2hhci0xNjE+DQoramF1ICAgIDxjaGFyLTE2Nj48Y2hhci0xMzE+PGNoYXItMTk5Pg0KKw0KK3NoICAgICA8Y2hhci0xMzc+DQorc2hhICAgIDxjaGFyLTEzMj4NCitzaGFhICAgPGNoYXItMTMyPjxjaGFyLTE2MT4NCitzaEEgICAgPGNoYXItMTMyPjxjaGFyLTE2MT4NCitzaGkgICAgPGNoYXItMTMyPjxjaGFyLTE2Mj4NCitzaGlpICAgPGNoYXItMTMyPjxjaGFyLTE2Mz4NCitzaEkgICAgPGNoYXItMTMyPjxjaGFyLTE2Mz4NCitzaHUgICAgPGNoYXItMTMxPjxjaGFyLTE2ND4NCitzaHV1ICAgPGNoYXItMTMxPjxjaGFyLTE2ND4NCitzaFUgICAgPGNoYXItMTMxPjxjaGFyLTE2NT4NCitzaGUgICAgPGNoYXItMTY2PjxjaGFyLTEzMj4NCitzaGVlICAgPGNoYXItMTY3PjxjaGFyLTEzMj4NCitzaEUgICAgPGNoYXItMTY3PjxjaGFyLTEzMj4NCitzaGFpICAgPGNoYXItMTY4PjxjaGFyLTEzMj4NCitzaG8gICAgPGNoYXItMTY2PjxjaGFyLTEzMj48Y2hhci0xNjE+DQorc2hvbyAgIDxjaGFyLTE2Nz48Y2hhci0xMzI+PGNoYXItMTYxPg0KK3NoTyAgICA8Y2hhci0xNjc+PGNoYXItMTMyPjxjaGFyLTE2MT4NCitzaGF1ICAgPGNoYXItMTY2PjxjaGFyLTEzMj48Y2hhci0xOTk+DQorDQorUyAgICAgIDxjaGFyLTEzOD4NCitTYSAgICAgPGNoYXItMTMzPg0KK1NhYSAgICA8Y2hhci0xMzM+PGNoYXItMTYxPg0KK1NBICAgICA8Y2hhci0xMzM+PGNoYXItMTYxPg0KK1NpICAgICA8Y2hhci0xMzM+PGNoYXItMTYyPg0KK1NpaSAgICA8Y2hhci0xMzM+PGNoYXItMTYzPg0KK1NJICAgICA8Y2hhci0xMzM+PGNoYXItMTYzPg0KK1N1ICAgICA8Y2hhci0xMzM+PGNoYXItMTY0Pg0KK1N1dSAgICA8Y2hhci0xMzM+PGNoYXItMTY1Pg0KK1NVICAgICA8Y2hhci0xMzM+PGNoYXItMTY1Pg0KK1NlICAgICA8Y2hhci0xNjY+PGNoYXItMTMzPg0KK1NlZSAgICA8Y2hhci0xNjc+PGNoYXItMTMzPg0KK1NFICAgICA8Y2hhci0xNjc+PGNoYXItMTMzPg0KK1NhaSAgICA8Y2hhci0xNjg+PGNoYXItMTMzPg0KK1NvICAgICA8Y2hhci0xNjY+PGNoYXItMTMzPjxjaGFyLTE2MT4NCitTb28gICAgPGNoYXItMTY3PjxjaGFyLTEzMz48Y2hhci0xNjE+DQorU08gICAgIDxjaGFyLTE2Nz48Y2hhci0xMzM+PGNoYXItMTYxPg0KK1NhdSAgICA8Y2hhci0xNjY+PGNoYXItMTMzPjxjaGFyLTE5OT4NCisNCitoICAgICAgPGNoYXItMTM5Pg0KK2hhICAgICA8Y2hhci0xMzQ+DQoraGFhICAgIDxjaGFyLTEzND48Y2hhci0xNjE+DQoraEEgICAgIDxjaGFyLTEzND48Y2hhci0xNjE+DQoraGkgICAgIDxjaGFyLTEzND48Y2hhci0xNjI+DQoraGlpICAgIDxjaGFyLTEzND48Y2hhci0xNjM+DQoraEkgICAgIDxjaGFyLTEzND48Y2hhci0xNjM+DQoraHUgICAgIDxjaGFyLTEzND48Y2hhci0xNjQ+DQoraHV1ICAgIDxjaGFyLTEzND48Y2hhci0xNjU+DQoraFUgICAgIDxjaGFyLTEzND48Y2hhci0xNjU+DQoraGUgICAgIDxjaGFyLTE2Nj48Y2hhci0xMzQ+DQoraGVlICAgIDxjaGFyLTE2Nz48Y2hhci0xMzQ+DQoraEUgICAgIDxjaGFyLTE2Nz48Y2hhci0xMzQ+DQoraGFpICAgIDxjaGFyLTE2OD48Y2hhci0xMzQ+DQoraG8gICAgIDxjaGFyLTE2Nj48Y2hhci0xMzQ+PGNoYXItMTYxPg0KK2hvbyAgICA8Y2hhci0xNjc+PGNoYXItMTM0PjxjaGFyLTE2MT4NCitoTyAgICAgPGNoYXItMTY3PjxjaGFyLTEzND48Y2hhci0xNjE+DQoraGF1ICAgIDxjaGFyLTE2Nj48Y2hhci0xMzQ+PGNoYXItMTk5Pg0KKw0KK3ggICAgICA8Y2hhci0xNDA+DQoreGEgICAgIDxjaGFyLTEzNT4NCit4YWEgICAgPGNoYXItMTM1PjxjaGFyLTE2MT4NCit4QSAgICAgPGNoYXItMTM1PjxjaGFyLTE2MT4NCit4aSAgICAgPGNoYXItMTM1PjxjaGFyLTE2Mj4NCit4aWkgICAgPGNoYXItMTM1PjxjaGFyLTE2Mz4NCit4SSAgICAgPGNoYXItMTM1PjxjaGFyLTE2Mz4NCit4dSAgICAgPGNoYXItMTM1PjxjaGFyLTE2ND4NCit4dXUgICAgPGNoYXItMTM1PjxjaGFyLTE2NT4NCit4VSAgICAgPGNoYXItMTM1PjxjaGFyLTE2NT4NCit4ZSAgICAgPGNoYXItMTY2PjxjaGFyLTEzNT4NCit4ZWUgICAgPGNoYXItMTY3PjxjaGFyLTEzNT4NCit4RSAgICAgPGNoYXItMTY3PjxjaGFyLTEzNT4NCit4YWkgICAgPGNoYXItMTY4PjxjaGFyLTEzNT4NCit4byAgICAgPGNoYXItMTY2PjxjaGFyLTEzNT48Y2hhci0xNjE+DQoreG9vICAgIDxjaGFyLTE2Nz48Y2hhci0xMzU+PGNoYXItMTYxPg0KK3hPICAgICA8Y2hhci0xNjc+PGNoYXItMTM1PjxjaGFyLTE2MT4NCit4YXUgICAgPGNoYXItMTY2PjxjaGFyLTEzNT48Y2hhci0xOTk+DQorDQorc3JpICAgICA8Y2hhci0xMzA+DQorDQpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvZXJ1YnkudmltIGIvcnVudGltZS9zeW50YXgvZXJ1YnkudmltCmluZGV4IDg1YjNjZmIuLjU5ZjA0MmQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2VydWJ5LnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9lcnVieS52aW0KQEAgLTEwLDcgKzEwLDYgQEAKICIgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICIgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogIiAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCkBAIC0zMyw5ICszMiwxMiBAQAogICBzeW4gaW5jbHVkZSBAcnVieVRvcCBzeW50YXgvcnVieS52aW0KIGVuZGlmCiAKLXN5biByZWdpb24gZXJ1YnlPbmVMaW5lciBtYXRjaGdyb3VwPWVydWJ5RGVsaW1pdGVyIHN0YXJ0PSJeXHMqXHpzJSIgZW5kPSIkIiAgY29udGFpbnM9QHJ1YnlUb3AsZXJ1YnlEZWxpbWl0ZXIga2VlcGVuZAotc3luIHJlZ2lvbiBlcnVieUJsb2NrICAgIG1hdGNoZ3JvdXA9ZXJ1YnlEZWxpbWl0ZXIgc3RhcnQ9IjwlPVw9IiAgICBlbmQ9IiU+IiBjb250YWlucz1AcnVieVRvcCBjb250YWluZWRpbj1BTExCVVQsZXJ1YnlDb21tZW50IGtlZXBlbmQgCi1zeW4gcmVnaW9uIGVydWJ5Q29tbWVudCAgbWF0Y2hncm91cD1lcnVieURlbGltaXRlciBzdGFydD0iPCUjIiAgICAgIGVuZD0iJT4iIGtlZXBlbmQKK3N5biBjbHVzdGVyIGVydWJ5UmVnaW9ucyBjb250YWlucz1lcnVieU9uZUxpbmVyLGVydWJ5QmxvY2ssZXJ1YnlFeHByZXNzaW9uLGVydWJ5Q29tbWVudAorCitzeW4gcmVnaW9uICBlcnVieU9uZUxpbmVyICAgbWF0Y2hncm91cD1lcnVieURlbGltaXRlciBzdGFydD0iXiUlXEAhIiBlbmQ9IiQiICBjb250YWlucz1AcnVieVRvcAkgICAgICAgY29udGFpbmVkaW49QUxMQlVULEBlcnVieVJlZ2lvbnMga2VlcGVuZCBvbmVsaW5lCitzeW4gcmVnaW9uICBlcnVieUJsb2NrCSAgICBtYXRjaGdyb3VwPWVydWJ5RGVsaW1pdGVyIHN0YXJ0PSI8JSVcQCEiIGVuZD0iJT4iIGNvbnRhaW5zPUBydWJ5VG9wCSAgICAgICBjb250YWluZWRpbj1BTExCVVQsQGVydWJ5UmVnaW9ucworc3luIHJlZ2lvbiAgZXJ1YnlFeHByZXNzaW9uIG1hdGNoZ3JvdXA9ZXJ1YnlEZWxpbWl0ZXIgc3RhcnQ9IjwlPSIgICAgZW5kPSIlPiIgY29udGFpbnM9QHJ1YnlUb3AJICAgICAgIGNvbnRhaW5lZGluPUFMTEJVVCxAZXJ1YnlSZWdpb25zCitzeW4gcmVnaW9uICBlcnVieUNvbW1lbnQgICAgbWF0Y2hncm91cD1lcnVieURlbGltaXRlciBzdGFydD0iPCUjIiAgICBlbmQ9IiU+IiBjb250YWlucz1ydWJ5VG9kbyxAU3BlbGwgY29udGFpbmVkaW49QUxMQlVULEBlcnVieVJlZ2lvbnMga2VlcGVuZAogCiAiIERlZmluZSB0aGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCiAiIEZvciB2ZXJzaW9uIDUuNyBhbmQgZWFybGllcjogb25seSB3aGVuIG5vdCBkb25lIGFscmVhZHkKQEAgLTU5LDQgKzYxLDQgQEAKICAgdW5sZXQgbWFpbl9zeW50YXgKIGVuZGlmCiAKLSIgdmltOiBzdz0yIHN0cz0yIHRzPTggZmY9dW5peCBub3dyYXA6CisiIHZpbTogbm93cmFwIHN3PTIgc3RzPTIgdHM9OCBmZj11bml4OgpkaWZmIC0tZ2l0IGEvc3JjL29wcy5jIGIvc3JjL29wcy5jCmluZGV4IGIxYjIyYTQuLmRjMGU1MmIgMTAwNjQ0Ci0tLSBhL3NyYy9vcHMuYworKysgYi9zcmMvb3BzLmMKQEAgLTIxNDAsOCArMjE0MCw4IEBACiAgICAgcG9zX1QJCXBvczsKICNpZmRlZiBGRUFUX1ZJU1VBTAogICAgIHN0cnVjdCBibG9ja19kZWYJYmQ7Ci0jZW5kaWYKICAgICBpbnQJCQl0b2RvOworI2VuZGlmCiAgICAgaW50CQkJZGlkX2NoYW5nZSA9IDA7CiAKICAgICBpZiAodV9zYXZlKChsaW5lbnJfVCkob2FwLT5zdGFydC5sbnVtIC0gMSksCkBAIC0yMTU4LDEwICsyMTU4LDEwIEBACiAJICAgIHBvcy5jb2wgPSBiZC50ZXh0Y29sOwogCSAgICBmb3IgKHRvZG8gPSBiZC50ZXh0bGVuOyB0b2RvID4gMDsgLS10b2RvKQogCSAgICB7Ci0jaWZkZWYgRkVBVF9NQllURQorIyBpZmRlZiBGRUFUX01CWVRFCiAJCWlmIChoYXNfbWJ5dGUpCiAJCSAgICB0b2RvIC09ICgqbWJfcHRyMmxlbikobWxfZ2V0X3BvcygmcG9zKSkgLSAxOwotI2VuZGlmCisjIGVuZGlmCiAJCWRpZF9jaGFuZ2UgfD0gc3dhcGNoYXIob2FwLT5vcF90eXBlLCAmcG9zKTsKIAkJaWYgKGluYygmcG9zKSA9PSAtMSkJICAgIC8qIGF0IGVuZCBvZiBmaWxlICovCiAJCSAgICBicmVhazsKQEAgLTIxOTUsMTYgKzIxOTUsMTMgQEAKIAllbHNlIGlmICghb2FwLT5pbmNsdXNpdmUpCiAJICAgIGRlYygmKG9hcC0+ZW5kKSk7CiAKLQlmb3IgKHRvZG8gPSBvYXAtPmVuZC5jb2wgLSBwb3MuY29sICsgMTsgdG9kbyA+IDA7IC0tdG9kbykKKwl3aGlsZSAobHRvcmVxKHBvcywgb2FwLT5lbmQpKQogCXsKLSNpZmRlZiBGRUFUX01CWVRFCi0JICAgIGlmIChoYXNfbWJ5dGUpCi0JCXRvZG8gLT0gKCptYl9wdHIybGVuKShtbF9nZXRfcG9zKCZwb3MpKSAtIDE7Ci0jZW5kaWYKIAkgICAgZGlkX2NoYW5nZSB8PSBzd2FwY2hhcihvYXAtPm9wX3R5cGUsICZwb3MpOwogCSAgICBpZiAoaW5jKCZwb3MpID09IC0xKSAgICAvKiBhdCBlbmQgb2YgZmlsZSAqLwogCQlicmVhazsKIAl9CisKIAlpZiAoZGlkX2NoYW5nZSkKIAl7CiAJICAgIGNoYW5nZWRfbGluZXMob2FwLT5zdGFydC5sbnVtLCBvYXAtPnN0YXJ0LmNvbCwgb2FwLT5lbmQubG51bSArIDEsCmRpZmYgLS1naXQgYS9zcmMvc2NyZWVuLmMgYi9zcmMvc2NyZWVuLmMKaW5kZXggNmUyNTQ3MS4uZjQ5N2YzNyAxMDA2NDQKLS0tIGEvc3JjL3NjcmVlbi5jCisrKyBiL3NyYy9zY3JlZW4uYwpAQCAtMjkzMSw3ICsyOTMxLDcgQEAKIAkgICAgd3AtPndfY3Vyc29yLmxudW0gPSBsbnVtOwogCSAgICB3cC0+d19jdXJzb3IuY29sID0gcHRyIC0gbGluZTsKIAkgICAgbGVuID0gc3BlbGxfbW92ZV90byh3cCwgRk9SV0FSRCwgVFJVRSwgVFJVRSwgJnNwZWxsX2F0dHIpOwotCSAgICBpZiAobGVuID09IDAgfHwgd3AtPndfY3Vyc29yLmNvbCA+IHB0ciAtIGxpbmUpCisJICAgIGlmIChsZW4gPT0gMCB8fCAoaW50KXdwLT53X2N1cnNvci5jb2wgPiBwdHIgLSBsaW5lKQogCSAgICB7CiAJCS8qIG5vIGJhZCB3b3JkIGZvdW5kIGF0IGxpbmUgc3RhcnQsIGRvbid0IGNoZWNrIHVudGlsIGVuZCBvZiBhCiAJCSAqIHdvcmQgKi8KZGlmZiAtLWdpdCBhL3NyYy9zZWFyY2guYyBiL3NyYy9zZWFyY2guYwppbmRleCA0NTZiNjk0Li4yZWQxNWRmIDEwMDY0NAotLS0gYS9zcmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC0xNDQwLDYgKzE0NDAsMTEgQEAKIAkvKiBGb3IgbXVsdGktYnl0ZSByZS11c2UgbGFzdCBieXRlc1tdIGFuZCBieXRlbGVuLiAqLwogICAgIH0KIAorICAgIGlmIChkaXIgPT0gQkFDS1dBUkQpCisJY2FwLT5vYXAtPmluY2x1c2l2ZSA9IEZBTFNFOworICAgIGVsc2UKKwljYXAtPm9hcC0+aW5jbHVzaXZlID0gVFJVRTsKKwogICAgIHAgPSBtbF9nZXRfY3VybGluZSgpOwogICAgIGNvbCA9IGN1cndpbi0+d19jdXJzb3IuY29sOwogICAgIGxlbiA9IChpbnQpU1RSTEVOKHApOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdDU4Lm9rIGIvc3JjL3Rlc3RkaXIvdGVzdDU4Lm9rCmluZGV4IDlmYmE2YmMuLjczNmU5OTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3Q1OC5vaworKysgYi9zcmMvdGVzdGRpci90ZXN0NTgub2sKQEAgLTM0LDcgKzM0LDcgQEAKIGTp9GwKIFsnZGVvbCcsICdk6fRyJywgJ3Rlc3QnXQogZW5kCi1bJ3B1dCcsICd0ZXN0JywgJ3VrJ10KK1sncHV0JywgJ09LJywgJ3Rlc3QnXQogdGhlCiBbJ3B1dCcsICd1aycsICd0ZXN0J10KIGdlYmxldGVnZWsKQEAgLTc1LDcgKzc1LDcgQEAKIGJhZAogWydwdXQnLCAndWsnLCAnT0snXQogaW5wdXRzCi1bJ2lucHV0JywgJ3B1dHMnLCAncHV0J10KK1snaW5wdXQnLCAncHV0cycsICdvdXRwdXRzJ10KIGNvbW1lbnQKIFsnQ29tbWVudCddCiBvawpAQCAtMTQzLDcgKzE0Myw3IEBACiBwcm8KIFsnYm9yaycsICdlbmQnLCAnd29yZCddCiBib3JrYm9ya2Jvcmtib3JrYm9ya2JvcmsKLVsnYm9ya2JvcmsgYm9ya2Jvcmtib3JrYm9yaycsICdib3JrYm9ya2JvcmsgYm9ya2Jvcmtib3JrJywgJ2Jvcmtib3JrYm9ya2Jvcmtib3JrIGJvcmsnXQorWydib3JrIGJvcmtib3JrYm9ya2Jvcmtib3JrJywgJ2Jvcmtib3JrIGJvcmtib3JrYm9ya2JvcmsnLCAnYm9ya2Jvcmtib3JrIGJvcmtib3JrYm9yayddCiB0b21hdG90b21hdG90b21hdG8KIFsndG9tYXRvIHRvbWF0b3RvbWF0bycsICd0b21hdG90b21hdG8gdG9tYXRvJywgJ3RvbWF0byB0b21hdG8gdG9tYXRvJ10KIGVuZHN0YXJ0CkBAIC0xNTMsMTMgKzE1MywxMyBAQAogc3RhcnRzdGFydAogWydzdGFydCBzdGFydCddCiB3b3JkZW5kCi1bJ3dvcmQgZW5kJywgJ3dvcmR3b3JkJywgJ3dvcmQnXQorWyd3b3JkIGVuZCcsICd3b3JkJywgJ3dvcmR3b3JkJ10KIHdvcmRzdGFydAogWyd3b3JkIHN0YXJ0JywgJ2Jvcmsgc3RhcnQnXQogc3RhcnR3b3Jkd29yZHdvcmR3b3JkZW5kCiBbJ3N0YXJ0d29yZHdvcmR3b3Jkd29yZCBlbmQnLCAnc3RhcnR3b3Jkd29yZHdvcmR3b3JkJywgJ3N0YXJ0IHdvcmR3b3Jkd29yZHdvcmQgZW5kJ10KIGJvcmtwcmVib3JrcHJlYm9ya2JvcmsKLVsnYm9ya3ByZWJvcmtwcmVib3JrIGJvcmsnLCAnYm9ya3ByZWJvcmsgcHJlYm9ya2JvcmsnLCAnYm9yayBwcmVib3JrcHJlYm9ya2JvcmsnXQorWydib3JrIHByZWJvcmtwcmVib3JrYm9yaycsICdib3JrcHJlYm9yayBwcmVib3JrYm9yaycsICdib3JrcHJlYm9ya3ByZWJvcmsgYm9yayddCiAKIHRlc3QgNS01CiAjIGZpbGU6IFh0ZXN0LmxhdGluMS5zcGwKQEAgLTIxMSw3ICsyMTEsNyBAQAogbWVlYTIKIFsnbWVlYTEnLCAnbWVlYeknLCAnbGVhZCddCiBwcmFiYXIKLVsncHJlYmFyJywgJ2xlYWRiYXInLCAnYmFyJ10KK1sncHJlYmFyJywgJ2JhcicsICdsZWFkYmFyJ10KIHByb2JhcmJpcmsKIFsncHJlYmFyYm9yayddCiBtaWRkbGUKQEAgLTI0Myw3ICsyNDMsNyBAQAogbWVlYTIKIFsnbWVlYTEnLCAnbWVlYeknLCAnbGVhZCddCiBwcmFiYXIKLVsncHJlYmFyJywgJ2xlYWRiYXInLCAnYmFyJ10KK1sncHJlYmFyJywgJ2JhcicsICdsZWFkYmFyJ10KIHByb2Jhcm1hYXQKIFsncHJlYmFybWVhdCddCiBtaWRkbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Q1OS5vayBiL3NyYy90ZXN0ZGlyL3Rlc3Q1OS5vawppbmRleCBjMzdlY2I4Li44ZjQ3NjY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0NTkub2sKKysrIGIvc3JjL3Rlc3RkaXIvdGVzdDU5Lm9rCkBAIC0zNCw3ICszNCw3IEBACiBkw6nDtGwKIFsnZGVvbCcsICdkw6nDtHInLCAndGVzdCddCiBlbmQKLVsncHV0JywgJ3Rlc3QnLCAndWsnXQorWydwdXQnLCAnT0snLCAndGVzdCddCiB0aGUKIFsncHV0JywgJ3VrJywgJ3Rlc3QnXQogZ2VibGV0ZWdlawpAQCAtNzUsNyArNzUsNyBAQAogYmFkCiBbJ3B1dCcsICd1aycsICdPSyddCiBpbnB1dHMKLVsnaW5wdXQnLCAncHV0cycsICdwdXQnXQorWydpbnB1dCcsICdwdXRzJywgJ291dHB1dHMnXQogY29tbWVudAogWydDb21tZW50J10KIG9rCkBAIC0xNDMsNyArMTQzLDcgQEAKIHBybwogWydib3JrJywgJ2VuZCcsICd3b3JkJ10KIGJvcmtib3JrYm9ya2Jvcmtib3JrYm9yawotWydib3JrYm9yayBib3JrYm9ya2Jvcmtib3JrJywgJ2Jvcmtib3JrYm9yayBib3JrYm9ya2JvcmsnLCAnYm9ya2Jvcmtib3JrYm9ya2JvcmsgYm9yayddCitbJ2JvcmsgYm9ya2Jvcmtib3JrYm9ya2JvcmsnLCAnYm9ya2JvcmsgYm9ya2Jvcmtib3JrYm9yaycsICdib3JrYm9ya2JvcmsgYm9ya2Jvcmtib3JrJ10KIHRvbWF0b3RvbWF0b3RvbWF0bwogWyd0b21hdG8gdG9tYXRvdG9tYXRvJywgJ3RvbWF0b3RvbWF0byB0b21hdG8nLCAndG9tYXRvIHRvbWF0byB0b21hdG8nXQogZW5kc3RhcnQKQEAgLTE1MywxMyArMTUzLDEzIEBACiBzdGFydHN0YXJ0CiBbJ3N0YXJ0IHN0YXJ0J10KIHdvcmRlbmQKLVsnd29yZCBlbmQnLCAnd29yZHdvcmQnLCAnd29yZCddCitbJ3dvcmQgZW5kJywgJ3dvcmQnLCAnd29yZHdvcmQnXQogd29yZHN0YXJ0CiBbJ3dvcmQgc3RhcnQnLCAnYm9yayBzdGFydCddCiBzdGFydHdvcmR3b3Jkd29yZHdvcmRlbmQKIFsnc3RhcnR3b3Jkd29yZHdvcmR3b3JkIGVuZCcsICdzdGFydHdvcmR3b3Jkd29yZHdvcmQnLCAnc3RhcnQgd29yZHdvcmR3b3Jkd29yZCBlbmQnXQogYm9ya3ByZWJvcmtwcmVib3JrYm9yawotWydib3JrcHJlYm9ya3ByZWJvcmsgYm9yaycsICdib3JrcHJlYm9yayBwcmVib3JrYm9yaycsICdib3JrIHByZWJvcmtwcmVib3JrYm9yayddCitbJ2JvcmsgcHJlYm9ya3ByZWJvcmtib3JrJywgJ2JvcmtwcmVib3JrIHByZWJvcmtib3JrJywgJ2JvcmtwcmVib3JrcHJlYm9yayBib3JrJ10KIAogdGVzdCA1LTUKICMgZmlsZTogWHRlc3QudXRmLTguc3BsCkBAIC0yMTEsNyArMjExLDcgQEAKIG1lZWEyCiBbJ21lZWExJywgJ21lZWHDqScsICdsZWFkJ10KIHByYWJhcgotWydwcmViYXInLCAnbGVhZGJhcicsICdiYXInXQorWydwcmViYXInLCAnYmFyJywgJ2xlYWRiYXInXQogcHJvYmFyYmlyawogWydwcmViYXJib3JrJ10KIG1pZGRsZQpAQCAtMjQzLDcgKzI0Myw3IEBACiBtZWVhMgogWydtZWVhMScsICdtZWVhw6knLCAnbGVhZCddCiBwcmFiYXIKLVsncHJlYmFyJywgJ2xlYWRiYXInLCAnYmFyJ10KK1sncHJlYmFyJywgJ2JhcicsICdsZWFkYmFyJ10KIHByb2Jhcm1hYXQKIFsncHJlYmFybWVhdCddCiBtaWRkbGUKZGlmZiAtLWdpdCBhL3NyYy92ZXJzaW9uLmggYi9zcmMvdmVyc2lvbi5oCmluZGV4IDk0MDJiNTEuLmY0YzllNzEgMTAwNjQ0Ci0tLSBhL3NyYy92ZXJzaW9uLmgKKysrIGIvc3JjL3ZlcnNpb24uaApAQCAtMzYsNSArMzYsNSBAQAogI2RlZmluZSBWSU1fVkVSU0lPTl9OT0RPVAkidmltNzBhYSIKICNkZWZpbmUgVklNX1ZFUlNJT05fU0hPUlQJIjcuMGFhIgogI2RlZmluZSBWSU1fVkVSU0lPTl9NRURJVU0JIjcuMGFhIEFMUEhBIgotI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBTZXAgMTQpIgotI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HX0RBVEUJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IFNlcCAxNCwgY29tcGlsZWQgIgorI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBTZXAgMTYpIgorI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HX0RBVEUJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IFNlcCAxNiwgY29tcGlsZWQgIgo=