ZGlmZiAtLWdpdCBhL3Bva3kvUkVBRE1FLkxTQiBiL3Bva3kvUkVBRE1FLkxTQgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVjYmU1NC4uMDAwMDAwMAotLS0gYS9wb2t5L1JFQURNRS5MU0IKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1PRS1Db3JlIGFpbXMgdG8gYmUgYWJsZSB0byBwcm92aWRlIGJhc2ljIExTQiBjb21wYXRpYmxlIGltYWdlcy4gVGhlcmUKLWFyZSBzb21lIGNoYWxsZW5nZXMgZm9yIE9FIGFzIExTQiBpc24ndCBhbHdheXMgMTAwJSByZWxldmFudCB0byBpdHMKLXRhcmdldCBlbWJlZGRlZCBhbmQgSW9UIGF1ZGllbmNlcy4gCi0KLU9uZSBjaGFsbGVuZ2UgaXMgdGhhdCB0aGUgTFNCIHNwZWMgaXMgbm8gbG9uZ2VyIGJlaW5nIGFjdGl2ZWx5Ci1kZXZlbG9wZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9MaW51eFN0YW5kYXJkQmFzZS9sc2JdIGFuZCBoYXMgCi1jb21wb25lbnRzIHdoaWNoIGFyZSBlbmQgb2YgbGlmZSBvciBzaWduaWZpY2FudGx5IGRhdGVkLiBPRSAKLXRoZXJlZm9yZSBwcm92aWRlcyBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGZvbGxvd2luZyBjYXZlYXRzOgotCi0qIFF0NCBpcyBwcm92aWRlZCBieSB0aGUgc2VwYXJhdGUgbWV0YS1xdDQgbGF5ZXIuIEl0cyBub3RlZCB0aGF0IFF0NCAKLSAgaXMgZW5kIG9mIGxpZmUgYW5kIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoZSBjb3JlIHByb2plY3QgcmVndWxhcmx5IAotICB0ZXN0cyBhbnkgbG9uZ2VyLiBVc2VycyBhcmUgcmVjb21tZW5kZWQgdG8gZ3JvdXAgdG9nZXRoZXIgdG8gc3VwcG9ydAotICBtYWludGVuYW5jZSBvZiB0aGF0IGxheWVyLiBbaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbWV0YS1xdDQvXQotCi0qIEdUSysgMiBpcyBwcm92aWRlZCBieSBtZXRhLW9lLiAgSXQgaXMgbm90ZWQgdGhhdCBHVEsrIDIgaXMgZW5kIG9mIGxpZmUKLSAgYW5kIHVzZSBvZiBHVEsrIDIgaXNuJ3QgcmVjb21tZW5kZWQuCi0KLSogbWFpbHggaGFzIGJlZW4gZHJvcHBlZCBzaW5jZSBpdHMgbm8gbG9uZ2VyIGJlaW5nIGRldmVsb3BlZCB1cHN0cmVhbSAKLSAgYW5kIHRoZXJlIGFyZSBiZXR0ZXIsIG1vcmUgbW9kZXJuIHJlcGxhY2VtZW50cyBzdWNoIGFzIHMtbmFpbCAKLSAgKGh0dHA6Ly9zZGFvZGVuLmV1L2NvZGUuaHRtbCkgb3IgbWFpbHV0aWxzIChodHRwOi8vbWFpbHV0aWxzLm9yZy8pLgotCi0qIEEgZmV3IHBlcmwgbW9kdWxlcyB0aGF0IHdlcmUgcmVxdWlyZWQgYnkgTFNCIDQueCBhcmVuJ3QgcHJvdmlkZWQ6Ci0gIGxpYmNsYXNzLWlzYSwgbGliZW52LCBsaWJkdW1wdmFsdWUsIGxpYmZpbGUtY2hlY2t0cmVlLAotICBsaWJpMThuLWNvbGxhdGUsIGxpYnBvZC1wbGFpbmVyLgotCi0qIGxpYnBuZyAxLjIgaXNuJ3QgcHJvdmlkZWQ7IG9lLWNvcmUgaW5jbHVkZXMgdGhlIGxhdGVzdCByZWxlYXNlIG9mIGxpYnBuZwotICBpbnN0ZWFkLgotCi0qIHBheCAoUE9TSVggc3RhbmRhcmQgYXJjaGl2ZSkgdG9vbCBpcyBub3QgcHJvdmlkZWQuCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwKaW5kZXggYTEyNWFkMy4uODg2MjI0MiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApAQCAtNDIwLDEzICs0MjAsMTcgQEAKICAgICAgRk9PID0gIjEyMyA0NTYgNzg5IDEyMzQ1NiAxMjMgNDU2IDEyMyA0NTYiCiAgICAgIEZPT19yZW1vdmUgPSAiMTIzIgogICAgICBGT09fcmVtb3ZlID0gIjQ1NiIKLSAgICAgRk9PMiA9ICJhYmMgZGVmIGdoaSBhYmNkZWYgYWJjIGRlZiBhYmMgZGVmIgotICAgICBGT08yX3JlbW92ZSA9ICJhYmMgZGVmIgorICAgICBGT08yID0gIiBhYmMgIGRlZiBnaGkgYWJjZGVmIGFiYyBkZWYgYWJjICBkZWYgZGVmIgorICAgICBGT08yX3JlbW92ZSA9ICIgXAorICAgICAgICAgZGVmIFwKKyAgICAgICAgIGFiYyBcCisgICAgICAgICBnaGkgXAorICAgICAiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+Rk9PPC9maWxlbmFtZT4gYmVjb21lcwotICAgICAgICAgICAgICAgICImbmJzcDsmbmJzcDs3ODkgMTIzNDU2Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IgorICAgICAgICAgICAgICAgICImbmJzcDsmbmJzcDs3ODkmbmJzcDsxMjM0NTYmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiCiAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5GT08yPC9maWxlbmFtZT4gYmVjb21lcwotICAgICAgICAgICAgICAgICImbmJzcDsmbmJzcDtnaGkgYWJjZGVmJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ii4KKyAgICAgICAgICAgICAgICAiJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7amtsJm5ic3A7Jm5ic3A7YWJjZGVmJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ii4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CmluZGV4IDA2MDdmY2MuLjU4NDBhYTcgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CkBAIC05MTksNiArOTE5LDEwIEBACiAgICAgICAgICAgICBvcy51bmxpbmsoJ3BhY2thZ2UtZGVwZW5kcy5kb3QnKQogICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnVubGluaygncmVjaXBlLWRlcGVuZHMuZG90JykKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHdpdGggb3BlbigndGFzay1kZXBlbmRzLmRvdCcsICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImRpZ3JhcGggZGVwZW5kcyB7XG4iKQpAQCAtOTMyLDI3ICs5MzYsNiBAQAogICAgICAgICAgICAgZi53cml0ZSgifVxuIikKICAgICAgICAgbG9nZ2VyLmluZm8oIlRhc2sgZGVwZW5kZW5jaWVzIHNhdmVkIHRvICd0YXNrLWRlcGVuZHMuZG90JyIpCiAKLSAgICAgICAgd2l0aCBvcGVuKCdyZWNpcGUtZGVwZW5kcy5kb3QnLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCJkaWdyYXBoIGRlcGVuZHMge1xuIikKLSAgICAgICAgICAgIHBuZGVwcyA9IHt9Ci0gICAgICAgICAgICBmb3IgdGFzayBpbiBzb3J0ZWQoZGVwZ3JhcGhbInRkZXBlbmRzIl0pOgotICAgICAgICAgICAgICAgIChwbiwgdGFza25hbWUpID0gdGFzay5yc3BsaXQoIi4iLCAxKQotICAgICAgICAgICAgICAgIGlmIHBuIG5vdCBpbiBwbmRlcHM6Ci0gICAgICAgICAgICAgICAgICAgIHBuZGVwc1twbl0gPSBzZXQoKQotICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKGRlcGdyYXBoWyJ0ZGVwZW5kcyJdW3Rhc2tdKToKLSAgICAgICAgICAgICAgICAgICAgKGRlcHBuLCBkZXB0YXNrbmFtZSkgPSBkZXAucnNwbGl0KCIuIiwgMSkKLSAgICAgICAgICAgICAgICAgICAgcG5kZXBzW3BuXS5hZGQoZGVwcG4pCi0gICAgICAgICAgICBmb3IgcG4gaW4gc29ydGVkKHBuZGVwcyk6Ci0gICAgICAgICAgICAgICAgZm4gPSBkZXBncmFwaFsicG4iXVtwbl1bImZpbGVuYW1lIl0KLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZ3JhcGhbInBuIl1bcG5dWyJ2ZXJzaW9uIl0KLSAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMiIFtsYWJlbD0iJXNcXG4lc1xcbiVzIl1cbicgJSAocG4sIHBuLCB2ZXJzaW9uLCBmbikpCi0gICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBzb3J0ZWQocG5kZXBzW3BuXSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGRlcCA9PSBwbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyIlcyIgLT4gIiVzIlxuJyAlIChwbiwgZGVwKSkKLSAgICAgICAgICAgIGYud3JpdGUoIn1cbiIpCi0gICAgICAgIGxvZ2dlci5pbmZvKCJGbGF0dGVuZWQgcmVjaXBlIGRlcGVuZGVuY2llcyBzYXZlZCB0byAncmVjaXBlLWRlcGVuZHMuZG90JyIpCi0KICAgICBkZWYgc2hvd19hcHBlbmRzX3dpdGhfbm9fcmVjaXBlcyhzZWxmKToKICAgICAgICAgIyBEZXRlcm1pbmUgd2hpY2ggYmJhcHBlbmRzIGhhdmVuJ3QgYmVlbiBhcHBsaWVkCiAKQEAgLTE4NjksNiArMTg1Miw3IEBACiAgICAgICAgICAgICAoYmJhcHBlbmQsIGZpbGVuYW1lKSA9IGIKICAgICAgICAgICAgIGlmIChiYmFwcGVuZCA9PSBmKSBvciAoJyUnIGluIGJiYXBwZW5kIGFuZCBiYmFwcGVuZC5zdGFydHN3aXRoKGZbOmJiYXBwZW5kLmluZGV4KCclJyldKSk6CiAgICAgICAgICAgICAgICAgZmlsZWxpc3QuYXBwZW5kKGZpbGVuYW1lKQorICAgICAgICBmaWxlbGlzdC5zb3J0KCkKICAgICAgICAgcmV0dXJuIGZpbGVsaXN0CiAKICAgICBkZWYgY29sbGVjdGlvbl9wcmlvcml0aWVzKHNlbGYsIHBrZ2ZucywgZCk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CmluZGV4IGY2YjU1MjkuLjFmNWY4ZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CkBAIC05NjIsNyArOTYyLDggQEAKIAogICAgIG5ld19sb2NhbHBhdGggPSAiJXNfYmFkLWNoZWNrc3VtXyVzIiAlICh1ZC5sb2NhbHBhdGgsIHN1ZmZpeCkKICAgICBiYi53YXJuKCJSZW5hbWluZyAlcyB0byAlcyIgJSAodWQubG9jYWxwYXRoLCBuZXdfbG9jYWxwYXRoKSkKLSAgICBiYi51dGlscy5tb3ZlZmlsZSh1ZC5sb2NhbHBhdGgsIG5ld19sb2NhbHBhdGgpCisgICAgaWYgbm90IGJiLnV0aWxzLm1vdmVmaWxlKHVkLmxvY2FscGF0aCwgbmV3X2xvY2FscGF0aCk6CisgICAgICAgIGJiLndhcm4oIlJlbmFtaW5nICVzIHRvICVzIGZhaWxlZCwgZ3JlcCBtb3ZlZmlsZSBpbiBsb2cuZG9fZmV0Y2ggdG8gc2VlIHdoeSIgJSAodWQubG9jYWxwYXRoLCBuZXdfbG9jYWxwYXRoKSkKIAogCiBkZWYgdHJ5X21pcnJvcl91cmwoZmV0Y2gsIG9yaWd1ZCwgdWQsIGxkLCBjaGVjayA9IEZhbHNlKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CmluZGV4IDRmNjk1NzguLmFkZGIyYmIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQpAQCAtODQ5LDYgKzg0OSwyMCBAQAogICAgICAgICAgICAgZm9yIGRlcGVuZCBpbiBkZXBlbmRzOgogICAgICAgICAgICAgICAgIG1hcmtfYWN0aXZlKGRlcGVuZCwgZGVwdGgrMSkKIAorICAgICAgICBkZWYgaW52YWxpZGF0ZV90YXNrKHRpZCwgZXJyb3Jfbm9zdGFtcCk6CisgICAgICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgdGFza2ZuKSA9IHNwbGl0X3RpZF9tY2ZuKHRpZCkKKyAgICAgICAgICAgIHRhc2tkZXAgPSBzZWxmLmRhdGFDYWNoZXNbbWNdLnRhc2tfZGVwc1t0YXNrZm5dCisgICAgICAgICAgICBpZiBmbiArICI6IiArIHRhc2tuYW1lIG5vdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6CisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlRhc2sgJXMgZG9lcyBub3QgZXhpc3QsIGludmFsaWRhdGluZyB0aGlzIHRhc2sgd2lsbCBoYXZlIG5vIGVmZmVjdCIgJSB0YXNrbmFtZSkKKyAgICAgICAgICAgIGlmICdub3N0YW1wJyBpbiB0YXNrZGVwIGFuZCB0YXNrbmFtZSBpbiB0YXNrZGVwWydub3N0YW1wJ106CisgICAgICAgICAgICAgICAgaWYgZXJyb3Jfbm9zdGFtcDoKKyAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlRhc2sgJXMgaXMgbWFya2VkIG5vc3RhbXAsIGNhbm5vdCBpbnZhbGlkYXRlIHRoaXMgdGFzayIgJSB0YXNrbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiVGFzayAlcyBpcyBtYXJrZWQgbm9zdGFtcCwgY2Fubm90IGludmFsaWRhdGUgdGhpcyB0YXNrIiAlIHRhc2tuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIudmVyYm9zZSgiSW52YWxpZGF0ZSB0YXNrICVzLCAlcyIsIHRhc2tuYW1lLCBmbikKKyAgICAgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4uaW52YWxpZGF0ZV90YXNrKHRhc2tuYW1lLCBzZWxmLmRhdGFDYWNoZXNbbWNdLCB0YXNrZm4pCisKICAgICAgICAgc2VsZi50YXJnZXRfdGlkcyA9IFtdCiAgICAgICAgIGZvciAobWMsIHRhcmdldCwgdGFzaywgZm4pIGluIHNlbGYudGFyZ2V0czoKIApAQCAtOTE3LDYgKzkzMSw4IEBACiAKICAgICAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3QocnVuYWxsX3RpZHMpOgogICAgICAgICAgICAgICAgICAgICBtYXJrX2FjdGl2ZSh0aWQsMSkKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb29rZXIuY29uZmlndXJhdGlvbi5mb3JjZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRhdGVfdGFzayh0aWQsIEZhbHNlKQogCiAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3Qoc2VsZi5ydW50YXNrZW50cmllcy5rZXlzKCkpOgogICAgICAgICAgICAgICAgIGlmIHRpZCBub3QgaW4gcnVucV9idWlsZDoKQEAgLTkzOCw2ICs5NTQsOCBAQAogCiAgICAgICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHJ1bm9ubHlfdGlkcyk6CiAgICAgICAgICAgICAgICAgICAgIG1hcmtfYWN0aXZlKHRpZCwxKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLmZvcmNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZV90YXNrKHRpZCwgRmFsc2UpCiAKICAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChzZWxmLnJ1bnRhc2tlbnRyaWVzLmtleXMoKSk6CiAgICAgICAgICAgICAgICAgaWYgdGlkIG5vdCBpbiBydW5xX2J1aWxkOgpAQCAtMTExNCwyMCArMTEzMiw2IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgc2VsZi5ydW5xX3NldHNjZW5lX3RpZHMuYXBwZW5kKHRpZCkKIAotICAgICAgICBkZWYgaW52YWxpZGF0ZV90YXNrKHRpZCwgZXJyb3Jfbm9zdGFtcCk6Ci0gICAgICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgdGFza2ZuKSA9IHNwbGl0X3RpZF9tY2ZuKHRpZCkKLSAgICAgICAgICAgIHRhc2tkZXAgPSBzZWxmLmRhdGFDYWNoZXNbbWNdLnRhc2tfZGVwc1t0YXNrZm5dCi0gICAgICAgICAgICBpZiBmbiArICI6IiArIHRhc2tuYW1lIG5vdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlRhc2sgJXMgZG9lcyBub3QgZXhpc3QsIGludmFsaWRhdGluZyB0aGlzIHRhc2sgd2lsbCBoYXZlIG5vIGVmZmVjdCIgJSB0YXNrbmFtZSkKLSAgICAgICAgICAgIGlmICdub3N0YW1wJyBpbiB0YXNrZGVwIGFuZCB0YXNrbmFtZSBpbiB0YXNrZGVwWydub3N0YW1wJ106Ci0gICAgICAgICAgICAgICAgaWYgZXJyb3Jfbm9zdGFtcDoKLSAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlRhc2sgJXMgaXMgbWFya2VkIG5vc3RhbXAsIGNhbm5vdCBpbnZhbGlkYXRlIHRoaXMgdGFzayIgJSB0YXNrbmFtZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiVGFzayAlcyBpcyBtYXJrZWQgbm9zdGFtcCwgY2Fubm90IGludmFsaWRhdGUgdGhpcyB0YXNrIiAlIHRhc2tuYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIudmVyYm9zZSgiSW52YWxpZGF0ZSB0YXNrICVzLCAlcyIsIHRhc2tuYW1lLCBmbikKLSAgICAgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4uaW52YWxpZGF0ZV90YXNrKHRhc2tuYW1lLCBzZWxmLmRhdGFDYWNoZXNbbWNdLCB0YXNrZm4pCi0KICAgICAgICAgc2VsZi5pbml0X3Byb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQogCiAgICAgICAgICMgSW52YWxpZGF0ZSB0YXNrIGlmIGZvcmNlIG1vZGUgYWN0aXZlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQppbmRleCAyM2M2MzM4Li4yZWUwMzA1IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKQEAgLTEyMDAsOCArMTIwMCw4IEBACiAgICAgICAgICMgcGFja2FnZXMgd2l0aCB2YWxpZCBVUFNUUkVBTV9DSEVDS19VUkkgYW5kIFVQU1RSRUFNX0NIRUNLX1JFR0VYCiAgICAgICAgICgiY3VwcyIsICJodHRwOi8vd3d3LmN1cHMub3JnL3NvZnR3YXJlLzEuNy4yL2N1cHMtMS43LjItc291cmNlLnRhci5iejIiLCAiaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMiLCAiKD9QPG5hbWU+Y3Vwc1wtKSg/UDxwdmVyPigoXGQrW1wuXC1fXSopKykpXC1zb3VyY2VcLnRhclwuZ3oiKQogICAgICAgICAgICAgOiAiMi4wLjAiLAotICAgICAgICAoImRiIiwgImh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL2JlcmtlbGV5LWRiL2RiLTUuMy4yMS50YXIuZ3oiLCAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL3Byb2R1Y3RzL2JlcmtlbGV5ZGIvZG93bmxvYWRzL2luZGV4LTA4Mjk0NC5odG1sIiwgImh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL290bi9iZXJrZWxleS1kYi8oP1A8bmFtZT5kYi0pKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSlcLnRhclwuZ3oiKQotICAgICAgICAgICAgOiAiNi4xLjE5IiwKKyAgICAgICAgKCJkYiIsICJodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9iZXJrZWxleS1kYi9kYi01LjMuMjEudGFyLmd6IiwgImh0dHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvIiwgIig/UDxuYW1lPmRiNVwuM18pKD9QPHB2ZXI+XGQrKFwuXGQrKSspLitcLm9yaWdcLnRhclwueHoiKQorICAgICAgICAgICAgOiAiNS4zLjEwIiwKICAgICB9CiAKICAgICBAc2tpcElmTm9OZXR3b3JrKCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CmluZGV4IDA2MThlNDYuLjNlOTBiNmEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQpAQCAtNzgwLDcgKzc4MCw3IEBACiAgICAgICAgICAgICBvcy5yZW5hbWUoc3JjLCBkZXN0cGF0aCkKICAgICAgICAgICAgIHJlbmFtZWZhaWxlZCA9IDAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgaWYgZVswXSAhPSBlcnJuby5FWERFVjoKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVhERVY6CiAgICAgICAgICAgICAgICAgIyBTb21lIHJhbmRvbSBlcnJvci4KICAgICAgICAgICAgICAgICBwcmludCgibW92ZWZpbGU6IEZhaWxlZCB0byBtb3ZlIiwgc3JjLCAidG8iLCBkZXN0LCBlKQogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCmluZGV4IDU2MjVkZmMuLjU5ZmZhNDkgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCkBAIC0yMyw5ICsyMyw4IEBACiAgICAgICAgIEl0IG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBjbGVhciBob3cgeW91IGNhbiB1c2UgdGhlIFlvY3RvCiAgICAgICAgIFByb2plY3QgaW4gYSB0ZWFtIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBvciBob3cgdG8gc2NhbGUgaXQgZm9yIGEKICAgICAgICAgbGFyZ2UgdGVhbSBvZiBkZXZlbG9wZXJzLgotICAgICAgICBPbmUgb2YgdGhlIHN0cmVuZ3RocyBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0aGF0IGl0IGlzIGV4dHJlbWVseQotICAgICAgICBmbGV4aWJsZS4KLSAgICAgICAgVGh1cywgeW91IGNhbiBhZGFwdCBpdCB0byBtYW55IGRpZmZlcmVudCB1c2UgY2FzZXMgYW5kIHNjZW5hcmlvcy4KKyAgICAgICAgWW91IGNhbiBhZGFwdCB0aGUgWW9jdG8gUHJvamVjdCB0byBtYW55IGRpZmZlcmVudCB1c2UgY2FzZXMgYW5kCisgICAgICAgIHNjZW5hcmlvcy4KICAgICAgICAgSG93ZXZlciwgdGhpcyBmbGV4aWJpbGl0eSBjb3VsZCBjYXVzZSBkaWZmaWN1bHRpZXMgaWYgeW91IGFyZSB0cnlpbmcKICAgICAgICAgdG8gY3JlYXRlIGEgd29ya2luZyBzZXR1cCB0aGF0IHNjYWxlcyBhY3Jvc3MgYSBsYXJnZSB0ZWFtLgogICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudAppbmRleCBiNWY2MDA5Li4xOTJiOTQxIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50CkBAIC02MCw3ICs2MCw3IEBACiA8IUVOVElUWSBVQlVOVFVfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgImdhd2sgd2dldCBnaXQtY29yZSBkaWZmc3RhdCB1bnppcCB0ZXhpbmZvIGdjYy1tdWx0aWxpYiBcCiAgICAgIGJ1aWxkLWVzc2VudGlhbCBjaHJwYXRoIHNvY2F0IGNwaW8gcHl0aG9uIHB5dGhvbjMgcHl0aG9uMy1waXAgcHl0aG9uMy1wZXhwZWN0IFwKICAgICAgeHotdXRpbHMgZGViaWFudXRpbHMgaXB1dGlscy1waW5nIHB5dGhvbjMtZ2l0IHB5dGhvbjMtamluamEyIGxpYmVnbDEtbWVzYSBsaWJzZGwxLjItZGV2IFwKLSAgICAgeHRlcm0iPgorICAgICBweWxpbnQzIHh0ZXJtIj4KIDwhRU5USVRZIEZFRE9SQV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKICAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIFwKICAgICAgY2NhY2hlIHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcGVybC1iaWdudW0gc29jYXQgXApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sCmluZGV4IGVjZTQ3ZTcuLjU0MDNmMjAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKQEAgLTMxOCwyMyArMzE4LDYgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1ibHVldG9vdGgnPgotICAgIDx0aXRsZT48ZmlsZW5hbWU+Ymx1ZXRvb3RoLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5ibHVldG9vdGg8L2ZpbGVuYW1lPiBjbGFzcyBkZWZpbmVzIGEgdmFyaWFibGUgdGhhdAotICAgICAgICBleHBhbmRzIHRvIHRoZSByZWNpcGUgKHBhY2thZ2UpIHByb3ZpZGluZyBjb3JlCi0gICAgICAgIGJsdWV0b290aCBzdXBwb3J0IG9uIHRoZSBwbGF0Zm9ybS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGRldGFpbHMgb24gaG93IHRoZSBjbGFzcyB3b3Jrcywgc2VlIHRoZQotICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2JsdWV0b290aC5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgWW9jdG8KLSAgICAgICAgUHJvamVjdAotICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KIDxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1idWlsZGhpc3RvcnknPgogICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CiAKQEAgLTkzNywyMSArOTIwLDYgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1nbm9tZSc+Ci0gICAgPHRpdGxlPjxmaWxlbmFtZT5nbm9tZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSA8ZmlsZW5hbWU+Z25vbWU8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyByZWNpcGVzIHRoYXQKLSAgICAgICAgYnVpbGQgc29mdHdhcmUgZnJvbSB0aGUgR05PTUUgc3RhY2suCi0gICAgICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWdub21lYmFzZSc+PGZpbGVuYW1lPmdub21lYmFzZTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZ3RrLWljb24tY2FjaGUnPjxmaWxlbmFtZT5ndGstaWNvbi1jYWNoZTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZ2NvbmYnPjxmaWxlbmFtZT5nY29uZjwvZmlsZW5hbWU+PC9saW5rPiBhbmQKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtbWltZSc+PGZpbGVuYW1lPm1pbWU8L2ZpbGVuYW1lPjwvbGluaz4gY2xhc3Nlcy4KLSAgICAgICAgVGhlIGNsYXNzIGFsc28gZGlzYWJsZXMgR09iamVjdCBpbnRyb3NwZWN0aW9uIHdoZXJlIGFwcGxpY2FibGUuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCiA8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZ25vbWViYXNlJz4KICAgICA8dGl0bGU+PGZpbGVuYW1lPmdub21lYmFzZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbAppbmRleCA0ODEwZDI4Li4xMWY3Mzk5IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwKQEAgLTYyOSwxOCArNjI5LDE4IEBACiAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBZb3VyIFJlY2lwZTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4gY29tbWFuZCB0byBjYXVzZSB0aGUKLSAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgeW91ciByZWNpcGUuCisgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4gY29tbWFuZCB0byBidWlsZCB5b3VyCisgICAgICAgICAgICByZWNpcGUuCiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGlzIGVxdWl2YWxlbnQgdG8KLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IGNvbW1hbmQsCi0gICAgICAgICAgICB5b3UgbXVzdCBzdXBwbHkgdGhlIHJvb3QgbmFtZSBvZiB0aGUgcmVjaXBlIChpLmUuIG5vIHZlcnNpb24sCi0gICAgICAgICAgICBwYXRocywgb3IgZXh0ZW5zaW9ucykuCisgICAgICAgICAgICB5b3UgbXVzdCBzdXBwbHkgdGhlIHJvb3QgbmFtZSBvZiB0aGUgcmVjaXBlIChpLmUuIGRvIG5vdCBwcm92aWRlCisgICAgICAgICAgICB2ZXJzaW9ucywgcGF0aHMsIG9yIGV4dGVuc2lvbnMpLgogICAgICAgICAgICAgWW91IGNhbiB1c2UgZWl0aGVyIHRoZSAiLXMiIG9yIHRoZSAiLS1kaXNhYmxlLXBhcmFsbGVsLW1ha2UiCi0gICAgICAgICAgICBvcHRpb24gdG8gZGlzYWJsZSBwYXJhbGxlbCBtYWtlcyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgb3B0aW9ucyB0byBkaXNhYmxlIHBhcmFsbGVsIG1ha2VzIGR1cmluZyB0aGUgYnVpbGQuCiAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBidWlsZCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCmluZGV4IGIwNTdkMmQuLjQ0YmE2N2MgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbApAQCAtMTU0LDI3ICsxNTQsNiBAQAogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmJsdWV0b290aDo8L2VtcGhhc2lzPiBJbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgIGJsdWV0b290aCBzdXBwb3J0IChpbnRlZ3JhdGVkIEJUIG9ubHkpLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ymx1ZXo1OjwvZW1waGFzaXM+IEluY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgQmx1ZVogVmVyc2lvbiA1LCB3aGljaCBwcm92aWRlcyBjb3JlIEJsdWV0b290aCBsYXllcnMgYW5kCi0gICAgICAgICAgICAgICAgICAgIHByb3RvY29scyBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk8gRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbmNsdWRlcwotICAgICAgICAgICAgICAgICAgICAgICAgImJsdWV0b290aCIsIHdoaWNoIGNhdXNlcyBibHVlejUgdG8gYmUgYmFja2ZpbGxlZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJsdWV0b290aCBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB3YW50IGJsdWV6NSBiYWNrZmlsbGVkIGFuZCB3b3VsZCByYXRoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBibHVlejQsIHlvdSBuZWVkIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJibHVlejUiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdGVsbHMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRoYXQgeW91IGhhdmUgY29uc2lkZXJlZCBidXQgcnVsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCB1c2luZyB0aGUgYmx1ZXo1IGZlYXR1cmUgYW5kIHRoYXQgYmx1ZXo0IHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5jcmFtZnM6PC9lbXBoYXNpcz4gSW5jbHVkZSBDcmFtRlMKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmRpcmVjdGZiOjwvZW1waGFzaXM+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKaW5kZXggMjM5ZGQ4NC4uNTE5OTUzMCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbApAQCAtOTUsNiArOTUsNyBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgNy54PC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggOC54IChKZXNzaWUpPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggOS54IChTdHJldGNoKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDEwLnggKEJ1c3Rlcik8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+T3BlblNVU0UgNDIuMzwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggMDA4MDM2NC4uOTNiNzU4OCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKQEAgLTMzNSw3ICszMzUsNyBAQAogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHVzZWQgdG8gcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICBNaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyBuZWVkZWQgdG8gcnVuIHRoZQogICAgICAgICAgICAgICAgICAgICBhc3NlbWJsZXIuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTY2MDYsNiArNjYwNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgYnRyZnMKKyAgICAgY29udGFpbmVyCiAgICAgIGNwaW8KICAgICAgY3Bpby5negogICAgICBjcGlvLmx6NApAQCAtNjYyMSwxMyArNjYyMiwxNCBAQAogICAgICBleHQzLmd6CiAgICAgIGV4dDQKICAgICAgZXh0NC5negotICAgICBoZGRkaXJlY3QKKyAgICAgZjJmcwogICAgICBoZGRpbWcKICAgICAgaXNvCiAgICAgIGpmZnMyCiAgICAgIGpmZnMyLnN1bQogICAgICBtdWx0aXViaQogICAgICBzcXVhc2hmcworICAgICBzcXVhc2hmcy1sejQKICAgICAgc3F1YXNoZnMtbHpvCiAgICAgIHNxdWFzaGZzLXh6CiAgICAgIHRhcgpAQCAtNzU4MCwxNSArNzU4Miw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBwcm92aWRpbmcganVzdCB0aGUgPGZpbGVuYW1lPi5kdGI8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyBwcmVmZXJyZWQuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIHRoaXMgdmFyaWFibGUsIHlvdSBtdXN0IGhhdmUgdGhlIGluY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4geW91ciBrZXJuZWwgcmVjaXBlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhpcyB2YXJpYWJsZSwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbC1kZXZpY2V0cmVlJz48ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgbXVzdCBiZSBpbmhlcml0ZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jCmluZGV4IDA4MTU4NGYuLjk5MjZjMWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYworKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktZGlzdHJvLWFsdC10ZXN0LWNvbmZpZy5pbmMKQEAgLTEsMiArMSw4IEBACisjIEFkZCBhbiBleHRyYSBESVNUUk9fRkVBVFVSRQogRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgcGFtIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fbGludXhzdGRiYXNlID89ICI0LjE5JSIKKworIyBVc2UgdGhlIExUU0kgS2VybmVsCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xOSUiCisKKyMgRW5zdXJlIHRoZSBrZXJuZWwgbmZzIHNlcnZlciBpcyBlbmFibGVkCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktYWx0Y2ZnLmNvbmYgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWFsdGNmZy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3N2JmOGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWFsdGNmZy5jb25mCkBAIC0wLDAgKzEsMTUgQEAKKyMKKyMgQW4gZXhhbXBsZSBvZiBzdWJjbGFzc2luZyBhIGRpc3RybywgcHJpbWFyaWx5IHVzZWQgZm9yIHRlc3RpbmcgYWx0ZXJuYXRlIGNvbmZpZ3VyYXRpb24KKyMgY29tYmluYXRpb25zIG9uIHRoZSBZb2N0byBQcm9qZWN0IGF1dG9idWlsZGVyCisjCityZXF1aXJlIGNvbmYvZGlzdHJvL3Bva3kuY29uZgorCitESVNUUk8gPSAicG9reS1hbHRjZmciCitESVNUUk9PVkVSUklERVMgPSAicG9reTpwb2t5LWFsdGNmZyIKKyNESVNUUk9PVkVSUklERVMgPSAicG9reTpsaW51eHN0ZGJhc2UiCisKK0lOSVRfTUFOQUdFUiA/PSAic3lzdGVtZCIKKyMgc3lzdGVtZCBpc24ndCBzdWl0YWJsZSB3aXRoIG11c2wKK0lOSVRfTUFOQUdFUl9saWJjLW11c2wgPz0gInN5c3Zpbml0IgorCityZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZiBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMzZjODcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLQotcmVxdWlyZSBjb25mL2Rpc3Ryby9wb2t5LmNvbmYKLQotRElTVFJPID0gInBva3ktbHNiIgotRElTVFJPT1ZFUlJJREVTID0gInBva3k6bGludXhzdGRiYXNlIgotCi1ESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBwYW0iCi0KLSMgRW5zdXJlIHRoZSBrZXJuZWwgbmZzIHNlcnZlciBpcyBlbmFibGVkCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKLQotIyBVc2UgdGhlIExUU0kgS2VybmVsIGZvciBMU0IgVGVzdGluZwotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fbGludXhzdGRiYXNlID89ICI0LjE5JSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKaW5kZXggMWY4YjZlOC4uYzZkNGI4OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKQEAgLTgyLDEyICs4Miw3IEBACiBESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlc2RrID0gIiR7RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFR9ICR7UE9LWV9ERUZBVUxUX0RJU1RST19GRUFUVVJFU30iCiAKICMgZW5hYmxlIG1kZXYvYnVzeWJveCBmb3IgaW5pdAotVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyID0gImJ1c3lib3gtbWRldiIKLVZJUlRVQUwtUlVOVElNRV9sb2dpbl9tYW5hZ2VyID0gImJ1c3lib3giCi1WSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyID0gImJ1c3lib3giCi1WSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPSAiaW5pdHNjcmlwdHMiCi1WSVJUVUFMLVJVTlRJTUVfa2V5bWFwcyA9ICJrZXltYXBzIgotRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgKz0gInN5c3Zpbml0IgorSU5JVF9NQU5BR0VSID89ICJtZGV2LWJ1c3lib3giCiAKICMgRklYTUU6IENvbnNpZGVyIGFkZGluZyAibW9kdWxlcyIgdG8gTUFDSElORV9GRUFUVVJFUyBhbmQgdXNpbmcgdGhhdCBpbgogIyBwYWNrYWdlZ3JvdXAtY29yZS1iYXNlIHRvIHNlbGVjdCBtb2R1dGlscy1pbml0c2NyaXB0cyBvciBub3QuICBTaW1pbGFyIHdpdGggIm5ldCIgYW5kCkBAIC0xMTcsOSArMTEyLDYgQEAKIFBOQkxBQ0tMSVNUW2NvcmUtaW1hZ2UtYmFzZV0gPSAibm90IGJ1aWxkYWJsZSB3aXRoIHBva3ktdGlueSIKIFBOQkxBQ0tMSVNUW2NvcmUtaW1hZ2UtY2x1dHRlcl0gPSAibm90IGJ1aWxkYWJsZSB3aXRoIHBva3ktdGlueSIKIFBOQkxBQ0tMSVNUW2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lXSA9ICJub3QgYnVpbGRhYmxlIHdpdGggcG9reS10aW55IgotUE5CTEFDS0xJU1RbY29yZS1pbWFnZS1sc2JdID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCi1QTkJMQUNLTElTVFtjb3JlLWltYWdlLWxzYi1kZXZdID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCi1QTkJMQUNLTElTVFtjb3JlLWltYWdlLWxzYi1zZGtdID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCiBQTkJMQUNLTElTVFtjb3JlLWltYWdlLXJ0XSA9ICJub3QgYnVpbGRhYmxlIHdpdGggcG9reS10aW55IgogUE5CTEFDS0xJU1RbY29yZS1pbWFnZS1ydC1zZGtdID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCiBQTkJMQUNLTElTVFtjb3JlLWltYWdlLXNhdG9dID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKaW5kZXggYWEwNDFlMi4uZjk5OTk5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgpAQCAtMjEsNyArMjEsNyBAQAogCiBESVNUUk9fRkVBVFVSRVMgPz0gIiR7RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFR9ICR7UE9LWV9ERUZBVUxUX0RJU1RST19GRUFUVVJFU30iCiAKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjAlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCiAKIFNES19OQU1FID0gIiR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtNQUNISU5FfS0ke0lNQUdFX0JBU0VOQU1FfS0ke1RVTkVfUEtHQVJDSH0tJHtNQUNISU5FfSIKIFNES1BBVEggPSAiL29wdC8ke0RJU1RST30vJHtTREtfVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQppbmRleCBiMzY1MzBkLi5jODZlZWU0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKQEAgLTIzOCwxMiArMjM4LDE2IEBACiAjIFFlbXUgY29uZmlndXJhdGlvbgogIwogIyBCeSBkZWZhdWx0IG5hdGl2ZSBxZW11IHdpbGwgYnVpbGQgd2l0aCBhIGJ1aWx0aW4gVk5DIHNlcnZlciB3aGVyZSBncmFwaGljYWwgb3V0cHV0IGNhbiBiZQotIyBzZWVuLiBUaGUgbGluZSBiZWxvdyBlbmFibGUgdGhlIFNETCBiYWNrZW5kIHRvby4gQnkgZGVmYXVsdCBsaWJzZGwyLW5hdGl2ZSB3aWxsCi0jIGJlIGJ1aWx0LCBpZiB5b3Ugd2FudCB0byB1c2UgeW91ciBob3N0J3MgbGliU0RMIGluc3RlYWQgb2YgdGhlIG1pbmltYWwgbGlic2RsIGJ1aWx0Ci0jIGJ5IGxpYnNkbDItbmF0aXZlIHRoZW4gdW5jb21tZW50IHRoZSBBU1NVTUVfUFJPVklERUQgbGluZSBiZWxvdy4KKyMgc2Vlbi4gVGhlIGxpbmUgYmVsb3cgZW5hYmxlcyB0aGUgU0RMIFVJIGZyb250ZW5kIHRvby4KIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgc2RsIgorIyBCeSBkZWZhdWx0IGxpYnNkbDItbmF0aXZlIHdpbGwgYmUgYnVpbHQsIGlmIHlvdSB3YW50IHRvIHVzZSB5b3VyIGhvc3QncyBsaWJTREwgaW5zdGVhZCBvZiAKKyMgdGhlIG1pbmltYWwgbGlic2RsIGJ1aWx0IGJ5IGxpYnNkbDItbmF0aXZlIHRoZW4gdW5jb21tZW50IHRoZSBBU1NVTUVfUFJPVklERUQgbGluZSBiZWxvdy4KICNBU1NVTUVfUFJPVklERUQgKz0gImxpYnNkbDItbmF0aXZlIgogCisjIFlvdSBjYW4gYWxzbyBlbmFibGUgdGhlIEd0ayBVSSBmcm9udGVuZCwgd2hpY2ggdGFrZXMgc29tZXdoYXQgbG9uZ2VyIHRvIGJ1aWxkLCBidXQgYWRkcworIyBhIGhhbmR5IHNldCBvZiBtZW51cyBmb3IgY29udHJvbGxpbmcgdGhlIGVtdWxhdG9yLgorI1BBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgZ3RrKyIKKwogIyBDT05GX1ZFUlNJT04gaXMgaW5jcmVhc2VkIGVhY2ggdGltZSBidWlsZC9jb25mLyBjaGFuZ2VzIGluY29tcGF0aWJseSBhbmQgaXMgdXNlZCB0bwogIyB0cmFjayB0aGUgdmVyc2lvbiBvZiB0aGlzIGZpbGUgd2hlbiBpdCB3YXMgZ2VuZXJhdGVkLiBUaGlzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpZgogIyB0aGlzIGRvZXNuJ3QgbWVhbiBhbnl0aGluZyB0byB5b3UuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZAppbmRleCA3N2U4YmUyLi5kYzkyYTE2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQKQEAgLTI3MCw3ICsyNzAsNyBAQAogIwogIyBCeSBpbmNsdWRpbmcgdGhlIHNlY3VyaXR5X2ZsYWdzIGluY2x1ZGUgZmlsZSB5b3UgZW5hYmxlIGZsYWdzCiAjIHRvIHRoZSBjb21waWxlciBhbmQgbGlua2VyIHRoYXQgY2F1c2UgdGhlbSB0byBnZW5lcmF0ZSBtb3JlIHNlY3VyZQotIyBjb2RlLCB0aGlzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUgcG9reS1sc2IgZGlzdHJvLgorIyBjb2RlLgogIyBUaGlzIGRvZXMgYWZmZWN0IGNvbXBpbGUgc3BlZWQgc2xpZ2h0bHkuCiAjCiAjIFVzZSB0aGUgZm9sbG93aW5nIGxpbmUgdG8gZW5hYmxlIHRoZSBzZWN1cml0eSBjb21waWxlciBhbmQgbGlua2VyIGZsYWdzIHRvIHlvdXIgYnVpbGQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZgppbmRleCA3YzdiMzA1Li4wOGRkM2E1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCkBAIC0yNCw3ICsyNCw3IEBACiBTRVJJQUxfQ09OU09MRVNfQ0hFQ0sgPSAiJHtTRVJJQUxfQ09OU09MRVN9IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKIAogS0VSTkVMX0lNQUdFVFlQRSA9ICJ6SW1hZ2UiCiBLRVJORUxfREVWSUNFVFJFRSA9ICJhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCkBAIC00Nyw3ICs0Nyw2IEBACiBRQl9GU0lORk8gPSAid2ljOm5vLWtlcm5lbC1pbi1mcyIKIFFCX0tFUk5FTF9ST09UID0gIi9kZXYvdmRhMiIKIFFCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLWFybSIKLVFCX01FTSA9ICItbSA1MTIiCiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCiBRQl9DUFUgPSAiLWNwdSBjb3J0ZXgtYTE1IgogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCBzeXN0ZW1kLm1hc2s9c3lzdGVtZC1uZXR3b3JrZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZgppbmRleCA4ODU5MmRiLi42MzMxMzY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCkBAIC0xMSw3ICsxMSw3IEBACiBLRVJORUxfSU1BR0VfU1RSSVBfRVhUUkFfU0VDVElPTlMgID0gIi5jb21tZW50IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKIAogU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCIKIFVTRV9WVCA/PSAiMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKaW5kZXggZTJkY2U1Ni4uNTM4Mjc5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKQEAgLTE1LDcgKzE1LDcgQEAKIAogTUFDSElORV9GRUFUVVJFUyA9ICJrZXlib2FyZCBwY2kgZXh0MiBleHQzIHNlcmlhbCIKIAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4wLmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3Y2YxMjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1LQlJBTkNIX2dlbmVyaWN4ODYgID0gInY1LjAvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjUuMC9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9lZGdlcm91dGVyID0gInY1LjAvc3RhbmRhcmQvZWRnZXJvdXRlciIKLUtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NS4wL3N0YW5kYXJkL2JlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJ2NS4wL3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLUtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKLUtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKLUtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImY5OTBmZDBjZTEyM2FhNjAzNTA0MmVmYWQwOWIyZGRjM2U3ZDQ4ZjQiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJmOTkwZmQwY2UxMjNhYTYwMzUwNDJlZmFkMDliMmRkYzNlN2Q0OGY0IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjk5MGZkMGNlMTIzYWE2MDM1MDQyZWZhZDA5YjJkZGMzZTdkNDhmNCIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImY5OTBmZDBjZTEyM2FhNjAzNTA0MmVmYWQwOWIyZGRjM2U3ZDQ4ZjQiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjY3MGNlN2U5ZGI2MjdkMGMyMDY3Y2ZkYjU3MWRkYzFmMTE3ODE4ZDgiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuMC4xMyIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI1LjAuMTMiCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS4wLjEzIgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjUuMC4xMyIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjUuMC4xMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdjZWZkMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiYXBwZW5kCkBAIC0wLDAgKzEsMjcgQEAKK0tCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjUuMi9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAidjUuMi9zdGFuZGFyZC9lZGdlcm91dGVyIgorS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY1LjIvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY1LjIvc3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKKworS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgorS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKKworU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiNzdjMjhlYTBlNTVjYWJiMGIyMmI0N2Q0ZWIyY2M5NGIwOTQwZGZlNiIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjM1Mjc2ZDIwYzAxYTc4ZWUzNjQwYTA3NDQ0NmIwYzE1YzQ4NmM1ZDAiCitTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIzNTI3NmQyMGMwMWE3OGVlMzY0MGEwNzQ0NDZiMGMxNWM0ODZjNWQwIgorU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiNzdjMjhlYTBlNTVjYWJiMGIyMmI0N2Q0ZWIyY2M5NGIwOTQwZGZlNiIKK1NSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiY2FlMDFkNzFlZjY3ZWFhZmVjNzVjZTI0ZjQ5YjAzOGI3MDViODcxMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCitDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgorQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKK0NPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgorCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNS4yLjEwIgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjUuMi4xMCIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI1LjIuMTAiCitMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNS4yLjEwIgorTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNS4yLjEwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKaW5kZXggYWY5ZjAxMC4uMTNiMDViYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCkBAIC03OCw2ICs3OCw5IEBACiAgICAgICAgIGJiLmRlYnVnKDEsICdhcmNoaXZlcjogJXMgaXMgZXhjbHVkZWQsIGNvdmVyZWQgYnkgZ2NjLXNvdXJjZScgJSBwbikKICAgICAgICAgcmV0dXJuCiAKKyAgICBkZWYgaGFzVGFzayh0YXNrKToKKyAgICAgICAgcmV0dXJuIGJvb2woZC5nZXRWYXJGbGFnKHRhc2ssICJ0YXNrIiwgRmFsc2UpKSBhbmQgbm90IGJvb2woZC5nZXRWYXJGbGFnKHRhc2ssICJub2V4ZWMiLCBGYWxzZSkpCisKICAgICBhcl9zcmMgPSBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnc3JjJykKICAgICBhcl9kdW1wZGF0YSA9IGQuZ2V0VmFyRmxhZygnQVJDSElWRVJfTU9ERScsICdkdW1wZGF0YScpCiAgICAgYXJfcmVjaXBlID0gZC5nZXRWYXJGbGFnKCdBUkNISVZFUl9NT0RFJywgJ3JlY2lwZScpCkBAIC05OCw5ICsxMDEsNiBAQAogCiAgICAgICAgICMgVGhlcmUgaXMgYSBjb3JuZXIgY2FzZSB3aXRoICJnY2Mtc291cmNlLSR7UFZ9IiByZWNpcGVzLCB0aGV5IGRvbid0IGhhdmUKICAgICAgICAgIyB0aGUgImRvX2NvbmZpZ3VyZSIgdGFzaywgc28gd2UgbmVlZCB0byB1c2UgImRvX3ByZWNvbmZpZ3VyZSIKLSAgICAgICAgZGVmIGhhc1Rhc2sodGFzayk6Ci0gICAgICAgICAgICByZXR1cm4gYm9vbChkLmdldFZhckZsYWcodGFzaywgInRhc2siLCBGYWxzZSkpIGFuZCBub3QgYm9vbChkLmdldFZhckZsYWcodGFzaywgIm5vZXhlYyIsIEZhbHNlKSkKLQogICAgICAgICBpZiBoYXNUYXNrKCJkb19wcmVjb25maWd1cmUiKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYXJfY29uZmlndXJlZCcsICdkZXBlbmRzJywgJyAlczpkb19wcmVjb25maWd1cmUnICUgcG4pCiAgICAgICAgIGVsaWYgaGFzVGFzaygiZG9fY29uZmlndXJlIik6CkBAIC0xMTgsNyArMTE4LDExIEBACiAKICAgICAjIE91dHB1dCB0aGUgU1JQTSBwYWNrYWdlCiAgICAgaWYgZC5nZXRWYXJGbGFnKCdBUkNISVZFUl9NT0RFJywgJ3NycG0nKSA9PSAiMSIgYW5kIGQuZ2V0VmFyKCdQQUNLQUdFUycpOgotICAgICAgICBpZiAicGFja2FnZV9ycG0iIGluIGQuZ2V0VmFyKCdQQUNLQUdFX0NMQVNTRVMnKToKKyAgICAgICAgaWYgInBhY2thZ2VfcnBtIiBub3QgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VfQ0xBU1NFUycpOgorICAgICAgICAgICAgYmIuZmF0YWwoIkFSQ0hJVkVSX01PREVbc3JwbV0gbmVlZHMgcGFja2FnZV9ycG0gaW4gUEFDS0FHRV9DTEFTU0VTIikKKworICAgICAgICAjIFNvbWUgcmVjaXBlcyBkbyBub3QgaGF2ZSBhbnkgcGFja2FnaW5nIHRhc2tzCisgICAgICAgIGlmIGhhc1Rhc2soImRvX3BhY2thZ2Vfd3JpdGVfcnBtIik6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RlcGxveV9hcmNoaXZlcycsICdkZXBlbmRzJywgJyAlczpkb19wYWNrYWdlX3dyaXRlX3JwbScgJSBwbikKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZGlycycsICcgJHtBUkNISVZFUl9SUE1UT1BESVJ9JykKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnc3N0YXRlLWlucHV0ZGlycycsICcgJHtBUkNISVZFUl9SUE1UT1BESVJ9JykKQEAgLTEzMyw4ICsxMzcsNiBAQAogICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZGVwZW5kcycsICcgJXM6ZG9fYXJfcGF0Y2hlZCcgJSBwbikKICAgICAgICAgICAgIGVsaWYgYXJfc3JjID09ICJjb25maWd1cmVkIjoKICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfcnBtJywgJ2RlcGVuZHMnLCAnICVzOmRvX2FyX2NvbmZpZ3VyZWQnICUgcG4pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYi5mYXRhbCgiQVJDSElWRVJfTU9ERVtzcnBtXSBuZWVkcyBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMiKQogfQogCiAjIFRha2UgYWxsIHRoZSBzb3VyY2VzIGZvciBhIHJlY2lwZSBhbmQgcHV0cyB0aGVtIGluIFdPUktESVIvYXJjaGl2ZXItd29yay8uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCmluZGV4IDg3NjhhNmEuLjNkMjJhZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCkBAIC0yNSw3ICsyNSw5IEBACiAKICMgU3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygc2hlbGwgc2NyaXB0cyB3aXRoIHZhcmlhYmxlcyBkZWZpbmVkIHRvIHN1cHBseSB0ZXN0CiAjIHJlc3VsdHMgZm9yIGF1dG9jb25mIHRlc3RzIHdlIGNhbm5vdCBydW4gYXQgYnVpbGQgdGltZS4KLWV4cG9ydCBDT05GSUdfU0lURSA9ICIke0BzaXRlaW5mb19nZXRfZmlsZXMoZCl9IgorIyBUaGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyBmaWxsZWQgaW4gaW4gYSBwcmVmdW5jIGJlY2F1c2UgaXQgZGVwZW5kcyBvbgorIyB0aGUgY29udGVudHMgb2YgdGhlIHN5c3Jvb3QuCitleHBvcnQgQ09ORklHX1NJVEUKIAogYWNwYXRocyA/PSAiZGVmYXVsdCIKIEVYVFJBX0FVVE9SRUNPTkYgPSAiLS1leGNsdWRlPWF1dG9wb2ludCIKQEAgLTEzMiw2ICsxMzQsOCBAQAogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIAogZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiYXV0b3Rvb2xzX3ByZWNvbmZpZ3VyZSBhdXRvdG9vbHNfYWNsb2NhbHMgJHtFWFRSQUNPTkZGVU5DU30iCitkb19jb21waWxlW3ByZWZ1bmNzXSArPSAiYXV0b3Rvb2xzX2FjbG9jYWxzIgorZG9faW5zdGFsbFtwcmVmdW5jc10gKz0gImF1dG90b29sc19hY2xvY2FscyIKIGRvX2NvbmZpZ3VyZVtwb3N0ZnVuY3NdICs9ICJhdXRvdG9vbHNfcG9zdGNvbmZpZ3VyZSIKIAogQUNMT0NBTERJUiA9ICIke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbCIKQEAgLTE0MCw3ICsxNDQsNiBAQAogQUNMT0NBTEVYVFJBUEFUSF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1JICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC8iCiAKIHB5dGhvbiBhdXRvdG9vbHNfYWNsb2NhbHMgKCkgewotICAgICMgUmVmcmVzaCB2YXJpYWJsZSB3aXRoIGNhY2hlIGZpbGVzCiAgICAgZC5zZXRWYXIoIkNPTkZJR19TSVRFIiwgc2l0ZWluZm9fZ2V0X2ZpbGVzKGQsIHN5c3Jvb3RjYWNoZT1UcnVlKSkKIH0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKaW5kZXggNzhhMmY3Ni4uZmM4MmY4ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCkBAIC03MywxMCArNzMsMTMgQEAKICMKICMgbGliZ2NjLWluaXRpYWwgLSBmYWlscyB3aXRoIENQUCBzYW5pdHkgY2hlY2sgZXJyb3IgaWYgaG9zdCBzeXNyb290IGNvbnRhaW5zCiAjICAgICAgICAgICAgICAgICAgY3Jvc3MgZ2NjIGJ1aWx0IGZvciBhbm90aGVyIHRhcmdldCB0dW5lL3ZhcmlhbnQKKyMgc3lzdGVtdGFwIC0gX0hlbHBlclNEVC5jIHVuZGVmcyBtYWNyb3MgYW5kIHVzZXMgdGhlIGlkZW50aWZpZXJzIGluIG1hY3JvcyBlbWl0dGluZworIyAgICAgICAgICAgICBpbmxpbmUgYXNzZW1ibHkKICMgdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teSAtICR7SE9TVF9QUkVGSVh9IGlzIGVtcHR5IHdoaWNoIHRyaWdnZXJzIHRoZSAiTlVMTAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4IiBlcnJvci4KIElDRUNDX1NZU1RFTV9QQUNLQUdFX0JMICs9ICJcCiAgICAgbGliZ2NjLWluaXRpYWwgXAorICAgIHN5c3RlbXRhcCBcCiAgICAgdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teSBcCiAgICAgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwppbmRleCA3ZmE0ZmYyLi5mNDYzM2RhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKQEAgLTUyNiw3ICs1MjYsNyBAQAogICAgIGJhc2Vfc2l6ZSA9IHNpemVfa2IgKiBvdmVyaGVhZF9mYWN0b3IKICAgICBiYi5kZWJ1ZygxLCAnJWYgPSAlZCAqICVmJyAlIChiYXNlX3NpemUsIHNpemVfa2IsIG92ZXJoZWFkX2ZhY3RvcikpCiAgICAgYmFzZV9zaXplMiA9IG1heChiYXNlX3NpemUsIHJvb3Rmc19yZXFfc2l6ZSkgKyByb290ZnNfZXh0cmFfc3BhY2UKLSAgICBiYi5kZWJ1ZygxLCAnJWYgPSBtYXgoJWYsICVkKVslZl0gKyAlZCcgJSAoYmFzZV9zaXplMiwgYmFzZV9zaXplLCByb290ZnNfcmVxX3NpemUsIG1heChiYXNlX3NpemUsIHJvb3Rmc19yZXFfc2l6ZSksIG92ZXJoZWFkX2ZhY3RvcikpCisgICAgYmIuZGVidWcoMSwgJyVmID0gbWF4KCVmLCAlZClbJWZdICsgJWQnICUgKGJhc2Vfc2l6ZTIsIGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplLCBtYXgoYmFzZV9zaXplLCByb290ZnNfcmVxX3NpemUpLCByb290ZnNfZXh0cmFfc3BhY2UpKQogCiAgICAgYmFzZV9zaXplID0gYmFzZV9zaXplMgogICAgIGlmIGJhc2Vfc2l6ZSAhPSBpbnQoYmFzZV9zaXplKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKaW5kZXggYmYzNjc0Mi4uZWJjYjc5YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKQEAgLTk2LDggKzk2LDEwIEBACiAgICAgICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8lcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlciksICcxJykKIAogICAgIGltYWdlID0gZC5nZXRWYXIoJ0lOSVRSQU1GU19JTUFHRScpCi0gICAgaW1hZ2VfYnVuZGxlID0gZC5nZXRWYXIoJ0lOSVRSQU1GU19JTUFHRV9CVU5ETEUnKQotICAgIGlmIGltYWdlIGFuZCBiYi51dGlscy50b19ib29sZWFuKGltYWdlX2J1bmRsZSwgRmFsc2UpOgorICAgICMgSWYgdGhlIElOVElSQU1GU19JTUFHRSBpcyBzZXQgYnV0IHRoZSBJTklUUkFNRlNfSU1BR0VfQlVORExFIGlzIHNldCB0byAwLAorICAgICMgdGhlIGRvX2J1bmRsZV9pbml0cmFtZnMgZG9lcyBub3RoaW5nLCBidXQgdGhlIElOSVRSQU1GU19JTUFHRSBpcyBidWlsdAorICAgICMgc3RhbmRhbG9uZSBmb3IgdXNlIGJ5IHdpYyBhbmQgb3RoZXIgdG9vbHMuCisgICAgaWYgaW1hZ2U6CiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYnVuZGxlX2luaXRyYW1mcycsICdkZXBlbmRzJywgJyAke0lOSVRSQU1GU19JTUFHRX06ZG9faW1hZ2VfY29tcGxldGUnKQogCiAgICAgIyBOT1RFOiBzZXR0aW5nIElOSVRSQU1GU19UQVNLIGlzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggMTE0ZDY1NTkuLmFhODQ1MWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKQEAgLTE2NDYsNyArMTY0Niw4IEBACiAgICAgICAgICAgICAgICAgcHJvdiA9ICh0aGlzX3NvbmFtZSwgbGRpciwgcGtndmVyKQogICAgICAgICAgICAgICAgIGlmIG5vdCBwcm92IGluIHNvbmFtZXM6CiAgICAgICAgICAgICAgICAgICAgICMgaWYgbGlicmFyeSBpcyBwcml2YXRlIChvbmx5IHVzZWQgYnkgcGFja2FnZSkgdGhlbiBkbyBub3QgYnVpbGQgc2hsaWIgZm9yIGl0Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwcml2YXRlX2xpYnMgb3IgdGhpc19zb25hbWUgbm90IGluIHByaXZhdGVfbGliczoKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGZubWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHByaXZhdGVfbGlicyBvciBsZW4oW2kgZm9yIGkgaW4gcHJpdmF0ZV9saWJzIGlmIGZubWF0Y2guZm5tYXRjaCh0aGlzX3NvbmFtZSwgaSldKSA9PSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgc29uYW1lcy5hZGQocHJvdikKICAgICAgICAgICAgICAgICBpZiBsaWJkaXJfcmUubWF0Y2gob3MucGF0aC5kaXJuYW1lKGZpbGUpKToKICAgICAgICAgICAgICAgICAgICAgbmVlZHNfbGRjb25maWcgPSBUcnVlCkBAIC0xODI5LDcgKzE4MzAsOCBAQAogICAgICAgICAgICAgIyAvb3B0L2FiYy9saWIvbGliZm9vLnNvLjEgYW5kIGNvbnRhaW5zIC91c3IvYmluL2FiYyBkZXBlbmRpbmcgb24gc3lzdGVtIGxpYnJhcnkgbGliZm9vLnNvLjEKICAgICAgICAgICAgICMgYnV0IHNraXBwaW5nIGl0IGlzIHN0aWxsIGJldHRlciBhbHRlcm5hdGl2ZSB0aGFuIHByb3ZpZGluZyBvd24KICAgICAgICAgICAgICMgdmVyc2lvbiBhbmQgdGhlbiBhZGRpbmcgcnVudGltZSBkZXBlbmRlbmN5IGZvciB0aGUgc2FtZSBzeXN0ZW0gbGlicmFyeQotICAgICAgICAgICAgaWYgcHJpdmF0ZV9saWJzIGFuZCBuWzBdIGluIHByaXZhdGVfbGliczoKKyAgICAgICAgICAgIGltcG9ydCBmbm1hdGNoCisgICAgICAgICAgICBpZiBwcml2YXRlX2xpYnMgYW5kIGxlbihbaSBmb3IgaSBpbiBwcml2YXRlX2xpYnMgaWYgZm5tYXRjaC5mbm1hdGNoKG5bMF0sIGkpXSkgPiAwOgogICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICclczogRGVwZW5kZW5jeSAlcyBjb3ZlcmVkIGJ5IFBSSVZBVEVfTElCUycgJSAocGtnLCBuWzBdKSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgblswXSBpbiBzaGxpYl9wcm92aWRlci5rZXlzKCk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MKaW5kZXggYTNhY2FmNi4uZDk4ZmI0YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcwpAQCAtOSw2ICs5LDE0IEBACiBleHBvcnQgU1RBR0lOR19JTkNESVIKIGV4cG9ydCBTVEFHSU5HX0xJQkRJUgogCisjIFBhY2thZ2VzIGNhbiB1c2UKKyMgZmluZF9wYWNrYWdlKFB5dGhvbkludGVycCBSRVFVSVJFRCkKKyMgZmluZF9wYWNrYWdlKFB5dGhvbkxpYnMgUkVRVUlSRUQpCisjIHdoaWNoIGVuZHMgdXAgdXNpbmcgbGlicy9pbmNsdWRlcyBmcm9tIGJ1aWxkIGhvc3QKKyMgVGhlcmVmb3JlIHByZS1lbXB0IHRoYXQgZWZmb3J0CitleHBvcnQgUFlUSE9OX0xJQlJBUlk9IiR7U1RBR0lOR19MSUJESVJ9L2xpYiR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9LnNvIgorZXhwb3J0IFBZVEhPTl9JTkNMVURFX0RJUj0iJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSR7UFlUSE9OX0FCSX0iCisKIGV4cG9ydCBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT0iX3N5c2NvbmZpZ2RhdGEiCiAKICMgc3VwcHJlc3MgaG9zdCB1c2VyJ3Mgc2l0ZS1wYWNrYWdlcyBkaXJzLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcwppbmRleCBhZTY2MDBjLi4wZTkwMTlkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcwpAQCAtMTIsNiArMTIsMTQgQEAKIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUgogZXhwb3J0IFNUQUdJTkdfTElCRElSCiAKKyMgUGFja2FnZXMgY2FuIHVzZQorIyBmaW5kX3BhY2thZ2UoUHl0aG9uSW50ZXJwIFJFUVVJUkVEKQorIyBmaW5kX3BhY2thZ2UoUHl0aG9uTGlicyBSRVFVSVJFRCkKKyMgd2hpY2ggZW5kcyB1cCB1c2luZyBsaWJzL2luY2x1ZGVzIGZyb20gYnVpbGQgaG9zdAorIyBUaGVyZWZvcmUgcHJlLWVtcHQgdGhhdCBlZmZvcnQKK2V4cG9ydCBQWVRIT05fTElCUkFSWT0iJHtTVEFHSU5HX0xJQkRJUn0vbGliJHtQWVRIT05fRElSfSR7UFlUSE9OX0FCSX0uc28iCitleHBvcnQgUFlUSE9OX0lOQ0xVREVfRElSPSIke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfSIKKwogIyBzdXBwcmVzcyBob3N0IHVzZXIncyBzaXRlLXBhY2thZ2VzIGRpcnMuCiBleHBvcnQgUFlUSE9OTk9VU0VSU0lURSA9ICIxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MKaW5kZXggYzQ3OGY0YS4uYTZiZDNmNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcm1fd29yay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcwpAQCAtMTIxLDcgKzEyMSw3IEBACiB9CiBkb19ybV93b3JrX2FsbFtyZWNyZGVwdGFza10gPSAiZG9fcm1fd29yayIKIGRvX3JtX3dvcmtfYWxsW25vZXhlY10gPSAiMSIKLWFkZHRhc2sgcm1fd29ya19hbGwgYWZ0ZXIgYmVmb3JlIGRvX2J1aWxkCithZGR0YXNrIHJtX3dvcmtfYWxsIGJlZm9yZSBkb19idWlsZAogCiBkb19wb3B1bGF0ZV9zZGtbcG9zdGZ1bmNzXSArPSAicm1fd29ya19wb3B1bGF0ZXNkayIKIHJtX3dvcmtfcG9wdWxhdGVzZGsgKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCmluZGV4IDZjZWMyM2UuLmZjMzM4MTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MKQEAgLTk1LDYgKzk1LDExIEBACiAJCXNlZCAtaSAtZSAnL15bI1s6c3BhY2U6XV0qXC9kZXZcL3Jvb3Qve3MvZGVmYXVsdHMvcm8vO3MvXChbWzpzcGFjZTpdXSpbWzpkaWdpdDpdXVwpXChbWzpzcGFjZTpdXSpcKVtbOmRpZ2l0Ol1dJC9cMVwyMC99JyAke0lNQUdFX1JPT1RGU30vZXRjL2ZzdGFiCiAJZmkKIAorCSMgVHdlYWsgdGhlICJtb3VudCAtbyByZW1vdW50LHJ3IC8iIGNvbW1hbmQgaW4gYnVzeWJveC1pbml0dGFiIGluaXR0YWIKKwlpZiBbIC1mICR7SU1BR0VfUk9PVEZTfS9ldGMvaW5pdHRhYiBdOyB0aGVuCisJCXNlZCAtaSAnc3wvYmluL21vdW50IC1vIHJlbW91bnQscncgL3wvYmluL21vdW50IC1vIHJlbW91bnQscm8gL3wnICR7SU1BR0VfUk9PVEZTfS9ldGMvaW5pdHRhYgorCWZpCisKIAkjIElmIHdlJ3JlIHVzaW5nIG9wZW5zc2ggYW5kIHRoZSAvZXRjL3NzaCBkaXJlY3RvcnkgaGFzIG5vIHByZS1nZW5lcmF0ZWQga2V5cywKIAkjIHdlIHNob3VsZCBjb25maWd1cmUgb3BlbnNzaCB0byB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSAvZXRjL3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQogCSMgYW5kIHRoZSBrZXlzIHVuZGVyIC92YXIvcnVuL3NzaC4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwppbmRleCBjZGMzNDJkLi41NWE5YjUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCkBAIC0xOTcsNyArMTk3LDcgQEAKICAgICBmb3IgcGtnYXJjaCBpbiBwa2dhcmNoczoKICAgICAgICAgZm9yIG1hbmlmZXN0IGluIGdsb2IuZ2xvYihkLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9tYW5pZmVzdC0lcy0qLnBvcHVsYXRlX3N5c3Jvb3QiICUgcGtnYXJjaCkpOgogICAgICAgICAgICAgaWYgbWFuaWZlc3QuZW5kc3dpdGgoIi1pbml0aWFsLnBvcHVsYXRlX3N5c3Jvb3QiKToKLSAgICAgICAgICAgICAgICAjIHNraXAgZ2xpYmMtaW5pdGlhbCBhbmQgbGliZ2NjLWluaXRpYWwgZHVlIHRvIGZpbGUgb3ZlcmxhcAorICAgICAgICAgICAgICAgICMgc2tpcCBsaWJnY2MtaW5pdGlhbCBkdWUgdG8gZmlsZSBvdmVybGFwCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIG5vdCBuYXRpdmUgYW5kIChtYW5pZmVzdC5lbmRzd2l0aCgiLW5hdGl2ZS5wb3B1bGF0ZV9zeXNyb290Iikgb3IgIm5hdGl2ZXNkay0iIGluIG1hbmlmZXN0KToKICAgICAgICAgICAgICAgICBjb250aW51ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mIGIvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCmluZGV4IDEzMTFlNmIuLmEwYTdmNDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKQEAgLTM2MCwxMiArMzYwLDYgQEAKICMgVGhlIHBlcnNpc3RlbnQgY2FjaGUgc2hvdWxkIGJlIHNoYXJlZCBieSBhbGwgYnVpbGRzCiBQRVJTSVNURU5UX0RJUiA9ICIke1RPUERJUn0vY2FjaGUiCiBMT0dfRElSID0gIiR7VE1QRElSfS9sb2ciCi1DT19ESVIgPSAiJHtETF9ESVJ9IgotQ1ZTRElSID0gIiR7Q09fRElSfS9jdnMiCi1TVk5ESVIgPSAiJHtDT19ESVJ9L3N2biIKLUdJVERJUiA9ICIke0NPX0RJUn0vZ2l0MiIKLUJaUkRJUiA9ICIke0NPX0RJUn0vYnpyIgotSEdESVIgPSAiJHtDT19ESVJ9L2hnIgogCiBTVEFNUFNfRElSID89ICIke1RNUERJUn0vc3RhbXBzIgogU1RBTVAgPSAiJHtTVEFNUFNfRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfS8ke1BOfS8ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9IgpAQCAtNjc2LDEyICs2NzAsNiBAQAogIyAgZXhwb3J0IERFQklBTl9NSVJST1IgPSAiaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sIgogIyAgICAgaW50byB5b3VyIGxvY2FsLmNvbmYKIAotRkVUQ0hDTURfc3ZuID0gIi91c3IvYmluL2VudiBzdm4gLS1ub24taW50ZXJhY3RpdmUgLS10cnVzdC1zZXJ2ZXItY2VydCIKLUZFVENIQ01EX2N2cyA9ICIvdXNyL2Jpbi9lbnYgY3ZzIgotRkVUQ0hDTURfd2dldCA9ICIvdXNyL2Jpbi9lbnYgd2dldCAtdCAyIC1UIDMwIC0tcGFzc2l2ZS1mdHAgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSIKLUZFVENIQ01EX2J6ciA9ICIvdXNyL2Jpbi9lbnYgYnpyIgotRkVUQ0hDTURfaGcgPSAiL3Vzci9iaW4vZW52IGhnIgotCiBTUkNEQVRFID0gIiR7REFURX0iCiBTUkNSRVYgPz89ICJJTlZBTElEIgogQVVUT1JFViA9ICIke0BiYi5mZXRjaDIuZ2V0X2F1dG9yZXYoZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2RlZmF1bHRzZXR1cC5jb25mIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2RlZmF1bHRzZXR1cC5jb25mCmluZGV4IDliMWVlMjAuLjY2ZmQyNDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9kZWZhdWx0c2V0dXAuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vZGVmYXVsdHNldHVwLmNvbmYKQEAgLTEsNyArMSw2IEBACiBpbmNsdWRlIGNvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jCiBpbmNsdWRlIGNvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC12ZXJzaW9ucy5pbmMKIGluY2x1ZGUgY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCi1pbmNsdWRlIGNvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYwogaW5jbHVkZSBjb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwogCiBUQ01PREUgPz0gImRlZmF1bHQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKaW5kZXggOGY0ZDQ0ZC4uZWE4OGJkNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYwpAQCAtNSw2ICs1LDggQEAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIteGY4NiA/PSAieHNlcnZlci14b3JnIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZWdsID89ICJtZXNhIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2wgPz0gIm1lc2EiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbC1uYXRpdmUgPz0gIm1lc2EtbmF0aXZlIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLWxpYmdsID89ICJuYXRpdmVzZGstbWVzYSIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmdsZXMxID89ICJtZXNhIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2xlczIgPz0gIm1lc2EiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9tZXNhID89ICJtZXNhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKaW5kZXggYWI2ZWJkYi4uZTMxNDY0MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCkBAIC00Myw5ICs0Myw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS1jbHV0dGVyID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWtlcm5lbC1kZXYgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWxzYiA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2UtbHNiLWRldiA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2UtbHNiLXNkayA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbC1kZXYgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzID0gIk9FLUNvcmUiCkBAIC04MCw4ICs3Nyw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tZG9jYm9vay14c2wtc3R5bGVzaGVldHMgPSAiRmVkb3JhPWRvY2Jvb2steHNsLXN0eWxlc2hlZXRzIE9wZW5zdXNlPWRvY2Jvb2steHNsLXN0eWxlc2hlZXRzIgogRElTVFJPX1BOX0FMSUFTX3BuLWRyb3BiZWFyID0gIkRlYmlhbj1kcm9wYmVhciBVYnVudHU9ZHJvcGJlYXIiCiBESVNUUk9fUE5fQUxJQVNfcG4tZHRjID0gIkZlZG9yYT1kdGMgVWJ1bnR1PWR0YyIKLURJU1RST19QTl9BTElBU19wbi1lZ2xpbmZvLWZiID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4tZWdsaW5mby14MTEgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1lbmNvZGluZ3MgPSAiVWJ1bnR1PXhmb250cy1lbmNvZGluZ3MgTWFuZHJpdmE9eDExLWZvbnQtZW5jb2RpbmdzIERlYmlhbj14Zm9udHMtZW5jb2RpbmdzIgogRElTVFJPX1BOX0FMSUFTX3BuLWZvbnQtYWxpYXMgPSAiRmVkb3JhPXhvcmcteDExLWZvbnRzLWJhc2UgTWFuZHJpdmE9eDExLWZvbnQtYWxpYXMgTWVlZ289eG9yZy14MTEtZm9udHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tZm9udC11dGlsID0gIk1lZWdvPXhvcmcteDExLWZvbnQtdXRpbHMgRmVkb3JhPXhvcmcteDExLWZvbnQtdXRpbHMgVWJ1bnR1PXhmb250cy11dGlscyBNYW5kcml2YT14MTEtZm9udC11dGlsIERlYmlhbj14Zm9udHMtdXRpbHMiCkBAIC0yMDIsOCArMTk3LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1saW51eC15b2N0byA9ICJEZWJpYW49bGludXgtYmFzZSBVYnVudHU9bGludXgiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGludXgteW9jdG8tcnQgPSAiRGViaWFuPWxpbnV4LWJhc2UgVWJ1bnR1PWxpbnV4IgogRElTVFJPX1BOX0FMSUFTX3BuLWxpbnV4LXlvY3RvLXRpbnkgPSAiT1NQRFQiCi1ESVNUUk9fUE5fQUxJQVNfcG4tbHNiaW5pdHNjcmlwdHMgPSAiV2luZHJpdmVyIgotRElTVFJPX1BOX0FMSUFTX3BuLWxzYnRlc3QgPSAiV2luZHJpdmVyIgogRElTVFJPX1BOX0FMSUFTX3BuLWx0cCA9ICJNYW5kcml2YT1sdHAgVWJ1bnR1PWx0cCIKIERJU1RST19QTl9BTElBU19wbi1sdHRuZy1tb2R1bGVzID0gIk9TUERUIHVwc3RyZWFtPWh0dHA6Ly9sdHRuZy5vcmcvIgogRElTVFJPX1BOX0FMSUFTX3BuLWx0dG5nLXRvb2xzID0gIk9TUERUIHVwc3RyZWFtPWh0dHA6Ly9sdHRuZy5vcmcvIgpAQCAtMjY1LDcgKzI1OCw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtZGV2aWNlLWRldmVsID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtZWNsaXBzZS1kZWJ1ZyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZSA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLXBhY2thZ2Vncm91cC1jb3JlLWxzYiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBhY2thZ2Vncm91cC1jb3JlLW5mcyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBhY2thZ2Vncm91cC1jb3JlLXNkayA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXBhY2thZ2Vncm91cC1jb3JlLXNzaC1kcm9wYmVhciA9ICJPRS1Db3JlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCmluZGV4IDZhMjMwOGQuLjVmMjFmOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKQEAgLTY2LDYgKzY2LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3NzZGstJHtTREtfU1lTfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpc29uID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iamFtLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCkBAIC0xMTQsOCArMTE1LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2Uta2VybmVsLWRldiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXNhdG8gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1zYXRvLXNkayA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWxzYiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWxzYi1zZGsgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS10ZXN0bWFzdGVyLWluaXRyYW1mcyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXRlc3RtYXN0ZXIgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1jbHV0dGVyID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKQEAgLTE0NCw2ICsxNDMsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy10ZXN0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXdhaXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlYmlhbnV0aWxzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZWphZ251ID0gIk5hdGhhbiBSb3NzaSA8bmF0aGFuQG5hdGhhbnJvc3NpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGhjcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgpAQCAtMTY1LDkgKzE2NSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZml2YXIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZmlib290bWdyID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZWdsaW5mby1mYiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLXgxMSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLXdheWxhbmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZWxmdXRpbHMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVsbCA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jaGFudCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKQEAgLTIxNywxMCArMjE0LDEwIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLTIuMCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItbmV0d29ya2luZyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLWxvY2FsZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLW10cmFjZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLXNjcmlwdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy10ZXN0c3VpdGUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGlkZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdtcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKQEAgLTQ1NSw5ICs0NTIsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbGx2bSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxvZ3JvdGF0ZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHJ6c3ogPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYmluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHNidGVzdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiLXJlbGVhc2UgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzb2YgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHAgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0dG5nLW1vZHVsZXMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCmluZGV4IDYyMDk3OGEuLmFhZjA0ZTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKQEAgLTM2LDcgKzM2LDcgQEAKIFNFQ1VSSVRZX0NGTEFHU19wbi1saWJnY2NfcG93ZXJwYyA9ICIiCiAKIFNFQ1VSSVRZX0NGTEFHU19wbi1nbGliYyA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tZ2xpYmMtaW5pdGlhbCA9ICIiCitTRUNVUklUWV9DRkxBR1NfcG4tZ2xpYmMtdGVzdHN1aXRlID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nY2MtcnVudGltZSA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1YiA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1Yi1lZmkgPSAiIgpAQCAtNjAsNyArNjAsNyBAQAogCiBTRUNVUklUWV9TVEFDS19QUk9URUNUT1JfcG4tZ2NjLXJ1bnRpbWUgPSAiIgogU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX3BuLWdsaWJjID0gIiIKLVNFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9wbi1nbGliYy1pbml0aWFsID0gIiIKK1NFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9wbi1nbGliYy10ZXN0c3VpdGUgPSAiIgogIyBBbGwgeG9yZyBtb2R1bGUgZHJpdmVycyBuZWVkIHRvIGJlIGxpbmtlZCB0aGlzIHdheSBhcyB3ZWxsIGFuZCBhcmUKICMgaGFuZGxlZCBpbiByZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKIFNFQ1VSSVRZX0xERkxBR1NfcG4teHNlcnZlci14b3JnID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwppbmRleCBjODliOGUwLi5kOGY0MzQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCkBAIC0xNCw4ICsxNCw2IEBACiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1NES19QUkVGSVh9Y29tcGlsZXJsaWJzID0gIm5hdGl2ZXNkay1nY2MtcnVudGltZSIKIAogIyBEZWZhdWx0IGxpYmMgY29uZmlnCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1pbml0aWFsID0gIiR7VENMSUJDfS1pbml0aWFsIgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLSR7U0RLX1BSRUZJWH1saWJjLWluaXRpYWwgPz0gIm5hdGl2ZXNkay1nbGliYy1pbml0aWFsIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZ2V0dGV4dCA/Pz0gImdldHRleHQiCiAKIEdDQ1ZFUlNJT04gPz0gIjkuJSIKQEAgLTIzLDcgKzIxLDcgQEAKIEJJTlVWRVJTSU9OID89ICIyLjMyJSIKIEdEQlZFUlNJT04gPz0gIjguMyUiCiBHTElCQ1ZFUlNJT04gPz0gIjIuMzAlIgotTElOVVhMSUJDVkVSU0lPTiA/PSAiNS4wJSIKK0xJTlVYTElCQ1ZFUlNJT04gPz0gIjUuMiUiCiBRRU1VVkVSU0lPTiA/PSAiNC4xJSIKIEdPVkVSU0lPTiA/PSAiMS4xMiUiCiAjIFRoaXMgY2FuIG5vdCB1c2Ugd2lsZGNhcmRzIGxpa2UgOC4wLiUgc2luY2UgaXQgaXMgYWxzbyB1c2VkIGluIG1lc2EgdG8gZGVub3RlCkBAIC02Miw4ICs2MCw2IEBACiBQUkVGRVJSRURfVkVSU0lPTl9nbGliYy1tdHJhY2UgICAgICAgICAgICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2dsaWJjLXNjcmlwdHMgICAgICAgICAgICA/PSAiJHtHTElCQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLWdsaWJjICAgICAgICAgID89ICIke0dMSUJDVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9nbGliYy1pbml0aWFsICAgICAgICAgICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1nbGliYy1pbml0aWFsICA/PSAiJHtHTElCQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSAgID89ICIke0dMSUJDVkVSU0lPTn0iCiAKIFBSRUZFUlJFRF9WRVJTSU9OX3FlbXUgPz0gIiR7UUVNVVZFUlNJT059IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3dvcmxkLWJyb2tlbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyY2FjZmQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLSMKLSMgRXhjbHVkZSBrbm93biBicm9rZW4gcGFja2FnZXMKLSMKLQotIyBydC10ZXN0cyBuZWVkcyBQSSBtdXRleCBzdXBwb3J0IGluIGxpYmMKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1ydC10ZXN0c19saWJjLW11c2wgPSAiMSIKLQotIyBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnX1NUQVRfVkVSJwotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXBzZXVkb19saWJjLW11c2wgPSAiMSIKLQotIyBlcnJvcjogZXJyb3IuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXByZWxpbmtfbGliYy1tdXNsID0gIjEiCi0KLSMgZXJyb3I6IG9ic3RhY2suaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXN5c3RlbXRhcF9saWJjLW11c2wgPSAiMSIKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1zeXN0ZW10YXAtdXByb2Jlc19saWJjLW11c2wgPSAiMSIKLQotIyBlcnJvcjogYSBwYXJhbWV0ZXIgbGlzdCB3aXRob3V0IHR5cGVzIGlzIG9ubHkgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24KLSMgICAgICAgICAgICB2b2lkICgqX2Z1bmN0aW9uKShzaWd2YWxfdCk7Ci1FWENMVURFX0ZST01fV09STERfcG4tcWVtdV9saWJjLW11c2wgPSAiMSIKLQotIyBlcnJvcjogZm9ybWF0ICclcycgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdjaGFyIConLCBidXQgYXJndW1lbnQgNCBoYXMgdHlwZSAnaW50JyBbLVdlcnJvcj1mb3JtYXQ9XQotIyAgIHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVzIiwgc3RyZXJyb3JfcihlcnIsIHNidWYsIHNpemVvZihzYnVmKSkpOwotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXBlcmZfbGliYy1tdXNsID0gIjEiCi0KLSMgZXJyb3I6ICdSVExEX05FWFQnIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQotRVhDTFVERV9GUk9NX1dPUkxEX3BuLWdjYy1zYW5pdGl6ZXJzX2xpYmMtbXVzbCA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS10aHVtYi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXRodW1iLmluYwppbmRleCAwYjQ3Y2NhLi5iYWUxNjlkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXRodW1iLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXRodW1iLmluYwpAQCAtMSw4ICsxLDYgQEAKIAogVFVORVZBTElEW3RodW1iXSA9ICJTdXBwb3J0IFRodW1iIGluc3RydWN0aW9ucyIKIAotQVJNX1RIVU1CX1NVRkZJWCA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCAnYXJtdjQgYXJtdjUgYXJtdjYnLCAndCcsICd0MicsIGQpfSIKLQogIyBJZiB0aGUgZGV2aWNlIHN1cHBvcnRzIEFSTSwgdGhlbiByZXNwZWN0IEFSTV9USFVNQl9PUFQgKHdoaWNoIGNhbiBiZSAiYXJtIiBvciAidGh1bWIiKQogIyBJZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBBUk0sIHRoZW4gYWx3YXlzIHNldCAidGh1bWIiIGV2ZW4gd2hlbgogIyBzb21lIHJlY2lwZSBleHBsaWNpdGx5IHNldHMgQVJNX0lOU1RSVUNUSU9OX1NFVCB0byAiYXJtIgpAQCAtMjMsNiArMjEsMTEgQEAKIAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3RodW1iJywgJyAtbSR7QVJNX01fT1BUfScsICcnLCBkKX0iCiAKK0FSTV9USFVNQl9TVUZGSVggPSAidDIiCitBUk1fVEhVTUJfU1VGRklYX2FybXY0ID0gInQiCitBUk1fVEhVTUJfU1VGRklYX2FybXY1ID0gInQiCitBUk1fVEhVTUJfU1VGRklYX2FybXY2ID0gInQiCisKICMgQWRkIHN1ZmZpeCBmcm9tIEFSTV9USFVNQl9TVUZGSVggb25seSBpZiBhZnRlciBhbGwgdGhpcyB3ZSBzdGlsbCBzZXQgQVJNX01fT1BUIHRvIHRodW1iCiBBUk1QS0dTRlhfVEhVTUIgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3RodW1iJywgJyR7QVJNX1RIVU1CX1NVRkZJWH0nLCAnJywgZCkgaWYgZC5nZXRWYXIoJ0FSTV9NX09QVCcpID09ICd0aHVtYicgZWxzZSAnJ30iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGMuaW5jCmluZGV4IDljZjZiODguLjhjMGM5NDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjLmluYwpAQCAtOCw2ICs4LDExIEBACiBUVU5FX1BLR0FSQ0ggPSAiJHtUVU5FX1BLR0FSQ0hfdHVuZS0ke0RFRkFVTFRUVU5FfX0iCiBBQklFWFRFTlNJT04gPz0gIiIKIAorIyBFbmRpYW4KK1RVTkVWQUxJRFtiaWdlbmRpYW5dID0gIlVzZSBQb3dlclBDIEJpZyBFbmRpYW4iCisKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiIC1tYmlnLWVuZGlhbiIsICIgLW1saXR0bGUtZW5kaWFuIiwgZCl9IgorCiBUVU5FVkFMSURbbTMyXSA9ICJQb3dlciBFTEYzMiBzdGFuZGFyZCBBQkkiCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbTMyJywgJyAtbTMyJywgJycsIGQpfSIKIFRVTkVfQVJDSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbTMyJywgJ3Bvd2VycGMnLCAnJywgZCl9IgpAQCAtMjIsMTMgKzI3LDI0IEBACiBUVU5FVkFMSURbYWx0aXZlY10gPSAiQWx0aXZlYyIKIAogIyBCYXNpYyB0dW5lIGRlZmluaXRpb25zCi1BVkFJTFRVTkVTICs9ICJwb3dlcnBjIHBvd2VycGMtbmYiIAotVFVORV9GRUFUVVJFU190dW5lLXBvd2VycGMtbmYgPSAibTMyIGZwdS1zb2Z0IgorQVZBSUxUVU5FUyArPSAicG93ZXJwYyBwb3dlcnBjLW5mIHBvd2VycGNsZSBwb3dlcnBjbGUtbmYiIAorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcG93ZXJwYy1uZiA9ICJtMzIgZnB1LXNvZnQgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wb3dlcnBjLW5mID0gImxpYiIKIFRVTkVfUEtHQVJDSF90dW5lLXBvd2VycGMtbmYgPSAicG93ZXJwYy1uZiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjLW5mID0gInBvd2VycGMtbmYiCiAKLVRVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjID0gIm0zMiBmcHUtaGFyZCIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjID0gIm0zMiBmcHUtaGFyZCBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBvd2VycGMgPSAibGliIgogVFVORV9QS0dBUkNIX3R1bmUtcG93ZXJwYyA9ICJwb3dlcnBjIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGMgPSAicG93ZXJwYyIKKworVFVORV9GRUFUVVJFU190dW5lLXBvd2VycGNsZS1uZiA9ICJtMzIgZnB1LXNvZnQiCitCQVNFX0xJQl90dW5lLXBvd2VycGNsZS1uZiA9ICJsaWIiCitUVU5FX1BLR0FSQ0hfdHVuZS1wb3dlcnBjbGUtbmYgPSAicG93ZXJwY2xlLW5mIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGNsZS1uZiA9ICJwb3dlcnBjbGUtbmYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjbGUgPSAibTMyIGZwdS1oYXJkIgorQkFTRV9MSUJfdHVuZS1wb3dlcnBjbGUgPSAibGliIgorVFVORV9QS0dBUkNIX3R1bmUtcG93ZXJwY2xlID0gInBvd2VycGNsZSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjbGUgPSAicG93ZXJwY2xlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jCmluZGV4IGQ5OTE2ZDQuLjRiYzU5ODMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMKQEAgLTEzLDggKzEzLDE0IEBACiAjIHVzZXIgbW9kZSBxZW11IGRvZXNuJ3Qgc3VwcG9ydCBwcGM2NAogTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbTY0JywgJ3FlbXUtdXNlcm1vZGUnLCAnJywgZCl9IgogCi1BVkFJTFRVTkVTICs9ICJwb3dlcnBjNjQiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcG93ZXJwYzY0ID0gIm02NCBmcHUtaGFyZCIKK0FWQUlMVFVORVMgKz0gInBvd2VycGM2NCBwb3dlcnBjNjRsZSIKKworVFVORV9GRUFUVVJFU190dW5lLXBvd2VycGM2NCA9ICJtNjQgZnB1LWhhcmQgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wb3dlcnBjNjQgPSAibGliNjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wb3dlcnBjNjQgPSAicG93ZXJwYzY0IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGM2NCA9ICJwb3dlcnBjNjQiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjNjRsZSA9ICJtNjQgZnB1LWhhcmQiCitCQVNFX0xJQl90dW5lLXBvd2VycGM2NGxlID0gImxpYjY0IgorVFVORV9QS0dBUkNIX3R1bmUtcG93ZXJwYzY0bGUgPSAicG93ZXJwYzY0bGUiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0bGUgPSAicG93ZXJwYzY0bGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKaW5kZXggYTVmOWVkOC4uOTc4ODIwYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYwpAQCAtMSw4ICsxLDcgQEAKICMgRm9yIHJ1bnFlbXUKIElNQUdFX0NMQVNTRVMgKz0gInFlbXVib290IgotUUJfTUVNID0gIi1tIDI1NiIKIFFCX01BQ0hJTkUgPSAiLW1hY2hpbmUgbWFsdGEiCiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAiY29uc29sZT10dHlTMCBjb25zb2xlPXR0eSIKLVFCX09QVF9BUFBFTkQgPSAiLXZnYSBjaXJydXMgLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IgorUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5CiBRQl9PUFRfQVBQRU5EICs9ICItb2JqZWN0IHJuZy1yYW5kb20sZmlsZW5hbWU9L2Rldi91cmFuZG9tLGlkPXJuZzAgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSxybmc9cm5nMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKaW5kZXggMzkzMWIwZi4uNDk1NDE4ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKQEAgLTksNyArOSw3IEBACiBRQl9BVURJT19EUlYgPSAiYWxzYSIKIFFCX0FVRElPX09QVCA9ICItc291bmRodyBhYzk3LGVzMTM3MCIKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJ2Z2E9MCB1dmVzYWZiLm1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0gb3Byb2ZpbGUudGltZXI9MSB1dmVzYWZiLnRhc2tfdGltZW91dD0tMSIKLVFCX09QVF9BUFBFTkQgPSAiLXZnYSB2bXdhcmUgLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IgorUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5CiBRQl9PUFRfQVBQRU5EICs9ICItb2JqZWN0IHJuZy1yYW5kb20sZmlsZW5hbWU9L2Rldi91cmFuZG9tLGlkPXJuZzAgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSxybmc9cm5nMCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3FlbXVyaXNjdi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvcWVtdXJpc2N2LmluYwppbmRleCBmMWNiNjI4Li5kZjM1ZjI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvcWVtdXJpc2N2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvcWVtdXJpc2N2LmluYwpAQCAtMTEsNyArMTEsOSBAQAogCiBTRVJJQUxfQ09OU09MRVMgPz0gIjExNTIwMDt0dHlTMCAxMTUyMDA7aHZjMCIKIAotSU1BR0VfRlNUWVBFU19hcHBlbmQgPSAiIGV4dDQiCitJTUFHRV9GU1RZUEVTICs9ICJleHQ0IHdpYy5xY293MiIKKworV0tTX0ZJTEUgPz0gInFlbXVyaXNjdi53a3MiCiAKIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gIiBrZXJuZWwtbW9kdWxlcyIKIApAQCAtMjQsNyArMjYsNiBAQAogCiAjIHFlbXVib290IG9wdGlvbnMKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJlYXJseWNvbj1zYmkiCi1RQl9NRU0gPSAiLW0gNTEyIgogUUJfTUFDSElORSA9ICItbWFjaGluZSB2aXJ0IgogUUJfREVGQVVMVF9CSU9TID0gImZ3X2p1bXAuZWxmIgogUUJfVEFQX09QVCA9ICItbmV0ZGV2IHRhcCxpZD1uZXQwLGlmbmFtZT1AVEFQQCxzY3JpcHQ9bm8sZG93bnNjcmlwdD1ubyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi90dW5lLXJpc2N2LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi90dW5lLXJpc2N2LmluYwppbmRleCAxZTNhMTA4Li4yNWQwNDYzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvdHVuZS1yaXNjdi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jCkBAIC0zLDE2ICszLDE2IEBACiBUVU5FVkFMSURbcmlzY3Y2NF0gPSAiRW5hYmxlIDY0LWJpdCBSSVNDLVYgb3B0aW1pemF0aW9ucyIKIFRVTkVWQUxJRFtyaXNjdjMyXSA9ICJFbmFibGUgMzItYml0IFJJU0MtViBvcHRpbWl6YXRpb25zIgogCi1UVU5FVkFMSURbbGl0dGxlZW5kaWFuXSA9ICJMaXR0bGUgZW5kaWFuIG1vZGUiCitUVU5FVkFMSURbYmlnZW5kaWFuXSA9ICJCaWcgZW5kaWFuIG1vZGUiCiAKIEFWQUlMVFVORVMgKz0gInJpc2N2NjQgcmlzY3YzMiIKIAotVFVORV9GRUFUVVJFU190dW5lLXJpc2N2NjQgPSAicmlzY3Y2NCBsaXR0bGVlbmRpYW4iCitUVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3Y2NCA9ICJyaXNjdjY0IgogVFVORV9BUkNIX3R1bmUtcmlzY3Y2NCA9ICJyaXNjdjY0IgogVFVORV9QS0dBUkNIX3R1bmUtcmlzY3Y2NCA9ICJyaXNjdjY0IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXJpc2N2NjQgPSAicmlzY3Y2NCIKIAotVFVORV9GRUFUVVJFU190dW5lLXJpc2N2MzIgPSAicmlzY3YzMiBsaXR0bGVlbmRpYW4iCitUVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3YzMiA9ICJyaXNjdjMyIgogVFVORV9BUkNIX3R1bmUtcmlzY3YzMiA9ICJyaXNjdjMyIgogVFVORV9QS0dBUkNIX3R1bmUtcmlzY3YzMiA9ICJyaXNjdjMyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXJpc2N2MzIgPSAicmlzY3YzMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYwppbmRleCBkODgzZWJhLi5iMjU5OTVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jCkBAIC02LDggKzYsMTEgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdhcm0xMTM2amZzJywgJyAtbWNwdT1hcm0xMTM2amYtcycsICcnLCBkKX0iCiBNQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdhcm0xMTM2amZzJywgJ2FybXY2OicsICcnICxkKX0iCiAKLUFWQUlMVFVORVMgKz0gImFybTExMzZqZnMiCitBVkFJTFRVTkVTICs9ICJhcm0xMTM2amZzIGFybTExMzZqZnNoZiIKIEFSTVBLR0FSQ0hfdHVuZS1hcm0xMTM2amZzID0gImFybTExMzZqZnMiCitBUk1QS0dBUkNIX3R1bmUtYXJtMTEzNmpmc2hmID0gImFybTExMzZqZnMiCiAjIG1jcHUgaXMgdXNlZCBzbyBkb24ndCB1c2UgYXJtdjYgYXMgd2UgZG9uJ3Qgd2FudCBtYXJjaAogVFVORV9GRUFUVVJFU190dW5lLWFybTExMzZqZnMgPSAiYXJtIGFybTExMzZqZnMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmc2hmID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybTExMzZqZnN9IGNhbGxjb252ZW50aW9uLWhhcmQiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTEzNmpmcyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12Nn0gYXJtMTEzNmpmcy12ZnAiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTEzNmpmc2hmID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2aGZ9IGFybTExMzZqZnNoZi12ZnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anotcy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anotcy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc0MWU4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqei1zLmluYwpAQCAtMCwwICsxLDE3IEBACitERUZBVUxUVFVORSA/PSAiYXJtMTE3Nmp6cyIKKworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12Ni5pbmMKKworVFVORVZBTElEW2FybTExNzZqenNdID0gIkVuYWJsZSBhcm0xMTc2anpzIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FybTExNzZqenMnLCAnIC1tY3B1PWFybTExNzZqei1zJywgJycsIGQpfSIKK01BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FybTExNzZqenMnLCAnYXJtdjY6JywgJycgLGQpfSIKKworQVZBSUxUVU5FUyArPSAiYXJtMTE3Nmp6cyIKK0FSTVBLR0FSQ0hfdHVuZS1hcm0xMTc2anpzID0gImFybTExNzZqenMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTE3Nmp6cyA9ICJhcm0gdGh1bWIgYXJtMTE3Nmp6cyIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm0xMTc2anpzID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2dGItbm92ZnB9IGFybTExNzZqenMgYXJtMTE3Nmp6c3QiCisKK0FWQUlMVFVORVMgKz0gImFybTExNzZqenMtYmUiCitBUk1QS0dBUkNIX3R1bmUtYXJtMTE3Nmp6cy1iZSA9ICIke0FSTVBLR0FSQ0hfdHVuZS1hcm0xMTc2anpzfSIKK1RVTkVfRkVBVFVSRVNfdHVuZS1hcm0xMTc2anpzLWJlID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybTExNzZqenN9IGJpZ2VuZGlhbiIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm0xMTc2anpzLWJlID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2dGItbm92ZnB9IGFybTExNzZqenNiIGFybTExNzZqenN0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWVwOTMxMi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1lcDkzMTIuaW5jCmluZGV4IDRkOTI4MjEuLmJlMjBlYjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWVwOTMxMi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtZXA5MzEyLmluYwpAQCAtMiw3ICsyLDcgQEAKIAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12NC5pbmMKIAotVFVORVZBTElEW2VwOTMxMl0gPSAiRW5hYmxlIEludGVsIFBYQTI3eCBzcGVjaWZpYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucyIKK1RVTkVWQUxJRFtlcDkzMTJdID0gIkVuYWJsZSBDaXJydXMgTG9naWMgRVA5MzEyIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2VwOTMxMicsICcgLW1hcmNoPWVwOTMxMiAtbWNwdT1lcDkzMTInLCAnJywgZCl9IgogTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZXA5MzEyJywgJ2FybXY0OicsICcnICxkKX0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjUuaW5jCmluZGV4IDM5NTAxYmQuLjQ4YzMzZmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI1LmluYwpAQCAtNiwxMiArNiwxMiBAQAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Bvd2VyNScsICcgLW1jcHU9cG93ZXI1JywgJycsIGQpfSIKIAogQVZBSUxUVU5FUyArPSAicHBjcDUgcHBjNjRwNSIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGNwNSA9ICJtMzIgZnB1LWhhcmQgcG93ZXI1IGFsdGl2ZWMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjcDUgPSAibTMyIGZwdS1oYXJkIHBvd2VyNSBhbHRpdmVjIGJpZ2VuZGlhbiIKIEJBU0VfTElCX3R1bmUtcHBjcDUgPSAibGliIgogVFVORV9QS0dBUkNIX3R1bmUtcHBjcDUgPSAicHBjcDUiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjcDUgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY30gcHBjcDUiCiAKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NHA1ID0gIm02NCBmcHUtaGFyZCBwb3dlcjUgYWx0aXZlYyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NHA1ID0gIm02NCBmcHUtaGFyZCBwb3dlcjUgYWx0aXZlYyBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBwYzY0cDUgPSAibGliNjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGM2NHA1ID0gInBwYzY0cDUiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjNjRwNSA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjNjR9IHBwYzY0cDUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjYuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI2LmluYwppbmRleCAxZDVlOGVjLi5iNzA4NjYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjYuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNi5pbmMKQEAgLTYsMTIgKzYsMTIgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwb3dlcjYnLCAnIC1tY3B1PXBvd2VyNicsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwY3A2IHBwYzY0cDYiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjcDYgPSAibTMyIGZwdS1oYXJkIHBvd2VyNiBhbHRpdmVjIgorVFVORV9GRUFUVVJFU190dW5lLXBwY3A2ID0gIm0zMiBmcHUtaGFyZCBwb3dlcjYgYWx0aXZlYyBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBwY3A2ID0gImxpYiIKIFRVTkVfUEtHQVJDSF90dW5lLXBwY3A2ID0gInBwY3A2IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY3A2ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwY3A2IgogCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRwNiA9ICJtNjQgZnB1LWhhcmQgcG93ZXI2IGFsdGl2ZWMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRwNiA9ICJtNjQgZnB1LWhhcmQgcG93ZXI2IGFsdGl2ZWMgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wcGM2NHA2ID0gImxpYjY0IgogVFVORV9QS0dBUkNIX3R1bmUtcHBjNjRwNiA9ICJwcGM2NHA2IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzY0cDYgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0fSBwcGM2NHA2IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI3LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNy5pbmMKaW5kZXggOGYzZjAzNy4uZTk3NmNjMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI3LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjcuaW5jCkBAIC02LDEyICs2LDEyIEBACiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncG93ZXI3JywgJyAtbWNwdT1wb3dlcjcnLCAnJywgZCl9IgogCiBBVkFJTFRVTkVTICs9ICJwcGNwNyBwcGM2NHA3IgotVFVORV9GRUFUVVJFU190dW5lLXBwY3A3ID0gIm0zMiBmcHUtaGFyZCBwb3dlcjcgYWx0aXZlYyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGNwNyA9ICJtMzIgZnB1LWhhcmQgcG93ZXI3IGFsdGl2ZWMgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wcGNwNyA9ICJsaWIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGNwNyA9ICJwcGNwNyIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGNwNyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjfSBwcGNwNyIKIAotVFVORV9GRUFUVVJFU190dW5lLXBwYzY0cDcgPSAibTY0IGZwdS1oYXJkIHBvd2VyNyBhbHRpdmVjIgorVFVORV9GRUFUVVJFU190dW5lLXBwYzY0cDcgPSAibTY0IGZwdS1oYXJkIHBvd2VyNyBhbHRpdmVjIGJpZ2VuZGlhbiIKIEJBU0VfTElCX3R1bmUtcHBjNjRwNyA9ICJsaWI2NCIKIFRVTkVfUEtHQVJDSF90dW5lLXBwYzY0cDcgPSAicHBjNjRwNyIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGM2NHA3ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGM2NH0gcHBjNjRwNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzQ3Ni5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM0NzYuaW5jCmluZGV4IGQwMDExZmYuLjMxZWVjYzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzQ3Ni5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNDc2LmluYwpAQCAtNiw3ICs2LDcgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwcGM0NzYnLCAnIC1tY3B1PTQ3NicsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwYzQ3NiIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGM0NzYgPSAibTMyIGZwdS1oYXJkIHBwYzQ3NiIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGM0NzYgPSAibTMyIGZwdS1oYXJkIHBwYzQ3NiBiaWdlbmRpYW4iCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGM0NzYgPSAicHBjNDc2IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzQ3NiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjfSBwcGM0NzYiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzYwM2UuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNjAzZS5pbmMKaW5kZXggMTNmNjBkZC4uYjExMGYxMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNjAzZS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNjAzZS5pbmMKQEAgLTYsNyArNiw3IEBACiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncHBjNjAzZScsICcgLW1jcHU9NjAzZScsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwYzYwM2UiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjAzZSA9ICJtMzIgZnB1LWhhcmQgcHBjNjAzZSIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGM2MDNlID0gIm0zMiBmcHUtaGFyZCBwcGM2MDNlIGJpZ2VuZGlhbiIKIFRVTkVfUEtHQVJDSF90dW5lLXBwYzYwM2UgPSAicHBjNjAzZSIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGM2MDNlID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwYzYwM2UiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzc0MDAuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNzQwMC5pbmMKaW5kZXggNDI1ZThiZC4uOTJkOTAyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNzQwMC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNzQwMC5pbmMKQEAgLTYsNyArNiw3IEBACiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncHBjNzQwMCcsICcgLW1jcHU9NzQwMCAtbW5vLXNwZScsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwYzc0MDAiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNzQwMCA9ICJtMzIgZnB1LWhhcmQgcHBjNzQwMCBhbHRpdmVjIgorVFVORV9GRUFUVVJFU190dW5lLXBwYzc0MDAgPSAibTMyIGZwdS1oYXJkIHBwYzc0MDAgYWx0aXZlYyBiaWdlbmRpYW4iCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGM3NDAwID0gInBwYzc0MDAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjNzQwMCA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjfSBwcGM3NDAwIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlMzAwYzIuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTMwMGMyLmluYwppbmRleCBhZjIxZjYwLi42YWRlYjRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlMzAwYzIuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2UzMDBjMi5pbmMKQEAgLTYsNiArNiw2IEBACiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncHBjZTMwMGMyJywgJyAtbWNwdT1lMzAwYzInLCAnJywgZCl9IgogCiBBVkFJTFRVTkVTICs9ICJwcGNlMzAwYzIiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTMwMGMyID0gIm0zMiBmcHUtc29mdCBwcGNlMzAwYzIiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTMwMGMyID0gIm0zMiBmcHUtc29mdCBwcGNlMzAwYzIgYmlnZW5kaWFuIgogVFVORV9QS0dBUkNIX3R1bmUtcHBjZTMwMGMyID0gInBwY2UzMDBjMiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGNlMzAwYzIgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYy1uZn0gcHBjZTMwMGMyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMC5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwLmluYwppbmRleCA4OWVjM2YzLi5hYmY4MWI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwLmluYwpAQCAtMTUsNiArMTUsNiBAQAogQUJJRVhURU5TSU9OIC49ICIke1NQRUFCSUVYVEVOU0lPTn0iCiAKIEFWQUlMVFVORVMgKz0gInBwY2U1MDAiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTUwMCA9ICJtMzIgc3BlIHBwY2U1MDAiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTUwMCA9ICJtMzIgc3BlIHBwY2U1MDAgYmlnZW5kaWFuIgogVFVORV9QS0dBUkNIX3R1bmUtcHBjZTUwMCA9ICJwcGNlNTAwIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY2U1MDAgPSAicHBjZTUwMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDBtYy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwbWMuaW5jCmluZGV4IGJjMjZhMGYuLjlmOGExNzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDBtYy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMG1jLmluYwpAQCAtNiw3ICs2LDcgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwcGNlNTAwbWMnLCAnIC1tY3B1PWU1MDBtYycsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwY2U1MDBtYyIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGNlNTAwbWMgPSAibTMyIGZwdS1oYXJkIHBwY2U1MDBtYyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGNlNTAwbWMgPSAibTMyIGZwdS1oYXJkIHBwY2U1MDBtYyBiaWdlbmRpYW4iCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGNlNTAwbWMgPSAicHBjZTUwMG1jIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY2U1MDBtYyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjfSBwcGNlNTAwbWMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDB2Mi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwdjIuaW5jCmluZGV4IGQzMThiYmEuLmY2YzdjMTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDB2Mi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMHYyLmluYwpAQCAtMTUsNiArMTUsNiBAQAogQUJJRVhURU5TSU9OIC49ICIke1NQRUFCSUVYVEVOU0lPTn0iCiAKIEFWQUlMVFVORVMgKz0gInBwY2U1MDB2MiIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGNlNTAwdjIgPSAibTMyIHBwY2U1MDB2MiIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGNlNTAwdjIgPSAibTMyIHBwY2U1MDB2MiBiaWdlbmRpYW4iCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGNlNTAwdjIgPSAicHBjZTUwMHYyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY2U1MDB2MiA9ICJwcGNlNTAwdjIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTUwMC5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTUwMC5pbmMKaW5kZXggY2ViYjI0NC4uYWNjNmE1MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTU1MDAuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1NTAwLmluYwpAQCAtNiwxMiArNiwxMiBAQAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2U1NTAwJywgJyAtbWNwdT1lNTUwMCcsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwY2U1NTAwIHBwYzY0ZTU1MDAiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTU1MDAgPSAibTMyIGZwdS1oYXJkIGU1NTAwIgorVFVORV9GRUFUVVJFU190dW5lLXBwY2U1NTAwID0gIm0zMiBmcHUtaGFyZCBlNTUwMCBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBwY2U1NTAwID0gImxpYiIKIFRVTkVfUEtHQVJDSF90dW5lLXBwY2U1NTAwID0gInBwY2U1NTAwIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY2U1NTAwID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwY2U1NTAwIgogCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRlNTUwMCA9ICJtNjQgZnB1LWhhcmQgZTU1MDAiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRlNTUwMCA9ICJtNjQgZnB1LWhhcmQgZTU1MDAgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wcGM2NGU1NTAwID0gImxpYjY0IgogVFVORV9QS0dBUkNIX3R1bmUtcHBjNjRlNTUwMCA9ICJwcGM2NGU1NTAwIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzY0ZTU1MDAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0fSBwcGM2NGU1NTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTY1MDAuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTY1MDAuaW5jCmluZGV4IDVkYjdlNzYuLmQxMmQyMTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U2NTAwLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNjUwMC5pbmMKQEAgLTYsMTIgKzYsMTIgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdlNjUwMCcsICcgLW1jcHU9ZTY1MDAnLCAnJywgZCl9IgogCiBBVkFJTFRVTkVTICs9ICJwcGNlNjUwMCBwcGM2NGU2NTAwIgotVFVORV9GRUFUVVJFU190dW5lLXBwY2U2NTAwID0gIm0zMiBmcHUtaGFyZCBlNjUwMCBhbHRpdmVjIgorVFVORV9GRUFUVVJFU190dW5lLXBwY2U2NTAwID0gIm0zMiBmcHUtaGFyZCBlNjUwMCBhbHRpdmVjIGJpZ2VuZGlhbiIKIEJBU0VfTElCX3R1bmUtcHBjZTY1MDAgPSAibGliIgogVFVORV9QS0dBUkNIX3R1bmUtcHBjZTY1MDAgPSAicHBjZTY1MDAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjZTY1MDAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY30gcHBjZTY1MDAiCiAKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NGU2NTAwID0gIm02NCBmcHUtaGFyZCBlNjUwMCBhbHRpdmVjIgorVFVORV9GRUFUVVJFU190dW5lLXBwYzY0ZTY1MDAgPSAibTY0IGZwdS1oYXJkIGU2NTAwIGFsdGl2ZWMgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wcGM2NGU2NTAwID0gImxpYjY0IgogVFVORV9QS0dBUkNIX3R1bmUtcHBjNjRlNjUwMCA9ICJwcGM2NGU2NTAwIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzY0ZTY1MDAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0fSBwcGM2NGU2NTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKaW5kZXggNjg2ZjkzOC4uMDIyN2YzYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCkBAIC0xOCw3ICsxOCw3IEBACiAjIGtlcm5lbC1yZWxhdGVkIHZhcmlhYmxlcwogIwogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID8/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjUuMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjUuMiUiCiAKICMKICMgWFNFUlZFUiBzdWJjb21wb25lbnRzLCB1c2VkIHRvIGJ1aWxkIHRoZSBYU0VSVkVSIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCmluZGV4IDBhMmM5OTUuLjI2ZjQwYjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCkBAIC0xMSw3ICsxMSw2IEBACiAKICMgRm9yIHJ1bnFlbXUKIFFCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLWFybSIKLVFCX01FTSA9ICItbSA1MTIiCiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCiBRQl9DUFUgPSAiLWNwdSBjb3J0ZXgtYTE1IgogIyBTdGFuZGFyZCBTZXJpYWwgY29uc29sZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYKaW5kZXggMzUzYWM5Mi4uZWMyYTg4NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mCkBAIC0xMSw3ICsxMSw2IEBACiAKICMgRm9yIHJ1bnFlbXUKIFFCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLWFhcmNoNjQiCi1RQl9NRU0gPSAiLW0gNTEyIgogUUJfTUFDSElORSA9ICItbWFjaGluZSB2aXJ0IgogUUJfQ1BVID0gIi1jcHUgY29ydGV4LWE1NyIKIFFCX0NQVV9LVk0gPSAiLWNwdSBob3N0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtdjUuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybXY1LmNvbmYKaW5kZXggMWMyMWQzMy4uZmI0Nzg5ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtdjUuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm12NS5jb25mCkBAIC0xNyw3ICsxNyw3IEBACiBRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgKz0gIi1vYmplY3Qgcm5nLXJhbmRvbSxmaWxlbmFtZT0vZGV2L3VyYW5kb20saWQ9cm5nMCAtZGV2aWNlIHZpcnRpby1ybmctcGNpLHJuZz1ybmcwIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjAlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjIlIgogUUJfRFRCID0gIiR7QG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCgnUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8nLCAnNC43JywgJycsICd6SW1hZ2UtdmVyc2F0aWxlLXBiLmR0YicsIGQpfSIKIAogS01BQ0hJTkVfcWVtdWFybXY1ID0gInFlbXVhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCmluZGV4IDRiNTBlNjYuLjY0OGNmMmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCkBAIC0xOCwxMiArMTgsMTYgQEAKIAogU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5UzAgMTE1MjAwO3R0eVMxIgogCisjIEluc3RhbGwgc3dyYXN0IGFuZCBnbHggaWYgb3BlbmdsIGlzIGluIERJU1RST19GRUFUVVJFUyBhbmQgeDMyIGlzIG5vdCBpbiB1c2UuCisjIFRoaXMgaXMgYmVjYXVzZSBnYWxsaXVtIHN3cmFzdCBkcml2ZXIgd2FzIGZvdW5kIHRvIGNyYXNoIFggc2VydmVyIG9uIHN0YXJ0dXAgaW4gcWVtdSB4MzIuCiBYU0VSVkVSID0gInhzZXJ2ZXIteG9yZyBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ21lc2EtZHJpdmVyLXN3cmFzdCB4c2VydmVyLXhvcmctZXh0ZW5zaW9uLWdseCcsICcnLCBkKX0gXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIFwKKyAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXgzMicsICcnLCAnbWVzYS1kcml2ZXItc3dyYXN0IHhzZXJ2ZXIteG9yZy1leHRlbnNpb24tZ2x4JywgZCksICcnLCBkKX0gXAogICAgICAgICAgICB4Zjg2LXZpZGVvLWNpcnJ1cyBcCiAgICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYgXAogICAgICAgICAgICB4Zjg2LXZpZGVvLXZtd2FyZSBcCiAgICAgICAgICAgIHhmODYtdmlkZW8tbW9kZXNldHRpbmcgXAorICAgICAgICAgICB4Zjg2LXZpZGVvLXZlc2EgXAogICAgICAgICAgICB4c2VydmVyLXhvcmctbW9kdWxlLWxpYmludDEwIFwKICAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCmluZGV4IDM4MzIzMDIuLjhlMGRhODIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYgXAogICAgICAgICAgICB4Zjg2LXZpZGVvLXZtd2FyZSBcCiAgICAgICAgICAgIHhmODYtdmlkZW8tbW9kZXNldHRpbmcgXAorICAgICAgICAgICB4Zjg2LXZpZGVvLXZlc2EgXAogICAgICAgICAgICB4c2VydmVyLXhvcmctbW9kdWxlLWxpYmludDEwIFwKICAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0JTRC0yLUNsYXVzZSBiL3Bva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQlNELTItQ2xhdXNlCmluZGV4IGFkZTBmMzQuLmYxOTE3ZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQlNELTItQ2xhdXNlCisrKyBiL3Bva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQlNELTItQ2xhdXNlCkBAIC0xLDEzICsxLDEwIEBACiAKLVRoZSBGcmVlQlNEIENvcHlyaWdodAotCi1Db3B5cmlnaHQgMTk5Mi0yMDEwIFRoZSBGcmVlQlNEIFByb2plY3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitDb3B5cmlnaHQgPFlFQVI+IDxDT1BZUklHSFQgSE9MREVSPgogCiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CiAKLVJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLVJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEZSRUVCU0QgUFJPSkVDVCBgYEFTIElTYGAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEZSRUVCU0QgUFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAKLVRoZSB2aWV3cyBhbmQgY29uY2x1c2lvbnMgY29udGFpbmVkIGluIHRoZSBzb2Z0d2FyZSBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgdGhvc2Ugb2YgdGhlIGF1dGhvcnMgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgcmVwcmVzZW50aW5nIG9mZmljaWFsIHBvbGljaWVzLCBlaXRoZXIgZXhwcmVzc2VkIG9yIGltcGxpZWQsIG9mIHRoZSBGcmVlQlNEIFByb2plY3QuCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQppbmRleCBkNzYyNDgwLi43NjM0ZDdlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgb3MKIAogaW1wb3J0IGJiCi1pbXBvcnQgb2UudXRpbHMKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc2hsZXgKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKaW5kZXggNjg4MTljYy4uMTRmYzZhNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CkBAIC02NCwxMiArNjQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cih0Y2xhc3MsICdzZXRVcEhvb2tlcicsIHNraXBmdW5jZ2VuKCdTa2lwIGJ5IHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgIiVzIicgJSBza2lwKSkKIAogICAgIGRlZiBsb2FkVGVzdHMoc2VsZiwgbW9kdWxlX3BhdGhzLCBtb2R1bGVzPVtdLCB0ZXN0cz1bXSwKLSAgICAgICAgICAgIG1vZHVsZXNfbWFuaWZlc3Q9IiIsIG1vZHVsZXNfcmVxdWlyZWQ9W10sIGZpbHRlcnM9e30pOgorICAgICAgICAgICAgbW9kdWxlc19tYW5pZmVzdD0iIiwgbW9kdWxlc19yZXF1aXJlZD1bXSwgKiprd2FyZ3MpOgogICAgICAgICBpZiBtb2R1bGVzX21hbmlmZXN0OgogICAgICAgICAgICAgbW9kdWxlcyA9IHNlbGYuX3JlYWRfbW9kdWxlc19mcm9tX21hbmlmZXN0KG1vZHVsZXNfbWFuaWZlc3QpCiAKICAgICAgICAgc2VsZi5sb2FkZXIgPSBzZWxmLmxvYWRlckNsYXNzKHNlbGYsIG1vZHVsZV9wYXRocywgbW9kdWxlcywgdGVzdHMsCi0gICAgICAgICAgICAgICAgbW9kdWxlc19yZXF1aXJlZCwgZmlsdGVycykKKyAgICAgICAgICAgICAgICBtb2R1bGVzX3JlcXVpcmVkLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5zdWl0ZXMgPSBzZWxmLmxvYWRlci5kaXNjb3ZlcigpCiAKICAgICBkZWYgcnVuVGVzdHMoc2VsZiwgcHJvY2Vzc2VzPU5vbmUsIHNraXBzPVtdKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9fX2luaXRfXy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9fX2luaXRfXy5weQppbmRleCA5MjNiMjE4Li4xYTgyNTE4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvX19pbml0X18ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL19faW5pdF9fLnB5CkBAIC02LDYgKzYsNyBAQAogCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKIGZyb20gYWJjIGltcG9ydCBhYnN0cmFjdG1ldGhvZCwgQUJDTWV0YQorZnJvbSBvZXFhLmNvcmUudXRpbHMubWlzYyBpbXBvcnQgc3RyVG9MaXN0CiAKIGRlY29yYXRvckNsYXNzZXMgPSBzZXQoKQogCkBAIC02MywxMiArNjQsMTYgQEAKICAgICBkZWYgZGlzY292ZXIocmVnaXN0cnkpOgogICAgICAgICByZXR1cm4gcmVnaXN0cnlbJ2Nhc2VzJ10KIAotY2xhc3MgT0VUZXN0RmlsdGVyKE9FVGVzdERlY29yYXRvcik6CitkZWYgT0VUZXN0VGFnKCp0YWdzKToKKyAgICBleHBhbmRlZHRhZ3MgPSBbXQorICAgIGZvciB0YWcgaW4gdGFnczoKKyAgICAgICAgZXhwYW5kZWR0YWdzICs9IHN0clRvTGlzdCh0YWcpCisgICAgZGVmIGRlY29yYXRvcihpdGVtKToKKyAgICAgICAgaWYgaGFzYXR0cihpdGVtLCAiX19vZXFhX3Rlc3R0YWdzIik6CisgICAgICAgICAgICAjIGRvIG5vdCBhcHBlbmQsIGNyZWF0ZSBhIG5ldyBsaXN0ICh0byBoYW5kbGUgY2xhc3NlcyB3aXRoIGluaGVyaXRhbmNlKQorICAgICAgICAgICAgaXRlbS5fX29lcWFfdGVzdHRhZ3MgPSBsaXN0KGl0ZW0uX19vZXFhX3Rlc3R0YWdzKSArIGV4cGFuZGVkdGFncworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaXRlbS5fX29lcWFfdGVzdHRhZ3MgPSBleHBhbmRlZHRhZ3MKKyAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICByZXR1cm4gZGVjb3JhdG9yCiAKLSAgICAjIE9FVGVzdExvYWRlciBjYWxsIGl0IHdoaWxlIGxvYWRpbmcgdGhlIHRlc3RzCi0gICAgIyBpbiBsb2FkVGVzdHNGcm9tVGVzdENhc2UgbWV0aG9kLCBpdCBuZWVkcyB0bwotICAgICMgcmV0dXJuIGEgYm9vbCwgVHJ1ZSBpZiBuZWVkcyB0byBiZSBmaWx0ZXJlZC4KLSAgICAjIFRoaXMgbWV0aG9kIG11c3QgY29uc3VtZSB0aGUgZmlsdGVyIHVzZWQuCi0gICAgQGFic3RyYWN0bWV0aG9kCi0gICAgZGVmIGZpbHRyYXRlKHNlbGYsIGZpbHRlcnMpOgotICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9vZXRhZy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9vZXRhZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMzMTEzOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3Ivb2V0YWcucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgotIwotIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCi0jCi0KLWZyb20gLiBpbXBvcnQgT0VUZXN0RmlsdGVyLCByZWdpc3RlckRlY29yYXRvcgotZnJvbSBvZXFhLmNvcmUudXRpbHMubWlzYyBpbXBvcnQgc3RyVG9MaXN0Ci0KLWRlZiBfdGFnRmlsdGVyKHRhZ3MsIGZpbHRlcnMpOgotICAgIHJldHVybiBGYWxzZSBpZiBzZXQodGFncykgJiBzZXQoZmlsdGVycykgZWxzZSBUcnVlCi0KLUByZWdpc3RlckRlY29yYXRvcgotY2xhc3MgT0VUZXN0VGFnKE9FVGVzdEZpbHRlcik6Ci0gICAgYXR0cnMgPSAoJ29ldGFnJywpCi0KLSAgICBkZWYgYmluZChzZWxmLCByZWdpc3RyeSwgY2FzZSk6Ci0gICAgICAgIHN1cGVyKE9FVGVzdFRhZywgc2VsZikuYmluZChyZWdpc3RyeSwgY2FzZSkKLSAgICAgICAgc2VsZi5vZXRhZyA9IHN0clRvTGlzdChzZWxmLm9ldGFnLCAnb2V0YWcnKQotCi0gICAgZGVmIGZpbHRyYXRlKHNlbGYsIGZpbHRlcnMpOgotICAgICAgICBpZiBmaWx0ZXJzLmdldCgnb2V0YWcnKToKLSAgICAgICAgICAgIGZpbHRlcnggPSBzdHJUb0xpc3QoZmlsdGVyc1snb2V0YWcnXSwgJ29ldGFnJykKLSAgICAgICAgICAgIGRlbCBmaWx0ZXJzWydvZXRhZyddCi0gICAgICAgICAgICBpZiBfdGFnRmlsdGVyKHNlbGYub2V0YWcsIGZpbHRlcngpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CmluZGV4IDdmZWEwNTguLjBkNzk3MGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGZyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQVRlc3ROb3RGb3VuZAogZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yIGltcG9ydCBkZWNvcmF0b3JDbGFzc2VzLCBPRVRlc3REZWNvcmF0b3IsIFwKLSAgICAgICAgT0VUZXN0RmlsdGVyLCBPRVRlc3REaXNjb3ZlcgorICAgICAgICBPRVRlc3REaXNjb3ZlcgogCiAjIFdoZW4gbG9hZGluZyB0ZXN0cywgdGhlIHVuaXR0ZXN0IGZyYW1ld29yayBzdG9yZXMgYW55IGV4Y2VwdGlvbnMgYW5kCiAjIGRpc3BsYXlzIHRoZW0gb25seSB3aGVuIHRoZSBydW4gbWV0aG9kIGlzIGNhbGxlZC4KQEAgLTY4LDcgKzY4LDcgQEAKICAgICAgICAgICAgICdfdG9wX2xldmVsX2RpciddCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGMsIG1vZHVsZV9wYXRocywgbW9kdWxlcywgdGVzdHMsIG1vZHVsZXNfcmVxdWlyZWQsCi0gICAgICAgICAgICBmaWx0ZXJzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi50YyA9IHRjCiAKICAgICAgICAgc2VsZi5tb2R1bGVzID0gX2J1aWx0X21vZHVsZXNfZGljdChtb2R1bGVzKQpAQCAtNzYsMTMgKzc2LDcgQEAKICAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzCiAgICAgICAgIHNlbGYubW9kdWxlc19yZXF1aXJlZCA9IG1vZHVsZXNfcmVxdWlyZWQKIAotICAgICAgICBzZWxmLmZpbHRlcnMgPSBmaWx0ZXJzCi0gICAgICAgIHNlbGYuZGVjb3JhdG9yX2ZpbHRlcnMgPSBbZCBmb3IgZCBpbiBkZWNvcmF0b3JDbGFzc2VzIGlmIFwKLSAgICAgICAgICAgICAgICBpc3N1YmNsYXNzKGQsIE9FVGVzdEZpbHRlcildCi0gICAgICAgIHNlbGYuX3ZhbGlkYXRlRmlsdGVycyhzZWxmLmZpbHRlcnMsIHNlbGYuZGVjb3JhdG9yX2ZpbHRlcnMpCi0gICAgICAgIHNlbGYudXNlZF9maWx0ZXJzID0gW2QgZm9yIGQgaW4gc2VsZi5kZWNvcmF0b3JfZmlsdGVycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiBzZWxmLmZpbHRlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZiBpbiBkLmF0dHJzXQorICAgICAgICBzZWxmLnRhZ3NfZmlsdGVyID0ga3dhcmdzLmdldCgidGFnc19maWx0ZXIiLCBOb25lKQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobW9kdWxlX3BhdGhzLCBzdHIpOgogICAgICAgICAgICAgbW9kdWxlX3BhdGhzID0gW21vZHVsZV9wYXRoc10KQEAgLTEwNCwyOCArOTgsNiBAQAogICAgICAgICBzZXRhdHRyKHRlc3RDYXNlQ2xhc3MsICd0ZCcsIHNlbGYudGMudGQpCiAgICAgICAgIHNldGF0dHIodGVzdENhc2VDbGFzcywgJ2xvZ2dlcicsIHNlbGYudGMubG9nZ2VyKQogCi0gICAgZGVmIF92YWxpZGF0ZUZpbHRlcnMoc2VsZiwgZmlsdGVycywgZGVjb3JhdG9yX2ZpbHRlcnMpOgotICAgICAgICAjIFZhbGlkYXRlIGlmIGZpbHRlciBpc24ndCBlbXB0eQotICAgICAgICBmb3Iga2V5LHZhbHVlIGluIGZpbHRlcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkZpbHRlciAlcyBzcGVjaWZpZWQgaXMgZW1wdHkiICUga2V5KQotCi0gICAgICAgICMgVmFsaWRhdGUgdW5pcXVlIGF0dHJpYnV0ZXMKLSAgICAgICAgYXR0cl9maWx0ZXJzID0gW2F0dHIgZm9yIGNsc3MgaW4gZGVjb3JhdG9yX2ZpbHRlcnMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYXR0ciBpbiBjbHNzLmF0dHJzXQotICAgICAgICBkdXBfYXR0ciA9IFthdHRyIGZvciBhdHRyIGluIGF0dHJfZmlsdGVycwotICAgICAgICAgICAgICAgICAgICBpZiBhdHRyX2ZpbHRlcnMuY291bnQoYXR0cikgPiAxXQotICAgICAgICBpZiBkdXBfYXR0cjoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRGV0ZWN0ZWQgZHVwbGljYXRlZCBhdHRyaWJ1dGUocykgJXMgaW4gZmlsdGVyJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZGVjb3JhdG9ycycgJSAnICwnLmpvaW4oZHVwX2F0dHIpKQotCi0gICAgICAgICMgVmFsaWRhdGUgaWYgZmlsdGVyIGlzIHN1cHBvcnRlZAotICAgICAgICBmb3IgZiBpbiBmaWx0ZXJzOgotICAgICAgICAgICAgaWYgZiBub3QgaW4gYXR0cl9maWx0ZXJzOgotICAgICAgICAgICAgICAgIGNsYXNzZXMgPSAnLCAnLmpvaW4oW2QuX19uYW1lX18gZm9yIGQgaW4gZGVjb3JhdG9yX2ZpbHRlcnNdKQotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRm91bmQgIiVzIiBmaWx0ZXIgYnV0IG5vdCBkZWNsYXJlZCBpbiBhbnkgb2YgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXMgZGVjb3JhdG9ycycgJSAoZiwgY2xhc3NlcykpCi0KICAgICBkZWYgX3JlZ2lzdGVyVGVzdENhc2Uoc2VsZiwgY2FzZSk6CiAgICAgICAgIGNhc2VfaWQgPSBjYXNlLmlkKCkKICAgICAgICAgc2VsZi50Yy5fcmVnaXN0cnlbJ2Nhc2VzJ11bY2FzZV9pZF0gPSBjYXNlCkBAIC0xODgsMTkgKzE2MCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAjIERlY29yYXRvciBmaWx0ZXJzCi0gICAgICAgIGlmIHNlbGYuZmlsdGVycyBhbmQgaXNpbnN0YW5jZShjYXNlLCBPRVRlc3RDYXNlKToKLSAgICAgICAgICAgIGZpbHRlcnMgPSBzZWxmLmZpbHRlcnMuY29weSgpCi0gICAgICAgICAgICBjYXNlX2RlY29yYXRvcnMgPSBbY2QgZm9yIGNkIGluIGNhc2UuZGVjb3JhdG9ycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNkLl9fY2xhc3NfXyBpbiBzZWxmLnVzZWRfZmlsdGVyc10KKyAgICAgICAgaWYgc2VsZi50YWdzX2ZpbHRlciBpcyBub3QgTm9uZSBhbmQgY2FsbGFibGUoc2VsZi50YWdzX2ZpbHRlcik6CisgICAgICAgICAgICBhbGx0YWdzID0gc2V0KCkKKyAgICAgICAgICAgICMgcHVsbCB0YWdzIGZyb20gdGhlIGNhc2UgY2xhc3MKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoY2FzZSwgIl9fb2VxYV90ZXN0dGFncyIpOgorICAgICAgICAgICAgICAgIGZvciB0IGluIGdldGF0dHIoY2FzZSwgIl9fb2VxYV90ZXN0dGFncyIpOgorICAgICAgICAgICAgICAgICAgICBhbGx0YWdzLmFkZCh0KQorICAgICAgICAgICAgIyBwdWxsIHRhZ3MgZnJvbSB0aGUgbWV0aG9kIGl0c2VsZgorICAgICAgICAgICAgaWYgaGFzYXR0cihjYXNlLCB0ZXN0X25hbWUpOgorICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoY2FzZSwgdGVzdF9uYW1lKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobWV0aG9kLCAiX19vZXFhX3Rlc3R0YWdzIik6CisgICAgICAgICAgICAgICAgICAgIGZvciB0IGluIGdldGF0dHIobWV0aG9kLCAiX19vZXFhX3Rlc3R0YWdzIik6CisgICAgICAgICAgICAgICAgICAgICAgICBhbGx0YWdzLmFkZCh0KQogCi0gICAgICAgICAgICAjIEl0ZXJhdGUgb3ZlciBjYXNlIGRlY29yYXRvcnMgdG8gY2hlY2sgaWYgbmVlZHMgdG8gYmUgZmlsdGVyZWQuCi0gICAgICAgICAgICBmb3IgY2QgaW4gY2FzZV9kZWNvcmF0b3JzOgotICAgICAgICAgICAgICAgIGlmIGNkLmZpbHRyYXRlKGZpbHRlcnMpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgICAgICAjIENhc2UgaXMgbWlzc2luZyBvbmUgb3IgbW9yZSBkZWNvcmF0b3JzIGZvciBhbGwgdGhlIGZpbHRlcnMKLSAgICAgICAgICAgICMgYmVpbmcgdXNlZCwgc28gZmlsdGVyIHRlc3QgY2FzZS4KLSAgICAgICAgICAgIGlmIGZpbHRlcnM6CisgICAgICAgICAgICBpZiBzZWxmLnRhZ3NfZmlsdGVyKGFsbHRhZ3MpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKaW5kZXggOTMwNjIwZS4uZjY1NmUxYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQpAQCAtNDMsNiArNDMsNyBAQAogICAgICAgICBzZWxmLnN0YXJ0dGltZSA9IHt9CiAgICAgICAgIHNlbGYuZW5kdGltZSA9IHt9CiAgICAgICAgIHNlbGYucHJvZ3Jlc3NpbmZvID0ge30KKyAgICAgICAgc2VsZi5leHRyYXJlc3VsdHMgPSB7fQogCiAgICAgICAgICMgSW5qZWN0IGludG8gdGMgc28gdGhhdCBUZXN0RGVwZW5kcyBkZWNvcmF0b3IgY2FuIHNlZSByZXN1bHRzCiAgICAgICAgIHRjLnJlc3VsdHMgPSBzZWxmCkBAIC0xMjksMTkgKzEzMCw1MSBAQAogCiAgICAgICAgIHJldHVybiAnVU5LTk9XTicsIE5vbmUKIAotICAgIGRlZiBhZGRTdWNjZXNzKHNlbGYsIHRlc3QpOgorICAgIGRlZiBleHRyYWN0RXh0cmFSZXN1bHRzKHNlbGYsIHRlc3QsIGRldGFpbHMgPSBOb25lKToKKyAgICAgICAgZXh0cmFyZXN1bHRzID0gTm9uZQorICAgICAgICBpZiBkZXRhaWxzIGlzIG5vdCBOb25lIGFuZCAiZXh0cmFyZXN1bHRzIiBpbiBkZXRhaWxzOgorICAgICAgICAgICAgZXh0cmFyZXN1bHRzID0gZGV0YWlscy5nZXQoImV4dHJhcmVzdWx0cyIsIHt9KQorICAgICAgICBlbGlmIGhhc2F0dHIodGVzdCwgImV4dHJhcmVzdWx0cyIpOgorICAgICAgICAgICAgZXh0cmFyZXN1bHRzID0gdGVzdC5leHRyYXJlc3VsdHMKKworICAgICAgICBpZiBleHRyYXJlc3VsdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgaywgdiBpbiBleHRyYXJlc3VsdHMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAjIGhhbmRsZSB1cGRhdGluZyBhbHJlYWR5IGV4aXN0aW5nIGVudHJpZXMgKGUuZy4gcHRlc3RyZXN1bHRzLnNlY3Rpb25zKQorICAgICAgICAgICAgICAgIGlmIGsgaW4gc2VsZi5leHRyYXJlc3VsdHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzW2tdLnVwZGF0ZSh2KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzW2tdID0gdgorCisgICAgZGVmIGFkZEVycm9yKHNlbGYsIHRlc3QsICphcmdzLCBkZXRhaWxzID0gTm9uZSk6CisgICAgICAgIHNlbGYuZXh0cmFjdEV4dHJhUmVzdWx0cyh0ZXN0LCBkZXRhaWxzID0gZGV0YWlscykKKyAgICAgICAgcmV0dXJuIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuYWRkRXJyb3IodGVzdCwgKmFyZ3MpCisKKyAgICBkZWYgYWRkRmFpbHVyZShzZWxmLCB0ZXN0LCAqYXJncywgZGV0YWlscyA9IE5vbmUpOgorICAgICAgICBzZWxmLmV4dHJhY3RFeHRyYVJlc3VsdHModGVzdCwgZGV0YWlscyA9IGRldGFpbHMpCisgICAgICAgIHJldHVybiBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLmFkZEZhaWx1cmUodGVzdCwgKmFyZ3MpCisKKyAgICBkZWYgYWRkU3VjY2VzcyhzZWxmLCB0ZXN0LCBkZXRhaWxzID0gTm9uZSk6CiAgICAgICAgICNBZGRlZCBzbyB3ZSBjYW4ga2VlcCB0cmFjayBvZiBzdWNjZXNzZXMgdG9vCiAgICAgICAgIHNlbGYuc3VjY2Vzc2VzLmFwcGVuZCgodGVzdCwgTm9uZSkpCi0gICAgICAgIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuYWRkU3VjY2Vzcyh0ZXN0KQorICAgICAgICBzZWxmLmV4dHJhY3RFeHRyYVJlc3VsdHModGVzdCwgZGV0YWlscyA9IGRldGFpbHMpCisgICAgICAgIHJldHVybiBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLmFkZFN1Y2Nlc3ModGVzdCkKKworICAgIGRlZiBhZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgdGVzdCwgKmFyZ3MsIGRldGFpbHMgPSBOb25lKToKKyAgICAgICAgc2VsZi5leHRyYWN0RXh0cmFSZXN1bHRzKHRlc3QsIGRldGFpbHMgPSBkZXRhaWxzKQorICAgICAgICByZXR1cm4gc3VwZXIoT0VUZXN0UmVzdWx0LCBzZWxmKS5hZGRFeHBlY3RlZEZhaWx1cmUodGVzdCwgKmFyZ3MpCisKKyAgICBkZWYgYWRkVW5leHBlY3RlZFN1Y2Nlc3Moc2VsZiwgdGVzdCwgZGV0YWlscyA9IE5vbmUpOgorICAgICAgICBzZWxmLmV4dHJhY3RFeHRyYVJlc3VsdHModGVzdCwgZGV0YWlscyA9IGRldGFpbHMpCisgICAgICAgIHJldHVybiBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLmFkZFVuZXhwZWN0ZWRTdWNjZXNzKHRlc3QpCiAKICAgICBkZWYgbG9nRGV0YWlscyhzZWxmLCBqc29uX2ZpbGVfZGlyPU5vbmUsIGNvbmZpZ3VyYXRpb249Tm9uZSwgcmVzdWx0X2lkPU5vbmUsCiAgICAgICAgICAgICBkdW1wX3N0cmVhbXM9RmFsc2UpOgogICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJSRVNVTFRTOiIpCiAKLSAgICAgICAgcmVzdWx0ID0ge30KKyAgICAgICAgcmVzdWx0ID0gc2VsZi5leHRyYXJlc3VsdHMKICAgICAgICAgbG9ncyA9IHt9CiAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi50YywgImV4dHJhcmVzdWx0cyIpOgotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi50Yy5leHRyYXJlc3VsdHMKKyAgICAgICAgICAgIHJlc3VsdC51cGRhdGUoc2VsZi50Yy5leHRyYXJlc3VsdHMpCiAKICAgICAgICAgZm9yIGNhc2VfbmFtZSBpbiBzZWxmLnRjLl9yZWdpc3RyeVsnY2FzZXMnXToKICAgICAgICAgICAgIGNhc2UgPSBzZWxmLnRjLl9yZWdpc3RyeVsnY2FzZXMnXVtjYXNlX25hbWVdCkBAIC0yMDUsMjMgKzIzOCwyMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuX3dhbGtlZF9jYXNlcyA9IHNlbGYuX3dhbGtlZF9jYXNlcyArIDEKIAogICAgIGRlZiBfbGlzdF90ZXN0c19uYW1lKHNlbGYsIHN1aXRlKToKLSAgICAgICAgZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9ldGFnIGltcG9ydCBPRVRlc3RUYWcKLQogICAgICAgICBzZWxmLl93YWxrZWRfY2FzZXMgPSAwCiAKICAgICAgICAgZGVmIF9saXN0X2Nhc2VzKGxvZ2dlciwgY2FzZSk6Ci0gICAgICAgICAgICBvZXRhZyA9IE5vbmUKLQotICAgICAgICAgICAgaWYgaGFzYXR0cihjYXNlLCAnZGVjb3JhdG9ycycpOgotICAgICAgICAgICAgICAgIGZvciBkIGluIGNhc2UuZGVjb3JhdG9yczoKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkLCBPRVRlc3RUYWcpOgotICAgICAgICAgICAgICAgICAgICAgICAgb2V0YWcgPSBkLm9ldGFnCi0KLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlc1x0XHQlcyIgJSAob2V0YWcsIGNhc2UuaWQoKSkpCisgICAgICAgICAgICBvZXRhZ3MgPSBbXQorICAgICAgICAgICAgaWYgaGFzYXR0cihjYXNlLCAnX19vZXFhX3Rlc3R0YWdzJyk6CisgICAgICAgICAgICAgICAgb2V0YWdzID0gZ2V0YXR0cihjYXNlLCAnX19vZXFhX3Rlc3R0YWdzJykKKyAgICAgICAgICAgIGlmIG9ldGFnczoKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiJXMgKCVzKSIgJSAoY2FzZS5pZCgpLCAiLCIuam9pbihvZXRhZ3MpKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIiVzIiAlIChjYXNlLmlkKCkpKQogCiAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIkxpc3RpbmcgYWxsIGF2YWlsYWJsZSB0ZXN0czoiKQogICAgICAgICBzZWxmLl93YWxrZWRfY2FzZXMgPSAwCi0gICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oImlkXHR0YWdcdFx0dGVzdCIpCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oInRlc3QgKHRhZ3MpIikKICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiLSIgKiA4MCkKICAgICAgICAgc2VsZi5fd2Fsa19zdWl0ZShzdWl0ZSwgX2xpc3RfY2FzZXMpCiAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIi0iICogODApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9kYXRhLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvZGF0YS5weQppbmRleCAwZDhkZTg3Li42MWY4ODU0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9kYXRhLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2RhdGEucHkKQEAgLTUsNyArNSw3IEBACiAjCiAKIGZyb20gb2VxYS5jb3JlLmNhc2UgaW1wb3J0IE9FVGVzdENhc2UKLWZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZXRhZyBpbXBvcnQgT0VUZXN0VGFnCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IgaW1wb3J0IE9FVGVzdFRhZwogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IE9FVGVzdERhdGFEZXBlbmRzCiAKIGNsYXNzIERhdGFUZXN0KE9FVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvb2V0YWcucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9vZXRhZy5weQppbmRleCA0ZTFkMDgwLi41MmY5N2RmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9vZXRhZy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9vZXRhZy5weQpAQCAtNSwxMCArNSw5IEBACiAjCiAKIGZyb20gb2VxYS5jb3JlLmNhc2UgaW1wb3J0IE9FVGVzdENhc2UKLWZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZXRhZyBpbXBvcnQgT0VUZXN0VGFnCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IgaW1wb3J0IE9FVGVzdFRhZwogCiBjbGFzcyBUYWdUZXN0KE9FVGVzdENhc2UpOgotCiAgICAgQE9FVGVzdFRhZygnZ29vZFRhZycpCiAgICAgZGVmIHRlc3RUYWdHb29kKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQpAQCAtMTcsNSArMTYsMjMgQEAKICAgICBkZWYgdGVzdFRhZ090aGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQogCisgICAgQE9FVGVzdFRhZygnb3RoZXJUYWcnLCAnbXVsdGlUYWcnKQorICAgIGRlZiB0ZXN0VGFnT3RoZXJNdWx0aShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKKwogICAgIGRlZiB0ZXN0VGFnTm9uZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKKworQE9FVGVzdFRhZygnY2xhc3NUYWcnKQorY2xhc3MgVGFnQ2xhc3NUZXN0KE9FVGVzdENhc2UpOgorICAgIEBPRVRlc3RUYWcoJ290aGVyVGFnJykKKyAgICBkZWYgdGVzdFRhZ090aGVyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQorCisgICAgQE9FVGVzdFRhZygnb3RoZXJUYWcnLCAnbXVsdGlUYWcnKQorICAgIGRlZiB0ZXN0VGFnT3RoZXJNdWx0aShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKKworICAgIGRlZiB0ZXN0VGFnTm9uZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY29tbW9uLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY29tbW9uLnB5CmluZGV4IDM5ZWZkNTAuLjg4Y2M3NTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2NvbW1vbi5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jb21tb24ucHkKQEAgLTMwLDkgKzMwLDkgQEAKICAgICAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCiAgICAgICAgIHNlbGYuY2FzZXNfcGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksICdjYXNlcycpCiAKLSAgICBkZWYgX3Rlc3RMb2FkZXIoc2VsZiwgZD17fSwgbW9kdWxlcz1bXSwgdGVzdHM9W10sIGZpbHRlcnM9e30pOgorICAgIGRlZiBfdGVzdExvYWRlcihzZWxmLCBkPXt9LCBtb2R1bGVzPVtdLCB0ZXN0cz1bXSwgKiprd2FyZ3MpOgogICAgICAgICBmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0CiAgICAgICAgIHRjID0gT0VUZXN0Q29udGV4dChkLCBzZWxmLmxvZ2dlcikKICAgICAgICAgdGMubG9hZFRlc3RzKHNlbGYuY2FzZXNfcGF0aCwgbW9kdWxlcz1tb2R1bGVzLCB0ZXN0cz10ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9ZmlsdGVycykKKyAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQogICAgICAgICByZXR1cm4gdGMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGF0YS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGF0YS5weQppbmRleCA1MDgxMWJiLi5hYzc0MDk4IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RhdGEucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kYXRhLnB5CkBAIC0yMiw4ICsyMiw5IEBACiAgICAgICAgIGV4cGVjdGVkRXhjZXB0aW9uID0gIm9lcWEuY29yZS5leGNlcHRpb24uT0VRQU1pc3NpbmdWYXJpYWJsZSIKIAogICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXIobW9kdWxlcz1zZWxmLm1vZHVsZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIHRjLnJ1blRlc3RzKCkud2FzU3VjY2Vzc2Z1bCgpKQotICAgICAgICBmb3IgdGVzdCwgZGF0YSBpbiB0Yy5lcnJvcnM6CisgICAgICAgIHJlc3VsdHMgPSB0Yy5ydW5UZXN0cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0cy53YXNTdWNjZXNzZnVsKCkpCisgICAgICAgIGZvciB0ZXN0LCBkYXRhIGluIHJlc3VsdHMuZXJyb3JzOgogICAgICAgICAgICAgZXhwZWN0ID0gRmFsc2UKICAgICAgICAgICAgIGlmIGV4cGVjdGVkRXhjZXB0aW9uIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgZXhwZWN0ID0gVHJ1ZQpAQCAtMzUsOCArMzYsOSBAQAogICAgICAgICBkID0geydJTUFHRScgOiAnY29yZS1pbWFnZS1zYXRvJywgJ0FSQ0gnIDogJ2FybSd9CiAKICAgICAgICAgdGMgPSBzZWxmLl90ZXN0TG9hZGVyKGQ9ZCwgbW9kdWxlcz1zZWxmLm1vZHVsZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIHRjLnJ1blRlc3RzKCkud2FzU3VjY2Vzc2Z1bCgpKQotICAgICAgICBmb3IgdGVzdCwgZGF0YSBpbiB0Yy5mYWlsdXJlczoKKyAgICAgICAgcmVzdWx0cyA9IHRjLnJ1blRlc3RzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXN1bHRzLndhc1N1Y2Nlc3NmdWwoKSkKKyAgICAgICAgZm9yIHRlc3QsIGRhdGEgaW4gcmVzdWx0cy5mYWlsdXJlczoKICAgICAgICAgICAgIGV4cGVjdCA9IEZhbHNlCiAgICAgICAgICAgICBpZiBleHBlY3RlZEVycm9yIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgZXhwZWN0ID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kZWNvcmF0b3JzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kZWNvcmF0b3JzLnB5CmluZGV4IDQ5OWNkNjYuLmI3OThiZjcgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGVjb3JhdG9ycy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RlY29yYXRvcnMucHkKQEAgLTE0LDM1ICsxNCw1OCBAQAogZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBRGVwZW5kZW5jeQogZnJvbSBvZXFhLmNvcmUudXRpbHMudGVzdCBpbXBvcnQgZ2V0Q2FzZU1ldGhvZCwgZ2V0U3VpdGVDYXNlc05hbWVzLCBnZXRTdWl0ZUNhc2VzSURzCiAKLWNsYXNzIFRlc3RGaWx0ZXJEZWNvcmF0b3IoVGVzdEJhc2UpOgotCi0gICAgZGVmIF9ydW5GaWx0ZXJUZXN0KHNlbGYsIG1vZHVsZXMsIGZpbHRlcnMsIGV4cGVjdCwgbXNnKToKLSAgICAgICAgdGMgPSBzZWxmLl90ZXN0TG9hZGVyKG1vZHVsZXM9bW9kdWxlcywgZmlsdGVycz1maWx0ZXJzKQotICAgICAgICB0ZXN0X2xvYWRlZCA9IHNldChnZXRTdWl0ZUNhc2VzTmFtZXModGMuc3VpdGVzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIHRlc3RfbG9hZGVkLCBtc2c9bXNnKQorY2xhc3MgVGVzdFRhZ0RlY29yYXRvcihUZXN0QmFzZSk6CisgICAgZGVmIF9ydW5UZXN0KHNlbGYsIG1vZHVsZXMsIGZpbHRlcmZuLCBleHBlY3QpOgorICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXIobW9kdWxlcyA9IG1vZHVsZXMsIHRhZ3NfZmlsdGVyID0gZmlsdGVyZm4pCisgICAgICAgIHRlc3RfbG9hZGVkID0gc2V0KGdldFN1aXRlQ2FzZXNJRHModGMuc3VpdGVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIHRlc3RfbG9hZGVkKQogCiAgICAgZGVmIHRlc3Rfb2V0YWcoc2VsZik6Ci0gICAgICAgICMgR2V0IGFsbCBjYXNlcyB3aXRob3V0IGZpbHRlcmluZy4KLSAgICAgICAgZmlsdGVyX2FsbCA9IHt9Ci0gICAgICAgIHRlc3RfYWxsID0geyd0ZXN0VGFnR29vZCcsICd0ZXN0VGFnT3RoZXInLCAndGVzdFRhZ05vbmUnfQotICAgICAgICBtc2dfYWxsID0gJ0ZhaWxlZCB0byBnZXQgYWxsIG9ldGFnIGNhc2VzIHdpdGhvdXQgZmlsdGVyaW5nLicKKyAgICAgICAgIyBnZXQgYWxsIGNhc2VzIHdpdGhvdXQgYW55IGZpbHRlcmluZworICAgICAgICBzZWxmLl9ydW5UZXN0KFsnb2V0YWcnXSwgTm9uZSwgeworICAgICAgICAgICAgICAgICdvZXRhZy5UYWdUZXN0LnRlc3RUYWdHb29kJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnVGVzdC50ZXN0VGFnT3RoZXInLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdUZXN0LnRlc3RUYWdPdGhlck11bHRpJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnVGVzdC50ZXN0VGFnTm9uZScsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ0NsYXNzVGVzdC50ZXN0VGFnT3RoZXInLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ090aGVyTXVsdGknLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ05vbmUnLAorICAgICAgICAgICAgICAgIH0pCiAKLSAgICAgICAgIyBHZXQgY2FzZXMgd2l0aCAnZ29vZFRhZycuCi0gICAgICAgIGZpbHRlcl9nb29kID0geydvZXRhZyc6J2dvb2RUYWcnfQotICAgICAgICB0ZXN0X2dvb2QgPSB7J3Rlc3RUYWdHb29kJ30KLSAgICAgICAgbXNnX2dvb2QgPSAnRmFpbGVkIHRvIGdldCBqdXN0IG9uZSB0ZXN0IGZpbHRlcmluZyB3aXRoICJnb29kVGFnIiBvZXRhZy4nCisgICAgICAgICMgZXhjbHVkZSBhbnkgY2FzZSB3aXRoIHRhZ3MKKyAgICAgICAgc2VsZi5fcnVuVGVzdChbJ29ldGFnJ10sIGxhbWJkYSB0YWdzOiB0YWdzLCB7CisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ05vbmUnLAorICAgICAgICAgICAgICAgIH0pCiAKLSAgICAgICAgIyBHZXQgY2FzZXMgd2l0aCBhbiBpbnZhbGlkIHRhZy4KLSAgICAgICAgZmlsdGVyX2ludmFsaWQgPSB7J29ldGFnJzonaW52YWxpZFRhZyd9Ci0gICAgICAgIHRlc3RfaW52YWxpZCA9IHNldCgpCi0gICAgICAgIG1zZ19pbnZhbGlkID0gJ0ZhaWxlZCB0byBmaWx0ZXIgYWxsIHRlc3QgdXNpbmcgYW4gaW52YWxpZCBvZXRhZy4nCisgICAgICAgICMgZXhjbHVkZSBhbnkgY2FzZSB3aXRoIG90aGVyVGFnCisgICAgICAgIHNlbGYuX3J1blRlc3QoWydvZXRhZyddLCBsYW1iZGEgdGFnczogIm90aGVyVGFnIiBpbiB0YWdzLCB7CisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ0dvb2QnLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdUZXN0LnRlc3RUYWdOb25lJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnQ2xhc3NUZXN0LnRlc3RUYWdOb25lJywKKyAgICAgICAgICAgICAgICB9KQogCi0gICAgICAgIHRlc3RzID0gKChmaWx0ZXJfYWxsLCB0ZXN0X2FsbCwgbXNnX2FsbCksCi0gICAgICAgICAgICAgICAgIChmaWx0ZXJfZ29vZCwgdGVzdF9nb29kLCBtc2dfZ29vZCksCi0gICAgICAgICAgICAgICAgIChmaWx0ZXJfaW52YWxpZCwgdGVzdF9pbnZhbGlkLCBtc2dfaW52YWxpZCkpCisgICAgICAgICMgZXhjbHVkZSBhbnkgY2FzZSB3aXRoIGNsYXNzVGFnCisgICAgICAgIHNlbGYuX3J1blRlc3QoWydvZXRhZyddLCBsYW1iZGEgdGFnczogImNsYXNzVGFnIiBpbiB0YWdzLCB7CisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ0dvb2QnLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdUZXN0LnRlc3RUYWdPdGhlcicsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ090aGVyTXVsdGknLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdUZXN0LnRlc3RUYWdOb25lJywKKyAgICAgICAgICAgICAgICB9KQogCi0gICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgc2VsZi5fcnVuRmlsdGVyVGVzdChbJ29ldGFnJ10sIHRlc3RbMF0sIHRlc3RbMV0sIHRlc3RbMl0pCisgICAgICAgICMgaW5jbHVkZSBhbnkgY2FzZSB3aXRoIGNsYXNzVGFnCisgICAgICAgIHNlbGYuX3J1blRlc3QoWydvZXRhZyddLCBsYW1iZGEgdGFnczogImNsYXNzVGFnIiBub3QgaW4gdGFncywgeworICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ090aGVyJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnQ2xhc3NUZXN0LnRlc3RUYWdPdGhlck11bHRpJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnQ2xhc3NUZXN0LnRlc3RUYWdOb25lJywKKyAgICAgICAgICAgICAgICB9KQorCisgICAgICAgICMgaW5jbHVkZSBhbnkgY2FzZSB3aXRoIGNsYXNzVGFnIG9yIG5vIHRhZ3MKKyAgICAgICAgc2VsZi5fcnVuVGVzdChbJ29ldGFnJ10sIGxhbWJkYSB0YWdzOiB0YWdzIGFuZCAiY2xhc3NUYWciIG5vdCBpbiB0YWdzLCB7CisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ05vbmUnLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ090aGVyJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnQ2xhc3NUZXN0LnRlc3RUYWdPdGhlck11bHRpJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnQ2xhc3NUZXN0LnRlc3RUYWdOb25lJywKKyAgICAgICAgICAgICAgICB9KQogCiBjbGFzcyBUZXN0RGVwZW5kc0RlY29yYXRvcihUZXN0QmFzZSk6CiAgICAgbW9kdWxlcyA9IFsnZGVwZW5kcyddCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2xvYWRlci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfbG9hZGVyLnB5CmluZGV4IDUxOWJhOTYuLmNiMzhhYzggMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfbG9hZGVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfbG9hZGVyLnB5CkBAIC0xNSwzMSArMTUsNyBAQAogZnJvbSBvZXFhLmNvcmUudXRpbHMudGVzdCBpbXBvcnQgZ2V0U3VpdGVNb2R1bGVzLCBnZXRTdWl0ZUNhc2VzSURzCiAKIGNsYXNzIFRlc3RMb2FkZXIoVGVzdEJhc2UpOgotCi0gICAgZGVmIHRlc3RfZmFpbF9lbXB0eV9maWx0ZXIoc2VsZik6Ci0gICAgICAgIGZpbHRlcnMgPSB7J29ldGFnJyA6ICcnfQotICAgICAgICBleHBlY3QgPSAnRmlsdGVyIG9ldGFnIHNwZWNpZmllZCBpcyBlbXB0eScKLSAgICAgICAgbXNnID0gJ0V4cGVjdGVkIFR5cGVFcnJvciBleGNlcHRpb24gZm9yIGhhdmluZyBpbnZhbGlkIGZpbHRlcicKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBNdXN0IHRocm93IFR5cGVFcnJvciBiZWNhdXNlIGVtcHR5IGZpbHRlcgotICAgICAgICAgICAgdGMgPSBzZWxmLl90ZXN0TG9hZGVyKGZpbHRlcnM9ZmlsdGVycykKLSAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHJlc3VsdCA9IFRydWUgaWYgZXhwZWN0IGluIHN0cihlKSBlbHNlIEZhbHNlCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0LCBtc2c9bXNnKQotCi0gICAgZGVmIHRlc3RfZmFpbF9pbnZhbGlkX2ZpbHRlcihzZWxmKToKLSAgICAgICAgZmlsdGVycyA9IHsnaW52YWxpZCcgOiAnZ29vZCd9Ci0gICAgICAgIGV4cGVjdCA9ICdmaWx0ZXIgYnV0IG5vdCBkZWNsYXJlZCBpbiBhbnkgb2YnCi0gICAgICAgIG1zZyA9ICdFeHBlY3RlZCBUeXBlRXJyb3IgZXhjZXB0aW9uIGZvciBoYXZpbmcgaW52YWxpZCBmaWx0ZXInCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgTXVzdCB0aHJvdyBUeXBlRXJyb3IgYmVjYXVzZSBpbnZhbGlkIGZpbHRlcgotICAgICAgICAgICAgdGMgPSBzZWxmLl90ZXN0TG9hZGVyKGZpbHRlcnM9ZmlsdGVycykKLSAgICAgICAgICAgIHNlbGYuZmFpbChtc2cpCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHJlc3VsdCA9IFRydWUgaWYgZXhwZWN0IGluIHN0cihlKSBlbHNlIEZhbHNlCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0LCBtc2c9bXNnKQotCisgICAgQHVuaXR0ZXN0LnNraXAoImludmFsaWQgZGlyZWN0b3J5IGlzIG1pc3Npbmcgb2V0YWcucHkiKQogICAgIGRlZiB0ZXN0X2ZhaWxfZHVwbGljYXRlZF9tb2R1bGUoc2VsZik6CiAgICAgICAgIGNhc2VzX3BhdGggPSBzZWxmLmNhc2VzX3BhdGgKICAgICAgICAgaW52YWxpZF9wYXRoID0gb3MucGF0aC5qb2luKGNhc2VzX3BhdGgsICdsb2FkZXInLCAnaW52YWxpZCcpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkKaW5kZXggNmJmNzcxOC4uZmE2ZmEzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKIGltcG9ydCBpbworaW1wb3J0IGpzb24KIGltcG9ydCBzdWJ1bml0CiAKIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCkBAIC0yOCw2ICsyOSw4IEBACiBmcm9tIHN1YnVuaXQgaW1wb3J0IFByb3RvY29sVGVzdENhc2UsIFRlc3RQcm90b2NvbENsaWVudAogZnJvbSBzdWJ1bml0LnRlc3RfcmVzdWx0cyBpbXBvcnQgQXV0b1RpbWluZ1Rlc3RSZXN1bHREZWNvcmF0b3IKIGZyb20gdGVzdHRvb2xzIGltcG9ydCBUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdCwgaXRlcmF0ZV90ZXN0cworZnJvbSB0ZXN0dG9vbHMuY29udGVudCBpbXBvcnQgQ29udGVudAorZnJvbSB0ZXN0dG9vbHMuY29udGVudF90eXBlIGltcG9ydCBDb250ZW50VHlwZQogZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfdGVzdF9sYXllcgogCiBpbXBvcnQgYmIudXRpbHMKQEAgLTcwLDYgKzczLDU4IEBACiAgICAgICAgICAgICBzZWxmLnNlbWFwaG9yZS5yZWxlYXNlKCkKICAgICAgICAgc3VwZXIoQkJUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdCwgc2VsZikuX2FkZF9yZXN1bHRfd2l0aF9zZW1hcGhvcmUobWV0aG9kLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpCiAKK2NsYXNzIFByb3h5VGVzdFJlc3VsdDoKKyAgICAjIGEgdmVyeSBiYXNpYyBUZXN0UmVzdWx0IHByb3h5LCBpbiBvcmRlciB0byBtb2RpZnkgYWRkKiBjYWxscworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXQpOgorICAgICAgICBzZWxmLnJlc3VsdCA9IHRhcmdldAorCisgICAgZGVmIF9hZGRSZXN1bHQoc2VsZiwgbWV0aG9kLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbWV0aG9kKHRlc3QsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBhZGRFcnJvcihzZWxmLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLl9hZGRSZXN1bHQoc2VsZi5yZXN1bHQuYWRkRXJyb3IsIHRlc3QsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBhZGRGYWlsdXJlKHNlbGYsIHRlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuX2FkZFJlc3VsdChzZWxmLnJlc3VsdC5hZGRGYWlsdXJlLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgYWRkU3VjY2VzcyhzZWxmLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLl9hZGRSZXN1bHQoc2VsZi5yZXN1bHQuYWRkU3VjY2VzcywgdGVzdCwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGFkZEV4cGVjdGVkRmFpbHVyZShzZWxmLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLl9hZGRSZXN1bHQoc2VsZi5yZXN1bHQuYWRkRXhwZWN0ZWRGYWlsdXJlLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgYWRkVW5leHBlY3RlZFN1Y2Nlc3Moc2VsZiwgdGVzdCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5fYWRkUmVzdWx0KHNlbGYucmVzdWx0LmFkZFVuZXhwZWN0ZWRTdWNjZXNzLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYucmVzdWx0LCBhdHRyKQorCitjbGFzcyBFeHRyYVJlc3VsdHNEZWNvZGVyVGVzdFJlc3VsdChQcm94eVRlc3RSZXN1bHQpOgorICAgIGRlZiBfYWRkUmVzdWx0KHNlbGYsIG1ldGhvZCwgdGVzdCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgImRldGFpbHMiIGluIGt3YXJncyBhbmQgImV4dHJhcmVzdWx0cyIgaW4ga3dhcmdzWyJkZXRhaWxzIl06CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGt3YXJnc1siZGV0YWlscyJdWyJleHRyYXJlc3VsdHMiXSwgQ29udGVudCk6CisgICAgICAgICAgICAgICAga3dhcmdzID0ga3dhcmdzLmNvcHkoKQorICAgICAgICAgICAgICAgIGt3YXJnc1siZGV0YWlscyJdID0ga3dhcmdzWyJkZXRhaWxzIl0uY29weSgpCisgICAgICAgICAgICAgICAgZXh0cmFyZXN1bHRzID0ga3dhcmdzWyJkZXRhaWxzIl1bImV4dHJhcmVzdWx0cyJdCisgICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheSgpCisgICAgICAgICAgICAgICAgZm9yIGIgaW4gZXh0cmFyZXN1bHRzLml0ZXJfYnl0ZXMoKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSArPSBiCisgICAgICAgICAgICAgICAgZXh0cmFyZXN1bHRzID0ganNvbi5sb2FkcyhkYXRhLmRlY29kZSgpKQorICAgICAgICAgICAgICAgIGt3YXJnc1siZGV0YWlscyJdWyJleHRyYXJlc3VsdHMiXSA9IGV4dHJhcmVzdWx0cworICAgICAgICByZXR1cm4gbWV0aG9kKHRlc3QsICphcmdzLCAqKmt3YXJncykKKworY2xhc3MgRXh0cmFSZXN1bHRzRW5jb2RlclRlc3RSZXN1bHQoUHJveHlUZXN0UmVzdWx0KToKKyAgICBkZWYgX2FkZFJlc3VsdChzZWxmLCBtZXRob2QsIHRlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIGhhc2F0dHIodGVzdCwgImV4dHJhcmVzdWx0cyIpOgorICAgICAgICAgICAgZXh0cmFzID0gbGFtYmRhIDogW2pzb24uZHVtcHModGVzdC5leHRyYXJlc3VsdHMpLmVuY29kZSgpXQorICAgICAgICAgICAga3dhcmdzID0ga3dhcmdzLmNvcHkoKQorICAgICAgICAgICAgaWYgImRldGFpbHMiIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAga3dhcmdzWyJkZXRhaWxzIl0gPSB7fQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBrd2FyZ3NbImRldGFpbHMiXSA9IGt3YXJnc1siZGV0YWlscyJdLmNvcHkoKQorICAgICAgICAgICAga3dhcmdzWyJkZXRhaWxzIl1bImV4dHJhcmVzdWx0cyJdID0gQ29udGVudChDb250ZW50VHlwZSgiYXBwbGljYXRpb24iLCAianNvbiIsIHsnY2hhcnNldCc6ICd1dGY4J30pLCBleHRyYXMpCisgICAgICAgIHJldHVybiBtZXRob2QodGVzdCwgKmFyZ3MsICoqa3dhcmdzKQorCiAjCiAjIFdlIGhhdmUgdG8gcGF0Y2ggc3VidW5pdCBzaW5jZSBpdCBkb2Vzbid0IHVuZGVyc3RhbmQgaG93IHRvIGhhbmRsZSBhZGRFcnJvcgogIyBvdXRzaWRlIG9mIGEgcnVubmluZyB0ZXN0IGNhc2UuIFRoaXMgY2FuIGhhcHBlbiBpZiBjbGFzc1NldFVwKCkgZmFpbHMKQEAgLTExNiw3ICsxNzEsOSBAQAogICAgICAgICAgICAgcmVzdWx0LnRocmVhZHByb2dyZXNzID0ge30KICAgICAgICAgICAgIGZvciBpLCAodGVzdCwgdGVzdG51bSkgaW4gZW51bWVyYXRlKHRlc3RzKToKICAgICAgICAgICAgICAgICByZXN1bHQudGhyZWFkcHJvZ3Jlc3NbaV0gPSBbXQotICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0ID0gQkJUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdChyZXN1bHQsIHNlbWFwaG9yZSwgaSwgdGVzdG51bSwgdG90YWx0ZXN0cykKKyAgICAgICAgICAgICAgICBwcm9jZXNzX3Jlc3VsdCA9IEJCVGhyZWFkc2FmZUZvcndhcmRpbmdSZXN1bHQoCisgICAgICAgICAgICAgICAgICAgICAgICBFeHRyYVJlc3VsdHNEZWNvZGVyVGVzdFJlc3VsdChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlLCBpLCB0ZXN0bnVtLCB0b3RhbHRlc3RzKQogICAgICAgICAgICAgICAgICMgRm9yY2UgYnVmZmVyaW5nIG9mIHN0ZG91dC9zdGRlcnIgc28gdGhlIGNvbnNvbGUgZG9lc24ndCBnZXQgY29ycnVwdGVkIGJ5IHRlc3Qgb3V0cHV0CiAgICAgICAgICAgICAgICAgIyBhcyBwZXIgZGVmYXVsdCBpbiBwYXJlbnQgY29kZQogICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0LmJ1ZmZlciA9IFRydWUKQEAgLTIzMSw3ICsyODgsNyBAQAogICAgICAgICAgICAgICAgICMgYXMgcGVyIGRlZmF1bHQgaW4gcGFyZW50IGNvZGUKICAgICAgICAgICAgICAgICBzdWJ1bml0X2NsaWVudC5idWZmZXIgPSBUcnVlCiAgICAgICAgICAgICAgICAgc3VidW5pdF9yZXN1bHQgPSBBdXRvVGltaW5nVGVzdFJlc3VsdERlY29yYXRvcihzdWJ1bml0X2NsaWVudCkKLSAgICAgICAgICAgICAgICBwcm9jZXNzX3N1aXRlLnJ1bihzdWJ1bml0X3Jlc3VsdCkKKyAgICAgICAgICAgICAgICBwcm9jZXNzX3N1aXRlLnJ1bihFeHRyYVJlc3VsdHNFbmNvZGVyVGVzdFJlc3VsdChzdWJ1bml0X3Jlc3VsdCkpCiAgICAgICAgICAgICAgICAgaWYgb3VycGlkICE9IG9zLmdldHBpZCgpOgogICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgwKQogICAgICAgICAgICAgICAgIGlmIG5ld2J1aWxkZGlyOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24KaW5kZXggNGI3Yzc2Zi4uMThjZWMyMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbgorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uCkBAIC01MjYsNyArNTI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIjQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY2hlY2sgcGluZyBzdGF0dXMgIFxuXG5Ob3RlOiBUaGlzIFRDIGFwcGx5IG9ubHkgZm9yIGNvcmUtaW1hZ2UtZnVsbC1jbWQgYW5kIGNvcmUtaW1hZ2UtbHNiIC4iLAorICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNoZWNrIHBpbmcgc3RhdHVzICBcblxuTm90ZTogVGhpcyBUQyBhcHBseSBvbmx5IGZvciBjb3JlLWltYWdlLWZ1bGwtY21kLiIsCiAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogInBpbmcgc2hvdWxkIGFsd2F5cyB3b3JrIGJlZm9yZS9hZnRlciBzdGFuZGJ5IgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2NvbXBsaWFuY2UtdGVzdC5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9jb21wbGlhbmNlLXRlc3QuanNvbgppbmRleCA4YzEzYjY4Li4zNjdhNDE2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2NvbXBsaWFuY2UtdGVzdC5qc29uCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvY29tcGxpYW5jZS10ZXN0Lmpzb24KQEAgLTEsMzYgKzEsNiBAQAogWwogICAgIHsKICAgICAgICAgInRlc3QiOiB7Ci0gICAgICAgICAgICAiQGFsaWFzIjogImNvbXBsaWFuY2UtdGVzdC5jb21wbGlhbmNlLXRlc3QuTFNCX3N1YnNldF90ZXN0X3N1aXRlIiwKLSAgICAgICAgICAgICJhdXRob3IiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiY29ybmVsaXV4LnN0b2ljZXNjdUBpbnRlbC5jb20iLAotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjb3JuZWxpdXguc3RvaWNlc2N1QGludGVsLmNvbSIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJHZXQgbHNkLXNkayBpbWFnZSBhbmQgaW5zdGFsbCBpdCBvbiB0YXJnZXQgZGV2aWNlIG9yIHN0YXJ0IHRoZSBpbWFnZShpZiBpdCBpcyBRRU1VKSB3aXRoIG9wdGlvbiBcIi1tIDUxMk1cIiIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICIyIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNvbW1lbnQgaW4gL29wdC9sc2ItdGVzdC9zZXNzaW9uIGFueSB0ZXN0cyB5b3UgZG9uJ3Qgd2FudCB0byBydW4uIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUnVuIC91c3IvYmluL0xTQl9UZXN0LnNoIHdoaWNoIHNob3VsZCBkb3dubG9hZCB0aGUgTFNCIHN1aXRlIGFuZCBzZXQgaXQgdXAuIFNvbWUgcGFja2FnZXMgbWF5IGZhaWwgdG8gZG93bmxvYWQgYmVjYXVzZSB0aGVpciBsb2NhdGlvbiBjaGFuZ2VkIG9uIGZ0cC5saW51eGZvdW5kYXRpb24ub3JnLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGRhdGUgL29wdC9sc2ItdGVzdC9wYWNrYWdlc19saXN0IiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVGVzdHMgc2hvdWxkIHN0YXJ0IGF1dG9tYXRpY2FsbHksIHlvdSBjYW4gdXNlIHRoZSB3ZWIgaW50ZXJmYWNlIHRvIHJlY29uZmlndXJlIHRoZSBzZXR1cC4gIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQ2hlY2sgdGhlIHJlc3VsdCBvbiB3aWtpIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvTFNCX1Jlc3VsdCBObyByZWdyZXNzaW9uIGZhaWx1cmVzIHNob3VsZCBiZSBtZXQuIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3VtbWFyeSI6ICJMU0Jfc3Vic2V0X3Rlc3Rfc3VpdGUiCi0gICAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgICAgInRlc3QiOiB7CiAgICAgICAgICAgICAiQGFsaWFzIjogImNvbXBsaWFuY2UtdGVzdC5jb21wbGlhbmNlLXRlc3Quc3RyZXNzX3Rlc3RfLV9HZW5lcmljeDg2LTY0IiwKICAgICAgICAgICAgICJhdXRob3IiOiBbCiAgICAgICAgICAgICAgICAgewpAQCAtNDAsNyArMTAsNyBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJleGVjdXRpb24iOiB7CiAgICAgICAgICAgICAgICAgIjEiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQm9vdHVwIHdpdGggY29yZS1pbWFnZS1sc2Itc2RrIGltYWdlIiwKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCb290dXAgd2l0aCBjb3JlLWltYWdlLXNhdG8tc2RrIGltYWdlIiwKICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIjIiOiB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2Nyb3BzLmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2Nyb3BzLmpzb24KaW5kZXggMWNmM2M4Zi4uNWNmYTY1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9jcm9wcy5qc29uCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvY3JvcHMuanNvbgpAQCAtMjM0LDE2ICsyMzQsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidGhpcyBzaG91bGQgb3V0cHV0IHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGRldnRvb2wgc2NyaXB0IGFuZCBpdCBzaG91bGQgYmUgd2l0aGluIHRoZSBzZGsgd29ya2RpciB5b3UgYXJlIHdvcmtpbmcgaW4uICAgXG5cbiIKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICI1IjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgYWRkIHY0bDJsb29wYmFjay1kcml2ZXIgIGh0dHBzOi8vZ2l0aHViLmNvbS91bWxhZXV0ZS92NGwybG9vcGJhY2suZ2l0ICAgXG5cbiIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSByZWNpcGUgdjRsMmxvb3BiYWNrLWRyaXZlci5iYiB1bmRlciA8Y3JvcHMtZXNkay13b3JrZGlyLXdvcmtzcGFjZT4vcmVjaXBlcy92NGwybG9vcGJhY2stZHJpdmVyL3Y0bDJsb29wYmFjay1kcml2ZXIuYmIgIgorICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgYWRkIGtlcm5lbC1tb2R1bGUtaGVsbG8td29ybGQgaHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQva2VybmVsLW1vZHVsZS1oZWxsby13b3JsZCBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlIHJlY2lwZSBrZXJuZWwtbW9kdWxlLWhlbGxvLXdvcmxkLmJiIHVuZGVyIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9yZWNpcGVzL2tlcm5lbC1tb2R1bGUtaGVsbG8td29ybGQva2VybmVsLW1vZHVsZS1oZWxsby13b3JsZC5iYiAiCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAiNiI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIGJ1aWxkIHY0bDJsb29wYmFjay1kcml2ZXIgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIGJ1aWxkIGtlcm5lbC1tb2R1bGUtaGVsbG8td29ybGQgICBcblxuIiwKICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgY29tcGlsZSBhbiBpbWFnZSAgIFxuXG4iCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAiNyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIHJlc2V0IHY0bDJsb29wYmFjay1kcml2ZXIgICAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIGNsZWFucyBzeXNyb290IG9mIHRoZSB2NGwybG9vcGJhY2stZHJpdmVyIHJlY2lwZSwgYnV0IGl0IGxlYXZlcyB0aGUgc291cmNlIHRyZWUgaW50YWN0LiBtZWFuaW5nIGl0IGRvZXMgbm90IGVyYXNlLiIKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIHJlc2V0IGtlcm5lbC1tb2R1bGUtaGVsbG8td29ybGQgICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIGNsZWFucyBzeXNyb290IG9mIHRoZSBrZXJuZWwtbW9kdWxlLWhlbGxvLXdvcmxkIHJlY2lwZSwgYnV0IGl0IGxlYXZlcyB0aGUgc291cmNlIHRyZWUgaW50YWN0LiBtZWFuaW5nIGl0IGRvZXMgbm90IGVyYXNlLiIKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgInN1bW1hcnkiOiAic2RrZXh0X2RldnRvb2xfa2VybmVsbW9kdWxlIgpAQCAtMjkxLDQgKzI5MSw0IEBACiAgICAgICAgICAgICAic3VtbWFyeSI6ICJzZGtleHRfcmVjaXBlc19mb3Jfbm9kZWpzIgogICAgICAgICB9CiAgICAgfQotXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK10KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvdG9hc3Rlci1tYW5hZ2VkLW1vZGUuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvdG9hc3Rlci1tYW5hZ2VkLW1vZGUuanNvbgppbmRleCA4MTJmNTdkLi4xMjM3NGM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL3RvYXN0ZXItbWFuYWdlZC1tb2RlLmpzb24KKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC90b2FzdGVyLW1hbmFnZWQtbW9kZS5qc29uCkBAIC0xNDk0LDcgKzE0OTQsNyBAQAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkEgdHlwZSBpbiBmb3JtIGFwcGVhcnMuIFxuXG5cdCIKICAgICAgICAgfSwKICAgICAgICAgIjYiOiB7Ci0gICAgICAgICAgImFjdGlvbiI6ICJDaGFuZ2UgZGlzdHJvIChleDogcG9reS1sc2IpLiBcblxuXHQiLAorICAgICAgICAgICJhY3Rpb24iOiAiQ2hhbmdlIGRpc3RybyAoZXg6IHBva3ktdGlueSkuIFxuXG5cdCIsCiAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiRGlzdHJvIGhhcyBjaGFuZ2VkLiBcblxuXHQiCiAgICAgICAgIH0sCiAgICAgICAgICI3IjogewpAQCAtMTUwMyw3ICsxNTAzLDcgQEAKICAgICAgICAgfSwKICAgICAgICAgIjgiOiB7CiAgICAgICAgICAgImFjdGlvbiI6ICIgQnVpbGQgYSByZWNpcGUgKGV4OiBjb3JlLWltYWdlLW1pbmltYWwpIGFuZCB3YWl0IHVudGlsIGJ1aWxkIGZpbmlzaC4iLAotICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkJ1aWxkIGZpbmlzaGVzIHN1Y2Nlc3NmdWxseS4gXG5cblRoZSAnc3VjY2VzcycgY3JpdGVyaWEgZm9yIHRoaXMgb25lIHNob3VsZCBiZSB0aGF0IHRoZSBidWlsZCBpcyByZXBvcnRlZCBhcyB1c2luZyB0aGUgcG9reS1sc2IgZGlzdHJvIGluIHRoZSBidWlsZCBzdW1tYXJ5IHBhZ2UsIGFuZCB0aGF0IHRoZSBESVNUUk8gdmFyaWFibGUgdmFsdWUgaW4gdGhlIGJpdGJha2UgdmFyaWFibGVzIHRhYmxlIGlzIHNldCB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRvYXN0ZXIgKHBva3ktbHNiIGFnYWluKS4iCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQnVpbGQgZmluaXNoZXMgc3VjY2Vzc2Z1bGx5LiBcblxuVGhlICdzdWNjZXNzJyBjcml0ZXJpYSBmb3IgdGhpcyBvbmUgc2hvdWxkIGJlIHRoYXQgdGhlIGJ1aWxkIGlzIHJlcG9ydGVkIGFzIHVzaW5nIHRoZSBwb2t5LXRpbnkgZGlzdHJvIGluIHRoZSBidWlsZCBzdW1tYXJ5IHBhZ2UsIGFuZCB0aGF0IHRoZSBESVNUUk8gdmFyaWFibGUgdmFsdWUgaW4gdGhlIGJpdGJha2UgdmFyaWFibGVzIHRhYmxlIGlzIHNldCB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRvYXN0ZXIgKHBva3ktdGlueSBhZ2FpbikuIgogICAgICAgICB9CiAgICAgICB9LAogICAgICAgInN1bW1hcnkiOiAiQnVpbGRfYV9yZWNpcGVfd2l0aF9kaWZmZXJlbnRfZGlzdHJvIgpAQCAtMTYxMiw3ICsxNjEyLDcgQEAKICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgIH0sCiAgICAgICAgICIzIjogewotICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2sgdGhhdCB0aGUgdGFibGUgaXMgcG9wdWxhdGVkIHdpdGggdGhlIGxpc3Qgb2YgaW1hZ2UgcmVjaXBlcyAoZWcuIGNvcmUtaW1hZ2UgbWluaW1hbCwgY29yZS1pbWFnZS1sc2IpIFxuXG5cbiIsCisgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayB0aGF0IHRoZSB0YWJsZSBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgbGlzdCBvZiBpbWFnZSByZWNpcGVzIChlZy4gY29yZS1pbWFnZSBtaW5pbWFsKSBcblxuXG4iLAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgfSwKICAgICAgICAgIjQiOiB7CkBAIC0xNjcwLDcgKzE2NzAsNyBAQAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgfSwKICAgICAgICAgIjciOiB7Ci0gICAgICAgICAgImFjdGlvbiI6ICJTb3J0IHRoZSB0YWJsZSBieSBcIkxheWVyXCIgYW5kIHRoZW4gbmF2aWdhdGUgYXdheSBieSBzZWxlY3RpbmcgYW4gaW1hZ2UgKHN1Y2ggYXMgY29yZS1pbWFnZS1sc2IpLiBXaGVuIHlvdSBjbGljayB0aGUgXCJiYWNrXCIgYnV0dG9uIGluIHRoZSB3ZWItYnJvd3NlciB0byBnbyBiYWNrLCB0aGUgXCJOZXcgY3VzdG9tIGltYWdlXCIgdGFibGUgc2hvdWxkIHN0aWxsIGJlIHNvcnRlZCBieSBcIkxheWVyXCIuICBcblRoaXMgc2hvdWxkIGFwcGx5IGFsc28gYnkgbmF2aWdhdGluZyBiYWNrIHRvIHRoZSBwYWdlIGJ5IGFueSBvdGhlciBtZWFucy4gXG5cbiIsCisgICAgICAgICAgImFjdGlvbiI6ICJTb3J0IHRoZSB0YWJsZSBieSBcIkxheWVyXCIgYW5kIHRoZW4gbmF2aWdhdGUgYXdheSBieSBzZWxlY3RpbmcgYW4gaW1hZ2UuIFdoZW4geW91IGNsaWNrIHRoZSBcImJhY2tcIiBidXR0b24gaW4gdGhlIHdlYi1icm93c2VyIHRvIGdvIGJhY2ssIHRoZSBcIk5ldyBjdXN0b20gaW1hZ2VcIiB0YWJsZSBzaG91bGQgc3RpbGwgYmUgc29ydGVkIGJ5IFwiTGF5ZXJcIi4gIFxuVGhpcyBzaG91bGQgYXBwbHkgYWxzbyBieSBuYXZpZ2F0aW5nIGJhY2sgdG8gdGhlIHBhZ2UgYnkgYW55IG90aGVyIG1lYW5zLiBcblxuIiwKICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgIH0sCiAgICAgICAgICI4IjogewpAQCAtMjM0OCw3ICsyMzQ4LDcgQEAKICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgIH0sCiAgICAgICAgICIzIjogewotICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgNiByZWNpcGVzIGV4YW1wbGUgKGNvcmUtaW1hZ2Utc2F0bywgY29yZS1pbWFnZS1taW5pbWFsLCBjb3JlLWltYWdlLWJhc2UsIGNvcmUtaW1hZ2UtbHNiLCBjb3JlLWltYWdlLWNsdXR0ZXIpIHRvIG5hbWUgYSBmZXcuICIsCisgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCA2IHJlY2lwZXMgZXhhbXBsZSAoY29yZS1pbWFnZS1zYXRvLCBjb3JlLWltYWdlLW1pbmltYWwsIGNvcmUtaW1hZ2UtYmFzZSwgY29yZS1pbWFnZS1jbHV0dGVyKSB0byBuYW1lIGEgZmV3LiAiLAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiBBbGwgcmVjaXBlcyBhcmUgYnVpbHQgY29ycmVjdGx5IFxuXG4iCiAgICAgICAgIH0sCiAgICAgICAgICI0IjogewpAQCAtMjM4Miw3ICsyMzgyLDcgQEAKICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgIH0sCiAgICAgICAgICIzIjogewotICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgNiByZWNpcGVzIGV4YW1wbGUgKGNvcmUtaW1hZ2Utc2F0bywgY29yZS1pbWFnZS1taW5pbWFsLCBjb3JlLWltYWdlLWJhc2UsIGNvcmUtaW1hZ2UtbHNiLCBjb3JlLWltYWdlLWNsdXR0ZXIpIHRvIG5hbWUgYSBmZXcuIFxuXG4iLAorICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgNiByZWNpcGVzIGV4YW1wbGUgKGNvcmUtaW1hZ2Utc2F0bywgY29yZS1pbWFnZS1taW5pbWFsLCBjb3JlLWltYWdlLWJhc2UsIGNvcmUtaW1hZ2UtY2x1dHRlcikgdG8gbmFtZSBhIGZldy4gXG5cbiIsCiAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQWxsIHJlY2lwZXMgYXJlIGJ1aWx0IGNvcnJlY3RseSBcblxuIgogICAgICAgICB9LAogICAgICAgICAiNCI6IHsKQEAgLTI0MjAsNyArMjQyMCw3IEBACiAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgogICAgICAgICB9LAogICAgICAgICAiMyI6IHsKLSAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIDQgcmVjaXBlcyBleGFtcGxlIChjb3JlLWltYWdlLXNhdG8sIGNvcmUtaW1hZ2UtbWluaW1hbCwgY29yZS1pbWFnZS1iYXNlLCBjb3JlLWltYWdlLWxzYiwgY29yZS1pbWFnZS1jbHV0dGVyKSB0byBuYW1lIGEgZmV3LiBcblxuIiwKKyAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIDQgcmVjaXBlcyBleGFtcGxlIChjb3JlLWltYWdlLXNhdG8sIGNvcmUtaW1hZ2UtbWluaW1hbCwgY29yZS1pbWFnZS1iYXNlLCBjb3JlLWltYWdlLWNsdXR0ZXIpIHRvIG5hbWUgYSBmZXcuIFxuXG4iLAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiBBbGwgcmVjaXBlcyBhcmUgYnVpbHQgY29ycmVjdGx5IFxuXG4iCiAgICAgICAgIH0sCiAgICAgICAgICI0IjogewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5CmluZGV4IDYyOWI5YWYuLjgwY2M4NmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkKQEAgLTksNyArOSw3IEBACiAKIGZyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcwotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdERhdGFWYXIsIHNraXBJZk5vdEZlYXR1cmUKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kYXRhIGltcG9ydCBza2lwSWZOb3REYXRhVmFyLCBza2lwSWZOb3RGZWF0dXJlLCBza2lwSWZJbkRhdGFWYXIsIHNraXBJZk5vdEluRGF0YVZhcgogZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQogCiBjbGFzcyBEbmZUZXN0KE9FUnVudGltZVRlc3RDYXNlKToKQEAgLTExNiw2ICsxMTYsNyBAQAogICAgICAgICBzZWxmLmRuZl93aXRoX3JlcG8oJ3JlaW5zdGFsbCAteSBydW4tcG9zdGluc3RzLWRldicpCiAKICAgICBAT0VUZXN0RGVwZW5kcyhbJ2RuZi5EbmZSZXBvVGVzdC50ZXN0X2RuZl9tYWtlY2FjaGUnXSkKKyAgICBAc2tpcElmSW5EYXRhVmFyKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnVGVzdCBydW4gd2hlbiBub3QgZW5hYmxlIHVzcm1lcmdlJykKICAgICBkZWYgdGVzdF9kbmZfaW5zdGFsbHJvb3Qoc2VsZik6CiAgICAgICAgIHJvb3RwYXRoID0gJy9ob21lL3Jvb3QvY2hyb290L3Rlc3QnCiAgICAgICAgICNDb3B5IG5lY2Vzc2FyeSBmaWxlcyB0byBhdm9pZCBlcnJvcnMgd2l0aCBub3QgeWV0IGluc3RhbGxlZCB0b29scyBvbgpAQCAtMTQxLDYgKzE0MiwzNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cywgb3V0cHV0KQogCiAgICAgQE9FVGVzdERlcGVuZHMoWydkbmYuRG5mUmVwb1Rlc3QudGVzdF9kbmZfbWFrZWNhY2hlJ10pCisgICAgQHNraXBJZk5vdEluRGF0YVZhcignRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJ1Rlc3QgcnVuIHdoZW4gZW5hYmxlIHVzcm1lZ2UnKQorICAgIGRlZiB0ZXN0X2RuZl9pbnN0YWxscm9vdF91c3JtZXJnZShzZWxmKToKKyAgICAgICAgcm9vdHBhdGggPSAnL2hvbWUvcm9vdC9jaHJvb3QvdGVzdCcKKyAgICAgICAgI0NvcHkgbmVjZXNzYXJ5IGZpbGVzIHRvIGF2b2lkIGVycm9ycyB3aXRoIG5vdCB5ZXQgaW5zdGFsbGVkIHRvb2xzIG9uCisgICAgICAgICNpbnN0YWxscm9vdCBkaXJlY3RvcnkuCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvZXRjJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ21rZGlyIC1wICVzL3Vzci9iaW4gJXMvdXNyL3NiaW4nICUgKHJvb3RwYXRoLCByb290cGF0aCksIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbG4gLXNmIC1yICVzL3Vzci9iaW4gJXMvYmluJyAgJSAocm9vdHBhdGgsIHJvb3RwYXRoKSwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdsbiAtc2YgLXIgJXMvdXNyL3NiaW4gJXMvc2JpbicgICUgKHJvb3RwYXRoLCByb290cGF0aCksIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvZGV2JyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICAjSGFuZGxlIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIGxpYiBkaXJzCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvdXNyL2xpYicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdta2RpciAtcCAlcy91c3IvbGlieDMyJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ21rZGlyIC1wICVzL3Vzci9saWI2NCcgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAvbGliL2xpYnRpbmZvLnNvLjUgJXMvdXNyL2xpYicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAvbGlieDMyL2xpYnRpbmZvLnNvLjUgJXMvdXNyL2xpYngzMicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAvbGliNjQvbGlidGluZm8uc28uNSAlcy91c3IvbGliNjQnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbG4gLXNmIC1yICVzL2xpYiAlcy91c3IvbGliJyAlIChyb290cGF0aCxyb290cGF0aCksIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbG4gLXNmIC1yICVzL2xpYngzMiAlcy91c3IvbGlieDMyJyAlIChyb290cGF0aCxyb290cGF0aCksIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbG4gLXNmIC1yICVzL2xpYjY0ICVzL3Vzci9saWI2NCcgJSAocm9vdHBhdGgscm9vdHBhdGgpLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC1yIC9ldGMvcnBtICVzL2V0YycgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAtciAvZXRjL2RuZiAlcy9ldGMnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY3AgL2Jpbi9zaCAlcy9iaW4nICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbW91bnQgLW8gYmluZCAvZGV2ICVzL2Rldi8nICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYuZG5mX3dpdGhfcmVwbygnaW5zdGFsbCAtLWluc3RhbGxyb290PSVzIC12IC15IC0tcnBtdmVyYm9zaXR5PWRlYnVnIGJ1c3lib3ggcnVuLXBvc3RpbnN0cycgJSByb290cGF0aCkKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3Rlc3QgLWUgJXMvdmFyL2NhY2hlL2RuZicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMsIG91dHB1dCkKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3Rlc3QgLWUgJXMvYmluL2J1c3lib3gnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ2RuZi5EbmZSZXBvVGVzdC50ZXN0X2RuZl9tYWtlY2FjaGUnXSkKICAgICBkZWYgdGVzdF9kbmZfZXhjbHVkZShzZWxmKToKICAgICAgICAgZXhjbHVkZXBrZyA9ICdjdXJsLWRldicKICAgICAgICAgc2VsZi5kbmZfd2l0aF9yZXBvKCdpbnN0YWxsIC15IGN1cmwqJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29lX3N5c2xvZy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29lX3N5c2xvZy5weQppbmRleCAzYTgyNzFhLi5mM2MyYmVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vZV9zeXNsb2cucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb2Vfc3lzbG9nLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgICAgIG1zZyA9ICJGYWlsZWQgdG8gZXhlY3V0ZSAlcyIgJSBzZWxmLnRjLnRhcmdldF9jbWRzWydwcyddCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9bXNnKQogICAgICAgICBtc2cgPSAiTm8gc3lzbG9nIGRhZW1vbiBwcm9jZXNzOyAlcyBvdXRwdXQ6XG4lcyIgJSAoc2VsZi50Yy50YXJnZXRfY21kc1sncHMnXSwgb3V0cHV0KQotICAgICAgICBoYXNkYWVtb24gPSAic3lzbG9nZCIgaW4gb3V0cHV0IG9yICJzeXNsb2ctbmciIGluIG91dHB1dAorICAgICAgICBoYXNkYWVtb24gPSAic3lzbG9nZCIgaW4gb3V0cHV0IG9yICJzeXNsb2ctbmciIGluIG91dHB1dCBvciAic3Zsb2dkIiBpbiBvdXRwdXQKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2RhZW1vbiwgbXNnPW1zZykKIAogY2xhc3MgU3lzbG9nVGVzdENvbmZpZyhPRVJ1bnRpbWVUZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKaW5kZXggMTljOWM1Mi4uMTUzNDNkNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQpAQCAtODMsNiArODMsMTAgQEAKICAgICAnYW1kX25iOiBDYW5ub3QgZW51bWVyYXRlIEFNRCBub3J0aGJyaWRnZXMnLAogICAgICd1dmVzYWZiOiA1MDAwIG1zIHRhc2sgdGltZW91dCwgaW5maW5pdGVseSB3YWl0aW5nJywKICAgICAndHNjOiBIUEVUL1BNVElNRVIgY2FsaWJyYXRpb24gZmFpbGVkJywKKyAgICAibW9kZXNldCgwKTogRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIERSSTIgZXh0ZW5zaW9uIiwKKyAgICAidXZlc2FmYjogY2Fubm90IHJlc2VydmUgdmlkZW8gbWVtb3J5IGF0IiwKKyAgICAidXZlc2FmYjogcHJvYmUgb2YgdXZlc2FmYi4wIGZhaWxlZCB3aXRoIGVycm9yIiwKKyAgICAiZ2xhbW9yIGluaXRpYWxpemF0aW9uIGZhaWxlZCIsCiBdICsgY29tbW9uX2Vycm9ycwogCiBpZ25vcmVfZXJyb3JzID0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5CmluZGV4IDVhMDJhZGQuLjhlOTJiZjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvZGV2dG9vbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTczLDggKzczLDggQEAKICAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCAlcycgJSByZWNpcGUpCiAKICAgICBkZWYgdGVzdF9kZXZ0b29sX2tlcm5lbG1vZHVsZShzZWxmKToKLSAgICAgICAgZG9jZmlsZSA9ICdodHRwczovL2dpdGh1Yi5jb20vdW1sYWV1dGUvdjRsMmxvb3BiYWNrLmdpdCcKLSAgICAgICAgcmVjaXBlID0gJ3Y0bDJsb29wYmFjay1kcml2ZXInCisgICAgICAgIGRvY2ZpbGUgPSAnaHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQva2VybmVsLW1vZHVsZS1oZWxsby13b3JsZCcKKyAgICAgICAgcmVjaXBlID0gJ2tlcm5lbC1tb2R1bGUtaGVsbG8td29ybGQnCiAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBhZGQgJXMgJXMnICUgKHJlY2lwZSwgZG9jZmlsZSkgKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgYnVpbGQgJXMnICUgcmVjaXBlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weQppbmRleCAwNjkzYmE4Li44ZTU5YmFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weQpAQCAtMTE5LDcgKzExOSw3IEBACiAKICAgICBkZWYgdGVzdF9iaXRiYWtlX2coc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1nIGNvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIGZvciBmIGluIFsncG4tYnVpbGRsaXN0JywgJ3JlY2lwZS1kZXBlbmRzLmRvdCcsICd0YXNrLWRlcGVuZHMuZG90J106CisgICAgICAgIGZvciBmIGluIFsncG4tYnVpbGRsaXN0JywgJ3Rhc2stZGVwZW5kcy5kb3QnXToKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnVGFzayBkZXBlbmRlbmNpZXMgc2F2ZWQgdG8gXCd0YXNrLWRlcGVuZHMuZG90XCcnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJObyB0YXNrIGRlcGVuZGVuY3kgXCJ0YXNrLWRlcGVuZHMuZG90XCIgZmlsZSB3YXMgZ2VuZXJhdGVkIGZvciB0aGUgZ2l2ZW4gdGFzayB0YXJnZXQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2J1c3lib3gnIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd0YXNrLWRlcGVuZHMuZG90JykpLCBtc2cgPSAiTm8gXCJidXN5Ym94XCIgZGVwZW5kZW5jeSBmb3VuZCBpbiB0YXNrLWRlcGVuZHMuZG90IGZpbGUuIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iaW51dGlscy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iaW51dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmM3NTIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JpbnV0aWxzLnB5CkBAIC0wLDAgKzEsNDkgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2ltcG9ydCBsb2dnaW5nCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IgaW1wb3J0IE9FVGVzdFRhZworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycworCitkZWYgcGFyc2VfdmFsdWVzKGNvbnRlbnQpOgorICAgIGZvciBpIGluIGNvbnRlbnQ6CisgICAgICAgIGZvciB2IGluIFsiUEFTUyIsICJGQUlMIiwgIlhQQVNTIiwgIlhGQUlMIiwgIlVOUkVTT0xWRUQiLCAiVU5TVVBQT1JURUQiLCAiVU5URVNURUQiLCAiRVJST1IiLCAiV0FSTklORyJdOgorICAgICAgICAgICAgaWYgaS5zdGFydHN3aXRoKHYgKyAiOiAiKToKKyAgICAgICAgICAgICAgICB5aWVsZCBpW2xlbih2KSArIDI6XS5zdHJpcCgpLCB2CisgICAgICAgICAgICAgICAgYnJlYWsKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiLCAidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBCaW51dGlsc0Nyb3NzU2VsZlRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9iaW51dGlscyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fYmludXRpbHMoImJpbnV0aWxzIikKKworICAgIGRlZiB0ZXN0X2dhcyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fYmludXRpbHMoImdhcyIpCisKKyAgICBkZWYgdGVzdF9sZChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fYmludXRpbHMoImxkIikKKworICAgIGRlZiBydW5fYmludXRpbHMoc2VsZiwgc3VpdGUpOgorICAgICAgICBmZWF0dXJlcyA9IFtdCisgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnQ0hFQ0tfVEFSR0VUUyA9ICJ7MH0iJy5mb3JtYXQoc3VpdGUpKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiXG4iLmpvaW4oZmVhdHVyZXMpKQorCisgICAgICAgIHJlY2lwZSA9ICJiaW51dGlscy1jcm9zcy10ZXN0c3VpdGUiCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbIkIiLCAiVEFSR0VUX1NZUyIsICJUIl0sIHJlY2lwZSkKKyAgICAgICAgYnVpbGRkaXIsIHRhcmdldF9zeXMsIHRkaXIgPSBiYl92YXJzWyJCIl0sIGJiX3ZhcnNbIlRBUkdFVF9TWVMiXSwgYmJfdmFyc1siVCJdCisKKyAgICAgICAgYml0YmFrZSgiezB9IC1jIGNoZWNrIi5mb3JtYXQocmVjaXBlKSkKKworICAgICAgICBwdGVzdHN1aXRlID0gImJpbnV0aWxzLXt9Ii5mb3JtYXQoc3VpdGUpIGlmIHN1aXRlICE9ICJiaW51dGlscyIgZWxzZSBzdWl0ZQorICAgICAgICBzZWxmLmV4dHJhcmVzdWx0cyA9IHsicHRlc3RyZXN1bHQuc2VjdGlvbnMiIDoge3B0ZXN0c3VpdGUgOiB7fX19CisKKyAgICAgICAgc3Vtc3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHN1aXRlLCAiezB9LnN1bSIuZm9ybWF0KHN1aXRlKSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHN1bXNwYXRoKToKKyAgICAgICAgICAgIHN1bXNwYXRoID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCBzdWl0ZSwgInRlc3RzdWl0ZSIsICJ7MH0uc3VtIi5mb3JtYXQoc3VpdGUpKQorCisgICAgICAgIHdpdGggb3BlbihzdW1zcGF0aCwgInIiKSBhcyBmOgorICAgICAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBpbiBwYXJzZV92YWx1ZXMoZik6CisgICAgICAgICAgICAgICAgc2VsZi5leHRyYXJlc3VsdHNbInB0ZXN0cmVzdWx0Lnt9Lnt9Ii5mb3JtYXQocHRlc3RzdWl0ZSwgdGVzdCldID0geyJzdGF0dXMiIDogcmVzdWx0fQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2NjLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2djYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzI1YjU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2djYy5weQpAQCAtMCwwICsxLDEzOSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCitpbXBvcnQgb3MKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvciBpbXBvcnQgT0VUZXN0VGFnCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBydW5xZW11LCBDb21tYW5kCisKK2RlZiBwYXJzZV92YWx1ZXMoY29udGVudCk6CisgICAgZm9yIGkgaW4gY29udGVudDoKKyAgICAgICAgZm9yIHYgaW4gWyJQQVNTIiwgIkZBSUwiLCAiWFBBU1MiLCAiWEZBSUwiLCAiVU5SRVNPTFZFRCIsICJVTlNVUFBPUlRFRCIsICJVTlRFU1RFRCIsICJFUlJPUiIsICJXQVJOSU5HIl06CisgICAgICAgICAgICBpZiBpLnN0YXJ0c3dpdGgodiArICI6ICIpOgorICAgICAgICAgICAgICAgIHlpZWxkIGlbbGVuKHYpICsgMjpdLnN0cmlwKCksIHYKKyAgICAgICAgICAgICAgICBicmVhaworCitjbGFzcyBHY2NTZWxmVGVzdEJhc2UoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBkZWYgY2hlY2tfc2tpcChzZWxmLCBzdWl0ZSk6CisgICAgICAgIHRhcmdldHMgPSBnZXRfYmJfdmFyKCJSVU5USU1FVEFSR0VUIiwgImdjYy1ydW50aW1lIikuc3BsaXQoKQorICAgICAgICBpZiBzdWl0ZSBub3QgaW4gdGFyZ2V0czoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRhcmdldCBkb2VzIG5vdCB1c2UgezB9Ii5mb3JtYXQoc3VpdGUpKQorCisgICAgZGVmIHJ1bl9jaGVjayhzZWxmLCAqc3VpdGVzLCBzc2ggPSBOb25lKToKKyAgICAgICAgdGFyZ2V0cyA9IHNldCgpCisgICAgICAgIGZvciBzIGluIHN1aXRlczoKKyAgICAgICAgICAgIGlmIHMgaW4gWyJnY2MiLCAiZysrIl06CisgICAgICAgICAgICAgICAgdGFyZ2V0cy5hZGQoImNoZWNrLWdjYyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRhcmdldHMuYWRkKCJjaGVjay10YXJnZXQte30iLmZvcm1hdChzKSkKKworICAgICAgICAjIGNvbmZpZ3VyZSBzc2ggdGFyZ2V0CisgICAgICAgIGZlYXR1cmVzID0gW10KKyAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCdNQUtFX0NIRUNLX1RBUkdFVFMgPSAiezB9IicuZm9ybWF0KCIgIi5qb2luKHRhcmdldHMpKSkKKyAgICAgICAgaWYgc3NoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCdUT09MQ0hBSU5fVEVTVF9UQVJHRVQgPSAic3NoIicpCisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ1RPT0xDSEFJTl9URVNUX0hPU1QgPSAiezB9IicuZm9ybWF0KHNzaCkpCisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUiA9ICJyb290IicpCisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ1RPT0xDSEFJTl9URVNUX0hPU1RfUE9SVCA9ICIyMiInKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiXG4iLmpvaW4oZmVhdHVyZXMpKQorCisgICAgICAgIHJlY2lwZSA9ICJnY2MtcnVudGltZSIKKyAgICAgICAgYml0YmFrZSgie30gLWMgY2hlY2siLmZvcm1hdChyZWNpcGUpKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbIkIiLCAiVEFSR0VUX1NZUyJdLCByZWNpcGUpCisgICAgICAgIGJ1aWxkZGlyLCB0YXJnZXRfc3lzID0gYmJfdmFyc1siQiJdLCBiYl92YXJzWyJUQVJHRVRfU1lTIl0KKworICAgICAgICBzZWxmLmV4dHJhcmVzdWx0cyA9IHsicHRlc3RyZXN1bHQuc2VjdGlvbnMiIDoge319CisgICAgICAgIGZvciBzdWl0ZSBpbiBzdWl0ZXM6CisgICAgICAgICAgICBzdW1zcGF0aCA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImdjYyIsICJ0ZXN0c3VpdGUiLCBzdWl0ZSwgInswfS5zdW0iLmZvcm1hdChzdWl0ZSkpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3Vtc3BhdGgpOiAjIGNoZWNrIGluIHRhcmdldCBkaXJzCisgICAgICAgICAgICAgICAgc3Vtc3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHRhcmdldF9zeXMsIHN1aXRlLCAidGVzdHN1aXRlIiwgInswfS5zdW0iLmZvcm1hdChzdWl0ZSkpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3Vtc3BhdGgpOiAjIGhhbmRsZSBsaWJzdGRjKystdjMgLT4gbGlic3RkYysrCisgICAgICAgICAgICAgICAgc3Vtc3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHRhcmdldF9zeXMsIHN1aXRlLCAidGVzdHN1aXRlIiwgInswfS5zdW0iLmZvcm1hdChzdWl0ZS5zcGxpdCgiLSIpWzBdKSkKKworICAgICAgICAgICAgcHRlc3RzdWl0ZSA9ICJnY2Mte30iLmZvcm1hdChzdWl0ZSkgaWYgc3VpdGUgIT0gImdjYyIgZWxzZSBzdWl0ZQorICAgICAgICAgICAgcHRlc3RzdWl0ZSA9IHB0ZXN0c3VpdGUgKyAiLXVzZXIiIGlmIHNzaCBpcyBOb25lIGVsc2UgcHRlc3RzdWl0ZQorICAgICAgICAgICAgc2VsZi5leHRyYXJlc3VsdHNbInB0ZXN0cmVzdWx0LnNlY3Rpb25zIl1bcHRlc3RzdWl0ZV0gPSB7fQorICAgICAgICAgICAgd2l0aCBvcGVuKHN1bXNwYXRoLCAiciIpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIHRlc3QsIHJlc3VsdCBpbiBwYXJzZV92YWx1ZXMoZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzWyJwdGVzdHJlc3VsdC57fS57fSIuZm9ybWF0KHB0ZXN0c3VpdGUsIHRlc3QpXSA9IHsic3RhdHVzIiA6IHJlc3VsdH0KKworICAgIGRlZiBydW5fY2hlY2tfZW11bGF0ZWQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBidWlsZCBjb3JlLWltYWdlLW1pbmltYWwgd2l0aCByZXF1aXJlZCBwYWNrYWdlcworICAgICAgICBkZWZhdWx0X2luc3RhbGxlZF9wYWNrYWdlcyA9IFsibGliZ2NjIiwgImxpYnN0ZGMrKyIsICJsaWJhdG9taWMiLCAibGliZ29tcCJdCisgICAgICAgIGZlYXR1cmVzID0gW10KKyAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCdJTUFHRV9GRUFUVVJFUyArPSAic3NoLXNlcnZlci1vcGVuc3NoIicpCisgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICJ7MH0iJy5mb3JtYXQoIiAiLmpvaW4oZGVmYXVsdF9pbnN0YWxsZWRfcGFja2FnZXMpKSkKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIlxuIi5qb2luKGZlYXR1cmVzKSkKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKKworICAgICAgICAjIHdyYXAgdGhlIGV4ZWN1dGlvbiB3aXRoIGEgcWVtdSBpbnN0YW5jZQorICAgICAgICB3aXRoIHJ1bnFlbXUoImNvcmUtaW1hZ2UtbWluaW1hbCIsIHJ1bnFlbXVwYXJhbXMgPSAibm9ncmFwaGljIikgYXMgcWVtdToKKyAgICAgICAgICAgICMgdmFsaWRhdGUgdGhhdCBTU0ggaXMgd29ya2luZworICAgICAgICAgICAgc3RhdHVzLCBfID0gcWVtdS5ydW4oInVuYW1lIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorCisgICAgICAgICAgICByZXR1cm4gc2VsZi5ydW5fY2hlY2soKmFyZ3MsIHNzaD1xZW11LmlwLCAqKmt3YXJncykKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiKQorY2xhc3MgR2NjQ3Jvc3NTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2Nyb3NzX2djYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soImdjYyIsICJnKysiKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCitjbGFzcyBHY2NMaWJBdG9taWNTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYmF0b21pYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soImxpYmF0b21pYyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi11c2VyIikKK2NsYXNzIEdjY0xpYkdvbXBTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYmdvbXAoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrKCJsaWJnb21wIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiKQorY2xhc3MgR2NjTGliU3RkQ3h4U2VsZlRlc3QoR2NjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9saWJzdGRjeHgoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrKCJsaWJzdGRjKystdjMiKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCitjbGFzcyBHY2NMaWJTc3BTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYnNzcChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19za2lwKCJsaWJzc3AiKQorICAgICAgICBzZWxmLnJ1bl9jaGVjaygibGlic3NwIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiKQorY2xhc3MgR2NjTGliSXRtU2VsZlRlc3QoR2NjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9saWJpdG0oc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc2tpcCgibGliaXRtIikKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soImxpYml0bSIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQorY2xhc3MgR2NjQ3Jvc3NTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfY3Jvc3NfZ2NjKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgiZ2NjIiwgImcrKyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQorY2xhc3MgR2NjTGliQXRvbWljU2VsZlRlc3RTeXN0ZW1FbXVsYXRlZChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYmF0b21pYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2tfZW11bGF0ZWQoImxpYmF0b21pYyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQorY2xhc3MgR2NjTGliR29tcFNlbGZUZXN0U3lzdGVtRW11bGF0ZWQoR2NjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9saWJnb21wKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgibGliZ29tcCIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQorY2xhc3MgR2NjTGliU3RkQ3h4U2VsZlRlc3RTeXN0ZW1FbXVsYXRlZChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYnN0ZGN4eChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2tfZW11bGF0ZWQoImxpYnN0ZGMrKy12MyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQorY2xhc3MgR2NjTGliU3NwU2VsZlRlc3RTeXN0ZW1FbXVsYXRlZChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYnNzcChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19za2lwKCJsaWJzc3AiKQorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgibGlic3NwIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBHY2NMaWJJdG1TZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfbGliaXRtKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3NraXAoImxpYml0bSIpCisgICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCJsaWJpdG0iKQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2xpYmMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2xpYmMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU0MjQ4NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nbGliYy5weQpAQCAtMCwwICsxLDg4IEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKK2ltcG9ydCBvcworaW1wb3J0IGNvbnRleHRsaWIKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvciBpbXBvcnQgT0VUZXN0VGFnCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBydW5xZW11LCBDb21tYW5kCitmcm9tIG9lcWEudXRpbHMubmZzIGltcG9ydCB1bmZzX3NlcnZlcgorCitkZWYgcGFyc2VfdmFsdWVzKGNvbnRlbnQpOgorICAgIGZvciBpIGluIGNvbnRlbnQ6CisgICAgICAgIGZvciB2IGluIFsiUEFTUyIsICJGQUlMIiwgIlhQQVNTIiwgIlhGQUlMIiwgIlVOUkVTT0xWRUQiLCAiVU5TVVBQT1JURUQiLCAiVU5URVNURUQiLCAiRVJST1IiLCAiV0FSTklORyJdOgorICAgICAgICAgICAgaWYgaS5zdGFydHN3aXRoKHYgKyAiOiAiKToKKyAgICAgICAgICAgICAgICB5aWVsZCBpW2xlbih2KSArIDI6XS5zdHJpcCgpLCB2CisgICAgICAgICAgICAgICAgYnJlYWsKKworY2xhc3MgR2xpYmNTZWxmVGVzdEJhc2UoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBkZWYgcnVuX2NoZWNrKHNlbGYsIHNzaCA9IE5vbmUpOgorICAgICAgICAjIGNvbmZpZ3VyZSBzc2ggdGFyZ2V0CisgICAgICAgIGZlYXR1cmVzID0gW10KKyAgICAgICAgaWYgc3NoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCdUT09MQ0hBSU5fVEVTVF9UQVJHRVQgPSAic3NoIicpCisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ1RPT0xDSEFJTl9URVNUX0hPU1QgPSAiezB9IicuZm9ybWF0KHNzaCkpCisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUiA9ICJyb290IicpCisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ1RPT0xDSEFJTl9URVNUX0hPU1RfUE9SVCA9ICIyMiInKQorICAgICAgICAgICAgIyBmb3JjZSBzaW5nbGUgdGhyZWFkZWQgdGVzdCBleGVjdXRpb24KKyAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnRUdMSUJDUEFSQUxMRUxJU01fdGFzay1jaGVja19wbi1nbGliYy10ZXN0c3VpdGUgPSAiUEFSQUxMRUxNRkxBR1M9Ii1qMSIiJykKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIlxuIi5qb2luKGZlYXR1cmVzKSkKKworICAgICAgICBiaXRiYWtlKCJnbGliYy10ZXN0c3VpdGUgLWMgY2hlY2siKQorCisgICAgICAgIGJ1aWxkZGlyID0gZ2V0X2JiX3ZhcigiQiIsICJnbGliYy10ZXN0c3VpdGUiKQorCisgICAgICAgIHB0ZXN0c3VpdGUgPSAiZ2xpYmMtdXNlciIgaWYgc3NoIGlzIE5vbmUgZWxzZSAiZ2xpYmMiCisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzID0geyJwdGVzdHJlc3VsdC5zZWN0aW9ucyIgOiB7cHRlc3RzdWl0ZSA6IHt9fX0KKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihidWlsZGRpciwgInRlc3RzLnN1bSIpLCAiciIpIGFzIGY6CisgICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHBhcnNlX3ZhbHVlcyhmKToKKyAgICAgICAgICAgICAgICBzZWxmLmV4dHJhcmVzdWx0c1sicHRlc3RyZXN1bHQue30ue30iLmZvcm1hdChwdGVzdHN1aXRlLCB0ZXN0KV0gPSB7InN0YXR1cyIgOiByZXN1bHR9CisKKyAgICBkZWYgcnVuX2NoZWNrX2VtdWxhdGVkKHNlbGYpOgorICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgczoKKyAgICAgICAgICAgICMgdXNlIHRoZSBiYXNlIHdvcmsgZGlyLCBhcyB0aGUgbmZzIG1vdW50LCBzaW5jZSB0aGUgcmVjaXBlIGRpcmVjdG9yeSBtYXkgbm90IGV4aXN0CisgICAgICAgICAgICB0bXBkaXIgPSBnZXRfYmJfdmFyKCJCQVNFX1dPUktESVIiKQorICAgICAgICAgICAgbmZzcG9ydCwgbW91bnRwb3J0ID0gcy5lbnRlcl9jb250ZXh0KHVuZnNfc2VydmVyKHRtcGRpcikpCisKKyAgICAgICAgICAgICMgYnVpbGQgY29yZS1pbWFnZS1taW5pbWFsIHdpdGggcmVxdWlyZWQgcGFja2FnZXMKKyAgICAgICAgICAgIGRlZmF1bHRfaW5zdGFsbGVkX3BhY2thZ2VzID0gWworICAgICAgICAgICAgICAgICJnbGliYy1jaGFybWFwcyIsCisgICAgICAgICAgICAgICAgImxpYmdjYyIsCisgICAgICAgICAgICAgICAgImxpYnN0ZGMrKyIsCisgICAgICAgICAgICAgICAgImxpYmF0b21pYyIsCisgICAgICAgICAgICAgICAgImxpYmdvbXAiLAorICAgICAgICAgICAgICAgICMgInB5dGhvbjMiLAorICAgICAgICAgICAgICAgICMgInB5dGhvbjMtcGV4cGVjdCIsCisgICAgICAgICAgICAgICAgIm5mcy11dGlscyIsCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgZmVhdHVyZXMgPSBbXQorICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCdJTUFHRV9GRUFUVVJFUyArPSAic3NoLXNlcnZlci1vcGVuc3NoIicpCisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAiezB9IicuZm9ybWF0KCIgIi5qb2luKGRlZmF1bHRfaW5zdGFsbGVkX3BhY2thZ2VzKSkpCisgICAgICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiXG4iLmpvaW4oZmVhdHVyZXMpKQorICAgICAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKKworICAgICAgICAgICAgIyBzdGFydCBydW5xZW11CisgICAgICAgICAgICBxZW11ID0gcy5lbnRlcl9jb250ZXh0KHJ1bnFlbXUoImNvcmUtaW1hZ2UtbWluaW1hbCIsIHJ1bnFlbXVwYXJhbXMgPSAibm9ncmFwaGljIikpCisKKyAgICAgICAgICAgICMgdmFsaWRhdGUgdGhhdCBTU0ggaXMgd29ya2luZworICAgICAgICAgICAgc3RhdHVzLCBfID0gcWVtdS5ydW4oInVuYW1lIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorCisgICAgICAgICAgICAjIHNldHVwIG5mcyBtb3VudAorICAgICAgICAgICAgaWYgcWVtdS5ydW4oIm1rZGlyIC1wIFwiezB9XCIiLmZvcm1hdCh0bXBkaXIpKVswXSAhPSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRmFpbGVkIHRvIHNldHVwIE5GUyBtb3VudCBkaXJlY3Rvcnkgb24gdGFyZ2V0IikKKyAgICAgICAgICAgIG1vdW50Y21kID0gIm1vdW50IC1vIG5vYWMsbmZzdmVycz0zLHBvcnQ9ezB9LHVkcCxtb3VudHBvcnQ9ezF9IFwiezJ9OnszfVwiIFwiezN9XCIiLmZvcm1hdChuZnNwb3J0LCBtb3VudHBvcnQsIHFlbXUuc2VydmVyX2lwLCB0bXBkaXIpCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuKG1vdW50Y21kKQorICAgICAgICAgICAgaWYgc3RhdHVzICE9IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gc2V0dXAgTkZTIG1vdW50IG9uIHRhcmdldCAoe30pIi5mb3JtYXQocmVwcihvdXRwdXQpKSkKKworICAgICAgICAgICAgc2VsZi5ydW5fY2hlY2soc3NoID0gcWVtdS5pcCkKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiKQorY2xhc3MgR2xpYmNTZWxmVGVzdChHbGliY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfZ2xpYmMoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrKCkKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBHbGliY1NlbGZUZXN0U3lzdGVtRW11bGF0ZWQoR2xpYmNTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2dsaWJjKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9rZXJuZWxkZXZlbG9wbWVudC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9rZXJuZWxkZXZlbG9wbWVudC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjE4NzZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2tlcm5lbGRldmVsb3BtZW50LnB5CkBAIC0wLDAgKzEsNjcgQEAKK2ltcG9ydCBvcworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGdldF9iYl92YXIKK2Zyb20gb2VxYS51dGlscy5naXQgaW1wb3J0IEdpdFJlcG8KKworY2xhc3MgS2VybmVsRGV2KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihLZXJuZWxEZXYsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgICMgQ3JlYXRlIHRoZSByZWNpcGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbnNpZGUgdGhlIGNyZWF0ZWQgbGF5ZXIKKyAgICAgICAgY2xzLmxheWVybmFtZSA9ICdtZXRhLWtlcm5lbHRlc3QnCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyICVzJyAlIGNscy5sYXllcm5hbWUpCisgICAgICAgIHJ1bkNtZCgnbWtkaXIgLXAgJXMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8nICUgY2xzLmxheWVybmFtZSkKKyAgICAgICAgY2xzLnJlY2lwZXNfbGludXh5b2N0b19kaXIgPSBvcy5wYXRoLmpvaW4gXAorICAgICAgICAgICAgKGNscy5idWlsZGRpciwgY2xzLmxheWVybmFtZSwgJ3JlY2lwZXMta2VybmVsJywgJ2xpbnV4JywgJ2xpbnV4LXlvY3RvJykKKyAgICAgICAgY2xzLnJlY2lwZXNrZXJuZWxfZGlyID0gb3MucGF0aC5kaXJuYW1lKGNscy5yZWNpcGVzX2xpbnV4eW9jdG9fZGlyKQorICAgICAgICBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSBjbHMubGF5ZXJuYW1lKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgY2xzLmxheWVybmFtZSwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBydW5DbWQoJ3JtIC1yZiAlcycgJSBjbHMubGF5ZXJuYW1lKQorICAgICAgICBzdXBlcihLZXJuZWxEZXYsIGNscykudGVhckRvd25DbGFzcygpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKEtlcm5lbERldiwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLnNldF9tYWNoaW5lX2NvbmZpZygnTUFDSElORSA9ICJxZW11eDg2LTY0IlxuJykKKworICAgIGRlZiB0ZXN0X2FwcGx5X3BhdGNoZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQWJsZSB0byBhcHBseSBhIHNpbmdsZSBwYXRjaCB0byB0aGUgTGludXgga2VybmVsIHNvdXJjZQorICAgICAgICBFeHBlY3RlZDogICAgVGhlIFJFQURNRSBmaWxlIHNob3VsZCBleGlzdCBhbmQgdGhlIHBhdGNoIGNoYW5nZXMgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KKyAgICAgICAgUHJvZHVjdDogICAgIEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICBBdXRob3I6ICAgICAgWWVvaCBFZSBQZW5nIDxlZS5wZW5nLnllb2hAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogTWF6bGlhbmEgTW9oYW1hZCA8bWF6bGlhbmEubW9oYW1hZEBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBydW5DbWQoJ2JpdGJha2UgdmlydHVhbC9rZXJuZWwgLWMgcGF0Y2gnKQorICAgICAgICBrZXJuZWxfc291cmNlID0gZ2V0X2JiX3ZhcignU1RBR0lOR19LRVJORUxfRElSJykKKyAgICAgICAgcmVhZG1lID0gb3MucGF0aC5qb2luKGtlcm5lbF9zb3VyY2UsICdSRUFETUUnKQorCisgICAgICAgICMgVGhpcyB0ZXN0IHN0ZXAgYWRkcyBtb2RpZmllZCBmaWxlICdSRUFETUUnIHRvIGdpdCBhbmQgY3JlYXRlcyBhCisgICAgICAgICMgcGF0Y2ggZmlsZSAnMDAwMS1LRVJORUxfREVWX1RFU1RfQ0FTRS5wYXRjaCcgYXQgdGhlIHNhbWUgbG9jYXRpb24gYXMgZmlsZQorICAgICAgICBwYXRjaF9jb250ZW50ID0gJ1RoaXMgaXMgYSB0ZXN0IHRvIGFwcGx5IGEgcGF0Y2ggdG8gdGhlIGtlcm5lbCcKKyAgICAgICAgd2l0aCBvcGVuKHJlYWRtZSwgJ2ErJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUocGF0Y2hfY29udGVudCkKKyAgICAgICAgcmVwbyA9IEdpdFJlcG8oJyVzJyAlIGtlcm5lbF9zb3VyY2UsIGlzX3RvcGRpcj1UcnVlKQorICAgICAgICByZXBvLnJ1bl9jbWQoJ2FkZCAlcycgJSByZWFkbWUpCisgICAgICAgIHJlcG8ucnVuX2NtZChbJ2NvbW1pdCcsICctbScsICdLRVJORUxfREVWX1RFU1RfQ0FTRSddKQorICAgICAgICByZXBvLnJ1bl9jbWQoWydmb3JtYXQtcGF0Y2gnLCAnLTEnXSkKKyAgICAgICAgcGF0Y2hfbmFtZSA9ICcwMDAxLUtFUk5FTF9ERVZfVEVTVF9DQVNFLnBhdGNoJworICAgICAgICBwYXRjaHBhdGggPSBvcy5wYXRoLmpvaW4oa2VybmVsX3NvdXJjZSwgcGF0Y2hfbmFtZSkKKyAgICAgICAgcnVuQ21kKCdtdiAlcyAlcycgJSAocGF0Y2hwYXRoLCBzZWxmLnJlY2lwZXNfbGludXh5b2N0b19kaXIpKQorICAgICAgICBydW5DbWQoJ3JtICVzICcgJSByZWFkbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMocmVhZG1lKSkKKworICAgICAgICByZWNpcGVfYXBwZW5kID0gb3MucGF0aC5qb2luKHNlbGYucmVjaXBlc2tlcm5lbF9kaXIsICdsaW51eC15b2N0b18lLmJiYXBwZW5kJykKKyAgICAgICAgd2l0aCBvcGVuKHJlY2lwZV9hcHBlbmQsICd3KycpIGFzIGZoOgorICAgICAgICAgICAgZmgud3JpdGUoJ1NSQ19VUkkgKz0gImZpbGU6Ly8lcyJcbicgJSBwYXRjaF9uYW1lKQorICAgICAgICAgICAgZmgud3JpdGUoJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiInKQorCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZSB2aXJ0dWFsL2tlcm5lbCAtYyBjbGVhbicpCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZSB2aXJ0dWFsL2tlcm5lbCAtYyBwYXRjaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZWFkbWUpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3RhaWwgLW4gMSAlcycgJSByZWFkbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgcGF0Y2hfY29udGVudCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weQppbmRleCBmNDdiYzcwLi4wMzkwMWEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5CkBAIC01LDkgKzUsMTEgQEAKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKIGZyb20gb2VxYS5zZGsudXRpbHMuc2RrYnVpbGRwcm9qZWN0IGltcG9ydCBTREtCdWlsZFByb2plY3QKIGZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMsIHJ1bkNtZAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yIGltcG9ydCBPRVRlc3RUYWcKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHNodXRpbAogCitAT0VUZXN0VGFnKCJtYWNoaW5lIikKIGNsYXNzIE1ldGFJREUoT0VTZWxmdGVzdFRlc3RDYXNlKToKIAogICAgIEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlcHJvZHVjaWJsZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZXByb2R1Y2libGUucHkKaW5kZXggNmRjODNkMi4uZWVlMDlkMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlcHJvZHVjaWJsZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5CkBAIC04LDYgKzgsNyBAQAogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHRleHR3cmFwCitpbXBvcnQganNvbgogaW1wb3J0IHVuaXR0ZXN0CiAKIE1JU1NJTkcgPSAnTUlTU0lORycKQEAgLTgxLDE0ICs4MiwxMiBAQAogICAgICAgICBmb3IgdiBpbiBuZWVkZWRfdmFyczoKICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgdi5sb3dlcigpLCBiYl92YXJzW3ZdKQogCi0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYudGMsICJleHRyYXJlc3VsdHMiKToKLSAgICAgICAgICAgIHNlbGYudGMuZXh0cmFyZXN1bHRzID0ge30KLSAgICAgICAgc2VsZi5leHRyYXMgPSBzZWxmLnRjLmV4dHJhcmVzdWx0cwotCi0gICAgICAgIHNlbGYuZXh0cmFzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJywge30pWydsb2cnXSA9ICcnCisgICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0cyA9IHt9CisgICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0cy5zZXRkZWZhdWx0KCdyZXByb2R1Y2libGUucmF3bG9ncycsIHt9KVsnbG9nJ10gPSAnJworICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHMuc2V0ZGVmYXVsdCgncmVwcm9kdWNpYmxlJywge30pLnNldGRlZmF1bHQoJ2ZpbGVzJywge30pCiAKICAgICBkZWYgYXBwZW5kX3RvX2xvZyhzZWxmLCBtc2cpOgotICAgICAgICBzZWxmLmV4dHJhc1sncmVwcm9kdWNpYmxlLnJhd2xvZ3MnXVsnbG9nJ10gKz0gbXNnCisgICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0c1sncmVwcm9kdWNpYmxlLnJhd2xvZ3MnXVsnbG9nJ10gKz0gbXNnCiAKICAgICBkZWYgY29tcGFyZV9wYWNrYWdlcyhzZWxmLCByZWZlcmVuY2VfZGlyLCB0ZXN0X2RpciwgZGlmZnV0aWxzX3N5c3Jvb3QpOgogICAgICAgICByZXN1bHQgPSBQYWNrYWdlQ29tcGFyZVJlc3VsdHMoKQpAQCAtMTE0LDQ3ICsxMTMsNzAgQEAKICAgICAgICAgcmVzdWx0LnNvcnQoKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICBAdW5pdHRlc3Quc2tpcCgiUmVwcm9kdWNpYmxlIGJ1aWxkcyBkbyBub3QgeWV0IHBhc3MiKQorICAgIGRlZiB3cml0ZV9wYWNrYWdlX2xpc3Qoc2VsZiwgcGFja2FnZV9jbGFzcywgbmFtZSwgcGFja2FnZXMpOgorICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHNbJ3JlcHJvZHVjaWJsZSddWydmaWxlcyddLnNldGRlZmF1bHQocGFja2FnZV9jbGFzcywge30pW25hbWVdID0gWworICAgICAgICAgICAgICAgIHsncmVmZXJlbmNlJzogcC5yZWZlcmVuY2UsICd0ZXN0JzogcC50ZXN0fSBmb3IgcCBpbiBwYWNrYWdlc10KKwogICAgIGRlZiB0ZXN0X3JlcHJvZHVjaWJsZV9idWlsZHMoc2VsZik6CiAgICAgICAgIGNhcHR1cmVfdmFycyA9IFsnREVQTE9ZX0RJUl8nICsgYy51cHBlcigpIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzXQogCi0gICAgICAgIGNvbW1vbl9jb25maWcgPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAotICAgICAgICAgICAgSU5IRVJJVCArPSAicmVwcm9kdWNpYmxlX2J1aWxkIgotICAgICAgICAgICAgUEFDS0FHRV9DTEFTU0VTID0gIiVzIgotICAgICAgICAgICAgJycnKSAlICgnICcuam9pbigncGFja2FnZV8lcycgJSBjIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzKSkKLQotICAgICAgICAjIERvIGFuIGluaXRpYWwgYnVpbGQuIEl0J3MgYWNjZXB0YWJsZSBmb3IgdGhpcyBidWlsZCB0byB1c2Ugc3N0YXRlCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbW1vbl9jb25maWcpCi0gICAgICAgIHZhcnNfcmVmZXJlbmNlID0gZ2V0X2JiX3ZhcnMoY2FwdHVyZV92YXJzKQotICAgICAgICBiaXRiYWtlKCcgJy5qb2luKHNlbGYuaW1hZ2VzKSkKLQogICAgICAgICAjIEJ1aWxkIG5hdGl2ZSB1dGlsaXRpZXMKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJycpCiAgICAgICAgIGJpdGJha2UoImRpZmZ1dGlscy1uYXRpdmUgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3QiKQogICAgICAgICBkaWZmdXRpbHNfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJkaWZmdXRpbHMtbmF0aXZlIikKIAotICAgICAgICAjIFBlcmZvcm0gYW5vdGhlciBidWlsZC4gVGhpcyBidWlsZCBzaG91bGQgKm5vdCogc2hhcmUgc3N0YXRlIG9yIHB1bGwKLSAgICAgICAgIyBmcm9tIGFueSBtaXJyb3JzLCBidXQgc2hhcmluZyBhIERMX0RJUiBpcyBmaW5lCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKHRleHR3cmFwLmRlZGVudCgnJydcCi0gICAgICAgICAgICBUTVBESVIgPSAiJHtUT1BESVJ9L3JlcHJvZHVjaWJsZS90bXAiCisgICAgICAgICMgUmVwcm9kdWNpYmxlIGJ1aWxkcyBzaG91bGQgbm90IHB1bGwgZnJvbSBzc3RhdGUgb3IgbWlycm9ycywgYnV0CisgICAgICAgICMgc2hhcmluZyBETF9ESVIgaXMgZmluZQorICAgICAgICBjb21tb25fY29uZmlnID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIElOSEVSSVQgKz0gInJlcHJvZHVjaWJsZV9idWlsZCIKKyAgICAgICAgICAgIFBBQ0tBR0VfQ0xBU1NFUyA9ICIlcyIKICAgICAgICAgICAgIFNTVEFURV9ESVIgPSAiJHtUTVBESVJ9L3NzdGF0ZSIKLSAgICAgICAgICAgIFNTVEFURV9NSVJST1IgPSAiIgotICAgICAgICAgICAgJycnKSArIGNvbW1vbl9jb25maWcpCi0gICAgICAgIHZhcnNfdGVzdCA9IGdldF9iYl92YXJzKGNhcHR1cmVfdmFycykKKyAgICAgICAgICAgICcnJykgJSAoJyAnLmpvaW4oJ3BhY2thZ2VfJXMnICUgYyBmb3IgYyBpbiBzZWxmLnBhY2thZ2VfY2xhc3NlcykpCisKKyAgICAgICAgIyBQZXJmb3JtIGEgYnVpbGQuCisgICAgICAgIHJlcHJvZHVjaWJsZUFfdG1wID0gb3MucGF0aC5qb2luKHNlbGYudG9wZGlyLCAncmVwcm9kdWNpYmxlQScsICd0bXAnKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhyZXByb2R1Y2libGVBX3RtcCk6CisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUocmVwcm9kdWNpYmxlQV90bXAsIHJlY3Vyc2U9VHJ1ZSkKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygodGV4dHdyYXAuZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIFRNUERJUiA9ICIlcyIKKyAgICAgICAgICAgICcnJykgJSByZXByb2R1Y2libGVBX3RtcCkgKyBjb21tb25fY29uZmlnKQorICAgICAgICB2YXJzX0EgPSBnZXRfYmJfdmFycyhjYXB0dXJlX3ZhcnMpCiAgICAgICAgIGJpdGJha2UoJyAnLmpvaW4oc2VsZi5pbWFnZXMpKQogCisgICAgICAgICMgUGVyZm9ybSBhbm90aGVyIGJ1aWxkLgorICAgICAgICByZXByb2R1Y2libGVCX3RtcCA9IG9zLnBhdGguam9pbihzZWxmLnRvcGRpciwgJ3JlcHJvZHVjaWJsZUInLCAndG1wJykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocmVwcm9kdWNpYmxlQl90bXApOgorICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHJlcHJvZHVjaWJsZUJfdG1wLCByZWN1cnNlPVRydWUpCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoKHRleHR3cmFwLmRlZGVudCgnJydcCisgICAgICAgICAgICBTU1RBVEVfTUlSUk9SID0gIiIKKyAgICAgICAgICAgIFRNUERJUiA9ICIlcyIKKyAgICAgICAgICAgICcnJykgJSByZXByb2R1Y2libGVCX3RtcCkgKyBjb21tb25fY29uZmlnKQorICAgICAgICB2YXJzX0IgPSBnZXRfYmJfdmFycyhjYXB0dXJlX3ZhcnMpCisgICAgICAgIGJpdGJha2UoJyAnLmpvaW4oc2VsZi5pbWFnZXMpKQorCisgICAgICAgICMgTk9URTogVGhlIHRlbXAgZGlyZWN0b3JpZXMgZnJvbSB0aGUgcmVwcm9kdWNpYmxlIGJ1aWxkIGFyZSBwdXJwb3NlbHkKKyAgICAgICAgIyBrZXB0IGFmdGVyIHRoZSBidWlsZCBzbyBpdCBjYW4gYmUgZGlmZmVkIGZvciBkZWJ1Z2dpbmcuCisKICAgICAgICAgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXM6Ci0gICAgICAgICAgICBwYWNrYWdlX2NsYXNzID0gJ3BhY2thZ2VfJyArIGMKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhY2thZ2VfY2xhc3M9Yyk6CisgICAgICAgICAgICAgICAgcGFja2FnZV9jbGFzcyA9ICdwYWNrYWdlXycgKyBjCiAKLSAgICAgICAgICAgIGRlcGxveV9yZWZlcmVuY2UgPSB2YXJzX3JlZmVyZW5jZVsnREVQTE9ZX0RJUl8nICsgYy51cHBlcigpXQotICAgICAgICAgICAgZGVwbG95X3Rlc3QgPSB2YXJzX3Rlc3RbJ0RFUExPWV9ESVJfJyArIGMudXBwZXIoKV0KKyAgICAgICAgICAgICAgICBkZXBsb3lfQSA9IHZhcnNfQVsnREVQTE9ZX0RJUl8nICsgYy51cHBlcigpXQorICAgICAgICAgICAgICAgIGRlcGxveV9CID0gdmFyc19CWydERVBMT1lfRElSXycgKyBjLnVwcGVyKCldCiAKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuY29tcGFyZV9wYWNrYWdlcyhkZXBsb3lfcmVmZXJlbmNlLCBkZXBsb3lfdGVzdCwgZGlmZnV0aWxzX3N5c3Jvb3QpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jb21wYXJlX3BhY2thZ2VzKGRlcGxveV9BLCBkZXBsb3lfQiwgZGlmZnV0aWxzX3N5c3Jvb3QpCiAKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ1JlcHJvZHVjaWJpbGl0eSBzdW1tYXJ5IGZvciAlczogJXMnICUgKGMsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnUmVwcm9kdWNpYmlsaXR5IHN1bW1hcnkgZm9yICVzOiAlcycgJSAoYywgcmVzdWx0KSkKIAotICAgICAgICAgICAgc2VsZi5hcHBlbmRfdG9fbG9nKCdcbicuam9pbigiJXM6ICVzIiAlIChyLnN0YXR1cywgci50ZXN0KSBmb3IgciBpbiByZXN1bHQudG90YWwpKQorICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kX3RvX2xvZygnXG4nLmpvaW4oIiVzOiAlcyIgJSAoci5zdGF0dXMsIHIudGVzdCkgZm9yIHIgaW4gcmVzdWx0LnRvdGFsKSkKIAotICAgICAgICAgICAgaWYgcmVzdWx0Lm1pc3Npbmcgb3IgcmVzdWx0LmRpZmZlcmVudDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlRoZSBmb2xsb3dpbmcgJXMgcGFja2FnZXMgYXJlIG1pc3Npbmcgb3IgZGlmZmVyZW50OiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGMsICcgJy5qb2luKHIudGVzdCBmb3IgciBpbiAocmVzdWx0Lm1pc3NpbmcgKyByZXN1bHQuZGlmZmVyZW50KSkpKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfcGFja2FnZV9saXN0KHBhY2thZ2VfY2xhc3MsICdtaXNzaW5nJywgcmVzdWx0Lm1pc3NpbmcpCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9wYWNrYWdlX2xpc3QocGFja2FnZV9jbGFzcywgJ2RpZmZlcmVudCcsIHJlc3VsdC5kaWZmZXJlbnQpCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9wYWNrYWdlX2xpc3QocGFja2FnZV9jbGFzcywgJ3NhbWUnLCByZXN1bHQuc2FtZSkKKworICAgICAgICAgICAgICAgIGlmIHJlc3VsdC5taXNzaW5nIG9yIHJlc3VsdC5kaWZmZXJlbnQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiVGhlIGZvbGxvd2luZyAlcyBwYWNrYWdlcyBhcmUgbWlzc2luZyBvciBkaWZmZXJlbnQ6ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGMsICcgJy5qb2luKHIudGVzdCBmb3IgciBpbiAocmVzdWx0Lm1pc3NpbmcgKyByZXN1bHQuZGlmZmVyZW50KSkpKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVucWVtdS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CmluZGV4IGI4OGFlMzAuLjdlNjc2YmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CkBAIC04LDYgKzgsNyBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1wb3J0IG9lLnR5cGVzCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IgaW1wb3J0IE9FVGVzdFRhZwogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQogZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBydW5xZW11LCBnZXRfYmJfdmFyLCBydW5DbWQKIApAQCAtMTQ3LDYgKzE0OCw3IEBACiAjIGRlZGljYXRlZCBmb3IgTUFDSElORT1xZW11eDg2LTY0IHdoZXJlIGl0IHRlc3QgdGhhdCBxZW11eDg2LTY0IHdpbGwKICMgYm9vdHVwIHZhcmlvdXMgZmlsZXN5c3RlbSB0eXBlcywgaW5jbHVkaW5nIGxpdmUgaW1hZ2UoaXNvIGFuZCBoZGRpbWcpCiAjIHdoZXJlIGxpdmUgaW1hZ2Ugd2FzIG5vdCBzdXBwb3J0ZWQgb24gYWxsIHFlbXUgYXJjaGl0ZWN0dXJlLgorQE9FVGVzdFRhZygibWFjaGluZSIpCiBjbGFzcyBRZW11VGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CmluZGV4IGQyNzk5OTQuLjMxMjZhZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CkBAIC03Nyw3ICs3NywxNCBAQAogCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbWFjaGluZScsIHJlcXVpcmVkPUZhbHNlLCBjaG9pY2VzPVsncmFuZG9tJywgJ2FsbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1J1biB0ZXN0cyBvbiBkaWZmZXJlbnQgbWFjaGluZXMgKHJhbmRvbS9hbGwpLicpCi0gICAgICAgIAorCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tc2VsZWN0LXRhZ3MnLCBkZXN0PSJzZWxlY3RfdGFncyIsCisgICAgICAgICAgICAgICAgbmFyZ3M9JyonLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgaGVscD0nRmlsdGVyIGFsbCAodW5oaWRkZW4pIHRlc3RzIHRvIGFueSB0aGF0IG1hdGNoIGFueSBvZiB0aGUgc3BlY2lmaWVkIHRhZ3MuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLVQnLCAnLS1leGNsdWRlLXRhZ3MnLCBkZXN0PSJleGNsdWRlX3RhZ3MiLAorICAgICAgICAgICAgICAgIG5hcmdzPScqJywgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgIGhlbHA9J0V4Y2x1ZGUgYWxsICh1bmhpZGRlbikgdGVzdHMgdGhhdCBtYXRjaCBhbnkgb2YgdGhlIHNwZWNpZmllZCB0YWdzLiAoZXhjbHVkZSBhcHBsaWVzIGJlZm9yZSBzZWxlY3QpJykKKwogICAgICAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9c2VsZi5ydW4pCiAKICAgICBkZWYgX2dldF9hdmFpbGFibGVfbWFjaGluZXMoc2VsZik6CkBAIC0xNDksNiArMTU2LDE4IEBACiAgICAgICAgIGNvcHlmaWxlKHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVycyddLCAKICAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfYmFja3VwJ10pCiAKKyAgICAgICAgZGVmIHRhZ19maWx0ZXIodGFncyk6CisgICAgICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfdGFnczoKKyAgICAgICAgICAgICAgICBpZiBhbnkodGFnIGluIGFyZ3MuZXhjbHVkZV90YWdzIGZvciB0YWcgaW4gdGFncyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiBhcmdzLnNlbGVjdF90YWdzOgorICAgICAgICAgICAgICAgIGlmIG5vdCB0YWdzIG9yIG5vdCBhbnkodGFnIGluIGFyZ3Muc2VsZWN0X3RhZ3MgZm9yIHRhZyBpbiB0YWdzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGlmIGFyZ3Muc2VsZWN0X3RhZ3Mgb3IgYXJncy5leGNsdWRlX3RhZ3M6CisgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snbG9hZCddWyd0YWdzX2ZpbHRlciddID0gdGFnX2ZpbHRlcgorCiAgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXVsnc2tpcHMnXSA9IGFyZ3Muc2tpcHMKICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddWydwcm9jZXNzZXMnXSA9IGFyZ3MucHJvY2Vzc2VzCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQppbmRleCA3MTQwYmM3Li5kYzFlMjg2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CkBAIC0xNzIsOCArMTcyLDExIEBACiAgICAgaWYgbmF0aXZlX3N5c3Jvb3Q6CiAgICAgICAgIGV4dHJhX3BhdGhzID0gIiVzL3NiaW46JXMvdXNyL3NiaW46JXMvdXNyL2JpbiIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgKG5hdGl2ZV9zeXNyb290LCBuYXRpdmVfc3lzcm9vdCwgbmF0aXZlX3N5c3Jvb3QpCisgICAgICAgIGV4dHJhX2xpYnBhdGhzID0gIiVzL2xpYjolcy91c3IvbGliIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAobmF0aXZlX3N5c3Jvb3QsIG5hdGl2ZV9zeXNyb290KQogICAgICAgICBuZW52ID0gZGljdChvcHRpb25zLmdldCgnZW52Jywgb3MuZW52aXJvbikpCiAgICAgICAgIG5lbnZbJ1BBVEgnXSA9IGV4dHJhX3BhdGhzICsgJzonICsgbmVudi5nZXQoJ1BBVEgnLCAnJykKKyAgICAgICAgbmVudlsnTERfTElCUkFSWV9QQVRIJ10gPSBleHRyYV9saWJwYXRocyArICc6JyArIG5lbnYuZ2V0KCdMRF9MSUJSQVJZX1BBVEgnLCAnJykKICAgICAgICAgb3B0aW9uc1snZW52J10gPSBuZW52CiAKICAgICBjbWQgPSBDb21tYW5kKGNvbW1hbmQsIHRpbWVvdXQ9dGltZW91dCwgb3V0cHV0X2xvZz1vdXRwdXRfbG9nLCAqKm9wdGlvbnMpCkBAIC0zMzcsNyArMzQwLDcgQEAKICAgICAgICAgcWVtdS5kZXBsb3koKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBxZW11LnN0YXJ0KHBhcmFtcz1xZW11cGFyYW1zLCBzc2g9c3NoLCBydW5xZW11cGFyYW1zPXJ1bnFlbXVwYXJhbXMsIGxhdW5jaF9jbWQ9bGF1bmNoX2NtZCwgZGlzY2FyZF93cml0ZXM9ZGlzY2FyZF93cml0ZXMpCi0gICAgICAgIGV4Y2VwdCBFWGNlcHRpb24gYXMgZToKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgbXNnID0gc3RyKGUpICsgJ1xuRmFpbGVkIHRvIHN0YXJ0IFFFTVUgLSBzZWUgdGhlIGxvZ3MgaW4gJXMnICUgbG9nZGlyCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhxZW11LnFlbXVydW5uZXJsb2cpOgogICAgICAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2csICdyJykgYXMgZjoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9uZXR3b3JrLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL25ldHdvcmsucHkKaW5kZXggNTljYmJjNC4uNTlkMDE3MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL25ldHdvcmsucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL25ldHdvcmsucHkKQEAgLTQsOCArNCw4IEBACiAKIGltcG9ydCBzb2NrZXQKIAotZGVmIGdldF9mcmVlX3BvcnQoKToKLSAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorZGVmIGdldF9mcmVlX3BvcnQodWRwID0gRmFsc2UpOgorICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0gaWYgbm90IHVkcCBlbHNlIHNvY2tldC5TT0NLX0RHUkFNKQogICAgIHMuYmluZCgoJycsIDApKQogICAgIGFkZHIgPSBzLmdldHNvY2tuYW1lKCkKICAgICBzLmNsb3NlKCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9uZnMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbmZzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNzY4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbmZzLnB5CkBAIC0wLDAgKzEsMzkgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgc29ja2V0Citmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXIsIENvbW1hbmQKK2Zyb20gb2VxYS51dGlscy5uZXR3b3JrIGltcG9ydCBnZXRfZnJlZV9wb3J0CisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgdW5mc19zZXJ2ZXIoZGlyZWN0b3J5LCBsb2dnZXIgPSBOb25lKToKKyAgICB1bmZzX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAidW5mczMtbmF0aXZlIikKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHVuZnNfc3lzcm9vdCwgInVzciIsICJiaW4iLCAidW5mc2QiKSk6CisgICAgICAgICMgYnVpbGQgbmF0aXZlIHRvb2wKKyAgICAgICAgYml0YmFrZSgidW5mczMtbmF0aXZlIC1jIGFkZHRvX3JlY2lwZV9zeXNyb290IikKKworICAgIGV4cG9ydHMgPSBOb25lCisgICAgY21kID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgIyBjcmVhdGUgdGhlIGV4cG9ydHMgZmlsZQorICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGUgPSBGYWxzZSkgYXMgZXhwb3J0czoKKyAgICAgICAgICAgIGV4cG9ydHMud3JpdGUoInswfSAocncsbm9fcm9vdF9zcXVhc2gsbm9fYWxsX3NxdWFzaCxpbnNlY3VyZSlcbiIuZm9ybWF0KGRpcmVjdG9yeSkuZW5jb2RlKCkpCisKKyAgICAgICAgIyBmaW5kIHNvbWUgcG9ydHMgZm9yIHRoZSBzZXJ2ZXIKKyAgICAgICAgbmZzcG9ydCwgbW91bnRwb3J0ID0gZ2V0X2ZyZWVfcG9ydCh1ZHAgPSBUcnVlKSwgZ2V0X2ZyZWVfcG9ydCh1ZHAgPSBUcnVlKQorCisgICAgICAgIG5lbnYgPSBkaWN0KG9zLmVudmlyb24pCisgICAgICAgIG5lbnZbJ1BBVEgnXSA9ICJ7MH0vc2Jpbjp7MH0vdXNyL3NiaW46ezB9L3Vzci9iaW46Ii5mb3JtYXQodW5mc19zeXNyb290KSArIG5lbnYuZ2V0KCdQQVRIJywgJycpCisgICAgICAgIGNtZCA9IENvbW1hbmQoWyJ1bmZzZCIsICItZCIsICItcCIsICItTiIsICItZSIsIGV4cG9ydHMubmFtZSwgIi1uIiwgc3RyKG5mc3BvcnQpLCAiLW0iLCBzdHIobW91bnRwb3J0KV0sCisgICAgICAgICAgICAgICAgYmcgPSBUcnVlLCBlbnYgPSBuZW52LCBvdXRwdXRfbG9nID0gbG9nZ2VyKQorICAgICAgICBjbWQucnVuKCkKKyAgICAgICAgeWllbGQgbmZzcG9ydCwgbW91bnRwb3J0CisgICAgZmluYWxseToKKyAgICAgICAgaWYgY21kIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY21kLnN0b3AoKQorICAgICAgICBpZiBleHBvcnRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBjbGVhbiB1cCBleHBvcnRzIGZpbGUKKyAgICAgICAgICAgIG9zLnVubGluayhleHBvcnRzLm5hbWUpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC43LmJiCmluZGV4IGE3NzY1M2IuLjFjNmU0NmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYgpAQCAtMjAsNyArMjAsMTMgQEAKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCXJtICR7RH0ke3N5c2NvbmZkaXJ9IC1yZgotCXJtICR7RH0ke2Jhc2VfbGliZGlyfSAtcmYKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywndXNybWVyZ2UnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7YmFzZV9saWJkaXJ9IiBdO3RoZW4KKyAgICAgICAgICAgICAgICAgICBybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfSAtcmYKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgIGVsc2UKKwkJcm0gJHtEfSR7YmFzZV9saWJkaXJ9IC1yZgorICAgICAgICBmaQogCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0gLXJmCiAJIyBUaGUgJHtzeXN0ZW1kX3VuaXRkaXJ9IGlzIC9saWIvc3lzdGVtZCwgc28gd2UgbmVlZCBybWRpciAvbGliLAogCSMgYnV0IG5vdCAke2Jhc2VfbGliZGlyfSBoZXJlLiBBbmQgdGhlIC9saWIgbWF5IG5vdCBleGlzdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtRml4LW9wZW5pbmctZXRjLXJlc29sdi5jb25mLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtRml4LW9wZW5pbmctZXRjLXJlc29sdi5jb25mLWVycm9yLnBhdGNoCmluZGV4IDExZTdlOGEuLmNiOGI4M2YgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLUZpeC1vcGVuaW5nLWV0Yy1yZXNvbHYuY29uZi1lcnJvci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1GaXgtb3BlbmluZy1ldGMtcmVzb2x2LmNvbmYtZXJyb3IucGF0Y2gKQEAgLTE5LDYgKzE5LDExIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKK1doZW4gY29ubm1hbiBpbnN0YWxsZWQgdG8gaW1hZ2UsIC9ldGMvcmVzb2x2LmNvbmYgaXMgbGluayB0bworL2V0Yy9yZXNvbHYtY29uZi5jb25ubWFuLiBTbyBsYXVuY2ggYXZhaGktZGFlbW9uIGFmdGVyIGNvbm5tYW4gdG9vLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KIC0tLQogIGF2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uc2VydmljZS5pbiB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpAQCAtMzEsNyArMzYsNyBAQAogIFtVbml0XQogIERlc2NyaXB0aW9uPUF2YWhpIG1ETlMvRE5TLVNEIFN0YWNrCiAgUmVxdWlyZXM9YXZhaGktZGFlbW9uLnNvY2tldAotK0FmdGVyPXN5c3RlbWQtcmVzb2x2ZWQuc2VydmljZQorK0FmdGVyPXN5c3RlbWQtcmVzb2x2ZWQuc2VydmljZSBjb25ubWFuLnNlcnZpY2UKICAKICBbU2VydmljZV0KICBUeXBlPWRidXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS41LVA0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIKaW5kZXggOTNjNDA2Zi4uNjliMTE3NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIKQEAgLTM5LDcgKzM5LDcgQEAKIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKIFBBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKIFBBQ0tBR0VDT05GSUdbdXJhbmRvbV0gPSAiLS13aXRoLXJhbmRvbWRldj0vZGV2L3VyYW5kb20sLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSwsIgotUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSAtLXdpdGgtcHl0aG9uLWluc3RhbGwtZGlyPSR7RH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLCAtLXdpdGhvdXQtcHl0aG9uLCBweXRob24zLXBseS1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uPXllcyAtLXdpdGgtcHl0aG9uLWluc3RhbGwtZGlyPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICwgLS13aXRob3V0LXB5dGhvbiwgcHl0aG9uMy1wbHktbmF0aXZlLCIKIAogRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgogRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtbGlidG9vbCAtLWVuYWJsZS10aHJlYWRzIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwppbmRleCBiZmZkMTc0Li42Yzc5ZWQwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tRml4LWEtcmFjZS1pc3N1ZS1mb3ItdG9vbHMucGF0Y2ggXAogICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDkxMC5wYXRjaCBcCiAgICAgZmlsZTovL2djYzktZml4ZXMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXRvb2xzLUZpeC1idWlsZC1hZnRlci15MjAzOC1jaGFuZ2VzLWluLWdsaWJjLnBhdGNoIFwKICIKIFMgPSAiJHtXT1JLRElSfS9ibHVlei0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNhMjBhZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSBmMzZmNzFmNjBiMWU2OGMwZjEyZTYxNWI5YjEyOGQwODllYzNkZDE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmFzdGllbiBOb2NlcmEgPGhhZGVzc0BoYWRlc3MubmV0PgorRGF0ZTogRnJpLCA3IEp1biAyMDE5IDA5OjUxOjMzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHRvb2xzOiBGaXggYnVpbGQgYWZ0ZXIgeTIwMzggY2hhbmdlcyBpbiBnbGliYworCitUaGUgMzItYml0IFNJT0NHU1RBTVAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIHRoZSBkZXByZWNhdGVkIG5hbWUKK3RvIGZpeCB0aGUgYnVpbGQuCisKK1Vwc3RyZWFtLVN0YXR1czogYmFja3BvcnQgY29tbWl0IGYzNmY3MWY2MGIxZTY4YzBmMTJlNjE1YjliMTI4ZDA4OWVjM2RkMTkKKworU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4KKworLS0tCisgdG9vbHMvbDJ0ZXN0LmMgfCA2ICsrKysrLQorIHRvb2xzL3JjdGVzdC5jIHwgNiArKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9sMnRlc3QuYyBiL3Rvb2xzL2wydGVzdC5jCitpbmRleCBlNzU1YWM4ODEuLmU3ODdjMmNlMiAxMDA2NDQKKy0tLSBhL3Rvb2xzL2wydGVzdC5jCisrKysgYi90b29scy9sMnRlc3QuYworQEAgLTU1LDYgKzU1LDEwIEBACisgI2RlZmluZSBCUkVEUl9ERUZBVUxUX1BTTQkweDEwMTEKKyAjZGVmaW5lIExFX0RFRkFVTFRfUFNNCQkweDAwODAKKyAKKysjaWZuZGVmIFNJT0NHU1RBTVBfT0xECisrI2RlZmluZSBTSU9DR1NUQU1QX09MRCBTSU9DR1NUQU1QCisrI2VuZGlmCisrCisgLyogVGVzdCBtb2RlcyAqLworIGVudW0geworIAlTRU5ELAorQEAgLTkwNyw3ICs5MTEsNyBAQCBzdGF0aWMgdm9pZCByZWN2X21vZGUoaW50IHNrKQorIAkJCWlmICh0aW1lc3RhbXApIHsKKyAJCQkJc3RydWN0IHRpbWV2YWwgdHY7CisgCistCQkJCWlmIChpb2N0bChzaywgU0lPQ0dTVEFNUCwgJnR2KSA8IDApIHsKKysJCQkJaWYgKGlvY3RsKHNrLCBTSU9DR1NUQU1QX09MRCwgJnR2KSA8IDApIHsKKyAJCQkJCXRpbWVzdGFtcCA9IDA7CisgCQkJCQltZW1zZXQodHMsIDAsIHNpemVvZih0cykpOworIAkJCQl9IGVsc2UgeworZGlmZiAtLWdpdCBhL3Rvb2xzL3JjdGVzdC5jIGIvdG9vbHMvcmN0ZXN0LmMKK2luZGV4IDk0NDkwZjQ2Mi4uYmM4ZWQ4NzVkIDEwMDY0NAorLS0tIGEvdG9vbHMvcmN0ZXN0LmMKKysrKyBiL3Rvb2xzL3JjdGVzdC5jCitAQCAtNTAsNiArNTAsMTAgQEAKKyAKKyAjaW5jbHVkZSAic3JjL3NoYXJlZC91dGlsLmgiCisgCisrI2lmbmRlZiBTSU9DR1NUQU1QX09MRAorKyNkZWZpbmUgU0lPQ0dTVEFNUF9PTEQgU0lPQ0dTVEFNUAorKyNlbmRpZgorKworIC8qIFRlc3QgbW9kZXMgKi8KKyBlbnVtIHsKKyAJU0VORCwKK0BAIC01MDUsNyArNTA5LDcgQEAgc3RhdGljIHZvaWQgcmVjdl9tb2RlKGludCBzaykKKyAJCQlpZiAodGltZXN0YW1wKSB7CisgCQkJCXN0cnVjdCB0aW1ldmFsIHR2OworIAorLQkJCQlpZiAoaW9jdGwoc2ssIFNJT0NHU1RBTVAsICZ0dikgPCAwKSB7CisrCQkJCWlmIChpb2N0bChzaywgU0lPQ0dTVEFNUF9PTEQsICZ0dikgPCAwKSB7CisgCQkJCQl0aW1lc3RhbXAgPSAwOworIAkJCQkJbWVtc2V0KHRzLCAwLCBzaXplb2YodHMpKTsKKyAJCQkJfSBlbHNlIHsKKy0tIAorMi4xOS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRG8tbm90LXBhc3MtbnVsbC1wb2ludGVyLXRvLWZyZWVhZGRyaW5mby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRG8tbm90LXBhc3MtbnVsbC1wb2ludGVyLXRvLWZyZWVhZGRyaW5mby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ0ZDFiZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLURvLW5vdC1wYXNzLW51bGwtcG9pbnRlci10by1mcmVlYWRkcmluZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDRmMTE1ZmMzMTQ2NDY1MDBmN2I0MTc4ZDcyNDhhMDI2NTRjN2NkMTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMCBOb3YgMjAxOCAxNjo0Nzo1NyAtMDgwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgcGFzcyBudWxsIHBvaW50ZXIgdG8gZnJlZWFkZHJpbmZvKCkKLQotUGFzc2luZyBudWxsIHBvaW50ZXIgYXMgaW5wdXQgcGFyYW1ldGVyIHRvIGZyZWVhZGRyaW5mbygpIGlzIHVuZGVmaW5lZAotYmVoYXZpb3VyLCBzb21lIGxpYmNzIGUuZy4gZ2xpYmMgbWlnaHQganVzdCBjYWxsIGZyZWUoKSB3aGljaCBkb2VzCi1hY2NlcHQgbnVsbCBwb2ludGVyIGJ1dCBvdGhlciBsaWJjcyBlLmcuIG11c2wgbWlnaHQgbm90IGFuZCBpbnN0ZWFkCi1jYXVzZSB0aGUgcHJvZ3JhbSB0byBzZWdmYXVsdC4gVGhlcmVmb3JlIGRvIG5vdCByZWx5IG9uIHVuZGVmaW5lZAotYmVoYXZpb3VyIGluc3RlYWQgbWFrZSBpdCBkZXRlcm1pbmlzdGljCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3VwcG9ydC9leHBvcnQvY2xpZW50LmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IG5mcy11dGlscy0yLjMuMi9zdXBwb3J0L2V4cG9ydC9jbGllbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMi5vcmlnL3N1cHBvcnQvZXhwb3J0L2NsaWVudC5jCi0rKysgbmZzLXV0aWxzLTIuMy4yL3N1cHBvcnQvZXhwb3J0L2NsaWVudC5jCi1AQCAtMzA5LDcgKzMwOSw4IEBAIGNsaWVudF9sb29rdXAoY2hhciAqaG5hbWUsIGludCBjYW5vbmljYWwKLSAJCWluaXRfYWRkcmxpc3QoY2xwLCBhaSk7Ci0gCi0gb3V0OgotLQlmcmVlYWRkcmluZm8oYWkpOwotKwlpZiAoYWkpCi0rCQlmcmVlYWRkcmluZm8oYWkpOwotIAlyZXR1cm4gY2xwOwotIH0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoCmluZGV4IGFhNTUxZWIuLmZjYjBlOTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaApAQCAtMjIsMjUgKzIyLDI4IEBACiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZFtodHRwczovL21hcmMuaW5mby8/bD1saW51eC1uZnMmbT0xNTQ1MDI3ODA0MjMwNTgmdz0yXQogCiBTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgaXQuCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCiAgc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtIHwgICAyICstCi0gc3VwcG9ydC9taXNjL2ZpbGUuYyAgICAgIHwgMTExIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3VwcG9ydC9taXNjL21pc2MuYyAgICAgIHwgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3VwcG9ydC9taXNjL2ZpbGUuYyAgICAgIHwgMTExIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHN1cHBvcnQvbWlzYy9taXNjLmMgICAgICB8IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKICBzdXBwb3J0L25zbS9NYWtlZmlsZS5hbSAgfCAgIDIgKy0KICA0IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCAxMTMgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHN1cHBvcnQvbWlzYy9maWxlLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3VwcG9ydC9taXNjL21pc2MuYwogCiBkaWZmIC0tZ2l0IGEvc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtIGIvc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtCi1pbmRleCA4OTM2YjBkLi5kNGMxZjc2IDEwMDY0NAoraW5kZXggZjk5OTNlMy4uOGIwZTlkYiAxMDA2NDQKIC0tLSBhL3N1cHBvcnQvbWlzYy9NYWtlZmlsZS5hbQogKysrIGIvc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKK0BAIC0xLDcgKzEsNyBAQAogICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbgogIAogIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJtaXNjLmEKLS1saWJtaXNjX2FfU09VUkNFUyA9IHRjcHdyYXBwZXIuYyBmcm9tX2xvY2FsLmMgbW91bnRwb2ludC5jIGZpbGUuYwotK2xpYm1pc2NfYV9TT1VSQ0VTID0gdGNwd3JhcHBlci5jIGZyb21fbG9jYWwuYyBtb3VudHBvaW50LmMgbWlzYy5jCistbGlibWlzY19hX1NPVVJDRVMgPSB0Y3B3cmFwcGVyLmMgZnJvbV9sb2NhbC5jIG1vdW50cG9pbnQuYyBmaWxlLmMgXAorK2xpYm1pc2NfYV9TT1VSQ0VTID0gdGNwd3JhcHBlci5jIGZyb21fbG9jYWwuYyBtb3VudHBvaW50LmMgbWlzYy5jIFwKKyAJCSAgICBuZnNkX3BhdGguYyB3b3JrcXVldWUuYyB4c3RhdC5jCiAgCiAgTUFJTlRBSU5FUkNMRUFORklMRVMgPSBNYWtlZmlsZS5pbgogZGlmZiAtLWdpdCBhL3N1cHBvcnQvbWlzYy9maWxlLmMgYi9zdXBwb3J0L21pc2MvZmlsZS5jCkBAIC0yOTAsNiArMjkzLDMgQEAKICAKICBCVUlMVF9TT1VSQ0VTID0gJChHRU5GSUxFUykKICAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS11cGRhdGUtdGhlLXBhdGgtb2YtbGlibmZzLmEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLXVwZGF0ZS10aGUtcGF0aC1vZi1saWJuZnMuYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA2YWMwZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLXVwZGF0ZS10aGUtcGF0aC1vZi1saWJuZnMuYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gZmNlY2U2NWQxYjcxM2VhZWVmNDE3MDY4OTg0NDAzMDJmOGNlOTJkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDEyIEp1bCAyMDE4IDE1OjE5OjQxICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiB1cGRhdGUgdGhlIHBhdGggb2YgbGlibmZzLmEKLQotVGhlIGxpYm5mcy5hIGlzIHVuZGVyIC4uL3N1cHBvcnQvbmZzLy5saWJzLyBub3csCi11cGRhdGUgdGhlIHJlZmVyZW5jZSBwYXRoIGFjY29yZGluZ2x5IHRvIGZpeCBiZWxvdwotYnVpbGQgZXJyb3Igd2hlbiBydW4gIm1ha2UgLUMgdGVzdHMgc3RhdGRiX2R1bXAiOgotfCBtYWtlOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnLi4vc3VwcG9ydC9uZnMvbGlibmZzLmEnLCBuZWVkZWQgYnkgJ3N0YXRkYl9kdW1wJy4gIFN0b3AuCi0KLUFuZCBiZWxvdyBlcnJvciB3aGVuIHJ1biAibWFrZSAtQyB0ZXN0cy9uc21fY2xpZW50IG5zbV9jbGllbnQiCi18IG1ha2U6ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICcuLi8uLi9zdXBwb3J0L25mcy9saWJuZnMuYScsIG5lZWRlZCBieSAnbnNtX2NsaWVudCcuICBTdG9wLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZFtodHRwczovL21hcmMuaW5mby8/bD1saW51eC1uZnMmbT0xNTQ1MDI2MzY1MjI3NDUmdz0yXQotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICB8IDIgKy0KLSB0ZXN0cy9uc21fY2xpZW50L01ha2VmaWxlLmFtIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggMWY5NjI2NC4uNzRhYTYyOSAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTMsNyArMyw3IEBACi0gY2hlY2tfUFJPR1JBTVMgPSBzdGF0ZGJfZHVtcAotIHN0YXRkYl9kdW1wX1NPVVJDRVMgPSBzdGF0ZGJfZHVtcC5jCi0gCi0tc3RhdGRiX2R1bXBfTERBREQgPSAuLi9zdXBwb3J0L25mcy9saWJuZnMuYSBcCi0rc3RhdGRiX2R1bXBfTERBREQgPSAuLi9zdXBwb3J0L25mcy8ubGlicy9saWJuZnMuYSBcCi0gCQkgICAgLi4vc3VwcG9ydC9uc20vbGlibnNtLmEgJChMSUJDQVApCi0gCi0gU1VCRElSUyA9IG5zbV9jbGllbnQKLWRpZmYgLS1naXQgYS90ZXN0cy9uc21fY2xpZW50L01ha2VmaWxlLmFtIGIvdGVzdHMvbnNtX2NsaWVudC9NYWtlZmlsZS5hbQotaW5kZXggYThmYzEzMS4uNDNkYjljMiAxMDA2NDQKLS0tLSBhL3Rlc3RzL25zbV9jbGllbnQvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzL25zbV9jbGllbnQvTWFrZWZpbGUuYW0KLUBAIC0xMyw3ICsxMyw3IEBAIGNoZWNrX1BST0dSQU1TCT0gbnNtX2NsaWVudAotIG5zbV9jbGllbnRfU09VUkNFUyA9ICQoR0VORklMRVMpIG5zbV9jbGllbnQuYwotIAotIEJVSUxUX1NPVVJDRVMgPSAkKEdFTkZJTEVTKQotLW5zbV9jbGllbnRfTERBREQgPSAuLi8uLi9zdXBwb3J0L25mcy9saWJuZnMuYSBcCi0rbnNtX2NsaWVudF9MREFERCA9IC4uLy4uL3N1cHBvcnQvbmZzLy5saWJzL2xpYm5mcy5hIFwKLSAJCSAgIC4uLy4uL3N1cHBvcnQvbnNtL2xpYm5zbS5hICQoTElCQ0FQKSAkKExJQlRJUlBDKQotIAotIGlmIENPTkZJR19SUENHRU4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWZhdGFsaXplLVdtaXNzaW5nLXByb3RvdHlwZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaAppbmRleCAxN2FhYmI5Li5kMTRmMDc4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaApAQCAtMjYsMTggKzI2LDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGU4MmZmMTQuLmQwY2M1ZDUgMTAwNjQ0CitpbmRleCA1MDAwMmI0Li5hZWJmZjAxIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC01NDgsNyArNTQ4LDcgQEAgbXlfYW1fY2ZsYWdzPSJcCitAQCAtNTgyLDcgKzU4Miw3IEBAIG15X2FtX2NmbGFncz0iXAogICAtV2FsbCBcCiAgIC1XZXh0cmEgXAotICAtV2Vycm9yPXN0cmljdC1wcm90b3R5cGVzIFwKKyAgJHJwY2dlbl9jZmxhZ3MgXAogLSAtV2Vycm9yPW1pc3NpbmctcHJvdG90eXBlcyBcCiArIC1XbWlzc2luZy1wcm90b3R5cGVzIFwKICAgLVdlcnJvcj1taXNzaW5nLWRlY2xhcmF0aW9ucyBcCiAgIC1XZXJyb3I9Zm9ybWF0PTIgXAogICAtV2Vycm9yPXVuZGVmIFwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaAppbmRleCA4MjI5MzlmLi5mMTNkN2IzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaApAQCAtMTIsMjAgKzEyLDI4IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXQogCiBTaWduZWQtb2ZmLWJ5OiBVbHJpY2ggw5ZsbWFubiA8dS5vZWxtYW5uQHBlbmd1dHJvbml4LmRlPgotLS0tCi0gdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBuZnMtdXRpbHMtMi4xLjEvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4xLjEub3JpZy91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZAotKysrIG5mcy11dGlscy0yLjEuMS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZAotQEAgLTI4LDcgKzI4LDcgQEAgZmkKK1JlYmFzZSBpdC4KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyB1dGlscy9zdGF0ZC9zdGFydC1zdGF0ZCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZCBiL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCitpbmRleCBhZjVjOTUwLi5kZjliOWJlIDEwMDc1NQorLS0tIGEvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKKysrKyBiL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCitAQCAtMjgsMTAgKzI4LDEwIEBAIGZpCiAgIyBGaXJzdCB0cnkgc3lzdGVtZCBpZiBpdCdzIGluc3RhbGxlZC4KICBpZiBbIC1kIC9ydW4vc3lzdGVtZC9zeXN0ZW0gXTsgdGhlbgogICAgICAjIFF1aXQgb25seSBpZiB0aGUgY2FsbCB3b3JrZWQuCi0tICAgIHN5c3RlbWN0bCBzdGFydCBycGMtc3RhdGQuc2VydmljZSAmJiBleGl0Ci0rICAgIHN5c3RlbWN0bCBzdGFydCBuZnMtc3RhdGQuc2VydmljZSAmJiBleGl0CistICAgIGlmIHN5c3RlbWN0bCBzdGFydCBycGMtc3RhdGQuc2VydmljZTsgdGhlbgorKyAgICBpZiBzeXN0ZW1jdGwgc3RhcnQgbmZzLXN0YXRkLnNlcnZpY2U7IHRoZW4KKyAgICAgICAgICMgRW5zdXJlIHN5c3RlbWQga25vd3Mgbm90IHRvIHN0b3AgcnBjLnN0YXRkIG9yIGl0cyBkZXBlbmRlbmNpZXMKKyAgICAgICAgICMgb24gJ3N5c3RlbWN0bCBpc29sYXRlIC4uJworLSAgICAgICAgc3lzdGVtY3RsIGFkZC13YW50cyAtLXJ1bnRpbWUgcmVtb3RlLWZzLnRhcmdldCBycGMtc3RhdGQuc2VydmljZQorKyAgICAgICAgc3lzdGVtY3RsIGFkZC13YW50cyAtLXJ1bnRpbWUgcmVtb3RlLWZzLnRhcmdldCBuZnMtc3RhdGQuc2VydmljZQorICAgICAgICAgZXhpdCAwCisgICAgIGZpCiAgZmkKLSAKLSBjZCAvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1saW1pdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1saW1pdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1Y2E0MTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtbGltaXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLUZpeGVkOgotfCBmaWxlLmM6IEluIGZ1bmN0aW9uICdnZW5lcmljX21ha2VfcGF0aG5hbWUnOgotfCBmaWxlLmM6NDg6MTM6IGVycm9yOiAnUEFUSF9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdSQU5EX01BWCc/Ci18ICAgaWYgKHNpemUgPiBQQVRIX01BWCkKLXwgICAgICAgICAgICAgIF5+fn5+fn5+Ci1bc25pcF0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdC5hbHBpbmVsaW51eC5vcmcvY2dpdC9hcG9ydHMvdHJlZS9tYWluL25mcy11dGlscy9saW1pdHMucGF0Y2g/aWQ9ZjY3MzRhNzdkM2NhZWU3MzMyNWY4Y2MxZjc3ZDFiNTExN2E3NTA5Nl0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzdXBwb3J0L2V4cG9ydC9leHBvcnQuYyAgICAgICAgICB8IDEgKwotIHN1cHBvcnQvZXhwb3J0L3h0YWIuYyAgICAgICAgICAgIHwgMSArCi0gc3VwcG9ydC9taXNjL2ZpbGUuYyAgICAgICAgICAgICAgfCAxICsKLSBzdXBwb3J0L25mcy94Y29tbW9uLmMgICAgICAgICAgICB8IDEgKwotIHN1cHBvcnQvbnNtL2ZpbGUuYyAgICAgICAgICAgICAgIHwgMSArCi0gdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMgfCAxICsKLSB1dGlscy9nc3NkL2tyYjVfdXRpbC5jICAgICAgICAgICB8IDEgKwotIHV0aWxzL21vdW50ZC9jYWNoZS5jICAgICAgICAgICAgIHwgMSArCi0gdXRpbHMvbW91bnRkL21vdW50ZC5jICAgICAgICAgICAgfCAxICsKLSB1dGlscy9tb3VudGQvcm10YWIuYyAgICAgICAgICAgICB8IDEgKwotIDEwIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3N1cHBvcnQvZXhwb3J0L2V4cG9ydC5jIGIvc3VwcG9ydC9leHBvcnQvZXhwb3J0LmMKLS0tLSBhL3N1cHBvcnQvZXhwb3J0L2V4cG9ydC5jCi0rKysgYi9zdXBwb3J0L2V4cG9ydC9leHBvcnQuYwotQEAgLTE3LDYgKzE3LDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSAieG1hbGxvYy5oIgotICNpbmNsdWRlICJuZnNsaWIuaCIKLSAjaW5jbHVkZSAiZXhwb3J0ZnMuaCIKLWRpZmYgLS1naXQgYS9zdXBwb3J0L2V4cG9ydC94dGFiLmMgYi9zdXBwb3J0L2V4cG9ydC94dGFiLmMKLS0tLSBhL3N1cHBvcnQvZXhwb3J0L3h0YWIuYwotKysrIGIvc3VwcG9ydC9leHBvcnQveHRhYi5jCi1AQCAtMTgsNiArMTgsNyBAQAotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxsaWJnZW4uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgIm5mc2xpYi5oIgotICNpbmNsdWRlICJleHBvcnRmcy5oIgotZGlmZiAtLWdpdCBhL3N1cHBvcnQvbWlzYy9maWxlLmMgYi9zdXBwb3J0L21pc2MvZmlsZS5jCi0tLS0gYS9zdXBwb3J0L21pc2MvZmlsZS5jCi0rKysgYi9zdXBwb3J0L21pc2MvZmlsZS5jCi1AQCAtMjcsNiArMjcsNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgInhsb2cuaCIKLSAjaW5jbHVkZSAibWlzYy5oIgotZGlmZiAtLWdpdCBhL3N1cHBvcnQvbmZzL3hjb21tb24uYyBiL3N1cHBvcnQvbmZzL3hjb21tb24uYwotLS0tIGEvc3VwcG9ydC9uZnMveGNvbW1vbi5jCi0rKysgYi9zdXBwb3J0L25mcy94Y29tbW9uLmMKLUBAIC0xNiw2ICsxNiw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgInhjb21tb24uaCIKLSAjaW5jbHVkZSAibmxzLmgiCS8qIF8oKSAqLwotZGlmZiAtLWdpdCBhL3N1cHBvcnQvbnNtL2ZpbGUuYyBiL3N1cHBvcnQvbnNtL2ZpbGUuYwotLS0tIGEvc3VwcG9ydC9uc20vZmlsZS5jCi0rKysgYi9zdXBwb3J0L25zbS9maWxlLmMKLUBAIC04NSw2ICs4NSw3IEBACi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxncnAuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgInhsb2cuaCIKLSAjaW5jbHVkZSAibnNtLmgiCi1kaWZmIC0tZ2l0IGEvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMgYi91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYwotLS0tIGEvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMKLSsrKyBiL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jCi1AQCAtNDksNiArNDksNyBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8bGliZ2VuLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxsaWJkZXZtYXBwZXIuaD4KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotZGlmZiAtLWdpdCBhL3V0aWxzL2dzc2Qva3JiNV91dGlsLmMgYi91dGlscy9nc3NkL2tyYjVfdXRpbC5jCi0tLS0gYS91dGlscy9nc3NkL2tyYjVfdXRpbC5jCi0rKysgYi91dGlscy9nc3NkL2tyYjVfdXRpbC5jCi1AQCAtMTIwLDYgKzEyMCw3IEBACi0gI2VuZGlmCi0gI2luY2x1ZGUgPGtyYjUuaD4KLSAjaW5jbHVkZSA8cnBjL2F1dGhfZ3NzLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotIAotICNpbmNsdWRlICJnc3NkLmgiCi0gI2luY2x1ZGUgImVycl91dGlsLmgiCi1kaWZmIC0tZ2l0IGEvdXRpbHMvbW91bnRkL2NhY2hlLmMgYi91dGlscy9tb3VudGQvY2FjaGUuYwotLS0tIGEvdXRpbHMvbW91bnRkL2NhY2hlLmMKLSsrKyBiL3V0aWxzL21vdW50ZC9jYWNoZS5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxwd2QuaD4KLSAjaW5jbHVkZSA8Z3JwLmg+Ci0gI2luY2x1ZGUgPG1udGVudC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSAibWlzYy5oIgotICNpbmNsdWRlICJuZnNsaWIuaCIKLSAjaW5jbHVkZSAiZXhwb3J0ZnMuaCIKLWRpZmYgLS1naXQgYS91dGlscy9tb3VudGQvbW91bnRkLmMgYi91dGlscy9tb3VudGQvbW91bnRkLmMKLS0tLSBhL3V0aWxzL21vdW50ZC9tb3VudGQuYwotKysrIGIvdXRpbHMvbW91bnRkL21vdW50ZC5jCi1AQCAtMjIsNiArMjIsNyBAQAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgImNvbmZmaWxlLmgiCi0gI2luY2x1ZGUgInhtYWxsb2MuaCIKLWRpZmYgLS1naXQgYS91dGlscy9tb3VudGQvcm10YWIuYyBiL3V0aWxzL21vdW50ZC9ybXRhYi5jCi0tLS0gYS91dGlscy9tb3VudGQvcm10YWIuYwotKysrIGIvdXRpbHMvbW91bnRkL3JtdGFiLmMKLUBAIC0xNiw2ICsxNiw3IEBACi0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0gI2luY2x1ZGUgPG5ldGRiLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotIAotICNpbmNsdWRlICJtaXNjLmgiCi0gI2luY2x1ZGUgImV4cG9ydGZzLmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2gKaW5kZXggMjIwMDJmYS4uOTIxZjVlZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaApAQCAtMTEsMzAgKzExLDE5IEBACiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIAogLS0tCi0gY29uZmlndXJlLmFjIHwgMTMgKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmFjIHwgOSArKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyNzZkZWMzLi43NjAyMzhiIDEwMDY0NAoraW5kZXggNTAwMDJiNC4uZGNhZGIyMyAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDA4LDcgKzQwOCw3IEBAIGlmIHRlc3QgIiRlbmFibGVfZ3NzIiA9IHllczsgdGhlbgotIGZpCi0gCi0gZG5sIGxpYmRuc2lkbWFwIHNwZWNpZmljIGNoZWNrcwotLUFDX0NIRUNLX0xJQihbcmVzb2x2XSwgW19fcmVzX3F1ZXJ5ZG9tYWluXSwgLCBBQ19NU0dfRVJST1IocmVzX3F1ZXJ5ZG9tYWluIG5lZWRlZCkpCi0rQUNfQ0hFQ0tfTElCKFtyZXNvbHZdLCBbcmVzX3F1ZXJ5ZG9tYWluXSwgLCBBQ19NU0dfRVJST1IocmVzX3F1ZXJ5ZG9tYWluIG5lZWRlZCkpCi0gCi0gQUNfQVJHX0VOQUJMRShbbGRhcF0sCi0gCVtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxkYXBdLFtEaXNhYmxlIHN1cHBvcnQgZm9yIExEQVAgQDw6ZGVmYXVsdD1kZXRlY3RAOj5AXSldKQotQEAgLTU0NywxMSArNTQ3LDExIEBAIG15X2FtX2NmbGFncz0iXAotICAtcGlwZSBcCitAQCAtNTgyLDEwICs1ODIsMTAgQEAgbXlfYW1fY2ZsYWdzPSJcCiAgIC1XYWxsIFwKICAgLVdleHRyYSBcCi0tIC1XZXJyb3I9c3RyaWN0LXByb3RvdHlwZXMgXAorICAkcnBjZ2VuX2NmbGFncyBcCiAtIC1XZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzIFwKIC0gLVdlcnJvcj1taXNzaW5nLWRlY2xhcmF0aW9ucyBcCi0rIC1Xc3RyaWN0LXByb3RvdHlwZXMgXAogKyAtV21pc3NpbmctcHJvdG90eXBlcyBcCiArIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgXAogICAtV2Vycm9yPWZvcm1hdD0yIFwKQEAgLTQzLDcgKzMyLDcgQEAKICAgLVdlcnJvcj1taXNzaW5nLWluY2x1ZGUtZGlycyBcCiAgIC1XZXJyb3I9c3RyaWN0LWFsaWFzaW5nPTIgXAogICAtV2Vycm9yPWluaXQtc2VsZiBcCi1AQCAtNTc5LDEwICs1NzksOSBAQCBBQ19ERUZVTihbQ0hFQ0tfQ0NTVVBQT1JUXSwgWworQEAgLTYxNCwxMCArNjE0LDkgQEAgQUNfREVGVU4oW0NIRUNLX0NDU1VQUE9SVF0sIFsKICAKICBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9Zm9ybWF0LW92ZXJmbG93PTJdLCBbZmxnMV0pCiAgQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWludC1jb252ZXJzaW9uXSwgW2ZsZzJdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4zLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjMuMy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjEuYmIKaW5kZXggMjhmOTg5OC4uOGI2NzNjOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4zLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjEuYmIKQEAgLTI4LDE5ICsyOCwxNiBAQAogICAgICAgICAgICBmaWxlOi8vcHJvYy1mcy1uZnNkLm1vdW50IFwKICAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLW11c2wtbGltaXRzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY2FjaGVpby11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1JTy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1wYXNzLW51bGwtcG9pbnRlci10by1mcmVlYWRkcmluZm8ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vY2xhbmctZm9ybWF0LXN0cmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLXVwZGF0ZS10aGUtcGF0aC1vZi1saWJuZnMuYS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtdG9vbHMtd2l0aC1DQ19GT1JfQlVJTEQucGF0Y2ggXAogIgogU1JDX1VSSV9hcHBlbmRfbGliYy1nbGliYyA9ICIgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoIgogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYjZjOWMwMzI5OTVhZjFjMDhmZWE5ZmJjYzFjZTMzZTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjY4YjM0NzkzODMxYjA1ZjFmZDU3NjBkNmJkZWM5Mjc3MmM3Njg0MTc3NTg2YTk5YTYxZTdiNDQ0ZjMzNjMyMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNjFlZmU0NjllYzFiMDZmMWM3NTBiZDg3ZjhiYTZkZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NTI3NGFkYTk0NDc5YjFiZWJhOWY4ZWVmZmQxOWY0NzdjNTNhNjcxMGI5OTk4ZDExOTJjODA3ODU0MDg3NzM2IgogCiAjIE9ubHkga2VybmVsLW1vZHVsZS1uZnNkIGlzIHJlcXVpcmVkIGhlcmUgKGJ1dCBjYW4gYmUgYnVpbHQtaW4pICAtIHRoZSBuZnNkIG1vZHVsZSB3aWxsCiAjIHB1bGwgaW4gdGhlIHJlbWFpbmRlciBvZiB0aGUgZGVwZW5kZW5jaWVzLgpAQCAtMTA4LDkgKzEwNSw2IEBACiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKICAgICAgICAgICAgICR7U30vdXRpbHMvbW91bnQvTWFrZWZpbGUuYW0KLQotICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAotICAgICAgICAgICAgJHtTfS91dGlscy9vc2RfbG9naW4vTWFrZWZpbGUuYW0KIH0KIAogIyBNYWtlIGNsZWFuIG5lZWRlZCBiZWNhdXNlIHRoZSBwYWNrYWdlIGNvbWVzIHdpdGgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgppbmRleCA0YjQwMjdmLi4yYjFmMjE3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXNfMy4wLjE0LmJiCkBAIC0xMjksNyArMTI5LDYgQEAKIAlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaGVsbHMgJHtEfSR7c3lzY29uZmRpcn0vc2hlbGxzCiAJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2hhcmUvZG90LnByb2ZpbGUgJHtEfSR7c3lzY29uZmRpcn0vc2tlbC8ucHJvZmlsZQogCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3NoYXJlL2RvdC5iYXNocmMgJHtEfSR7c3lzY29uZmRpcn0vc2tlbC8uYmFzaHJjCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnNzd2l0Y2guY29uZiAke0R9JHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCiAJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaG9zdC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2hvc3QuY29uZgogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L21vdGQgJHtEfSR7c3lzY29uZmRpcn0vbW90ZAogCkBAIC0xNDIsNiArMTQxLDEwIEBACiAJZmkKIH0KIAorZG9faW5zdGFsbF9hcHBlbmRfbGliYy1nbGliYyAoKSB7CisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnNzd2l0Y2guY29uZiAke0R9JHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKIERJU1RST19WRVJTSU9OW3ZhcmRlcHNleGNsdWRlXSArPSAiREFURSIKIGRvX2luc3RhbGxfYmFzZWZpbGVzaXNzdWUgKCkgewogCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vaXNzdWUqICAke0R9JHtzeXNjb25mZGlyfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLmluYwppbmRleCBkY2JkYTc0Li43MjY5ODg4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLmluYwpAQCAtNzAsOCArNzAsMTMgQEAKIAlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kcm9wYmVhci5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZHJvcGJlYXIKIAogCWluc3RhbGwgLW0gMDc1NSBkcm9wYmVhcm11bHRpICR7RH0ke3NiaW5kaXJ9LwotCWxuIC1zICR7c2JpbmRpcn0vZHJvcGJlYXJtdWx0aSAke0R9JHtiaW5kaXJ9L2RiY2xpZW50CiAKKwlmb3IgaSBpbiAke0JJTkNPTU1BTkRTfQorCWRvCisJCSMgc3NoIGFuZCBzY3Agc3ltbGlua3MgYXJlIGNyZWF0ZWQgYnkgdXBkYXRlLWFsdGVybmF0aXZlcworCQlpZiBbICRpID0gc3NoIF0gfHwgWyAkaSA9IHNjcCBdOyB0aGVuIGNvbnRpbnVlOyBmaQorCQlsbiAtcyAke3NiaW5kaXJ9L2Ryb3BiZWFybXVsdGkgJHtEfSR7YmluZGlyfS8kaQorCWRvbmUKIAlmb3IgaSBpbiAke1NCSU5DT01NQU5EU30KIAlkbwogCQlsbiAtcyAuL2Ryb3BiZWFybXVsdGkgJHtEfSR7c2JpbmRpcn0vJGkKQEAgLTEwMSw3ICsxMDYsNyBAQAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAic2NwIHNzaCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmZpbHRlcignQklOQ09NTUFORFMnLCAnc2NwIHNzaCcsIGQpfSIKIAogQUxURVJOQVRJVkVfVEFSR0VUID0gIiR7c2JpbmRpcn0vZHJvcGJlYXJtdWx0aSIKIApAQCAtMTEzLDMgKzExOCw1IEBACiAgICAgICAgIHJtICR7c3lzY29uZmRpcn0vZHJvcGJlYXIvZHJvcGJlYXJfZHNzX2hvc3Rfa2V5CiAgIGZpCiB9CisKK0ZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC4yMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjIyLmJiCnNpbWlsYXJpdHkgaW5kZXggODMlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjIxLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC4yMi5iYgppbmRleCA0ODdmYmNjLi5iMzk0MmZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC4yMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC4yMi5iYgpAQCAtMTQsOCArMTQsOCBAQAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9taXJyb3JzLmVkZ2Uua2VybmVsLm9yZy9wdWIvbGludXgvbGlicy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmOTRmOGM4MTJiMDQyNmIwYzMwYjY1MWZhNTE0MmRkOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMGRiNGUzMDU3YmE0MTAzNTYzNzM1NGI2YWYyYWE0Yzc0ZjgzNTA5ZTBjM2U1NjNkNjgyZGY5ZDcyZWFmZjE3IgorU1JDX1VSSVttZDVzdW1dID0gImE0ZTdkNzQ0MDRmMTFlNzE3NzViODlmNTNhOGYxYzMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjMWQ2ZDk5N2UxN2RmY2JlNGViY2QxMzMxZDlhN2JlNWM2NGYyZjBhMDgxM2JjMjIzNzkwZTU3MGQ4ZGEyZTMiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKICAgICBta2RpciAtcCAke1N9L2J1aWxkLWF1eApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYwLjMuYmIKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjAuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjAuMy5iYgppbmRleCA0ZDRmZTY0Li5kODkzYjdhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42MC4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYwLjMuYmIKQEAgLTksOCArOSw4IEBACiBTRUNUSU9OID0gImxpYnMiCiBERVBFTkRTID0gImdsaWItMi4wIgogCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiZjQ2ZDEyMDhhYzAwZDc4YTQ1ZmJmNjIxZDQ1OTAyNSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImMwMjJmM2QxMGY1NWE1YjdjMzE2NzZmYjAwMWI0Y2I2NDAxZGI4YWI5ZjZlODQxOGM2OWRlMDBkMGYyNjg3MzIiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlOGZkMDQ2MmE4MjI2OWZiNGJiZDZjMDdhMWU3ZDBmNCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ1MDE4MzA0NmE0ZmY5NTVkOGNjN2U5NTMwNjdjZGZjOTRmMTRkYmZkYTMwMjRiZjM3N2ZmMzdhMzEyMWRjZDUiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCmluZGV4IGY3OTY4NzYuLjliMWU3YjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYwpAQCAtODgsMTQgKzg4LDcgQEAKIAkJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZgogCQlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2xkY29uZmlnCiAJCSMgVGhpcyBkaXJlY3Rvcnkgd2lsbCBiZSBlbXB0eSBub3cgc28gcmVtb3ZlIGl0IHRvby4KLQkJIyBCdXQgY2hlY2sgd2hldGhlciBpdCBleGlzdHMgZmlyc3QsIHNpbmNlIGl0IHdvbid0IGZvciBnbGliYy1pbml0aWFsLgotCQlpZiBbIC1kICR7RH0ke3N5c2NvbmZkaXJ9IF07IHRoZW4KLQkJCXJtZGlyICR7RH0ke3N5c2NvbmZkaXJ9Ci0JCWZpCi0JZmkKLQotCWlmIGVjaG8gJHtQTn18Z3JlcCAtcSAiZ2xpYmMtaW5pdGlhbCI7IHRoZW4KLQkJcmV0dXJuCisJCXJtZGlyICR7RH0ke3N5c2NvbmZkaXJ9CiAJZmkKIAogCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGZhOGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMC5iYgpAQCAtMCwwICsxLDUzIEBACityZXF1aXJlIGdsaWJjXyR7UFZ9LmJiCisKKyMgaGFuZGxlIFBOIGRpZmZlcmVuY2VzCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9nbGliYzoiCisKKyMgc3RyaXAgcHJvdmlkZXMKK1BST1ZJREVTID0gIiIKKyMgc2V0dXAgZGVwZW5kcworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiIgorCitERVBFTkRTICs9ICJnbGliYy1sb2NhbGUgbGliZ2NjIGdjYy1ydW50aW1lIgorCisjIHJlbW92ZSB0aGUgaW5pdGlhbCBkZXBlbmRzCitERVBFTkRTX3JlbW92ZSA9ICJsaWJnY2MtaW5pdGlhbCIKKworaW5oZXJpdCBxZW11CisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jaGVjay10ZXN0LXdyYXBwZXIiCisKK0RFUEVORFMgKz0gIiR7QCdxZW11LW5hdGl2ZScgaWYgZC5nZXRWYXIoJ1RPT0xDSEFJTl9URVNUX1RBUkdFVCcpID09ICd1c2VyJyBlbHNlICcnfSIKKworVE9PTENIQUlOX1RFU1RfVEFSR0VUID8/PSAidXNlciIKK1RPT0xDSEFJTl9URVNUX0hPU1QgPz89ICJsb2NhbGhvc3QiCitUT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVIgPz89ICJyb290IgorVE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUID8/PSAiMjIyMiIKKworZG9fY2hlY2tbZGlyc10gKz0gIiR7Qn0iCitkb19jaGVja1tub3N0YW1wXSA9ICIxIgorZG9fY2hlY2sgKCkgeworICAgIGNobW9kIDA3NTUgJHtXT1JLRElSfS9jaGVjay10ZXN0LXdyYXBwZXIKKworICAgICMgY2xlYW4gb3V0IHByZXZpb3VzIHRlc3QgcmVzdWx0cworICAgIG9lX3J1bm1ha2UgdGVzdHMtY2xlYW4KKyAgICAjIG1ha2VmaWxlcyBkb24ndCBjbGVhbiBlbnRpcmVseSAoYW5kIGFsc28gc29tZXRpbWVzIGZhaWxzIGR1ZSB0byB0b28gbWFueSBhcmdzKQorICAgIGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICIqLm91dCIgLWRlbGV0ZQorICAgIGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICIqLnRlc3QtcmVzdWx0IiAtZGVsZXRlCisgICAgZmluZCAke0J9L2NhdGdldHMgLW5hbWUgIiouY2F0IiAtZGVsZXRlCisgICAgZmluZCAke0J9L2NvbmZvcm0gLW5hbWUgInN5bWxpc3QtKiIgLWRlbGV0ZQorICAgIFsgISAtZSAke0J9L3RpbWV6b25lL3Rlc3RkYXRhIF0gfHwgcm0gLXJmICR7Qn0vdGltZXpvbmUvdGVzdGRhdGEKKworICAgIG9lX3J1bm1ha2UgLWkgXAorICAgICAgICBRRU1VX1NZU1JPT1Q9IiR7UkVDSVBFX1NZU1JPT1R9IiBcCisgICAgICAgIFFFTVVfT1BUSU9OUz0iJHtAcWVtdV90YXJnZXRfYmluYXJ5KGQpfSAke1FFTVVfT1BUSU9OU30iIFwKKyAgICAgICAgU1NIX0hPU1Q9IiR7VE9PTENIQUlOX1RFU1RfSE9TVH0iIFwKKyAgICAgICAgU1NIX0hPU1RfVVNFUj0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVJ9IiBcCisgICAgICAgIFNTSF9IT1NUX1BPUlQ9IiR7VE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUfSIgXAorICAgICAgICB0ZXN0LXdyYXBwZXI9IiR7V09SS0RJUn0vY2hlY2stdGVzdC13cmFwcGVyICR7VE9PTENIQUlOX1RFU1RfVEFSR0VUfSIgXAorICAgICAgICBjaGVjaworfQorYWRkdGFzayBkb19jaGVjayBhZnRlciBkb19jb21waWxlCisKK2luaGVyaXQgbm9wYWNrYWdlcworZGVsdGFzayBkb19zdGFzaF9sb2NhbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvY2hlY2stdGVzdC13cmFwcGVyIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9jaGVjay10ZXN0LXdyYXBwZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhlMDRlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvY2hlY2stdGVzdC13cmFwcGVyCkBAIC0wLDAgKzEsNzEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKKworZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKK2FyZ3MgPSBzeXMuYXJndlsxOl0KK3RhcmdldHR5cGUgPSBhcmdzLnBvcCgwKQorCitpZiB0YXJnZXR0eXBlID09ICJ1c2VyIjoKKyAgICBxZW11YXJncyA9IG9zLmVudmlyb24uZ2V0KCJRRU1VX09QVElPTlMiLCAiIikuc3BsaXQoKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhxZW11YXJnc1swXSk6CisgICAgICAgICMgZW5zdXJlIHFlbXUgYXJncyBoYXMgYSB2YWxpZCBhYnNvbHV0ZSBwYXRoCisgICAgICAgIGZvciBpIGluIG9zLmVudmlyb24uZ2V0KCJQQVRIIiwgIiIpLnNwbGl0KCI6Iik6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oaSwgcWVtdWFyZ3NbMF0pKToKKyAgICAgICAgICAgICAgICBxZW11YXJnc1swXSA9IG9zLnBhdGguam9pbihpLCBxZW11YXJnc1swXSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgIHN5c3Jvb3QgPSBvcy5lbnZpcm9uLmdldCgiUUVNVV9TWVNST09UIiwgTm9uZSkKKyAgICBpZiBub3Qgc3lzcm9vdDoKKyAgICAgICAgc3lzLmV4aXQoLTEpCisgICAgbGlicGF0aHMgPSBbc3lzcm9vdCArICIvdXNyL2xpYiIsIHN5c3Jvb3QgKyAiL2xpYiJdCisKKyAgICBpZiBhcmdzWzBdID09ICJlbnYiOgorICAgICAgICBhcmdzLnBvcCgwKQorICAgICAgICBpZiBsZW4oYXJncykgPT0gMDoKKyAgICAgICAgICAgIGFyZ3MgPSBbImVudiJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHByb2Nlc3Mgb3B0aW9ucworICAgICAgICAgICAgd2hpbGUgYXJnc1swXS5zdGFydHN3aXRoKCItIik6CisgICAgICAgICAgICAgICAgb3B0ID0gYXJncy5wb3AoMCkubHN0cmlwKCItIikKKyAgICAgICAgICAgICAgICBpZiAiaSIgaW4gb3B0OgorICAgICAgICAgICAgICAgICAgICBlbnYuY2xlYXIoKQorICAgICAgICAgICAgIyBwcm9jZXNzIGVudmlyb25tZW50IHZhcnMKKyAgICAgICAgICAgIHdoaWxlICI9IiBpbiBhcmdzWzBdOgorICAgICAgICAgICAgICAgIGtleSwgdmFsID0gYXJncy5wb3AoMCkuc3BsaXQoIj0iLCAxKQorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAiTERfTElCUkFSWV9QQVRIIjoKKyAgICAgICAgICAgICAgICAgICAgbGlicGF0aHMgKz0gdmFsLnNwbGl0KCI6IikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBlbnZba2V5XSA9IHZhbAorICAgIGlmIGFyZ3NbMF0gPT0gImNwIjoKKyAgICAgICAgIyBpZ25vcmUgY29waWVzLCB0aGUgZmlsZXN5c3RlbSBpcyB0aGUgc2FtZQorICAgICAgICBzeXMuZXhpdCgwKQorCisgICAgcWVtdWFyZ3MgKz0gWyItTCIsIHN5c3Jvb3RdCisgICAgcWVtdWFyZ3MgKz0gWyItRSIsICJMRF9MSUJSQVJZX1BBVEg9e30iLmZvcm1hdCgiOiIuam9pbihsaWJwYXRocykpXQorICAgIGNvbW1hbmQgPSBxZW11YXJncyArIGFyZ3MKK2VsaWYgdGFyZ2V0dHlwZSA9PSAic3NoIjoKKyAgICBob3N0ID0gb3MuZW52aXJvbi5nZXQoIlNTSF9IT1NUIiwgTm9uZSkKKyAgICB1c2VyID0gb3MuZW52aXJvbi5nZXQoIlNTSF9IT1NUX1VTRVIiLCBOb25lKQorICAgIHBvcnQgPSBvcy5lbnZpcm9uLmdldCgiU1NIX0hPU1RfUE9SVCIsIE5vbmUpCisKKyAgICBjb21tYW5kID0gWyJzc2giLCAiLW8iLCAiVXNlcktub3duSG9zdHNGaWxlPS9kZXYvbnVsbCIsICItbyIsICJTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9bm8iXQorICAgIGlmIHBvcnQ6CisgICAgICAgIGNvbW1hbmQgKz0gWyItcCIsIHN0cihwb3J0KV0KKyAgICBpZiBub3QgaG9zdDoKKyAgICAgICAgc3lzLmV4aXQoLTEpCisgICAgY29tbWFuZCArPSBbInt9QHt9Ii5mb3JtYXQodXNlciwgaG9zdCkgaWYgdXNlciBlbHNlIGhvc3RdCisKKyAgICAjIHdyYXAgYW5kIHJlcGxhY2UgcXVvdGVzIGZvciBjb3JyZWN0IHRyYW5zZm9ybWF0aW9uIG9uIHNzaAorICAgIHdyYXBwZWQgPSAiICIuam9pbihbIid7MH0nIi5mb3JtYXQoaS5yZXBsYWNlKCInIiwgciInXCcnIikpIGZvciBpIGluIFsiY2QiLCBvcy5nZXRjd2QoKV1dKSArICI7ICIKKyAgICB3cmFwcGVkICs9ICIgIi5qb2luKFsiJ3swfSciLmZvcm1hdChpLnJlcGxhY2UoIiciLCByIidcJyciKSkgZm9yIGkgaW4gYXJnc10pCisgICAgY29tbWFuZCArPSBbInNoIiwgIi1jIiwgIlwie31cIiIuZm9ybWF0KHdyYXBwZWQpXQorZWxzZToKKyAgICBzeXMuZXhpdCgtMSkKKwordHJ5OgorICAgIHIgPSBzdWJwcm9jZXNzLnJ1bihjb21tYW5kLCB0aW1lb3V0ID0gMTgwMCwgZW52ID0gZW52KQorICAgIHN5cy5leGl0KHIucmV0dXJuY29kZSkKK2V4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOgorICAgIHN5cy5leGl0KC0xKQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgppbmRleCBlOWNhYzk4Li4zZjFiMWM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKQEAgLTExLDYgKzExLDggQEAKIAogSU1BR0VfRkVBVFVSRVMgKz0gIngxMS1iYXNlIHBhY2thZ2UtbWFuYWdlbWVudCBzcGxhc2giCiAKK1FCX01FTSA9ICcke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICItbSA1MTIiLCAiLW0gMjU2IiwgZCl9JworCiAjIEVuc3VyZSB0aGVyZSdzIGVub3VnaCBzcGFjZSB0byBkbyBhIGNvcmUtaW1hZ2Utc2F0byBidWlsZCwgd2l0aCBybV93b3JrIGVuYWJsZWQKIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSA9ICI0MTk0MzA0MCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9wb3B1bGF0ZS12b2xhdGlsZS5zaAppbmRleCA2Zjk2NWE2Li4xYzUyNWI3IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9wb3B1bGF0ZS12b2xhdGlsZS5zaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9wb3B1bGF0ZS12b2xhdGlsZS5zaApAQCAtODAsNyArODAsNyBAQAogbGlua19maWxlKCkgewogCUVYRUM9IgogCWlmIFsgLUwgXCIkMlwiIF07IHRoZW4KLQkJWyBcIlwkKHJlYWRsaW5rIC1mIFwiJDJcIilcIiAhPSBcIiQxXCIgXSAmJiB7IHJtIC1mIFwiJDJcIjsgbG4gLXNmIFwiJDFcIiBcIiQyXCI7IH07CisJCVsgXCJcJChyZWFkbGluayBcIiQyXCIpXCIgIT0gXCIkMVwiIF0gJiYgeyBybSAtZiBcIiQyXCI7IGxuIC1zZiBcIiQxXCIgXCIkMlwiOyB9OwogCWVsaWYgWyAtZCBcIiQyXCIgXTsgdGhlbgogCQlpZiBhd2sgJ1wkMiA9PSBcIiQyXCIge2V4aXQgMX0nIC9wcm9jL21vdW50czsgdGhlbgogCQkJY3AgLWEgJDIvKiAkMSAyPi9kZXYvbnVsbDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC44LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC42LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC44LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjguYmIKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC42LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjguYmIKaW5kZXggODkzZjVlNy4uMTc4N2Y2OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuOC5iYgpAQCAtMywxNiArMywxNCBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TSU5HO21kNT1iZTI3NWJjN2Y5MTY0MmVmZTc3MDlhOGFlN2ExNDMzYiBcCitMSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TSU5HO21kNT0zYmI2NjE0Y2Y1ODgwY2JmMWI5ZGJkOWUzZDE0NWUyYyBcCiAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKICIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKLVBWID0gIjQuNC42IgotCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgotU1JDUkVWID0gIjM5ODk0Mzc3NGM1ZmYzOGJhZjFiYzVlZTA4ODg1NWZkODk4M2JiMDUiCitTUkNSRVYgPSAiYWNkODQ5OTdhNWE4YjJiYWRkMjhiNzBhNjQyYWJlZTExMjcyZmFkMiIKIFNSQ0JSQU5DSCA/PSAiZGV2ZWxvcCIKIAogUFJPVklERVMgPSAidmlydHVhbC9jcnlwdCIKQEAgLTI2LDggKzI0LDggQEAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIEJVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgotVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSAtV25vLWVycm9yPW1pc3NpbmctYXR0cmlidXRlcyIKLUNQUEZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1Xbm8tZXJyb3I9bWlzc2luZy1hdHRyaWJ1dGVzIgorVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSAtV25vLWVycm9yIgorQ1BQRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLVduby1lcnJvciIKIAogQVBJID0gIi0tZGlzYWJsZS1vYnNvbGV0ZS1hcGkiCiBFWFRSQV9PRUNPTkYgKz0gIiR7QVBJfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgppbmRleCA2NGFlZTZjLi45MzQxYmY1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCkBAIC00LDcgKzQsNyBAQAogcmVxdWlyZSBtdXNsLmluYwogaW5oZXJpdCBsaW51eGxvYWRlcgogCi1TUkNSRVYgPSAiMjllODczN2Y4MWNjYzlmYmFkY2Y2MWE3NTMxOGFhM2QwNTE2YWFmYSIKK1NSQ1JFViA9ICI2YWQ1MTRlNGUyNzhmMGMzYjE4ZWIyZGIxZDQ1NjM4YzlhZjFjMDdmIgogCiBCQVNFVkVSID0gIjEuMS4yMyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgppbmRleCAzYTJmNTBmLi5hYmJlZTE0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgpAQCAtMTAsMTIgKzEwLDYgQEAKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAotIwotIyBTZXQgYnkgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiB3aXRoIHBhY2thZ2VzIGVzc2VudGlhbCBmb3IgZGV2aWNlIGJvb3R1cAotIwotTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMgPz0gIiIKLU1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTID89ICIiCi0KICMgRGlzdHJvIGNhbiBvdmVycmlkZSB0aGUgZm9sbG93aW5nIFZJUlRVQUwtUlVOVElNRSBwcm92aWRlcnM6CiBWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXIgPz0gInVkZXYiCiBWSVJUVUFMLVJVTlRJTUVfa2V5bWFwcyA/PSAia2V5bWFwcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCmluZGV4IGYyMDZjZWUuLjliMGFlMGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgpAQCAtMzcsNyArMzcsNyBAQAogICAgIGUyZnNwcm9ncy10dW5lMmZzIFwKICAgICBoZHBhcm0gXAogICAgIGlwdGFibGVzIFwKLSAgICBsc2IgXAorICAgIGxzYi1yZWxlYXNlIFwKICAgICBtYyBcCiAgICAgbWMtZmlzaCBcCiAgICAgbWMtaGVscGVycyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS9zZXJpYWwtZ2V0dHlALnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS9zZXJpYWwtZ2V0dHlALnNlcnZpY2UKaW5kZXggZThiMDI3ZS4uMTVhZjE2YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkvc2VyaWFsLWdldHR5QC5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5L3NlcmlhbC1nZXR0eUAuc2VydmljZQpAQCAtOSw3ICs5LDggQEAKIERlc2NyaXB0aW9uPVNlcmlhbCBHZXR0eSBvbiAlSQogRG9jdW1lbnRhdGlvbj1tYW46YWdldHR5KDgpIG1hbjpzeXN0ZW1kLWdldHR5LWdlbmVyYXRvcig4KQogRG9jdW1lbnRhdGlvbj1odHRwOi8vMHBvaW50ZXIuZGUvYmxvZy9wcm9qZWN0cy9zZXJpYWwtY29uc29sZS5odG1sCi1CaW5kc1RvPWRldi0laS5kZXZpY2UKK1BhcnRPZj1kZXYtJWkuZGV2aWNlCitDb25kaXRpb25QYXRoRXhpc3RzPS9kZXYvJWkKIEFmdGVyPWRldi0laS5kZXZpY2Ugc3lzdGVtZC11c2VyLXNlc3Npb25zLnNlcnZpY2UgcGx5bW91dGgtcXVpdC13YWl0LnNlcnZpY2UKIEFmdGVyPXJjLWxvY2FsLnNlcnZpY2UKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCmluZGV4IDNhMzUzYjAuLjE5MTI3MTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKQEAgLTE0LDcgKzE0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKIAotU1JDUkVWID0gImRiMmUzNjdiZmMzYjExOTYwOWY4MzdlYjk3M2Q5MTVmNmM1NTBiMmYiCitTUkNSRVYgPSAiZjg3NWRjZWQzMzQ2MjY0MWUxZmI3ODc1ZDJmOWE4Y2Q4ZThjMmZjYyIKIFNSQ0JSQU5DSCA9ICJ2MjQyLXN0YWJsZSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQtc3RhYmxlLmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLXNldC1mcy5maWxlLW1heC1zeXNjdGwtdG8tTE9OR19NQVgtcmF0aGVyLXRoYW4tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLXNldC1mcy5maWxlLW1heC1zeXNjdGwtdG8tTE9OR19NQVgtcmF0aGVyLXRoYW4tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjY0ZjU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1zZXQtZnMuZmlsZS1tYXgtc3lzY3RsLXRvLUxPTkdfTUFYLXJhdGhlci10aGFuLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNmUyZjc4OTQ4NDAzYTRjY2U0NWI5ZTM0MzExYzk1NzdjNjI0ZjA2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExlbm5hcnQgUG9ldHRlcmluZyA8bGVubmFydEBwb2V0dGVyaW5nLm5ldD4KLURhdGU6IE1vbiwgMTcgSnVuIDIwMTkgMTA6NTE6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29yZTogc2V0IGZzLmZpbGUtbWF4IHN5c2N0bCB0byBMT05HX01BWCByYXRoZXIgdGhhbgotIFVMT05HX01BWAotCi1TaW5jZSBrZXJuZWwgNS4yIHRoZSBrZXJuZWwgdGhhbmtmdWxseSByZXR1cm5zIHByb3BlciBlcnJvcnMgd2hlbiB3ZQotd3JpdGUgYSB2YWx1ZSBvdXQgb2YgcmFuZ2UgdG8gdGhlIHN5c2N0bC4gV2hpY2ggaG93ZXZlciBicmVha3Mgd3JpdGluZwotVUxPTkdfTUFYIHRvIHJlcXVlc3QgdGhlIG1heGltdW0gdmFsdWUuIEhlbmNlIGxldCdzIHdyaXRlIHRoZSBuZXcKLW1heGltdW0gdmFsdWUgaW5zdGVhZCwgTE9OR19NQVguCi0KLS9jYyBAYnJhdW5lcgotCi1GaXhlczogIzEyODAzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgU2NoaWZmZXIgPG1hdHRoaWFzLnNjaGlmZmVyQGV3LnRxLWdyb3VwLmNvbT4KLS0tLQotIHNyYy9jb3JlL21haW4uYyB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21haW4uYyBiL3NyYy9jb3JlL21haW4uYwotaW5kZXggYjMzZWExYjViNS4uZTdmNTE4MTVmMCAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL21haW4uYwotKysrIGIvc3JjL2NvcmUvbWFpbi5jCi1AQCAtMTI0NSw5ICsxMjQ1LDkgQEAgc3RhdGljIHZvaWQgYnVtcF9maWxlX21heF9hbmRfbnJfb3Blbih2b2lkKSB7Ci0gI2VuZGlmCi0gCi0gI2lmIEJVTVBfUFJPQ19TWVNfRlNfRklMRV9NQVgKLS0gICAgICAgIC8qIEkgc28gd2FudGVkIHRvIHVzZSBTVFJJTkdJRlkoVUxPTkdfTUFYKSBoZXJlLCBidXQgYWxhcyB3ZSBjYW4ndCBhcyBnbGliYy9nY2MgZGVmaW5lIHRoYXQgYXMKLS0gICAgICAgICAqICIoMHg3ZmZmZmZmZmZmZmZmZmZmTCAqIDJVTCArIDFVTCkiLiBTZXJpb3VzbHkuIPCfmKIgKi8KLS0gICAgICAgIGlmIChhc3ByaW50ZigmdCwgIiVsdVxuIiwgVUxPTkdfTUFYKSA8IDApIHsKLSsgICAgICAgIC8qIFRoZSBtYXhpbXVtIHRoZSBrZXJuZWwgYWxsb3dzIGZvciB0aGlzIHNpbmNlIDUuMiBpcyBMT05HX01BWCwgdXNlIHRoYXQuIChQcmV2aW91c2x5IHRoaW5nIHdoZXJlCi0rICAgICAgICAgKiBkaWZmZXJlbnQgYnV0IHRoZSBvcGVyYXRpb24gd291bGQgZmFpbCBzaWxlbnRseS4pICovCi0rICAgICAgICBpZiAoYXNwcmludGYoJnQsICIlbGlcbiIsIExPTkdfTUFYKSA8IDApIHsKLSAgICAgICAgICAgICAgICAgbG9nX29vbSgpOwotICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW5ldHdvcmtkLWZpeC1saW5rLXVwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1uZXR3b3JrZC1maXgtbGluay11cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM3YTBhMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW5ldHdvcmtkLWZpeC1saW5rLXVwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotRnJvbSA2YmQ3NmQyZDRmZjEzMGRlY2QzYWExM2UwYzJkYmZkNTZmZjhkN2I3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3VzYW50IFNhaGFuaSA8c3NhaGFuaUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDkgTWF5IDIwMTkgMDc6MzU6MzUgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0d29ya2Q6IGZpeCBsaW5rX3VwKCkgKCMxMjUwNSkKLQotRmlsbHVwIElGTEFfSU5FVDZfQUREUl9HRU5fTU9ERSB3aGlsZSB3ZSBkbyBsaW5rX3VwLgotCi1GaXhlcyB0aGUgZm9sbG93aW5nIGVycm9yOgotYGBgCi1kdW1teS10ZXN0OiBDb3VsZCBub3QgYnJpbmcgdXAgaW50ZXJmYWNlOiBJbnZhbGlkIGFyZ3VtZW50Ci1gYGAKLQotQWZ0ZXIgcmVhZGluZyB0aGUga2VybmVsIGNvZGUgd2hlbiB3ZSBkbyBhIGxpbmsgdXAKLWBgYAotbmV0L2NvcmUvcnRuZXRsaW5rLmMKLUlGTEFfQUZfU1BFQwotIGFmX29wcy0+c2V0X2xpbmtfYWYoZGV2LCBhZik7Ci0gIGluZXQ2X3NldF9saW5rX2FmCi0gICBpZiAodGJbSUZMQV9JTkVUNl9BRERSX0dFTl9NT0RFXSkKLSAgICAgICAgICAgICBIZXJlIGl0IGxvb2tzIGZvciBJRkxBX0lORVQ2X0FERFJfR0VOX01PREUKLWBgYAotU2luY2UgbGluayB1cCB3ZSBkaWRuJ3QgZmlsbGluZyB1cCB0aGF0IGl0J3MgZmFpbGluZy4KLQotQ2xvc2VzICMxMjUwNC4KLQotU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG9AcmliYWxkYS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0LzRlYjA4NmEzODcxMmVhOThmYWY0MWUwNzViODQ1NTViMTFiNTQzNjIucGF0Y2hdCi0KLS0tLQotIHNyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYyB8IDE1ICsrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLWluZGV4IGU0NjZiOTY3OTIuLjA0MjQ5NjE3M2MgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLSsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwotQEAgLTIwMzQsNiArMjAzNCw4IEBAIHN0YXRpYyBpbnQgbGlua191cChMaW5rICpsaW5rKSB7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAobGlua19pcHY2X2VuYWJsZWQobGluaykpIHsKLSsgICAgICAgICAgICAgICAgdWludDhfdCBpcHY2bGxfbW9kZTsKLSsKLSAgICAgICAgICAgICAgICAgciA9IHNkX25ldGxpbmtfbWVzc2FnZV9vcGVuX2NvbnRhaW5lcihyZXEsIElGTEFfQUZfU1BFQyk7Ci0gICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2xpbmtfZXJyb3JfZXJybm8obGluaywgciwgIkNvdWxkIG5vdCBvcGVuIElGTEFfQUZfU1BFQyBjb250YWluZXI6ICVtIik7Ci1AQCAtMjA0OSw2ICsyMDUxLDE5IEBAIHN0YXRpYyBpbnQgbGlua191cChMaW5rICpsaW5rKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2xpbmtfZXJyb3JfZXJybm8obGluaywgciwgIkNvdWxkIG5vdCBhcHBlbmQgSUZMQV9JTkVUNl9UT0tFTjogJW0iKTsKLSAgICAgICAgICAgICAgICAgfQotIAotKyAgICAgICAgICAgICAgICBpZiAoIWxpbmtfaXB2NmxsX2VuYWJsZWQobGluaykpCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXB2NmxsX21vZGUgPSBJTjZfQUREUl9HRU5fTU9ERV9OT05FOwotKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzeXNjdGxfcmVhZF9pcF9wcm9wZXJ0eShBRl9JTkVUNiwgbGluay0+aWZuYW1lLCAic3RhYmxlX3NlY3JldCIsIE5VTEwpIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgZmlsZSBtYXkgbm90IGV4aXN0LiBBbmQgZXZlbnQgaWYgaXQgZXhpc3RzLCB3aGVuIHN0YWJsZV9zZWNyZXQgaXMgdW5zZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICogcmVhZGluZyB0aGUgZmlsZSBmYWlscyB3aXRoIEVJTy4gKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHY2bGxfbW9kZSA9IElONl9BRERSX0dFTl9NT0RFX0VVSTY0OwotKyAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXB2NmxsX21vZGUgPSBJTjZfQUREUl9HRU5fTU9ERV9TVEFCTEVfUFJJVkFDWTsKLSsKLSsgICAgICAgICAgICAgICAgciA9IHNkX25ldGxpbmtfbWVzc2FnZV9hcHBlbmRfdTgocmVxLCBJRkxBX0lORVQ2X0FERFJfR0VOX01PREUsIGlwdjZsbF9tb2RlKTsKLSsgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfbGlua19lcnJvcl9lcnJubyhsaW5rLCByLCAiQ291bGQgbm90IGFwcGVuZCBJRkxBX0lORVQ2X0FERFJfR0VOX01PREU6ICVtIik7Ci0rCi0gICAgICAgICAgICAgICAgIHIgPSBzZF9uZXRsaW5rX21lc3NhZ2VfY2xvc2VfY29udGFpbmVyKHJlcSk7Ci0gICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2xpbmtfZXJyb3JfZXJybm8obGluaywgciwgIkNvdWxkIG5vdCBjbG9zZSBBRl9JTkVUNiBjb250YWluZXI6ICVtIik7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXJlc29sdmVkLUZpeC1pbmNvcnJlY3QtdXNlLW9mLU9wZW5TU0wtQlVGX01FTS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtcmVzb2x2ZWQtRml4LWluY29ycmVjdC11c2Utb2YtT3BlblNTTC1CVUZfTUVNLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGFlMWRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtcmVzb2x2ZWQtRml4LWluY29ycmVjdC11c2Utb2YtT3BlblNTTC1CVUZfTUVNLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSAxOGJkZGVhYWYyMjVkNWJlY2ZjMTBjZDJjNmExZDAzN2M5MDU3NGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+Ci1EYXRlOiBUdWUsIDExIEp1biAyMDE5IDE1OjEwOjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlc29sdmVkOiBGaXggaW5jb3JyZWN0IHVzZSBvZiBPcGVuU1NMIEJVRl9NRU0KLQotRml4ZXM6ICMxMjc2MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbTm90IHlldCByZWxlYXNlZF0KLSAgaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvMThiZGRlYWFmMjI1ZDViZWNmYzEwY2QyYzZhMWQwMzdjOTA1NzRhMgotU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgotLS0tCi0gc3JjL3Jlc29sdmUvcmVzb2x2ZWQtZG5zdGxzLW9wZW5zc2wuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcmVzb2x2ZS9yZXNvbHZlZC1kbnN0bHMtb3BlbnNzbC5jIGIvc3JjL3Jlc29sdmUvcmVzb2x2ZWQtZG5zdGxzLW9wZW5zc2wuYwotaW5kZXggZjI2OWU0ZDY0ODdmLi41ZDkyMjMwMDc1ODEgMTAwNjQ0Ci0tLS0gYS9zcmMvcmVzb2x2ZS9yZXNvbHZlZC1kbnN0bHMtb3BlbnNzbC5jCi0rKysgYi9zcmMvcmVzb2x2ZS9yZXNvbHZlZC1kbnN0bHMtb3BlbnNzbC5jCi1AQCAtNiw2ICs2LDcgQEAKLSAKLSAjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gI2luY2x1ZGUgImlvLXV0aWwuaCIKLSAjaW5jbHVkZSAicmVzb2x2ZWQtZG5zLXN0cmVhbS5oIgotQEAgLTM0LDkgKzM1LDExIEBAIHN0YXRpYyBpbnQgZG5zdGxzX2ZsdXNoX3dyaXRlX2J1ZmZlcihEbnNTdHJlYW0gKnN0cmVhbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzczsKLSAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPmRuc3Rsc19kYXRhLndyaXRlX2J1ZmZlci0+bGVuZ3RoIC09IHNzOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+ZG5zdGxzX2RhdGEud3JpdGVfYnVmZmVyLT5kYXRhICs9IHNzOwotIAotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJlYW0tPmRuc3Rsc19kYXRhLndyaXRlX2J1ZmZlci0+bGVuZ3RoID4gMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtbW92ZShzdHJlYW0tPmRuc3Rsc19kYXRhLndyaXRlX2J1ZmZlci0+ZGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5kbnN0bHNfZGF0YS53cml0ZV9idWZmZXItPmRhdGEgKyBzcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5kbnN0bHNfZGF0YS53cml0ZV9idWZmZXItPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPmRuc3Rsc19ldmVudHMgfD0gRVBPTExPVVQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVBR0FJTjsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLW5ldHdvcmstZG8tbm90LXNlbmQtaXB2Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItbmV0d29yay1kby1ub3Qtc2VuZC1pcHY2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTY1MzE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItbmV0d29yay1kby1ub3Qtc2VuZC1pcHY2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotRnJvbSBiNWM0ZWI4MTgxMDExMjdhNjA2ODQ5ZTgyMjkzN2IxNWI4NDk3Yzc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWXUgV2F0YW5hYmUgPHdhdGFuYWJlLnl1K2dpdGh1YkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDkgTWF5IDIwMTkgMTQ6Mzk6NDYgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0d29yazogZG8gbm90IHNlbmQgaXB2NiB0b2tlbiB0byBrZXJuZWwKLQotV2UgZGlzYWJsZWQga2VybmVsIFJBIHN1cHBvcnQuIFRoZW4sIHdlIHNob3VsZCBub3Qgc2VuZAotSUZMQV9JTkVUNl9UT0tFTi4KLVRodXMsIHdlIGRvIG5vdCBuZWVkIHRvIHNlbmQgSUZMQV9JTkVUNl9BRERSX0dFTl9NT0RFIHR3aWNlLgotCi1Gb2xsb3ctdXAgZm9yIDBlMmZkYjgzYmI1ZTIyMDQ3ZTBjN2NjMDU4YjQxNWQwZTkzZjAyY2YgYW5kCi00ZWIwODZhMzg3MTJlYTk4ZmFmNDFlMDc1Yjg0NTU1YjExYjU0MzYyLgotCi1TaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkb0ByaWJhbGRhLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvOWY2ZTgyZTZlYjNiNmU3M2Q2NmQwMGQxZDZlZWU2MDY5MWZiNzAyZl0KLQotLS0tCi0gc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jIHwgNTEgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCi1pbmRleCAwNDI0OTYxNzNjLi5jNDlkYmEzM2RhIDEwMDY0NAotLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCi0rKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLUBAIC0xOTQwLDYgKzE5NDAsOSBAQCBzdGF0aWMgaW50IGxpbmtfY29uZmlndXJlX2FkZHJnZW5fbW9kZShMaW5rICpsaW5rKSB7Ci0gICAgICAgICBhc3NlcnQobGluay0+bWFuYWdlcik7Ci0gICAgICAgICBhc3NlcnQobGluay0+bWFuYWdlci0+cnRubCk7Ci0gCi0rICAgICAgICBpZiAoIXNvY2tldF9pcHY2X2lzX3N1cHBvcnRlZCgpKQotKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsKLSAgICAgICAgIGxvZ19saW5rX2RlYnVnKGxpbmssICJTZXR0aW5nIGFkZHJlc3MgZ2VubW9kZSBmb3IgbGluayIpOwotIAotICAgICAgICAgciA9IHNkX3J0bmxfbWVzc2FnZV9uZXdfbGluayhsaW5rLT5tYW5hZ2VyLT5ydG5sLCAmcmVxLCBSVE1fU0VUTElOSywgbGluay0+aWZpbmRleCk7Ci1AQCAtMjAzMyw0NiArMjAzNiw2IEBAIHN0YXRpYyBpbnQgbGlua191cChMaW5rICpsaW5rKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19saW5rX2Vycm9yX2Vycm5vKGxpbmssIHIsICJDb3VsZCBub3Qgc2V0IE1BQyBhZGRyZXNzOiAlbSIpOwotICAgICAgICAgfQotIAotLSAgICAgICAgaWYgKGxpbmtfaXB2Nl9lbmFibGVkKGxpbmspKSB7Ci0tICAgICAgICAgICAgICAgIHVpbnQ4X3QgaXB2NmxsX21vZGU7Ci0tCi0tICAgICAgICAgICAgICAgIHIgPSBzZF9uZXRsaW5rX21lc3NhZ2Vfb3Blbl9jb250YWluZXIocmVxLCBJRkxBX0FGX1NQRUMpOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19saW5rX2Vycm9yX2Vycm5vKGxpbmssIHIsICJDb3VsZCBub3Qgb3BlbiBJRkxBX0FGX1NQRUMgY29udGFpbmVyOiAlbSIpOwotLQotLSAgICAgICAgICAgICAgICAvKiBpZiB0aGUga2VybmVsIGxhY2tzIGlwdjYgc3VwcG9ydCBzZXR0aW5nIElGRl9VUCBmYWlscyBpZiBhbnkgaXB2NiBvcHRpb25zIGFyZSBwYXNzZWQgKi8KLS0gICAgICAgICAgICAgICAgciA9IHNkX25ldGxpbmtfbWVzc2FnZV9vcGVuX2NvbnRhaW5lcihyZXEsIEFGX0lORVQ2KTsKLS0gICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfbGlua19lcnJvcl9lcnJubyhsaW5rLCByLCAiQ291bGQgbm90IG9wZW4gQUZfSU5FVDYgY29udGFpbmVyOiAlbSIpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoIWluX2FkZHJfaXNfbnVsbChBRl9JTkVUNiwgJmxpbmstPm5ldHdvcmstPmlwdjZfdG9rZW4pKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgciA9IHNkX25ldGxpbmtfbWVzc2FnZV9hcHBlbmRfaW42X2FkZHIocmVxLCBJRkxBX0lORVQ2X1RPS0VOLCAmbGluay0+bmV0d29yay0+aXB2Nl90b2tlbi5pbjYpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfbGlua19lcnJvcl9lcnJubyhsaW5rLCByLCAiQ291bGQgbm90IGFwcGVuZCBJRkxBX0lORVQ2X1RPS0VOOiAlbSIpOwotLSAgICAgICAgICAgICAgICB9Ci0tCi0tICAgICAgICAgICAgICAgIGlmICghbGlua19pcHY2bGxfZW5hYmxlZChsaW5rKSkKLS0gICAgICAgICAgICAgICAgICAgICAgICBpcHY2bGxfbW9kZSA9IElONl9BRERSX0dFTl9NT0RFX05PTkU7Ci0tICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN5c2N0bF9yZWFkX2lwX3Byb3BlcnR5KEFGX0lORVQ2LCBsaW5rLT5pZm5hbWUsICJzdGFibGVfc2VjcmV0IiwgTlVMTCkgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBmaWxlIG1heSBub3QgZXhpc3QuIEFuZCBldmVudCBpZiBpdCBleGlzdHMsIHdoZW4gc3RhYmxlX3NlY3JldCBpcyB1bnNldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgKiByZWFkaW5nIHRoZSBmaWxlIGZhaWxzIHdpdGggRUlPLiAqLwotLSAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZsbF9tb2RlID0gSU42X0FERFJfR0VOX01PREVfRVVJNjQ7Ci0tICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgICAgICBpcHY2bGxfbW9kZSA9IElONl9BRERSX0dFTl9NT0RFX1NUQUJMRV9QUklWQUNZOwotLQotLSAgICAgICAgICAgICAgICByID0gc2RfbmV0bGlua19tZXNzYWdlX2FwcGVuZF91OChyZXEsIElGTEFfSU5FVDZfQUREUl9HRU5fTU9ERSwgaXB2NmxsX21vZGUpOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19saW5rX2Vycm9yX2Vycm5vKGxpbmssIHIsICJDb3VsZCBub3QgYXBwZW5kIElGTEFfSU5FVDZfQUREUl9HRU5fTU9ERTogJW0iKTsKLS0KLS0gICAgICAgICAgICAgICAgciA9IHNkX25ldGxpbmtfbWVzc2FnZV9jbG9zZV9jb250YWluZXIocmVxKTsKLS0gICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfbGlua19lcnJvcl9lcnJubyhsaW5rLCByLCAiQ291bGQgbm90IGNsb3NlIEFGX0lORVQ2IGNvbnRhaW5lcjogJW0iKTsKLS0KLS0gICAgICAgICAgICAgICAgciA9IHNkX25ldGxpbmtfbWVzc2FnZV9jbG9zZV9jb250YWluZXIocmVxKTsKLS0gICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfbGlua19lcnJvcl9lcnJubyhsaW5rLCByLCAiQ291bGQgbm90IGNsb3NlIElGTEFfQUZfU1BFQyBjb250YWluZXI6ICVtIik7Ci0tICAgICAgICB9Ci0tCi0gICAgICAgICByID0gbmV0bGlua19jYWxsX2FzeW5jKGxpbmstPm1hbmFnZXItPnJ0bmwsIE5VTEwsIHJlcSwgbGlua191cF9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rX25ldGxpbmtfZGVzdHJveV9jYWxsYmFjaywgbGluayk7Ci0gICAgICAgICBpZiAociA8IDApCi1AQCAtMzIwOCwxMSArMzE3MSw5IEBAIHN0YXRpYyBpbnQgbGlua19jb25maWd1cmUoTGluayAqbGluaykgewotICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAKLS0gICAgICAgIGlmIChzb2NrZXRfaXB2Nl9pc19zdXBwb3J0ZWQoKSkgewotLSAgICAgICAgICAgICAgICByID0gbGlua19jb25maWd1cmVfYWRkcmdlbl9tb2RlKGxpbmspOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0tICAgICAgICB9Ci0rICAgICAgICByID0gbGlua19jb25maWd1cmVfYWRkcmdlbl9tb2RlKGxpbmspOwotKyAgICAgICAgaWYgKHIgPCAwKQotKyAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAKLSAgICAgICAgIHJldHVybiBsaW5rX2NvbmZpZ3VyZV9hZnRlcl9zZXR0aW5nX210dShsaW5rKTsKLSB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LW5ldHdvcmstcmVtb3ZlLXJlZHVuYW50LWxpbmstbmFtZS1pbi1tZXNzYWdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1uZXR3b3JrLXJlbW92ZS1yZWR1bmFudC1saW5rLW5hbWUtaW4tbWVzc2FnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNmNDgyYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LW5ldHdvcmstcmVtb3ZlLXJlZHVuYW50LWxpbmstbmFtZS1pbi1tZXNzYWdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA5ZTY5NDA4NThjN2RiZGQ1NmIyOTdiZGY0OWY1OGQ2MjNlMzQzMGI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1piaWduaWV3PTIwSj1DND05OWRyemVqZXdza2ktU3ptZWs/PSA8emJ5c3pla0Bpbi53YXcucGw+Ci1EYXRlOiBUdWUsIDcgTWF5IDIwMTkgMTM6NDY6NTUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0d29yazogcmVtb3ZlIHJlZHVuYW50IGxpbmsgbmFtZSBpbiBtZXNzYWdlCi0KLUZpeGVzICMxMjQ1NC4KLQotZ2NjIHdhcyBjb21wbGFpbmluZyB0aGF0IHRoZSBsaW5rLT5pZm5hbWUgYXJndW1lbnQgaXMgTlVMTC4gQWRkaW5nCi1hc3NlcnQobGluay0+aWZuYW1lKSByaWdodCBiZWZvcmUgdGhlIGNhbGwgaGFzIG5vIGVmZmVjdC4gSXQgc2VlbXMgdGhhdAotZ2NjIGlzIGNvbmZ1c2VkIGJ5IHRoZSBmYWN0IHRoYXQgbG9nX2xpbmtfd2FybmluZ19lcnJubygpIGludGVybmFsbHkKLWNhbGxzIGxvZ19vYmplY3QoKSwgd2l0aCBsaW5rLT5pZm5hbWUgcGFzc2VkIGFzIHRoZSBvYmplY3QuIGxvZ19vYmplY3QoKQotaXMgYWxzbyBhIG1hY3JvIGFuZCBpcyBkb2VzIGEgY2hlY2sgd2hldGhlciB0aGUgcGFzc2VkIG9iamVjdCBpcyBOVUxMLgotU28gd2UgaGF2ZSBhIGNoZWNrIGlmIHNvbWV0aGluZyBpcyBOVUxMIHJpZ2h0IG5leHQgYW4gdW5jb25kaXRpb25hbCB1c2UKLW9mIGl0IHdoZXJlIGl0IGNhbm5vdCBiZSBOVUxMLiBJIHRoaW5rIGl0J3MgYSBidWcgaW4gZ2NjLgotCi1Bbnl3YXksIHdlIGRvbid0IG5lZWQgdG8gdXNlIGxpbmstPmlmbmFtZSBoZXJlLiBsb2dfb2JqZWN0KCkgYWxyZWFkeSBwcmVwZW5kcwotdGhlIG9iamVjdCBuYW1lIHRvIHRoZSBtZXNzYWdlLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBiYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvYzk4YjM1NDUwMDhkOGU5ODRhYjQ1NmRjZjc5Nzg3NDE4ZmNiZmUxM10KLS0tLQotIHNyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYyB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCi1pbmRleCAzZTMzNGM4ZDI5Li5hMTU4YzAxYmJkIDEwMDY0NAotLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCi0rKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLUBAIC0zMjEsOCArMzIxLDcgQEAgc3RhdGljIGludCBsaW5rX2VuYWJsZV9pcHY2KExpbmsgKmxpbmspIHsKLSAKLSAgICAgICAgIHIgPSBzeXNjdGxfd3JpdGVfaXBfcHJvcGVydHlfYm9vbGVhbihBRl9JTkVUNiwgbGluay0+aWZuYW1lLCAiZGlzYWJsZV9pcHY2IiwgZGlzYWJsZWQpOwotICAgICAgICAgaWYgKHIgPCAwKQotLSAgICAgICAgICAgICAgICBsb2dfbGlua193YXJuaW5nX2Vycm5vKGxpbmssIHIsICJDYW5ub3QgJXMgSVB2NiBmb3IgaW50ZXJmYWNlICVzOiAlbSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX2Rpc2FibGUoIWRpc2FibGVkKSwgbGluay0+aWZuYW1lKTsKLSsgICAgICAgICAgICAgICAgbG9nX2xpbmtfd2FybmluZ19lcnJubyhsaW5rLCByLCAiQ2Fubm90ICVzIElQdjY6ICVtIiwgZW5hYmxlX2Rpc2FibGUoIWRpc2FibGVkKSk7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgIGxvZ19saW5rX2luZm8obGluaywgIklQdjYgc3VjY2Vzc2Z1bGx5ICVzZCIsIGVuYWJsZV9kaXNhYmxlKCFkaXNhYmxlZCkpOwotIAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQyLmJiCmluZGV4IGIzNjhjYTguLjJjMTAxY2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0Mi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDIuYmIKQEAgLTIyLDEyICsyMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDUtcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LW5ldHdvcmstcmVtb3ZlLXJlZHVuYW50LWxpbmstbmFtZS1pbi1tZXNzYWdlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzk5LWRlZmF1bHQucHJlc2V0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVzb2x2ZWQtRml4LWluY29ycmVjdC11c2Utb2YtT3BlblNTTC1CVUZfTUVNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29yZS1zZXQtZnMuZmlsZS1tYXgtc3lzY3RsLXRvLUxPTkdfTUFYLXJhdGhlci10aGFuLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5ldHdvcmtkLWZpeC1saW5rLXVwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbmV0d29yay1kby1ub3Qtc2VuZC1pcHY2LnBhdGNoIFwKICAgICAgICAgICAgIgogCiAjIHBhdGNoZXMgbmVlZGVkIGJ5IG11c2wKQEAgLTg4LDYgKzgzLDcgQEAKICAgICBxdW90YWNoZWNrIFwKICAgICByYW5kb21zZWVkIFwKICAgICByZXNvbHZlZCBcCisgICAgc2V0LXRpbWUtZXBvY2ggXAogICAgIHNtYWNrIFwKICAgICBzeXN1c2VycyBcCiAgICAgdGltZWRhdGVkIFwKQEAgLTE3MSw3ICsxNjcsMTIgQEAKIFBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLURzZWxpbnV4PXRydWUsLURzZWxpbnV4PWZhbHNlLGxpYnNlbGludXgsaW5pdHNjcmlwdHMtc3VzaGVsbCIKIFBBQ0tBR0VDT05GSUdbc21hY2tdID0gIi1Ec21hY2s9dHJ1ZSwtRHNtYWNrPWZhbHNlIgogUEFDS0FHRUNPTkZJR1tzeXN1c2Vyc10gPSAiLURzeXN1c2Vycz10cnVlLC1Ec3lzdXNlcnM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3RpbWUtZXBvY2hdID0gIi1EdGltZS1lcG9jaD0wLCwiCisjIFdoZW4gZW5hYmxlZCB1c2UgcmVwcm9kdWNibGUgYnVpbGQgdGltZXN0YW1wIGlmIHNldCBhcyB0aW1lIGVwb2NoLAorIyBvciBidWlsZCB0aW1lIGlmIG5vdC4gV2hlbiBkaXNhYmxlZCwgdGltZSBlcG9jaCBpcyB1bnNldC4KK2RlZiBidWlsZF9lcG9jaChkKToKKyAgICBlcG9jaCA9IGQuZ2V0VmFyKCdTT1VSQ0VfREFURV9FUE9DSCcpIG9yICItMSIKKyAgICByZXR1cm4gJy1EdGltZS1lcG9jaD0lZCcgJSBpbnQoZXBvY2gpCitQQUNLQUdFQ09ORklHW3NldC10aW1lLWVwb2NoXSA9ICIke0BidWlsZF9lcG9jaChkKX0sLUR0aW1lLWVwb2NoPTAiCiBQQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLUR0aW1lZGF0ZWQ9dHJ1ZSwtRHRpbWVkYXRlZD1mYWxzZSIKIFBBQ0tBR0VDT05GSUdbdGltZXN5bmNkXSA9ICItRHRpbWVzeW5jZD10cnVlLC1EdGltZXN5bmNkPWZhbHNlIgogUEFDS0FHRUNPTkZJR1t1c3JtZXJnZV0gPSAiLURzcGxpdC11c3I9ZmFsc2UsLURzcGxpdC11c3I9dHJ1ZSIKQEAgLTIxMCw2ICsyMTEsNyBAQAogICAgICAgICAgICAgICAgICAgLURxdW90YWNoZWNrLXBhdGg9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKICAgICAgICAgICAgICAgICAgIC1EcXVvdGFvbi1wYXRoPSR7c2JpbmRpcn0vcXVvdGFvbiBcCiAgICAgICAgICAgICAgICAgICAtRHN1bG9naW4tcGF0aD0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiBcCisgICAgICAgICAgICAgICAgICAtRG5vbG9naW4tcGF0aD0ke2Jhc2Vfc2JpbmRpcn0vbm9sb2dpbiBcCiAgICAgICAgICAgICAgICAgICAtRHVtb3VudC1wYXRoPSR7YmFzZV9iaW5kaXJ9L3Vtb3VudCIKIAogZG9faW5zdGFsbCgpIHsKQEAgLTYxOSw2ICs2MjEsMTIgQEAKICAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCiB9CiAKK3B5dGhvbiBkb193YXJuX211c2woKSB7CisgICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpID09ICJtdXNsIjoKKyAgICAgICAgYmIud2FybigiVXNpbmcgc3lzdGVtZCB3aXRoIG11c2wgaXMgbm90IHJlY29tbWVuZGVkIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgdXBzdHJlYW0gYW5kIHNvbWUgcGF0Y2hlcyBhcmUga25vd24gdG8gYmUgcHJvYmxlbWF0aWMuIikKK30KK2FkZHRhc2sgd2Fybl9tdXNsIGJlZm9yZSBkb19jb25maWd1cmUKKwogQUxURVJOQVRJVkVfJHtQTn0gPSAiaGFsdCByZWJvb3Qgc2h1dGRvd24gcG93ZXJvZmYgcnVubGV2ZWwgcmVzb2x2LWNvbmYiCiAKIEFMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlXzIuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy10ZXN0c3VpdGVfMi4zMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2E4ZTdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlXzIuMzIuYmIKQEAgLTAsMCArMSw4NSBAQAorcmVxdWlyZSBiaW51dGlscy5pbmMKK3JlcXVpcmUgYmludXRpbHMtJHtQVn0uaW5jCisKK0JQTiA9ICJiaW51dGlscyIKKworREVQRU5EUyArPSAiZGVqYWdudS1uYXRpdmUgZXhwZWN0LW5hdGl2ZSIKK0RFUEVORFMgKz0gImJpbnV0aWxzLW5hdGl2ZSIKKworZGVsdGFzayBkb19jb21waWxlCitkZWx0YXNrIGRvX2luc3RhbGwKKworaW5oZXJpdCBub3BhY2thZ2VzCisKK2RvX2NvbmZpZ3VyZVtkaXJzXSArPSAiJHtCfS9sZCAke0J9L2JmZCIKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjIGNyZWF0ZSBjb25maWcuaCwgb2UgZW5hYmxlcyBpbml0ZmluaS1hcnJheSBieSBkZWZhdWx0CisgICAgZWNobyAiI2RlZmluZSBIQVZFX0lOSVRGSU5JX0FSUkFZIiA+ICR7Qn0vbGQvY29uZmlnLmgKKyAgICAjIHVzZSB0aGUgYmZkX3N0ZGludC5oIGZyb20gYmludXRpbHMtbmF0aXZlLCB0aGlzIGlzIHRoZSBzYW1lIG9mIHRoZSBvbmUKKyAgICAjIGdlbmVyYXRlZCBieSBiaW51dGlscy1jcm9zcworICAgIGNwICR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfS91c3IvaW5jbHVkZS9iZmRfc3RkaW50LmggJHtCfS9iZmQvCit9CisKKyMgdGFyZ2V0IGRlcGVuZHMKK0RFUEVORFMgKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMiCitERVBFTkRTICs9ICJ2aXJ0dWFsLyR7TUxQUkVGSVh9JHtUQVJHRVRfUFJFRklYfWdjYyIKK0RFUEVORFMgKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIgorREVQRU5EUyArPSAidmlydHVhbC8ke01MUFJFRklYfWxpYmMiCisKK3B5dGhvbiBjaGVja19wcmVwYXJlKCkgeworICAgIGRlZiBzdWZmaXhfc3lzKHN5cyk6CisgICAgICAgIGlmIHN5cy5lbmRzd2l0aCgiLWxpbnV4Iik6CisgICAgICAgICAgICByZXR1cm4gc3lzICsgIi1nbnUiCisgICAgICAgIHJldHVybiBzeXMKKworICAgIGRlZiBnZW5lcmF0ZV9zaXRlX2V4cChkLCBzdWl0ZSk6CisgICAgICAgIGNvbnRlbnQgPSBbXQorICAgICAgICBjb250ZW50LmFwcGVuZCgnc2V0IHNyY2RpciAiezB9L3sxfSInLmZvcm1hdChkLmdldFZhcigiUyIpLCBzdWl0ZSkpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXQgb2JqZGlyICJ7MH0vezF9IicuZm9ybWF0KGQuZ2V0VmFyKCJCIiksIHN1aXRlKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldCBidWlsZF9hbGlhcyAiezB9IicuZm9ybWF0KGQuZ2V0VmFyKCJCVUlMRF9TWVMiKSkpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXQgYnVpbGRfdHJpcGxldCB7MH0nLmZvcm1hdChkLmdldFZhcigiQlVJTERfU1lTIikpKQorICAgICAgICAjIHVzZSBCVUlMRCBoZXJlIHNpbmNlIEhPU1Q9VEFSR0VUCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXQgaG9zdF9hbGlhcyAiezB9IicuZm9ybWF0KGQuZ2V0VmFyKCJCVUlMRF9TWVMiKSkpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXQgaG9zdF90cmlwbGV0IHswfScuZm9ybWF0KGQuZ2V0VmFyKCJCVUlMRF9TWVMiKSkpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXQgdGFyZ2V0X2FsaWFzICJ7MH0iJy5mb3JtYXQoZC5nZXRWYXIoIlRBUkdFVF9TWVMiKSkpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXQgdGFyZ2V0X3RyaXBsZXQgezB9Jy5mb3JtYXQoc3VmZml4X3N5cyhkLmdldFZhcigiVEFSR0VUX1NZUyIpKSkpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJzZXQgZGV2ZWxvcG1lbnQgdHJ1ZSIpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJzZXQgZXhwZXJpbWVudGFsIGZhbHNlIikKKworICAgICAgICBjb250ZW50LmFwcGVuZChkLmV4cGFuZCgnc2V0IENYWEZJTFQgIiR7VEFSR0VUX1BSRUZJWH1jKytmaWx0IicpKQorICAgICAgICBjb250ZW50LmFwcGVuZChkLmV4cGFuZCgnc2V0IENDICIke1RBUkdFVF9QUkVGSVh9Z2NjIC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtUVU5FX0NDQVJHU30iJykpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKGQuZXhwYW5kKCdzZXQgQ1hYICIke1RBUkdFVF9QUkVGSVh9ZysrIC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtUVU5FX0NDQVJHU30iJykpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKGQuZXhwYW5kKCdzZXQgQ0ZMQUdTX0ZPUl9UQVJHRVQgIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtUVU5FX0NDQVJHU30iJykpCisKKyAgICAgICAgaWYgc3VpdGUgPT0gImxkIiBhbmQgZC5nZXRWYXIoIlRVTkVfQVJDSCIpID09ICJtaXBzNjQiOgorICAgICAgICAgICAgIyBvZSBwYXRjaGVzIGJpbnV0aWxzIHRvIGhhdmUgdGhlIGRlZmF1bHQgbWlwczY0IGFiaSBhcyA2NGJpdCwgYnV0CisgICAgICAgICAgICAjIHNraXBzIGdhcyBjYXVzaW5nIGlzc3VlcyB3aXRoIHRoZSBsZCB0ZXN0IHN1aXRlICh3aGljaCB1c2VzIGdhcykKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXQgQVNGTEFHUyAiLTY0IicpCisKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihjb250ZW50KQorCisgICAgZm9yIGkgaW4gWyJiaW51dGlscyIsICJnYXMiLCAibGQiXToKKyAgICAgICAgYnVpbGRkaXIgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkIiKSwgaSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoYnVpbGRkaXIpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoYnVpbGRkaXIpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJzaXRlLmV4cCIpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGdlbmVyYXRlX3NpdGVfZXhwKGQsIGkpKQorfQorCitDSEVDS19UQVJHRVRTID8/PSAiYmludXRpbHMgZ2FzIGxkIgorCitkb19jaGVja1tkaXJzXSA9ICIke0J9ICR7Qn0vYmludXRpbHMgJHtCfS9nYXMgJHtCfS9sZCIKK2RvX2NoZWNrW3ByZWZ1bmNzXSArPSAiY2hlY2tfcHJlcGFyZSIKK2RvX2NoZWNrW25vc3RhbXBdID0gIjEiCitkb19jaGVjaygpIHsKKyAgICBleHBvcnQgTENfQUxMPUMKKyAgICBmb3IgaSBpbiAke0NIRUNLX1RBUkdFVFN9OyBkbworICAgICAgICAoY2QgJHtCfS8kaTsgcnVudGVzdCBcCisgICAgICAgICAgICAtLXRvb2wgJGkgXAorICAgICAgICAgICAgLS1zcmNkaXIgJHtTfS8kaS90ZXN0c3VpdGUgXAorICAgICAgICAgICAgLS1pZ25vcmUgJ3BsdWdpbi5leHAnIFwKKyAgICAgICAgICAgIHx8IHRydWUpCisgICAgZG9uZQorfQorYWRkdGFzayBjaGVjayBhZnRlciBkb19jb25maWd1cmUKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKaW5kZXggYmE1ZTRjMi4uNWY0YWM3MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkNTQwZTk1ZDA1Y2Q3YzRiODkyNGFjN2IyNTdjMTRhZTAxMDVkMGFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NThhNDk3NDliNzcyNjYwZDNiYWZiODA3NDg4MjljYmE2YmVkMDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0NDoxNCArMDAwMAogU3ViamVjdDogW1BBVENIIDEwLzE1XSBDaGFuZ2UgZGVmYXVsdCBlbXVsYXRpb24gZm9yIG1pcHM2NCotKi1saW51eApAQCAtMTQsNyArMTQsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggMGUxZGRiNjU5Yy4uY2M2NTU0NzU4OCAxMDA2NDQKK2luZGV4IDBlMWRkYjY1OWMuLmQ0ZjUwZjBhOGQgMTAwNjQ0CiAtLS0gYS9iZmQvY29uZmlnLmJmZAogKysrIGIvYmZkL2NvbmZpZy5iZmQKIEBAIC05MTksMTIgKzkxOSwxMiBAQCBjYXNlICIke3Rhcmd9IiBpbgpAQCAtMzAsNyArMzAsNyBAQAogLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2JlX3ZlYwogLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCiArICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9iZV92ZWMKLSsgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKysgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKICAgICAgOzsKICAgIG1pcHMqZWwtKi1saW51eCopCiAgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKQEAgLTU0LDYgKzU0LDMgQEAKICAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKICBtaXBzKmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAiCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDIvMDAwMS1ib290Y2hhcnQyLXN1cHBvcnQtdXNybWVyZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDIvMDAwMS1ib290Y2hhcnQyLXN1cHBvcnQtdXNybWVyZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlNjcyMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLWJvb3RjaGFydDItc3VwcG9ydC11c3JtZXJnZS5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIGI2ZDFhMWZmMmRlMzYzYjFiNzZjOGM3MGY3N2FlNTZhNGU0ZDRiNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA1IFNlcCAyMDE5IDE4OjM3OjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGJvb3RjaGFydDI6IHN1cHBvcnQgdXNybWVyZ2UKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMWNjMjk3NC4uZjk4ODkwNCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTM2LDcgKzM2LDcgQEAgZW5kaWYKKyBQWV9TSVRFRElSID89ICQoUFlfTElCRElSKS9zaXRlLXBhY2thZ2VzCisgTElCQ19BX1BBVEggPSAvdXNyJChMSUJESVIpCisgIyBBbHdheXMgbGliLCBldmVuIG9uIHN5c3RlbXMgdGhhdCBvdGhlcndpc2UgdXNlIGxpYjY0CistU1lTVEVNRF9VTklUX0RJUiA9ICQoRUFSTFlfUFJFRklYKS9saWIvc3lzdGVtZC9zeXN0ZW0KKytTWVNURU1EX1VOSVRfRElSID89ICQoRUFSTFlfUFJFRklYKS9saWIvc3lzdGVtZC9zeXN0ZW0KKyBDT0xMRUNUT1IgPSBcCisgCWNvbGxlY3Rvci9jb2xsZWN0b3IubyBcCisgCWNvbGxlY3Rvci9vdXRwdXQubyBcCitAQCAtOTksNyArOTksNyBAQCBpbnN0YWxsLWNocm9vdDoKKyAJaW5zdGFsbCAtZCAkKERFU1RESVIpJChQS0dMSUJESVIpL3RtcGZzCisgCisgaW5zdGFsbC1jb2xsZWN0b3I6IGFsbCBpbnN0YWxsLWNocm9vdAorLQlpbnN0YWxsIC1tIDc1NSAtRCBib290Y2hhcnRkICQoREVTVERJUikkKEVBUkxZX1BSRUZJWCkvc2Jpbi8kKFBST0dSQU1fUFJFRklYKWJvb3RjaGFydGQkKFBST0dSQU1fU1VGRklYKQorKwlpbnN0YWxsIC1tIDc1NSAtRCBib290Y2hhcnRkICQoREVTVERJUikke0JBU0VfU0JJTkRJUn0vJChQUk9HUkFNX1BSRUZJWClib290Y2hhcnRkJChQUk9HUkFNX1NVRkZJWCkKKyAJaW5zdGFsbCAtbSA2NDQgLUQgYm9vdGNoYXJ0ZC5jb25mICQoREVTVERJUikvZXRjLyQoUFJPR1JBTV9QUkVGSVgpYm9vdGNoYXJ0ZCQoUFJPR1JBTV9TVUZGSVgpLmNvbmYKKyAJaW5zdGFsbCAtbSA3NTUgLUQgYm9vdGNoYXJ0LWNvbGxlY3RvciAkKERFU1RESVIpJChQS0dMSUJESVIpLyQoUFJPR1JBTV9QUkVGSVgpYm9vdGNoYXJ0JChQUk9HUkFNX1NVRkZJWCktY29sbGVjdG9yCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCmluZGV4IDM5NmQwZWMuLmE5MzhiMmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgpAQCAtOTMsNiArOTMsNyBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3hybXgvYm9vdGNoYXJ0LmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9ib290Y2hhcnRkX3N0b3Auc2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jb2xsZWN0b3ItQWxsb2NhdGUtc3BhY2Utb24taGVhcC1mb3ItY2h1bmtzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYm9vdGNoYXJ0Mi1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCkBAIC0xMTQsNiArMTE1LDggQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJib290Y2hhcnRkX3N0b3Auc2giCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSAyIDMgNCA1IC4iCiAKK0VYVFJBX09FTUFLRSA9ICdCQVNFX1NCSU5ESVI9IiR7YmFzZV9zYmluZGlyfSInCisKIGRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7CiAgICAgZXhwb3J0IFBZX0xJQkRJUj0iJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0iCiAgICAgZXhwb3J0IEJJTkRJUj0iJHtiaW5kaXJ9IgpAQCAtMTI2LDYgKzEyOSw4IEBACiAgICAgZXhwb3J0IEJJTkRJUj0iJHtiaW5kaXJ9IgogICAgIGV4cG9ydCBERVNURElSPSIke0R9IgogICAgIGV4cG9ydCBMSUJESVI9IiR7YmFzZV9saWJkaXJ9IgorICAgIGV4cG9ydCBQS0dMSUJESVI9IiR7YmFzZV9saWJkaXJ9L2Jvb3RjaGFydCIKKyAgICBleHBvcnQgU1lTVEVNRF9VTklUX0RJUj0iJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKIAogICAgIG9lX3J1bm1ha2UgaW5zdGFsbAogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCkBAIC0xNDEsNyArMTQ2LDcgQEAKIEZJTEVTX3B5Ym9vdGNoYXJ0Z3VpICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWJvb3RjaGFydGd1aSAke2JpbmRpcn0vcHlib290Y2hhcnRndWkiCiBSREVQRU5EU19weWJvb3RjaGFydGd1aSA9ICJweXRob24zLXB5Y2Fpcm8gcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLWltYWdlIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLWNvZGVjcyIKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdzeXN2aW5pdC1waWRvZicsICdwcm9jcHMnLCBkKX0iCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImxzYiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAibHNiLXJlbGVhc2UiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHB5dGhvbjMtcHljYWlyby1uYXRpdmUiCiAKIFBBQ0tBR0VTID0rICJib290Y2hhcnRkLXN0b3AtaW5pdHNjcmlwdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzUuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4yLjEuYmIKaW5kZXggNjQ3NTE2Yy4uYTM2NGNmNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4yLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4yLjEuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKIFNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCitERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdWRldiIKIFJERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKIApAQCAtMTksMTMgKzE5LDE2IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLXBvc3NpYmlsaXR5LXRvLXNwZWNpZnktd2hlcmUtcHl0aG9uLW1vZHVsZXMtYXIucGF0Y2ggXAogICAgICAgICAgICAiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMgZGlzdHV0aWxzMy1iYXNlCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLC0tZGlzYWJsZS1weXRob24scHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbenN0ZF0gPSAiLS1lbmFibGUtenN0ZCwtLWRpc2FibGUtenN0ZCx6c3RkIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1hbnBhZ2VzCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9CiAKIENMRUFOQlJPS0VOID0gIjEiCiAKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLWRvY3VtZW50YXRpb24sIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgotUEFDS0FHRUNPTkZJR1t6c3RkXSA9ICItLWVuYWJsZS16c3RkLC0tZGlzYWJsZS16c3RkLHpzdGQiCi0KIEVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKIEVYVFJBX1BZVEhPTl9DRkxBR1MgPSAiJHtERUJVR19QUkVGSVhfTUFQfSIKIEVYVFJBX1BZVEhPTl9DRkxBR1NfY2xhc3MtbmF0aXZlID0gIiIKQEAgLTQxLDcgKzQ0LDkgQEAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBpbnN0YWxsX3B5dGhvbgorICAgIGlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KKyAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnUFlUSE9OX1NJVEVQQUNLQUdFU19ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIGluc3RhbGxfcHl0aG9uCisgICAgZmkKIH0KIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgppbmRleCBlZmNmNmI2Li5iMDU2MGNjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKQEAgLTYsMjIgKzYsMTQgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS5naXQgXAotICAgICAgICAgICBmaWxlOi8vUmVuYW1lLXJwbS1jaGVjay5zaC10by1wa2ctZGlmZi5zaC5wYXRjaDtzdHJpcGxldmVsPTEgXAogICAgICAgICAgICBmaWxlOi8vSWdub3JlLURXQVJGLXNlY3Rpb25zLnBhdGNoO3N0cmlwbGV2ZWw9MSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1kZWItYW5kLWlway1wYWNrYWdpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZnVuY3Rpb25zLnNoLXJlbW92ZS1zcGFjZS1hdC1oZWFkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5zaC1ydW4tcnBtLW9uY2UtdG8tbWFrZS1pdC1mYXN0ZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGtnLWRpZmYuc2gtY2hlY2stZm9yLWZpZm8tbmFtZWQtcGlwZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2ctZGlmZi5zaC1jaGVja19zaW5nbGVfZmlsZS1yZXR1cm4tYXQtb25jZS13aGVuLXNhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BrZy1kaWZmLnNoLXJlbW92ZS1zcGFjZS1pbi10aGUtZW5kLWZvci1mdHlwZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMuc2gtaW1wcm92ZS1kZWItYW5kLWlway1jaGVja2luZy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogIyBEYXRlIG1hdGNoZXMgZW50cnkgaW4gYnVpbGQtY29tcGFyZS5jaGFuZ2VzIGFuZCBkYXRlIG9mIFNSQ1JFVi4KICMKLVNSQ1JFViA9ICJjNTM1MmMwNTRjNmVmMTU3MzVkYTMxYjc2ZDZkODg2MjBmNGFmZjBhIgorU1JDUkVWID0gIjRkZmEyMDc2NjA3NzZjYWUxMjBhZmE0MzUzYWVjN2YxZjJhOTk4ZDIiCiBQRSA9ICIxIgotUFYgPSAiMjAxNS4wMi4xMCtnaXQke1NSQ1BWfSIKK1BWID0gIjIwMTkuMDguMTQrZ2l0JHtTUkNQVn0iCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzLzAwMDEtQWRkLXN1cHBvcnQtZm9yLWRlYi1hbmQtaXBrLXBhY2thZ2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvMDAwMS1BZGQtc3VwcG9ydC1mb3ItZGViLWFuZC1pcGstcGFja2FnaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmZkODE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvMDAwMS1BZGQtc3VwcG9ydC1mb3ItZGViLWFuZC1pcGstcGFja2FnaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSAwMmRiYzdlMzQ3OGU0MDlkNmY1ZTNlMWM1M2RhZGRmODgzOGJlOTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDEgU2VwIDIwMTUgMTI6MDQ6MzMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIGRlYiBhbmQgaXBrIHBhY2thZ2luZwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2J1aWxkLWNvbXBhcmUvcHVsbC8xMF0KLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci0tLS0KLSBmdW5jdGlvbnMuc2ggfCAxNSArKysrKysrKysrKysrKysKLSBwa2ctZGlmZi5zaCAgfCAgNiArKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2Z1bmN0aW9ucy5zaCBiL2Z1bmN0aW9ucy5zaAotaW5kZXggMDYwNzlkZi4uODVjOTAwMyAxMDA2NDQKLS0tLSBhL2Z1bmN0aW9ucy5zaAotKysrIGIvZnVuY3Rpb25zLnNoCi1AQCAtODUsNiArODUsMTMgQEAgZnVuY3Rpb24gdW5wYWNrYWdlKCkKLSAgICAgICAgICAgICBDUElPX09QVFM9Ii0tZXh0cmFjdCAtLXVuY29uZGl0aW9uYWwgLS1wcmVzZXJ2ZS1tb2RpZmljYXRpb24tdGltZSAtLW1ha2UtZGlyZWN0b3JpZXMgLS1xdWlldCIKLSAgICAgICAgICAgICBycG0yY3BpbyAkZmlsZSB8IGNwaW8gJHtDUElPX09QVFN9Ci0gICAgICAgICAgICAgOzsKLSsgICAgICAgICouaXBrfCouZGViKQotKyAgICAgICAgICAgIGFyIHggJGZpbGUKLSsgICAgICAgICAgICB0YXIgeGYgY29udHJvbC50YXIuZ3oKLSsgICAgICAgICAgICBybSBjb250cm9sLnRhci5negotKyAgICAgICAgICAgIHRhciB4ZiBkYXRhLnRhci5negotKyAgICAgICAgICAgIHJtIGRhdGEudGFyLmd6Ci0rICAgICAgICAgICAgOzsKLSAgICAgZXNhYwotICAgICBwb3BkIDE+L2Rldi9udWxsCi0gfQotQEAgLTI1NSw0ICsyNjIsMTIgQEAgZnVuY3Rpb24gY21wX3NwZWMgKCkKLSAgICAgcm0gJGZpbGUxICRmaWxlMgotICAgICByZXR1cm4gJFJFUwotIH0KLSsKLStmdW5jdGlvbiBhZGp1c3RfY29udHJvbGZpbGUoKSB7Ci0rICAgIGNhdCAkMS9jb250cm9sIHwgc2VkICcvXlZlcnNpb246IC9kJyA+ICQxL2NvbnRyb2wuZml4ZWQKLSsgICAgbXYgJDEvY29udHJvbC5maXhlZCAkMS9jb250cm9sCi0rICAgIGNhdCAkMi9jb250cm9sIHwgc2VkICcvXlZlcnNpb246IC9kJyA+ICQyL2NvbnRyb2wuZml4ZWQKLSsgICAgbXYgJDIvY29udHJvbC5maXhlZCAkMi9jb250cm9sCi0rfQotKwotICMgdmltOiB0dz02NjYgdHM9MiBldAotZGlmZiAtLWdpdCBhL3BrZy1kaWZmLnNoIGIvcGtnLWRpZmYuc2gKLWluZGV4IDBmMWZhNzYuLjNjZjEwYWEgMTAwNjQ0Ci0tLS0gYS9wa2ctZGlmZi5zaAotKysrIGIvcGtnLWRpZmYuc2gKLUBAIC0xMzgsNiArMTM4LDEyIEBAIGVjaG8gIkV4dHJhY3RpbmcgcGFja2FnZXMiCi0gdW5wYWNrYWdlICRvbGRwa2cgJGRpci9vbGQKLSB1bnBhY2thZ2UgJG5ld3BrZyAkZGlyL25ldwotIAotK2Nhc2UgJG9sZHBrZyBpbgotKyAgKi5kZWJ8Ki5pcGspCi0rICAgICBhZGp1c3RfY29udHJvbGZpbGUgJGRpci9vbGQgJGRpci9uZXcKLSsgIDs7Ci0rZXNhYwotKwotICMgZmlsZXMgaXMgc2V0IGluIGNtcF9zcGVjIGZvciBycG1zLCBzbyBpZiBSRVMgaXMgZW1wdHkgd2Ugc2hvdWxkIGFzc3VtZQotICMgaXQgd2Fzbid0IGFuIHJwbSBhbmQgcGljayBhbGwgZmlsZXMgZm9yIGNvbXBhcmlzb24uCi0gaWYgWyAteiAkUkVTIF07IHRoZW4KLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9JZ25vcmUtRFdBUkYtc2VjdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL0lnbm9yZS1EV0FSRi1zZWN0aW9ucy5wYXRjaAppbmRleCA3ZGRhMWFjLi4yZmI2MmFlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL0lnbm9yZS1EV0FSRi1zZWN0aW9ucy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL0lnbm9yZS1EV0FSRi1zZWN0aW9ucy5wYXRjaApAQCAtMjMsMTggKzIzLDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9wa2ctZGlmZi5zaCBiL3BrZy1kaWZmLnNoCi1pbmRleCA1NjAzNWMxLi4wZjFmYTc2IDEwMDc1NQoraW5kZXggOWMyMTI1ZS4uYjBkNzdjOCAxMDA3NTUKIC0tLSBhL3BrZy1kaWZmLnNoCiArKysgYi9wa2ctZGlmZi5zaAotQEAgLTY1OCw3ICs2NTgsNyBAQCBjaGVja19zaW5nbGVfZmlsZSgpCitAQCAtODUxLDcgKzg1MSw3IEBAIGNoZWNrX3NpbmdsZV9maWxlKCkKICAgICAgICAgZWNobyAiIiA+JGZpbGUxCiAgICAgICAgIGVjaG8gIiIgPiRmaWxlMgotICAgICAgICAjIERvbid0IGNvbXBhcmUgLmJ1aWxkLWlkIGFuZCAuZ251X2RlYnVnbGluayBzZWN0aW9ucwotLSAgICAgICBzZWN0aW9ucz0iJChvYmpkdW1wIC1zIG5ldy8kZmlsZSB8IGdyZXAgIkNvbnRlbnRzIG9mIHNlY3Rpb24gLio6IiB8IHNlZCAtciAicywuKiAoLiopOixcMSxnIiB8IGdyZXAgLXYgLWUgIlwuYnVpbGQtaWQiIC1lICJcLmdudV9kZWJ1Z2xpbmsiIHwgdHIgIlxuIiAiICIpIgotKyAgICAgICBzZWN0aW9ucz0iJChvYmpkdW1wIC1zIG5ldy8kZmlsZSB8IGdyZXAgIkNvbnRlbnRzIG9mIHNlY3Rpb24gLio6IiB8IHNlZCAtciAicywuKiAoLiopOixcMSxnIiB8IGdyZXAgLXYgLWUgIlwuYnVpbGQtaWQiIC1lICJcLmdudV9kZWJ1Z2xpbmsiIC1lICJcLmRlYnVnX2FiYnJldiIgLWUgIlwuZGVidWdfYXJhbmdlcyIgLWUgIlwuZGVidWdfZnJhbWUiIC1lICJcLmRlYnVnX2luZm8iIC1lICJcLmRlYnVnX2xpbmUiIC1lICJcLmRlYnVnX2xvYyIgLWUgIlwuZGVidWdfbWFjaW5mbyIgLWUgIlwuZGVidWdfcHVibmFtZXMiIC1lICJcLmRlYnVnX3B1YnR5cGVzIiAtZSAiXC5kZWJ1Z19yYW5nZXMiICAtZSAiXC5kZWJ1Z19zdHIiIHwgdHIgIlxuIiAiICIpIgorICAgICAgICAjIERvbid0IGNvbXBhcmUgLmJ1aWxkLWlkLCAuZ251X2RlYnVnbGluayBhbmQgLmdudV9kZWJ1Z2RhdGEgc2VjdGlvbnMKKy0gICAgICAgc2VjdGlvbnM9IiQoJE9CSkRVTVAgLXMgbmV3LyRmaWxlIHwgZ3JlcCAiQ29udGVudHMgb2Ygc2VjdGlvbiAuKjoiIHwgc2VkIC1yICJzLC4qICguKik6LFwxLGciIHwgZ3JlcCAtdiAtZSAiXC5idWlsZC1pZCIgLWUgIlwuZ251X2RlYnVnbGluayIgLWUgIlwuZ251X2RlYnVnZGF0YSIgfCB0ciAiXG4iICIgIikiCisrICAgICAgIHNlY3Rpb25zPSIkKCRPQkpEVU1QIC1zIG5ldy8kZmlsZSB8IGdyZXAgIkNvbnRlbnRzIG9mIHNlY3Rpb24gLio6IiB8IHNlZCAtciAicywuKiAoLiopOixcMSxnIiB8IGdyZXAgLXYgLWUgIlwuYnVpbGQtaWQiIC1lICJcLmdudV9kZWJ1Z2xpbmsiIC1lICJcLmdudV9kZWJ1Z2RhdGEiIC1lICJcLmRlYnVnX2FiYnJldiIgLWUgIlwuZGVidWdfYXJhbmdlcyIgLWUgIlwuZGVidWdfZnJhbWUiIC1lICJcLmRlYnVnX2luZm8iIC1lICJcLmRlYnVnX2xpbmUiIC1lICJcLmRlYnVnX2xvYyIgLWUgIlwuZGVidWdfbWFjaW5mbyIgLWUgIlwuZGVidWdfcHVibmFtZXMiIC1lICJcLmRlYnVnX3B1YnR5cGVzIiAtZSAiXC5kZWJ1Z19yYW5nZXMiICAtZSAiXC5kZWJ1Z19zdHIiIHwgdHIgIlxuIiAiICIpIgogICAgICAgICBmb3Igc2VjdGlvbiBpbiAkc2VjdGlvbnM7IGRvCi0gICAgICAgICAgIG9iamR1bXAgLXMgLWogJHNlY3Rpb24gb2xkLyRmaWxlIHwgc2VkICJzLF5vbGQvLCwiID4gJGZpbGUxCi0gICAgICAgICAgIG9iamR1bXAgLXMgLWogJHNlY3Rpb24gbmV3LyRmaWxlIHwgc2VkICJzLF5uZXcvLCwiID4gJGZpbGUyCi0tLSAKLTEuOS4zCi0KKyAgICAgICAgICAgJE9CSkRVTVAgLXMgLWogJHNlY3Rpb24gb2xkLyRmaWxlIHwgc2VkICJzLF5vbGQvLCwiID4gJGZpbGUxCisgICAgICAgICAgICRPQkpEVU1QIC1zIC1qICRzZWN0aW9uIG5ldy8kZmlsZSB8IHNlZCAicyxebmV3LywsIiA+ICRmaWxlMgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9SZW5hbWUtcnBtLWNoZWNrLnNoLXRvLXBrZy1kaWZmLnNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9SZW5hbWUtcnBtLWNoZWNrLnNoLXRvLXBrZy1kaWZmLnNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmYzYTllLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvUmVuYW1lLXJwbS1jaGVjay5zaC10by1wa2ctZGlmZi5zaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OTkgKzAsMCBAQAotRnJvbSA0ZGUzZGY1YTFiMzYxY2QwOWEwODFmMGUwYmRiOTRjYmY2ODRlZDQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE5IEZlYiAyMDE1IDAwOjM0OjQ3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbmFtZSBycG0tY2hlY2suc2ggdG8gcGtnLWRpZmYuc2guCi0KLVRoZSB0b29sIG5vdyBhY2NlcHRzIHBhY2thZ2UgaW5wdXQgb3RoZXIgdGhhbiBycG0sIHNvIGNoYW5nZSB0aGUgbmFtZQotd2hpY2ggY291bGQgYmUgbWlzbGVhZGluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlL3B1bGxzXQotCi1TaWduZWQtb2ZmLWJ5OiBSYW5keSBXaXR0IDxyYW5keS5lLndpdHRAbGludXguaW50ZWwuY29tPgotCi1VcGRhdGVkIGZvciBycG0tY2hlY2suc2guCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYnVpbGQtY29tcGFyZS5zcGVjICAgfCAgICAyICstCi0gcGtnLWRpZmYuc2ggICAgICAgICAgfCAgNzY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gcnBtLWNoZWNrLnNoICAgICAgICAgfCAgNzY0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzYW1lLWJ1aWxkLXJlc3VsdC5zaCB8ICAgIDQgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDc2OCBpbnNlcnRpb25zKCspLCA3NjcgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHBrZy1kaWZmLnNoCi0gZGVsZXRlIG1vZGUgMTAwNzU1IHJwbS1jaGVjay5zaAotCi1kaWZmIC0tZ2l0IGEvYnVpbGQtY29tcGFyZS5zcGVjIGIvYnVpbGQtY29tcGFyZS5zcGVjCi1pbmRleCAxNGE5N2U5Li41ZjQ3Y2ExIDEwMDY0NAotLS0tIGEvYnVpbGQtY29tcGFyZS5zcGVjCi0rKysgYi9idWlsZC1jb21wYXJlLnNwZWMKLUBAIC0yNSw3ICsyNSw3IEBAIFZlcnNpb246ICAgICAgICAyMDE1LjAyLjEwCi0gUmVsZWFzZTogICAgICAgIDAKLSBTb3VyY2UxOiAgICAgICAgQ09QWUlORwotIFNvdXJjZTI6ICAgICAgICBzYW1lLWJ1aWxkLXJlc3VsdC5zaAotLVNvdXJjZTM6ICAgICAgICBycG0tY2hlY2suc2gKLStTb3VyY2UzOiAgICAgICAgcGtnLWRpZmYuc2gKLSBTb3VyY2U0OiAgICAgICAgZnVuY3Rpb25zLnNoCi0gU291cmNlNTogICAgICAgIHNycG0tY2hlY2suc2gKLSBCdWlsZFJvb3Q6ICAgICAgJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LWJ1aWxkCi1kaWZmIC0tZ2l0IGEvcGtnLWRpZmYuc2ggYi9wa2ctZGlmZi5zaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU2MDM1YzEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3BrZy1kaWZmLnNoCi1AQCAtMCwwICsxLDc2NSBAQAotKyMhIC9iaW4vYmFzaAotKyMKLSsjIENvcHlyaWdodCAoYykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBTVVNFIExpbnV4IFByb2R1Y3QgR21iSCwgR2VybWFueS4KLSsjIExpY2Vuc2VkIHVuZGVyIEdQTCB2Miwgc2VlIENPUFlJTkcgZmlsZSBmb3IgZGV0YWlscy4KLSsjCi0rIyBXcml0dGVuIGJ5IE1pY2hhZWwgTWF0eiBhbmQgU3RlcGhhbiBDb29sbwotKyMgRW5oYW5jZWQgYnkgQW5kcmVhcyBKYWVnZXIKLSsKLStGVU5DVElPTlM9JHswJS8qfS9mdW5jdGlvbnMuc2gKLSsKLStjaGVja19hbGw9Ci0rY2FzZSAkMSBpbgotKyAgLWEgfCAtLWNoZWNrLWFsbCkKLSsgICAgY2hlY2tfYWxsPTEKLSsgICAgc2hpZnQKLStlc2FjCi0rCi0raWYgdGVzdCAiJCMiICE9IDI7IHRoZW4KLSsgICBlY2hvICJ1c2FnZTogJDAgWy1hfC0tY2hlY2stYWxsXSBvbGQucnBtIG5ldy5ycG0iCi0rICAgZXhpdCAxCi0rZmkKLSsKLStzZWxmX3NjcmlwdD0kKGNkICQoZGlybmFtZSAkMCk7IGVjaG8gJChwd2QpLyQoYmFzZW5hbWUgJDApKQotKwotK3NvdXJjZSAkRlVOQ1RJT05TCi0rCi0rb2xkcGtnPWByZWFkbGluayAtZiAkMWAKLStuZXdwa2c9YHJlYWRsaW5rIC1mICQyYAotK3JlbmFtZV9zY3JpcHQ9YG1rdGVtcGAKLSsKLStpZiB0ZXN0ICEgLWYgIiRvbGRwa2ciOyB0aGVuCi0rICAgIGVjaG8gImNhbid0IG9wZW4gJDEiCi0rICAgIGV4aXQgMQotK2ZpCi0rCi0raWYgdGVzdCAhIC1mICIkbmV3cGtnIjsgdGhlbgotKyAgICBlY2hvICJjYW4ndCBvcGVuICQyIgotKyAgICBleGl0IDEKLStmaQotKwotKyN1c2FnZSB1bmphciA8ZmlsZT4KLStmdW5jdGlvbiB1bmphcigpCi0rewotKyAgICBsb2NhbCBmaWxlCi0rICAgIGZpbGU9JDEKLSsKLSsgICAgaWYgW1sgJCh0eXBlIC1wIGZhc3RqYXIpIF1dOyB0aGVuCi0rICAgICAgICBVTkpBUj1mYXN0amFyCi0rICAgIGVsaWYgW1sgJCh0eXBlIC1wIGphcikgXV07IHRoZW4KLSsgICAgICAgIFVOSkFSPWphcgotKyAgICBlbGlmIFtbICQodHlwZSAtcCB1bnppcCkgXV07IHRoZW4KLSsgICAgICAgIFVOSkFSPXVuemlwCi0rICAgIGVsc2UKLSsgICAgICAgIGVjaG8gIkVSUk9SOiBqYXIsIGZhc3RqYXIsIG9yIHVuemlwIGlzIG5vdCBpbnN0YWxsZWQgKHRyeWluZyBmaWxlICRmaWxlKSIKLSsgICAgICAgIGV4aXQgMQotKyAgICBmaQotKwotKyAgICBjYXNlICRVTkpBUiBpbgotKyAgICAgICAgamFyfGZhc3RqYXIpCi0rICAgICAgICAjIGVjaG8gamFyIC14ZiAkZmlsZQotKyAgICAgICAgJHtVTkpBUn0gLXhmICRmaWxlCi0rICAgICAgICA7OwotKyAgICAgICAgdW56aXApCi0rICAgICAgICB1bnppcCAtb3FxICRmaWxlCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rfQotKwotKyMgbGlzdCBmaWxlcyBpbiBkaXJlY3RvcnkKLSsjdXNhZ2UgdW5qYXJfbCA8ZmlsZT4KLStmdW5jdGlvbiB1bmphcl9sKCkKLSt7Ci0rICAgIGxvY2FsIGZpbGUKLSsgICAgZmlsZT0kMQotKwotKyAgICBpZiBbWyAkKHR5cGUgLXAgZmFzdGphcikgXV07IHRoZW4KLSsgICAgICAgIFVOSkFSPWZhc3RqYXIKLSsgICAgZWxpZiBbWyAkKHR5cGUgLXAgamFyKSBdXTsgdGhlbgotKyAgICAgICAgVU5KQVI9amFyCi0rICAgIGVsaWYgW1sgJCh0eXBlIC1wIHVuemlwKSBdXTsgdGhlbgotKyAgICAgICAgVU5KQVI9dW56aXAKLSsgICAgZWxzZQotKyAgICAgICAgZWNobyAiRVJST1I6IGphciwgZmFzdGphciwgb3IgdW56aXAgaXMgbm90IGluc3RhbGxlZCAodHJ5aW5nIGZpbGUgJGZpbGUpIgotKyAgICAgICAgZXhpdCAxCi0rICAgIGZpCi0rCi0rICAgIGNhc2UgJFVOSkFSIGluCi0rICAgICAgICBqYXJ8ZmFzdGphcikKLSsgICAgICAgICR7VU5KQVJ9IC10ZiAkZmlsZQotKyAgICAgICAgOzsKLSsgICAgICAgIHVuemlwKQotKyAgICAgICAgdW56aXAgLWwgJGZpbGUKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSt9Ci0rCi0rZmlsdGVyX2Rpc2FzbSgpCi0rewotKyAgIHNlZCAtZSAncy9eICpbMC05YS1mXVwrOi8vJyAtZSAncy9cJDB4WzAtOWEtZl1cKy8kc29tZXRoaW5nLycgLWUgJ3MvY2FsbHEgKlswLTlhLWZdXCsvY2FsbHEgLycgLWUgJ3MvIyAqWzAtOWEtZl1cKy8jICAvJyAtZSAncy9cKDB4XClcP1swLTlhLWZdXCsoL29mZnNldCgvJyAtZSAncy9bMC05YS1mXVwrIDwvPC8nIC1lICdzL148XCguKlwpPjovXDE6LycgLWUgJ3MvPFwoLipcKSsweFswLTlhLWZdXCs+LzxcMSArIG9mcz4vJyAKLSt9Ci0rCi0rZWNobyAiQ29tcGFyaW5nIGBiYXNlbmFtZSAkb2xkcGtnYCB0byBgYmFzZW5hbWUgJG5ld3BrZ2AiCi0rCi0rY2FzZSAkb2xkcGtnIGluCi0rICAqLnJwbSkKLSsgICAgIGNtcF9zcGVjICRyZW5hbWVfc2NyaXB0ICRvbGRwa2cgJG5ld3BrZwotKyAgICAgUkVTPSQ/Ci0rICAgICBjYXNlICRSRVMgaW4KLSsgICAgICAgMCkKLSsgICAgICAgICAgZWNobyAiUlBNIG1ldGEgaW5mb3JtYXRpb24gaXMgaWRlbnRpY2FsIgotKyAgICAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotKyAgICAgICAgICAgICBleGl0IDAKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgOzsKLSsgICAgICAgMSkKLSsgICAgICAgICAgZWNobyAiUlBNIG1ldGEgaW5mb3JtYXRpb24gaXMgZGlmZmVyZW50IgotKyAgICAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotKyAgICAgICAgICAgICBleGl0IDEKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgOzsKLSsgICAgICAgMikKLSsgICAgICAgICAgZWNobyAiUlBNIGZpbGUgY2hlY2tzdW0gZGlmZmVycy4iCi0rICAgICAgICAgIFJFUz0wCi0rICAgICAgICAgIDs7Ci0rICAgICAgICopCi0rICAgICAgICAgIGVjaG8gIldyb25nIGV4aXQgY29kZSEiCi0rICAgICAgICAgIGV4aXQgMQotKyAgICAgICAgICA7OwotKyAgICAgZXNhYwotKyAgICAgOzsKLStlc2FjCi0rCi0rZmlsZTE9YG1rdGVtcGAKLStmaWxlMj1gbWt0ZW1wYAotKwotK2Rpcj1gbWt0ZW1wIC1kYAotK2VjaG8gIkV4dHJhY3RpbmcgcGFja2FnZXMiCi0rdW5wYWNrYWdlICRvbGRwa2cgJGRpci9vbGQKLSt1bnBhY2thZ2UgJG5ld3BrZyAkZGlyL25ldwotKwotKyMgZmlsZXMgaXMgc2V0IGluIGNtcF9zcGVjIGZvciBycG1zLCBzbyBpZiBSRVMgaXMgZW1wdHkgd2Ugc2hvdWxkIGFzc3VtZQotKyMgaXQgd2Fzbid0IGFuIHJwbSBhbmQgcGljayBhbGwgZmlsZXMgZm9yIGNvbXBhcmlzb24uCi0raWYgWyAteiAkUkVTIF07IHRoZW4KLSsgICAgb2xkZmlsZXM9YGNkICRkaXIvb2xkOyBmaW5kIC4gLXR5cGUgZmAKLSsgICAgbmV3ZmlsZXM9YGNkICRkaXIvbmV3OyBmaW5kIC4gLXR5cGUgZmAKLSsKLSsgICAgZmlsZXM9YGVjaG8gLWUgIiRvbGRmaWxlc1xuJG5ld2ZpbGVzIiB8IHNvcnQgLXVgCi0rZmkKLSsKLStjZCAkZGlyCi0rYmFzaCAkcmVuYW1lX3NjcmlwdAotKwotK2RmaWxlPWBta3RlbXBgCi0rCi0rZGlmZl90d29fZmlsZXMoKQotK3sKLSsgIGlmICEgY21wIC1zIG9sZC8kZmlsZSBuZXcvJGZpbGU7IHRoZW4KLSsgICAgIGVjaG8gIiRmaWxlIGRpZmZlcnMgKCRmdHlwZSkiCi0rICAgICBoZXhkdW1wIC1DIG9sZC8kZmlsZSA+ICRmaWxlMQotKyAgICAgaGV4ZHVtcCAtQyBuZXcvJGZpbGUgPiAkZmlsZTIKLSsgICAgIGRpZmYgLXUgJGZpbGUxICRmaWxlMiB8IGhlYWQgLW4gMjAwCi0rICAgICByZXR1cm4gMQotKyAgZmkKLSsgIHJldHVybiAwCi0rfQotKwotK3RyaW1fbWFuX2ZpcnN0X2xpbmUoKQotK3sKLSsgICAgIyBIYW5kbGVzIHRoZSBmaXJzdCBsaW5lIGlmIGl0IGlzIGxpa2U6Ci0rICAgICMuXCIgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgUG9kOjpNYW4gMi4yOCAoUG9kOjpTaW1wbGUgMy4yOCkKLSsgICAgIy5cIiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSEgIEl0IHdhcyBnZW5lcmF0ZWQgYnkgaGVscDJtYW4gMS40My4zLgotKyAgICBsb2NhbCBmPSQxCi0rICAgIHNlZCAtaSAtZSAnMXsKLSsgICAgc3xeXC5cXCJbWzpibGFuazpdXVwrQXV0b21hdGljYWxseVtbOmJsYW5rOl1dZ2VuZXJhdGVkW1s6Ymxhbms6XV1ieVtbOmJsYW5rOl1dUG9kOjpNYW5bWzpibGFuazpdXS4qfC5cXCIgT3Zlcmx5IHZlcmJvc2UgUG9kOjpNYW58Ci0rICAgIHN8XlwuXFwiW1s6Ymxhbms6XV1cK0RPW1s6Ymxhbms6XV1OT1RbWzpibGFuazpdXU1PRElGWVtbOmJsYW5rOl1dVEhJU1tbOmJsYW5rOl1dRklMRSFbWzpibGFuazpdXVwrSXRbWzpibGFuazpdXXdhc1tbOmJsYW5rOl1dZ2VuZXJhdGVkW1s6Ymxhbms6XV1ieVtbOmJsYW5rOl1daGVscDJtYW5bWzpibGFuazpdXS4qfC5cXCIgT3Zlcmx5IHZlcmJvc2UgaGVscDJtYW58Ci0rICAgIH0nICRmCi0rfQotKwotK3RyaW1fbWFuX1RIKCkKLSt7Ci0rICAgICMgSGFuZGxlcyBsaW5lcyBsaWtlOgotKyAgICAjIC5USCBkZWJoZWxwZXIgNyAiMjAxMC0wMi0yNyIgIjcuNC4xNSIgIkRlYmhlbHBlciIKLSsgICAgIyAuVEggRElSTU5HUi1DTElFTlQgMSAyMDEwLTAyLTI3ICJEaXJtbmdyIDEuMC4zIiAiR05VIFByaXZhY3kgR3VhcmQiCi0rICAgICMgLlRIIGNjbWFrZSAxICJNYXJjaCAwNiwgMjAxMCIgImNjbWFrZSAyLjguMS1yYzMiCi0rICAgICMgLlRIIFFFTVUtSU1HIDEgIjIwMTAtMDMtMTQiICIgIiAiICIKLSsgICAgIyAuVEgga2RlY21ha2UgMSAiTWF5IDA3LCAyMDEwIiAiY21ha2UgMi44LjEiCi0rICAgICMgLlRIICJhcHBlbmRlci5oIiAzICIxMiBNYXkgMjAxMCIgIlZlcnNpb24gMS4yLjEiICJsb2c0YyIgXCIgLSotIG5yb2ZmIC0qLQotKyAgICAjIC5USOKAgiJhcHBlbmRlci5oIuKAgjPigIIiVHVl4oCCQXVn4oCCMzHigIIyMDEwIuKAgiJWZXJzaW9u4oCCMS4yLjEi4oCCImxvZzRjIuKAglwi4oCCLSot4oCCbnJvZmbigIItKi0KLSsgICAgIyAuVEggIk9GRkxJTkVJTUFQIiAiMSIgIjExIE1heSAyMDEwIiAiSm9obiBHb2VyemVuIiAiT2ZmbGluZUlNQVAgTWFudWFsIgotKyAgICAjIC5USCBndiAzZ3VpbGUgIjEzIE1heSAyMDEwIgotKyAgICAjLlRIICJHSVRcLUFSQ0hJTVBPUlQiICIxIiAiMDkvMTMvMjAxMCIgIkdpdCAxXCYuN1wmLjEiICJHaXQgTWFudWFsIgotKyAgICAjIC5USCBMRElSRUNUT1JEIDggIjIwMTAtMTAtMjAiICJwZXJsIHY1LjEyLjIiICJVc2VyIENvbnRyaWJ1dGVkIFBlcmwgRG9jdW1lbnRhdGlvbiIKLSsgICAgIyAuVEggY2NtYWtlIDEgIkZlYnJ1YXJ5IDA1LCAyMDEyIiAiY2NtYWtlIDIuOC43IgotKyAgICAjIC5USOKAgiJhcHBlbmRlci5oIuKAgjPigIIiVHVl4oCCQXVn4oCCMzHigIIyMDEwIuKAgiJWZXJzaW9u4oCCMS4yLjEi4oCCImxvZzRjIuKAglwi4oCCLSot4oCCbnJvZmbigIItKi0KLSsgICAgIyAuVEggQVJDSCAiMSIgIlNlcHRlbWJlciAyMDEwIiAiR05VIGNvcmV1dGlscyA4LjUiICJVc2VyIENvbW1hbmRzIgotKyAgICAjIC5USCAiR0NNLUNBTElCUkFURSIgIjEiICIwMyBGZWJydWFyeSAyMDEyIiAiIiAiIgotKyAgICAjLlRIIExvY2FsZTo6UG80YTo6WG1sLnBtIDNwbSAiMjAxNS0wMS0zMCIgIlBvNGEgVG9vbHMiICJQbzRhIFRvb2xzIgotKyAgICBsb2NhbCBmPSQxCi0rICAgICMgKC5USCAgIHF1b3RlZCBzZWN0aW9uKSAocXVvdGVkX2RhdGUpKCopCi0rICAgIHNlZCAtaSAtZSAnc3xeXChbWzpibGFuazpdXSpcLlRIW1s6Ymxhbms6XV1cKyJbXiJdXCsiW1s6Ymxhbms6XV1cK1teWzpibGFuazpdXVwrXClbWzpibGFuazpdXVwrXCgiW14iXVwrIlwpXChbWzpibGFuazpdXVwrLipcKVw/fFwxICJxcTIwMDAtMDEtMDEiXDN8JyAkZgotKyAgICAjICguVEggdW5xdW90ZWQgc2VjdGlvbikgKHF1b3RlZF9kYXRlKSgqKQotKyAgICBzZWQgLWkgLWUgJ3N8XlwoW1s6Ymxhbms6XV0qXC5USFtbOmJsYW5rOl1dXCtbXiJdW15bOmJsYW5rOl1dXCtbWzpibGFuazpdXVwrW15bOmJsYW5rOl1dXCtcKVtbOmJsYW5rOl1dXCtcKCJbXiJdXCsiXClcKFtbOmJsYW5rOl1dXCsuKlwpXD98XDEgInVxMjAwMC0wMi0wMiJcM3wnICRmCi0rICAgICMgKC5USCAgIHF1b3RlZCBzZWN0aW9uKSAodW5xdW90ZWRfZGF0ZSkoKikKLSsgICAgc2VkIC1pIC1lICdzfF5cKFtbOmJsYW5rOl1dKlwuVEhbWzpibGFuazpdXVwrIlteIl1cKyJbWzpibGFuazpdXVwrW15bOmJsYW5rOl1dXCtcKVtbOmJsYW5rOl1dXCtcKFteIl1bXls6Ymxhbms6XV1cK1wpXChbWzpibGFuazpdXVwrLipcKVw/fFwxIHF1MjAwMC0wMy0wM1wzfCcgJGYKLSsgICAgIyAoLlRIIHVucXVvdGVkIHNlY3Rpb24pICh1bnF1b3RlZF9kYXRlKSgqKQotKyAgICBzZWQgLWkgLWUgJ3N8XlwoW1s6Ymxhbms6XV0qXC5USFtbOmJsYW5rOl1dXCtbXiJdW15bOmJsYW5rOl1dXCtbWzpibGFuazpdXVwrW15bOmJsYW5rOl1dXCtcKVtbOmJsYW5rOl1dXCtcKFteIl1bXls6Ymxhbms6XV1cK1wpXChbWzpibGFuazpdXVwrLipcKVw/fFwxIHV1MjAwMC0wNC0wNFwzfCcgJGYKLSt9Ci0rCi0rc3RyaXBfbnVtYmVyZWRfYW5jaG9ycygpCi0rewotKyAgIyBSZW1vdmUgbnVtYmVyZWQgYW5jaG9ycyBvbiBEb2Nib29rIC8gSFRNTCBmaWxlcy4KLSsgICMgVGhpcyBzaG91bGQgYmUgc2F2ZSBzaW5jZSB3ZSByZW1vdmUgdGhlbSBmcm9tIG9sZCBhbmQgbmV3IGZpbGVzLgotKyAgIyBBIHRyYWlsaW5nIDwvYT4gb3IgPC9kaXY+IHRhZyB3aWxsIHN0YXkgYWxzbyBvbiBib3RoIGZpbGVzLgotKyAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsgICAgIHNlZCAtaSAtZSAncyU8WyBdKmFbIF1cK25hbWVbXjxdKlswLTldXCtbXjxdKiUlZycgXAotKyAgICAgLWUgJ3MlPFsgXSphWyBdXCtocmVmW148XSojW148XSpbMC05XVwrW148XSolJWcnIFwKLSsgICAgIC1lICdzJTxbXjxdKmlkPSJmdG5cLltePF0qWzAtOV1cK1tePF0qJSVnJyAkZgotKyAgZG9uZQotK30KLSsKLSsKLStjaGVja19jb21wcmVzc2VkX2ZpbGUoKQotK3sKLSsgIGxvY2FsIGZpbGU9JDEKLSsgIGxvY2FsIGV4dD0kMgotKyAgbG9jYWwgdG1wZGlyPWBta3RlbXAgLWRgCi0rICBsb2NhbCBmdHlwZQotKyAgbG9jYWwgcmV0PTAKLSsgIGVjaG8gIiRleHQgZmlsZSB3aXRoIG9kZCBmaWxlbmFtZTogJGZpbGUiCi0rICBpZiB0ZXN0IC1uICIkdG1wZGlyIjsgdGhlbgotKyAgICBta2RpciAkdG1wZGlyL3tvbGQsbmV3fQotKyAgICBjcCAtLXBhcmVudHMgLS1kZXJlZmVyZW5jZSBvbGQvJGZpbGUgJHRtcGRpci8KLSsgICAgY3AgLS1wYXJlbnRzIC0tZGVyZWZlcmVuY2UgbmV3LyRmaWxlICR0bXBkaXIvCi0rICAgIGlmIHB1c2hkICR0bXBkaXIgPiAvZGV2L251bGwgOyB0aGVuCi0rICAgICAgY2FzZSAiJGV4dCIgaW4KLSsgICAgICAgIGJ6MikKLSsgICAgICAgICAgbXYgb2xkLyRmaWxleywuYnoyfQotKyAgICAgICAgICBtdiBuZXcvJGZpbGV7LC5iejJ9Ci0rICAgICAgICAgIGJ6aXAyIC1kIG9sZC8kZmlsZS5iejIKLSsgICAgICAgICAgYnppcDIgLWQgbmV3LyRmaWxlLmJ6MgotKyAgICAgICAgICA7OwotKyAgICAgICAgZ3ppcCkKLSsgICAgICAgICAgbXYgb2xkLyRmaWxleywuZ3p9Ci0rICAgICAgICAgIG12IG5ldy8kZmlsZXssLmd6fQotKyAgICAgICAgICBnemlwIC1kIG9sZC8kZmlsZS5negotKyAgICAgICAgICBnemlwIC1kIG5ldy8kZmlsZS5negotKyAgICAgICAgICA7OwotKyAgICAgICAgeHopCi0rICAgICAgICAgIG12IG9sZC8kZmlsZXssLnh6fQotKyAgICAgICAgICBtdiBuZXcvJGZpbGV7LC54en0KLSsgICAgICAgICAgeHogLWQgb2xkLyRmaWxlLnh6Ci0rICAgICAgICAgIHh6IC1kIG5ldy8kZmlsZS54egotKyAgICAgICAgICA7OwotKyAgICAgIGVzYWMKLSsgICAgICBmdHlwZT1gL3Vzci9iaW4vZmlsZSBvbGQvJGZpbGUgfCBzZWQgJ3NAXlteOl1cKzpbWzpibGFuazpdXSpAQCdgCi0rICAgICAgY2FzZSAkZnR5cGUgaW4KLSsgICAgICAgIFBPU0lYXCB0YXJcIGFyY2hpdmUpCi0rICAgICAgICAgIGVjaG8gIiRleHQgY29udGVudCBpczogJGZ0eXBlIgotKyAgICAgICAgICBtdiBvbGQvJGZpbGV7LC50YXJ9Ci0rICAgICAgICAgIG12IG5ldy8kZmlsZXssLnRhcn0KLSsgICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAke2ZpbGV9LnRhcjsgdGhlbgotKyAgICAgICAgICAgIHJldD0xCi0rICAgICAgICAgIGZpCi0rICAgICAgICAgIDs7Ci0rICAgICAgICBBU0NJSVwgY3Bpb1wgYXJjaGl2ZVwgKikKLSsgICAgICAgICAgZWNobyAiJGV4dCBjb250ZW50IGlzOiAkZnR5cGUiCi0rICAgICAgICAgIG12IG9sZC8kZmlsZXssLmNwaW99Ci0rICAgICAgICAgIG12IG5ldy8kZmlsZXssLmNwaW99Ci0rICAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJHtmaWxlfS5jcGlvOyB0aGVuCi0rICAgICAgICAgICAgcmV0PTEKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgOzsKLSsgICAgICAgICopCi0rICAgICAgICAgIGVjaG8gInVuaGFuZGxlZCAkZXh0IGNvbnRlbnQ6ICRmdHlwZSIKLSsgICAgICAgICAgaWYgISBkaWZmX3R3b19maWxlczsgdGhlbgotKyAgICAgICAgICAgIHJldD0xCi0rICAgICAgICAgIGZpCi0rICAgICAgICAgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIHBvcGQgPiAvZGV2L251bGwKLSsgICAgZmkKLSsgICAgcm0gLXJmICIkdG1wZGlyIgotKyAgZmkKLSsgIHJldHVybiAkcmV0Ci0rfQotKwotK2NoZWNrX3NpbmdsZV9maWxlKCkKLSt7Ci0rICBsb2NhbCBmaWxlPSIkMSIKLSsgIGNhc2UgJGZpbGUgaW4KLSsgICAgKi5zcGVjKQotKyAgICAgICBzZWQgLWkgLWUgInMsUmVsZWFzZTouKiRyZWxlYXNlMSxSZWxlYXNlOiBAUkVMRUFTRUAsIiBvbGQvJGZpbGUKLSsgICAgICAgc2VkIC1pIC1lICJzLFJlbGVhc2U6LiokcmVsZWFzZTIsUmVsZWFzZTogQFJFTEVBU0VALCIgbmV3LyRmaWxlCi0rICAgICAgIDs7Ci0rICAgICouZXhlLm1kYnwqLmRsbC5tZGIpCi0rICAgICAgICMgSnVzdCBkZWJ1ZyBpbmZvcm1hdGlvbiwgd2UgY2FuIHNraXAgdGhlbQotKyAgICAgICBlY2hvICIkZmlsZSBza2lwcGVkIGFzIGRlYnVnIGZpbGUuIgotKyAgICAgICByZXR1cm4gMAotKyAgICAgICA7OwotKyAgICAqLmEpCi0rICAgICAgIGZsaXN0PWBhciB0IG5ldy8kZmlsZWAKLSsgICAgICAgcHdkPSRQV0QKLSsgICAgICAgZmRpcj1gZGlybmFtZSAkZmlsZWAKLSsgICAgICAgY2Qgb2xkLyRmZGlyCi0rICAgICAgIGFyIHggYGJhc2VuYW1lICRmaWxlYAotKyAgICAgICBjZCAkcHdkL25ldy8kZmRpcgotKyAgICAgICBhciB4IGBiYXNlbmFtZSAkZmlsZWAKLSsgICAgICAgY2QgJHB3ZAotKyAgICAgICBmb3IgZiBpbiAkZmxpc3Q7IGRvCi0rICAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJGZkaXIvJGY7IHRoZW4KLSsgICAgICAgICAgICAgcmV0dXJuIDEKLSsgICAgICAgICAgZmkKLSsgICAgICAgZG9uZQotKyAgICAgICByZXR1cm4gMAotKyAgICAgICA7OwotKyAgICAqLmNwaW8pCi0rICAgICAgIGZsaXN0PWBjcGlvIC0tcXVpZXQgLS1saXN0IC0tZm9yY2UtbG9jYWwgPCAibmV3LyRmaWxlImAKLSsgICAgICAgcHdkPSRQV0QKLSsgICAgICAgZmRpcj0kZmlsZS5leHRyYWN0LiRQUElELiQkCi0rICAgICAgIG1rZGlyIG9sZC8kZmRpciBuZXcvJGZkaXIKLSsgICAgICAgY2Qgb2xkLyRmZGlyCi0rICAgICAgIGNwaW8gLS1xdWlldCAtLWV4dHJhY3QgLS1mb3JjZS1sb2NhbCA8ICIuLi8ke2ZpbGUjIyovfSIKLSsgICAgICAgY2QgJHB3ZC9uZXcvJGZkaXIKLSsgICAgICAgY3BpbyAtLXF1aWV0IC0tZXh0cmFjdCAtLWZvcmNlLWxvY2FsIDwgIi4uLyR7ZmlsZSMjKi99IgotKyAgICAgICBjZCAkcHdkCi0rICAgICAgIGxvY2FsIHJldD0wCi0rICAgICAgIGZvciBmIGluICRmbGlzdDsgZG8KLSsgICAgICAgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICRmZGlyLyRmOyB0aGVuCi0rICAgICAgICAgICByZXQ9MQotKyAgICAgICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLSsgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgIGZpCi0rICAgICAgICAgZmkKLSsgICAgICAgZG9uZQotKyAgICAgICBybSAtcmYgb2xkLyRmZGlyIG5ldy8kZmRpcgotKyAgICAgICByZXR1cm4gJHJldAotKyAgICAgICA7OwotKyAgICAqLnRhcnwqLnRhci5iejJ8Ki50YXIuZ3p8Ki50Z3p8Ki50YnoyKQotKyAgICAgICBmbGlzdD1gdGFyIHRmIG5ldy8kZmlsZWAKLSsgICAgICAgcHdkPSRQV0QKLSsgICAgICAgZmRpcj1gZGlybmFtZSAkZmlsZWAKLSsgICAgICAgY2Qgb2xkLyRmZGlyCi0rICAgICAgIHRhciB4ZiBgYmFzZW5hbWUgJGZpbGVgCi0rICAgICAgIGNkICRwd2QvbmV3LyRmZGlyCi0rICAgICAgIHRhciB4ZiBgYmFzZW5hbWUgJGZpbGVgCi0rICAgICAgIGNkICRwd2QKLSsgICAgICAgbG9jYWwgcmV0PTAKLSsgICAgICAgZm9yIGYgaW4gJGZsaXN0OyBkbwotKyAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJGZkaXIvJGY7IHRoZW4KLSsgICAgICAgICAgIHJldD0xCi0rICAgICAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotKyAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgZmkKLSsgICAgICAgICBmaQotKyAgICAgICBkb25lCi0rICAgICAgIHJldHVybiAkcmV0Ci0rICAgICAgIDs7Ci0rICAgICouemlwfCouamFyfCoud2FyKQotKyAgICAgICBjZCBvbGQKLSsgICAgICAgdW5qYXJfbCAuLyRmaWxlIHxzb3J0ID4gZmxpc3QKLSsgICAgICAgIyAgMTAtMDUtMjAxMCAxNDozOQotKyAgICAgICBzZWQgLWkgLWUgInMsIFswLTldWzAtOV0tWzAtOV1bMC05XS1bMC05XVwrIFswLTldWzAtOV06WzAtOV1bMC05XSAsIGRhdGUgLCIgZmxpc3QKLSsgICAgICAgIyAyMDEyLTAyLTAzIDA3OjU5Ci0rICAgICAgIHNlZCAtaSAtZSAicywgMjBbMC05XVswLTldLVswLTldWzAtOV0tWzAtOV1bMC05XSBbMC05XVswLTldOlswLTldWzAtOV0gLCBkYXRlICwiIGZsaXN0Ci0rICAgICAgIGNkIC4uL25ldwotKyAgICAgICB1bmphcl9sIC4vJGZpbGUgfHNvcnQ+IGZsaXN0Ci0rICAgICAgIHNlZCAtaSAtZSAicywgWzAtOV1bMC05XS1bMC05XVswLTldLVswLTldXCsgWzAtOV1bMC05XTpbMC05XVswLTldICwgZGF0ZSAsOyAiIGZsaXN0Ci0rICAgICAgIHNlZCAtaSAtZSAicywgMjBbMC05XVswLTldLVswLTldWzAtOV0tWzAtOV1bMC05XSBbMC05XVswLTldOlswLTldWzAtOV0gLCBkYXRlICwiIGZsaXN0Ci0rICAgICAgIGNkIC4uCi0rICAgICAgIGlmICEgY21wIC1zIG9sZC9mbGlzdCBuZXcvZmxpc3Q7IHRoZW4KLSsgICAgICAgICAgZWNobyAiJGZpbGUgaGFzIGRpZmZlcmVudCBmaWxlIGxpc3QiCi0rICAgICAgICAgIGRpZmYgLXUgb2xkL2ZsaXN0IG5ldy9mbGlzdAotKyAgICAgICAgICByZXR1cm4gMQotKyAgICAgICBmaQotKyAgICAgICBmbGlzdD1gZ3JlcCBkYXRlIG5ldy9mbGlzdCB8IHNlZCAtZSAncywuKiBkYXRlICwsJ2AKLSsgICAgICAgcHdkPSRQV0QKLSsgICAgICAgZmRpcj1gZGlybmFtZSAkZmlsZWAKLSsgICAgICAgY2Qgb2xkLyRmZGlyCi0rICAgICAgIHVuamFyIGBiYXNlbmFtZSAkZmlsZWAKLSsgICAgICAgY2QgJHB3ZC9uZXcvJGZkaXIKLSsgICAgICAgdW5qYXIgYGJhc2VuYW1lICRmaWxlYAotKyAgICAgICBjZCAkcHdkCi0rICAgICAgIGxvY2FsIHJldD0wCi0rICAgICAgIGZvciBmIGluICRmbGlzdDsgZG8KLSsgICAgICAgICBpZiB0ZXN0IC1mIG5ldy8kZmRpci8kZiAmJiAhIGNoZWNrX3NpbmdsZV9maWxlICRmZGlyLyRmOyB0aGVuCi0rICAgICAgICAgICByZXQ9MQotKyAgICAgICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLSsgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgIGZpCi0rICAgICAgICAgZmkKLSsgICAgICAgZG9uZQotKyAgICAgICByZXR1cm4gJHJldDs7Ci0rICAgICAqLnB5Y3wqLnB5bykKLSsgICAgICAgIHBlcmwgLWUgIm9wZW4gZmgsICcrPCcsICdvbGQvJGZpbGUnOyBzZWVrIGZoLCA0LCBTRUVLX1NFVDsgcHJpbnQgZmggJzAwMDAnOyIKLSsgICAgICAgIHBlcmwgLWUgIm9wZW4gZmgsICcrPCcsICduZXcvJGZpbGUnOyBzZWVrIGZoLCA0LCBTRUVLX1NFVDsgcHJpbnQgZmggJzAwMDAnOyIKLSsgICAgICAgIDs7Ci0rICAgICAqLmJ6MikKLSsgICAgICAgIGJ1bnppcDIgLWMgb2xkLyRmaWxlID4gb2xkLyR7ZmlsZS8uYnoyL30KLSsgICAgICAgIGJ1bnppcDIgLWMgbmV3LyRmaWxlID4gbmV3LyR7ZmlsZS8uYnoyL30KLSsgICAgICAgIGNoZWNrX3NpbmdsZV9maWxlICR7ZmlsZS8uYnoyL30KLSsgICAgICAgIHJldHVybiAkPwotKyAgICAgICAgOzsKLSsgICAgICouZ3opCi0rICAgICAgICBndW56aXAgLWMgb2xkLyRmaWxlID4gb2xkLyR7ZmlsZS8uZ3ovfQotKyAgICAgICAgZ3VuemlwIC1jIG5ldy8kZmlsZSA+IG5ldy8ke2ZpbGUvLmd6L30KLSsgICAgICAgIGNoZWNrX3NpbmdsZV9maWxlICR7ZmlsZS8uZ3ovfQotKyAgICAgICAgcmV0dXJuICQ/Ci0rICAgICAgICA7OwotKyAgICAgKi5ycG0pCi0rCSRzZWxmX3NjcmlwdCAtYSBvbGQvJGZpbGUgbmV3LyRmaWxlCi0rICAgICAgICByZXR1cm4gJD8KLSsgICAgICAgIDs7Ci0rICAgICAqcG5nKQotKwkjIFRyeSB0byByZW1vdmUgdGltZXN0YW1wcywgb25seSBpZiBjb252ZXJ0IGZyb20gSW1hZ2VNYWdpY2sgaXMgaW5zdGFsbGVkCi0rICAgICAgICBpZiBbWyAkKHR5cGUgLXAgY29udmVydCkgXV07IHRoZW4KLSsJICBjb252ZXJ0IG9sZC8kZmlsZSArc2V0IGRhdGU6Y3JlYXRlICtzZXQgZGF0ZTptb2RpZnkgb2xkLyR7ZmlsZS8ucG5nL19uLnBuZ30KLSsJICBjb252ZXJ0IG9sZC8kZmlsZSArc2V0IGRhdGU6Y3JlYXRlICtzZXQgZGF0ZTptb2RpZnkgbmV3LyR7ZmlsZS8ucG5nL19uLnBuZ30KLSsJICBpZiAhIGNtcCAtcyBvbGQvJHtmaWxlLy5wbmcvX24ucG5nfSBuZXcvJHtmaWxlLy5wbmcvX24ucG5nfTsgdGhlbgotKwkgICAgICBlY2hvICIkZmlsZSBkaWZmZXJzICgkZnR5cGUpIgotKwkgICAgICBoZXhkdW1wIC1DIG9sZC8ke2ZpbGUvLnBuZy9fbi5wbmd9ID4gJGZpbGUxCi0rCSAgICAgIGhleGR1bXAgLUMgbmV3LyR7ZmlsZS8ucG5nL19uLnBuZ30gPiAkZmlsZTIKLSsJICAgICAgZGlmZiAtdSAkZmlsZTEgJGZpbGUyIHwgaGVhZCAtbiAyMAotKwkgICAgICByZXR1cm4gMQotKwkgIGZpCi0rCSAgcmV0dXJuIDAKLSsJZmkKLSsgICAgICAgIDs7Ci0rICAgICAvdXNyL3NoYXJlL2xvY2FsZS8qL0xDX01FU1NBR0VTLyoubW98L3Vzci9zaGFyZS9sb2NhbGUtYnVuZGxlLyovTENfTUVTU0FHRVMvKi5tbykKLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsgICAgICAgICBzZWQgLWkgLWUgInMsUE9ULUNyZWF0aW9uLURhdGU6IC4uLi4tLi4tLi4gLi46Li4rLi4uLixQT1QtQ3JlYXRpb24tRGF0ZTogMTk3MC0wMS0wMSAwMDowMCswMDAwLCIgJGYKLSsgICAgICAgZG9uZQotKyAgICAgICA7OwotKyAgICAgL3Vzci9zaGFyZS9kb2MvcGFja2FnZXMvKi8qLmh0bWx8XAotKyAgICAgL3Vzci9zaGFyZS9kb2Mva2RlL0hUTUwvKi8qLyouaHRtbHwvdXNyL3NoYXJlL2RvYy8qL2h0bWwvKi5odG1sKQotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKyAgICAgICAgICMgdGV4aTJodG1sIG91dHB1dCwgZS5nLiBpbiBrdm0sIGluZGVudCwgcWVtdQotKwkgc2VkIC1pIC1lICJzfF48IS0tIENyZWF0ZWQgb24gLiosIDIwLi4gYnkgdGV4aTJodG1sIC5cLi4ufDwhLS0gQ3JlYXRlZCBvbiBBdWd1c3QgNywgMjAwOSBieSB0ZXhpMmh0bWwgMS44MnwiICRmCi0rCSBzZWQgLWkgLWUgJ3N8XiAqVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkIGJ5IDxlbT5BdXRvYnVpbGQ8L2VtPiBvbiA8ZW0+LiosIDIwLi48L2VtPiB1c2luZyA8YSBocmVmPSJodHRwOi8vd3d3Lm5vbmdudS5vcmcvdGV4aTJodG1sLyI+PGVtPnRleGkyaHRtbCAuXC4uLjwvZW0+PC9hPi4kfCAgVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkIGJ5IDxlbT5BdXRvYnVpbGQ8L2VtPiBvbiA8ZW0+QXVndXN0IDcsIDIwMDk8L2VtPiB1c2luZyA8YSBocmVmPSJodHRwOi8vd3d3Lm5vbmdudS5vcmcvdGV4aTJodG1sLyI+PGVtPnRleGkyaHRtbCAxLjgyPC9lbT48L2E+LnwnICRmCi0rCSAjIGRveHlnZW4gZG9jdSwgZS5nLiBpbiBsaWJzc2ggYW5kIGxvZzRjCi0rCSBzZWQgLWkgLWUgJ3N8R2VuZXJhdGVkIG9uIC4uLiAuLi4gWzAtOV0qIFswLTldKjpbMC05XVswLTldOlswLTldWzAtOV0gMjBbMC05XVswLTldIGZvciB8R2VuZXJhdGVkIG9uIE1vbiBNYXkgMTAgMjA6NDU6MDAgMjAxMCBmb3IgfCcgJGYKLSsJICMgR2VuZXJhdGVkIG9uIFNhdCBBdWcgMTQgMjAxMCAxNjo0OTo0OCBmb3IgbGlic3NoCi0rCSBzZWQgLWkgLWUgJ3N8R2VuZXJhdGVkIG9uIC4uLiAuLi4gWzAtOV0qIDIwWzAtOV1bMC05XSBbMC05XSo6WzAtOV1bMC05XTpbMC05XVswLTldIGZvciB8R2VuZXJhdGVkIG9uIE1vbiBNYXkgMTAgMjA6NDU6MDAgMjAxMCBmb3IgfCcgJGYKLSsgICAgICAgZG9uZQotKyAgICAgICBzdHJpcF9udW1iZXJlZF9hbmNob3JzCi0rICAgICAgIDs7Ci0rICAgICAvdXNyL3NoYXJlL2phdmFkb2MvKi5odG1sIHxcCi0rICAgICAvdXNyL3NoYXJlL2phdmFkb2MvKi8qLmh0bWx8L3Vzci9zaGFyZS9qYXZhZG9jLyovKi8qLmh0bWwpCi0rICAgICAgIHN0cmlwX251bWJlcmVkX2FuY2hvcnMKLSsgICAgICAgIyBUaGVyZSBhcmUgbW9yZSB0aW1lc3RhbXBzIGluIGh0bWwsIHNvIGZhciB3ZSBoYW5kbGUgb25seSBzb21lIHByaW1pdGl2ZSB2ZXJzaW9ucy4KLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsgICAgICAgICAjIEphdmFkb2M6Ci0rICAgICAgICAgICMgPGhlYWQ+Ci0rICAgICAgICAgICMgPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAodmVyc2lvbiAxLjcuMF83NSkgb24gVHVlIEZlYiAwMyAwMjoyMDoxMiBHTVQgMjAxNSAtLT4KLSsgICAgICAgICAgIyA8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFR1ZSBGZWIgMDMgMDA6MDI6NDggR01UIDIwMTUgLS0+Ci0rICAgICAgICAgICMgPG1ldGEgbmFtZT0iZGF0ZSIgY29udGVudD0iMjAxNS0wMi0wMyI+Ci0rICAgICAgICAgICMgPC9oZWFkPgotKyAgICAgICAgICBzZWQgLWkgLWUgJwotKyAgICAgICAgICAgIC9ePGhlYWQ+L3sKLSsgICAgICAgICAgICAgIDogbmV4dAotKyAgICAgICAgICAgICAgbgotKyAgICAgICAgICAgICAgL148XC9oZWFkPi97Ci0rICAgICAgICAgICAgICAgIGIgZW5kX2hlYWQKLSsgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgIHMvXlwoPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvY1wpIFwoKFwoYnVpbGRcfHZlcnNpb25cKSBbMC05Ll9dXCspIG9uIC4uLiAuLi4gLi4gLi46Li46Li4gXChHTVRcfFVUQ1wpIC4uLi5cKSBcKC0tPlwpL1wxIHNvbWUtZGF0ZS1yZW1vdmVkLWJ5LWJ1aWxkLWNvbXBhcmUgXDUvCi0rICAgICAgICAgICAgICB0IG5leHQKLSsgICAgICAgICAgICAgIHMvXlwoPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvY1wpIFwob24gLi4uIC4uLiAuLiAuLjouLjouLiBcKEdNVFx8VVRDXCkgLi4uLlwpIFwoLS0+XCkvXDEgc29tZS1kYXRlLXJlbW92ZWQtYnktYnVpbGQtY29tcGFyZSBcMy8KLSsgICAgICAgICAgICAgIHQgbmV4dAotKyAgICAgICAgICAgICAgcy9ePG1ldGEgbmFtZT0iZGF0ZSIgY29udGVudD0iWzAtOV1cezRcfS1bMC05XVx7Mlx9LVswLTldXHsyXH0iPi88bWV0YSBuYW1lPSJkYXRlIiBjb250ZW50PSJzb21lLWRhdGUtcmVtb3ZlZC1ieS1idWlsZC1jb21wYXJlIj4vCi0rICAgICAgICAgICAgICBiIG5leHQKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgOiBlbmRfaGVhZAotKyAgICAgICAgICAnICRmCi0rICAgICAgICAgIyBHamRvYyBIdG1sRG9jbGV0OgotKwkgc2VkIC1pIC1lICdzJUdlbmVyYXRlZCBieSBHamRvYyBIdG1sRG9jbGV0IFswLTksLl0qLCBwYXJ0IG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jbGFzc3BhdGgvY3AtdG9vbHMvIiB0aXRsZT0iIiB0YXJnZXQ9Il90b3AiPkdOVSBDbGFzc3BhdGggVG9vbHM8L2E+LCBvbiAuKiwgMjAuLiBbMC05XSo6Li46Li4gXChhXHxwXClcLm1cLiBHTVQuJUdlbmVyYXRlZCBieSBHamRvYy4lJyAkZgotKwkgc2VkIC1pIC1lICdzJTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vZ251Lm9yZy8vL0RURCBYSFRNTCAxLjEgcGx1cyBUYXJnZXQgMS4wLy9FTiJcKC4qXClHTlUgQ2xhc3NwYXRoIFRvb2xzPC9hPiwgb24gW0EtWl1bYS16XSogWzAtOV0qLCAyMD8/IFswLTldKjo/Pzo/PyBcKGF8cFwpXC5tXC4gR01ULjwvcD4lPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9nbnUub3JnLy8vRFREIFhIVE1MIDEuMSBwbHVzIFRhcmdldCAxLjAvL0VOIlwxR05VIENsYXNzcGF0aCBUb29sczwvYT4sIG9uIEphbnVhcnkgMSwgMjAwOSAwOjAwOjAwIGEubS4gR01ULjwvcD4lJyAkZgotKwkgc2VkIC1pIC1lICdzJTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vZ251Lm9yZy8vL0RURFwoLipHTlUgQ2xhc3NwYXRoIFRvb2xzPC9hPlwpLCBvbiBbYS16QS1aXSogWzAtOV1bMC05XSwgMjAuLiBbMC05XSo6Li46Li4gXChhXHxwXClcLm1cLiBHTVQuPC9wPiU8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL2dudS5vcmcvLy9EVERcMSxvbiBNYXkgMSwgMjAxMCAxOjExOjQyIHAubS4gR01ULjwvcD4lJyAkZgotKwkgIyBkZXByZWNhdGVkLWxpc3QgaXMgcmFuZG9tbHkgb3JkZXJlZCwgc29ydCBpdCBmb3IgY29tcGFyaXNvbgotKwkgY2FzZSAkZiBpbgotKwkgICAqL2RlcHJlY2F0ZWQtbGlzdC5odG1sKQotKwkgICAgIHNvcnQgLW8gJGYgJGYKLSsJICAgICA7OwotKwkgZXNhYwotKyAgICAgICBkb25lCi0rICAgICAgIDs7Ci0rICAgICAvdXNyL3NoYXJlL2phdmFkb2MvZ2pkb2MucHJvcGVydGllcyB8XAotKyAgICAgL3Vzci9zaGFyZS9qYXZhZG9jLyovZ2pkb2MucHJvcGVydGllcykKLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsJIHNlZCAtaSAtZSAnc3xeI1tBLVpdW2Etel1cezJcfSBbQS1aXVthLXpdXHsyXH0gWzAtOV1cezJcfSAuLjouLjouLiBHTVQgMjAuLiR8I0ZyaSBKYW4gMDEgMTE6Mjc6MzYgR01UIDIwMDl8JyAkZgotKyAgICAgICBkb25lCi0rICAgICAgIDs7Ci0rICAgICAqL2ZvbnRzLnNjYWxlfCovZm9udHMuZGlyfCovZW5jb2RpbmdzLmRpcikKLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsgICAgICAgICAjIHNvcnQgZmlsZXMgYmVmb3JlIGNvbXBhcmluZwotKyAgICAgICAgIHNvcnQgLW8gJGYgJGYKLSsgICAgICAgZG9uZQotKyAgICAgICA7OwotKyAgICAgL3Zhci9hZG0vcGVybC1tb2R1bGVzLyopCi0rICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0rICAgICAgICAgc2VkIC1pIC1lICdzfF49aGVhZDIgLi4uIC4uLiAuLiAuLjouLjouLiAuLi4uOiBDPE1vZHVsZT58PWhlYWQyIFdlZCBKdWwgIDEgMDA6MDA6MDAgMjAwOTogQzxNb2R1bGU+fCcgJGYKLSsgICAgICAgZG9uZQotKyAgICAgICA7OwotKyAgICAgL3Vzci9zaGFyZS9tYW4vbWFuMy8qM3BtKQotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKyAgICAgICAgIHNlZCAtaSAtZSAnc3wgMyAiMjAuLi0uLi0uLiIgInBlcmwgdjUuLi4uLiIgIlVzZXIgQ29udHJpYnV0ZWQgUGVybCBEb2N1bWVudGF0aW9uIiR8IDMgIjIwMDktMDEtMDEiICJwZXJsIHY1LjEwLjAiICJVc2VyIENvbnRyaWJ1dGVkIFBlcmwgRG9jdW1lbnRhdGlvbiJ8JyAkZgotKyAgICAgICAgIHRyaW1fbWFuX1RIICRmCi0rICAgICAgICAgdHJpbV9tYW5fZmlyc3RfbGluZSAkZgotKyAgICAgICBkb25lCi0rICAgICAgIDs7Ci0rICAgICAvdXNyL3NoYXJlL21hbi8qL21hbip8L3Vzci9zaGFyZS9tYW4vbWFuKnwvdXNyL2xpYi90ZXhtZi9kb2MvbWFuLyovKikKLSsKLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsgICAgICAgICB0cmltX21hbl9USCAkZgotKyAgICAgICAgIHRyaW1fbWFuX2ZpcnN0X2xpbmUgJGYKLSsgICAgICAgICAjIGdlbmVyYXRlZCBieSBkb2Nib29rIHhtbDoKLSsgICAgICAgICAjLlwiICAgICAgRGF0ZTogMDkvMTMvMjAxMAotKyAgICAgICAgIHNlZCAtaSAtZSAnc3xEYXRlOiBbMC0xXVswLTldL1swLTldWzAtOV0vMjAxWzAtOV18RGF0ZTogMDkvMTMvMjAxMHwnICRmCi0rICAgICAgIGRvbmUKLSsgICAgICAgOzsKLSsgICAgICouZWxjKQotKyAgICAgICAjIGVtYWNzIGxpc3AgZmlsZXMKLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsgICAgICAgICBzZWQgLWkgLWUgJ3N8Q29tcGlsZWQgYnkgYWJ1aWxkQC4qIG9uIC4uLiAuLi4gLi4gLi46Li46Li4gMjAuLiR8Y29tcGlsZWQgYnkgYWJ1aWxkQGJ1aWxkaG9zdCBvbiBXZWQgSnVsIDAxIDAwOjAwOjAwIDIwMDl8JyAkZgotKyAgICAgICBkb25lCi0rICAgICAgIDs7Ci0rICAgICAvdmFyL2xpYi90ZXhtZi93ZWIyYy8qLypmbXQgfFwKLSsgICAgIC92YXIvbGliL3RleG1mL3dlYjJjL21ldGFmb250LyouYmFzZXxcCi0rICAgICAvdmFyL2xpYi90ZXhtZi93ZWIyYy9tZXRhcG9zdC8qLm1lbSkKLSsgICAgICAgIyBiaW5hcnkgZHVtcCBvZiBUZVggYW5kIE1ldGFmb250IGZvcm1hdHMsIHdlIGNhbiBpZ25vcmUgdGhlbSBmb3IgZ29vZAotKyAgICAgICBlY2hvICJkaWZmZXJlbmNlIGluICRmaWxlIGlnbm9yZWQuIgotKyAgICAgICByZXR1cm4gMAotKyAgICAgICA7OwotKyAgICAgKi9saWJ0b29sKQotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKwkgIHNlZCAtaSAtZSAnc3xeIyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgW0EtWmEtejAtOV0qOiR8IyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgeDQyOnwnICRmCi0rICAgICAgIGRvbmUKLSsgICAgICAgOzsKLSsgICAgIC9ldGMvbWFpbC8qY2Z8L2V0Yy9zZW5kbWFpbC5jZikKLSsgICAgICAgIyBmcm9tIHNlbmRtYWlsIHBhY2thZ2UKLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsJICAjIC0gIyMjIyMgYnVpbHQgYnkgYWJ1aWxkQGJ1aWxkMzMgb24gVGh1IE1heSA2IDExOjIxOjE3IFVUQyAyMDEwCi0rCSAgc2VkIC1pIC1lICdzfGJ1aWx0IGJ5IGFidWlsZEBbYS16MC05XSogb24gLi4uIC4uLiBbMC05XSogWzAtOV0qOlswLTldWzAtOV06WzAtOV1bMC05XSAuKiAyMFswLTldWzAtOV18YnVpbHQgYnkgYWJ1aWxkQGJ1aWxkNDIgb24gVGh1IE1heSA2IDExOjIxOjE3IFVUQyAyMDEwfCcgJGYKLSsgICAgICAgZG9uZQotKyAgICAgICA7OwotKyAgICAgL3Vzci9zaGFyZS9kb2Mva2RlL0hUTUwvKi8qL2luZGV4LmNhY2hlfC91c3Ivc2hhcmUvZG9jL2tkZS9IVE1MLyovKi8qL2luZGV4LmNhY2hlfFwKLSsgICAgIC91c3Ivc2hhcmUvZ3RrLWRvYy9odG1sLyovKi5odG1sfC91c3Ivc2hhcmUvZ3RrLWRvYy9odG1sLyovKi5kZXZoZWxwMikKLSsgICAgICAgIyB2YXJpb3VzIGtkZSBhbmQgZ3RrIHBhY2thZ2VzCi0rICAgICAgIHN0cmlwX251bWJlcmVkX2FuY2hvcnMKLSsgICAgICAgOzsKLSsgICAgKi9jcmVhdGVkLnJpZCkKLSsgICAgICAgIyBydWJ5IGRvY3VtZW50YXRpb24KLSsgICAgICAgIyBmaWxlIGp1c3QgY29udGFpbnMgYSB0aW1lc3RhbXAgYW5kIG5vdGhpbmcgZWxzZSwgc28gaWdub3JlIGl0Ci0rICAgICAgIGVjaG8gIklnbm9yZSAkZmlsZSIKLSsgICAgICAgcmV0dXJuIDAKLSsgICAgICAgOzsKLSsgICAgKi9yZG9jL2ZpbGVzLyouaHRtbCkKLSsgICAgICAgIyBydWJ5IGRvY3VtZW50YXRpb24KLSsgICAgICAgIyA8dGQ+TW9u4oCCU2Vw4oCCMjDigIIxOTowMjo0M+KAgiswMDAw4oCCMjAxMDwvdGQ+Ci0rICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0rICAgICAgICAgIHNlZCAtaSAtZSAncyU8dGQ+W0EtWl1bYS16XVthLXpdIFtBLVpdW2Etel1bYS16XSBbMC05XVwrIFswLTldXCs6WzAtOV1cKzpbMC05XVwrICswMDAwIDIwMVswLTldPC90ZD4lPHRkPk1vbuKAglNlcOKAgjIw4oCCMTk6MDI6NDPigIIrMDAwMOKAgjIwMTA8L3RkPiVnJyAkZgotKyAgICAgICBkb25lCi0rICAgICAgIHN0cmlwX251bWJlcmVkX2FuY2hvcnMKLSsgICAgICAgOzsKLSsgICAgKi9MaW51eCpFbnYuU2V0LnNoKQotKyAgICAgICAjIExpYnJlT2ZmaWNlIGZpbGVzLCBjb250YWluczoKLSsgICAgICAgIyBHZW5lcmF0ZWQgb246IE1vbiBBcHIgMTggMTM6MTk6MjIgVVRDIDIwMTEKLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsJIHNlZCAtaSAtZSAncyVeIyBHZW5lcmF0ZWQgb246LipVVEMgMjAxWzAtOV0gKiQlIyBHZW5lcmF0ZWQgb246IFNvbWV0aW1lJWcnICRmCi0rICAgICAgIGRvbmUKLSsgICAgICAgOzsKLSsgICAgL3Vzci9saWIvbGlicmVvZmZpY2Uvc29sdmVyL2luYy8qL2RlbGl2ZXIubG9nKQotKyAgICAgICAjIExpYnJlT2ZmaWNlIGxvZyBmaWxlCi0rICAgICAgZWNobyAiSWdub3JlICRmaWxlIgotKyAgICAgIHJldHVybiAwCi0rICAgICAgOzsKLSsgICAgL3Zhci9hZG0vdXBkYXRlLW1lc3NhZ2VzLyp8L3Zhci9hZG0vdXBkYXRlLXNjcmlwdHMvKikKLSsgICAgICAjIGVuY29kZSB2ZXJzaW9uLXJlbGVhc2UgaW5zaWRlCi0rICAgICAgb2xkZm49YGVjaG8gIiRmaWxlInxzZWQgLWUgcy8tJHJlbGVhc2UyLy0kcmVsZWFzZTEvO2AKLSsKLSsgICAgICAjIGZldGNobXN0dGZvbnRzIGVtYmVkcyB0aGUgcmVsZWFzZSBudW1iZXIgaW4gdGhlIHVwZGF0ZSBzaGVsbCBzY3JpcHQuCi0rICAgICAgZWNobyBzZWQgLWkgLWUgInMvLSRyZWxlYXNlMS8tJHJlbGVhc2UyL2c7IiAib2xkLyRvbGRmbiIKLSsgICAgICBzZWQgLWkgLWUgInMvLSRyZWxlYXNlMS8tJHJlbGVhc2UyL2c7IiAib2xkLyRvbGRmbiIKLSsKLSsgICAgICBpZiAhIGRpZmYgLXUgb2xkLyRvbGRmbiBuZXcvJGZpbGU7IHRoZW4KLSsgICAgICAgICAgIGVjaG8gIiRvbGRmbiBpcyBub3Qgc2FtZSBhcyAkZmlsZSIKLSsgICAgICAgICAgIHJldHVybiAxCi0rICAgICAgZmkKLSsgICAgICBlY2hvICIkZmlsZSBhbmQgJG9sZGZuIGFyZSBzYW1lIgotKyAgICAgIHJldHVybiAwCi0rICAgICAgOzsKLSsgICAgKi5wcykKLSsgICAgICBmb3IgZiBpbiAib2xkLyRmaWxlIiAibmV3LyRmaWxlIjsgZG8KLSsgICAgICAgIHNlZCAtaSAtZSAnCi0rICAgICAgICAgIC9eJSVDcmVhdGlvbkRhdGU6W1s6Ymxhbms6XV0vZAotKyAgICAgICAgICAvXiUlQ3JlYXRvcjpbWzpibGFuazpdXWdyb2ZmW1s6Ymxhbms6XV12ZXJzaW9uW1s6Ymxhbms6XV0vZAotKyAgICAgICAgICAvXiVEVklQU1NvdXJjZTpbWzpibGFuazpdXS9kCi0rICAgICAgICAnICIkZiIKLSsgICAgICBkb25lCi0rICAgIDs7Ci0rICAgICpwZGYpCi0rICAgICAgIyBQREYgZmlsZXMgY29udGFpbiBhIHVuaXF1ZSBJRCwgcmVtb3ZlIGl0Ci0rICAgICAgIyBGb3JtYXQgb2YgdGhlIElEIGlzOgotKyAgICAgICMgL0lEIFs8OUFDRTI0N0E3MENGOUJFQUZFRTE1RTExNjI1OUJENkQ+IDw5QUNFMjQ3QTcwQ0Y5QkVBRkVFMTVFMTE2MjU5QkQ2RD5dCi0rICAgICAgIyB3aXRoIG9wdGlvbmFsIHNwYWNlcy4gcGRmdGV4IGNyZWF0ZXMgYWxzbzoKLSsgICAgICAjIC9DcmVhdGlvbkRhdGUgKEQ6MjAxMjAxMDMwODMyMDZaKQotKyAgICAgICMgL01vZERhdGUgKEQ6MjAxMjAxMDMwODMyMDZaKQotKyAgICAgICMgYW5kIHBvc3NpYmx5IFhNTCBtZXRhZGF0YSBhcyB3ZWxsCi0rICAgICAgZm9yIGYgaW4gIm9sZC8kZmlsZSIgIm5ldy8kZmlsZSI7IGRvCi0rICAgICAgICBzZWQgLWkgXAotKyAgICAgICAgICAgICcvb2JqLywvZW5kb2JqL3sKLSsgICAgICAgICAgICAgICBzJS9JRCBcP1xbIFw/PFtePl1cKz4gXD88W14+XVwrPiBcP1xdJS9JRHJhbmRvbSVnOwotKyAgICAgICAgICAgICAgIHMlL0NyZWF0aW9uRGF0ZSBcPyhEOlteKV0qKSUvQ3JlYXRpb25EYXRlIChEOiBYWFgpJWc7Ci0rICAgICAgICAgICAgICAgcyUvTW9kRGF0ZSBcPyhEOlteKV0qKSUvTW9kRGF0ZSAoRDogWFhYKSVnOwotKyAgICAgICAgICAgICAgIHMlPHBkZjpDcmVhdGlvbkRhdGU+W148XSo8L3BkZjpDcmVhdGlvbkRhdGU+JTxwZGY6Q3JlYXRpb25EYXRlPlhYWDwvcGRmOkNyZWF0aW9uRGF0ZT4lZzsKLSsgICAgICAgICAgICAgICBzJTxwZGY6TW9kRGF0ZT5bXjxdKjwvcGRmOk1vZERhdGU+JTxwZGY6TW9kRGF0ZT5YWFg8L3BkZjpNb2REYXRlPiVnOwotKyAgICAgICAgICAgICAgIHMlPHhhcDpDcmVhdGVEYXRlPltePF0qPC94YXA6Q3JlYXRlRGF0ZT4lPHhhcDpDcmVhdGVEYXRlPlhYWDwveGFwOkNyZWF0ZURhdGU+JWc7Ci0rICAgICAgICAgICAgICAgcyU8eGFwOk1vZGlmeURhdGU+W148XSo8L3hhcDpNb2RpZnlEYXRlPiU8eGFwOk1vZGlmeURhdGU+WFhYPC94YXA6TW9kaWZ5RGF0ZT4lZzsKLSsgICAgICAgICAgICAgICBzJTx4YXA6TWV0YWRhdGFEYXRlPltePF0qPC94YXA6TWV0YWRhdGFEYXRlPiU8eGFwOk1ldGFkYXRhRGF0ZT5YWFg8L3hhcDpNZXRhZGF0YURhdGU+JWc7Ci0rICAgICAgICAgICAgfScgIiRmIgotKyAgICAgIGRvbmUKLSsgICAgICA7OwotKyAgZXNhYwotKwotKyAgZnR5cGU9YC91c3IvYmluL2ZpbGUgb2xkLyRmaWxlIHwgc2VkICdzQF5bXjpdXCs6W1s6Ymxhbms6XV0qQEAnYAotKyAgY2FzZSAkZnR5cGUgaW4KLSsgICAgIFBFMzJcIGV4ZWN1dGFibGUqTW9ub1wvXC5OZXRcIGFzc2VtYmx5KikKLSsgICAgICAgZWNobyAiUEUzMiBNb25vLy5OZXQgYXNzZW1ibHk6ICRmaWxlIgotKyAgICAgICBpZiBbIC14IC91c3IvYmluL21vbm9kaXMgXSA7IHRoZW4KLSsgICAgICAgICBtb25vZGlzIG9sZC8kZmlsZSAyPi9kZXYvbnVsbHxzZWQgLWUgJ3MvR1VJRCA9IHsuKn0vR1VJRCA9IHsgNDIgfS87Jz4gJHtmaWxlMX0KLSsgICAgICAgICBtb25vZGlzIG5ldy8kZmlsZSAyPi9kZXYvbnVsbHxzZWQgLWUgJ3MvR1VJRCA9IHsuKn0vR1VJRCA9IHsgNDIgfS87Jz4gJHtmaWxlMn0KLSsgICAgICAgICBpZiAhIGNtcCAtcyAke2ZpbGUxfSAke2ZpbGUyfTsgdGhlbgotKyAgICAgICAgICAgZWNobyAiJGZpbGUgZGlmZmVycyAoJGZ0eXBlKSIKLSsgICAgICAgICAgIGRpZmYgLXUgJHtmaWxlMX0gJHtmaWxlMn0KLSsgICAgICAgICAgIHJldHVybiAxCi0rICAgICAgICAgZmkKLSsgICAgICAgZWxzZQotKyAgICAgICAgIGVjaG8gIkNhbm5vdCBjb21wYXJlLCBubyBtb25vZGlzIGluc3RhbGxlZCIKLSsgICAgICAgICByZXR1cm4gMQotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICBFTEYqZXhlY3V0YWJsZSp8RUxGKltMTV1TQlwgc2hhcmVkXCBvYmplY3QqKQotKyAgICAgICBvYmpkdW1wIC1kIC0tbm8tc2hvdy1yYXctaW5zbiBvbGQvJGZpbGUgfCBmaWx0ZXJfZGlzYXNtID4gJGZpbGUxCi0rICAgICAgIGlmICEgdGVzdCAtcyAkZmlsZTE7IHRoZW4KLSsgICAgICAgICAjIG9iamR1bXAgaGFzIG5vIGlkZWEgaG93IHRvIGhhbmRsZSBpdAotKyAgICAgICAgIGlmICEgZGlmZl90d29fZmlsZXM7IHRoZW4KLSsgICAgICAgICAgIHJldD0xCi0rICAgICAgICAgICBicmVhawotKyAgICAgICAgIGZpCi0rICAgICAgIGZpICAgICAgIAotKyAgICAgICBlbGZkaWZmPQotKyAgICAgICBzZWQgLWkgLWUgInMsb2xkLywsIiAkZmlsZTEKLSsgICAgICAgb2JqZHVtcCAtZCAtLW5vLXNob3ctcmF3LWluc24gbmV3LyRmaWxlIHwgZmlsdGVyX2Rpc2FzbSA+ICRmaWxlMgotKyAgICAgICBzZWQgLWkgLWUgInMsbmV3LywsIiAkZmlsZTIKLSsgICAgICAgaWYgISBkaWZmIC11ICRmaWxlMSAkZmlsZTIgPiAkZGZpbGU7IHRoZW4KLSsgICAgICAgICAgZWNobyAiJGZpbGUgZGlmZmVycyBpbiBhc3NlbWJsZXIgb3V0cHV0IgotKyAgICAgICAgICBoZWFkIC1uIDIwMCAkZGZpbGUKLSsgICAgICAgICAgZWxmZGlmZj0iMSIKLSsgICAgICAgZmkKLSsgICAgICAgZWNobyAiIiA+JGZpbGUxCi0rICAgICAgIGVjaG8gIiIgPiRmaWxlMgotKyAgICAgICAjIERvbid0IGNvbXBhcmUgLmJ1aWxkLWlkIGFuZCAuZ251X2RlYnVnbGluayBzZWN0aW9ucwotKyAgICAgICBzZWN0aW9ucz0iJChvYmpkdW1wIC1zIG5ldy8kZmlsZSB8IGdyZXAgIkNvbnRlbnRzIG9mIHNlY3Rpb24gLio6IiB8IHNlZCAtciAicywuKiAoLiopOixcMSxnIiB8IGdyZXAgLXYgLWUgIlwuYnVpbGQtaWQiIC1lICJcLmdudV9kZWJ1Z2xpbmsiIHwgdHIgIlxuIiAiICIpIgotKyAgICAgICBmb3Igc2VjdGlvbiBpbiAkc2VjdGlvbnM7IGRvCi0rICAgICAgICAgIG9iamR1bXAgLXMgLWogJHNlY3Rpb24gb2xkLyRmaWxlIHwgc2VkICJzLF5vbGQvLCwiID4gJGZpbGUxCi0rICAgICAgICAgIG9iamR1bXAgLXMgLWogJHNlY3Rpb24gbmV3LyRmaWxlIHwgc2VkICJzLF5uZXcvLCwiID4gJGZpbGUyCi0rICAgICAgICAgIGlmICEgZGlmZiAtdSAkZmlsZTEgJGZpbGUyID4gJGRmaWxlOyB0aGVuCi0rICAgICAgICAgICAgIGVjaG8gIiRmaWxlIGRpZmZlcnMgaW4gRUxGIHNlY3Rpb24gJHNlY3Rpb24iCi0rICAgICAgICAgICAgIGhlYWQgLW4gMjAwICRkZmlsZQotKyAgICAgICAgICAgICBlbGZkaWZmPSIxIgotKyAgICAgICAgICBmaQotKyAgICAgICBkb25lCi0rICAgICAgIGlmIHRlc3QgLXogIiRlbGZkaWZmIjsgdGhlbgotKyAgICAgICAgICBlY2hvICIkZmlsZTogb25seSBkaWZmZXJlbmNlIHdhcyBpbiBidWlsZC1pZCBvciBnbnVfZGVidWdsaW5rLCBHT09ELiIKLSsgICAgICAgICAgcmV0dXJuIDAKLSsgICAgICAgZmkKLSsgICAgICAgcmV0dXJuIDEKLSsgICAgICAgOzsKLSsgICAgICpBU0NJSSp8KnRleHQqKQotKyAgICAgICBpZiAhIGNtcCAtcyBvbGQvJGZpbGUgbmV3LyRmaWxlOyB0aGVuCi0rICAgICAgICAgZWNobyAiJGZpbGUgZGlmZmVycyAoJGZ0eXBlKSIKLSsgICAgICAgICBkaWZmIC11IG9sZC8kZmlsZSBuZXcvJGZpbGUgfCBoZWFkIC1uIDIwMAotKyAgICAgICAgIHJldHVybiAxCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICBkaXJlY3Rvcnl8c2V0dWlkLFwgZGlyZWN0b3J5fHN0aWNreSxcIGRpcmVjdG9yeSkKLSsgICAgICAgIyB0YXIgbWlnaHQgcGFja2FnZSBkaXJlY3RvcmllcyAtIGlnbm9yZSB0aGVtIGhlcmUKLSsgICAgICAgcmV0dXJuIDAKLSsgICAgICAgOzsKLSsgICAgIGJ6aXAyXCBjb21wcmVzc2VkXCBkYXRhKikKLSsgICAgICAgaWYgISBjaGVja19jb21wcmVzc2VkX2ZpbGUgIiRmaWxlIiAiYnoyIjsgdGhlbgotKyAgICAgICAgICAgcmV0dXJuIDEKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgICAgIGd6aXBcIGNvbXByZXNzZWRcIGRhdGEqKQotKyAgICAgICBpZiAhIGNoZWNrX2NvbXByZXNzZWRfZmlsZSAiJGZpbGUiICJnemlwIjsgdGhlbgotKyAgICAgICAgICAgcmV0dXJuIDEKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgICAgIFhaXCBjb21wcmVzc2VkXCBkYXRhKikKLSsgICAgICAgaWYgISBjaGVja19jb21wcmVzc2VkX2ZpbGUgIiRmaWxlIiAieHoiOyB0aGVuCi0rICAgICAgICAgICByZXR1cm4gMQotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAgUE9TSVhcIHRhclwgYXJjaGl2ZSkKLSsgICAgICAgICAgbXYgb2xkLyRmaWxleywudGFyfQotKyAgICAgICAgICBtdiBuZXcvJGZpbGV7LC50YXJ9Ci0rICAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJHtmaWxlfS50YXI7IHRoZW4KLSsgICAgICAgICAgICByZXR1cm4gMQotKyAgICAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAgY3Bpb1wgYXJjaGl2ZSkKLSsgICAgICAgICAgbXYgb2xkLyRmaWxleywuY3Bpb30KLSsgICAgICAgICAgbXYgbmV3LyRmaWxleywuY3Bpb30KLSsgICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAke2ZpbGV9LmNwaW87IHRoZW4KLSsgICAgICAgICAgICByZXR1cm4gMQotKyAgICAgICAgICBmaQotKyAgICAgOzsKLSsgICAgIHN5bWJvbGljXCBsaW5rXCB0b1wgKikKLSsgICAgICAgcmVhZGxpbmsgIm9sZC8kZmlsZSIgPiAkZmlsZTEKLSsgICAgICAgcmVhZGxpbmsgIm5ldy8kZmlsZSIgPiAkZmlsZTIKLSsgICAgICAgaWYgISBkaWZmIC11ICRmaWxlMSAkZmlsZTI7IHRoZW4KLSsgICAgICAgICBlY2hvICJzeW1saW5rIHRhcmdldCBmb3IgJGZpbGUgZGlmZmVycyIKLSsgICAgICAgICByZXR1cm4gMQotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAgKikKLSsgICAgICAgaWYgISBkaWZmX3R3b19maWxlczsgdGhlbgotKyAgICAgICAgICAgcmV0dXJuIDEKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSsgIHJldHVybiAwCi0rfQotKwotKyMgV2UgbmVlZCAvcHJvYyBtb3VudGVkIGZvciBzb21lIHRlc3RzLCBzbyBjaGVjayB0aGF0IGl0J3MgbW91bnRlZCBhbmQKLSsjIGNvbXBsYWluIGlmIG5vdC4KLStQUk9DX01PVU5URUQ9MAotK2lmIFsgISAtZCAvcHJvYy9zZWxmLyBdOyB0aGVuCi0rICBlY2hvICIvcHJvYyBpcyBub3QgbW91bnRlZCIKLSsgIG1vdW50IC1vcncgLW4gLXRwcm9jIG5vbmUgL3Byb2MKLSsgIFBST0NfTU9VTlRFRD0xCi0rZmkKLSsKLSsjIHByZXNlcnZlIGNtcF9zcGVjIHJlc3VsdCBmb3IgY2hlY2tfYWxsIHJ1bnMKLStyZXQ9JFJFUwotK2ZvciBmaWxlIGluICRmaWxlczsgZG8KLSsgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICRmaWxlOyB0aGVuCi0rICAgICAgIHJldD0xCi0rICAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0rICAgICAgICAgICBicmVhawotKyAgICAgICBmaQotKyAgIGZpCi0rZG9uZQotKwotK2lmIFsgIiRQUk9DX01PVU5URUQiIC1lcSAiMSIgXTsgdGhlbgotKyAgZWNobyAiVW5tb3VudGluZyBwcm9jIgotKyAgdW1vdW50IC9wcm9jCi0rZmkKLSsKLStybSAkZmlsZTEgJGZpbGUyICRkZmlsZSAkcmVuYW1lX3NjcmlwdAotK3JtIC1yZiAkZGlyCi0raWYgdGVzdCAiJHJldCIgPSAwOyB0aGVuCi0rICAgICBlY2hvICJQYWNrYWdlIGNvbnRlbnQgaXMgaWRlbnRpY2FsIgotK2ZpCi0rZXhpdCAkcmV0Ci0rIyB2aW06IHR3PTY2NiB0cz0yIGV0Ci1kaWZmIC0tZ2l0IGEvcnBtLWNoZWNrLnNoIGIvcnBtLWNoZWNrLnNoCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IGRkNDc2NDIuLjAwMDAwMDAKLS0tLSBhL3JwbS1jaGVjay5zaAotKysrIC9kZXYvbnVsbAotQEAgLTEsNzY0ICswLDAgQEAKLS0jISAvYmluL2Jhc2gKLS0jCi0tIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgU1VTRSBMaW51eCBQcm9kdWN0IEdtYkgsIEdlcm1hbnkuCi0tIyBMaWNlbnNlZCB1bmRlciBHUEwgdjIsIHNlZSBDT1BZSU5HIGZpbGUgZm9yIGRldGFpbHMuCi0tIwotLSMgV3JpdHRlbiBieSBNaWNoYWVsIE1hdHogYW5kIFN0ZXBoYW4gQ29vbG8KLS0jIEVuaGFuY2VkIGJ5IEFuZHJlYXMgSmFlZ2VyCi0tCi0tRlVOQ1RJT05TPSR7MCUvKn0vZnVuY3Rpb25zLnNoCi0tCi0tY2hlY2tfYWxsPQotLWNhc2UgJDEgaW4KLS0gIC1hIHwgLS1jaGVjay1hbGwpCi0tICAgIGNoZWNrX2FsbD0xCi0tICAgIHNoaWZ0Ci0tZXNhYwotLQotLWlmIHRlc3QgIiQjIiAhPSAyOyB0aGVuCi0tICAgZWNobyAidXNhZ2U6ICQwIFstYXwtLWNoZWNrLWFsbF0gb2xkLnJwbSBuZXcucnBtIgotLSAgIGV4aXQgMQotLWZpCi0tCi0tc2VsZl9zY3JpcHQ9JChjZCAkKGRpcm5hbWUgJDApOyBlY2hvICQocHdkKS8kKGJhc2VuYW1lICQwKSkKLS0KLS1zb3VyY2UgJEZVTkNUSU9OUwotLQotLW9sZHBrZz1gcmVhZGxpbmsgLWYgJDFgCi0tbmV3cGtnPWByZWFkbGluayAtZiAkMmAKLS1yZW5hbWVfc2NyaXB0PWBta3RlbXBgCi0tCi0taWYgdGVzdCAhIC1mICIkb2xkcGtnIjsgdGhlbgotLSAgICBlY2hvICJjYW4ndCBvcGVuICQxIgotLSAgICBleGl0IDEKLS1maQotLQotLWlmIHRlc3QgISAtZiAiJG5ld3BrZyI7IHRoZW4KLS0gICAgZWNobyAiY2FuJ3Qgb3BlbiAkMiIKLS0gICAgZXhpdCAxCi0tZmkKLS0KLS0jdXNhZ2UgdW5qYXIgPGZpbGU+Ci0tZnVuY3Rpb24gdW5qYXIoKQotLXsKLS0gICAgbG9jYWwgZmlsZQotLSAgICBmaWxlPSQxCi0tCi0tICAgIGlmIFtbICQodHlwZSAtcCBmYXN0amFyKSBdXTsgdGhlbgotLSAgICAgICAgVU5KQVI9ZmFzdGphcgotLSAgICBlbGlmIFtbICQodHlwZSAtcCBqYXIpIF1dOyB0aGVuCi0tICAgICAgICBVTkpBUj1qYXIKLS0gICAgZWxpZiBbWyAkKHR5cGUgLXAgdW56aXApIF1dOyB0aGVuCi0tICAgICAgICBVTkpBUj11bnppcAotLSAgICBlbHNlCi0tICAgICAgICBlY2hvICJFUlJPUjogamFyLCBmYXN0amFyLCBvciB1bnppcCBpcyBub3QgaW5zdGFsbGVkICh0cnlpbmcgZmlsZSAkZmlsZSkiCi0tICAgICAgICBleGl0IDEKLS0gICAgZmkKLS0KLS0gICAgY2FzZSAkVU5KQVIgaW4KLS0gICAgICAgIGphcnxmYXN0amFyKQotLSAgICAgICAgIyBlY2hvIGphciAteGYgJGZpbGUKLS0gICAgICAgICR7VU5KQVJ9IC14ZiAkZmlsZQotLSAgICAgICAgOzsKLS0gICAgICAgIHVuemlwKQotLSAgICAgICAgdW56aXAgLW9xcSAkZmlsZQotLSAgICAgICAgOzsKLS0gICAgZXNhYwotLX0KLS0KLS0jIGxpc3QgZmlsZXMgaW4gZGlyZWN0b3J5Ci0tI3VzYWdlIHVuamFyX2wgPGZpbGU+Ci0tZnVuY3Rpb24gdW5qYXJfbCgpCi0tewotLSAgICBsb2NhbCBmaWxlCi0tICAgIGZpbGU9JDEKLS0KLS0gICAgaWYgW1sgJCh0eXBlIC1wIGZhc3RqYXIpIF1dOyB0aGVuCi0tICAgICAgICBVTkpBUj1mYXN0amFyCi0tICAgIGVsaWYgW1sgJCh0eXBlIC1wIGphcikgXV07IHRoZW4KLS0gICAgICAgIFVOSkFSPWphcgotLSAgICBlbGlmIFtbICQodHlwZSAtcCB1bnppcCkgXV07IHRoZW4KLS0gICAgICAgIFVOSkFSPXVuemlwCi0tICAgIGVsc2UKLS0gICAgICAgIGVjaG8gIkVSUk9SOiBqYXIsIGZhc3RqYXIsIG9yIHVuemlwIGlzIG5vdCBpbnN0YWxsZWQgKHRyeWluZyBmaWxlICRmaWxlKSIKLS0gICAgICAgIGV4aXQgMQotLSAgICBmaQotLQotLSAgICBjYXNlICRVTkpBUiBpbgotLSAgICAgICAgamFyfGZhc3RqYXIpCi0tICAgICAgICAke1VOSkFSfSAtdGYgJGZpbGUKLS0gICAgICAgIDs7Ci0tICAgICAgICB1bnppcCkKLS0gICAgICAgIHVuemlwIC1sICRmaWxlCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tfQotLQotLWZpbHRlcl9kaXNhc20oKQotLXsKLS0gICBzZWQgLWUgJ3MvXiAqWzAtOWEtZl1cKzovLycgLWUgJ3MvXCQweFswLTlhLWZdXCsvJHNvbWV0aGluZy8nIC1lICdzL2NhbGxxICpbMC05YS1mXVwrL2NhbGxxIC8nIC1lICdzLyMgKlswLTlhLWZdXCsvIyAgLycgLWUgJ3MvXCgweFwpXD9bMC05YS1mXVwrKC9vZmZzZXQoLycgLWUgJ3MvWzAtOWEtZl1cKyA8LzwvJyAtZSAncy9ePFwoLipcKT46L1wxOi8nIC1lICdzLzxcKC4qXCkrMHhbMC05YS1mXVwrPi88XDEgKyBvZnM+LycgCi0tfQotLQotLWVjaG8gIkNvbXBhcmluZyBgYmFzZW5hbWUgJG9sZHBrZ2AgdG8gYGJhc2VuYW1lICRuZXdwa2dgIgotLQotLWNhc2UgJG9sZHBrZyBpbgotLSAgKi5ycG0pCi0tICAgICBjbXBfc3BlYyAkcmVuYW1lX3NjcmlwdCAkb2xkcGtnICRuZXdwa2cKLS0gICAgIFJFUz0kPwotLSAgICAgY2FzZSAkUkVTIGluCi0tICAgICAgIDApCi0tICAgICAgICAgIGVjaG8gIlJQTSBtZXRhIGluZm9ybWF0aW9uIGlzIGlkZW50aWNhbCIKLS0gICAgICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLS0gICAgICAgICAgICAgZXhpdCAwCi0tICAgICAgICAgIGZpCi0tICAgICAgICAgIDs7Ci0tICAgICAgIDEpCi0tICAgICAgICAgIGVjaG8gIlJQTSBtZXRhIGluZm9ybWF0aW9uIGlzIGRpZmZlcmVudCIKLS0gICAgICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLS0gICAgICAgICAgICAgZXhpdCAxCi0tICAgICAgICAgIGZpCi0tICAgICAgICAgIDs7Ci0tICAgICAgIDIpCi0tICAgICAgICAgIGVjaG8gIlJQTSBmaWxlIGNoZWNrc3VtIGRpZmZlcnMuIgotLSAgICAgICAgICBSRVM9MAotLSAgICAgICAgICA7OwotLSAgICAgICAqKQotLSAgICAgICAgICBlY2hvICJXcm9uZyBleGl0IGNvZGUhIgotLSAgICAgICAgICBleGl0IDEKLS0gICAgICAgICAgOzsKLS0gICAgIGVzYWMKLS0gICAgIDs7Ci0tZXNhYwotLQotLWZpbGUxPWBta3RlbXBgCi0tZmlsZTI9YG1rdGVtcGAKLS0KLS1kaXI9YG1rdGVtcCAtZGAKLS1lY2hvICJFeHRyYWN0aW5nIHBhY2thZ2VzIgotLXVucGFja2FnZSAkb2xkcGtnICRkaXIvb2xkCi0tdW5wYWNrYWdlICRuZXdwa2cgJGRpci9uZXcKLS0KLS0jIGZpbGVzIGlzIHNldCBpbiBjbXBfc3BlYyBmb3IgcnBtcywgc28gaWYgUkVTIGlzIGVtcHR5IHdlIHNob3VsZCBhc3N1bWUKLS0jIGl0IHdhc24ndCBhbiBycG0gYW5kIHBpY2sgYWxsIGZpbGVzIGZvciBjb21wYXJpc29uLgotLWlmIFsgLXogJFJFUyBdOyB0aGVuCi0tICAgIG9sZGZpbGVzPWBjZCAkZGlyL29sZDsgZmluZCAuIC10eXBlIGZgCi0tICAgIG5ld2ZpbGVzPWBjZCAkZGlyL25ldzsgZmluZCAuIC10eXBlIGZgCi0tCi0tICAgIGZpbGVzPWBlY2hvIC1lICIkb2xkZmlsZXNcbiRuZXdmaWxlcyIgfCBzb3J0IC11YAotLWZpCi0tCi0tY2QgJGRpcgotLWJhc2ggJHJlbmFtZV9zY3JpcHQKLS0KLS1kZmlsZT1gbWt0ZW1wYAotLQotLWRpZmZfdHdvX2ZpbGVzKCkKLS17Ci0tICBpZiAhIGNtcCAtcyBvbGQvJGZpbGUgbmV3LyRmaWxlOyB0aGVuCi0tICAgICBlY2hvICIkZmlsZSBkaWZmZXJzICgkZnR5cGUpIgotLSAgICAgaGV4ZHVtcCAtQyBvbGQvJGZpbGUgPiAkZmlsZTEKLS0gICAgIGhleGR1bXAgLUMgbmV3LyRmaWxlID4gJGZpbGUyCi0tICAgICBkaWZmIC11ICRmaWxlMSAkZmlsZTIgfCBoZWFkIC1uIDIwMAotLSAgICAgcmV0dXJuIDEKLS0gIGZpCi0tICByZXR1cm4gMAotLX0KLS0KLS10cmltX21hbl9maXJzdF9saW5lKCkKLS17Ci0tICAgICMgSGFuZGxlcyB0aGUgZmlyc3QgbGluZSBpZiBpdCBpcyBsaWtlOgotLSAgICAjLlwiIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IFBvZDo6TWFuIDIuMjggKFBvZDo6U2ltcGxlIDMuMjgpCi0tICAgICMuXCIgRE8gTk9UIE1PRElGWSBUSElTIEZJTEUhICBJdCB3YXMgZ2VuZXJhdGVkIGJ5IGhlbHAybWFuIDEuNDMuMy4KLS0gICAgbG9jYWwgZj0kMQotLSAgICBzZWQgLWkgLWUgJzF7Ci0tICAgIHN8XlwuXFwiW1s6Ymxhbms6XV1cK0F1dG9tYXRpY2FsbHlbWzpibGFuazpdXWdlbmVyYXRlZFtbOmJsYW5rOl1dYnlbWzpibGFuazpdXVBvZDo6TWFuW1s6Ymxhbms6XV0uKnwuXFwiIE92ZXJseSB2ZXJib3NlIFBvZDo6TWFufAotLSAgICBzfF5cLlxcIltbOmJsYW5rOl1dXCtET1tbOmJsYW5rOl1dTk9UW1s6Ymxhbms6XV1NT0RJRllbWzpibGFuazpdXVRISVNbWzpibGFuazpdXUZJTEUhW1s6Ymxhbms6XV1cK0l0W1s6Ymxhbms6XV13YXNbWzpibGFuazpdXWdlbmVyYXRlZFtbOmJsYW5rOl1dYnlbWzpibGFuazpdXWhlbHAybWFuW1s6Ymxhbms6XV0uKnwuXFwiIE92ZXJseSB2ZXJib3NlIGhlbHAybWFufAotLSAgICB9JyAkZgotLX0KLS0KLS10cmltX21hbl9USCgpCi0tewotLSAgICAjIEhhbmRsZXMgbGluZXMgbGlrZToKLS0gICAgIyAuVEggZGViaGVscGVyIDcgIjIwMTAtMDItMjciICI3LjQuMTUiICJEZWJoZWxwZXIiCi0tICAgICMgLlRIIERJUk1OR1ItQ0xJRU5UIDEgMjAxMC0wMi0yNyAiRGlybW5nciAxLjAuMyIgIkdOVSBQcml2YWN5IEd1YXJkIgotLSAgICAjIC5USCBjY21ha2UgMSAiTWFyY2ggMDYsIDIwMTAiICJjY21ha2UgMi44LjEtcmMzIgotLSAgICAjIC5USCBRRU1VLUlNRyAxICIyMDEwLTAzLTE0IiAiICIgIiAiCi0tICAgICMgLlRIIGtkZWNtYWtlIDEgIk1heSAwNywgMjAxMCIgImNtYWtlIDIuOC4xIgotLSAgICAjIC5USCAiYXBwZW5kZXIuaCIgMyAiMTIgTWF5IDIwMTAiICJWZXJzaW9uIDEuMi4xIiAibG9nNGMiIFwiIC0qLSBucm9mZiAtKi0KLS0gICAgIyAuVEjigIIiYXBwZW5kZXIuaCLigIIz4oCCIlR1ZeKAgkF1Z+KAgjMx4oCCMjAxMCLigIIiVmVyc2lvbuKAgjEuMi4xIuKAgiJsb2c0YyLigIJcIuKAgi0qLeKAgm5yb2Zm4oCCLSotCi0tICAgICMgLlRIICJPRkZMSU5FSU1BUCIgIjEiICIxMSBNYXkgMjAxMCIgIkpvaG4gR29lcnplbiIgIk9mZmxpbmVJTUFQIE1hbnVhbCIKLS0gICAgIyAuVEggZ3YgM2d1aWxlICIxMyBNYXkgMjAxMCIKLS0gICAgIy5USCAiR0lUXC1BUkNISU1QT1JUIiAiMSIgIjA5LzEzLzIwMTAiICJHaXQgMVwmLjdcJi4xIiAiR2l0IE1hbnVhbCIKLS0gICAgIyAuVEggTERJUkVDVE9SRCA4ICIyMDEwLTEwLTIwIiAicGVybCB2NS4xMi4yIiAiVXNlciBDb250cmlidXRlZCBQZXJsIERvY3VtZW50YXRpb24iCi0tICAgICMgLlRIIGNjbWFrZSAxICJGZWJydWFyeSAwNSwgMjAxMiIgImNjbWFrZSAyLjguNyIKLS0gICAgIyAuVEjigIIiYXBwZW5kZXIuaCLigIIz4oCCIlR1ZeKAgkF1Z+KAgjMx4oCCMjAxMCLigIIiVmVyc2lvbuKAgjEuMi4xIuKAgiJsb2c0YyLigIJcIuKAgi0qLeKAgm5yb2Zm4oCCLSotCi0tICAgICMgLlRIIEFSQ0ggIjEiICJTZXB0ZW1iZXIgMjAxMCIgIkdOVSBjb3JldXRpbHMgOC41IiAiVXNlciBDb21tYW5kcyIKLS0gICAgIyAuVEggIkdDTS1DQUxJQlJBVEUiICIxIiAiMDMgRmVicnVhcnkgMjAxMiIgIiIgIiIKLS0gICAgIy5USCBMb2NhbGU6OlBvNGE6OlhtbC5wbSAzcG0gIjIwMTUtMDEtMzAiICJQbzRhIFRvb2xzIiAiUG80YSBUb29scyIKLS0gICAgbG9jYWwgZj0kMQotLSAgICAjICguVEggICBxdW90ZWQgc2VjdGlvbikgKHF1b3RlZF9kYXRlKSgqKQotLSAgICBzZWQgLWkgLWUgJ3N8XlwoW1s6Ymxhbms6XV0qXC5USFtbOmJsYW5rOl1dXCsiW14iXVwrIltbOmJsYW5rOl1dXCtbXls6Ymxhbms6XV1cK1wpW1s6Ymxhbms6XV1cK1woIlteIl1cKyJcKVwoW1s6Ymxhbms6XV1cKy4qXClcP3xcMSAicXEyMDAwLTAxLTAxIlwzfCcgJGYKLS0gICAgIyAoLlRIIHVucXVvdGVkIHNlY3Rpb24pIChxdW90ZWRfZGF0ZSkoKikKLS0gICAgc2VkIC1pIC1lICdzfF5cKFtbOmJsYW5rOl1dKlwuVEhbWzpibGFuazpdXVwrW14iXVteWzpibGFuazpdXVwrW1s6Ymxhbms6XV1cK1teWzpibGFuazpdXVwrXClbWzpibGFuazpdXVwrXCgiW14iXVwrIlwpXChbWzpibGFuazpdXVwrLipcKVw/fFwxICJ1cTIwMDAtMDItMDIiXDN8JyAkZgotLSAgICAjICguVEggICBxdW90ZWQgc2VjdGlvbikgKHVucXVvdGVkX2RhdGUpKCopCi0tICAgIHNlZCAtaSAtZSAnc3xeXChbWzpibGFuazpdXSpcLlRIW1s6Ymxhbms6XV1cKyJbXiJdXCsiW1s6Ymxhbms6XV1cK1teWzpibGFuazpdXVwrXClbWzpibGFuazpdXVwrXChbXiJdW15bOmJsYW5rOl1dXCtcKVwoW1s6Ymxhbms6XV1cKy4qXClcP3xcMSBxdTIwMDAtMDMtMDNcM3wnICRmCi0tICAgICMgKC5USCB1bnF1b3RlZCBzZWN0aW9uKSAodW5xdW90ZWRfZGF0ZSkoKikKLS0gICAgc2VkIC1pIC1lICdzfF5cKFtbOmJsYW5rOl1dKlwuVEhbWzpibGFuazpdXVwrW14iXVteWzpibGFuazpdXVwrW1s6Ymxhbms6XV1cK1teWzpibGFuazpdXVwrXClbWzpibGFuazpdXVwrXChbXiJdW15bOmJsYW5rOl1dXCtcKVwoW1s6Ymxhbms6XV1cKy4qXClcP3xcMSB1dTIwMDAtMDQtMDRcM3wnICRmCi0tfQotLQotLXN0cmlwX251bWJlcmVkX2FuY2hvcnMoKQotLXsKLS0gICMgUmVtb3ZlIG51bWJlcmVkIGFuY2hvcnMgb24gRG9jYm9vayAvIEhUTUwgZmlsZXMuCi0tICAjIFRoaXMgc2hvdWxkIGJlIHNhdmUgc2luY2Ugd2UgcmVtb3ZlIHRoZW0gZnJvbSBvbGQgYW5kIG5ldyBmaWxlcy4KLS0gICMgQSB0cmFpbGluZyA8L2E+IG9yIDwvZGl2PiB0YWcgd2lsbCBzdGF5IGFsc28gb24gYm90aCBmaWxlcy4KLS0gIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tICAgICBzZWQgLWkgLWUgJ3MlPFsgXSphWyBdXCtuYW1lW148XSpbMC05XVwrW148XSolJWcnIFwKLS0gICAgIC1lICdzJTxbIF0qYVsgXVwraHJlZltePF0qI1tePF0qWzAtOV1cK1tePF0qJSVnJyBcCi0tICAgICAtZSAncyU8W148XSppZD0iZnRuXC5bXjxdKlswLTldXCtbXjxdKiUlZycgJGYKLS0gIGRvbmUKLS19Ci0tCi0tCi0tY2hlY2tfY29tcHJlc3NlZF9maWxlKCkKLS17Ci0tICBsb2NhbCBmaWxlPSQxCi0tICBsb2NhbCBleHQ9JDIKLS0gIGxvY2FsIHRtcGRpcj1gbWt0ZW1wIC1kYAotLSAgbG9jYWwgZnR5cGUKLS0gIGxvY2FsIHJldD0wCi0tICBlY2hvICIkZXh0IGZpbGUgd2l0aCBvZGQgZmlsZW5hbWU6ICRmaWxlIgotLSAgaWYgdGVzdCAtbiAiJHRtcGRpciI7IHRoZW4KLS0gICAgbWtkaXIgJHRtcGRpci97b2xkLG5ld30KLS0gICAgY3AgLS1wYXJlbnRzIC0tZGVyZWZlcmVuY2Ugb2xkLyRmaWxlICR0bXBkaXIvCi0tICAgIGNwIC0tcGFyZW50cyAtLWRlcmVmZXJlbmNlIG5ldy8kZmlsZSAkdG1wZGlyLwotLSAgICBpZiBwdXNoZCAkdG1wZGlyID4gL2Rldi9udWxsIDsgdGhlbgotLSAgICAgIGNhc2UgIiRleHQiIGluCi0tICAgICAgICBiejIpCi0tICAgICAgICAgIG12IG9sZC8kZmlsZXssLmJ6Mn0KLS0gICAgICAgICAgbXYgbmV3LyRmaWxleywuYnoyfQotLSAgICAgICAgICBiemlwMiAtZCBvbGQvJGZpbGUuYnoyCi0tICAgICAgICAgIGJ6aXAyIC1kIG5ldy8kZmlsZS5iejIKLS0gICAgICAgICAgOzsKLS0gICAgICAgIGd6aXApCi0tICAgICAgICAgIG12IG9sZC8kZmlsZXssLmd6fQotLSAgICAgICAgICBtdiBuZXcvJGZpbGV7LC5nen0KLS0gICAgICAgICAgZ3ppcCAtZCBvbGQvJGZpbGUuZ3oKLS0gICAgICAgICAgZ3ppcCAtZCBuZXcvJGZpbGUuZ3oKLS0gICAgICAgICAgOzsKLS0gICAgICAgIHh6KQotLSAgICAgICAgICBtdiBvbGQvJGZpbGV7LC54en0KLS0gICAgICAgICAgbXYgbmV3LyRmaWxleywueHp9Ci0tICAgICAgICAgIHh6IC1kIG9sZC8kZmlsZS54egotLSAgICAgICAgICB4eiAtZCBuZXcvJGZpbGUueHoKLS0gICAgICAgICAgOzsKLS0gICAgICBlc2FjCi0tICAgICAgZnR5cGU9YC91c3IvYmluL2ZpbGUgb2xkLyRmaWxlIHwgc2VkICdzQF5bXjpdXCs6W1s6Ymxhbms6XV0qQEAnYAotLSAgICAgIGNhc2UgJGZ0eXBlIGluCi0tICAgICAgICBQT1NJWFwgdGFyXCBhcmNoaXZlKQotLSAgICAgICAgICBlY2hvICIkZXh0IGNvbnRlbnQgaXM6ICRmdHlwZSIKLS0gICAgICAgICAgbXYgb2xkLyRmaWxleywudGFyfQotLSAgICAgICAgICBtdiBuZXcvJGZpbGV7LC50YXJ9Ci0tICAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJHtmaWxlfS50YXI7IHRoZW4KLS0gICAgICAgICAgICByZXQ9MQotLSAgICAgICAgICBmaQotLSAgICAgICAgICA7OwotLSAgICAgICAgQVNDSUlcIGNwaW9cIGFyY2hpdmVcICopCi0tICAgICAgICAgIGVjaG8gIiRleHQgY29udGVudCBpczogJGZ0eXBlIgotLSAgICAgICAgICBtdiBvbGQvJGZpbGV7LC5jcGlvfQotLSAgICAgICAgICBtdiBuZXcvJGZpbGV7LC5jcGlvfQotLSAgICAgICAgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICR7ZmlsZX0uY3BpbzsgdGhlbgotLSAgICAgICAgICAgIHJldD0xCi0tICAgICAgICAgIGZpCi0tICAgICAgICAgIDs7Ci0tICAgICAgICAqKQotLSAgICAgICAgICBlY2hvICJ1bmhhbmRsZWQgJGV4dCBjb250ZW50OiAkZnR5cGUiCi0tICAgICAgICAgIGlmICEgZGlmZl90d29fZmlsZXM7IHRoZW4KLS0gICAgICAgICAgICByZXQ9MQotLSAgICAgICAgICBmaQotLSAgICAgICAgICA7OwotLSAgICAgIGVzYWMKLS0gICAgICBwb3BkID4gL2Rldi9udWxsCi0tICAgIGZpCi0tICAgIHJtIC1yZiAiJHRtcGRpciIKLS0gIGZpCi0tICByZXR1cm4gJHJldAotLX0KLS0KLS1jaGVja19zaW5nbGVfZmlsZSgpCi0tewotLSAgbG9jYWwgZmlsZT0iJDEiCi0tICBjYXNlICRmaWxlIGluCi0tICAgICouc3BlYykKLS0gICAgICAgc2VkIC1pIC1lICJzLFJlbGVhc2U6LiokcmVsZWFzZTEsUmVsZWFzZTogQFJFTEVBU0VALCIgb2xkLyRmaWxlCi0tICAgICAgIHNlZCAtaSAtZSAicyxSZWxlYXNlOi4qJHJlbGVhc2UyLFJlbGVhc2U6IEBSRUxFQVNFQCwiIG5ldy8kZmlsZQotLSAgICAgICA7OwotLSAgICAqLmV4ZS5tZGJ8Ki5kbGwubWRiKQotLSAgICAgICAjIEp1c3QgZGVidWcgaW5mb3JtYXRpb24sIHdlIGNhbiBza2lwIHRoZW0KLS0gICAgICAgZWNobyAiJGZpbGUgc2tpcHBlZCBhcyBkZWJ1ZyBmaWxlLiIKLS0gICAgICAgcmV0dXJuIDAKLS0gICAgICAgOzsKLS0gICAgKi5hKQotLSAgICAgICBmbGlzdD1gYXIgdCBuZXcvJGZpbGVgCi0tICAgICAgIHB3ZD0kUFdECi0tICAgICAgIGZkaXI9YGRpcm5hbWUgJGZpbGVgCi0tICAgICAgIGNkIG9sZC8kZmRpcgotLSAgICAgICBhciB4IGBiYXNlbmFtZSAkZmlsZWAKLS0gICAgICAgY2QgJHB3ZC9uZXcvJGZkaXIKLS0gICAgICAgYXIgeCBgYmFzZW5hbWUgJGZpbGVgCi0tICAgICAgIGNkICRwd2QKLS0gICAgICAgZm9yIGYgaW4gJGZsaXN0OyBkbwotLSAgICAgICAgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICRmZGlyLyRmOyB0aGVuCi0tICAgICAgICAgICAgIHJldHVybiAxCi0tICAgICAgICAgIGZpCi0tICAgICAgIGRvbmUKLS0gICAgICAgcmV0dXJuIDAKLS0gICAgICAgOzsKLS0gICAgKi5jcGlvKQotLSAgICAgICBmbGlzdD1gY3BpbyAtLXF1aWV0IC0tbGlzdCAtLWZvcmNlLWxvY2FsIDwgIm5ldy8kZmlsZSJgCi0tICAgICAgIHB3ZD0kUFdECi0tICAgICAgIGZkaXI9JGZpbGUuZXh0cmFjdC4kUFBJRC4kJAotLSAgICAgICBta2RpciBvbGQvJGZkaXIgbmV3LyRmZGlyCi0tICAgICAgIGNkIG9sZC8kZmRpcgotLSAgICAgICBjcGlvIC0tcXVpZXQgLS1leHRyYWN0IC0tZm9yY2UtbG9jYWwgPCAiLi4vJHtmaWxlIyMqL30iCi0tICAgICAgIGNkICRwd2QvbmV3LyRmZGlyCi0tICAgICAgIGNwaW8gLS1xdWlldCAtLWV4dHJhY3QgLS1mb3JjZS1sb2NhbCA8ICIuLi8ke2ZpbGUjIyovfSIKLS0gICAgICAgY2QgJHB3ZAotLSAgICAgICBsb2NhbCByZXQ9MAotLSAgICAgICBmb3IgZiBpbiAkZmxpc3Q7IGRvCi0tICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAkZmRpci8kZjsgdGhlbgotLSAgICAgICAgICAgcmV0PTEKLS0gICAgICAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0tICAgICAgICAgICAgIGJyZWFrCi0tICAgICAgICAgICBmaQotLSAgICAgICAgIGZpCi0tICAgICAgIGRvbmUKLS0gICAgICAgcm0gLXJmIG9sZC8kZmRpciBuZXcvJGZkaXIKLS0gICAgICAgcmV0dXJuICRyZXQKLS0gICAgICAgOzsKLS0gICAgKi50YXJ8Ki50YXIuYnoyfCoudGFyLmd6fCoudGd6fCoudGJ6MikKLS0gICAgICAgZmxpc3Q9YHRhciB0ZiBuZXcvJGZpbGVgCi0tICAgICAgIHB3ZD0kUFdECi0tICAgICAgIGZkaXI9YGRpcm5hbWUgJGZpbGVgCi0tICAgICAgIGNkIG9sZC8kZmRpcgotLSAgICAgICB0YXIgeGYgYGJhc2VuYW1lICRmaWxlYAotLSAgICAgICBjZCAkcHdkL25ldy8kZmRpcgotLSAgICAgICB0YXIgeGYgYGJhc2VuYW1lICRmaWxlYAotLSAgICAgICBjZCAkcHdkCi0tICAgICAgIGxvY2FsIHJldD0wCi0tICAgICAgIGZvciBmIGluICRmbGlzdDsgZG8KLS0gICAgICAgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICRmZGlyLyRmOyB0aGVuCi0tICAgICAgICAgICByZXQ9MQotLSAgICAgICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLS0gICAgICAgICAgICAgYnJlYWsKLS0gICAgICAgICAgIGZpCi0tICAgICAgICAgZmkKLS0gICAgICAgZG9uZQotLSAgICAgICByZXR1cm4gJHJldAotLSAgICAgICA7OwotLSAgICAqLnppcHwqLmphcnwqLndhcikKLS0gICAgICAgY2Qgb2xkCi0tICAgICAgIHVuamFyX2wgLi8kZmlsZSB8c29ydCA+IGZsaXN0Ci0tICAgICAgICMgIDEwLTA1LTIwMTAgMTQ6MzkKLS0gICAgICAgc2VkIC1pIC1lICJzLCBbMC05XVswLTldLVswLTldWzAtOV0tWzAtOV1cKyBbMC05XVswLTldOlswLTldWzAtOV0gLCBkYXRlICwiIGZsaXN0Ci0tICAgICAgICMgMjAxMi0wMi0wMyAwNzo1OQotLSAgICAgICBzZWQgLWkgLWUgInMsIDIwWzAtOV1bMC05XS1bMC05XVswLTldLVswLTldWzAtOV0gWzAtOV1bMC05XTpbMC05XVswLTldICwgZGF0ZSAsIiBmbGlzdAotLSAgICAgICBjZCAuLi9uZXcKLS0gICAgICAgdW5qYXJfbCAuLyRmaWxlIHxzb3J0PiBmbGlzdAotLSAgICAgICBzZWQgLWkgLWUgInMsIFswLTldWzAtOV0tWzAtOV1bMC05XS1bMC05XVwrIFswLTldWzAtOV06WzAtOV1bMC05XSAsIGRhdGUgLDsgIiBmbGlzdAotLSAgICAgICBzZWQgLWkgLWUgInMsIDIwWzAtOV1bMC05XS1bMC05XVswLTldLVswLTldWzAtOV0gWzAtOV1bMC05XTpbMC05XVswLTldICwgZGF0ZSAsIiBmbGlzdAotLSAgICAgICBjZCAuLgotLSAgICAgICBpZiAhIGNtcCAtcyBvbGQvZmxpc3QgbmV3L2ZsaXN0OyB0aGVuCi0tICAgICAgICAgIGVjaG8gIiRmaWxlIGhhcyBkaWZmZXJlbnQgZmlsZSBsaXN0IgotLSAgICAgICAgICBkaWZmIC11IG9sZC9mbGlzdCBuZXcvZmxpc3QKLS0gICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgZmkKLS0gICAgICAgZmxpc3Q9YGdyZXAgZGF0ZSBuZXcvZmxpc3QgfCBzZWQgLWUgJ3MsLiogZGF0ZSAsLCdgCi0tICAgICAgIHB3ZD0kUFdECi0tICAgICAgIGZkaXI9YGRpcm5hbWUgJGZpbGVgCi0tICAgICAgIGNkIG9sZC8kZmRpcgotLSAgICAgICB1bmphciBgYmFzZW5hbWUgJGZpbGVgCi0tICAgICAgIGNkICRwd2QvbmV3LyRmZGlyCi0tICAgICAgIHVuamFyIGBiYXNlbmFtZSAkZmlsZWAKLS0gICAgICAgY2QgJHB3ZAotLSAgICAgICBsb2NhbCByZXQ9MAotLSAgICAgICBmb3IgZiBpbiAkZmxpc3Q7IGRvCi0tICAgICAgICAgaWYgdGVzdCAtZiBuZXcvJGZkaXIvJGYgJiYgISBjaGVja19zaW5nbGVfZmlsZSAkZmRpci8kZjsgdGhlbgotLSAgICAgICAgICAgcmV0PTEKLS0gICAgICAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0tICAgICAgICAgICAgIGJyZWFrCi0tICAgICAgICAgICBmaQotLSAgICAgICAgIGZpCi0tICAgICAgIGRvbmUKLS0gICAgICAgcmV0dXJuICRyZXQ7OwotLSAgICAgKi5weWN8Ki5weW8pCi0tICAgICAgICBwZXJsIC1lICJvcGVuIGZoLCAnKzwnLCAnb2xkLyRmaWxlJzsgc2VlayBmaCwgNCwgU0VFS19TRVQ7IHByaW50IGZoICcwMDAwJzsiCi0tICAgICAgICBwZXJsIC1lICJvcGVuIGZoLCAnKzwnLCAnbmV3LyRmaWxlJzsgc2VlayBmaCwgNCwgU0VFS19TRVQ7IHByaW50IGZoICcwMDAwJzsiCi0tICAgICAgICA7OwotLSAgICAgKi5iejIpCi0tICAgICAgICBidW56aXAyIC1jIG9sZC8kZmlsZSA+IG9sZC8ke2ZpbGUvLmJ6Mi99Ci0tICAgICAgICBidW56aXAyIC1jIG5ldy8kZmlsZSA+IG5ldy8ke2ZpbGUvLmJ6Mi99Ci0tICAgICAgICBjaGVja19zaW5nbGVfZmlsZSAke2ZpbGUvLmJ6Mi99Ci0tICAgICAgICByZXR1cm4gJD8KLS0gICAgICAgIDs7Ci0tICAgICAqLmd6KQotLSAgICAgICAgZ3VuemlwIC1jIG9sZC8kZmlsZSA+IG9sZC8ke2ZpbGUvLmd6L30KLS0gICAgICAgIGd1bnppcCAtYyBuZXcvJGZpbGUgPiBuZXcvJHtmaWxlLy5nei99Ci0tICAgICAgICBjaGVja19zaW5nbGVfZmlsZSAke2ZpbGUvLmd6L30KLS0gICAgICAgIHJldHVybiAkPwotLSAgICAgICAgOzsKLS0gICAgICoucnBtKQotLQkkc2VsZl9zY3JpcHQgLWEgb2xkLyRmaWxlIG5ldy8kZmlsZQotLSAgICAgICAgcmV0dXJuICQ/Ci0tICAgICAgICA7OwotLSAgICAgKnBuZykKLS0JIyBUcnkgdG8gcmVtb3ZlIHRpbWVzdGFtcHMsIG9ubHkgaWYgY29udmVydCBmcm9tIEltYWdlTWFnaWNrIGlzIGluc3RhbGxlZAotLSAgICAgICAgaWYgW1sgJCh0eXBlIC1wIGNvbnZlcnQpIF1dOyB0aGVuCi0tCSAgY29udmVydCBvbGQvJGZpbGUgK3NldCBkYXRlOmNyZWF0ZSArc2V0IGRhdGU6bW9kaWZ5IG9sZC8ke2ZpbGUvLnBuZy9fbi5wbmd9Ci0tCSAgY29udmVydCBvbGQvJGZpbGUgK3NldCBkYXRlOmNyZWF0ZSArc2V0IGRhdGU6bW9kaWZ5IG5ldy8ke2ZpbGUvLnBuZy9fbi5wbmd9Ci0tCSAgaWYgISBjbXAgLXMgb2xkLyR7ZmlsZS8ucG5nL19uLnBuZ30gbmV3LyR7ZmlsZS8ucG5nL19uLnBuZ307IHRoZW4KLS0JICAgICAgZWNobyAiJGZpbGUgZGlmZmVycyAoJGZ0eXBlKSIKLS0JICAgICAgaGV4ZHVtcCAtQyBvbGQvJHtmaWxlLy5wbmcvX24ucG5nfSA+ICRmaWxlMQotLQkgICAgICBoZXhkdW1wIC1DIG5ldy8ke2ZpbGUvLnBuZy9fbi5wbmd9ID4gJGZpbGUyCi0tCSAgICAgIGRpZmYgLXUgJGZpbGUxICRmaWxlMiB8IGhlYWQgLW4gMjAKLS0JICAgICAgcmV0dXJuIDEKLS0JICBmaQotLQkgIHJldHVybiAwCi0tCWZpCi0tICAgICAgICA7OwotLSAgICAgL3Vzci9zaGFyZS9sb2NhbGUvKi9MQ19NRVNTQUdFUy8qLm1vfC91c3Ivc2hhcmUvbG9jYWxlLWJ1bmRsZS8qL0xDX01FU1NBR0VTLyoubW8pCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tICAgICAgICAgc2VkIC1pIC1lICJzLFBPVC1DcmVhdGlvbi1EYXRlOiAuLi4uLS4uLS4uIC4uOi4uKy4uLi4sUE9ULUNyZWF0aW9uLURhdGU6IDE5NzAtMDEtMDEgMDA6MDArMDAwMCwiICRmCi0tICAgICAgIGRvbmUKLS0gICAgICAgOzsKLS0gICAgIC91c3Ivc2hhcmUvZG9jL3BhY2thZ2VzLyovKi5odG1sfFwKLS0gICAgIC91c3Ivc2hhcmUvZG9jL2tkZS9IVE1MLyovKi8qLmh0bWx8L3Vzci9zaGFyZS9kb2MvKi9odG1sLyouaHRtbCkKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0gICAgICAgICAjIHRleGkyaHRtbCBvdXRwdXQsIGUuZy4gaW4ga3ZtLCBpbmRlbnQsIHFlbXUKLS0JIHNlZCAtaSAtZSAic3xePCEtLSBDcmVhdGVkIG9uIC4qLCAyMC4uIGJ5IHRleGkyaHRtbCAuXC4uLnw8IS0tIENyZWF0ZWQgb24gQXVndXN0IDcsIDIwMDkgYnkgdGV4aTJodG1sIDEuODJ8IiAkZgotLQkgc2VkIC1pIC1lICdzfF4gKlRoaXMgZG9jdW1lbnQgd2FzIGdlbmVyYXRlZCBieSA8ZW0+QXV0b2J1aWxkPC9lbT4gb24gPGVtPi4qLCAyMC4uPC9lbT4gdXNpbmcgPGEgaHJlZj0iaHR0cDovL3d3dy5ub25nbnUub3JnL3RleGkyaHRtbC8iPjxlbT50ZXhpMmh0bWwgLlwuLi48L2VtPjwvYT4uJHwgIFRoaXMgZG9jdW1lbnQgd2FzIGdlbmVyYXRlZCBieSA8ZW0+QXV0b2J1aWxkPC9lbT4gb24gPGVtPkF1Z3VzdCA3LCAyMDA5PC9lbT4gdXNpbmcgPGEgaHJlZj0iaHR0cDovL3d3dy5ub25nbnUub3JnL3RleGkyaHRtbC8iPjxlbT50ZXhpMmh0bWwgMS44MjwvZW0+PC9hPi58JyAkZgotLQkgIyBkb3h5Z2VuIGRvY3UsIGUuZy4gaW4gbGlic3NoIGFuZCBsb2c0YwotLQkgc2VkIC1pIC1lICdzfEdlbmVyYXRlZCBvbiAuLi4gLi4uIFswLTldKiBbMC05XSo6WzAtOV1bMC05XTpbMC05XVswLTldIDIwWzAtOV1bMC05XSBmb3IgfEdlbmVyYXRlZCBvbiBNb24gTWF5IDEwIDIwOjQ1OjAwIDIwMTAgZm9yIHwnICRmCi0tCSAjIEdlbmVyYXRlZCBvbiBTYXQgQXVnIDE0IDIwMTAgMTY6NDk6NDggZm9yIGxpYnNzaAotLQkgc2VkIC1pIC1lICdzfEdlbmVyYXRlZCBvbiAuLi4gLi4uIFswLTldKiAyMFswLTldWzAtOV0gWzAtOV0qOlswLTldWzAtOV06WzAtOV1bMC05XSBmb3IgfEdlbmVyYXRlZCBvbiBNb24gTWF5IDEwIDIwOjQ1OjAwIDIwMTAgZm9yIHwnICRmCi0tICAgICAgIGRvbmUKLS0gICAgICAgc3RyaXBfbnVtYmVyZWRfYW5jaG9ycwotLSAgICAgICA7OwotLSAgICAgL3Vzci9zaGFyZS9qYXZhZG9jLyouaHRtbCB8XAotLSAgICAgL3Vzci9zaGFyZS9qYXZhZG9jLyovKi5odG1sfC91c3Ivc2hhcmUvamF2YWRvYy8qLyovKi5odG1sKQotLSAgICAgICBzdHJpcF9udW1iZXJlZF9hbmNob3JzCi0tICAgICAgICMgVGhlcmUgYXJlIG1vcmUgdGltZXN0YW1wcyBpbiBodG1sLCBzbyBmYXIgd2UgaGFuZGxlIG9ubHkgc29tZSBwcmltaXRpdmUgdmVyc2lvbnMuCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tICAgICAgICAgIyBKYXZhZG9jOgotLSAgICAgICAgICAjIDxoZWFkPgotLSAgICAgICAgICAjIDwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2MgKHZlcnNpb24gMS43LjBfNzUpIG9uIFR1ZSBGZWIgMDMgMDI6MjA6MTIgR01UIDIwMTUgLS0+Ci0tICAgICAgICAgICMgPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBUdWUgRmViIDAzIDAwOjAyOjQ4IEdNVCAyMDE1IC0tPgotLSAgICAgICAgICAjIDxtZXRhIG5hbWU9ImRhdGUiIGNvbnRlbnQ9IjIwMTUtMDItMDMiPgotLSAgICAgICAgICAjIDwvaGVhZD4KLS0gICAgICAgICAgc2VkIC1pIC1lICcKLS0gICAgICAgICAgICAvXjxoZWFkPi97Ci0tICAgICAgICAgICAgICA6IG5leHQKLS0gICAgICAgICAgICAgIG4KLS0gICAgICAgICAgICAgIC9ePFwvaGVhZD4vewotLSAgICAgICAgICAgICAgICBiIGVuZF9oZWFkCi0tICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICBzL15cKDwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2NcKSBcKChcKGJ1aWxkXHx2ZXJzaW9uXCkgWzAtOS5fXVwrKSBvbiAuLi4gLi4uIC4uIC4uOi4uOi4uIFwoR01UXHxVVENcKSAuLi4uXCkgXCgtLT5cKS9cMSBzb21lLWRhdGUtcmVtb3ZlZC1ieS1idWlsZC1jb21wYXJlIFw1LwotLSAgICAgICAgICAgICAgdCBuZXh0Ci0tICAgICAgICAgICAgICBzL15cKDwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2NcKSBcKG9uIC4uLiAuLi4gLi4gLi46Li46Li4gXChHTVRcfFVUQ1wpIC4uLi5cKSBcKC0tPlwpL1wxIHNvbWUtZGF0ZS1yZW1vdmVkLWJ5LWJ1aWxkLWNvbXBhcmUgXDMvCi0tICAgICAgICAgICAgICB0IG5leHQKLS0gICAgICAgICAgICAgIHMvXjxtZXRhIG5hbWU9ImRhdGUiIGNvbnRlbnQ9IlswLTldXHs0XH0tWzAtOV1cezJcfS1bMC05XVx7Mlx9Ij4vPG1ldGEgbmFtZT0iZGF0ZSIgY29udGVudD0ic29tZS1kYXRlLXJlbW92ZWQtYnktYnVpbGQtY29tcGFyZSI+LwotLSAgICAgICAgICAgICAgYiBuZXh0Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAgIDogZW5kX2hlYWQKLS0gICAgICAgICAgJyAkZgotLSAgICAgICAgICMgR2pkb2MgSHRtbERvY2xldDoKLS0JIHNlZCAtaSAtZSAncyVHZW5lcmF0ZWQgYnkgR2pkb2MgSHRtbERvY2xldCBbMC05LC5dKiwgcGFydCBvZiA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY2xhc3NwYXRoL2NwLXRvb2xzLyIgdGl0bGU9IiIgdGFyZ2V0PSJfdG9wIj5HTlUgQ2xhc3NwYXRoIFRvb2xzPC9hPiwgb24gLiosIDIwLi4gWzAtOV0qOi4uOi4uIFwoYVx8cFwpXC5tXC4gR01ULiVHZW5lcmF0ZWQgYnkgR2pkb2MuJScgJGYKLS0JIHNlZCAtaSAtZSAncyU8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL2dudS5vcmcvLy9EVEQgWEhUTUwgMS4xIHBsdXMgVGFyZ2V0IDEuMC8vRU4iXCguKlwpR05VIENsYXNzcGF0aCBUb29sczwvYT4sIG9uIFtBLVpdW2Etel0qIFswLTldKiwgMjA/PyBbMC05XSo6Pz86Pz8gXChhfHBcKVwubVwuIEdNVC48L3A+JTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vZ251Lm9yZy8vL0RURCBYSFRNTCAxLjEgcGx1cyBUYXJnZXQgMS4wLy9FTiJcMUdOVSBDbGFzc3BhdGggVG9vbHM8L2E+LCBvbiBKYW51YXJ5IDEsIDIwMDkgMDowMDowMCBhLm0uIEdNVC48L3A+JScgJGYKLS0JIHNlZCAtaSAtZSAncyU8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL2dudS5vcmcvLy9EVERcKC4qR05VIENsYXNzcGF0aCBUb29sczwvYT5cKSwgb24gW2EtekEtWl0qIFswLTldWzAtOV0sIDIwLi4gWzAtOV0qOi4uOi4uIFwoYVx8cFwpXC5tXC4gR01ULjwvcD4lPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9nbnUub3JnLy8vRFREXDEsb24gTWF5IDEsIDIwMTAgMToxMTo0MiBwLm0uIEdNVC48L3A+JScgJGYKLS0JICMgZGVwcmVjYXRlZC1saXN0IGlzIHJhbmRvbWx5IG9yZGVyZWQsIHNvcnQgaXQgZm9yIGNvbXBhcmlzb24KLS0JIGNhc2UgJGYgaW4KLS0JICAgKi9kZXByZWNhdGVkLWxpc3QuaHRtbCkKLS0JICAgICBzb3J0IC1vICRmICRmCi0tCSAgICAgOzsKLS0JIGVzYWMKLS0gICAgICAgZG9uZQotLSAgICAgICA7OwotLSAgICAgL3Vzci9zaGFyZS9qYXZhZG9jL2dqZG9jLnByb3BlcnRpZXMgfFwKLS0gICAgIC91c3Ivc2hhcmUvamF2YWRvYy8qL2dqZG9jLnByb3BlcnRpZXMpCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tCSBzZWQgLWkgLWUgJ3N8XiNbQS1aXVthLXpdXHsyXH0gW0EtWl1bYS16XVx7Mlx9IFswLTldXHsyXH0gLi46Li46Li4gR01UIDIwLi4kfCNGcmkgSmFuIDAxIDExOjI3OjM2IEdNVCAyMDA5fCcgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICA7OwotLSAgICAgKi9mb250cy5zY2FsZXwqL2ZvbnRzLmRpcnwqL2VuY29kaW5ncy5kaXIpCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tICAgICAgICAgIyBzb3J0IGZpbGVzIGJlZm9yZSBjb21wYXJpbmcKLS0gICAgICAgICBzb3J0IC1vICRmICRmCi0tICAgICAgIGRvbmUKLS0gICAgICAgOzsKLS0gICAgIC92YXIvYWRtL3BlcmwtbW9kdWxlcy8qKQotLSAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotLSAgICAgICAgIHNlZCAtaSAtZSAnc3xePWhlYWQyIC4uLiAuLi4gLi4gLi46Li46Li4gLi4uLjogQzxNb2R1bGU+fD1oZWFkMiBXZWQgSnVsICAxIDAwOjAwOjAwIDIwMDk6IEM8TW9kdWxlPnwnICRmCi0tICAgICAgIGRvbmUKLS0gICAgICAgOzsKLS0gICAgIC91c3Ivc2hhcmUvbWFuL21hbjMvKjNwbSkKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0gICAgICAgICBzZWQgLWkgLWUgJ3N8IDMgIjIwLi4tLi4tLi4iICJwZXJsIHY1Li4uLi4iICJVc2VyIENvbnRyaWJ1dGVkIFBlcmwgRG9jdW1lbnRhdGlvbiIkfCAzICIyMDA5LTAxLTAxIiAicGVybCB2NS4xMC4wIiAiVXNlciBDb250cmlidXRlZCBQZXJsIERvY3VtZW50YXRpb24ifCcgJGYKLS0gICAgICAgICB0cmltX21hbl9USCAkZgotLSAgICAgICAgIHRyaW1fbWFuX2ZpcnN0X2xpbmUgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICA7OwotLSAgICAgL3Vzci9zaGFyZS9tYW4vKi9tYW4qfC91c3Ivc2hhcmUvbWFuL21hbip8L3Vzci9saWIvdGV4bWYvZG9jL21hbi8qLyopCi0tCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tICAgICAgICAgdHJpbV9tYW5fVEggJGYKLS0gICAgICAgICB0cmltX21hbl9maXJzdF9saW5lICRmCi0tICAgICAgICAgIyBnZW5lcmF0ZWQgYnkgZG9jYm9vayB4bWw6Ci0tICAgICAgICAgIy5cIiAgICAgIERhdGU6IDA5LzEzLzIwMTAKLS0gICAgICAgICBzZWQgLWkgLWUgJ3N8RGF0ZTogWzAtMV1bMC05XS9bMC05XVswLTldLzIwMVswLTldfERhdGU6IDA5LzEzLzIwMTB8JyAkZgotLSAgICAgICBkb25lCi0tICAgICAgIDs7Ci0tICAgICAqLmVsYykKLS0gICAgICAgIyBlbWFjcyBsaXNwIGZpbGVzCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tICAgICAgICAgc2VkIC1pIC1lICdzfENvbXBpbGVkIGJ5IGFidWlsZEAuKiBvbiAuLi4gLi4uIC4uIC4uOi4uOi4uIDIwLi4kfGNvbXBpbGVkIGJ5IGFidWlsZEBidWlsZGhvc3Qgb24gV2VkIEp1bCAwMSAwMDowMDowMCAyMDA5fCcgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICA7OwotLSAgICAgL3Zhci9saWIvdGV4bWYvd2ViMmMvKi8qZm10IHxcCi0tICAgICAvdmFyL2xpYi90ZXhtZi93ZWIyYy9tZXRhZm9udC8qLmJhc2V8XAotLSAgICAgL3Zhci9saWIvdGV4bWYvd2ViMmMvbWV0YXBvc3QvKi5tZW0pCi0tICAgICAgICMgYmluYXJ5IGR1bXAgb2YgVGVYIGFuZCBNZXRhZm9udCBmb3JtYXRzLCB3ZSBjYW4gaWdub3JlIHRoZW0gZm9yIGdvb2QKLS0gICAgICAgZWNobyAiZGlmZmVyZW5jZSBpbiAkZmlsZSBpZ25vcmVkLiIKLS0gICAgICAgcmV0dXJuIDAKLS0gICAgICAgOzsKLS0gICAgICovbGlidG9vbCkKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0JICBzZWQgLWkgLWUgJ3N8XiMgTGlidG9vbCB3YXMgY29uZmlndXJlZCBvbiBob3N0IFtBLVphLXowLTldKjokfCMgTGlidG9vbCB3YXMgY29uZmlndXJlZCBvbiBob3N0IHg0Mjp8JyAkZgotLSAgICAgICBkb25lCi0tICAgICAgIDs7Ci0tICAgICAvZXRjL21haWwvKmNmfC9ldGMvc2VuZG1haWwuY2YpCi0tICAgICAgICMgZnJvbSBzZW5kbWFpbCBwYWNrYWdlCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tCSAgIyAtICMjIyMjIGJ1aWx0IGJ5IGFidWlsZEBidWlsZDMzIG9uIFRodSBNYXkgNiAxMToyMToxNyBVVEMgMjAxMAotLQkgIHNlZCAtaSAtZSAnc3xidWlsdCBieSBhYnVpbGRAW2EtejAtOV0qIG9uIC4uLiAuLi4gWzAtOV0qIFswLTldKjpbMC05XVswLTldOlswLTldWzAtOV0gLiogMjBbMC05XVswLTldfGJ1aWx0IGJ5IGFidWlsZEBidWlsZDQyIG9uIFRodSBNYXkgNiAxMToyMToxNyBVVEMgMjAxMHwnICRmCi0tICAgICAgIGRvbmUKLS0gICAgICAgOzsKLS0gICAgIC91c3Ivc2hhcmUvZG9jL2tkZS9IVE1MLyovKi9pbmRleC5jYWNoZXwvdXNyL3NoYXJlL2RvYy9rZGUvSFRNTC8qLyovKi9pbmRleC5jYWNoZXxcCi0tICAgICAvdXNyL3NoYXJlL2d0ay1kb2MvaHRtbC8qLyouaHRtbHwvdXNyL3NoYXJlL2d0ay1kb2MvaHRtbC8qLyouZGV2aGVscDIpCi0tICAgICAgICMgdmFyaW91cyBrZGUgYW5kIGd0ayBwYWNrYWdlcwotLSAgICAgICBzdHJpcF9udW1iZXJlZF9hbmNob3JzCi0tICAgICAgIDs7Ci0tICAgICovY3JlYXRlZC5yaWQpCi0tICAgICAgICMgcnVieSBkb2N1bWVudGF0aW9uCi0tICAgICAgICMgZmlsZSBqdXN0IGNvbnRhaW5zIGEgdGltZXN0YW1wIGFuZCBub3RoaW5nIGVsc2UsIHNvIGlnbm9yZSBpdAotLSAgICAgICBlY2hvICJJZ25vcmUgJGZpbGUiCi0tICAgICAgIHJldHVybiAwCi0tICAgICAgIDs7Ci0tICAgICovcmRvYy9maWxlcy8qLmh0bWwpCi0tICAgICAgICMgcnVieSBkb2N1bWVudGF0aW9uCi0tICAgICAgICMgPHRkPk1vbuKAglNlcOKAgjIw4oCCMTk6MDI6NDPigIIrMDAwMOKAgjIwMTA8L3RkPgotLSAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotLSAgICAgICAgICBzZWQgLWkgLWUgJ3MlPHRkPltBLVpdW2Etel1bYS16XSBbQS1aXVthLXpdW2Etel0gWzAtOV1cKyBbMC05XVwrOlswLTldXCs6WzAtOV1cKyArMDAwMCAyMDFbMC05XTwvdGQ+JTx0ZD5Nb27igIJTZXDigIIyMOKAgjE5OjAyOjQz4oCCKzAwMDDigIIyMDEwPC90ZD4lZycgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICBzdHJpcF9udW1iZXJlZF9hbmNob3JzCi0tICAgICAgIDs7Ci0tICAgICovTGludXgqRW52LlNldC5zaCkKLS0gICAgICAgIyBMaWJyZU9mZmljZSBmaWxlcywgY29udGFpbnM6Ci0tICAgICAgICMgR2VuZXJhdGVkIG9uOiBNb24gQXByIDE4IDEzOjE5OjIyIFVUQyAyMDExCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tCSBzZWQgLWkgLWUgJ3MlXiMgR2VuZXJhdGVkIG9uOi4qVVRDIDIwMVswLTldICokJSMgR2VuZXJhdGVkIG9uOiBTb21ldGltZSVnJyAkZgotLSAgICAgICBkb25lCi0tICAgICAgIDs7Ci0tICAgIC91c3IvbGliL2xpYnJlb2ZmaWNlL3NvbHZlci9pbmMvKi9kZWxpdmVyLmxvZykKLS0gICAgICAgIyBMaWJyZU9mZmljZSBsb2cgZmlsZQotLSAgICAgIGVjaG8gIklnbm9yZSAkZmlsZSIKLS0gICAgICByZXR1cm4gMAotLSAgICAgIDs7Ci0tICAgIC92YXIvYWRtL3VwZGF0ZS1tZXNzYWdlcy8qfC92YXIvYWRtL3VwZGF0ZS1zY3JpcHRzLyopCi0tICAgICAgIyBlbmNvZGUgdmVyc2lvbi1yZWxlYXNlIGluc2lkZQotLSAgICAgIG9sZGZuPWBlY2hvICIkZmlsZSJ8c2VkIC1lIHMvLSRyZWxlYXNlMi8tJHJlbGVhc2UxLztgCi0tCi0tICAgICAgIyBmZXRjaG1zdHRmb250cyBlbWJlZHMgdGhlIHJlbGVhc2UgbnVtYmVyIGluIHRoZSB1cGRhdGUgc2hlbGwgc2NyaXB0LgotLSAgICAgIGVjaG8gc2VkIC1pIC1lICJzLy0kcmVsZWFzZTEvLSRyZWxlYXNlMi9nOyIgIm9sZC8kb2xkZm4iCi0tICAgICAgc2VkIC1pIC1lICJzLy0kcmVsZWFzZTEvLSRyZWxlYXNlMi9nOyIgIm9sZC8kb2xkZm4iCi0tCi0tICAgICAgaWYgISBkaWZmIC11IG9sZC8kb2xkZm4gbmV3LyRmaWxlOyB0aGVuCi0tICAgICAgICAgICBlY2hvICIkb2xkZm4gaXMgbm90IHNhbWUgYXMgJGZpbGUiCi0tICAgICAgICAgICByZXR1cm4gMQotLSAgICAgIGZpCi0tICAgICAgZWNobyAiJGZpbGUgYW5kICRvbGRmbiBhcmUgc2FtZSIKLS0gICAgICByZXR1cm4gMAotLSAgICAgIDs7Ci0tICAgICoucHMpCi0tICAgICAgZm9yIGYgaW4gIm9sZC8kZmlsZSIgIm5ldy8kZmlsZSI7IGRvCi0tICAgICAgICBzZWQgLWkgLWUgJwotLQkvXiUlQ3JlYXRpb25EYXRlOltbOmJsYW5rOl1dL2QKLS0JL14lJUNyZWF0b3I6W1s6Ymxhbms6XV1ncm9mZltbOmJsYW5rOl1ddmVyc2lvbltbOmJsYW5rOl1dL2QKLS0JJyAiJGYiCi0tICAgICAgZG9uZQotLSAgICA7OwotLSAgICAqcGRmKQotLSAgICAgICMgUERGIGZpbGVzIGNvbnRhaW4gYSB1bmlxdWUgSUQsIHJlbW92ZSBpdAotLSAgICAgICMgRm9ybWF0IG9mIHRoZSBJRCBpczoKLS0gICAgICAjIC9JRCBbPDlBQ0UyNDdBNzBDRjlCRUFGRUUxNUUxMTYyNTlCRDZEPiA8OUFDRTI0N0E3MENGOUJFQUZFRTE1RTExNjI1OUJENkQ+XQotLSAgICAgICMgd2l0aCBvcHRpb25hbCBzcGFjZXMuIHBkZnRleCBjcmVhdGVzIGFsc286Ci0tICAgICAgIyAvQ3JlYXRpb25EYXRlIChEOjIwMTIwMTAzMDgzMjA2WikKLS0gICAgICAjIC9Nb2REYXRlIChEOjIwMTIwMTAzMDgzMjA2WikKLS0gICAgICAjIGFuZCBwb3NzaWJseSBYTUwgbWV0YWRhdGEgYXMgd2VsbAotLSAgICAgIGZvciBmIGluICJvbGQvJGZpbGUiICJuZXcvJGZpbGUiOyBkbwotLSAgICAgICAgc2VkIC1pIFwKLS0gICAgICAgICAgICAnL29iai8sL2VuZG9iai97Ci0tICAgICAgICAgICAgICAgcyUvSUQgXD9cWyBcPzxbXj5dXCs+IFw/PFtePl1cKz4gXD9cXSUvSURyYW5kb20lZzsKLS0gICAgICAgICAgICAgICBzJS9DcmVhdGlvbkRhdGUgXD8oRDpbXildKiklL0NyZWF0aW9uRGF0ZSAoRDogWFhYKSVnOwotLSAgICAgICAgICAgICAgIHMlL01vZERhdGUgXD8oRDpbXildKiklL01vZERhdGUgKEQ6IFhYWCklZzsKLS0gICAgICAgICAgICAgICBzJTxwZGY6Q3JlYXRpb25EYXRlPltePF0qPC9wZGY6Q3JlYXRpb25EYXRlPiU8cGRmOkNyZWF0aW9uRGF0ZT5YWFg8L3BkZjpDcmVhdGlvbkRhdGU+JWc7Ci0tICAgICAgICAgICAgICAgcyU8cGRmOk1vZERhdGU+W148XSo8L3BkZjpNb2REYXRlPiU8cGRmOk1vZERhdGU+WFhYPC9wZGY6TW9kRGF0ZT4lZzsKLS0gICAgICAgICAgICAgICBzJTx4YXA6Q3JlYXRlRGF0ZT5bXjxdKjwveGFwOkNyZWF0ZURhdGU+JTx4YXA6Q3JlYXRlRGF0ZT5YWFg8L3hhcDpDcmVhdGVEYXRlPiVnOwotLSAgICAgICAgICAgICAgIHMlPHhhcDpNb2RpZnlEYXRlPltePF0qPC94YXA6TW9kaWZ5RGF0ZT4lPHhhcDpNb2RpZnlEYXRlPlhYWDwveGFwOk1vZGlmeURhdGU+JWc7Ci0tICAgICAgICAgICAgICAgcyU8eGFwOk1ldGFkYXRhRGF0ZT5bXjxdKjwveGFwOk1ldGFkYXRhRGF0ZT4lPHhhcDpNZXRhZGF0YURhdGU+WFhYPC94YXA6TWV0YWRhdGFEYXRlPiVnOwotLSAgICAgICAgICAgIH0nICIkZiIKLS0gICAgICBkb25lCi0tICAgICAgOzsKLS0gIGVzYWMKLS0KLS0gIGZ0eXBlPWAvdXNyL2Jpbi9maWxlIG9sZC8kZmlsZSB8IHNlZCAnc0BeW146XVwrOltbOmJsYW5rOl1dKkBAJ2AKLS0gIGNhc2UgJGZ0eXBlIGluCi0tICAgICBQRTMyXCBleGVjdXRhYmxlKk1vbm9cL1wuTmV0XCBhc3NlbWJseSopCi0tICAgICAgIGVjaG8gIlBFMzIgTW9uby8uTmV0IGFzc2VtYmx5OiAkZmlsZSIKLS0gICAgICAgaWYgWyAteCAvdXNyL2Jpbi9tb25vZGlzIF0gOyB0aGVuCi0tICAgICAgICAgbW9ub2RpcyBvbGQvJGZpbGUgMj4vZGV2L251bGx8c2VkIC1lICdzL0dVSUQgPSB7Lip9L0dVSUQgPSB7IDQyIH0vOyc+ICR7ZmlsZTF9Ci0tICAgICAgICAgbW9ub2RpcyBuZXcvJGZpbGUgMj4vZGV2L251bGx8c2VkIC1lICdzL0dVSUQgPSB7Lip9L0dVSUQgPSB7IDQyIH0vOyc+ICR7ZmlsZTJ9Ci0tICAgICAgICAgaWYgISBjbXAgLXMgJHtmaWxlMX0gJHtmaWxlMn07IHRoZW4KLS0gICAgICAgICAgIGVjaG8gIiRmaWxlIGRpZmZlcnMgKCRmdHlwZSkiCi0tICAgICAgICAgICBkaWZmIC11ICR7ZmlsZTF9ICR7ZmlsZTJ9Ci0tICAgICAgICAgICByZXR1cm4gMQotLSAgICAgICAgIGZpCi0tICAgICAgIGVsc2UKLS0gICAgICAgICBlY2hvICJDYW5ub3QgY29tcGFyZSwgbm8gbW9ub2RpcyBpbnN0YWxsZWQiCi0tICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgZmkKLS0gICAgICAgOzsKLS0gICAgRUxGKmV4ZWN1dGFibGUqfEVMRipbTE1dU0JcIHNoYXJlZFwgb2JqZWN0KikKLS0gICAgICAgb2JqZHVtcCAtZCAtLW5vLXNob3ctcmF3LWluc24gb2xkLyRmaWxlIHwgZmlsdGVyX2Rpc2FzbSA+ICRmaWxlMQotLSAgICAgICBpZiAhIHRlc3QgLXMgJGZpbGUxOyB0aGVuCi0tICAgICAgICAgIyBvYmpkdW1wIGhhcyBubyBpZGVhIGhvdyB0byBoYW5kbGUgaXQKLS0gICAgICAgICBpZiAhIGRpZmZfdHdvX2ZpbGVzOyB0aGVuCi0tICAgICAgICAgICByZXQ9MQotLSAgICAgICAgICAgYnJlYWsKLS0gICAgICAgICBmaQotLSAgICAgICBmaSAgICAgICAKLS0gICAgICAgZWxmZGlmZj0KLS0gICAgICAgc2VkIC1pIC1lICJzLG9sZC8sLCIgJGZpbGUxCi0tICAgICAgIG9iamR1bXAgLWQgLS1uby1zaG93LXJhdy1pbnNuIG5ldy8kZmlsZSB8IGZpbHRlcl9kaXNhc20gPiAkZmlsZTIKLS0gICAgICAgc2VkIC1pIC1lICJzLG5ldy8sLCIgJGZpbGUyCi0tICAgICAgIGlmICEgZGlmZiAtdSAkZmlsZTEgJGZpbGUyID4gJGRmaWxlOyB0aGVuCi0tICAgICAgICAgIGVjaG8gIiRmaWxlIGRpZmZlcnMgaW4gYXNzZW1ibGVyIG91dHB1dCIKLS0gICAgICAgICAgaGVhZCAtbiAyMDAgJGRmaWxlCi0tICAgICAgICAgIGVsZmRpZmY9IjEiCi0tICAgICAgIGZpCi0tICAgICAgIGVjaG8gIiIgPiRmaWxlMQotLSAgICAgICBlY2hvICIiID4kZmlsZTIKLS0gICAgICAgIyBEb24ndCBjb21wYXJlIC5idWlsZC1pZCBhbmQgLmdudV9kZWJ1Z2xpbmsgc2VjdGlvbnMKLS0gICAgICAgc2VjdGlvbnM9IiQob2JqZHVtcCAtcyBuZXcvJGZpbGUgfCBncmVwICJDb250ZW50cyBvZiBzZWN0aW9uIC4qOiIgfCBzZWQgLXIgInMsLiogKC4qKTosXDEsZyIgfCBncmVwIC12IC1lICJcLmJ1aWxkLWlkIiAtZSAiXC5nbnVfZGVidWdsaW5rIiB8IHRyICJcbiIgIiAiKSIKLS0gICAgICAgZm9yIHNlY3Rpb24gaW4gJHNlY3Rpb25zOyBkbwotLSAgICAgICAgICBvYmpkdW1wIC1zIC1qICRzZWN0aW9uIG9sZC8kZmlsZSB8IHNlZCAicyxeb2xkLywsIiA+ICRmaWxlMQotLSAgICAgICAgICBvYmpkdW1wIC1zIC1qICRzZWN0aW9uIG5ldy8kZmlsZSB8IHNlZCAicyxebmV3LywsIiA+ICRmaWxlMgotLSAgICAgICAgICBpZiAhIGRpZmYgLXUgJGZpbGUxICRmaWxlMiA+ICRkZmlsZTsgdGhlbgotLSAgICAgICAgICAgICBlY2hvICIkZmlsZSBkaWZmZXJzIGluIEVMRiBzZWN0aW9uICRzZWN0aW9uIgotLSAgICAgICAgICAgICBoZWFkIC1uIDIwMCAkZGZpbGUKLS0gICAgICAgICAgICAgZWxmZGlmZj0iMSIKLS0gICAgICAgICAgZmkKLS0gICAgICAgZG9uZQotLSAgICAgICBpZiB0ZXN0IC16ICIkZWxmZGlmZiI7IHRoZW4KLS0gICAgICAgICAgZWNobyAiJGZpbGU6IG9ubHkgZGlmZmVyZW5jZSB3YXMgaW4gYnVpbGQtaWQgb3IgZ251X2RlYnVnbGluaywgR09PRC4iCi0tICAgICAgICAgIHJldHVybiAwCi0tICAgICAgIGZpCi0tICAgICAgIHJldHVybiAxCi0tICAgICAgIDs7Ci0tICAgICAqQVNDSUkqfCp0ZXh0KikKLS0gICAgICAgaWYgISBjbXAgLXMgb2xkLyRmaWxlIG5ldy8kZmlsZTsgdGhlbgotLSAgICAgICAgIGVjaG8gIiRmaWxlIGRpZmZlcnMgKCRmdHlwZSkiCi0tICAgICAgICAgZGlmZiAtdSBvbGQvJGZpbGUgbmV3LyRmaWxlIHwgaGVhZCAtbiAyMDAKLS0gICAgICAgICByZXR1cm4gMQotLSAgICAgICBmaQotLSAgICAgICA7OwotLSAgICAgZGlyZWN0b3J5fHNldHVpZCxcIGRpcmVjdG9yeXxzdGlja3ksXCBkaXJlY3RvcnkpCi0tICAgICAgICMgdGFyIG1pZ2h0IHBhY2thZ2UgZGlyZWN0b3JpZXMgLSBpZ25vcmUgdGhlbSBoZXJlCi0tICAgICAgIHJldHVybiAwCi0tICAgICAgIDs7Ci0tICAgICBiemlwMlwgY29tcHJlc3NlZFwgZGF0YSopCi0tICAgICAgIGlmICEgY2hlY2tfY29tcHJlc3NlZF9maWxlICIkZmlsZSIgImJ6MiI7IHRoZW4KLS0gICAgICAgICAgIHJldHVybiAxCi0tICAgICAgIGZpCi0tICAgICAgIDs7Ci0tICAgICBnemlwXCBjb21wcmVzc2VkXCBkYXRhKikKLS0gICAgICAgaWYgISBjaGVja19jb21wcmVzc2VkX2ZpbGUgIiRmaWxlIiAiZ3ppcCI7IHRoZW4KLS0gICAgICAgICAgIHJldHVybiAxCi0tICAgICAgIGZpCi0tICAgICAgIDs7Ci0tICAgICBYWlwgY29tcHJlc3NlZFwgZGF0YSopCi0tICAgICAgIGlmICEgY2hlY2tfY29tcHJlc3NlZF9maWxlICIkZmlsZSIgInh6IjsgdGhlbgotLSAgICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgZmkKLS0gICAgICAgOzsKLS0gICAgIFBPU0lYXCB0YXJcIGFyY2hpdmUpCi0tICAgICAgICAgIG12IG9sZC8kZmlsZXssLnRhcn0KLS0gICAgICAgICAgbXYgbmV3LyRmaWxleywudGFyfQotLSAgICAgICAgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICR7ZmlsZX0udGFyOyB0aGVuCi0tICAgICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgICAgZmkKLS0gICAgICAgOzsKLS0gICAgIGNwaW9cIGFyY2hpdmUpCi0tICAgICAgICAgIG12IG9sZC8kZmlsZXssLmNwaW99Ci0tICAgICAgICAgIG12IG5ldy8kZmlsZXssLmNwaW99Ci0tICAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJHtmaWxlfS5jcGlvOyB0aGVuCi0tICAgICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgICAgZmkKLS0gICAgIDs7Ci0tICAgICBzeW1ib2xpY1wgbGlua1wgdG9cICopCi0tICAgICAgIHJlYWRsaW5rICJvbGQvJGZpbGUiID4gJGZpbGUxCi0tICAgICAgIHJlYWRsaW5rICJuZXcvJGZpbGUiID4gJGZpbGUyCi0tICAgICAgIGlmICEgZGlmZiAtdSAkZmlsZTEgJGZpbGUyOyB0aGVuCi0tICAgICAgICAgZWNobyAic3ltbGluayB0YXJnZXQgZm9yICRmaWxlIGRpZmZlcnMiCi0tICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgZmkKLS0gICAgICAgOzsKLS0gICAgICopCi0tICAgICAgIGlmICEgZGlmZl90d29fZmlsZXM7IHRoZW4KLS0gICAgICAgICAgIHJldHVybiAxCi0tICAgICAgIGZpCi0tICAgICAgIDs7Ci0tICBlc2FjCi0tICByZXR1cm4gMAotLX0KLS0KLS0jIFdlIG5lZWQgL3Byb2MgbW91bnRlZCBmb3Igc29tZSB0ZXN0cywgc28gY2hlY2sgdGhhdCBpdCdzIG1vdW50ZWQgYW5kCi0tIyBjb21wbGFpbiBpZiBub3QuCi0tUFJPQ19NT1VOVEVEPTAKLS1pZiBbICEgLWQgL3Byb2Mvc2VsZi8gXTsgdGhlbgotLSAgZWNobyAiL3Byb2MgaXMgbm90IG1vdW50ZWQiCi0tICBtb3VudCAtb3J3IC1uIC10cHJvYyBub25lIC9wcm9jCi0tICBQUk9DX01PVU5URUQ9MQotLWZpCi0tCi0tIyBwcmVzZXJ2ZSBjbXBfc3BlYyByZXN1bHQgZm9yIGNoZWNrX2FsbCBydW5zCi0tcmV0PSRSRVMKLS1mb3IgZmlsZSBpbiAkZmlsZXM7IGRvCi0tICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAkZmlsZTsgdGhlbgotLSAgICAgICByZXQ9MQotLSAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotLSAgICAgICAgICAgYnJlYWsKLS0gICAgICAgZmkKLS0gICBmaQotLWRvbmUKLS0KLS1pZiBbICIkUFJPQ19NT1VOVEVEIiAtZXEgIjEiIF07IHRoZW4KLS0gIGVjaG8gIlVubW91bnRpbmcgcHJvYyIKLS0gIHVtb3VudCAvcHJvYwotLWZpCi0tCi0tcm0gJGZpbGUxICRmaWxlMiAkZGZpbGUgJHJlbmFtZV9zY3JpcHQKLS1ybSAtcmYgJGRpcgotLWlmIHRlc3QgIiRyZXQiID0gMDsgdGhlbgotLSAgICAgZWNobyAiUGFja2FnZSBjb250ZW50IGlzIGlkZW50aWNhbCIKLS1maQotLWV4aXQgJHJldAotLSMgdmltOiB0dz02NjYgdHM9MiBldAotZGlmZiAtLWdpdCBhL3NhbWUtYnVpbGQtcmVzdWx0LnNoIGIvc2FtZS1idWlsZC1yZXN1bHQuc2gKLWluZGV4IGM4OTA3ZTIuLjdlOWJkNGYgMTAwNjQ0Ci0tLS0gYS9zYW1lLWJ1aWxkLXJlc3VsdC5zaAotKysrIGIvc2FtZS1idWlsZC1yZXN1bHQuc2gKLUBAIC03LDExICs3LDExIEBACi0gIyBFbmhhbmNlZCBieSBBbmRyZWFzIEphZWdlciA8YWpAc3VzZS5kZT4KLSAjCi0gIyBUaGUgc2NyaXB0IGRlY2lkZXMgaWYgdGhlIG5ldyBidWlsZCBkaWZmZXJlcyBmcm9tIHRoZSBmb3JtZXIgb25lLAotLSMgdXNpbmcgcnBtLWNoZWNrLnNoLgotKyMgdXNpbmcgcGtnLWRpZmYuc2guCi0gIyBUaGUgc2NyaXB0IGlzIGNhbGxlZCBhcyBwYXJ0IG9mIHRoZSBidWlsZCBwcm9jZXNzIGFzOgotICMgL3Vzci9saWIvYnVpbGQvc2FtZS1idWlsZC1yZXN1bHQuc2ggLy5idWlsZC5vbGRwYWNrYWdlcyAvdXNyL3NyYy9wYWNrYWdlcy9SUE1TIC91c3Ivc3JjL3BhY2thZ2VzL1NSUE1TCi0gCi0tQ01QU0NSSVBUPSR7MCUvKn0vcnBtLWNoZWNrLnNoCi0rQ01QU0NSSVBUPSR7MCUvKn0vcGtnLWRpZmYuc2gKLSBTQ01QU0NSSVBUPSR7MCUvKn0vc3JwbS1jaGVjay5zaAotIAotIGNoZWNrX2FsbD0xCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtaW1wcm92ZS1kZWItYW5kLWlway1jaGVja2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvZnVuY3Rpb25zLnNoLWltcHJvdmUtZGViLWFuZC1pcGstY2hlY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NDIwZjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtaW1wcm92ZS1kZWItYW5kLWlway1jaGVja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi1Gcm9tIGI0ZWI3ZmRlMTAzMTgxNjJiZDJkMDJiOTAxN2VmNTE3NDY3NTJhOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTQgSnVsIDIwMTYgMjM6MTQ6MjEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIGZ1bmN0aW9ucy5zaDogaW1wcm92ZSBkZWIgYW5kIGlwayBjaGVja2luZwotCi0qIFRoZSBkZWIgYW5kIGlwaydzIGRlcGVuZHMgdmVyc2lvbiBzdHJpbmcgaXMgbGlrZToKLSAgRGVwZW5kczogbGliYzYgKD49IDIuMjQpCi0gIFVwZGF0ZSB0cmltX3JlbGVhc2Vfb2xkIGFuZCB0cmltX3JlbGVhc2VfbmV3IHRvIG1hdGNoIHRoZSBicmFja2V0IGluCi0gIHRoZSBlbmQgIikiLgotCi0qIFRoZSBkZWIncyBkYXRhIHRhcmJhbGwgbm93IGlzIC50YXIueHosIGFuZCBpcGsncyBpcyAudGFyLmd6LgotCi0qIFVwZGF0ZSBhZGp1c3RfY29udHJvbGZpbGUoKSB0byBtYWtlIGl0dXNlIHRyaW1fcmVsZWFzZV9vbGQgYW5kCi0gIHRyaW1fcmVsZWFzZV9uZXcuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS9wdWxsLzEwXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGZ1bmN0aW9ucy5zaCB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Z1bmN0aW9ucy5zaCBiL2Z1bmN0aW9ucy5zaAotaW5kZXggYWE1NzJmOS4uZmU0OTNiYSAxMDA3NTUKLS0tLSBhL2Z1bmN0aW9ucy5zaAotKysrIGIvZnVuY3Rpb25zLnNoCi1AQCAtNzgsNyArNzgsNyBAQCBjaGVja19oZWFkZXIoKQotIGZ1bmN0aW9uIHRyaW1fcmVsZWFzZV9vbGQoKQotIHsKLSAgIHNlZCAtZSAiCi0tICAvXChcL2Jvb3RcfFwvbGliXC9tb2R1bGVzXHxcL2xpYlwvZmlybXdhcmVcfFwvdXNyXC9zcmNcfCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2xcJFwpL3tzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KLSsgIC9cKFwvYm9vdFx8XC9saWJcL21vZHVsZXNcfFwvbGliXC9maXJtd2FyZVx8XC91c3JcL3NyY1x8JHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbFwkXHwkdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9sKVwpL3tzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KLSAgIHMvXChcL3ZhclwvYWRtXC91cGRhdGUtc2NyaXB0c1wvXCkke25hbWVfdmVyX3JlbF9vbGRfcmVnZXhfbH1cKFteWzpibGFuazpdXVwrXCkvXDFATkFNRV9WRVJfUkVMQFwyL2cKLSAgIHMvXiAqLy9nCi0gICAiCi1AQCAtODYsNyArODYsNyBAQCBmdW5jdGlvbiB0cmltX3JlbGVhc2Vfb2xkKCkKLSBmdW5jdGlvbiB0cmltX3JlbGVhc2VfbmV3KCkKLSB7Ci0gICBzZWQgLWUgIgotLSAgL1woXC9ib290XHxcL2xpYlwvbW9kdWxlc1x8XC9saWJcL2Zpcm13YXJlXHxcL3Vzclwvc3JjXHwkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sXCRcKS97cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sLEBWRVJTSU9OQC1AUkVMRUFTRV9MT05HQCxnO3MsJHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcyxAVkVSU0lPTkAtQFJFTEVBU0VfU0hPUlRALGd9Ci0rICAvXChcL2Jvb3RcfFwvbGliXC9tb2R1bGVzXHxcL2xpYlwvZmlybXdhcmVcfFwvdXNyXC9zcmNcfCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2xcJFx8JHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfbClcKS97cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sLEBWRVJTSU9OQC1AUkVMRUFTRV9MT05HQCxnO3MsJHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcyxAVkVSU0lPTkAtQFJFTEVBU0VfU0hPUlRALGd9Ci0gICBzL1woXC92YXJcL2FkbVwvdXBkYXRlLXNjcmlwdHNcL1wpJHtuYW1lX3Zlcl9yZWxfbmV3X3JlZ2V4X2x9XChbXls6Ymxhbms6XV1cK1wpL1wxQE5BTUVfVkVSX1JFTEBcMi9nCi0gICBzL14gKi8vZwotICAgIgotQEAgLTEzMyw4ICsxMzMsOCBAQCBmdW5jdGlvbiB1bnBhY2thZ2UoKQotICAgICAgICAgICAgIGFyIHggJGZpbGUKLSAgICAgICAgICAgICB0YXIgeGYgY29udHJvbC50YXIuZ3oKLSAgICAgICAgICAgICBybSBjb250cm9sLnRhci5negotLSAgICAgICAgICAgIHRhciB4ZiBkYXRhLnRhci5negotLSAgICAgICAgICAgIHJtIGRhdGEudGFyLmd6Ci0rICAgICAgICAgICAgdGFyIHhmIGRhdGEudGFyLlt4Z116Ci0rICAgICAgICAgICAgcm0gZGF0YS50YXIuW3hnXXoKLSAgICAgICAgICAgICA7OwotICAgICBlc2FjCi0gICAgIHBvcGQgMT4vZGV2L251bGwKLUBAIC0xNjQsNiArMTY0LDIyIEBAIGZ1bmN0aW9uIGdldF92YWx1ZSgpCi0gICAgIHNlZCAtbiAtZSAiL15fX18kezF9X19fLywvXl9fXyR7MX1fX18vcCIgJDIgfCBzZWQgLWUgIi9eX19fJHsxfV9fXy9kIgotIH0KLSAKLSsjIFNldCB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MsIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbCBhbmQKLSsjIG5hbWVfdmVyX3JlbF9vbGRfcmVnZXhfbCwgYWxzbyB0aGUgbmV3IG9uZXMuCi0rZnVuY3Rpb24gc2V0X3JlZ2V4KCkgewotKyAgICAjIFJlbWVtYmVyIHRvIHF1b3RlIHRoZSAuIHdoaWNoIGlzIGluIHJlbGVhc2UKLSsgICAgIyBTaG9ydCB2ZXJzaW9uIHdpdGhvdXQgQl9DTgotKyAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2Vfb2xkJS4qfQotKyAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MvLy4vXFwufQotKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2VfbmV3JS4qfQotKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X3M9JHt2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X3MvLy4vXFwufQotKyAgICAjIExvbmcgdmVyc2lvbiB3aXRoIEJfQ05UCi0rICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbD0ke3ZlcnNpb25fcmVsZWFzZV9vbGQvLy4vXFwufQotKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2w9JHt2ZXJzaW9uX3JlbGVhc2VfbmV3Ly8uL1xcLn0KLSsgICAgbmFtZV92ZXJfcmVsX29sZF9yZWdleF9sPSR7bmFtZV92ZXJfcmVsX29sZC8vLi9cXC59Ci0rICAgIG5hbWVfdmVyX3JlbF9uZXdfcmVnZXhfbD0ke25hbWVfdmVyX3JlbF9uZXcvLy4vXFwufQotK30KLSsKLSAjIENvbXBhcmUganVzdCB0aGUgcnBtIG1ldGEgZGF0YSBvZiB0d28gcnBtcwotICMgUmV0dXJuczoKLSAjIDAgaW4gY2FzZSBvZiBzYW1lIGNvbnRlbnQKLUBAIC0xOTQsMTcgKzIxMCw3IEBAIGZ1bmN0aW9uIGNtcF9zcGVjICgpCi0gICAgIHZlcnNpb25fcmVsZWFzZV9vbGQ9IiQoZ2V0X3ZhbHVlIFFGX1ZFUl9SRUwgJHNwZWNfb2xkKSIKLSAgICAgbmFtZV92ZXJfcmVsX29sZD0iJChnZXRfdmFsdWUgUUZfTkFNRV9WRVJfUkVMICRzcGVjX29sZCkiCi0gCi0tICAgICMgUmVtZW1iZXIgdG8gcXVvdGUgdGhlIC4gd2hpY2ggaXMgaW4gcmVsZWFzZQotLSAgICAjIFNob3J0IHZlcnNpb24gd2l0aG91dCBCX0NOCi0tICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9vbGQlLip9Ci0tICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcy8vLi9cXC59Ci0tICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9uZXclLip9Ci0tICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcy8vLi9cXC59Ci0tICAgICMgTG9uZyB2ZXJzaW9uIHdpdGggQl9DTlQKLS0gICAgdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9sPSR7dmVyc2lvbl9yZWxlYXNlX29sZC8vLi9cXC59Ci0tICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfbD0ke3ZlcnNpb25fcmVsZWFzZV9uZXcvLy4vXFwufQotLSAgICBuYW1lX3Zlcl9yZWxfb2xkX3JlZ2V4X2w9JHtuYW1lX3Zlcl9yZWxfb2xkLy8uL1xcLn0KLS0gICAgbmFtZV92ZXJfcmVsX25ld19yZWdleF9sPSR7bmFtZV92ZXJfcmVsX25ldy8vLi9cXC59Ci0rICAgIHNldF9yZWdleAotIAotICAgICAjIENoZWNrIHRoZSB3aG9sZSBzcGVjIGZpbGUgYXQgZmlyc3QsIHJldHVybiAwIGltbWVkaWF0ZWx5IGlmIHRoZQotICAgICAjIGFyZSB0aGUgc2FtZS4KLUBAIC0yODUsOSArMjkxLDE0IEBAIGZ1bmN0aW9uIGNtcF9zcGVjICgpCi0gfQotIAotIGZ1bmN0aW9uIGFkanVzdF9jb250cm9sZmlsZSgpIHsKLS0gICAgY2F0ICQxL2NvbnRyb2wgfCBzZWQgJy9eVmVyc2lvbjogL2QnID4gJDEvY29udHJvbC5maXhlZAotKyAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkPSJgc2VkIC1uZSAncy9eVmVyc2lvbjogXCguKlwpL1wxL3AnICQxL2NvbnRyb2xgIgotKyAgICBuYW1lX3Zlcl9yZWxfb2xkPSJgc2VkIC1uIC1lICdzL15QYWNrYWdlOiBcKC4qXCkvXDEvcCcgJDEvY29udHJvbGAtYHNlZCAtbiAtZSAncy9eVmVyc2lvbjogXCguKlwpL1wxL3AnICQxL2NvbnRyb2xgIgotKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3PSJgc2VkIC1uZSAncy9eVmVyc2lvbjogXCguKlwpL1wxL3AnICQyL2NvbnRyb2xgIgotKyAgICBuYW1lX3Zlcl9yZWxfbmV3PSJgc2VkIC1uIC1lICdzL15QYWNrYWdlOiBcKC4qXCkvXDEvcCcgJDIvY29udHJvbGAtYHNlZCAtbiAtZSAncy9eVmVyc2lvbjogXCguKlwpL1wxL3AnICQyL2NvbnRyb2xgIgotKyAgICBzZXRfcmVnZXgKLSsgICAgY2F0ICQxL2NvbnRyb2wgfCB0cmltX3JlbGVhc2Vfb2xkID4gJDEvY29udHJvbC5maXhlZAotICAgICBtdiAkMS9jb250cm9sLmZpeGVkICQxL2NvbnRyb2wKLS0gICAgY2F0ICQyL2NvbnRyb2wgfCBzZWQgJy9eVmVyc2lvbjogL2QnID4gJDIvY29udHJvbC5maXhlZAotKyAgICBjYXQgJDIvY29udHJvbCB8IHRyaW1fcmVsZWFzZV9uZXcgPiAkMi9jb250cm9sLmZpeGVkCi0gICAgIG12ICQyL2NvbnRyb2wuZml4ZWQgJDIvY29udHJvbAotIH0KLSAKLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtcmVtb3ZlLXNwYWNlLWF0LWhlYWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1yZW1vdmUtc3BhY2UtYXQtaGVhZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJlOTZiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1yZW1vdmUtc3BhY2UtYXQtaGVhZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNDAyYTgyMWU2MDRmMjgwZTYyYzM0YmY0ZDQwYzZkMWI0YzZjODkyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCA0IEp1bCAyMDE2IDIwOjExOjMzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZ1bmN0aW9ucy5zaDogcmVtb3ZlIHNwYWNlIGF0IGhlYWQKLQotVGhlIGNvbW1hbmQgbGlrZToKLXJwbSAtcXAgLS1ub2RpZ2VzdCAtLW5vc2lnbmF0dXJlIC0tcWYgJzxmb28+IFsle1JFUVVJUkVOQU1FfVxuXVxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXnNwYWNlCi0KLVRoZSBzcGFjZSB3aWxsIGJlIHByaW50ZWQsIGFuZCB3aWxsIGltcGFjdCB0aGUgY2hlY2sgcmVzdWx0LCBzbyByZW1vdmUgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS9wdWxsLzldCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZnVuY3Rpb25zLnNoIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2Z1bmN0aW9ucy5zaCBiL2Z1bmN0aW9ucy5zaAotaW5kZXggODVjOTAwMy4uYjEwNjlkMiAxMDA2NDQKLS0tLSBhL2Z1bmN0aW9ucy5zaAotKysrIGIvZnVuY3Rpb25zLnNoCi1AQCAtMjYsNiArMjYsNyBAQCBmdW5jdGlvbiB0cmltX3JlbGVhc2Vfb2xkKCkKLSAgIHNlZCAtZSAiCi0gICAvXChcL2Jvb3RcfFwvbGliXC9tb2R1bGVzXHxcL2xpYlwvZmlybXdhcmVcfFwvdXNyXC9zcmNcfCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2xcJFwpL3tzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KLSAgIHMvXChcL3ZhclwvYWRtXC91cGRhdGUtc2NyaXB0c1wvXCkke25hbWVfdmVyX3JlbF9vbGRfcmVnZXhfbH1cKFteWzpibGFuazpdXVwrXCkvXDFATkFNRV9WRVJfUkVMQFwyL2cKLSsgIHMvXiAqLy9nCi0gICAiCi0gfQotIGZ1bmN0aW9uIHRyaW1fcmVsZWFzZV9uZXcoKQotQEAgLTMzLDYgKzM0LDcgQEAgZnVuY3Rpb24gdHJpbV9yZWxlYXNlX25ldygpCi0gICBzZWQgLWUgIgotICAgL1woXC9ib290XHxcL2xpYlwvbW9kdWxlc1x8XC9saWJcL2Zpcm13YXJlXHxcL3Vzclwvc3JjXHwkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sXCRcKS97cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sLEBWRVJTSU9OQC1AUkVMRUFTRV9MT05HQCxnO3MsJHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcyxAVkVSU0lPTkAtQFJFTEVBU0VfU0hPUlRALGd9Ci0gICBzL1woXC92YXJcL2FkbVwvdXBkYXRlLXNjcmlwdHNcL1wpJHtuYW1lX3Zlcl9yZWxfbmV3X3JlZ2V4X2x9XChbXls6Ymxhbms6XV1cK1wpL1wxQE5BTUVfVkVSX1JFTEBcMi9nCi0rICBzL14gKi8vZwotICAgIgotIH0KLSAjIEdldCBzaW5nbGUgZGlyZWN0b3J5IG9yIGZpbGVuYW1lIHdpdGggbG9uZyBvciBzaG9ydCByZWxlYXNlIHN0cmluZwotLS0gCi0yLjkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1ydW4tcnBtLW9uY2UtdG8tbWFrZS1pdC1mYXN0ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1ydW4tcnBtLW9uY2UtdG8tbWFrZS1pdC1mYXN0ZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1Yjk5ZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtcnVuLXJwbS1vbmNlLXRvLW1ha2UtaXQtZmFzdGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYxICswLDAgQEAKLUZyb20gZjM0ZDYzMmM0MjdiMWUxNTcwZWY5MTM2NDU0ZmMwMWQ4YzlmMTBhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA3IEp1bCAyMDE2IDE5OjM0OjA5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZ1bmN0aW9ucy5zaDogcnVuIHJwbSBvbmNlIHRvIG1ha2UgaXQgZmFzdGVyCi0KLVRoZSBycG0gdG9vbCBpcyBhIGhlYXZ5IHByb2Nlc3MsIGl0IHJhbiAxNiAob3IgMTcgZm9yIGtlcm5lbCkKLSJycG0gLXFwIiB0aW1lcyB3aGVuIHRoZSBwa2dzIGFyZSBpZGVudGljYWwsIG5vdyB3ZSBvbmx5IHJ1bgotInJwbSAtcXAgLS1xZiA8YWxsIHdlIG5lZWQ+IiB0d2ljZSAob25lIGlzIGZvciBvbGQgcGtnLCBhbmQgb25lIGlzIGZvcgotbmV3KSwgc2F2ZSB0aGUgcmVzdWx0cyB0byBzcGVjX29sZCBhbmQgc3BlY19uZXcsIHRoZW4gdXNlIHNlZCBjb21tYW5kIHRvCi1nZXQgd2hhdCB3ZSBuZWVkIGxhdGVyLCB0aGlzIGNhbiBtYWtlIGl0IDc1JSBmYXN0ZXIgd2hlbiB0aGUgcGtncyBhcmUKLWlkZW50aWNhbC4gSGVyZSBpcyB0aGUgcm91Z2ggZGF0YSBvbiBteSBob3N0IFVidW50dSAxNC4wNC40LCAzMiBjb3JlcwotQ1BVIGFuZCAxMjhHIG1lbToKLSogV2hlbiB0aGUgcGtncyBhcmUgaWRlbnRpY2FsOgotICAtIEJlZm9yZSB0aGUgcGF0Y2g6IDFzCi0gIC0gQWZ0ZXIgdGhlIHBhdGNoOiAwLjI2cwotICBJIGNvbXBhcmUgdGhlIHdob2xlIHNwZWMgZmlyc3RseSwgYW5kIHJldHVybiAwIGlmIHRoZXkgYXJlIHRoZSBzYW1lLAotICBvciBnbyBvbiBjaGVja2luZyBvbmUgYnkgb25lIGlmIG5vdCwgd2l0aG91dCB0aGlzLCBpdCB3b3VsZCBiZSAwLjQ2cywKLSAgdGhlIGdhaW4gaXMgZ3JlYXQgd2hlbiB0aGVyZSBhcmUgbG90IG9mIHBhY2thZ2VzLCB1c3VhbGx5LCB3ZSBoYXZlCi0gIG1vcmUgdGhhbiAxMCwwMDAgcnBtcyB0byBjb21wYXJlLgotCi0qIFdoZW4gdGhlIHBrZ3MgYXJlIGRpZmZlcmVudDoKLSAgVGhhdCBkZXBlbmRzIG9uIHdoZXJlIGlzIHRoZSBkaWZmZXJlbnQsIGlmIHRoZSBkaWZmZXJlbnQgaXMgYXQgdGhlCi0gIGNvbXBhcmluZyBycG10YWdzIHN0YWdlOgotICAtIEJlZm9yZSB0aGUgcGF0Y2g6IDAuMjZzCi0gIC0gQWZ0ZXIgdGhlIHBhdGNoOiAwLjI5cwotICBJbmNyZWFzZWQgMC4wM3MsIGJ1dCBpZiB0aGUgZGlmZmVyZW50IGlzIGhhcHBlbmQgbGF0ZXIgdGhhbiBjb21wYXJpbmcKLSAgcnBtdGFncywgaXQgd2lsbCBzYXZlIHRpbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS9wdWxsLzldCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZnVuY3Rpb25zLnNoIHwgMjQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCAxMTMgZGVsZXRpb25zKC0pCi0gbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBmdW5jdGlvbnMuc2gKLQotZGlmZiAtLWdpdCBhL2Z1bmN0aW9ucy5zaCBiL2Z1bmN0aW9ucy5zaAotb2xkIG1vZGUgMTAwNjQ0Ci1uZXcgbW9kZSAxMDA3NTUKLWluZGV4IGIxMDY5ZDIuLmFhNTcyZjkKLS0tLSBhL2Z1bmN0aW9ucy5zaAotKysrIGIvZnVuY3Rpb25zLnNoCi1AQCAtMTAsOSArMTAsNjMgQEAKLSAKLSBSUE09InJwbSAtcXAgLS1ub2RpZ2VzdCAtLW5vc2lnbmF0dXJlIgotIAotLWNoZWNrX2hlYWRlcigpIAotKyMgTmFtZSwgVmVyc2lvbiwgUmVsZWFzZQotK1FGX05BTUU9IiV7TkFNRX0iCi0rUUZfVkVSX1JFTD0iJXtWRVJTSU9OfS0le1JFTEVBU0V9IgotK1FGX05BTUVfVkVSX1JFTD0iJXtOQU1FfS0le1ZFUlNJT059LSV7UkVMRUFTRX0iCi0rCi0rIyBwcm92aWRlcyBkZXN0cm95IHRoaXMgYmVjYXVzZSBhdCBsZWFzdCB0aGUgc2VsZi1wcm92aWRlIGluY2x1ZGVzIHRoZQotKyMgLWJ1aWxkbnVtYmVyIDotKAotK1FGX1BST1ZJREVTPSJbJXtQUk9WSURFTkFNRX0gJXtQUk9WSURFRkxBR1N9ICV7UFJPVklERVZFUlNJT059XFxuXVxcbiIKLStRRl9QUk9WSURFUz0iJFFGX1BST1ZJREVTIFsle1JFUVVJUkVOQU1FfSAle1JFUVVJUkVGTEFHU30gJXtSRVFVSVJFVkVSU0lPTn1cXG5dXFxuIgotK1FGX1BST1ZJREVTPSIkUUZfUFJPVklERVMgWyV7Q09ORkxJQ1ROQU1FfSAle0NPTkZMSUNURkxBR1N9ICV7Q09ORkxJQ1RWRVJTSU9OfVxcbl1cXG4iCi0rUUZfUFJPVklERVM9IiRRRl9QUk9WSURFUyBbJXtPQlNPTEVURU5BTUV9ICV7T0JTT0xFVEVGTEFHU30gJXtPQlNPTEVURVZFUlNJT059XFxuXVxcbiIKLSsKLSsjIGRvbid0IGxvb2sgYXQgUkVMRUFTRSwgaXQgY29udGFpbnMgb3VyIGJ1aWxkIG51bWJlcgotK1FGX1RBR1M9IiV7TkFNRX0gJXtWRVJTSU9OfSAle0VQT0NIfVxcbiIKLStRRl9UQUdTPSIkUUZfVEFHUyAle1NVTU1BUll9XFxuJXtERVNDUklQVElPTn1cXG4iCi0rIyB0aGUgRElTVFVSTCB0YWcgY2FuIGJlIHVzZWQgYXMgY2hlY2tpbiBJRAotK1FGX1RBR1M9IiRRRl9UQUdTICV7VkVORE9SfSAle0RJU1RSSUJVVElPTn0gJXtESVNUVVJMfSIKLStRRl9UQUdTPSIkUUZfVEFHUyAle0xJQ0VOU0V9ICV7TElDRU5TRX1cXG4iCi0rUUZfVEFHUz0iJFFGX1RBR1MgJXtHUk9VUH0gJXtVUkx9ICV7RVhDTFVERUFSQ0h9ICV7RVhDTFVERU9TfSAle0VYQ0xVU0lWRUFSQ0h9XFxuIgotK1FGX1RBR1M9IiRRRl9UQUdTICV7RVhDTFVTSVZFT1N9ICV7UlBNVkVSU0lPTn0gJXtQTEFURk9STX1cXG4iCi0rUUZfVEFHUz0iJFFGX1RBR1MgJXtQQVlMT0FERk9STUFUfSAle1BBWUxPQURDT01QUkVTU09SfSAle1BBWUxPQURGTEFHU31cXG4iCi0rCi0rIyBYWFggV2UgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBleGlzdGVuY2UgKGJ1dCBub3QgdGhlIGNvbnRlbnQgKCEpKQotKyMgb2YgU0lHR1BHIChhbmQgcGVyaGFwcyB0aGUgb3RoZXIgU0lHKikKLSsjIFhYWCBXZSBkb24ndCBsb29rIGF0IHRyaWdnZXJzCi0rUUZfVEFHUz0iJFFGX1RBR1MgWyV7VkVSSUZZU0NSSVBUUFJPR30gJXtWRVJJRllTQ1JJUFR9XVxcbiIKLSsjIE9ubHkgdGhlIGZpcnN0IENoYW5nZUxvZyBlbnRyeTsgc2hvdWxkIGJlIGVub3VnaAotK1FGX1RBR1M9IiRRRl9UQUdTICV7Q0hBTkdFTE9HVElNRX0gJXtDSEFOR0VMT0dOQU1FfSAle0NIQU5HRUxPR1RFWFR9XFxuIgotKwotKyMgc2NyaXB0cywgbWlnaHQgY29udGFpbiByZWxlYXNlIG51bWJlcgotK1FGX1NDUklQVD0iWyV7UFJFSU5QUk9HfSAle1BSRUlOfVxcbl1cXG5bJXtQT1NUSU5QUk9HfSAle1BPU1RJTn1cXG5dXFxuWyV7UFJFVU5QUk9HfSAle1BSRVVOfVxcbl1cXG5bJXtQT1NUVU5QUk9HfSAle1BPU1RVTn1cXG5dXFxuIgotKwotKyMgTm93IHRoZSBmaWxlcy4gV2UgbGVhdmUgb3V0IG10aW1lIGFuZCBzaXplLiAgRm9yIG5vcm1hbCBmaWxlcwotKyMgdGhlIHNpemUgd2lsbCBpbmZsdWVuY2UgdGhlIE1ENSBhbnl3YXkuICBGb3IgZGlyZWN0b3JpZXMgdGhlIHNpemVzIGNhbgotKyMgZGlmZmVyLCBkZXBlbmRpbmcgb24gd2hpY2ggZmlsZSBzeXN0ZW0gdGhlIHBhY2thZ2Ugd2FzIGJ1aWx0LiAgVG8gbm90Ci0rIyBoYXZlIHRvIGZpbHRlciBvdXQgZGlyZWN0b3JpZXMgd2Ugc2ltcGx5IGlnbm9yZSBhbGwgc2l6ZXMuCi0rIyBBbHNvIGxlYXZlIG91dCBGSUxFREVWSUNFUywgRklMRUlOT0RFUyAoZGVwZW5kcyBvbiB0aGUgYnVpbGQgaG9zdCksCi0rIyBGSUxFQ09MT1JTLCBGSUxFQ0xBU1MgKG5vcm1hbGx5IHVzZWZ1bCBidXQgZmlsZSBvdXRwdXQgY29udGFpbnMgbXRpbWVzKSwKLSsjIEZJTEVERVBFTkRTWCBhbmQgRklMRURFUEVORFNOLgotKyMgQWxzbyBGSUxFTEFOR1MgKG9yPykKLStRRl9GSUxFTElTVD0iWyV7RklMRU5BTUVTfSAle0ZJTEVGTEFHU30gJXtGSUxFU1RBVEVTfSAle0ZJTEVNT0RFUzpvY3RhbH0gJXtGSUxFVVNFUk5BTUV9ICV7RklMRUdST1VQTkFNRX0gJXtGSUxFUkRFVlN9ICV7RklMRVZFUklGWUZMQUdTfSAle0ZJTEVMSU5LVE9TfVxuXVxcbiIKLSsjID8/PyB3aGF0IHRvIGRvIHdpdGggRklMRVBST1ZJREUgYW5kIEZJTEVSRVFVSVJFPwotKwotK1FGX0NIRUNLU1VNPSJbJXtGSUxFTkFNRVN9ICV7RklMRU1ENVN9ICV7RklMRUZMQUdTfVxuXVxcbiIKLSsKLStRRl9BTEw9IlxuX19fUUZfTkFNRV9fX1xuJHtRRl9OQU1FfVxuX19fUUZfTkFNRV9fX1xuIgotK1FGX0FMTD0iJFFGX0FMTFxuX19fUUZfVEFHU19fX1xuJHtRRl9UQUdTfVxuX19fUUZfVEFHU19fX1xuIgotK1FGX0FMTD0iJFFGX0FMTFxuX19fUUZfVkVSX1JFTF9fX1xuJHtRRl9WRVJfUkVMfVxuX19fUUZfVkVSX1JFTF9fX1xuIgotK1FGX0FMTD0iJFFGX0FMTFxuX19fUUZfTkFNRV9WRVJfUkVMX19fXG4ke1FGX05BTUVfVkVSX1JFTH1cbl9fX1FGX05BTUVfVkVSX1JFTF9fX1xuIgotK1FGX0FMTD0iJFFGX0FMTFxuX19fUUZfUFJPVklERVNfX19cbiR7UUZfUFJPVklERVN9XG5fX19RRl9QUk9WSURFU19fX1xuIgotK1FGX0FMTD0iJFFGX0FMTFxuX19fUUZfU0NSSVBUX19fXG4ke1FGX1NDUklQVH1cbl9fX1FGX1NDUklQVF9fX1xuIgotK1FGX0FMTD0iJFFGX0FMTFxuX19fUUZfRklMRUxJU1RfX19cbiR7UUZfRklMRUxJU1R9XG5fX19RRl9GSUxFTElTVF9fX1xuIgotK1FGX0FMTD0iJFFGX0FMTFxuX19fUUZfQ0hFQ0tTVU1fX19cbiR7UUZfQ0hFQ0tTVU19XG5fX19RRl9DSEVDS1NVTV9fX1xuIgotKwotK2NoZWNrX2hlYWRlcigpCi0gewotLSAgICRSUE0gLS1xZiAiJFFGIiAiJDEiCi0rICAgJFJQTSAtLXFmICIkMSIgIiQyIgotIH0KLSAKLSAjIFRyaW0gdmVyc2lvbi1yZWxlYXNlIHN0cmluZzoKLUBAIC00NywxOCArMTAxLDYgQEAgZnVuY3Rpb24gZ3JlcF9yZWxlYXNlX25ldygpCi0gICBncmVwIC1FICIoL2Jvb3R8L2xpYi9tb2R1bGVzfC9saWIvZmlybXdhcmV8L3Vzci9zcmMpL1teL10rKCR7dmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sfShcJHxbXi9dK1wkKXwke3ZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfc30oXCR8W14vXStcJCkpIgotIH0KLSAKLS1mdW5jdGlvbiBjaGVja19wcm92aWRlcygpCi0tewotLSAgbG9jYWwgcGtnPSQxCi0tICAjIHByb3ZpZGVzIGRlc3Ryb3kgdGhpcyBiZWNhdXNlIGF0IGxlYXN0IHRoZSBzZWxmLXByb3ZpZGUgaW5jbHVkZXMgdGhlCi0tICAjIC1idWlsZG51bWJlciA6LSgKLS0gIFFGPSJbJXtQUk9WSURFTkFNRX0gJXtQUk9WSURFRkxBR1N9ICV7UFJPVklERVZFUlNJT059XFxuXVxcbiIKLS0gIFFGPSIkUUYgWyV7UkVRVUlSRU5BTUV9ICV7UkVRVUlSRUZMQUdTfSAle1JFUVVJUkVWRVJTSU9OfVxcbl1cXG4iCi0tICBRRj0iJFFGIFsle0NPTkZMSUNUTkFNRX0gJXtDT05GTElDVEZMQUdTfSAle0NPTkZMSUNUVkVSU0lPTn1cXG5dXFxuIgotLSAgUUY9IiRRRiBbJXtPQlNPTEVURU5BTUV9ICV7T0JTT0xFVEVGTEFHU30gJXtPQlNPTEVURVZFUlNJT059XFxuXVxcbiIKLS0gIGNoZWNrX2hlYWRlciAiJHBrZyIKLS19Ci0tCi0gI3VzYWdlIHVucGFja2FnZSA8ZmlsZT4gJGRpcgotICMgVW5wYWNrIGZpbGVzIGluIGRpcmVjdG9yeSAkZGlyCi0gIyBsaWtlIC91c3IvYmluL3VucGFja2FnZSAtIGp1c3QgZm9yIG9uZSBmaWxlIGFuZCB3aXRoIG5vIG9wdGlvbnMKLUBAIC05OCw2ICsxNDAsMzAgQEAgZnVuY3Rpb24gdW5wYWNrYWdlKCkKLSAgICAgcG9wZCAxPi9kZXYvbnVsbAotIH0KLSAKLSsjIFJ1biBkaWZmIGNvbW1hbmQgb24gdGhlIGZpbGVzCi0rIyAkMTogcHJpbnRlZCBpbmZvCi0rIyAkMjogZmlsZTEKLSsjICQzOiBmaWxlMgotK2Z1bmN0aW9uIGNvbXBfZmlsZSgpCi0rewotKyAgICBlY2hvICJjb21wYXJpbmcgJDEiCi0rICAgIGlmICEgZGlmZiAtYXUgJDIgJDM7IHRoZW4KLSsgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotKyAgICAgICAgcm0gJDIgJDMgJHNwZWNfb2xkICRzcGVjX25ldwotKyAgICAgICAgcmV0dXJuIDEKLSsgICAgICBmaQotKyAgICBmaQotKyAgICByZXR1cm4gMAotK30KLSsKLSsjIEdldCB2YXIncyB2YWx1ZSBmcm9tIHNwZWNmaWxlLgotKyMgJDE6IHZhciBuYW1lCi0rIyAkMjogc3BlY2ZpbGUKLStmdW5jdGlvbiBnZXRfdmFsdWUoKQotK3sKLSsgICAgc2VkIC1uIC1lICIvXl9fXyR7MX1fX18vLC9eX19fJHsxfV9fXy9wIiAkMiB8IHNlZCAtZSAiL15fX18kezF9X19fL2QiCi0rfQotKwotICMgQ29tcGFyZSBqdXN0IHRoZSBycG0gbWV0YSBkYXRhIG9mIHR3byBycG1zCi0gIyBSZXR1cm5zOgotICMgMCBpbiBjYXNlIG9mIHNhbWUgY29udGVudAotQEAgLTEwNyw1NiArMTczLDI5IEBAIGZ1bmN0aW9uIHVucGFja2FnZSgpCi0gZnVuY3Rpb24gY21wX3NwZWMgKCkKLSB7Ci0gICAgIGxvY2FsIFJFUwotLSAgICBsb2NhbCBmaWxlMSBmaWxlMgotKyAgICBsb2NhbCBmaWxlX29sZCBmaWxlX25ldwotICAgICBsb2NhbCBmCi0gICAgIGxvY2FsIHNoPSQxCi0gICAgIGxvY2FsIG9sZHJwbT0kMgotICAgICBsb2NhbCBuZXdycG09JDMKLSAKLS0gICAgUUY9IiV7TkFNRX0iCi0tICAgIAotLSAgICAjIGRvbid0IGxvb2sgYXQgUkVMRUFTRSwgaXQgY29udGFpbnMgb3VyIGJ1aWxkIG51bWJlcgotLSAgICBRRj0iJFFGICV7VkVSU0lPTn0gJXtFUE9DSH1cXG4iCi0tICAgIFFGPSIkUUYgJXtTVU1NQVJZfVxcbiV7REVTQ1JJUFRJT059XFxuIgotLSAgICBRRj0iJFFGICV7VkVORE9SfSAle0RJU1RSSUJVVElPTn0gJXtESVNUVVJMfSIKLS0gICAgUUY9IiRRRiAle0xJQ0VOU0V9ICV7TElDRU5TRX1cXG4iCi0tICAgIFFGPSIkUUYgJXtHUk9VUH0gJXtVUkx9ICV7RVhDTFVERUFSQ0h9ICV7RVhDTFVERU9TfSAle0VYQ0xVU0lWRUFSQ0h9XFxuIgotLSAgICBRRj0iJFFGICV7RVhDTFVTSVZFT1N9ICV7UlBNVkVSU0lPTn0gJXtQTEFURk9STX1cXG4iCi0tICAgIFFGPSIkUUYgJXtQQVlMT0FERk9STUFUfSAle1BBWUxPQURDT01QUkVTU09SfSAle1BBWUxPQURGTEFHU31cXG4iCi0tICAgIAotLSAKLS0gICAgIyBYWFggV2UgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBleGlzdGVuY2UgKGJ1dCBub3QgdGhlIGNvbnRlbnQgKCEpKQotLSAgICAjIG9mIFNJR0dQRyAoYW5kIHBlcmhhcHMgdGhlIG90aGVyIFNJRyopCi0tICAgIAotLSAgICAjIFhYWCBXZSBkb24ndCBsb29rIGF0IHRyaWdnZXJzCi0tICAgIAotLSAgICBRRj0iJFFGIFsle1ZFUklGWVNDUklQVFBST0d9ICV7VkVSSUZZU0NSSVBUfV1cXG4iCi0tICAgIAotLSAgICAjIE9ubHkgdGhlIGZpcnN0IENoYW5nZUxvZyBlbnRyeTsgc2hvdWxkIGJlIGVub3VnaAotLSAgICBRRj0iJFFGICV7Q0hBTkdFTE9HVElNRX0gJXtDSEFOR0VMT0dOQU1FfSAle0NIQU5HRUxPR1RFWFR9XFxuIgotLSAgICAKLS0gICAgZmlsZTE9YG1rdGVtcGAKLS0gICAgZmlsZTI9YG1rdGVtcGAKLS0gICAgCi0tICAgIGNoZWNrX2hlYWRlciAkb2xkcnBtID4gJGZpbGUxCi0tICAgIGNoZWNrX2hlYWRlciAkbmV3cnBtID4gJGZpbGUyCi0tICAgIAotLSAgICAjIHRoZSBESVNUVVJMIHRhZyBjYW4gYmUgdXNlZCBhcyBjaGVja2luIElECi0tICAgICNlY2hvICIkUUYiCi0tICAgIGVjaG8gImNvbXBhcmluZyBycG10YWdzIgotLSAgICBpZiAhIGRpZmYgLWF1ICRmaWxlMSAkZmlsZTI7IHRoZW4KLS0gICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotLSAgICAgICAgcm0gJGZpbGUxICRmaWxlMgotLSAgICAgICAgcmV0dXJuIDEKLS0gICAgICBmaQotLSAgICBmaQotLSAgICAKLSsgICAgZmlsZV9vbGQ9YG1rdGVtcGAKLSsgICAgZmlsZV9uZXc9YG1rdGVtcGAKLSsgICAgc3BlY19vbGQ9YG1rdGVtcGAKLSsgICAgc3BlY19uZXc9YG1rdGVtcGAKLSsKLSsgICAgY2hlY2tfaGVhZGVyICIkUUZfQUxMIiAkb2xkcnBtID4gJHNwZWNfb2xkCi0rICAgIGNoZWNrX2hlYWRlciAiJFFGX0FMTCIgJG5ld3JwbSA+ICRzcGVjX25ldwotKwotKyAgICBuYW1lX25ldz0iJChnZXRfdmFsdWUgUUZfTkFNRSAkc3BlY19uZXcpIgotKyAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3PSIkKGdldF92YWx1ZSBRRl9WRVJfUkVMICRzcGVjX25ldykiCi0rICAgIG5hbWVfdmVyX3JlbF9uZXc9IiQoZ2V0X3ZhbHVlIFFGX05BTUVfVkVSX1JFTCAkc3BlY19uZXcpIgotKwotKyAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkPSIkKGdldF92YWx1ZSBRRl9WRVJfUkVMICRzcGVjX29sZCkiCi0rICAgIG5hbWVfdmVyX3JlbF9vbGQ9IiQoZ2V0X3ZhbHVlIFFGX05BTUVfVkVSX1JFTCAkc3BlY19vbGQpIgotKwotICAgICAjIFJlbWVtYmVyIHRvIHF1b3RlIHRoZSAuIHdoaWNoIGlzIGluIHJlbGVhc2UKLS0gICAgdmVyc2lvbl9yZWxlYXNlX29sZD0kKCRSUE0gLS1xZiAiJXtWRVJTSU9OfS0le1JFTEVBU0V9IiAiJG9sZHJwbSIpCi0tICAgIHZlcnNpb25fcmVsZWFzZV9uZXc9JCgkUlBNIC0tcWYgIiV7VkVSU0lPTn0tJXtSRUxFQVNFfSIgIiRuZXdycG0iKQotLSAgICBuYW1lX3Zlcl9yZWxfb2xkPSQoJFJQTSAtLXFmICIle05BTUV9LSV7VkVSU0lPTn0tJXtSRUxFQVNFfSIgIiRvbGRycG0iKQotLSAgICBuYW1lX3Zlcl9yZWxfbmV3PSQoJFJQTSAtLXFmICIle05BTUV9LSV7VkVSU0lPTn0tJXtSRUxFQVNFfSIgIiRuZXdycG0iKQotLSAgICAjIFNob3J0IHZlcnNpb24gd2l0aG91dCBCX0NOVAotKyAgICAjIFNob3J0IHZlcnNpb24gd2l0aG91dCBCX0NOCi0gICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9vbGQlLip9Ci0gICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcy8vLi9cXC59Ci0gICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9uZXclLip9Ci1AQCAtMTY2LDEwICsyMDUsMjcgQEAgZnVuY3Rpb24gY21wX3NwZWMgKCkKLSAgICAgdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sPSR7dmVyc2lvbl9yZWxlYXNlX25ldy8vLi9cXC59Ci0gICAgIG5hbWVfdmVyX3JlbF9vbGRfcmVnZXhfbD0ke25hbWVfdmVyX3JlbF9vbGQvLy4vXFwufQotICAgICBuYW1lX3Zlcl9yZWxfbmV3X3JlZ2V4X2w9JHtuYW1lX3Zlcl9yZWxfbmV3Ly8uL1xcLn0KLSsKLSsgICAgIyBDaGVjayB0aGUgd2hvbGUgc3BlYyBmaWxlIGF0IGZpcnN0LCByZXR1cm4gMCBpbW1lZGlhdGVseSBpZiB0aGUKLSsgICAgIyBhcmUgdGhlIHNhbWUuCi0rICAgIGNhdCAkc3BlY19vbGQgfCB0cmltX3JlbGVhc2Vfb2xkID4gJGZpbGVfb2xkCi0rICAgIGNhdCAkc3BlY19uZXcgfCB0cmltX3JlbGVhc2VfbmV3ID4gJGZpbGVfbmV3Ci0rICAgIGVjaG8gImNvbXBhcmluZyB0aGUgd2hvbGUgc3BlY2ZpbGUiCi0rICAgIGlmIGRpZmYgLWF1ICRzcGVjX29sZCAkc3BlY19uZXc7IHRoZW4KLSsgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotKyAgICAgICAgcm0gJGZpbGVfb2xkICRmaWxlX25ldyAkc3BlY19vbGQgJHNwZWNfbmV3Ci0rICAgICAgICByZXR1cm4gMAotKyAgICAgIGZpCi0rICAgIGZpCi0rCi0rICAgIGdldF92YWx1ZSBRRl9UQUdTICRzcGVjX29sZCA+ICRmaWxlX29sZAotKyAgICBnZXRfdmFsdWUgUUZfVEFHUyAkc3BlY19uZXcgPiAkZmlsZV9uZXcKLSsgICAgY29tcF9maWxlIHJwbXRhZ3MgJGZpbGVfb2xkICRmaWxlX25ldyB8fCByZXR1cm4gMQotKwotICAgICAjIFRoaXMgbWlnaHQgaGFwcGVuIHdoZW4/IQotICAgICBlY2hvICJjb21wYXJpbmcgUkVMRUFTRSIKLSAgICAgaWYgWyAiJHt2ZXJzaW9uX3JlbGVhc2Vfb2xkJS4qfSIgIT0gIiR7dmVyc2lvbl9yZWxlYXNlX25ldyUuKn0iIF0gOyB0aGVuCi0tICAgICAgY2FzZSAkKCRSUE0gLS1xZiAnJXtOQU1FfScgIiRuZXdycG0iKSBpbgotKyAgICAgIGNhc2UgJG5hbWVfbmV3IGluCi0gICAgICAgICBrZXJuZWwtKikKLSAgICAgICAgICAgIyBNYWtlIHN1cmUgYWxsIGtlcm5lbCBwYWNrYWdlcyBoYXZlIHRoZSBzYW1lICVSRUxFQVNFCi0gICAgICAgICAgIGVjaG8gInJlbGVhc2UgcHJlZml4IG1pc21hdGNoIgotQEAgLTE4MSw3MSArMjM3LDM0IEBAIGZ1bmN0aW9uIGNtcF9zcGVjICgpCi0gICAgICAgICAqKSA7OwotICAgICAgIGVzYWMKLSAgICAgZmkKLS0gICAgCi0tICAgIGNoZWNrX3Byb3ZpZGVzICRvbGRycG0gfCB0cmltX3JlbGVhc2Vfb2xkIHwgc29ydCA+ICRmaWxlMQotLSAgICBjaGVja19wcm92aWRlcyAkbmV3cnBtIHwgdHJpbV9yZWxlYXNlX25ldyB8IHNvcnQgPiAkZmlsZTIKLS0gICAgCi0tICAgIGVjaG8gImNvbXBhcmluZyBQUk9WSURFUyIKLS0gICAgaWYgISBkaWZmIC1hdSAkZmlsZTEgJGZpbGUyOyB0aGVuCi0tICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLS0gICAgICAgIHJtICRmaWxlMSAkZmlsZTIKLS0gICAgICAgIHJldHVybiAxCi0tICAgICAgZmkKLS0gICAgZmkKLSAKLS0gICAgIyBzY3JpcHRzLCBtaWdodCBjb250YWluIHJlbGVhc2UgbnVtYmVyCi0tICAgIFFGPSJbJXtQUkVJTlBST0d9ICV7UFJFSU59XFxuXVxcblsle1BPU1RJTlBST0d9ICV7UE9TVElOfVxcbl1cXG5bJXtQUkVVTlBST0d9ICV7UFJFVU59XFxuXVxcblsle1BPU1RVTlBST0d9ICV7UE9TVFVOfVxcbl1cXG4iCi0tICAgIGNoZWNrX2hlYWRlciAkb2xkcnBtIHwgdHJpbV9yZWxlYXNlX29sZCA+ICRmaWxlMQotLSAgICBjaGVja19oZWFkZXIgJG5ld3JwbSB8IHRyaW1fcmVsZWFzZV9uZXcgPiAkZmlsZTIKLSsgICAgZ2V0X3ZhbHVlIFFGX1BST1ZJREVTICRzcGVjX29sZCB8IHRyaW1fcmVsZWFzZV9vbGQgfCBzb3J0ID4gJGZpbGVfb2xkCi0rICAgIGdldF92YWx1ZSBRRl9QUk9WSURFUyAkc3BlY19uZXcgfCB0cmltX3JlbGVhc2VfbmV3IHwgc29ydCA+ICRmaWxlX25ldwotKyAgICBjb21wX2ZpbGUgUFJPVklERVMgJGZpbGVfb2xkICRmaWxlX25ldyB8fCByZXR1cm4gMQotKwotKyAgICBnZXRfdmFsdWUgUUZfU0NSSVBUICRzcGVjX29sZCB8IHRyaW1fcmVsZWFzZV9vbGQgPiAkZmlsZV9vbGQKLSsgICAgZ2V0X3ZhbHVlIFFGX1NDUklQVCAkc3BlY19uZXcgfCB0cmltX3JlbGVhc2VfbmV3ID4gJGZpbGVfbmV3Ci0rICAgIGNvbXBfZmlsZSBzY3JpcHRzICRmaWxlX29sZCAkZmlsZV9uZXcgfHwgcmV0dXJuIDEKLSAKLS0gICAgZWNobyAiY29tcGFyaW5nIHNjcmlwdHMiCi0tICAgIGlmICEgZGlmZiAtYXUgJGZpbGUxICRmaWxlMjsgdGhlbgotLSAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0tICAgICAgICBybSAkZmlsZTEgJGZpbGUyCi0tICAgICAgICByZXR1cm4gMQotLSAgICAgIGZpCi0tICAgIGZpCi0tICAgIAotICAgICAjIEZpcnN0IGNoZWNrIHRoZSBmaWxlIGF0dHJpYnV0ZXMgYW5kIGxhdGVyIHRoZSBtZDVzCi0tICAgIAotLSAgICAjIE5vdyB0aGUgZmlsZXMuICBXZSBsZWF2ZSBvdXQgbXRpbWUgYW5kIHNpemUuICBGb3Igbm9ybWFsIGZpbGVzCi0tICAgICMgdGhlIHNpemUgd2lsbCBpbmZsdWVuY2UgdGhlIE1ENSBhbnl3YXkuICBGb3IgZGlyZWN0b3JpZXMgdGhlIHNpemVzIGNhbgotLSAgICAjIGRpZmZlciwgZGVwZW5kaW5nIG9uIHdoaWNoIGZpbGUgc3lzdGVtIHRoZSBwYWNrYWdlIHdhcyBidWlsdC4gIFRvIG5vdAotLSAgICAjIGhhdmUgdG8gZmlsdGVyIG91dCBkaXJlY3RvcmllcyB3ZSBzaW1wbHkgaWdub3JlIGFsbCBzaXplcy4KLS0gICAgIyBBbHNvIGxlYXZlIG91dCBGSUxFREVWSUNFUywgRklMRUlOT0RFUyAoZGVwZW5kcyBvbiB0aGUgYnVpbGQgaG9zdCksCi0tICAgICMgRklMRUNPTE9SUywgRklMRUNMQVNTIChub3JtYWxseSB1c2VmdWwgYnV0IGZpbGUgb3V0cHV0IGNvbnRhaW5zIG10aW1lcyksIAotLSAgICAjIEZJTEVERVBFTkRTWCBhbmQgRklMRURFUEVORFNOLiAKLS0gICAgIyBBbHNvIEZJTEVMQU5HUyAob3I/KQotLSAgICBRRj0iWyV7RklMRU5BTUVTfSAle0ZJTEVGTEFHU30gJXtGSUxFU1RBVEVTfSAle0ZJTEVNT0RFUzpvY3RhbH0gJXtGSUxFVVNFUk5BTUV9ICV7RklMRUdST1VQTkFNRX0gJXtGSUxFUkRFVlN9ICV7RklMRVZFUklGWUZMQUdTfSAle0ZJTEVMSU5LVE9TfVxuXVxcbiIKLS0gICAgIyA/Pz8gd2hhdCB0byBkbyB3aXRoIEZJTEVQUk9WSURFIGFuZCBGSUxFUkVRVUlSRT8KLS0KLS0gICAgY2hlY2tfaGVhZGVyICRvbGRycG0gfCB0cmltX3JlbGVhc2Vfb2xkID4gJGZpbGUxCi0tICAgIGNoZWNrX2hlYWRlciAkbmV3cnBtIHwgdHJpbV9yZWxlYXNlX25ldyA+ICRmaWxlMgotLSAgICAKLS0gICAgZWNobyAiY29tcGFyaW5nIGZpbGVsaXN0IgotLSAgICBpZiAhIGRpZmYgLWF1ICRmaWxlMSAkZmlsZTI7IHRoZW4KLS0gICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotLSAgICAgICAgcm0gJGZpbGUxICRmaWxlMgotLSAgICAgICAgcmV0dXJuIDEKLS0gICAgICBmaQotLSAgICBmaQotLSAgICAKLSsgICAgZ2V0X3ZhbHVlIFFGX0ZJTEVMSVNUICRzcGVjX29sZCB8IHRyaW1fcmVsZWFzZV9vbGQgPiAkZmlsZV9vbGQKLSsgICAgZ2V0X3ZhbHVlIFFGX0ZJTEVMSVNUICRzcGVjX25ldyB8IHRyaW1fcmVsZWFzZV9uZXcgPiAkZmlsZV9uZXcKLSsgICAgY29tcF9maWxlIGZpbGVsaXN0ICRmaWxlX29sZCAkZmlsZV9uZXcgfHwgcmV0dXJuIDEKLSsKLSAgICAgIyBub3cgdGhlIG1kNXN1bXMuIGlmIHRoZXkgYXJlIGRpZmZlcmVudCwgd2UgY2hlY2sgbW9yZSBkZXRhaWxlZAotICAgICAjIGlmIHRoZXJlIGFyZSBkaWZmZXJlbnQgZmlsZW5hbWVzLCB3ZSB3aWxsIGFscmVhZHkgaGF2ZSBhYm9ydGVkIGJlZm9yZQotICAgICAjIGZpbGUgZmxhZyA2NCBtZWFucyAiZ2hvc3QiLCBmaWx0ZXIgdGhvc2Ugb3V0LgotLSAgICBRRj0iWyV7RklMRU5BTUVTfSAle0ZJTEVNRDVTfSAle0ZJTEVGTEFHU31cbl1cXG4iCi0tICAgIGNoZWNrX2hlYWRlciAkb2xkcnBtIHxncmVwIC12ICIgNjQkInwgdHJpbV9yZWxlYXNlX29sZCA+ICRmaWxlMQotLSAgICBjaGVja19oZWFkZXIgJG5ld3JwbSB8Z3JlcCAtdiAiIDY0JCJ8IHRyaW1fcmVsZWFzZV9uZXcgPiAkZmlsZTIKLS0gICAgCi0rICAgIGdldF92YWx1ZSBRRl9DSEVDS1NVTSAkc3BlY19vbGQgfCBncmVwIC12ICIgNjQkIiB8IHRyaW1fcmVsZWFzZV9vbGQgPiAkZmlsZV9vbGQKLSsgICAgZ2V0X3ZhbHVlIFFGX0NIRUNLU1VNICRzcGVjX25ldyB8IGdyZXAgLXYgIiA2NCQiIHwgdHJpbV9yZWxlYXNlX25ldyA+ICRmaWxlX25ldwotICAgICBSRVM9MgotICAgICAjIGRvbmUgaWYgdGhlIHNhbWUKLSAgICAgZWNobyAiY29tcGFyaW5nIGZpbGUgY2hlY2tzdW0iCi0tICAgIGlmIGNtcCAtcyAkZmlsZTEgJGZpbGUyOyB0aGVuCi0rICAgIGlmIGNtcCAtcyAkZmlsZV9vbGQgJGZpbGVfbmV3OyB0aGVuCi0gICAgICAgUkVTPTAKLSAgICAgZmkKLS0gICAgCi0rCi0gICAgICMgR2V0IG9ubHkgZmlsZXMgd2l0aCBkaWZmZXJlbnQgTUQ1c3VtcwotLSAgICBmaWxlcz1gZGlmZiAtVTAgJGZpbGUxICRmaWxlMiB8IGZncmVwIC12ICsrKyB8IGdyZXAgXisgfCBjdXQgLWIyLSB8IGF3ayAne3ByaW50ICQxfSdgCi0rICAgIGZpbGVzPWBkaWZmIC1VMCAkZmlsZV9vbGQgJGZpbGVfbmV3IHwgZmdyZXAgLXYgKysrIHwgZ3JlcCBeKyB8IGN1dCAtYjItIHwgYXdrICd7cHJpbnQgJDF9J2AKLSAKLSAgICAgaWYgdGVzdCAtZiAiJHNoIjsgdGhlbgotICAgICAgIGVjaG8gImNyZWF0aW5nIHJlbmFtZSBzY3JpcHQiCi1AQCAtMjYxLDcgKzI4MCw3IEBAIGZ1bmN0aW9uIGNtcF9zcGVjICgpCi0gICAgICAgZG9uZSA+PiAiJHtzaH0iCi0gICAgIGZpCi0gICAgICMKLS0gICAgcm0gJGZpbGUxICRmaWxlMgotKyAgICBybSAkZmlsZV9vbGQgJGZpbGVfbmV3Ci0gICAgIHJldHVybiAkUkVTCi0gfQotIAotLS0gCi0yLjkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL3BrZy1kaWZmLnNoLWNoZWNrLWZvci1maWZvLW5hbWVkLXBpcGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL3BrZy1kaWZmLnNoLWNoZWNrLWZvci1maWZvLW5hbWVkLXBpcGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZjBjNTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9wa2ctZGlmZi5zaC1jaGVjay1mb3ItZmlmby1uYW1lZC1waXBlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBhNzhmZTRmNzkyYTlhYzlmNGQzNjRlODM2Yzg4NTVmNDg1NjFkNmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE0IEp1bCAyMDE2IDE5OjUyOjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBwa2ctZGlmZi5zaDogY2hlY2sgZm9yIGZpZm8obmFtZWQgcGlwZSkKLQotT3RoZXJ3aXNlICJjbXAgLXMgZmlmbzEgZmlmbzIiIHdpbGwgd2FpdCBmb3IgaW5wdXRpbmcgZm9yZXZlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlL3B1bGwvMTBdCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gcGtnLWRpZmYuc2ggfCA3ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9wa2ctZGlmZi5zaCBiL3BrZy1kaWZmLnNoCi1pbmRleCA1ZGQzYTM4Li4xZjM1M2FhIDEwMDY0NAotLS0tIGEvcGtnLWRpZmYuc2gKLSsrKyBiL3BrZy1kaWZmLnNoCi1AQCAtNzM1LDYgKzczNSwxMyBAQCBjaGVja19zaW5nbGVfZmlsZSgpCi0gICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZmkKLSAgICAgICAgOzsKLSsgICAgIGZpZm8qcGlwZSopCi0rICAgICAgIGZ0eXBlX25ldz0iYC91c3IvYmluL2ZpbGUgbmV3LyRmaWxlIHwgc2VkIC1lICdzQF5bXjpdXCs6W1s6Ymxhbms6XV0qQEAnIC1lICdzQFtbOmJsYW5rOl1dKiRAQCdgIgotKyAgICAgICBpZiBbICIkZnR5cGVfbmV3IiA9ICIkZnR5cGUiICBdOyB0aGVuCi0rICAgICAgICAgcmV0dXJuIDAKLSsgICAgICAgZmkKLSsgICAgICAgcmV0dXJuIDEKLSsgICAgICAgOzsKLSAgICAgICopCi0gICAgICAgIGlmICEgZGlmZl90d29fZmlsZXM7IHRoZW4KLSAgICAgICAgICAgIHJldHVybiAxCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtY2hlY2tfc2luZ2xlX2ZpbGUtcmV0dXJuLWF0LW9uY2Utd2hlbi1zYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtY2hlY2tfc2luZ2xlX2ZpbGUtcmV0dXJuLWF0LW9uY2Utd2hlbi1zYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQyYWYyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL3BrZy1kaWZmLnNoLWNoZWNrX3NpbmdsZV9maWxlLXJldHVybi1hdC1vbmNlLXdoZW4tc2EucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDY1Nzk4M2VmOWNhOGY4MzU0MTcyNjgyZTE3NDA4YzRmNmI1YmM2NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTQgSnVsIDIwMTYgMTk6NDY6MDggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIHBrZy1kaWZmLnNoOiBjaGVja19zaW5nbGVfZmlsZSgpOiByZXR1cm4gYXQgb25jZSB3aGVuCi0gc2FtZQotCi1JZiB0aGUgdHdvIGZpbGVzIGFyZSB0aGUgc2FtZSwgcmV0dXJuIGF0IG9uY2UsIHRoaXMgY2FuIHNhdmUgYSBsb3Qgb2YKLXRpbWUgd2hlbiB0aGVyZSBhcmUgYXJjaGl2ZXMgaW5zaWRlIGFyY2hpdmVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2J1aWxkLWNvbXBhcmUvcHVsbC8xMF0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBwa2ctZGlmZi5zaCB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3BrZy1kaWZmLnNoIGIvcGtnLWRpZmYuc2gKLWluZGV4IDNjZjEwYWEuLjQwMmQ0YTQgMTAwNjQ0Ci0tLS0gYS9wa2ctZGlmZi5zaAotKysrIGIvcGtnLWRpZmYuc2gKLUBAIC0yOTMsNiArMjkzLDEzIEBAIGNoZWNrX2NvbXByZXNzZWRfZmlsZSgpCi0gY2hlY2tfc2luZ2xlX2ZpbGUoKQotIHsKLSAgIGxvY2FsIGZpbGU9IiQxIgotKwotKyAgIyBJZiB0aGUgdHdvIGZpbGVzIGFyZSB0aGUgc2FtZSwgcmV0dXJuIGF0IG9uY2UuCi0rICBpZiBbIC1mIG9sZC8kZmlsZSAtYSAtZiBuZXcvJGZpbGUgXTsgdGhlbgotKyAgICBpZiBjbXAgLXMgb2xkLyRmaWxlIG5ldy8kZmlsZTsgdGhlbgotKyAgICAgIHJldHVybiAwCi0rICAgIGZpCi0rICBmaQotICAgY2FzZSAkZmlsZSBpbgotICAgICAqLnNwZWMpCi0gICAgICAgIHNlZCAtaSAtZSAicyxSZWxlYXNlOi4qJHJlbGVhc2UxLFJlbGVhc2U6IEBSRUxFQVNFQCwiIG9sZC8kZmlsZQotLS0gCi0yLjkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL3BrZy1kaWZmLnNoLXJlbW92ZS1zcGFjZS1pbi10aGUtZW5kLWZvci1mdHlwZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtcmVtb3ZlLXNwYWNlLWluLXRoZS1lbmQtZm9yLWZ0eXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDc3MTcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtcmVtb3ZlLXNwYWNlLWluLXRoZS1lbmQtZm9yLWZ0eXBlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA4MzZhNjc4M2RmOWM1ODJhODM0ZmNhMjM5ZjIyNzA2M2E1Njg3NzE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE0IEp1bCAyMDE2IDE5OjQ5OjEyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBwa2ctZGlmZi5zaDogcmVtb3ZlIHNwYWNlIGluIHRoZSBlbmQgZm9yIGZ0eXBlCi0KLVZlcnNpb25zIG9mIGZpbGUgbGlrZSA1LjE0IHJldHVybnMgYSAiICIgaW4gdGhlIGVuZCwgZm9yIGV4YW1wbGU6Ci1mdHlwZT0iZGlyZWN0b3J5ICIsIGJ1dCB3ZSBuZWVkIGZ0eXBlPSJkaXJlY3RvcnkiLCByZW1vdmUgdGhlIHNwYWNlIHRvCi1maXggdGhlIHByb2JsZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS9wdWxsLzEwXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBrZy1kaWZmLnNoIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcGtnLWRpZmYuc2ggYi9wa2ctZGlmZi5zaAotaW5kZXggNDAyZDRhNC4uNWRkM2EzOCAxMDA2NDQKLS0tLSBhL3BrZy1kaWZmLnNoCi0rKysgYi9wa2ctZGlmZi5zaAotQEAgLTYzMyw3ICs2MzMsNyBAQCBjaGVja19zaW5nbGVfZmlsZSgpCi0gICAgICAgOzsKLSAgIGVzYWMKLSAKLS0gIGZ0eXBlPWAvdXNyL2Jpbi9maWxlIG9sZC8kZmlsZSB8IHNlZCAnc0BeW146XVwrOltbOmJsYW5rOl1dKkBAJ2AKLSsgIGZ0eXBlPWAvdXNyL2Jpbi9maWxlIG9sZC8kZmlsZSB8IHNlZCAtZSAnc0BeW146XVwrOltbOmJsYW5rOl1dKkBAJyAtZSAnc0BbWzpibGFuazpdXSokQEAnYAotICAgY2FzZSAkZnR5cGUgaW4KLSAgICAgIFBFMzJcIGV4ZWN1dGFibGUqTW9ub1wvXC5OZXRcIGFzc2VtYmx5KikKLSAgICAgICAgZWNobyAiUEUzMiBNb25vLy5OZXQgYXNzZW1ibHk6ICRmaWxlIgotLS0gCi0yLjkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRiNzA5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGNjYWNoZS5pbmMKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLmFkb2M7bWQ1PTAwOTRjNTkwMzljZWM2NmI4YTRjOTA1MjA0MzMzNTE0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzQzMzk0NjVhYjg3ZTBiNDA2OTg1ZWQ2OTUxNWYxOWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTU2MmZjZGJlNzY2NDA2YjZmZTRiZjk3Y2U1YzAwMWQyYmU4YTE3NDY1ZjMzYmNkZGVmYzk0OTliYmIwNTdkOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YTY4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4zLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBjY2FjaGUuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5hZG9jO21kNT0wMDk0YzU5MDM5Y2VjNjZiOGE0YzkwNTIwNDMzMzUxNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjdiZTYyZWE2ZTE5MDk0MWE4YzEyYTNkNTM5NGZkOTI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1NTk1NWE2MTU2MmM1M2M0ZWM0NjY5ZTFjOTI3MDhiMDAwOGY1MGQyMTRiMjdmMDdhODdjZjRhMWZhNmIwMWUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kZWphZ251L2RlamFnbnVfMS42LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kZWphZ251L2RlamFnbnVfMS42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RjNGU0MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RlamFnbnUvZGVqYWdudV8xLjYuMi5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIkdOVSB1bml0IHRlc3RpbmcgZnJhbWV3b3JrLCB3cml0dGVuIGluIEV4cGVjdCBhbmQgVGNsIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorU0VDVElPTiA9ICJkZXZlbCIKKworREVQRU5EUyArPSAiZXhwZWN0LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMWIwNzUxNjUzM2YzNTFiM2FiYTM0MjNmYWZlZmZkNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZDA2NzFlMWI0NTE4OWM1ZmM4YWRlNGIzYjAxNjM1ZmI5ZWVhYjQ1Y2Y1NGY1N2RiMjNlNGM0YzFhMTdkMjYxIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc4MWZmNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotcmVxdWlyZSBnY2MtY29tbW9uLmluYwotCi0jIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKLQotUFYgPSAiOC4zLjAiCi0KLSMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCi0KLUJJTlYgPSAiOC4zLjAiCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy04LjM6IgotCi1ERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiBmbGV4LW5hdGl2ZSIKLU5BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1MSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKLSIKLQotI1JFTEVBU0UgPSAiOC4wLjEtUkMtMjAxODA0MjciCi1CQVNFVVJJID89ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci54eiIKLSNTUkNSRVYgPSAiZjdjZjc5OGI3M2ZkMWEwNzA5OGY5YTQ5MGRlZWMxZTJhMzZlMGJlZCIKLSNCQVNFVVJJID89ICJnaXQ6Ly9naXRodWIuY29tL2djYy1taXJyb3IvZ2NjO2JyYW5jaD1nY2MtNi1icmFuY2g7cHJvdG9jb2w9Z2l0IgotI0JBU0VVUkkgPz0gImh0dHA6Ly9taXJyb3JzLmNvbmNlcnRwYXNzLmNvbS9nY2Mvc25hcHNob3RzLyR7UkVMRUFTRX0vZ2NjLSR7UkVMRUFTRX0udGFyLnh6IgotCi1TUkNfVVJJID0gIlwKLSAgICAgICAgICAgJHtCQVNFVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtRGlzYWJsZS1zZHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZXhwb3J0LUNQUC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI2LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMxLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMi1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM0LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNi1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzctRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM4LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM5LXJpc2N2LURpc2FibGUtbXVsdGlsaWItZm9yLU9FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDAtcG93ZXJwYy1wb3dlcnBjNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQxLUFkZC1hLXJlY3Vyc2lvbi1saW1pdC10by1saWJpYmVydHktcy1kZW1hbmdsaW5nLWNvZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0Mi1QUi1kZWJ1Zy04Njk2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQzLVBSODU0MzQtUHJldmVudC1zcGlsbGluZy1vZi1zdGFjay1wcm90ZWN0b3ItZ3VhcmQtcy0ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjY1YjIxMGI0YmZlN2UwNjAwNTFmNzk5ZTBmOTk0ODk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0YmFhZGZlNmNjMGY0OTQ3YTg0Y2IxMmQ3ZjBkZmFmNDViYjU4YjdlOTI0NjE2Mzk1OTZjMjFlMDJkOTdkMmMiCi0KLVMgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCi0jUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2dpdCIKLSNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UkVMRUFTRX0iCi1CID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCi0KLSMgTGFuZ3VhZ2UgT3ZlcnJpZGVzCi1GT1JUUkFOID0gIiIKLQotTFRPID0gIi0tZW5hYmxlLWx0byIKLVNTUCA/PSAiLS1kaXNhYmxlLWxpYnNzcCIKLVNTUF9taW5ndzMyID0gIi0tZW5hYmxlLWxpYnNzcCIKLQotRVhUUkFfT0VDT05GX0JBU0UgPSAiXAotICAgICR7TFRPfSBcCi0gICAgJHtTU1B9IFwKLSAgICAtLWVuYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgICR7QCctLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0nIGlmICcke0xJTktFUl9IQVNIX1NUWUxFfScgZWxzZSAnJ30gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS13aXRoLXBwbD1ubyBcCi0gICAgLS13aXRoLWNsb29nPW5vIFwKLSAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKLSAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCi0gICAgLS13aXRob3V0LWlzbCBcCi0iCi0KLUVYVFJBX09FQ09ORl9QQVRIUyA9ICJcCi0gICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCi0gICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCi0gICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKLSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFkNzllNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGQ3YjI4NGE5YmVkZTlkNTA1OWFkN2U5NWE4NjcyNTRiZjkxM2M2MzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODozNzoxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDAxLzQwXSBnY2MtNC4zLjE6IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gY29uZmlndXJlICAgIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMDYwMTM5NTUxMmYuLjhjNWIxZTlkNTYxIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC03NTA3LDcgKzc1MDcsNyBAQCBmaQotICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KLSB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgotIAotLUZMQUdTX0ZPUl9UQVJHRVQ9Ci0rRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKLSBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KLSAgKiIgbmV3bGliICIqKQotICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjMzQzMzMzNjUyMy4uNjljMzFjNjVhZDcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMwOTYsNyArMzA5Niw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2ZmMTI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotRnJvbSA5NWVjNDc2ZGQ3NzI2Y2M5YzFiZmQ2ZmIyM2JhM2FlYThiYmY2MWE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi80MF0gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0KLUFkZCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotemVja2Utbm8taG9zdC1pbmNsdWRlcy5wYXRjaCBwYXRjaC4gIFRoZSBvcmlnaW5hbCBwYXRjaCBjaGVja2VkIGZvcgotL3Vzci9pbmNsdWRlLCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGFuZCB0aGVuIHRyaWdnZXJlZCBhIGZhaWx1cmUgYW5kCi1hYm9ydGVkLgotCi1JbnN0ZWFkLCB3ZSBhZGQgdGhlIHR3byBtaXNzaW5nIGl0ZW1zIHRvIHRoZSBjdXJyZW50IHNjYW4uICBJZiB0aGUgdXNlcgotd2FudHMgdGhpcyB0byBiZSBhIGZhaWx1cmUsIHRoZXkgY2FuIGFkZCAiLVdlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29tbW9uLm9wdCAgICAgIHwgIDQgKysrKwotIGdjYy9jb25maWcuaW4gICAgICAgfCAgNiArKysrKysKLSBnY2MvY29uZmlndXJlICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGdjYy9jb25maWd1cmUuYWMgICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8ICA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMiArKwotIGdjYy9pbmNwYXRoLmMgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKysrKysKLSA3IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKLWluZGV4IGI1MmVmMGIzOGM4Li4wZGUzZjA5MjRjZCAxMDA2NDQKLS0tLSBhL2djYy9jb21tb24ub3B0Ci0rKysgYi9nY2MvY29tbW9uLm9wdAotQEAgLTY3OSw2ICs2NzksMTAgQEAgV3JldHVybi1sb2NhbC1hZGRyCi0gQ29tbW9uIFZhcih3YXJuX3JldHVybl9sb2NhbF9hZGRyKSBJbml0KDEpIFdhcm5pbmcKLSBXYXJuIGFib3V0IHJldHVybmluZyBhIHBvaW50ZXIvcmVmZXJlbmNlIHRvIGEgbG9jYWwgb3IgdGVtcG9yYXJ5IHZhcmlhYmxlLgotIAotK1dwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQ29tbW9uIFZhcihmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpIEluaXQoMSkgV2FybmluZwotK1dhcm4gZm9yIC1JIGFuZCAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBpZiBjcm9zcyBjb21waWxpbmcKLSsKLSBXc2hhZG93Ci0gQ29tbW9uIFZhcih3YXJuX3NoYWRvdykgV2FybmluZwotIFdhcm4gd2hlbiBvbmUgdmFyaWFibGUgc2hhZG93cyBhbm90aGVyLiAgU2FtZSBhcyAtV3NoYWRvdz1nbG9iYWwuCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KLWluZGV4IDViY2NiNDA4MDE2Li4xYzc4NGE4Mjc2YiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuaW4KLSsrKyBiL2djYy9jb25maWcuaW4KLUBAIC0xOTQsNiArMTk0LDEyIEBACi0gI2VuZGlmCi0gCi0gCi0rLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLwotKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rI2VuZGlmCi0rCi0rCi0gLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQotICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KLSAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggNjEyMWUxNjMyNTkuLjM5MDE3MjI0MDBjIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTk1Myw2ICs5NTMsNyBAQCB3aXRoX3N5c3RlbV96bGliCi0gZW5hYmxlX21haW50YWluZXJfbW9kZQotIGVuYWJsZV9saW5rX211dGV4Ci0gZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCi0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfcGx1Z2luCi0gZW5hYmxlX2hvc3Rfc2hhcmVkCi0gZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKLUBAIC0xNjk2LDYgKzE2OTcsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKLSAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKLSsgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0Ci0gICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcwotICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKLUBAIC0yOTcwMSw2ICsyOTcwNCwxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gZmkKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotK2Vsc2UKLSsgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCi0rZmkKLSsKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSAKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggYjA2NmNjNjA5ZTEuLjFiMTM2MmY3MGZlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTYzMjcsNiArNjMyNywxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAotICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCi0rICAgICAgICAgICBbMV0sCi0rICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSBBQ19TVUJTVChzdWJkaXJzKQotIEFDX1NVQlNUKHNyY2RpcikKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggZTVjNGU4MTI1YWEuLmZiMjI4NjMxYTQyIDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTMwNCw2ICszMDQsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAtV3BhY2tlZC1ub3QtYWxpZ25lZCAtV3BhZGRlZCBAZ29sCi0gLVdwYXJlbnRoZXNlcyAgLVduby1wZWRhbnRpYy1tcy1mb3JtYXQgQGdvbAotIC1XcGxhY2VtZW50LW5ldyAgLVdwbGFjZW1lbnQtbmV3PUB2YXJ7bn0gQGdvbAotKy1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyBAZ29sCi0gLVdwb2ludGVyLWFyaXRoICAtV3BvaW50ZXItY29tcGFyZSAgLVduby1wb2ludGVyLXRvLWludC1jYXN0IEBnb2wKLSAtV25vLXByYWdtYXMgIC1XcmVkdW5kYW50LWRlY2xzICAtV3Jlc3RyaWN0ICAtV25vLXJldHVybi1sb2NhbC1hZGRyIEBnb2wKLSAtV3JldHVybi10eXBlICAtV3NlcXVlbmNlLXBvaW50ICAtV3NoYWRvdyAgLVduby1zaGFkb3ctaXZhciBAZ29sCi1AQCAtNTc0Myw2ICs1NzQ0LDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKLSBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKLSBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCi0gCi0rQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KLStkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCi0rb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKLStkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAotK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLSBAaXRlbSAtV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBhNzE2ZjcwODI1OS4uMDJiM2NkMzlmYzIgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEwMzcsNiArMTAzNyw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAgICAiJXtmdXNlLWxkPSo6LWZ1c2UtbGQ9JSp9ICIgTElOS19DT01QUkVTU19ERUJVR19TUEVDIFwKLSAgICAiJVggJXtvKn0gJXtlKn0gJXtOfSAle259ICV7cn1cCi0gICAgICV7c30gJXt0fSAle3UqfSAle3p9ICV7Wn0gJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVTfX0gXAotKyAgICAle1duby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAotKyAgICAle1dlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAotICAgICAle3N0YXRpY3xuby1waWV8c3RhdGljLXBpZTp9ICV7TCp9ICUobWZ3cmFwKSAlKGxpbmtfbGliZ2NjKSAiIFwKLSAgICAgVlRBQkxFX1ZFUklGSUNBVElPTl9TUEVDICIgIiBTQU5JVElaRVJfRUFSTFlfU1BFQyAiICVvICIgQ0hLUF9TUEVDICIgXAotICAgICAle2ZvcGVuYWNjfGZvcGVubXB8JTpndCgle2Z0cmVlLXBhcmFsbGVsaXplLWxvb3BzPSo6JSp9IDEpOlwKLWRpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYwotaW5kZXggYjExYzZhNTc5MzkuLjlhNDU3ZTAyZGQzIDEwMDY0NAotLS0tIGEvZ2NjL2luY3BhdGguYwotKysrIGIvZ2NjL2luY3BhdGguYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAiaW50bC5oIgotICNpbmNsdWRlICJpbmNwYXRoLmgiCi0gI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKLSsjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCi0gCi0gLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCi0gICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLwotQEAgLTM5Myw2ICszOTQsMjYgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKLSAJfQotICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOwotICAgICB9Ci0rCi0rI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQotKyAgICB7Ci0rICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOwotKwotKyAgICAgICBmb3IgKHAgPSBoZWFkc1tJTkNfUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKLSsgICAgICAgICB7Ci0rICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvc3cvaW5jbHVkZSIsIDExKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9vcHQvaW5jbHVkZSIsIDEyKSkpCi0rICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAotKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAotKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOwotKyAgICAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotIH0KLSAKLSAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MmRlYjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUZyb20gNjY0MGQ3ZTM5YjEzZDFlZjI2ZDI0OTE1M2FiMTVkNTEwZmRhMzU2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjA4OjMxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvNDBdIGdjYy00LjMuMzogU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVAotCi1CZWZvcmUgY29tbWl0dGluZywgSSBub3RpY2VkIHRoYXQgUFIvMzIxNjEgd2FzIG1hcmtlZCBhcyBhIGR1cCBvZiBQUi8zMjAwOSwgYnV0IG15IHByZXZpb3VzIHBhdGNoIGRpZCBub3QgZml4IGl0LgotCi1UaGlzIGFsdGVybmF0aXZlIHBhdGNoIGlzIGJldHRlciBiZWNhdXNlIGl0IGxldHMgeW91IGp1c3QgdXNlIENGTEFHU19GT1JfVEFSR0VUIHRvIHNldCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgZm9yIGxpYmdjYy4gU2luY2UgYm9vdHN0cmFwcGVkIHRhcmdldCBsaWJyYXJpZXMgYXJlIG5ldmVyIGNvbXBpbGVkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBkaWZmZXJlbnQgZmxhZ3MgZm9yIHN0YWdlMSBhbmQgbGF0ZXIgc3RhZ2VzLiBBbmQgaXQgYWxzbyBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlIHRoYW4gQ0ZMQUdTX0ZPUl9UQVJHRVQuCi0KLU90aGVyIGNoYW5nZXMgSSBoYWQgdG8gZG8gaW5jbHVkZToKLQotLSBtb3ZpbmcgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgQ0ZMQUdTX0ZPUl9UQVJHRVQgZnJvbSBNYWtlZmlsZS5hbSB0byBjb25maWd1cmUuYWMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBCT09UX0NGTEFHUyBhcmUgc3Vic3RpdHV0ZWQgaW50byBDRkxBR1NfRk9SX1RBUkdFVCAod2hpY2ggaXMgIi1PMiAtZyAkKENGTEFHUykiKSB2aWEgJChDRkxBR1MpLiBJdCBpcyBhbHNvIGNsZWFuZXIgdGhpcyB3YXkgdGhvdWdoLgotCi0tIHBhc3NpbmcgdGhlIHJpZ2h0IENGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBhcyBleHBvcnRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLQotSSBhbHNvIHN0b3BwZWQgcGFzc2luZyBMSUJDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgc2luY2UgdGhleSBhcmUgdW51c2VkIGluIHRoZSB3aG9sZSBzcmMgdHJlZS4gQW5kIEkgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhcyBILVAgcmVtaW5kZWQgbWUgdG8gZG8uCi0KLUJvb3RzdHJhcHBlZC9yZWd0ZXN0ZWQgaTY4Ni1wYy1saW51eC1nbnUsIHdpbGwgY29tbWl0IHRvIDQuNCBzaG9ydGx5LiBPayBmb3IgNC4zPwotCi1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDhjNWIxZTlkNTYxLi4yZDFmYzZiOTRkOSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNjc2OCw2ICs2NzY4LDM4IEBAIGZpCi0gCi0gCi0gCi0rIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKLSsjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUwotKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCi0rIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKLSsjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKLSsjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgotK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKLSsgIGVzYWMKLSsgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotK2ZpCi0rCi0rCi0raWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KLSsgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLU8yICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCi0rICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLSAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKLSAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgotIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MWQ4NzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gMWU2NDlkODFjYTY2MmM0Y2RmNzM4ODJlYmI4YTExZjBmMTlmNWJhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEwOjA2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvNDBdIDY0LWJpdCBtdWx0aWxpYiBoYWNrLgotCi1HQ0MgaGFzIGludGVybmFsIG11bHRpbGliIGhhbmRsaW5nIGNvZGUgYnV0IGl0IGFzc3VtZXMgYSB2ZXJ5IHNwZWNpZmljIHJpZ2lkIGRpcmVjdG9yeQotbGF5b3V0LiBUaGUgYnVpbGQgc3lzdGVtIGltcGxlbWVudGF0aW9uIG9mIG11bHRpbGliIGxheW91dCBpcyB2ZXJ5IGdlbmVyaWMgYW5kIGFsbG93cwotY29tcGxldGUgY3VzdG9taXNhdGlvbiBvZiB0aGUgbGlicmFyeSBkaXJlY3Rvcmllcy4KLQotVGhpcyBwYXRjaCBpcyBhIHBhcnRpYWwgc29sdXRpb24gdG8gYWxsb3cgYW55IGN1c3RvbSBkaXJlY3RvcmllcyB0byBiZSBwYXNzZWQgaW50byBnY2MKLWFuZCBoYW5kbGVkIGNvcnJlY3RseS4gSXQgZm9yY2VzIGdjYyB0byB1c2UgdGhlIGJhc2VfbGliZGlyICh3aGljaCBpcyB0aGUgY3VycmVudAotZGlyZWN0b3J5LCAiLiIpLiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggbXVsdGlsaWIgdGhhdCBpcyBjb25maWd1cmVkIGFzIHdlIGRvbid0Ci1rbm93IHdoaWNoIGNvbXBpbGVyIG9wdGlvbnMgbWF5IGJlIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBjb21waWxlci4gU2luY2Ugd2UgaGF2ZSBhIGNvbXBpbGVyCi1wZXIgbXVsaXRsaWIgYXQgdGhpcyBwb2ludCB0aGF0IGlzbid0IGFuIGlzc3VlLgotCi1UaGUgb25lIHByb2JsZW0gaXMgdGhlIHRhcmdldCBjb21waWxlciBpcyBvbmx5IGdvaW5nIHRvIHdvcmsgZm9yIHRoZSBkZWZhdWx0IG11bHRsaWxpYiBhdAotdGhpcyBwb2ludC4gSWRlYWxseSB3ZSdkIGZpZ3VyZSBvdXQgd2hpY2ggbXVsdGlsaWJzIHdlcmUgYmVpbmcgZW5hYmxlZCB3aXRoIHdoaWNoIHBhdGhzCi1hbmQgYmUgYWJsZSB0byBwYXRjaCB0aGVzZSBlbnRyaWVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgY29ycmVjdCBwYXRocyBidXQgdGhpcyB3ZQotZG9uJ3QgaGF2ZSBzdWNoIGNvZGUgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBzb21ldGhpbmcgdGhlIHRhcmdldCBnY2MgcmVjaXBlIHNob3VsZCBkbwotYW5kIG92ZXJyaWRlIHRoZXNlIHBsYXRmb3JtIGRlZmF1bHRzIGluIGl0cyBidWlsZCBjb25maWcuCi0KLVJQIDE1LzgvMTEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEVsdmlzIERvd3NvbiA8ZWx2aXMuZG93c29uQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvdC1saW51eDY0ICAgfCAgNiArKy0tLS0KLSBnY2MvY29uZmlnL21pcHMvdC1saW51eDY0ICAgfCAxMCArKystLS0tLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IHwgIDUgKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotaW5kZXggOGVhMGZhZmYzNjkuLjI2NmM2MDA4MDA0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotQEAgLTMyLDcgKzMyLDUgQEAKLSAjCi0gY29tbWE9LAotIE1VTFRJTElCX09QVElPTlMgICAgPSAkKHN1YnN0ICQoY29tbWEpLC8sJChUTV9NVUxUSUxJQl9DT05GSUcpKQotLU1VTFRJTElCX0RJUk5BTUVTICAgPSAkKHBhdHN1YnN0IG0lLCAlLCAkKHN1YnN0IC8sICwkKE1VTFRJTElCX09QVElPTlMpKSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOmkzODYtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBteDMyPS4uL2xpYngzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnV4MzIpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotaW5kZXggYzAxN2I3ZDA0YzUuLjEyNjg5MmNmNDBiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotQEAgLTE3LDEwICsxNyw2IEBACi0gIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0gTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAotLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0Ci0tTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCi0tTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKLS0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKLS0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQotK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSsKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLWluZGV4IDBmYWEyYTAyZGY0Li4xM2ZkOGNhOTcxZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci1AQCAtMjYsMTAgKzI2LDkgQEAKLSAjIE1VTFRJTElCX09TRElSTkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdldC4KLSAKLSBNVUxUSUxJQl9PUFRJT05TICAgIDo9IG02NC9tMzIKLS1NVUxUSUxJQl9ESVJOQU1FUyAgIDo9IDY0IDMyCi0rTVVMVElMSUJfRElSTkFNRVMgICA6PSAuIC4KLSBNVUxUSUxJQl9FWFRSQV9PUFRTIDo9IAotLU1VTFRJTElCX09TRElSTkFNRVMgOj0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjLWxpbnV4LWdudSkKLStNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi0gCi0gcnM2MDAwLWxpbnV4Lm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAwMC1saW51eC5jCi0gCSQoQ09NUElMRSkgJDwKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjljZjZjMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotRnJvbSBiNDg2MzgwZGNjNDc1OGU4NTZhYjZkODQ3ZWIzNThkMDViZDc5ZDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTI6NTYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS80MF0gb3B0aW9uYWwgbGlic3RkYwotCi1nY2MtcnVudGltZSBidWlsZHMgbGlic3RkYysrIHNlcGFyYXRlbHkgZnJvbSBnY2MtY3Jvc3MtKi4gSXRzIGNvbmZpZ3VyZSB0ZXN0cyB1c2luZyBnKysKLXdpbGwgbm90IHJ1biBjb3JyZWN0bHkgc2luY2UgYnkgZGVmYXVsdCB0aGUgbGlua2VyIHdpbGwgdHJ5IHRvIGxpbmsgYWdhaW5zdCBsaWJzdGRjKysKLXdoaWNoIHNob3VsZG4ndCBleGlzdCB5ZXQuIFdlIG5lZWQgYW4gb3B0aW9uIHRvIGRpc2FibGUgLWxzdGRjKysKLW9wdGlvbiB3aGlsc3QgbGVhdmluZyAtbGMsIC1sZ2NjIGFuZCBvdGhlciBhdXRvbWF0aWMgbGlicmFyeSBkZXBlbmRlbmNpZXMgYWRkZWQgYnkgZ2NjCi1kcml2ZXIuIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIGFuIG9wdGlvbiB3aGljaCBvbmx5IGRpc2FibGVzIHRoZSAtbHN0ZGMrKy4KLQotQSAic3RhbmRhcmQiIGdjYyBidWlsZCB1c2VzIHhnY2MgYW5kIGhlbmNlIGF2b2lkcyB0aGlzLiBXZSBzaG91bGQgYXNrIHVwc3RyZWFtIGhvdyB0bwotZG8gdGhpcyBvZmZpY2lhbGx5LCB0aGUgbGlrZWx5IGFuc3dlciBpcyBkb24ndCBidWlsZCBsaWJzdGRjKysgc2VwYXJhdGVseS4KLQotUlAgMjkvNi8xMAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gZ2NjL2MtZmFtaWx5L2Mub3B0ICB8ICA0ICsrKysKLSBnY2MvY3AvZysrc3BlYy5jICAgIHwgIDEgKwotIGdjYy9kb2MvaW52b2tlLnRleGkgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLWluZGV4IGY1OTFiMzliZTVhLi4yOTU1ZmNlYTg2NyAxMDA2NDQKLS0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAotKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1AQCAtMTkwMSw2ICsxOTAxLDEwIEBAIG5vc3RkaW5jKysKLSBDKysgT2JqQysrCi0gRG8gbm90IHNlYXJjaCBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBkaXJlY3RvcmllcyBmb3IgQysrLgotIAotK25vc3RkbGliKysKLStEcml2ZXIKLStEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5Ci0rCi0gbwotIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQotIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKLWluZGV4IDQ0M2ExNzQ2ZGEzLi5lOWI1MWJlNjJlZiAxMDA2NDQKLS0tLSBhL2djYy9jcC9nKytzcGVjLmMKLSsrKyBiL2djYy9jcC9nKytzcGVjLmMKLUBAIC0xMzcsNiArMTM3LDcgQEAgbGFuZ19zcGVjaWZpY19kcml2ZXIgKHN0cnVjdCBjbF9kZWNvZGVkX29wdGlvbiAqKmluX2RlY29kZWRfb3B0aW9ucywKLSAgICAgICBzd2l0Y2ggKGRlY29kZWRfb3B0aW9uc1tpXS5vcHRfaW5kZXgpCi0gCXsKLSAJY2FzZSBPUFRfbm9zdGRsaWI6Ci0rCWNhc2UgT1BUX25vc3RkbGliX186Ci0gCWNhc2UgT1BUX25vZGVmYXVsdGxpYnM6Ci0gCSAgbGlicmFyeSA9IC0xOwotIAkgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCBmYjIyODYzMWE0Mi4uMzEwYmE4MTA5ZWQgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMjEyLDYgKzIxMiw5IEBAIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCi0gLWZuby13ZWFrICAtbm9zdGRpbmMrKyBAZ29sCi0gLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wKLSAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKLSstZnZ0YWJsZS12ZXJpZnk9QHJ7W31zdGRAcnt8fXByZWluaXRAcnt8fW5vbmVAcntdfSBAZ29sCi0rLWZ2dHYtY291bnRzIC1mdnR2LWRlYnVnIEBnb2wKLSstbm9zdGRsaWIrKyBAZ29sCi0gLWZleHQtbnVtZXJpYy1saXRlcmFscyBAZ29sCi0gLVdhYmk9QHZhcntufSAgLVdhYmktdGFnICAtV2NvbnZlcnNpb24tbnVsbCAgLVdjdG9yLWR0b3ItcHJpdmFjeSBAZ29sCi0gLVdkZWxldGUtbm9uLXZpcnR1YWwtZHRvciAgLVdsaXRlcmFsLXN1ZmZpeCAgLVdtdWx0aXBsZS1pbmhlcml0YW5jZSBAZ29sCi1AQCAtNTEwLDcgKzUxMyw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtcyAgLXN0YXRpYyAtc3RhdGljLXBpZSAtc3RhdGljLWxpYmdjYyAgLXN0YXRpYy1saWJzdGRjKysgQGdvbAotIC1zdGF0aWMtbGliYXNhbiAgLXN0YXRpYy1saWJ0c2FuICAtc3RhdGljLWxpYmxzYW4gIC1zdGF0aWMtbGlidWJzYW4gQGdvbAotIC1zdGF0aWMtbGlibXB4ICAtc3RhdGljLWxpYm1weHdyYXBwZXJzIEBnb2wKLS0tc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKLSstc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKLSAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCi0gLXUgQHZhcntzeW1ib2x9ICAteiBAdmFye2tleXdvcmR9fQotIAotQEAgLTEyMzU5LDYgKzEyMzYyLDMzIEBAIGxpYnJhcnkgc3Vicm91dGluZXMuCi0gY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCi0gR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCi0gCi0rQGl0ZW0gLW5vc3RkbGliKysKLStAb3BpbmRleCBub3N0ZGxpYisrCi0rRG8gbm90IHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIEMrKyBydW50aW1lIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcuCi0rT25seSB0aGUgbGlicmFyaWVzIHlvdSBzcGVjaWZ5IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIuCi0rCi0rQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9zdGRsaWJ9Ci0rQGNpbmRleCBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcwotK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub3N0ZGxpYn0KLStAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQotK0BjaW5kZXggQG9wdGlvbnstbm9kZWZhdWx0bGlic30gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcwotK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQotK09uZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyaWVzIGJ5cGFzc2VkIGJ5IEBvcHRpb257LW5vc3RkbGlifSBhbmQKLStAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBpcyBAZmlsZXtsaWJnY2MuYX0sIGEgbGlicmFyeSBvZiBpbnRlcm5hbCBzdWJyb3V0aW5lcwotK3doaWNoIEdDQyB1c2VzIHRvIG92ZXJjb21lIHNob3J0Y29taW5ncyBvZiBwYXJ0aWN1bGFyIG1hY2hpbmVzLCBvciBzcGVjaWFsCi0rbmVlZHMgZm9yIHNvbWUgbGFuZ3VhZ2VzLgotKyhAeHJlZntJbnRlcmZhY2UsLEludGVyZmFjaW5nIHRvIEdDQyBPdXRwdXQsZ2NjaW50LEdOVSBDb21waWxlcgotK0NvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfSwKLStmb3IgbW9yZSBkaXNjdXNzaW9uIG9mIEBmaWxle2xpYmdjYy5hfS4pCi0rSW4gbW9zdCBjYXNlcywgeW91IG5lZWQgQGZpbGV7bGliZ2NjLmF9IGV2ZW4gd2hlbiB5b3Ugd2FudCB0byBhdm9pZAotK290aGVyIHN0YW5kYXJkIGxpYnJhcmllcy4gIEluIG90aGVyIHdvcmRzLCB3aGVuIHlvdSBzcGVjaWZ5IEBvcHRpb257LW5vc3RkbGlifQotK29yIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IHlvdSBzaG91bGQgdXN1YWxseSBzcGVjaWZ5IEBvcHRpb257LWxnY2N9IGFzIHdlbGwuCi0rVGhpcyBlbnN1cmVzIHRoYXQgeW91IGhhdmUgbm8gdW5yZXNvbHZlZCByZWZlcmVuY2VzIHRvIGludGVybmFsIEdDQwotK2xpYnJhcnkgc3Vicm91dGluZXMuCi0rKEFuIGV4YW1wbGUgb2Ygc3VjaCBhbiBpbnRlcm5hbCBzdWJyb3V0aW5lIGlzIEBjb2Rle19fbWFpbn0sIHVzZWQgdG8gZW5zdXJlIEMrKwotK2NvbnN0cnVjdG9ycyBhcmUgY2FsbGVkOyBAcHhyZWZ7Q29sbGVjdDIsLEBjb2Rle2NvbGxlY3QyfSwgZ2NjaW50LAotK0dOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30uKQotKwotIEBpdGVtIC1waWUKLSBAb3BpbmRleCBwaWUKLSBQcm9kdWNlIGEgZHluYW1pY2FsbHkgbGlua2VkIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgb24gdGFyZ2V0cwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggMDJiM2NkMzlmYzIuLjhjZDI3YTVkYWQ1IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMDQ3LDYgKzEwNDcsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCi0gICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAotICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKLSAgICAgJXshbm9zdGRsaWI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX1cCi0rICAgICV7IW5vc3RkbGliKys6fVwKLSAgICAgJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVFfX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKLSAjZW5kaWYKLSAKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDctQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDctQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM3ZTcyZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDA3LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDIwOWU0NmY0NTM4MjA4OGNhYWI1NDQyNWI5MmI1ZGZjNDNlYmI0ZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNjoyOCArMDQwMAotU3ViamVjdDogW1BBVENIIDA3LzQwXSBDT0xMRUNUX0dDQ19PUFRJT05TCi0KLVRoaXMgcGF0Y2ggYWRkcyAtLXN5c3Jvb3QgaW50byBDT0xMRUNUX0dDQ19PUFRJT05TIHdoaWNoIGlzIHVzZWQgdG8KLWludm9rZSBjb2xsZWN0Mi4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvZ2NjLmMgfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggOGNkMjdhNWRhZDUuLmQzNTVkNjU1ODNhIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC00Njc3LDYgKzQ2NzcsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCi0gCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7Ci0gCi0gICBmaXJzdF90aW1lID0gVFJVRTsKLSsjaWZkZWYgSEFWRV9MRF9TWVNST09UCi0rICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQotKyAgICB7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKLSsgICAgICBmaXJzdF90aW1lID0gRkFMU0U7Ci0rICAgIH0KLSsjZW5kaWYKLSAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDgtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDA4LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTYzMmFmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDgtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1Gcm9tIDNiY2JkZjVhZGU1NGE3MjgyMGFkNzc5ODExOWQwYmJhZDRiYWY2ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNzoyNSArMDQwMAotU3ViamVjdDogW1BBVENIIDA4LzQwXSBVc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluCi0gJHtCfQotCi1Vc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluICR7Qn0sIHNvIHRoYXQKLXRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVdoaWxlIGNvbXBpbGluZyBnY2MtY3Jvc3NzZGstaW5pdGlhbC14ODZfNjQgb24gc29tZSBob3N0LCB0aGVyZSBpcwotb2NjYXNpb25hbGx5IGZhaWx1cmUgdGhhdCB0ZXN0IHRoZSBleGlzdGFuY2Ugb2YgZGVmYXVsdC5oIGRvZXNuJ3QKLXdvcmssIHRoZSByZWFzb24gaXMgdG1faW5jbHVkZV9saXN0PScqKiBkZWZhdWx0cy5oJyByYXRoZXIgdGhhbgotdG1faW5jbHVkZV9saXN0PScqKiAuL2RlZmF1bHRzLmgnCi0KLVNvIHdlIGFkZCB0aGUgdGVzdCBjb25kaXRpb24gZm9yIHRoaXMgc2l0dWF0aW9uLgotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgNCArKy0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDQgKystLQotIGdjYy9ta2NvbmZpZy5zaCAgfCA0ICsrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggMjBiZWUwNDk0YjEuLjEzNjcxMzZiZmFjIDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC01MzgsNyArNTM4LDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACi0gCi0geG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKLS10bWFrZV9maWxlPUB0bWFrZV9maWxlQAotK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQotIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACi0gVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACi0gVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCAwYzliOGFjNWY1NS4uMTM0YzJjMmYxNTYgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTIxNTgsOCArMTIxNTgsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA1Mzg0MDM2MzExNS4uMGMzYzgyZTRmZjcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTkyMiw4ICsxOTIyLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvbWtjb25maWcuc2ggYi9nY2MvbWtjb25maWcuc2gKLWluZGV4IDBmNzVjODYzYzBiLi42OGQ4ZDY2MTNjZiAxMDA2NDQKLS0tLSBhL2djYy9ta2NvbmZpZy5zaAotKysrIGIvZ2NjL21rY29uZmlnLnNoCi1AQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgotICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KLSAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAotIAlmb3IgZmlsZSBpbiAiJEAiOyBkbwotLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSsJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0gCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCi0gCSAgICBlbHNlCi0gCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCi1AQCAtMTA2LDcgKzEwNiw3IEBAIGVzYWMKLSAKLSAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCi0gaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgotLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSsgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSBmaQotIAotICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDktZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDA5LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGQ4OTViLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDktZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGU2NTQ1NzMzNTJkMjhmMTYwZjM3OWVlNzdlNDA2N2NmMTA4NzE0ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAotU3ViamVjdDogW1BBVENIIDA5LzQwXSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KLQotKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKLXVzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKLWRpcmVjdG9yeS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLWluZGV4IDkxZmNlOGZlY2QwLi42NzQ3Zjg2ZWI5OCAxMDA3NTUKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1AQCAtMTI4ODMsNyArMTI4ODMsNyBAQCBlc2FjCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQotIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1pbmRleCBiZjZkMzYzNGRkYS4uOWRiZTQzY2M2MTYgMTAwNjQ0Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotQEAgLTI1MCw3ICsyNTAsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQotIAotICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5Ci0gI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCi0tRkM9IiRHRk9SVFJBTiIKLSsjRkM9IiRHRk9SVFJBTiIKLSBBQ19QUk9HX0ZDKGdmb3J0cmFuKQotIAotICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDEwLWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM3ZWFjZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDEwLWNwcC1ob25vci1zeXNyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSAyYWU3YWY0ZWI3MGVmZjZhZWRhMWZlOTYzMzNmZjUwY2ZhYTlkOTA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC80MF0gY3BwOiBob25vciBzeXNyb290LgotCi1DdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKLXByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KLXJhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcwotcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KLQotVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgotCi1UaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKLS1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCi0KLVtZT0NUTyAjMjA3NF0KLQotUlAgMjAxMi8wNC8xMwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCi0gZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1pbmRleCBmMDgwMmI4OTE1Yy4uZjMyNGQyOTk4NDkgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvbGFuZy1zcGVjcy5oCi0rKysgYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1AQCAtNjQsNSArNjQsNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgeyIuaWkiLCAiQGMrKy1jcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjKystY3BwLW91dHB1dCIsCi0gICAgIiV7IU06JXshTU06JXshRTpcCi0tICAgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJTJcCi0rICAgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJTJcCi0gICAgICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBkMzU1ZDY1NTgzYS4uNTcwY2RjMDAwMzQgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEzNDMsNyArMTM0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9Ci0gCQkJCQkgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19fSIsIDAsIDAsIDB9LAotICAgeyIuaSIsICJAY3BwLW91dHB1dCIsIDAsIDAsIDB9LAotICAgeyJAY3BwLW91dHB1dCIsCi0tICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLSsgICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotICAgeyIucyIsICJAYXNzZW1ibGVyIiwgMCwgMCwgMH0sCi0gICB7IkBhc3NlbWJsZXIiLAotICAgICIleyFNOiV7IU1NOiV7IUU6JXshUzphcyAlKGFzbV9kZWJ1ZykgJShhc21fb3B0aW9ucykgJWkgJUEgfX19fSIsIDAsIDAsIDB9LAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODYzY2ZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTEtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gMWUxZWEwZWI1NWE1OTRhYzRjZDdiODM4Zjc0ZGVjNzQwNWFhZTAyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIzOjA4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvNDBdIE1JUFM2NDogRGVmYXVsdCB0byBONjQgQUJJCi0KLU1JUFM2NCBkZWZhdWx0cyB0byBuMzIgQUJJLCB0aGlzIHBhdGNoIG1ha2VzIGl0Ci1zbyB0aGF0IGl0IGRlZmF1bHRzIHRvIE42NCBBQkkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCi0tLS0KLSBnY2MvY29uZmlnLmdjYyB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYwotaW5kZXggN2FmOGUwMjgxMDQuLmZjN2M5MTI0NmVkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5nY2MKLSsrKyBiL2djYy9jb25maWcuZ2NjCi1AQCAtMjE0MywyOSArMjE0MywyOSBAQCBtaXBzKi0qLWxpbnV4KikJCQkJIyBMaW51eCBNSVBTLCBlaXRoZXIgZW5kaWFuLgotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHMzMgotIAkJCTs7Ci0gCQltaXBzNjRlbC1zdC1saW51eC1nbnUpCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBtaXBzL3N0LmgiCi0gCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBtaXBzL3Qtc3QiCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHM2NG9jdGVvbiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBNSVBTX0NQVV9TVFJJTkdfREVGQVVMVD1cXFwib2N0ZW9uXFxcIiIKLSAJCQl0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19TT0ZUX0ZMT0FUX0FCSQotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyNiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjYKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwc2lzYTY0cjIqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHIyCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHM2NCotKi1saW51eCogfCBtaXBzaXNhNjQqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCWVzYWMKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNiZTEwZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDEyLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDggKzAsMCBAQAotRnJvbSA2Zjg2NDk5MzZkZjM2NzcxMDliODM5NmY1NjNjNzE2YWU4YjIzN2ZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMi80MF0gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLSByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgotCi1UaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgotcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycwotVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYwotQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKLVNILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCi0KLVJlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICB8ICA0ICsrLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCi0gZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdjYy9jb25maWcvcmlzY3YvbGludXguaCAgICAgfCAgMiArLQotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNiArKysrKystLS0tLS0tLS0tCi0gZ2NjL2NvbmZpZy9zaC9saW51eC5oICAgICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggICB8ICA0ICsrLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi1pbmRleCAzNmI3NGRjMTk5My4uMDIzNzM1NzhhZjggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi0rKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi1AQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAotIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgotICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1pbmRleCA4NTg1ZmRlM2Q0MS4uYjNhZjY4Y2FjNTcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTYyLDggKzYyLDggQEAKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLwotIAotICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotaW5kZXggY2ZjZDljYjFhNWMuLmE3OThlOTg3ZWNiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi1AQCAtNjAsNyArNjAsNyBAQAotIAotICNkZWZpbmUgTElCR0NDX1NQRUMgIiV7bWZsb2F0LWFiaT1zb2Z0KjotbGZsb2F0fSAtbGdjYyIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjZGVmaW5lIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgICIle2gqfSBcCi0gICAgJXtzdGF0aWM6LUJzdGF0aWN9IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1pbmRleCA2OWY5N2YxNWIwZC4uNzFiYzMxZDkyMzEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLUBAIC0yMCw3ICsyMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotaW5kZXggZjJkOTEzZTMwYWMuLjg3MjVmMzNkOGE1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKLWluZGV4IDJlYTRmZjkyYzFkLi40ODdiMGMwOTIzYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1AQCAtODEsMTAgKzgxLDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCi0gICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotaW5kZXggMmRmZDBjMThiOTAuLjEyMDU3YzUxYjVlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCi1AQCAtMjIsMjAgKzIyLDIwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYi9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0gICIle21uYW49MjAwODovbGliNjQvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWI2NC9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliMzIvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotIAotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKLSAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0gICIle21uYW49MjAwODovbGliL2xkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkNjQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wfSIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYjMyL2xkLXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvbGludXguaCBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAotaW5kZXggYWE4YTI4ZDVkMzEuLmViZjk1NTFjOTU1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKLUBAIC0yMiw3ICsyMiw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgIEdOVV9VU0VSX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMoKTsJCQkJXAotICAgfSB3aGlsZSAoMCkKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1yaXNjdiIgWExFTl9TUEVDICItIiBBQklfU1BFQyAiLnNvLjEiCi0gCi0gI2RlZmluZSBNVVNMX0FCSV9TVUZGSVggXAotICAgIiV7bWFiaT1pbHAzMjotc2Z9IiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCA0NGVhYjQwYTIzNC4uNTRhYThkOTU3ZTcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTQxMywxNiArNDEzLDExIEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI3VuZGVmCUxJTktfT1NfREVGQVVMVF9TUEVDCi0gI2RlZmluZSBMSU5LX09TX0RFRkFVTFRfU1BFQyAiJShsaW5rX29zX2xpbnV4KSIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWIvbGQuc28uMSIKLS0KLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLnNvLjEiCi0gI2lmZGVmIExJTlVYNjRfREVGQVVMVF9BQklfRUxGdjIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSIle21hYmk9ZWxmdjE6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMTsiIFwKLS0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjJ9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yfSIKLSAjZWxzZQotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tIiV7bWFiaT1lbGZ2MjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yOyIgXAotLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMX0iCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjI6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjF9IgotICNlbmRpZgotIAotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKLUBAIC00MzAsOCArNDI1LDkgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCBcCi0gICAiL2xpYi9sZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSAKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgotKwotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLSAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSBcCi0gICAiJXttZ2xpYmM6IiBHICI7OiV7bW11c2w6IiBNICI7OiIgVSAifX0iCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi1pbmRleCA2ZDJjY2QwMTJiYS4uZWM3OGE4OWNlMTUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc2gvbGludXguaAotQEAgLTY0LDcgKzY0LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICIvbGliL2xkLW11c2wtc2giIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSBNVVNMX0RZTkFNSUNfTElOS0VSX0ZQIFwKLSAgICIle21mZHBpYzotZmRwaWN9LnNvLjEiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCi0gI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiJXttZmRwaWM6X2ZkOzpfbGludXh9IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXguaCBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotaW5kZXggOWZiMDNhZjBmZTkuLjQwMWZkZGJiYjIyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLUBAIC04Myw3ICs4Myw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUgKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndik7Ci0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgIExJTktfU1BFQwotICNkZWZpbmUgTElOS19TUEVDICItbSBlbGYzMl9zcGFyYyAle3NoYXJlZDotc2hhcmVkfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotaW5kZXggYzFmZTQyMTY1YjcuLjI2YTc5YmZhMmUzIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi1AQCAtODQsOCArODQsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICNpZmRlZiBTUEFSQ19CSV9BUkNICi0gCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDEzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTMtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWQyY2FjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTMtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA5ZTgxNTk2NWZiYWE5MDEzNGJlMGU3NzdjZmMyZmJjZmFiMTZiNjc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjY6MzcgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy80MF0gZ2NjOiBGaXggYXJndW1lbnQgbGlzdCB0b28gbG9uZyBlcnJvci4KLQotVGhlcmUgd291bGQgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gdGhlCi1idWlsZCBkaXJlY3RvcnkgaXMgbG9uZ2VyIHRoYW4gMjAwLCB0aGlzIGlzIGNhdXNlZCBieToKLQotaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YAotCi1UaGUgUExVR0lOX0hFQURFUlMgaXMgdG9vIGxvbmcgYmVmb3JlIHNvcnQsIHNvIHRoZSAiZWNobyIgY2FuJ3QgaGFuZGxlCi1pdCwgdXNlIHRoZSAkKHNvcnQgbGlzdCkgb2YgR05VIG1ha2Ugd2hpY2ggY2FuIGhhbmRsZSB0aGUgdG9vIGxvbmcgbGlzdAotd291bGQgZml4IHRoZSBwcm9ibGVtLCB0aGUgaGVhZGVyIHdvdWxkIGJlIHNob3J0IGVub3VnaCBhZnRlciBzb3J0ZWQuCi1UaGUgInRyICcgJyAnXDAxMiciIHdhcyB1c2VkIGZvciB0cmFuc2xhdGluZyB0aGUgc3BhY2UgdG8gIlxuIiwgdGhlCi0kKHNvcnQgbGlzdCkgZG9lc24ndCBuZWVkIHRoaXMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDEzNjcxMzZiZmFjLi43MWE4Mjc1YzM5ZiAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtMzUzOCw3ICszNTM4LDcgQEAgaW5zdGFsbC1wbHVnaW46IGluc3RhbGxkaXJzIGxhbmcuaW5zdGFsbC1wbHVnaW4gcy1oZWFkZXItdmFycyBpbnN0YWxsLWdlbmd0eXBlCi0gIyBXZSBrZWVwIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBmaWxlcyBpbiBjb25maWcgb3IgYy1mYW1pbHkgYW5kIC5kZWYKLSAjIGZpbGVzLiBBbGwgb3RoZXIgZmlsZXMgYXJlIGZsYXR0ZW5lZCB0byBhIHNpbmdsZSBkaXJlY3RvcnkuCi0gCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQocGx1Z2luX2luY2x1ZGVkaXIpCi0tCWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWA7IFwKLSsJaGVhZGVycz0iJChzb3J0ICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpKSI7IFwKLSAJc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYDsgXAotIAlmb3IgZmlsZSBpbiAkJGhlYWRlcnM7IGRvIFwKLSAJICBpZiBbIC1mICQkZmlsZSBdIDsgdGhlbiBcCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE0LURpc2FibGUtc2R0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxNC1EaXNhYmxlLXNkdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJjNDQ1MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE0LURpc2FibGUtc2R0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLUZyb20gMDBjN2E3ZmRkNGI0YWFkOWU1N2Q4YjU0MWRlMTdhZDIwOWI2Y2QwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI4OjEwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvNDBdIERpc2FibGUgc2R0LgotCi1XZSBkb24ndCBsaXN0IGR0cmFjZSBpbiBERVBFTkRTIHNvIHdlIHNob3VsZG4ndCBiZSBkZXBlbmRpbmcgb24gdGhpcyBoZWFkZXIuCi1JdCBtYXkgb3IgbWF5IG5vdCBleGlzdCBmcm9tIHByZWl2b3VzIGJ1aWxkcyB0aG91Z2guIFRvIGJlIGRldGVybWluc3RpYywgZGlzYWJsZQotc2R0LmggdXNhZ2UgYWx3YXlzLiBUaGlzIGF2b2lkcyBidWlsZCBmYWlsdXJlcyBpZiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgYWZ0ZXIgY29uZmlndXJlCi1idXQgYmVmb3JlIGxpYmdjYyBpcyBjb21waWxlZCBmb3IgZXhhbXBsZS4KLQotUlAgMjAxMi84LzcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotRGlzYWJsZSBzZHQgZm9yIGxpYnN0ZGMrKy12My4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbaGFja10KLS0tLQotIGdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KLSBnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICB8ICA2ICsrKy0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgfCAgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggMTM0YzJjMmYxNTYuLjUxMTFlYzBhYWJiIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTI5MjgyLDEyICsyOTI4MiwxMiBAQCBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5IiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KLSBoYXZlX3N5c19zZHRfaD1ubwotLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgotLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0tCi0tJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0tCi0tZmkKLSsjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0rIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0rIwotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSsjCi0rI2ZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX3N5c19zZHRfaCIgPiY1Ci0gJGFzX2VjaG8gIiRoYXZlX3N5c19zZHRfaCIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDBjM2M4MmU0ZmY3Li4zZTA5YWY5MTZmZCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01OTQzLDE1ICs1OTQzLDE1IEBAIGZpCi0gQUNfU1VCU1QoW2VuYWJsZV9kZWZhdWx0X3NzcF0pCi0gCi0gIyBUZXN0IGZvciA8c3lzL3NkdC5oPiBvbiB0aGUgdGFyZ2V0LgotLUdDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLS1BQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotLWhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0gIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKLS0gICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotLWZpCi0tQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCi0rI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLSsjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKLSsjaGF2ZV9zeXNfc2R0X2g9bm8KLSsjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0rIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0rIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotKyNmaQotKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSAKLSAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KLSAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDU1MzViZmEyYjVhLi4xM2Q3OTNmNTA1OSAxMDA3NTUKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLUBAIC0yMTc4NiwxMSArMjE3ODYsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0gYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotIAotLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSsjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotIAotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSAKLS0gIGZpCi0rIyAgZmkKLSAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQotICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi1pbmRleCAwZWY5NjI3MGM5Yy4uYWZlNTVhMWIyMTUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi1AQCAtMjMwLDcgKzIzMCw3IEBAIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NFU1NPUlNfT05MTgotIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NfT05MTgotIEdMSUJDWFhfQ0hFQ0tfUFRIUkVBRFNfTlVNX1BST0NFU1NPUlNfTlAKLSBHTElCQ1hYX0NIRUNLX1NZU0NUTF9IV19OQ1BVCi0tR0xJQkNYWF9DSEVDS19TRFRfSAotKyNHTElCQ1hYX0NIRUNLX1NEVF9ICi0gCi0gIyBDaGVjayBmb3IgYXZhaWxhYmxlIGhlYWRlcnMuCi0gQUNfQ0hFQ0tfSEVBREVSUyhbZW5kaWFuLmggZXhlY2luZm8uaCBmbG9hdC5oIGZwLmggaWVlZWZwLmggaW50dHlwZXMuaCBcCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE1LWxpYnRvb2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE1LWxpYnRvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MGY4YTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxNS1saWJ0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA4MGYyYjAxYjNmOTE3Y2VhMDgyOTQzMjhjOGJiYzUxZGFkZWNlNGFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjk6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS80MF0gbGlidG9vbAotCi1saWJzdGRjKysgZnJvbSBnY2MtcnVudGltZSBnZXRzIGNyZWF0ZWQgd2l0aCAtcnBhdGg9L3Vzci9saWIvLi4vbGliIGZvciBxZW11eDg2LTY0Ci13aGVuIHJ1bm5pbmcgb24gYW0geDg2XzY0IGJ1aWxkIGhvc3QuCi0KLVRoaXMgcGF0Y2ggc3RvcHMgdGhpcyBzcGVhZGluZyB0byBsaWJkaXIgaW4gdGhlIGxpYnN0ZGMrKy5sYSBmaWxlIHdpdGhpbiBsaWJ0b29sLgotQXJndWFibHksIGl0IHNob3VsZG4ndCBiZSBwYXNzaW5nIHRoaXMgaW50byBsaWJ0b29sIGluIHRoZSBmaXJzdCBwbGFjZSBidXQKLWZvciBub3cgdGhpcyByZXNvbHZlcyB0aGUgbmFzdGllc3QgcHJvYmxlbXMgdGhpcyBjYXVzZXMuCi0KLWZ1bmNfbm9ybWFsX2Fic3BhdGggd291bGQgcmVzb2x2ZSBhbiBlbXB0eSBwYXRoIHRvIGBwd2RgIHNvIHdlIG5lZWQKLXRvIGZpbHRlciB0aGUgemVybyBjYXNlLgotCi1SUCAyMDEyLzgvMjQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsdG1haW4uc2ggfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDk1MDNlYzg1ZDcwLi4wMTIxZmJhNzA3ZiAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtNjM1OSw2ICs2MzU5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCi0gCi0gICAgICAgaW5zdGFsbF9saWJkaXI9IiQxIgotKyAgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX2xpYmRpciI7IHRoZW4KLSsJZnVuY19ub3JtYWxfYWJzcGF0aCAiJGluc3RhbGxfbGliZGlyIgotKwlpbnN0YWxsX2xpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKLSsgICAgICBmaQotIAotICAgICAgIG9sZGxpYnM9Ci0gICAgICAgaWYgdGVzdCAteiAiJHJwYXRoIjsgdGhlbgotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxNi1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxNi1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjFiNGQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gYTY2ZWMxZTM4MmJmODY5NzQ5NTg4ZjA3MmE0YTdjMDkwMzlmMmIzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvNDBdIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KLQotVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKLW1lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Ci10aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAotVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAotZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgotCi1XZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IGIzYWY2OGNhYzU3Li4zMzBiNmUxM2M1ZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1AQCAtODgsMTAgKzg4LDE0IEBACi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFwKLSAgICIvbGliL2xkLW11c2wtYXJtIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWZsb2F0LWFiaT1oYXJkOmhmfS5zby4xIgotIAotKy8qIEZvciBhcm12NCB3ZSBwYXNzIC0tZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSSAqLwotKyN1bmRlZiBUQVJHRVRfRklYX1Y0QlhfU1BFQwotKyNkZWZpbmUgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgIiV7bWNwdT1hcm04fG1jcHU9YXJtODEwfG1jcHU9c3Ryb25nYXJtKnxtYXJjaD1hcm12NDogLS1maXgtdjRieH0iCi0rCi0gLyogQXQgdGhpcyBwb2ludCwgYnBhYmkuaCB3aWxsIGhhdmUgY2xvYmJlcmVkIExJTktfU1BFQy4gIFdlIHdhbnQgdG8KLSAgICB1c2UgdGhlIEdOVS9MaW51eCB2ZXJzaW9uLCBub3QgdGhlIGdlbmVyaWMgQlBBQkkgdmVyc2lvbi4gICovCi0gI3VuZGVmICBMSU5LX1NQRUMKLS0jZGVmaW5lIExJTktfU1BFQyBFQUJJX0xJTktfU1BFQwkJCQkJXAotKyNkZWZpbmUgTElOS19TUEVDIFRBUkdFVF9GSVhfVjRCWF9TUEVDIEVBQklfTElOS19TUEVDCQkJXAotICAgTElOVVhfT1JfQU5EUk9JRF9MRCAoTElOVVhfVEFSR0VUX0xJTktfU1BFQywJCQkJXAotIAkJICAgICAgIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgIiAiIEFORFJPSURfTElOS19TUEVDKQotIAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxNy1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxNy1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODJmZWNkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIDYyNGRiNzM0ZjY1NmFkOGNkZjhiM2NmM2ZjOGU4NjBiNzBjNmMyNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAotU3ViamVjdDogW1BBVENIIDE3LzQwXSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgotIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQotCi1Vc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLXNvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDUxMTFlYzBhYWJiLi4zZDlkY2JkYzkzZCAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMjEzOCwxMCArMTIxMzgsMjAgQEAgZG9uZQotIHRtYWtlX2ZpbGVfPQotIGZvciBmIGluICR7dG1ha2VfZmlsZX0KLSBkbwotLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLS0JdGhlbgotLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotLQlmaQotKyAgY2FzZSAkZiBpbgotKyAgICAqL3QtbGludXg2NCApCi0rICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgICAgKiApCi0rICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgZXNhYwotIGRvbmUKLSB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKLSAKLUBAIC0xMjE1Miw2ICsxMjE2MiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKLSB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgotIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgY2FzZSAkZiBpbgotKyAgICAqL2xpbnV4NjQuaCApCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgOzsKLSAgICAgLi8qICkKLSAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCAzZTA5YWY5MTZmZC4uZTA5Yzg0MGI2MDUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTkwMiwxMCArMTkwMiwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTE5MTYsNiArMTkyNiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKLSB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgotIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgY2FzZSAkZiBpbgotKyAgICAqL2xpbnV4NjQuaCApCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgOzsKLSAgICAgLi8qICkKLSAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGU3N2Q2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTgtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMjdjY2E5NWRjZmVlYWQ4YzUyZDI5MmM0ODI0ZWU5NmYxNzhkNjE4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjM5OjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvNDBdIEF2b2lkIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhCi0gaG9zdCBwYXRoCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggMDEyMWZiYTcwN2YuLjUyYmRiZGI1ZjljIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC01NjI4LDYgKzU2MjgsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgIGVsc2UKLSsJICAgICMgSW5zdGVhZCBvZiB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYSBob3N0IHBhdGgsCi0rCSAgICAjIHVzZSB0aGUgcGF0aCB0aGUgLmxhIGlzIGNvbnRhaW5lZCBpbi4KLSsJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICAgIGRpcj0iJGxpYmRpciIKLSAJICAgIGFic2Rpcj0iJGxpYmRpciIKLSAJICBmaQotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxOS1leHBvcnQtQ1BQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxOS1leHBvcnQtQ1BQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDBjNjdhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTktZXhwb3J0LUNQUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gYTI5MzYzODJkYTgxYWVmYTliNjljMWZjNjI1ZjZjNzA2YjdlYTFkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjQwOjU5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvNDBdIGV4cG9ydCBDUFAKLQotVGhlIE9FIGVudmlyb25tZW50IHNldHMgYW5kIGV4cG9ydHMgQ1BQIGFzIGJlaW5nIHRoZSB0YXJnZXQgZ2NjLiBXaGVuCi1idWlsZGluZyBnY2MtY3Jvc3MtY2FuYWRpYW4gZm9yIGEgbWluZ3cgdGFyZ2V0dGVkIHNkaywgdGhlIGZvbGxvd2luZyBjYW4gYmUgZm91bmQKLWluIGJ1aWxkLng4Nl82NC1wb2t5c2RrLW1pbmd3MzIuaTU4Ni1wb2t5LWxpbnV4L2J1aWxkLXg4Nl82NC1saW51eC9saWJpYmVydHkvY29uZmlnLmxvZzoKLQotY29uZmlndXJlOjM2NDE6IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzCi1jb25maWd1cmU6MzY2NjogZ2NjICAtYyAtaXN5c3RlbS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSAgY29uZnRlc3QuYyA+JjUKLWNvbmZpZ3VyZTozNjY2OiAkPyA9IDAKLWNvbmZpZ3VyZTozNjk4OiByZXN1bHQ6IG5vCi1jb25maWd1cmU6Mzc4NjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IKLWNvbmZpZ3VyZTozODU2OiByZXN1bHQ6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIKLWNvbmZpZ3VyZTozODc2OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyIGNvbmZ0ZXN0LmMKLWNvbmZpZ3VyZTozODc2OiAkPyA9IDAKLQotTm90ZSB0aGlzIGlzIGEgKmJ1aWxkKiB0YXJnZXQgKGluIGJ1aWxkLXg4Nl82NC1saW51eCkgc28gaXQgc2hvdWxkIGJlCi11c2luZyB0aGUgaG9zdCAiZ2NjIiwgbm90IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjLiBTaW5jZSB0aGUgbWluZ3czMgotaGVhZGVycyBhcmUgdmVyeSBkaWZmZXJlbnQsIHVzaW5nIHRoZSB3cm9uZyBjcHAgaXMgYSByZWFsIHByb2JsZW0uIEl0IGlzIGxlYWtpbmcKLWludG8gY29uZmlndXJlIHRocm91Z2ggdGhlIENQUCB2YXJpYWJsZS4gVWx0aW1hdGVseSB0aGlzIGxlYWRzIHRvIGJ1aWxkCi1mYWlsdXJlcyByZWxhdGVkIHRvIG5vdCBiZWluZyBhYmxlIHRvIGluY2x1ZGUgYSBwcm9jZXNzLmggZmlsZSBmb3IgcGVtLXVuaXguYy4KLQotVGhlIGZpeCBpcyB0byBlbnN1cmUgd2UgZXhwb3J0IGEgc2FuZSBDUFAgdmFsdWUgaW50byB0aGUgYnVpbGQKLWVudmlyb25tZW50IHdoZW4gdXNpbmcgYnVpbGQgdGFyZ2V0cy4gV2UgY291bGQgZGVmaW5lIGEgQ1BQX0ZPUl9CVUlMRCB2YWx1ZSB3aGljaCBtYXkgYmUKLXRoZSB2ZXJzaW9uIHdoaWNoIG5lZWRzIHRvIGJlIHVwc3RyZWFtZWQgYnV0IGZvciBub3csIHRoaXMgZml4IGlzIGdvb2QgZW5vdWdoIHRvCi1hdm9pZCB0aGUgcHJvYmxlbS4KLQotUlAgMjIvMDgvMjAxMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCAzODc3NGY1NDJhNi4uYjQyNmQ0ZjkzNTAgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAotIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCi0gCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMC1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMC1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjI1NTdlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gZDQzMjZhYjc0YTM2MmIwZmM4M2VkODY2ZjgyYzM1OTM4OWEzNmFkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjIxOjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvNDBdIERpc2FibGUgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgYW5kIG90aGVyIG11bHRpbGliCi0gb3B0aW9ucy4KLQotSGFyZCBjb2RpbmcgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgd2l0aCAuLi9saWI2NCBpcyBjYXVzaW5nIHByb2JsZW1zIG9uCi1zeXN0ZW1zIHdoZXJlIHRoZSBsaWJkaXIgaXMgTk9UIHNldCB0byAvbGliNjQuICBUaGlzIGlzIGFsbG93ZWQgYnkgdGhlCi1BQkksIGFzCi1sb25nIGFzIHRoZSBkeW5hbWljIGxvYWRlciBpcyBwcmVzZW50IGluIC9saWIuCi0KLVdlIHNpbXBseSB3YW50IHRvIHVzZSB0aGUgZGVmYXVsdCBydWxlcyBpbiBnY2MgdG8gZmluZCBhbmQgY29uZmlndXJlIHRoZQotbm9ybWFsIGxpYmRpci4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLWluZGV4IGI5ODk3Nzg1YTg5Li43ZDA2ZjBkMGVkYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLUBAIC0yMSw4ICsyMSw4IEBACi0gTElCMUFTTVNSQyAgID0gYWFyY2g2NC9saWIxZnVuY3MuYXNtCi0gTElCMUFTTUZVTkNTID0gX2FhcmNoNjRfc3luY19jYWNoZV9yYW5nZQotIAotLUFBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0tTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0rI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0rI01VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNNVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSAKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQotKyNNVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YjRkMWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLUZyb20gOTRjYzk5NWNlZTc2YTlkNTkyMDRhOTAwZmNhYTJhZmIyZWFhNzVjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjI1OjExICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvNDBdIEVuc3VyZSB0YXJnZXQgZ2NjIGhlYWRlcnMgY2FuIGJlIGluY2x1ZGVkCi0KLVRoZXJlIGFyZSBhIGZldyBoZWFkZXJzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHRoZSBPcGVuRW1iZWRkZWQKLWdjYy1ydW50aW1lIHRhcmdldCAob21wLmgsIHNzcC8qLmgpLiBCZWluZyBpbnN0YWxsZWQgZnJvbSBhIHJlY2lwZQotYnVpbHQgZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCB0aGVzZSBhcmUgd2l0aGluIHRoZSB0YXJnZXQKLXN5c3Jvb3QgYW5kIG5vdCBjcm9zcy9uYXRpdmVzZGs7IHRodXMgdGhleSB3ZXJlbid0IGFibGUgdG8gYmUKLWZvdW5kIGJ5IGdjYyB3aXRoIHRoZSBleGlzdGluZyBzZWFyY2ggcGF0aHMuIEFkZCBzdXBwb3J0IGZvcgotcGlja2luZyB1cCB0aGVzZSBoZWFkZXJzIHVuZGVyIHRoZSBzeXNyb290IHN1cHBsaWVkIG9uIHRoZSBnY2MKLWNvbW1hbmQgbGluZSBpbiBvcmRlciB0byByZXNvbHZlIHRoaXMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArKwotIGdjYy9jcHBkZWZhdWx0LmMgfCA0ICsrKysKLSBnY2MvZGVmYXVsdHMuaCAgIHwgOSArKysrKysrKysKLSBnY2MvZ2NjLmMgICAgICAgIHwgNyAtLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCA3MWE4Mjc1YzM5Zi4uYWE0YWRjM2RiMjQgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTYxNCw2ICs2MTQsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACi0gCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCi0gbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLStsaWJzdWJkaXJfdGFyZ2V0ID0gJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCi0gbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKLUBAIC0yODcwLDYgKzI4NzEsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKLSAKLSBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKLSAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCi0rICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCi0gICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggYjM2YTk3OWQ1YmEuLmUyZTE4N2RlZGFmIDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYwotKysrIGIvZ2NjL2NwcGRlZmF1bHQuYwotQEAgLTU5LDYgKzU5LDEwIEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCi0gICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotKyNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCi0rICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCi0rICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0rI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0gICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKLWRpZmYgLS1naXQgYS9nY2MvZGVmYXVsdHMuaCBiL2djYy9kZWZhdWx0cy5oCi1pbmRleCA5MDM1YjMzM2JlOC4uNTk4MmJiZGE2MWQgMTAwNjQ0Ci0tLS0gYS9nY2MvZGVmYXVsdHMuaAotKysrIGIvZ2NjL2RlZmF1bHRzLmgKLUBAIC0xNDU1LDQgKzE0NTUsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBEV0FSRl9HTkFUX0VOQ09ESU5HU19ERUZBVUxUIERXQVJGX0dOQVRfRU5DT0RJTkdTX0dEQgotICNlbmRpZgotIAotKy8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLwotKwotKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCi0rI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgotKyNlbmRpZgotKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCi0rI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKLSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8qICEgR0NDX0RFRkFVTFRTX0ggKi8KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDU3MGNkYzAwMDM0Li4zZmI2NGQ0NTNmMSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTQ2NCwxMyArMTQ2NCw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7Ci0gCi0gLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCi0gCi0tI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKLS0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCi0tI2VuZGlmCi0tI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKLS0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgotLSNlbmRpZgotLQotICNpZmRlZiBDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFICAvKiBEb24ndCB1c2UgdGhlc2UgcHJlZml4ZXMgZm9yIGEgY3Jvc3MgY29tcGlsZXIuICAqLwotICN1bmRlZiBNRF9FWEVDX1BSRUZJWAotICN1bmRlZiBNRF9TVEFSVEZJTEVfUFJFRklYCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDIyLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDIyLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmMGQzZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBiYzE5MmYwYTA3YWQ4MTlkZWU5MzQ0NmM1ZWY2ODk1ZDk1NTBkOTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTE6MTc6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMi80MF0gZ2NjIDQuOCsgd29uJ3QgYnVpbGQgd2l0aCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZwotCi1zaW5jZSB0aGUgKi5QcG8gZmlsZXMgZG9uJ3QgZ2V0IGNyZWF0ZWQgdW5sZXNzIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgaXMgdHJ1ZS4KLQotVGhpcyBwYXRjaCBlbnN1cmVzIHdlIG9ubHkgdXNlIHRob3NlIGNvbXBpbGVyIG9wdGlvbnMgd2hlbiBpdHMgZW5hYmxlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotKFByb2JsZW0gd2FzIGFscmVhZHkgcmVwb3J0ZWQgdXBzdHJlYW0sIGF0dGFjaGVkIHRoaXMgcGF0Y2ggdGhlcmUKLWh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTU5MzApCi0KLVJQCi0yMDEyLzA5LzIyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJhdG9taWMvTWFrZWZpbGUuYW0gfCAzICsrLQotIGxpYmF0b21pYy9NYWtlZmlsZS5pbiB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuYW0gYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KLWluZGV4IDgwM2IyOTJjY2U1Li5iNDc4NDJlYjU5MCAxMDA2NDQKLS0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCi1AQCAtMTAxLDcgKzEwMSw4IEBAIFBBVF9TCQk9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKLSBJRlVOQ19ERUYJPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVAk9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotIAotLU1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMJCT0KLSBNX1NJWkUJCT0gLUROPSQoUEFUX04pCi0gTV9JRlVOQwkJPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCi0gTV9GSUxFCQk9ICQoUEFUX0JBU0UpX24uYwotZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbiBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotaW5kZXggYzhmMzhiZTU4MzUuLjRmYWI3Y2VjM2VhIDEwMDY0NAotLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmluCi0rKysgYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KLUBAIC0zMzUsNyArMzM1LDggQEAgUEFUX04gPSAkKHdvcmQgMiwkKFBBVF9TUExJVCkpCi0gUEFUX1MgPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCi0gSUZVTkNfREVGID0gLURJRlVOQ19BTFQ9JChQQVRfUykKLSBJRlVOQ19PUFQgPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKLS1NX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX0ZBTFNFQE1fREVQUyA9Ci0gTV9TSVpFID0gLUROPSQoUEFUX04pCi0gTV9JRlVOQyA9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKLSBNX0ZJTEUgPSAkKFBBVF9CQVNFKV9uLmMKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjMtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjMtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUzZjM0My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDIzLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDA0MDlkMmRkNzMyMmVjYmVkNzMxY2JlMjliMDM0ZmVhNDNjNWRkZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAzIE1hciAyMDE1IDA4OjIxOjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjMvNDBdIERvbid0IHNlYXJjaCBob3N0IGRpcmVjdG9yeSBkdXJpbmcgInJlbGluayIgaWYKLSAkaW5zdF9wcmVmaXggaXMgcHJvdmlkZWQKLQotaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2xpYnRvb2wtcGF0Y2hlcy8yMDExLTAxL21zZzAwMDI2Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA1MmJkYmRiNWY5Yy4uODJiY2VjMzlmMDUgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTYwMDQsMTIgKzYwMDQsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZmkKLSAJICAgIGVsc2UKLSAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KLSsJICAgICAgIyBEZWZhdWx0IGlmICRsaWJkaXIgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSBwcmVmaXg6Ci0gCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKLS0JICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgotKwotIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJY2FzZSAkbGliZGlyIGluCi0gCQkgIFtcXC9dKikKLS0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgIGFkZF9kaXI9Ii1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM4OGEwYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI0LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDU2ZTJlMWZjMmEyN2M0YTVjYzliNDcxZDVkMGFmOTBiY2I4NzFiZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDI0LzQwXSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nIGJhc2VfbGliZGlyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCBiZjEzMjdlOThjYy4uNjQ0MzYxODNiYzggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpZm5kZWYgR0NDX0FBUkNINjRfTElOVVhfSAotICNkZWZpbmUgR0NDX0FBUkNINjRfTElOVVhfSAotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjUtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2Y5NzI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjUtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBiMTQyZTc3ZTQ0ZTFhY2VjZTZkYTU0Y2NkYzI0YzRkYTg5Y2Y0Yjk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNS80MF0gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotaW5kZXggNjQ0MzYxODNiYzguLmJhMTU2Njc2MDI2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTI0LDcgKzI0LDcgQEAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiAgQVNBTl9DQzFfU1BFQwotICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI2LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjYtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTkxNzM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjYtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSAzZDRlNTNmYzdjZDcxY2UxMTgxYWY4YTVlOTY1NTM5ODg1N2FmNzQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTdW4sIDUgSnVsIDIwMTUgMjA6MjU6MTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNi80MF0gbGliY2MxOiBmaXggbGliY2MxJ3MgaW5zdGFsbCBwYXRoIGFuZCBycGF0aAotCi0qIEluc3RhbGwgbGliY2MxLnNvIGFuZCBsaWJjYzFwbHVnaW4uc28gaW50bwotICAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pLCBhcyB3aGF0IHdlCi0gIGhhZCBkb25lIHRvIGx0by1wbHVnaW4uCi0qIEZpeCBiYWQgUlBBVEggaXVzc3VlOgotICBnY2MtNS4yLjA6IHBhY2thZ2UgZ2NjLXBsdWdpbnMgY29udGFpbnMgYmFkIFJQQVRIIC9wYXRodC90by90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvbGliNjQvLi4vbGliNjQgaW4gZmlsZQotIC9wYXRoL3RvL2djYy81LjIuMC1yMC9wYWNrYWdlcy1zcGxpdC9nY2MtcGx1Z2lucy91c3IvbGliNjQvZ2NjL3g4Nl82NC1wb2t5LWxpbnV4LzUuMi4wL3BsdWdpbi9saWJjYzFwbHVnaW4uc28uMC4wLjAKLSBbcnBhdGhzXQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliY2MxL01ha2VmaWxlLmFtIHwgNCArKy0tCi0gbGliY2MxL01ha2VmaWxlLmluIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuYW0gYi9saWJjYzEvTWFrZWZpbGUuYW0KLWluZGV4IDZlY2I2NmI0MzY1Li42MzRjY2UzYzJhOSAxMDA2NDQKLS0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQotKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCi1AQCAtMzcsOCArMzcsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLSAKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSAKLSBpZiBFTkFCTEVfUExVR0lOCi0gcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQotZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5pbiBiL2xpYmNjMS9NYWtlZmlsZS5pbgotaW5kZXggNDdiZTEwMDI1YWQuLjhkNTQ4MWQ4N2JkIDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KLUBAIC0zMDMsOCArMzAzLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAotIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKLSAKLSBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCi0tcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgotLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKLStjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCi0rcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBjYzFsaWJfTFRMSUJSQVJJRVMgPSBsaWJjYzEubGEKLSBzaGFyZWRfc291cmNlID0gY2FsbGJhY2tzLmNjIGNhbGxiYWNrcy5oaCBjb25uZWN0aW9uLmNjIGNvbm5lY3Rpb24uaGggXAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Yjk1NWRlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjctaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi1Gcm9tIGMwMzNjMWRmMTFiNjkyMjEzZDAzZGI5MWQ2Y2MxNDViNGFkZWRmYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjM5OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjcvNDBdIGhhbmRsZSBzeXNyb290IHN1cHBvcnQgZm9yIG5hdGl2ZXNkay1nY2MKLQotQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKLXdoZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgotYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCi0KLVNhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCi1uYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cwotbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAotaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0Ci1iYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCi0KLUluIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6Ci0KLWEpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCi0gICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgotYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KLSAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQIDIwMTUvNy8yOAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIGdjYy9jcHBkZWZhdWx0LmggfCAgMyArKy0KLSBnY2MvZ2NjLmMgICAgICAgIHwgMjAgKysrKysrKysrKysrKy0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggZTJlMTg3ZGVkYWYuLjJmYWJhMmIxZDYzIDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYwotKysrIGIvZ2NjL2NwcGRlZmF1bHQuYwotQEAgLTM1LDYgKzM1LDMwIEBACi0gIyB1bmRlZiBDUk9TU19JTkNMVURFX0RJUgotICNlbmRpZgotIAotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKLSsjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0rc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKLSsjZW5kaWYKLSsKLSBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUwotID0gSU5DTFVERV9ERUZBVUxUUzsKLUBAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gPSB7Ci0gI2lmZGVmIEdQTFVTUExVU19JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgZ2VuZXJpYyBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyB0YXJnZXQtZGVwZW5kZW50IGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgYmFja3dhcmQgYW5kIGRlcHJlY2F0ZWQgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotLSAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLS0gICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVIsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKLS0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMCB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAyIH0sCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0tICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgUFJFRklYX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZml4aW5jbHVkZXMuICAqLwotLSAgICB7IEZJWEVEX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwKLSsgICAgeyBGSVhFRF9JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsCi0gICAgICAgLyogQSBtdWx0aWxpYiBzdWZmaXggbmVlZHMgYWRkaW5nIGlmIGRpZmZlcmVudCBtdWx0aWxpYnMgdXNlCi0gCSBkaWZmZXJlbnQgaGVhZGVycy4gICovCi0gI2lmZGVmIFNZU1JPT1RfSEVBREVSU19TVUZGSVhfU1BFQwotQEAgLTg1LDE2ICsxMDksMTYgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2VuZGlmCi0gI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0gICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLwotLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKLS0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSAjZW5kaWYKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KLSAgIH07Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuaCBiL2djYy9jcHBkZWZhdWx0LmgKLWluZGV4IDRhMDE4NmQxY2YyLi4yOWU1ZDlkYTBkYyAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmgKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmgKLUBAIC0zMyw3ICszMyw4IEBACi0gCi0gc3RydWN0IGRlZmF1bHRfaW5jbHVkZQotIHsKLS0gIGNvbnN0IGNoYXIgKmNvbnN0IGZuYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsgIGNvbnN0IGNoYXIgKmZuYW1lOyAgICAgLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCi0rCi0gICBjb25zdCBjaGFyICpjb25zdCBjb21wb25lbnQ7CS8qIFRoZSBjb21wb25lbnQgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5Ci0gCQkJCSAgIChzZWUgdXBkYXRlX3BhdGggaW4gcHJlZml4LmMpICovCi0gICBjb25zdCBjaGFyIGNwbHVzcGx1czsJCS8qIE9ubHkgbG9vayBoZXJlIGlmIHdlJ3JlIGNvbXBpbGluZyBDKysuICAqLwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggM2ZiNjRkNDUzZjEuLmNkMGM3ZmJlOTYxIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0yNDgsNiArMjQ4LDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOwotICNlbmRpZgotIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKLSAKLStzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOwotKwotIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KLSAKLSBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOwotQEAgLTUxOSw2ICs1MjEsNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCi0gICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KLSAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCi0gICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCi0rICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4Ci0gICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgotQEAgLTE0ODcsMTAgKzE0OTAsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKLSAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAotICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSAKLSAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZwotICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcwotQEAgLTE0OTgsOSArMTUwMSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOwotIAotIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCi1AQCAtNTg0OSw2ICs1ODUyLDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKLSAJICAgICAgfQotIAkgICAgYnJlYWs7Ci0gCi0rICAgICAgICAgIGNhc2UgJ3InOgotKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKLSsJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOwotKyAgICAgICAgICAgIGJyZWFrOwotKwotIAkgIGNhc2UgJ1MnOgotIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKLSAJICAgIGlmICh2YWx1ZSAhPSAwKQotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjI1ZDc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjgtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIDYyMjQwZDRjNzI1ZWEwYjQzYWJmYjkwMWRkYWQ5MGU4M2UyOWEyNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQxOjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjgvNDBdIFNlYXJjaCB0YXJnZXQgc3lzcm9vdCBnY2MgdmVyc2lvbiBzcGVjaWZpYyBkaXJzIHdpdGgKLSBtdWx0aWxpYi4KLQotV2UgaW5zdGFsbCB0aGUgZ2NjIGxpYnJhcmllcyAoc3VjaCBhcyBjcnRiZWdpbi5wKSBpbnRvCi08c3lzcm9vdD48bGliZGlyPi88dGFyZ2V0LXN5cz4vNS4yLjAvCi13aGljaCBpcyBhIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIEdDQyAoYWthIG11bHRpX3N1ZmZpeCBpbiB0aGUKLWNvZGUgYmVsb3cpLiA8dGFyZ2V0LXN5cz4gaXMgJ21hY2hpbmUnIGluIGdjYydzIHRlcm1pbm9sb2d5LiBXZSB1c2UKLXRoZXNlIGRpcmVjdG9yaWVzIHNvIHRoYXQgbXVsdGlwbGUgZ2NjIHZlcnNpb25zIGNvdWxkIGluIHRoZW9yeQotY28tZXhpc3Qgb24gdGFyZ2V0LgotCi1XZSBvbmx5IHdhbnQgdG8gYnVpbGQgb25lIGdjYy1jcm9zcy1jYW5hZGlhbiBwZXIgYXJjaCBhbmQgaGF2ZSB0aGlzIHdvcmsKLWZvciBhbGwgbXVsdGlsaWJzLiA8dGFyZ2V0LXN5cz4gY2FuIGJlIGhhbmRsZWQgYnkgbWFwcGluZyB0aGUgbXVsdGlsaWIKLTx0YXJnZXQtc3lzPiB0byB0aGUgb25lIHVzZWQgYnkgZ2NjLWNyb3NzLWNhbmFkaWFuLCBlLmcuCi1taXBzNjQtcG9sa21sbGliMzItbGludXgKLWlzIHN5bWxpbmtlZCB0byBieSBtaXBzNjQtcG9reS1saW51eC4KLQotVGhlIGRlZmF1bHQgZ2NjIHNlYXJjaCBwYXRoIGluIHRoZSB0YXJnZXQgc3lzcm9vdCBmb3IgYSAibGliNjQiIG11dGxpbGliCi1pczoKLQotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vbGliMzIvCi08c3lzcm9vdD4vdXNyL2xpYjMyLwotCi13aGljaCBtZWFucyB0aGF0IHRoZSBsaWIzMiBjcnRiZWdpbi5vIHdpbGwgYmUgZm91bmQgYW5kIHRoZSBsaWI2NCBvbmVzCi13aWxsIG5vdCB3aGljaCBsZWFkcyB0byBjb21waWxlciBmYWlsdXJlcy4KLQotVGhpcyBwYXRjaCBpbmplY3RzIGEgbXVsdGlsaWIgdmVyc2lvbiBvZiB0aGF0IHBhdGggZmlyc3Qgc28gdGhlIGxpYjY0Ci1iaW5hcmllcyBjYW4gYmUgZm91bmQgZmlyc3QuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIHNlYXJjaCBwYXRoIGJlY29tZXM6Ci0KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotUlAgMjAxNS83LzMxCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvZ2NjLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IGNkMGM3ZmJlOTYxLi5mNmYzYWEwNzdjOCAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMjUyNyw3ICsyNTI3LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAgICAgICBpZiAocGF0aCA9PSBOVUxMKQotIAl7Ci0gCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7Ci0tCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0rCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0gCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7Ci0gCX0KLSAKLUBAIC0yNTM5LDYgKzI1MzksMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLwotIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCi0gCSAgICB7Ci0rCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQotKwkgICAgICAgIHsKLSsJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7Ci0rCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47Ci0rCi0rCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47Ci0rCQkgICAgfQotKwkgICAgICAgICAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47Ci0rCQkgICAgfQotKwotKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCi0rCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCi0rCSAgICAgICAgICAgIHsKLSsJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKLSsJCSAgICAgICAgICBicmVhazsKLSsJICAgICAgICAgICAgfQotKwkgICAgICAgIH0KLSsKLSAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotIAkgICAgICBpZiAocmV0KQotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyOS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOGJkYjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyOS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1Gcm9tIDEzNzdjNzM4ZTMxYTFlMTU5OWNmYWIxODk0ODVhOTQ1OWY4MDNlNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQyOjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjkvNDBdIEZpeCB2YXJpb3VzIF9GT1JfQlVJTEQgYW5kIHJlbGF0ZWQgdmFyaWFibGVzCi0KLVdoZW4gZG9pbmcgYSBGT1JfQlVJTEQgdGhpbmcsIHlvdSBoYXZlIHRvIG92ZXJyaWRlIENGTEFHUyB3aXRoCi1DRkxBR1NfRk9SX0JVSUxELiBBbmQgaWYgeW91IHVzZSBDKyssIHlvdSBhbHNvIGhhdmUgdG8gb3ZlcnJpZGUKLUNYWEZMQUdTIHdpdGggQ1hYRkxBR1NfRk9SX0JVSUxELgotV2l0aG91dCB0aGlzLCB3aGVuIGJ1aWxkaW5nIGZvciBtaW5ndywgeW91IGVuZCB1cCB0cnlpbmcgdG8gdXNlCi10aGUgbWluZ3cgaGVhZGVycyBmb3IgYSBob3N0IGJ1aWxkLgotCi1UaGUgc2FtZSBnb2VzIGZvciBvdGhlciB2YXJpYWJsZXMgYXMgd2VsbCwgc3VjaCBhcyBDUFBGTEFHUywKLUNQUCwgYW5kIEdNUElOQy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiAgICAgIHwgNiArKysrKysKLSBNYWtlZmlsZS50cGwgICAgIHwgNSArKysrKwotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBnY2MvY29uZmlndXJlLmFjIHwgMiArLQotIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IGI0MjZkNGY5MzUwLi5hMmFmOTkwNWNjZSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCi1AQCAtMTY5LDYgKzE3MCw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg2LDYgKzE5MCw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLUBAIC03NDMsNiArNzQ4LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAotIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAotIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKLSsJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKLSAJIkZMRVg9JChGTEVYKSIgXAotIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCi1pbmRleCAxZjIzYjc5YjRiMi4uNmM1NjUyZTgxMWQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS50cGwKLSsrKyBiL01ha2VmaWxlLnRwbAotQEAgLTE1NCw2ICsxNTQsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0gCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKLSAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAotQEAgLTE3MSw2ICsxNzIsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAotICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgotIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCi0gCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgotIAotICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgotQEAgLTE4OCw2ICsxOTIsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKLSBIT1NUX0VYUE9SVFMgPSBcCi0gCSQoQkFTRV9FWFBPUlRTKSBcCi0gCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCA1YWU2OTNmYjA2Yy4uMDJlZTBhYTcyZjQgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTgwMSw3ICs4MDEsNyBAQCBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAotIEJVSUxEX05PX1BJRV9GTEFHID0gQEJVSUxEX05PX1BJRV9GTEFHQAotIEJVSUxEX0xERkxBR1MgKz0gJChCVUlMRF9OT19QSUVfRkxBRykKLSBCVUlMRF9DUFBGTEFHUz0gLUkuIC1JJChARCkgLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvJChARCkgXAotLQkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1MpCi0rCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHU19GT1JfQlVJTEQpCi0gCi0gIyBBY3R1YWwgbmFtZSB0byB1c2Ugd2hlbiBpbnN0YWxsaW5nIGEgbmF0aXZlIGNvbXBpbGVyLgotIEdDQ19JTlNUQUxMX05BTUUgOj0gJChzaGVsbCBlY2hvIGdjY3xzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCAzZDlkY2JkYzkzZC4uYWExMjdhNGY2YTQgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE3OTcsNyArMTE3OTcsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBlMDljODQwYjYwNS4uMThiZjUzYzdlMGEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTcwOCw3ICsxNzA4LDcgQEAgZWxzZQotIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCi0gCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCi0tCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAotKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0gCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKLSAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCi0gCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMwLW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGUxMjZjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDc1ZGEzY2M5Y2EyZDNkZThjMjA2MmYyM2JmNGY3MjQxNTc0MWVmODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMzAvNDBdIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLWluZGV4IDQ3MjkxMDU2MjZkLi4zNjE4MWViN2I4NSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbmlvczIvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi1AQCAtMzAsNiArMzAsNyBAQAotICNkZWZpbmUgQ1BQX1NQRUMgIiV7cG9zaXg6LURfUE9TSVhfU09VUkNFfSAle3B0aHJlYWQ6LURfUkVFTlRSQU5UfSIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LW5pb3MyLnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICAiL2xpYi9sZC1tdXNsLW5pb3MyLnNvLjEiCi0gCi0gI3VuZGVmIExJTktfU1BFQwotICNkZWZpbmUgTElOS19TUEVDIExJTktfU1BFQ19FTkRJQU4gXAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzMS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzMS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDJjZjJiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gZjcxNWFlZWYyOTRiODVmYTU5M2VmNjllNmQwMTE0Y2M3YjE1MzEyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE4OjEwOjU0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzEvNDBdIEFkZCBzc3Bfbm9uc2hhcmVkIHRvIGxpbmsgY29tbWFuZGxpbmUgZm9yIG11c2wgdGFyZ2V0cwotCi13aGVuIC1mc3RhY2stcHJvdGVjdG9yIG9wdGlvbnMgYXJlIGVuYWJsZWQgd2UgbmVlZCB0bwotbGluayB3aXRoIHNzcF9zaGFyZWQgb24gbXVzbCBzaW5jZSBpdCBkb2VzIG5vdCBwcm92aWRlCi10aGUgX19zdGFja19jaGtfZmFpbF9sb2NhbCgpIHNvIGVzc2VudGlhbGx5IGl0IHByb3ZpZGVzCi1saWJzc3AgYnV0IG5vdCBsaWJzc3Bfbm9uc2hhcmVkIHNvbWV0aGluZyBsaWtlCi1UQVJHRVRfTElCQ19QUk9WSURFU19TU1BfQlVUX05PVF9TU1BfTk9OU0hBUkVECi0gd2hlcmUtYXMgZm9yIGdsaWJjIHRoZSBuZWVkZWQgc3ltYm9scwotYXJlIGFscmVhZHkgcHJlc2VudCBpbiBsaWJjX25vbnNoYXJlZCBsaWJyYXJ5IHRoZXJlZm9yZQotd2UgZG8gbm90IG5lZWQgYW55IGxpYnJhcnkgaGVscGVyIG9uIGdsaWJjIGJhc2VkIHN5c3RlbXMKLWJ1dCBtdXNsIG5lZWRzIHRoZSBsaWJzc3Bfbm9zaGFyZWQgZnJvbSBnY2MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgfCAgNyArKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCAgIHwgMTAgKysrKysrKysrKwotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDEwICsrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggNDg3YjBjMDkyM2IuLjQ3NjlkMDg5NTM4IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKLUBAIC0xODIsNiArMTgyLDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDEsIDAsIDAgfSwJCVwKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0JCQkJXAotICAgfQotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKwotICNlbmRpZgotIAotICNpZiAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKSAmJiBkZWZpbmVkIChTSU5HTEVfTElCQykgLyogdUNsaW51eCAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1pbmRleCAwMWI0MGM3NjJmNi4uZTdjNWU5MjIxNWMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1AQCAtOTIsNiArOTIsMTYgQEAKLSAJCQkJCSAiIC1tIGVsZjMycHBjbGludXgiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI3VuZGVmIExJTktfT1NfTElOVVhfU1BFQwotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDIExJTktfT1NfTElOVVhfRU1VTCAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAleyFzdGF0aWMtcGllOiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCA1NGFhOGQ5NTdlNy4uNjE5ZTExM2UyYjggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTQ2Niw2ICs0NjYsMTYgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAJCQkJCSAgICIgLW0gZWxmNjRwcGMiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMzMiBMSU5LX09TX0xJTlVYX0VNVUwzMiAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAleyFzdGF0aWMtcGllOiBcCi0gICAgICV7cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSBcCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMyLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzMi1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI1Y2FiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMyLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLUZyb20gNmRmYmNhNzhiOGQyNTNhZWNmOWNiYjVlNjhlMDRiOGRkM2Q2YTU0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IEFwciAyMDE2IDIwOjAzOjI4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzIvNDBdIGxpYmdjYzogQWRkIGtub2IgdG8gdXNlIGxkYmwtMTI4IG9uIHBwYwotCi1tdXNsIGRvZXMgbm90IHN1cHBvcnQgbGRibCAxMjggc28gd2UgY2FuIG5vdCBhc3N1bWUKLXRoYXQgbGludXggYXMgYSB3aG9sZSBzdXBwb3J0cyBsZGJsLTEyOCBiaXRzLCBpbnN0ZWFkCi1hY3QgdXBvbiBjb25maWd1cmUgb3B0aW9uIHBhc3NlZCB0byBnY2MgYW5kIGFzc3VtZSBubwotb24gbXVzbCBhbmQgeWVzIG90aGVyd2lzZSBpZiBubyBvcHRpb24gaXMgcGFzc2VkIHNpbmNlCi1kZWZhdWx0IGJlaGF2aW91ciBpcyB0byBhc3N1bWUgbGRibDEyOCBpdCBkb2VzIG5vdAotY2hhbmdlIHRoZSBkZWZhdWx0cwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmdjYy9NYWtlZmlsZS5pbiAgICAgICAgICAgfCAgMSArCi0gbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCB8ICA1ICsrKystCi0gbGliZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKwotIGxpYmdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxMiArKysrKysrKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IGxpYmdjYy9jb25maWd1cmUKLQotZGlmZiAtLWdpdCBhL2xpYmdjYy9NYWtlZmlsZS5pbiBiL2xpYmdjYy9NYWtlZmlsZS5pbgotaW5kZXggZGQ4Y2VlOTlmZDMuLmI1ZjQ3OGFmMzgyIDEwMDY0NAotLS0tIGEvbGliZ2NjL01ha2VmaWxlLmluCi0rKysgYi9saWJnY2MvTWFrZWZpbGUuaW4KLUBAIC00OCw2ICs0OCw3IEBAIHVud2luZF9oZWFkZXIgPSBAdW53aW5kX2hlYWRlckAKLSBtZF91bndpbmRfaGVhZGVyID0gQG1kX3Vud2luZF9oZWFkZXJACi0gc2ZwX21hY2hpbmVfaGVhZGVyID0gQHNmcF9tYWNoaW5lX2hlYWRlckAKLSB0aHJlYWRfaGVhZGVyID0gQHRocmVhZF9oZWFkZXJACi0rd2l0aF9sZGJsMTI4ID0gQHdpdGhfbGRibDEyOEAKLSAKLSBob3N0X25vbmNhbm9uaWNhbCA9IEBob3N0X25vbmNhbm9uaWNhbEAKLSByZWFsX2hvc3Rfbm9uY2Fub25pY2FsID0gQHJlYWxfaG9zdF9ub25jYW5vbmljYWxACi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLWluZGV4IDRmNmQ0YzRhNGQyLi5jNTBkZDk0YTJkYSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLSsrKyBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLUBAIC0xLDMgKzEsNiBAQAotIFNITElCX01BUEZJTEVTICs9ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2xpYmdjYy1nbGliYy52ZXIKLSAKLS1IT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtMTI4IC1tbm8tbWluaW1hbC10b2MKLStpZmVxICgkKHdpdGhfbGRibDEyOCkseWVzKQotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjgKLStlbmRpZgotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1uby1taW5pbWFsLXRvYwotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCi1vbGQgbW9kZSAxMDA2NDQKLW5ldyBtb2RlIDEwMDc1NQotaW5kZXggYjJmM2Y4NzA4NDQuLmVkODA2NTg3YzE3Ci0tLS0gYS9saWJnY2MvY29uZmlndXJlCi0rKysgYi9saWJnY2MvY29uZmlndXJlCi1AQCAtNjE5LDYgKzYxOSw3IEBAIGJ1aWxkX3ZlbmRvcgotIGJ1aWxkX2NwdQotIGJ1aWxkCi0gd2l0aF9haXhfc29uYW1lCi0rd2l0aF9sZGJsMTI4Ci0gZW5hYmxlX3Z0YWJsZV92ZXJpZnkKLSBlbmFibGVfc2hhcmVkCi0gbGliZ2NjX3RvcGRpcgotQEAgLTY2OCw2ICs2NjksNyBAQCB3aXRoX2Nyb3NzX2hvc3QKLSB3aXRoX2xkCi0gZW5hYmxlX3NoYXJlZAotIGVuYWJsZV92dGFibGVfdmVyaWZ5Ci0rd2l0aF9sb25nX2RvdWJsZV8xMjgKLSB3aXRoX2FpeF9zb25hbWUKLSBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKLSB3aXRoX3NsaWJkaXIKLUBAIC0xMzI5LDYgKzEzMzEsNyBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC10YXJnZXQtc3ViZGlyPVNVQkRJUiAgICAgIENvbmZpZ3VyaW5nIGluIGEgc3ViZGlyZWN0b3J5IGZvciB0YXJnZXQKLSAgIC0td2l0aC1jcm9zcy1ob3N0PUhPU1QgICAgICAgICAgIENvbmZpZ3VyaW5nIHdpdGggYSBjcm9zcyBjb21waWxlcgotICAgLS13aXRoLWxkICAgICAgICAgICAgICAgYXJyYW5nZSB0byB1c2UgdGhlIHNwZWNpZmllZCBsZCAoZnVsbCBwYXRobmFtZSkKLSsgIC0td2l0aC1sb25nLWRvdWJsZS0xMjggIHVzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHQKLSAgIC0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBsaWJyYXJ5IHZlcnNpb25pbmcgKGFrYSAiU09OQU1FIikgdmFyaWFudCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBvbiBBSVgKLUBAIC0yMjEzLDYgKzIyMTYsMjEgQEAgZmkKLSAKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxvbmctZG91YmxlLTEyOCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xvbmdfZG91YmxlXzEyOCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xvbmdfZG91YmxlXzEyODsgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiCi0rZWxzZQotKyAgY2FzZSAiJHtob3N0fSIgaW4KLSsgcG93ZXIqLSotbXVzbCopCi0rICAgd2l0aF9sZGJsMTI4PSJubyI7OwotKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OwotKyBlc2FjCi0rCi0rZmkKLSsKLSsKLSsKLSsKLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFpeC1zb25hbWUgd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7d2l0aF9haXhfc29uYW1lK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIHdpdGh2YWw9JHdpdGhfYWl4X3NvbmFtZTsgY2FzZSAiJHtob3N0fToke2VuYWJsZV9zaGFyZWR9IiBpbgotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUuYWMgYi9saWJnY2MvY29uZmlndXJlLmFjCi1pbmRleCBiNTlhYTc0NmFmYy4uNDIyMjBhMjYzYzUgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCi0rKysgYi9saWJnY2MvY29uZmlndXJlLmFjCi1AQCAtNzgsNiArNzgsMTggQEAgQUNfQVJHX0VOQUJMRSh2dGFibGUtdmVyaWZ5LAotIFtlbmFibGVfdnRhYmxlX3ZlcmlmeT1ub10pCi0gQUNfU1VCU1QoZW5hYmxlX3Z0YWJsZV92ZXJpZnkpCi0gCi0rQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAotK1tBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCi0rICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAotKyAgICAgIHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKLStbY2FzZSAiJHtob3N0fSIgaW4KLSsgcG93ZXIqLSotbXVzbCopCi0rICAgd2l0aF9sZGJsMTI4PSJubyI7OwotKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OwotKyBlc2FjCi0rXSkKLStBQ19TVUJTVCh3aXRoX2xkYmwxMjgpCi0rCi0gQUNfQVJHX1dJVEgoYWl4LXNvbmFtZSwKLSBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGhdLAotICAgICBbc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvIHByb3ZpZGUgb24gQUlYXSldLAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzMy1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMzLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQzZjdhYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMzLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gN2U1NTE0N2U4ZTYwOWFjZTZmOWVlY2Q4NmE5NTY2MzY2ODc2NzFmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDQgTWF5IDIwMTYgMjE6MTE6MzQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzMy80MF0gTGluayBsaWJnY2MgdXNpbmcgTERGTEFHUywgbm90IGp1c3QgU0hMSUJfTERGTEFHUwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJnY2MvY29uZmlnL3Qtc2xpYmdjYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKLWluZGV4IDdlNjBiNjIxYTJkLi5lYTIyZWRlMzM2MSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi0rKysgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotQEAgLTMyLDcgKzMyLDcgQEAgU0hMSUJfSU5TVEFMTF9TT0xJTksgPSAkKExOX1MpICQoU0hMSUJfU09OQU1FKSBcCi0gCSQoREVTVERJUikkKHNsaWJkaXIpJChTSExJQl9TTElCRElSX1FVQUwpLyQoU0hMSUJfU09MSU5LKQotIAotIFNITElCX0xJTksgPSAkKENDKSAkKExJQkdDQzJfQ0ZMQUdTKSAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIFwKLS0JJChTSExJQl9MREZMQUdTKSBcCi0rCSQoTERGTEFHUykgJChTSExJQl9MREZMQUdTKSBcCi0gCS1vICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudG1wIEBtdWx0aWxpYl9mbGFnc0AgXAotIAkkKFNITElCX09CSlMpICQoU0hMSUJfTEMpICYmIFwKLSAJcm0gLWYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09MSU5LKSAmJiBcCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM0LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM0LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMjI0Y2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzNC1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSA0NmNhNTFkZDQxMzMzMGJiODQyNWIwNjI4M2U3NjY3YmZiNTA3YzNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+Ci1EYXRlOiBTYXQsIDI0IE9jdCAyMDE1IDIwOjA5OjUzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzQvNDBdIGxpYmdjY19zOiBVc2UgYWxpYXMgZm9yIF9fY3B1X2luZGljYXRvcl9pbml0IGluc3RlYWQgb2Ygc3ltdmVyCi0KLUFkYXB0ZXIgZnJvbQotCi1odHRwczovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTUtMDUvbXNnMDA4OTkuaHRtbAotCi1UaGlzIGZpeCB3YXMgZGViYXRlZCBidXQgaGFzbnQgYmVlbiBhcHBsaWVkIGdjYyB1cHN0cmVhbSBzaW5jZQotdGhleSBleHBlY3QgbXVzbCB0byBzdXBwb3J0ICdAJyBpbiBzeW1ib2wgdmVyc2lvbmluZyB3aGljaCBpcwotYSBzdW4vZ251IHZlcnNpb25pbmcgZXh0ZW50aW9uLiBUaGlzIHBhdGNoIGhvd2V2ZXIgYXZvaWRzIHRoZQotbmVlZCBmb3IgdGhlICdAJyBzeW1ib2xzIGF0IGFsbAotCi1saWJnY2MvQ2hhbmdlbG9nOgotCi0yMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiBjb25maWcvaTM4Ni9jcHVpbmZvLmMgKF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsKTogQWRkLgotCShfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAsIF9fY3B1X21vZGVsQEdDQ180LjguMCk6IFJlbW92ZS4KLQotCSogY29uZmlnL2kzODYvdC1saW51eCAoSE9TVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZSAtRFVTRV9FTEZfU1lNVkVSLgotCi1nY2MvQ2hhbmdlbG9nOgotCi0yMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBNYWtlIF9fYnVpbHRpbl9jcHVfaW5pdAotCWNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW5zdGVhZCBvZiBfX2NwdV9pbmRpY2F0b3JfaW5pdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCBhODhhMjliNTFlNi4uNmYzZjUxODc5NzAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMzY1NTUsMTAgKzM2NTU1LDEwIEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAotICAgICB7Ci0gICAgIGNhc2UgSVg4Nl9CVUlMVElOX0NQVV9JTklUOgotICAgICAgIHsKLS0JLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0IGluIGxpYmdjYy4gKi8KLSsJLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluIGxpYmdjYy5hLiAqLwotIAl0cmVlIGNhbGxfZXhwciwgZm5kZWNsLCB0eXBlOwotICAgICAgICAgdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7IAotLQlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXQiLCB0eXBlKTsKLSsJZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIiwgdHlwZSk7Ci0gCWNhbGxfZXhwciA9IGJ1aWxkX2NhbGxfZXhwciAoZm5kZWNsLCAwKTsgCi0gCXJldHVybiBleHBhbmRfZXhwciAoY2FsbF9leHByLCB0YXJnZXQsIG1vZGUsIEVYUEFORF9OT1JNQUwpOwotICAgICAgIH0KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotaW5kZXggZDE4NTNkNTUxNWIuLjg2NDE1MGM5MjQ5IDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotQEAgLTQ4NSw3ICs0ODUsNyBAQCBfX2NwdV9pbmRpY2F0b3JfaW5pdCAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0jaWYgZGVmaW5lZCBTSEFSRUQgJiYgZGVmaW5lZCBVU0VfRUxGX1NZTVZFUgotLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X2luZGljYXRvcl9pbml0LCBfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAiKTsKLS1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9tb2RlbCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wIik7Ci0rI2lmbmRlZiBTSEFSRUQKLStpbnQgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgKHZvaWQpCi0rICBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIpKSk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggYi9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAotaW5kZXggODUwNmE2MzU3OTAuLjU2NDI5NmY3ODhlIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLSsrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1AQCAtMyw1ICszLDUgQEAKLSAjIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4Ci0gU0hMSUJfTUFQRklMRVMgPSBsaWJnY2Mtc3RkLnZlciAkKHNyY2RpcikvY29uZmlnL2kzODYvbGliZ2NjLWdsaWJjLnZlcgotIAotLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAtRFVTRV9FTEZfU1lNVkVSICQoQ0VUX0ZMQUdTKQotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAkKENFVF9GTEFHUykKLSBDUlRTVFVGRl9UX0NGTEFHUyArPSAkKENFVF9GTEFHUykKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzUtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzNS1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlY2Q2ZTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzNS1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIDM4ZDQwMWZiNmFiNTU1ZDA5ZjRhOWE2Nzc3MjFkZGUwNzQzODc2ZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzIEZlYiAyMDE3IDEyOjU2OjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMzUvNDBdIHN5bmMgZ2NjIHN0ZGRlZi5oIHdpdGggbXVzbAotCi1tdXNsIGRlZmluZXMgcHRyZGlmZl90IHNpemVfdCBhbmQgd2NoYXJfdAotc28gZG9udCBkZWZpbmUgdGhlbSBoZXJlIGlmIG11c2wgaXMgZGVmaW5pbmluZyB0aGVtCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmggYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLWluZGV4IDMxYjk2YTdlNWUxLi40MzhhM2NlN2M1NiAxMDA2NDQKLS0tLSBhL2djYy9naW5jbHVkZS9zdGRkZWYuaAotKysrIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi1AQCAtMTM0LDYgKzEzNCw3IEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2lmbmRlZiBfX19pbnRfcHRyZGlmZl90X2gKLSAjaWZuZGVmIF9HQ0NfUFRSRElGRl9UCi0gI2lmbmRlZiBfUFRSRElGRl9UX0RFQ0xBUkVEIC8qIERyYWdvbkZseSAqLwotKyNpZm5kZWYgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfUFRSRElGRl9UCi0gI2RlZmluZSBfVF9QVFJESUZGXwotICNkZWZpbmUgX1RfUFRSRElGRgotQEAgLTE0MywxMCArMTQ0LDEyIEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2RlZmluZSBfX19pbnRfcHRyZGlmZl90X2gKLSAjZGVmaW5lIF9HQ0NfUFRSRElGRl9UCi0gI2RlZmluZSBfUFRSRElGRl9UX0RFQ0xBUkVECi0rI2RlZmluZSBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KLSAjaWZuZGVmIF9fUFRSRElGRl9UWVBFX18KLSAjZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gbG9uZyBpbnQKLSAjZW5kaWYKLSB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotKyNlbmRpZiAvKiBfX0RFRklORURfcHRyZGlmZl90ICovCi0gI2VuZGlmIC8qIF9QVFJESUZGX1RfREVDTEFSRUQgKi8KLSAjZW5kaWYgLyogX0dDQ19QVFJESUZGX1QgKi8KLSAjZW5kaWYgLyogX19faW50X3B0cmRpZmZfdF9oICovCi1AQCAtMTg0LDYgKzE4Nyw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2lmbmRlZiBfR0NDX1NJWkVfVAotICNpZm5kZWYgX1NJWkVUXwotICNpZm5kZWYgX19zaXplX3QKLSsjaWZuZGVmIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNkZWZpbmUgX19zaXplX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1NJWkVfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfU0laRV9UCi1AQCAtMjAwLDYgKzIwNCw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2RlZmluZSBfX19pbnRfc2l6ZV90X2gKLSAjZGVmaW5lIF9HQ0NfU0laRV9UCi0gI2RlZmluZSBfU0laRVRfCi0rI2RlZmluZSBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KLSAjaWYgKGRlZmluZWQgKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX18gPj0gNSkpIFwKLSAgIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAotICAgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCi1AQCAtMjM1LDYgKzI0MCw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNlbmRpZiAvKiBfU0laRV9UICovCi0gI2VuZGlmIC8qIF9fU0laRV9UX18gKi8KLSAjZW5kaWYgLyogX19zaXplX3RfXyAqLwotKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCi0gI3VuZGVmCV9fbmVlZF9zaXplX3QKLSAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF9zaXplX3QuICAqLwotIAotQEAgLTI2NCw2ICsyNzAsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjaWZuZGVmIF9fX2ludF93Y2hhcl90X2gKLSAjaWZuZGVmIF9fSU5UX1dDSEFSX1RfSAotICNpZm5kZWYgX0dDQ19XQ0hBUl9UCi0rI2lmbmRlZiBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3djaGFyX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1dDSEFSX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLwotICNkZWZpbmUgX1dDSEFSX1QKLUBAIC0yNzksNiArMjg2LDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gKLSAjZGVmaW5lIF9HQ0NfV0NIQVJfVAotICNkZWZpbmUgX1dDSEFSX1RfREVDTEFSRUQKLSsjZGVmaW5lIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KLSAKLSAvKiBPbiBCU0QvMzg2IDEuMSwgYXQgbGVhc3QsIG1hY2hpbmUvYW5zaS5oIGRlZmluZXMgX0JTRF9XQ0hBUl9UXwotICAgIGluc3RlYWQgb2YgX1dDSEFSX1RfLCBhbmQgX0JTRF9SVU5FX1RfICh3aGljaCwgdW5saWtlIHRoZSBvdGhlcgotQEAgLTM0NCw2ICszNTIsNyBAQCB0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7Ci0gI2VuZGlmCi0gI2VuZGlmIC8qIF9fV0NIQVJfVF9fICovCi0gI2VuZGlmIC8qIF9fd2NoYXJfdF9fICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF93Y2hhcl90IG11c2wgKi8KLSAjdW5kZWYJX19uZWVkX3djaGFyX3QKLSAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF93Y2hhcl90LiAgKi8KLSAKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzYtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzYtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjZTVkYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM2LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIGE5YmIyOWE0ZTliNDc4ZjliMTI2ZTQ4MzQ2N2NlOTAzMWMzM2ZlNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotRGF0ZTogTW9uLCAxOSBNYXIgMjAxOCAyMjozMToyMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDM2LzQwXSBmaXggc2VnbWVudGF0aW9uIGZhdWx0IGluIHByZWNvbXBpbGVkIGhlYWRlciBnZW5lcmF0aW9uCi0KLVByZXZlbnQgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hpY2ggb2NjdXJzIHdoZW4gdXNpbmcgaW5jb3JyZWN0Ci1zdHJ1Y3R1cmUgdHJ5aW5nIHRvIGFjY2VzcyBuYW1lIG9mIHNvbWUgbmFtZWQgb3BlcmF0b3JzLCBzdWNoIGFzCi1DUFBfTk9ULCBDUFBfQU5EIGV0Yy4gInRva2VuLT52YWwubm9kZS5zcGVsbGluZyIgY2Fubm90IGJlIHVzZWQgaW4KLXRob3NlIGNhc2VzLCBhcyBpcyBtYXkgbm90IGJlIGluaXRpYWxpemVkIGF0IGFsbC4KLQotW1lPQ1RPICMxMTczOF0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliY3BwL2xleC5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNwcC9sZXguYyBiL2xpYmNwcC9sZXguYwotaW5kZXggMzdjMzY1YTM1NjAuLjYzNDgwMDQ4ZGI2IDEwMDY0NAotLS0tIGEvbGliY3BwL2xleC5jCi0rKysgYi9saWJjcHAvbGV4LmMKLUBAIC0zMjc5LDExICszMjc5LDI3IEBAIGNwcF9zcGVsbF90b2tlbiAoY3BwX3JlYWRlciAqcGZpbGUsIGNvbnN0IGNwcF90b2tlbiAqdG9rZW4sCi0gICAgIHNwZWxsX2lkZW50OgotICAgICBjYXNlIFNQRUxMX0lERU5UOgotICAgICAgIGlmIChmb3JzdHJpbmcpCi0tCXsKLS0JICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAotLQkJICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7Ci0tCSAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOwotLQl9Ci0rICAgICAgICB7Ci0rICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSA9PSBDUFBfTkFNRSkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAotKyAgICAgICAgICAgICAgICAgICAgTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZykpOwotKyAgICAgICAgICAgICAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOwotKyAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAvKiBOQU1FRF9PUCwgY2Fubm90IHVzZSBub2RlLnNwZWxsaW5nICovCi0rICAgICAgICAgIGlmICh0b2tlbi0+ZmxhZ3MgJiBOQU1FRF9PUCkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBjcHBfbmFtZWRfb3BlcmF0b3IybmFtZSAodG9rZW4tPnR5cGUpOwotKyAgICAgICAgICAgICAgaWYgKHN0cikKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oc3RyKTsKLSsgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdHIsIGxlbik7Ci0rICAgICAgICAgICAgICAgICAgYnVmZmVyICs9IGxlbjsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotICAgICAgIGVsc2UKLSAJYnVmZmVyID0gX2NwcF9zcGVsbF9pZGVudF91Y25zIChidWZmZXIsIHRva2VuLT52YWwubm9kZS5ub2RlKTsKLSAgICAgICBicmVhazsKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzctRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzctRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA5OTlkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM3LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotRnJvbSAxZTVjMWVmMzRkOTJiNDE1N2UxYTI0Y2E3NDNkNDVmM2E3Mzc1YTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUkFHSFVOQVRIIExPTFVSIDxyYWdodW5hdGgubG9sdXJAa3BpdC5jb20+Ci1EYXRlOiBXZWQsIDYgRGVjIDIwMTcgMjI6NTI6MjYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzNy80MF0gRml4IGZvciB0ZXN0c3VpdGUgZmFpbHVyZQotCi0yMDE3LTExLTE2ICBSYWdodW5hdGggTG9sdXIgIDxyYWdodW5hdGgubG9sdXJAa3BpdC5jb20+Ci0KLQkqIGdjYy5kZy9wcjU2Mjc1LmM6IElmIFNTRSBpcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQKLQkiLW1mcG1hdGgiIGlzIG5vdCBzZXQgdG8gdXNlIFNTRS4gU2V0ICItbWZwbWF0aD0zODciLgotCSogZ2NjLmRnL3ByNjgzMDYuYzogTGlrZXdpc2UKLQkqIGdjYy5kZy9wcjY4MzA2LTIuYzogTGlrZXdpc2UKLQkqIGdjYy5kZy9wcjY4MzA2LTMuYzogTGlrZXdpc2UKLQkqIGdjYy5kZy9wcjY5NjM0LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jOiBMaWtld2lzZQotCi1JZiAtV2FsbCwgLVdlcnJvciBhcmUgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24gdmFyaW91cyB0ZXN0IGNhc2VzIGZhaWwKLXRvIGNvbXBpbGUuCi0KLUlmIFNTRSBpcyBkaXNhYmxlZCwgYmUgc3VyZSB0byAtbWZwbWF0aD0zODcgdG8gcmVzb2x2ZSB0aGlzLgotCi1UaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNoYW5nZXMgdG8gQ2hhbmdlbG9nIGZyb20gdGhlIG9yaWdpbmFsIHBhdGNoLgotVGhpcyB3aWxsIGhlbHAgdXMgYXZvaWQgY29uZmxpY3RzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYyAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jICAgICAgICAgIHwgMSArCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYyAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYyAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYyAgICAgIHwgMiArLQotIDE3IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCi1pbmRleCBiOTAxYmIyYjE5OS4uYTRmNmM5NWUxYTEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLwotLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSIgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9ICovCi0gCi0gdHlwZWRlZiBsb25nIGxvbmcgdjJ0dyBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDIgKiBzaXplb2YgKGxvbmcgbG9uZykpKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYwotaW5kZXggNDY3MmViZTc5ODcuLjJhMzY4YzQ4NGI2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gCi0gc3RydWN0IHsKLSAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKLWluZGV4IGY1YThjMTAyY2Y4Li5kZjMzOTBjNjRjMiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLwotLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLWFsdGl2ZWMgLW1uby12c3giIHsgdGFyZ2V0IHBvd2VycGMqLSotKiB9IH0gKi8KLSAKLSBleHRlcm4gdm9pZCBmbjIoKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKLWluZGV4IDU0ZTViNDBmMjIxLi4wODEzMzg5ZTJjMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gCi0gZW51bSBwb3dlcnBjX3BtY190eXBlIHsgUFBDX1BNQ19JQk0gfTsKLSBzdHJ1Y3QgewotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYwotaW5kZXggNjBhNTYxNDk0NjMuLmJjYzIzZjljY2Q2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1kY2UgLWZzY2hlZHVsZS1pbnNucyAtZm5vLXRyZWUtdnJwIC1mY29tcGFyZS1kZWJ1ZyAtV25vLXBzYWJpIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgc2NoZWR1bGluZyB9ICovCi0gCi0gdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKLWluZGV4IDY5ZmRlNTdiZjA2Li43ZjFmMWMwM2VkZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWFiaT1zeXN2IiB7IHRhcmdldCAqLSotbWluZ3cqIH0gfSAqLwotIAotIGRvdWJsZSBmb28odm9pZCkgeyByZXR1cm4gMDsgfQkvKiB7IGRnLWVycm9yICJTU0UgZGlzYWJsZWQiIH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKLWluZGV4IGVhODk2YjdlYmZkLi5iZjE1NTY5YjgyNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCi1AQCAtMSw2ICsxLDcgQEAKLSAvKiBUZXN0IHdoZXRoZXIgYWxsIG9mIHRoZSA2NC1iaXQgZnVuY3Rpb24gc3BlY2lmaWMgb3B0aW9ucyBhcmUgYWNjZXB0ZWQKLSAgICB3aXRob3V0IGVycm9yLiAgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gI2luY2x1ZGUgImZ1bmNzcGVjLTU2LmluYyIKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKLWluZGV4IDNmYmRjODgxZGRhLi42YjRkOWQxMjUyYSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZ2VuZXJhbC1yZWdzLW9ubHkgLW1uby1jbGQgLW1uby1pYW1jdSAtbTgwMzg3IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODcgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gdHlwZWRlZiB1bnNpZ25lZCBpbnQgdXdvcmRfdCBfX2F0dHJpYnV0ZV9fICgobW9kZSAoX193b3JkX18pKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYwotaW5kZXggNWQ0OWU2ZTc3ZmUuLjFkZTJkYjkyYmRkIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIHJ1biB9ICovCi0tLyogeyBkZy1vcHRpb25zICItbWFyY2g9eDg2LTY0IC1tc3NlNGEgLW1mbWE0IC1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItbWFyY2g9eDg2LTY0IC1tc3NlNGEgLW1mbWE0IC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIGV4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKLWluZGV4IGZhMTc2OWI2MmZiLi5mNzlmYjEyNzI2ZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8gLW1uby1zc2UgLVduby1wc2FiaSAtbXR1bmU9Z2VuZXJpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8gLW1uby1zc2UgLVduby1wc2FiaSAtbXR1bmU9Z2VuZXJpYyAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSBzdHJ1Y3QgQQotIHsgCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYwotaW5kZXggMmU4OWZmN2Q4MWQuLjYzMzliZjZiNzM2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCi0gCi0gdHlwZWRlZiBkb3VibGUgX192MmRmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKLWluZGV4IDYxZjYyODNkYmU5Li4yYzVhNTVmMGFjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYwotQEAgLTEsNiArMSw2IEBACi0gLyogUFIgdGFyZ2V0LzUzNDI1ICovCi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAvKiB7IGRnLXNraXAtaWYgIm5vIFNTRSB2ZWN0b3IiIHsgeDg2XzY0LSotbWluZ3cqIH0gfSAqLwotIAotIHR5cGVkZWYgZmxvYXQgX192MnNmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDgpKSk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCi1pbmRleCAyMzM2NmQwOTA5ZC4uOTgxMGUzYWJiNzYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0gLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgbWF5YmVfeDMyIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1uby1tbXggLW14MzIgLW1hZGRyZXNzLW1vZGU9bG9uZyAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKLSB0eXBlZGVmIHVpbnQzMl90IEVsZjMyX1dvcmQ7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCi1pbmRleCA5NjAwNmIzZTMzOC4uNDI4N2U0NTM4YmYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYwotQEAgLTEsNiArMSw2IEBACi0gLyogUFIgdGFyZ2V0LzU5NjQ0ICovCi0gLyogeyBkZy1kbyBydW4geyB0YXJnZXQgbHA2NCB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmZyZWVzdGFuZGluZyAtbW5vLXNzZSAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmZyZWVzdGFuZGluZyAtbW5vLXNzZSAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gLyogVGhpcyB0ZXN0IHVzZXMgX19idWlsdGluX3RyYXAgKCkgaW5zdGVhZCBvZiBlLmcuIGFib3J0LAotICAgIGJlY2F1c2UgZHVlIHRvIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgaXQgc2hvdWxkIG5vdCBjYWxsCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCi1pbmRleCBiZmI4YzQ3MDNlYi4uZWQwNGNmMTgxZjMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB2b2lkIGZvbyAoKQotIHsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCi1pbmRleCA0ZTExMmM4OGQwNy4uYmNmYjM5NmE2OGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFBSIHJ0bC1vcHRpbWl6YXRpb24vNzA0NjcgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gdm9pZCBmb28gKHVuc2lnbmVkIGxvbmcgbG9uZyAqKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYwotaW5kZXggNmNkYTE1MzQzMTEuLjI2ZTM3ZjViOGJhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICAqLwotLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLVd2ZWN0b3Itb3BlcmF0aW9uLXBlcmZvcm1hbmNlIiB9ICAqLwotKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLVd2ZWN0b3Itb3BlcmF0aW9uLXBlcmZvcm1hbmNlIC1tZnBtYXRoPTM4NyIgfSAgKi8KLSAjZGVmaW5lIHZlY3RvcihlbGNvdW50LCB0eXBlKSAgXAotIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKChlbGNvdW50KSpzaXplb2YodHlwZSkpKSkgdHlwZQotIAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzOC1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM4LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRlODg5Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM4LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gZjBiZWE5NjQzNGFjNDc4YzNjZmY4YzI5ZGQ5N2NjY2ZhYzViMzVlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDYgSnVuIDIwMTggMTI6MTA6MjIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzOC80MF0gUmUtaW50cm9kdWNlIHNwZSBjb21tYW5kbGluZSBvcHRpb25zCi0KLVRoaXMgc2hvdWxkIGVuc3VyZSB0aGF0IHdlIGtlZXAgYWNjZXB0aW5nCi1zcGUgb3B0aW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1NQRSBwb3J0IGlzIHJlbW92ZWQgZnJvbSByczYwMCBwb3J0XQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCB8IDEyICsrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAotaW5kZXggYWNlOGE0Nzc1NTAuLmQ2YThmODI1ZDg4IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAotQEAgLTM2NSw2ICszNjUsMTggQEAgbWRlYnVnPQotIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBKb2luZWQKLSAtbWRlYnVnPQlFbmFibGUgZGVidWcgb3V0cHV0LgotIAotK21zcGUKLStUYXJnZXQgVmFyKHJzNjAwMF9zcGUpIFNhdmUKLStHZW5lcmF0ZSBTUEUgU0lNRCBpbnN0cnVjdGlvbnMgb24gRTUwMC4KLSsKLSttYWJpPXNwZQotK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX3NwZV9hYmkpIFNhdmUKLStVc2UgdGhlIFNQRSBBQkkgZXh0ZW5zaW9ucy4KLSsKLSttYWJpPW5vLXNwZQotK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX3NwZV9hYmksIDApCi0rRG8gbm90IHVzZSB0aGUgU1BFIEFCSSBleHRlbnNpb25zLgotKwotIG1hYmk9YWx0aXZlYwotIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX2FsdGl2ZWNfYWJpKSBTYXZlCi0gVXNlIHRoZSBBbHRpVmVjIEFCSSBleHRlbnNpb25zLgotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzOS1yaXNjdi1EaXNhYmxlLW11bHRpbGliLWZvci1PRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzktcmlzY3YtRGlzYWJsZS1tdWx0aWxpYi1mb3ItT0UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YjIyMmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzOS1yaXNjdi1EaXNhYmxlLW11bHRpbGliLWZvci1PRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gMjRmNzQ0NDRjMDBjNmM5YmYwNzZmYjAwMjYxNGViZjZkZWMzMWYxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI4IERlYyAyMDE4IDA5OjU5OjUzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMzkvNDBdIHJpc2N2OiBEaXNhYmxlIG11bHRpbGliIGZvciBPRQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4IHwgNiArKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4IGIvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4Ci1pbmRleCAyMTZkMjc3NmExOC4uZTRkODE3NjIxZmMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKLSsrKyBiL2djYy9jb25maWcvcmlzY3YvdC1saW51eAotQEAgLTEsMyArMSw1IEBACi0gIyBPbmx5IFhMRU4gYW5kIEFCSSBhZmZlY3QgTGludXggbXVsdGlsaWIgZGlyIG5hbWVzLCBlLmcuIC9saWIzMi9pbHAzMmQvCi0tTVVMVElMSUJfRElSTkFNRVMgOj0gJChwYXRzdWJzdCBydjMyJSxsaWIzMiwkKHBhdHN1YnN0IHJ2NjQlLGxpYjY0LCQoTVVMVElMSUJfRElSTkFNRVMpKSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgbGliJSwuLi9saWIlLCQoTVVMVElMSUJfRElSTkFNRVMpKQotKyNNVUxUSUxJQl9ESVJOQU1FUyA6PSAkKHBhdHN1YnN0IHJ2MzIlLGxpYjMyLCQocGF0c3Vic3QgcnY2NCUsbGliNjQsJChNVUxUSUxJQl9ESVJOQU1FUykpKQotK01VTFRJTElCX0RJUk5BTUVTIDo9IC4gLgotKyNNVUxUSUxJQl9PU0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgbGliJSwuLi9saWIlLCQoTVVMVElMSUJfRElSTkFNRVMpKQotK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDAtcG93ZXJwYy1wb3dlcnBjNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDAtcG93ZXJwYy1wb3dlcnBjNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiYTE2My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDQwLXBvd2VycGMtcG93ZXJwYzY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDRiZDBhMzg2NmYzMDI3MjVjYjRlZGRjYWRkYWVlY2U2NDkwMGM0MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTZXJoZXkgUG9wb3Z5Y2ggPHNlcmhlLnBvcG92eWNoQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTEgRGVjIDIwMTggMDI6MzA6NTAgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCA0MC80MF0gcG93ZXJwYy9wb3dlcnBjNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogU2VyaGV5IFBvcG92eWNoIDxzZXJoZS5wb3BvdnljaEBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCA2MTllMTEzZTJiOC4uZWU4YjQ0ZjkzNzQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTQyMSw5ICs0MjEsOSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotICNlbmRpZgotIAotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIvbGliL2xkLW11c2wtcG93ZXJwYyIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGMiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIi9saWIvbGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0rICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0gCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDEtQWRkLWEtcmVjdXJzaW9uLWxpbWl0LXRvLWxpYmliZXJ0eS1zLWRlbWFuZ2xpbmctY29kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDEtQWRkLWEtcmVjdXJzaW9uLWxpbWl0LXRvLWxpYmliZXJ0eS1zLWRlbWFuZ2xpbmctY29kZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMzMDNiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDQxLUFkZC1hLXJlY3Vyc2lvbi1saW1pdC10by1saWJpYmVydHktcy1kZW1hbmdsaW5nLWNvZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotRnJvbSBlMTc0NGUxMWIxYzJiMzZmOTFhODg0N2I2MWJhZmI4YzVlNzQwN2FlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbmlja2MgPG5pY2tjQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IEZyaSwgNyBEZWMgMjAxOCAxMDozMzozMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBBZGQgYSByZWN1cnNpb24gbGltaXQgdG8gbGliaWJlcnR5J3MgZGVtYW5nbGluZyBjb2RlLiBUaGUKLSBsaW1pdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgZGlzYWJsZWQgdmlhIGEgbmV3IGRlbWFuZ2xpbmcgb3B0aW9uLgotCi1pbmNsdWRlCSogZGVtYW5nbGUuaCAoRE1HTF9OT19SRUNVUlNFX0xJTUlUKTogRGVmaW5lLgotICAgICAgICAoREVNQU5HTEVfUkVDVVJTSU9OX0xJTUlUKTogRGVmaW5lCi0KLQlQUiA4NzY4MQotCVBSIDg3Njc1Ci0JUFIgODc2MzYKLQlQUiA4NzM1MAotCVBSIDg3MzM1Ci1saWJpYmVydHkgKiBjcC1kZW1hbmdsZS5oIChzdHJ1Y3QgZF9pbmZvKTogQWRkIHJlY3Vyc2lvbl9sZXZlbCBmaWVsZC4KLQkqIGNwLWRlbWFuZ2xlLmMgKGRfZnVuY3Rpb25fdHlwZSk6IEFkZCByZWN1cnNpb24gY291bnRlci4KLQlJZiB0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIHJlYWNoZWQgYW5kIHRoZSBjaGVjayBpcyBub3QgZGlzYWJsZWQsCi0JdGhlbiByZXR1cm4gd2l0aCBhIGZhaWx1cmUgcmVzdWx0LgotCShjcGx1c19kZW1hbmdsZV9pbml0X2luZm8pOiBJbml0aWFsaXNlIHRoZSByZWN1cnNpb25fbGV2ZWwgZmllbGQuCi0gICAgICAgIChkX2RlbWFuZ2xlX2NhbGxiYWNrKTogSWYgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBlbmFibGVkLCBjaGVjawotCWZvciBhIG1hbmdsZWQgc3RyaW5nIHRoYXQgaXMgc28gbG9uZyB0aGF0IHRoZXJlIGlzIG5vdCBlbm91Z2gKLQlzdGFjayBzcGFjZSBmb3IgdGhlIGxvY2FsIGFycmF5cy4KLSAgICAgICAgKiBjcGx1cy1kZW0uYyAoc3RydWN0IHdvcmspOiBBZGQgcmVjdXJzaW9uX2xldmVsIGZpZWxkLgotCShzcXVhbmdsZV9tb3BfdXApOiBTZXQgdGhlIG51bWIgYW5kIG51bWsgZmllbGRzIHRvIHplcm8uCi0JKHdvcmtfc3R1ZmZfY29weV90b19mcm9tKTogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEgYnR5cGV2ZWMgb3IKLQlrdHlwZXZlYyBmaWVsZCBpcyBOVUxMLgotCShkZW1hbmdsZV9uZXN0ZWRfYXJncyk6IEFkZCByZWN1cnNpb24gY291bnRlci4gIElmCi0JdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBub3QgZGlzYWJsZWQgYW5kIHJlYWNoZWQsIHJldHVybiB3aXRoIGEKLQlmYWlsdXJlIHJlc3VsdC4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjY2ODg2IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1DVkU6IENWRS0yMDE4LTE4NDg0Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2MvY29tbWl0LzAzZTUxNzQ2ZWQ5OGQ5MTA2ODAzZjYwMDllYmQ3MWVhNjcwYWQzYjldCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gaW5jbHVkZS9DaGFuZ2VMb2cgICAgICAgfCAgNSArKysrKwotIGluY2x1ZGUvZGVtYW5nbGUuaCAgICAgIHwgMTEgKysrKysrKysrKysKLSBsaWJpYmVydHkvQ2hhbmdlTG9nICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKysKLSBsaWJpYmVydHkvY3AtZGVtYW5nbGUuYyB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSBsaWJpYmVydHkvY3AtZGVtYW5nbGUuaCB8ICAzICsrKwotIGxpYmliZXJ0eS9jcGx1cy1kZW0uYyAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvQ2hhbmdlTG9nIGIvaW5jbHVkZS9DaGFuZ2VMb2cKLWluZGV4IDAyYWIzMzYuLjg4YjA2NDggMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL0NoYW5nZUxvZwotKysrIGIvaW5jbHVkZS9DaGFuZ2VMb2cKLUBAIC0yLDYgKzIsMTEgQEAKLSAKLSAJKiBHQ0MgOC4zLjAgcmVsZWFzZWQuCi0gCi0rMjAxOC0xMi0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsJKiBkZW1hbmdsZS5oIChETUdMX05PX1JFQ1VSU0VfTElNSVQpOiBEZWZpbmUuCi0rCShERU1BTkdMRV9SRUNVUlNJT05fTElNSVQpOiBEZWZpbmUKLSsKLSAyMDE4LTA3LTI2ICBSZWxlYXNlIE1hbmFnZXIKLSAKLSAJKiBHQ0MgOC4yLjAgcmVsZWFzZWQuCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9kZW1hbmdsZS5oIGIvaW5jbHVkZS9kZW1hbmdsZS5oCi1pbmRleCBiOGQ1N2NmLi45YmI4YTE5IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9kZW1hbmdsZS5oCi0rKysgYi9pbmNsdWRlL2RlbWFuZ2xlLmgKLUBAIC02OCw2ICs2OCwxNyBAQCBleHRlcm4gIkMiIHsKLSAvKiBJZiBub25lIG9mIHRoZXNlIGFyZSBzZXQsIHVzZSAnY3VycmVudF9kZW1hbmdsaW5nX3N0eWxlJyBhcyB0aGUgZGVmYXVsdC4gKi8KLSAjZGVmaW5lIERNR0xfU1RZTEVfTUFTSyAoRE1HTF9BVVRPfERNR0xfR05VfERNR0xfTFVDSUR8RE1HTF9BUk18RE1HTF9IUHxETUdMX0VER3xETUdMX0dOVV9WM3xETUdMX0pBVkF8RE1HTF9HTkFUfERNR0xfRExBTkd8RE1HTF9SVVNUKQotIAotKy8qIERpc2FibGUgYSBsaW1pdCBvbiB0aGUgZGVwdGggb2YgcmVjdXJzaW9uIGluIG1hbmdsZWQgc3RyaW5ncy4KLSsgICBOb3RlIGlmIHRoaXMgbGltaXQgaXMgZGlzYWJsZWQgdGhlbiBzdGFjayBleGhhdXN0aW9uIGlzIHBvc3NpYmxlIHdoZW4KLSsgICBkZW1hbmdsaW5nIHBhdGhvbG9naWNhbGx5IGNvbXBsaWNhdGVkIHN0cmluZ3MuICBCdWcgcmVwb3J0cyBhYm91dCBzdGFjawotKyAgIGV4aGF1c3Rpb24gd2hlbiB0aGUgb3B0aW9uIGlzIGVuYWJsZWQgd2lsbCBiZSByZWplY3RlZC4gICovICAKLSsjZGVmaW5lIERNR0xfTk9fUkVDVVJTRV9MSU1JVCAoMSA8PCAxOCkJCi0rCi0rLyogSWYgRE1HTF9OT19SRUNVUlNFX0xJTUlUIGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMgaXMgdGhlIHZhbHVlIHVzZWQgYXMKLSsgICB0aGUgbWF4aW11bSBkZXB0aCBvZiByZWN1cnNpb24gYWxsb3dlZC4gIEl0IHNob3VsZCBiZSBlbm91Z2ggZm9yIGFueQotKyAgIHJlYWwtd29ybGQgbWFuZ2xlZCBuYW1lLiAgKi8KLSsjZGVmaW5lIERFTUFOR0xFX1JFQ1VSU0lPTl9MSU1JVCAxMDI0Ci0rICAKLSAvKiBFbnVtZXJhdGlvbiBvZiBwb3NzaWJsZSBkZW1hbmdsaW5nIHN0eWxlcy4KLSAKLSAgICBMdWNpZCBhbmQgQVJNIHN0eWxlcyBhcmUgc3RpbGwga2VwdCBsb2dpY2FsbHkgZGlzdGluY3QsIGV2ZW4gdGhvdWdoCi1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L0NoYW5nZUxvZyBiL2xpYmliZXJ0eS9DaGFuZ2VMb2cKLWluZGV4IDFkZDA1ZGEuLjJmNzcwMzggMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvQ2hhbmdlTG9nCi0rKysgYi9saWJpYmVydHkvQ2hhbmdlTG9nCi1AQCAtOSw2ICs5LDI5IEBACi0gCShzaW1wbGVfb2JqZWN0X2NvcHlfbHRvX2RlYnVnX3NlY3Rpb25zKTogQ3JlYXRlIGZpbGUgaW4gYmluYXJ5Ci0gCW1vZGUuCi0gCi0rMjAxOC0xMi0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsJUFIgODc2ODEKLSsJUFIgODc2NzUKLSsJUFIgODc2MzYKLSsJUFIgODczNTAKLSsJUFIgODczMzUKLSsJKiBjcC1kZW1hbmdsZS5oIChzdHJ1Y3QgZF9pbmZvKTogQWRkIHJlY3Vyc2lvbl9sZXZlbCBmaWVsZC4KLSsJKiBjcC1kZW1hbmdsZS5jIChkX2Z1bmN0aW9uX3R5cGUpOiBBZGQgcmVjdXJzaW9uIGNvdW50ZXIuCi0rCUlmIHRoZSByZWN1cnNpb24gbGltaXQgaXMgcmVhY2hlZCBhbmQgdGhlIGNoZWNrIGlzIG5vdCBkaXNhYmxlZCwKLSsJdGhlbiByZXR1cm4gd2l0aCBhIGZhaWx1cmUgcmVzdWx0LgotKwkoY3BsdXNfZGVtYW5nbGVfaW5pdF9pbmZvKTogSW5pdGlhbGlzZSB0aGUgcmVjdXJzaW9uX2xldmVsIGZpZWxkLgotKwkgKGRfZGVtYW5nbGVfY2FsbGJhY2spOiBJZiB0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIGVuYWJsZWQsIGNoZWNrCi0rCWZvciBhIG1hbmdsZWQgc3RyaW5nIHRoYXQgaXMgc28gbG9uZyB0aGF0IHRoZXJlIGlzIG5vdCBlbm91Z2gKLSsJc3RhY2sgc3BhY2UgZm9yIHRoZSBsb2NhbCBhcnJheXMuCi0rCSAqIGNwbHVzLWRlbS5jIChzdHJ1Y3Qgd29yayk6IEFkZCByZWN1cnNpb25fbGV2ZWwgZmllbGQuCi0rCShzcXVhbmdsZV9tb3BfdXApOiBTZXQgdGhlIG51bWIgYW5kIG51bWsgZmllbGRzIHRvIHplcm8uCi0rCSh3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSk6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIGJ0eXBldmVjIG9yCi0rCWt0eXBldmVjIGZpZWxkIGlzIE5VTEwuCi0rCShkZW1hbmdsZV9uZXN0ZWRfYXJncyk6IEFkZCByZWN1cnNpb24gY291bnRlci4gIElmCi0rCXRoZSByZWN1cnNpb24gbGltaXQgaXMgbm90IGRpc2FibGVkIGFuZCByZWFjaGVkLCByZXR1cm4gd2l0aCBhCi0rCWZhaWx1cmUgcmVzdWx0LgotKwotIDIwMTgtMDctMjYgIFJlbGVhc2UgTWFuYWdlcgotIAotIAkqIEdDQyA4LjIuMCByZWxlYXNlZC4KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvY3AtZGVtYW5nbGUuYyBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCi1pbmRleCAzZjJhMDk3Li5jMzc0ZTQ2IDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKLSsrKyBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCi1AQCAtMjg0MywyMSArMjg0MywzNSBAQCBkX3JlZl9xdWFsaWZpZXIgKHN0cnVjdCBkX2luZm8gKmRpLCBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpzdWIpCi0gc3RhdGljIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKgotIGRfZnVuY3Rpb25fdHlwZSAoc3RydWN0IGRfaW5mbyAqZGkpCi0gewotLSAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqcmV0OwotKyAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqcmV0ID0gTlVMTDsKLSAKLS0gIGlmICghIGRfY2hlY2tfY2hhciAoZGksICdGJykpCi0tICAgIHJldHVybiBOVUxMOwotLSAgaWYgKGRfcGVla19jaGFyIChkaSkgPT0gJ1knKQotKyAgaWYgKChkaS0+b3B0aW9ucyAmIERNR0xfTk9fUkVDVVJTRV9MSU1JVCkgPT0gMCkKLSAgICAgewotLSAgICAgIC8qIEZ1bmN0aW9uIGhhcyBDIGxpbmthZ2UuICBXZSBkb24ndCBwcmludCB0aGlzIGluZm9ybWF0aW9uLgotLQkgRklYTUU6IFdlIHNob3VsZCBwcmludCBpdCBpbiB2ZXJib3NlIG1vZGUuICAqLwotLSAgICAgIGRfYWR2YW5jZSAoZGksIDEpOwotKyAgICAgIGlmIChkaS0+cmVjdXJzaW9uX2xldmVsID4gREVNQU5HTEVfUkVDVVJTSU9OX0xJTUlUKQotKwkvKiBGSVhNRTogVGhlcmUgb3VnaHQgdG8gYmUgYSB3YXkgdG8gcmVwb3J0Ci0rCSAgIHRoYXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCBoYXMgYmVlbiByZWFjaGVkLiAgKi8KLSsJcmV0dXJuIE5VTEw7Ci0rCi0rICAgICAgZGktPnJlY3Vyc2lvbl9sZXZlbCArKzsKLSAgICAgfQotLSAgcmV0ID0gZF9iYXJlX2Z1bmN0aW9uX3R5cGUgKGRpLCAxKTsKLS0gIHJldCA9IGRfcmVmX3F1YWxpZmllciAoZGksIHJldCk7Ci0gCi0tICBpZiAoISBkX2NoZWNrX2NoYXIgKGRpLCAnRScpKQotLSAgICByZXR1cm4gTlVMTDsKLSsgIGlmIChkX2NoZWNrX2NoYXIgKGRpLCAnRicpKQotKyAgICB7Ci0rICAgICAgaWYgKGRfcGVla19jaGFyIChkaSkgPT0gJ1knKQotKwl7Ci0rCSAgLyogRnVuY3Rpb24gaGFzIEMgbGlua2FnZS4gIFdlIGRvbid0IHByaW50IHRoaXMgaW5mb3JtYXRpb24uCi0rCSAgICAgRklYTUU6IFdlIHNob3VsZCBwcmludCBpdCBpbiB2ZXJib3NlIG1vZGUuICAqLwotKwkgIGRfYWR2YW5jZSAoZGksIDEpOwotKwl9Ci0rICAgICAgcmV0ID0gZF9iYXJlX2Z1bmN0aW9uX3R5cGUgKGRpLCAxKTsKLSsgICAgICByZXQgPSBkX3JlZl9xdWFsaWZpZXIgKGRpLCByZXQpOwotKyAgICAgIAotKyAgICAgIGlmICghIGRfY2hlY2tfY2hhciAoZGksICdFJykpCi0rCXJldCA9IE5VTEw7Ci0rICAgIH0KLSsKLSsgIGlmICgoZGktPm9wdGlvbnMgJiBETUdMX05PX1JFQ1VSU0VfTElNSVQpID09IDApCi0rICAgIGRpLT5yZWN1cnNpb25fbGV2ZWwgLS07Ci0gICByZXR1cm4gcmV0OwotIH0KLSAKLUBAIC02MTg4LDYgKzYyMDIsNyBAQCBjcGx1c19kZW1hbmdsZV9pbml0X2luZm8gKGNvbnN0IGNoYXIgKm1hbmdsZWQsIGludCBvcHRpb25zLCBzaXplX3QgbGVuLAotICAgZGktPmV4cGFuc2lvbiA9IDA7Ci0gICBkaS0+aXNfZXhwcmVzc2lvbiA9IDA7Ci0gICBkaS0+aXNfY29udmVyc2lvbiA9IDA7Ci0rICBkaS0+cmVjdXJzaW9uX2xldmVsID0gMDsKLSB9Ci0gCi0gLyogSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBkZW1hbmdsZXIuICBJZiBNQU5HTEVEIGlzIGEgZysrIHYzIEFCSQotQEAgLTYyMjcsNiArNjI0MiwyMCBAQCBkX2RlbWFuZ2xlX2NhbGxiYWNrIChjb25zdCBjaGFyICptYW5nbGVkLCBpbnQgb3B0aW9ucywKLSAKLSAgIGNwbHVzX2RlbWFuZ2xlX2luaXRfaW5mbyAobWFuZ2xlZCwgb3B0aW9ucywgc3RybGVuIChtYW5nbGVkKSwgJmRpKTsKLSAKLSsgIC8qIFBSIDg3Njc1IC0gQ2hlY2sgZm9yIGEgbWFuZ2xlZCBzdHJpbmcgdGhhdCBpcyBzbyBsb25nCi0rICAgICB0aGF0IHdlIGRvIG5vdCBoYXZlIGVub3VnaCBzdGFjayBzcGFjZSB0byBkZW1hbmdsZSBpdC4gICovCi0rICBpZiAoKChvcHRpb25zICYgRE1HTF9OT19SRUNVUlNFX0xJTUlUKSA9PSAwKQotKyAgICAgIC8qIFRoaXMgY2hlY2sgaXMgYSBiaXQgYXJiaXRyYXJ5LCBzaW5jZSB3aGF0IHdlIHJlYWxseSB3YW50IHRvIGRvIGlzIHRvCi0rCSBjb21wYXJlIHRoZSBzaXplcyBvZiB0aGUgZGkuY29tcHMgYW5kIGRpLnN1YnMgYXJyYXlzIGFnYWluc3QgdGhlCi0rCSBhbW91bnQgb2Ygc3RhY2sgc3BhY2UgcmVtYWluaW5nLiAgQnV0IHRoZXJlIGlzIG5vIHBvcnRhYmxlIHdheSB0byBkbwotKwkgdGhpcywgc28gaW5zdGVhZCB3ZSB1c2UgdGhlIHJlY3Vyc2lvbiBsaW1pdCBhcyBhIGd1aWRlIHRvIHRoZSBtYXhpbXVtCi0rCSBzaXplIG9mIHRoZSBhcnJheXMuICAqLwotKyAgICAgICYmICh1bnNpZ25lZCBsb25nKSBkaS5udW1fY29tcHMgPiBERU1BTkdMRV9SRUNVUlNJT05fTElNSVQpCi0rICAgIHsKLSsgICAgICAvKiBGSVhNRTogV2UgbmVlZCBhIHdheSB0byBpbmRpY2F0ZSB0aGF0IGEgc3RhY2sgbGltaXQgaGFzIGJlZW4gcmVhY2hlZC4gICovCi0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSAgIHsKLSAjaWZkZWYgQ1BfRFlOQU1JQ19BUlJBWVMKLSAgICAgX19leHRlbnNpb25fXyBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50IGNvbXBzW2RpLm51bV9jb21wc107Ci1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmggYi9saWJpYmVydHkvY3AtZGVtYW5nbGUuaAotaW5kZXggNTFiOGEyNC4uZDg3YTgzMCAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5oCi0rKysgYi9saWJpYmVydHkvY3AtZGVtYW5nbGUuaAotQEAgLTEyMiw2ICsxMjIsOSBAQCBzdHJ1Y3QgZF9pbmZvCi0gICAvKiBOb24temVybyBpZiB3ZSBhcmUgcGFyc2luZyB0aGUgdHlwZSBvcGVyYW5kIG9mIGEgY29udmVyc2lvbgotICAgICAgb3BlcmF0b3IsIGJ1dCBub3Qgd2hlbiBpbiBhbiBleHByZXNzaW9uLiAgKi8KLSAgIGludCBpc19jb252ZXJzaW9uOwotKyAgLyogSWYgRE1HTF9OT19SRUNVUlNFX0xJTUlUIGlzIG5vdCBhY3RpdmUgdGhlbiB0aGlzIGlzIHNldCB0bwotKyAgICAgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGxldmVsLiAgKi8KLSsgIHVuc2lnbmVkIGludCByZWN1cnNpb25fbGV2ZWw7Ci0gfTsKLSAKLSAvKiBUbyBhdm9pZCBydW5uaW5nIHBhc3QgdGhlIGVuZGluZyAnXDAnLCBkb24ndDoKLWRpZmYgLS1naXQgYS9saWJpYmVydHkvY3BsdXMtZGVtLmMgYi9saWJpYmVydHkvY3BsdXMtZGVtLmMKLWluZGV4IDZkNThiZDguLjhiOTY0NmYgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvY3BsdXMtZGVtLmMKLSsrKyBiL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotQEAgLTE0Niw2ICsxNDYsNyBAQCBzdHJ1Y3Qgd29ya19zdHVmZgotICAgaW50ICpwcm9jdHlwZXZlYzsgICAgIC8qIEluZGljZXMgb2YgY3VycmVudGx5IHByb2Nlc3NlZCByZW1lbWJlcmVkIHR5cGV2ZWNzLiAgKi8KLSAgIGludCBwcm9jdHlwZXZlY19zaXplOwotICAgaW50IG5wcm9jdHlwZXM7Ci0rICB1bnNpZ25lZCBpbnQgcmVjdXJzaW9uX2xldmVsOwotIH07Ci0gCi0gI2RlZmluZSBQUklOVF9BTlNJX1FVQUxJRklFUlMgKHdvcmsgLT4gb3B0aW9ucyAmIERNR0xfQU5TSSkKLUBAIC0xMjkyLDEyICsxMjkzLDE0IEBAIHNxdWFuZ2xlX21vcF91cCAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmspCi0gICAgICAgZnJlZSAoKGNoYXIgKikgd29yayAtPiBidHlwZXZlYyk7Ci0gICAgICAgd29yay0+YnR5cGV2ZWMgPSBOVUxMOwotICAgICAgIHdvcmstPmJzaXplID0gMDsKLSsgICAgICB3b3JrLT5udW1iID0gMDsKLSAgICAgfQotICAgaWYgKHdvcmsgLT4ga3R5cGV2ZWMgIT0gTlVMTCkKLSAgICAgewotICAgICAgIGZyZWUgKChjaGFyICopIHdvcmsgLT4ga3R5cGV2ZWMpOwotICAgICAgIHdvcmstPmt0eXBldmVjID0gTlVMTDsKLSAgICAgICB3b3JrLT5rc2l6ZSA9IDA7Ci0rICAgICAgd29yay0+bnVtayA9IDA7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTMzMSw4ICsxMzM0LDE1IEBAIHdvcmtfc3R1ZmZfY29weV90b19mcm9tIChzdHJ1Y3Qgd29ya19zdHVmZiAqdG8sIHN0cnVjdCB3b3JrX3N0dWZmICpmcm9tKQotIAotICAgZm9yIChpID0gMDsgaSA8IGZyb20tPm51bWs7IGkrKykKLSAgICAgewotLSAgICAgIGludCBsZW4gPSBzdHJsZW4gKGZyb20tPmt0eXBldmVjW2ldKSArIDE7Ci0rICAgICAgaW50IGxlbjsKLSsKLSsgICAgICBpZiAoZnJvbS0+a3R5cGV2ZWNbaV0gPT0gTlVMTCkKLSsJewotKwkgIHRvLT5rdHlwZXZlY1tpXSA9IE5VTEw7Ci0rCSAgY29udGludWU7Ci0rCX0KLSAKLSsgICAgICBsZW4gPSBzdHJsZW4gKGZyb20tPmt0eXBldmVjW2ldKSArIDE7Ci0gICAgICAgdG8tPmt0eXBldmVjW2ldID0gWE5FV1ZFQyAoY2hhciwgbGVuKTsKLSAgICAgICBtZW1jcHkgKHRvLT5rdHlwZXZlY1tpXSwgZnJvbS0+a3R5cGV2ZWNbaV0sIGxlbik7Ci0gICAgIH0KLUBAIC0xMzQyLDggKzEzNTIsMTUgQEAgd29ya19zdHVmZl9jb3B5X3RvX2Zyb20gKHN0cnVjdCB3b3JrX3N0dWZmICp0bywgc3RydWN0IHdvcmtfc3R1ZmYgKmZyb20pCi0gCi0gICBmb3IgKGkgPSAwOyBpIDwgZnJvbS0+bnVtYjsgaSsrKQotICAgICB7Ci0tICAgICAgaW50IGxlbiA9IHN0cmxlbiAoZnJvbS0+YnR5cGV2ZWNbaV0pICsgMTsKLSsgICAgICBpbnQgbGVuOwotKwotKyAgICAgIGlmIChmcm9tLT5idHlwZXZlY1tpXSA9PSBOVUxMKQotKwl7Ci0rCSAgdG8tPmJ0eXBldmVjW2ldID0gTlVMTDsKLSsJICBjb250aW51ZTsKLSsJfQotIAotKyAgICAgIGxlbiA9IHN0cmxlbiAoZnJvbS0+YnR5cGV2ZWNbaV0pICsgMTsKLSAgICAgICB0by0+YnR5cGV2ZWNbaV0gPSBYTkVXVkVDIChjaGFyICwgbGVuKTsKLSAgICAgICBtZW1jcHkgKHRvLT5idHlwZXZlY1tpXSwgZnJvbS0+YnR5cGV2ZWNbaV0sIGxlbik7Ci0gICAgIH0KLUBAIC0xNDAxLDYgKzE0MTgsNyBAQCBkZWxldGVfbm9uX0JfS193b3JrX3N0dWZmIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaykKLSAKLSAgICAgICBmcmVlICgoY2hhciopIHdvcmstPnRtcGxfYXJndmVjKTsKLSAgICAgICB3b3JrLT50bXBsX2FyZ3ZlYyA9IE5VTEw7Ci0rICAgICAgd29yay0+bnRtcGxfYXJncyA9IDA7Ci0gICAgIH0KLSAgIGlmICh3b3JrLT5wcmV2aW91c19hcmd1bWVudCkKLSAgICAgewotQEAgLTQ0NzcsNiArNDQ5NSw3IEBAIHJlbWVtYmVyX0J0eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqc3RhcnQsCi0gfQotIAotIC8qIExvc2UgYWxsIHRoZSBpbmZvIHJlbGF0ZWQgdG8gQiBhbmQgSyB0eXBlIGNvZGVzLiAqLwotKwotIHN0YXRpYyB2b2lkCi0gZm9yZ2V0X0JfYW5kX0tfdHlwZXMgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrKQotIHsKLUBAIC00NTAyLDYgKzQ1MjEsNyBAQCBmb3JnZXRfQl9hbmRfS190eXBlcyAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmspCi0gCX0KLSAgICAgfQotIH0KLSsKLSAvKiBGb3JnZXQgdGhlIHJlbWVtYmVyZWQgdHlwZXMsIGJ1dCBub3QgdGhlIHR5cGUgdmVjdG9yIGl0c2VsZi4gICovCi0gCi0gc3RhdGljIHZvaWQKLUBAIC00Njk2LDYgKzQ3MTYsMTYgQEAgZGVtYW5nbGVfbmVzdGVkX2FyZ3MgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICoqbWFuZ2xlZCwKLSAgIGludCByZXN1bHQ7Ci0gICBpbnQgc2F2ZWRfbnJlcGVhdHM7Ci0gCi0rICBpZiAoKHdvcmstPm9wdGlvbnMgJiBETUdMX05PX1JFQ1VSU0VfTElNSVQpID09IDApCi0rICAgIHsKLSsgICAgICBpZiAod29yay0+cmVjdXJzaW9uX2xldmVsID4gREVNQU5HTEVfUkVDVVJTSU9OX0xJTUlUKQotKwkvKiBGSVhNRTogVGhlcmUgb3VnaHQgdG8gYmUgYSB3YXkgdG8gcmVwb3J0Ci0rCSAgIHRoYXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCBoYXMgYmVlbiByZWFjaGVkLiAgKi8KLSsJcmV0dXJuIDA7Ci0rCi0rICAgICAgd29yay0+cmVjdXJzaW9uX2xldmVsICsrOwotKyAgICB9Ci0rCi0gICAvKiBUaGUgRysrIG5hbWUtbWFuZ2xpbmcgYWxnb3JpdGhtIGRvZXMgbm90IHJlbWVtYmVyIHR5cGVzIG9uIG5lc3RlZAotICAgICAgYXJndW1lbnQgbGlzdHMsIHVubGVzcyAtZnNxdWFuZ2xpbmcgaXMgdXNlZCwgYW5kIGluIHRoYXQgY2FzZSB0aGUKLSAgICAgIHR5cGUgdmVjdG9yIHVwZGF0ZWQgYnkgcmVtZW1iZXJfdHlwZSBpcyBub3QgdXNlZC4gIFNvLCB3ZSB0dXJuCi1AQCAtNDcyMiw2ICs0NzUyLDkgQEAgZGVtYW5nbGVfbmVzdGVkX2FyZ3MgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICoqbWFuZ2xlZCwKLSAgIC0td29yay0+Zm9yZ2V0dGluZ190eXBlczsKLSAgIHdvcmstPm5yZXBlYXRzID0gc2F2ZWRfbnJlcGVhdHM7Ci0gCi0rICBpZiAoKHdvcmstPm9wdGlvbnMgJiBETUdMX05PX1JFQ1VSU0VfTElNSVQpID09IDApCi0rICAgIC0td29yay0+cmVjdXJzaW9uX2xldmVsOwotKwotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDItUFItZGVidWctODY5NjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDQyLVBSLWRlYnVnLTg2OTY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWI1ZDM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDItUFItZGVidWctODY5NjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi1Gcm9tIGJlYjkyMWUxMTA2YjViY2JiMGM2ZTJiZTg0YjI0MTMyN2UyZmZjNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBsYXcgPGxhd0AxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBNb24sIDI1IE1hciAyMDE5IDIxOjE5OjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIAlQUiBkZWJ1Zy84Njk2NCAJKiBkd2FyZjJvdXQuYwotIChwcmVtYXJrX3VzZWRfdmFyaWFibGVzKTogTmV3IGZ1bmN0aW9uLiAJKHBydW5lX3VudXNlZF90eXBlc193YWxrKTogRG8KLSBub3QgbWFyayBub3QgcHJlbWFya2VkIGV4dGVybmFsIAl2YXJpYWJsZXMuIAkocHJ1bmVfdW51c2VkX3R5cGVzKToKLSBDYWxsIHByZW1hcmtfdXNlZF92YXJpYWJsZXMuCi0KLQkqIGdjYy5kZy9kZWJ1Zy9kd2FyZjIvcHI4Njk2NC5jOiBOZXcgdGVzdGNhc2UuCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDI2OTkyNSAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKysKLSBnY2MvZHdhcmYyb3V0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvQ2hhbmdlTG9nIGIvZ2NjL0NoYW5nZUxvZwotaW5kZXggMjA3NTQ4MGNhMmIuLmNkY2U1MzlhYzZmIDEwMDY0NAotLS0tIGEvZ2NjL0NoYW5nZUxvZwotKysrIGIvZ2NjL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTktMDMtMjUgIEpvaGFuIEthcmxzc29uIDxqb2hhbi5rYXJsc3NvbkBlbmVhLmNvbT4KLSsKLSsJUFIgZGVidWcvODY5NjQKLSsJKiBkd2FyZjJvdXQuYyAocHJlbWFya191c2VkX3ZhcmlhYmxlcyk6IE5ldyBmdW5jdGlvbi4KLSsJKHBydW5lX3VudXNlZF90eXBlc193YWxrKTogRG8gbm90IG1hcmsgbm90IHByZW1hcmtlZCBleHRlcm5hbAotKwl2YXJpYWJsZXMuCi0rCShwcnVuZV91bnVzZWRfdHlwZXMpOiBDYWxsIHByZW1hcmtfdXNlZF92YXJpYWJsZXMuCi0rCi0gMjAxOS0wMi0yMiAgUmVsZWFzZSBNYW5hZ2VyCi0gCi0gCSogR0NDIDguMy4wIHJlbGVhc2VkLgotZGlmZiAtLWdpdCBhL2djYy9kd2FyZjJvdXQuYyBiL2djYy9kd2FyZjJvdXQuYwotaW5kZXggYWU4YmRlZTk5ODEuLmI5YTYyNGUxYWM3IDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMm91dC5jCi0rKysgYi9nY2MvZHdhcmYyb3V0LmMKLUBAIC0yMjY1OCw2ICsyMjY1OCwyMSBAQCBwcmVtYXJrX3R5cGVzX3VzZWRfYnlfZ2xvYmFsX3ZhcnMgKHZvaWQpCi0gICAgICAgLT50cmF2ZXJzZTx2b2lkICosIHByZW1hcmtfdHlwZXNfdXNlZF9ieV9nbG9iYWxfdmFyc19oZWxwZXI+IChOVUxMKTsKLSB9Ci0gCi0rLyogTWFyayBhbGwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIHN5bXRhYiBhcyBwZXJlbm5pYWwuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHJlbWFya191c2VkX3ZhcmlhYmxlcyAodm9pZCkKLSt7Ci0rICAvKiBNYXJrIERJRXMgaW4gdGhlIHN5bXRhYiBhcyB1c2VkLiAgKi8KLSsgIHZhcnBvb2xfbm9kZSAqdmFyOwotKyAgRk9SX0VBQ0hfVkFSSUFCTEUgKHZhcikKLSsgICAgewotKyAgICAgIGR3X2RpZV9yZWYgZGllID0gbG9va3VwX2RlY2xfZGllICh2YXItPmRlY2wpOwotKyAgICAgIGlmIChkaWUpCi0rCWRpZS0+ZGllX3BlcmVubmlhbF9wID0gMTsKLSsgICAgfQotK30KLSsKLSAvKiBHZW5lcmF0ZSBhIERXX1RBR19jYWxsX3NpdGUgRElFIGluIGZ1bmN0aW9uIERFQ0wgdW5kZXIgU1VCUl9ESUUKLSAgICBmb3IgQ0FfTE9DIGNhbGwgYXJnIGxvYyBub2RlLiAgKi8KLSAKLUBAIC0yOTI2NCw2ICsyOTI3OSwxOSBAQCBwcnVuZV91bnVzZWRfdHlwZXNfd2FsayAoZHdfZGllX3JlZiBkaWUpCi0gCi0gICAgICAgcmV0dXJuOwotIAotKyAgICBjYXNlIERXX1RBR192YXJpYWJsZToKLSsgICAgICBpZiAoZmxhZ19kZWJ1Z19vbmx5X3VzZWRfc3ltYm9scykKLSsJewotKwkgIGlmIChkaWUtPmRpZV9wZXJlbm5pYWxfcCkKLSsJICAgIGJyZWFrOwotKwotKwkgIC8qIHByZW1hcmtfdXNlZF92YXJpYWJsZXMgbWFya3MgZXh0ZXJuYWwgdmFyaWFibGVzIC0tLSBkb24ndCBtYXJrCi0rCSAgICAgdGhlbSBoZXJlLiAgKi8KLSsJICBpZiAoZ2V0X0FUIChkaWUsIERXX0FUX2V4dGVybmFsKSkKLSsJICAgIHJldHVybjsKLSsJfQotKyAgICAgIC8qIEZBTExUSFJPVUdIICovCi0rCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgLyogTWFyayBldmVyeXRoaW5nIGVsc2UuICAqLwotICAgICAgIGJyZWFrOwotQEAgLTI5MzkwLDYgKzI5NDE4LDEwIEBAIHBydW5lX3VudXNlZF90eXBlcyAodm9pZCkKLSAgIC8qIE1hcmsgdHlwZXMgdGhhdCBhcmUgdXNlZCBpbiBnbG9iYWwgdmFyaWFibGVzLiAgKi8KLSAgIHByZW1hcmtfdHlwZXNfdXNlZF9ieV9nbG9iYWxfdmFycyAoKTsKLSAKLSsgIC8qIE1hcmsgdmFyaWFibGVzIHVzZWQgaW4gdGhlIHN5bXRhYi4gICovCi0rICBpZiAoZmxhZ19kZWJ1Z19vbmx5X3VzZWRfc3ltYm9scykKLSsgICAgcHJlbWFya191c2VkX3ZhcmlhYmxlcyAoKTsKLSsKLSAgIC8qIFNldCB0aGUgbWFyayBvbiBub2RlcyB0aGF0IGFyZSBhY3R1YWxseSB1c2VkLiAgKi8KLSAgIHBydW5lX3VudXNlZF90eXBlc193YWxrIChjb21wX3VuaXRfZGllICgpKTsKLSAgIGZvciAobm9kZSA9IGxpbWJvX2RpZV9saXN0OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCkKLS0tIAotMi4yMS4wCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDQzLVBSODU0MzQtUHJldmVudC1zcGlsbGluZy1vZi1zdGFjay1wcm90ZWN0b3ItZ3VhcmQtcy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDQzLVBSODU0MzQtUHJldmVudC1zcGlsbGluZy1vZi1zdGFjay1wcm90ZWN0b3ItZ3VhcmQtcy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNTIwN2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDA0My1QUjg1NDM0LVByZXZlbnQtc3BpbGxpbmctb2Ytc3RhY2stcHJvdGVjdG9yLWd1YXJkLXMtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEzICswLDAgQEAKLUZyb20gZjk4NDk1ZDkwYmE2NmY2N2ZlOTIyYTRiOTIyOWVhNzg3MDQxYzQxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHRob3ByZTAxIDx0aG9wcmUwMUAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUaHUsIDIyIE5vdiAyMDE4IDE0OjQ2OjE3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSODU0MzQ6IFByZXZlbnQgc3BpbGxpbmcgb2Ygc3RhY2sgcHJvdGVjdG9yIGd1YXJkJ3MgYWRkcmVzcwotIG9uIEFSTQotCi1JbiBjYXNlIG9mIGhpZ2ggcmVnaXN0ZXIgcHJlc3N1cmUgaW4gUElDIG1vZGUsIGFkZHJlc3Mgb2YgdGhlIHN0YWNrCi1wcm90ZWN0b3IncyBndWFyZCBjYW4gYmUgc3BpbGxlZCBvbiBBUk0gdGFyZ2V0cyBhcyBzaG93biBpbiBQUjg1NDM0LAotdGh1cyBhbGxvd2luZyBhbiBhdHRhY2tlciB0byBjb250cm9sIHdoYXQgdGhlIGNhbmFyeSB3b3VsZCBiZSBjb21wYXJlZAotYWdhaW5zdC4gQVJNIGRvZXMgbGFjayBzdGFja19wcm90ZWN0X3NldCBhbmQgc3RhY2tfcHJvdGVjdF90ZXN0IGluc24KLXBhdHRlcm5zLCBkZWZpbmluZyB0aGVtIGRvZXMgbm90IGhlbHAgYXMgdGhlIGFkZHJlc3MgaXMgZXhwYW5kZWQKLXJlZ3VsYXJseSBhbmQgdGhlIHBhdHRlcm5zIG9ubHkgZGVhbCB3aXRoIHRoZSBjb3B5IGFuZCB0ZXN0IG9mIHRoZQotZ3VhcmQgd2l0aCB0aGUgY2FuYXJ5LgotCi1UaGlzIHByb2JsZW0gZG9lcyBub3Qgb2NjdXIgZm9yIHg4NiB0YXJnZXRzIGJlY2F1c2UgdGhlIFBJQyBhY2Nlc3MgYW5kCi10aGUgdGVzdCBjYW4gYmUgZG9uZSBpbiB0aGUgc2FtZSBpbnN0cnVjdGlvbi4gQWFyY2g2NCBpcyBleGVtcHQgdG9vCi1iZWNhdXNlIFBJQyBhY2Nlc3MgaW5zbiBwYXR0ZXJuIGFyZSBtb3Ygb2YgVU5TUEVDIHdoaWNoIHByZXZlbnRzIGl0IGZyb20KLXRoZSBzZWNvbmQgYWNjZXNzIGluIHRoZSBlcGlsb2d1ZSBiZWluZyBDU0VkIGluIGNzZV9sb2NhbCBwYXNzIHdpdGggdGhlCi1maXJzdCBhY2Nlc3MgaW4gdGhlIHByb2xvZ3VlLgotCi1UaGUgYXBwcm9hY2ggZm9sbG93ZWQgaGVyZSBpcyB0byBjcmVhdGUgbmV3ICJjb21iaW5lZCIgc2V0IGFuZCB0ZXN0Ci1zdGFuZGFyZCBwYXR0ZXJuIG5hbWVzIHRoYXQgdGFrZSB0aGUgdW5leHBhbmRlZCBndWFyZCBhbmQgZG8gdGhlIHNldCBvcgotdGVzdC4gVGhpcyBhbGxvd3MgdGhlIHRhcmdldCB0byB1c2UgYW4gb3BhcXVlIHBhdHRlcm4gKGVnLiB1c2luZyBVTlNQRUMpCi10byBoaWRlIHRoZSBpbmRpdmlkdWFsIGluc3RydWN0aW9ucyBiZWluZyBnZW5lcmF0ZWQgdG8gdGhlIGNvbXBpbGVyIGFuZAotc3BsaXQgdGhlIHBhdHRlcm4gaW50byBnZW5lcmljIGxvYWQsIGNvbXBhcmUgYW5kIGJyYW5jaCBpbnN0cnVjdGlvbgotYWZ0ZXIgcmVnaXN0ZXIgYWxsb2NhdG9yLCB0aGVyZWZvcmUgYXZvaWRpbmcgYW55IHNwaWxsaW5nLiBUaGlzIGlzIGhlcmUKLWltcGxlbWVudGVkIGZvciB0aGUgQVJNIHRhcmdldHMuIEZvciB0YXJnZXRzIG5vdCBpbXBsZW1lbnRpbmcgdGhlc2UgbmV3Ci1zdGFuZGFyZCBwYXR0ZXJuIG5hbWVzLCB0aGUgZXhpc3Rpbmcgc3RhY2tfcHJvdGVjdF9zZXQgYW5kCi1zdGFja19wcm90ZWN0X3Rlc3QgcGF0dGVybiBuYW1lcyBhcmUgdXNlZC4KLQotVG8gYmUgYWJsZSB0byBzcGxpdCBQSUMgYWNjZXNzIGFmdGVyIHJlZ2lzdGVyIGFsbG9jYXRpb24sIHRoZSBmdW5jdGlvbnMKLWhhZCB0byBiZSBhdWdtZW50ZWQgdG8gZm9yY2UgYSBuZXcgUElDIHJlZ2lzdGVyIGxvYWQgYW5kIHRvIGNvbnRyb2wKLXdoaWNoIHJlZ2lzdGVyIGl0IGxvYWRzIGludG8uIFRoaXMgaXMgYmVjYXVzZSBzaGFyaW5nIHRoZSBQSUMgcmVnaXN0ZXIKLWJldHdlZW4gcHJvbG9ndWUgYW5kIGVwaWxvZ3VlIGNvdWxkIGxlYWQgdG8gc3BpbGxpbmcgZHVlIHRvIENTRSBhZ2Fpbgotd2hpY2ggYW4gYXR0YWNrZXIgY291bGQgdXNlIHRvIGNvbnRyb2wgd2hhdCB0aGUgY2FuYXJ5IGdldHMgY29tcGFyZWQKLWFnYWluc3QuCi0KLTIwMTgtMTEtMjIgIFRob21hcyBQcmV1ZCdob21tZSAgPHRob21hcy5wcmV1ZGhvbW1lQGxpbmFyby5vcmc+Ci0KLSAgICBnY2MvCi0gICAgUFIgdGFyZ2V0Lzg1NDM0Ci0gICAgKiB0YXJnZXQtaW5zbnMuZGVmIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCk6IERlZmluZSBuZXcgc3RhbmRhcmQKLSAgICBwYXR0ZXJuIG5hbWUuCi0gICAgKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdCk6IExpa2V3aXNlLgotICAgICogY2ZnZXhwYW5kLmMgKHN0YWNrX3Byb3RlY3RfcHJvbG9ndWUpOiBUcnkgbmV3Ci0gICAgc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQgcGF0dGVybiBmaXJzdC4KLSAgICAqIGZ1bmN0aW9uLmMgKHN0YWNrX3Byb3RlY3RfZXBpbG9ndWUpOiBUcnkgbmV3Ci0gICAgc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0IHBhdHRlcm4gZmlyc3QuCi0gICAgKiBjb25maWcvYXJtL2FybS5jIChyZXF1aXJlX3BpY19yZWdpc3Rlcik6IEFkZCBwaWNfcmVnIGFuZCBjb21wdXRlX25vdwotICAgIHBhcmFtZXRlcnMgdG8gY29udHJvbCB3aGljaCByZWdpc3RlciB0byB1c2UgYXMgUElDIHJlZ2lzdGVyIGFuZCBmb3JjZQotICAgIHJlbG9hZGluZyBQSUMgcmVnaXN0ZXIgcmVzcGVjdGl2ZWx5LiAgSW5zZXJ0IGluIHRoZSBzdHJlYW0gb2YgaW5zbnMgaWYKLSAgICBwb3NzaWJsZS4KLSAgICAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IEV4cG9zZSBhYm92ZSBuZXcgcGFyYW1ldGVycyBpbiBwcm90b3R5cGUgYW5kCi0gICAgYWRhcHQgcmVjdXJzaXZlIGNhbGxzIGFjY29yZGluZ2x5LiAgVXNlIHBpY19yZWcgaWYgbm9uIG51bGwgaW5zdGVhZCBvZgotICAgIGNhY2hlZCBvbmUuCi0gICAgKGFybV9sb2FkX3BpY19yZWdpc3Rlcik6IEFkZCBwaWNfcmVnIHBhcmFtZXRlciBhbmQgdXNlIGl0IGlmIG5vbiBudWxsLgotICAgIChhcm1fbGVnaXRpbWl6ZV9hZGRyZXNzKTogQWRhcHQgdG8gbmV3IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MKLSAgICBwcm90b3R5cGUuCi0gICAgKHRodW1iX2xlZ2l0aW1pemVfYWRkcmVzcyk6IExpa2V3aXNlLgotICAgIChhcm1fZW1pdF9jYWxsX2luc24pOiBBZGFwdCB0byByZXF1aXJlX3BpY19yZWdpc3RlciBwcm90b3R5cGUgY2hhbmdlLgotICAgIChhcm1fZXhwYW5kX3Byb2xvZ3VlKTogQWRhcHQgdG8gYXJtX2xvYWRfcGljX3JlZ2lzdGVyIHByb3RvdHlwZSBjaGFuZ2UuCi0gICAgKHRodW1iMV9leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4KLSAgICAqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogQWRhcHQgdG8gcHJvdG90eXBlCi0gICAgY2hhbmdlLgotICAgIChhcm1fbG9hZF9waWNfcmVnaXN0ZXIpOiBMaWtld2lzZS4KLSAgICAqIGNvbmZpZy9hcm0vcHJlZGljYXRlZC5tZCAoZ3VhcmRfYWRkcl9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KLSAgICAoZ3VhcmRfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCi0gICAgKiBjb25maWcvYXJtL2FybS5tZCAobW92c2kgZXhwYW5kZXIpOiBBZGFwdCB0byBsZWdpdGltaXplX3BpY19hZGRyZXNzCi0gICAgcHJvdG90eXBlIGNoYW5nZS4KLSAgICAoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIgZXhwYW5kZXIpOiBBZGFwdCB0byB0aHVtYjFfZXhwYW5kX3Byb2xvZ3VlCi0gICAgcHJvdG90eXBlIGNoYW5nZS4KLSAgICAoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQpOiBOZXcgZXhwYW5kZXIuLgotICAgIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldF9pbnNuKTogTmV3IGluc25fYW5kX3NwbGl0IHBhdHRlcm4uCi0gICAgKHN0YWNrX3Byb3RlY3Rfc2V0X2luc24pOiBOZXcgaW5zbiBwYXR0ZXJuLgotICAgIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QpOiBOZXcgZXhwYW5kZXIuCi0gICAgKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdF9pbnNuKTogTmV3IGluc25fYW5kX3NwbGl0IHBhdHRlcm4uCi0gICAgKGFybV9zdGFja19wcm90ZWN0X3Rlc3RfaW5zbik6IE5ldyBpbnNuIHBhdHRlcm4uCi0gICAgKiBjb25maWcvYXJtL3RodW1iMS5tZCAodGh1bWIxX3N0YWNrX3Byb3RlY3RfdGVzdF9pbnNuKTogTmV3IGluc24gcGF0dGVybi4KLSAgICAqIGNvbmZpZy9hcm0vdW5zcGVjcy5tZCAoVU5TUEVDX1NQX1NFVCk6IE5ldyB1bnNwZWMuCi0gICAgKFVOU1BFQ19TUF9URVNUKTogTGlrZXdpc2UuCi0gICAgKiBkb2MvbWQudGV4aSAoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQpOiBEb2N1bWVudCBuZXcgc3RhbmRhcmQKLSAgICBwYXR0ZXJuIG5hbWUuCi0gICAgKHN0YWNrX3Byb3RlY3Rfc2V0KTogQ2xhcmlmeSB0aGF0IHRoZSBvcGVyYW5kIGZvciBndWFyZCdzIGFkZHJlc3MgaXMKLSAgICBsZWdhbC4KLSAgICAoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0KTogRG9jdW1lbnQgbmV3IHN0YW5kYXJkIHBhdHRlcm4gbmFtZS4KLSAgICAoc3RhY2tfcHJvdGVjdF90ZXN0KTogQ2xhcmlmeSB0aGF0IHRoZSBvcGVyYW5kIGZvciBndWFyZCdzIGFkZHJlc3MgaXMKLSAgICBsZWdhbC4KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyNjYzNzkgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTgtMTI4ODYKLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysrKysKLSBnY2MvY2ZnZXhwYW5kLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArKysKLSBnY2MvY29uZmlnL2FybS9hcm0tcHJvdG9zLmggICAgICAgICAgICB8ICAgNCArLQotIGdjYy9jb25maWcvYXJtL2FybS5jICAgICAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKysrLS0tCi0gZ2NjL2NvbmZpZy9hcm0vYXJtLm1kICAgICAgICAgICAgICAgICAgfCAxNjMgKysrKysrKysrKysrKysrKysrKy0KLSBnY2MvY29uZmlnL2FybS9wcmVkaWNhdGVzLm1kICAgICAgICAgICB8ICAxNyArKysKLSBnY2MvY29uZmlnL2FybS90aHVtYjEubWQgICAgICAgICAgICAgICB8ICAxMyArKwotIGdjYy9jb25maWcvYXJtL3Vuc3BlY3MubWQgICAgICAgICAgICAgIHwgICAzICsKLSBnY2MvZG9jL21kLnRleGkgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NSArKysrKystCi0gZ2NjL2Z1bmN0aW9uLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzIgKysrLQotIGdjYy90YXJnZXQtaW5zbnMuZGVmICAgICAgICAgICAgICAgICAgIHwgICAyICsKLSAxMSBmaWxlcyBjaGFuZ2VkLCAzOTkgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcHI4NTQzNC5jCi0KLWRpZmYgLS1naXQgYS9nY2MvQ2hhbmdlTG9nIGIvZ2NjL0NoYW5nZUxvZwotaW5kZXggZTJlYmZkMzQyMTQuLmZhNDFlNzExMmUwIDEwMDY0NAotLS0tIGEvZ2NjL0NoYW5nZUxvZwotKysrIGIvZ2NjL0NoYW5nZUxvZwotQEAgLTE1MzcsNiArMTUzNyw1NSBAQAotIAkqIGNvbmZpZy9hcm0vbmVvbi5tZCAobW92djRoZiwgbW92djhoZik6IFJlZmFjdG9yZWQgdG8uLgotIAkobW92PG1vdj4pOiAuLnRoaXMgYW5kIGVuYWJsZSB1bmNvbmRpdGlvbmFsbHkuCi0gCi0rMjAxOC0xMS0yMiAgVGhvbWFzIFByZXVkJ2hvbW1lICA8dGhvbWFzLnByZXVkaG9tbWVAbGluYXJvLm9yZz4KLSsKLSsJKiB0YXJnZXQtaW5zbnMuZGVmIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCk6IERlZmluZSBuZXcgc3RhbmRhcmQKLSsJcGF0dGVybiBuYW1lLgotKwkoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0KTogTGlrZXdpc2UuCi0rCSogY2ZnZXhwYW5kLmMgKHN0YWNrX3Byb3RlY3RfcHJvbG9ndWUpOiBUcnkgbmV3Ci0rCXN0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0IHBhdHRlcm4gZmlyc3QuCi0rCSogZnVuY3Rpb24uYyAoc3RhY2tfcHJvdGVjdF9lcGlsb2d1ZSk6IFRyeSBuZXcKLSsJc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0IHBhdHRlcm4gZmlyc3QuCi0rCSogY29uZmlnL2FybS9hcm0uYyAocmVxdWlyZV9waWNfcmVnaXN0ZXIpOiBBZGQgcGljX3JlZyBhbmQgY29tcHV0ZV9ub3cKLSsJcGFyYW1ldGVycyB0byBjb250cm9sIHdoaWNoIHJlZ2lzdGVyIHRvIHVzZSBhcyBQSUMgcmVnaXN0ZXIgYW5kIGZvcmNlCi0rCXJlbG9hZGluZyBQSUMgcmVnaXN0ZXIgcmVzcGVjdGl2ZWx5LiAgSW5zZXJ0IGluIHRoZSBzdHJlYW0gb2YgaW5zbnMgaWYKLSsJcG9zc2libGUuCi0rCShsZWdpdGltaXplX3BpY19hZGRyZXNzKTogRXhwb3NlIGFib3ZlIG5ldyBwYXJhbWV0ZXJzIGluIHByb3RvdHlwZSBhbmQKLSsJYWRhcHQgcmVjdXJzaXZlIGNhbGxzIGFjY29yZGluZ2x5LiAgVXNlIHBpY19yZWcgaWYgbm9uIG51bGwgaW5zdGVhZCBvZgotKwljYWNoZWQgb25lLgotKwkoYXJtX2xvYWRfcGljX3JlZ2lzdGVyKTogQWRkIHBpY19yZWcgcGFyYW1ldGVyIGFuZCB1c2UgaXQgaWYgbm9uIG51bGwuCi0rCShhcm1fbGVnaXRpbWl6ZV9hZGRyZXNzKTogQWRhcHQgdG8gbmV3IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MKLSsJcHJvdG90eXBlLgotKwkodGh1bWJfbGVnaXRpbWl6ZV9hZGRyZXNzKTogTGlrZXdpc2UuCi0rCShhcm1fZW1pdF9jYWxsX2luc24pOiBBZGFwdCB0byByZXF1aXJlX3BpY19yZWdpc3RlciBwcm90b3R5cGUgY2hhbmdlLgotKwkoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IEFkYXB0IHRvIGFybV9sb2FkX3BpY19yZWdpc3RlciBwcm90b3R5cGUgY2hhbmdlLgotKwkodGh1bWIxX2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgotKwkqIGNvbmZpZy9hcm0vYXJtLXByb3Rvcy5oIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogQWRhcHQgdG8gcHJvdG90eXBlCi0rCWNoYW5nZS4KLSsJKGFybV9sb2FkX3BpY19yZWdpc3Rlcik6IExpa2V3aXNlLgotKwkqIGNvbmZpZy9hcm0vcHJlZGljYXRlZC5tZCAoZ3VhcmRfYWRkcl9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KLSsJKGd1YXJkX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgotKwkqIGNvbmZpZy9hcm0vYXJtLm1kIChtb3ZzaSBleHBhbmRlcik6IEFkYXB0IHRvIGxlZ2l0aW1pemVfcGljX2FkZHJlc3MKLSsJcHJvdG90eXBlIGNoYW5nZS4KLSsJKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyIGV4cGFuZGVyKTogQWRhcHQgdG8gdGh1bWIxX2V4cGFuZF9wcm9sb2d1ZQotKwlwcm90b3R5cGUgY2hhbmdlLgotKwkoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQpOiBOZXcgZXhwYW5kZXIuLgotKwkoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXRfaW5zbik6IE5ldyBpbnNuX2FuZF9zcGxpdCBwYXR0ZXJuLgotKwkoc3RhY2tfcHJvdGVjdF9zZXRfaW5zbik6IE5ldyBpbnNuIHBhdHRlcm4uCi0rCShzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QpOiBOZXcgZXhwYW5kZXIuCi0rCShzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3RfaW5zbik6IE5ldyBpbnNuX2FuZF9zcGxpdCBwYXR0ZXJuLgotKwkoYXJtX3N0YWNrX3Byb3RlY3RfdGVzdF9pbnNuKTogTmV3IGluc24gcGF0dGVybi4KLSsJKiBjb25maWcvYXJtL3RodW1iMS5tZCAodGh1bWIxX3N0YWNrX3Byb3RlY3RfdGVzdF9pbnNuKTogTmV3IGluc24gcGF0dGVybi4KLSsJKiBjb25maWcvYXJtL3Vuc3BlY3MubWQgKFVOU1BFQ19TUF9TRVQpOiBOZXcgdW5zcGVjLgotKwkoVU5TUEVDX1NQX1RFU1QpOiBMaWtld2lzZS4KLSsJKiBkb2MvbWQudGV4aSAoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQpOiBEb2N1bWVudCBuZXcgc3RhbmRhcmQKLSsJcGF0dGVybiBuYW1lLgotKwkoc3RhY2tfcHJvdGVjdF9zZXQpOiBDbGFyaWZ5IHRoYXQgdGhlIG9wZXJhbmQgZm9yIGd1YXJkJ3MgYWRkcmVzcyBpcwotKwlsZWdhbC4KLSsJKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdCk6IERvY3VtZW50IG5ldyBzdGFuZGFyZCBwYXR0ZXJuIG5hbWUuCi0rCShzdGFja19wcm90ZWN0X3Rlc3QpOiBDbGFyaWZ5IHRoYXQgdGhlIG9wZXJhbmQgZm9yIGd1YXJkJ3MgYWRkcmVzcyBpcwotKwlsZWdhbC4KLSsKLSAyMDE4LTExLTIyICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgotIAotIAlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi1kaWZmIC0tZ2l0IGEvZ2NjL2NmZ2V4cGFuZC5jIGIvZ2NjL2NmZ2V4cGFuZC5jCi1pbmRleCA4ZmEzOTJmY2Q4YS4uMjFiZGNkYWVhYTMgMTAwNjQ0Ci0tLS0gYS9nY2MvY2ZnZXhwYW5kLmMKLSsrKyBiL2djYy9jZmdleHBhbmQuYwotQEAgLTYxODUsNiArNjE4NSwyMyBAQCBzdGFja19wcm90ZWN0X3Byb2xvZ3VlICh2b2lkKQotICAgcnR4IHgsIHk7Ci0gCi0gICB4ID0gZXhwYW5kX25vcm1hbCAoY3J0bC0+c3RhY2tfcHJvdGVjdF9ndWFyZCk7Ci0rCi0rICBpZiAodGFyZ2V0bS5oYXZlX3N0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0ICgpICYmIGd1YXJkX2RlY2wpCi0rICAgIHsKLSsgICAgICBnY2NfYXNzZXJ0IChERUNMX1AgKGd1YXJkX2RlY2wpKTsKLSsgICAgICB5ID0gREVDTF9SVEwgKGd1YXJkX2RlY2wpOwotKwotKyAgICAgIC8qIEFsbG93IHRoZSB0YXJnZXQgdG8gY29tcHV0ZSBhZGRyZXNzIG9mIFkgYW5kIGNvcHkgaXQgdG8gWCB3aXRob3V0Ci0rCSBsZWFraW5nIFkgaW50byBhIHJlZ2lzdGVyLiAgVGhpcyBjb21iaW5lZCBhZGRyZXNzICsgY29weSBwYXR0ZXJuCi0rCSBhbGxvd3MgdGhlIHRhcmdldCB0byBwcmV2ZW50IHNwaWxsaW5nIG9mIGFueSBpbnRlcm1lZGlhdGUgcmVzdWx0cyBieQotKwkgc3BsaXR0aW5nIGl0IGFmdGVyIHJlZ2lzdGVyIGFsbG9jYXRvci4gICovCi0rICAgICAgaWYgKHJ0eF9pbnNuICppbnNuID0gdGFyZ2V0bS5nZW5fc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQgKHgsIHkpKQotKwl7Ci0rCSAgZW1pdF9pbnNuIChpbnNuKTsKLSsJICByZXR1cm47Ci0rCX0KLSsgICAgfQotKwotICAgaWYgKGd1YXJkX2RlY2wpCi0gICAgIHkgPSBleHBhbmRfbm9ybWFsIChndWFyZF9kZWNsKTsKLSAgIGVsc2UKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0tcHJvdG9zLmggYi9nY2MvY29uZmlnL2FybS9hcm0tcHJvdG9zLmgKLWluZGV4IDhkNmQyMzk1Yjg0Li4wMGY1ZjE2ZWQwMiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2FybS1wcm90b3MuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLXByb3Rvcy5oCi1AQCAtMjgsNyArMjgsNyBAQCBleHRlcm4gZW51bSB1bndpbmRfaW5mb190eXBlIGFybV9leGNlcHRfdW53aW5kX2luZm8gKHN0cnVjdCBnY2Nfb3B0aW9ucyAqKTsKLSBleHRlcm4gaW50IHVzZV9yZXR1cm5faW5zbiAoaW50LCBydHgpOwotIGV4dGVybiBib29sIHVzZV9zaW1wbGVfcmV0dXJuX3AgKHZvaWQpOwotIGV4dGVybiBlbnVtIHJlZ19jbGFzcyBhcm1fcmVnbm9fY2xhc3MgKGludCk7Ci0tZXh0ZXJuIHZvaWQgYXJtX2xvYWRfcGljX3JlZ2lzdGVyICh1bnNpZ25lZCBsb25nKTsKLStleHRlcm4gdm9pZCBhcm1fbG9hZF9waWNfcmVnaXN0ZXIgKHVuc2lnbmVkIGxvbmcsIHJ0eCk7Ci0gZXh0ZXJuIGludCBhcm1fdm9sYXRpbGVfZnVuYyAodm9pZCk7Ci0gZXh0ZXJuIHZvaWQgYXJtX2V4cGFuZF9wcm9sb2d1ZSAodm9pZCk7Ci0gZXh0ZXJuIHZvaWQgYXJtX2V4cGFuZF9lcGlsb2d1ZSAoYm9vbCk7Ci1AQCAtNjksNyArNjksNyBAQCBleHRlcm4gaW50IGNvbnN0X29rX2Zvcl9kaW1vZGVfb3AgKEhPU1RfV0lERV9JTlQsIGVudW0gcnR4X2NvZGUpOwotIGV4dGVybiBpbnQgYXJtX3NwbGl0X2NvbnN0YW50IChSVFhfQ09ERSwgbWFjaGluZV9tb2RlLCBydHgsCi0gCQkJICAgICAgIEhPU1RfV0lERV9JTlQsIHJ0eCwgcnR4LCBpbnQpOwotIGV4dGVybiBpbnQgbGVnaXRpbWF0ZV9waWNfb3BlcmFuZF9wIChydHgpOwotLWV4dGVybiBydHggbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAocnR4LCBtYWNoaW5lX21vZGUsIHJ0eCk7Ci0rZXh0ZXJuIHJ0eCBsZWdpdGltaXplX3BpY19hZGRyZXNzIChydHgsIG1hY2hpbmVfbW9kZSwgcnR4LCBydHgsIGJvb2wpOwotIGV4dGVybiBydHggbGVnaXRpbWl6ZV90bHNfYWRkcmVzcyAocnR4LCBydHgpOwotIGV4dGVybiBib29sIGFybV9sZWdpdGltYXRlX2FkZHJlc3NfcCAobWFjaGluZV9tb2RlLCBydHgsIGJvb2wpOwotIGV4dGVybiBpbnQgYXJtX2xlZ2l0aW1hdGVfYWRkcmVzc19vdXRlcl9wIChtYWNoaW5lX21vZGUsIHJ0eCwgUlRYX0NPREUsIGludCk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMgYi9nY2MvY29uZmlnL2FybS9hcm0uYwotaW5kZXggODM5M2YwYjg3ZjMuLjEyNDE3ZGU1MTAyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKLSsrKyBiL2djYy9jb25maWcvYXJtL2FybS5jCi1AQCAtNzM3OSwyMSArNzM3OSwzNCBAQCBsZWdpdGltYXRlX3BpY19vcGVyYW5kX3AgKHJ0eCB4KQotICAgcmV0dXJuIDE7Ci0gfQotIAotLS8qIFJlY29yZCB0aGF0IHRoZSBjdXJyZW50IGZ1bmN0aW9uIG5lZWRzIGEgUElDIHJlZ2lzdGVyLiAgSW5pdGlhbGl6ZQotLSAgIGNmdW4tPm1hY2hpbmUtPnBpY19yZWcgaWYgd2UgaGF2ZSBub3QgYWxyZWFkeSBkb25lIHNvLiAgKi8KLSsvKiBSZWNvcmQgdGhhdCB0aGUgY3VycmVudCBmdW5jdGlvbiBuZWVkcyBhIFBJQyByZWdpc3Rlci4gIElmIFBJQ19SRUcgaXMgbnVsbCwKLSsgICBhIG5ldyBwc2V1ZG8gaXMgYWxsb2NhdGVkIGFzIFBJQyByZWdpc3Rlciwgb3RoZXJ3aXNlIFBJQ19SRUcgaXMgdXNlZC4gIEluCi0rICAgYm90aCBjYXNlIGNmdW4tPm1hY2hpbmUtPnBpY19yZWcgaXMgaW5pdGlhbGl6ZWQgaWYgd2UgaGF2ZSBub3QgYWxyZWFkeSBkb25lCi0rICAgc28uICBDT01QVVRFX05PVyBkZWNpZGUgd2hldGhlciBhbmQgd2hlcmUgdG8gc2V0IHRoZSBQSUMgcmVnaXN0ZXIuICBJZiB0cnVlLAotKyAgIFBJQyByZWdpc3RlciBpcyByZWxvYWRlZCBpbiB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtCi0rICAgaXJyZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgd2FzIGxvYWRlZCBiZWZvcmUuICBPdGhlcndpc2UsIGl0IGlzIG9ubHkgbG9hZGVkCi0rICAgaWYgbm90IGFscmVhZHkgZG9uZSBzbyAoY3J0bC0+dXNlc19waWNfb2Zmc2V0X3RhYmxlIGlzIG51bGwpLiAgTm90ZSB0aGF0Ci0rICAgbm9ubnVsbCBQSUNfUkVHIGlzIG9ubHkgc3VwcG9ydGVkIGlmZiBDT01QVVRFX05PVyBpcyB0cnVlIGFuZCBudWxsIFBJQ19SRUcKLSsgICBpcyBvbmx5IHN1cHBvcnRlZCBpZmYgQ09NUFVURV9OT1cgaXMgZmFsc2UuICAqLwotIAotIHN0YXRpYyB2b2lkCi0tcmVxdWlyZV9waWNfcmVnaXN0ZXIgKHZvaWQpCi0rcmVxdWlyZV9waWNfcmVnaXN0ZXIgKHJ0eCBwaWNfcmVnLCBib29sIGNvbXB1dGVfbm93KQotIHsKLSsgIGdjY19hc3NlcnQgKGNvbXB1dGVfbm93ID09IChwaWNfcmVnICE9IE5VTExfUlRYKSk7Ci0rCi0gICAvKiBBIGxvdCBvZiB0aGUgbG9naWMgaGVyZSBpcyBtYWRlIG9ic2N1cmUgYnkgdGhlIGZhY3QgdGhhdCB0aGlzCi0gICAgICByb3V0aW5lIGdldHMgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIHJ0eCBjb3N0IGVzdGltYXRpb24gcHJvY2Vzcy4KLSAgICAgIFdlIGRvbid0IHdhbnQgdGhvc2UgY2FsbHMgdG8gYWZmZWN0IGFueSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmVhbAotICAgICAgZnVuY3Rpb247IGFuZCBmdXJ0aGVyLCB3ZSBjYW4ndCBjYWxsIGVudHJ5X29mX2Z1bmN0aW9uKCkgdW50aWwgd2UKLSAgICAgIHN0YXJ0IHRoZSByZWFsIGV4cGFuc2lvbiBwcm9jZXNzLiAgKi8KLS0gIGlmICghY3J0bC0+dXNlc19waWNfb2Zmc2V0X3RhYmxlKQotKyAgaWYgKCFjcnRsLT51c2VzX3BpY19vZmZzZXRfdGFibGUgfHwgY29tcHV0ZV9ub3cpCi0gICAgIHsKLS0gICAgICBnY2NfYXNzZXJ0IChjYW5fY3JlYXRlX3BzZXVkb19wICgpKTsKLSsgICAgICBnY2NfYXNzZXJ0IChjYW5fY3JlYXRlX3BzZXVkb19wICgpCi0rCQkgIHx8IChwaWNfcmVnICE9IE5VTExfUlRYCi0rCQkgICAgICAmJiBSRUdfUCAocGljX3JlZykKLSsJCSAgICAgICYmIEdFVF9NT0RFIChwaWNfcmVnKSA9PSBQbW9kZSkpOwotICAgICAgIGlmIChhcm1fcGljX3JlZ2lzdGVyICE9IElOVkFMSURfUkVHTlVNCi0rCSAgJiYgIWNvbXB1dGVfbm93Ci0gCSAgJiYgIShUQVJHRVRfVEhVTUIxICYmIGFybV9waWNfcmVnaXN0ZXIgPiBMQVNUX0xPX1JFR05VTSkpCi0gCXsKLSAJICBpZiAoIWNmdW4tPm1hY2hpbmUtPnBpY19yZWcpCi1AQCAtNzQwOSw4ICs3NDIyLDEwIEBAIHJlcXVpcmVfcGljX3JlZ2lzdGVyICh2b2lkKQotIAl7Ci0gCSAgcnR4X2luc24gKnNlcSwgKmluc247Ci0gCi0rCSAgaWYgKHBpY19yZWcgPT0gTlVMTF9SVFgpCi0rCSAgICBwaWNfcmVnID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKLSAJICBpZiAoIWNmdW4tPm1hY2hpbmUtPnBpY19yZWcpCi0tCSAgICBjZnVuLT5tYWNoaW5lLT5waWNfcmVnID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKLSsJICAgIGNmdW4tPm1hY2hpbmUtPnBpY19yZWcgPSBwaWNfcmVnOwotIAotIAkgIC8qIFBsYXkgZ2FtZXMgdG8gYXZvaWQgbWFya2luZyB0aGUgZnVuY3Rpb24gYXMgbmVlZGluZyBwaWMKLSAJICAgICBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIGNvc3QtZXN0aW1hdGlvbgotQEAgLTc0MjEsMTEgKzc0MzYsMTIgQEAgcmVxdWlyZV9waWNfcmVnaXN0ZXIgKHZvaWQpCi0gCSAgICAgIHN0YXJ0X3NlcXVlbmNlICgpOwotIAotIAkgICAgICBpZiAoVEFSR0VUX1RIVU1CMSAmJiBhcm1fcGljX3JlZ2lzdGVyICE9IElOVkFMSURfUkVHTlVNCi0tCQkgICYmIGFybV9waWNfcmVnaXN0ZXIgPiBMQVNUX0xPX1JFR05VTSkKLSsJCSAgJiYgYXJtX3BpY19yZWdpc3RlciA+IExBU1RfTE9fUkVHTlVNCi0rCQkgICYmICFjb21wdXRlX25vdykKLSAJCWVtaXRfbW92ZV9pbnNuIChjZnVuLT5tYWNoaW5lLT5waWNfcmVnLAotIAkJCQlnZW5fcnR4X1JFRyAoUG1vZGUsIGFybV9waWNfcmVnaXN0ZXIpKTsKLSAJICAgICAgZWxzZQotLQkJYXJtX2xvYWRfcGljX3JlZ2lzdGVyICgwVUwpOwotKwkJYXJtX2xvYWRfcGljX3JlZ2lzdGVyICgwVUwsIHBpY19yZWcpOwotIAotIAkgICAgICBzZXEgPSBnZXRfaW5zbnMgKCk7Ci0gCSAgICAgIGVuZF9zZXF1ZW5jZSAoKTsKLUBAIC03NDM4LDE2ICs3NDU0LDMzIEBAIHJlcXVpcmVfcGljX3JlZ2lzdGVyICh2b2lkKQotIAkgICAgICAgICB3ZSBjYW4ndCB5ZXQgZW1pdCBpbnN0cnVjdGlvbnMgZGlyZWN0bHkgaW4gdGhlIGZpbmFsCi0gCQkgaW5zbiBzdHJlYW0uICBRdWV1ZSB0aGUgaW5zbnMgb24gdGhlIGVudHJ5IGVkZ2UsIHRoZXkgd2lsbAotIAkJIGJlIGNvbW1pdHRlZCBhZnRlciBldmVyeXRoaW5nIGVsc2UgaXMgZXhwYW5kZWQuICAqLwotLQkgICAgICBpbnNlcnRfaW5zbl9vbl9lZGdlIChzZXEsCi0tCQkJCSAgIHNpbmdsZV9zdWNjX2VkZ2UgKEVOVFJZX0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pKSk7Ci0rCSAgICAgIGlmIChjdXJyZW50bHlfZXhwYW5kaW5nX3RvX3J0bCkKLSsJCWluc2VydF9pbnNuX29uX2VkZ2UgKHNlcSwKLSsJCQkJICAgICBzaW5nbGVfc3VjY19lZGdlCi0rCQkJCSAgICAgKEVOVFJZX0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pKSk7Ci0rCSAgICAgIGVsc2UKLSsJCWVtaXRfaW5zbiAoc2VxKTsKLSAJICAgIH0KLSAJfQotICAgICB9Ci0gfQotIAotKy8qIExlZ2l0aW1pemUgUElDIGxvYWQgdG8gT1JJRyBpbnRvIFJFRy4gIElmIFJFRyBpcyBOVUxMLCBhIG5ldyBwc2V1ZG8gaXMKLSsgICBjcmVhdGVkIHRvIGhvbGQgdGhlIHJlc3VsdCBvZiB0aGUgbG9hZC4gIElmIG5vdCBOVUxMLCBQSUNfUkVHIGluZGljYXRlcwotKyAgIHdoaWNoIHJlZ2lzdGVyIHRvIHVzZSBhcyBQSUMgcmVnaXN0ZXIsIG90aGVyd2lzZSBpdCBpcyBkZWNpZGVkIGJ5IHJlZ2lzdGVyCi0rICAgYWxsb2NhdG9yLiAgQ09NUFVURV9OT1cgZm9yY2VzIHRoZSBQSUMgcmVnaXN0ZXIgdG8gYmUgbG9hZGVkIGF0IHRoZSBjdXJyZW50Ci0rICAgbG9jYXRpb24gaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbSwgaXJyZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgd2FzIGxvYWRlZAotKyAgIHByZXZpb3VzbHkuICBOb3RlIHRoYXQgbm9ubnVsbCBQSUNfUkVHIGlzIG9ubHkgc3VwcG9ydGVkIGlmZiBDT01QVVRFX05PVyBpcwotKyAgIHRydWUgYW5kIG51bGwgUElDX1JFRyBpcyBvbmx5IHN1cHBvcnRlZCBpZmYgQ09NUFVURV9OT1cgaXMgZmFsc2UuCi0rCi0rICAgUmV0dXJucyB0aGUgcmVnaXN0ZXIgUkVHIGludG8gd2hpY2ggdGhlIFBJQyBsb2FkIGlzIHBlcmZvcm1lZC4gICovCi0rCi0gcnR4Ci0tbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAocnR4IG9yaWcsIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggcmVnKQotK2xlZ2l0aW1pemVfcGljX2FkZHJlc3MgKHJ0eCBvcmlnLCBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IHJlZywgcnR4IHBpY19yZWcsCi0rCQkJYm9vbCBjb21wdXRlX25vdykKLSB7Ci0rICBnY2NfYXNzZXJ0IChjb21wdXRlX25vdyA9PSAocGljX3JlZyAhPSBOVUxMX1JUWCkpOwotKwotICAgaWYgKEdFVF9DT0RFIChvcmlnKSA9PSBTWU1CT0xfUkVGCi0gICAgICAgfHwgR0VUX0NPREUgKG9yaWcpID09IExBQkVMX1JFRikKLSAgICAgewotQEAgLTc0ODAsOSArNzUxMywxMiBAQCBsZWdpdGltaXplX3BpY19hZGRyZXNzIChydHggb3JpZywgbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCByZWcpCi0gCSAgcnR4IG1lbTsKLSAKLSAJICAvKiBJZiB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSBhIHBpYyByZWdpc3RlciwgY3JlYXRlIG9uZSBub3cuICAqLwotLQkgIHJlcXVpcmVfcGljX3JlZ2lzdGVyICgpOwotKwkgIHJlcXVpcmVfcGljX3JlZ2lzdGVyIChwaWNfcmVnLCBjb21wdXRlX25vdyk7Ci0rCi0rCSAgaWYgKHBpY19yZWcgPT0gTlVMTF9SVFgpCi0rCSAgICBwaWNfcmVnID0gY2Z1bi0+bWFjaGluZS0+cGljX3JlZzsKLSAKLS0JICBwYXQgPSBnZW5fY2FsY3VsYXRlX3BpY19hZGRyZXNzIChyZWcsIGNmdW4tPm1hY2hpbmUtPnBpY19yZWcsIG9yaWcpOwotKwkgIHBhdCA9IGdlbl9jYWxjdWxhdGVfcGljX2FkZHJlc3MgKHJlZywgcGljX3JlZywgb3JpZyk7Ci0gCi0gCSAgLyogTWFrZSB0aGUgTUVNIGFzIGNsb3NlIHRvIGEgY29uc3RhbnQgYXMgcG9zc2libGUuICAqLwotIAkgIG1lbSA9IFNFVF9TUkMgKHBhdCk7Ci1AQCAtNzUzMSw5ICs3NTY3LDExIEBAIGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKHJ0eCBvcmlnLCBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IHJlZykKLSAKLSAgICAgICBnY2NfYXNzZXJ0IChHRVRfQ09ERSAoWEVYUCAob3JpZywgMCkpID09IFBMVVMpOwotIAotLSAgICAgIGJhc2UgPSBsZWdpdGltaXplX3BpY19hZGRyZXNzIChYRVhQIChYRVhQIChvcmlnLCAwKSwgMCksIFBtb2RlLCByZWcpOwotKyAgICAgIGJhc2UgPSBsZWdpdGltaXplX3BpY19hZGRyZXNzIChYRVhQIChYRVhQIChvcmlnLCAwKSwgMCksIFBtb2RlLCByZWcsCi0rCQkJCSAgICAgcGljX3JlZywgY29tcHV0ZV9ub3cpOwotICAgICAgIG9mZnNldCA9IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKFhFWFAgKFhFWFAgKG9yaWcsIDApLCAxKSwgUG1vZGUsCi0tCQkJCSAgICAgICBiYXNlID09IHJlZyA/IDAgOiByZWcpOwotKwkJCQkgICAgICAgYmFzZSA9PSByZWcgPyAwIDogcmVnLCBwaWNfcmVnLAotKwkJCQkgICAgICAgY29tcHV0ZV9ub3cpOwotIAotICAgICAgIGlmIChDT05TVF9JTlRfUCAob2Zmc2V0KSkKLSAJewotQEAgLTc2MzMsMTYgKzc2NzEsMTcgQEAgc3RhdGljIEdUWSgoKSkgaW50IHBpY19sYWJlbG5vOwotICAgIGxvdyByZWdpc3Rlci4gICovCi0gCi0gdm9pZAotLWFybV9sb2FkX3BpY19yZWdpc3RlciAodW5zaWduZWQgbG9uZyBzYXZlZF9yZWdzIEFUVFJJQlVURV9VTlVTRUQpCi0rYXJtX2xvYWRfcGljX3JlZ2lzdGVyICh1bnNpZ25lZCBsb25nIHNhdmVkX3JlZ3MgQVRUUklCVVRFX1VOVVNFRCwgcnR4IHBpY19yZWcpCi0gewotLSAgcnR4IGwxLCBsYWJlbG5vLCBwaWNfdG1wLCBwaWNfcnR4LCBwaWNfcmVnOwotKyAgcnR4IGwxLCBsYWJlbG5vLCBwaWNfdG1wLCBwaWNfcnR4OwotIAotICAgaWYgKGNydGwtPnVzZXNfcGljX29mZnNldF90YWJsZSA9PSAwIHx8IFRBUkdFVF9TSU5HTEVfUElDX0JBU0UpCi0gICAgIHJldHVybjsKLSAKLSAgIGdjY19hc3NlcnQgKGZsYWdfcGljKTsKLSAKLS0gIHBpY19yZWcgPSBjZnVuLT5tYWNoaW5lLT5waWNfcmVnOwotKyAgaWYgKHBpY19yZWcgPT0gTlVMTF9SVFgpCi0rICAgIHBpY19yZWcgPSBjZnVuLT5tYWNoaW5lLT5waWNfcmVnOwotICAgaWYgKFRBUkdFVF9WWFdPUktTX1JUUCkKLSAgICAgewotICAgICAgIHBpY19ydHggPSBnZW5fcnR4X1NZTUJPTF9SRUYgKFBtb2RlLCBWWFdPUktTX0dPVFRfQkFTRSk7Ci1AQCAtODcxOCw3ICs4NzU3LDggQEAgYXJtX2xlZ2l0aW1pemVfYWRkcmVzcyAocnR4IHgsIHJ0eCBvcmlnX3gsIG1hY2hpbmVfbW9kZSBtb2RlKQotICAgICB7Ci0gICAgICAgLyogV2UgbmVlZCB0byBmaW5kIGFuZCBjYXJlZnVsbHkgdHJhbnNmb3JtIGFueSBTWU1CT0wgYW5kIExBQkVMCi0gCSByZWZlcmVuY2VzOyBzbyBnbyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBhZGRyZXNzIGV4cHJlc3Npb24uICAqLwotLSAgICAgIHJ0eCBuZXdfeCA9IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKG9yaWdfeCwgbW9kZSwgTlVMTF9SVFgpOwotKyAgICAgIHJ0eCBuZXdfeCA9IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKG9yaWdfeCwgbW9kZSwgTlVMTF9SVFgsIE5VTExfUlRYLAotKwkJCQkJICBmYWxzZSAvKmNvbXB1dGVfbm93Ki8pOwotIAotICAgICAgIGlmIChuZXdfeCAhPSBvcmlnX3gpCi0gCXggPSBuZXdfeDsKLUBAIC04Nzg2LDcgKzg4MjYsOCBAQCB0aHVtYl9sZWdpdGltaXplX2FkZHJlc3MgKHJ0eCB4LCBydHggb3JpZ194LCBtYWNoaW5lX21vZGUgbW9kZSkKLSAgICAgewotICAgICAgIC8qIFdlIG5lZWQgdG8gZmluZCBhbmQgY2FyZWZ1bGx5IHRyYW5zZm9ybSBhbnkgU1lNQk9MIGFuZCBMQUJFTAotIAkgcmVmZXJlbmNlczsgc28gZ28gYmFjayB0byB0aGUgb3JpZ2luYWwgYWRkcmVzcyBleHByZXNzaW9uLiAgKi8KLS0gICAgICBydHggbmV3X3ggPSBsZWdpdGltaXplX3BpY19hZGRyZXNzIChvcmlnX3gsIG1vZGUsIE5VTExfUlRYKTsKLSsgICAgICBydHggbmV3X3ggPSBsZWdpdGltaXplX3BpY19hZGRyZXNzIChvcmlnX3gsIG1vZGUsIE5VTExfUlRYLCBOVUxMX1JUWCwKLSsJCQkJCSAgZmFsc2UgLypjb21wdXRlX25vdyovKTsKLSAKLSAgICAgICBpZiAobmV3X3ggIT0gb3JpZ194KQotIAl4ID0gbmV3X3g7Ci1AQCAtMTgwNzQsNyArMTgxMTUsNyBAQCBhcm1fZW1pdF9jYWxsX2luc24gKHJ0eCBwYXQsIHJ0eCBhZGRyLCBib29sIHNpYmNhbGwpCi0gCSAgPyAhdGFyZ2V0bS5iaW5kc19sb2NhbF9wIChTWU1CT0xfUkVGX0RFQ0wgKGFkZHIpKQotIAkgIDogIVNZTUJPTF9SRUZfTE9DQUxfUCAoYWRkcikpKQotICAgICB7Ci0tICAgICAgcmVxdWlyZV9waWNfcmVnaXN0ZXIgKCk7Ci0rICAgICAgcmVxdWlyZV9waWNfcmVnaXN0ZXIgKE5VTExfUlRYLCBmYWxzZSAvKmNvbXB1dGVfbm93Ki8pOwotICAgICAgIHVzZV9yZWcgKCZDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UgKGluc24pLCBjZnVuLT5tYWNoaW5lLT5waWNfcmVnKTsKLSAgICAgfQotIAotQEAgLTIyMDA2LDcgKzIyMDQ3LDcgQEAgYXJtX2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKLSAgICAgICBtYXNrICY9IFRIVU1CMl9XT1JLX1JFR1M7Ci0gICAgICAgaWYgKCFJU19ORVNURUQgKGZ1bmNfdHlwZSkpCi0gCW1hc2sgfD0gKDEgPDwgSVBfUkVHTlVNKTsKLS0gICAgICBhcm1fbG9hZF9waWNfcmVnaXN0ZXIgKG1hc2spOwotKyAgICAgIGFybV9sb2FkX3BpY19yZWdpc3RlciAobWFzaywgTlVMTF9SVFgpOwotICAgICB9Ci0gCi0gICAvKiBJZiB3ZSBhcmUgcHJvZmlsaW5nLCBtYWtlIHN1cmUgbm8gaW5zdHJ1Y3Rpb25zIGFyZSBzY2hlZHVsZWQgYmVmb3JlCi1AQCAtMjUyMzcsNyArMjUyNzgsNyBAQCB0aHVtYjFfZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQotICAgLyogTG9hZCB0aGUgcGljIHJlZ2lzdGVyIGJlZm9yZSBzZXR0aW5nIHRoZSBmcmFtZSBwb2ludGVyLAotICAgICAgc28gd2UgY2FuIHVzZSByNyBhcyBhIHRlbXBvcmFyeSB3b3JrIHJlZ2lzdGVyLiAgKi8KLSAgIGlmIChmbGFnX3BpYyAmJiBhcm1fcGljX3JlZ2lzdGVyICE9IElOVkFMSURfUkVHTlVNKQotLSAgICBhcm1fbG9hZF9waWNfcmVnaXN0ZXIgKGxpdmVfcmVnc19tYXNrKTsKLSsgICAgYXJtX2xvYWRfcGljX3JlZ2lzdGVyIChsaXZlX3JlZ3NfbWFzaywgTlVMTF9SVFgpOwotIAotICAgaWYgKCFmcmFtZV9wb2ludGVyX25lZWRlZCAmJiBDQUxMRVJfSU5URVJXT1JLSU5HX1NMT1RfU0laRSA+IDApCi0gICAgIGVtaXRfbW92ZV9pbnNuIChnZW5fcnR4X1JFRyAoUG1vZGUsIEFSTV9IQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNKSwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0ubWQgYi9nY2MvY29uZmlnL2FybS9hcm0ubWQKLWluZGV4IGM4ZGM5NDc0YjFiLi5mNjE5NmU5MzE2OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2FybS5tZAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLm1kCi1AQCAtNjAyMSw3ICs2MDIxLDggQEAKLSAgICAgICBvcGVyYW5kc1sxXSA9IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKG9wZXJhbmRzWzFdLCBTSW1vZGUsCi0gCQkJCQkgICAgKCFjYW5fY3JlYXRlX3BzZXVkb19wICgpCi0gCQkJCQkgICAgID8gb3BlcmFuZHNbMF0KLS0JCQkJCSAgICAgOiAwKSk7Ci0rCQkJCQkgICAgIDogTlVMTF9SVFgpLCBOVUxMX1JUWCwKLSsJCQkJCSAgICBmYWxzZSAvKmNvbXB1dGVfbm93Ki8pOwotICAgfQotICAgIgotICkKLUBAIC02MzA5LDcgKzYzMTAsNyBAQAotICAgLyogcjMgaXMgY2xvYmJlcmVkIGJ5IHNldC9sb25nam1wLCBzbyB3ZSBjYW4gdXNlIGl0IGFzIGEgc2NyYXRjaAotICAgICAgcmVnaXN0ZXIuICAqLwotICAgaWYgKGFybV9waWNfcmVnaXN0ZXIgIT0gSU5WQUxJRF9SRUdOVU0pCi0tICAgIGFybV9sb2FkX3BpY19yZWdpc3RlciAoMVVMIDw8IDMpOwotKyAgICBhcm1fbG9hZF9waWNfcmVnaXN0ZXIgKDFVTCA8PCAzLCBOVUxMX1JUWCk7Ci0gICBET05FOwotIH0iKQotIAotQEAgLTg2MzQsNiArODYzNSwxNjQgQEAKLSAgICAoc2V0X2F0dHIgImNvbmRzIiAiY2xvYiIpXQotICkKLSAKLSs7OyBOYW1lZCBwYXR0ZXJucyBmb3Igc3RhY2sgc21hc2hpbmcgcHJvdGVjdGlvbi4KLSsoZGVmaW5lX2V4cGFuZCAic3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQiCi0rICBbKHBhcmFsbGVsCi0rICAgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJtZW1vcnlfb3BlcmFuZCIgIiIpCi0rCSAgICh1bnNwZWM6U0kgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImd1YXJkX29wZXJhbmQiICIiKV0KLSsJCSAgICAgIFVOU1BFQ19TUF9TRVQpKQotKyAgICAgIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoOlNJIDIgIiIpKQotKyAgICAgIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoOlNJIDMgIiIpKV0pXQotKyAgIiIKLSsgICIiCi0rKQotKwotKzs7IFVzZSBhIHNlcGFyYXRlIGluc24gZnJvbSB0aGUgYWJvdmUgZXhwYW5kIHRvIGJlIGFibGUgdG8gaGF2ZSB0aGUgbWVtIG91dHNpZGUKLSs7OyB0aGUgb3BlcmFuZCAjMSB3aGVuIHJlZ2lzdGVyIGFsbG9jYXRpb24gY29tZXMuIFRoaXMgaXMgbmVlZGVkIHRvIGF2b2lkIExSQQotKzs7IHRyeSB0byByZWxvYWQgdGhlIGd1YXJkIHNpbmNlIHdlIG5lZWQgdG8gY29udHJvbCBob3cgUElDIGFjY2VzcyBpcyBkb25lIGluCi0rOzsgdGhlIC1mcGljLy1mUElDIGNhc2UgKHNlZSBDT01QVVRFX05PVyBwYXJhbWV0ZXIgd2hlbiBjYWxsaW5nCi0rOzsgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAoKSkuCi0rKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnN0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0X2luc24iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJtZW1vcnlfb3BlcmFuZCIgIj1tLG0iKQotKwkodW5zcGVjOlNJIFsobWVtOlNJIChtYXRjaF9vcGVyYW5kOlNJIDEgImd1YXJkX2FkZHJfb3BlcmFuZCIgIlgsWCIpKV0KLSsJCSAgIFVOU1BFQ19TUF9TRVQpKQotKyAgIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoOlNJIDIgIj0mbCwmciIpKQotKyAgIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoOlNJIDMgIj0mbCwmciIpKV0KLSsgICIiCi0rICAiIyIKLSsgICJyZWxvYWRfY29tcGxldGVkIgotKyAgWyhwYXJhbGxlbCBbKHNldCAobWF0Y2hfZHVwIDApICh1bnNwZWM6U0kgWyhtZW06U0kgKG1hdGNoX2R1cCAyKSldCi0rCQkJCQkgICAgVU5TUEVDX1NQX1NFVCkpCi0rCSAgICAgIChjbG9iYmVyIChtYXRjaF9kdXAgMikpXSldCi0rICAiCi0rewotKyAgaWYgKGZsYWdfcGljKQotKyAgICB7Ci0rICAgICAgLyogRm9yY2VzIHJlY29tcHV0aW5nIG9mIEdPVCBiYXNlIG5vdy4gICovCi0rICAgICAgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAob3BlcmFuZHNbMV0sIFNJbW9kZSwgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdLAotKwkJCSAgICAgIHRydWUgLypjb21wdXRlX25vdyovKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYgKGFkZHJlc3Nfb3BlcmFuZCAob3BlcmFuZHNbMV0sIFNJbW9kZSkpCi0rCW9wZXJhbmRzWzJdID0gb3BlcmFuZHNbMV07Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgcnR4IG1lbSA9IFhFWFAgKGZvcmNlX2NvbnN0X21lbSAoU0ltb2RlLCBvcGVyYW5kc1sxXSksIDApOwotKwkgIGVtaXRfbW92ZV9pbnNuIChvcGVyYW5kc1syXSwgbWVtKTsKLSsJfQotKyAgICB9Ci0rfSIKLSsgIFsoc2V0X2F0dHIgImFyY2giICJ0MSwzMiIpXQotKykKLSsKLSsoZGVmaW5lX2luc24gIipzdGFja19wcm90ZWN0X3NldF9pbnNuIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAibWVtb3J5X29wZXJhbmQiICI9bSxtIikKLSsJKHVuc3BlYzpTSSBbKG1lbTpTSSAobWF0Y2hfb3BlcmFuZDpTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiKyZsLCZyIikpXQotKwkgVU5TUEVDX1NQX1NFVCkpCi0rICAgKGNsb2JiZXIgKG1hdGNoX2R1cCAxKSldCi0rICAiIgotKyAgIkAKLSsgICBsZHJcXHQlMSwgWyUxXVw7c3RyXFx0JTEsICUwXDttb3ZzXHQlMSwjMAotKyAgIGxkclxcdCUxLCBbJTFdXDtzdHJcXHQlMSwgJTBcO21vdlx0JTEsIzAiCi0rICBbKHNldF9hdHRyICJsZW5ndGgiICI4LDEyIikKLSsgICAoc2V0X2F0dHIgImNvbmRzIiAiY2xvYixub2NvbmQiKQotKyAgIChzZXRfYXR0ciAidHlwZSIgIm11bHRpcGxlIikKLSsgICAoc2V0X2F0dHIgImFyY2giICJ0MSwzMiIpXQotKykKLSsKLSsoZGVmaW5lX2V4cGFuZCAic3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0IgotKyAgWyhwYXJhbGxlbAotKyAgICAgWyhzZXQgKHBjKQotKwkgICAoaWZfdGhlbl9lbHNlCi0rCQkoZXEgKG1hdGNoX29wZXJhbmQ6U0kgMCAibWVtb3J5X29wZXJhbmQiICIiKQotKwkJICAgICh1bnNwZWM6U0kgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImd1YXJkX29wZXJhbmQiICIiKV0KLSsJCQkgICAgICAgVU5TUEVDX1NQX1RFU1QpKQotKwkJKGxhYmVsX3JlZiAobWF0Y2hfb3BlcmFuZCAyKSkKLSsJCShwYykpKQotKyAgICAgIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoOlNJIDMgIiIpKQotKyAgICAgIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoOlNJIDQgIiIpKQotKyAgICAgIChjbG9iYmVyIChyZWc6Q0MgQ0NfUkVHTlVNKSldKV0KLSsgICIiCi0rICAiIgotKykKLSsKLSs7OyBVc2UgYSBzZXBhcmF0ZSBpbnNuIGZyb20gdGhlIGFib3ZlIGV4cGFuZCB0byBiZSBhYmxlIHRvIGhhdmUgdGhlIG1lbSBvdXRzaWRlCi0rOzsgdGhlIG9wZXJhbmQgIzEgd2hlbiByZWdpc3RlciBhbGxvY2F0aW9uIGNvbWVzLiBUaGlzIGlzIG5lZWRlZCB0byBhdm9pZCBMUkEKLSs7OyB0cnkgdG8gcmVsb2FkIHRoZSBndWFyZCBzaW5jZSB3ZSBuZWVkIHRvIGNvbnRyb2wgaG93IFBJQyBhY2Nlc3MgaXMgZG9uZSBpbgotKzs7IHRoZSAtZnBpYy8tZlBJQyBjYXNlIChzZWUgQ09NUFVURV9OT1cgcGFyYW1ldGVyIHdoZW4gY2FsbGluZwotKzs7IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKCkpLgotKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIipzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3RfaW5zbiIKLSsgIFsoc2V0IChwYykKLSsJKGlmX3RoZW5fZWxzZQotKwkJKGVxIChtYXRjaF9vcGVyYW5kOlNJIDAgIm1lbW9yeV9vcGVyYW5kIiAibSxtIikKLSsJCSAgICAodW5zcGVjOlNJIFsobWVtOlNJIChtYXRjaF9vcGVyYW5kOlNJIDEgImd1YXJkX2FkZHJfb3BlcmFuZCIgIlgsWCIpKV0KLSsJCQkgICAgICAgVU5TUEVDX1NQX1RFU1QpKQotKwkJKGxhYmVsX3JlZiAobWF0Y2hfb3BlcmFuZCAyKSkKLSsJCShwYykpKQotKyAgIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoOlNJIDMgIj0mbCwmciIpKQotKyAgIChjbG9iYmVyIChtYXRjaF9zY3JhdGNoOlNJIDQgIj0mbCwmciIpKQotKyAgIChjbG9iYmVyIChyZWc6Q0MgQ0NfUkVHTlVNKSldCi0rICAiIgotKyAgIiMiCi0rICAicmVsb2FkX2NvbXBsZXRlZCIKLSsgIFsoY29uc3RfaW50IDApXQotK3sKLSsgIHJ0eCBlcTsKLSsKLSsgIGlmIChmbGFnX3BpYykKLSsgICAgewotKyAgICAgIC8qIEZvcmNlcyByZWNvbXB1dGluZyBvZiBHT1QgYmFzZSBub3cuICAqLwotKyAgICAgIGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKG9wZXJhbmRzWzFdLCBTSW1vZGUsIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0XSwKLSsJCQkgICAgICB0cnVlIC8qY29tcHV0ZV9ub3cqLyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGlmIChhZGRyZXNzX29wZXJhbmQgKG9wZXJhbmRzWzFdLCBTSW1vZGUpKQotKwlvcGVyYW5kc1szXSA9IG9wZXJhbmRzWzFdOwotKyAgICAgIGVsc2UKLSsJewotKwkgIHJ0eCBtZW0gPSBYRVhQIChmb3JjZV9jb25zdF9tZW0gKFNJbW9kZSwgb3BlcmFuZHNbMV0pLCAwKTsKLSsJICBlbWl0X21vdmVfaW5zbiAob3BlcmFuZHNbM10sIG1lbSk7Ci0rCX0KLSsgICAgfQotKyAgaWYgKFRBUkdFVF8zMkJJVCkKLSsgICAgewotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FybV9zdGFja19wcm90ZWN0X3Rlc3RfaW5zbiAob3BlcmFuZHNbNF0sIG9wZXJhbmRzWzBdLAotKwkJCQkJCSAgb3BlcmFuZHNbM10pKTsKLSsgICAgICBydHggY2NfcmVnID0gZ2VuX3J0eF9SRUcgKENDX1ptb2RlLCBDQ19SRUdOVU0pOwotKyAgICAgIGVxID0gZ2VuX3J0eF9FUSAoQ0NfWm1vZGUsIGNjX3JlZywgY29uc3QwX3J0eCk7Ci0rICAgICAgZW1pdF9qdW1wX2luc24gKGdlbl9hcm1fY29uZF9icmFuY2ggKG9wZXJhbmRzWzJdLCBlcSwgY2NfcmVnKSk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3RodW1iMV9zdGFja19wcm90ZWN0X3Rlc3RfaW5zbiAob3BlcmFuZHNbNF0sIG9wZXJhbmRzWzBdLAotKwkJCQkJCSAgICAgb3BlcmFuZHNbM10pKTsKLSsgICAgICBlcSA9IGdlbl9ydHhfRVEgKFZPSURtb2RlLCBvcGVyYW5kc1s0XSwgY29uc3QwX3J0eCk7Ci0rICAgICAgZW1pdF9qdW1wX2luc24gKGdlbl9jYnJhbmNoc2k0IChlcSwgb3BlcmFuZHNbNF0sIGNvbnN0MF9ydHgsCi0rCQkJCSAgICAgIG9wZXJhbmRzWzJdKSk7Ci0rICAgIH0KLSsgIERPTkU7Ci0rfQotKyAgWyhzZXRfYXR0ciAiYXJjaCIgInQxLDMyIildCi0rKQotKwotKyhkZWZpbmVfaW5zbiAiYXJtX3N0YWNrX3Byb3RlY3RfdGVzdF9pbnNuIgotKyAgWyhzZXQgKHJlZzpDQ19aIENDX1JFR05VTSkKLSsJKGNvbXBhcmU6Q0NfWiAodW5zcGVjOlNJIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJtZW1vcnlfb3BlcmFuZCIgIm0sbSIpCi0rCQkJCSAgKG1lbTpTSSAobWF0Y2hfb3BlcmFuZDpTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiK2wsciIpKV0KLSsJCQkJIFVOU1BFQ19TUF9URVNUKQotKwkJICAgICAgKGNvbnN0X2ludCAwKSkpCi0rICAgKGNsb2JiZXIgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj0mbCwmciIpKQotKyAgIChjbG9iYmVyIChtYXRjaF9kdXAgMikpXQotKyAgIlRBUkdFVF8zMkJJVCIKLSsgICJsZHJcdCUwLCBbJTJdXDtsZHJcdCUyLCAlMVw7ZW9yc1x0JTAsICUyLCAlMCIKLSsgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjgsMTIiKQotKyAgIChzZXRfYXR0ciAiY29uZHMiICJzZXQiKQotKyAgIChzZXRfYXR0ciAidHlwZSIgIm11bHRpcGxlIikKLSsgICAoc2V0X2F0dHIgImFyY2giICJ0LDMyIildCi0rKQotKwotIChkZWZpbmVfZXhwYW5kICJjYXNlc2kiCi0gICBbKG1hdGNoX29wZXJhbmQ6U0kgMCAic19yZWdpc3Rlcl9vcGVyYW5kIiAiIikJOyBpbmRleCB0byBqdW1wIG9uCi0gICAgKG1hdGNoX29wZXJhbmQ6U0kgMSAiY29uc3RfaW50X29wZXJhbmQiICIiKQk7IGxvd2VyIGJvdW5kCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vcHJlZGljYXRlcy5tZCBiL2djYy9jb25maWcvYXJtL3ByZWRpY2F0ZXMubWQKLWluZGV4IDdlMTk4ZjliY2U0Li42OTcxOGVlOWM3YSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL3ByZWRpY2F0ZXMubWQKLSsrKyBiL2djYy9jb25maWcvYXJtL3ByZWRpY2F0ZXMubWQKLUBAIC0zMSw2ICszMSwyMyBAQAotIAkgICAgICB8fCBSRUdOT19SRUdfQ0xBU1MgKFJFR05PIChvcCkpICE9IE5PX1JFR1MpKTsKLSB9KQotIAotKzsgUHJlZGljYXRlIGZvciBzdGFjayBwcm90ZWN0b3IgZ3VhcmQncyBhZGRyZXNzIGluCi0rOyBzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldF9pbnNuIGFuZCBzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3RfaW5zbiBwYXR0ZXJucwotKyhkZWZpbmVfcHJlZGljYXRlICJndWFyZF9hZGRyX29wZXJhbmQiCi0rICAobWF0Y2hfdGVzdCAidHJ1ZSIpCi0rewotKyAgcmV0dXJuIChDT05TVEFOVF9BRERSRVNTX1AgKG9wKQotKwkgIHx8ICF0YXJnZXRtLmNhbm5vdF9mb3JjZV9jb25zdF9tZW0gKG1vZGUsIG9wKSk7Ci0rfSkKLSsKLSs7IFByZWRpY2F0ZSBmb3Igc3RhY2sgcHJvdGVjdG9yIGd1YXJkIGluIHN0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0IGFuZAotKzsgc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0IHBhdHRlcm5zCi0rKGRlZmluZV9wcmVkaWNhdGUgImd1YXJkX29wZXJhbmQiCi0rICAobWF0Y2hfY29kZSAibWVtIikKLSt7Ci0rICByZXR1cm4gZ3VhcmRfYWRkcl9vcGVyYW5kIChYRVhQIChvcCwgMCksIG1vZGUpOwotK30pCi0rCi0gKGRlZmluZV9wcmVkaWNhdGUgImltbV9mb3JfbmVvbl9pbnZfbG9naWNfb3BlcmFuZCIKLSAgIChtYXRjaF9jb2RlICJjb25zdF92ZWN0b3IiKQotIHsKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS90aHVtYjEubWQgYi9nY2MvY29uZmlnL2FybS90aHVtYjEubWQKLWluZGV4IDE5ZGNkYmNkZDczLi5jZDE5OWM5YzUyOSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL3RodW1iMS5tZAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vdGh1bWIxLm1kCi1AQCAtMTk2Miw0ICsxOTYyLDE3IEBACi0gICB9IgotICAgWyhzZXRfYXR0ciAidHlwZSIgIm1vdl9yZWciKV0KLSApCi0rCi0rKGRlZmluZV9pbnNuICJ0aHVtYjFfc3RhY2tfcHJvdGVjdF90ZXN0X2luc24iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSZsIikKLSsJKHVuc3BlYzpTSSBbKG1hdGNoX29wZXJhbmQ6U0kgMSAibWVtb3J5X29wZXJhbmQiICJtIikKLSsJCSAgICAobWVtOlNJIChtYXRjaF9vcGVyYW5kOlNJIDIgInJlZ2lzdGVyX29wZXJhbmQiICIrbCIpKV0KLSsJIFVOU1BFQ19TUF9URVNUKSkKLSsgICAoY2xvYmJlciAobWF0Y2hfZHVwIDIpKV0KLSsgICJUQVJHRVRfVEhVTUIxIgotKyAgImxkclx0JTAsIFslMl1cO2xkclx0JTIsICUxXDtlb3JzXHQlMCwgJTIsICUwIgotKyAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiOCIpCi0rICAgKHNldF9hdHRyICJjb25kcyIgInNldCIpCi0rICAgKHNldF9hdHRyICJ0eXBlIiAibXVsdGlwbGUiKV0KLSspCi0gDAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL3Vuc3BlY3MubWQgYi9nY2MvY29uZmlnL2FybS91bnNwZWNzLm1kCi1pbmRleCAxOTQxNjczNmVmOS4uOGY5ZGJjYjA4ZGMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS91bnNwZWNzLm1kCi0rKysgYi9nY2MvY29uZmlnL2FybS91bnNwZWNzLm1kCi1AQCAtODYsNiArODYsOSBAQAotICAgVU5TUEVDX1BST0JFX1NUQUNLICAgIDsgUHJvYmUgc3RhY2sgbWVtb3J5IHJlZmVyZW5jZQotICAgVU5TUEVDX05PTlNFQ1VSRV9NRU0JOyBSZXByZXNlbnQgbm9uLXNlY3VyZSBtZW1vcnkgaW4gQVJNdjgtTSB3aXRoCi0gCQkJOyBzZWN1cml0eSBleHRlbnNpb24KLSsgIFVOU1BFQ19TUF9TRVQJCTsgUmVwcmVzZW50IHRoZSBzZXR0aW5nIG9mIHN0YWNrIHByb3RlY3RvcidzIGNhbmFyeQotKyAgVU5TUEVDX1NQX1RFU1QJOyBSZXByZXNlbnQgdGhlIHRlc3Rpbmcgb2Ygc3RhY2sgcHJvdGVjdG9yJ3MgY2FuYXJ5Ci0rCQkJOyBhZ2FpbnN0IHRoZSBndWFyZC4KLSBdKQotIAotIChkZWZpbmVfY19lbnVtICJ1bnNwZWMiIFsKLWRpZmYgLS1naXQgYS9nY2MvZG9jL21kLnRleGkgYi9nY2MvZG9jL21kLnRleGkKLWluZGV4IDI5NWZjMWYxMTQzLi44OTUzMDliMmYzYyAxMDA2NDQKLS0tLSBhL2djYy9kb2MvbWQudGV4aQotKysrIGIvZ2NjL2RvYy9tZC50ZXhpCi1AQCAtNzQ1MCwyMiArNzQ1MCw2MSBAQCBidWlsdGlucy4KLSBUaGUgZ2V0L3NldCBwYXR0ZXJucyBoYXZlIGEgc2luZ2xlIG91dHB1dC9pbnB1dCBvcGVyYW5kIHJlc3BlY3RpdmVseSwKLSB3aXRoIEB2YXJ7bW9kZX0gaW50ZW5kZWQgdG8gYmUgQGNvZGV7UG1vZGV9LgotIAotK0BjaW5kZXggQGNvZGV7c3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXR9IGluc3RydWN0aW9uIHBhdHRlcm4KLStAaXRlbSBAc2FtcHtzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldH0KLStUaGlzIHBhdHRlcm4sIGlmIGRlZmluZWQsIG1vdmVzIGEgQGNvZGV7cHRyX21vZGV9IHZhbHVlIGZyb20gYW4gYWRkcmVzcwotK3dob3NlIGRlY2xhcmF0aW9uIFJUWCBpcyBnaXZlbiBpbiBvcGVyYW5kIDEgdG8gdGhlIG1lbW9yeSBpbiBvcGVyYW5kIDAKLSt3aXRob3V0IGxlYXZpbmcgdGhlIHZhbHVlIGluIGEgcmVnaXN0ZXIgYWZ0ZXJ3YXJkLiAgSWYgc2V2ZXJhbAotK2luc3RydWN0aW9ucyBhcmUgbmVlZGVkIGJ5IHRoZSB0YXJnZXQgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uIChlZy4gdG8KLStsb2FkIHRoZSBhZGRyZXNzIGZyb20gYSBHT1QgZW50cnkgdGhlbiBsb2FkIHRoZSBAY29kZXtwdHJfbW9kZX0gdmFsdWUKLSthbmQgZmluYWxseSBzdG9yZSBpdCksIGl0IGlzIHRoZSBiYWNrZW5kJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIG5vCi0raW50ZXJtZWRpYXRlIHJlc3VsdCBnZXRzIHNwaWxsZWQuICBUaGlzIGlzIHRvIGF2b2lkIGxlYWtpbmcgdGhlIHZhbHVlCi0rc29tZSBwbGFjZSB0aGF0IGFuIGF0dGFja2VyIG1pZ2h0IHVzZSB0byByZXdyaXRlIHRoZSBzdGFjayBndWFyZCBzbG90Ci0rYWZ0ZXIgaGF2aW5nIGNsb2JiZXJlZCBpdC4KLSsKLStJZiB0aGlzIHBhdHRlcm4gaXMgbm90IGRlZmluZWQsIHRoZW4gdGhlIGFkZHJlc3MgZGVjbGFyYXRpb24gaXMKLStleHBhbmRlZCBmaXJzdCBpbiB0aGUgc3RhbmRhcmQgd2F5IGFuZCBhIEBjb2Rle3N0YWNrX3Byb3RlY3Rfc2V0fQotK3BhdHRlcm4gaXMgdGhlbiBnZW5lcmF0ZWQgdG8gbW92ZSB0aGUgdmFsdWUgZnJvbSB0aGF0IGFkZHJlc3MgdG8gdGhlCi0rYWRkcmVzcyBpbiBvcGVyYW5kIDAuCi0rCi0gQGNpbmRleCBAY29kZXtzdGFja19wcm90ZWN0X3NldH0gaW5zdHJ1Y3Rpb24gcGF0dGVybgotIEBpdGVtIEBzYW1we3N0YWNrX3Byb3RlY3Rfc2V0fQotLVRoaXMgcGF0dGVybiwgaWYgZGVmaW5lZCwgbW92ZXMgYSBAY29kZXtwdHJfbW9kZX0gdmFsdWUgZnJvbSB0aGUgbWVtb3J5Ci0taW4gb3BlcmFuZCAxIHRvIHRoZSBtZW1vcnkgaW4gb3BlcmFuZCAwIHdpdGhvdXQgbGVhdmluZyB0aGUgdmFsdWUgaW4KLS1hIHJlZ2lzdGVyIGFmdGVyd2FyZC4gIFRoaXMgaXMgdG8gYXZvaWQgbGVha2luZyB0aGUgdmFsdWUgc29tZSBwbGFjZQotLXRoYXQgYW4gYXR0YWNrZXIgbWlnaHQgdXNlIHRvIHJld3JpdGUgdGhlIHN0YWNrIGd1YXJkIHNsb3QgYWZ0ZXIKLS1oYXZpbmcgY2xvYmJlcmVkIGl0LgotK1RoaXMgcGF0dGVybiwgaWYgZGVmaW5lZCwgbW92ZXMgYSBAY29kZXtwdHJfbW9kZX0gdmFsdWUgZnJvbSB0aGUgdmFsaWQKLSttZW1vcnkgbG9jYXRpb24gaW4gb3BlcmFuZCAxIHRvIHRoZSBtZW1vcnkgaW4gb3BlcmFuZCAwIHdpdGhvdXQgbGVhdmluZwotK3RoZSB2YWx1ZSBpbiBhIHJlZ2lzdGVyIGFmdGVyd2FyZC4gIFRoaXMgaXMgdG8gYXZvaWQgbGVha2luZyB0aGUgdmFsdWUKLStzb21lIHBsYWNlIHRoYXQgYW4gYXR0YWNrZXIgbWlnaHQgdXNlIHRvIHJld3JpdGUgdGhlIHN0YWNrIGd1YXJkIHNsb3QKLSthZnRlciBoYXZpbmcgY2xvYmJlcmVkIGl0LgotKwotK05vdGU6IG9uIHRhcmdldHMgd2hlcmUgdGhlIGFkZHJlc3NpbmcgbW9kZXMgZG8gbm90IGFsbG93IHRvIGxvYWQKLStkaXJlY3RseSBmcm9tIHN0YWNrIGd1YXJkIGFkZHJlc3MsIHRoZSBhZGRyZXNzIGlzIGV4cGFuZGVkIGluIGEgc3RhbmRhcmQKLSt3YXkgZmlyc3Qgd2hpY2ggY291bGQgY2F1c2Ugc29tZSBzcGlsbHMuCi0gCi0gSWYgdGhpcyBwYXR0ZXJuIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGEgcGxhaW4gbW92ZSBwYXR0ZXJuIGlzIGdlbmVyYXRlZC4KLSAKLStAY2luZGV4IEBjb2Rle3N0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdH0gaW5zdHJ1Y3Rpb24gcGF0dGVybgotK0BpdGVtIEBzYW1we3N0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdH0KLStUaGlzIHBhdHRlcm4sIGlmIGRlZmluZWQsIGNvbXBhcmVzIGEgQGNvZGV7cHRyX21vZGV9IHZhbHVlIGZyb20gYW4KLSthZGRyZXNzIHdob3NlIGRlY2xhcmF0aW9uIFJUWCBpcyBnaXZlbiBpbiBvcGVyYW5kIDEgd2l0aCB0aGUgbWVtb3J5IGluCi0rb3BlcmFuZCAwIHdpdGhvdXQgbGVhdmluZyB0aGUgdmFsdWUgaW4gYSByZWdpc3RlciBhZnRlcndhcmQgYW5kCi0rYnJhbmNoZXMgdG8gb3BlcmFuZCAyIGlmIHRoZSB2YWx1ZXMgd2VyZSBlcXVhbC4gIElmIHNldmVyYWwKLStpbnN0cnVjdGlvbnMgYXJlIG5lZWRlZCBieSB0aGUgdGFyZ2V0IHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbiAoZWcuIHRvCi0rbG9hZCB0aGUgYWRkcmVzcyBmcm9tIGEgR09UIGVudHJ5IHRoZW4gbG9hZCB0aGUgQGNvZGV7cHRyX21vZGV9IHZhbHVlCi0rYW5kIGZpbmFsbHkgc3RvcmUgaXQpLCBpdCBpcyB0aGUgYmFja2VuZCdzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSBubwotK2ludGVybWVkaWF0ZSByZXN1bHQgZ2V0cyBzcGlsbGVkLiAgVGhpcyBpcyB0byBhdm9pZCBsZWFraW5nIHRoZSB2YWx1ZQotK3NvbWUgcGxhY2UgdGhhdCBhbiBhdHRhY2tlciBtaWdodCB1c2UgdG8gcmV3cml0ZSB0aGUgc3RhY2sgZ3VhcmQgc2xvdAotK2FmdGVyIGhhdmluZyBjbG9iYmVyZWQgaXQuCi0rCi0rSWYgdGhpcyBwYXR0ZXJuIGlzIG5vdCBkZWZpbmVkLCB0aGVuIHRoZSBhZGRyZXNzIGRlY2xhcmF0aW9uIGlzCi0rZXhwYW5kZWQgZmlyc3QgaW4gdGhlIHN0YW5kYXJkIHdheSBhbmQgYSBAY29kZXtzdGFja19wcm90ZWN0X3Rlc3R9Ci0rcGF0dGVybiBpcyB0aGVuIGdlbmVyYXRlZCB0byBjb21wYXJlIHRoZSB2YWx1ZSBmcm9tIHRoYXQgYWRkcmVzcyB0byB0aGUKLSt2YWx1ZSBhdCB0aGUgbWVtb3J5IGluIG9wZXJhbmQgMC4KLSsKLSBAY2luZGV4IEBjb2Rle3N0YWNrX3Byb3RlY3RfdGVzdH0gaW5zdHJ1Y3Rpb24gcGF0dGVybgotIEBpdGVtIEBzYW1we3N0YWNrX3Byb3RlY3RfdGVzdH0KLSBUaGlzIHBhdHRlcm4sIGlmIGRlZmluZWQsIGNvbXBhcmVzIGEgQGNvZGV7cHRyX21vZGV9IHZhbHVlIGZyb20gdGhlCi0tbWVtb3J5IGluIG9wZXJhbmQgMSB3aXRoIHRoZSBtZW1vcnkgaW4gb3BlcmFuZCAwIHdpdGhvdXQgbGVhdmluZyB0aGUKLS12YWx1ZSBpbiBhIHJlZ2lzdGVyIGFmdGVyd2FyZCBhbmQgYnJhbmNoZXMgdG8gb3BlcmFuZCAyIGlmIHRoZSB2YWx1ZXMKLS13ZXJlIGVxdWFsLgotK3ZhbGlkIG1lbW9yeSBsb2NhdGlvbiBpbiBvcGVyYW5kIDEgd2l0aCB0aGUgbWVtb3J5IGluIG9wZXJhbmQgMCB3aXRob3V0Ci0rbGVhdmluZyB0aGUgdmFsdWUgaW4gYSByZWdpc3RlciBhZnRlcndhcmQgYW5kIGJyYW5jaGVzIHRvIG9wZXJhbmQgMiBpZgotK3RoZSB2YWx1ZXMgd2VyZSBlcXVhbC4KLSAKLSBJZiB0aGlzIHBhdHRlcm4gaXMgbm90IGRlZmluZWQsIHRoZW4gYSBwbGFpbiBjb21wYXJlIHBhdHRlcm4gYW5kCi0gY29uZGl0aW9uYWwgYnJhbmNoIHBhdHRlcm4gaXMgdXNlZC4KLWRpZmYgLS1naXQgYS9nY2MvZnVuY3Rpb24uYyBiL2djYy9mdW5jdGlvbi5jCi1pbmRleCA4NWE1ZDlmNDNmNy4uNjk1MjNjMWQ3MjMgMTAwNjQ0Ci0tLS0gYS9nY2MvZnVuY3Rpb24uYwotKysrIGIvZ2NjL2Z1bmN0aW9uLmMKLUBAIC00OTM3LDE4ICs0OTM3LDM0IEBAIHN0YWNrX3Byb3RlY3RfZXBpbG9ndWUgKHZvaWQpCi0gICB0cmVlIGd1YXJkX2RlY2wgPSB0YXJnZXRtLnN0YWNrX3Byb3RlY3RfZ3VhcmQgKCk7Ci0gICBydHhfY29kZV9sYWJlbCAqbGFiZWwgPSBnZW5fbGFiZWxfcnR4ICgpOwotICAgcnR4IHgsIHk7Ci0tICBydHhfaW5zbiAqc2VxOwotKyAgcnR4X2luc24gKnNlcSA9IE5VTEw7Ci0gCi0gICB4ID0gZXhwYW5kX25vcm1hbCAoY3J0bC0+c3RhY2tfcHJvdGVjdF9ndWFyZCk7Ci0tICBpZiAoZ3VhcmRfZGVjbCkKLS0gICAgeSA9IGV4cGFuZF9ub3JtYWwgKGd1YXJkX2RlY2wpOwotKwotKyAgaWYgKHRhcmdldG0uaGF2ZV9zdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QgKCkgJiYgZ3VhcmRfZGVjbCkKLSsgICAgewotKyAgICAgIGdjY19hc3NlcnQgKERFQ0xfUCAoZ3VhcmRfZGVjbCkpOwotKyAgICAgIHkgPSBERUNMX1JUTCAoZ3VhcmRfZGVjbCk7Ci0rICAgICAgLyogQWxsb3cgdGhlIHRhcmdldCB0byBjb21wdXRlIGFkZHJlc3Mgb2YgWSBhbmQgY29tcGFyZSBpdCB3aXRoIFggd2l0aG91dAotKwkgbGVha2luZyBZIGludG8gYSByZWdpc3Rlci4gIFRoaXMgY29tYmluZWQgYWRkcmVzcyArIGNvbXBhcmUgcGF0dGVybgotKwkgYWxsb3dzIHRoZSB0YXJnZXQgdG8gcHJldmVudCBzcGlsbGluZyBvZiBhbnkgaW50ZXJtZWRpYXRlIHJlc3VsdHMgYnkKLSsJIHNwbGl0dGluZyBpdCBhZnRlciByZWdpc3RlciBhbGxvY2F0b3IuICAqLwotKyAgICAgIHNlcSA9IHRhcmdldG0uZ2VuX3N0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdCAoeCwgeSwgbGFiZWwpOwotKyAgICB9Ci0gICBlbHNlCi0tICAgIHkgPSBjb25zdDBfcnR4OwotKyAgICB7Ci0rICAgICAgaWYgKGd1YXJkX2RlY2wpCi0rCXkgPSBleHBhbmRfbm9ybWFsIChndWFyZF9kZWNsKTsKLSsgICAgICBlbHNlCi0rCXkgPSBjb25zdDBfcnR4OwotKwotKyAgICAgIC8qIEFsbG93IHRoZSB0YXJnZXQgdG8gY29tcGFyZSBZIHdpdGggWCB3aXRob3V0IGxlYWtpbmcgZWl0aGVyIGludG8KLSsJIGEgcmVnaXN0ZXIuICAqLwotKyAgICAgIGlmICh0YXJnZXRtLmhhdmVfc3RhY2tfcHJvdGVjdF90ZXN0ICgpKQotKwlzZXEgPSB0YXJnZXRtLmdlbl9zdGFja19wcm90ZWN0X3Rlc3QgKHgsIHksIGxhYmVsKTsKLSsgICAgfQotIAotLSAgLyogQWxsb3cgdGhlIHRhcmdldCB0byBjb21wYXJlIFkgd2l0aCBYIHdpdGhvdXQgbGVha2luZyBlaXRoZXIgaW50bwotLSAgICAgYSByZWdpc3Rlci4gICovCi0tICBpZiAodGFyZ2V0bS5oYXZlX3N0YWNrX3Byb3RlY3RfdGVzdCAoKQotLSAgICAgICYmICgoc2VxID0gdGFyZ2V0bS5nZW5fc3RhY2tfcHJvdGVjdF90ZXN0ICh4LCB5LCBsYWJlbCkpICE9IE5VTExfUlRYKSkKLSsgIGlmIChzZXEpCi0gICAgIGVtaXRfaW5zbiAoc2VxKTsKLSAgIGVsc2UKLSAgICAgZW1pdF9jbXBfYW5kX2p1bXBfaW5zbnMgKHgsIHksIEVRLCBOVUxMX1JUWCwgcHRyX21vZGUsIDEsIGxhYmVsKTsKLWRpZmYgLS1naXQgYS9nY2MvdGFyZ2V0LWluc25zLmRlZiBiL2djYy90YXJnZXQtaW5zbnMuZGVmCi1pbmRleCA5YTU1MmMzZDExYy4uZDM5ODg5YjM1MjIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGFyZ2V0LWluc25zLmRlZgotKysrIGIvZ2NjL3RhcmdldC1pbnNucy5kZWYKLUBAIC05Niw3ICs5Niw5IEBAIERFRl9UQVJHRVRfSU5TTiAoc2liY2FsbF92YWx1ZSwgKHJ0eCB4MCwgcnR4IHgxLCBydHggb3B0MiwgcnR4IG9wdDMsCi0gREVGX1RBUkdFVF9JTlNOIChzaW1wbGVfcmV0dXJuLCAodm9pZCkpCi0gREVGX1RBUkdFVF9JTlNOIChzcGxpdF9zdGFja19wcm9sb2d1ZSwgKHZvaWQpKQotIERFRl9UQVJHRVRfSU5TTiAoc3BsaXRfc3RhY2tfc3BhY2VfY2hlY2ssIChydHggeDAsIHJ0eCB4MSkpCi0rREVGX1RBUkdFVF9JTlNOIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCwgKHJ0eCB4MCwgcnR4IHgxKSkKLSBERUZfVEFSR0VUX0lOU04gKHN0YWNrX3Byb3RlY3Rfc2V0LCAocnR4IHgwLCBydHggeDEpKQotK0RFRl9UQVJHRVRfSU5TTiAoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0LCAocnR4IHgwLCBydHggeDEsIHJ0eCB4MikpCi0gREVGX1RBUkdFVF9JTlNOIChzdGFja19wcm90ZWN0X3Rlc3QsIChydHggeDAsIHJ0eCB4MSwgcnR4IHgyKSkKLSBERUZfVEFSR0VUX0lOU04gKHN0b3JlX211bHRpcGxlLCAocnR4IHgwLCBydHggeDEsIHJ0eCB4MikpCi0gREVGX1RBUkdFVF9JTlNOICh0YWJsZWp1bXAsIChydHggeDAsIHJ0eCB4MSkpCi0tLSAKLTIuMjEuMApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvQ1ZFLTIwMTktMTQyNTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy9DVkUtMjAxOS0xNDI1MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzI3Njg0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvQ1ZFLTIwMTktMTQyNTAucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBhNGYxYjU4ZWI0OGIzNDlhNWYzNTNiYzY5YzMwYmU1NTM1MDZkMzNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogcmd1ZW50aCA8cmd1ZW50aEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+CitEYXRlOiBUaHUsIDI1IEp1bCAyMDE5IDEwOjQ4OjI2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIDIwMTktMDctMjUgIFJpY2hhcmQgQmllbmVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CisKKwlQUiBsdG8vOTA5MjQKKwlCYWNrcG9ydCBmcm9tIG1haW5saW5lCisJMjAxOS0wNy0xMiAgUmVuIEtpbXVyYSAgPHJreDEyMDlkZXZAZ21haWwuY29tPgorCisJKiBzaW1wbGUtb2JqZWN0LWVsZi5jIChzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCk6IENoZWNrIHplcm8gdmFsdWUKKwlzaHN0cm5keC4KKworCitnaXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtOC1icmFuY2hAMjczNzk0IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitBZmZlY3RlczogPCAgOS4yCitDVkU6IENWRS0yMDE5LTE0MjUwCitEcm9wcGVkIGNoYW5nZWxvZworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxBa3VzdHJlQG12aXN0YS5jb20+CisKKy0tLQorIGxpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIHwgOCArKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQorCitJbmRleDogZ2NjLTguMi4wL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTguMi4wLm9yaWcvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKKysrKyBnY2MtOC4yLjAvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKK0BAIC01NDksNiArNTQ5LDE0IEBAIHNpbXBsZV9vYmplY3RfZWxmX21hdGNoICh1bnNpZ25lZCBjaGFyIGgKKyAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorIAorKyAgaWYgKGVvci0+c2hzdHJuZHggPT0gMCkKKysgICAgeworKyAgICAgICplcnJtc2cgPSAiaW52YWxpZCBFTEYgc2hzdHJuZHggPT0gMCI7CisrICAgICAgKmVyciA9IDA7CisrICAgICAgWERFTEVURSAoZW9yKTsKKysgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworICAgcmV0dXJuICh2b2lkICopIGVvcjsKKyB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi5pbmMKaW5kZXggMWMzZTIwMC4uMDFkM2JmMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLmluYwpAQCAtNjQsNiArNjQsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDI1MC5wYXRjaCBcCiAiCiBTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgogU1JDX1VSSVttZDVzdW1dID0gIjM4MThhZDg2MDA0NDdmMDUzNDkwOTgyMzJjMmRkYzc4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCmluZGV4IDIxOTA4YmMuLjY2ZmIyNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGE5Mzc0MzczMmIyMTI1YWViZDlhNmQ2NWU5OTlkNzUwNmIwMWQ2YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDcyZmMzOTc1YmNkNzIwYjJmODA0MGZhODdjZDIzZDNkYjRjNTk3NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNDo1MCArMDQwMAotU3ViamVjdDogW1BBVENIIDExLzM2XSBEZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgorU3ViamVjdDogW1BBVENIXSBEZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgogIHJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSCiAKIFRoaXMgcGF0Y2ggZGVmaW5lcyBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCkBAIC0yMywxMSArMjMsMTIgQEAKICBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCiAgZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCiAgZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWcvcmlzY3YvbGludXguaCAgICAgfCAgMiArLQogIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNSArKysrKy0tLS0tLS0tLS0KICBnY2MvY29uZmlnL3NoL2xpbnV4LmggICAgICAgIHwgIDIgKy0KICBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggICAgIHwgIDIgKy0KICBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgIDQgKystLQotIDExIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQorIDEyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKIGluZGV4IDgyNDg2MWJlZmVjLi42YWZhY2NlMzI5MiAxMDA2NDQKQEAgLTE1Miw2ICsxNTMsMTkgQEAKICAKICAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCiAgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvbGludXguaCBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAoraW5kZXggNThkZDE4Yjg5ZjMuLjExMmJhOWNkNzY0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKK0BAIC0yMiw3ICsyMiw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAgIEdOVV9VU0VSX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMoKTsJCQkJXAorICAgfSB3aGlsZSAoMCkKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1yaXNjdiIgWExFTl9TUEVDICItIiBBQklfU1BFQyAiLnNvLjEiCisgCisgI2RlZmluZSBNVVNMX0FCSV9TVUZGSVggXAorICAgIiV7bWFiaT1pbHAzMjotc2Z9IiBcCiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCiBpbmRleCA5OTQ2ZDNmZWQ5NC4uNDVhOWE3Y2FlNTkgMTAwNjQ0CiAtLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKQEAgLTIyNyw2ICsyNDEsMyBAQAogIAogICNpZmRlZiBTUEFSQ19CSV9BUkNICiAgCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaAppbmRleCBhZjBlYTVjLi41M2Y5ZTk5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKQEAgLTIyLDggKzIyLDYgQEAKICBnY2MvZ2NjLmMgICAgICAgIHwgNyAtLS0tLS0tCiAgNCBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCAwMDY0YTI4MjQ4OC4uOThkMTQ4ODE3MWYgMTAwNjQ0CiAtLS0gYS9nY2MvTWFrZWZpbGUuaW4KICsrKyBiL2djYy9NYWtlZmlsZS5pbgogQEAgLTYxOCw2ICs2MTgsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACkBAIC0zNCw3ICszMiw3IEBACiAgIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCiAgbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQogICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKLUBAIC0yODY2LDYgKzI4NjcsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKK0BAIC0yODY2LDYgKzI4NjcsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkCiAgCiAgUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCiAgICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXApAQCAtNDIsMTEgKzQwLDkgQEAKICAgIC1ERklYRURfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZS1maXhlZFwiIFwKICAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSPVwiJChnY2NfZ3h4X2luY2x1ZGVfZGlyKVwiIFwKICAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09UPSQoZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdCkgXAotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCi1pbmRleCBjNDc5NjM4NTY0My4uOTgwZTJiZDQ3YTcgMTAwNjQ0CiAtLS0gYS9nY2MvY3BwZGVmYXVsdC5jCiArKysgYi9nY2MvY3BwZGVmYXVsdC5jCi1AQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCitAQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZQogICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCiAgICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAogICNlbmRpZgpAQCAtNTcsNDIgKzUzLDMgQEAKICAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKICAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KICAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAotZGlmZiAtLWdpdCBhL2djYy9kZWZhdWx0cy5oIGIvZ2NjL2RlZmF1bHRzLmgKLWluZGV4IGI3NTM0MjU2MTE5Li40MWNhNTc5YjI2NyAxMDA2NDQKLS0tLSBhL2djYy9kZWZhdWx0cy5oCi0rKysgYi9nY2MvZGVmYXVsdHMuaAotQEAgLTE0NTksNCArMTQ1OSwxMyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIERXQVJGX0dOQVRfRU5DT0RJTkdTX0RFRkFVTFQgRFdBUkZfR05BVF9FTkNPRElOR1NfR0RCCi0gI2VuZGlmCi0gCi0rLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCi0rCi0rI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKLSsjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCi0rI2VuZGlmCi0rI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKLSsjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgotKyNlbmRpZgotKwotICNlbmRpZiAgLyogISBHQ0NfREVGQVVMVFNfSCAqLwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggNGU3YzQ1YjI2OGMuLjFhMzcwNGIyNzYzIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xNDcwLDEzICsxNDcwLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAKLSAvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KLSAKLS0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQotLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKLS0jZW5kaWYKLS0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgotLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCi0tI2VuZGlmCi0tCi0gI2lmZGVmIENST1NTX0RJUkVDVE9SWV9TVFJVQ1RVUkUgIC8qIERvbid0IHVzZSB0aGVzZSBwcmVmaXhlcyBmb3IgYSBjcm9zcyBjb21waWxlci4gICovCi0gI3VuZGVmIE1EX0VYRUNfUFJFRklYCi0gI3VuZGVmIE1EX1NUQVJURklMRV9QUkVGSVgKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzAtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMwLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCmluZGV4IGY1NzY5YmMuLjM4ZWFiNWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzAtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApAQCAtMSwxMjUgKzEsNzkgQEAKLUZyb20gYmFhYjYxYWUzOTM4ZWUyZmE5ZWMwM2EyMDc5MzUwODUxNmE0NmRhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IEFwciAyMDE2IDIwOjAzOjI4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzAvMzZdIGxpYmdjYzogQWRkIGtub2IgdG8gdXNlIGxkYmwtMTI4IG9uIHBwYwotCi1tdXNsIGRvZXMgbm90IHN1cHBvcnQgbGRibCAxMjggc28gd2UgY2FuIG5vdCBhc3N1bWUKLXRoYXQgbGludXggYXMgYSB3aG9sZSBzdXBwb3J0cyBsZGJsLTEyOCBiaXRzLCBpbnN0ZWFkCi1hY3QgdXBvbiBjb25maWd1cmUgb3B0aW9uIHBhc3NlZCB0byBnY2MgYW5kIGFzc3VtZSBubwotb24gbXVzbCBhbmQgeWVzIG90aGVyd2lzZSBpZiBubyBvcHRpb24gaXMgcGFzc2VkIHNpbmNlCi1kZWZhdWx0IGJlaGF2aW91ciBpcyB0byBhc3N1bWUgbGRibDEyOCBpdCBkb2VzIG5vdAotY2hhbmdlIHRoZSBkZWZhdWx0cworRnJvbSA0NzQ2N2YzYWIwZmIyZjJmY2VkZTgxMDYwZmU4YmIzMzlkMDkwOWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDAwOjU0OjA1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTJdIGxkYmwxMjggY29uZmlnCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi0gbGliZ2NjL01ha2VmaWxlLmluICAgICAgICAgICB8ICAxICsKLSBsaWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IHwgIDUgKysrKy0KLSBsaWJnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCi0gbGliZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDEyICsrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZ2NjL2NvbmZpZ3VyZQorIGdjYy9jb25maWd1cmUgICAgfCAxMyArKysrKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDE2ICsrKysrKysrKysrKysrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9saWJnY2MvTWFrZWZpbGUuaW4gYi9saWJnY2MvTWFrZWZpbGUuaW4KLWluZGV4IGVhMzkwYTViYmVhLi4xMTRjNzg3NjMwNCAxMDA2NDQKLS0tLSBhL2xpYmdjYy9NYWtlZmlsZS5pbgotKysrIGIvbGliZ2NjL01ha2VmaWxlLmluCi1AQCAtNTAsNiArNTAsNyBAQCB1bndpbmRfaGVhZGVyID0gQHVud2luZF9oZWFkZXJACi0gbWRfdW53aW5kX2hlYWRlciA9IEBtZF91bndpbmRfaGVhZGVyQAotIHNmcF9tYWNoaW5lX2hlYWRlciA9IEBzZnBfbWFjaGluZV9oZWFkZXJACi0gdGhyZWFkX2hlYWRlciA9IEB0aHJlYWRfaGVhZGVyQAotK3dpdGhfbGRibDEyOCA9IEB3aXRoX2xkYmwxMjhACitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDYxMjFlMTYzMjU5Li4wN2ZmODU5N2Q0OCAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yOTMwOSw2ICsyOTMwOSwxNSBAQCBpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKKyBlbHNlCiAgCi0gaG9zdF9ub25jYW5vbmljYWwgPSBAaG9zdF9ub25jYW5vbmljYWxACi0gcmVhbF9ob3N0X25vbmNhbm9uaWNhbCA9IEByZWFsX2hvc3Rfbm9uY2Fub25pY2FsQAotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXggYi9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4Ci1pbmRleCA0ZjZkNGM0YTRkMi4uYzUwZGQ5NGEyZGEgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4Ci0rKysgYi9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4Ci1AQCAtMSwzICsxLDYgQEAKLSBTSExJQl9NQVBGSUxFUyArPSAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9saWJnY2MtZ2xpYmMudmVyCisrICAgICAgY2FzZSAiJHRhcmdldCIgaW4KKysJczM5MCotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCisrCSAgOzsKKysJcG93ZXJwYyotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KKysJICA7OworKwkqKQorKworIGlmIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWFqb3IgLWd0IDIgXAorICAgfHwgKCB0ZXN0ICRnbGliY192ZXJzaW9uX21ham9yIC1lcSAyICYmIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWlub3IgLWdlIDQgKTsgdGhlbiA6CisgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCitAQCAtMjkzMjAsNiArMjkzMjksMTAgQEAgZWxzZQorICAgICAgICYmIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKICAKLS1IT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtMTI4IC1tbm8tbWluaW1hbC10b2MKLStpZmVxICgkKHdpdGhfbGRibDEyOCkseWVzKQotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjgKLStlbmRpZgotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1uby1taW5pbWFsLXRvYwotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCi1vbGQgbW9kZSAxMDA2NDQKLW5ldyBtb2RlIDEwMDc1NQotaW5kZXggMzZkYmJjMWY2OTkuLmI1ZGQ1YzM0ZTJhCi0tLS0gYS9saWJnY2MvY29uZmlndXJlCi0rKysgYi9saWJnY2MvY29uZmlndXJlCi1AQCAtNjUxLDYgKzY1MSw3IEBAIGJ1aWxkX3ZlbmRvcgotIGJ1aWxkX2NwdQotIGJ1aWxkCi0gd2l0aF9haXhfc29uYW1lCi0rd2l0aF9sZGJsMTI4Ci0gZW5hYmxlX3Z0YWJsZV92ZXJpZnkKLSBlbmFibGVfZ2NvdgotIGVuYWJsZV9zaGFyZWQKLUBAIC03MDIsNiArNzAzLDcgQEAgd2l0aF9sZAotIGVuYWJsZV9zaGFyZWQKLSBlbmFibGVfZ2NvdgotIGVuYWJsZV92dGFibGVfdmVyaWZ5Ci0rd2l0aF9sb25nX2RvdWJsZV8xMjgKLSB3aXRoX2FpeF9zb25hbWUKLSBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKLSB3aXRoX3NsaWJkaXIKLUBAIC0xMzYzLDYgKzEzNjUsNyBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC10YXJnZXQtc3ViZGlyPVNVQkRJUiAgICAgIENvbmZpZ3VyaW5nIGluIGEgc3ViZGlyZWN0b3J5IGZvciB0YXJnZXQKLSAgIC0td2l0aC1jcm9zcy1ob3N0PUhPU1QgICAgICAgICAgIENvbmZpZ3VyaW5nIHdpdGggYSBjcm9zcyBjb21waWxlcgotICAgLS13aXRoLWxkICAgICAgICAgICAgICAgYXJyYW5nZSB0byB1c2UgdGhlIHNwZWNpZmllZCBsZCAoZnVsbCBwYXRobmFtZSkKLSsgIC0td2l0aC1sb25nLWRvdWJsZS0xMjggIHVzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHQKLSAgIC0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBsaWJyYXJ5IHZlcnNpb25pbmcgKGFrYSAiU09OQU1FIikgdmFyaWFudCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBvbiBBSVgKLUBAIC0yMjY4LDYgKzIyNzEsMjEgQEAgZmkKKyBmaQorKworKwkgIDs7CisrICAgICAgZXNhYworKworIGZpCiAgCi0gCi0gCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1sb25nLWRvdWJsZS0xMjggd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9sb25nX2RvdWJsZV8xMjgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9sb25nX2RvdWJsZV8xMjg7IHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IgotK2Vsc2UKLSsgIGNhc2UgIiR7aG9zdH0iIGluCi0rIHBvd2VyKi0qLW11c2wqKQotKyAgIHdpdGhfbGRibDEyOD0ibm8iOzsKLSsgKikgd2l0aF9sZGJsMTI4PSJ5ZXMiOzsKLSsgZXNhYwotKwotK2ZpCi0rCi0rCi0rCi0rCi0gIyBDaGVjayB3aGV0aGVyIC0td2l0aC1haXgtc29uYW1lIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhfYWl4X3NvbmFtZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICB3aXRodmFsPSR3aXRoX2FpeF9zb25hbWU7IGNhc2UgIiR7aG9zdH06JHtlbmFibGVfc2hhcmVkfSIgaW4KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlndXJlLmFjIGIvbGliZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggOGU5NmNhZmRmOGIuLjkyNDc4NTZiZjI0IDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvbGliZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTgyLDYgKzgyLDE4IEBAIEFDX0FSR19FTkFCTEUodnRhYmxlLXZlcmlmeSwKLSBbZW5hYmxlX3Z0YWJsZV92ZXJpZnk9bm9dKQotIEFDX1NVQlNUKGVuYWJsZV92dGFibGVfdmVyaWZ5KQotIAotK0FDX0FSR19XSVRIKGxvbmctZG91YmxlLTEyOCwKLStbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1sb25nLWRvdWJsZS0xMjhdLAotKyAgICBbdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdF0pXSwKLSsgICAgICB3aXRoX2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIsCi0rW2Nhc2UgIiR7aG9zdH0iIGluCi0rIHBvd2VyKi0qLW11c2wqKQotKyAgIHdpdGhfbGRibDEyOD0ibm8iOzsKLSsgKikgd2l0aF9sZGJsMTI4PSJ5ZXMiOzsKLSsgZXNhYwotK10pCi0rQUNfU1VCU1Qod2l0aF9sZGJsMTI4KQotKwotIEFDX0FSR19XSVRIKGFpeC1zb25hbWUsCi0gW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYWl4LXNvbmFtZT1haXh8c3ZyNHxib3RoXSwKLSAgICAgW3NoYXJlZCBsaWJyYXJ5IHZlcnNpb25pbmcgKGFrYSAiU09OQU1FIikgdmFyaWFudCB0byBwcm92aWRlIG9uIEFJWF0pXSwKKyAgICAgOzsKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggYjA2NmNjNjA5ZTEuLjZjMTVlZDg5OGMwIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTU5NzEsMTMgKzU5NzEsMjUgQEAgY2FzZSAiJHRhcmdldCIgaW4KKyAgICAgQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAorICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCisgCQkgICAgICBbdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdF0pXSwKKy0gICAgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIsCisrICAgICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLCBbCisrICAgICAgY2FzZSAiJHRhcmdldCIgaW4KKysJczM5MCotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCisrCSAgOzsKKysJcG93ZXJwYyotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KKysJICA7OworKwkqKV0KKyAgICAgICBbR0NDX0dMSUJDX1ZFUlNJT05fR1RFX0lGRUxTRShbMl0sIFs0XSwgW2djY19jdl90YXJnZXRfbGRibDEyOD15ZXNdLCBbCisgICAgICAgW2djY19jdl90YXJnZXRfbGRibDEyOD1ubworICAgICAgIGdyZXAgJ15bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKl9fTE9OR19ET1VCTEVfTUFUSF9PUFRJT05BTCcgXAorICAgICAgICAgJHRhcmdldF9oZWFkZXJfZGlyL2JpdHMvd29yZHNpemUuaCA+IC9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAmJiBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCistICAgICAgXV0pXSkKKysgICAgICBdXSldCisrICAgICAgWworKwkgIDs7CisrICAgICAgZXNhYworKyAgICAgIF0pCisgICAgIDs7CisgZXNhYworIGlmIHRlc3QgeCRnY2NfY3ZfdGFyZ2V0X2xkYmwxMjggPSB4eWVzOyB0aGVuCiAtLSAKLTIuMjIuMQorMi4xNy4xCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE0MjUwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTQyNTAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVlYTM0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE0MjUwLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gNTE3YjIxMWEzZDc4MzY2Y2E4ZDU5MjlmNTgwZThjYTcyZmQyYzAwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHJndWVudGggPHJndWVudGhAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgorRGF0ZTogVGh1LCAyNSBKdWwgMjAxOSAxMDo0Njo1NCArMDAwMAorU3ViamVjdDogW1BBVENIXSAyMDE5LTA3LTI1ICBSaWNoYXJkIEJpZW5lciAgPHJndWVudGhlckBzdXNlLmRlPgorCisJUFIgbHRvLzkwOTI0CisJQmFja3BvcnQgZnJvbSBtYWlubGluZQorCTIwMTktMDctMTIgIFJlbiBLaW11cmEgIDxya3gxMjA5ZGV2QGdtYWlsLmNvbT4KKworCSogc2ltcGxlLW9iamVjdC1lbGYuYyAoc2ltcGxlX29iamVjdF9lbGZfbWF0Y2gpOiBDaGVjayB6ZXJvIHZhbHVlCisJc2hzdHJuZHguCisKKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3Mzc5MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQWZmZWN0ZXM6IDwgIDkuMgorQ1ZFOiBDVkUtMjAxOS0xNDI1MAorRHJvcHBlZCBjaGFuZ2Vsb2cKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8QWt1c3RyZUBtdmlzdGEuY29tPgorCistLS0KKyBsaWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYyB8IDggKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKKworSW5kZXg6IGdjYy05LjIuMC9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy05LjIuMC5vcmlnL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCisrKysgZ2NjLTkuMi4wL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCitAQCAtNTU3LDYgKzU1NywxNCBAQCBzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCAodW5zaWduZWQgY2hhciBoCisgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKyAKKysgIGlmIChlb3ItPnNoc3RybmR4ID09IDApCisrICAgIHsKKysgICAgICAqZXJybXNnID0gImludmFsaWQgRUxGIHNoc3RybmR4ID09IDAiOworKyAgICAgICplcnIgPSAwOworKyAgICAgIFhERUxFVEUgKGVvcik7CisrICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKyAgIHJldHVybiAodm9pZCAqKSBlb3I7CisgfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCmluZGV4IDk2MzM0ZTUuLjQ0Y2JhMjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKQEAgLTE3LDcgKzE3LDcgQEAKICAgICBzcmMgPSBkLmV4cGFuZCgiJHtDT01QT05FTlRTX0RJUn0vJHtCVUlMRF9BUkNIfS9nY2Mtc3Rhc2hlZC1idWlsZGRpci0ke1RBUkdFVF9TWVN9IikKICAgICBkZXN0ID0gZC5nZXRWYXIoIkIiKQogICAgIG9lLnBhdGguY29weWhhcmRsaW5rdHJlZShzcmMsIGRlc3QpCi0gICAgc3RhZ2luZ19wcm9jZXNzZml4bWUoW3NyYyArICIvZml4bWVwYXRoIl0sIGRlc3QsIGRlc3QsIGRlc3QsIGQpCisgICAgc3RhZ2luZ19wcm9jZXNzZml4bWUoW3NyYyArICIvZml4bWVwYXRoIl0sIGRlc3QsIGQuZ2V0VmFyKCJSRUNJUEVfU1lTUk9PVCIpLCBkLmdldFZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiksIGQpCiB9CiAKIGRlZiBnZXRfZ2NjX2Zsb2F0X3NldHRpbmcoYmIsIGQpOgpAQCAtNDEsMTMgKzQxLDYgQEAKICAgICAgICAgcmV0dXJuICItLWVuYWJsZS1zZWN1cmVwbHQiCiAgICAgcmV0dXJuICIiCiAKLWRlZiBnZXRfbG9uZ19kb3VibGVfc2V0dGluZyhiYiwgZCk6Ci0gICAgaWYgZC5nZXRWYXIoJ1RSQU5TTEFURURfVEFSR0VUX0FSQ0gnKSBpbiBbICdwb3dlcnBjJywgJ3Bvd2VycGM2NCcgXSBhbmQgZC5nZXRWYXIoJ1RDTElCQycpIGluIFsgJ2dsaWJjJyBdOgotICAgICAgICByZXR1cm4gIi0td2l0aC1sb25nLWRvdWJsZS0xMjgiCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICItLXdpdGhvdXQtbG9uZy1kb3VibGUtMTI4IGxpYmdjY19jdl9wb3dlcnBjX2Zsb2F0MTI4PW5vIgotICAgIHJldHVybiAiIgotCiBkZWYgZ2V0X2djY19tdWx0aWFyY2hfc2V0dGluZyhiYiwgZCk6CiAgICAgdGFyZ2V0X2FyY2ggPSBkLmdldFZhcignVFJBTlNMQVRFRF9UQVJHRVRfQVJDSCcpCiAgICAgbXVsdGlhcmNoX29wdGlvbnMgPSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYwppbmRleCBiNmYyY2E1Li4yNGJhOGNlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKQEAgLTM2LDcgKzM2LDYgQEAKICAgICAke0VYVFJBX09FQ09ORl9QQVRIU30gXAogICAgICR7QGdldF9nY2NfbWlwc19wbHRfc2V0dGluZyhiYiwgZCl9IFwKICAgICAke0BnZXRfZ2NjX3BwY19wbHRfc2V0dGluZ3MoYmIsIGQpfSBcCi0gICAgJHtAZ2V0X2xvbmdfZG91YmxlX3NldHRpbmcoYmIsIGQpfSBcCiAgICAgJHtAZ2V0X2djY19tdWx0aWFyY2hfc2V0dGluZyhiYiwgZCl9IFwKICIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl84LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY1M2M1Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1jcm9zcy1jYW5hZGlhbi5pbmMKLQotCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKaW5kZXggNjIyMmMyZS4uOTVhZjZkOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKQEAgLTE5Niw2ICsxOTYsOCBAQAogCSMgV2UgdXNlIGxpYmliZXJ0eSBmcm9tIGJpbnV0aWxzCiAJZmluZCAke0R9JHtleGVjX3ByZWZpeH0vbGliIC1uYW1lIGxpYmliZXJ0eS5hIHwgeGFyZ3Mgcm0gLWYKIAlmaW5kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIgLW5hbWUgbGliaWJlcnR5LmggfCB4YXJncyBybSAtZgorCisJZmluZCAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS1maXhlZCAtdHlwZSBmIC1ub3QgLW5hbWUgIlJFQURNRSIgLW5vdCAtbmFtZSBsaW1pdHMuaCAtbm90IC1uYW1lIHN5c2xpbWl0cy5oIHwgeGFyZ3Mgcm0gLWYKIH0KIAogZG9fcGFja2FnZVtub2V4ZWNdID0gIjEiCkBAIC0yMTAsNiArMjEyLDkgQEAKIGRvX2djY19zdGFzaF9idWlsZGRpciAoKSB7CiAJZGVzdD0ke0JVSUxERElSU1RBU0h9CiAJaGFyZGxpbmtkaXIgLiAkZGVzdAorCSMgTWFrZWZpbGUgZG9lcyBtb3ZlLWlmLWNoYW5nZSB3aGljaCBjYW4gZW5kIHVwIHdpdGggJ3RpbWVzdGFtcCcgYXMgZmlsZSBjb250ZW50cyBzbyBicmVhayBsaW5rcyB0byB0aG9zZSBmaWxlcworCXJtICRkZXN0L2djYy9pbmNsdWRlLyouaAorCWNwIGdjYy9pbmNsdWRlLyouaCAkZGVzdC9nY2MvaW5jbHVkZS8KIH0KIGFkZHRhc2sgZG9fZ2NjX3N0YXNoX2J1aWxkZGlyIGFmdGVyIGRvX2NvbXBpbGUgYmVmb3JlIGRvX2luc3RhbGwKIFNTVEFURVRBU0tTICs9ICJkb19nY2Nfc3Rhc2hfYnVpbGRkaXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDNjY2EwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLWNyb3NzLmluYwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGE2YzRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc18ke1BWfS5iYgotcmVxdWlyZSBnY2MtY3Jvc3NzZGsuaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwppbmRleCAyMmMxZDc4Li4yZGEzYzAyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKQEAgLTI3NywzICsyNzcsNDUgQEAKIFNVTU1BUllfbGliaXRtLWRldiA9ICJHTlUgdHJhbnNhY3Rpb25hbCBtZW1vcnkgc3VwcG9ydCBsaWJyYXJ5IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiBGSUxFU19saWJpdG0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJpdG0uYSIKIFNVTU1BUllfbGliaXRtLXN0YXRpY2RldiA9ICJHTlUgdHJhbnNhY3Rpb25hbCBtZW1vcnkgc3VwcG9ydCBsaWJyYXJ5IC0gc3RhdGljIGRldmVsb3BtZW50IGZpbGVzIgorCityZXF1aXJlIGdjYy10ZXN0c3VpdGUuaW5jCisKK0VYVFJBX09FTUFLRV9wcmVwZW5kX3Rhc2stY2hlY2sgPSAiJHtQQVJBTExFTF9NQUtFfSAiCisKK01BS0VfQ0hFQ0tfVEFSR0VUUyA/Pz0gImNoZWNrLWdjYyAke0AiICIuam9pbigiY2hlY2stdGFyZ2V0LSIgKyBpIGZvciBpIGluIGQuZ2V0VmFyKCJSVU5USU1FVEFSR0VUIikuc3BsaXQoKSl9IgorIyBwcmV0dHlwcmludGVycyBhbmQgeG1ldGhvZHMgcmVxdWlyZSBnZGIgdG9vbGluZworTUFLRV9DSEVDS19JR05PUkUgPz89ICJwcmV0dHlwcmludGVycy5leHAgeG1ldGhvZHMuZXhwIgorTUFLRV9DSEVDS19SVU5URVNURkxBR1MgPz89ICIke01BS0VfQ0hFQ0tfQk9BUkRBUkdTfSAtLWlnbm9yZSAnJHtNQUtFX0NIRUNLX0lHTk9SRX0nIgorCisjIHNwZWNpZmljIGhvc3QgYW5kIHRhcmdldCBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgZm9yIHRlc3Qgc3VpdGUgcnVubmluZworZG9fY2hlY2tbZGVwZW5kc10gKz0gImRlamFnbnUtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgZXhwZWN0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9fY2hlY2tbZGVwZW5kc10gKz0gInZpcnR1YWwvbGliYzpkb19wb3B1bGF0ZV9zeXNyb290IgorIyBvbmx5IGRlcGVuZCBvbiBxZW11IGlmIHRhcmdldGluZyBsaW51eCB1c2VyIGV4ZWN1dGlvbgorZG9fY2hlY2tbZGVwZW5kc10gKz0gIiR7QCdxZW11LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JyBpZiAidXNlciIgaW4gZC5nZXRWYXIoJ1RPT0xDSEFJTl9URVNUX1RBUkdFVCcpIGVsc2UgJyd9IgorIyBleHRlbmQgdGhlIHJlY2lwZSBzeXNyb290IHRvIGluY2x1ZGUgdGhlIGJ1aWx0IGxpYnJhcmllcyAoZm9yIHFlbXUgdXNlcm1vZGUpCitkb19jaGVja1twcmVmdW5jc10gKz0gImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIKK2RvX2NoZWNrW3ByZWZ1bmNzXSArPSAiY2hlY2tfcHJlcGFyZSIKK2RvX2NoZWNrW2RpcnNdID0gIiR7V09SS0RJUn0vZGVqYWdudSAke0J9IgorZG9fY2hlY2tbbm9zdGFtcF0gPSAiMSIKK2RvX2NoZWNrKCkgeworICAgIGV4cG9ydCBERUpBR05VPSIke1dPUktESVJ9L2RlamFnbnUvc2l0ZS5leHAiCisKKyAgICAjIEhBQ0s6IHRoaXMgd29ya3MgYXJvdW5kIHRoZSBjb25maWd1cmUgc2V0dGluZyBDWFggd2l0aCAtbm9zdGQqIGFyZ3MKKyAgICBzZWQgLWkgJ3MvLW5vc3RkaW5jKysgLW5vc3RkbGliKysvL2cnICQoZmluZCAke0J9IC1uYW1lIHRlc3RzdWl0ZV9mbGFncyB8IGhlYWQgLTEpCisgICAgIyBIQUNLOiB0aGlzIHdvcmtzIGFyb3VuZCB0aGUgZGUtc3Rhc2hpbmcgY2hhbmdlcyB0byBjb25maWdhcmdzLmgsIGFzIHdlbGwgYXMgcmVjaXBlLXN5c3Jvb3QgY2hhbmdpbmcgdGhlIGNvbnRlbnQKKyAgICBzZWQgLWkgJy9zdGF0aWMgY29uc3QgY2hhciBjb25maWd1cmF0aW9uX2FyZ3VtZW50cy9kJyAke0J9L2djYy9jb25maWdhcmdzLmgKKyAgICAke0NDfSAtdiAyPiYxIHwgZ3JlcCAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgXAorICAgICAgICBzZWQgJ3MvQ29uZmlndXJlZCB3aXRoOiBcKC4qXCkvc3RhdGljIGNvbnN0IGNoYXIgY29uZmlndXJhdGlvbl9hcmd1bWVudHNbXSA9ICJcMSI7L2cnID4+ICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAorCisgICAgaWYgWyAiJHtUT09MQ0hBSU5fVEVTVF9UQVJHRVR9IiA9ICJ1c2VyIiBdOyB0aGVuCisgICAgICAgICMgcWVtdSB1c2VyIGhhcyBpc3N1ZXMgYWxsb2NhdGluZyBsYXJnZSBhbW91bnRzIG9mIG1lbW9yeQorICAgICAgICBleHBvcnQgR19TTElDRT1hbHdheXMtbWFsbG9jCisgICAgICAgICMgbm8gdGVzdCBzaG91bGQgbmVlZCBtb3JlIHRoYXQgMTBHIG9mIG1lbW9yeSwgdGhpcyBwcmV2ZW50cyB0ZXN0cyBsaWtlIHB0aHJlYWQ3LXJvcGUgZnJvbSBsZWFraW5nIG1lbW9yeQorICAgICAgICB1bGltaXQgLW0gNDE5NDMwNAorICAgICAgICB1bGltaXQgLXYgMTA0ODU3NjAKKyAgICBmaQorCisgICAgb2VfcnVubWFrZSAtaSAke01BS0VfQ0hFQ0tfVEFSR0VUU30gUlVOVEVTVEZMQUdTPSIke01BS0VfQ0hFQ0tfUlVOVEVTVEZMQUdTfSIKK30KK2FkZHRhc2sgY2hlY2sgYWZ0ZXIgZG9fY29tcGlsZSBkb19wb3B1bGF0ZV9zeXNyb290CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV84LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDQzMGI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV84LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBnY2MtcnVudGltZS5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc184LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2M3MDU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc184LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBnY2Mtc2FuaXRpemVycy5pbmMKLQotIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjR0IGFybXY1dCBmYWlscyB3aXRoCi0jIHNhbml0aXplcl9saW51eC5zOjU3NDk6IEVycm9yOiBsbyByZWdpc3RlciByZXF1aXJlZCAtLSBgbGRyIGlwLFtzcF0sIzgnCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODkwZmEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2UuaW5jCi0KLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10ZXN0c3VpdGUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10ZXN0c3VpdGUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OGZlYzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRlc3RzdWl0ZS5pbmMKQEAgLTAsMCArMSwxMDcgQEAKK2luaGVyaXQgcWVtdQorCitUT09MQ0hBSU5fVEVTVF9UQVJHRVQgPz89ICJ1c2VyIgorVE9PTENIQUlOX1RFU1RfSE9TVCA/Pz0gImxvY2FsaG9zdCIKK1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUiA/Pz0gInJvb3QiCitUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlQgPz89ICIyMjIyIgorCitNQUtFX0NIRUNLX0JPQVJERkxBR1MgPz89ICIiCitNQUtFX0NIRUNLX0JPQVJEQVJHUyA/Pz0gIi0tdGFyZ2V0X2JvYXJkPSR7VE9PTENIQUlOX1RFU1RfVEFSR0VUfSR7TUFLRV9DSEVDS19CT0FSREZMQUdTfSIKKworcHl0aG9uICgpIHsKKyAgICAjIFByb3ZpZGUgdGhlIHRhcmdldHMgY29tcGlsZXIgYXJncyB2aWEgdGFyZ2V0cyBvcHRpb25zLiBUaGlzIGFsbG93cyBkZWphZ251IHRvCisgICAgIyBjb3JyZWN0bHkgbWFyayBpbmNvbXBhdGlibGUgdGVzdHMgYXMgVU5TVVBQT1JURUQgKGUuZy4gbmVlZHMgc29mdC1mbG9hdAorICAgICMgYnV0IHJ1bm5pbmcgb24gaGFyZC1mbG9hdCB0YXJnZXQpLgorICAgICMKKyAgICAjIFRoZXNlIG9wdGlvbnMgYXJlIGNhbGxlZCAibXVsdGlsaWJfZmxhZ3MiIHdpdGhpbiB0aGUgZ2NjIHRlc3Qgc3VpdGUuIE1vc3QKKyAgICAjIGFyY2hpdGVjdHVyZXMgaGFuZGxlIHRoZXNlIG9wdGlvbnMgaW4gYSBzZW5zaWJsZSB3YXkgc3VjaCB0aGF0IHRlc3RzIHRoYXQKKyAgICAjIGFyZSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJvdmlkZWQgbXVsdGlsaWIgYXJlIG1hcmtlZCBhcyBVTlNVUFBPUlRFRC4KKyAgICAjCisgICAgIyBOb3RlOiBtdWx0aWxpYiBmbGFncyBhcmUgYWRkZWQgdG8gdGhlIGNvbXBpbGUgY29tbWFuZCBhZnRlciB0aGUgYXJncworICAgICMgcHJvdmlkZWQgYnkgYW55IHRlc3QgKHRocm91Z2ggZGctb3B0aW9ucyksIENGTEFHU19GT1JfVEFSR0VUIGlzIGFsd2F5cworICAgICMgYWRkZWQgdG8gdGhlIGNvbXBpbGUgY29tbWFuZCBiZWZvcmUgYW55IG90aGVyIGFyZ3MgYnV0IGlzIG5vdCBpbnRlcnB0ZWQKKyAgICAjIGFzIG9wdGlvbnMgbGlrZSBtdWx0aWxpYiBmbGFncy4KKyAgICAjCisgICAgIyBpNjg2LCB4ODYtNjQgYW5kIGFhcmNoNjQgYXJlIHNwZWNpYWwsIHNpbmNlIG1vc3QgdG9vbGNoYWlucyBidWlsdCBmb3IKKyAgICAjIHRoZXNlIHRhcmdldHMgZG9uJ3QgZG8gbXVsdGlsaWIgdGhlIHRlc3RzIGRvIG5vdCBnZXQgY29ycmVjdGx5IG1hcmtlZCBhcworICAgICMgVU5TVVBQT1JURUQuIE1vcmUgaW1wb3J0YW50bHkgdGhlIHRlc3Qgc3VpdGUgaXRzZWxmIGRvZXMgbm90IGhhbmRsZQorICAgICMgb3ZlcnJpZGluZyB0aGUgbXVsdGlsaWIgZmxhZ3Mgd2hlcmUgaXQgY291bGQgKGxpa2Ugb3RoZXIgYXJjaHMgZG8pLiBBcworICAgICMgc3VjaCBkbyBub3QgcGFzcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGFyZ3MgZm9yIHRoZXNlIHRhcmdldHMuCisgICAgYXJncyA9IGQuZ2V0VmFyKCJUVU5FX0NDQVJHUyIpLnNwbGl0KCkKKyAgICBpZiBkLmdldFZhcigiVFVORV9BUkNIIikgaW4gWyJpNjg2IiwgIng4Nl82NCIsICJhYXJjaDY0Il06CisgICAgICAgIGFyZ3MgPSBbXQorICAgIGQuc2V0VmFyKCJNQUtFX0NIRUNLX0JPQVJERkxBR1MiLCAoIi8iICsgIi8iLmpvaW4oYXJncykpIGlmIGxlbihhcmdzKSAhPSAwIGVsc2UgIiIpCit9CisKK3B5dGhvbiBjaGVja19wcmVwYXJlKCkgeworICAgIGRlZiBnZW5lcmF0ZV9xZW11X2xpbnV4X3VzZXJfY29uZmlnKGQpOgorICAgICAgICBjb250ZW50ID0gW10KKyAgICAgICAgY29udGVudC5hcHBlbmQoJ2xvYWRfZ2VuZXJpY19jb25maWcgInNpbSInKQorICAgICAgICBjb250ZW50LmFwcGVuZCgnbG9hZF9iYXNlX2JvYXJkX2Rlc2NyaXB0aW9uICJiYXNpYy1zaW0iJykKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3Byb2Nlc3NfbXVsdGlsaWJfb3B0aW9ucyAiIicpCisKKyAgICAgICAgIyBxZW11IGFyZ3MKKyAgICAgICAgcWVtdV9iaW5hcnkgPSBxZW11X3RhcmdldF9iaW5hcnkoZCkKKyAgICAgICAgaWYgbm90IHFlbXVfYmluYXJ5OgorICAgICAgICAgICAgYmIuZmF0YWwoIk1pc3NpbmcgdGFyZ2V0IHFlbXUgbGludXgtdXNlciBiaW5hcnkiKQorCisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICAjIFFFTVVfT1BUSU9OUyBpcyBub3QgYWx3YXlzIHZhbGlkIGR1ZSB0byAtY3Jvc3MgcmVjaXBlCisgICAgICAgIGFyZ3MgKz0gWyItciIsIGQuZ2V0VmFyKCJPTERFU1RfS0VSTkVMIildCisgICAgICAgICMgZW5hYmxlIGFsbCB2YWxpZCBpbnN0cnVjdGlvbnMsIHNpbmNlIHRoZSB0ZXN0IHN1aXRlIGl0c2VsZiBkb2VzIG5vdAorICAgICAgICAjIGxpbWl0IGl0c2VsZiB0byB0aGUgdGFyZ2V0IGNwdSBvcHRpb25zLgorICAgICAgICAjICAgLSB2YWxpZCBmb3IgeDg2KiwgcG93ZXJwYywgYXJtLCBhcm02NAorICAgICAgICBpZiBxZW11X2JpbmFyeS5sc3RyaXAoInFlbXUtIikgaW4gWyJ4ODZfNjQiLCAiaTM4NiIsICJwcGMiLCAiYXJtIiwgImFhcmNoNjQiXToKKyAgICAgICAgICAgIGFyZ3MgKz0gWyItY3B1IiwgIm1heCJdCisKKyAgICAgICAgc3lzcm9vdCA9IGQuZ2V0VmFyKCJSRUNJUEVfU1lTUk9PVCIpCisgICAgICAgIGFyZ3MgKz0gWyItTCIsIHN5c3Jvb3RdCisgICAgICAgICMgbGliIHBhdGhzIGFyZSBzdGF0aWMgaGVyZSBpbnN0ZWFkIG9mIHVzaW5nICRsaWJkaXIgc2luY2UgdGhpcyBpcyB1c2VkIGJ5IGEgLWNyb3NzIHJlY2lwZQorICAgICAgICBsaWJwYXRocyA9IFtzeXNyb290ICsgIi91c3IvbGliIiwgc3lzcm9vdCArICIvbGliIl0KKyAgICAgICAgYXJncyArPSBbIi1FIiwgIkxEX0xJQlJBUllfUEFUSD17MH0iLmZvcm1hdCgiOiIuam9pbihsaWJwYXRocykpXQorCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXRfYm9hcmRfaW5mbyBpc19zaW11bGF0b3IgMScpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXRfYm9hcmRfaW5mbyBzaW0gInswfSInLmZvcm1hdChxZW11X2JpbmFyeSkpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXRfYm9hcmRfaW5mbyBzaW0sb3B0aW9ucyAiezB9IicuZm9ybWF0KCIgIi5qb2luKGFyZ3MpKSkKKworICAgICAgICAjIHRhcmdldCBidWlsZC90ZXN0IGNvbmZpZworICAgICAgICBjb250ZW50LmFwcGVuZCgnc2V0X2JvYXJkX2luZm8gdGFyZ2V0X2luc3RhbGwgeyVzfScgJSBkLmdldFZhcigiVEFSR0VUX1NZUyIpKQorICAgICAgICBjb250ZW50LmFwcGVuZCgnc2V0X2JvYXJkX2luZm8gbGRzY3JpcHQgIiInKQorICAgICAgICAjY29udGVudC5hcHBlbmQoJ3NldF9ib2FyZF9pbmZvIG5lZWRzX3N0YXR1c193cmFwcGVyIDEnKSAjIHFlbXUtbGludXgtdXNlciByZXR1cm4gY29kZXMgd29yaywgYW5kIGFib3J0IHdvcmtzIGZpbmUKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldF9ib2FyZF9pbmZvIGdjYyxzdGFja19zaXplIDE2ODM0JykKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldF9ib2FyZF9pbmZvIGdkYixub3NpZ25hbHMgMScpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXRfYm9hcmRfaW5mbyBnY2MsdGltZW91dCA2MCcpCisKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihjb250ZW50KQorCisgICAgZGVmIGdlbmVyYXRlX3JlbW90ZV9zc2hfbGludXhfY29uZmlnKGQpOgorICAgICAgICBjb250ZW50ID0gW10KKyAgICAgICAgY29udGVudC5hcHBlbmQoJ2xvYWRfZ2VuZXJpY19jb25maWcgInVuaXgiJykKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3Byb2Nlc3NfbXVsdGlsaWJfb3B0aW9ucyAiIicpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJzZXRfYm9hcmRfaW5mbyBob3N0bmFtZSB7MH0iLmZvcm1hdChkLmdldFZhcigiVE9PTENIQUlOX1RFU1RfSE9TVCIpKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoInNldF9ib2FyZF9pbmZvIHVzZXJuYW1lIHswfSIuZm9ybWF0KGQuZ2V0VmFyKCJUT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVIiKSkpCisKKyAgICAgICAgcG9ydCA9IGQuZ2V0VmFyKCJUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlQiKQorICAgICAgICBjb250ZW50LmFwcGVuZCgic2V0X2JvYXJkX2luZm8gcnNoX3Byb2cgXCIvdXNyL2Jpbi9zc2ggLXAgezB9IC1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vXCIiLmZvcm1hdChwb3J0KSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoInNldF9ib2FyZF9pbmZvIHJjcF9wcm9nIFwiL3Vzci9iaW4vc2NwIC1QIHswfSAtbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ub1wiIi5mb3JtYXQocG9ydCkpCisKKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihjb250ZW50KQorCisgICAgZGVqYWdudWRpciA9IGQuZXhwYW5kKCIke1dPUktESVJ9L2RlamFnbnUiKQorICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRlamFnbnVkaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhkZWphZ251ZGlyKQorCisgICAgIyB3cml0ZSBvdXQgdGFyZ2V0IHFlbXUgYm9hcmQgY29uZmlnCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZWphZ251ZGlyLCAidXNlci5leHAiKSwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKGdlbmVyYXRlX3FlbXVfbGludXhfdXNlcl9jb25maWcoZCkpCisKKyAgICAjIHdyaXRlIG91dCB0YXJnZXQgc3NoIGJvYXJkIGNvbmZpZworICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGVqYWdudWRpciwgInNzaC5leHAiKSwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKGdlbmVyYXRlX3JlbW90ZV9zc2hfbGludXhfY29uZmlnKGQpKQorCisgICAgIyBnZW5lcmF0ZSBzaXRlLmV4cCB0byBwcm92aWRlIGJvYXJkcworICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGVqYWdudWRpciwgInNpdGUuZXhwIiksICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZSgibGFwcGVuZCBib2FyZHNfZGlyIHswfVxuIi5mb3JtYXQoZGVqYWdudWRpcikpCisgICAgICAgIGYud3JpdGUoInNldCBDRkxBR1NfRk9SX1RBUkdFVCBcInswfVwiXG4iLmZvcm1hdChkLmdldFZhcigiVE9PTENIQUlOX09QVElPTlMiKSkpCit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY184LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkOTM1OTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY184LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXRhcmdldC5pbmMKLQotIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjR0IGFybXY1dCBmYWlscyB3aXRoCi0jIHwgZ2NjLTQuOC4xLXIwL2djYy00LjguMS9nY2MvY3AvZGVjbC5jOjc0Mzg6KC50ZXh0LnVubGlrZWx5KzB4MmZhKTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX0FSTV9USE1fQ0FMTCBhZ2FpbnN0IHN5bWJvbCBgZmFuY3lfYWJvcnQoY2hhciBjb25zdCosIGludCwgY2hhciBjb25zdCopJyBkZWZpbmVkIGluIC5nbHVlXzcgc2VjdGlvbiBpbiBsaW5rZXIgc3R1YnMKLSMgfCBnY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9jcC9kZWNsLmM6NzQ0MjooLnRleHQudW5saWtlbHkrMHgzMTgpOiBhZGRpdGlvbmFsIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9taXR0ZWQgZnJvbSB0aGUgb3V0cHV0Ci1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1BUk1GUEFSQ0hFWFRfYXJtdjYgPSAiJHtAJytmcCcgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnaGFyZCcgZWxzZSAnJ30iCi1BUk1GUEFSQ0hFWFRfYXJtdjdhID0gIiR7QCcrZnAnIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ2hhcmQnIGVsc2UgJyd9IgotQVJNRlBBUkNIRVhUX2FybXY3dmUgPSAiJHtAJytmcCcgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnaGFyZCcgZWxzZSAnJ30iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF84LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjNjk4YzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGxpYmdjYy1pbml0aWFsLmluYwotCi0jIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NnQgZmFpbHMKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY184LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWEyMTBhMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGxpYmdjYy5pbmMKLQotIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjZ0IGZhaWxzCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl84LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWRkOGI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl84LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBsaWJnZm9ydHJhbi5pbmMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYwppbmRleCAzZjIzZjA2Li4zOTE1N2ZmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYwpAQCAtMSw3ICsxLDcgQEAKIHJlcXVpcmUgZ28tY29tbW9uLmluYwogCiBHT19CQVNFVkVSU0lPTiA9ICIxLjEyIgotR09fTUlOT1IgPSAiLjYiCitHT19NSU5PUiA9ICIuOSIKIFBWIC49ICIke0dPX01JTk9SfSIKIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgogCkBAIC0xOSw1ICsxOSw1IEBACiAiCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIgogCi1TUkNfVVJJW21haW4ubWQ1c3VtXSA9ICI0OGE0MTQxZmM3MThkZDc0MmQxMDY0MzEyOTRmMDhiZiIKLVNSQ19VUklbbWFpbi5zaGEyNTZzdW1dID0gImM5NmM1Y2NjNzQ1NTYzOGFlMWE4Yjc0OThhMDMwZmU2NTM3MzFjODM5MWM1ZjhlNzk1OTBiY2U3MmY5MmI0Y2EiCitTUkNfVVJJW21haW4ubWQ1c3VtXSA9ICI2MTMyMTA5ZDQwNTBkYTM0OWVhZGM5ZjdiMDMwNGVmNCIKK1NSQ19VUklbbWFpbi5zaGEyNTZzdW1dID0gImFiMGU1NmVkOWM0NzMyYTY1M2VkMjJlMjMyNjUyNzA5YWZiZjU3M2U3MTBmNTZhMDdmN2ZkZWNhNTc4ZDYyZmMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIKaW5kZXggYTRkNjMxZi4uZWFkODc4NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuNC5iYgpAQCAtOCw4ICs4LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXN1cHBvcnQtZm9yLW1pcHMtbWlwczY0LnBhdGNoO3BhdGNoZGlyPXNyYy9naXRodWIuY29tL2dvbGFuZy9kZXAgXAogICAgICAgICAgICIKIAotIyBQb2ludHMgdG8gMC41LjAgdGFnCi1TUkNSRVYgPSAiMjI0YTU2NGFiZTI5NjY3MGI2OTJmZTA4YmI2M2EzZTRjNGFkNzk3OCIKK1NSQ1JFViA9ICIxZjdjMTllNWY1MmY0OWZmYjlmOTU2ZjY0YzAxMGJlMTQ2ODM0NjhiIgogCiBpbmhlcml0IGdvCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuMTEuYmIKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuMTAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjExLmJiCmluZGV4IDVmZWFlZWEuLmE2MGU4NTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjExLmJiCkBAIC01LDggKzUsOCBAQAogREVQRU5EUyA9ICJhdXRvY29uZi1uYXRpdmUgYXV0b21ha2UtbmF0aXZlIgogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMGQ3MDgzMzY1MGE1NTJlMGFmNzQyODgyYmE4NGYyZWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjM3MWNiZmQ2M2Y4NzkwNjU0MjJiNThmYTZiODFlMjE4NzBjZDc5MWVmNmUxMWQ0NTI4NjA4MjA0YWE0ZGNmYiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZDMyMmFkY2FlZGU1YmQ1ZWFlZDA3NWZmODk3MWJjMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTg1YjI1N2Y4NjMwNGM4NzkxODQyYzBjODA3YTM3NTQxZDBkNjgwN2VlOTczMDAwY2Y4YTNmZTZhZDQ3Yjg4IgogCiBpbmhlcml0IGF1dG90b29scyBuYXRpdmUKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0LzAwMDEtcmVhZGxpbmUuYy1maXgtY2Fubm90LWdldC1oaXN0b3J5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0LzAwMDEtcmVhZGxpbmUuYy1maXgtY2Fubm90LWdldC1oaXN0b3J5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNTRhYzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXQvMDAwMS1yZWFkbGluZS5jLWZpeC1jYW5ub3QtZ2V0LWhpc3RvcnkucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBlZjFmYTliZWY0OTdkOTQ5MWE1MTAxN2YzY2FkMDEzNWEyM2JiMGI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjAgQXVnIDIwMTkgMTc6MzM6MTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVhZGxpbmUuYzogZml4IGNhbm5vdCBnZXQgaGlzdG9yeQorCitpZiBoaXN0b3J5X29mZnNldCBub3QgaW5jcmVhdGUgd2hlbiBhZGQgaGlzdG9yeSwKK2l0IHdpbGwgbWFrZSBjdXJyZW50IGhpc3RvcnkgZXZlbnQgbm90IGFsaWduIHdpdGggb2Zmc2V0LAorYW5kIGNhbm5vdCBnZXQgaGlzdG9yeSBjb3JyZWN0bHkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFt0ZWNoLXVzZXJsZXZlbEBOZXRCU0Qub3JnXSAKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9yZWFkbGluZS5jIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvcmVhZGxpbmUuYyBiL3NyYy9yZWFkbGluZS5jCitpbmRleCA0M2FjNWJkLi41NGIwNTQ4IDEwMDY0NAorLS0tIGEvc3JjL3JlYWRsaW5lLmMKKysrKyBiL3NyYy9yZWFkbGluZS5jCitAQCAtMTQ3Niw3ICsxNDc2LDEwIEBAIGFkZF9oaXN0b3J5KGNvbnN0IGNoYXIgKmxpbmUpCisgCWlmIChldi5udW0gPT0gaGlzdG9yeV9sZW5ndGgpCisgCQloaXN0b3J5X2Jhc2UrKzsKKyAJZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgICAgICBoaXN0b3J5X29mZnNldCsrOworIAkJaGlzdG9yeV9sZW5ndGggPSBldi5udW07CisrICAgICAgICB9CisgCXJldHVybiAwOworIH0KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkwMzI0LTMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MDMyNC0zLjEuYmIKaW5kZXggNmE1OTllYi4uMjU2NjdjYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkwMzI0LTMuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxOTAzMjQtMy4xLmJiCkBAIC0xMCwxMCArMTAsOSBAQAogCiBpbmhlcml0IGF1dG90b29scwogCi0jIHVwc3RyZWFtIHNpdGUgZG9lcyBub3QgYWxsb3cgd2dldCdzIFVzZXItQWdlbnQKLUZFVENIQ01EX3dnZXQgKz0gIi1VIGJpdGJha2UiCiBTUkNfVVJJID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3N0ZGMtcHJlZGVmLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVhZGxpbmUuYy1maXgtY2Fubm90LWdldC1oaXN0b3J5LnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiYmVjNzU1YzgwNDRhZDg0Yjc1MmRmZTQ5YTBiMzcxZDgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWM4ZjBmNTFjMWNmNjU0OTJlNGQxZTNlZDJiZTM2MGJkYTQxZTU0NjMzNDQ0NjY2NDIyZmJmMzkzYmJhMWJhZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCmluZGV4IDM1YWQzY2UuLjA4YjE5YTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgpAQCAtNzEsNyArNzEsNyBAQAogICAgICAgICAgICAgICAgICAgLURMTFZNX09QVElNSVpFRF9UQUJMRUdFTj1PTiBcCiAgICAgICAgICAgICAgICAgICAtRExMVk1fVEFSR0VUU19UT19CVUlMRD0nJHtMTFZNX1RBUkdFVFN9JyBcCiAgICAgICAgICAgICAgICAgICAtRExMVk1fVEVNUE9SQVJJTFlfQUxMT1dfT0xEX1RPT0xDSEFJTj1PTiBcCi0gICAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMiBcCisgICAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMyBcCiAgICAgICAgICAgICAgICAgICAtRyBOaW5qYSIKIAogRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLmluYwppbmRleCAxNGU1ZjhhLi42ZGUxMDlkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24uaW5jCkBAIC0xNiwxMCArMTYsOSBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbmJ1aWxkLWVudmlyb25tZW50LnB5LWNoZWNrLWVudmlyb25tZW50LWZvci12YXJpLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbW9kdWxlcy1weXRob24ucHktZG8tbm90LXN1YnN0aXR1dGUtcHl0aG9uLXMtaW5zdGFsbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly92YWxhLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbWlzc2luZy1yZXR1cm4tc3RhdGVtZW50cy10aGF0LWFyZS1zZWVuLXdpdGgtV2VyLnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyN2I3YTYwZjMzOWJhNjZmZTRiOGY4MWYwZDEwNzJlMDkwYTA4ZWFiYmQ2YWEyODc2ODNiMmMyYjlkZDJkODIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDg3ODdlMzkxZWM1YzA1Mjc5OWEzZGQ0OTFmNzM5MDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM2ODhmMGZjOTBiZTYyM2Q5OGU4MGUxZGVmZWVhOTJiYmI3MTAzYmY5MzM2YTVmNWI5ODY1ZDM2ZTg5MmQ3NiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNDZjNGE4ZTNjZmQyN2Y5MGUyYzZmZTRhNjllNTc0YiIKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCiAgICAgZmlsZTovLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtRml4LW1pc3NpbmctcmV0dXJuLXN0YXRlbWVudHMtdGhhdC1hcmUtc2Vlbi13aXRoLVdlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtRml4LW1pc3NpbmctcmV0dXJuLXN0YXRlbWVudHMtdGhhdC1hcmUtc2Vlbi13aXRoLVdlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZjNmQ5MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLUZpeC1taXNzaW5nLXJldHVybi1zdGF0ZW1lbnRzLXRoYXQtYXJlLXNlZW4td2l0aC1XZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotRnJvbSAxNWY0NGJlMWM3ZjcxY2IwYThjNjg2MzkxN2FjYmJjMzAxYzYyMWZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIExpc2thIDxtbGlza2FAc3VzZS5jej4KLURhdGU6IE1vbiwgMTUgSnVsIDIwMTkgMTA6MDY6MTcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IG1pc3NpbmcgcmV0dXJuIHN0YXRlbWVudHMgdGhhdCBhcmUgc2VlbiB3aXRoCi0gLVdlcnJvcj1yZXR1cm4tdHlwZS4KLQotRXJyb3IgZXhhbXBsZToKLQotQ29kZToKLQotICAgICAgICAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gICAgICAgIGludCBtYWluICgpIHsKLSAgICAgICAgICAgIC8qIElmIGl0J3Mgbm90IGRlZmluZWQgYXMgYSBtYWNybywgdHJ5IHRvIHVzZSBhcyBhIHN5bWJvbCAqLwotICAgICAgICAgICAgI2lmbmRlZiBMQ19NRVNTQUdFUwotICAgICAgICAgICAgICAgIExDX01FU1NBR0VTOwotICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgIH0KLUNvbXBpbGVyIHN0ZG91dDoKLQotQ29tcGlsZXIgc3RkZXJyOgotIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvbG9jYWxlLmg6MjUsCi0gICAgICAgICAgICAgICAgIGZyb20gL3RtcC90bXBlcF9pNGl3Zy90ZXN0ZmlsZS5jOjI6Ci0vdXNyL2luY2x1ZGUvZmVhdHVyZXMuaDozODI6NDogd2FybmluZzogI3dhcm5pbmcgX0ZPUlRJRllfU09VUkNFCi1yZXF1aXJlcyBjb21waWxpbmcgd2l0aCBvcHRpbWl6YXRpb24gKC1PKSBbLVdjcHBdCi0gIDM4MiB8ICMgIHdhcm5pbmcgX0ZPUlRJRllfU09VUkNFIHJlcXVpcmVzIGNvbXBpbGluZyB3aXRoIG9wdGltaXphdGlvbgotKC1PKQotICAgICAgfCAgICBefn5+fn5+Ci0vdG1wL3RtcGVwX2k0aXdnL3Rlc3RmaWxlLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKLS90bXAvdG1wZXBfaTRpd2cvdGVzdGZpbGUuYzo4Ojk6IGVycm9yOiBjb250cm9sIHJlYWNoZXMgZW5kIG9mIG5vbi12b2lkCi1mdW5jdGlvbiBbLVdlcnJvcj1yZXR1cm4tdHlwZV0KLSAgICA4IHwgICAgICAgICB9Ci0gICAgICB8ICAgICAgICAgXgotY2MxOiBzb21lIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIG1lc29uYnVpbGQvY29tcGlsZXJzL2MucHkgICAgIHwgMSArCi0gbWVzb25idWlsZC9jb21waWxlcnMvY2xpa2UucHkgfCA1ICsrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvY29tcGlsZXJzL2MucHkgYi9tZXNvbmJ1aWxkL2NvbXBpbGVycy9jLnB5Ci1pbmRleCAzYjU4YTA3Ni4uOWVmOTIwNzcgMTAwNjQ0Ci0tLS0gYS9tZXNvbmJ1aWxkL2NvbXBpbGVycy9jLnB5Ci0rKysgYi9tZXNvbmJ1aWxkL2NvbXBpbGVycy9jLnB5Ci1AQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBDQ29tcGlsZXIoQ0xpa2VDb21waWxlciwgQ29tcGlsZXIpOgotICAgICAgICAgICAgICNpZm5kZWYge3N5bWJvbH0KLSAgICAgICAgICAgICAgICAge3N5bWJvbH07Ci0gICAgICAgICAgICAgI2VuZGlmCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9fScnJwotICAgICAgICAgcmV0dXJuIHNlbGYuY29tcGlsZXModC5mb3JtYXQoKipmYXJncyksIGVudiwgZXh0cmFfYXJncz1leHRyYV9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzPWRlcGVuZGVuY2llcykKLWRpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL2NvbXBpbGVycy9jbGlrZS5weSBiL21lc29uYnVpbGQvY29tcGlsZXJzL2NsaWtlLnB5Ci1pbmRleCA4M2Y2NzU5MS4uZjljYmVhYmQgMTAwNjQ0Ci0tLS0gYS9tZXNvbmJ1aWxkL2NvbXBpbGVycy9jbGlrZS5weQotKysrIGIvbWVzb25idWlsZC9jb21waWxlcnMvY2xpa2UucHkKLUBAIC0zNzUsNiArMzc1LDcgQEAgY2xhc3MgQ0xpa2VDb21waWxlcjoKLSAgICAgICAgICAgICAjaWZuZGVmIHtzeW1ib2x9Ci0gICAgICAgICAgICAgICAgIHtzeW1ib2x9OwotICAgICAgICAgICAgICNlbmRpZgotKyAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgfX0nJycKLSAgICAgICAgIHJldHVybiBzZWxmLmNvbXBpbGVzKHQuZm9ybWF0KCoqZmFyZ3MpLCBlbnYsIGV4dHJhX2FyZ3M9ZXh0cmFfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcz1kZXBlbmRlbmNpZXMpCi1AQCAtNTU0LDYgKzU1NSw3IEBAIGNsYXNzIENMaWtlQ29tcGlsZXI6Ci0gICAgICAgICB7cHJlZml4fQotICAgICAgICAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7ewotICAgICAgICAgICAgIHt0eXBlfSBzb21ldGhpbmc7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9fScnJwotICAgICAgICAgaWYgbm90IHNlbGYuY29tcGlsZXModC5mb3JtYXQoKipmYXJncyksIGVudiwgZXh0cmFfYXJncz1leHRyYV9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzPWRlcGVuZGVuY2llcylbMF06Ci1AQCAtNTg5LDYgKzU5MSw3IEBAIGNsYXNzIENMaWtlQ29tcGlsZXI6Ci0gICAgICAgICB7cHJlZml4fQotICAgICAgICAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7ewotICAgICAgICAgICAgIHt0eXBlfSBzb21ldGhpbmc7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9fScnJwotICAgICAgICAgaWYgbm90IHNlbGYuY29tcGlsZXModC5mb3JtYXQoKipmYXJncyksIGVudiwgZXh0cmFfYXJncz1leHRyYV9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzPWRlcGVuZGVuY2llcylbMF06Ci1AQCAtNjY3LDYgKzY3MCw3IEBAIGNsYXNzIENMaWtlQ29tcGlsZXI6Ci0gICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHt7Ci0gICAgICAgICAgICAgcHJpbnRmICgie2ZtdH0iLCB7Y2FzdH0ge2Z9KCkpOwotKyAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgfX0nJycuZm9ybWF0KCoqZmFyZ3MpCi0gICAgICAgICByZXMgPSBzZWxmLnJ1bihjb2RlLCBlbnYsIGV4dHJhX2FyZ3M9ZXh0cmFfYXJncywgZGVwZW5kZW5jaWVzPWRlcGVuZGVuY2llcykKLSAgICAgICAgIGlmIG5vdCByZXMuY29tcGlsZWQ6Ci1AQCAtODE5LDYgKzgyMyw3IEBAIGNsYXNzIENMaWtlQ29tcGlsZXI6Ci0gICAgICAgICAgICAgICAgICNlcnJvciAiTm8gZGVmaW5pdGlvbiBmb3IgX19idWlsdGluX3tmdW5jfSBmb3VuZCBpbiB0aGUgcHJlZml4IgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgI2VuZGlmCi0rICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgIH19JycnCi0gICAgICAgICByZXR1cm4gc2VsZi5saW5rcyh0LmZvcm1hdCgqKmZhcmdzKSwgZW52LCBleHRyYV9hcmdzPWV4dHJhX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXM9ZGVwZW5kZW5jaWVzKQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC41MS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC41MS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjUxLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNTEuMi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbmF0aXZlc2RrLW1lc29uXzAuNTEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL25hdGl2ZXNkay1tZXNvbl8wLjUxLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL25hdGl2ZXNkay1tZXNvbl8wLjUxLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL25hdGl2ZXNkay1tZXNvbl8wLjUxLjIuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDEtRG9uLXQtbGVhay10ZW1wb3JhcnktZmlsZS1vbi1mYWlsZWQtZWQtc3R5bGUtcGF0Y2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDAxLURvbi10LWxlYWstdGVtcG9yYXJ5LWZpbGUtb24tZmFpbGVkLWVkLXN0eWxlLXBhdGNoLnBhdGNoCmluZGV4IDk4OTE1MjYuLjc4MzQ1ZTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDEtRG9uLXQtbGVhay10ZW1wb3JhcnktZmlsZS1vbi1mYWlsZWQtZWQtc3R5bGUtcGF0Y2gucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMS1Eb24tdC1sZWFrLXRlbXBvcmFyeS1maWxlLW9uLWZhaWxlZC1lZC1zdHlsZS1wYXRjaC5wYXRjaApAQCAtMTcsNiArMTcsNyBAQAogCiBGaXhlczogMTIzZWFmZjBkNWQxICgiRml4IGFyYml0cmFyeSBjb21tYW5kIGV4ZWN1dGlvbiBpbiBlZC1zdHlsZSBwYXRjaGVzIChDVkUtMjAxOC0xMDAwMTU2KSIpCiAKK0NWRTogQ1ZFLTIwMTgtMTAwMDE1NgogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvcGF0Y2guZ2l0L2NvbW1pdC8/aWQ9MTk1OTk4ODNmZmI2YTQ1MGQyODg0ZjA4MWY4ZWNmNjhlZGJlZDdlZV0KIFNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CiAtLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDEtRG9uLXQtbGVhay10ZW1wb3JhcnktZmlsZS1vbi1mYWlsZWQtbXVsdGktZmlsZS1lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDEtRG9uLXQtbGVhay10ZW1wb3JhcnktZmlsZS1vbi1mYWlsZWQtbXVsdGktZmlsZS1lZC5wYXRjaAppbmRleCBkNmEyMTlhMS4uOGZmZmZlZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMS1Eb24tdC1sZWFrLXRlbXBvcmFyeS1maWxlLW9uLWZhaWxlZC1tdWx0aS1maWxlLWVkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDEtRG9uLXQtbGVhay10ZW1wb3JhcnktZmlsZS1vbi1mYWlsZWQtbXVsdGktZmlsZS1lZC5wYXRjaApAQCAtMTcsNiArMTcsNyBAQAogRml4ZXM6IDEyM2VhZmYwZDVkMSAoIkZpeCBhcmJpdHJhcnkgY29tbWFuZCBleGVjdXRpb24gaW4gZWQtc3R5bGUgcGF0Y2hlcyAoQ1ZFLTIwMTgtMTAwMDE1NikiKQogRml4ZXM6IDE5NTk5ODgzZmZiNiAoIkRvbid0IGxlYWsgdGVtcG9yYXJ5IGZpbGUgb24gZmFpbGVkIGVkLXN0eWxlIHBhdGNoIikKIAorQ1ZFOiBDVkUtMjAxOC0xMDAwMTU2CiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvY29tbWl0Lz9pZD0zNjlkY2NjZGZhNjMzNmU1YTg3M2Q2ZDYzNzA1Y2ZiZTA0YzU1NzI3XQogU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KIC0tLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKaW5kZXggYjEyNjFkNS4uZjA5NDZkZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCkBAIC0zNiw2ICszNiw5IEBACiAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKKyMgZXJyb3I6IGVycm9yLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKKwogVEFSR0VUX09TX09SSUcgOj0gIiR7VEFSR0VUX09TfSIKIE9WRVJSSURFU19hcHBlbmQgPSAiOiR7VEFSR0VUX09TX09SSUd9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1tYWtldGFibGVzLXdyYXBwZXJzLXVzZS1QeXRob24tMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLW1ha2V0YWJsZXMtd3JhcHBlcnMtdXNlLVB5dGhvbi0zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZGJkYWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1tYWtldGFibGVzLXdyYXBwZXJzLXVzZS1QeXRob24tMy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGRiZDM0YjFiMmFmOGZiZjQ0YTBkNWMzN2FiZTM0NDg0MDU4MTk4MjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjggQXVnIDIwMTkgMTk6MjA6MjkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZXRhYmxlcy93cmFwcGVyczogdXNlIFB5dGhvbiAzCisKK0NoYW5nZWxvZyBpbmRpY2F0ZXMgdGhleSBzaG91bGQgYmUgY29tcGF0aWJsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG1ha2V0YWJsZXMgICB8IDIgKy0KKyBtYWtld3JhcHBlcnMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tYWtldGFibGVzIGIvbWFrZXRhYmxlcworaW5kZXggYTIxMTc3Mi4uNTIyODVlMiAxMDA3NTUKKy0tLSBhL21ha2V0YWJsZXMKKysrKyBiL21ha2V0YWJsZXMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgMjAxMyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyAjCitkaWZmIC0tZ2l0IGEvbWFrZXdyYXBwZXJzIGIvbWFrZXdyYXBwZXJzCitpbmRleCBlODQ2MDdkLi5iMzRmN2ViIDEwMDc1NQorLS0tIGEvbWFrZXdyYXBwZXJzCisrKysgYi9tYWtld3JhcHBlcnMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMSwyMDEzIFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorICMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKaW5kZXggNmNmNzExZS4uNzg1MDBlMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKQEAgLTYsOSArNiwxMiBAQAogICAgICAgICAgICBmaWxlOi8vZmFsbGJhY2stZ3JvdXAgXAogICAgICAgICAgICBmaWxlOi8vbW9yZXJldHJpZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdG9vbWFueWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZXRhYmxlcy13cmFwcGVycy11c2UtUHl0aG9uLTMucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ1JFViA9ICIwNjAwNThiYjI5ZjcwYjI0NGU2ODViM2M3MDRlYjA2NDFiNzM2ZjczIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIFBWID0gIjEuOS4wK2dpdCR7U1JDUFZ9IgogCisjIGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdfU1RBVF9WRVInCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaAppbmRleCA4ZmUwZDFhLi45OGE5NzA1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGMxNDU1NGM3ZTJmZmY4ZGQ1NTlkZmI0MWU3ZGQxMTM5MmM2Zjg1ZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDY3MmE3NWM4NDE3Y2UwOGRiOWUzMWZjNDE1ZWM0NDU0NzkyMzFkNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTAgRGVjIDIwMTUgMTM6MjA6MzAgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG9uJ3Qgc2VhcmNoIC91c3IgYW5kIHNvIG9uIGZvciBsaWJyYXJpZXMgYnkgZGVmYXVsdCB0bwpAQCAtMTAsMTQgKzEwLDE0IEBACiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCi0gbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5IHwgNTAgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQorIG51bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weSB8IDQyICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weSBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQotaW5kZXggMjQyNDk0My4uYmY1NmE2ZCAxMDA2NDQKK2luZGV4IGJhMmIxZjQuLmY5NGRjZTEgMTAwNjQ0CiAtLS0gYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKICsrKyBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQotQEAgLTI3NCw1MSArMjc0LDEzIEBAIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorQEAgLTI3OCw0NSArMjc4LDEzIEBAIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgIGFkZF9zeXN0ZW1fcm9vdChvcy5wYXRoLmpvaW4oY29uZGFfZGlyLCAnTGlicmFyeScpKQogIAogIGVsc2U6CkBAIC00NSwzMSArNDUsMjQgQEAKIC0gICAgICAgICAgICBkZWZhdWx0X3gxMV9pbmNsdWRlX2RpcnMuZXh0ZW5kKFsnL3Vzci9saWIvWDExL2luY2x1ZGUnLAogLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2luY2x1ZGUvWDExJ10pCiAtCi0tICAgIGltcG9ydCBzdWJwcm9jZXNzIGFzIHNwCi0tICAgIHRtcCA9IE5vbmUKLS0gICAgdHJ5OgotLSAgICAgICAgIyBFeHBsaWNpdGx5IG9wZW4vY2xvc2UgZmlsZSB0byBhdm9pZCBSZXNvdXJjZVdhcm5pbmcgd2hlbgotLSAgICAgICAgIyB0ZXN0cyBhcmUgcnVuIGluIGRlYnVnIG1vZGUgUHl0aG9uIDMuCi0tICAgICAgICB0bXAgPSBvcGVuKG9zLmRldm51bGwsICd3JykKLS0gICAgICAgIHAgPSBzcC5Qb3BlbihbImdjYyIsICItcHJpbnQtbXVsdGlhcmNoIl0sIHN0ZG91dD1zcC5QSVBFLAotLSAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj10bXApCi0tICAgIGV4Y2VwdCAoT1NFcnJvciwgRGlzdHV0aWxzRXJyb3IpOgotLSAgICAgICAgIyBPU0Vycm9yIGlmIGdjYyBpcyBub3QgaW5zdGFsbGVkLCBvciBTYW5kYm94VmlvbGF0aW9uIChEaXN0dXRpbHNFcnJvcgotLSAgICAgICAgIyBzdWJjbGFzcykgaWYgYW4gb2xkIHNldHVwdG9vbHMgYnVnIGlzIHRyaWdnZXJlZCAoc2VlIGdoLTMxNjApLgotLSAgICAgICAgcGFzcwotLSAgICBlbHNlOgotLSAgICAgICAgdHJpcGxldCA9IHN0cihwLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCkuc3RyaXAoKSkKLS0gICAgICAgIGlmIHAucmV0dXJuY29kZSA9PSAwOgotLSAgICAgICAgICAgICMgZ2NjIHN1cHBvcnRzIHRoZSAiLXByaW50LW11bHRpYXJjaCIgb3B0aW9uCi0tICAgICAgICAgICAgZGVmYXVsdF94MTFfbGliX2RpcnMgKz0gW29zLnBhdGguam9pbigiL3Vzci9saWIvIiwgdHJpcGxldCldCi0tICAgICAgICAgICAgZGVmYXVsdF9saWJfZGlycyArPSBbb3MucGF0aC5qb2luKCIvdXNyL2xpYi8iLCB0cmlwbGV0KV0KLS0gICAgZmluYWxseToKLS0gICAgICAgIGlmIHRtcCBpcyBub3QgTm9uZToKLS0gICAgICAgICAgICB0bXAuY2xvc2UoKQorLSAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3cnKSBhcyB0bXA6CistICAgICAgICB0cnk6CistICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJnY2MiLCAiLXByaW50LW11bHRpYXJjaCJdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9dG1wKQorLSAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBEaXN0dXRpbHNFcnJvcik6CistICAgICAgICAgICAgIyBPU0Vycm9yIGlmIGdjYyBpcyBub3QgaW5zdGFsbGVkLCBvciBTYW5kYm94VmlvbGF0aW9uIChEaXN0dXRpbHNFcnJvcgorLSAgICAgICAgICAgICMgc3ViY2xhc3MpIGlmIGFuIG9sZCBzZXR1cHRvb2xzIGJ1ZyBpcyB0cmlnZ2VyZWQgKHNlZSBnaC0zMTYwKS4KKy0gICAgICAgICAgICBwYXNzCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHRyaXBsZXQgPSBzdHIocC5jb21tdW5pY2F0ZSgpWzBdLmRlY29kZSgpLnN0cmlwKCkpCistICAgICAgICAgICAgaWYgcC5yZXR1cm5jb2RlID09IDA6CistICAgICAgICAgICAgICAgICMgZ2NjIHN1cHBvcnRzIHRoZSAiLXByaW50LW11bHRpYXJjaCIgb3B0aW9uCistICAgICAgICAgICAgICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzICs9IFtvcy5wYXRoLmpvaW4oIi91c3IvbGliLyIsIHRyaXBsZXQpXQorLSAgICAgICAgICAgICAgICBkZWZhdWx0X2xpYl9kaXJzICs9IFtvcy5wYXRoLmpvaW4oIi91c3IvbGliLyIsIHRyaXBsZXQpXQogKyAgICBkZWZhdWx0X2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGlyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQogKyAgICBkZWZhdWx0X2luY2x1ZGVfZGlycyA9IFsnL2RlYWRkaXIvaW5jbHVkZSddCiArICAgIGRlZmF1bHRfc3JjX2RpcnMgPSBbJy4nLCAnL2RlYWRkaXIvc3JjJ10KLSsKKyAKICsgICAgZGVmYXVsdF94MTFfbGliX2RpcnMgPSBsaWJwYXRocyhbJy9kZWFkZGlyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQogKyAgICBkZWZhdWx0X3gxMV9pbmNsdWRlX2RpcnMgPSBbJy9kZWFkZGlyL2luY2x1ZGUnXQogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnVtcHktcmFuZG9tLXNldHVwLnB5LXJlbW92ZS10aGUtZGV0ZWN0aW9uLW9mLXg4Ni10YS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW51bXB5LXJhbmRvbS1zZXR1cC5weS1yZW1vdmUtdGhlLWRldGVjdGlvbi1vZi14ODYtdGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiMmE2ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW51bXB5LXJhbmRvbS1zZXR1cC5weS1yZW1vdmUtdGhlLWRldGVjdGlvbi1vZi14ODYtdGEucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBiODgxZTBiMmJhOWNmMWE0YWEzNTFhMWMxZWE5MGIxZTE3NzZjZTIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEyIEF1ZyAyMDE5IDE1OjM3OjM2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG51bXB5L3JhbmRvbS9zZXR1cC5weTogcmVtb3ZlIHRoZSBkZXRlY3Rpb24gb2YgeDg2IHRhcmdldHMKKyB2aWEgdW5hbWUoKQorCitUaGlzIHdhcyBiYWRseSBicmVha2luZyBjb21waWxhdGlvbiBmb3IgQVJNIHRhcmdldHMgKGFuZCBwb3NzaWJseQorb3RoZXIgbm9uLXg4NiB0YXJnZXRzKTsgaWYgLW1zc2UyIGlzIGRlc2lyYWJsZSBmb3IgeDg2IGJ1aWxkcyBpdCBoYXMKK3RvIGJlIHBhc3NlZCB0aHJvdWdoIGFub3RoZXIgY2hhbm5lbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBudW1weS9yYW5kb20vc2V0dXAucHkgfCA1IC0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9udW1weS9yYW5kb20vc2V0dXAucHkgYi9udW1weS9yYW5kb20vc2V0dXAucHkKK2luZGV4IGExYmYzYjguLjYwZmI1MzQgMTAwNjQ0CistLS0gYS9udW1weS9yYW5kb20vc2V0dXAucHkKKysrKyBiL251bXB5L3JhbmRvbS9zZXR1cC5weQorQEAgLTQ5LDExICs0OSw2IEBAIGRlZiBjb25maWd1cmF0aW9uKHBhcmVudF9wYWNrYWdlPScnLCB0b3BfcGF0aD1Ob25lKToKKyAgICAgZWxpZiBub3QgaXNfbXN2YzoKKyAgICAgICAgICMgU29tZSBiaXQgZ2VuZXJhdG9ycyByZXF1aXJlIGM5OQorICAgICAgICAgRVhUUkFfQ09NUElMRV9BUkdTICs9IFsnLXN0ZD1jOTknXQorLSAgICAgICAgSU5URUxfTElLRSA9IGFueShbdmFsIGluIGsubG93ZXIoKSBmb3IgayBpbiBwbGF0Zm9ybS51bmFtZSgpCistICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdmFsIGluICgneDg2JywgJ2k2ODYnLCAnaTM4NicsICdhbWQ2NCcpXSkKKy0gICAgICAgIGlmIElOVEVMX0xJS0U6CistICAgICAgICAgICAgIyBBc3N1bWVzIEdDQyBvciBHQ0MtbGlrZSBjb21waWxlcgorLSAgICAgICAgICAgIEVYVFJBX0NPTVBJTEVfQVJHUyArPSBbJy1tc3NlMiddCisgCisgICAgICMgVXNlIGxlZ2FjeSBpbnRlZ2VyIHZhcmlhYmxlIHNpemVzCisgICAgIExFR0FDWV9ERUZTID0gWygnTlBfUkFORE9NX0xFR0FDWScsICcxJyldCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCmluZGV4IDQzYzMwNTMuLmExMmU3MmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBQU0YgJiBBcGFjaGUtMi4wICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWQyNmJkZTU0MzI2MTNjY2UyMzM0YjkzOTg1NTc2MjMxIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBQU0YgJiBBcGFjaGUtMi4wICYgQlNEICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTFhMzJhYmEwMDdhNDE1YWE4YTFjNzA4YTBlMmI4NmExIgogCiBTUkNOQU1FID0gIm51bXB5IgogCkBAIC05LDEzICs5LDE3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjA4ODZlNWI1MDE3ZjA4ZjJiN2E2MjRjMGI1OTMxZTYxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFkZjA2M2EzZjg3YWI4OTM5M2Y1ZWVhMGViOTAzMjkzYjExMmZhMGEzMDhlOGM1OTRhNzVmZmE1ODVkODFkNGYiCitTUkNfVVJJW21kNXN1bV0gPSAiYzQ4YjJhZDc4NWY4MmNkZmUyOGM5MDdjZTM1ZTJhNzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDdiN2I2MTQ1ZTdiYTU5MThjZTI2YmUyNTk5OWI2ZDRiMzVjZjlmYmZkZjQ2YjdkYTUwMDkwZmZkYjAyMDQ0NSIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9yZWxlYXNlcyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgogCisjIE5lZWRlZCBmb3IgYnVpbGRpbmcgd2l0aCBnY2MgNC54IGZyb20gY2VudG9zIDcKK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtc3RkPWM5OSIKKwogQ09ORklHRklMRVNVUkkgPz0gIiIKIAogQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXApAQCAtMTA5LDYgKzExMyw3IEBACiAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gXAogICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCiAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAogIgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE2LjMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTcuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10ZXN0dG9vbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10ZXN0dG9vbHMuaW5jCmluZGV4IDEwMTFjOTguLmQwYjJlNDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGVzdHRvb2xzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRlc3R0b29scy5pbmMKQEAgLTE5LDYgKzE5LDcgQEAKICAgICAiCiAKIFJERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRvY3Rlc3QgXAogICAgICR7UFlUSE9OX1BOfS1leHRyYXMgXAogICAgICR7UFlUSE9OX1BOfS1wYnIgXAogICAgICR7UFlUSE9OX1BOfS1zaXggXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwppbmRleCA3MDQ4MTAwLi4xNDYyYjc3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwpAQCAtMzcsNyArMzcsNiBAQAogICAtLWVuYWJsZS1zaGFyZWQgXAogICAtLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0gXAogICBhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vIGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfaD1ubyBcCi0gICR7UFlUSE9OTFNCT1BUU30gXAogIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xMC5iYgpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi44LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xMC5iYgppbmRleCAyZmIxZWFlLi44ODkyZDBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi44LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjEwLmJiCkBAIC04LDggKzgsOCBAQAogU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjczNzlkYjc3NGMxMDkwNGYyN2U3ZTI3NDNkOTBmYjQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiZjEyYmJiNzY1ZTMwMGJmOGUyYTFiMmYzMmY4NTk0OWVhYjA2OTk4ZGJkYTEyNzk1MmMzMWNiNjM5NTdiNmYiCitTUkNfVVJJW21kNXN1bV0gPSAiNWQyMWQ1YWU2NDIzZjBlNDFjYWEzNDAwYWY0NGVkYWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDQzMzJiYmQ0YTAwNTRmYTQwMTBiMjU5YzI5M2I4NGQ0NjFiYmQ5ZDdhOGVmNTI4MTU3ZDE1MWMwMzk4ZDg4NiIKIFMgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKIAogaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC4yLmJiCmluZGV4IGI2YzgzN2MuLjlkZDc1M2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjIuYmIKQEAgLTEyLDggKzEyLDggQEAKIAogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NDEyYWU5NjY1ZmQyOTMyOGYyYWZjNmRmODg3YWU4MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Mjk4NjdlYmY2MDljZWYyMWJiOWQ4NDkwMzllMjgxZTI1OTYzZmI3ZDcxNGEyZjZiYWNjMWVjY2U0ODAwMjkzIgorU1JDX1VSSVttZDVzdW1dID0gImNjZWMxNGE1YzlmMTg3MDI0MDYxMjI5ODNkODAwMzJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyZjQ5NDVmODI2MGY2OTgxZDcyNGY1OTU3YmMwNzYzOThhZGE1NWNiNWQyNWFhZWUxMDEwOGJjZGM4OTQxMDAiCiAKIERFUEVORFMgKz0gIiAke1BZVEhPTl9QTn0tZ2l0ZGIiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU5ZTc0NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXBici5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImVhOTBlMTExOGEwMTMyZGE3NTJkNDVlNjhkMTBiMmI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliMzIxYzIwNGE4OGQ4YWI1MDgyNjk5NDY5ZjUyY2M5NGM1ZGE0NWM1MWYxMTQxMTNkMDFiM2Q5OTNjMjRjZGYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4MzVlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuMy5iYgpAQCAtMCwwICsxLDUgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXBici5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjQ3N2QyYWEyODVhZDk3MjUwYTE3MmIxOTlmNDA2MGI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjOGU0MjBjZDRlZDRjZWM0ZTc5OTllZTQ3NDA5ZTg3NmFmNTc1ZDRjMzVhNDU4NDBkNTllOGI1ZjMxNTVhYjgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTkuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE5LjIuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDgxJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTkuMi4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTkuMi4zLmJiCmluZGV4IGZhYWZiYzEuLmFhNzI1M2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOS4yLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE5LjIuMy5iYgpAQCAtNiw4ICs2LDggQEAKIAogREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMmJhMGEzYjc2ZDM5Y2NkOTBjYTIyYmZhODJmYzYzNWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTA1MTAzODI1ODcxZTIxMGQ1MGE0NGM3ZTQ0ODU4N2IwZWQ5OWRkNzc1ZDNlZjU4NjMwNGM1OGY0MDIyNGE1MyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNDE3NDQ0YzY2YTBkYjFhODJjOGQ5ZDIyODNhMmY5NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlN2EzMWYxNDc5NzQzNjJlNmM4MmQ4NGI5MWM3ZjJiZGY1N2U0ZDMxNjNkM2Q0NTRlNmMzZTcxOTQ0ZDY3MTM1IgogCiBpbmhlcml0IHB5cGkgZGlzdHV0aWxzMwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24gYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KaW5kZXggZWMyOGMyZC4uOGU5NDMwNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgpAQCAtMTE1LDcgKzExNSw3IEBACiAgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgImFzeW5jaW8iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBBc3luY2hyb25vdXMgSS8iLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXN5bmNocm9ub3VzIEkvTyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJpbyIsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjcuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNy40LmJiCmluZGV4IDgwYzliMjkuLjE0MTE5YzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNy40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNy40LmJiCkBAIC0zMTAsNyArMzEwLDcgQEAKIAogIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQogUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICJweXRob24zLWNvcmUgcHl0aG9uMy1lbWFpbCBweXRob24zLWNvZGVjcyIKK1JERVBFTkRTXyR7UE59LW1pc2MgKz0gInB5dGhvbjMtY29yZSBweXRob24zLWVtYWlsIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtcHlkb2MgcHl0aG9uMy1waWNrbGUiCiBSREVQRU5EU18ke1BOfS1tb2R1bGVzX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHB5dGhvbjMtbWlzYyIKIFJERVBFTkRTXyR7UE59LW1vZHVsZXNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgcHl0aG9uMy1taXNjIgogRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCmluZGV4IGQyZGQyYmMuLjI0MWY5ZGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjIsNiArMjIsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNy1hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA5LUZpeC13ZWJraXRndGstYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2ggXAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJxZW11LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgogCkBAIC0xMzEsNyArMTMyLDcgQEAKIFBBQ0tBR0VDT05GSUdbdm5jLXNhc2xdID0gIi0tZW5hYmxlLXZuYyAtLWVuYWJsZS12bmMtc2FzbCwtLWRpc2FibGUtdm5jLXNhc2wsY3lydXMtc2FzbCwiCiBQQUNLQUdFQ09ORklHW3ZuYy1qcGVnXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLWpwZWcsLS1kaXNhYmxlLXZuYy1qcGVnLGpwZWcsIgogUEFDS0FHRUNPTkZJR1t2bmMtcG5nXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLXBuZywtLWRpc2FibGUtdm5jLXBuZyxsaWJwbmcsIgotUEFDS0FHRUNPTkZJR1tsaWJjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGxpYmN1cmwsIgorUEFDS0FHRUNPTkZJR1tsaWJjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsIgogUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0tZW5hYmxlLXNtYXJ0Y2FyZCwtLWRpc2FibGUtc21hcnRjYXJkLG5zcywiCiBQQUNLQUdFQ09ORklHW2N1cnNlc10gPSAiLS1lbmFibGUtY3Vyc2VzLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCiBQQUNLQUdFQ09ORklHW2d0aytdID0gIi0tZW5hYmxlLWd0aywtLWRpc2FibGUtZ3RrLGd0ayszIGdldHRleHQtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMC1jb25maWd1cmUtQWRkLXBrZy1jb25maWctaGFuZGxpbmctZm9yLWxpYmdjcnlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGFiN2RhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKQEAgLTAsMCArMSw5MyBAQAorRnJvbSA1MjE0ZGQ0NDYxZjIwOTBlZjA5NjViNGQyNTE4ZjQ5OTI3ZDYxY2JjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggQXVnIDIwMTkgMTk6NTY6MjggKzA4MDAKK1N1YmplY3Q6IFtRZW11LWRldmVsXSBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIHBrZy1jb25maWcgaGFuZGxpbmcgZm9yIGxpYmdjcnlwdAorCitsaWJnY3J5cHQgbWF5IGFsc28gYmUgY29udHJvbGxlZCBieSBwa2ctY29uZmlnLCB0aGlzIHBhdGNoIGFkZHMgcGtnLWNvbmZpZworaGFuZGxpbmcgZm9yIGxpYmdjcnlwdC4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE5LTA4L21zZzA2MzMzLmh0bWxdCisKK1NpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggZTQ0ZTQ1NC4uMGYzNjJhNyAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtMjg3NSw2ICsyODc1LDMwIEBAIGhhc19saWJnY3J5cHQoKSB7CisgICAgIHJldHVybiAwCisgfQorIAorK2hhc19saWJnY3J5cHRfcGtnY29uZmlnKCkgeworKyAgICBpZiAhIGhhcyAkcGtnX2NvbmZpZyA7IHRoZW4KKysgICAgICAgIHJldHVybiAxCisrICAgIGZpCisrCisrICAgIGlmICEgJHBrZ19jb25maWcgLS1saXN0LWFsbCB8IGdyZXAgbGliZ2NyeXB0ID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCisrICAgICAgICByZXR1cm4gMQorKyAgICBmaQorKworKyAgICBpZiB0ZXN0IC1uICIkY3Jvc3NfcHJlZml4IiA7IHRoZW4KKysgICAgICAgIGhvc3Q9JCgkcGtnX2NvbmZpZyAtLXZhcmlhYmxlPWhvc3QgbGliZ2NyeXB0KQorKyAgICAgICAgaWYgdGVzdCAiJHtob3N0JS1nbnV9LSIgIT0gIiR7Y3Jvc3NfcHJlZml4JS1nbnV9IiA7IHRoZW4KKysgICAgICAgICAgICBwcmludF9lcnJvciAiaG9zdCgkaG9zdCkgZG9lcyBub3QgbWF0Y2ggY3Jvc3NfcHJlZml4KCRjcm9zc19wcmVmaXgpIgorKyAgICAgICAgICAgIHJldHVybiAxCisrICAgICAgICBmaQorKyAgICBmaQorKworKyAgICBpZiAhICRwa2dfY29uZmlnIC0tYXRsZWFzdC12ZXJzaW9uPTEuNS4wIGxpYmdjcnlwdCA7IHRoZW4KKysgICAgICAgIHByaW50X2Vycm9yICJsaWJnY3J5cHQgdmVyc2lvbiBpcyAkKCRwa2dfY29uZmlnIC0tbW9kdmVyc2lvbiBsaWJnY3J5cHQpIgorKyAgICAgICAgcmV0dXJuIDEKKysgICAgZmkKKysKKysgICAgcmV0dXJuIDAKKyt9CisgCisgaWYgdGVzdCAiJG5ldHRsZSIgIT0gIm5vIjsgdGhlbgorICAgICBwYXNzPSJubyIKK0BAIC0yOTAyLDcgKzI5MjYsMTQgQEAgZmkKKyAKKyBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCisgICAgIHBhc3M9Im5vIgorLSAgICBpZiBoYXNfbGliZ2NyeXB0OyB0aGVuCisrICAgIGlmIGhhc19saWJnY3J5cHRfcGtnY29uZmlnOyB0aGVuCisrICAgICAgICBnY3J5cHRfY2ZsYWdzPSQoJHBrZ19jb25maWcgLS1jZmxhZ3MgbGliZ2NyeXB0KQorKyAgICAgICAgaWYgdGVzdCAiJHN0YXRpYyIgPSAieWVzIiA7IHRoZW4KKysgICAgICAgICAgICBnY3J5cHRfbGlicz0kKCRwa2dfY29uZmlnIC0tbGlicyAtLXN0YXRpYyBsaWJnY3J5cHQpCisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgZ2NyeXB0X2xpYnM9JCgkcGtnX2NvbmZpZyAtLWxpYnMgbGliZ2NyeXB0KQorKyAgICAgICAgZmkKKysgICAgZWxpZiBoYXNfbGliZ2NyeXB0OyB0aGVuCisgICAgICAgICBnY3J5cHRfY2ZsYWdzPSQobGliZ2NyeXB0LWNvbmZpZyAtLWNmbGFncykKKyAgICAgICAgIGdjcnlwdF9saWJzPSQobGliZ2NyeXB0LWNvbmZpZyAtLWxpYnMpCisgICAgICAgICAjIERlYmlhbiBoYXMgcmVtb3ZlZCAtbGdwZy1lcnJvciBmcm9tIGxpYmdjcnlwdC1jb25maWcKK0BAIC0yOTEyLDE1ICsyOTQzLDE2IEBAIGlmIHRlc3QgIiRnY3J5cHQiICE9ICJubyI7IHRoZW4KKyAgICAgICAgIHRoZW4KKyAgICAgICAgICAgICBnY3J5cHRfbGlicz0iJGdjcnlwdF9saWJzIC1sZ3BnLWVycm9yIgorICAgICAgICAgZmkKKysgICAgZmkKKyAKKy0gICAgICAgICMgTGluayB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgZ2l2ZW4gbGlicmFyaWVzIHdvcmsgKGUuZyBmb3Igc3RhdGljKS4KKy0gICAgICAgIHdyaXRlX2Nfc2tlbGV0b24KKy0gICAgICAgIGlmIGNvbXBpbGVfcHJvZyAiIiAiJGdjcnlwdF9saWJzIiA7IHRoZW4KKy0gICAgICAgICAgICBMSUJTPSIkZ2NyeXB0X2xpYnMgJExJQlMiCistICAgICAgICAgICAgUUVNVV9DRkxBR1M9IiRRRU1VX0NGTEFHUyAkZ2NyeXB0X2NmbGFncyIKKy0gICAgICAgICAgICBwYXNzPSJ5ZXMiCistICAgICAgICBmaQorKyAgICAjIExpbmsgdGVzdCB0byBtYWtlIHN1cmUgdGhlIGdpdmVuIGxpYnJhcmllcyB3b3JrIChlLmcgZm9yIHN0YXRpYykuCisrICAgIHdyaXRlX2Nfc2tlbGV0b24KKysgICAgaWYgY29tcGlsZV9wcm9nICIiICIkZ2NyeXB0X2xpYnMiIDsgdGhlbgorKwkgICAgTElCUz0iJGdjcnlwdF9saWJzICRMSUJTIgorKwkgICAgUUVNVV9DRkxBR1M9IiRRRU1VX0NGTEFHUyAkZ2NyeXB0X2NmbGFncyIKKysJICAgIHBhc3M9InllcyIKKyAgICAgZmkKKysKKyAgICAgaWYgdGVzdCAiJHBhc3MiID0gInllcyI7IHRoZW4KKyAgICAgICAgIGdjcnlwdD0ieWVzIgorICAgICAgICAgY2F0ID4gJFRNUEMgPDwgRU9GCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV80LjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV80LjEuMC5iYgppbmRleCA3Njc3NjA5Li5mMGMxZGFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzQuMS4wLmJiCkBAIC0yLDYgKzIsMTAgQEAKIAogcmVxdWlyZSBxZW11LmluYwogCisjIGVycm9yOiBhIHBhcmFtZXRlciBsaXN0IHdpdGhvdXQgdHlwZXMgaXMgb25seSBhbGxvd2VkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbgorIyAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKKwogREVQRU5EUyA9ICJnbGliLTIuMCB6bGliIHBpeG1hbiBiaXNvbi1uYXRpdmUiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLW1vbm8tZmluZC1wcm92aWRlcy1yZXF1aXJlcy1kby1ub3QtdXNlLW1vbm9kaXMtZnJvbS0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1tb25vLWZpbmQtcHJvdmlkZXMtcmVxdWlyZXMtZG8tbm90LXVzZS1tb25vZGlzLWZyb20tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YWE0YzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1tb25vLWZpbmQtcHJvdmlkZXMtcmVxdWlyZXMtZG8tbm90LXVzZS1tb25vZGlzLWZyb20tLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gNDNmYmMzZjUzMzAyYTM5NTQ2M2U4NDUwYWM4MWM1M2Y2MjNlZWMzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNyBBdWcgMjAxOSAxNzo0MjozNCArMDIwMAorU3ViamVjdDogW1BBVENIXSBtb25vLWZpbmQtcHJvdmlkZXMvcmVxdWlyZXM6IGRvIG5vdCB1c2UgbW9ub2RpcyBmcm9tIHRoZSBob3N0CisKK1RoZXJlIHdhcyBhIGhvc3QgY29udGFtaW5hdGlvbiBpc3N1ZSBoZXJlOiBpZiBtb25vZGlzIHdhcyBpbnN0YWxsZWQKK29uIHRoZSBob3N0LCBkb19wYWNrYWdlIHdvdWxkIHVzZSB0aGF0IHRvIHJlc29sdmUgZGVwZW5kZW5jaWVzCitvZiBtb25vIGxpYnJhcmllcyAoYW5kIG9mdGVuIGZhaWwgaW4gdGhhdCkuIFdpdGhvdXQgbW9ub2RpcywKK25vIGRlcGVuZGVuY2llcyBhcmUgcmVzb2x2ZWQsIHdoaWNoIGlzIHNlZW1pbmdseSBob3cgdGhpbmdzCithcmUgc3VwcG9zZWQgdG8gd29yay4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzY3JpcHRzL21vbm8tZmluZC1wcm92aWRlcyB8IDggKysrKy0tLS0KKyBzY3JpcHRzL21vbm8tZmluZC1yZXF1aXJlcyB8IDggKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvbW9uby1maW5kLXByb3ZpZGVzIGIvc2NyaXB0cy9tb25vLWZpbmQtcHJvdmlkZXMKK2luZGV4IDkzNDg0NTdkMy4uYjI4ODcyZmZiIDEwMDY0NAorLS0tIGEvc2NyaXB0cy9tb25vLWZpbmQtcHJvdmlkZXMKKysrKyBiL3NjcmlwdHMvbW9uby1maW5kLXByb3ZpZGVzCitAQCAtMTgsMTEgKzE4LDExIEBAIG1vbm9saXN0PSgkKHByaW50ZiAiJXNcbiIgIiR7ZmlsZWxpc3RbQF19IiB8IGdyZXAgLUUgIlxcLihleGV8ZGxsKVwkIikpCisgYnVpbGRfYmluZGlyPSIkMi91c3IvYmluIgorIGJ1aWxkX2xpYmRpcj0iJDIkMyIKKyAKKy1pZiBbIC14ICRidWlsZF9iaW5kaXIvbW9ub2RpcyBdOyB0aGVuCistICAgIG1vbm9kaXM9IiRidWlsZF9iaW5kaXIvbW9ub2RpcyIKKytpZiBbIC14ICRidWlsZF9iaW5kaXIvbW9ub2Rpcy5ib2d1cyBdOyB0aGVuCisrICAgIG1vbm9kaXM9IiRidWlsZF9iaW5kaXIvbW9ub2Rpcy5ib2d1cyIKKyAgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0kYnVpbGRfbGliZGlyJHtMRF9MSUJSQVJZX1BBVEg6KzokTERfTElCUkFSWV9QQVRIfQorLWVsaWYgWyAteCAvdXNyL2Jpbi9tb25vZGlzIF07IHRoZW4KKy0gICAgbW9ub2Rpcz0iL3Vzci9iaW4vbW9ub2RpcyIKKytlbGlmIFsgLXggL3Vzci9iaW4vbW9ub2Rpcy5ib2d1cyBdOyB0aGVuCisrICAgIG1vbm9kaXM9Ii91c3IvYmluL21vbm9kaXMuYm9ndXMiCisgZWxzZQorICAgICBleGl0IDA7CisgZmkKK2RpZmYgLS1naXQgYS9zY3JpcHRzL21vbm8tZmluZC1yZXF1aXJlcyBiL3NjcmlwdHMvbW9uby1maW5kLXJlcXVpcmVzCitpbmRleCBlYTU4Y2FlNDguLmQyNzAxNjllMSAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvbW9uby1maW5kLXJlcXVpcmVzCisrKysgYi9zY3JpcHRzL21vbm8tZmluZC1yZXF1aXJlcworQEAgLTE4LDExICsxOCwxMSBAQCBtb25vbGlzdD0oJChwcmludGYgIiVzXG4iICIke2ZpbGVsaXN0W0BdfSIgfCBncmVwIC1FICJcXC4oZXhlfGRsbClcJCIpKQorIGJ1aWxkX2JpbmRpcj0iJDIvdXNyL2JpbiIKKyBidWlsZF9saWJkaXI9IiQyJDMiCisgCistaWYgWyAteCAkYnVpbGRfYmluZGlyL21vbm9kaXMgXTsgdGhlbgorLSAgICBtb25vZGlzPSIkYnVpbGRfYmluZGlyL21vbm9kaXMiCisraWYgWyAteCAkYnVpbGRfYmluZGlyL21vbm9kaXMuYm9ndXMgXTsgdGhlbgorKyAgICBtb25vZGlzPSIkYnVpbGRfYmluZGlyL21vbm9kaXMuYm9ndXMiCisgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9JGJ1aWxkX2xpYmRpciR7TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJBUllfUEFUSH0KKy1lbGlmIFsgLXggL3Vzci9iaW4vbW9ub2RpcyBdOyB0aGVuCistICAgIG1vbm9kaXM9Ii91c3IvYmluL21vbm9kaXMiCisrZWxpZiBbIC14IC91c3IvYmluL21vbm9kaXMuYm9ndXMgXTsgdGhlbgorKyAgICBtb25vZGlzPSIvdXNyL2Jpbi9tb25vZGlzLmJvZ3VzIgorIGVsc2UKKyAgICAgZXhpdCAwOworIGZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuMS5iYgppbmRleCAwNjNmNDI2Li5jMzczMzBlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLjEuYmIKQEAgLTQxLDYgKzQxLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1kaXNhYmxlLWF1dG8tcmVxcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwbS1ycG1pby5jLXJlc3RyaWN0LXZpcnR1YWwtbWVtb3J5LXVzYWdlLWlmLWxpbWl0LXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAxNi1ycG1zY3JpcHQuYy1jaGFuZ2UtbG9nZ2luZy1sZXZlbC1hcm91bmQtc2NyaXB0bGV0cy10LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbW9uby1maW5kLXByb3ZpZGVzLXJlcXVpcmVzLWRvLW5vdC11c2UtbW9ub2Rpcy1mcm9tLS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogUEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9zdWJ2ZXJzaW9uLTEuMTIuMC1hcHJfMS43LjBfZml4LTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vc3VidmVyc2lvbi0xLjEyLjAtYXByXzEuNy4wX2ZpeC0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGVkZDVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9zdWJ2ZXJzaW9uLTEuMTIuMC1hcHJfMS43LjBfZml4LTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotRnJvbSBiMTQ3ODAzNTUzMjM3NjU0ZjgyNjhlODMxZGVlOGZlZDQ5ODlhZDNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogU2F0LCAxMSBNYXkgMjAxOSAxNDo0NjozOSArMDgwMAotU3ViamVjdDogW1BBVENIXSBTdWJtaXR0ZWQgQnk6IFBpZXJyZSBMYWJhc3RpZSAocGllcnJlIGRvdCBsYWJhc3RpZSBhdCBuZXVmCi0gZG90IGZyKSBEYXRlOiAyMDE5LTA0LTE3IEluaXRpYWwgUGFja2FnZSBWZXJzaW9uOiAxLjExLjEgT3JpZ2luOiBVcHN0cmVhbQotIHJldmlzaW9uIDE4NTczOTEgVXBzdHJlYW0gU3RhdHVzOiBDb21taXR0ZWQgRGVzY3JpcHRpb246IEdldCByaWQgb2YKLSBhcHJfaW50NjRfdCBmb3JtYXQgc3RyaW5nIGNoZWNrIGluIHN3aWcgcHkgY29uZmlndXJlLgotCi1UaGlzIGNoZWNrIHJlbGllZCBvbiBBUFIgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgYnJva2Ugd2l0aCBBUFIgMS43LjAuCi1SYXRoZXIgdGhhbiB0cnlpbmcgdG8gZ3Vlc3MgYSBwZXJmZWN0IGZvcm1hdCBzdHJpbmcgdG8gdXNlLCBqdXN0IHVzZSB0aGUKLWxhcmdlc3QgcG9zc2libGUgZm9ybWF0IGFuZCBjYXN0IHRoZSBhcmd1bWVudCBhY2NvcmRpbmdseS4KLQotU2hvdWxkIGZpeCBidWlsZCBhZ2FpbnN0IEFQUiAxLjcuMCBhbmQgbGF0ZXIuCi0KLVN1Z2dlc3RlZCBieTogYnJhbmUKLQotKiBidWlsZC9hYy1tYWNyb3Mvc3dpZy5tNDogUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBTVk5fQVBSX0lOVDY0X1RfUFlDRk1ULgotCi0qIHN1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9weXRob24vbGlic3ZuX3N3aWdfcHkvc3dpZ3V0aWxfcHkuYwotICAoc3ZuX3N3aWdfcHlfY2xpZW50X2JsYW1lX3JlY2VpdmVyX2Z1bmMpOiBTdG9wIHJlbHlpbmcgb24gdGhlCi0gICBTVk5fQVBSX0lOVDY0X1RfUFlDRk1UIGNvbnN0YW50IGZyb20gY29uZmlndXJlLiBVc2UgIkwiIGFuZAotICAgYWNhc3QgdG8gUFlfTE9OR19MT05HIGluc3RlYWQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3d3dy5saW51eGZyb21zY3JhdGNoLm9yZy9wYXRjaGVzL2JsZnMvc3ZuL3N1YnZlcnNpb24tMS4xMi4wLWFwcl8xLjcuMF9maXgtMS5wYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYnVpbGQvYWMtbWFjcm9zL3N3aWcubTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gLi4uL3N3aWcvcHl0aG9uL2xpYnN2bl9zd2lnX3B5L3N3aWd1dGlsX3B5LmMgICAgICAgfCAgOSArKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsZC9hYy1tYWNyb3Mvc3dpZy5tNCBiL2J1aWxkL2FjLW1hY3Jvcy9zd2lnLm00Ci1pbmRleCA1NTUwMWZiLi4yOTYzODcyIDEwMDY0NAotLS0tIGEvYnVpbGQvYWMtbWFjcm9zL3N3aWcubTQKLSsrKyBiL2J1aWxkL2FjLW1hY3Jvcy9zd2lnLm00Ci1AQCAtMTI4LDQxICsxMjgsNiBAQCBBQ19ERUZVTihTVk5fRklORF9TV0lHLAotICAgICAgIGFjX2N2X3B5dGhvbl9saWJzPSJgJFBZVEhPTiAke2Fic19zcmNkaXJ9L2J1aWxkL2dldC1weS1pbmZvLnB5IC0tbGlic2AiCi0gICAgIF0pCi0gICAgIFNXSUdfUFlfTElCUz0iYFNWTl9SRU1PVkVfU1RBTkRBUkRfTElCX0RJUlMoJGFjX2N2X3B5dGhvbl9saWJzKWAiCi0tCi0tICAgIGRubCBTdW4gRm9ydGUgYWRkcyBhbiBleHRyYSBzcGFjZSBiZWZvcmUgc3Vic3RpdHV0aW5nIEFQUl9JTlQ2NF9UX0ZNVAotLSAgICBkbmwgZ2NjLTIuOTUgYWRkcyBhbiBleHRyYSBzcGFjZSBhZnRlciBzdWJzdGl0dXRpbmcgQVBSX0lOVDY0X1RfRk1UCi0tICAgIGRubCB0aHVzIHRoZSBlZ3JlcCBwYXR0ZXJucyBoYXZlIGEgKyBpbiB0aGVtLgotLSAgICBTVk5fUFlDRk1UX1NBVkVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLS0gICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkU1ZOX0FQUl9JTkNMVURFUyIKLS0gICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBhcHJfaW50NjRfdCBQeXRob24vQyBBUEkgZm9ybWF0IHN0cmluZ10sCi0tICAgICAgICAgICAgICAgICAgIFtzdm5fY3ZfcHljZm10X2Fwcl9pbnQ2NF90XSwgWwotLSAgICAgIGlmIHRlc3QgIngkc3ZuX2N2X3B5Y2ZtdF9hcHJfaW50NjRfdCIgPSAieCI7IHRoZW4KLS0gICAgICAgIEFDX0VHUkVQX0NQUChbTWFUY0h0SGlTICtcImxsZFwiICtFbkRlTmRdLAotLSAgICAgICAgICAgICAgICAgICAgIFsjaW5jbHVkZSA8YXByLmg+Ci0tICAgICAgICAgICAgICAgICAgICAgIE1hVGNIdEhpUyBBUFJfSU5UNjRfVF9GTVQgRW5EZU5kXSwKLS0gICAgICAgICAgICAgICAgICAgICBbc3ZuX2N2X3B5Y2ZtdF9hcHJfaW50NjRfdD0iTCJdKQotLSAgICAgIGZpCi0tICAgICAgaWYgdGVzdCAieCRzdm5fY3ZfcHljZm10X2Fwcl9pbnQ2NF90IiA9ICJ4IjsgdGhlbgotLSAgICAgICAgQUNfRUdSRVBfQ1BQKFtNYVRjSHRIaVMgK1wibGRcIiArRW5EZU5kXSxyCi0tICAgICAgICAgICAgICAgICAgICAgWyNpbmNsdWRlIDxhcHIuaD4KLS0gICAgICAgICAgICAgICAgICAgICAgTWFUY0h0SGlTIEFQUl9JTlQ2NF9UX0ZNVCBFbkRlTmRdLAotLSAgICAgICAgICAgICAgICAgICAgIFtzdm5fY3ZfcHljZm10X2Fwcl9pbnQ2NF90PSJsIl0pCi0tICAgICAgZmkKLS0gICAgICBpZiB0ZXN0ICJ4JHN2bl9jdl9weWNmbXRfYXByX2ludDY0X3QiID0gIngiOyB0aGVuCi0tICAgICAgICBBQ19FR1JFUF9DUFAoW01hVGNIdEhpUyArXCJkXCIgK0VuRGVOZF0sCi0tICAgICAgICAgICAgICAgICAgICAgWyNpbmNsdWRlIDxhcHIuaD4KLS0gICAgICAgICAgICAgICAgICAgICAgTWFUY0h0SGlTIEFQUl9JTlQ2NF9UX0ZNVCBFbkRlTmRdLAotLSAgICAgICAgICAgICAgICAgICAgIFtzdm5fY3ZfcHljZm10X2Fwcl9pbnQ2NF90PSJpIl0pCi0tICAgICAgZmkKLS0gICAgXSkKLS0gICAgQ1BQRkxBR1M9IiRTVk5fUFlDRk1UX1NBVkVfQ1BQRkxBR1MiCi0tICAgIGlmIHRlc3QgIngkc3ZuX2N2X3B5Y2ZtdF9hcHJfaW50NjRfdCIgPSAieCI7IHRoZW4KLS0gICAgICBBQ19NU0dfRVJST1IoW2ZhaWxlZCB0byByZWNvZ25pemUgQVBSX0lOVDY0X1RfRk1UIG9uIHRoaXMgcGxhdGZvcm1dKQotLSAgICBmaQotLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoW1NWTl9BUFJfSU5UNjRfVF9QWUNGTVRdLAotLSAgICAgICAgICAgICAgICAgICAgICAgWyIkc3ZuX2N2X3B5Y2ZtdF9hcHJfaW50NjRfdCJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byB0aGUgUHl0aG9uL0MgQVBJIGZvcm1hdCBjaGFyYWN0ZXIgc3VpdGFibGVdCi0tICAgICAgICAgICAgICAgICAgICAgICBbIGZvciBhcHJfaW50NjRfdF0pCi0gICBmaQotIAotICAgaWYgdGVzdCAiJFBFUkwiICE9ICJub25lIjsgdGhlbgotZGlmZiAtLWdpdCBhL3N1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9weXRob24vbGlic3ZuX3N3aWdfcHkvc3dpZ3V0aWxfcHkuYyBiL3N1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9weXRob24vbGlic3ZuX3N3aWdfcHkvc3dpZ3V0aWxfcHkuYwotaW5kZXggMmM5MGE2YS4uYWJlNWEyYSAxMDA2NDQKLS0tLSBhL3N1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9weXRob24vbGlic3ZuX3N3aWdfcHkvc3dpZ3V0aWxfcHkuYwotKysrIGIvc3VidmVyc2lvbi9iaW5kaW5ncy9zd2lnL3B5dGhvbi9saWJzdm5fc3dpZ19weS9zd2lndXRpbF9weS5jCi1AQCAtNDYsNyArNDYsNyBAQAotICNpbmNsdWRlICJzdm5fbWVyZ2VpbmZvLmgiCi0gI2luY2x1ZGUgInN2bl90eXBlcy5oIgotIAotLSNpbmNsdWRlICJzdm5fcHJpdmF0ZV9jb25maWcuaCIgLyogZm9yIFNWTl9BUFJfSU5UNjRfVF9QWUNGTVQgKi8KLSsjaW5jbHVkZSAic3ZuX3ByaXZhdGVfY29uZmlnLmgiCi0gCi0gI2luY2x1ZGUgInN3aWdfcHl0aG9uX2V4dGVybmFsX3J1bnRpbWUuc3dnIgotICNpbmNsdWRlICJzd2lndXRpbF9weS5oIgotQEAgLTMzOTQsMTAgKzMzOTQsOSBAQCBzdm5fZXJyb3JfdCAqc3ZuX3N3aWdfcHlfY2xpZW50X2JsYW1lX3JlY2VpdmVyX2Z1bmModm9pZCAqYmF0b24sCi0gICBzdm5fc3dpZ19weV9hY3F1aXJlX3B5X2xvY2soKTsKLSAKLSAgIGlmICgocmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHJlY2VpdmVyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTVk5fQVBSX0lOVDY0X1RfUFlDRk1UICJsc3NzTyYiKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbm8sIHJldmlzaW9uLCBhdXRob3IsIGRhdGUsIGxpbmUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX29iX3Bvb2wsIHBvb2wpKSA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikiTGxzc3NPJiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfTE9OR19MT05HKWxpbmVfbm8sIHJldmlzaW9uLCBhdXRob3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLCBsaW5lLCBtYWtlX29iX3Bvb2wsIHBvb2wpKSA9PSBOVUxMKQotICAgICB7Ci0gICAgICAgZXJyID0gY2FsbGJhY2tfZXhjZXB0aW9uX2Vycm9yKCk7Ci0gICAgIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEyLjIuYmIKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTIuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTIuMi5iYgppbmRleCBmMWFjMWRjLi40ZmZhMWM1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEyLjIuYmIKQEAgLTExLDExICsxMSwxMCBAQAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdWJ2ZXJzaW9uLTEuMTIuMC1hcHJfMS43LjBfZml4LTEucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZTRmNWMwYjFiMzhhNWQ4MmJkNmQxNmExNmZmMTM0NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZmFlN2M3M2Q4YTAwN2MxMDdjMGFlNWViMzcyYmMwYmIwMTNkYmZlOTY2ZmNkNWM1OWNkNWExOTVhNWUyZWRmIgorU1JDX1VSSVttZDVzdW1dID0gIjFmZjI0OWY4NDhmODM0ZGVkODg1MzY1NDNlMDMxOTc1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiZDBiNWM4ZTRjNTE3NTI2M2RjOWE5MmZkOWFlZjk0Y2U5MTdlODBhZjAzNGYyNmZlNWM0NWZkZTdlMGY3NzEiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgppbmRleCAxYWUyMWIxLi5iMDQzM2UwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMzLmJiCkBAIC0zMyw1ICszMyw1IEBACiAKIEZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1ib290Y2hhcnQiCiAKLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLXJvb3RwcmVmaXg9JHtiYXNlX3ByZWZpeH0gXAorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke3Jvb3RfcHJlZml4fSBcCiAgICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKaW5kZXggNDZmYjJkZC4uZTMwM2YzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCkBAIC02Nyw3ICs2Nyw3IEBACiAKIAkjIFJlbW92ZSAvdmFyL3J1biBmcm9tIHBhY2thZ2UgYXMgY3Vwc2Qgd2lsbCBwb3B1bGF0ZSBpdCBvbiBzdGFydHVwCiAJcm0gLWZyICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9ydW4KLQlybWRpciAke0R9LyR7bGliZGlyfS8ke0JQTn0vZHJpdmVyCisJcm1kaXIgJHtEfS8ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9kcml2ZXIKIAogCSMgRml4IHRoZSBwYW0gY29uZmlndXJhdGlvbiBmaWxlIHBlcm1pc3Npb25zCiAJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHNfc2VydmVyYmluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHNfc2VydmVyYmluLnBhdGNoCmluZGV4IGY3YjQ0YTcuLjg1YzZhZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzX3NlcnZlcmJpbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2gKQEAgLTQsNiArNCwxMiBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQogCitVcGRhdGUgb24gMjAxOTA5MDQ6CitSZWRlZmluZSBDVVBTX1NFUlZFUkJJTiB0byAiJGxpYmV4ZWNkaXIvY3VwcyIgd2hpY2ggc29sdmVzIGZpbGUgY29uZmxpY3Rpb24KK3doZW4gbXVsdGlsaWIgaXMgZW5hYmxlZC4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKIEluZGV4OiBjdXBzLTEuNC42L2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBjdXBzLTEuNC42Lm9yaWcvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAkyMDA5LTA0LTEyIDE2OjA0OjUxLjAwMDAwMDAwMCAtMDcwMApAQCAtMTMsNyArMTksNyBAQAogIAkJIyBBbGwgb3RoZXJzCiAgCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKIC0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCi0rCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmRpci9jdXBzIgorKwkJQ1VQU19TRVJWRVJCSU49IiRsaWJleGVjZGlyL2N1cHMiCiAgCQk7OwogIGVzYWMKICAKQEAgLTI2LDcgKzMyLDcgQEAKICAJCSMgQWxsIG90aGVycwogIAkJSU5TVEFMTF9TWVNWPSJpbnN0YWxsLXN5c3YiCiAtCQlDVVBTX1NFUlZFUkJJTj0iJGV4ZWNfcHJlZml4L2xpYi9jdXBzIgotKwkJQ1VQU19TRVJWRVJCSU49IiRsaWJkaXIvY3VwcyIKKysJCUNVUFNfU0VSVkVSQklOPSIkbGliZXhlY2Rpci9jdXBzIgogIAkJOzsKICBlc2FjCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLzAwMDEtU2tpcC1zdHJpcC10cmFpbGluZy1jci10ZXN0LWNhc2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLzAwMDEtU2tpcC1zdHJpcC10cmFpbGluZy1jci10ZXN0LWNhc2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFjMWM0MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMvMDAwMS1Ta2lwLXN0cmlwLXRyYWlsaW5nLWNyLXRlc3QtY2FzZS5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGJkN2ZiOGJlMmFlMmQ3NTM0N2NmNzczMzMwMmQ1MDkzMDQ2ZmZhODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZWlyYW4gSG9uZyA8cGVpcmFuLmhvbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgNSBTZXAgMjAxOSAxNTo0MjoyMiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBTa2lwIHN0cmlwLXRyYWlsaW5nLWNyIHRlc3QgY2FzZQorCitTa2lwIHRoZSB0ZXN0ICJzdHJpcC10cmFpbGluZy1jciIgc2luY2UgaXQgcmVxdWlyZXMgdmFsZ3JpbmQgdG8KK3dvcmssIGJ1dCB2YWxncmluZCBpcyBjb25zaWRlcmVkIHRvbyBoZWF2eS13ZWlnaHQgZm9yIGRpZmZ1dGlscworcGFja2FnZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUGVpcmFuIEhvbmcgPHBlaXJhbi5ob25nQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0cy9NYWtlZmlsZS5hbSB8IDQgKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDgzYTdjOWQuLjA0ZDUxYjUgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0yMSw4ICsyMSwxMCBAQCBURVNUUyA9IFwKKyAgIHN0ZGluIFwKKyAgIHN0cmNvbGwtMC1uYW1lcyBcCisgICBmaWxlbmFtZS1xdW90aW5nIFwKKy0gIHN0cmlwLXRyYWlsaW5nLWNyIFwKKyAgIGNvbG9ycworKyMgU2tpcHBpbmcgdGhpcyB0ZXN0IHNpbmNlIGl0IHJlcXVpcmVzIHZhbGdyaW5kCisrIyBhbmQgdGh1cyBpcyB0b28gaGVhdnkgZm9yIGRpZmZ1dGlscyBwYWNrYWdlCisrIyBzdHJpcC10cmFpbGluZy1jcgorIAorIFhGQUlMX1RFU1RTID0gbGFyZ2Utc3Vib3B0CisgCistLSAKKzIuMjEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy43LmJiCmluZGV4IDdkYWVlZTMuLjgxMTFhZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy43LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy43LmJiCkBAIC01LDYgKzUsNyBAQAogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZGlmZnV0aWxzL2RpZmZ1dGlscy0ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU2tpcC1zdHJpcC10cmFpbGluZy1jci10ZXN0LWNhc2UucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNDgyNGFkYzBlOTVkYmJmMTFkZmJkZmFhZDZhMWU0NjEiCkBAIC0xNyw3ICsxOCw3IEBACiAKIGluaGVyaXQgcHRlc3QKIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBwZXJsIgogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewogCXQ9JHtEfSR7UFRFU1RfUEFUSH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuMTAuYmIKaW5kZXggNWFiOTlkMC4uNTBkYWQ3YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuMTAuYmIKQEAgLTE0LDcgKzE0LDcgQEAKIAogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBwZXJsLXB0ZXN0IGdyZXAgZGlmZnV0aWxzIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogaW5oZXJpdCBwdGVzdAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1sc2ItZGV2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLWRldi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJkYzllMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1sc2ItZGV2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGNvcmUtaW1hZ2UtbHNiLmJiCi0KLURFU0NSSVBUSU9OID0gIkJhc2ljIGltYWdlIHdpdGhvdXQgWCBzdXBwb3J0IHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCB3b3JrLiBJdCBcCi1jYW4gYmUgdXNlZCBmb3IgY3VzdG9taXphdGlvbiBhbmQgaW1wbGVtZW50YXRpb25zIHRoYXQgY29uZm9ybSB0byBMaW51eCBcCi1TdGFuZGFyZCBCYXNlIChMU0IpLiIKLQotSU1BR0VfRkVBVFVSRVMgKz0gImRldi1wa2dzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLXNkay5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi1zZGsuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZDYwMmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLXNkay5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgY29yZS1pbWFnZS1sc2IuYmIKLQotREVTQ1JJUFRJT04gPSAiQmFzaWMgaW1hZ2Ugd2l0aG91dCBYIHN1cHBvcnQgc3VpdGFibGUgZm9yIExpbnV4IFN0YW5kYXJkIEJhc2UgXAotKExTQikgaW1wbGVtZW50YXRpb25zLiBJdCBpbmNsdWRlcyB0aGUgZnVsbCBtZXRhLXRvb2xjaGFpbiwgcGx1cyBkZXZlbG9wbWVudCBcCi1oZWFkZXJzIGFuZCBsaWJyYXJpZXMgdG8gZm9ybSBhIHN0YW5kYWxvbmUgU0RLLiIKLQotSU1BR0VfRkVBVFVSRVMgKz0gInRvb2xzLXNkayBkZXYtcGtncyB0b29scy1kZWJ1ZyBlY2xpcHNlLWRlYnVnIHRvb2xzLXByb2ZpbGUgdG9vbHMtdGVzdGFwcHMgZGVidWctdHdlYWtzIgotCi1JTUFHRV9JTlNUQUxMICs9ICJrZXJuZWwtZGV2c3JjIgotCi0jIFJlZHVjZSB0aGlzIHRvIHRyeSBhbmQga2VlcCBiZWxvdyB0aGUgNEdCIGltYWdlIHNpemUgZm9yIG5vdwotSU1BR0VfT1ZFUkhFQURfRkFDVE9SID0gIjEuMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI2MWM2ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1sc2IuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBbiBpbWFnZSBjb250YWluaW5nIHBhY2thZ2VzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIGNvbmZvcm0gXAotdG8gdGhlIExpbnV4IFN0YW5kYXJkIEJhc2UgKExTQikgc3BlY2lmaWNhdGlvbi4iCi0KLUlNQUdFX0ZFQVRVUkVTICs9ICJzcGxhc2ggc3NoLXNlcnZlci1vcGVuc3NoIGh3Y29kZWNzIHBhY2thZ2UtbWFuYWdlbWVudCIKLQotSU1BR0VfSU5TVEFMTCA9ICJcCi0gICAgJHtDT1JFX0lNQUdFX0JBU0VfSU5TVEFMTH0gXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZSBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiIFwKLSAgICAiCi0KLWluaGVyaXQgY29yZS1pbWFnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy9haV9jYW5vbmlkbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy9haV9jYW5vbmlkbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q5MTI2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvYWlfY2Fub25pZG4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIDcxNGUyYjQ1OGMxNTFjNWJkZmU5MzY0NzQ0NWNkMDBkZDhlMzZmZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRyIFZvcmVsIDxwZXRyLnZvcmVsQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjEgSnVsIDIwMTggMTc6NDY6MTQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcGluZzogRml4IEFJX0NBTk9OSUROIHVzYWdlIG9uIHNvbWUgc3lzdGVtcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Db21taXQgOTlmNjdkYiB1c2VkIEFJX0NBTk9OSUROIGluIGEgd2F5LCB3aGljaCBicm9rZSBjb21waWxhdGlvbiBvbgotc3lzdGVtcyB3aGVyZSBBSV9DQU5PTklETiBpcyBub3QgZGVmaW5lZCBpbiBuZXRkYi5oIChlLmcuIGdsaWJjIDwgMi4zLjQsCi1hbHRlcm5hdGl2ZSBsaWJjcyB0aGF0IGRvbid0IHN1cHBvcnQgSUROOiBlLmcuIGN1cnJlbnQgbXVzbCAxLjEuMTkgYW5kCi11Q2xpYmMtbmcgMS4wLjMwKSB3aGVuIG5vdCB1c2luZyB0aGUgc3lzdGVtIGxpYmlkbjIuCi0KLUZpeGVzOiA5OWY2N2RiIHBpbmc6IEZpeCBwaW5nIG5hbWUgZW5jb2RlZCB1c2luZyBBQ0Ugb24gQyBsb2NhbGUKLQotUmVwb3J0ZWQtYnk6IE5pY2hvbGFzIEZpc2gKLVNpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHBldHIudm9yZWxAZ21haWwuY29tPgotCi0tLS0KLSBwaW5nLmMgfCAyICstCi0gcGluZy5oIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcGluZy5jIGIvcGluZy5jCi1pbmRleCA3MzM0NzdmLi5iMjQxODE1IDEwMDY0NAotLS0tIGEvcGluZy5jCi0rKysgYi9waW5nLmMKLUBAIC0yMDcsOSArMjA3LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCi0gI2lmZGVmIFVTRV9JRE4KLSAJc2V0bG9jYWxlKExDX0FMTCwgIiIpOwotLSNlbmRpZgotIAlpZiAoIXN0cmNtcChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSwgIkMiKSkKLSAJCWhpbnRzLmFpX2ZsYWdzICY9IH4gQUlfQ0FOT05JRE47Ci0rI2VuZGlmCi0gCi0gCS8qIFN1cHBvcnQgYmVpbmcgY2FsbGVkIHVzaW5nIGBwaW5nNGAgb3IgYHBpbmc2YCBzeW1saW5rcyAqLwotIAlpZiAoYXJndlswXVtzdHJsZW4oYXJndlswXSktMV0gPT0gJzQnKQotZGlmZiAtLWdpdCBhL3BpbmcuaCBiL3BpbmcuaAotaW5kZXggM2UwOTY4NS4uOGEwYzRlZiAxMDA2NDQKLS0tLSBhL3BpbmcuaAotKysrIGIvcGluZy5oCi1AQCAtMjgsNyArMjgsNiBAQAotICNpbmNsdWRlIDxuZXRpbmV0L2ljbXA2Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2ZpbHRlci5oPgotICNpbmNsdWRlIDxyZXNvbHYuaD4KLS0jaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gI2lmZGVmIENBUEFCSUxJVElFUwotICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KLUBAIC0zNiw2ICszNSw3IEBACi0gI2VuZGlmCi0gCi0gI2lmZGVmIFVTRV9JRE4KLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPGlkbjIuaD4KLSAjZGVmaW5lIGdldGFkZHJpbmZvX2ZsYWdzIChBSV9DQU5PTk5BTUUgfCBBSV9JRE4gfCBBSV9DQU5PTklETikKLSAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzIE5JX0lETgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2luc3RhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvaW5zdGFsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJmZWZkNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvaW5zdGFsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gNWM4YzNiMDRkNzMzMDQ2NzkzNDBmODkzNjM2ZTg3NjkxOTkyMDUzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzQGJ1cnRvbmluaS5jb20+Ci1EYXRlOiBNb24sIDIzIEp1bCAyMDE4IDE0OjIxOjAzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBpbnN0YWxsCi0KLUFkZCBhIHNpbXBsZSBpbnN0YWxsIHJ1bGUgc28gdGhhdCB3ZSBhbHdheXMgaW5zdGFsbCB0aGUgYmluYXJpZXMgdGhhdCB3ZXJlIGJ1aWx0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLQotIE1ha2VmaWxlIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMTdmYzVjOS4uZTBjMjc4NCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTIzMSwzICsyMzEsNyBAQCBycG06Ci0gCUAkKFJQTUJVSUxEKSAtdGEgLS1kZWZpbmUgJ2N1cnJlbnQgeWVzJyAkKFJQTVRNUCkvaXB1dGlscy50YXIuYnoyCi0gCUBybSAtZiAkKFJQTVRNUCkvaXB1dGlscy50YXIuYnoyCi0gCi0raW5zdGFsbDoKLSsJZm9yIHQgaW4gJChUQVJHRVRTKTsgZG8gXAotKwkJaW5zdGFsbCAtRCAkJHQgJChERVNURElSKSQoYmluZGlyKS8kJHQ7IFwKLSsJZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE4MDYyOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxODA2MjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmZjQ0YmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE4MDYyOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAotdHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI3OTJlMzhhYmRjNTlmNzY2YTMxNTM5MDhmMjNlNzY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuQlNEMzttZDU9MGYwMGQ5OTIzOWQ5MjJmZmQxM2NhYmVmODNiMzM0NDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJnbnV0bHMgbGliY2FwIGxpYmdjcnlwdCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCi0gICAgICAgICAgIGZpbGU6Ly9haV9jYW5vbmlkbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsLnBhdGNoIgotU1JDUkVWID0gImY2YWFjOGRiZTNmOGM0NWM1MzQyNDg1NGEzMzEyYmRkOGNkZDU4ZDMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPnNcZCspIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICJVU0VfSUROPXllcyxVU0VfSUROPW5vLGxpYmlkbjIiCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9IC1EX0dOVV9TT1VSQ0UnIFZQQVRIPSIke1NUQUdJTkdfTElCRElSfToke1NUQUdJTkdfRElSX0hPU1R9LyR7YmFzZV9saWJkaXJ9IiAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IGFsbAotfQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGJpbmRpcj0ke2Jhc2VfYmluZGlyfSBpbnN0YWxsCi0JZm9yIGIgaW4gcGluZyB0cmFjZXJvdXRlNiBjbG9ja2RpZmY7IGRvCi0JCWNobW9kIHUrcyAke0R9JHtiYXNlX2JpbmRpcn0vJGIKLQlkb25lCi19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUFMVEVSTkFUSVZFXyR7UE59LXBpbmcgPSAicGluZyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwaW5nXSA9ICIke2Jhc2VfYmluZGlyfS9waW5nIgotCi1TUExJVFBLR1MgPSAiJHtQTn0tcGluZyAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiAke1BOfS10ZnRwZCAke1BOfS1yYXJwZCAke1BOfS1yZGlzYyIKLVBBQ0tBR0VTICs9ICIke1NQTElUUEtHU30iCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1SREVQRU5EU18ke1BOfSArPSAiJHtTUExJVFBLR1N9IgotCi1GSUxFU18ke1BOfQk9ICIiCi1GSUxFU18ke1BOfS1waW5nID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmcuJHtCUE59IgotRklMRVNfJHtQTn0tYXJwaW5nID0gIiR7YmFzZV9iaW5kaXJ9L2FycGluZyIKLUZJTEVTXyR7UE59LXRyYWNlcGF0aCA9ICIke2Jhc2VfYmluZGlyfS90cmFjZXBhdGgiCi1GSUxFU18ke1BOfS10cmFjZXJvdXRlNgk9ICIke2Jhc2VfYmluZGlyfS90cmFjZXJvdXRlNiIKLUZJTEVTXyR7UE59LWNsb2NrZGlmZiA9ICIke2Jhc2VfYmluZGlyfS9jbG9ja2RpZmYiCi1GSUxFU18ke1BOfS10ZnRwZCA9ICIke2Jhc2VfYmluZGlyfS90ZnRwZCIKLUZJTEVTXyR7UE59LXJhcnBkID0gIiR7YmFzZV9iaW5kaXJ9L3JhcnBkIgotRklMRVNfJHtQTn0tcmRpc2MgPSAiJHtiYXNlX2JpbmRpcn0vcmRpc2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTkwNzA5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE5MDcwOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGYyNDcwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE5MDcwOS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIk5ldHdvcmsgbW9uaXRvcmluZyB0b29scyIKK0RFU0NSSVBUSU9OID0gIlV0aWxpdGllcyBmb3IgdGhlIElQIHByb3RvY29sLCBpbmNsdWRpbmcgdHJhY2Vyb3V0ZTYsIFwKK3RyYWNlcGF0aCwgdHJhY2VwYXRoNiwgcGluZywgcGluZzYgYW5kIGFycGluZy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01NWFhOGM5ZmNhZDA2OTFjZWYwZWNkNDIwMzYxZTM5MCIKKworREVQRU5EUyA9ICJnbnV0bHMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMiCitTUkNSRVYgPSAiMTNlMDA4NDcxNzZhYTIzNjgzZDY4ZmNlMWQxN2ZmYjUyMzUxMDk0NiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+c1xkKykiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJjYXAgbGliZ2NyeXB0IHJhcnBkIHRyYWNlcm91dGU2IgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi1EVVNFX0NBUD10cnVlLCAtRFVTRV9DQVA9ZmFsc2UsIGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItRFVTRV9DUllQVE89Z2NyeXB0LCAtRFVTRV9DUllQVE89bm9uZSwgbGliZ2NyeXB0IgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi1EVVNFX0lETj10cnVlLCAtRFVTRV9JRE49ZmFsc2UsIGxpYmlkbjIiCitQQUNLQUdFQ09ORklHW2dldHRleHRdID0gIi1EVVNFX0dFVFRFWFQ9dHJ1ZSwgLURVU0VfR0VUVEVYVD1mYWxzZSwgZ2V0dGV4dCIKK1BBQ0tBR0VDT05GSUdbcmFycGRdID0gIi1EQlVJTERfUkFSUEQ9dHJ1ZSwtREJVSUxEX1JBUlBEPWZhbHNlLCIKK1BBQ0tBR0VDT05GSUdbdHJhY2Vyb3V0ZTZdID0gIi1EQlVJTERfVFJBQ0VST1VURTY9dHJ1ZSwtREJVSUxEX1RSQUNFUk9VVEU2PWZhbHNlLCIKK1BBQ0tBR0VDT05GSUdbZG9jc10gPSAiLURCVUlMRF9IVE1MX01BTlM9dHJ1ZSAtREJVSUxEX01BTlM9dHJ1ZSwtREJVSUxEX0hUTUxfTUFOUz1mYWxzZSAtREJVSUxEX01BTlM9ZmFsc2UsIGxpYnhzbHQiCisKK2luaGVyaXQgbWVzb24gdXBkYXRlLWFsdGVybmF0aXZlcworCitFWFRSQV9PRU1FU09OICs9ICItLXByZWZpeD0ke3Jvb3RfcHJlZml4fS8iCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCisKK1NQTElUUEtHUyA9ICIke1BOfS1waW5nICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tY2xvY2tkaWZmICR7UE59LXRmdHBkICR7UE59LXJhcnBkICR7UE59LXJkaXNjICR7UE59LW5pbmZvZCIKK1BBQ0tBR0VTICs9ICIke1NQTElUUEtHU30iCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1yYXJwZCA9ICIxIgorQUxMT1dfRU1QVFlfJHtQTn0tdHJhY2Vyb3V0ZTYgPSAiMSIKK1JERVBFTkRTXyR7UE59ICs9ICIke1NQTElUUEtHU30iCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCitGSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgorRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKK0ZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgorRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKK0ZJTEVTXyR7UE59LXRmdHBkID0gIiR7YmFzZV9iaW5kaXJ9L3RmdHBkIgorRklMRVNfJHtQTn0tcmFycGQgPSAiJHtiYXNlX3NiaW5kaXJ9L3JhcnBkIgorRklMRVNfJHtQTn0tcmRpc2MgPSAiJHtiYXNlX3NiaW5kaXJ9L3JkaXNjIgorRklMRVNfJHtQTn0tbmluZm9kID0gIiR7YmFzZV9zYmluZGlyfS9uaW5mb2QgJHtzeXNjb25mZGlyfS9pbml0LmQvbmluZm9kLnNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4NzcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTgtMTAwMDg3Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U2MzgzNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTgtMTAwMDg3Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUNWRTogQ1ZFLTIwMTgtMTAwMDg3NwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAwMjFlZmE1MjJhZDcyOWZmMGY1ODA2YzRjZTUzZTRhNmNjMWRhYTMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+Ci1EYXRlOiBUdWUsIDIwIE5vdiAyMDE4IDE3OjU2OjI5ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGEgZG91YmxlLWZyZWUgd2hlbiBhIHdpbmRvdyBzaXplIG9mIDAgaXMgc3BlY2lmaWVkCi0KLW5ld19zaXplIGNhbiBiZSAwIHdpdGggYSBtYWxpY2lvdXMgb3IgY29ycnVwdGVkIFJBUiBhcmNoaXZlLgotCi1yZWFsbG9jKGFyZWEsIDApIGlzIGVxdWl2YWxlbnQgdG8gZnJlZShhcmVhKSwgc28gdGhlIHJlZ2lvbiB3b3VsZAotYmUgZnJlZSgpZCBoZXJlIGFuZCB0aGUgZnJlZSgpZCBhZ2FpbiBpbiB0aGUgY2xlYW51cCBmdW5jdGlvbi4KLQotRm91bmQgd2l0aCBhIHNldHVwIHJ1bm5pbmcgQUZMLCBhZmwtcmIsIGFuZCBxc3ltLgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYwotaW5kZXggMjM0NTIyMjIuLjZmNDE5YzI3IDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCi1AQCAtMjMwMCw2ICsyMzAwLDExIEBAIHBhcnNlX2NvZGVzKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEpCi0gICAgICAgbmV3X3NpemUgPSBESUNUSU9OQVJZX01BWF9TSVpFOwotICAgICBlbHNlCi0gICAgICAgbmV3X3NpemUgPSByYXJfZmxzKCh1bnNpZ25lZCBpbnQpcmFyLT51bnBfc2l6ZSkgPDwgMTsKLSsgICAgaWYgKG5ld19zaXplID09IDApIHsKLSsgICAgICBhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiWmVybyB3aW5kb3cgc2l6ZSBpcyBpbnZhbGlkLiIpOwotKyAgICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Ci0rICAgIH0KLSAgICAgbmV3X3dpbmRvdyA9IHJlYWxsb2MocmFyLT5senNzLndpbmRvdywgbmV3X3NpemUpOwotICAgICBpZiAobmV3X3dpbmRvdyA9PSBOVUxMKSB7Ci0gICAgICAgYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEVOT01FTSwKLS0tIAotMi4yMC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOC0xMDAwODc4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4NzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NjhmZDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4NzgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1DVkU6IENWRS0yMDE4LTEwMDA4NzgKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gYmZjZmU2ZjA0ZWQyMGRiMjUwNGRiOGEyNTRkMWY0MGExZDg0ZWIyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBBeHRlbnMgPGRqYUBheHRlbnMubmV0PgotRGF0ZTogVHVlLCA0IERlYyAyMDE4IDAwOjU1OjIyICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJhcjogZmlsZSBzcGxpdCBhY3Jvc3MgbXVsdGktcGFydCBhcmNoaXZlcyBtdXN0IG1hdGNoCi0KLUZ1enppbmcgdW5jb3ZlcmVkIHNvbWUgVUFGIGFuZCBtZW1vcnkgb3ZlcnJ1biBidWdzIHdoZXJlIGEgZmlsZSBpbiBhCi1zaW5nbGUgZmlsZSBhcmNoaXZlIHJlcG9ydGVkIHRoYXQgaXQgd2FzIHNwbGl0IGFjcm9zcyBtdWx0aXBsZQotdm9sdW1lcy4gVGhpcyB3YXMgY2F1c2VkIGJ5IHBwbWQ3IG9wZXJhdGlvbnMgY2FsbGluZwotcmFyX2JyX2ZpbGx1cC4gVGhpcyB3b3VsZCBpbnZva2UgcmFyX3JlYWRfYWhlYWQsIHdoaWNoIHdvdWxkIGluIHNvbWUKLXNpdHVhdGlvbnMgaW52b2tlIGFyY2hpdmVfcmVhZF9mb3JtYXRfcmFyX3JlYWRfaGVhZGVyLiAgVGhhdCB3b3VsZAotY2hlY2sgdGhlIG5ldyBmaWxlIG5hbWUgYWdhaW5zdCB0aGUgb2xkIGZpbGUgbmFtZSwgYW5kIGlmIHRoZXkgZGlkbid0Ci1tYXRjaCB1cCBpdCB3b3VsZCBmcmVlIHRoZSBwcG1kNyBidWZmZXIgYW5kIGFsbG9jYXRlIGEgbmV3Ci1vbmUuIEhvd2V2ZXIsIGJlY2F1c2UgdGhlIHBwbWQ3IGRlY29kZXIgd2Fzbid0IGFjdHVhbGx5IGRvbmUgd2l0aCB0aGUKLWJ1ZmZlciwgaXQgd291bGQgY29udGludWUgdG8gdXNlZCB0aGUgZnJlZWQgYnVmZmVyLiBCb3RoIHJlYWRzIGFuZAotd3JpdGVzIHRvIHRoZSBmcmVlZCByZWdpb24gY2FuIGJlIG9ic2VydmVkLgotCi1UaGlzIGlzIHF1aXRlIHRyaWNreSB0byBzb2x2ZTogb25jZSB0aGUgYnVmZmVyIGhhcyBiZWVuIGZyZWVkIGl0IGlzCi10b28gbGF0ZSwgYXMgdGhlIHBwbWQ3IGRlY29kZXIgZnVuY3Rpb25zIGFsbW9zdCB1bml2ZXJzYWxseSBhc3N1bWUKLXN1Y2Nlc3MgLSB0aGVyZSdzIG5vIHdheSBmb3IgcHBtZF9yZWFkIHRvIHNpZ25hbCBlcnJvciwgbm9yIGFyZSB0aGVyZQotZ29vZCB3YXlzIGZvciBmdW5jdGlvbnMgbGlrZSBSYW5nZV9Ob3JtYWxpc2UgdG8gcHJvcGFnYXRlIHRoZW0uIFNvIHdlCi1jYW4ndCBkZXRlY3QgYWZ0ZXIgdGhlIGZhY3QgdGhhdCB3ZSdyZSBpbiBhbiBpbnZhbGlkIHN0YXRlIC0gZS5nLiBieQotY2hlY2tpbmcgcmFyLT5jdXJzb3IsIHdlIGhhdmUgdG8gcHJldmVudCBvdXJzZWx2ZXMgZnJvbSBldmVyIGVuZGluZyB1cAotdGhlcmUuIFNvLCB3aGVuIHdlIGFyZSBpbiB0aGUgZGFuZ2Vyb3VzIHBhcnQgb3IgcmFyX3JlYWRfYWhlYWQgdGhhdAotYXNzdW1lcyBhIHZhbGlkIHNwbGl0LCB3ZSBzZXQgYSBmbGFnIGZvcmNlIHJlYWRfaGVhZGVyIHRvIGVpdGhlciBnbwotZG93biB0aGUgcGF0aCBmb3Igc3BsaXQgZmlsZXMgb3IgYmFpbC4gVGhpcyBtZWFucyB0aGF0IHRoZSBwcG1kNwotZGVjb2RlciBrZWVwcyBhIHZhbGlkIGJ1ZmZlciBhbmQganVzdCBydW5zIG91dCBvZiBkYXRhLgotCi1Gb3VuZCB3aXRoIGEgY29tYmluYXRpb24gb2YgQUZMLCBhZmwtcmIgYW5kIHFzeW0uCi0tLS0KLSBsaWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYwotaW5kZXggNmY0MTljMjcuLmE4Y2M1Yzk0IDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCi1AQCAtMjU4LDYgKzI1OCw3IEBAIHN0cnVjdCByYXIKLSAgIHN0cnVjdCBkYXRhX2Jsb2NrX29mZnNldHMgKmRibzsKLSAgIHVuc2lnbmVkIGludCBjdXJzb3I7Ci0gICB1bnNpZ25lZCBpbnQgbm9kZXM7Ci0rICBjaGFyIGZpbGVuYW1lX211c3RfbWF0Y2g7Ci0gCi0gICAvKiBMWlNTIG1lbWJlcnMgKi8KLSAgIHN0cnVjdCBodWZmbWFuX2NvZGUgbWFpbmNvZGU7Ci1AQCAtMTU2MCw2ICsxNTYxLDEyIEBAIHJlYWRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwKLSAgICAgfQotICAgICByZXR1cm4gcmV0OwotICAgfQotKyAgZWxzZSBpZiAocmFyLT5maWxlbmFtZV9tdXN0X21hdGNoKQotKyAgewotKyAgICBhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLSsgICAgICAiTWlzbWF0Y2ggb2YgZmlsZSBwYXJ0cyBzcGxpdCBhY3Jvc3MgbXVsdGktdm9sdW1lIGFyY2hpdmUiKTsKLSsgICAgcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKLSsgIH0KLSAKLSAgIHJhci0+ZmlsZW5hbWVfc2F2ZSA9IChjaGFyKilyZWFsbG9jKHJhci0+ZmlsZW5hbWVfc2F2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lX3NpemUgKyAxKTsKLUBAIC0yOTMzLDEyICsyOTQwLDE0IEBAIHJhcl9yZWFkX2FoZWFkKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHNpemVfdCBtaW4sIHNzaXplX3QgKmF2YWlsKQotICAgICBlbHNlIGlmICgqYXZhaWwgPT0gMCAmJiByYXItPm1haW5fZmxhZ3MgJiBNSERfVk9MVU1FICYmCi0gICAgICAgcmFyLT5maWxlX2ZsYWdzICYgRkhEX1NQTElUX0FGVEVSKQotICAgICB7Ci0rICAgICAgcmFyLT5maWxlbmFtZV9tdXN0X21hdGNoID0gMTsKLSAgICAgICByZXQgPSBhcmNoaXZlX3JlYWRfZm9ybWF0X3Jhcl9yZWFkX2hlYWRlcihhLCBhLT5lbnRyeSk7Ci0gICAgICAgaWYgKHJldCA9PSAoQVJDSElWRV9FT0YpKQotICAgICAgIHsKLSAgICAgICAgIHJhci0+aGFzX2VuZGFyY19oZWFkZXIgPSAxOwotICAgICAgICAgcmV0ID0gYXJjaGl2ZV9yZWFkX2Zvcm1hdF9yYXJfcmVhZF9oZWFkZXIoYSwgYS0+ZW50cnkpOwotICAgICAgIH0KLSsgICAgICByYXItPmZpbGVuYW1lX211c3RfbWF0Y2ggPSAwOwotICAgICAgIGlmIChyZXQgIT0gKEFSQ0hJVkVfT0spKQotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgcmV0dXJuIHJhcl9yZWFkX2FoZWFkKGEsIG1pbiwgYXZhaWwpOwotLS0gCi0yLjIwLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4NzkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTgtMTAwMDg3OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYyNTkzMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTgtMTAwMDg3OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUNWRTogQ1ZFLTIwMTgtMTAwMDg3OQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAxNWJmNDRmZDJjMWFkMGUzZmQ4NzA0OGIzZmNjOTBjNGRjZmYxMTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+Ci1EYXRlOiBUdWUsIDQgRGVjIDIwMTggMTQ6Mjk6NDIgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gU2tpcCAwLWxlbmd0aCBBQ0wgZmllbGRzCi0KLUN1cnJlbnRseSwgaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIGFuIGFyY2hpdmUgdGhhdCBjcmFzaGVzIGJzZHRhcgotd2l0aCBhIG1hbGZvcm1lZCBBQ0w6Ci0KLVByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdC4KLWFyY2hpdmVfYWNsX2Zyb21fdGV4dF9sIChhY2w9PG9wdGltaXNlZCBvdXQ+LCB0ZXh0PTB4N2UyZTkyICIiLCB3YW50X3R5cGU9PG9wdGltaXNlZCBvdXQ+LCBzYz08b3B0aW1pc2VkIG91dD4pIGF0IGxpYmFyY2hpdmUvYXJjaGl2ZV9hY2wuYzoxNzI2Ci0xNzI2CQkJCXN3aXRjaCAoKnMpIHsKLShnZGIpIHAgbgotJDEgPSAxCi0oZ2RiKSBwIGZpZWxkW25dCi0kMiA9IHtzdGFydCA9IDB4MCwgZW5kID0gMHgwfQotCi1TdG9wIHRoaXMgYnkgY2hlY2tpbmcgdGhhdCB0aGUgbGVuZ3RoIGlzIG5vdCB6ZXJvIGJlZm9yZSBiZWdpbm5pbmcKLXRoZSBzd2l0Y2ggc3RhdGVtZW50LgotCi1JIGFtIHByZXR0eSBzdXJlIHRoaXMgaXMgdGhlIGJ1ZyBtZW50aW9uZWQgaW4gdGhlIHFzeW0gcGFwZXIgWzFdLAotYW5kIEkgd2FzIGFibGUgdG8gcmVwbGljYXRlIGl0IHdpdGggYSBxc3ltICsgQUZMICsgYWZsLXJiIHNldHVwLgotCi1bMV0gaHR0cHM6Ly93d3cudXNlbml4Lm9yZy9jb25mZXJlbmNlL3VzZW5peHNlY3VyaXR5MTgvcHJlc2VudGF0aW9uL3l1bgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX2FjbC5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9hY2wuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9hY2wuYwotaW5kZXggNTEyYmVlZTEuLjdiZWVlZTg2IDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX2FjbC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfYWNsLmMKLUBAIC0xNzIzLDYgKzE3MjMsMTEgQEAgYXJjaGl2ZV9hY2xfZnJvbV90ZXh0X2woc3RydWN0IGFyY2hpdmVfYWNsICphY2wsIGNvbnN0IGNoYXIgKnRleHQsCi0gCQkJc3QgPSBmaWVsZFtuXS5zdGFydCArIDE7Ci0gCQkJbGVuID0gZmllbGRbbl0uZW5kIC0gZmllbGRbbl0uc3RhcnQ7Ci0gCi0rCQkJaWYgKGxlbiA9PSAwKSB7Ci0rCQkJCXJldCA9IEFSQ0hJVkVfV0FSTjsKLSsJCQkJY29udGludWU7Ci0rCQkJfQotKwotIAkJCXN3aXRjaCAoKnMpIHsKLSAJCQljYXNlICd1JzoKLSAJCQkJaWYgKGxlbiA9PSAxIHx8IChsZW4gPT0gNAotLS0gCi0yLjIwLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4ODAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTgtMTAwMDg4MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMyNjRhMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTgtMTAwMDg4MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUNWRTogQ1ZFLTIwMTgtMTAwMDg4MAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA5Yzg0Yjc0MjY2NjBjMDljMThjYzM0OWY2ZDcwYjVmODE2OGI1NjgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+Ci1EYXRlOiBUdWUsIDQgRGVjIDIwMTggMTY6MzM6NDIgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gd2FyYzogY29uc3VtZSBkYXRhIG9uY2UgcmVhZAotCi1UaGUgd2FyYyBkZWNvZGVyIG9ubHkgdXNlZCByZWFkIGFoZWFkLCBpdCB3b3VsZG4ndCBhY3R1YWxseSBjb25zdW1lCi1kYXRhIHRoYXQgaGFkIHByZXZpb3VzbHkgYmVlbiBwcmludGVkLiBUaGlzIG1lYW5zIHRoYXQgaWYgeW91IHNwZWNpZnkKLWFuIGludmFsaWQgY29udGVudCBsZW5ndGgsIGl0IHdpbGwganVzdCByZXByaW50IHRoZSBzYW1lIGRhdGEgb3ZlcgotYW5kIG92ZXIgYW5kIG92ZXIgYWdhaW4gdW50aWwgaXQgaGl0cyB0aGUgZGVzaXJlZCBsZW5ndGguCi0KLVRoaXMgbWVhbnMgdGhhdCBhIFdBUkMgcmVzb3VyY2Ugd2l0aCBlLmcuCi1Db250ZW50LUxlbmd0aDogNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1Ci1idXQgb25seSBhIGZldyBodW5kcmVkIGJ5dGVzIG9mIGRhdGEsIGNhdXNlcyBhIHF1YXNpLWluZmluaXRlIGxvb3AuCi0KLUNvbnN1bWUgZGF0YSBpbiBzdWJzZXF1ZW50IGNhbGxzIHRvIF93YXJjX3JlYWQuCi0KLUZvdW5kIHdpdGggYW4gQUZMICsgYWZsLXJiICsgcXN5bSBzZXR1cC4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3dhcmMuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF93YXJjLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF93YXJjLmMKLWluZGV4IGU4NzUzODUzLi5lOGZjODQyOCAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3dhcmMuYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfd2FyYy5jCi1AQCAtMzg2LDYgKzM4NiwxMSBAQCBfd2FyY19yZWFkKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIGNvbnN0IHZvaWQgKipidWYsIHNpemVfdCAqYnN6LCBpbnQ2NF90ICpvZmYpCi0gCQlyZXR1cm4gKEFSQ0hJVkVfRU9GKTsKLSAJfQotIAotKwlpZiAody0+dW5jb25zdW1lZCkgewotKwkJX19hcmNoaXZlX3JlYWRfY29uc3VtZShhLCB3LT51bmNvbnN1bWVkKTsKLSsJCXctPnVuY29uc3VtZWQgPSAwVTsKLSsJfQotKwotIAlyYWIgPSBfX2FyY2hpdmVfcmVhZF9haGVhZChhLCAxVSwgJm5yZCk7Ci0gCWlmIChucmQgPCAwKSB7Ci0gCQkqYnN6ID0gMFU7Ci0tLSAKLTIuMjAuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTktMTAwMDAxOS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOS0xMDAwMDE5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjM5ODkzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOS0xMDAwMDE5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotQ1ZFOiBDVkUtMjAxOS0xMDAwMDE5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDY1YTIzZjVkYmVlNDQ5NzA2NGU5YmI0NjdmODExMzhhNjJiMGRhZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgQXh0ZW5zIDxkamFAYXh0ZW5zLm5ldD4KLURhdGU6IFR1ZSwgMSBKYW4gMjAxOSAxNjowMTo0MCArMTEwMAotU3ViamVjdDogW1BBVENIIDIvMl0gN3ppcDogZml4IGNyYXNoIHdoZW4gcGFyc2luZyBjZXJ0YWluIGFyY2hpdmVzCi0KLUZ1enppbmcgd2l0aCBDUkNzIGRpc2FibGVkIHJldmVhbGVkIHRoYXQgYSBjYWxsIHRvIGdldF91bmNvbXByZXNzZWRfZGF0YSgpCi13b3VsZCBzb21ldGltZXMgZmFpbCB0byByZXR1cm4gYXQgbGVhc3QgJ21pbmltdW0nIGJ5dGVzLiBUaGlzIGNhbiBjYXVzZQotdGhlIGNyYzMyKCkgaW52b2NhdGlvbiBpbiBoZWFkZXJfYnl0ZXMgdG8gcmVhZCBvZmYgaW50byBpbnZhbGlkIG1lbW9yeS4KLQotQSBzcGVjaWFsbHkgY3JhZnRlZCBhcmNoaXZlIGNhbiB1c2UgdGhpcyB0byBjYXVzZSBhIGNyYXNoLgotCi1BbiBBU0FOIHRyYWNlIGlzIGJlbG93LCBidXQgQVNBTiBpcyBub3QgcmVxdWlyZWQgLSBhbiB1bmluc3RydW1lbnRlZAotYmluYXJ5IHdpbGwgYWxzbyBjcmFzaC4KLQotPT03NzE5PT1FUlJPUjogQWRkcmVzc1Nhbml0aXplcjogU0VHViBvbiB1bmtub3duIGFkZHJlc3MgMHg2MzEwMDAwNDAwMDAgKHBjIDB4N2ZiZGIzYjNlYzFkIGJwIDB4N2ZmZTc3YTUxMzEwIHNwIDB4N2ZmZTc3YTUxMTUwIFQwKQotPT03NzE5PT1UaGUgc2lnbmFsIGlzIGNhdXNlZCBieSBhIFJFQUQgbWVtb3J5IGFjY2Vzcy4KLSAgICAjMCAweDdmYmRiM2IzZWMxYyBpbiBjcmMzMl96ICgvbGliL3g4Nl82NC1saW51eC1nbnUvbGliei5zby4xKzB4MmMxYykKLSAgICAjMSAweDg0ZjVlYiBpbiBoZWFkZXJfYnl0ZXMgKC90bXAvbGliYXJjaGl2ZS9ic2R0YXIrMHg4NGY1ZWIpCi0gICAgIzIgMHg4NTYxNTYgaW4gcmVhZF9IZWFkZXIgKC90bXAvbGliYXJjaGl2ZS9ic2R0YXIrMHg4NTYxNTYpCi0gICAgIzMgMHg4NGUxMzQgaW4gc2x1cnBfY2VudHJhbF9kaXJlY3RvcnkgKC90bXAvbGliYXJjaGl2ZS9ic2R0YXIrMHg4NGUxMzQpCi0gICAgIzQgMHg4NDk2OTAgaW4gYXJjaGl2ZV9yZWFkX2Zvcm1hdF83emlwX3JlYWRfaGVhZGVyICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4ODQ5NjkwKQotICAgICM1IDB4NTcxM2I3IGluIF9hcmNoaXZlX3JlYWRfbmV4dF9oZWFkZXIyICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4NTcxM2I3KQotICAgICM2IDB4NTcwZTYzIGluIF9hcmNoaXZlX3JlYWRfbmV4dF9oZWFkZXIgKC90bXAvbGliYXJjaGl2ZS9ic2R0YXIrMHg1NzBlNjMpCi0gICAgIzcgMHg2ZjA4YmQgaW4gYXJjaGl2ZV9yZWFkX25leHRfaGVhZGVyICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4NmYwOGJkKQotICAgICM4IDB4NTIzNzNmIGluIHJlYWRfYXJjaGl2ZSAoL3RtcC9saWJhcmNoaXZlL2JzZHRhcisweDUyMzczZikKLSAgICAjOSAweDUyNTdiZSBpbiB0YXJfbW9kZV94ICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4NTI1N2JlKQotICAgICMxMCAweDUxZGFlYiBpbiBtYWluICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4NTFkYWViKQotICAgICMxMSAweDdmYmRiMjdjYWI5NiBpbiBfX2xpYmNfc3RhcnRfbWFpbiAvYnVpbGQvZ2xpYmMtT1RzRUw1L2dsaWJjLTIuMjcvY3N1Ly4uL2NzdS9saWJjLXN0YXJ0LmM6MzEwCi0gICAgIzEyIDB4NDFkZDA5IGluIF9zdGFydCAoL3RtcC9saWJhcmNoaXZlL2JzZHRhcisweDQxZGQwOSkKLQotVGhpcyB3YXMgcHJpbWFybHkgZG9uZSB3aXRoIGFmbCBhbmQgRmFpckZ1enouIFNvbWUgZWFybHkgY29ycHVzIGVudHJpZXMKLW1heSBoYXZlIGJlZW4gZ2VuZXJhdGVkIGJ5IHFzeW0uCi0tLS0KLSBsaWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF83emlwLmMgfCA4ICstLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfN3ppcC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfN3ppcC5jCi1pbmRleCBiY2NiZjg5NjYuLmI2ZDE1MDVkMyAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0Xzd6aXAuYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfN3ppcC5jCi1AQCAtMjk2NCwxMyArMjk2NCw3IEBAIGdldF91bmNvbXByZXNzZWRfZGF0YShzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBjb25zdCB2b2lkICoqYnVmZiwgc2l6ZV90IHNpemUsCi0gCWlmICh6aXAtPmNvZGVjID09IF83Wl9DT1BZICYmIHppcC0+Y29kZWMyID09ICh1bnNpZ25lZCBsb25nKS0xKSB7Ci0gCQkvKiBDb3B5IG1vZGUuICovCi0gCi0tCQkvKgotLQkJICogTm90ZTogJzEnIGhlcmUgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uCi0tCQkgKiBSZWNhbGwgdGhhdCB0aGUgZGVjb21wcmVzc2lvbiBsYXllciByZXR1cm5zIGEgY291bnQgb2YKLS0JCSAqIGF2YWlsYWJsZSBieXRlczsgYXNraW5nIGZvciBtb3JlIHRoYW4gdGhhdCBmb3JjZXMgdGhlCi0tCQkgKiBkZWNvbXByZXNzb3IgdG8gY29tYmluZSByZWFkcyBieSBjb3B5aW5nIGRhdGEuCi0tCQkgKi8KLS0JCSpidWZmID0gX19hcmNoaXZlX3JlYWRfYWhlYWQoYSwgMSwgJmJ5dGVzX2F2YWlsKTsKLSsJCSpidWZmID0gX19hcmNoaXZlX3JlYWRfYWhlYWQoYSwgbWluaW11bSwgJmJ5dGVzX2F2YWlsKTsKLSAJCWlmIChieXRlc19hdmFpbCA8PSAwKSB7Ci0gCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCi0gCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTktMTAwMDAyMC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOS0xMDAwMDIwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWE3NmZkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOS0xMDAwMDIwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotQ1ZFOiBDVkUtMjAxOS0xMDAwMDIwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDgzMTJlYWE1NzYwMTRjZDliOTY1MDEyYWY1MWJjMWY5NjdiMTI0MjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgQXh0ZW5zIDxkamFAYXh0ZW5zLm5ldD4KLURhdGU6IFR1ZSwgMSBKYW4gMjAxOSAxNzoxMDo0OSArMTEwMAotU3ViamVjdDogW1BBVENIIDEvMl0gaXNvOTY2MDogRmFpbCB3aGVuIGV4cGVjdGVkIFJvY2tyaWRnZSBleHRlbnNpb25zIGlzCi0gbWlzc2luZwotCi1BIGNvcnJ1cHRlZCBvciBtYWxpY2lvdXMgSVNPOTY2MCBpbWFnZSBjYW4gY2F1c2UgcmVhZF9DRSgpIHRvIGxvb3AKLWZvcmV2ZXIuCi0KLXJlYWRfQ0UoKSBjYWxscyBwYXJzZV9yb2NrcmlkZ2UoKSwgZXhwZWN0aW5nIGEgUm9ja3JpZGdlIGV4dGVuc2lvbgotdG8gYmUgcmVhZC4gSG93ZXZlciwgcGFyc2Vfcm9ja3JpZGdlKCkgaXMgc3RydWN0dXJlZCBhcyBhIHdoaWxlCi1sb29wIHN0YXJ0aW5nIHdpdGggYSBzYW5pdHkgY2hlY2ssIGFuZCBpZiB0aGUgc2FuaXR5IGNoZWNrIGZhaWxzCi1iZWZvcmUgdGhlIGxvb3AgaGFzIHJ1biwgdGhlIGZ1bmN0aW9uIHJldHVybnMgQVJDSElWRV9PSyB3aXRob3V0Ci1hZHZhbmNpbmcgdGhlIHBvc2l0aW9uIGluIHRoZSBmaWxlLiBUaGlzIGNhdXNlcyByZWFkX0NFKCkgdG8gcmV0cnkKLWluZGVmaW5pdGVseS4KLQotTWFrZSBwYXJzZV9yb2NrcmlkZ2UoKSByZXR1cm4gQVJDSElWRV9XQVJOIGlmIGl0IGRpZG4ndCByZWFkIGFuCi1leHRlbnNpb24uIEFzIHNvbWVvbmUgd2l0aCBubyByZWFsIGtub3dsZWRnZSBvZiB0aGUgZm9ybWF0LCB0aGlzCi1zZWVtcyBtb3JlIGFwdCB0aGFuIEFSQ0hJVkVfRkFUQUwsIGJ1dCBib3RoIHRoZSBjYWxsLXNpdGVzIGVzY2FsYXRlCi1pdCB0byBhIGZhdGFsIGVycm9yIGltbWVkaWF0ZWx5IGFueXdheS4KLQotRm91bmQgd2l0aCBhIGNvbWJpbmF0aW9uIG9mIEFGTCwgYWZsLXJiIChGYWlyRnV6eikgYW5kIHFzeW0uCi0tLS0KLSBsaWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMgfCAxMSArKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMKLWluZGV4IDI4YWNmZWZiYi4uYmFkOGYxZGZlIDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMKLUBAIC0yMTAyLDYgKzIxMDIsNyBAQCBwYXJzZV9yb2NrcmlkZ2Uoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGZpbGVfaW5mbyAqZmlsZSwKLSAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCwgY29uc3QgdW5zaWduZWQgY2hhciAqZW5kKQotIHsKLSAJc3RydWN0IGlzbzk2NjAgKmlzbzk2NjA7Ci0rCWludCBlbnRyeV9zZWVuID0gMDsKLSAKLSAJaXNvOTY2MCA9IChzdHJ1Y3QgaXNvOTY2MCAqKShhLT5mb3JtYXQtPmRhdGEpOwotIAotQEAgLTIyNTcsOCArMjI1OCwxNiBAQCBwYXJzZV9yb2NrcmlkZ2Uoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGZpbGVfaW5mbyAqZmlsZSwKLSAJCX0KLSAKLSAJCXAgKz0gcFsyXTsKLSsJCWVudHJ5X3NlZW4gPSAxOwotKwl9Ci0rCi0rCWlmIChlbnRyeV9zZWVuKQotKwkJcmV0dXJuIChBUkNISVZFX09LKTsKLSsJZWxzZSB7Ci0rCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLSsJCQkJICAiVHJpZWQgdG8gcGFyc2UgUm9ja3JpZGdlIGV4dGVuc2lvbnMsIGJ1dCBub25lIGZvdW5kIik7Ci0rCQlyZXR1cm4gKEFSQ0hJVkVfV0FSTik7Ci0gCX0KLS0JcmV0dXJuIChBUkNISVZFX09LKTsKLSB9Ci0gCi0gc3RhdGljIGludAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnMTA2Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWcxMDY2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTY2MmI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWcxMDY2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotbGliYXJjaGl2ZS0zLjMuMzogRml4IGJ1ZzEwNjYKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL3B1bGwvMTA2NgotCi1hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfKi5jOiBmaXggb3V0IG9mIGJvdW5kcyByZWFkIG9uIGVtcHR5IHN0cmluZyAoKSBmaWxlbmFtZQotZm9yIGd1bnRhciwgcGF4IGFuZCB2N3RhcgotCi1UaGVyZSBpcyBhbiBvdXQgb2YgYm91bmRzIHJlYWQgZmxhdyBpbiB0aGUgYXJjaGl2ZV93cml0ZV9nbnV0YXJfaGVhZGVyLAotYXJjaGl2ZV93cml0ZV9wYXhfaGVhZGVyIGFuZCBhcmNoaXZlX3dyaXRlX3Y3dGFyX2hlYWRlciBmdW5jdGlvbnMgd2hpY2gKLWNvdWxkIGxlZHMgdG8gY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9jb21taXQvYzI0NmVjNWQwNThhM2Y3MGEyZDNmYjc2NWY5MmZlOWRiNzdiMjVkZl0KLUJ1ZzogMTA2NgotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9nbnV0YXIuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2dudXRhci5jCi1pbmRleCAyZDg1OGM5Li4xOTY2YzUzIDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfZ251dGFyLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2dudXRhci5jCi1AQCAtMzM5LDcgKzMzOSw3IEBAIGFyY2hpdmVfd3JpdGVfZ251dGFyX2hlYWRlcihzdHJ1Y3QgYXJjaGl2ZV93cml0ZSAqYSwKLSAJCSAqIGNhc2UgZ2V0dGluZyBXQ1MgZmFpbGVkLiBPbiBQT1NJWCwgdGhpcyBpcyBhCi0gCQkgKiBub3JtYWwgb3BlcmF0aW9uLgotIAkJICovCi0tCQlpZiAocCAhPSBOVUxMICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7Ci0rCQlpZiAocCAhPSBOVUxMICYmIHBbMF0gIT0gJ1wwJyAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgewotIAkJCXN0cnVjdCBhcmNoaXZlX3N0cmluZyBhczsKLSAKLSAJCQlhcmNoaXZlX3N0cmluZ19pbml0KCZhcyk7Ci1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcGF4LmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wYXguYwotaW5kZXggNmEzMDFhYy4uNGNmYThmZiAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3BheC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wYXguYwotQEAgLTY2MCw3ICs2NjAsNyBAQCBhcmNoaXZlX3dyaXRlX3BheF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfd3JpdGUgKmEsCi0gCQkJICogY2FzZSBnZXR0aW5nIFdDUyBmYWlsZWQuIE9uIFBPU0lYLCB0aGlzIGlzIGEKLSAJCQkgKiBub3JtYWwgb3BlcmF0aW9uLgotIAkJCSAqLwotLQkJCWlmIChwICE9IE5VTEwgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKLSsJCQlpZiAocCAhPSBOVUxMICYmIHBbMF0gIT0gJ1wwJyAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgewotIAkJCQlzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgYXM7Ci0gCi0gCQkJCWFyY2hpdmVfc3RyaW5nX2luaXQoJmFzKTsKLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF92N3Rhci5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfdjd0YXIuYwotaW5kZXggNjJiMTUyMi4uNTNjMGRiMCAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3Y3dGFyLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3Y3dGFyLmMKLUBAIC0yODQsNyArMjg0LDcgQEAgYXJjaGl2ZV93cml0ZV92N3Rhcl9oZWFkZXIoc3RydWN0IGFyY2hpdmVfd3JpdGUgKmEsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSkKLSAJCSAqIGNhc2UgZ2V0dGluZyBXQ1MgZmFpbGVkLiBPbiBQT1NJWCwgdGhpcyBpcyBhCi0gCQkgKiBub3JtYWwgb3BlcmF0aW9uLgotIAkJICovCi0tCQlpZiAocCAhPSBOVUxMICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7Ci0rCQlpZiAocCAhPSBOVUxMICYmIHBbMF0gIT0gJ1wwJyAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgewotIAkJCXN0cnVjdCBhcmNoaXZlX3N0cmluZyBhczsKLSAKLSAJCQlhcmNoaXZlX3N0cmluZ19pbml0KCZhcyk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvbm9uLXJlY3Vyc2l2ZS1leHRyYWN0LWFuZC1saXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q3YmU1MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvbm9uLXJlY3Vyc2l2ZS1leHRyYWN0LWFuZC1saXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLUZyb20gNDdmNzU2NmY2ODI5YzJiMTRlMjFiYmJiYTY5OTkxNmRlNDk5OGM3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjQgT2N0IDIwMTYgMTI6NTQ6NDggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzFdIG5vbi1yZWN1cnNpdmUgZXh0cmFjdCBhbmQgbGlzdAotCi1Tb21ldGltZXMgaXQgbWFrZXMgc2Vuc2UgdG8gZXh0cmFjdCBvciBsaXN0IGEgZGlyZWN0b3J5IGNvbnRhaW5lZCBpbgotYW4gYXJjaGl2ZSB3aXRob3V0IGFsc28gZG9pbmcgdGhlIHNhbWUgZm9yIHRoZSBjb250ZW50IG9mIHRoZQotZGlyZWN0b3J5LCBpLmUuIGFsbG93aW5nIC1uICg9IC0tbm8tcmVjdXJzaW9uKSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZQoteCBhbmQgdCBtb2Rlcy4KLQotYnNkdGFyIHVzZXMgdGhlIG1hdGNoIGZ1bmN0aW9uYWxpdHkgaW4gbGliYXJjaGl2ZSB0byB0cmFjayBpbmNsdWRlCi1tYXRjaGVzLiBBIG5ldyBsaWJhcmNoaXZlIEFQSSBjYWxsCi1hcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoKSBnZXRzIGludHJvZHVjZWQgdG8KLWluZmx1ZW5jZSB0aGUgbWF0Y2hpbmcgYmVoYXZpb3IsIHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3IgYXMgYmVmb3JlLgotCi1Ob24tcmVjdXJzaXZlIG1hdGNoaW5nIGNhbiBiZSBhY2hpZXZlZCBieSBhbmNob3JpbmcgdGhlIHBhdGggbWF0Y2ggYXQKLWJvdGggc3RhcnQgYW5kIGVuZC4gQXNraW5nIGZvciBhIGRpcmVjdG9yeSB3aGljaCBpdHNlbGYgaXNuJ3QgaW4gdGhlCi1hcmNoaXZlIHdoZW4gaW4gbm9uLXJlY3Vyc2l2ZSBtb2RlIGlzIGFuIGVycm9yIGFuZCBoYW5kbGVkIGJ5IHRoZQotZXhpc3RpbmcgbWVjaGFuaXNtIGZvciB0cmFja2luZyB1bnVzZWQgaW5jbHVzaW9uIGVudHJpZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL3B1bGwvODEyXQotCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZS5oICAgICAgIHwgIDIgKysKLSBsaWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYyB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIHRhci9ic2R0YXIuMSAgICAgICAgICAgICAgIHwgIDMgKy0tCi0gdGFyL2JzZHRhci5jICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmUuaCBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCi1pbmRleCAzMjcxMDIwMS4uNTlmYjRhYTYgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmUuaAotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlLmgKLUBAIC0xMDkzLDYgKzEwOTMsOCBAQCBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKiwKLSAgKi8KLSBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfcGF0aF9leGNsdWRlZChzdHJ1Y3QgYXJjaGl2ZSAqLAotIAkJICAgIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICopOwotKy8qIENvbnRyb2wgcmVjdXJzaXZlIGluY2x1c2lvbiBvZiBkaXJlY3RvcnkgY29udGVudCB3aGVuIGRpcmVjdG9yeSBpcyBpbmNsdWRlZC4gRGVmYXVsdCBvbi4gKi8KLStfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseShzdHJ1Y3QgYXJjaGl2ZSAqLCBpbnQgX2VuYWJsZWQpOwotIC8qIEFkZCBleGNsdXNpb24gcGF0aG5hbWUgcGF0dGVybi4gKi8KLSBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfZXhjbHVkZV9wYXR0ZXJuKHN0cnVjdCBhcmNoaXZlICosIGNvbnN0IGNoYXIgKik7Ci0gX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVfcGF0dGVybl93KHN0cnVjdCBhcmNoaXZlICosCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYwotaW5kZXggYmU3MjA2NmUuLmJiNmEzNDA3IDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jCi1AQCAtOTMsNiArOTMsOSBAQCBzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCB7Ci0gCS8qIGV4Y2x1c2lvbi9pbmNsdXNpb24gc2V0IGZsYWcuICovCi0gCWludAkJCSBzZXRmbGFnOwotIAotKwkvKiBSZWN1cnNpdmVseSBpbmNsdWRlIGRpcmVjdG9yeSBjb250ZW50PyAqLwotKwlpbnQJCQkgcmVjdXJzaXZlX2luY2x1ZGU7Ci0rCi0gCS8qCi0gCSAqIE1hdGNoaW5nIGZpbGVuYW1lIHBhdHRlcm5zLgotIAkgKi8KLUBAIC0yMjMsNiArMjI2LDcgQEAgYXJjaGl2ZV9tYXRjaF9uZXcodm9pZCkKLSAJCXJldHVybiAoTlVMTCk7Ci0gCWEtPmFyY2hpdmUubWFnaWMgPSBBUkNISVZFX01BVENIX01BR0lDOwotIAlhLT5hcmNoaXZlLnN0YXRlID0gQVJDSElWRV9TVEFURV9ORVc7Ci0rCWEtPnJlY3Vyc2l2ZV9pbmNsdWRlID0gMTsKLSAJbWF0Y2hfbGlzdF9pbml0KCYoYS0+aW5jbHVzaW9ucykpOwotIAltYXRjaF9saXN0X2luaXQoJihhLT5leGNsdXNpb25zKSk7Ci0gCV9fYXJjaGl2ZV9yYl90cmVlX2luaXQoJihhLT5leGNsdXNpb25fdHJlZSksICZyYl9vcHNfbWJzKTsKLUBAIC00NzEsNiArNDc1LDI4IEBAIGFyY2hpdmVfbWF0Y2hfcGF0aF9leGNsdWRlZChzdHJ1Y3QgYXJjaGl2ZSAqX2EsCi0gfQotIAotIC8qCi0rICogV2hlbiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mIGRpcmVjdG9yeSBjb250ZW50IGlzIGVuYWJsZWQsCi0rICogYW4gaW5jbHVzaW9uIHBhdHRlcm4gdGhhdCBtYXRjaGVzIGEgZGlyZWN0b3J5IHdpbGwgYWxzbwotKyAqIGluY2x1ZGUgZXZlcnl0aGluZyBiZW5lYXRoIHRoYXQgZGlyZWN0b3J5LiBFbmFibGVkIGJ5IGRlZmF1bHQuCi0rICoKLSsgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEdOVSB0YXIsIGV4Y2x1c2lvbiBwYXR0ZXJucyBhbHdheXMKLSsgKiBtYXRjaCBpZiBhIHN1YnNldCBvZiB0aGUgZnVsbCBwYXRjaCBtYXRjaGVzIChpLmUuLCB0aGV5IGFyZQotKyAqIGFyZSBub3Qgcm9vdGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhdGgpIGFuZCB0aHVzIHRoZXJlCi0rICogaXMgbm8gY29ycmVzcG9uZGluZyBub24tcmVjdXJzaXZlIGV4Y2x1c2lvbiBtb2RlLgotKyAqLwotK2ludAotK2FyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseShzdHJ1Y3QgYXJjaGl2ZSAqX2EsIGludCBfZW5hYmxlZCkKLSt7Ci0rCXN0cnVjdCBhcmNoaXZlX21hdGNoICphOwotKwotKwlhcmNoaXZlX2NoZWNrX21hZ2ljKF9hLCBBUkNISVZFX01BVENIX01BR0lDLAotKwkgICAgQVJDSElWRV9TVEFURV9ORVcsICJhcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkiKTsKLSsJYSA9IChzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqKV9hOwotKwlhLT5yZWN1cnNpdmVfaW5jbHVkZSA9IF9lbmFibGVkOwotKwlyZXR1cm4gKEFSQ0hJVkVfT0spOwotK30KLSsKLSsvKgotICAqIFV0aWxpdHkgZnVuY3Rpb25zIHRvIGdldCBzdGF0aXN0aWMgaW5mb3JtYXRpb24gZm9yIGluY2x1c2lvbiBwYXR0ZXJucy4KLSAgKi8KLSBpbnQKLUBAIC03ODEsNyArODA3LDkgQEAgc3RhdGljIGludAotIG1hdGNoX3BhdGhfaW5jbHVzaW9uKHN0cnVjdCBhcmNoaXZlX21hdGNoICphLCBzdHJ1Y3QgbWF0Y2ggKm0sCi0gICAgIGludCBtYnMsIGNvbnN0IHZvaWQgKnBuKQotIHsKLS0JaW50IGZsYWcgPSBQQVRITUFUQ0hfTk9fQU5DSE9SX0VORDsKLSsJaW50IGZsYWcgPSBhLT5yZWN1cnNpdmVfaW5jbHVkZSA/Ci0rCQlQQVRITUFUQ0hfTk9fQU5DSE9SX0VORCA6IC8qIFByZWZpeCBtYXRjaCBpcyBnb29kIGVub3VnaC4gKi8KLSsJCTA7IC8qIEZ1bGwgbWF0Y2ggcmVxdWlyZWQuICovCi0gCWludCByOwotIAotIAlpZiAobWJzKSB7Ci1kaWZmIC0tZ2l0IGEvdGFyL2JzZHRhci4xIGIvdGFyL2JzZHRhci4xCi1pbmRleCAxMzJlMTE0NS4uMWRkMmE4NDcgMTAwNjQ0Ci0tLS0gYS90YXIvYnNkdGFyLjEKLSsrKyBiL3Rhci9ic2R0YXIuMQotQEAgLTM4Niw4ICszODYsNyBAQCBhbmQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gYywgciwgYW5kIHUgbW9kZXMgb3IgaWYKLSAuTm0KLSBpcyBydW4gaW4geCBtb2RlIGFzIHJvb3QuCi0gLkl0IEZsIG4gLCBGbCBGbCBub3JlY3Vyc2UgLCBGbCBGbCBuby1yZWN1cnNpb24KLS0oYywgciwgdSBtb2RlcyBvbmx5KQotLURvIG5vdCByZWN1cnNpdmVseSBhcmNoaXZlIHRoZSBjb250ZW50cyBvZiBkaXJlY3Rvcmllcy4KLStEbyBub3QgcmVjdXJzaXZlbHkgYXJjaGl2ZSAoYywgciwgdSksIGV4dHJhY3QgKHgpIG9yIGxpc3QgKHQpIHRoZSBjb250ZW50cyBvZiBkaXJlY3Rvcmllcy4KLSAuSXQgRmwgRmwgbmV3ZXIgQXIgZGF0ZQotIChjLCByLCB1IG1vZGVzIG9ubHkpCi0gT25seSBpbmNsdWRlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBuZXdlciB0aGFuIHRoZSBzcGVjaWZpZWQgZGF0ZS4KLWRpZmYgLS1naXQgYS90YXIvYnNkdGFyLmMgYi90YXIvYnNkdGFyLmMKLWluZGV4IDExZGVkYmY5Li5kMDE0Y2MzZSAxMDA2NDQKLS0tLSBhL3Rhci9ic2R0YXIuYwotKysrIGIvdGFyL2JzZHRhci5jCi1AQCAtNzk0LDggKzc5NCw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWJyZWFrOwotIAkJfQotIAl9Ci0tCWlmIChic2R0YXItPmZsYWdzICYgT1BURkxBR19OT19TVUJESVJTKQotLQkJb25seV9tb2RlKGJzZHRhciwgIi1uIiwgImNydSIpOwotIAlpZiAoYnNkdGFyLT5mbGFncyAmIE9QVEZMQUdfU1RET1VUKQotIAkJb25seV9tb2RlKGJzZHRhciwgIi1PIiwgInh0Iik7Ci0gCWlmIChic2R0YXItPmZsYWdzICYgT1BURkxBR19VTkxJTktfRklSU1QpCi1AQCAtODQ1LDYgKzg0MywxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCW9ubHlfbW9kZShic2R0YXIsIGJ1ZmYsICJjcnUiKTsKLSAJfQotIAotKwkvKgotKwkgKiBXaGVuIGNyZWF0aW5nIGFuIGFyY2hpdmUgZnJvbSBhIGRpcmVjdG9yeSB0cmVlLCB0aGUgZGlyZWN0b3J5Ci0rCSAqIHdhbGtpbmcgY29kZSB3aWxsIGFscmVhZHkgYXZvaWQgZW50ZXJpbmcgZGlyZWN0b3JpZXMgd2hlbgotKwkgKiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mIGRpcmVjdG9yeSBjb250ZW50IGlzIGRpc2FibGVkLCB0aGVyZWZvcmUKLSsJICogY2hhbmdpbmcgdGhlIG1hdGNoaW5nIGJlaGF2aW9yIGhhcyBubyBlZmZlY3QgZm9yIGNyZWF0aW9uIG1vZGVzLgotKwkgKiBJdCBpcyByZWxldmFudCBmb3IgZXh0cmFjdGlvbiBvciBsaXN0aW5nLgotKwkgKi8KLSsJYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KGJzZHRhci0+bWF0Y2hpbmcsCi0rCQkJCQkJICAgICAgIShic2R0YXItPmZsYWdzICYgT1BURkxBR19OT19TVUJESVJTKSk7Ci0rCi0gCS8qIEZpbGVuYW1lICItIiBpbXBsaWVzIHN0ZGlvLiAqLwotIAlpZiAoc3RyY21wKGJzZHRhci0+ZmlsZW5hbWUsICItIikgPT0gMCkKLSAJCWJzZHRhci0+ZmlsZW5hbWUgPSBOVUxMOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjMuMy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4wLmJiCmluZGV4IGFmNWNhNjUuLmM3ODljZDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjMuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjAuYmIKQEAgLTMsNyArMyw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYmFyY2hpdmUub3JnLyIKIFNFQ1RJT04gPSAiZGV2ZWwiCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkOTlhY2EwMDZiYzM0Njk3NGJiNzQ1YTM1MzM2NDI1IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmUwMWY1ZTAyYjFmMGNjOTM0ZDU5M2E3YjBkZGNlYjYiCiAKIERFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKIApAQCAtMzIsMTggKzMyLDEwIEBACiBFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKIAogU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idWcxMDY2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwMDA4NzcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTAwMDg3OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDAwODc5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwMDA4ODAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTAwMDAxOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xMDAwMDIwLnBhdGNoIFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjQwMzhlMzY2Y2E1YjY1OWRhZTNlZmNjNzQ0ZTcyMTIwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJhN2ViMTc4MWM5ZmJiYWUxNzhjNGM2YmFkMWM2ZWIwOGVkYWI5YTE0OTZjNjQ4MzNkMTcxNWQwMjJiMzBlMmUiCitTUkNfVVJJW21kNXN1bV0gPSAiNjA0NjM5NjI1NWJkN2NmNmQwZjY2MDNhOWJkYTM5YWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODY0M2Q1MGVkNDBjNzU5ZjU0MTJhM2FmNGUzNTNjZmZiY2U0ZmRmM2I1Y2YzMjFjYjcyY2FjZjA2YjJkODI1ZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy42LmJiCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuNS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy42LmJiCmluZGV4IDgwY2U3NmIuLjNkZjg5OTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC43LjYuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCiAiCiAKLVNSQ1JFViA9ICIyY2FiN2VhMDBkMDgzOTAzNzRiMjViMTFkOTY5ZjM3NDBjNDY2MGY0IgorU1JDUkVWID0gIjE3Y2U0YmM0ZmI1MmEwYjMyOTY0ZjNiN2Q0OTFjMTgxNzc5ODBiZTEiCiAKIFVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiCmluZGV4IGJhMWEyYzUuLjcyOTkwZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTQuYmIKQEAgLTQ0LDcgKzQ0LDcgQEAKIFBBQ0tBR0VDT05GSUdbd2ViZGF2LWxvY2tzXSA9ICItLXdpdGgtd2ViZGF2LWxvY2tzLC0td2l0aG91dC13ZWJkYXYtbG9ja3MsdXRpbC1saW51eCIKIFBBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLS13aXRoLWdkYm0sLS13aXRob3V0LWdkYm0sZ2RibSIKIFBBQ0tBR0VDT05GSUdbbWVtY2FjaGVdID0gIi0td2l0aC1tZW1jYWNoZWQsLS13aXRob3V0LW1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YSwtLXdpdGhvdXQtbHVhLGx1YTUuMSIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhLC0td2l0aG91dC1sdWEsbHVhIgogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxmcyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjE1LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTUuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTUuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjE1LjEuYmIKaW5kZXggMGYzZGEyYi4uN2M3ZDUxYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjE1LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjE1LjEuYmIKQEAgLTI1LDggKzI1LDggQEAKICAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCiAgICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIzMjAwNDZmMGI5ZmMzODMzN2U4ODI3ZDRjNWE4NjZhMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMTM2MTJjNDc3NmEzMDUzOTM0NTRjODc0ZWY1OTBkOGFjZjg0YzlmZmE2NDg3MTc3MzFkZmU5MDIyODRmZjhmIgorU1JDX1VSSVttZDVzdW1dID0gImFmZTEwOWFmZWE3NDljMzA2ZmY0ODkyMDNmZGU2YmViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5MWZlYzllODlmMTM3MmYwMmEwYWI2NjU3OWFhMmU5ZDYzY2FjNTE3OGRmYTY3MmMyMDRjODhlNjkzYTkwOGIiCiAKIFBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCBzZWxpbnV4JywgZCl9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLzAwMDEtZml4LWxzYl9yZWxlYXNlLXRvLXdvcmstd2l0aC1idXN5Ym94LWhlYWQtYW5kLWZpbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2UvMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi8wMDAxLWZpeC1sc2JfcmVsZWFzZS10by13b3JrLXdpdGgtYnVzeWJveC1oZWFkLWFuZC1maW5kLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2UvMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlXzEuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZV8xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJlMzAyNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZV8xLjQuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJsc2JfcmVsZWFzZSBzdXBwb3J0IGZvciBPcGVuRW1iZWRkZWQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2xzYiIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCisjIGxzYl9yZWxlYXNlIG5lZWRzIGdldG9wdAorUkRFUEVORFNfJHtQTn0gKz0gIiR7VklSVFVBTC1SVU5USU1FX2dldG9wdH0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9MTJkYTU0NGIxYTNhNWExNzk1YTIxMTYwYjQ5NDcxY2YiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvbHNiL2xzYl9yZWxlYXNlLzEuNC9sc2ItcmVsZWFzZS0xLjQudGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWxzYl9yZWxlYXNlLXRvLXdvcmstd2l0aC1idXN5Ym94LWhlYWQtYW5kLWZpbmQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMDUzN2VmNWEwMWUwY2E5NGI3YjhlYjZhMzZiYjFlNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTMyMTI4OGY4ZDYyZTdhMWQ0ODViN2M2YmRjY2YwNjc2NmZiOGNhNjAzYzYxOTU4MDZlNDQ1N2ZkZjE3MTcyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sc2IvZmlsZXMvbHNiX3JlbGVhc2UvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xzYl9yZWxlYXNlLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsIHByZWZpeD0ke0R9JHtyb290X3ByZWZpeH0gbWFuZGlyPSR7RH0ke2RhdGFkaXJ9L21hbi8gREVTVERJUj0ke0R9CisKKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCisKKwllY2hvICJESVNUUklCX0lEPSR7RElTVFJPfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwllY2hvICJESVNUUklCX1JFTEVBU0U9JHtESVNUUk9fVkVSU0lPTn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJaWYgWyAtbiAiJHtESVNUUk9fQ09ERU5BTUV9IiBdOyB0aGVuCisJCWVjaG8gIkRJU1RSSUJfQ09ERU5BTUU9JHtESVNUUk9fQ09ERU5BTUV9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWZpCisJZWNobyAiRElTVFJJQl9ERVNDUklQVElPTj1cIiR7RElTVFJPX05BTUV9ICR7RElTVFJPX1ZFUlNJT059XCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvaW5pdC1mdW5jdGlvbnMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2luaXQtZnVuY3Rpb25zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YzFkY2UyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvaW5pdC1mdW5jdGlvbnMKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0jIS9iaW4vc2gKLQotIyBMU0IgaW5pdHNjcmlwdCBmdW5jdGlvbnMsIGFzIGRlZmluZWQgaW4gdGhlIExTQiBTcGVjIDEuMS4wCi0jCi0jIExhd3JlbmNlIExpbSA8bGxpbUBjb3JlLmNvbT4gLSBUdWUsIDI2IEp1bmUgMjAwNwotIyBVcGRhdGVkIHRvIHRoZSBsYXRlc3QgTFNCIDMuMSBzcGVjCi0jIGh0dHA6Ly9yZWZzcGVjcy5mcmVlc3RhbmRhcmRzLm9yZy9MU0JfMy4xLjAvTFNCLUNvcmUtZ2VuZXJpYy9MU0ItQ29yZS1nZW5lcmljX2xpbmVzLnR4dAotCi1zdGFydF9kYWVtb24gKCkgewotCS9ldGMvY29yZS1sc2IvbHNiX3N0YXJ0X2RhZW1vbiAiJEAiCi19Ci0KLWtpbGxwcm9jICgpIHsKLQkvZXRjL2NvcmUtbHNiL2xzYl9raWxscHJvYyAiJEAiCi19Ci0KLXBpZG9mcHJvYyAoKSB7Ci0JL2V0Yy9jb3JlLWxzYi9sc2JfcGlkb2Zwcm9jICIkQCIKLX0KLQotbG9nX3N1Y2Nlc3NfbXNnICgpIHsKLQkvZXRjL2NvcmUtbHNiL2xzYl9sb2dfbWVzc2FnZSBzdWNjZXNzICIkQCIKLX0KLQotbG9nX2ZhaWx1cmVfbXNnICgpIHsKLQkvZXRjL2NvcmUtbHNiL2xzYl9sb2dfbWVzc2FnZSBmYWlsdXJlICIkQCIKLX0KLQotbG9nX3dhcm5pbmdfbXNnICgpIHsKLQkvZXRjL2NvcmUtbHNiL2xzYl9sb2dfbWVzc2FnZSB3YXJuaW5nICIkQCIKLX0KLQotIyBpbnQgbG9nX2JlZ2luX21lc3NhZ2UgKGNoYXIgKm1lc3NhZ2UpCi1sb2dfYmVnaW5fbXNnICgpIHsKLQlpZiBbIC16ICIkMSIgXTsgdGhlbgotCQlyZXR1cm4gMQotCWZpCi0JZWNobyAiICogJEAiCi19Ci0KLQotbG9nX2VuZF9tc2cgKCkgewotCS9ldGMvY29yZS1sc2IvbHNiX2xvZ19tZXNzYWdlIGVuZCAiJEAiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9raWxscHJvYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX2tpbGxwcm9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NjZjMWE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX2tpbGxwcm9jCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jIS9iaW4vc2gKLQotLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKLQotTFNCPUxTQi0xLjEga2lsbHByb2MgJCoKLWV4aXQgJD8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX2xvZ19tZXNzYWdlIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2JfbG9nX21lc3NhZ2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDEwMzQzYjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2JfbG9nX21lc3NhZ2UKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIS9iaW4vc2gKLQotLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKLQotQUNUSU9OPSQxCi1zaGlmdAotCi1jYXNlICIkQUNUSU9OIiBpbgotICBzdWNjZXNzKQotICAJZWNobyAtbiAkKgotCXN1Y2Nlc3MgIiQqIgotCWVjaG8KLQk7OwotICBmYWlsdXJlKQotICAJZWNobyAtbiAkKgotCWZhaWx1cmUgIiQqIgotCWVjaG8KLQk7OwotICB3YXJuaW5nKQotICAJZWNobyAtbiAkKgotCXdhcm5pbmcgIiQqIgotCWVjaG8KLQk7OwotICAqKQotICAJOzsKLWVzYWMKLWV4aXQgMApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2JfcGlkb2Zwcm9jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2JfcGlkb2Zwcm9jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZDFmZDBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3BpZG9mcHJvYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyEvYmluL3NoCi0KLS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCi0KLXBpZG9mcHJvYyAkKgotZXhpdCAkPwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2Jfc3RhcnRfZGFlbW9uIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2Jfc3RhcnRfZGFlbW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkZTYyYzIzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3N0YXJ0X2RhZW1vbgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMhL2Jpbi9zaAotCi0uIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwotCi1uaWNlPQotZm9yY2U9Ci1waWRmaWxlPQotdXNlcj0KLWNoZWNrPQotUkVUVkFMPQotd2hpbGUgWyAiJDEiICE9ICIkezEjI1stK119IiBdOyBkbwotCWNhc2UgJDEgaW4KLQkgICAgIC1mKQotCSAgICAgCWZvcmNlPSItLWZvcmNlIgotCQlzaGlmdAotCQk7OwotCSAgICAgLW4pCi0JICAgICAJbmljZT0kMgotCQlzaGlmdCAyCi0JCTs7Ci0JICAgICAtcCkKLQkJcGlkZmlsZT0iLS1waWRmaWxlICQyIgotCQlzaGlmdCAyCi0JCTs7Ci0JICAgICAtdSkKLQkgICAgICAgIHVzZXI9Ii0tdXNlciAkMiIKLQkJc2hpZnQgMgotCQk7OwotCSAgICAgLWMpCi0JICAgICAgICBjaGVjaz0iLS1jaGVjayAkMiIKLQkJc2hpZnQgMgotCQk7OwotCSAgICAgICopICAgICAKLSAJCWVjaG8gIlVua25vd24gT3B0aW9uICQxIgotIAkJZWNobyAiT3B0aW9ucyBhcmU6IgotIAkJZWNobyAiLWYiIAotCQllY2hvICItcCB7cGlkZmlsZX0iCi0JCWVjaG8gIi1uIFsrLy1uaWNlbGV2ZWxdIgotCQllY2hvICItdSB7dXNlcn0iCi0JCWVjaG8gIi1jIHtiYXNlfSIKLQkgICAgICAgIGV4aXQgMTs7CQotCWVzYWMKLWRvbmUKLUxTQj1MU0ItMS4xIGRhZW1vbiAke2ZvcmNlOi19ICR7bmljZTotfSAke3BpZGZpbGU6LX0gJHt1c2VyOi19ICR7Y2hlY2s6LX0gJCoKLWV4aXQgJD8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZGUzMzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJMU0Igc3VwcG9ydCBmb3IgT3BlbkVtYmVkZGVkIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9sc2IiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTFNCX0NPUkUgPSAibHNiLWNvcmUtJHtUQVJHRVRfQVJDSH0iCi1MU0JfQ09SRV94ODYgPSAibHNiLWNvcmUtaWEzMiIKLUxTQl9DT1JFX3g4Ni02NCA9ICJsc2ItY29yZS1hbWQ2NCIKLVJQUk9WSURFU18ke1BOfSArPSAiJHtMU0JfQ09SRX0iCi0KLSMgbHNiX3JlbGVhc2UgbmVlZHMgZ2V0b3B0LCBsc2Jpbml0c2NyaXB0cwotUkRFUEVORFNfJHtQTn0gKz0gIiR7VklSVFVBTC1SVU5USU1FX2dldG9wdH0gbHNiaW5pdHNjcmlwdHMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9MTJkYTU0NGIxYTNhNWExNzk1YTIxMTYwYjQ5NDcxY2YiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvbHNiL2xzYl9yZWxlYXNlLzEuNC9sc2ItcmVsZWFzZS0xLjQudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWxzYl9yZWxlYXNlLXRvLXdvcmstd2l0aC1idXN5Ym94LWhlYWQtYW5kLWZpbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaW5pdC1mdW5jdGlvbnMgXAotICAgICAgICAgICBmaWxlOi8vbHNiX2tpbGxwcm9jIFwKLSAgICAgICAgICAgZmlsZTovL2xzYl9sb2dfbWVzc2FnZSBcCi0gICAgICAgICAgIGZpbGU6Ly9sc2JfcGlkb2Zwcm9jIFwKLSAgICAgICAgICAgZmlsZTovL2xzYl9zdGFydF9kYWVtb24gXAotICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMwNTM3ZWY1YTAxZTBjYTk0YjdiOGViNmEzNmJiMWU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5MzIxMjg4ZjhkNjJlN2ExZDQ4NWI3YzZiZGNjZjA2NzY2ZmI4Y2E2MDNjNjE5NTgwNmU0NDU3ZmRmMTcxNzIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xzYi9maWxlcy9sc2JfcmVsZWFzZS8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbHNiX3JlbGVhc2UvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUyA9ICIke1dPUktESVJ9L2xzYi1yZWxlYXNlLTEuNCIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgcHJlZml4PSR7RH0ke3Jvb3RfcHJlZml4fSBtYW5kaXI9JHtEfSR7ZGF0YWRpcn0vbWFuLyBERVNURElSPSR7RH0KLQotCSMgdGhlc2UgdHdvIGRpcnMgYXJlIG5lZWRlZCBieSBwYWNrYWdlIGxzYi1kaXN0LWNoZWNrZXIKLQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9vcHQKLQlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9vcHQKLQotCW1rZGlyIC1wICR7RH0ke2Jhc2VfbGliZGlyfQotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQKLQlwcmludGYgIkxTQl9WRVJTSU9OPVwiY29yZS01LjAtbm9hcmNoOiIgPiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07IHRoZW4KLQkJcHJpbnRmICJjb3JlLTUuMC1pYTMyIiA+PiAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQllbHNlCi0JCXByaW50ZiAiY29yZS01LjAtJHtUQVJHRVRfQVJDSH0iID4+ICAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWZpCi0JZWNobyAiXCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZWNobyAiRElTVFJJQl9JRD0ke0RJU1RST30iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZWNobyAiRElTVFJJQl9SRUxFQVNFPSR7RElTVFJPX1ZFUlNJT059IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWlmIFsgLW4gIiR7RElTVFJPX0NPREVOQU1FfSIgXTsgdGhlbgotCQllY2hvICJESVNUUklCX0NPREVOQU1FPSR7RElTVFJPX0NPREVOQU1FfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQlmaQotCWVjaG8gIkRJU1RSSUJfREVTQ1JJUFRJT049XCIke0RJU1RST19OQU1FfSAke0RJU1RST19WRVJTSU9OfVwiIiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07IHRoZW4KLQkJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0taWEzMgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0taWEzMgotCWVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LWFtZDY0Ci0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1hbWQ2NAotCWZpCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1wcGMzMgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0tcHBjMzIKLQllbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1wcGM2NAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0tcHBjNjQKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2NvcmUtbHNiCi0gICAgICAgZm9yIGkgaW4gbHNiX2tpbGxwcm9jIGxzYl9sb2dfbWVzc2FnZSBsc2JfcGlkb2Zwcm9jIGxzYl9zdGFydF9kYWVtb24KLSAgICAgICBkbwotICAgICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS8kaSAke0R9JHtzeXNjb25mZGlyfS9jb3JlLWxzYgotICAgICAgIGRvbmUKLQotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiCi0gICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1mdW5jdGlvbnMgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiCi0KLSAgICAgICAjIGNyZWF0ZSBsaW5rcyBmb3IgTFNCIHRlc3QKLSAgICAgICBpZiBbIC1lICR7c2JpbmRpcn0vY2hrY29uZmlnIF07IHRoZW4KLSAgICAgICAgICAgICAgIGlmIFsgIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0iICE9ICIke25vbmFyY2hfbGliZGlyfSIgXSA7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiCi0gICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgbG4gLXNmICR7c2JpbmRpcn0vY2hrY29uZmlnICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IvaW5zdGFsbF9pbml0ZAotICAgICAgICAgICAgICAgbG4gLXNmICR7c2JpbmRpcn0vY2hrY29uZmlnICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IvcmVtb3ZlX2luaXRkCi0gICAgICAgZmkKLQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KLSAgICAgICAJICAgICAgICMgZG9uJ3Qgc3ltbGluayBpZiB1c3JtZXJnZSBpcyBpbiBESVNUUk9fRkVBVFVSRVMgYXMgaXQgbWFuYWdlcyB0aGUgc3ltbGluawotICAgICAgICAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3Vzcm1lcmdlJywnZmFsc2UnLCd0cnVlJyxkKX0gJiYgXAotCSAgICAgICAJICBbICIke2Jhc2VfbGliZGlyfSIgIT0gIiR7YmFzZV9wcmVmaXh9L2xpYjY0IiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgbG5yICR7RH0ke2Jhc2VfbGliZGlyfSAke0R9JHtiYXNlX3ByZWZpeH0vbGliNjQKLSAgICAgICAgICAgICAgIGZpCi0JICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LXg4Ni02NC5zby4yIGxkLWxzYi14ODYtNjQuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LXg4Ni02NC5zby4yIGxkLWxzYi14ODYtNjQuc28uMwotICAgICAgIGZpCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07IHRoZW4KLQkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICBsbiAtc2YgbGQtbGludXguc28uMiBsZC1sc2Iuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjMKLSAgICAgICBmaQotCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0Ci0gICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICBsbiAtc2YgbGQ2NC5zby4xIGxkLWxzYi1wcGM2NC5zby4yCi0gICAgICAgICAgICAgICBsbiAtc2YgbGQ2NC5zby4xIGxkLWxzYi1wcGM2NC5zby4zCi0gICAgICAgZmkKLSAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC5zby4xIGxkLWxzYi1wcGMzMi5zby4yCi0gICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMwotICAgICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke0AnJHtiYXNlX3ByZWZpeH0vbGliNjQnIGlmIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpID09ICgneDg2XzY0JyBvciAncG93ZXJwYzY0JykgYW5kICcke2Jhc2VfbGliZGlyfScgIT0gJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBlbHNlICcnfSBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0gXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L2xzYiBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IvKiBcCi0gICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMDc2NDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TdWJqZWN0OiBmdW5jdGlvbnM6IGF2b2lkIGV4aXQgMSB3aGljaCBjYXVzZXMgaW5pdCBzY3JpcHRzIHRvIGZhaWwKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gcmMuZC9pbml0LmQvZnVuY3Rpb25zIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpbml0c2NyaXB0cy05LjcyLm9yaWcvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi0rKysgaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLUBAIC02ODYsNiArNjg2LDYgQEAgaWYgWyAiJF91c2Vfc3lzdGVtY3RsIiA9ICIxIiBdOyB0aGVuCi0gICAgIGZpCi0gZmkKLSAKLS1zdHJzdHIgIiQoY2F0IC9wcm9jL2NtZGxpbmUpIiAicmMuZGVidWciICYmIHNldCAteAotK3N0cnN0ciAiJChjYXQgL3Byb2MvY21kbGluZSkiICJyYy5kZWJ1ZyIgJiYgc2V0IC14IHx8IHRydWUKLSByZXR1cm4gMAotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MTJkYWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gZTQ2YjA1NjI4MmM4NDIwZjA5NmQ1YzM0ZDc4YzAwZjgxNjc4ODc4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+Ci1EYXRlOiBNb24sIDUgSnVuIDIwMTcgMTY6MjY6NDcgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogWGlhb2ZlbmcgWWFuIDx4aWFvZmVuZy55YW5Ad2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotUmViYXNlIG9uIDkuNzIKLQotU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0KLSByYy5kL2luaXQuZC9mdW5jdGlvbnMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9yYy5kL2luaXQuZC9mdW5jdGlvbnMgYi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLWluZGV4IDJlM2RhOTY0Li4xYTIwNGRlYyAxMDA2NDQKLS0tLSBhL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotKysrIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1AQCAtNTksNyArNTksNyBAQCBzeXN0ZW1jdGxfcmVkaXJlY3QgKCkgewotIFsgLXogIiR7Q09MVU1OUzotfSIgXSAmJiBDT0xVTU5TPTgwCi0gCi0gaWYgWyAteiAiJHtDT05TT0xFVFlQRTotfSIgXTsgdGhlbgotLSAgICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgXSAmJiBbIC1yICIvZGV2L3N0ZGVyciIgXTsgdGhlbgotKyAgICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgXSAmJiBbIC1yICIvZGV2L3N0ZGVyciIgXSAmJiBbIC1lIC9zYmluL2NvbnNvbGV0eXBlIF07IHRoZW4KLSAgICAgICAgIENPTlNPTEVUWVBFPSIkKC9zYmluL2NvbnNvbGV0eXBlIDwgL2Rldi9zdGRlcnIgMj4vZGV2L251bGwpIgotICAgICBlbHNlCi0gICAgICAgICBDT05TT0xFVFlQRT0ic2VyaWFsIgotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQzZmNmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBpbiBhbiBMU0IgaW1hZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZGViaWFuLm9yZy9MU0JJbml0U2NyaXB0cyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiaW5pdGQtZnVuY3Rpb25zIgotUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImluaXRzY3JpcHRzLWZ1bmN0aW9ucyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmVkb3JhLXN5c3YvaW5pdHNjcmlwdHMgXAotICAgICAgICAgICBmaWxlOi8vZnVuY3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCi0gICAgICAgICAgIiAKLVNSQ1JFViA9ICJhNTFjMWI0ZjdkY2Y1NWI1NjhiMmVlNGMyYjE4MDc4ODQ5OTQzNDY5IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiXig/UDxwdmVyPlxkKyhcLlxkKykrKSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2Yzc5OGY0MGRjZWIxMTdlMTIxMjZkOTRjYjI1YTlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3OTM2NzdiZGQxZjdlZTRjYjAwODc4Y2U0MzM0NjE5NjM3NGY4NDhhNGM4ZTQ1NTllMDg2MDQwZmM3NDg3ZGIiCi0KLSMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCi0jIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKLQotZG9faW5zdGFsbCgpewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzNlMjQ3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoCisrKyAvZGV2L251bGwKQEAgLTEsNTI1ICswLDAgQEAKLSMhL2Jpbi9zaAotCi0jIENvcHlyaWdodCAoQykgMjAxMiBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0jIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKLQotCi1XT1JLX0RJUj0iL29wdC9sc2ItdGVzdCIKLQotaWYgWyBgaWQgLXVgIC1uZSAwIF0KLXRoZW4KLQljYXQgPDwgRU9GCi0JSW4gb3JkZXIgdG8gaW5zdGFsbCBhbmQgcnVuIExTQiB0ZXN0c3VpdGUsIHlvdSBuZWVkIGFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcy4KLQlZb3UgYXJlIGN1cnJlbnRseSBydW5uaW5nIHRoaXMgc2NyaXB0IGFzIGFuIHVucHJpdmlsZWdlZCB1c2VyLgotCi1FT0YKLQlleGl0IDEKLWZpCi0KLUFSQ0g9YHVuYW1lIC1tYAotaWYgWyAke0FSQ0h9ICE9ICJpNjg2IiBdICYmIFsgJHtBUkNIfSAhPSAieDg2XzY0IiBdICYmIFsgJHtBUkNIfSAhPSAicHBjIiBdICYmIFsgJHtBUkNIfSAhPSAicHBjNjQiIF0KLXRoZW4KLQllY2hvICJFcnJvcjogVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgotCWV4aXQgMQotZmkKLQotd2hpY2ggcnBtCi1pZiBbICQ/IC1uZSAwIF0KLXRoZW4KLQllY2hvICJObyBycG0gY29tbWFuZCBmb3VuZCIKLQlleGl0IDEKLWZpCi0KLVJFVD0wCi0KLWNkICR7V09SS19ESVJ9IHx8IGV4aXQgMQotIyBTdGVwIDE6IERvd25sb2FkIHRoZSBMU0IgUGFja2FnZXMKLWVjaG8gIiIKLWVjaG8gIkRvd25sb2FkIExTQiBwYWNrYWdlcy4uLiIKLWVjaG8gIiIKLQotaWYgWyAhIC1lIC4vcGFja2FnZXNfbGlzdCBdCi10aGVuCi0JZWNobyAiRXJyb3I6IENvdWxkIG5vdCBmaW5kIHBhY2thZ2VzIGxpc3QiID4mMgotCWV4aXQgMQotZmkKLQotLiAuL3BhY2thZ2VzX2xpc3QKLQotUEFDS0FHRVNfRElSPSIvdmFyL29wdC9sc2IvdGVzdC9tYW5hZ2VyL3BhY2thZ2VzL2Z0cC5saW51eGZvdW5kYXRpb24ub3JnL3B1Yi9sc2IiCi0KLUJBU0VfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vYmFzZS9yZWxlYXNlZC1hbGwvYmluYXJ5IgotUlVOVElNRV9CQVNFX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L3Rlc3Rfc3VpdGVzL3JlbGVhc2VkLWFsbC9iaW5hcnkvcnVudGltZSIKLVJVTlRJTUVfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vdGVzdF9zdWl0ZXMvJHtMU0JfUkVMRUFTRX0vYmluYXJ5L3J1bnRpbWUiCi1BUFBfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vYXBwLWJhdHRlcnkvJHtMU0JfUkVMRUFTRX0vJHtMU0JfQVJDSH0iCi1BUFBfVEVTVEZJTEVTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L2FwcC1iYXR0ZXJ5L3Rlc3RzIgotU05BUFNIT1RTX1RFU1RGSUxFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9zbmFwc2hvdHMvYXBwYmF0L3Rlc3RzIgotCi1pZiBbICEgLWQgJHtQQUNLQUdFU19ESVJ9IF0KLXRoZW4KLQlta2RpciAtcCAke1BBQ0tBR0VTX0RJUn0KLWZpCi0KLWlmIFsgISAtZCAke0JBU0VfUEFDS0FHRVNfRElSfSBdCi10aGVuCi0JbWtkaXIgLXAgJHtCQVNFX1BBQ0tBR0VTX0RJUn0KLWZpCi0KLWlmIFsgISAtZCAke1JVTlRJTUVfQkFTRV9QQUNLQUdFU19ESVJ9IF0KLXRoZW4KLQlta2RpciAtcCAke1JVTlRJTUVfQkFTRV9QQUNLQUdFU19ESVJ9Ci1maQotCi1pZiBbICEgLWQgJHtSVU5USU1FX1BBQ0tBR0VTX0RJUn0gXQotdGhlbgotCW1rZGlyIC1wICR7UlVOVElNRV9QQUNLQUdFU19ESVJ9Ci1maQotCi1pZiBbICEgLWQgJHtBUFBfUEFDS0FHRVNfRElSfSBdCi10aGVuCi0JbWtkaXIgLXAgJHtBUFBfUEFDS0FHRVNfRElSfQotZmkKLQotaWYgWyAhIC1kICR7QVBQX1RFU1RGSUxFU19ESVJ9IF0KLXRoZW4KLQlta2RpciAtcCAke0FQUF9URVNURklMRVNfRElSfQotZmkKLQotIyBPZmZpY2lhbCBkb3dubG9hZCBzZXJ2ZXIgbGlzdC4gWW91IGNhbiByZXBsYWNlIHRoZW0gd2l0aCB5b3VyIG93biBzZXJ2ZXIuCi1TRVJWRVJfSVBBRERSPSIxNDAuMjExLjE2OS4yOCIKLVNFUlZFUl9OQU1FPSJmdHAubGludXhmb3VuZGF0aW9uLm9yZyIKLQotaWYgISBgZ3JlcCAtRiAtcSAiJHtTRVJWRVJfTkFNRX0iIC9ldGMvaG9zdHNgOyB0aGVuCi0JZWNobyAiJHtTRVJWRVJfSVBBRERSfQkke1NFUlZFUl9OQU1FfQkke1NFUlZFUl9OQU1FfSIgPj4gL2V0Yy9ob3N0cwotZmkKLQotI3BpbmcgLWMgNSAke1NFUlZFUl9OQU1FfQotI2lmIFsgJD8gLW5lIDAgXQotI3RoZW4KLSMJZWNobyAiVGhlIHNlcnZlcjogJHtTRVJWRVJfTkFNRX0gaXMgdW5yZWFjaGFibGUiCi0jCWV4aXQgMQotI2ZpCi0KLVNFUlZFUjE9IlwKLQlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi9iYXNlL3JlbGVhc2VkLWFsbC9iaW5hcnkiCQotU0VSVkVSMj0iXAotCWh0dHA6Ly8ke1NFUlZFUl9OQU1FfS9wdWIvbHNiL3Rlc3Rfc3VpdGVzL3JlbGVhc2VkLWFsbC9iaW5hcnkvcnVudGltZSIKLVNFUlZFUjM9IlwKLQlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi90ZXN0X3N1aXRlcy8ke0xTQl9SRUxFQVNFfS9iaW5hcnkvcnVudGltZSIKLVNFUlZFUjQ9IlwKLQlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi9hcHAtYmF0dGVyeS8ke0xTQl9SRUxFQVNFfS8ke0xTQl9BUkNIfSIKLVNFUlZFUjU9IlwKLQlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi9hcHAtYmF0dGVyeS90ZXN0cyIKLQotIyBXZSB1c2luZyAiY3VybCIgYXMgYSBkb3dubG9hZCB0b29sLCAid2dldCIgaXMgYW4gYWx0ZXJuYXRpdmUuCi1DVVJMPWB3aGljaCBjdXJsYAotV0dFVD1gd2hpY2ggd2dldGAKLWlmIFsgISAteiAke0NVUkx9IF0KLXRoZW4KLQlET1dOTE9BRF9DTUQ9IiR7Q1VSTH0gLVIgLUwgLWYgLS1yZXRyeSAzIC0tcmV0cnktZGVsYXkgNCAtLWNvbm5lY3QtdGltZW91dCAxODAgLS1jb21wcmVzc2VkIC1DIC0gLW8iCi1lbGlmIFsgISAteiAke1dHRVR9IF0KLXRoZW4KLQlET1dOTE9BRF9DTUQ9IiR7V0dFVH0gLWMgLXQgNSAtTyIKLWVsc2UKLQllY2hvICJDYW4gbm90IGZpbmQgYSBkb3dubG9hZCB0b29sLCBwbGVhc2UgaW5zdGFsbCBjdXJsIG9yIHdnZXQuIgotCWV4aXQgMQotZmkKLQotY2QgJHtCQVNFX1BBQ0tBR0VTX0RJUn0KLWZvciBwa2cgaW4gJHtCQVNFX1BBQ0tBR0VTX0xJU1R9OyBkbwotCWlmIFsgISAtZiAke3BrZ30gXQotCXRoZW4KLQkJIyR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjF9LyR7cGtnfSA+IC9kZXYvbnVsbCAyPiYxCi0JCSR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjF9LyR7cGtnfQotCQlpZiBbICQ/IC1lcSAwIF0KLQkJdGhlbgotCQkJbXYgLWYgJHtwa2d9Ii4jcGFydCIgJHtwa2d9Ci0JCQllY2hvICJEb3dubG9hZCAke3BrZ30gc3VjY2Vzc2Z1bGx5LiIKLQkJZWxzZQotCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IGZhaWxlZC4iCi0JCQlSRVQ9MQotCQlmaQotCWZpCi1kb25lCi0KLWNkICR7UlVOVElNRV9CQVNFX1BBQ0tBR0VTX0RJUn0KLWZvciBwa2cgaW4gJHtSVU5USU1FX0JBU0VfUEFDS0FHRVNfTElTVH07IGRvCi0JaWYgWyAhIC1mICR7cGtnfSBdCi0JdGhlbgotCQkjJHtET1dOTE9BRF9DTUR9ICR7cGtnfSIuI3BhcnQiICR7U0VSVkVSMn0vJHtwa2d9ID4gL2Rldi9udWxsIDI+JjEKLQkJJHtET1dOTE9BRF9DTUR9ICR7cGtnfSIuI3BhcnQiICR7U0VSVkVSMn0vJHtwa2d9Ci0JCWlmIFsgJD8gLWVxIDAgXQotCQl0aGVuCi0JCQltdiAtZiAke3BrZ30iLiNwYXJ0IiAke3BrZ30KLQkJCWVjaG8gIkRvd25sb2FkICR7cGtnfSBzdWNjZXNzZnVsbHkuIgotCQllbHNlCi0JCQllY2hvICJEb3dubG9hZCAke3BrZ30gZmFpbGVkLiIKLQkJCVJFVD0xCi0JCWZpCi0JZmkKLWRvbmUKLQotY2QgJHtSVU5USU1FX1BBQ0tBR0VTX0RJUn0KLWZvciBwa2cgaW4gJHtSVU5USU1FX1BBQ0tBR0VTX0xJU1R9OyBkbwotCWlmIFsgISAtZiAke3BrZ30gXQotCXRoZW4KLQkJIyR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjN9LyR7cGtnfSA+IC9kZXYvbnVsbCAyPiYxCi0JCSR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjN9LyR7cGtnfQotCQlpZiBbICQ/IC1lcSAwIF0KLQkJdGhlbgotCQkJbXYgLWYgJHtwa2d9Ii4jcGFydCIgJHtwa2d9Ci0JCQllY2hvICJEb3dubG9hZCAke3BrZ30gc3VjY2Vzc2Z1bGx5LiIKLQkJZWxzZQotCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IGZhaWxlZC4iCi0JCQlSRVQ9MQotCQlmaQotCWZpCi1kb25lCi0KLWNkICR7QVBQX1BBQ0tBR0VTX0RJUn0KLWZvciBwa2cgaW4gJHtBUFBfUEFDS0FHRVNfTElTVH07IGRvCi0JaWYgWyAhIC1mICR7cGtnfSBdCi0JdGhlbgotCQkjJHtET1dOTE9BRF9DTUR9ICR7cGtnfSIuI3BhcnQiICR7U0VSVkVSNH0vJHtwa2d9ID4gL2Rldi9udWxsIDI+JjEKLQkJJHtET1dOTE9BRF9DTUR9ICR7cGtnfSIuI3BhcnQiICR7U0VSVkVSNH0vJHtwa2d9Ci0JCWlmIFsgJD8gLWVxIDAgXQotCQl0aGVuCi0JCQltdiAtZiAke3BrZ30iLiNwYXJ0IiAke3BrZ30KLQkJCWVjaG8gIkRvd25sb2FkICR7cGtnfSBzdWNjZXNzZnVsbHkuIgotCQllbHNlCi0JCQllY2hvICJEb3dubG9hZCAke3BrZ30gZmFpbGVkLiIKLQkJCVJFVD0xCi0JCWZpCi0JZmkKLWRvbmUKLQotY2QgJHtBUFBfVEVTVEZJTEVTX0RJUn0KLWZvciBwa2cgaW4gJHtBUFBfVEVTVEZJTEVTX0xJU1R9OyBkbwotCWlmIFsgISAtZiAke3BrZ30gXQotCXRoZW4KLQkJIyR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjV9LyR7cGtnfSA+IC9kZXYvbnVsbCAyPiYxCi0JCSR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjV9LyR7cGtnfQotCQlpZiBbICQ/IC1lcSAwIF0KLQkJdGhlbgotCQkJbXYgLWYgJHtwa2d9Ii4jcGFydCIgJHtwa2d9Ci0JCQllY2hvICJEb3dubG9hZCAke3BrZ30gc3VjY2Vzc2Z1bGx5LiIKLQkJZWxzZQotCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IGZhaWxlZC4iCi0JCQlSRVQ9MQotCQlmaQotCWZpCi1kb25lCi0KLWlmIFsgJHtSRVR9IC1uZSAwIF0KLXRoZW4KLQllY2hvICJEb3dubG9hZCBzb21lIHBhY2thZ2VzIGZhaWxlZC4gUGxlYXNlIGRvd25sb2FkIHRoZW0gYWdhaW4uIgotCWV4aXQgMQotZmkKLQotIyBTdGVwIDI6IEluc3RhbGwgdGhlIExTQiBQYWNrYWdlcwotZWNobyAiIgotZWNobyAiSW5zdGFsbCBMU0IgcGFja2FnZXMuLi4iCi1lY2hvICIiCi0KLSMgS2lsbCBsaWdodHRwZAotcHMgYXV4IHwgZ3JlcCAibGlnaHR0cGQiIHwgZ3JlcCAtdiAtcSAiZ3JlcCIKLWlmIFsgJD8gLWVxIDAgXQotdGhlbgotCWtpbGxhbGwgbGlnaHR0cGQgPi9kZXYvbnVsbCAyPiYxCi1maQotCi0jIFN0YXJ0IGF2YWhpLWRhZW1vbgotcHMgYXV4IHwgZ3JlcCAiYXZhaGktZGFlbW9uIiB8IGdyZXAgLXYgLXEgImdyZXAiCi1pZiBbICQ/IC1uZSAwIF0KLXRoZW4KLQkvZXRjL2luaXQuZC9hdmFoaS1kYWVtb24gc3RhcnQgPi9kZXYvbnVsbCAyPiYxCi1maQotCi1MU0JfU1RBUlRfQ01EPSIvb3B0L2xzYi90ZXN0L21hbmFnZXIvYmluL2Rpc3QtY2hlY2tlci1zdGFydC5wbCIKLUxTQl9TVE9QX0NNRD0iL29wdC9sc2IvdGVzdC9tYW5hZ2VyL2Jpbi9kaXN0LWNoZWNrZXItc3RvcC5wbCIKLQotUExBVEZPUk1fRklMRT0iL2V0Yy9ycG0vcGxhdGZvcm0iCi0KLVJQTV9JTlNUQUxMX0NNRD0icnBtIC0tcXVpZXQgLS1ub2RlcHMgLS1yZXBsYWNlcGtncyAtLW5vc2lnbmF0dXJlIC1pIC0taWdub3Jlb3MiCi1SUE1fSU5TVEFMTF9DTURfTk9TQ1JJUFRTPSJycG0gLS1xdWlldCAtLW5vZGVwcyAtLXJlcGxhY2Vwa2dzIC0tbm9zY3JpcHRzIC0tbm9zaWduYXR1cmUgLWkgLS1pZ25vcmVvcyIKLQotIyBJZiB0aGUgbHNiIGhhcyBiZWVuIHN0YXJ0ZWQsIHN0b3AgaXQgZmlyc3QuCi1pZiBbIC14ICR7TFNCX1NUT1BfQ01EfSBdCi10aGVuCi0JJHtMU0JfU1RPUF9DTUR9Ci1maQotCi1pZiBbICEgLWQgL2V0Yy9ycG0gXQotdGhlbgotCW1rZGlyIC1wIC9ldGMvcnBtCi1maQotCi1pZiBbICEgLWYgJHtQTEFURk9STV9GSUxFfSBdCi10aGVuCi0JdG91Y2ggJHtQTEFURk9STV9GSUxFfQotZmkKLQotaWYgISBgZ3JlcCAtRiAtcSAibm9hcmNoLXN1c2UiICR7UExBVEZPUk1fRklMRX1gOyB0aGVuCi0JaWYgWyAke0FSQ0h9ID0gaTY4NiBdO3RoZW4KLQkJZWNobyAiaTQ4Ni1zdXNlIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gImk0ODYtbm9hcmNoIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gImk0ODYtcGMiID4+ICR7UExBVEZPUk1fRklMRX0KLQkJZWNobyAibm9hcmNoLXN1c2UiID4+ICR7UExBVEZPUk1fRklMRX0KLQllbGlmIFsgJHtBUkNIfSA9IHg4Nl82NCBdOyB0aGVuCi0JCWVjaG8gImk0ODYtc3VzZSIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICJpNDg2LW5vYXJjaCIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICJpNDg2LXBjIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gImk0ODYtLiotbGludXguKiIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICJub2FyY2gtc3VzZSIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICIke0FSQ0h9LXN1c2UiID4+ICR7UExBVEZPUk1fRklMRX0KLQkJZWNobyAiJHtBUkNIfS1ub2FyY2giID4+ICR7UExBVEZPUk1fRklMRX0KLQkJZWNobyAiJHtBUkNIfS1wYyIgPj4gJHtQTEFURk9STV9GSUxFfQotCWVsc2UKLQkJZWNobyAiJHtBUkNIfS1zdXNlIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gIiR7QVJDSH0tbm9hcmNoIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gIiR7QVJDSH0tcGMiID4+ICR7UExBVEZPUk1fRklMRX0KLQkJZWNobyAibm9hcmNoLXN1c2UiID4+ICR7UExBVEZPUk1fRklMRX0KLQlmaQotZmkKLQotaWYgWyAtZCAke0JBU0VfUEFDS0FHRVNfRElSfSBdCi10aGVuCi0JY2QgJHtCQVNFX1BBQ0tBR0VTX0RJUn0KLQlmb3IgcGtnIGluICR7QkFTRV9QQUNLQUdFU19MSVNUfQotCWRvCi0JCXJwbSAtLXF1aWV0IC1xICR7cGtnJVwuKn0KLQkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JCQkkUlBNX0lOU1RBTExfQ01EICR7cGtnfQotCQlmaQotCWRvbmUKLWZpCi0KLWlmIFsgLWQgJHtSVU5USU1FX0JBU0VfUEFDS0FHRVNfRElSfSBdCi10aGVuCi0JY2QgJHtSVU5USU1FX0JBU0VfUEFDS0FHRVNfRElSfQotCWZvciBwa2cgaW4gJHtSVU5USU1FX0JBU0VfUEFDS0FHRVNfTElTVH0KLQlkbwotCQlycG0gLS1xdWlldCAtcSAke3BrZyVcLip9Ci0JCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotCQkJJFJQTV9JTlNUQUxMX0NNRCAke3BrZ30KLQkJZmkKLQlkb25lCi1maQotCi1pZiBbIC1kICR7UlVOVElNRV9QQUNLQUdFU19ESVJ9IF0KLXRoZW4KLQljZCAke1JVTlRJTUVfUEFDS0FHRVNfRElSfQotCWZvciBwa2cgaW4gJHtSVU5USU1FX1BBQ0tBR0VTX0xJU1R9Ci0JZG8KLQkJcnBtIC0tcXVpZXQgLXEgJHtwa2clXC4qfQotCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLQkJCSRSUE1fSU5TVEFMTF9DTUQgJHtwa2d9Ci0JCWZpCi0JZG9uZQotZmkKLQotaWYgWyAtZCAke0FQUF9QQUNLQUdFU19ESVJ9IF0KLXRoZW4KLQljZCAke0FQUF9QQUNLQUdFU19ESVJ9Ci0JZm9yIHBrZyBpbiAke0FQUF9QQUNLQUdFU19MSVNUfQotCWRvCi0JCWVjaG8gIiR7cGtnfSIgfCBncmVwIC1xICJhcGFjaGVcfHhwZGYiCi0JCWlmIFsgJD8gLWVxIDAgXQotCQl0aGVuCi0JCQlycG0gLS1xdWlldCAtcSAke3BrZyVcLip9Ci0JCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLQkJCQkkUlBNX0lOU1RBTExfQ01EX05PU0NSSVBUUyAke3BrZ30KLQkJCWZpCi0JCWVsc2UKLQkJCXJwbSAtLXF1aWV0IC1xICR7cGtnJVwuKn0KLQkJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotCQkJCSRSUE1fSU5TVEFMTF9DTUQgJHtwa2d9Ci0JCQlmaQotCQlmaQotCWRvbmUKLWZpCi0KLWlmIFsgISAtZCAke1NOQVBTSE9UU19URVNURklMRVNfRElSfSBdCi10aGVuCi0JbWtkaXIgLXAgJHtTTkFQU0hPVFNfVEVTVEZJTEVTX0RJUn0KLWZpCi0KLWlmIFsgLWQgJHtBUFBfVEVTVEZJTEVTX0RJUn0gXQotdGhlbgotCWNkICR7QVBQX1RFU1RGSUxFU19ESVJ9Ci0JZm9yIHBrZyBpbiAke0FQUF9URVNURklMRVNfTElTVH0KLQlkbwotCQljcCAtZiAke3BrZ30gJHtTTkFQU0hPVFNfVEVTVEZJTEVTX0RJUn0KLQlkb25lCi1maQotCi1jZCAke1dPUktfRElSfQotCi0jIFN0ZXAgMzogU2V0IGVudmlyb25tZW50Ci1lY2hvICIiCi1lY2hvICJTZXQgZW52aXJvbm1lbnQuLi4iCi1lY2hvICIiCi0KLWNoZWNrICgpCi17Ci0JaWYgWyAkPyAtZXEgMCBdCi0JdGhlbgotCQllY2hvICJQQVNTIgotCWVsc2UgCi0JCWVjaG8gIkZBSUwiCi0JCWV4aXQgMQotCWZpCi19Ci0KLWVjaG8gIiIKLWVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLWVjaG8gIkNyZWF0ZSB0aGUgRGlybmFtZXMgb24gdGFyZ2V0IgotCi1pZiBbICEgLWQgL2V0Yy9ycG0vc3lzaW5mbyBdCi10aGVuCi0JbWtkaXIgLXAgL2V0Yy9ycG0vc3lzaW5mbwotZmkKLQotY2F0ID4gL2V0Yy9ycG0vc3lzaW5mby9EaXJuYW1lcyA8PCBFT0YKLS9ldGMvb3B0L2xzYgotL2hvbWUvdGV0L0xTQi50b29scwotL29wdC9sc2ItdGV0My1saXRlL2xpYi9rc2gKLS9vcHQvbHNiLXRldDMtbGl0ZS9saWIvcGVybAotL29wdC9sc2ItdGV0My1saXRlL2xpYi9wb3NpeF9zaAotL29wdC9sc2ItdGV0My1saXRlL2xpYi90ZXQzCi0vb3B0L2xzYi10ZXQzLWxpdGUvbGliL3hwZzNzaAotL29wdC9sc2IvYXBwYmF0L2xpYi9weXRob24yLjQvc2l0ZS1wYWNrYWdlcy9xbQotL29wdC9sc2IvYXBwYmF0L2xpYi9weXRob24yLjQvc2l0ZS1wYWNrYWdlcy9xbS9leHRlcm5hbAotL29wdC9sc2IvYXBwYmF0L2xpYi9weXRob24yLjQvc2l0ZS1wYWNrYWdlcy9xbS9leHRlcm5hbC9Eb2N1bWVudFRlbXBsYXRlCi0vb3B0L2xzYi9hcHBiYXQvbGliL3B5dGhvbjIuNC9zaXRlLXBhY2thZ2VzL3FtL3Rlc3QKLS9vcHQvbHNiL2FwcGJhdC9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMvcW0vdGVzdC9jbGFzc2VzCi0vb3B0L2xzYi9hcHBiYXQvbGliL3B5dGhvbjIuNC9zaXRlLXBhY2thZ2VzL3FtL3Rlc3Qvd2ViCi0vb3B0L2xzYi90ZXN0L2RvYwotL29wdC9sc2IvdGVzdC9saWIKLS9vcHQvbHNiL3Rlc3QvcW0vZGlhZ25vc3RpY3MKLS9vcHQvbHNiL3Rlc3QvcW0vZG9jCi0vb3B0L2xzYi90ZXN0L3FtL2RvYy90ZXN0L2h0bWwKLS9vcHQvbHNiL3Rlc3QvcW0vZG9jL3Rlc3QvcHJpbnQKLS9vcHQvbHNiL3Rlc3QvcW0vZHRtbAotL29wdC9sc2IvdGVzdC9xbS9kdG1sL3Rlc3QKLS9vcHQvbHNiL3Rlc3QvcW0vbWVzc2FnZXMvdGVzdAotL29wdC9sc2IvdGVzdC9xbS90dXRvcmlhbC90ZXN0L3RkYgotL29wdC9sc2IvdGVzdC9xbS90dXRvcmlhbC90ZXN0L3RkYi9RTVRlc3QKLS9vcHQvbHNiL3Rlc3QvcW0vd2ViCi0vb3B0L2xzYi90ZXN0L3FtL3dlYi9pbWFnZXMKLS9vcHQvbHNiL3Rlc3QvcW0vd2ViL3N0eWxlc2hlZXRzCi0vb3B0L2xzYi90ZXN0L3FtL3htbAotL29wdC9sc2IvdGVzdC9zaGFyZQotL3Vzci9zaGFyZS9kb2MvbHNiLXJ1bnRpbWUtdGVzdAotL3Zhci9vcHQvbHNiCi0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AKLS9vcHQvbHNiL3Rlc3QvZGVza3RvcC9mb250Y29uZmlnCi0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AvZnJlZXR5cGUKLS9vcHQvbHNiL3Rlc3QvZGVza3RvcC9ndGt2dHMKLS9vcHQvbHNiL3Rlc3QvZGVza3RvcC9saWJwbmcKLS9vcHQvbHNiL3Rlc3QvZGVza3RvcC94ZnQKLS9vcHQvbHNiL3Rlc3QvZGVza3RvcC94bWwKLS9vcHQvbHNiL3Rlc3QvZGVza3RvcC94cmVuZGVyCi0KLQotRU9GCi0KLWlmIFsgLWYgL2V0Yy9ycG0vc3lzaW5mby9EaXJuYW1lcyBdCi10aGVuCi0JZWNobyAiU3VjY2VzcyB0byBjcmVhdCBEaXJuYW1lcyBmaWxlIgotZWxzZSAKLQllY2hvICJGYWlsIHRvIGNyZWF0IERpcm5hbWVzIGZpbGUiCi1maQotCi1bIC14IC9zYmluL2xkY29uZmlnIF0gJiYgewotZWNobyAiIgotZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotZWNobyAiVXBkYXRlIGNhY2hlIgotL3NiaW4vbGRjb25maWcKLWNoZWNrOwotfQotCi0jIENoZWNrIGxvb3AgZGV2aWNlCi1pZiBbICEgLWIgL2Rldi9sb29wMCBdCi10aGVuCi0JaW5zbW9kIC9saWIvbW9kdWxlcy9gdW5hbWUgLXJgL2tlcm5lbC9kcml2ZXJzL2Jsb2NrL2xvb3Aua28KLQlpZiBbICQ/ICE9IDAgXTt0aGVuCi0JCWVjaG8gIkluc21vZCBsb29wLmtvIGZhaWxlZC4iCi0JZmkKLWZpCi0KLSMgUmVzb2x2ZSBsb2NhbGhvc3QKLUxPQ0FMSE9TVD1gaG9zdG5hbWVgCi1pZiAhIGBncmVwIC1GIC1xICIkTE9DQUxIT1NUIiAvZXRjL2hvc3RzYDsgdGhlbgotCWVjaG8gIjEyNy4wLjAuMQkkTE9DQUxIT1NUIiA+PiAvZXRjL2hvc3RzCi1maQotCi0jIFdvcmthcm91bmQgdG8gYWRkIHBhcnQgb2YgbG9jYWxlcyBmb3IgTFNCIHRlc3QKLWxvY2FsZWRlZiAtaSBkZV9ERSAtZiBJU08tODg1OS0xIGRlX0RFCi1sb2NhbGVkZWYgLWkgZGVfREUgLWYgSVNPLTg4NTktMTUgZGVfREUuSVNPLTg4NTktMTUKLWxvY2FsZWRlZiAtaSBkZV9ERSAtZiBVVEYtOCBkZV9ERS5VVEYtOAotbG9jYWxlZGVmIC1pIGRlX0RFQGV1cm8gLWYgSVNPLTg4NTktMTUgZGVfREVAZXVybwotbG9jYWxlZGVmIC1pIGVuX0hLIC1mIElTTy04ODU5LTEgZW5fSEsKLWxvY2FsZWRlZiAtaSBlbl9QSCAtZiBJU08tODg1OS0xIGVuX1BICi1sb2NhbGVkZWYgLWkgZW5fVVMgLWYgSVNPLTg4NTktMTUgZW5fVVMuSVNPLTg4NTktMTUKLWxvY2FsZWRlZiAtaSBlbl9VUyAtZiBJU08tODg1OS0xIGVuX1VTLklTTy04ODU5LTEKLWxvY2FsZWRlZiAtaSBlbl9VUyAtZiBJU08tODg1OS0xIGVuX1VTCi1sb2NhbGVkZWYgLWkgZW5fVVMgLWYgVVRGLTggZW5fVVMuVVRGLTgKLWxvY2FsZWRlZiAtaSBlbl9VUyAtZiBJU08tODg1OS0xIGVuX1VTLklTTzg4NTktMQotbG9jYWxlZGVmIC1pIGVzX01YIC1mIElTTy04ODU5LTEgZXNfTVgKLWxvY2FsZWRlZiAtaSBmcl9GUiAtZiBJU08tODg1OS0xIGZyX0ZSCi1sb2NhbGVkZWYgLWkgaXRfSVQgLWYgSVNPLTg4NTktMSBpdF9JVAotbG9jYWxlZGVmIC1pIGphX0pQIC1mIEVVQy1KUCBqYV9KUC5ldWNqcAotbG9jYWxlZGVmIC1pIHNlX05PIC1mIFVURi04IHNlX05PLlVURi04Ci1sb2NhbGVkZWYgLWkgdGFfSU4gLWYgVVRGLTggdGFfSU4KLWxvY2FsZWRlZiAtaSBlc19FUyAtZiBJU08tODg1OS0xIGVzX0VTCi1sb2NhbGVkZWYgLWkgZnJfRlJAZXVybyAtZiBJU08tODg1OS0xIGZyX0ZSQGV1cm8KLWxvY2FsZWRlZiAtaSBpc19JUyAtZiBVVEYtOCBpc19JUy5VVEYtOAotbG9jYWxlZGVmIC1pIHpoX1RXIC1mIEJJRzUgemhfVFcuQklHNQotbG9jYWxlZGVmIC1pIGVuX1VTIC1mIElTTy04ODU5LTE1IGVuX1VTLklTTy04ODU5LTE1Ci0KLWVjaG8gIiIKLWVjaG8gIkluc3RhbGxhdGlvbiBkb25lISIKLWVjaG8gIiIKLQotIyBTdGVwIDQ6IFN0YXJ0IExTQiB0ZXN0Ci1pZiBbIC14ICR7TFNCX1NUQVJUX0NNRH0gXQotdGhlbgotCSR7TFNCX1NUQVJUX0NNRH0KLWZpCi0KLWVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLWVjaG8gIlJ1biBhbGwgdGhlIGNlcnRpZmljYXRpb24gdmVyc2lvbiBvZiBMU0IgVGVzdHMiCi1lY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0KLUxTQl9ESVNUX0NIRUNLRVI9Ii9vcHQvbHNiL3Rlc3QvbWFuYWdlci91dGlscy9kaXN0LWNoZWNrZXIucGwiCi1TRVNTSU9OPSIke1dPUktfRElSfS9zZXNzaW9uIgotaWYgWyAhIC1lICR7U0VTU0lPTn0gXQotdGhlbgotCWVjaG8gIkVycm9yOiBDb3VsZCBub3QgZmluZCBzZXNzaW9uIGZpbGUuIgotCWVjaG8gIllvdSBtdXN0IHJ1biBMU0IgdGVzdCBmcm9tIHdlYmJyb3dlci4iCi0JZXhpdCAxCi1maQotCi1pZiBbIC14ICR7TFNCX0RJU1RfQ0hFQ0tFUn0gXQotdGhlbgotCSR7TFNCX0RJU1RfQ0hFQ0tFUn0gLXYyIC1mICR7U0VTU0lPTn0KLQljaGVjawotZmkKLQotZWNobyAiIgotZWNobyAiTFNCIHRlc3QgY29tcGxldGUuIFBsZWFzZSBjaGVjayB0aGUgbG9nIGZpbGUgaW4gL3Zhci9vcHQvbHNiL3Rlc3QvbWFuYWdlci9yZXN1bHRzLyIKLWVjaG8gIiIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNmMxMTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUxTQl9SRUxFQVNFPSJyZWxlYXNlZC01LjAiCi1MU0JfQVJDSD0ibHNiYXJjaCIKLQotQkFTRV9QQUNLQUdFU19MSVNUPSJsc2Itc2V0dXAtNS4wLjAtMi5ub2FyY2gucnBtIgotCi1SVU5USU1FX0JBU0VfUEFDS0FHRVNfTElTVD0ibHNiLWRpc3QtY2hlY2tlci01LjAuMC4xLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXQzLWxpdGUtMy43LTI3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXQzLWxpdGUtZGV2ZWwtMy43LTI3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi14dmZiLTEuMi4wLTIyLnRhcmdldGFyY2gucnBtIFwKLQkiCi0KLVJVTlRJTUVfUEFDS0FHRVNfTElTVD0ibHNiLWNtZGNoay01LjAuMy0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItbGliY2hrLTUuMC4zLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi1xbS0yLjItMS5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGFzay1kaXN0LXRlc3RraXQtNS4wLjAtMi5ub2FyY2gucnBtIFwKLQlsc2ItdGVzdC1jb3JlLTUuMC4xLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LWNwcC10MmMtNS4wLjAtMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtZGVza3RvcC01LjAuMC0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1kZXNrdG9wLXQyYy01LjAuMC0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1saWJzdGRjcHAtNC4xLjAtMjIubHNiMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3Qtb2x2ZXItY29yZS01LjAuMC0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1wZXJsLTUuMC4yLTEubm9hcmNoLnJwbSBcCi0JbHNiLXRlc3QtcHJpbnRpbmctNS4wLjEtMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtcHl0aG9uLTUuMC4wLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LXF0NC1hem92LTUuMC4wLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LXh0czUtNS4xLjUtNDcubHNiNS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtYWxzYS10MmMtNS4xLjkxLTQudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LWNvcmUtdDJjLTUuMC4xLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LXhtbDItYXpvdi01LjAuMC0xLnRhcmdldGFyY2gucnBtIFwKLQkiCi0KLUFQUF9QQUNLQUdFU19MSVNUPSJsc2ItcHl0aG9uLTIuNC42LTEwLmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi1hcGFjaGUtMi4yLjE5LTUubHNiNS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRjbC04LjUuOS0yMS5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItZXhwZWN0LTUuNDMuMC0yMS5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItZ3JvZmYtMS4yMC4xLTkubHNiNS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXJhcHRvci0xLjQuMjEtNC5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2IteHBkZi0xLjAxLTE3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi1zYW1iYS0zLjUuOS01LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi1yc3luYy0zLjAuOC0zLmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCSIKLQotQVBQX1RFU1RGSUxFU19MSVNUPSJleHBlY3QtdGVzdHMudGFyIFwKLQl0Y2wtdGVzdHMudGFyIFwKLQlyYXB0b3ItdGVzdHMudGFyIFwKLQl0ZXN0MS5wZGYgXAotCXRlc3QyLnBkZiBcCi0JIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3Qvc2Vzc2lvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ0N2U0MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAKLVtHRU5FUkFMXQotVkVSQk9TRV9MRVZFTDogICAxCi1BUkNISVRFQ1RVUkU6ICAgIHRhcmdldGFyY2gKLVVTRV9JTlRFUk5FVDogICAgMQotU1REX1ZFUlNJT046ICAgICBMU0IgNS4wCi1TVERfUFJPRklMRTogICAgIG5vCi1bY21kY2hrXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtsaWJjaGtdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW2Fsc2EtdDJjXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVthbHNhLXQyY3xsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvYWxzYS10MmMKLUFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9hbHNhLXQyYy9yZXN1bHRzCi0KLVtjb3JlXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtjb3JlfGxvY2FsfCpdCi1BVVRPUkVQTFlfUFJPVklERVNfQkFTSDogbgotQVVUT1JFUExZX1RFU1RSVU5fUEFUSDogL2hvbWUvdGV0L3Rlc3Rfc2V0cwotQVVUT1JFUExZX1BFUlNPTjogQXV0b21hdGVkCi1BVVRPUkVQTFlfS0VSTkVMX05BTUU6IHZtbGludXoKLUFVVE9SRVBMWV9JTlNUQUxMX0xTQlBBTV9DT05GOiB5Ci1BVVRPUkVQTFlfUFJPVklERVNfQ19TSEVMTDogbgotQVVUT1JFUExZX09SR0FOSVNBVElPTjogTi9BCi1BVVRPUkVQTFlfU0VUX1BBU1NfTUlOX0RBWVM6IHkKLUFVVE9SRVBMWV9QUk9WSURFU19TWVNWX0lOSVQ6IAotQVVUT1JFUExZX0lTTlRBTExfREVWUzogeQotQVVUT1JFUExZX1NVUFBPUlRTX0ZJTEVfQ01EOiB5Ci1BVVRPUkVQTFlfVEVTVF9TWVNURU06IERpc3RyaWJ1dGlvbiBDaGVja2VyCi1BVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9jb3JlL3RldC90ZXN0X3NldHMKLUFVVE9SRVBMWV9TVVBQT1JUU19OTFM6IG4KLUFVVE9SRVBMWV9TVVBQT1JUU19QUk9DRVNTX0FDQ09VTlRJTkc6IG4KLUFVVE9SRVBMWV9QQVRIX1RPX1JDLkQ6IAotQVVUT1JFUExZX0FMTE9XU19NQUtFREVWOiBuCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvY29yZS90ZXQvdGVzdF9zZXRzL3Jlc3VsdHMKLQotW2NvcmUtdDJjXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtjb3JlLXQyY3xsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvY29yZS10MmMKLUFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9jb3JlLXQyYy9yZXN1bHRzCi0KLVtjcHAtdDJjXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtjcHAtdDJjfGxvY2FsfCpdCi1BVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9jcHAtdDJjCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvY3BwLXQyYy9yZXN1bHRzCi0KLVtkZXNrdG9wXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtkZXNrdG9wfGxvY2FsfCpdCi1BVVRPUkVQTFlfREVTS1RPUF9FTlZJUk9OTUVOVDogW2RlZmF1bHRdCi1BVVRPUkVQTFlfUEVSU09OOiBBdXRvbWF0ZWQKLUFVVE9SRVBMWV9YX0NMSUVOVF9IT1NUTkFNRTogCi1BVVRPUkVQTFlfVEVTVF9TWVNURU06IERpc3RyaWJ1dGlvbiBDaGVja2VyCi1BVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9kZXNrdG9wCi1BVVRPUkVQTFlfWDExX0ZPTlRfUEFUSDogW2RlZmF1bHRdCi1BVVRPUkVQTFlfU0hPV19TVU1NQVJZX1JFUE9SVDogCi1BVVRPUkVQTFlfT1JHQU5JU0FUSU9OOiBOL0EKLUFVVE9SRVBMWV9YVkZCX0RJU1BMQVk6IFtkZWZhdWx0XQotCi1bZGVza3RvcC10MmNdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW2Rlc2t0b3AtdDJjfGxvY2FsfCpdCi1BVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9kZXNrdG9wLXQyYwotQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L2Rlc2t0b3AtdDJjL3Jlc3VsdHMKLQotW2xpYnN0ZGNwcF0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bbGlic3RkY3BwfGxvY2FsfCpdCi1BVVRPUkVQTFlfVEVTVF9TWVNURU06IERpc3RyaWJ1dGlvbiBDaGVja2VyCi1BVVRPUkVQTFlfUEVSU09OOiBBdXRvbWF0ZWQKLUFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L2xpYnN0ZGNwcF80LjEuMAotQVVUT1JFUExZX09SR0FOSVNBVElPTjogTi9BCi1BVVRPUkVQTFlfR05VX1RSSVBMRVQ6IAotCi1bb2x2ZXJdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW29sdmVyfGxvY2FsfCpdCi1BVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9vbHZlci1jb3JlCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC92YXIvb3B0L2xzYi90ZXN0L29sdmVyLWNvcmUKLQotW3BlcmxdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW3Blcmx8bG9jYWx8Kl0KLUFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3BlcmwKLUFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9wZXJsL3Jlc3VsdHMKLQotW3ByaW50aW5nXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtwcmludGluZ3xsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvcHJpbnRpbmcKLUFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9wcmludGluZy9yZXN1bHRzCi0KLVtweXRob25dCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW3B5dGhvbnxsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvcHl0aG9uCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcHl0aG9uL3Jlc3VsdHMKLQotW3htbDItYXpvdl0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1beHRzNV0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1beHRzNXxsb2NhbHwqXQotQVVUT1JFUExZX1hUX0ZPTlRQQVRIX0dPT0Q6IFtkZWZhdWx0XQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QveHRzNQotQVVUT1JFUExZX1hWRkJfRElTUExBWTogW2RlZmF1bHRdCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QveHRzNS94dHM1L3Jlc3VsdHMKLUFVVE9SRVBMWV9YVF9GT05UUEFUSDogW2RlZmF1bHRdCi1BVVRPUkVQTFlfWF9DTElFTlRfSE9TVE5BTUU6IAotCi1bYXBhY2hlXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtleHBlY3RdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW2dyb2ZmXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtyYXB0b3JdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW3JzeW5jXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtzYW1iYV0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bdGNsXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVt4cGRmXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0XzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0XzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwYzAyMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkF1dG9tYXRlcyBMaW51eCBTdGFuZGFyZCBCYXNlIChMU0IpIHRlc3RzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvTFNCSW5pdFNjcmlwdHMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyIgotUFIgPSAicjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xTQl9UZXN0LnNoO2JlZ2lubGluZT0zO2VuZGxpbmU9MTY7bWQ1PTcwNjNiYjU0YjA0NzE5ZGYwNzE2YjUxMzQ0N2Y0ZmMwIgotCi1TUkNfVVJJID0gImZpbGU6Ly9MU0JfVGVzdC5zaCBcCi0JCSAgIGZpbGU6Ly9wYWNrYWdlc19saXN0IFwKLQkJICAgZmlsZTovL3Nlc3Npb24gXAotCQkgICAiCi1SREVQRU5EU18ke1BOfSA9ICJsc2IgcnBtIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAgJHtEfS9vcHQvbHNiLXRlc3QKLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS9MU0JfVGVzdC5zaCAke0R9L29wdC9sc2ItdGVzdC9MU0JfVGVzdC5zaAotCWluc3RhbGwgLW0gMDY0NCAke1N9L3BhY2thZ2VzX2xpc3QgJHtEfS9vcHQvbHNiLXRlc3QvcGFja2FnZXNfbGlzdAotCWluc3RhbGwgLW0gMDY0NCAke1N9L3Nlc3Npb24gJHtEfS9vcHQvbHNiLXRlc3Qvc2Vzc2lvbgotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdO3RoZW4KLQkJc2VkIC1pIC1lICdzL2xzYmFyY2gvaWEzMi9nJyAtZSAncy90YXJnZXRhcmNoL2k0ODYvZycgJHtEfS9vcHQvbHNiLXRlc3QvcGFja2FnZXNfbGlzdAotCQlzZWQgLWkgLWUgJ3MvdGFyZ2V0YXJjaC94ODYvZycgJHtEfS9vcHQvbHNiLXRlc3Qvc2Vzc2lvbgotCWZpCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTt0aGVuCi0JCXNlZCAtaSAtZSAncy9sc2JhcmNoL2FtZDY0L2cnIC1lICdzL3RhcmdldGFyY2gveDg2XzY0L2cnICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKLQkJc2VkIC1pIC1lICdzL3RhcmdldGFyY2gveDg2LTY0L2cnICR7RH0vb3B0L2xzYi10ZXN0L3Nlc3Npb24KLQlmaQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdO3RoZW4KLQkJc2VkIC1pIC1lICdzL2xzYmFyY2gvcHBjMzIvZycgLWUgJ3MvdGFyZ2V0YXJjaC9wcGMvZycgJHtEfS9vcHQvbHNiLXRlc3QvcGFja2FnZXNfbGlzdAotCQlzZWQgLWkgLWUgJ3MvdGFyZ2V0YXJjaC9QUEMzMi9nJyAke0R9L29wdC9sc2ItdGVzdC9zZXNzaW9uCi0JZmkKLQotCSMgRm9yIGEgcHBjNjQgdGFyZ2V0LiB0aGUgZGVmYXVsdCB1c2Vyc3BhY2UgaXMgMzJiLgotCSMgVGhlcmVmb3JlLCBvbmx5IGNoYW5nZSB0aGUgbHNiYXJjaCBhbmQgdGFyZ2V0YXJjaAotCSMgaW4gdGhlIHBhY2thZ2VfbGlzdCB3aGVuIE1MSUI9bGliNjQgaXMgYmVpbmcgdXNlZC4KLQkjIE90aGVyd2lzZSwgYnkgZGVmYXVsdCwgdGhlIHBwYzMyIExTQiBwYWNrYWdlcwotCSMgd2lsbCBiZSBkb3dubG9hZGVkIGJ5IExTQl9UZXN0LnNoCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTt0aGVuCi0JCWlmIFsgIiR7UE59IiAhPSAiJHtCUE59IiBdO3RoZW4KLQkJCXNlZCAtaSAtZSAncy9sc2JhcmNoL3BwYzY0L2cnIC1lICdzL3RhcmdldGFyY2gvcHBjNjQvZycgJHtEfS9vcHQvbHNiLXRlc3QvcGFja2FnZXNfbGlzdAotCQkJc2VkIC1pIC1lICdzL3RhcmdldGFyY2gvUFBDNjQvZycgJHtEfS9vcHQvbHNiLXRlc3Qvc2Vzc2lvbgotCQlmaQotCWZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIvb3B0L2xzYi10ZXN0LyogXAotICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS1tZWx0ZG93bi5jLUZpeC1rZXJuZWwtc3ltYm9sLWZpbmRpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY3ZlLW1lbHRkb3duLmMtRml4LWtlcm5lbC1zeW1ib2wtZmluZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGY2ZjVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS1tZWx0ZG93bi5jLUZpeC1rZXJuZWwtc3ltYm9sLWZpbmRpbmcucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSBmYmVkYTgyZjQ0MGEwMDk4YmU0MmRkNjY4Y2JjNDcyMTJhODZhYjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjEgQXVnIDIwMTkgMTY6Mjc6MjQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY3ZlL21lbHRkb3duLmM6IEZpeCBrZXJuZWwgc3ltYm9sIGZpbmRpbmcKKworbWVsdGRvd24gY2FzZSBmYWlscyBhcyBiZWxvdy4KK3NhZmVfZmlsZV9vcHMuYzoyMTk6IEJST0s6IEV4cGVjdGVkIDMgY29udmVyc2lvbnMgZ290IDIgYXQgbWVsdGRvd24uYzoyNzIKKworZmluZF9rZXJuZWxfc3ltYm9sIGlzIGRlZmluZWQgdG8gdHJ5IHR3aWNlIHdpdGggZWFjaCBvZiAvcHJvYy9rYWxsc3ltcyBhbmQKKy9ib290L1N5c3RlbS5tYXAtJXMuIEN1cnJlbnRseSBpZiB0aGUgc3ltYm9sIGlzIG5vdCBmb3VuZCBpbiAvcHJvYy9rYWxsc3ltcywKK3doZW4ga2VybmVsIG9wdGlvbiBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIGRpc2FibGVkLCBpdCB3b3VsZCBzdG9wIHRoZSBjYXNlCitpbW1lZGlhdGVseSBkdWUgdG8gU0FGRV9GSUxFX0xJTkVTX1NDQU5GLgorCitUaGlzIHBhdGNoIHR1cm5zIHRvIHVzZSBGSUxFX0xJTkVTX1NDQU5GIHRvIGdpdmUgZmluZF9rZXJuZWxfc3ltYm9sIHNlY29uZAorY2hhbmNlLgorCitbanN0YW5jZWtdIEZpeCBhbHNvIGNvbmRpdGlvbiBpbnRyb2R1Y2VkIGluIDc3MDlkMmFlOTJlYSwgZXZlbiBpZgorICAgICAgICAgICAvcHJvYy9rYWxsc3ltcyBpcyBkaXNhYmxlZCwgd2Ugc3RpbGwgd2FudCB0byB0cnkgU3lzdGVtLm1hcC4KKworU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2MyMDQ5YjVjODc0YmMwNzFmODE4NWJmZmI1ZmQ3ZGNiMDQyZDllYzhdCisKK1JlbW92ZSB0aGUgaHVuayBmb3IgdXBzdHJlYW0gNzcwOWQyYWU5MmVhICgiY3ZlL21lbHRkb3duLmM6IGFib3J0IHRoZSB0ZXN0IGlmIGthbGxzeW1zIHdhcyBub3QgZW5hYmxlZCIpCit0aGF0IGhhcyBiZWVuIGNvdmVyZWQgYnkgdGhpcyBwYXRjaC4KKworU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9jdmUvbWVsdGRvd24uYyB8IDEzICsrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYyBiL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYworaW5kZXggYTUzZWE5Yi4uMjI2NTFhNiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYworKysrIGIvdGVzdGNhc2VzL2N2ZS9tZWx0ZG93bi5jCitAQCAtMjY3LDkgKzI2NywxNSBAQCBmaW5kX3N5bWJvbF9pbl9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpzeW1uYW1lKQorIAlpbnQgcmV0LCByZWFkOworIAljaGFyIGZtdFtzdHJsZW4oc3ltbmFtZSkgKyA2NF07CisgCisrCXRzdF9yZXMoVElORk8sICJMb29raW5nIGZvciAlcyBpbiAlcyIsIHN5bW5hbWUsIGZpbGVuYW1lKTsKKysJaWYgKGFjY2VzcyhmaWxlbmFtZSwgRl9PSykgPT0gLTEpIHsKKysJCXRzdF9yZXMoVElORk8sICIlcyBub3QgYXZhaWxhYmxlIiwgZmlsZW5hbWUpOworKwkJcmV0dXJuIDA7CisrCX0KKysKKyAJc3ByaW50ZihmbXQsICIlJWx4ICUlYyAlcyUlYyIsIHN5bW5hbWUpOworIAorLQlyZXQgPSBTQUZFX0ZJTEVfTElORVNfU0NBTkYoZmlsZW5hbWUsIGZtdCwgJmFkZHIsICZ0eXBlLCAmcmVhZCk7CisrCXJldCA9IEZJTEVfTElORVNfU0NBTkYoZmlsZW5hbWUsIGZtdCwgJmFkZHIsICZ0eXBlLCAmcmVhZCk7CisgCWlmIChyZXQpCisgCQlyZXR1cm4gMDsKKyAKK0BAIC0yODcsMTMgKzI5MywxMSBAQCBmaW5kX2tlcm5lbF9zeW1ib2woY29uc3QgY2hhciAqbmFtZSkKKyAJaWYgKGFkZHIpCisgCQlyZXR1cm4gYWRkcjsKKyAKKy0JdHN0X3JlcyhUSU5GTywgIm5vdCBmb3VuZCAnJXMnIGluIC9wcm9jL2thbGxzeW1zIiwgbmFtZSk7CisgCWlmICh1bmFtZSgmdXRzbmFtZSkgPCAwKQorIAkJdHN0X2JyayhUQlJPSyB8IFRFUlJOTywgInVuYW1lIik7CisgCisgCXNwcmludGYoc3lzdGVtbWFwLCAiL2Jvb3QvU3lzdGVtLm1hcC0lcyIsIHV0c25hbWUucmVsZWFzZSk7CisgCistCXRzdF9yZXMoVElORk8sICJsb29raW5nIGluICclcydcbiIsIHN5c3RlbW1hcCk7CisgCWFkZHIgPSBmaW5kX3N5bWJvbF9pbl9maWxlKHN5c3RlbW1hcCwgbmFtZSk7CisgCXJldHVybiBhZGRyOworIH0KK0BAIC0zMDgsNiArMzEyLDkgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKKyAJc2F2ZWRfY21kbGluZV9hZGRyID0gZmluZF9rZXJuZWxfc3ltYm9sKCJzYXZlZF9jb21tYW5kX2xpbmUiKTsKKyAJdHN0X3JlcyhUSU5GTywgIiZzYXZlZF9jb21tYW5kX2xpbmUgPT0gMHglbHgiLCBzYXZlZF9jbWRsaW5lX2FkZHIpOworIAorKwlpZiAoIXNhdmVkX2NtZGxpbmVfYWRkcikKKysJCXRzdF9icmsoVENPTkYsICJzYXZlZF9jb21tYW5kX2xpbmUgbm90IGZvdW5kIik7CisrCisgCXNwZWNfZmQgPSBTQUZFX09QRU4oIi9wcm9jL2NtZGxpbmUiLCBPX1JET05MWSk7CisgCisgCW1lbXNldCh0YXJnZXRfYXJyYXksIDEsIHNpemVvZih0YXJnZXRfYXJyYXkpKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXN5c2NhbGwtcnRfc2lndGltZWR3YWl0MDEtRml4LXdyb25nLXNpZ3NldC1sZW5ndGgtZm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbC1ydF9zaWd0aW1lZHdhaXQwMS1GaXgtd3Jvbmctc2lnc2V0LWxlbmd0aC1mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTU2YzA4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXN5c2NhbGwtcnRfc2lndGltZWR3YWl0MDEtRml4LXdyb25nLXNpZ3NldC1sZW5ndGgtZm8ucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBhNTA0NjYyNWVhZWVkMmQzZmJhNDU2YzNiYTg0YzZjMTQxYzJhZDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgQXVnIDIwMTkgMjE6MDk6NDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzY2FsbC9ydF9zaWd0aW1lZHdhaXQwMTogRml4IHdyb25nIHNpZ3NldCBsZW5ndGggZm9yIE1JUFMKKworcnRfc2lndGltZWR3YWl0MDEgZmFpbHMgYXMgZm9sbG93IG9uIE1JUFMgYXJjaGVzCitydF9zaWd0aW1lZHdhaXQwMSAgICAxICBURkFJTCAgOiAgLi4uL3NpZ3dhaXRpbmZvMDEuYzo1ODogdGVzdF9lbXB0eV9zZXQKKyguLi4vc2lnd2FpdGluZm8wMS5jOiAxNDgpOiBVbmV4cGVjdGVkIGZhaWx1cmU6CitURVNUX0VSUk5PPUVJTlZBTCgyMik6IEludmFsaWQgYXJndW1lbnQKKworQXMgdGhpcyBjYXNlIHB1cnBvc2VseSBieXBhc3NlcyBnbGliYywgaXQgc2hvdWxkIGFsaWduIHdpdGggdGhlIHNpemUgb2Yga2VybmVsCitkZWZpbml0aW9uIG9mIHNpZ3NldF90IHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIG90aGVyIGFyY2hlcy4KK2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oI24xNQorCitUaGlzIHBhdGNoIHR1cm5zIHRvIHVzZSBfTlNJRyB3aGljaCBpcyBhbHdheXMgcmlnaHQgZm9yIGFsbCBhcmNoZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2E1MDQ2NjI1ZWFlZWQyZDNmYmE0NTZjM2JhODRjNmMxNDFjMmFkN2NdCisKK1N1Z2dlc3RlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+CitBY2tlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+CitBY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+CitTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CistLS0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYyB8IDUgKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYworaW5kZXggNWEzMmNlMS4uNmEzMGMyNyAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYworQEAgLTEyOCw5ICsxMjgsOCBAQCBzdGF0aWMgaW50IG15X3NpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqIHNldCwgc2lnaW5mb190ICogaW5mbywKKyBzdGF0aWMgaW50IG15X3J0X3NpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqIHNldCwgc2lnaW5mb190ICogaW5mbywKKyAJCQkgICAgICBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVvdXQpCisgeworLQorLQkvKiBUaGUgbGFzdCBhcmd1bWVudCBpcyAobnVtYmVyX29mX3NpZ25hbHMpLyhiaXRzX3Blcl9ieXRlKSwgd2hpY2ggYXJlIDY0IGFuZCA4LCByZXNwLiAqLworLQlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9ydF9zaWd0aW1lZHdhaXQsIHNldCwgaW5mbywgdGltZW91dCwgOCk7CisrCS8qIF9OU0lHIGlzIGFsd2F5cyB0aGUgcmlnaHQgbnVtYmVyIG9mIGJpdHMgb2Ygc2lnbmFsIG1hcCBmb3IgYWxsIGFyY2hlcyAqLworKwlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9ydF9zaWd0aW1lZHdhaXQsIHNldCwgaW5mbywgdGltZW91dCwgX05TSUcvOCk7CisgfQorICNlbmRpZgorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS10ZXN0Y2FzZXMtdXNlLXB5dGhvbjMtZXZlcnl3aGVyZS10by1ydW4tcHl0aG9uLXNjcmlwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0Zjg3ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaApAQCAtMCwwICsxLDE2MSBAQAorRnJvbSAwNDYzZDc5MzU2Njc3MmE2MDYyNTU5NTc5MTVmOTlkMTY2ZDU3NDBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI4IEF1ZyAyMDE5IDE4OjMwOjIzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RjYXNlczogdXNlIHB5dGhvbjMgZXZlcnl3aGVyZSB0byBydW4gcHl0aG9uIHNjcmlwdHMKKworVGhlIHNjcmlwdHMgdGhlbXNlbHZlcyBoYXZlICMhL3Vzci9iaW4vcHl0aG9uMyBpbiB0aGVtLAorc28gSSB0cnVzdCB0aGV5IGFyZSBhbHJlYWR5IHB5My1jb21wYXRpYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaCAgfCAgMiArLQorIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2ggICAgIHwgIDIgKy0KKyAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoICAgICB8ICAyICstCisgLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaCAgICAgfCAgMiArLQorIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2ggICAgIHwgIDIgKy0KKyAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA1LnNoICAgICB8ICAyICstCisgdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QgICAgICAgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQorIHRlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL3J1bl9hdXRvLnNoICAgICAgIHwgIDYgKysrLS0tCisgOCBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0czA1LnNoCitpbmRleCA4YTdkMGY2ZTAuLjQzZTIzNGQwMSAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2gKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2gKK0BAIC0zNSw3ICszNSw3IEBAIGVsc2UKKyAJbWF4X3NjaGVkX3NtdD0xCisgZmkKKyAKKy10c3RfdGVzdF9jbWRzIHB5dGhvbgorK3RzdF90ZXN0X2NtZHMgcHl0aG9uMworIAorIGlmICEgZ3JlcCBzY2hlZF9kZWJ1ZyAtcXcgL3Byb2MvY21kbGluZSA7IHRoZW4KKyAJdHN0X2Jya20gVENPTkYgIktlcm5lbCBjbWRsaW5lIHBhcmFtZXRlciAnc2NoZWRfZGVidWcnIG5lZWRlZCwiIFwKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoCitpbmRleCBlYzc4MzE5ZTIuLjlmZWZjYmY2ZSAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaAorQEAgLTM1LDcgKzM1LDcgQEAgZWxzZQorIAltYXhfc2NoZWRfc210PTEKKyBmaQorIAorLXRzdF90ZXN0X2NtZHMgcHl0aG9uCisrdHN0X3Rlc3RfY21kcyBweXRob24zCisgCisgaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKKyBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaAoraW5kZXggZTEwN2ZjZTM1Li4yY2QwZWNiMDUgMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaAorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2gKK0BAIC0zMyw3ICszMyw3IEBAIGVsc2UKKyAJbWF4X3NjaGVkX3NtdD0xCisgZmkKKyAKKy10c3RfdGVzdF9jbWRzIHB5dGhvbgorK3RzdF90ZXN0X2NtZHMgcHl0aG9uMworIAorIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCisgbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2gKK2luZGV4IDQ5MDM0NGJiMy4uYWIzYTVkMTFkIDEwMDc1NQorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2gKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoCitAQCAtMzUsNyArMzUsNyBAQCBlbHNlCisgCW1heF9zY2hlZF9zbXQ9MQorIGZpCisgCistdHN0X3Rlc3RfY21kcyBweXRob24KKyt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKKyAKKyBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQorIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoCitpbmRleCA5NzhjYTAyYWUuLjQzOGVmNjAzZiAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaAorQEAgLTI3LDcgKzI3LDcgQEAgZXhwb3J0IFRTVF9UT1RBTD0yCisgIyBDaGVja2luZyB0ZXN0IGVudmlyb25tZW50CisgY2hlY2tfa2VydmVsX2FyY2gKKyAKKy10c3RfdGVzdF9jbWRzIHB5dGhvbgorK3RzdF90ZXN0X2NtZHMgcHl0aG9uMworIAorIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCisgbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA1LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2gKK2luZGV4IGEwZGFkNTgzNC4uM2E5YWZkYmYyIDEwMDc1NQorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2gKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA1LnNoCitAQCAtMzUsNyArMzUsNyBAQCBlbHNlCisgCW1heF9zY2hlZF9zbXQ9MQorIGZpCisgCistdHN0X3Rlc3RfY21kcyBweXRob24KKyt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKKyAKKyBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQorIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdCBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0CitpbmRleCBkMmUxYjRjNDkuLmE4NTllODViYyAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0CisrKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdAorQEAgLTIyLDcgKzIyLDcgQEAgZG8KKyBkb25lCisgCisgIyAgY3JlYXRpb24gb2YgdXNlcnMgb24gdGhlIHJlbW90ZSBtYWNoaW5lIChyZW1vdmVkIG9ubHkgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdHMpCistcnNoIC1uICRSRU1PVEVIT1NUIHB5dGhvbiAkUFdEL2NyZWF0ZV91c2Vycy5weSAtdSA1MCAtZyA1MAorK3JzaCAtbiAkUkVNT1RFSE9TVCBweXRob24zICRQV0QvY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCisgCisgZWNobyAiU3RhcnRpbmcgQUNMIHRlc3RpbmciCisgCitAQCAtNTEsMTkgKzUxLDE5IEBAIGVjaG8gIkJhc2ljIHRlc3RzIGZpbmlzaGVkIgorIAorIGVjaG8gIkxPTkcgQUNMIFRFU1QiCisgZWNobyAiY3JlYXRpbmcgbmVjZXNzYXJ5IHVzZXJzIGFuZCBncm91cHMiCistcHl0aG9uIGNyZWF0ZV91c2Vycy5weSAtdSA1MCAtZyA1MAorK3B5dGhvbjMgY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCisgZWNobyAiY3JlYXRpbmcgbmVjZXNzYXJ5IHVzZXJzIGFuZCBncm91cHMgb24gdGhlIHJlbW90ZSBob3N0IgorIG1rZGlyICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCistcHl0aG9uIHRlc3RfbG9uZ19hY2wucHkgLWwgJE1BWExFTkdUSCAtcCAkTkZTTU5URElSL2xhY2wtdGVzdGRpcgorK3B5dGhvbjMgdGVzdF9sb25nX2FjbC5weSAtbCAkTUFYTEVOR1RIIC1wICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCisgcm0gLXJmICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCisgZWNobyAiTG9uZyBBQ0wgdGVzdCBPSyB3aXRoICRNQVhMRU5HVEggZW50cmllcyIKKyBlY2hvICJBQ0wgU1RSRVNTSU5HIFRFU1QiCistcHl0aG9uIHNldGFjbF9zdHJlc3MucHkgLW4gMTAwIC11ICRVU0VSX05CIC1nICRHUlBfTkIgLWYgJEZJTEVfTkIgLXAgJE5GU01OVERJUgorK3B5dGhvbjMgc2V0YWNsX3N0cmVzcy5weSAtbiAxMDAgLXUgJFVTRVJfTkIgLWcgJEdSUF9OQiAtZiAkRklMRV9OQiAtcCAkTkZTTU5URElSCisgCisgIyByZW1vdmUgbG9jYWwgYW4gcmVtb3RlIHVzZXJzCistcHl0aG9uIGNsZWFudXNlcnMucHkKKy1weXRob24gY2xlYW5ncm91cHMucHkKKy1yc2ggLW4gJFJFTU9URUhPU1QgcHl0aG9uICRQV0QvY2xlYW51c2Vycy5weQorK3B5dGhvbjMgY2xlYW51c2Vycy5weQorK3B5dGhvbjMgY2xlYW5ncm91cHMucHkKKytyc2ggLW4gJFJFTU9URUhPU1QgcHl0aG9uMyAkUFdEL2NsZWFudXNlcnMucHkKKyAKKyBlY2hvICJUZXN0IE9LIgorIAorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL3J1bl9hdXRvLnNoIGIvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2gKK2luZGV4IGQxMzAyNjA0OS4uMjc3OTg4NTY4IDEwMDc1NQorLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2gKKysrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL3J1bl9hdXRvLnNoCitAQCAtMTUsMTUgKzE1LDE1IEBAICRTQ1JJUFRTX0RJUi9ydW5fY19maWxlcy5zaCAkcHJvZmlsZSB0ZXN0cGktMAorIAorIGV4cG9ydCBMT0dfRklMRT0iJExPR19ESVIvJExPR19GT1JNQVQtdGVzdHBpLTEubG9nIgorICRTQ1JJUFRTX0RJUi9ydW5fY19maWxlcy5zaCAkcHJvZmlsZSB0ZXN0cGktMQorLVBZVEhPTlBBVEg9Li4vLi4vICBweXRob24gcGFyc2UtdGVzdHBpMS5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKKytQWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uMyBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQorIAorIGV4cG9ydCBMT0dfRklMRT0iJExPR19ESVIvJExPR19GT1JNQVQtdGVzdHBpLTIubG9nIgorICRTQ1JJUFRTX0RJUi9ydW5fY19maWxlcy5zaCAkcHJvZmlsZSB0ZXN0cGktMgorLVBZVEhPTlBBVEg9Li4vLi4vICBweXRob24gcGFyc2UtdGVzdHBpMi5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKKytQWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uMyBwYXJzZS10ZXN0cGkyLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQorIAorIGV4cG9ydCBMT0dfRklMRT0iJExPR19ESVIvJExPR19GT1JNQVQtdGVzdHBpLTQubG9nIgorICRTQ1JJUFRTX0RJUi9ydW5fY19maWxlcy5zaCAkcHJvZmlsZSB0ZXN0cGktNAorLVBZVEhPTlBBVEg9Li4vLi4vICBweXRob24gcGFyc2UtdGVzdHBpMS5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKKytQWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uMyBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQorIAorIAorIGV4cG9ydCBMT0dfRklMRT0iIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE5MDUxNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxOTA1MTcuYmIKaW5kZXggYjBlMmY5Ni4uZTlhNTg4ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE5MDUxNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTkwNTE3LmJiCkBAIC00NSw2ICs0NSw5IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNoZWNrLWZvci1SRVNfVVNFX0lORVQ2LWR1cmluZy1jb25maWd1cmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNjYWxscy10Z2tpbGwwMy13YWl0LWZvci1kZWZ1bmN0LXRpZC10by1nZXQtZGV0YWNoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXN0YXQwMi1GaXgtRUZBVUxULWluLTMyYml0LWNvbXBhdGliaWxpdHktbW9kZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWN2ZS1tZWx0ZG93bi5jLUZpeC1rZXJuZWwtc3ltYm9sLWZpbmRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0Y2FzZXMtdXNlLXB5dGhvbjMtZXZlcnl3aGVyZS10by1ydW4tcHl0aG9uLXNjcmlwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzY2FsbC1ydF9zaWd0aW1lZHdhaXQwMS1GaXgtd3Jvbmctc2lnc2V0LWxlbmd0aC1mby5wYXRjaCBcCiAgICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTk2LDcgKzk5LDcgQEAKICAgICBsaWJhaW8gXAogICAgIGxvZ3JvdGF0ZSBcCiAgICAgcGVybCBcCi0gICAgcHl0aG9uLWNvcmUgXAorICAgIHB5dGhvbjMtY29yZSBcCiAgICAgcHJvY3BzIFwKICAgICBxdW90YSBcCiAgICAgdW56aXAgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNy5iYgpzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOC42LjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjcuYmIKaW5kZXggZWM5ZWI4My4uMDgzYjIzNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNi4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjcuYmIKQEAgLTcsOCArNyw4IEBACiBTUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vbWFuLWRiL21hbi1kYi0ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vOTlfbWFuZGIgXAogICAgICAgICAgICBmaWxlOi8vbWFuX2RiLmNvbmYtYXZvaWQtbXVsdGlsaWItaW5zdGFsbC1maWxlLWNvbmZsaWN0LnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjIyZTgyZmUxMTI3ZjRjYTk1ZGU3MTAwMTY4YTkyN2QxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjNzdhMmJiOWRiZjA2ZjcyNDE3YTZmNjMwNjNlMjA0ODg4YTIyYTUwMjBmZjc3MzM0ZDMwNGQ1NWY4MTNhMjgiCitTUkNfVVJJW21kNXN1bV0gPSAiZWMwYjIzYzgzMTRhMTY1NGM0ZDA1OWIyYzE4Y2U0M2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjljZDViYjk5NjMwNWQwOGJmZTllMTExNGVkYzMwYjRjOTdiZTgwNzA5M2I4OGFmODAzM2VkMWNmOWJlYjMyNiIKIAogREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKIFJERVBFTkRTXyR7UE59ICs9ICJiYXNlLXBhc3N3ZCIKQEAgLTE4LDcgKzE4LDcgQEAKIAogaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZAogCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MiCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCiBFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dsL200IgogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1tZGFkbS1za2lwLXRlc3QtMTFzcGFyZS1taWdyYXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLW1kYWRtLXNraXAtdGVzdC0xMXNwYXJlLW1pZ3JhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTE5MmNjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1tZGFkbS1za2lwLXRlc3QtMTFzcGFyZS1taWdyYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSAxYjgzYWZhN2MzMTIxZjgxOWU3MmVhNzQ4ODNmOGI2ZDYxZDY1NDhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNiBTZXAgMjAxOSAxMDo1OTowMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBtZGFkbTogc2tpcCB0ZXN0IDExc3BhcmUtbWlncmF0aW9uCisKKzExc3BhcmUtbWlncmF0aW9uIGlzIGEgdGVzdCBzZXJpZXMgdG8gY2hlY2sgbWRhZG0gTW9uaXRvciBtaWdyYXRlcyBzcGFyZXMKK2FjY29yZGluZyB0byBydWxlcyBpbiAvZXRjL21kYWRtLmNvbmYgZGVmaW5lZCBieSBQT0xJQ1kgbGluZXMuCisKK1tzbmlwXQorZm9yIHNjYW4gaW4gbm8geWVzOyBkbworICAgICAgIGZvciBwbGF0Zm9ybSBpbiAxLjIgaW1zbTsgZG8KKyAgICAgICAgICAgICAgIHRyeQorICAgICAgIGRvbmUKK2RvbmUKK1tzbmlwXQorCisidHJ5IiBpbmNsdWRlcyBuZWFyIDIwIHN1YiB0ZXN0Y2FzZSwgc28gdGhlcmUgYXJlIG5lYXJseSA4MCBzdWJjYXNlcyBuZWVkIHRvIHJ1biwKK3NvIGl0IHdpbGwgdGFrZSBsb25nIHRpbWUgdGhhbiBwdGVzdC1ydW5uZXIgdGltZW91dCBsaW1pdCwgc2tpcCBpdCBhcyB3b3JrYXJvdW5kLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2Utc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0IHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90ZXN0IGIvdGVzdAoraW5kZXggNzExYTNjNy4uODgwZGQxZCAxMDA3NTUKKy0tLSBhL3Rlc3QKKysrKyBiL3Rlc3QKK0BAIC0yNzIsNiArMjcyLDkgQEAgbWFpbigpIHsKKyAJZWxzZQorIAkJZm9yIHNjcmlwdCBpbiAkdGVzdGRpci8kcHJlZml4ICR0ZXN0ZGlyLyRwcmVmaXgqW15+XQorIAkJZG8KKysJCQlpZiBbICRzY3JpcHQgPT0gIiR0ZXN0ZGlyLzExc3BhcmUtbWlncmF0aW9uIiBdO3RoZW4KKysJCQkJY29udGludWUKKysJCQlmaQorIAkJCWRvX3Rlc3QgJHNjcmlwdAorIAkJZG9uZQorIAlmaQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjEuYmIKaW5kZXggNzRjOTRmNi4uNjM5MzgyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMS5iYgpAQCAtMjIsNyArMjIsOSBAQAogCSAgIGZpbGU6Ly9tZGFkbS5pbml0IFwKIAkgICBmaWxlOi8vMDAwMS1tZGFkbS1hZGQtb3B0aW9uLXktZm9yLXVzZS1zeXNsb2ctdG8tcmVjaXZlLWV2ZW50LXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfc3lzbWFjcm9zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWRhZG0tc2tpcC10ZXN0LTExc3BhcmUtbWlncmF0aW9uLnBhdGNoIFwKICAgICAgICAgICAgIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiNTFiZjM2NTFiZDczYTA2YzQxM2EyZjk2NGYyOTk1OTgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWI3Njg4ODQyOTA4ZDM1ODNhNzA0ZDQ5MTk1NmYzMTMyNGMzYTVmYzlmNmEwNDY1M2NiNzVkMTlmMTkzNGY0YSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgyMWZkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0MCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoQykgMjAxMCBJbnRlbCBDb3Jwb3JhdGlvbgotIwotCi1TVU1NQVJZID0gIkxpbnV4IFN0YW5kYXJkIEJhc2UgKExTQikiCi1ERVNDUklQVElPTiA9ICJQYWNrYWdlcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlIChMU0IpIHNwZWNpZmljYXRpb24iCi1QUiA9ICJyMTAiCi0KLWluaGVyaXQgcGFja2FnZWdyb3VwIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIFRoZSBsaWJ4dCwgbGlieHRzdCBhbmQgb3RoZXJzIHJlcXVpcmUgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotIyBsaWJnbHUgbmVlZHMgdmlydHVhbC9saWJnbCwgd2hpY2ggcmVxdWlyZXMgb3BlbmdsIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJvcGVuZ2wiCi0KLSMgbGlicGFtLCBwYW0tcGx1Z2luLXdoZWVsIHJlcXVpcmVzIHBhbSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAicGFtIgotCi0jCi0jIFdlIHdpbGwgc2tpcCBwYXJzaW5nIHRoaXMgcGFja2FnZWdlb3VwIGZvciBub24tZ2xpYmMgc3lzdGVtcwotIwotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBpZiBkLmdldFZhcignVENMSUJDJykgIT0gImdsaWJjIjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggJXMgQyBsaWJyYXJ5IiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdUQ0xJQkMnKSkKLX0KLQotUEFDS0FHRVMgPSAiXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYiBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtc3lzLWV4dGVuZGVkIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1kYiBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtcGVybCBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtcHl0aG9uIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS10Y2wgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1taXNjIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItY29yZSBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLXBlcmwgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1weXRob24gXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1kZXNrdG9wIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItcnVudGltZS1hZGQgXAotICAgICIKLQotCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2IgPSAiXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXN5cy1leHRlbmRlZCBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtZGIgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXBlcmwgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXB5dGhvbiBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtdGNsIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItbWlzYyBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLWNvcmUgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1wZXJsIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItcHl0aG9uIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItZGVza3RvcCBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLXJ1bnRpbWUtYWRkIFwKLSAgICAiCi0KLQotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtc3lzLWV4dGVuZGVkID0gIlwKLSAgICBjdXJsIFwKLSAgICBkaGNwLWNsaWVudCBcCi0gICAgaGRwYXJtIFwKLSAgICBsaWdodHRwZCBcCi0gICAgbGliYWlvIFwKLSAgICBscnpzeiBcCi0gICAgbHpvIFwKLSAgICBtYyBcCi0gICAgbWMtZmlzaCBcCi0gICAgbWMtaGVscGVycyBcCi0gICAgbWMtaGVscGVycy1wZXJsIFwKLSAgICBtZGFkbSBcCi0gICAgbWluaWNvbSBcCi0gICAgcGFydGVkIFwKLSAgICBxdW90YSBcCi0gICAgc2NyZWVuIFwKLSAgICBzZXRzZXJpYWwgXAotICAgIHN5c3N0YXQgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAndWRldi1leHRyYWNvbmYnLCBkKX0gXAotICAgIHVuemlwIFwKLSAgICB3YXRjaGRvZyBcCi0gICAgd2dldCBcCi0gICAgd2hpY2ggXAotICAgIHhpbmV0ZCBcCi0gICAgemlwIFwKLSAgICAiCi0KLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWRiID0gIlwKLSAgICBkYiBcCi0gICAgc3FsaXRlMyBcCi0gICAgIgotCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1wZXJsID0gIlwKLSAgICBnZGJtIFwKLSAgICBwZXJsIFwKLSAgICB6bGliIFwKLSAgICAiCi0KLQotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtcHl0aG9uID0gIlwKLSAgICBleHBhdCBcCi0gICAgZ2RibSBcCi0gICAgZ21wIFwKLSAgICBuY3Vyc2VzIFwKLSAgICBvcGVuc3NsIFwKLSAgICBweXRob24gXAotICAgIHJlYWRsaW5lIFwKLSAgICB6aXAgXAotICAgICIKLQotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtdGNsID0gIlwKLSAgICB0Y2wgXAotICAgICIKLQotIyBNaXNjZWxsYW5lb3VzIHBhY2thZ2VzIHJlcXVpcmVkIGJ5IExTQiAob3IgTFNCIHRlc3RzKQotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiLW1pc2MgPSAiXAotICAgIGNoa2NvbmZpZyBcCi0gICAgZ2V0dGV4dCBcCi0gICAgZ2V0dGV4dC1ydW50aW1lIFwKLSAgICBncm9mZiBcCi0gICAgbHNiaW5pdHNjcmlwdHMgXAotICAgIGxzYnRlc3QgXAotICAgIGxzb2YgXAotICAgIHN0cmFjZSBcCi0gICAgbGlidXNiMSBcCi0gICAgdXNidXRpbHMgXAotICAgIHJwbSBcCi0gICAgIgotCi1TVU1NQVJZX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1jb3JlID0gIkxTQiBDb3JlIgotREVTQ1JJUFRJT05fcGFja2FnZWdyb3VwLWNvcmUtbHNiLWNvcmUgPSAiUGFja2FnZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBjb21tYW5kcy9saWJyYXJpZXMgXAotICAgIHNwZWNpZmllZCBpbiB0aGUgTFNCIENvcmUgc3BlY2lmaWNhdGlvbiIKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1jb3JlID0gIlwKLSAgICBhdCBcCi0gICAgYmFzaCBcCi0gICAgYmMgXAotICAgIGJpbnV0aWxzIFwKLSAgICBiaW51dGlscy1zeW1saW5rcyBcCi0gICAgYnppcDIgXAotICAgIGNvcmV1dGlscyBcCi0gICAgY3BpbyBcCi0gICAgY3JvbmllIFwKLSAgICBjdXBzIFwKLSAgICBkaWZmdXRpbHMgXAotICAgIGVkIFwKLSAgICBnbGliYy11dGlscyBcCi0gICAgZWxmdXRpbHMgXAotICAgIGZpbGUgXAotICAgIGZpbmR1dGlscyBcCi0gICAgZm9udGNvbmZpZy11dGlscyBcCi0gICAgZm9vbWF0aWMtZmlsdGVycyBcCi0gICAgZ2F3ayBcCi0gICAgZ2hvc3RzY3JpcHQgXAotICAgIGdyZXAgXAotICAgIGd6aXAgXAotICAgIGxvY2FsZWRlZiBcCi0gICAgbHNiIFwKLSAgICBtNCBcCi0gICAgbWFrZSBcCi0gICAgbWFuIFwKLSAgICBtYW4tcGFnZXMgXAotICAgIG1zbXRwIFwKLSAgICBwYXRjaCBcCi0gICAgcHJvY3BzIFwKLSAgICBwc21pc2MgXAotICAgIHNlZCBcCi0gICAgc2hhZG93IFwKLSAgICB0YXIgXAotICAgIHRpbWUgXAotICAgIHV0aWwtbGludXggXAotICAgIHhkZy11dGlscyBcCi0gICAgXAotICAgIGdsaWJjIFwKLSAgICBsaWJnY2MgXAotICAgIGxpYnBhbSBcCi0gICAgbGlieG1sMiBcCi0gICAgbmN1cnNlcyBcCi0gICAgemxpYiBcCi0gICAgbnNwciBcCi0gICAgbnNzIFwKLSIKLQotU1VNTUFSWV9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcGVybCA9ICJMU0IgUnVudGltZSBMYW5ndWFnZXMgKFBlcmwpIgotREVTQ1JJUFRJT05fcGFja2FnZWdyb3VwLWNvcmUtbHNiLXBlcmwgPSAiUGFja2FnZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBsaWJyYXJpZXMgXAotICAgIHNwZWNpZmllZCBpbiB0aGUgTFNCIFJ1bnRpbWUgbGFuZ3VhZ2VzIHNwZWNpZmljYXRpb24gKFBlcmwgcGFydHMpIgotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiLXBlcmwgPSAiXAotICAgIHBlcmwgXAotICAgIHBlcmwtbW9kdWxlcyBcCi0gICAgcGVybC1taXNjIFwKLSAgICBwZXJsLXBvZCBcCi0gICAgcGVybC1kZXYgXAotICAgIHBlcmwtZG9jIFwKLSIKLQotU1VNTUFSWV9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcHl0aG9uID0gIkxTQiBSdW50aW1lIExhbmd1YWdlcyAoUHl0aG9uKSIKLURFU0NSSVBUSU9OX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1weXRob24gPSAiUGFja2FnZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBsaWJyYXJpZXMgXAotICAgIHNwZWNpZmllZCBpbiB0aGUgTFNCIFJ1bnRpbWUgbGFuZ3VhZ2VzIHNwZWNpZmljYXRpb24gKFB5dGhvbiBwYXJ0cykiCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcHl0aG9uID0gIlwKLSAgICBweXRob24gXAotICAgIHB5dGhvbi1tb2R1bGVzIFwKLSAgICBweXRob24tbWlzYyBcCi0iCi0KLVNVTU1BUllfcGFja2FnZWdyb3VwLWNvcmUtbHNiLWRlc2t0b3AgPSAiTFNCIERlc2t0b3AiCi1ERVNDUklQVElPTl9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItZGVza3RvcCA9ICJQYWNrYWdlcyByZXF1aXJlZCB0byBzdXBwb3J0IGxpYnJhcmllcyBcCi0gICAgc3BlY2lmaWVkIGluIHRoZSBMU0IgRGVza3RvcCBzcGVjaWZpY2F0aW9uIgotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiLWRlc2t0b3AgPSAiXAotICAgIGxpYnh0IFwKLSAgICBsaWJ4eGY4NnZtIFwKLSAgICBsaWJkcm0gXAotICAgIGxpYmdsdSBcCi0gICAgbGlieGkgXAotICAgIGxpYnh0c3QgXAotICAgIGxpYngxMS1sb2NhbGUgXAotICAgIHhvcmctbWluaW1hbC1mb250cyBcCi0gICAgZ2RrLXBpeGJ1Zi1sb2FkZXItaWNvIFwKLSAgICBnZGstcGl4YnVmLWxvYWRlci1ibXAgXAotICAgIGdkay1waXhidWYtbG9hZGVyLWFuaSBcCi0gICAgZ2RrLXBpeGJ1Zi14bGliIFwKLSAgICBsaWJlcmF0aW9uLWZvbnRzIFwKLSAgICBhbHNhLWxpYiBcCi0iCi0KLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1ydW50aW1lLWFkZCA9ICJcCi0gICAgbGRkIFwKLSAgICBwYW0tcGx1Z2luLXdoZWVsIFwKLSAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKLSAgICBta2ZvbnRkaXIgXAotICAgIGxpYnVyaS1wZXJsIFwKLSAgICBsaWJ4bWwtcGFyc2VyLXBlcmwgXAotICAgIGxpYnhtbC1wZXJsIFwKLSAgICBsaWJ4bWwtc2F4LXBlcmwgXAotICAgIGdsaWJjLWxvY2FsZWRhdGFzIFwKLSAgICBnbGliYy1nY29udnMgXAotICAgIGdsaWJjLWNoYXJtYXBzIFwKLSAgICBnbGliYy1iaW5hcmllcyBcCi0gICAgZ2xpYmMtbG9jYWxlZGF0YS1wb3NpeCBcCi0gICAgZ2xpYmMtZXh0cmEtbnNzIFwKLSAgICBnbGliYy1wY3Byb2ZpbGUgXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKaW5kZXggNTkyY2JmNC4uNWE3ZDIxMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCkBAIC00LDcgKzQsNyBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3BhZ2VzcGVyc28tb3JhbmdlLmZyL3NlYmFzdGllbi5nb2RhcmQvc3lzc3RhdC0ke1BWfS50YXIueHogXAorU1JDX1VSSSA9ICJodHRwOi8vcGFnZXNwZXJzby1vcmFuZ2UuZnIvc2ViYXN0aWVuLmdvZGFyZC8ke0JQfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vOTlfc3lzc3RhdCBcCiAgICAgICAgICAgIGZpbGU6Ly9zeXNzdGF0LnNlcnZpY2UgXAogICAgICAgICAgICIKQEAgLTI5LDcgKzI5LDcgQEAKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgc2FfbGliX2Rpcj0ke2xpYmRpcn0vc2EKKyAgICBleHBvcnQgc2FfbGliX2Rpcj0ke2xpYmV4ZWNkaXJ9L3NhCiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRhZjNmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHN5c3N0YXQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZjliNzNmNjBhYmE2ZmQ0OWRlMzQ2YmMzODQ5MDJjMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NTQ5OGJmODI3NTViYTlmZWQzZTdkZjYxZmQyNmY4ZjUwZGQzZTdiM2IyMjljNzMxMDI5YTRjOGFiNTFhMWFhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjEuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNmOGMzNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIHN5c3N0YXQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOGUzYmJiOWM4NzNkZDM3MGY2ZDMzNjY0ZTMyNjU3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNzUyZjNjNDA2MTUzYTZmYzQ0NjQ5NmYxMTAyODcyNTA1YWNlM2YwOTMxZDk3NWMxZDY2NGM4MWVjMDlmMTI5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjUuYmIKaW5kZXggZjk2NjQ1Ny4uNTBlYWU3NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCkBAIC00Miw3ICs0Miw5IEBACiAKIHRleF90ZXhpbmZvID0gInRleG1mL3RleC90ZXhpbmZvIgogCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS90ZXhpMmFueSIKIAogRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9nbnVsaWIvbTQiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE5LjAuYmIKc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE4LjguYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4wLmJiCmluZGV4IDRhZjQ3ZmUuLjdkYThlOTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC44LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4wLmJiCkBAIC04LDggKzgsOCBAQAogCiBQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywgLS1kaXNhYmxlLW1hbnBhZ2VzLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCiAKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImZlZTQwMzk4ODQ0MmY0OTdmM2MxZGZlN2IxMjg4NjljIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2JmYTg4OWQyNjBlMGRiYWJjZjViOTk2N2YyYWFlMTJlZGNkMmRkYzlhZGMzNjVkZTdhNWNjODQwYzMxMWQxNSIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjQ4M2QyOTNlNzNlNzI1N2M2ZDlmYzE4NTc5YjBlMWVhIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiODA0OWIwOWE0ZTczNzkxMWFhNjQ3ZTUwYWVlM2QwNmI1ZGI3YWE5MDI2MDhjYTQzYTBkZDEwZDgzZTFkNjdmOSIKIAogIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAyMjgvCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby1mYl8xLjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby1mYl8xLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NjZGQyMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8tZmJfMS4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLUVHTElORk9fUExBVEZPUk0gPz0gImZiIgotRUdMSU5GT19CSU5BUllfTkFNRSA/PSAiZWdsaW5mby1mYiIKLQotcmVxdWlyZSBlZ2xpbmZvLmluYwotCi1TVU1NQVJZICs9ICIoRnJhbWVidWZmZXIgdmVyc2lvbikiCi1DWFhGTEFHUyArPSAiLURNRVNBX0VHTF9OT19YMTFfSEVBREVSUz0xIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLXdheWxhbmRfMS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8td2F5bGFuZF8xLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdhMTMxYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8td2F5bGFuZF8xLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUVHTElORk9fUExBVEZPUk0gPz0gIndheWxhbmQiCi1FR0xJTkZPX0JJTkFSWV9OQU1FID89ICJlZ2xpbmZvLXdheWxhbmQiCi0KLXJlcXVpcmUgZWdsaW5mby5pbmMKLQotREVQRU5EUyArPSAid2F5bGFuZCIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBkZXBlbmRzIG9uIHdheWxhbmQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAid2F5bGFuZCIKLQotU1VNTUFSWSArPSAiKFdheWxhbmQgdmVyc2lvbikiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8teDExXzEuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLXgxMV8xLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhhYjg4MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8teDExXzEuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotRUdMSU5GT19QTEFURk9STSA/PSAieDExIgotRUdMSU5GT19CSU5BUllfTkFNRSA/PSAiZWdsaW5mby14MTEiCi0KLXJlcXVpcmUgZWdsaW5mby5pbmMKLQotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJ4MTEiCi0KLVNVTU1BUlkgKz0gIihYMTEgdmVyc2lvbikiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRjYjBjNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXR5IGZvciBwcmludGluZyBpbmZvcm1hdGlvbiBFR0wgYW5kIGl0cyBjbGllbnQgQVBJcyAoT3BlbkdMLCBPcGVuR0wgRVMsIE9wZW5WRykiCi1TRUNUSU9OID0gImdyYXBoaWNzIgotTElDRU5TRSA9ICJabGliIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2R2MS9lZ2xpbmZvIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGQ0ZjMzYmMzYWRkOTc2ZjdkZmFlODVkYWI2NmYwM2MiCi0KLURFUEVORFMgPSAidmlydHVhbC9lZ2wiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9kdjEvZWdsaW5mby5naXQ7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly93YWYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtU1RBR0lOR19JTkNESVItdG8tc2VhcmNocGF0aC1mb3ItZWdsLWhlYWRlcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItbGliZWdsLXVzaW5nLXBrZy1jb25maWcucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiMjIzODE3ZWUzNzk4ODA0MmRiNzg3M2NmYjViMmU4OTlkZmUzNWMxMCIKLQotQ1ZFX1BST0RVQ1QgPSAiZWdsaW5mbyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCB3YWYgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHBrZ2NvbmZpZwotIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPz0gIm9wZW5nbCIKLQotIyBCU1AgbGF5ZXJzIHNob3VsZCBhZGQgLmJiYXBwZW5kIGZpbGVzIGZvciB0aGUgLXgxMSBhbmQgLWZiIC5iYiByZWNpcGVzLCB3aGljaAotIyBhcHBlbmQgdGhlIHJlc3BlY3RpdmUgRUdML09wZW5HTEVTL09wZW5WRyBsaWJyYXJpZXMgdG8gREVQRU5EUyBhbmQgc2V0Ci0jIEVHTF9ERVZJQ0UgYXMgYXBwcm9wcmlhdGUuCi1FR0xJTkZPX0RFVklDRSA/PSAiZ2VuZXJpYyIKLQotRVhUUkFfT0VDT05GID0gIi0tcGxhdGZvcm09JHtFR0xJTkZPX1BMQVRGT1JNfSBcCi0gICAgICAgICAgICAgICAgLS1kZXZpY2U9JHtFR0xJTkZPX0RFVklDRX0gXAotICAgICAgICAgICAgICAgIC0tc3lzcm9vdCAke1NUQUdJTkdfRElSX1RBUkdFVH0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3dhZiAke1N9L3dhZgotfQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbXYgJHtEfS8ke2JpbmRpcn0vZWdsaW5mbyAke0R9LyR7YmluZGlyfS8ke0VHTElORk9fQklOQVJZX05BTUV9Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2ZpbGVzLzAwMDEtQWRkLVNUQUdJTkdfSU5DRElSLXRvLXNlYXJjaHBhdGgtZm9yLWVnbC1oZWFkZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy8wMDAxLUFkZC1TVEFHSU5HX0lOQ0RJUi10by1zZWFyY2hwYXRoLWZvci1lZ2wtaGVhZGVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjEzMjdlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2ZpbGVzLzAwMDEtQWRkLVNUQUdJTkdfSU5DRElSLXRvLXNlYXJjaHBhdGgtZm9yLWVnbC1oZWFkZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA5OWE1Nzg0ZDMzYWQ1ZTBlNmZhMDAzMzhkMjczMmNiY2NhZDc2NjFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTMgSmFuIDIwMTYgMTY6MDg6MjIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIFNUQUdJTkdfSU5DRElSIHRvIHNlYXJjaHBhdGggZm9yIGVnbCBoZWFkZXJzCi0KLWJjbV9ob3N0LmggaXMgaW4gc3RhbmRhcmQgaW5jbHVkZWRpciBpbiBzeXNyb290Ci1hZGQgdGhhdCB0byBoZWFkZXIgc2VhcmNoIHBhdGhzLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gd3NjcmlwdCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKLWluZGV4IDE5NWUyNDcuLjBmNmVjNTMgMTAwNjQ0Ci0tLS0gYS93c2NyaXB0Ci0rKysgYi93c2NyaXB0Ci1AQCAtMTc3LDkgKzE3NywxMCBAQCBkZWYgY29uZmlndXJlX3Jhc3BiZXJyeXBpX2RldmljZShjb25mLCBwbGF0Zm9ybSk6Ci0gCWNvbmYuY2hlY2tfY3h4KG1hbmRhdG9yeSA9IDEsIGxpYiA9IFsnR0xFU3YyJywgJ0VHTCcsICdiY21faG9zdCddLCB1c2VsaWJfc3RvcmUgPSAnRUdMJykKLSAJaW1wb3J0IG9zCi0gCXN5c3Jvb3QgPSBjb25mLm9wdGlvbnMuc3lzcm9vdCArIGNvbmYub3B0aW9ucy5wcmVmaXgKLSsgICAgICAgIHN0ZF9pbmNsdWRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgJ2luY2x1ZGUnKQotIAl2Y29zX3B0aHJlYWRfcGF0aCA9IG9zLnBhdGguam9pbihzeXNyb290LCAnaW5jbHVkZS9pbnRlcmZhY2UvdmNvcy9wdGhyZWFkcycpCi0gCXZjbXNfaG9zdF9wYXRoID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsICdpbmNsdWRlL2ludGVyZmFjZS92bWNzX2hvc3QvbGludXgnKQotLQlpZiBub3QgY29uZi5jaGVja19jeHgobWFuZGF0b3J5ID0gMCwgaGVhZGVyX25hbWUgPSBbJ3Zjb3NfcGxhdGZvcm1fdHlwZXMuaCcsICdFR0wvZWdsLmgnLCAnYmNtX2hvc3QuaCddLCBpbmNsdWRlcyA9IFt2Y29zX3B0aHJlYWRfcGF0aCwgdmNtc19ob3N0X3BhdGhdLCB1c2VsaWJfc3RvcmUgPSAnRUdMJyk6Ci0rCWlmIG5vdCBjb25mLmNoZWNrX2N4eChtYW5kYXRvcnkgPSAwLCBoZWFkZXJfbmFtZSA9IFsndmNvc19wbGF0Zm9ybV90eXBlcy5oJywgJ0VHTC9lZ2wuaCcsICdiY21faG9zdC5oJ10sIGluY2x1ZGVzID0gW3Zjb3NfcHRocmVhZF9wYXRoLCB2Y21zX2hvc3RfcGF0aCwgc3RkX2luY2x1ZGVfcGF0aF0sIHVzZWxpYl9zdG9yZSA9ICdFR0wnKToKLSAJCWNvbmYuZmF0YWwoJ0NoZWNrIGlmIC0tcHJlZml4IGFuZCAtLXN5c3Jvb3QgYXJlIHNldCBjb3JyZWN0bHkuJykKLSAJY29uZi5lbnZbJ1dJVEhfQVBJUyddID0gW10KLSAJaWYgY2hlY2tfZ2xlczIoY29uZik6Ci0tLSAKLTIuMTkuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy8wMDAxLUNoZWNrLWZvci1saWJlZ2wtdXNpbmctcGtnLWNvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvMDAwMS1DaGVjay1mb3ItbGliZWdsLXVzaW5nLXBrZy1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MmM4MDEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy8wMDAxLUNoZWNrLWZvci1saWJlZ2wtdXNpbmctcGtnLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gMTdmNWQyZjU3NDIzNmY4YzM0NTlmOWVmYWRlZjJmMGY2MjIwYTRkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEF1ZyAyMDE4IDE1OjQ2OjUzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGZvciBsaWJlZ2wgdXNpbmcgcGtnLWNvbmZpZwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1bUm9tYW46IHBhdGNoIGhhcyBiZWVuIHJlYmFzZWQgdG8gMjIzODE3ZWUzNzk4ICgiQWRkIFdheWxhbmQgc3VwcG9ydCIpCi0gdHJpdmlhbCBtZXJnZSBjb25mbGljdHMgcmVzb2x2ZWRdCi1TaWduZWQtb2ZmLWJ5OiBSb21hbiBTdHJhdGlpZW5rbyA8cm9tYW4uc3RyYXRpaWVua29AZ2xvYmFsbG9naWMuY29tPgotLS0tCi0gd3NjcmlwdCB8IDcgKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0Ci1pbmRleCAwZjZlYzUzLi40MDFmNjJlIDEwMDY0NAotLS0tIGEvd3NjcmlwdAotKysrIGIvd3NjcmlwdAotQEAgLTE3NCwxNCArMTc0LDkgQEAgZGVmIGNvbmZpZ3VyZV9yYXNwYmVycnlwaV9kZXZpY2UoY29uZiwgcGxhdGZvcm0pOgotIAllbHNlOgotIAkJY29uZi5mYXRhbCgnVW5zdXBwb3J0ZWQgUmFzcGJlcnJ5IFBpIHBsYXRmb3JtICIlcyInICUgcGxhdGZvcm0pCi0gCQlyZXR1cm4KLS0JY29uZi5jaGVja19jeHgobWFuZGF0b3J5ID0gMSwgbGliID0gWydHTEVTdjInLCAnRUdMJywgJ2JjbV9ob3N0J10sIHVzZWxpYl9zdG9yZSA9ICdFR0wnKQotKwljb25mLmNoZWNrX2NmZyhwYWNrYWdlPSdlZ2wnLCBhcmdzPSctLWxpYnMgLS1jZmxhZ3MnKQotIAlpbXBvcnQgb3MKLSAJc3lzcm9vdCA9IGNvbmYub3B0aW9ucy5zeXNyb290ICsgY29uZi5vcHRpb25zLnByZWZpeAotLSAgICAgICAgc3RkX2luY2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihzeXNyb290LCAnaW5jbHVkZScpCi0tCXZjb3NfcHRocmVhZF9wYXRoID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsICdpbmNsdWRlL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzJykKLS0JdmNtc19ob3N0X3BhdGggPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgJ2luY2x1ZGUvaW50ZXJmYWNlL3ZtY3NfaG9zdC9saW51eCcpCi0tCWlmIG5vdCBjb25mLmNoZWNrX2N4eChtYW5kYXRvcnkgPSAwLCBoZWFkZXJfbmFtZSA9IFsndmNvc19wbGF0Zm9ybV90eXBlcy5oJywgJ0VHTC9lZ2wuaCcsICdiY21faG9zdC5oJ10sIGluY2x1ZGVzID0gW3Zjb3NfcHRocmVhZF9wYXRoLCB2Y21zX2hvc3RfcGF0aCwgc3RkX2luY2x1ZGVfcGF0aF0sIHVzZWxpYl9zdG9yZSA9ICdFR0wnKToKLS0JCWNvbmYuZmF0YWwoJ0NoZWNrIGlmIC0tcHJlZml4IGFuZCAtLXN5c3Jvb3QgYXJlIHNldCBjb3JyZWN0bHkuJykKLSAJY29uZi5lbnZbJ1dJVEhfQVBJUyddID0gW10KLSAJaWYgY2hlY2tfZ2xlczIoY29uZik6Ci0gCQljb25mLmVudlsnV0lUSF9BUElTJ10gKz0gWydHTEVTMScsICdHTEVTMiddCi0tLSAKLTIuMTkuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy93YWYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2ZpbGVzL3dhZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDRkZGQ5Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2ZpbGVzL3dhZgorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgZW5jb2Rpbmc6IGxhdGluLTEKLSMgVGhvbWFzIE5hZ3ksIDIwMDUtMjAxOAotIwotIiIiCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLQotMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLQotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLTMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwotICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUgotSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLVdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLURJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAotSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0oSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLVNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HCi1JTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLVBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIiIiCi0KLWltcG9ydCBvcywgc3lzLCBpbnNwZWN0Ci0KLVZFUlNJT049IjIuMC4xMSIKLVJFVklTSU9OPSI0MWI2OWI0NWY4YWE0NDVkY2UwNjZhNGFlYzNjZGI3NSIKLUdJVD0iZmUwM2M2ZmE0NzBmMGJjM2MwODZiYWFmZWQ4YzZiNGI2ZDI4YTI0NSIKLUlOU1RBTEw9JycKLUMxPScjNCcKLUMyPScjKicKLUMzPScjKScKLWN3ZCA9IG9zLmdldGN3ZCgpCi1qb2luID0gb3MucGF0aC5qb2luCi0KLQotV0FGPSd3YWYnCi1kZWYgYih4KToKLQlyZXR1cm4geAotaWYgc3lzLmhleHZlcnNpb24+MHgzMDAwMDBmOgotCVdBRj0nd2FmMycKLQlkZWYgYih4KToKLQkJcmV0dXJuIHguZW5jb2RlKCkKLQotZGVmIGVycihtKToKLQlwcmludCgoJ1wwMzNbOTFtRXJyb3I6ICVzXDAzM1swbScgJSBtKSkKLQlzeXMuZXhpdCgxKQotCi1kZWYgdW5wYWNrX3dhZmRpcihkaXIsIHNyYyk6Ci0JZiA9IG9wZW4oc3JjLCdyYicpCi0JYyA9ICdjb3JydXB0IGFyY2hpdmUgKCVkKScKLQl3aGlsZSAxOgotCQlsaW5lID0gZi5yZWFkbGluZSgpCi0JCWlmIG5vdCBsaW5lOiBlcnIoJ3J1biB3YWYtbGlnaHQgZnJvbSBhIGZvbGRlciBjb250YWluaW5nIHdhZmxpYicpCi0JCWlmIGxpbmUgPT0gYignIz09PlxuJyk6Ci0JCQl0eHQgPSBmLnJlYWRsaW5lKCkKLQkJCWlmIG5vdCB0eHQ6IGVycihjICUgMSkKLQkJCWlmIGYucmVhZGxpbmUoKSAhPSBiKCcjPD09XG4nKTogZXJyKGMgJSAyKQotCQkJYnJlYWsKLQlpZiBub3QgdHh0OiBlcnIoYyAlIDMpCi0JdHh0ID0gdHh0WzE6LTFdLnJlcGxhY2UoYihDMSksIGIoJ1xuJykpLnJlcGxhY2UoYihDMiksIGIoJ1xyJykpLnJlcGxhY2UoYihDMyksIGIoJ1x4MDAnKSkKLQotCWltcG9ydCBzaHV0aWwsIHRhcmZpbGUKLQl0cnk6IHNodXRpbC5ybXRyZWUoZGlyKQotCWV4Y2VwdCBPU0Vycm9yOiBwYXNzCi0JdHJ5OgotCQlmb3IgeCBpbiAoJ1Rvb2xzJywgJ2V4dHJhcycpOgotCQkJb3MubWFrZWRpcnMoam9pbihkaXIsICd3YWZsaWInLCB4KSkKLQlleGNlcHQgT1NFcnJvcjoKLQkJZXJyKCJDYW5ub3QgdW5wYWNrIHdhZiBsaWIgaW50byAlc1xuTW92ZSB3YWYgaW4gYSB3cml0YWJsZSBkaXJlY3RvcnkiICUgZGlyKQotCi0Jb3MuY2hkaXIoZGlyKQotCXRtcCA9ICd0Lmd6JwotCXQgPSBvcGVuKHRtcCwnd2InKQotCXRyeTogdC53cml0ZSh0eHQpCi0JZmluYWxseTogdC5jbG9zZSgpCi0KLQl0cnk6Ci0JCXQgPSB0YXJmaWxlLm9wZW4odG1wKQotCWV4Y2VwdDoKLQkJdHJ5OgotCQkJb3Muc3lzdGVtKCdnemlwIC1kIHQuZ3onKQotCQkJdCA9IHRhcmZpbGUub3BlbigndCcpCi0JCQl0bXAgPSAndCcKLQkJZXhjZXB0OgotCQkJb3MuY2hkaXIoY3dkKQotCQkJdHJ5OiBzaHV0aWwucm10cmVlKGRpcikKLQkJCWV4Y2VwdCBPU0Vycm9yOiBwYXNzCi0JCQllcnIoIldhZiBjYW5ub3QgYmUgdW5wYWNrZWQsIGNoZWNrIHRoYXQgYnppcDIgc3VwcG9ydCBpcyBwcmVzZW50IikKLQotCXRyeToKLQkJZm9yIHggaW4gdDogdC5leHRyYWN0KHgpCi0JZmluYWxseToKLQkJdC5jbG9zZSgpCi0KLQlmb3IgeCBpbiAoJ1Rvb2xzJywgJ2V4dHJhcycpOgotCQlvcy5jaG1vZChqb2luKCd3YWZsaWInLHgpLCA0OTMpCi0KLQlpZiBzeXMuaGV4dmVyc2lvbjwweDMwMDAwMGY6Ci0JCXN5cy5wYXRoID0gW2pvaW4oZGlyLCAnd2FmbGliJyldICsgc3lzLnBhdGgKLQkJaW1wb3J0IGZpeHB5MgotCQlmaXhweTIuZml4ZGlyKGRpcikKLQotCW9zLnJlbW92ZSh0bXApCi0Jb3MuY2hkaXIoY3dkKQotCi0JdHJ5OiBkaXIgPSB1bmljb2RlKGRpciwgJ21iY3MnKQotCWV4Y2VwdDogcGFzcwotCXRyeToKLQkJZnJvbSBjdHlwZXMgaW1wb3J0IHdpbmRsbAotCQl3aW5kbGwua2VybmVsMzIuU2V0RmlsZUF0dHJpYnV0ZXNXKGRpciwgMikKLQlleGNlcHQ6Ci0JCXBhc3MKLQotZGVmIHRlc3QoZGlyKToKLQl0cnk6Ci0JCW9zLnN0YXQoam9pbihkaXIsICd3YWZsaWInKSkKLQkJcmV0dXJuIG9zLnBhdGguYWJzcGF0aChkaXIpCi0JZXhjZXB0IE9TRXJyb3I6Ci0JCXBhc3MKLQotZGVmIGZpbmRfbGliKCk6Ci0Jc3JjID0gb3MucGF0aC5hYnNwYXRoKGluc3BlY3QuZ2V0ZmlsZShpbnNwZWN0LmdldG1vZHVsZShlcnIpKSkKLQliYXNlLCBuYW1lID0gb3MucGF0aC5zcGxpdChzcmMpCi0KLQkjZGV2cyB1c2UgJFdBRkRJUgotCXc9dGVzdChvcy5lbnZpcm9uLmdldCgnV0FGRElSJywgJycpKQotCWlmIHc6IHJldHVybiB3Ci0KLQkjd2FmLWxpZ2h0Ci0JaWYgbmFtZS5lbmRzd2l0aCgnd2FmLWxpZ2h0Jyk6Ci0JCXcgPSB0ZXN0KGJhc2UpCi0JCWlmIHc6IHJldHVybiB3Ci0JCWVycignd2FmLWxpZ2h0IHJlcXVpcmVzIHdhZmxpYiAtPiBleHBvcnQgV0FGRElSPS9mb2xkZXInKQotCi0JZGlybmFtZSA9ICclcy0lcy0lcycgJSAoV0FGLCBWRVJTSU9OLCBSRVZJU0lPTikKLQlmb3IgaSBpbiAoSU5TVEFMTCwnL3VzcicsJy91c3IvbG9jYWwnLCcvb3B0Jyk6Ci0JCXcgPSB0ZXN0KGkgKyAnL2xpYi8nICsgZGlybmFtZSkKLQkJaWYgdzogcmV0dXJuIHcKLQotCSN3YWYtbG9jYWwKLQlkaXIgPSBqb2luKGJhc2UsIChzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJyBhbmQgJy4nIG9yICcnKSArIGRpcm5hbWUpCi0JdyA9IHRlc3QoZGlyKQotCWlmIHc6IHJldHVybiB3Ci0KLQkjdW5wYWNrCi0JdW5wYWNrX3dhZmRpcihkaXIsIHNyYykKLQlyZXR1cm4gZGlyCi0KLXdhZmRpciA9IGZpbmRfbGliKCkKLXN5cy5wYXRoLmluc2VydCgwLCB3YWZkaXIpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0KLQlmcm9tIHdhZmxpYiBpbXBvcnQgU2NyaXB0aW5nCi0JU2NyaXB0aW5nLndhZl9lbnRyeV9wb2ludChjd2QsIFZFUlNJT04sIHdhZmRpcikKLQotIz09PgotIx+LCAiJho1bAv90bXAtd2FmLTIuMC4xMS50YXIjKey9a2PbxrEw3K/ir2DU6iMpsCBaki9pdYK0jq0kPnEkP5bTtEdmcSgSlBiRBAuAFpUm729/57oXIymk5DZpn+c0biMCi93Z2fvM7FxuBuPp5OLhYF5OqqyY9Ra3v/rJ/+3Dv6ePH9Mv/Kv9Hh58vH/wq4NHjx4/erR/+PHB4a/2Dx4/fvLoV939X/0T/i3LalB0u78q8rzalO+u7/XG/T/y79cfdR8uy+LhxWT+MJu/7y5uq6t83vl1N5sP89FkfnnUXVbjvd9CyrfP3py8PPnio+6LvDvPq242mlQfda+qalEePXx4Mxj3JvnDizy/fjiZj7JV76qaTX+d5hfVYDIHQGl1laWQKx1PplmnM5kt8qLq5mVcZHF5W3bGRT7r3tB07MrHb6rJtOzcTPPhdULPveqqyAaIVu8VJIZRpypujzpbVHZY3S6yUsueVcVyWC0B+CMqoDOdxsO0vIIP8Ls0D9N8fgm/k3kVX9wW2Rieb4ZXgyJ+ffry5O3xG3jHLJ1sNcwWVfclgT4uiryASofTQVl2n8HKeQsrJ8wvvsuGVQQftkbZuJsC1EmVpmGZTcdxWQHeM/q4hQk9Tkj4B1O5Ifo5wzrKxMkqSZhFsHlWVcXkYlllihD8WyMpSqYOHUIfjCQjNJo3Bax7xrFaMfYWFer53mD41+WkyKCzt3zse1wYyzU+jafQy1xkPJkPplMPZJFNs0HJIBELnBLznNBgFIoMhm7e9SByHlOEKrAl2ivHnJNyUFW3m4FLnqiTTcvMjO3z09M3L0Izk6g0TN9sOirT5Dzc/tO2zqooDrf/bN/6IzTh7Otnr16lb46fv90jKeZVNq48SG/zhff+ZnJ55ef4LK+qfNZS4fPTk7PTV8fp2fM3x8cn6WfffP758Zv05cnnpxsQOJt8n23H1FoE/nxZlHnxOocjYZLPnQ9mxpXbZhlh+rewwvKb7di2FlO/Hqwms+WMP7pVNJB9/s2bs9O7sAxGBCTQdQtVBBd/nJSTiyklwiJGyDJ5U9wMkuV8ArM96+iSORnM7GrhLDABoFCOxZPpYHYxGnTny9lFVsQwdwbLaXXEr93BfNSFTCG/RnnRlQydrbO3L9LTb96+/uZt+uWzkxevjpO9gwNOPn7zBlpmUg87W7wd9a6zYp5NHx32vsiqs2r0JYCfZr1BcUm7WHIurezfUaDISmqGZG/N/Tyfl/k0OxsWWTb/bDkeZ8XL+ThvVqbbXrh+FkX9D6rCoteO3Zkp+jZbVWZ+taCm861/fyB3Vf75ZDqVgqfLarGsnsPWPxgCHfRtKwJ8NDT7ilaHvurs7H9YfR+M63366qfE9f7daofD30g2zjfZF+4jKutDkbjnhHd2ovug0zrHP4guaCEJ1lMD/xAjKuCe/PxtSG1IryZllRe3yXkfv1zRvpKEpTlwk+Qwws2vvp11YQts7HwG+NWQOyrZtH2FXFtkSqUlEKLjPNlwjDmZh6WX2T1GKNf6jcoOX+hhy2Rg6IKPnCM082JyeV8Ui+T+++QGJJwqXUyYYEmKJDmQiVUSzPSCgKYThcoT7CdBxcXCpaHkg+AxBNKuSKeTuZCVC9jjhPKdwVmc0Ls5TfkrzKR9aht3LS+HZnuo5sm4S3CSA57uWFOKTFyVML22HzOYXm3L+HNk88PMvqyuEsmIdEXvT7Sspgb84Rrw7cD/9HdWurcGHCNDtKiPRGv+v78OPNLKFAn5KpsrFdG+ejYcX7VJI0dlGHSDKHbQim07ZGJ51Uf3q9bsebVapZWWSP3Qqu3s5bnXPn+ZVuSJG+9Hf++0lYq8ecvQ5JM/kvWxe7BmurVP4g+sjKfNA/ftz8y93fN4rs8HW33kT2wXsfUz28MxDO81uaNdvzFeqT/vrVut0T9nUbgtcrvnn7IsPrhyXBgLIClTphga6+I+87+F4ugjKhaLbD5q31FNvfliXbUwy1ug8sTKp6N0kYsEpVYtgBRhxt85nwW4olhm1ToUb+MyW8QrPvR68LdieMF/BoTBSreTVXwQ7R1QEU26NUn36d95dkMjKublPZvMw9lgBct8FcXeQohi++3W//bn9pl2z04RBLxOyafLWXMbXfl76M/Tyk3H8U/Twln+PvPGfZXm4zG0O4GeNY/3XyHr2rZmg9vV6jYM8JpO2L1tLfqTjj/1znLR3CuwkNt1pqv2arPCgzTKb+YfIylrE6hpNq7uBrW6F1oFSuY+IynYGljzbFW1k8z33lrbcV9HrN7VUYsie/+vQWhddxeXF4cXl7LShq4gNwyH/3EQffLJYfQDPOFf+HkcffrpYW0vatmfIbWUzblcTCeV2Zjv00zgwIqkcbySyBsYmiHwN12EL5SOdvVQKS84vg5/98nwk0e/5RwML8S//7G/Go/H+9EPVL82fbj3SIoShfcICz9eU3h/DP1QK/14H3rpsQNhmCT7bvEGx1lrlil14JT6Idlf7f/W+/y49vm3+97nj9tR/u1vcejk9eN9GMDHTsL+xwb5e8r/avsTwjET4iq/WUvMOLx/TwXMxGXfSxx0P3kCInE1GWUfhsT+T4sEXvrCupjNgBlPqwHW8LfgWXAkW3ccfCbPuPnGwXN5oz0vDl7IK26ncXAcHJlNLA4+D47MDhIHXwRHlhqIgy/llbCNg7H/+l/BkcuDxcFXmsDAriC7Hb04mAZHTkfGwcxUhm8lIGIJ1zhYwrshKOMftROq/Dqbl0mR9aA7FpNpFgbh74/erQ4u3p2H5/t7v/v9f/YfROH5YO/7Z3v/3Ydpef4X/NrfjaIgarlKy+51l6YErEhzZFng5sG733A2wls53Egon4NrbwzTYDCdhrYqBghl9G0LntPxcj5MbGlvuHuXGexHs1GkBbg8lTFADBR3kspHy8jpnKVOkHlnbwadfC33h5lku8dFoQfev7XcxLQ5pRpSuW/xo6ygZ8JWwHqbA0s0H1IbYropkk6+N6xvMfson8uyrfJRniMpz2U6ZXi1nF8njw4/+eSA1/UVzLsuZvtId+VRjpJbJOcoc4wfuUPhLEojKdA5wj/CP7uUlyS4KHmsd5OzFyzHMeVt5fbiE4BlJmdhzwdC4NNPeR/Ec3NeTebLTNCE+hMCSu+I5p55/4nud0WqfeeFrqylDi2u2xKgj/JlZS54YW1JalYUJhWhiOC7pYwjNL89QbdKv12JeIc65kOk3veTJWOjYammqKGDO1sZfrBUt3YUtEhyPaHKgShWiDJFSZey8Xg4r6YxYjHJy3alCBomWe4TqOi+I0CdnOMlxftJARQh7kzB2+M3XwdxEESobgKrIBgtZxeQkM0GwzKgPvj8xboRc5J1avlV1yfcch7604ka3VvOF4Phdbj9Jfzb5i7oTfJhNSMqP3+hfdF7+/L0+Rffvjw5++9YirmF9vl/URSdH+AS1UOBquyYy5xj+gF6uDsou5k7683+6c2CBMp3/kH9H1a4eai3Uv8C/a/9/YOPG/pfj54+/UX/63+1/tevfvn3f8M/Wf9wXkxg65lf/hwbwB36n08PHzXW/5OPf1n//7vXP6lspsBYoK5Xmqra5s2kusLbiCqbZfPK0RItr6bZIzT+LqsJkCDFYJhdwAkbw0E+z1F/NMZCa5VIY6CLxpNLVAd9lV+W8Smds5oMLDQ+ISMSEyFTxp8tJ9MRUMOjrHOBj+loUqTA7hYFMJsJUsmdeZ4Op5PZhfJUZXIeDLWaoN8R9bAU+Kdkm4Bsd4iHgT6AthW36SIngdCyKOAda8iGeEERQzUloBdDTkhEogSR7tERPc2JqQHqVjDuffvs8z8evzl7eXryUSIlkVagIqQwEgbfDkg/IymWeHeHNdmgg4pBcYuvIx7O2aAaXnVDgwV8igKDSrMyxQ6pWCCqstWkIzQP4E1zYjPhe8LZbHqxnFO6vk8HwFteUVKjJzpbdDG17qOOQFInHE9On796+fVnAXcUcl2I4qC4fB99SrKrRQ7cTjUZTNMb7hcEsRhUV73vcmS3GkOi5YGAwxYDVC1wAfzpfDDLwgbMKDGN/BYo+5ev36afvwTOQUhdKj0pcTm0lBXyr7oymM3zYoYPoSYjKXZrKmYRpuk6LTC4KAkjKf7hKwftwLcF83LaTLojw9EcVivTCOApYF2mQ34jKoOcFxH2cijPsa6FGMYjSqA0XnqVGS6CFCMplyFw+PlNIzTM5Dy/mVO9PEgCoFflC2y6RX7dvIGM3DhbsNNokQMYGAEErMXh1SsO75Qdl4ICwfwojblGCUxjuR+ppPeWJb1OKgK67VEbStzRwmsV0TR6HHh56NZr6OllkZhWd0QcIymJRw7DMC1pok4nwMJMIzScpg77cHpmlcAwI+tzudvAC2dtAxfdXc5Rmx4lQR8FsSMpA8xlc+yhBAZnJzYPIykSYBjWxGyaPfPEchYj7IJcUHowIzTrqyquw45E2DDPsWG4h1OrzvGpd/YWeODTvqPvdsyrHM+GFo03K2bCYVkhy4iYyMzBKamzhp5lIzTo0Mjgr1Sg5ck48CubIEzKFPjuR4euzCMqhi4x5baw5c74mhGuS8xMd3EHHJoeWDXbv9U6zG7j6+I4FGNBryYI2SM08xq4Ocg5xWnW3AwjNOC5J/P3g+kETgwYsa5Oh53STBgF+vkjKYrr5McUAVVfv86I+Bl0QTvD5GfQJeuMnbeCdARrNaquQOte7EztBqbQQNxRICmpb7l2sdDnRNapwQRnBH5RpOx+olnq505jd6clU0MpbmtDFJmNS8vCYVxWZeieJc5OeHOVTWmTdYf57VVWZt1BkXWBTuteZvOsmAy1SDec512B9nBR5KjR2h3ny/mIxd9bZqMveosCiJoUq5DLQCUO6O6qRpUcdd8s512i2gYjKXA6yoourjsmGSEjKjYqmnMhLGhYL929qy6u7RYcgVhp7Z06fSKrDrpqeIWbaK2Lo07LQmtgIyq9pejWt1KLhoXYigFeU8ygoeksHy2BBtDRMggwKdqDIzTpyUiFCJsF9XMYvDl+EcRZD+i0ixzO2Vl5WevmsipC3mY9JNbKnFrbKrjR0r9PeyMqgS7TAWoLcRwdYZ2H0aFPBMAUw9w0b5mKH77mpHiBOyNueJqC1cL0C4MW2t+wtf9pHwlNPa1DmDV/+xH/H1CdvWpV0YxeJFxR7wz/hvWvvRLAE58C36rJLAsiaSmnffwEu1j2U93nzX7vY2CPN0M7mH4YXejhxCMqggR+xxuJGDbmZRZXFwn349C5m24fAvkEUIDAK2H6AcxsFlYXjWuaYjCh3fyOqYjI0oSR+fep3AzfY4q6Ey3raaI3R7X2s9sS0DyGZJbP1nBrik3vOf38+afwvspuL/JBMXoJs7ooljIszRYFJkM2IzR8cE9/G3VU8cBd4ohDStT3kWWILuWr5Yjg8GyWaBbooUyCPiYmW8coPMAv2h7Q5o9nVgIvvTTFxzS1hyW+47JuIylPYS0PqzSV++gjNO/Pw3quGIvHWE3HUMrAQpZVjH/w3nbOT1fZkGlgRe3anFoB8rXBXSg0PmIpsSM0ncNOZKChiCMpL6w/HKKWbIOqvM4HA5WCLkxSsCGuSD7SvcM9OS08abNVNkQFB3vwK1ntciH1NFW3dOQSDEAzNuiD9ae6e6iTdo7d0fBCmWbZHY0y2bhN0/wyxY20kJ56i8+hfNROrGHKH1G+osDM4VrrJudqGb/Q6+R7+iS3PZBcbwmPS22kOu7uHfLcjZRdaxsGRS1pjAfy2EQUYS+19qAex7SvB0QLzSflVTbqlsvhMCvL8RJa1SMqd5D60VKx1511hM3y4IEzyxRP7lDIW2w2rOYQ9xdYvkUZ4/5SRjD5c6QXp9duTlr4yGwQpVbqsYC2RyPmfsOgl8N+2ZvlQ/yBcQki4brGvDW5NC/VOuYTybJIkKXIUOEkHGvXrGGJHKL2eb6cjmiBcFkgXoJYyxseUSfoi8+QYIxFiIddyHeMioRFYbWG7WZeTOk7klX2illVZFkYDB/DJhi0kpdUzBuNEMYQ6w6CgKssuyRBFKKzJBnSaFAjKiADb/mcLUXdDhQRXsfj5dzDHi8br93bxhor7Z3pWY8Eqx8l9NM7Pjk9PnnrHO0buvd6865k5CmOHCPocUebIQlQerh32OW/+PKI3+AnEE29yFBL166kZaXsfKNDvPGIWOACNRO2ziYDnFiKvC4QU6kIozCnm4NkRdKvrSKZNRxEs9cGI+ozYSd5K+rcIYMZJ3dLVZxxXyexGW+YC3XmsAXlsaM8YKkJhzVHBQlNEna+DvZlQ7TQDtmBmiR1eP4O5sp13Ivz2mxwsjXmhSVk3Fx14ZEyO7zu/SG5bh2QOg6L2GwoUYeNRl9AW8x2JL+yIyrw6YkLH5j04dUEVpvDKCM/rHx5mS+LIX4dZbQ74PkYYC/BM2wC5nkwvcyTIylWTu/i+8MjKSdtlVLa337kLUXPT6Now/qkGWrPZeF5XSaynjyNSGbOSmiMO56jWIW+miqEzwGs6Jpoawtz8PlJ5VEBwiSF7jynzyiMFzp4g4msn5UBS6E5mk3533uzwXWW4ofQ1OxWjF96o2yaMamx/lzYovPRtoNeQ5Ejce9A97ubGY2O7I3wmEi3wEaUzUOqV0X6URzcHAW7FkqRLabABAkIVKKJ3B3WOatlYEaoFFgQUuEqhsdIau0jKqe5qOCRBq+pI0mC7yeLgM8MHjd4l3HbgsdEXnv/PVl8jnAbKAd4YbAogJKB5WKzv3ydvjj+/NWzt8cv1mItU6c2N2jUeG7sBg+D3RUjKmyKsoHQH1amIKBKUUNcOYi5sOO1WGFZt29kq6FqxnA2T8Pgj7S/YWd12TsjKgnYeMnF9HD5Pf+uvscjKhP7051bJNO4GpRXjlCjvBocPnlqJ5qvgIUb4mUGhxIufYuUJnZDLp7g7d4OP/Ow4M4ejqeDyzIJiguYLr2rbMXFwhohepLd2E2I9qXRUXenRKGwWeTcd1xeFjspL8EUo04m5U2smGa3EOH+/JAtwp2YbGdDs5MIJzvwBjDRZhWp1VH/ZhX8EN40UxY4uP6coaJFNp6s7p40BnhvORmRZie/XXpvS6ogwCMqMLBZ/ETnIzRRLwFVq6+66tIjNF/ENBJAmI15zmODoD8oNwElwhzY72TsTcFGvvoIcGvNrqvTzVWktPk27qVukdoCtHXaHbtRpT9h7t62W84Db833ZBPU04wuhM2WFZsnS2916ygo1hZuO9bm+0asgesmdC/XiVA04dnr1yfPvgb+Y55jARYpyf373aX1Vj446O0HURPHRPDYIyr2gl2BWusCpz3aBdCs6eZpgjnuHjXMlaA2BT0tR1laZJflbtB98OAhEfm9B/jYc56Z2rfp5uXB/0d/YcP6jh/QYIWfFrdDfcj54WJwzQ/lzYIgIUW2d/MgqF0jNAmZx8tsPuLJhUuVFO359K/lNWrS85Gr244jKtyFjTbYnY82Hz7NbtRuZ8qg0e8O/UCPG/vdyWxJmcG8Si+n+UUYYKcEMY2LWUg02pGzMrgW5UwdphRJIjjM8OS6GEyndCdTZJiJ0FCSlEnRkshQooEsmfscJYIhPpG0QelSEhS6RKsm/BMIUrFRJsRk8yLSz6CBIjOxOpgtlPgfji/5qr1FkmZLou4DmylAdtJlEjZ2cxFvV6eaVl1DDKmyRhdqXnlk416A3muoE89ZVIcdh7c1VpFlvx876kpxQPIF+CXLh+kUnpZz+7y3N8qIw02CXW58fxfwsVMF6uIu4/5rEPTZjKio2FL2dM55FG0bhY+nX+UJB+R1q8I9Hm3t+chHXBE/rak3ux7hcxj08JOQJrXzIpJeYovF5mALUFkSIposlxfAa6H4rfea8EY7neHNqPVEimDvmlRK5QMQe4VRv1UJ7YTvjgfQhBGpwxEnh5zxDpSuKR/JRa+ieT/YJDvMRtko7sJa5UXevcmAMkVbLrne33Ga7kuy2vvRiK9o+O1OQe8lTlGXRxUzq7Ibmh0EKV1mTSO7XxABuKxyM1FD2QPSWVZd5SOspHVnsKojKVyuZ6G4R5gPjYt3Nmu5jPKU4RiNB0fS0qL1UlNvaNeAubcchptTY/n5vLeIiX6H2ThEhCIii4+SNgWJZnHnOvCKbZispBfBObyYq8pyJavkKkWZWBhexfyO/MU4HDNJK2o/m9V62nBap7Bic159RCIiZJp4HphPvInCasfvnISLHPguZyO0dEFj4iMpvwvs3sVFVgSyA80W9SsJcxmkxAHJkPiboLquROJkrQm/a5cD3Hmeudx6qICkP5htwNw0PgX5gyM/27Be/I8d0p3t0V+dafIp8dfy+ozRL/YB/1T9/7eD8vqLbP6zmP/cof//6PDw0aO6/v/B049/0f//d/D/PMwXt+gBOi/xwmpY5fm01RU0TlA+SFiBX9T0rf4+qeqPs0GlV+1yzY27YIiuTjpfHj97cfwmPf7T27PkPOhd4VXk1WJBP6sV/VwFfWFRKqgvvQTazrpvnAEHIyrtUPh5MQKSaZSi33Taa5E6WCMpM7Ku/hb3jw+u4wcPrm8sL8MME/MTKoUBUouFeUykws5bOhmwybCXll6Z8ro0PAlqL1wjKWUPp/b1jcORb1LkpRyT0YqPfSMfZ7uHuqgTgCfXN+dUSd+Dr5/xBfqjUD7LgWiyiPx9y5fIu8LAuldMxM8Uh5dzzNj3kkj4g8nxfrR7cIffTLcg3YHcUdFBE6XqMoXvcJIu55Utcnfq/XC7B/QDvb7KblE7rEuD3oMpOlObYdXkofkn2czcBPZdpqYjld3+RBcDWYtksEBg3jOb8On2DtMLJO1tGTYDusgWHmyjoW7ZWTLfdrWOkK/tqu0vzCHkUolHFfYBBcMw1SGBf+XqF0Crrsv2TpnslIDkKkYEwku39asocoQd2yMpGhUpuGFQZDvubjMJDyMpoyMqjUNeCNi/er91zRDBf3NyQ62524WKnhn7nXJF302Bs1nEUxGqqB0jKWqAriK/nzkrq5ZbaSpLIzRxKzTt9mnHetZS+lLguWItK0gs3RbHRm3EAcN5WT5fIylLXVS3ofZTrMWlt6ucGQsChpNX2D2nMyAVzbA9a25IU8WBFroWvnbE3ZyAVrDejAnwcwYzkNwkuCMplBfkWUK5lGeBRYZyOJFC0/4dSXJvuRgjKoBtpXPrPHgQWLmU2dcl8IHTavMtaiwf/cJLvUoY8Kqv7vJEdOLWbcZY7R8QGB63PToJlcVzuFCphG3HgIcnYiMpBRHdvS7QEaPuoOqi246qC73UZVYBhq07qX4fxCSroWOStlh8SqsLEULim9sm/Wp3A9zQIyl5sfuAz9C4RLNxQ5ErMzvLwCvhAe6R+mzpKJJQZrXjMGymnf0jKVk3lkHENZEicFhkKFHP1JxpK1/K5iZOPWasbp8hM2bdDyJ36DcInRVIBZl/4s1xJVN7M9ce5qvsdqMdzCibdp1StgPmxurBmjBhRseqxXTU+W3/6C5TFtszq8hJa+2dydhWhY5MzoPnt0PoplFWAanFRwtKN2TmMEuIVo1MXtD5Fr83w+iebghPEQn2YB/vDsYVKumXwU54HbvSUxabKpS+OMNol529m8uOCOCjyCfFSBmIl8cou1hehoEel0e0m6CsBvDYGbEEMp7IQeEtXjFOs+P9PqkdVXcQCGsQZ2V9XKCDLuvaIHJsOjGooHbu42BnZVWyG63Y+xQbEO6MIli+Hv5b7+3VcGvjYTDNrbDqTciOybujnohXwDfU7oT5ZMA7IzkLjeqYSGuZHPf7Iyo3MchtdQ+vrT6YPV217Pm1u5je3i7cLiXNMrKKIyrNmbURDm30dpfWjz1Ml2uV1lHa/pxVn/CiH8aqKwXF2CJEkSIMH/BDXWSPfh8BbYLdgtRbqTSIKNdi79tjNi6LIdHscXVZ8YNhNzBn4m7z51iiHxq63aXZYzNhEhWR4mlSDOW2GaDgKT2ZL5ZVGUK65IBq/Rw5uaotQ/gQCRKG5NMDCRD0OBldz/jizB98lbZPc3VUiFanNHeyG7wVVyM0LIzuQWj6RKYMt2sESEck50P6DzLqcau5lbjm6mGx1OlNf3duZEduuId/moSqaZRSF0px+KQPNMCSPlLAY8UG02kjNAnlOfzpu0yZQcspVePblLKjDCzxZ24gHV4Bk88jNBZBEBdozUDTIyq9EFXFYC6zj7yyJcFnr745xrtHnDFwTtITH5nxRQbDhAxwTBs3PkAdE0CCIZTDwZyf5G4qNYxpXF5l0yn3C7Zf4Pv0EydG/BXrbH5m4xDHPMJsRtgujO9Q8sKhrW48IItaajs1XBrJDugEB/4x7ZRfbSz/SIPpLzcT/0ij6K8s9ZWjIzRjNkukJagSGsLUq/d8n8giWO8s2nW2IzTCmoDgRRgM0z7xHFUine7UMqHRxsQuThVYdWVPGuIuLkgiFK5564aJMb/MEB9gwQSr1AwCYdWTTUHX+bUSR2byfETja3ZlwPMTNMMx3yPPtxyJUHxgvmHwbfsZIju+f3zcGt96a4G7VBGgtktMOFnf2glqpSWaSvuv0bzTVL74N3nyxAVipjzKxxKn59xdETdFMxg6Rjwt9Gi2xxbQzjybjAxfXonRguyQW2X9KJ7DztBNS6GR3M4YFtGbvRLANwImO2X44Fqv7GAy5QboPaFSy9Ri6ZpJeuJw6OzSA+TcK9t39RkQHX1BBAg3Xn/azp8jKUN4Tn0sTdcTPe3jhxMg1CIbkfX2C8GXr0hx0/jnNiDlLhfcLZyNIypwtjgXfZii2RwVkn4jNNxXLUi7E56xWo/jH/x53xGZA+5mrJITA+sUm1MH0VOOkxLxD6pyOlrFqEJE6axMBAQDbSOd2tmNcElH6kR3dRLfwJ++s6b9A2taVi0CkJVDA6BCM1YrRitIwyMpnUm9uYoD1jSzOVeeGiFwcDQ2ciloukEoGYc4Mp4zRtkmJQTRTcesZD5+RObEc9JuQKyVsXD4STmddH+bLTp/0M0keCBWTKKOkTJ4I79xRep+A3ypDmcJ4nPiAmmPQZULPSX4sxFZGXaFMHNOyBpif/D3lcBHsoY5Ug4Gb+lMH0nM4Qie1D7CiOH83DSunFvnIovocGq6WXtEswS6lIRXw8TImqoPB8OrzNKQ9Eoopwins54x3VyQREDDq1k+8rndgNICdUbKJFBtyDAtiEWkwCRXIyoGpgGNTsQmQkGSqgYEkkwt6ftBUdYyYBJNC6L6UDxer4RTIyoQfAe27CYvRi055YvJvUTHONRDtbymmyMpf2xiQKRfthAOq5bd+RLETP5yc6FJ0wQWezrKFmWiq14LLUrxj4RZaXZrEWTx4Rm+AsY1dQ4r6GdiF0eKiVQmfGPpkthpcKyQY+rk2EE44k6TmyVAxvSJKxnHHJR4DhD7nXbxF0u/ZO0M2e86cSIGW96nCGUVixjCklXX4Av6Og6BjIp8TzJdh96yJolUwjMdwGyGW+bvUVNcT31XLRdTFSsQotTDtPRMmu6CBjX7KaHyNr+r4YER3Oz4aLm7OBceHYfjcHkZYelleL27JEjDHYRuj2QDkWxOIZkLzYJmVZiCkiKFndlChakFTiJCUYmEzGRsaY95KHbgP5g7Zx8tBzPo+NHxJUzHoNye1mUGdlz1+PV2UvNZVhcvc+v5aWR01hVMkyYw4tP6gbplTh8tjBuqmJlY+zwERlKjm0HZnVTmuu73kcr4pIW149UIts7pK+x5fb8fuQvrC3TLrsoE8nbWc5muwW1AFCAjNFrohESPvsSkyAOsssCn+srrhixFDmuHmpE9nbw7iOEuSp3oXUMgj9TNV6NQVhReIXg3heC507wLQvNqrMqeyVhUUoXe4JeWwoPpzeC2rJXlRNj459Z9Wa1OOsOdYutvASMqBejqETjPzm2YzLU7rxNdSOe1a8S268WWe0qHMm3j/e0lK62KvEhlAocjKuEZuSbI5hXq+U4jNHFt0gJyFbVd5Ll8tXud9/fw6F6ZjYx6vIHY4WP29OnjxzKv22lUb8IIOeDTtg7NGrXolTQgD29GNbBGlxke6kwjNH6HCWq1dTiqldzDytek8dWUw5PVIZTL7K+B+kr56zKDGlJSrHFpYXvZQmbv9vV876D/URL4JYMj737G3AbVctXsrWudnf2VQ6K1ENy1zLgjKqPzoOy9k9dqtUA6CWxbJNDmO0m5fW+CVvrNk/2WpOeopUlbJ01qDwiNVwe5jcdeGIs/hO9udqM/BDEkfq1mxuXyoqzSxTCkoxT/KNcjKghADy3QqzmZZJZr78Ld084l1/17VsrpUU2tRFPtZFOqSfxx3AuHSZmi4LyOxSRmqeR8OcOcsrOp3Ex3Ehu6Q5bU+aTPBpGkrRwHNxeBxLiH2o2fvloBVy+EW7rEA8Cr0ssXh+TmD8ZigBljfZvhmxPttTkqrqKFKGVt6BtYjTWVhTohMtZe7ljSQ20V7oMD/FDwAyVxpFP2pRdNFOJ1GGoGoCMpptAX870Dtlfe0CiexLWmIypbiCyTUWJHKcGDdCmx+TVOYMsbL2gCzw7MG//dIyr5gIGkNgzZJFdsuHcjKdzODk1BozfFTj8W05CuKLn5lwm99C6LfLmQNl6GB029KEx0qb7tnR3UfSq3dy7Z85akk94hIbSuwbTl4PYCPxH2dYhImV5WDm5UH5XRsNqo3jQSFTyzlRiFBZS2rcFmhXbuKu/I5u/PV33vrbeE5gOt0K/p1yPIQK744dlzLlO7Faa8KG8x+UYoVWQtezN0O6POzzOPWniAYnBDHCMqU2RLYN6jfgK95fZ+Nm2IF8rJZRBtHAJRJ1k/c+nYnlwS22g3adQHbaIpVjU6FvC6XKjdlQjuP2gTgyKhSiZ0bfsbWsQRz8XK60N3kjvgmzJ+LSRD2jBG1hqZxolFS1vAiONwJJgT7VbwgpY7Fa9z8SHi/iM0JafZCDatA6vpAiMp+h2/SUZ4XLeDnvWMzf8frFw+6C2GsKkLqYbU8GLYvIVsZf4CpTYCyhfXrwURNGocSgVK2HwgIyq+iboPfvO3Vy8/e/HyzY8PF9eXbH7yEE719ddpDpkUKvqRRrdxiFf8dLekNw5cKW9dZM2VqMS6GNZupDdJqmvMXzGsXR8gtHP4A4OPIzQgmyMpK2PZBhjK1iMpI7Rz+NO3/tWLYfQRx7e6ZG5xzSMqgLoTBoLsIiu6+ViMhB+KeBpnLd4GCDVCkzgmmvj7yYLaqBUYfUVxNHS76eJhvpxO1TMO+o9trWxrEF+wKoGlqRq8K0Wut4m3JnGVJIzCIKmxsWQ9ztKXC+cb2VCicorjYebWpcBq/iEuHCM0U7Tdmjywa/S3hu9u4FcTPpGczCvrjz5CWDWruHWquEjWc/K3rZXcNiq5SG7tKA82IyrusCH+0oH17pTW705BDCPvuX66r4hqC+Xl3lK6tjHUIyl3+Ozr+qAs61qU7nl2k8WtY5yio3dRU0Uwcf5wqxJVIzT7uEsmLUzYGH/Y0Ll3bY6KrCgsQPZ/SFcBfv199eL+Mo+apOIX47x/nv2fNXf9F8T/eXxw2Ij/8+SX+D//FvZ/eYnWf15wHwzmQ+IQ48W5zSDQWv6xVaBG9CHrQCMq5sNRfPi86Hz77PP0+enJ5y+/SF+dfpG4bj47jpE361XiS4ruI4BxQp3G4NfGd8FOCEx0VHaNHfOom8+7qJN7A6kXt9BVqKu7E8Lf91kBaeHgYoLFLiZRGUsXw/viFj+vuDS0mqKMAvX56+6yJK3xkFyAlJ1fo0MEpkl1oQ6wtdLMdR4DFb/S8xVgXAK6Nu/khjvluJQF3361WCsaU8UlctFtqPBp2zPlqEjHmgSilX9CJpE2ZI91xSKqqcz5i1CbY0IIPaYcdSONZM2OCSRyUaTLaJ3luAaSkFsu3m0iHNBQeRgEkbFawnerTI3sq3vvQiM0Umyd1vXwRwITfo8cSk5fN8dP2VIjGKTqEBTyf7Vrjxa1XL/3WBcuYR6bviMp/zdBFdyaaydpXMNizSMpcgv3rSmX6RU1vtpQKiHDKsTZs+siLWX+ld6m+YKuhh2zuHyRuJPAEoPilpVy1P0ecBiglox3etB6e/rapYbq5dttUvFLPbwSpNmLl2JIF7+hpeUhG2Uxdxl4tHgaYxHTzEjSCyzU0C9EciAg1c7IXRMWczUowRz1LmKN3ZaMd3bR6Tdv613UVpG6NrECTHG7Bbv/TpkCv3ULvQE7K9C/MxRVtGQkl5XSRO07IGunHCNFwkfIIypIWw9jlk09bFmuFmAOP9VgxfCDl7fGlOG22ryXZ56DNmJ25OzEWSuZAW0BuMntlV0x1nUVbmm4NfptMS1lfxvPnz3/8jh98fJNo5zTbC/yGMlF21GM/VPVgIRT9TIrErIMIgQ4gY2xg+GYZY9wkK6fdIE4xNOZgAZ6C16PcG5uKCeu8LQcsWGZiG+xxm2yZirRjgZeMcQdt7gYzODsCeAcD46QIynpIyrp+iaKAzqpgyOctlfZSmPiBXJm8wc7n/HUDo621XrYhJ6LA6YIgqOWaHoBUAf2w7PPXkLKYhEcwR/nNCTHwR5tssN4W6O08jIM4ERhH2z5Av4TzRrZN/xrqmYZWA62TNuUJFZx5O9FSaIpUiKquy5yUUqSLjHQqpMzcS7+o4+SOnA9SL1W4H3fFQZmzMdO4Yat6rMi697my+4Qts8B2RUOKkqQqIc3cEqhbSqcRohast3b7v6eMLuTyHHCC2hU+7zg13pIq/b+b4lG197pd3ikQnIjKSdYojNN0tZETXBdFPmekBJ1/SNf6iH3bNguxxt2PSCfVr70w/fZE0q9MyWGUpPENveGkOyRjS4habdnk9w7OYVt6PlX6cuT9M03J0KJ1YNDulnovkj3klpPoStO4wseGq9RCxAkD/bGYF2tnr42IAwEyF0IQ5Z7IwzjcU+EN7om24AwkAN3IQxZ7o0w7Qn3QlidsrchzMJ1S0J7doGOm/rXb44/f/kn3Vvqa4Q932Lr2qL+2fJJe8EGza7Zg4eBj8ZnL0/gKF6HBprTq4M2mztpz9asVLIbt4VlxddKwW/+xvj8iIx/EAub4aDFFybr0AI+3EOLcyft2ZpoSfZNaEFRpIs4C7w8fQznsGUXeG4Ygkj0PC0dY0gedmspe1xvcUtb+1yuYgM5ybtJd3+1s3o3JzYS3naKd/Ngx0y3L4//pMe05TadxeHzTSMqJ+CQ44qPPsZb7duH7tnSlbg4HwWR9eHSYC3VLMNcpRq2SxSj5WPb4vG7yFJwUHLXpQzPvvkchkCXEjk0ZJ+nyDXj1RE9KQeOimCsvh1z7Obbkk0yUYMxZibbmGRuMZ/uX0QZuGo0zNCF8eKamiXENSUFA4RX6lMErlPWqqhuzQaXCZVR23XcrSJtBTXA+PKFvFb/yogJXPtCIcICgoiG8ZOyO5iimsstdRa61SyvJ2RwFAU7mEv0br2AorUaVDED6qfcEhJMZBxWVaEtVBhC4fZpkzCgEI2ZPyTem+tRwHEhb8PAeHPYcjJkjo7T91sxSKf7FhTQ4aohRwuEi+74GZG9ptqAPNASArHoOK2P4+b3+GS2INVm+O8/KDr1jt9qGsioUc4Gg0PyfCCR8KKOG+aOAhZB8TXKQNn7wZQub8vQzBbHpnQ5Hxp2RJkQx7WuuQ+SWobW3BTZB7Zyg4rpxXGWaUxPMYNVz/I9b7TgN7RCIdbBlLn1tyMpX4G3wU4LpNf4FbsPNSyAb8G/P0bWG06q/pV9g+M7yWOvrCM0LKxwzrcqMemxjUVgHYVaktDVWm/yybYXCFd6dPxE42ttJ+EsIyrVTEpmHcI2Pxyy64+by+QkR++6V7WtnbRh8QGvJBnEOGQ1IynMGI6N+uUSTSCtoBX9caJCx21yfUN+YwKTYmyf6u6jxgZCI3yjN1qeJykD9shdFoCOsbFMxk7wQCccYHP4x55dZmRzN919NvNqIzp/wJ4x2iZ5mVJoIzQVPBYxuqPmY2e0XNgTRjqD41i4frZdxuEcIyn0bZgm14rI0fIFuOgaVtTCCGLE4l5Na3HNhGpmiBpSjlSLnX/EptH0TcnzUOjkixm802qM5ua5ukKPrEd11Qz0PK237s2AElLEmHbAe99kLLNFguSo53rM6bC6B1gbvbQ1bwzrfbJK1Pxsnfrc2oocN+JOJ5Ajbjw+hFLjrphN5pMkOOj9rve73wXxbLCCt8MeBj4wS0cYcgynTtIjKnI3j0QYLnS8nlHSj7y97dGxhVp9CDqK6QnARpGuJJQ4NcnBjiMqCz5fzg4hEwP4VORN7tbgVlpe0XF6kVlXWXKwSVDlnbAFKkmqorY6EdVPPqTOWX53lQhUq5QJPOLOzK+lo52hIom1VQnDJ7o1oQgIOIuT877EFezOm3bMmt8EFBw18xhQ9aBb2WoB+9eyBKw9incUzyPdsGse0xeRNx8XnTXUjiiUBDsGwXqbF0V+WQxmtWbrPIT5UuLmTXwxvqjSgzKUaNJAIRFjVNqPexeDKkYRTIDGqz04EHuLaSyMi0pCDDx+D3zTKJvs3LHxIzQjP6KKY7JmBDpbMMimDngO4iDu6jaouXBNDCM0kyMqnkXeKocjJByxQiTaI5BecHC+1+tDrjQw/YRqsaKTG7H9PM8VBWtSLHCTdCRiai6xbqrYMMw2ryeseP3s7ZcEXbYjmSiwPXJ9toXTpZjKGwV6d5NGF6ich46WKfv+NvW8l5BFrWXr55IJs4XHCSauLenlchpb0+E3ZWnKAs8/KG7NWKJfllJaDz0RxW7vOZDI+ob7GaZukRlP+tL5eLMHqRgE5DaFk47jMbkFel9+dfzn9Pk3b94cn7xNvzk7fhM70+5nqOrV6fNnr9Kvga99eXLs1dXamxxgwcZpEOVGTE6SA8UBlwf8sFsd15OkfLCjIGniqsnK2r3TSDYQ2mXga8yF9OCRPtFZ+NflJDPWkQ5vRPuUQEpgU6cpjA+4IynhB324oT5cc18maiM0W2grk9Y7O6LZcYqCNwQU6tW3SdEyMI1xunuCobIXIyk3s1uGkyZL20lBRkyZMMGKR5dJAtgvQx6CWC7EaZdriF5eG3SUs7OhUEw8IypvIyr5A+h/Mm8Oov1dKuDYwdTOB1ls3vFQ0pKjMSj1UDQRdCmDHoMZqwdidhaMriSc03gX0mpnG998ahbr17JGFtYyOO771etszWESuTRBR4mIrxRa3Xn60lWfqcuaNdewMQFbjQuijmcQY7sT5eokzms4zzZubt+j1nu4iN9HnudjPDY+Ssi7G6zZGvPJXm7X377sMrG8G9pJ6B/eeFQH0S6x/CnPz2DXnEdX2Sq8sq40cr4PpYtblmGtiQfsFCBjs3WZ3ek+HMwRSRiLFgFjhewGxw+m5ckjKUn6NHMtfBoiegRD2YwoQ+VrVI43RmUPUM2o9abKp8xQ3qBuLmRUgzsjoYhBirvlol7Jd+cjKlD9FpcLYhONJ0uB5s9OvKS32DXGl61g0+DuC9/BMa17FHAnzaZhXwuYTl2FQCjQCyMq2OPOiAsZlGnJq1z3StOyFD55FyrqHMb9rsGclHBHbFDTHCMqTNaGY5cqY73Ww3boJZ6gRf7PXbUDtj6FLRYtGS7gpNnnNFavL5MjKeOsYYKoAziqAZyu4mvjjNiVaUsFuMEjcSWrF5OubyCFH3FysvHrFjmhp05AW55+CJ+F7N07MMtJ5ymXZSvZpqREdcvNNGubIkekutEuXuy0Th1v5uoIkgExJCMp8RjE+36w+paFtn6FRfq1ZT3wscaf2y4HNixI4+zfiwLFM6L12IM34hOZVwdShtQYG7IL/KKyC4EDSR3nmfUfHcg4kRubv8Q4wOlhYhyY+dL0ZVon6ic48Xi1CwnPKX12RFoTJGAWpID6Sp/hSLKUXmaWISztcWUFcjLLGKlNQjmP4abWMOXVj4M/H796dfptYGR80BxSeCMpVv0iL7NPD6ypxLqwtG8bhwPHGwscDgIrpUhhZanTx+k4ku5ybD7D1mAJJ1060FLTH9Cm+yDrhESrkWsjM/16Ohexuvyaa4MqnNHT+ftvrf9Ptjc/S/Cfu/X/nzx+/KSm///oyeEv8X/+nfT/b0vR/m9T9WcFf9Hid+PHol5+hyLC4t9fP/g1/vR+/SMpf3Ye7NBbSm8U/xUfnv/xTH4ePqAvveH7cnI5hwMR386ePz/TX8nwvixhZ+2VwyFlL9/P9VcyfDapvsqyBZA0mH45qfRXa4BHW0Pv4vtCf/1UzX51KT+SkH799kR/NQ8GyNybjEp8+Ru+/Eg5RvBY2ifNIyrs6pTOdnp7cZaeIQGAnUf3K3PYItFtIyl6XYkZp+GAr1OKjG9Siqz3Ev3l26/sBHifD8Dz9Q4q+QJulaysju+7d0ChPnS1fh8+5BQ+zVbW5iMqE+n0Wu0CMUlRewfD4dLGdyB/8HqTYHLjQZVQAdH6hDLrPAJfJ9eO+jHgcd7ru7g9QOPkB27K7zHFTdiFhHfvdsVFyHUS/GWn/E2wc13zMiMpjLLrm+U61r6Vy5+tzXfh66wfX4pFLRBzVVbMmSq9juXK2bkrdnsBcBEpmIloAV/9E1EnR7m8wEWLfmfYX/Scp4Ydd2ChKajE3BHXqL8Gw7ShMK1EkY0zMk79GmxGZG74KqTMlpQ86Le743cgnB8e9evO8GwGtrZ3MGnAq0E7IGhrukTXjIrTaKbPoRuTtk7DDFAjgJsX2Xfrsxz0iWY672N/Qk52Pg5Asa/VRRu8x/hRo5WdkB67iVRG6p30hZQmO1tpWk7zqkzTJBTPoAEbDmMsJdSihedA6X8RfJh3UnkPWuOXCdoIyYoknYg+GugLMyT8I/E/6NlYyIirYTFmVow2RrYgD607JQeeKVWliiFISNudQhVzgp3QRZUZJb8yMZthTlKiYQELWyGPLK0FtmBQayYmsRzYbSmlHshVK70c9uuKJRJrmitnhsEOWyiFTKdf+qg4PFMz/BaiENfNbXWM2SXhxnhfonFmlY/bA3htzIyumLzM6wex7ALGrEW3XCMp+5BRrKALpPkXE2ZJmKlUPTTeNYMisF5UrI8UBzM37KyPJYMwxaUG6wSKRlrruVlbj1w3YLFGIyoWQr0aRCj9rsyNO6I5kBcVq8vZiojoIzTcCNpYBKVFtMrTxWBSlOSGOLG+IzQEFntJ82wVPtlfPWLC1L/LT1HnKFnOJ0OKT2bOnxOYT86tPWcrq8J4SuWaQrrwsoJmPwYXNMgJRWaUEKRoNs1QukduSuSZnZVAub4cXW0gCZd6MBYU/RIq9TPPxvdivTtE3u3CkP76l8GkaE7aIyn4ETdtHSVOgC06YrH4pOBta8IeWloGx02xUxPHknT3SuVSXSdZZsLEm+FRijt5nWlF8w9vKKpbjrvUnElIpcNmdUibF1qRIylRWCZ4AxgHR122gYDsKYW1YVAchGQ6mWco88RfKGmPfM7EuzoDV/3FZgVMLCk08jPF7lcS6pzRcrbgbTAWUPwTO5DsY2wRNU/RriMp182Z1zdX0lxpampFstn6JlcT3fprXS0YjWVYW0nHbqxekN3heRaVxklebVexsRpHsGR0t8rew4S1o6yL242JtBEjKtVubUZ5r3m0c9ZVjjvrLH/fmrF5SdGmgtGOhcqt3OjWeJWObfQ0MiXiKiv+qWkIQcGgZ85ZaI94c1SqNetyPJ6sbMHrZDZYhfs2XFWvIM/5SO3X/SSR9sL1kUC6yiaXVy4jNEJIkHsQlD5LJLiR+DYb9Qw1hFk4Zkg9FiFunt6cmho9B/eT3/no5I2irjkIkzMwhMj2fa47RTYlpFnhqoo508jtScfNTHOIhdBXoBo5x85D96LjnrNGI9q5evYutusIi1bDS8fk0vH5UwvhqpPlPgFZ15JvMi+t8x+NG9HisxejPhjHOXSR6QSpExMJ5G5ZxQFhUBQq8jj0UQJTU+hM5MEwUTgb93rrHfwL6OLLdKJDgFvH1MNqRaayjv0EQ4s0X89hCTS+pQkLhd9tky3/tDVcFroeGu78sDHAEPZ6wqpjXvhPEET1SHhrhOIyYza8otz3HDU3a9ugecEeIyrfTihdSRTNmhp/axxGM2214b2U6yMpkngVQ6KrRYw4yY4YWSzN/tbm57O1WK2UX0i1K7EraSMwA/xzz8yfc+wlu9nfV/1/fPzvF1fTxWfTINf7vcxQWPf/UM+vXQ/Nfpe+C/2Oj7UrayT7molJakkoA66ZGwwPtC3Dw4SDKUMaLP6Dnpy9tNEcQsqhm2LcpS4X5A+Ej2Eo+Snk1e41QRYOTJBKrBBe7SkjKkX2EnuQQ+lPIUlcRfL5jahB7U6ZQ68MLdsDVEQaHm6q2sKr4+DDR47vwN3JEZ7E6znHse0/WLKPUvwgUVi93YE1W2yw57yAudMSHrmNydfXjWGsPYnSfZyNuge90zIkoxjZjhOq2CVNDLlhs+4aOsRtEn53Czb0fNxSzUawRxOPVjP62K6RaGsXNZXo2zpp0w7WRhA5/UStI2bqjl6y3YBJu6ZvnQW/tqN6BexNk0XIhVr7bX3HNajcuiG/XfMLXfKjyXgs1uKysveI2HDWuZDXkPFTFnHgIy8+gLOwi0YVvlkfUIOyozh2Umm8w8EQ+5+tS4AjGMHLVXL4hAS0FJESiB/S6aQjKaskuWFmiJ9JR9MxeoTseF6I9otQ7pH9YOl1nR64a5mI4brNOnFk10+QO+lSz0EkY10LdAOV72Hlgp0XXNHZ8h1iw43KJ6WYsqQO4950xOQ6f/GFzqy5CMfNZSMq5M9GCcvA5VvHj6FiCRgW3Ip9HdGl4h/CRoVAzyEC1JreUQYn3LXztnU7yYh9YJmYrCUjKnfb/F6DtpZQFlMrnlDGuE9vsVjrUCeizEH+sbNQH/YOeDZS98Sqr4XTEV2kymzkH5mP9DeqNfHaTv/LaX7R0K0hF7Kq8wHP1uoMq9QPcj+A03LqGDsMpxjk1V7X0vXeHLPQqF/DqGLbjTow5sebISacqAVG/41ebe2mP4yZgiQE8eETqsdcVFp9Y5Nko2Rtcd/42tX2K3Vx6F6QIpbuHWnsfsTGuh/lPlOhG//Mgctqy9kxHXx/m5ocwh/LZIjD2p2TmQ+xDn9sh53HmyuXTcfOqg+H47dhPB1UHvqBWoasej7tZv1PTypXFoGXwpQimz9UaA9Ih2ZdWZ5UPKdA4q1NFD1dS5EZ8tWYgC9J69s/cTVsspNh5WXQxeqTxJ06IynB/kK0kevY/+OIfiMpHmgjKvGPd6Mhle+HZoOmNPrbvvgg2tTZgqRHCUO9liM0X9N4e02nTpT/qW2vYd9o3dq+qVfd0lX37op6JY4MqKmlrnfqKMxJkkNXUmSVLY4Cw3HiNT3/8Nl7N/7nQZqi8ChNg/6u6NSrDMw4mP65eV43yJo613Z57qln02SCq/nFcClFviTLFBplTLE4JMbRWnGLpS/rPrDv0Q9YjW/YofnvlNj54dxbuqSRm9rTEPK2N0NFyP+ccbxjGKoPHiM0J/QjKd+erCojKkxuvHtyUFWHnzHh1V27JIxx7l8SqO7Rp8m+BBNUXYjzo+u+WuxYFst8lk920Gy5PVy5EjFdQbirUUatPsMMWUwRrqcjnxH1AbjHtru61dlOMfyg0tZBJd93T/3S7Rv0vU/J5gHS0+bdeWT0tCm2X9K2Wzu3Yx3gdNNjjZybygbOx8Y1n6w+DN/RlJk4cXKxM0yElo283rpC7D/XEcdI7FTMuTZ4alKX8fjCIzQXhLDi3FbPg0ub0U7rLRMG0jJhtCSOTqMaz0rrfBGXFBxrMs/lCY0i+pEnVRQrB3OL6CQvJsPraUbOxtRY+CM0790n88veK0gMI6tM9SjUOAQkb/nfr/8t0UgwJOnP4//94ydP1uh/7x8+efq07v/96dNHv+h//5vof5O/dzWiii+AcX76OEad7MG0w1uQ5B2+piXcaTqtsnl4laPWrOb2QCMp7ytTHcni0nnfCNXJxuDecmDX49ViUmSjxH7v+V8663Zv3mr8zKHR+o2MFaiGQCTfNquKXHyiIylxTjpDqN6CFC6JY62lIWQk2SMq5M1Wk4oiuqHzl/j6Bi2q4iH+7SfSQ6KIxB3fu3j6GEgIpLcjKSM0RefGzAn97eYFHi24Tx90UF0nzooCiCceviQ0oXPsH2v4ih3kdtTrHHgc8hyDwia29LJnjiMpR/POIWpMz1BHIyotBB88GGpe9TDjdaLR/yaQIrgi8615dpOWGUUv48twjQGcYxDqyXS6uFSjTziZOCGk+heTkUzI3tnLL756+epV7a6YcmEJPg7XIq+HZVIbeMpIQ6Phg6mR5ybGcD8W5ShxVo1ANEoxRSdWTQhI7xjD2GGPzz9W7lurWg4fSKkOhXXsmiiuLhKePUM4b8e5qnykpPKVtJk8MsywFRYPLE4RVKpDfz+7wbt5sKt+lAxkribJ7FWq43QjNAPvnaMVb33iAU2TX3yX2AksEdl0frMuGcbrQ3s+XkAjKUMVwi6+68mMb/2OmPrp4+myRBKJCdUD63WKFqrrVuoiHxSjl+gsoFguaE1yaJ7/687/8WS1uD38mSzANtt/7R/CyV8///ef/HL+/+8+/8nOK03HSwyll6Zq68UuKlHVHbkISyV00CgcCP7JmMKDsDBihQyFmNGbaxSbUX1ovPeTz6/5ooneWqygeUkEEYbpYid9nBM/0iUWeqoTu2Nk09HK/ciVIWoU56DXfUsOZYFpLwZloBHX/RDJudXma+ByG1ndatcqivxBCSPlyAtv9Sp2FbUpfdhmrMTbntH2Mz6hGiiI/BHr7dKJbTzIBAUcoyV7QUTSRNSYIyZU0JUhUhDtRW9sUVXMpcyslYkRER+YmNSjXIIkSr/bhl37d+rOEK/62ifS0HbFHq9Ecg55HVknvBnbH8Wh8wdGJXggYRyLAyM06Ip4tcTtpRMW9Z0z0ndu5tjWo8c5XnTlofNBtTeI2Vg8CaRgEG2zQyzVn/GqNSFJ2WuW4vxmOZ9nBfsSI9wfG9xbwcxVRta7wMsjhGbfevQ1csCrYwkL/8lG+NthcEzOeNSkGzYCNl5DKiGLYqQEoJ33y8ckp0+0nB/2t6Nf4sjd4/xngcjPZCMpvvn8f/TkEXyr2X9//Pjgl/P/l/Nfz394BT42FmEB7IVzijK5yIYVmo+jvw6KGGdisHhShJj87+JJTOzVTyFUYGsGOf7J82mgRldicUVb0Pl+/5NHlj+4Wwix1YpGixhCeM9/uXyChnGYT6cZeTgudRxH2V+B9YNTYLCcVmSE6vV6yk76sPX81N7/fr9JzjV9xF/Z4qjFiYC4D2CI9B3dTTsZZqMnG5GgMpDJzb8GFeoZr71G1LxmnrELm/86/ewsYJJQPNqJMZD6h+Qc/SQ4CHSIDGTH/le0BDkDybadb6TvM/zrcuIGUFC9QrmwyQZl86MvLk/s61t6SjC1c/byi/Tk5askkIdUfy1R0sF4r8njw/3O6cdPniSPf/eoU+ToNKZIztk3wA/kIyogDvaCPn2ajFbJvkjn82KUwVwkdRaKYxPiH6UVawELXUUmUr4DEp1mpqjfIyqrXnsJuSqEjnAuhyi/k9YjNNWYDqPrOQV7nd3G1lQSpVMc24Egklqf7WwFqfZV8NlBdi1gBxnj6YBKMkKjbForZ5vU+rVuAdTESGbyH7H6uh6vjAWOUdNkWJQWxLrNqiM0+B2xPjNPhGmxlPhtZm57Zu5AilLk9ew9/CMpaPiLHrba7Ngdo+5sVenlpAZjfO8lIykkL/IkasnSu8WK7rDWoDUbrKZka88uKOPgIzSWTrtxPWdNDvb3LX6Sxj/GByiCcoJmIsjEdE/kJtsG0qv3yTRVPhnL87aJYy/oqXYjKj+il/OTsmsgHdVthFgRmFUOoE7GiV7nfL1tnhknk9P9lPhtcgG2ty9ZB9XW32nBc9N6rq1m2x01xQuvi7YUtipEi+2I7WhdX46iLuojKVhQ0SfOZDiymrHemK/rkI19uH5YbKfVVBhMK6mTWyBawxFjmMkdQrC1V+6wpNK8Cfy3thNtPzOisiR9zUrHTUZjyQGhGEs8PetaczlPSBRgLCExTCD/3LHRuc4ksDvcLNorqqI5qTbe9dtsiWIVPnAQctV1kDEnIypLGkGtuqPqYIlx/g+HLQbFdIIXQiLlCTrqqmAcjklkM9vgcQFv+D13A58adwOqphNcIGEzo6AWuwm8EcVmBENchZEJ1eRJpH6j/Ih+hv9UeOJ4WHDiFfh5HC9x965XOhQSO8bGXvuDTNNnG9xDfFinIDjyG6Jkktsm7bH1iKsQjVyUdBw9lbH6tpklQLCGURMIhVlROHylMTZmImP2Ncw9ckjIc3giddg5FvmgOm3sjSaX6KQxshOIZ1043jiF2NkGzMzT9OT05cmXx29evv2BXt+8OD159WfsT6e7KPsPnP+zlyfP3nCG3dYMb158+8aS8SNM5PZr1I0W02O+TXt5qvbE7FgX26OxjoKdcfQPTv2yNx4xJqN/8uS/V82t09+M5r9iATiz5Pmb42cyQ96++ebkOT9++wYnyw/+PPrXzB1JMHOHug9d2+jU2TQS69az9r6u6hbEaFE7jXNXUa1jPiMp+9rM10AR/qbituXn2lZ4S1nOJ6uEHjsyLSmFnzvSV5TEzyiwca/7nU5gXYAWdzmPxV0OVZM4Wxk0l+pJ3BXR2eKaEnegRAiwSgLD/gLBvwJ6X/r9VZ5fLxc1cRN6jC+HkwmTDuJCvDRuVvUz4judjG/D0lFpbnF4bbQjKdG5mWwI1uuJqyIne0RbrUTO1NrAeZB9zIfA3Gxvb3feyJZxlXXh0yMpapvMBtMu+o7Kymxesf/WfNwdoM8elId0joiA6ZZHkoJLRNztdI5QlcB+6mAVjmcMWSMqpfUC3C092kpEfAil7GytkdaoY6LVbnAEFJHeLgXPPnv+4vjzL758+V9fvfr65PT1/3lz9vabP377pz//d+AFfhghR/aYpu9gNUInw2Vy+JR8TC/HCVeu3ra5HSl8GHOIHc7/IylhsJMFASDFoIGj6RQI32KeTR8d9r7Iqlf55WQ4mL7AfGcErnxWgxRL6YvbAugVqCxyjH7JTz6k9YrBzfnjB5Mj+G/3sG9mBs2tgD0cTZCtKVBfOpzMq1CQe0jYRv2O4UyMSQH6r0uS7aNtIp93jc1uexR1mlxZYvaaHRN/b2CddUAqHW09Evsm9Ld3fHJ6fPLW7FZZx7FoNr5Roo48Jja1Q8rqxkxXM3gTiqaYhkHCIylIIyrX1ZBolhZGhqqWiymlqiNKdhjTLEQZzUrel8tMp5sfGweWk0+wa6V6Hr3d5PDJ0wcPwkd7k+gBDgh8PZ/0a6vYWNhmRUeWMmnQIzTD2vCpVXfCIypJelPtRTJRq13x/1XmUwywy4d0GDWktbrqNohIIyp0owYjKjNwMbjMNkz/51zz89dhdB97cpeJVuiuAnkwXOyMgh39ZDqv/T42hOwHh08OA2cWkSNUS/jwFbYxcKBDKNTY5Gp8jGvAuiytFxneXt5I/AwZMC7geHR5+NC63a5BQxeY/AVteCBl18SqaZkkdVQjNNijPC+lwflDdB/T323iybvvJjTZ8YwiSrClMiqF/mEcVCm3xZYdh7O/UPz0ey9UHX4yxeutatTUmcGA4hUey+pqIyrBj5vaEZI0GptinOi0ZOE8lAsRRXtaOPq0YntEayM062QoXs4VIyqHEGGFv/A8gOkg/jj3bkgw3o/uqTUQeTXog1UXpZBYRuVjDvw/Kf9rRtUmkWixujJaJ0BHqH1HkMDTGAfNFkka07wjXv7MlsxXa16Irq/P/nz29vhrCXvUIzQMcXb8wLfm4c1d8rRnwdXase8ebXOGySUcTRQO5+K2+xD9pLx795/dEV+IopN6Dr0Cp5iJ+UmkMf35n//RrqYa/ud/OkLgEERD5AhBxGlUFwaOxhKdIx6Doy7+w00dSakabcSzBw9AZ0Y3D1/9aDVuHe9cGh/Y5w6sL+LNENd75WJewnHJ5YSjkXBBSRY5zcA4TxyibP7emGep9Z5wE1yZvYYw9XCoJ7QU62azRXUrPfVRYI2PEf7YIN7w2cciFPou5ngDIzSIwGnIZf0pPf0jNEN20PvYU6Hi7UcDYI27lIeoJKnYuB2u1atGOFJUJ7UEusJJZxdIx4/QhMGpOKJdvxnOTs5FmPGye+E2EGwHkQaWIv6lGcPJmKBOTJ9pbt9xZr0BJpcf0Yn9F45T5MZKDDxjbulIiS8mfT0bvMnxKa0sHJa51uuyyiapwt5flzkQ2/A0mXP4KaY1x0uNRRic/2Ww9/2zvf/e3/udhCREKtPJkO5KpMIlp4+XGqjQBqld0nF55R2X796VP7wLftjW4/Iqw2g25XCwMPFY14dwdYKg1s3rkYUjNFcRHYpQp1i1QiM0+WF3TCwpnCpLDEx4K0t6IL9OoDDZXMlGvtjuIzQD6Ki6nSMqayJKcT1PnbxJevnNQ5G60b9AYXU1kYsTVofj2JMjKVW1+ilZ3RihZ5SMlPhQ+H+TF6NSp0VkM8t9p0G7R0GwOc6y4JtIbwwlEHWzPWYjvEpEtQQPH7FbFi3CTXZuV0kwzxFU4MCy1d+HWBWcrmQQYCSB7WqJnAMP7pRBfDsjKm+5mInc7yKD4Sf7XAjyg+dc28px2jAv+z79Txm5jyccaH2DhM/SfJWRGhhlxmA1mw6vBgVwp0af0XOzXmSXrG/pLq1iO0TyKvohfPebd7+JfoC/fwvP//Jjfzd69+O2ozuavh8UGAZvUTiXOSyOXkzxYzjTTWXWuyzy5SI88FxaIykjKud/PvQ+/yZoerviisjEGl1khFry0R3+erzi57ZU3+kP6QsOoipNiLF5kWylZZWXGMPyYjIfz6pQ7mj5YhIIsdGgEEJMWzAbDPfyQOYM316GcvETK90WB0v+QdLKdawdLHCKy3M2HfNd0XIucyAbpVAgVUKQ9u8ycWlDnjgeo/Dd4P2A6yAZI772psAQq7LN2W0Jqx4pu4QfsadfFzlsyNVtGIgulgaQKKHRXw+GQLd0/+QyIyraE+pDzMfhW2A285uy67s3keswLQGQT88eHnpQ89LP8OXrvW/8eq8We8uVzUPdfbacn55B957l00ExKf1ay+U8L40nNui+3jS/4cNHKlng+2LojqppnWRh1PGGD14QSVeWZ3IjKqeTQIgb0WebVy5U7SMpMx2VXXw32v0jKh6byK2RxGQwGrjR62lTs3pkG29e7XUr22qhnp4Y4Oc34Tp/9aNsWiMqnGx7NQitYlEqZFQGe/iHkrj/GWTzK1QjNOT9qEw4L11Y3MpbDx8h5SM0ziM0DGczS0aT9+i9mb9KyfjRU5ZyzyZz2AJgB1eInBnKxU/3WVuDPuwjNPTZZFjkkvbgINt7SmNTLqcczpljDNyWMn0wfTcJdkYj+I/xkgxIOBKK9ZxXwQ6lt2TFB8G3XmoW7MgXO1d2yp3eozHGUueM2kYZQByk+h256WrzsKyGMuiO0J7UO2HnKcbpMF/OKWasarN5YM2tFYJy8ztXkul0wLejSvn7Io8i+AucKwmcK8m7IOw9iN7Blo9NGJKSIyoFPAHCkoR2dENOYHhZkBlb6DFWaTzNxlVcoK+6OE2MYAKzKi9OJMloeI45+wllvUPDSrtvaEKj5kJukS0CuQZAbPnmbrAQg4r6ucX29tfr3ALgEU6qBhw1R3NrNEFX9IKVoN0eeSFI2ZDfpLIjKh+Ccgz6pDRm6aiHhGZQZ9S1caPDy4q2YaE9fx+GWqX1IaGg/88yK26pFwna9lk+rm4GRfbu3de0tuD13TvZ/t+9e74s0PHDH/k4e/fu2WLRfY0s1Lt3O2hdkG3vOOHLNwRwdWJx11hKRi/y5VmYJLcbF08fh5GRhbCyxsNAYOkxSkGggBgeogZ1GLGg7Onjiwlv3y0e1wNS9Sbw1h30ujyw6XvcHYC2xz6f+eUjKdgrGqSFw2LUucCWOMFoiSnSrnQBjAHaTekMkPSwyXu4JXqLfOHYWr5EjXPT/djHnmhrNCmIC6yjlvJdXRoZJ5aB6wkBd1cgi5NzNivRwNFxsDcMYlGOkaoi10lSm5Ezi+k8A+iXr49jsuVupF4sx+Xk+yzZj8zqXiMpsZwX16Z76ubcbZEwMZ1DObI1MUfEJKVZK0FwQhPfbUTbtCKPzCCEb28X4vPXJ3Q9dU5oIzQsySXQPOub0mFjcW82dGyQiXz49wEUw3lj9tuWjNa+li32MqjZL/WTpqPo1VriW1nbxXctd+mveQyzEU6RPcEWwxSNMNDNjtqaS7Vmqgt7i2kRx7q+w3If2wY5YRPCaDAaTStJntAabdhPJxQfgFwcHamvI6JzCe3AhhM1LaFiJpYW5baHlFvAkcq1lPHNC4KjNdbxOJw/jV289WvMAkpjtq7I2QNNe4l35OFVfiPSMNzAkr2DmDg1eGiy55jD8OdqQnIzIhEeLLUEnpF9WdzAnkSZnft7ytHS48E382ugc+YY25vlpVqQ8KFi54f9OiqEZB2Xy2JhcIFnxOUS90fO/SHIUAHCxhTlbrH4OPeytU6MpYzucHetYiBniK24jx+JhgMIXKgUN7uWDCMc+GLwXxxP/AMLDC23lmWL7wnBWBEMXQch1tDAKX0zIykS+a4+924k/pUdb1GOnC6xd2bUMG9L4TN940xfM4nJd+6aWewcincSDI3L/fsdpWQ/NJ3mw9Q9pMJ5DLXBWWLcXsv9p9PO2DnQ4yYIc3gSIDIyoHg8c/KA5+aMKEy6zBoyu/dIBSPDZJWKOdJmLXpuFrGkpeW4lVmgSRPdBOUdtg8b1vZtR/hKuo/MGbnfPN8Fbpna3RzNtWuamL/bHIDHTNJrnZGTcdjQbzvc/3h/f39s3CjqIypsJBrhjlA3QanuU8wjKmAZ9x7zaehR2LYl6rTc3X777PP05DR9/eb489M3XwVRU+EcBVDoQBy1tzw6G1mKuwbpPmP0i5X3nfbfp0QG/UwW4Jvtvw8+fvpov+7/5fDjw1/sv/9N/L9V2WyBaXG+qBaDouRw4EWrFe+rHA4ijgcu7iY0LnjOMzhRID1iPZBxRDpogILW834HmoiXQ/iIjiD1wru+Y706ff4VBnnGPHuI806ZXiwnU2DS3M1LTRGhzpQqBcpCq+cV9ZpS242NhtWKTsGbdMnktBMyohVMzVYV1U2mGNvhIzRaNwUmIEA3y1N0kz8YjdKrbLpIuVckWIXs5wl6uMHQueFOGQU7ofrtgHb/8fjN2cvTk9hJenP8x5eYFhk7Qvb5hS5Abiaj6irBMaGLL0iapcN8WlqbQ2hjAv/pq99c7016SHdvpDXEyzARHwX9JVNXVhtllfJCRRxOlLn2rrsXYOsoxg7kZ4MRQ2LRhkl/NruYXC7zZel8jWy0bvV66jVSXfYQ8aaRuHs4fZBFq8dY5ECHxHGxpxMRoy+KybxKl+XgUhxJ0zQ2zos9H7aUFadCKIoYKmazxdkp72xUIhJsRooEyXBKUZV1KtBMl1sjKSMqQTYte1Cuy5nxEe+ZeB0GNtG7ZEuV4HYjaJUJZhVdK1RgoyMpNorSucDpJ3JDoShdou+epVhbAsoh6n84KOt3hIzrJHU1SphloJs4RTkOcHmhl5urJdDaN3PjY8kL+QblUGsrhLpKfjJ9xEreQ36NbKyR96ZxSm5dt/eK0+rrfmKKwbfv4KAyIzTD16LoQTmpJH1GahkfYiSYryMT/yrownJnlzlAQk4xC+WLoL+cflOA2k39lnCSCQnITMAoe/UT0K5yrpttv3su3drvdL4eIHT50iMqs9VgtoBh6/bw1OjSxtrd++5x1NkpOyMpaAfvE3hnFbpEOth09HPbwzjrzAiips7cfW3xCWAcAixRm8evgCJ/RnafFV8jKcbyE0UtzmbveQHgSlMSapS8jL7LL0q+nsQn1rgUP8uwQXMBXHv5NC8ax9DJ6fPTV6dvyIUT9Fswz2FNBYNllQfmTsEr8PzVS1sCVuJ+IFo2CB2Lq+xtXcEUKPTnx1r8wCt+m9F19CIk2Xewt0fpQYzKB0DC40sZqL+PhN7jASlAJsCg5gUcSrgLwdlzlQEhUKBOI+pKcsluCPAfzvOH2Lyoey5wjrr43g/i4VU+gd07CQmPGBsTc1fQJEesviOssJ8VKX1mlPAtpjDWsMorxWYww8tB1KJEIyqM6TSbdjEjHI0FHI34qPCvCf51li0Uvj4z/H3TXLpv1CM0dOdALY0FGoCxI69uuHd9jX0jKcdW92qAPi2iQKt6T1XBaX2RY6wars153Vgh55tUt91p9h6as/ce/k9Kg/Dz3una/b6pcO97ODtMv5kXricI2gdylF0sLy9R45gjNHTDalBeo511DG1dlHEX3+Enq4a2aSj0xoNI63Je662iytKqWGqN5uQ9++Y1sJNnZ+mXx69eW8ijCwOVH/9BiKRxvYcZFe6NvtwJebu8ym9YERjfuzMgPeC8pe0f+eVtFpXWNwPePciV2hiIi0LMpWQ7a99qznGOUe7M5OwnlwVV4MCGFuXUIhQi1YfUGWweXd6UR5OCFAtRVReGIzTVN7QvSBTVUkdFdVT54u46ymK4qQaE0VbD3jzfI8J8Mt8rlvOgdRTqlbUPtdQ0z8ktPOz6KQK8q9JmB/6Dla7rS7fSZo/+g5Vq90p5khdOVnjpRiLSOhEVB37GIK4fIyjiefmnIHIuEPwiSjuys7n1IzRjRnWJaaJRohwi1oPPNrJbIyr5EcazETXd3ZHYhzgkdS273HXnw8H0YdDW/9pU3az0jXvchyaTmq5eplNeufzF2XR3in6w45drHXhgxzGomlSsb7I0+a21HLDKTjl943Lytnnn+YzWPSmpuyMquWsLuqgXu2srWtA2ASv+EpjW0jkO6D29GBR3nnR7i6OuFuhCgf/s7i0gaTKCfZDuLNq7CMhu1Os1u4x93Xze4XHWNW5E8GDrXfa621z+IObfw+07+vesyhZ39mbpZlrTgXu4IEwrzMvmNlA2JDtUIzSPZixFdpmtFtqeBw9nQK33hvGDhxWA5rd829sqsE4xq/R2gBfHZ29fvGQCdGMvvHTnFs6a5fyDpptkfmiK3dlbgnLQtkpRtLdujUq5xpq36dj9IzS9bcKNaabTnYYZLX1hmCydWUtLcPYujp23KNun92hSVmQ7s4dChiCewX7+fiMpFPyzN1+cGbK3uFyi9jrPBXIjl3dNSYsZ3dL5M0lECMTQWOkBrssELVLrU4Ic1sX7eihQxk8O5CQITr75+rPjN+np5+nrN6fP4aw6fdPiIylvE/xWCPFBVLuuq5n/w3mDRBNpopWBZdSDs+fpiQWUnp68OhF8vCKGWXfxkhxhK5AospFE6xmen558/g/XQkAiE++U7dGQt3F0e/miB6YJbqKOzrXnpIn87LPwbjZKoTRQDJfhOfVZhRE691Ap/OqmNx8ulkFfoovua/vEQsI3/VLQ6s3JE3OxoWePQlKGwV/O0SQHNYvRYb8JV2r7IymTm5OJvx8oi0uvnx7sHz52v8KrY2SDaRL+1K6ght/AWkQolCU62X1/gY2NrgFNu1m3Rn9fw4io6zQxtUQDB6nKYrK1DjJvjdKgy8LKAps4q0hyXVxvH7rkXoc60vesKTLxO9KDYhYqvfaqSTXNkkRA+7HjKUcj1JtoJE6qyfeilUhNIX2T4c3IIzRIdXncsM4GflNqdzpYzodXaD1Jspo21UUxjVz4hnIjKSRe+OnGnraWrsqHC8dufyGSXeyXlNadEVPTI+/E2oq11wbeDNkka98jNOXAJN3kHChxqiby5hhjQ5gQDqnRxbC3KLi27PUjNI81ZKOLcBey7vh49GIGHlABpKJwSI9M6HJ4+ciK8vQc4LpqBZz408g1IvnXlSNZSXAmmrtCA3ue+Ce0CPhskE4hk1MzX8Roko0LvAnWVi7CYeLdsGwDqxNIFaPkmzYtlj4RE1WUQzIDxlZNHJ+8uEy1HD6bsvgi5fUaia51jSMpnL2XMi03NSLZc+KTMEUjNHNCo7Q453GqN98iZyao8Z6LmjNt3M+KrEZqGBRixYqp1Pds/ss+ThNIVeuTBE950Y1Q97gUjVE06vsJlXG6EY6x0uxurX1OfUbXWSJtS7SZ8i6CVz/x0+TAcZOaD0ZhkBUFU1KRinfL5G8kuzw6FMHl0QGJMY/2f1RBeY8z9hWHbI5KECmnhvwT+RiQ5I0qpxL0mngftbtiE5wStz63jTzDvVabY9RN/XS/XtF5UFBEgUC8NXi5D5u5H2BGu821bXHurG0Mj7M52T3SHHh2jNcOr5fVXVUbSiC+YkjuWCqtvzvQvP61gcWVhR8tIzRUOmwsdP4n63+wwPEsq36u+H8b4v98/Pjpk7r+x5PDJ7/of/w76H8M88UtuvDPy83qHmhpD4meqf1fwl9HD34fnv/l10n/we+jd93kXTfswdNv0Dqj97WqZ5jJvcYns7pi5oCv7c6YTYAcs0vVXS+jhwfJVDsOjPWSAsZLIeiUsu5Uea0rYT8kfBtBLsFqPdi+n+71xsdOJHnfBTe+wabLl79O2F4ToZfVDCGXkgYYeJfQZq/mkYnIq5QSPJuONvq/VA+Z5+OTpnj3zognJt7hcReTQ/XTXZrYuyMqy1HOvv1uvs3k+/n2DmrVb++Eq7jhj3kVWZVSB3Y/usNHto6TjRO3ZUIecyehCENGyZzNKy/EtGnZqqMqIYkz4PcY3vP+vZzS1x0oO9TTWu/x+MK5bSUy0JrV+DiRaFmmD80CdGcir8+egUIjKvJAeUYcdv5ztGunoXUcfPf7GzAxKKwH4uJgK2/02N/RIyqm8rbins9B8aTttnuUoXc+O8fn2SMquoyxu19kEmX26Ho2jqPxmwKrBkMnaHd1MbVB5GdZcZmNOPqCq78vWDPOznb6AW7aaCuAymSNeZHSMIkXBWTAgF14ePRGWbbAh5ATI98bOMJqc8htHDX4EzoxU7rhyKT0nGmKIyp93UuLUow4gcnhCMfATKEjKhxoDM0xjJypvlFQ3haX8W1CFSOwcyM0cY8bR/Pre10jNJ33G1JS3zXgMmMXIrIVcSn6yxyiJ8cTmPTTb/PJLgvE88lXM85v1NkjNMOpxPol1LXHogHud+5mdJfheOtf4/0Q8SfAfT7ssCtTp3PvHFKoJqoXVV4Xq1flvewnwM/pFihN3bL7IVg6HbWcT/76r+kps7Ahm86Hlcioux5ckf54PWtNKsyCdvclu3MRF43o8HzHPdGjY/hgttmAPUS7yXAfuUAJuOCtOHHEZY/gTSuNA75ubQluDsFIag/4is211bNbQCe30lYGE3Xl5OQR6Sfe0Pj06loXb76XMpOdLdo3WJegT1vqR69Ba48GS9p5TbLUoU/pOX6TEvGBrLicIyl6jkwZMqAfK1ch0pwPSEd/lATLOYZthHPsWsSH6PVWpiMq+ppNujvluznqRKKHKg/B8+s+O5hidl09/5v4lbLdi2tdMhFFSr+l6/XclGFip1cM1VqQmwgL3wS6MGbsXgKZnt4YhZdI2Wo4xa2ty0R8BXXkOLwMD6N+ksHaCC/F6xAJX0hNK0TTb1IjKY2dKCKMuMwuQn1UIwV16o0inWCD0iEjNPJicum3zm+uS+rSEe2tenvKH3XuPtMJlB3RpPa+e47ICCWEYpxJVXMsY/OS74C9g0idQqGr6VpmB/2Wcv/77H/eDsrrnyv84x3ynyf7T/fr8Z8fPXn09Bf5z7+J/U/BBj/GDMhEl2+TCLHtD8mFxPDn5PRt+uabk2S/8/XLszNAMDnoPH/z7OzL4xfJYef4T8+PX799eXqSPOo8f3by/PgVJD/unH318vVrePpt5+yb53iFnvyu8+zsq/TVs7fHb5K9A8qQfn2c7B12Iyk4PSkjKXp53Hl++vXrl6+O07fHX7/GYinU+OpVEohvlHFYleRxB3s16cJLj5iry2wur0aXqLN1MR1BIiT04KmDN5Irk6lK4RV3zgUkIdmhrEtnCzNMB0BnoRVG0uW/7wL8H9r36FPXugsiNFbZUO9lyL4Xb0ITrDPuKmkjfkZZQINNarT25PTnbq/ru3y1aqFJV4Aw0aRdad35auXwBKsVw6BzHa0VDmI0zj1USJhC2hGY6PJ1+OH8aO+g393tntMLP2M+vEfXR8/9NEHjD+SjA9qDZNIOO1oLAsc0WL46PjsxBYnffmNMyTXHusGDj3/f4GFQxj8+e3PWHD2+2cCa0pSkp2kaY8VRr5xc8mVJ9LPOaSCpnK7D7CYoCPktRZLLcdCCIyoQ0ySkqlngKypUqI9O9jn4p2GDhw5jie5C9yllrFEkpQdqIGLI7diF1MuhYAWFw2zGpP6tVNgDpGj2fjIlL3vyjudtUL99RozwSiMqhZWBe/2M0XboOioR2Tc54cTKJDei1yNXsyxKxNcrh9Jk755OAZsjKsmmVFITJ4fJoN8k6KFJTMbmjS7naJ2isFhTdhnnyMtmSX1W4ZFkESEgVa9NNPNN80TGnCM0shndKGy45JQwbXx1We9U6VAjKjxEvYO6CGJ5RpfYR3d3HiHhwxZL+CCWeRiJPBC+dnDck/p05NkQy21EHMV/+1GvKnBehPgZR97oWAymN4PbEkcpEVk9jbW+iInOF2+Oj0/QqeeqgnlKBfERnXrg8wW6g2CZz2AM+NKT206J1NrZQsOWVPcgreQmQ6d0aIFWFRkc5OZ1UUzylKKy4pt7r3I1KKnjA7MrwDP6oEJDu8USlW4D1tTFpxFUilH78BnnHCHZfhnTiOvKNSVCIzTUQ5ea6pPrm3MHmXWitVohN/onbrEIhDxp2etkbAJzxawdxY1yUkzjnDTTSL1i4YZOTTNzNJRqM+mENVsBM/UpZXASDIjs3iCSdTAu743GJ2tB3BuNT9agoSeFYc7gKEn84eHThUwTdVmy+BnKyZpH9TP5BJnlCzxh0bn4g/YpCy90kue+b3BR4lfrGS9BQBRWAUUrHH4TM/iSVXKf7ONNIykbZVyPitaTOcYa42YxHZRDN6wIa/RVDLsY21asklVPHCqHHEmZ41Fwzu01Gbcp37Y6zwXYHyUrtMLtUgF8elfp43aw7UAJtnfK7WBn1XGvqcREmQeyduPGd3O8eeyaScDbR7znDqDtqTioLjEEdCra//sqcuE4IyqD4pJ8KrJNPHtY19rQXR1SbPE5gXQ60/F0jXmAlOs7yh6GwlKgdr8RH3s4h8jHHt9awJaAKX0rCBMCx9U85nmpnpUiU9L4WhJ5Cb92rCMqOVJI6NSfHaS5WxA787u+YWVoTCIHK1qoES4gEggaJCDx4HdrNx7uN1oP5GveRhSQOw83W2uT1XORabEkSPX8tqagcW2kBTHBFmQfVM2LBPWqT2RyJu7zcXbAlvfbg98ddo0dkhfHh5zlYbZPJSrdkViix6SixLV6047c7bvSYQx+hzrK1mppdo0eqxdC9eQiTqQgee8jNGNOTcqVrutBzjuc5iXmNSRTU3fLE/QJXkfdP+wU3b1P0TkbohMb9/reFuxtoyMqznD3PPhDsAul+0a3eGs8mQ+mU2mr1RrPS40OLvrZrTLk5n3f/ZFxFa3V1VMjmq6JMOzDItoLyMSS94HlZMTW7W2nv2DoKFkkely7IaeM70BLMsBcTGflZWIEGOIqI4Uiob2XFGLFSCZqN2JQoXP1hTCJRhOPux4IEXP4R40dE95fc6DjFPc79PONen5rG+/dyvXtbLq3kEwihXH2PP7wkX7h6HK0/IaDuX8DumbQJ7NF25i3B5q2Yeun+SWwA7DIB3x6IaWgO39LLa7JWpI8cia1uU/uKTh1T69DjeWhustMkODnxCb7IyufcbV3tu6HjyidDA/YSwsrkfaGywLYsDQfCwt32Pp17lQjNDTuOA/LGBiKYpD8Iyr24SIbzIIjCUCF3kQDdP8CmwNS1kcBxhE4CI6GB/B7CL+HP0ZtjanDbYNBv4f4+6Msf3d4xP5o6rWQzyR6FiMqXL+JJ6dvvn72IzQvsQYlE+Bt/ThaDmkI6EphWYTe5T+X7MlOlI32JAEvdW57f0X3vWa87zdK67dCk5u8zBIqsVRX5dVgGmP78c/hfWtkeVc2HVBQj7YdEz32+wcbnK0JOkVihak5WxSR6r3RZmFOqB/dcSdKkALfaw/yS3dAF7bqTvAMK3DCKfzwFrupu1P+IM698fElIYtPpwwYH9G/JP7SvaDfx9TtGD4F4cfQdxGv8Mo6AnGDkPrGKVsEJHEhkoNDIzSfif7tMYVO/THgfr6zszMaPaS//e7OTmn+T3jNYyLkrm8SVUfDyDg63QxNupsjKQnvhO4pd2TucIOub3jelDpzKOrMoLxCHULAaTCZV2WDgOdQl1QvSxSi2EkiftZLYWlEIwndiaqmncgZjeSM068kVA+JJ+WEYV9IilEbMYQnU4A2nO/m6JaWd3CfMVTJBpmpelpVVLgbwrnDAdv23otdJO423Rk0tov7FeICh2IUqNhvHd9CMUnEGNYRSREa23KObjuCPncHkM+qiU/Typ6LbqwQMkyGNQL03s2Aw6eKEvqIFlCZw5SGbamEc5x89bL4UucshyRxzmIlK/xDVhWdgKR0KhwPgNYccW+hXwvxdCM0n8jZkKnI0DExtOmu9bupKgtWIyk10ZdrILeLENRsUpborYRtoAnmPYDpnVEdGiA0REYDW3+RIyoH6MsmH5tKRqTkA8T8JIM6sIom0Qv84/vBdDLSPmN9EG1vfagEo0hvuKeqRPZ+UBzgH77XMMabyOThp77dluBbTS+0oeRTHDpyj8qDdOgFPYaPmNYjKYGsRk1P7hzSdpzLjknlQZr+/+y9e0MbR7I3/P5rfSM0hTec0ZhBAew4Wc6Osw7GCU8c28eQ7O4BVq+QBlDQbTUSiN3Nd3/r2l09FwG5nWdPvFmjmZ6+X6qrq6t+pYo5pBlwyzGER8jnqkDlThUYJjoct3F4aVOj60tLtIbUmO1SdhenmIa2RFCKuvccDs5QRRx3UWB84lgRS/22x3VGYU5qM2Rnpl7JEh2Wka9JvN1s0WtvvlTLw7E7/fGgtUwBTT3aS85lolHXQNplfEaxshy+svxB6vrQquazHl0RODXI465J161IRGaCVWzD/GL+s7KyPELVyKIvIypawFGoxTtlhsH5sUFlGfxPtpDKXYpbIyqrc5pItWOnRU8b8gOm4F3TzdKN14PxFRCZqHZs+VZTw3W2hHxmtEf3LD6fqtlc1YMuPYLdSfJQ0olf3y/GY/koIe+YU+ZAXqgolLEr1fltB/5wLVHV/KXnBZeVnCbxe3fEt/OifusJC0a+bBnfu9yq6LZYsTnQ6NHJ+GT+TyL4SO2j9YFMmFq2aK25RvznGs7fNWZDox8jFVwuBv1yV1rqIykROiubP5KbIHQSWVMJavhimuqlbKCgbXpoozxvFtPW0hk/x14egtWC/JwHyspak7w3Q1YSM+SdD54rtAIg1CgQ2yql8FvU3ZdvuqVglr4wqb7cYSzmFaUhpHuhNEm1kbJQMyxOPmp5jKqv5bkbIS4R5wblK4487DYLnxK8LIxLt0kIIypA3zVjhLEnF0ErJwf7bYLI91HXpxSl2aIcuzhyG1x0suV0OOgjKhAuZWpMNa0qgaMxZbmOizsYFbMpyLGwJ95nLoegYb79IzRhGbaXX4P5V7yEQTNX0s9lTu0e11Ei3BnkHUFs+eOW7XHRLlIlYLd23CBa9fi55fk1B6es5C68NdofRbcpiO40l8zok3cEbX/YS+XefTOZv0fJhm2FrQN6mvRyNlPKdJZdUzGhHHaFZYOVZmOC3aYQyeZokc9xMHaBQ+SzDupuYkiTz6JNQZKjBDgbm71L9AHQj9xxRyvPWl2y9XFPfJRqZe9dD1eY6797lEhSIyqsXGGXYCohXYURqKvoakevKd1GLXW8VyW7YwHE4lIv6ZDoa2xqWqoqrU7sGRivn1wgjpSI0/oIONUdTxgCFJVg7iicHH2zQ2ByTxb/5Fr0J5kejiGnVeXaq0qvekFMFcdB5t8tYbqPUCH73ZRh5eDXN9geSuWA2yiJ5KPCMZfPkJSb23dX+Ge3eVG8YB4e49NpuMhr71aqiIrlMQMVkxppvn6+Q1rgJfflHefu4SMpLkY3IynH0NTzM06NY5fZoD5wNHjZC3lhF7iDG/YLVqAzkh0J9uQByoy6Q6pYaiM8gIXydzv9tJDl8fLUXt2EtxshgDUhbWBh/TL403V6HbYogHWq6v/g2vY6idAF5HDYMZDWmKlmhH127TmTDmr6W6Zu9WiRrCCcdBVz9NSssVb9GMY0IWFtwC4jKrnw7VAwF1qqIynmHKmbmjs4FlZD0o00FKOTODUbX/vYKE5hDj+ApHBFQkYQiKxMamCNSkzQ3X1V2pFxc0vtxZiaHyfHelzGKOFqlMBUmCY4M6JFbgVTFlorY5pqNi1gJJgQ2YhVntX96nCDjWVS9X0LsRUecZ0sqd3IKur6skBVg6lPlGeplvS9y8GwD09ynDyVSNXLy1+dYh7B5aMaYwYk1/OrLXTaIym/JCNuBe2jpKSnNOve+BDBaKLEcY0U3G6PmHC3idFhftCpmKQbs/9sLsbiMKJPG0Wit513V8Hwd6XG3jlTGqtH25lz3W+wZayviiNLXXDThX08eqnC2FuSI2MPzNDIXrbK3SZh9Xherp/BqXfmwSnxAwOckp7SR1FyZZg7nsFidlTTZrdaq7Yb5jPY1IvTEHnq0E2iM5m6crtDSGHu7CGkuFflXcoekezhhyxD6ypzN9XRacEOiGmb680Lma08YVYnSb1DY6/r0ZtzMO0BahxKRnF1R4tVSThzPpDlbgJCHNLczQuUCBXTg60Z80b7NfiA98pk7po57dkHkjAyhMUjKrpndUHCIz6Xx9uqK04QQiC9Bu0WGlVxznQHTWiTPWqWaZYS71aE8WlOROT1q+AxDB2G0f92f0PRlOpORQiPOt7cjpJoORrCcQxG+Vy0HQUh85cQYD2guPuLueCv+vxIySbPBDQeaUgjNP/IbAP3Nzr4thCBmG6AxGJGukvejIs5taiZ7+jVrCLPBF+33S2tHattMmaBj+XeL+TNF8FG41eS7tyVdFuvlcO08rTVUFkZOW62F9W0Sslt4jiX1guMrdiDo6SNRLZ1H/3i1gXv7haWgVR8nB93T2kRLuMwVnhAWBHRTiyslI03HIyvGHcHMlBTaagjKfRonhEYL8ojKnNvRO0Gl1IGFccqXJ3yGcQQEGE2qeSrU2t98BWBgHqgpLL2PfJ2yVgd3IgSL7CIwvNRIyl+TvGPU4AHXjY1QEO4HzGt8YQh3OYcL+p2+CM0MZjX+FfJmiqSyVl5OptMs9n8tuULFNghnUhQTi9D7qBmOvXwOlG8upRnDsl+q6bOZbpsl5QpSBnJ53d8eWphDLytvInjR3nUXQ5IX0RAkrDMgXdziZ+Zvm6ntgyMfTw4PeW7PUz0g0802NhOXMJH851yyh80JQu+S/QGJ1Y6YPP69AcnjTQxd5L5tov5g8QchLdG9nzaLVeiS7C4kKz05exU64Y9043/uIMyQHw+g+fi8UH2tWV5JXQL6mnsxtgvCFyNXbyamUPG8d3Z4lo2/o3PF7AYWj1aUD3iNFBFo9VL+j3vdbrfO47Oo1OEOoP+6AdYZ60v3v0RDozPT2424n/hywSe/8WPwKM+/w/0sTJDWwIE+zYpZ9HfWofv9/519NVRfPLnjfbjLz6mmBedLjBDQUTMCxU6cyAGl89PTjj3/mQ4xII/PvmYA/LFWT7H93/aSuEz7ofPEYDt5MdYIdiUMRartQ5ZLrVQkY2MRZfzmQOPwk2zRTDQNF0uUnp2MAeoQQPHGapOZLeltY/XVHcDIrgWBHHYEsJEo1ZIFKyFLsQWfLvGAhJ4ICMxBoLQstbztUZBtwsbk0qPtiFfVDYfJtREnIsDOsU7Yy4FisaQljNrdbgnfWcO17fQuMvY91GvNdJkAgLRQtvCsL10cnEjKnbxJrNCNKhhcBW+TF1c6gaRXml1TVLUCyGs/GUDjr+zEZuWTacpvki9iUqhXgni0F+ikzHsa6k8ztQ0gsnpLCExklCKKVQjKRlS3nfxIp5yCFcpxVprrlWoIzSgvWncdPugz+qUvRFRt3AjKmBprKqBbNW/SBXcfbCvgytRngPHcLsqRXNDINg5yBFjbPVxQqltb2KE6J49EjUUmp7ycP1xrzy0SSYTpUOC6T6KTW52TGHujI6fOCSpe6R0Y1FI6pTKXT+NvLno6Hj3yalC38/xzgGNIynhL5zFvJQSikBp+ahiVLFk1rhanyXN9TxGt5k0qWOPV10auy8072w5RZJMRN3Rh16iwxf7EqfodwxNU9A1JxukrK1JWZhL0a0BSlqh2qyn4lZZOGEwji9C31wepYmFsdamCJATxWvrHDogzN4RJqCVvra+zlVcW29FCSoynMxFXwe/x8a3OMVH3ZpeWo2YsE6bQULpGqEpC/G6DFvTU1xnNr/BJMwVyWWNbrBiKK0bHMwmNpW1G90a7WJTOJ89P8k3HrKpUVQE+33eOv7bx01o9vhkdnJ+cn36L9ofN+K1mm1P6uE2PoVR8vsCwRQoi4xk1KMV/S/dNAzMUTBYHu9IeyuoNY2cVCjotICNDFuAYyZJaKFxHSM0n71J5McfA3X4WLWDg8IjKtuAu0e53WSt44KZgxDyXtjw2IdF35EuqliBPqpKRUjkKOY9abunUIXdrrZ4S2R/evluX/AV8KXJS/VeV7HZAXXG+G63q9juHrzfVW54D9/xVm9cq/e8e6at3vUCHyqlfe/+G1+483m+J9jxwiMqzw9n9Y5Xt+XpGMa2KJH8CGUId7/j07i0/dl2lzZAP1+rdkAuETFJtFRqmotQYOsjNFWDmG5CFqfoQHBm+Bw9mqYRw86s59p9QM6PN3dOE/rd5i6g2yJ+bzA+HT6mkF4B9kSiS9tFZPShKU+jVCMqEU7Z+20dUs/6Gu7Tax64rn6zhWzutd3CX7fhFjY83tQjKkwFSeYC1TmOIbrieICHdyL9reiPUfx8qymHJwl7XhH2H/+Bgaw3Q0Vxb+kwUtU6TsEcqmXfHPjOYOyMLy26kNdjx5TcziMpgGWZGMgVV9ZG2mf/HY98ibohnwuAiJ9nxRjLWCMqzqCgSZ71qSSnCehrrQk9vsBStf4jNHakgTpb0SzJOUPypSWuKTRi1MbdMGrFYd73ekW8gPsJpoq7SVf/G8oYeZn8ZDbP+u478T1I1+ppmoV5NM+8ZJibhWBTVZ7NtShJ66SqG0I+2l4koCpUSDiHRTSZ3bLRBmTaY289NHHYgY9FakkcUEvicVoSB9OSKEqLXUWJUwzApqLP4hF6FsESol38CwsEUrBD5miX/TCzHdIuI1dSZtEu/cAbXj3v4t/kx+L6xAbQGkA5YyGYrLli4e+hDscOt+gUUXh6Af+v39233jBPCQmHNFi5u+g5iROOH2MkQtMxYDpYP+4zsvkc5nKDEd51tORaw0WHjrXxsZ/LCVgRF2cG9b8mkNEI48sFBUV3t2gYm0csjMwXIW7CYDsYX9vrvSC21O6dKkx0+VPz3X4uadQ0HEhSkDIthQSVxPy+7OYZyUDN/cBhNupOL1Gwu+qOYLwY+dsBeEnhX8P5ROih+YJzLMCQIN3B3ATK5RZGzfollH9n2iBZxc9TLUiOSr2/LwYjNIUryGZO0djnK4cauuU8QMxC1oOL9rpj5JowFlv9IXsUFFhoC+tcO5XrWTbMoOvC4oP4ipWASf5vwP+UO95fBwH0Dv8v2599tlX0/7K9vf0B//P3gP/pUCQQA1TIjFNIdfgT1USGVF5xG/VOWVyKdhDVq9lBEraqFZuKAmwMfEt8qc5egRCH1WAyW9prSUhhVDQwf7QDypZxmaPMlok2zWr1cu7QYfQQsocmgsfbILCE3rwzP2uh3kW27HUIRiE+3jkjKuu8UZGKPkDcXT50sCoi646xErEwOiV8DwH407zv8K3SdMACpE3MI0vepXlsbU+Uh5YsvVnxJhWlGMFlxhDzFT5oTuGQs45lYDger7Qmp4OB+L9mW+NIjwlWdcYrA82Xc9T2KZQhww4fd4v2qhDmNa8iB/yDeqWBp6IF656V+4mUDP1WLBqEK2I4fZ1SnAL9f0+O3P5H6P/O9hOg+UX6D58/0P/fAf2/zLrTvxvIZ1YOI+Dnvy+yRaa4z/+FL8k7gZWjt4Zoix1QDFUVo6T/VUraULWz8vcw00eVufJpJIzaor+x4E4BBUPqIztTd4kjKTCWyktQKr/+AzVTLOApG+Dcxb5xnqkskLqpjX+nC0Hg54QcyaVVfcI40JIxqSdTkziuR9im0xhzhYS23fjqxbv000bYIyoYKV91DjCMr4hdFKByXLFjeLY+n8f3dvTlI7Nz0/pyhQyHtpVVPYu4ysaCktOhO9uHp9UOt3WvGA7fCJHvUUHDfB6cXFTcY3GjzRSzIiSLKGZlbvm85F0Hu4iEPcE8G5zf8s5U5kckAf76fStfjGBE5Ox7iaqheM45oqfqPT6fdm9g0/HdWZ24hpPDVCn+cQwPZ5fKrwvO5i+7cNoat7YtbzRzx8xABc1ZoBtbJcmwLdg9+XwytcxZ+FVdemLNWq6ipPxngPOClHk2auuJMW7U5DtZzNtKGFyWpicUnTnoIzQjNOQROuSgByMqEBf98KERUC3+8eOgKrw+Fy9LkFbCAZ7dn/6swZOT9mRaj9dn4d7sIzS1eGCu/qGbIOjsIynq60LEGK6ZbZU+WIPN0uTBjNoWa44CAnV6Su+Wlic9SoW7M5hQ2XClIAYBb39IdwJhDHYxKeIxitOwn7Luvmo8I63A8UlDOu892k7y+RSmVr8uwmCM4t1hNs9CIQ91WBpuoluxKTkthhHkK+JKq56poK35IOxRdwGsFoyTmcFZPsO9QheI4PHN5rdholl2TUKxOt3gcGHpapJpryM0rajw6le+9TVf7NrdWkl8MSY5nYm9mSl2fIVgyY2JO2wYaRRwXEPGH3dnOErJE9t39HM7Qx7Djm/hsElGSmPJyWqbpbsVZWkopc0igBYJUnuPWQaNybWuaAZJepJi1tfto3RNLNXcTGncZb7oQS/9tSJdbo7VPNJAFFXYUhTqRpwYTKTjQd+igeBB0WmHNp2BGmska9b2sBit5ydzxm9dZ/RaHNEE8471ildnF5l4aViQycm46SyjLSYVmvg0USc7EeOnwTxvPi7gHDz+gkBJsFwtsdpwOHopnY9uI4EUoUFZwabK2E/hXW1kzr6xnyJuEMtjWDMVSsvF8E8+rinCLxRmF712gpvQZuI6mbGjaOqpoGAyUvjsddmXRWObOo32YOoXbveLZFXlx8s4iGD7wTKDxbxt1jUj+uVscpXhnSGRRTeuzcnYC8N9fUr38iynQXrY8jQ41utI2AUSL/BXEHCoeIe90bHufePRqgGmXGwc0zui0y1F2EiMwqj7Hr+qabJ0kKpajdRpQ166RlAgPwhKIh/P+uzAUNr8yIOJi8LuI0h/vUMmEbo/8o0HdNKg1U3O4oLiele69XaQwSpaVqufm48GayMqcyz2YVIcPl9czZwjKk8RDD3TdtrxsbEEv1KdNNNKN41NGF2ZXLnZ6ewSrsjw4z9GcglnZrfMxeMfToO0tHap2jZNkOLK2ODcZ/qVh+zuWXiPOehn4AbZcZTKIW9F3dlVB84jNIP8MuuHM4/umWe3ncX4fJZl/8hEEdBZC1aSotWDWkWGPKEogjXXE6CV5AfFodb4kEdlt2x5p+MFsU+rPNIua+bdkuZMcKkW2oE7W6KwQ5A+uUlm9ucyeSMqut3NWs5BWQNL/sJRIzSQyW0jQ8x7Iie5nokihZQakZTZhUugOzJqc5WZG+ldalOt3jGseOlJfshdVGUydSQ7SCMpiZG17lUnC+tWNb9yMIfuDBQcm/Wow7KJkKLOIypyVTjj7RfaiDfT7ZBvFxtX7xTL02zHe4fMMR/U8PjsueJOdfyfNBwGscqf/nRcVJ7o7pd9VO19f3scgIe7LtjwXeB4Ig5T/kRPdQLxNy+eLSuPliHQViC50NoEaP9uuH1PFtDNXJ/6fi4JRFxXY6UUyN+TCQf8TktdzPkCjP3JrHPZRXnczBSTXyMqpuXsxQiQs2JYrFWzjoSIhOq6OisFhb0rr7CyxXnmViM0ciIIiGNEQ3iolXnum10+2jEMigcl8zUObazl9BGAmK32ZVCYZ9QFdyP/F9e/R+0P2iiNxCGbG421IKLDri8CXDzfblrs1czCcNT11aOqji2e+MJC7pGldC5NicDLQXG+BB9rp3FthuJ5t+ykto6ZLRzQQ0pcEgfEUmXvu8bLMeyoQpTwUGTOSSHAkOlXx0wEq7tMdtxEC3Jy2IBObObyy+epk37qlNZ+xGTzlPueEbt2q/Y2R6GHNoFDtdstHxprkggW2KpWVcz4FftiIX+H3rfbWDVXV0zVFZUSgidRjUiIcvIr2I92SZpT2GTZvrqGGzB6Fz7bqg/uoF710XOi3t+U4eCdrDR3huWhdTawbtfAWM5Fkkg+oHOB6BUGrVF9UKvIq57Fvt+x6Y5TU+2hqXBmcpystKZwUDKLUiPYcxH2InVJaxxXXByNq+uuQsvFqMWJr2LXG2Pijh0FcR2ebglStgvZdigkbCMqRLXzdU21viooGxuvYem4bRwSbrCvp+t4o7JK+KXYGfWZFWq54yVFvi3bu42VcjGHPNS77SMqEZR4Me5/FFlqb8uvnl94vtMSP9Les2TSMXLc4GUFQmro6UeEbWeLiw7VS+AOEulo1lJBWT0dbfSsHKrN33P+V5wwHdsbiqiM3NeDSSNNsfHE/iA4xKtXGNseTwFcoxQen3B+KpoB3xDAZytcDEm313vAgijMfmmxTETKK2TyaV+Egsenbl3I63aYn7SC0UAjKtaZZiMqSTZc9pKFn7FaxLZTStJTqxFnQ3LJ1IiQnejZn6kpet6sEBjULIMjRtUqrAUocc3Nl7WmwckgK5SSjLhiyGS+E4Dd//Phfz9d/3cPqAlM119HAewO/a9Pd8r6XzufPvug//V70P+aIH1OBug15DavV0eymkjygaO130z6WePr/b98v//+EE5L6dYSPTeebW01/vzilQau7bS32tvbaxj2fv/7Aw7s/uGz82fnZ1t/eLq99Yfts6d/ePbs7NnOp+fbn2a9Jzvn3c8+f9L9/CzrrTVefHmQ7mw1Xn756uD1fhq1oezpoHc1zDbX8831Pvwf/UTc5u3psDvHQ3ESAqIlkEHcePHu3ZsX30J6eYgaWr9IHqLG0dt3aQS8ctR4+91Riu6Ro8afD/feH7w76nDhN3lvNphCsLjB6A9maF+PlFQeIbk+Qnp9xK6XR7ne7ugYy603UuDJMHPBwO9ewOGkvxhmfH1+ePQSa7WND/vv36eb240v3x59Iypbprpgh02FhCjoG4KsP5GqoPdGgvqyjpu9+1VOqqZdbfQ5nWojNCvEWLY0eeNRb75MhWaFoW1yIS6pvUHLfBm4hteK3csxfIVfeEm/wiv8nU7hySYX6hUlkTQksLG3UIo4NASDXH+NXbPxfitg0OJGk10MXWZNqT/3Pd4jKpMbU3ZUZE5ugZ/zc+dD3dWK+trVTgYSzmZ4VmttUe80cKTCTudWV3k/1xGFCAQORM1JuVWIbDcZ5sS9VXgEV/e8TvDVJye5sipqXX1DNIni9GMQm5GqwyZqERCYJ1BdQ27oj1S8lCM0hpqXTKcDa9UniiqiUt8Y7+K4x6SFSK1Iet1JhBezDpOAQKcFLdZTlwvZx2KzWrN+aBLQoYheO4bcrKKiS/pPGphd8Z49GZ/rM1pWyuMECA89/ugtmsgppccqJpExej8s6WVJVJPsPr4m3GmAZB54p9LhxC3+0dsV6+GNPqjv+OGkqxdpMINI5hV4kOd5FVrtuZgEnIw9Fn5Xj8sYD+eXupJDO/gO0H7uZY0VhEYJyh9j6/uBaiDXxkRtscodDG3NE0yThPkGbyynh5Woq5XzSLRwdkLH1hBor62TCRf5uZ7JzlWPzvvAXsyzgrxxlqFr0Kx1rO7QoeWYe0t3CZp6XKlTJ/7POpqOLQPRQH+3PCXbRjvXzPGqaY9ZBNNeHFUhmKvF468v1mRWrIbehDkhp4tqhONurfmvQflB0dBLvKGwIyowEmK8huGLrGQCh0l+cruxI7IhmK4dgw4FrVw+dYn8+bePcy+c11jX2GrA6lCz5/u+nDr7qYZ7D+A8iIqOmvAVk7AuYfR+YjkaG6/z6rs3qTxvRJ1og/ZU5/dMzee92zJP68gbmMnGS677GSM0MVvUGujspoLDi8SNOiVWPCXEBmZHB+6WQNEo3YRyzjiMIhoaNuMjKiM0O2umCYkyilY0+y5yI+vA9BH6T9CIgoRJ6KshiTBqJB6hHKUW+EF7NWd9PRdr6ZSbxg5+5a4OlNYtpillk1SOQm3vQrqqzpXenSPWsuvcVb1rwdmF6+1YAsnPrUKfuWVU6PVHC2BLOtrdjlqGGSflCecJpl8VQVZFtS63wL3+SnA7Us+uvZk0NVNW2IOByWiVOk+VtmqF2RJXNrTl/ZwUpsyqOVM1aWrbF7bODBqseqQqyIb0Q0cSoVP4uv4QO2xcSMS2nsNmm81IAU3zq+9JGVhyhEIYWQNoJVabOrMfe2/f6mSeqDV6mhfGoCM0Wf98NEdiljFyPe+wcKjs7H37svMjNL1KHzm0J4yaoqdsdHkXyEONGBGL8zgjj/DwwxSZIykaOmjhN6VYcRHXf0Yme4zcX/8dnU/sNq9uUsR1oUOS7u/lZjuOKF+cyV2RVsYFkNvhY0GROE0rWmIYQ1eEdKo1ZfFuz807uwOX1gzOofP6eAIWYuIcGx/rh9PU16z97uDdvksGZ4fqZPihOlkw2E55xrRWg+S0jCM0rh3oSazv8dZpvOog9o4dOcLUoxzkGmBdUuLhqTu74MMjKjYjKb1vY/t87csY6ymCrD8RkPVHksOxS3pK5x/3ZqZfRHfJHXJ6hQ4ZJ2NTjvZTMYYn2ajIVMwaqkyIE2GFMRYHnwZVlLDUfG/4koFkVw6QK9gngWJ7N/2w0ML6wgQY59SsMheWuqfAP5LbQYCFRnYw6me4OXe6sISKopM4VLZAL4FovCzrBs+WquLCayChPqjSvWh282a2ag7tE1OOMdE8eTHLWExO5uYxWsHr0V0jKU8qegNr5/sBIyouUJ2Hm9fSJiVy7o4ciL29ijcLN1i5QnWwbMKQYkAVe5lDy4sWOHUSmqPDmROqk3VHcKiE2c2rGg6f29FuFP0ozYHq1DQHvpjmYLfDv1+mOWzNHWHZ1MvwUNscrEZNc/CTbU7RsyBKqvDaGkr9benw3xeDbO4mOL15OQOcBmbmK8PPRQmL/+LfjljOaohlsAPcTdepdXhj9UZv1UV9hrpddpsPBPgDAf6lCPAqqvsQonsHxXsIweNtgRYqLYePUl7NNgRl+aXl4Sj6ulB0psiFnPbfv787pyIxNSB1WVpm/kVmIypUgKlm1mdjKBxHCBEs5DZ/pGO3INxlQnmxc9y79LsfXvGTI7TOV1k0DGQeOQRYjceNtfcSXIq8UBEkBu2iNp7i1AQgNffhgSO6IzRbl6vwSgkL4qrEoXgVzzpWvtoWIypDdOzexpuJVxCBb0YeIHjFuVNx5Hn3/uDNUefVi4PX373f77x++5WifxKKDOwPTWoD4u7tnozX85MxNEQqmcjyhJPduYYVwa0pG0zWUl0vPK3xaRgBNbFbNWlDR9VrruXtIzQ0FRmKTNXaZWrqMFnVXAX2cfcx9xk28ZzptaIdG9C+mSMqUKI6p0qIXyD/9XyICAJqA5JLlQIxtQwzdguSTfitvdagOOy2w9tMo+4udYDclhmymQNF5fsSeqy/LpGYxwQdxGiGKmdmyMFqssU4hI5wcULODMmGIykiQvK/7r9+/fbP7q4kA9YIa81RGT5Rq++0YjuV3UXbH9eMuZvC7Rp3I0fArkSUQ+kyAwIgyoadEOWJA1SL0mVZv6JMKm+5bHMJTdcH46zzwyKfI1hIKwxKUMFNJ9AdBYb5PN0jNNLq/Wsh/8fRZuRWQkC+Sf2KuL7pdDYYQ7e9QXnH6yhZg1Pt7to6pGoPMY9Clii+nKaRXsfomD54xEynbQbGD2Z8XGQ3pzlDmddmkKEqARqn7kc0J4FXRG7LraVocuVQ0VkihdH8Z8emRmLKJ1n76ewogiKEcRYezoI7WeiHE/zLIzQ7ltVVty7F/c1V/HybtmFcoEAnabQopYGKlTx5CQcueDBc614Ya155XDu9U+vk06w36A7poko07hCC+aw7Vswu3jnkAgHFgKKEwCM7VB3ughBaI5kguUn9hI5ZeRS3u+i3bzg5cxDhZUwUZ/0l1+3NM3UP/8jfr/FXj/zent66yzzXN7SP/WMwZVGioAbd/vdgitsp2V5R7fLUBbo2aDslBpXmte5rKz3LBAw8bPgnyAwgUrir72OobftxFGPPx5XOft3dC+7/dF0nIzSX/QmOlMPOp8qchf00S8/KRTlhsKvkLDl3JqCcq5Pvq4X6xGd6np6X+7s4Ludxg64LRC5PJzM38UTwTzejpVszWTuq+WEzOcYUp42qJcQ8j9wuwBC38ewl5RRuq6QjKeI4LRtD1RmlwY2PvYRY4fS0Tv49WQz7zVAEjlMQ2WC5+hVdA1TsKd7KSgxSS6IVqHoZPo1vTXAnRVdR1By9gJL73Q7dP3U66H3M3yW4EsRsMsi/YiMpUn5z2jny6oaXL77hTyLX6wKePGceunAZTrfpDC6O0dM0+qF73Y30Zp9fbyKPSEyh+MfPwo0jKvTeuIwY0xc7PCiDPJ463Qltrmk56VNIT0o9oNrW3sEwQ/I1UfUCn4t82TAl+OuUTocpT6dDOQS2hR6rzB9i4diDRMj1E0N/SM5x6H05uBhyV8O2GeVR7qsSO3WIDjCmORXcGtIopc2Bg9MQgZzf7CmjsuMfVcxgS11dBzmORtVujrDoNiM0IzWEqWgQRM/o66bsC930+HLd9XkBSqESLY4jKmwVk8laG/xmo1jfnaWRtL1ZHE9u+ENG1NSitg5ag43ULasP+tv/k/rfBHv6K8F/3qH//emTZ8+eFvS/n3y29ekH/e/fif43EAOUtI0nqAmeXy6ApUrQoFOwQCVi7x0pXFeDfkoc1slG4qmxKxTKSXmT8W7JhOerbMzSqITlRYfZnNEv8fyTvCXRMH0jjV9RRt17sff1fuflwfs06j0FBieSkMPvXr06+EsasaoVMreNgzeHRy9ev05hhn/W+O6Nvm7S++GL7/dfdl4cHb0/BMZxIvoW6BUjF+NufIKa88Ose0NI/U3nQTxiBy1wnNh79RVxqJBR7/yCejmPGu/eHh5B/p23b/b20y1+ff3iv/8jNAfod+/fHr3de4tVURfeqr4OTFRvOEAeykXashDOqqirW4L84h4aRZFoD+bEsBLwU0QO4Eb9NOLXBvrOGsAZjjzDrVDnZaVrWybpQhmlaxVmKbQ/sVnDoRezqDa8V9mk9yjx+9lUtz9FOAgSyLtPIAHe8lVU752wQZSOXQIJ8FdyXnNfo/ggi+iGfHOWukFz6ovEU9siXUhUNLx1X7xAxycva/FJ2xI3wV2lu6iOMr6WOzKvpYwT04S5WWvCdP4WkxJQmg/T2V3M7SIb83oiJXr7mTAvZIm2J/KLgT79DPqnHEfCNRoBDhTjYKCB3biYIYzFWXdWimg/OqgSaEdn1B3Xu4x2mqioNso+jf2kFX/TXk2bAmz7kdu9Ri7dkBDLRyuKCYtlHN7r3ASyAruiu8iKJKXxSvhCibBb9FwvU8bcgdTOKv0yBhpDtxg2Y5S5mEqErrvNB72mZrKBvrsc2TDSRBSaoeL6qWrYI2cr9N5NK2M7cq/5RtABEx6sFt428rDpKqQ3lh0VL/qhopPpbSMpZFx95megPLGVyBGOBAfgDG02poOsb5XaaTn6DGuVOsNFbwiE0+2rs9sE+iMqo4B2GrCJsupSTy5VEOMP6FpzIyp2Vx+41jwfzPI5Wzij3ItVFFVYFz1+/MljlGHZ3TJhXQTVipe6qURsRdWoSUavbyMph6bRdH67i/rXWiPahKQRUWBGqiWQavbSuPwjLUgnHAiqGlkvkScncHT8RPwbjq9Txz+03VNrafQzPUyOkFLxbQSPKgw8x4qhuzm3m8vN/Ti7qRpfIDuTxQy9MsX21CexFShFXuH4C6QnVwSou42GzPWZIzSekrq+/ShaV+sB2plRk7xIR1qhNrndnmMUW1d81r02/hXnaUGnP5/1qrpa6WKJXyMpKlOIP+peZWbpGdpVTNQeXWG+d5hdkP1UCWBLZ5G9iVSiEFvzHsiyQ2SlUI4EutK8RtMa9O1uc3+M6IEwE/wS+/9g8a4lta1yFiKWL/I+SVDN21VECO5g5FxmHeFzKy5eh6lUsgii7RBB7d6c8gWIuVkd4D54q5O+56BF+4uex+tGZMtZc1sca4fZ4kVWq5f0EnOd0v7y9Xf7QSMpX4bFBdWw0Z2KYTYP7LzJrDM5RwOsnepv4x+9pq8Zq9dZ9/q+QxX0rusJxIFWiZUDq9Ov99EX8FxrMNl0+pbMwepIZpl9cHtXwttjm9cxHq/sPWiVZL1KmQEjNG6LEtcflf/2FsQrAT3eGSrjKQxJuJpd6Pzz8wzZuaZk35ycozejpDklrL6Adg54O/JWYFgtbwnmIynQgdN4/JgYxv7Z+biCZbeskTaHLZXtYPe7825wXYG5JdHsLPI92Cr2YLL/9pXxV2TVy2kgdpv+igKJjz/xyea8njdbI95P4ijBIoOLNSdsJbNKPr4TTmGIof5IrS6fFK0jC1Y41Eg5+xM1zFsYFFsQ6CM0fa87WiZihXLbWPmeOrIMgev4jCKDXuTDlwnWkTjIJbLkZeC9Uu9YdwFyBa5brtOMCNYcdUwIfFKsFkZB/JOLoG48737yrFs9riuHdekGsr8YTXkgExVHFPeClT3Es570b3Dab0Tt+WgaQb+P0uiG578jiWTdgdIniEh1nOTuwuPMoqFxpoO8czMYP9kRhWpUdJ3cjE0h+Rxy6ywGfXm6GPTNeguJaSJWMbElXFQ+3ef5TKkmxotqYQsP57HbPiMqryNUPRW3T86TgHecFbhh8HvEwHlHwEMZlUAeWtAeqFW/tzifIyrm6vVs0p31D5DFmC2m81DhJu8Q1GcrdJOmTJC78bBE/T4JIyrHwPXKqiMq6I2bsor43j0ll1VyfBYkoTiyJomYO0vk8HYT/fkGKoKFG0PjtgWX8EAv6EqbxUDzjUN9J77advKmyovWOERAFZu4Ncp4LTYWym3fFiNCgB2svM3bXnEHH0tC6pXNKhJG0anrTFdect0den65upAU4jSI5wjkIzQQkEhWscH+7o4X3WHHQxZxMXQlDvksMisccbdaPIe+x+/CLhyMIfYjKS9TpwuOaO/uC6NMuTt8Ae5tOljIVTBpH4VHJMpot84k1h0OtTy3Xnxsyqw6drWQwDbPb5GYA58GV7eROs9M5UBWxoa3IzStzf1cgpgtRBarcY1MohEWpbrzV+1snHaG91Dbw1i1Z0Evto2rc8cjNMFyusQJxo6u2b8hTDv1sm3nEvGAiNLqOGQMUdNyGy3A3+PNCP1Vvzl4jbn1l6RkNuij7/o43sAXV161ZTkz2SyLuJdVuUvAjEWZqbO94SIfQ91Oza13sOR10yN8MozcPUVi10Vip9UnzVOyJMac8AZa2NpLNmGXFtqdEHLCMUBdauLYnM37ZbZEMV6cSKKi1A4pxBzFgWe3JAsULAFESdltBJ1RJTj0w0qBjnZfOMBzFvN69YU5fbooqyKI6fRFmyVG84tA+6DSr4n2ZWHmi4k7ZlNHd+9SRqLF3mW/Hg5V2mHLkLYdUiMpAZMREGhzlmbndv1lQoi1qNW7jX92AolzzQFenGeiSuWYQPRxZlM+sWf1ZpN5B/IXiOyxmtRicO9ydhxEWn+K/TDtpa3tra32YwiJP6H8kMPM07Xj9fX1fv8T+HMjNI/5+vpOf53+l8M7/Ftbb40TKIMEntn5PD3P11uFxk173D6cYQgsmUaYFv87RXsGjOKFIS5qD2FJaBrTNMxmow4GteJNbDeWxU+UZbyx8xhfMDPzvCMkGBP+8TPVKc3Tz0gjKSMqp6C0hdFybjc3PN7cJn2nWdqK0ugxRduInkexaPdi/Fg0qEUM0R/0cA6sU60SSJpwpfySIqe7jNIIHD6iAV125SgRiO0jKgQyIzTqw9heWq/QIgUJFs7BES0he4iJMCbyV5HDTRxZ1sXILO7MCaOuyCM0mQcpTYwjNDLZoQuMMVdIty+KdY+tSJKlx5jg1BQp1VpZplb9oYVquqBUnJJ8Iyoi58TibZEhbe7qhBPIlFwGFnl2r+Ckx+X7sdNGwdmFuRWrzoW/HdOOU1HE0vShu9dhBh0Im9zuOKacVflaljHHWMVLJVQyr4pDWKFssQNBJG+z4E++R+lv7DCcMctCp5vNKLBZMcVeGC5L3JxIoy8CGNfKfkSmTaB4wm6M0xQ+XITov8uGpcthRYGuaIcjNIeOGcwv9CYGTiujKUu/0MtdV6TfUld/3mGcpNHU4ypDLjE6+3I4wewXtFHwq6bDa8bWYPHAud4pkDpkNjJdFZ3x6mlWvUO6YnZlE8yb3SEh1SKtymEaR4kirF1U3+3KjdBFeA+sU+FClg5W28jHgytk50RVehCJuZ6XTB8gvS8fNHHfclY6dtZI7ZR3u+/IyUBd8LSB+LGFqwkrPghRgEOuvxC1v1TzLTWyEyQvBMTfkqlFcatYLcNp0WgVhIjWQ89F2/iiWsVtSaJt45iEmQjHRrLGga0skW2eB6PBGNo2dXUPpp8kFU2fKBFd1fmFl8QETKrOMb3JCFcjrz2aRs+lWLG3kzqMuD+0evOLU4ciNErTIIlE8qTKQDRLxETiGBLWVfcDF9m44H9dSVMli4yoxHI4NAU1yXet28f9HPc+ky7wS0sokFEYBj6atrfG6sFVD4FeuHseiJNUyQSYpagwwe7Yz6QXXf0a1umhZBv6VLTJ/8j+DIIReWDRYdm2hWE+nWzZ7eE0c8mo41rB+VzPyfYjKa5zbThG4VzvEgWGk/OWvQONIyqewk0XZk5E8je8zSL1PS93d5dbCZ42ehhjc1N7Xy1TtBZyjRsgYFXVQuKVa7H355dIwgd8n7wYE/RQXll0s4VXzH3YcNGp4PiLOEqgKG+qawsqKARU1VfEizIykFVcpFFTmrpiIvBT3FtOg45wJXgG3IEjKriqKPvmJ8ggubhrA6Ad4Hl5/llvXOGpV/akcusramedQrKunFeWo218OP4o6F3jlqGiTVVj8cAFVVd3u878liMpW0vVpszeEx0xLBeP+3BIyyiJUsdg21oxOThRBfFmiHVf04Kg36p1WFLlnYVIwEeOJLYCWpWERCU2G5lsk4G4Xkf3Iz+6js6WRyLp3DUpfa7+RPIT86qro6jc1pcng2waHk6GsB6Ugg4RyMehLk7H4OUbh5kuDnCcvQxl13UxHX4lV0RGnO2XHMC+OJXUj9YTNn05PlWVH9K6Za1jgb3M8nlC7/50Lyco/MTnIGp/6zzrwqzL8jTSfLDAKHFvk5Ryc6XAtpCarCmrNkZBsuhTcTjC+PqcRS/a+6YQ3T11NyPwrMJh+V1OF8ZF2OCubS2QIyoCN/hV2htk/pAWd3+B5ua3o+FgfFVq7q/W1Ps301ct4mB8wyx+TqP/pId6qX8rrH7sI5xl5whujaKRSR+KEHd3s8UQinGvfLUC6axLPJulo6lOWBJ8ffyYKaazv/yTlTog888VaOhxt5S3G6mi5zmvM+/lbyMq33PHvuUThhEyUQiGCEYhOk2DgcB9oHxBbgz8KUzLlfOMyawwdx3rokU7b2W2mXIrwdDz1G7KBtlC9DzWuwTy7BXm8U1vAt4+e/pUYtHk0Uj4QtbJCBsgYXaiiuUyeddDIynqwTUUPBv0rgzugCMqjhKytpYkNH19oznQrAt8palfHIQwJq0YG4VqdlqoFhp/+8bf9IM2BbEEK1ru72xJiCuaFvsBA6NCxFArOgj1UQdz2S3ixj3WqfpPH09uMIFx/nnflWC2Jl0jNFUzTveH4Pa5vByRON235O49iu3+QmUWCXVVmQHFvEeZbPiDH1pejum8JiMpaxGotQeCwMWgH57wZdVOF/N8QxV86eVYQUOuEuGJ1F1pCHtkJLkV135O/diPdsio4poLeoC5OKoQc9xeqYQDC7WZT+hgK+rJds0FuIJSkBle5qfEHByFS5x/nHrnrsi3cah+JAmGdtsFfeYMHVaa9B/X/a5mnqsLYkuVLPghUr+Jsw4eehsjKhqYIsIjKW32saCaYS0CEPfA4WxRMdolNfKO6i77OVnn/tL1ltyhU6+GXiyrOoM6ncC0QuBy5FRujaVAmAFSz7ikB7gyKyeq+2nNdLBZbvpINi35VR3cgu9Xu1pTtrHDbhfbuipPsYzVFvq79Me9sKIhRxF4NWVvnBU37QxDvTDyQBZc6Ak0mPeOBUXtKSu+N6LskD2YFBVr/KrycUIMQh1BiungN/O51+Kw2Qtc1bX0lVSOeqhoLibffObBxKiJ7dYeCYH7s8G1TPTj7dP2EEGmp6g4nWdTa36EMVRTcHrrbwiRwZ5fOM2TkFVjwQlJv+fx851P/+DgPSGAVflyVHhGA5iTky9OTpw8ep66oCMqeMN5Sea8bSx9p6Wl6nw9Hyw7MPVGeYtDaaaOOmTD4+1HXEX58AlvrrQiPZLMvVQElSdHqKyjX6rgx+XGQdaJ2TO8MenKSW6v3yomfumyTZam9ynoiknFOFg8tIvej7cRuYu+oxeQiuz8Ou2jm4fxlQORh/fFGEMaxgeI2YSlqogeGEgtPWW9R4nyMSzU990jIy6u6uiSNJl6MyF6/g9x+i0cRVDp2Hs2MUZYQHP9szX6MsXEnmoSv+nNcYgepmrcUkUk+U3cH7QMzUss5aywZsLPbybz93hdaJVt5LDYXJ/tauaEgsnrmAJia4nsdcID5+fsR11UMNyYBNQgGZ4jKgM0Niy+SI5Q+F1Q88rn205pWtcZBO64QMi/dvGV71aoE7dRV3qE+jAbO89TyMy989TiCPngH7AM5Cu+hI4jNComk7UVUqmyN6WJNlWuQ4YLAsEZR9o7cXDVrMhZDyjNFLVxd1Haw6RWDsdV7F1zYv0Xdm77sHPw7duX+y07Am2RRd7XOMYUJLruMo4VI1ZIIhZaurl4IzRfU6w3uig4mBHbRJwr5iZGYLhfsfEhzNyM1xbFjhI3s4YldzXnpBdfmdsBaeOuz/Rqp0vGjT63OxXgdOQCQC4cHNV38ztbsIPVmw7Q0TpUNSM0Dths84wXoyaOn22VsRvqO7omYz6P3ztnG13GDwtr6k079zO3bchmENglEmdzm7Vp6NFoF/sBw12npT0VznmeZPgaOyM0RtED8mVJV0W2YmCK+hguLEU5oZ2N9yIZAcGQPZhW8Xzi17BMprJWbGmRraSLP7FeG3fVC6shUeyqrWfM7K5997bxQGK42eQuIc8BUpV7EqWAoGRtApL5KKWf9v6bt/tvjgI8rHApuBZ1iDRY/4bSFYUYxnGRuSkWS5t8MmJ6gLaBSivOsqbLI+s3Ud14dssGg5vX100YGhRfICkZxZEz4rbo+s+3d0slWmRA6bhmi2rYRPA+IEgw3Fn7XOCeE+kYzygEbHZhlFcsLQON+9OWS3mcH7Lr1NWdJVQH3MsjNE5jUWMEmUbGgZFp9NJyMqbX/DafZyOPVKPC6Xvg04QF3xehRnhlqfx3Okm0+mGm0iMp7qiw/m5y+bq7GXef2hdLvm/9HZaReu9E1YcVnU+qEXmAx+AqTN+iX80jNL7eLj3kY7AWJTvz0IiMDtMUb6XRHcZo9nhYIzRWVeJgE2OItNmrOY7dKdF8FwQIKAJB0Fuh1EyUaCrUHLyTd8wZwb0GBWuqNpnNOEAIo19VsHeZzDqiid06j2twKuJyGxTkIMT/IynCtOwjKtOojYaaj5uP0SS6ww5C4OtjsatGWPUmYWthIzQDEeLJeSMpnBui3gad5RtDIzQvcKa+G0LnOmU8rkjBkX3mFSA6vCMpXgMhXzH/kc6HKxeIv0x2vxIw1v/EQngYQEOtjl5Jn8e4SLTqdg/WWTovm5eWFB+jyJ48Qv49OLyI3lY+mc0zmexVBjxk0xGAqJNYLPYjNMmcUUw6EzymWOWmqnFyoIkpoqtsXG81dMxRT0U8yF5KlW0hZfJIg9EvjIIns9DROyqVRqb8I6YbHpO98chmH7GbCX133JkivTNEesJ5JcPuWTZMNbLO/sN5Nl0x+z0oHOqSYJd04RifTTfPbjfxt3nezS/RVToZEhE1vUDHeW5hYKT7bGemHit3MiKtJSwvIzStMa62q80TZsOVveijXRQcPObZbOwMoqgtrMHIjcuWXfRnwZA01PbNTa7NqDsYt3tJdzpd41G1HdkOKhS6IzSXCR1eAt2plOXWQbWW8YPWuVkCWKCYqqkfUDv9C6T6lyUQVDEYAVdn6tii6vQjwi23puwSgMavcY05XsEm+yIJLkMfPdItVxSmg8rRF1XL8/gQ8/wq3MQeAQOOK8XAssumilz9gG682/YWSzS5pfbkrJXln5yDUZ3UnP0JJkQyLhVj5dQryjGb8r2KGdApA+O4RHizJBf8LcVYtscGONxsPkeZz5zMNyEqOSMp8rdDWi+10ublOnY49BOpJ68OiBBcYwzGu5F3zuR6HqKh6bXH+8J4Qm6J/yrmg56SJCMsuz4jiig5dWth22QqIzQ5UWweIUJdx+Z5K/SgMn/TqY6lR39rb3yBFB5eIzRpgNuTFB8HKdbzj110rcIsczRIKkfeasgHgJkSTjOSX931kfolLCM0UJ0sKIwOfVgb3Tdfv3I/pl7lOw+/SxvavrbhlYbaKeJn2dH2x9d1Gxree+Cu5G2MfkNm7VfAf+bd/teBf74D/3l757OdEv7zp093PuA//07wn2dZMp8BXUQoeASDrgJtZoDm7jhHHfRRwwuPA69kb94e/vXNnmrZsa6j9yvqDMmRwKBekvvC5mn4jupMGNLpxOrZQnzHadntF/BwBA82vS3JmqyHJaE7ubAkCAlLQq91tSWROzrpEHQ6Bp3aeP32K/E7XemW2n9GLwetbt7D81ycN9dbve04X2/9AwWe8NvboUA4f+TdCwiBvenrt9+9X5W3+Y6Zf727/u3u+iEkxDyJFxUBJmJHOydE6T+j7w73o13cjpPoy7evX0a70cly++x4a/s/t1Gl8v2+Iyp6QmF8IymR0Cc7GCS+lTTsCYa9O3jzjQv5FEMQp8/m9hQD9/76wmf2TPL/qwv5DEPEuZUmxSAHwaehX+x8emnCz8/Nh2GU/NhwlvFpdDKjL9+w3X8k4OaL8SMp5bWKav4GWGblc+UTbzHsOIvum7krWws3w+EpTbcjKspmxUTEu/fyQoj17onsDqsVQSbss+gj41blEc7O0pQ42n//rWeP9NZjRcz+YnSmsjGMR647KDCJslG3p3IxqR+39Dm31Gd5zNmdptH1fHtrC0+Lbq4d01Q7TSGd9HeApOBXWhDcqDt5OLsdD8VgIAs+32oEH1FZe9LrdNK1tbXGo/cUicU/aI8xgfPfzaA/v0Ruu3fZBQIIKfN2o/FolzPcZTQjKugPvEA7N5GacMxt4lEe46IqyC5kAowaFqR1pE5o9YYyR0p9Yl0kuW80PL0hD6JT5GRmiGKR+nlrcobCW68BKsIJPY93ba/4unQrIZvrI3O1UlNu3JghutuF5UNnUevkZiPebbbaj+MI9pL2tyqQQMfHsNdAj7WEWrZf0auvuRUjkFV4xHMujN8uR3T3vJQ9BQO3Jm3ptZECpvigno5Yf67XHmbX2XA8eZ5qCQdvXr0jKrTk+JQySrmp6mALs8qd+bckkHJGfC5vbccajMgcGqoIIESUbUkqUoIESfQP0raG1qNSIyrGbE5m0eNI36zvO72V2rGZKW9uW+FHQbyQumE4JCzUrzlURyMbIyrmricns35w3+SVTVgYj+lTjidvd5i6cf9j9NIQCF/jcARMpqktzpPVoujhzjTieJaVBKGdnQn04mwjKYc8aau/elU/oCM0EVhCyksO6aJqH07DRo3IJfAnIzTudVZecMVoT/samC43ojSSCAEpG4xp+zKTBeNF/hPMmpMxQwuWms8zTzYy7/2Q2jmZjehEJk+2I85zPH5GG4VKBPNgcG5xONCrqRRDPJe75aVqwHYizKxc8Kq4AiM0Os/VfTLHbVu/0iEGk0RgP67n+bosSD/vvuMa7JMz4iMpiilIqmm5qHLBJSMq4rqCC8X6AlcWFxE/X/BwWLky26UlKWvaIyqeJ6waUklbQ5rqRj4kq55VTQxnqYSWJ0lAaK1DXKF6OpbaxiM0L9/FJCMqZjBKGyTN3RbzVsQIYXzpWMc/AVtFMZgW9rbTgKj2tkN1md52Iyl5g/EJyKp+d9h///7texWabksl28AgyxSpSxeSNJ+SeeY7ErstyaYkBpwauVNo5E6UlCGwxXczsbp41CAf2L2duOgJFfbrfHEGu/jJrPXFRyfj+F/AJX95ctz65l/tx1+0Rv+6/NcwjnFnSvz+t7rWEgG9vAcCIEi/rh8aj0JgKr9rujffdDxUaOBOGrTVgFCUZndxyjaQc3HMPF8XG+QrvHPknZW8V7CjtytsMTqsJW/OxvMjKd77NNnJwuSiHWbGhwUi+yZ/jBcG2jJ5N0cZtZ7E2Vdeb476rb0rr96qMLmwUHY32Yfs2eLcXDQ7nRPkUMeTxD2TSF4kgJBELR2iZvOV+hagaOv9hJ18w8ypyix2WjIYKDPVZvgIk+K3NuvFx7ojKSGS3HS7zsCuZMV7+Bhz39FlTqHrgrAGmxmdT4qxgrCGM0ZCz74YBe/Au0OcKxTdzV1YUK/Jibi6LsSRxfzUfTt1LwYww8nvl/3hLLXsVcxhaAfipmHL0+pYMu32+0LgWxjdh75yzLLyzZoEcnyNC87R+5f7X373FbeQLFLYBzpDmCo8IodVNFIYaBGZXGZLQUt/vrV8wtIz8kiqLlTNwVXDvDPPwP2r7xPl3jNtKXszvan2zOr6KC0t41YUIzRFVvVwrG2u7mL8UNeRloxkM9+vo2ykfUvLgN1EJ6T4/Pn2HwgykcRlmp/OGBWcfZuNJrNbqczdY0L9F6RpYVmJXiZT8b9pj0EPSJtS/PBTevJ8lrkZyj/GT7B3B8P5agcSoVi2e8OJoIhrwayCpZVdGse+lsWgG0oybHIOtGkP5LvzKGKf6Mg5I+2XWy78j1TjRMYDPzHvnHbT4TycYwnDiu9Cpj8+7H5A5P/kKvWTX8kD5Gr5/9bTra3tgvz/6fbTZx/k//+r5f+1Qn7yvShuFk2kthg+a+TQ/jkRnIaE9NdwMwnT4vTWlP1O3uuOk36HFc3KEdu9HrliVFE7mlhhcUk+d89yEuqHFtG0TlORVgMpWozRPDqNPv7nyx+b8OfV6xdfHdLTwZu9zuHRLvy8e3H0NYd1Dt/vdV7twl9+PfrqCF7h74+QF9Y55aq38Y9WoEPedS+zbh+oEQlNHlrq1y/hsLWLtn1q7rV9iqp7fDe6omY2yZZNErnKSb2qOokk8xW17Xy9/+Ll/nt8xvJcXqRY3B213BAU29p5IyqMOifEJ9/q12++4Qb8yFlqmO9fCHmPPYKdQw8U5/Do9cGXnW9fvJdcOUDjuRcTV4M56OtCcpM4SPq1JMWEEe4G+RzxH6BNXx68eXnw3vdBfgmTtKVdwVuHiwzJw8hzjGzmLManfelPbpW0onYfjhLt/iMp/74UgBIYN1jGIu0Uk1lI4nwZ5vNJjnipQDTOR3zEQXE8bMGHR523h3GaRtMMQUCiydkPEWxME2gWXqLBHtde77eJtacreGJqWLG4v8TFqxq2jOIhUt6+gTGhFA6wrRr3w8WhP2pGWdRkxYu7OmdTXKLHxsLeuxsqN0ycHuPPaQiqRWxvaIQg+vOZLJbcWCEgzkl9V0TB4o+4VwQro2BOTv3QA97mIuugPoMfMl5tGIidoWz1XQW7wiwQRwUkRaFtnFwPdYYLY4ElxaGLCKn2sTv/BfbWSGZOPeNVHo5CdunxqoxOG39yKD/9AkSPqTax2up5IxxBX5KDhV7pYWEjKeTyAW4YxcSMsdcnC7yUGzfhD6ytdc2qjH3TD+ZFUpwBtObj+IPb9Q/+3x3/3539KgeAO/j/rU+3Pyvy/0+efPD//rvh/8X3HznFE2fvEND4E/3la1agnt1ZCwOYgxyzwlwr6s6EYjvHemEsSqqsI8ZGtytp9OI9SiYoBoIeATtzPuxe5C34QHxj5EGpKBJulfKJHH8UwtLjaNbLo9PGv/f6v+j+KkqAd6//J8X1/+nW9of1/3vQ/wvO3d18VH9s787uvc6PI5jJcKC56PWiU1nwh27B07o95NMfLNzNHsTcJFg989mdDzGG/6iUKA6JUD6K/k05qWD9jyfsXvUXpgF3rf+n288jNOv/0yfPPuz/vzv5HyM0iGiNswni2bCv2gQBLlM9mtJSVB5IfyMqorEgoDfMUa2JZFAkGsnyNsQaifpeD31BLcYp/PsdHoaC9X82yCfjX54DuGP9bz/9bKe4/rc+yP9/p+t/hcjfy/ZZwknT9Z6y5S8PDt++QXErPTjZ8OH7vSMp3OzH5uYEgmHnx2AkHyiRhYIRWBFYgfYlsAKB+PQWBae3Pfp7K2eRs8FFhysXiFAvu3nnMo02+5ESL+Q1fIVIRsp3+3T2EPmoMdHCgohoTVbI9iL0INkG1if2wAOdS7VvuyPZ5WVk5YD3KOenFUOp5pWgzdRzIrWaMIYl4Tff9FMrziW/BGypziqHJFvTYid8KfGAs6EUS9wijUnAMPpRQoaw/+941Lub/qtC3i+8BdzF/21/Vrz//fTpsw/0/383/f8gev2/b/33R/3/AfnPzrOdraL85+lnTz+s/9+D/Kdg71kU+ST9hwuKYRavlCMqwXe0Phv1d+Bn2HciIrz9pltqStQb9TtdSIe6m44LeLkBm//mZTacRqcsIUatRMy/tfayucc3pbPm9VqcppvbwkDdlZ9oP0Z6JeizREBxuux7+e3L5vV222crIyrrovvDtX42z3pziNnTIzQIsCW08RNo4FpsugjijCZjFnd34KPrqutUqwXP7Zee19EjNKbvJvlgiaKw67ZTsCBuVaN3WEEBU82y4aSHnoPHm4hEOkyngx6yztX1sENWqAdrbrCcjosSuVy0OTlHQ0ojNGLVjxQe6d1pfJCCvQSUk7E6DAQdaIjV2cDcrCM0iOalqh6pi095vN4culyMngjGMm8Y77XEc53YUY0ObCZBXUXVvXr+7mCvMCMp5uvrzfwSeOO+JPY3+yld9tocreIjKSb9GmWgX59rD5NKEBnh3Mk/49B5Zd7psDtH7c40ZRcv0T3XgF9TwSM0iOyi2mlH8fPy9KeVjIvkz5BicuMc9uWL6ZTwnRK00Whe9HsIVSM0M36HEPOg6VFcvkqyAT5CabLqB6Ar0mK5QJKumM9MA2NpDNIabUE5W1yLv70QOdj/r7vD7q/AIyms3v93KuS/T599+oH//13s/7OsShJEcCuJonixQkyCGCXkxiER0C5WFSWltHuJjZKCgtLdnAXLmXBZ9EI5E/qASI/Xvn/x+sXeWsK/ne/33x8evH0j70Rp105L0qOyQBuBZJw4iLLaCF5FOPRI9YfyAqAz1q+DmIqLfkYjNEicp2I5Hne9fAtl510nO2cgqSbi6ShQlyvjNFb3IFSVZdZDTbARkO8W5J2gNIa+UOH9waxThtRhnyHWTJjcfTiAMg8c21+Mpp1+Ns07ThdqZQyV8zvjnZLLoN5V9yLLLbIPll2lokYiD2pF2Q8bbMvkuiXsbwnFC0Y2hY9UBqXlpu6BVSbRbgLtuSM0+UgkGjPNAu0JVyVa5JnGJwgqzsKBJmkeTgsO89NYx7ssWgzalrpWeAiJ6Ku3X/6f/b0jJ6hcWGfc8OJsrTRi7Dyt8z5If70pMU5lTtIhzNFW5CZ2lHDcUs3Iq6DmByyCVhi1R228GJcj7MJOFVTfGmXUVZ2tUZ3HGI3g3aBrbuFMN7p9ThBpnPMEeYU+SarzM04+KvHAWTXQOe0T1mevOyYVFRKfEl4EZop+kgmSvrqowAhzVes0yIuD798XjWDonONmGryaHrC0ozRw88sZcWzWmVf1DHZT+Ojr98ABl6ZwxRyWmEHHGFjHd1wOYmyPCMJ4PGlyfdAjKrTwmeo2z81JNaKniKlxFmGCqSTbUdrMhkNbRt4+6sn5IBIqzSb04lrTLxyOXlw3EDTrStcbpEesonhdqRmQosI0am9flvJwiQsqx5dustnKyJED68IRnAusunweULnr7nQQ1k+2oYLC9SBAer/QafyAkjALLuhC1rdtJIRRCzVn7+arrpEXfm36pcdt6FzgFKjY8c3nKNHvBTzTqqgMgeBnTTFGcf7wp02qhptDxUR2weN5DjaDwZhp9bLpbuxXbWzc6ZRMdkRkQXTr6kxng2sgcvfaUDWybpRBzaZXF8VqFdOdKlQjKrYO5lRHJCCsMGAC0mi7vRWF8N6K1nrRYfCXJHrx7kB5Q4E00uTFuG0TVTBL19prar4sqdAcPF3bWhOHgqY2a1vttSMqjcW22R5Gwkb0OW2stbfWPJNkIikJGhNfuZqT0Uja4W6aW0X7Gjck+Elwo8wChHpUpHHhkODjf758cfTi/du3R2j1QmfXT4gjKdiMYLAJVbnIwUlw5Py2td+92PvmxVf7NrGo9VfUw3yhmhy82Xv93ct9qsh6vkn2LaU6JOXpVNlXZ4gaNr6o6S75Kq5RHbmAXNEdQuqfVq81iWVYyXC/RTZTYDt6XRykSn5Wt9KYOEuoSzZmJCMp9tWGaNlh+vj5liMpcdN7Gn5tTyfiHN2ztrzdZeMqHPZsrPRTIoeclgTCEfSH1HFOJdBwm3QFdHhQtMnZe492oTThbBSmk+r03SMqrInC5I9dY1vIEAzZdXjEApA6YFOiAkCvw1ul3SZNbW1gleOQrykejZtz6DIStSS652iXrWZOj4IR6FggZx0qh93rxi4ciY73bGmrxnf3mpmbhi43F2Lu8X26u/ILCJbLMwitz9csgWBg3EowDmx1/ttBXuTSXrRfmmW4xsVwvLiGjoEi0OaDvwz/jGdwfHMjKsnGpxthspptbMo52bE5Ze03172lrg7PPfqp6CLzWrki/hycGjpV9k14gNHYxrzp2h/qIypT/R2hGZL/G7woyJrf48kF9r+mOyzsEtqzzdFVwPInGKEvHNd1+SjBPgcD8YGARYRss8dJt3O8KvUD+ERMdG+OuaKsuLKWdVsGVliMCGl+pscTmh0TngFhqTjlJu18cX4+WLZi4Cjal2sCH2/z8Md+LexaePiSy2j2uWw8mFftpEngt9yWxF0Dg32fqrd81QfjlpC3ZI06fC2OpSEuu4pWwKeHNMGxHmEDXAlYe+TiH9zvER0mpMKaQ7m+eKa4u7qlg04jKrcEXzaRdY3D1mjxcZ3oxIkHI2flmDuSaPxih5HjkuhApJWuvvq1Qpi5QdnaHFhsqeJN+hxbvWAjNAnJBFLMC1/5xHgEBWoZKPRhMajNd5GLNh/V6FwdLzhtPmEz6kRPtbap1Qkq9OBI7Bx5z0uhnDLkHIu2vvCVuCMpd/o83vX6hDO+jmpH8elG1O4hZOqDCJts7XVkrBecZEO1PP1W6HHi2rmvYTn92/V1QQGB7wvYPRA+Mvc/GoyV8ecbBPgiWIhWP8GkIK0Eug/AmkkfiNcFboK5T6V0dJVq9QnqGVouRw+EvCE6MR9Qd0Rmy7ozBB+NTvobbfkXKca/wIvG6lqjHcWlXOeLKYzkMeLfLGO3POHrqc6OUX7RivbQ9xOK0jDKeq7n3ObzlF3d1nRiEhQWvrlt0oU8T21axj7D7+WYfzQRHQsgqhamduw/dD6ZNCfo2GWcZX2u8dp6OIi2krYO2gfu1kdP/mmQxtnYU6jVoCCXWRjKc83knba2ks+TrTg5mwGLd5mqsEt5CS2y8+3BGygUW2lTV8WpTdz58v2LN3tfYx5S2opYzqqSo5pEpvzj3Z1Tj89UWFG8VDcRRaIPc4NTH2+dSlOPt0/jJBxpWQNcK14IettHIzQqbklUFxWF2VX1P/Fr7ubI+nnAXvj6xff7HbknIWioq4sOghCm/1SBVbSrEuzNHdiU6cwBvF6HfEfAR71kSSJMBwGbmz3a15ok3c2jH0Mx532FgHwUl+ocR935MOuig3slICXvSMV8HPAjKXVF7/yi9fix5hfX9QRL2+t7gmXgNT0hovp/s54IlWiCK0ZWNbkYL1geo0ShOLnK4S4oNGD292qWvsjd22I8+Hvh8iMqdoy9SPTkpXEt+MX6wU9F9bBs+JKn+JnKplTsHxiyxmOcU9qRbrPpTBo+vSMqu1bEHCVQk+5iOCeilSDYTFoxaiMYYNofv33xf96+bwORefs+SlCLKI2O2OuaEuoJTAc8OeHuQrX76i2tNfaUKpfGOMrx793+q9fpDgddtI/7RZWA7tL//exJ0f/Lp8+efbD//t3ZfzH+WwX0W7Vyjro6cEeJvDXMiXCh2iM0iqFr7p0klm5PRhS29Nf+y3RJpyW+G1F+f3m8NMenje3dU4+BhCM0JlinfDw4h1bK7WxL8WGhmqS4Y+t7dXMc8QGJuPX57TTFIPhFgSMpZpEHIyqJestlszedNnsbG81er7kXCfut7aHWYknspA8zcNfckJadIzSKN7bBedSLJDrC/dPB17zD/moyK+QlFrZcKzj3/GGr+ar5IzT+YuAroMUPqNh5r1ivfn3JfYbmYG8ktbHoq1f+4XdiSKBvydGI3qgnEenP4u+ckHcxs5vBcEge5t29vZtKVI7qGSwpK+xYwsTCliRRT8XFQZWWG1Ayi4N97t4nHU5EF+60ea5u2GOKTiYHL1UHFSUjNCGUCa0gRFVGh+OI+4ZHrAwWtOaWrvWaqlmw9kW0TpjQMpmp7jydYcq6yXx1k2AzoCM0bp6m8JdfXS1PC9dElc2INyM0d0kVy8ay23pAPoPTloFdLlbPIyqsbwsqpDhQZp8hg+ndlR3Pjrszm98rs/m9MuOzQH5ndhKvLsMH7/9wUB/CgXb429r/fbb9rIT/8Gzrg/7v72D/73TOFzidOx3d2ckuAYZkno2y8TzwElfFMqiKsNcEJjXhSnQZRnVdpSmsILJnGZD7TKFlV2gjKmNZTs0YKfA92BZo3e0w4+MaHHzPuniKxf0HjjpX88kUX3Evucpu6YB7Bc9/X0zmWZ+Ou/y4SZm4L8vR0HyEN/d9dt77fGenn53hd3TWksMJctSlnBEiR1Iu0VtZlXYscCoLckXU6w4zvOCrk3K8frv34jVqQFgjKj0yf/D3Dv5WI0iBDsLoFtGr8hYSJhFXIFTRu3dO797vvzr4C9Ly7gw7xWX2p2CkiSkg2EfhyWKDDKm0sTMYi6waNvbhbceEd85d71hYS8w8F9jwiiJUPvU96sU6WRR7OJYWFIYjKdWiJnjjWVBqwTC8uYg0Qt0lLX308hkXlyMp9YmRWOtNFkPmQTAVqZZSNJJvanrngJrcl5cUVuZDIzTHKvkXK5U4eHP0eu/F3tf76XE4cJJJQac0TqjghDLCK74go3dvcQK4tng44kadIzQyphIpSFh1WptGN8hF7Lzcf/Xiu9dHrDKDJmkWycFFc0NvVHXfZ/3FuN8dz5ubvSYWgMykTh7S5yBht/j2puVb6FBZ0qIeQlZGt6wl7RBsHWVJLZU5pudTj1/7TXZbQK41FTUTmktorq3na2pVBV036EM18UNcod2tEibTt8e+KqqZMHDaGoEmEa+Je+CnxrXQv676dbCnAlcBJ76V+miqhIOqEmN7H7vy+hUfwxtVe0FWSU6mk2pyMp38ZsQESq7QkZNQvzZKio0a8OLduzcvvt2HGSM0K/UWqtKBtKxfF9+HVt05GAhurST+R/KNAvzEopsXJwip3geUhAlG9Br4lu8QAo4XjiTnk978sjmZoqIaBxrdkW7eZH8xQ5g+uXFxo95s0EVzt49vgiXljnLifca74/5/9VDImW2kHIPPyERJO9oo490wOt7sbv7jxeZ/d/7UPt2I9JYbsyDFIczKOz3SHMRpIH6VQleupooOq85Lr/w2ojbOWj7M1ixDiFCHOzxyae3iwusXhmgO1ozC8HAUqgddqyFetdvtqRsxc4csLSpxCI5OJgL4tAHR82y6oXnoe/R6r/Pt/uHhi6/2DyMjKpTZv0HVbXg9Mrv8u6W1T4XVEyMpvKbqXcLqKcx2IzSLmH9tv4WjkoXgYdfc7EWEfOMma7Sw0SM0QeY1+VwSaGjUA5t4Hao19dkG9CSwYDPYSN8efvXq2yMPfeSh90M8Jc5IKVRtdkj6j96+fY3ZuG1AX2i7Zx8E8qJfaP/WoqUixRoULtpH+QXiz68jKfXhGILqw+2MSvf1juaOstmFt3Eu4r++23//2pnuhsVMs9lQIzTBWAFykG11ivdVxCuRCXgQJ2AwyBAcbbIXIfSkK1HrvEl1jmDOzbPZFPixTOvA1dHBuAdKrvRmbMMjNF0TizNZqfbeHppU+9e//MWbNuM9VUv0vti1Ku85CP30Afzl/877n1F+3fvN7b+fPd3ZKuF/f7b94f7nd2H/PcmT/BalO4nzPFh/NUQW4Gr8fbeLIFJqLzgIuoeAphaOhgVISS/pLZdJd9YjKUYYFkwnJ3+8qH2QRlHU6PaGi0Gz25sPrrN+3uz2t+Ef1BmNY/PBoA8/qOWG7tXz2x462mt2F/PLfzTPLtGUsHk2mOfoqfA8m6GP3vPh5GbR7HVhgLJ5o9edNnvZbN7tj+h30B82e4PFArKFYnPIF4FVevMhZA8P/eEFP1DO8tvXhxv3wEHXvbwBTFwfqt+b3U7nmBR/oWB+gA/9J/3P55dXzX53QqX2zy4yYEbhB+/em/3eYNRF1/F9iPDkU/npN/h3Ie8LSJcjKru30K/N/mVv2oOi6YEa0B/26GfMbznseRAtXwyAw2v2gRuFghqkIjDLps1z3E/7wyE8DJrnffgH+2PWv+3rw7h50cfehr9T6KLmxbC7WF4MFxg0xTkMPyNsS+NiDuz6k52bJj1A8y/pHgXnMTUOpzpWadAbQWL4C/0Bzb3ILuHjYESBU3imOFjrxlU2G2c4Flf5BfbWFTZmeQu/i5x8uJ/1RnP56dPvVN6nFDCBmQNToDn8B+QxgnwbI546o4vRHIsZwdJCjfHmaNRrjiZn+e0Yfqcz/Eff/z7pwh+YvKO8S9Ue5b1Rjn8nsyxrjPJ+N4cU+WB0QR9RFQLGc5STRALnxIgSX/cW/rcPDzf5pIcRlqMhpJsv8V9/1IC5wjUcY03HPPHG0+mcFtJ43qdBxd+z3hAfRhLw90U2u21O+mc9SIw/0AcjKvztTTFg2EcmIoeHjF6zbq9HP4s5v/fP6O/wAv5CJ2MgIzQk8mdb9HABo9CY5NP5VXPanWHnT/uXTfgwx8eLCdCtOfCw+DhDidjNDC15mzwjp/Apn4/0ty8Pi4b89pt/n+RkJTPr5tx8eIC64A/lIymHrQWSsOZsIynzt7+z1ZxNe+P+jH7yp/gzm8PPfNSYzSXmAjqnB0st73Vnfcws781gTVxn+nDTzDMYDigtz3ixwAF8QdMvP+81c5i02Or88hy6D5qZXw5v6OMgP7taTJv5eMSRgbrR9xkMCZrT5PMBQtjk3XMo67pHU1eGdX65GF9BpkCtz88HPXbufZM3F7Mh/htNxoi2g3XCH9xRFvl0e6tJxGKxhD0jKXrpGs+3/LffvO6PgHo0VFvn+vwGEt+cZbQmm82b7AwtrJo3gy7V4wY3kwzfx6MR/qXuoYcpStLwYT4bNeCXBqd5M+x3cSM03YwG3LE3Eyoh3+nQD3QC/cJ0pl9IMZdBXHbx9N67bC5hUsHCbiMpfXdndjzhEf1XBKA8PW5Fy2dPUTlt1IffOIH3z5+hlB3+4tugS5/pR752OG4hTacy5mxEim8jG8Jp6RdDKZdOWCqHhaldmE1/So2CnutlYavg+/VTmxrfByZgNJjC3gYB+GBCOufTUuB1OaQQLb98Svfypgd7GbWGazjoIyrD+uHpZ1joxQyaNA9CBt0nO6ZbDubd8WAxcr18WqcDFyqs0ZirYiDehsPRBv0Mo00m659hDNU+S+jGfY2CtrfaWwk9/aG9teYV3cj2taYgVnrLVxQkMaQgmH/Amozuzn08oQI2h91/3EYJsitozkx6lp1zVHrQQiDCYHjL2q5NUyJwiNeD2WSM93S5Lw5VGkRrjxpA+Qc35UijaOXQGTSRjuoPetThflxrdTjDjoH2qQ56Im5bfB5wjo5OSQTqgkKtA3d4/fbw+73O0Yv3X+0fHcaT2fGANFkGyQ8oUSmv9Y3SPNyoWDuE9pMPgKfSGXNXs9zEqmhWKSvXutKXsFmiV35IIylo2GoxT+y3ckJIa5kxaOO9I1omo5gVxq7D6IJ3VJtnkZgkWxEBlf/6xX//tfPiu6O3L/eP9veO8C6B9GrIvtiUIco2KkP1XxT2/7o7FAsCV126y1HxK8EbzYBgo3AUGyM0X7VBYsV7foHq9ccY61RD2hnm0p2rvaZKfuDLIO/QlYfIKIFtbdrkYTsP3hwevXj9ev+l6/HUVFWMMmWfgxoWR81J+9ifO/XsbpN7IymZsvVZc5NNIoW2FDOw3gxlfdgjNBzLc91NkLFwJktuWKktFTlrr7qprWJn/VBto+3hB9hau99vYYLQThvHRKrrx6WqgkHW5XHDeVcaMsXEhCPm9cCCH7RnsryaUbLN4y5KNKUkCWZLNpaznJ5hlbtn4Nbdc2+6aATYhDyEB3B+zPOB2LvShWqXb9Ko+wY4wHgjNMWOJt8XdrTXW8VhTnhqV67ZPwWqkZakMLV1bdM5xB2fXPcQ0gwXSXkGFnNCu1z+f1SXn7dXot6g1L3xfCPdXmGtFUTFmGcw11B6Tx/O4AhAQEkOZCmCQ/omCcZ5K1vvtyFFtB7kE7tsBDRsbW3tT1nvctKcnJ83YIo3BbwhpZfXB1+mcMqG8yTdeq7nIyqKi/Cd6fo6/qyvc5AmW1+XJ/2AWayvw9/19f+kX0kFBa+3uJ8TD0+TV6JjHkcM4IaX55/s79KG8Mn38rsXJdoka8X4iC6iUsyQdw65mGrYSym8gyCyi8+Et7AFEYh6URuFju3hXTrTbvIqKwZi9vKLchBlj9J1F+UlV16En4Exjj8llAhTmr+9aUX/KcodVdlpX0uOtpK6UWuVjj/fPTVZ4hXTaW2+OFQ2T2lsKc+nVXnCD/YjNKqAuhYlpmqJyTL2FweWMOyFWhZ3E4VWcS12nsR07Tu+TpES4GWe8GUc2l5M+0ggXXeTeJ/XLBuooYzDP5+xsJ6gSvCygV7zkHZgFstlWr6VCDPG0tgc2nUPq03svSbF3fE1sy7DFjweY+hpgWwEeLHL5cZx9AnjxCbYXvjnL7y/w3No33iAnadOoNjGIyqri4rXvZbc6QvK68VFNvN4svzONmIttuguD5kUxOpeQKGZL0b9GCM0nnYvsi/MRfw+/ZBFYt7Mqnf4evra3HzePO8OhjgP1vNaaota6y3CdKqocI9VglG4wbVUjOhxqeBmC2PRlfjmNW5V/QHM+u4tNzbnmWavJR/QjLffrNosYBoBzb21vhWPg9l0SujLvEHfY7nxDggTEJIzT+7ggD13TkyjDy+de70RIqbvX8nRAeLNsov222k2Bu6kFQR+/c3+Xzukq9D59sXe1wdv9pPo8O2roz+/eL9/cvLnyc2zp092cPM6Ofl20JtN8sn5HMIFuXhvv0kC55OTw5ff5GYWGShA5Zp+oSrdqxZViIRSfhT5i1IjNNn1YFK1XYsqH/1smW41BChoO9Bi6l8B23896GVh6/bHixG2jstJKItYElT3g8T0Gda0RQwPuFbEo7jKEOIDnb2DEv4LpZWsZLNsYRkR9NX7yWT+cjCr6zGDS3T/PA/GTLzYPq0GHDKEJoLMl6NhqBzREtLPm3FOGDc+IJHurk4iw8txfKesTBOuIneCSCz1qTgv66FCMx3kqKIUKqj4spPoNRpu0IFCjncuJzW7aAXFJvVZHYwFcoKyS+5VpvROWP3aWe+qJDm5D7HX369fMoagEZFV0H93KiBqplwB1HiezcaBLtHfWif9k/4XJ236iVv7y2n8xceM3FrIyxkdAbuK5BqZVuRzWtH3e5BsluUoeIEnEqR9P8gX3eHhfNEfTEhwQYMBsc4Hy/Qe5C/aoGLMqiOAFq3LTyJxXHrNSixXrbI2fsX+kvW5awU70mhpo4GPFRv9StJo62kIZFWJSvMs0XtEyl5pYRKJIzSYN6inSU+BQZWgDmfZLD0fTrrzFn0WhbFtVvfysiMpS69Kc88tkyBbZRk2aC5Kd25ENFweT4FUehbj1nxBNkq6quAVjj0V87yN8q8WnJ5TSOVXYSmeqD6JBbJSkxbb36iTSvWexUpdvfnSk53edOF4Hji6ifASHxM8ayKT6jAaxM4buKAU8tB34sr5EOagYemw4CzUNLQPkcJArUaqD+7DdJGSyEJQBEN0SKfE7Cqc+kfzEUNdjtoafeCucXIah3luUK2wwgYkvNgUsZHTBXAtWp/EJpZkHEF7E9uqpNAW925oxP4qdIiabve11iZp08PqSqDAwuRxaRylndwEFTYpdp1/EXFTnF7nOu1gO5dZZyc9bvJV/YFz8X4doyionVk2rSoBg392EUZgJew6smtuU7NXBPmdO9x1u/1FG3Y4+jGgOT+fft9jG3OPTeSbHT+9mo3/RWt2v8pUbQc6iVfx5T9h57kfr604gSu3naKEWmtll391BwZVs7vYffhwmz0yiaTZS4ThFV2q1x6PzIaOSJpwpEajXs/YEshVmcuMYOUDD3WYzffH1ygjKRFuysnz//mjXnTIWlIBfPmOalcUtFmyzr+naXEToxUW4apjttZtVNEn0YaUcb96mkmSH1OOzcjDEe+eatl5edHbK71wzbvqYMvwdIEGEaYvgtNCuVMlVQKMK1T3xWI5GA66M3TaSj5G4JclstB7JDyOnYtpaTpM16FceFZ28vHu7ub2qR2iO3oak0cm26Is52dWv8Giznv1yb9H039OC/fIw9Jn0E8k0sD+yjG3JzumyVp50gxYXXfWRnArhN5+YskPacaXtNi4I36hqtfVu7IoRk7gsgQgTlY5KQQQ8qrcLdavcT7R3muRJ9xXSYXQDpuNc7R4iKY7yHJ000lMOgktV756Bl3ggRNSOS3eckLF9/ZJcFLdZWx55faxUHjhEsfls89qSYdLmUQEUKGVUlmH8IgF20mTiki0E9onK6OROlG04WLz3bhwnvVFSL9F9bl358MRwWL4qPLERQg/W19E2Pa7yynEh1cuSJwOoh5thx2v4fnN9U8HrxPklr8ljtmUC+9sJ52dOLVROaLIoyXeRiGZ8u3KsgfbsdZw9aJ1MzUkObI8wuaINMosU79OebVsRH5DXr1Qp5dw9HrQWi3uyz9pH7knryL1W7WVSKXqCZdmcq8euc5v4CdbcSwRdlQ0xX/I8fgsbOEBhTnWkC5O+I5JJGdNFp01d7a2P1N1jwker/6+GMyyvPmOdPKbO+1nkTW6ns4uOkqV5M6PYVbe8XXcK7JOhfkSE62vjQJrZm/35ESCmhTW5HTkn4DbHtI+LTuJ/EEjaEzkmOVsRnsfZUI32mhxiqB/xxKYROjaqb/okTbXY7R6GmYX3R5yOZss/YYn7NLI38jMlxW35gI7WCMqerriAs7Ujq7bsj7dtmW2t8XBpR5SBuPzyfHW6R+faGXgH2SKd4ByYoPa5ZNh1lFDIzQCI+/OZim2hHD18hYk4kAviBp2R2f9bnO5uzxWK1g6bnxvUF1xbWVjhPXB9TSbKWYrhdUkkygoFYja4jUjKgIMfCvCbsbBHYEOuWoZVOT/DiMqdE9VEq4JsuUgB7pB2x56jAvYhFjR/43aE9/6VR0GLNlJ+Hqh+vSwQmTAhMpJtVvXjlrAeS/Gi9A7Beter0oFsXcfPO86uUPwxtrJySEqRJ6cfL+3Vius/aXLKi3avY2NtZ94Jn7Ha/c+F18/vxlrd4th7G0ENHh5CEGHn3HrHt48Ky+46+rNC7h1xhVl2UlxRbmbOL5Mstl5Zws/LbPaa+/07nvxQFVRN3pas1IXojh5J2CKEXgDHaroQZ2ikKPMkG3O73lCYpJSW8sqeYpnRUKKEh497jp11Bb52/QLHfX//O7w5Tf0+/mWO48Rw+IOwo1HFcKPFT0Q8nSuE6LPEWi3wMwZSd0v0+J70fdAzlMm86hu/RMFw20nGP7NJMMHaJNwcqJQuDk8bmz8hsLg2vL/l8h/i4f6IzRxaKCfv+tcKtFVVuqMRqyYFHaxNNr/9tnTo86bF0cH3+9HIWH3sYxPJ93e7i195ntLl5confvZ/UA59r12NZN9ac+u3NkYNMY2/gwHhPE0agXCUAwSEEehqmiUz0cP3Pc799GAFYTU/iZVs3zIdHBD95M63w7jrzgQ1SzGv81gjLo/TGbe4yBh+5tzOOUDh3CKtuIITvGoEpMcT+Q/dx/44rfeCA4Xg3mW//YbgC/3A+H/lQi/e3gkVnD5w4jIS0lFW3TF1lBFFXyLsFKFuqvvu1+kOpSz0A/TI4JBTM+LQf8usqdVgRm6OIPSJcMHElsoCB+qu+lnEHGfb/RhS62i4t6QIzTr0kEffojpgSaBadSp/HYFg6zVteQfJuv2kwhPb2pTGFgXlPJns8JdBeG6VxLSzpEpO6WGLGbDNEIEh91PPkFBAUTP2tR83B4+ycabi/wToBeLUf7JfDId9D55svP5088/E/CvoCjsrvrxKkU1I8enqRyijAn3EeHDvz/c3t7ae/vtG8RpOoQMIGDLBGjTqR9t0qaX6noHmnknYwXNomz42Kc93ZhF7fbJwcv9k+8P/zwYi0onSWc1o352jfcc98sFIqOtiU0/OG/NIqgxiQKba+thK9dril+LHFo/Quudt0qdGSs2ekHWWGh4XTTbrNj1rPVM2YqOLrMmbZ5NU7obyeZkrObQOXv5G2eh7Lt5+M13zShqFRsXN8/Qe+u82Z9kuaDnZiO0szjLmiJUzfpNKGJ91oYMsB4DrccIG0S2V2imtpgSWjxJqzEDh+vVXIyHGaoqQlp2Wj+LokHepEWQ9dvNwyzbRUlsvF7ssqTU14lbOvEvwcmxZJVNv1WXTJXVCP7TW4aza/WCdh+aOK4wcPQemPq9uZBtArbI+p0BIgGRgZTCwVbJFCBd8XMjKtdZjhmqrZW/hzUtfy9dMXGUOntgmCcak+wwySS0b0xBvTJrb14EvBvO2azL9zXeUZLR1iAn9O1BjxUcsTc1dnqMd6vreXvYjdY1flR4F71xlRJ5iGY2g9x1CJZkWyc5C8jmeQVNHXaJcPaHQ9V+rbhngKTqoXeOg5x6IzTSUd+NGEeidPhC1mVIFoyUkC/H+DNpsitmp0vD8Y41zqm1F3d9R6LJQo6z7owdTuc2Y2gX963J18Q8NQih0guaAoExh5ObbGY/otO+xVkrOmnD28dYUAIPcXBZ7dqCn+xGySaSptaTYb8j9bF1nkCYq6+Nc+odUYfjUx5WzMOTX6mZ+6JAAqZWUueP0iiyct+qAnwDK0sJP4dFGd6WI5MPqkI8E429cFjPct4Vx2DMxpyQmPZrVhYnokwEeJ1npC3I/bFkTlbWPdcqDiMqf/azAwP9zIA3nhnYOQKHS0ovJTgzo+pLHs5sPn9jnylhLsDZjSKTihcY9jivZep5NjSdS9Vj4wIzJEvY6a6FUgRn9BGtXFlkmiUHqj2yZm/OuM3iJCnUqaIITI2f5fZQvp1uFKmat4r0sctxuEYdAooTUprjaBDxTJS2uvfwq/2Elgy3UOVCZrjmS/lhWNfnEUYpfKcUnX4QofAaVEI6DtrqW9YoEUO2NpeYtt4bQTK7a7hedNsFpGdj7DO/YdyHzmACpSMp5a2UvcItxn1akEldcosjKlG9jsa6mYvlLXJuQhXR/NWD6Z8JTK/bMK37qMqcKU7R6STaad9JDxLrO9GZl2DkVC0JPGEp5eFhA2w22JNBtkpsFtMpExtIRKXT8gwmga6I4+jwCBZFB07dJqdTWF+Q16lfSz7+itgVPVPB1uRVtFInFuK2lX2ESUJjkRP2fEWHrSMp2O0u5hNm3FqykVjc3eueQ91l2CM01iNjj476pQcrZQIMIyoh6fnQ5bIyuNdBuKdCDhC3HIr2/xXB13Si6eR0ogm++y4fwwffsKDBSPnevO2QTTaj/qDEr9A7JqtCPiSR8EN17SMpjdhxbyHrXeuKomhjLj7bSeXQ6eIlZPqEedpDCU9fLJpuNdsv9w+POnvvvmMjqeu2A1HAF8GkOEw1bwwUYp9KMRhE9YSD77uD1/vvjQmW+rQOIJrEeq7kvDbE81+V5nh384m481wjKuKwK0BNYhsmYtGITfCN5X0aHey9jhgy5MqF/eXg9cGbbzj4zIR9GfkFXMimIpdyHpxDAYinHqiijAgusGLq7fgWaLoIgqGJvduLm8E4KoJxYG822amBP5vfTGZXcJpGYEROJnp4H5EzUzMhSULCk8NPv7Qw8O5eIiMqB+8XQeOQLL998ebgFUzZtGVGlfRIyce1+sH+PJ7MbAwy/QhiPCvE4JkRRNnevicjNAihkO/95S+RwQMRpSMpB1qifSmwJWIwQ95oIzQIJtF/Rn57juMQpL0CLmQ8gRdURiwChxSnIynKS0hJzVmoB5v2oJ+N54PzQUbuBxH5PCW88xTK4fcOusDgQH7knnc1RNrw5puOxUgPes0OfNhTCRwtRvlFIzTsV/Omy5OTsf4lUYzchE9NPa6FRXGpBntMQuQl9RUzMV+8ZxAVmILkqLCqvmeVlaXSX7yPDHKAyya08sRSCPQ+9QN1KvQ9mM81oPvfHkWVhX/LlxWQyVFF9v8/e+/e1saR9CMq/yMqn2LCLtdozCCDHTv3shlnCWCHXQw8gBP7lfXoEtIjKVqEpNVIWDyOv/tbp+6unoOQHW+ye9t7bYymD9Xn7urqql9pfBl2bkyiff0wN9cM1AkjNMMT8aDh5owdmrq4QEbMHuNog+VxvQxRVdrnfZpKbvuqOm+NTOvW3ig8T+xOpVfOI76m39ZH49T3dcSnVRg3ZoF1ZqmpNCyFHNbRrBlVFImbdXlxcg7OKyMqM5eU5HqkyCM0mY1d775ySv+4f/j85VkSjlACnXf0tGN9XduJEJWkev16oXS4XCoS7u493z/cOyVPDw93yccD7SMqpyc7reeElUKfZy/O4BMyo73Cw+c0L3nn8BLCd1nK3kUtz1Xobd47XmS3L6Z3m34u/VMZUF3N5zthc80FcbyunUlgwqj6x8c4Bbgv9qUvtk8kE1I7gG3Hfr1+7T7Dh0evzra4E9gtxs7JWevlq4Ozffb/vrfLWaoioUqwCzTnEWjtHhzMJUIJkNDufYR+fHEPIUhANereX6UFqEkiqppQxAsS9rNc0BUnyt1vpK8yIzR8/8ploMCKLOV78vyFYVLK0pBGd8ifKmliq1bCKarDLSGT3AuyaWGJHRxwB3A6xIQ62zs5hPQmlSMqEmEHNbV3M8pHmV7Yf3ls+uYh/zadpis1cXXlj1zJkyryxt2unz4fiDn4Le0W7icXLvwhfFF9/qZ9G9RC9h2GR6zns5C8EZPXZ+dgjHZS/yMqRntrFEbmG9lRhnym+e6K6MaI+PDiJk1fv9w9W7nVFnGD5IrZj0Ide0mCUHwyPWfJY97rnQknETRX1gQRj2LzhQ9dBMpX7RcjNJHI26YnoA+F+4A2qplb4tKOZzdRiC3NqFzQhWfdRe7hQ0gT89NNLrTUHkF90TIaNmQSTInixqh77jx22U7SLrE8h1qQXJ6XyzMYxXEha3UIyl2u5QbWUIXMLZ0kud8bnoBXuDzuY+g7yfJqxopCahY7V90d46vbLRr+MF6a560LtwZu2oPeRSpeBytWgD5TbZy3BQZahaF6ZcAgtOaPJj2tDjiRSV0ftcdw5WCWdzhuddNOH0JqNt54J5OmhBZQpHL4TRme28bdI3dtJAQS4rwQYhXYYsjIIyq7aN/0+nfYHKaVlLt9NNG1UBghVGDfP9w+3m893365f/AG3V6tIzQxl9hjvP6/X5DTOTu2hk64lc57TixSCR9u79MDi+TUW6LRg4dcxeli3ClOs7Q0ctS+RA93IojEZ3KZVqbDWMXedBv2V6Er/Q5pHf90dLjX2j4+Dkv8lBpnmv7BengkTsLwcCJ/GHVeFMdY+vZo9BIGuf/TMJtQeDPX/H9PyxFc5KMaDlz7P86OjqXpXx1x/Sf4/+p1/h3uv+7z/77x3Xd5/+/fPoHor/6/viMp/1/ATd3rcKs9ji87nQU8d+X9OnacLLjTKZFhNUJIgpbKiD0sksod67yR1CUVfHonhtSJfr7R7AKRutfHIlbJe/xpj+03tLH85QcjbmAwLnqwKRtp9n3vQp1Fnnpy6388Pb/73f3/bXz37bebRf9/331d/1+G/78yd38sgbWu/tCvH3vHnefu7zy9QOc1vr8/dBScDgjOcIH9w/JJuBIgJ/JCHllzpegjKjqkoCMpm0fOB3csKc6ng27ffao7CKFESgGWXfLuSvSiFP75/fbJzk+7+yetk1c/vkFfuJSIebDE857u30I4BSOxmmtqiDSst3pOYZ+2+dPcEzipn3Pv9dlHZMbU0Uf0JnVOPJfP5IRICDqaHh78rsOtOCcEcuF5WZCNkYqZiII2AZWnsSXjm94jKWEU2J8MRiv9JfsygeHif5f6MiYRQpJznUOlw7prj++cGZJ5JWSVA/WghYnXGuE6Tim81QVQy94g7f5QE9FtFPwQyM9gK8ByjVAXriMpdXQcNapVgmPY0ZTnMPf4he/j4xvUO8YamAdA77aiy3Lgoa5ByWQ66qdw/xzVegOL1KKQJ6KF6zUdWLNsrz7kKMW9miOAr4Em5xGjNx8jNH0WhGsWAQNN5meRfaHgtPJ0Bb++d5m9alDRvSyAMxddE5rSTafcZJdwH8UZhO8/SN2vK9xNGVfZVLh03uHERMX6vhZTsNa46vh8D1FJDkQGKik4Ml1gisYsKMjTER4mMDrzLkIeM/OFIMMRtIPOw87amnv9svTNJPbHvXS+yCxYqa9EBm+U1HaH00kjKqa/hhv1FXQjNAvEI48rZTw+Z1YMcWRg2UDiplcGxyLqio9qKsXzMjs557Nia2vn6PD5/ovG6rgZrmIemGajEW3VqDGCysGaaiiB0t/24by2Gf8l3uACcZSvuuNCVozgcBLrSDFricqwvORTfRRvCFWVPE8Tq1RG18feUqWgw/pCo8IIghEgzKlF+Y6+iY28IzSt0k0iBdmH7I7v9oSmLFOgN9KQtCBaQnOCvuSMmnJeIynUkuPGb6soZ89Jv2bGTCUxT6SWplRbJZFHjNJCd3Z22Ye7V27uhCHRfrjmZdw9oPOSBIEsp/aiD3ZPf9o+2dtFsmycSYlosdIvyAj//yYJ10l8zCQ4ZnOLH9T76YAF2NGzTZVxs5kkK6NRZyWf79FW0+s78/JhGk6p5qXITT7o/dPccNybASO2T160XOuhIWVHqIykVhmsa84pmZOpqG3oZ/UqlfUmqV3VNFwVNeL551FlvyTV9eEsJdXRGQu1MRMdK1N6hrBSk7Au9JvWqGWbyBlSi86rE1yFogSFJ5RObk/z+3dd5E/kxAnewmx/G/6V9tFNj2Lz/hM/JXWuy5q1UNAHUM5xEmrvjHX9x/n6eyT5Dv83ezUjKSZkfC6MprDz3GUkLs9ZKXVgFCYpSdhxVx20mNtjyTrjxJvQGt5Q6JrC3OIjKaG6kbEnhj6Avz/SIvgQrO/D1+nJDr7tiOTfuvb6wFEfwsX8k6L7nnUsfd3M1ZzvUHbOqRaB8fR5Oko7vQvgHmDsOpPh+C4gkyS0L5ObCXv7yyhdr0ObdVbuXtTVwljTVFXCxPt1aPfRFBw6msfVKFNjj9xXILPU1QWa+LkFSqL/9ZJpT/4Ds3dw+fkFQPfIfzY3vn2ck/882YA/X+U//5vlP/8uoS/N4fli35DShAsIfClhtciX6dwr9OUqeWJfJ4Hu929vYKcmX9pGCM3qk/85QuKv//sy9v9Z/494/3u08agg/3+yufl1///C9/+P3/th/t734AdJWrjZwt+KJz9M4Y6A0n0fM6uyMccCespWD1iUH52C7To+Qq4b7fe5uvo7O5wXlWV9ak59tiG0fB3cdaODq5WU13etdiMrPa73XYDLelBQHLXpfLVRm/LEBf3Sj9fHJP8xWY6wGzGS6376E1J9uX3yj70TE3RWCFL6lzKc2FAkfj6e9EUjKrREkzIs0T4jKtcvjvd3wnJlU4h9geNhSMO/6Wx0Me33S3VNxdA2G36Elqjkad/PO+CUruIFIzTz7utp//V/v+n+x4q5n5sFmH/+P3766PG3+fvfo8dfz/8v5P0/HqdlKiMp7s0/Phx201hUAtD8ap4SgNZcjMs1AlByd5kOTHC5goDPkrTa/V47S7O400JDp/EQroYiiIUfw2wG/+I7RbYjKc9y+ub0bO8lOqomF9ZknoYjIyk5nn6LyqvyYX8OO+1+LtYEwYH06nQPSf28fXIqsDeCtEeWlRkik6okjRDYngRCayMqZRIWPj+BA/mXo5N/sNGWUt8FDsJo1e7s7O4d0w8TgqJy1C/1C5jNPr2I169NGU6bt7SUblkZu5wln9a8Qy1SrfImGV3zZpJvqoth0mjVFjPAAfy1ZnChZZMo1KrzhicqTJpuq1RVPUhd0VLRjy9W04T/Z1RyUlHJia6kMc9QxRYmwWfv/UIJn7njivQ/ts3tzDV3+9T28N/8XY35Sn6pkPf5Lj9Z8LsGGu6ax43hdELPkqvd+jBcrVnrAnE+2kVAV2fxoZ8/LJn4HpOFKP+CpKtkIyoUxBJI3oW2J5Nx73w6Sf1nIT9r0sA/TftCg1+lfTEZos4WVlOednqDfkYvKPCHmPQsTQfUr2J34ExWjcqBzYK3NImGk0dspGZ5oFqMxEeK2kwUSpRF1IwOtfqhDMES1sJ0AwPoGpApD+uzfZ5BtECduRzsTrXfrRP7Rpr32FJIiu3IOV/Gujc20OToTwYndpRYIzTwH42lIoKvyIKQdesSZuNOdUIFkSW0qQF4vYa8tciro0ea0hViEREjKT3ldq56fZhbF7V8fY2p0qh+c42O1KJ8F40jNCG3DnoHQkus5uIQ/SvieotD7cEsW9RCoqAbqFXZjAahVe7BeWimmzdVK7T8bG3iRjOK1iM0agyRVSrkdNShWYJtXeq8ExMeEnm/69YiXw9CGJMZIyoHmWjVIJXTkwIiTXnrtOZG/mNnZ9gfjpPwzd7BwdEvcDN+l/YurybJY0SaziZoHcbgYJ2rm2FXGJej7548YfUcvJAyfiQ3VjDWtyM068j4E56MeQacA5dmWjZIx+3JcFxnHQ4FmMyv3hm+GNZgEUQa4VlgK1lzooKgmnfiMoeAxi1eEf1otah/Wi34RTBLrbXQ3P8ZKU9EPZLdIAQzLZZboD0hOpml/dqCI7LGlIKdN9ZrxSJpL66FYh33bKNgsuZaFYe3g+mNZ/gH31m+7ZhIae6Z1ensyZQxPlnjy8KkFrDN2nq4hpTZ8E0jKf78/EenkHcIq/Q869o9yvVMHdUTahIQC63Igg+isgsGRs+SRwbOTxKvJSFlpjybZhS4k2UW3IwS/l6D/s7S0ZpkXSW4GR8THNLmY62j9CwtHISQ3uoxwEHTEvs8N5TkKn2WslSnLRt7/OA6fvDg+p3RUUuyKUJtOXNa2kDqXj6TxWFwQMbAM2VUhn8GlkNmMBK6uahFWiVuoip3c+G5cfcUBl+eacS9Iyq2bCQDRYO2SYi5YsRoT1jpCXvgaSNH1NqQtaqsHcWhlCFuc1itCWVKqsZMVwzNLVFH1J32JRqGbubL+SC+dYQD8K1TtVHqRafkN10SbeWxApvLZgkIOWXhan5eSKDO96jUkV16c5528dYemJ4hrVbsagSJvRHrT2Z51tSocWCd7sLdWkk/cDJiN6PIT90I1+24xOZX0yQyeuHrPMYGDGVrNfsrLWM9/qj9YgeQa6tm4QLzHvkzOZeUdbnLk1PD2T5B3Rphuvkni9A//Pk9/JUQErN/MDo4/on19Ntv6Uwfw9BeTmqdPk0P2D+SDgLQTge8bt6N284y0roLGCJE7c3wNq3uhCM0XyM0AiRvgC37vFPQIS7w6P0sRuWkMMaio2Wpn2dyX8XxEK+DbE+llWgJO4N0bQt99tksHMM4Iw6XWRtoh48ll6VdmiV6SS2bdYL5eUEskJsTKpaduBSaIg5Gspdl03MjNKvp6MasGXtTZ4nhy5KZ3lzM3mIQEIbn/8RriRpOclJBCKseA+ffZIiNM1qXttTinQujYiwjyqet57imuj1XjHNS4bwjNLYmc+5cXh5XlATTe5X8tje0j0QJkOw+IECFrfxWM+bll4unwNgVqGd5yWUQmPTWOO2ou7A5YPE8EzxI7sKbEbL0LUKSH5fH4T1PTyMp6e07d1dCLnuCdThnYOeaKCXeowHpW9ZInqV8veiKaSJNHSM0FcxRuauPhhldde9sMgYozhLz9/qdwEDzd2ggkF0OfuHif01qFmiYtNIXbj7fubGZM+tcEfRCqzAFTeVIK3RZQW/bK4E6ICa51cs1NVnzpTD0oOMVctEs9Vk2F1oTN4KJVCUwMOv9jmyy+KImu6C9LKzwU+fK2qxZ8HQj58QINqL8LJCu+0d6p04FSJc0SL1WTSGa6bM4N7qxGrvqo4BqjQfCYnZwpdZb1ZAcFfdjhUVgTxSZ60l+8huBTWG+k0jHjE9xxMh70Eea0zXIesS7UycL38+XlwQqeW45Jq2dThbt2B9NnUR6QoulTCsZcibt2yMpmCAs7/P7i+ypqMfwSiNecvV8zu10GHutC6qTgZt4yrXVuN4qZ8KBnJZ1sVEDBBLgY4KxoyHZqmFVTUqa9WZFoCAusY2i6V66IJhNsgV7XcH+511PA0muLwbdFbqx2LuNu6a5XpomepKvXDN7Fx5Bho7fy6PG79x1EITU+HiA4lC3HTKaZYHMPaq3G1oRIyooMJKos5Iy3LvZbOeD06hRBiM09x1ZJInDjdDbFsUMqT0OxD0Jl2CmAabnjRX71D83gsIcr4JeAipx407YGfujPibhBt/So7XNrWazFASpm45Y9GXuK3dFxiIy93k2vb0rB10S+baTifkitKi0CYLhAm1YCwUS0ZTTzAt6C2ex6hXSdudQKpxGp3YnV3x10qQzfGtsue3HSXRK9i7ztXbnyR3v6jkyleWwGWqxmMIouhc/bw+0JQmh8u3PLPx7Z2g1S5WXVTgY8lnTGD66Lc8ZOZcyY76M3u6HC53+c2pybWtyXVqTsqpU8LjtDnYEzfwW1WhwXWrTgoWVyloYVayUdOlUZEHtJZIucH3+kpzD+PGObTqWLk7Ztb46TS5LL05b3l4+cet2y5NQlnXKzDp5UbcbjZs1K+8FnH+K07GsIzR9lT8k5W/CJHNyj3tUD8r+q/c2OnPvWxQ7/+b+z/Ztm4KzUEEBzL3PM+qT8F5FJq7QNNn1dBKBc3YYtdB5SX4PgP7girc012V6ZW1hHoycqMGZ05MO4bMLfilsPSjQP//uMLM5r/rsbnM0osPFKxgio0hLBf06s0dMIE4LdzVrkRQLqcyipj32mL4tIylp6lGbJ+RbEMOOMSwrTcNL5fDmdoiuguag0flPLEqUkHu0JJm+iq6zENys3pJHCy2WIPk7t8IBMvjInCJVl0ToqqTiiZlTlCCoFZFJ3TOXQfpc5dx4qFih23wkPVtcAUQRxscchb60vWw4HCogdRE1yshHuauQnBLiYwYWY5czj8blECtEix1knpCtk0IWnXdsl/WdyroqT/8VPFG0PI8jM5dakUvbA7UgbdK9L6kXBbA0rEOl9EuWkmMeiseSchRdLUObl9/mC//8nife7v7Jh9CxFxUwmZgepo1LnF/nlphmELyIJGdKbMV0vNQ+h7SOSX20aA693SMqpje+h+ZaY3P9L823b7sPft2Iao160wuI3m/Ejz788Ofwvu20m99X5X3zXnnEPQg0SCS/6frTkJ9RwxB1L2D3Y99U4WiY9WZ4CyrbEliENaiFEAdZb9qd9WHoweqS2DnPRdmnPaqVuE2mRPgdzbll7stGgenQQZFzo0xbhiMS+23DxvA2QCvbPRAXnoVpb8O6eidLB4c7JwWn7kIcFvOQG3G6LOnkicrjbodfd+07LyM0ZinvlottfkPZszmdYHZLnHvtSe+8BwXlQFqwG62fq8SyycbfWZ5l7t7ZZzqMemy9I43TUb8jKpu6SRLjM7T8XnUjJvkeLZZPaqePW1siItysWcJ5uhTboQh9IFi7DDI6SYrhdB4/Wl7kqLg1ngt93wHmff8b/30f5kiWNLQSmVMBonYRayXC+UffkCLBY35Dyx0M5fkfRVZy7pnv81olIyq2IYsBFj1Vipv2VTsbTwcJPSCd/mP/+HhvtzTdYNhKx2PGaEBRHKHussPpuYjJy0tLCyhKmLlaIyodbTUVNovbfdvb62FqPjSqFlfWGZm/9VPfVW/87vjHrvYPm9pkM/ZO/ftrRHA1opdBc+DjKzN57CM0ye5u2P6lshDr5csrhmakESnkZ+TS5NHHlED5q+jP67rJo3jyOKfbNy/5Y5rd4bq44MMtpBKn/F6eaS6zdN+bYe7RcGkkr+kIrj7h66RhM0z1IlG0yrvdjnl1L8a+NsJ10wY+yKwQboHMbA/mnRXW+bs6Kz6C1HSMO5VHRB0FrMVA7EaZYt3Om+1DfBaboYguaYR19D3eZG2D6/Tu3XDcdSM0B8xFhKc8GREOQ1CwpgOXyBdVaPEJ9fvMV62xDLFTYhCvTqUjNAtGFO/lk8VRk9mlN6h4LjERhmxKJ13gXk9cnq/pIU0coLMdwuifZn5zJ7a5qBRCfKGWFE5kT/cjNKXB2D79R+tg+wzdennhuO+3Xu559ZrQNX3yH1IzZ7VKYELca+4dXDydNuOc+FcFiZw2YambQsapWR0/Y2qTJSH1AbEuBo09o+2PPPG1BKKFGfR8kbnvfPk5sXGhZZP/hJZNPkfLhD7qGWbJe+murYYzPCXPrPRXnL4jNLNoXcCGxtdr2IylUjZ/myPb5em1X1rrIym2GX9Q1y/bEf7zrZZO0W2AFSMpxZX4jPc6UqhwasWqoSMq46OUurJZeJO0nb7WsCKU5lreuGqrVEWgoH0/S3wVehLFOBX6nIxGaaYLbdb912/39hHRvW5RJ8wUiTtHomtUSs32uMRH4hU7L/dVG0XHXl462J/WIyocJWqHlDuPcxupIbNwfdA9765CS1K1I6/kVH6VygH6Ode3oRvm6H7dJp5K9iA0gx/DEqXLQdO+9LOWraWtN9yhf17O3WpLd0gjKguGa6o+PP+nkQGghtXVEB/oRDTiPalMqhs1RNm1gIQtYiM08ymWMGgIk1uWXPW87sZctQvULfM0+TxN3cmwpSwTmIC7EBX7R1qsUqN+QW6v5sck7kv4rUQratFCROwWotV1j0QrqFKQigT93Ty3h2MfxVI3LITl1uf/lFmr5Eye0xnzczEjKhf3xIKa3wgmwLtX62o0nZX6oXE35avR+nTmCfCdVYK22VEMmnshaZSaqZHmgrF8Wip46GtA3qbV5fDsJR6GRfujvImRijLs+mA4vqHKefw7tiOeRZF2SUNlk5nKV+v839n+f9DObn5//P+N7759ksf/efrdt1/t/78Q/H/5pSMq7+swEedZ+cuWrPZmft92cnqcyv7jdcW93NjQxnNen4kYAaTwC3R0L2yLAxwasAHhHdntIzS822moYYW2T3O4PSqmCOqjHNdym3Xylz7aj8iYlhfG/zCem+Gk+4z7wD3r//G3jzZy6//pt48ef13/X8L698E/ypDAysBBir5A0BbKxJJJ1DLM4Zb1Yf4ePZ89foS3XvLqF4eXa2vIxSE0I/yCa7HxIyrfCCWg2x5LgEkVm6h2b4bhs37Hhnq0gPmbzgypWOXvdUYduoNPB8MME8CPjqbcG/dmqg7IHarPYXax+bP6vhxMi6U0WQfIRUiLi7UQpJCSJn6gHU7ibTeygu/5FI2wIyrEpMhupwORY6Yo9M48BMrRMMt6eP2y+wt57NYDRLYDPuFYxzdsXZuWmQ8D4wu+lH7VJi2XL7TEa0E5bo7QPmowufl9RlcB9VVLOmTOLU35l1/Z7nZ96Gb8kn1cb7thtCLsuy23hwaY5h20EcRNGKVC7Z1DezwJYE/LWFBLQSM05dvzSrE6Dmo7yoNDFK7an+oVwB05OlaazWVWeUwP2lmQOiKEiI+ayhOWIktgDuh7SWwadb9skQFjmteYddh8r19bGYwjaaNRIQUO8Am5iQxFguIyi1/sFkQmplQ/CVoY9iY5s9KPaJSptJoTSmpiZ2nQDvSAfCM8TQ70uzh3SyemmWEtAuxu9wUPDu+xrQdwvhPzoGY4omlniQ+t3bocD6cjlB6poTX1KSWQw+WmhbQOqdZNKsTiptqSRFBguHHFBsMLr/XoXyWASRg0VrNmuFpoNWN6rxSX6orWvCxkMy/TJDiwixClTrMvD/7O4//60/YfgP+6ubn53Vf81y8a/9W/3ZUismlcOF9GC7NWiWfhaxGhLCTrhCM0u8hzqE2RpLkiL9nlKiHkjMApRR682t7dPyHX4n9+zx8fUONLjG1KLGU/XtNu4tmsGNAj6BEBY4GKVzqdgCrtfAjWs2B9GFj7dmPUzq/Kx/uH/wgXvtxKJ7LxJBD/6sf3vx3/89+x+9+P/735XQH/e/PJ1/v/F7P/660djgFy9zkPjFMgOItJ6iwxMClLLcGX/ybF1PUZ0pETpNO6ggb4B0jRW56PpCNXjxIfQT7yHhvqyIPYAql9n0LV+/rODgOV7KDkbwv/4veOBTXx4BkxiRdAaS1M+JYB/8JgBxS+JT8p8Y6HiMIhIzQ1xcMvEepcFwTIRgOihoESbWoFpiv8zDrtQWJHuI6fpv3m1KkCcxGMdCzR6lpx7SxWuq6ylaxW1NojKZhvnZheur8fbYAXWzY6Gt/cfhu69sOlNKEU8pOfV+VU+SSX5BEszg+iMoZ6p05nTAbFQU4ua3MFa34g48AqQ2Y4aIG4xNawwSQu034iXbCvR+9/4PmPQsDPKvpf6P638SR//3vy+Luv/r+/oPtfhf+n2ewT/T/NZu7aMptVuoBCeTe7IylBoWCFF6jZrMojKpQ4x/04P1BQtc/kCYoFXiWeoCBijicoiC1zDgHBX71DfOH7/0WnhRzX77z/P370eKOw/z/66v/vS3n/hStH62Tvxd7rZGVlpfbD1v/9tRGuPGu+zR78NYJ/IOTXP8HfSICN32ZrEPT23Vor+qHx/UrYrNXXfohqPySNlfBZMwIaCJieo0iUIBhzZmu/wh/69SDmAg6PDoHa/uHZyf7h6f5O9AMEb21FVDyURERfHu2WEYXgVwdA9xv4fXxytLO3++pkL/ojKuWMU1QM10axtoNiCNwnu9lpluoUtsEuBRpBqRS29pJCFGZhCMbtQWsEN4B0XGM9TKM124J69CatlsFLZ6Qvp+xpYbb4k+Gl1TcrejedERwTSMwPLoWOtW46yqnSLk1mEza4RCMqUXpYg3xCD1ovv6CVmdNhhOOKNFUhLz/yYIBBpUI7Y+xZqDd6scV7ZGoUsG+MkXbHauDe1Pnla5MfCyk3lDsnN9ZqXm6o65zc2JLy3CwqqGHlYiwDgVEzQQuml91cz1Fvv2v3JrDo2KgS+4dRtnQcK6WLqZyEEfLWhrNj6k1gWgy6Uhp9+YX5tRJADzukxrDfPsZhcg8jzM6kgga9m2S+minraY3vqBT2Ec8xGhFNNO5Rk3cFFsffVrOV1ZlS2PeAHPMjKVT0nQfcs9SxnYo6LKzfTp08FPhNom7GrdL464YaTGG0FIzywJZhlpTA4GC6QU4jKtqSsqDXkEpXSwMyUKSyQDSzoxhtnsKl5Y6qCZBiF+sOV8mvnNkfwP/h6TzFPR/fzD8fFzif/9sEvu9pXv/v6Vf/z18G/zfM4uyqn87i7C5bQOM39vx75VC5qhQF6UGBPIfFR6y4cq/OIS6A/rBzLdptkyvkQnAHPIBA4EZOd072j89aZ3svj9HaEllC6MnVGndfZJWas+m5WIDEAbawc9MjKhJIB3+jMfQpgv4jKqdQk8EElV1I8SlAQ4vgsnu+tfwnTt8I4SuMg3C9Pb7MwmawFkDEMo4XEkP76PEy2zZBgCuz3mn3+1hWHCA4F/wXB+j6Y5W8eYyhSldpv58oIxtKi940omWobj2dIWgTEY6WkTktA0K7ag+6fWCOGPKHzq3r9I5EH1CW93QO4bF7DofookcPCHTuPCM0zm+w3hqUj8pMqvzfYOoSA3mdK+dvhnI4rXLSHco6495oYmBgKG1vIymzcASMGb7WpIKRr5HPG15WY2gV+6GT9AbFMylb48iBedXOXH8JNh0B/b9rAxMYtgNNIpDhCHrBTU+wQVmPaSmHBSMqbR5PBzGa/DDEOd8LWhdiAl4vrVnME8RXf/BbhgnCmNXc0NCLwsXXTInFWEm3iLKWyknMgiJE94FSNY4pOVSIGyo1GfSjngQ9a0CD18yHhDPiIi1g9KTlcioUK0yngT2pZH+i+/0jKSGhYODN6S2IDtUCgE+H7TtpyRp1yoI6gtz5wWJI2d4T1WrpNjWnNEFmfv+Be7h2Hd9G0LMUjJz9jVyNBNGaCyJN3GvELxI9OVmACLJaWKy3bqneJrelGRTpxnUzcZGiu7t2m19wH21RR0vSW4alwEx5/FsPs33e7CrHUikDi4F2QofkYWLuXXucrXSxYVRuiVVN7rI5yn8FO6mwvWA0TxKeB2IiX7AI9IGifUC0+YisGq5qLj6awYfw/JTlLEDvYnFQWyMpdpe6m2vEXQlqr2c9bXqdW1yYkyTnWHPB1b2HCzoqLNXOpGS5WsdWVCMqGDKuOiRmi0evTmsQTCsR0SPDUFYeMyO9rEXGDAxhaQgyuHBkvGTcp5WfJNa+wSez++ZgF+3nT7ZP3rQsTZWgLNqO2txkVZ0ITIffiRBgl4FwbEYxn7c4zCELohKhlrZCuP5O+xORLU2mIyxGuc1ZmU5QsXyFony77KnOb82yKdl8s2wvY9KALE2fMi6VT6ZeyCwlkFYLtCodtRhJRSR8lLYUQYZ1/ZZop00aBrYOF5vTCWjeYz+vNsDCOCMqhuwS1wyU9r/kGdxrr1ZUXfHsky9VFgEmTjQBwylW1oQUKgtV8epy8urQVsXzeEV7GnY3LOQCbkDOQxQvf86H7jVaHr5OsYE2TXRPV3b6aXvcumizdpBuiVVE8q7uZm40NpsOTtP3X4eLppX1LgVnY9oDPqcpwqUCNFDvwlu02mkcn22hN7rFbrHU9E45SztJlS86iUfOzgcHsts4sXm5vaKEit4pqCEc5rrF1IRuocLBcJpVa2CkE3oeqay/NO2wzaascuiGlyzr0U078cIZn47Z1AVviPdMi+4UzmXviqLntzC2HUQdyV1XV9+HfFEjKrf4lpd2phNcanGIB9qWxXC1Mz+CSQh8xJaP7qqcdYXY0VvwzwdVNt70k6oBXAtxWqAZyrKFO3k3Brb0oqayx6oZkTjNIjA3L5HzH2nEm9StcPidD7P02SYveCM06yMqLoa18Axdo/Ftm4ByseAJ3KPaGYOWONpIEFlOh1FmLtfHCLxHN+aiO03VMxYWO9eh2aSbjsclZPeP9zASdbQqIstu7XxpX1qqcVYhHyWkR4fTD3aHDrC2tcg9EZRsGQmcJkmtasxiosazH0ck9gsTszoUnNTbnX9Ne2MuzjCL5ftD4bDmc3DpojeAnZtzWrLjFPZC9nNhtmcjddA787wdAeZxnGsg84iCzzGFpTq+q8EuadyyGmoQFIfe6RsyqDjCgbL7EJpjo9G4N0BbMwRpQ08JuL7QbkpoE880GU7a/QQRS8lrHQTgBk8BjVmgXa0G5LJ3k/1beAW8ONnbwxICkiM0ZMHkqo0OReHcX+0+XO2GqzUqZZ1Ix/TbYJvXYB8S3MsYx46L0qL7jkUlqigzIGHDRUWt0N0qtSjZCJA/DE/2dvNVxXhX1Y+tZEUFTTm2egZ1BaVZtJF81NjOrYauxU12yZcncWEp73qZfTYJebVsrWaEqjlEMK1BIzT3CyQMZyMpVS0kcWsoyNkoJBiPSylheJEShJZTwkOf7Q5daj7dgG5UamboWwKiMR9MC+Y+2h0MQoAzxBWajKeps+qjM0jM+vZg6sNkIzRwnwkkL1ntOfYwKisIFv6nlATZSopy/F9pWcRdrTN3tXh5z4fjThpwLlUmSnHhWAval20E/0pnEN67SU1VSji50jrZS45XnXxNmKZNyxU7mYrPIFenKUkGMRC/11GoDMcFhqWz9s0Izr8VW2SyctvuX44Rxmt9nex613HdEBuxCStqxbRwOoApGJjE5c1ADoUIr1sOZdH+3SFBjLxHBFbeOQwwWo5ub5SL3NDXV8SPfP9D2IB3n98GaP7736PHj58W9H83vtr/fEHvf8Ac9asMgpi3jxlykHAbF9AJXuAh0YPE854V730cFCmkdtEjXnea5PenEe4cbJ+eIzTo2t+3f95mYxzErjg9enWyg8paSfjgwcMHdULqWP779okjKhLbiRabtQsuXRiGy6Ppeb/XCViuQxeY98tLEogiEvhzO+x1gxvo79op7e+NZtAeX95GmHJph01Ee+d/ZcalhlF14DcvJ1fB98Emp1o6vcsm6SMqQjrUiaHqD2orL+VxCXJMEWlyJfqrToqvhN99R2EfmN1nUjiUSUDl1qG3D1EmjIUiyj8lDjrosyCoUZLD4eQ5qo/skSMpDNnldE6VyrOUVGzT1ourM5j2+xii02xgmg/LH5axn91rBA/qgviJ/EiBWexthK9v6CwFWUyRQv6zPSbNoTCMaSgJXTk0CIT8VYfPcafbG9NPyNG6YRokEcyS9x9MoCNBzCowkpjLf0PgQP3wxCHl4Kgcl0dIFcLuzRRvXsBTwlXXvZ4a5GhIqSAvqrOa+tZvruFf68dTMvAfBdx19OoM/ZlIHoV2SClosBhYtPw1x4ymdXIpXex3FgeGLHTPeUKiqFzPCJEG/9UwtTkv6hQfFR+8C2C0d+Rf2rmhzSNbYld56LN36m3bsfkjNPCVQFmR/bsY9pFpW80C2uPo8jBzqJr8uuTcViI+LL4vSRshpuTNiyHRtcMdfmPN4aypbRCB2M2LeGYu6Uwmktu0/0bglkYomnD9btKo6EMUic6CImovd1u5o14FT0r90BSPGcW3ocYMe4MnnvMQBvVp5lxxIMZxSVLXnU3rbTr7yF5j3AHK2YwW264W98xLB1Jk3WTzqnJYt+ba3Gh+ov/cj3GDazF+y14X57uJxLez+xxC3uvX0XnJ9mTgdwiwNean5CIY6l3dROpXyBx4c27HqqN4wiK9KxI59RXlEPGORPiZdvtUSY/RhCsjKRAVr0KCqJL5VDlPqjwm0SjquaOwb+2JpV/rc1uKSZJ/SS/6VdXVrySSc6osENLSezM25jJkIzQr3tl5myTe07DurvE9nVXslIU4C5wM/iM0xBsvCdfz3uc4WBSN6lyjJfhDyE5+YgkVKddNe9C7SJU8jBOZYMs8IGJv8dCUUM1iSFA5j8GLmlPkjz9TwnxWQ1KpTXdOPvv0rCq1wGkpqY2DLOcZy9ScHWFZ/mM8n/sYtzhAGAvTtVgZiOS44hhJHpjPFzdhVNqbhlK+J+f6FzSZvCMqj3KYmBK/g/lOMy60TBbjddD1l62b6Ss66Co9IynKpERfMYinthEXkO9NXRfrMqV2oDrMrJNch9lVlesz5WjSJHFkTUjZnHL+GDmN1zO2EqZnJrJvy6mhy8IoM7/lr13WVia8vqMWuwmV1J5zy3xG8q1m+A+4ih4dn50mksiL2DnZQ2VX28UlW7c7g3IcoX8i5c6r6L5t1G6BHmuS3xa/KIbE23Scm5j6dNTFZz7hD4yl199RDFL0jEDv3S24k5ObCfM6LZY9+EqQNOAbGBjyvzag1eEriGH05lYFWPz63yMqg8TUqiMp45myiaWW/Ws6hL0T7Y4htWcGhYRizmFa5zbX2t9zai78GOUhhcBMRkwMO6E/ODgsmf0fwt/LR48Gl+H3SF+9TkUk+llQn0P19mDSuuwPz2ssR4rZIROL0yO8bWKPf5P0ujXt2wmlME2llmeFKFLjclcfv+WctA/ApCM04watUuHHjC7sE4WB/fHg1V5+XH8mhDPL+SHQi2HaILwL3yxD4KE2VyuFg2bwacrld/IBf5mMcbg17akXaLodUfOtjyM0+IU7QqsV556+86KMouol3xXZtZ9yuODfJ6RbjcsY2sP4UfkPncTe3G16HtrzbeOtI51BzY29ppefwZqo4WauW0mqP91LphnMnmqVsnJlrYLfk+KYmXqwHJdGWja7EnUr8jhP6lakop44pavlj1DPYq6y3bkiWrmbWnfYqfbwPp72zW1CuFLJYptcLTNjwnSIO2njvLuWEshB3tao3bluX6ZJTh5WkqSUWfMS8taVF8EVU7hTupSNK8mhNxvslzKVSdly2DgaNh2xjdY+9lazLRSvrT+Df98OzEZ4/04gssVcaL6KRdU8q11Emof4yp8UpxOa/3YT5SqG5ZbO5ahLTd3ldLTESWVpZR2RtUTrSrvQMtruMrdwKW7WeddwHZOrQWm4us7b+Mgjv7LCabxo1v5vZ6xqaH3m4G4sm5I/sZlX/nl792iHNiOVsBGuG92jqjHOKTj6mbX4Tzq5JJVajPZnGbHpuSy7LMxHV1TRLVM+5UrUlJrl+xl0XasjKmuwP7zEk4k05t51Y7F4wckbCFJq/K9pD7jsjcqtWZkWVXei2pzDKLefW5Oi322j9oGBTEuwzi23BsVSoMGK/M0yYxq91HsXxIy0fjp6uacduSIjKr4fG+ojKs/lkl+WI9GMQ4SDi5prNqeWutmEwtuUUVCPH3wPpM0UmXOzq4Yae9thBRgMpBmBHs3gIzSDB3dEPhvZV4CtEzuxdfxZScu1MM+vq8vWtCcjKl1sXXX44o5V7mXBOCUdxi5N85s24eZTk+zCiTw6wBsWKWE/5GmxBZAlR8uUqel7NsovOMRwoL7vNH4hpq4hIzRyf8Of5KsS72DqgdBcxzEDigf5efFd+2LdhCAQsE2ukvmOyWwvblXttGvFtPm3NL9u1oysnJyfGNgL0hioj28m4zStqYrGgtEFeflJUcVFy76SsbcqNCMqUg7mh/koLr7FW0l6Qe/brJOdtcZCxJuiyWvU0/F88Qit4W4+Uts4Zw/dGJtXGDx8YGtdQaYD/gHGDK/xJPSeGogPr8KkMuyVTmmKPiLcBKXnQje7LNxDtMCACEdO6YszeNAT1IvMoqZZHVQDtrZDWGuEvOpHCCM0W965AmKcBW3nReOiN4YjqnbZ6cTB5dpaHNTrkVq+lp7dz/IEs3QS2Eh6yoOrb0ZKBEHqnHCyDO62/dPwJk2KVOHSIyoHW0+8jThnozhZS1OvhQ/FT6zUFm/asJ/gaiah5cfRqtcf/sRdXU5Ot9i1tjtMM7niQWsnw+AcoWQm6DMSduo+KTRfJIVrUSMqRvZXHF2Yi/UrKnDQ2e2N6W00b5fnXlM/sofKy37wz9ubei0b/trt938lh7g03PB3gSM0DMcjKjOGzTnUIypRhFPZYgUTJt6YxXcF+k3t5xbTBdZJ7AWfR7Z54vsxScILWFDnWTf03LvknsAs3G0LuwX9i48YsCCUV6+uKnQr79iF1mCN11+LNVNgyGC4YnZALGE/bf+81/r74X7rJ3J4DIlub+gXHRbd2Do3liGO5T2Q9DyTkGsmsln+0sJQT/QktqBWPJjzQVvuQsU4niMqoF7YXPRtA7NV+K467I5RuCp98FUxtFz/E51RfX7413vx30vw/x49efJV//NLw39nWfMCyLAfjyM0mylE2Ft7LAPL1UnKoFh3UMbbIV9qGh9W9k3eNtWNttNBTo0dRDadCW/JE4/eu1bp4MWebAen04FlVYDJ6tBNwAHMwsIMFTwtrlOFUAupXXOzPCxsWbOZNmGikzSDv62jSfQWt46ur717EgOsM9i9+0oor5CwSOuOas6DJdOEGAs5L74qMdABzkPgrgQykDkE9F2Ay3oggQYmXaXTmOo65RH2KYf90o/Xr2IToXDVIe7H7h2cfL2OIu/iWN+WopxXaDR0P9s7OUxCoQjN53MZ0hBsOvbBjEwpRr3O40fYzbvH+zvcJe4Y18lfcKQJcmXAx2pWz4ZhMe9E8ppqWiM0kxIjNO37gYuzPGixgiHOqmCIvwIjKv/34b8bP27dz8oD3Hf+P93I23883XjyFf/tS8H/rYRtQ6vO5a524qocll528ZTqot1b2O92Hv0+Pku7cz2Wdv9of6Xd39Nbafd391W6+x/nqVSjN7iOuc9Z6e5irkp3qx2V7v7hbkp3P5OT0u5vcz/aXcD5aHcx16O7H+l4NMyvufC/0O2of/63RFryeSUjKfPPfzj9nxbu/082N76e///77/+t1sUUNVhaLXPy01MPXltSFKYrK9FxykCxZezCj3gMxyM061WgchjzVUxHTwhcZ55pqIctK7o1C4gaftl+3to5Ony+/6L1E2wjNLyCrsJluM3+Y+/NaRKKHPU6vQvR2QEHiryUQ08P949bey+Pz960jk+OXpxsvySLz95gwtac+KM9vuzEQecjNGbrgwfWqrOGJp8Rxv01sL9v/2pfXDb+KlaNL7d3To5aZ0ctlC0fnQIz1WqRm/pWK9wSh/UxhL04fEUh6Foev5+P0/TH010jNDPCaAw/TCcmeJBOTOjRKB2YYITHMeEowNgSr/f4zX7t2b09xV/24LM37tHn9v5r+GrzR2vnzYtf9g+JZOfuEiHrMPTl6ZvTXNgrSAYBU/mEr6ffwjeB5UkjKfxQAa29w5/3T44OX+4dnsHlfqd1dNp63fp57+R0/+iw9RIjND3Z+z+v9k/2uEECmJfPuH/809HhHuZdJOf/OXxNQf8acOsGcKTdAivY78F85+5sd/rhB3/AWjvHr2jIZv/ztPX0W0rHP4lI+6ZbDOw9ht8SxgFtSdRr0/dNb5TRN/7gYRi1xx0jNKJfTLs/umpTGP3iMPRiIMTkN4VPrqY35xRKvzjt+IbTjW9k6EdMDn9QyGj4Lh2PuFz5zeElYbC8blOes/yTW/L0f665JfCDW/L4LxucjH7ZMBvEIVf8fUVf5A+S68Y/w/iDkqyRkwwRUNBLOyki62cO0mchzuIC0UFaLH4RWAvg+nsz+wiPD/7AiakXcaImKE6iF2OtGEXjIyAa+rmOieIjK6lhhm/fhvTUw7ESXYPgwIRHqMT79q1LiI9i6czgn+G/XBXOS/9ykvq7qx5wNaM2tgx5GSkXo5DvTBEUOYONiy0EWQs1xczy7KO7irV72qMRIVzetvtGmy1nnbaatchKFVNx/ohS2/zTKgLmdayagh6eZXGQIbg+M1T0cs4woDmzxtYjVG4a4s9HW01We4UIlF+im2f6+XA/1OqzQwEBgkwevSWqeCgebU7DeDixyJ1Mssd0yFR5FrvMTckjKiyx6CRDksgFisTRBiuSu1DLmue4LAlvsttOSCCCVPvdMFq0+nA9YWltSeX7i3XCaAwH4ywJSbga9i5qetXQ3KdfEaFHYRJTNGcslnvwCeWyFtG9ZVMyO3LFIzT4dg8PJceW9OdnK3EGV7hRH1agLgNt1Ssqsp5NukmuEnaOwH6xtobbwIwBumRG5Xp5VkF6LYzkrlNzD85xuH6BAm38O+p15HtPvlOpiTd/Z2WzVwVa0Xaoq4LDfTFu36TvhuPrcMutKet2NVSrpqp3nrsjNOmsrPlPy9wvEd8LxqRaiU03ISeha9WJtaSVout9hFqCGExaPU5EJ9b9c2Jq8Z2uRUmu0kxP52caszZRWc7NzbJWm6cE027zzXqUvJHKMZTLaJ5RbE4ToLPKHlxRXz3TxiY7qjn4M6p8pmhikP+G5iL+owgd4T+XMDofMz3L6no+Rfjtj64UYmnhHYEW0Gt8DEFpglAZX5btvoouHBCQqFlJHRk0JNzL7jK8xhrKv/lwKdREHzpoV901dagjp4ePVfAvKePgD/wT6QVY7KtM2Z2Kjlv4asAg590jKXkxMjea6RdQsrkkh9oXl+J24p1TKQtp+cKmd/1uK2e6gmfj8T9e8F3Oles7Dh1dX67zHU98h9ocpNBy/a7BJTSTIk1gOYAZa08QwnLSAkpMyLzkcq2itVp4M+wWwkTnVAJYJfObhKBN2VTrZ+SYxEornbU7k/5dIylsIoq2KouMA1cU6dZJKcHNNJuIlpfTkgN24VJ33X1NoT7EHsF8zcQX6LqODEwFniU0mpijmnJTJlihk+aWtjo2pTB9lbmpZ1p1fmAheXB5GJquV4bXtl+MfmJp5TA7pwXqdym+EQuFdDz2uhZTSlgToRJF05IyLNLprEFV2UtSqubHc13oRTWTkh4TGkpHLEdCxzTxSdxcj8NVfn5hC0+VrFYsWYmkP7rSvlmGP3YIySFa5h/fFnG0cGsqX1pvtx+x3q2/F5HSXFkFceeQC6DdP5R1BM2Y63f0+IRbkQhsWw4bRzY0cS2yZF2HaE34iG9KIyrcu4zoitXiaaTzdMXKUTrByLC1dmChj7gipqKoNtnuS2+F8aYyk5MeVJnjTYfX7R8jKSWXO6Mxgje84ijEK6tZsrmyqqhHfs3wuYBGEkaBnLPoumEXqazNZHPR9Yea3KTF3kAsU06/btOvS/rE1HrOZmftaTx9oxtrOhMpJyYVq92UViBja6hyxfml3rQl1ZmRVQtGbXx2qZgjKk4ILPvjXJgosaRTZps2J9tarbHOP+ZKzLAJCTh/e2jOGWo4houemZ3eCWzmucwYWFDvP/BzIyo6pQKeAR9tMJf2jKNMbhHNlEpdN6XC8NEI1oRA5EQjNKae+ornYOhxDqEfL9tx+FWyG7CzL+5vKF7IQC6MgAbYsHWY85mJKOHI0U9MgnHL1WZr/v7ItTQtVVW9JQ8npn20ZEwvY0XJfrpI2BFqGmusW+xvTM7eg9r94vzEauP0tB0ert2WTsclYsSMoKdkH7jlVOSEiJytQHlq4YwjKqxD3kzNLTK1+YmphBYHAoG4pNjybvKFg/xHpG12Z8cvuiwqfxR5swl7pDy4tu4EqBCPARZe0Wfd2PzavrRbpofpcIfwcSMv67aH7GFG6eRlnWN8bUf7ng5l59kbs712bemG2YnDN3sHB0e/hKYmFVj+3oVgh21aCIx5Ok63yFAljXKWWGdXqX3A5mdkgXwu8BjY2wav3iwhrGQ27aAxNWxu5B4EW5bfAb2GsVl96vpY9kbkAVRPm/HFkWWFEnQMJRDliKTU79Yxt3UbJU5S2W0cQfZgkmzcIbAchZFUmTGSjGwLpRJ2OXKIFGvyBJYlJt4EQBMEl7S6iBhmF8KlEBIV3p7M6/h1TEufc+rNNhOT8mF8TQvWYDZxQloXZBvKfA5ZlaKWgjF9SpJnbwdo//R9kqys5ptUdj3UDNmFlTBM7kZyOMXhRS+F4TAf0wFhV/O3YbbosV9GX/np2xfoH4OYihcQ0SM0YP98coTaAfeZfxfcTOxvd12A/cS/K0CAunB203Hvlnwk8GYtCWx+q7Dg31ns8Hq0bWJg4lHjVRzXWSkyZWe/ZmzGyEPVmc1EDFIgAjFKTOtsBVm12F+17aCztqb0i5whZZhXr/GJ7ZTSqqTk9wz66k5Lu4FjXFdQayM0YJ/2/Dc9SvhBOPklwqmMJNwh+Z5y5VBvSfVwbvrVohBMJgIjNJe2OJoSoUx9ZAKoipEirqRg73dkwWer57aApFGsbuyqVLhVz8/ZdJtwLnGRm3CRxYGzG1Dp4Lntifeleidcq9VKup37HbFEw9EoBFYrNF66h8ZBd7czkT0g36MQY1y75WqPzt681E3lqTMU9cBG+CdRDgi+X82eIYqEMrQHEk3HLIcsErCS8Nzl9eLdtb2f5dI0P+VKLfQjNFdnO30Gpntk7UMGZMwermb1K2DNJH8sfyMqsKbJzUAure5w0roywFFIAf5rbK3T8xtxiia97kkGHuFaez2cGwJk1NcaQLG5XC3tsX3FLkS4tmZq2lcH2x8iaiksLLXoihelsnKZQmDuhV47kI8vWQyF2cQvywE5loliq90mBrY4hVQW3AbTm9GEnDC58zJx0xyFj0X1lE+ZPP3PK3Tps+kn9DvKkT+tvyHnuD2+sx2OlJqfKiCjzK6BUDGyt/jEqsm7YL6GTPKT6yjZvVrChL4ky+Xcltk1mWyC5sc2AokE2aAHpU1Cl7lwH8jLO0Nxu4OXK94w8BceLBFskMRcsLVVrE7SGMJLQ/FMMxHe2yM02u2aIhQbV9rEaslwxkQYTdtWFI9CS7yp4LqLrS9rvklLrqNyp5kJbJpnM9pCVXjxFLVSDHZAhq71zGsFeVOz2yT6UPsksXSZQKha4N0p4a9ovpVtNSM0fKIh+nPNXLYQTsnS09M7OwtUmtEa5lxzlDwB600jNFcYIyM0NecaEEMGsyQuXye8jOCVxKBAkbMynaEWxd61a4ltv0lARRZ0udPVXECjrcKN1AiHy/dTxqYZVAnhKh54NO9s3IuvQIoVwn10tuN1hlJQmlII2sNxeQFFL2tJpZON8okrYbZpYiNpNJ70+EgjxuZOuKTJe0RycJMuVc3vRsIdstKA+cmKFXEXQ9GHShS/Tzuo+PJdSHau+gWvWGWNxnClQuYq7Pxy3yuGr5TDK2r0VJO4W/hwQvlj00z5GxU8OBeyGGg/IJyEK6vZSrjqyqE4l59ToU83l4QtG5AJDI34VdcZU5kk4+Se5wHX+oLemdEpy10xF+9JXOjdqu6c322/vealXZPrx2jBlxCVxKuDbjJuqYs8itELiqgHLDS/c2V4jzH+tHHdV5E6P4vm8Ou2S6bQF9QvKmFU+h7FfS/HSnwfl248i5jqoAilgpG7zxfR0hIh7pPfoUijh/rnv4Xnpa274L+Ie44o/ZqUuDeaGWBScj3QsmL7WXJd76N2rvWRoMVhFb10vRa2+MgtiMuhICcTVQOcE33fJ/Zm4fSnC7kRIzSVpG41U0apqLtoRKYcFXy6bJu0OSM0j58fIcUukVXbpqmj2bXNF3t/RAMWqRmpTiMpaVXB3yIlZygqy8bOc21e5se6yjHsOOduYl5atUN5DsVL4AEhjX3aqkZEnO/kOr+3LVqCh/c1vwhbQonewfsPEmGQxUmdYJhZZYLIIPveImreoBYe7LZg5zjZPnnTEgzl3TfFMPojPWff5Ur98vpIoYSrZpDhxGCST70w+s8ZOP0+/28eQFeUAwTW17xSjyR4Dxa7TZuW3p08LH0PC9jR5LdMEhXn/NxExVfK2aywXZe/CGjv0LkdqkC0cz/NRSmiYwLLsxE/Ju9C6Z1h1Hhrucnc0mD2rLVz9BJNgE4VjNxNJvx/deoElxSmaEAZTcMF4oN+qOp1WV2ve+sjy1baj0lplWCTQu+mJryabTDMRGH2UexvGdUwdDYr+sKBWfCm4W6q6d2Wp5ESkGZFFiA50h+Aqb7J8lKOGrDtsdt5McVGHi4S6wUsHF6+c6EX/WGbBfGZuRKogyahxhB/BXF03xiObTJYIzRJtmpaURMdjvP2IIGgtTARS5ZcL58qK1/nBtpTugUSkcFsb6DKBVlE1mbAAUOZJZhmFb6ZrIkFBJd4cBItKDE0pJlh2J7i5NHzWc0jKSsVyE/6Tx70Qv81SkQwpi8DoVHovqZqrhGJ9NEpzb+jE/SdzVsLn2cBbOW1oCDXZskt0JsjKk5co8akpO7AJovyuLc/SF3hK8hJCVydvZGqHKK5E9y4BCAtCflgqWTZTvYH1nDWwBcRIzRt2poS++8qqq+vuqbiesQWS1iIwL/glk2/YTeJqrVacUa6QkjlIicHZOBeIzQiFythGF9O2+Mu/pgMR9bdNxLNeGuW9xyJEhcIFCNlG3OfMAenykUYkAcpUNswLy+hlTaXT/9iM3+BNrYgVbXyrqOGTnVQKwVqTiNrsPgJgNtzzKg8dFGOnAJLgaRhCK2/UNpewocPnHH6dr+PRtKDyzQLbqCLCMrhIzROIHLA9K4H0edp0Idr0DfBg4dvSZlZq/n9qXeBC4/g+//E7TNQ/rZbYvsrirzcFWJeGTgzZrkR8r5yBEOoBPyF4YM2rmZc41VX/LJW43FCcHT+UX1ekLl8fef5i9bz/YO907jhO9kScTBPKeMMA1eplqDLdttUfovUfhWpI80m9cGri71Ei2DOHC+b1waOX+NT67ncOj7ZQxPLnDLn3LTigZTL3ip4ZMm/QuRmj//2IBi73CiC8TnvE/vnpCllm9lSO27F58k1zvdJj9FMEr7eIymBRruZnJeR8Eel0yYUhMROyvxZaK5LklBAaSRXaGdcuCphnmOiyQxORbdAVjP6x8kcxXrwOsYjNF83Y6ERKYdD/0jvnO8rJghl/mkq648jNC8lqWmp3gcjNFZWsPJ2sOLWgr5AdBTOnAd1R9AxmcSEO8fHYorUnY4cRHdJwmIyVZqHdvdZirNGWKUF5oD05pSojK3uKfJgd24TOxrmryM0v1sQjT3kJ4NyfD8al8N1IzQ7Yb5/f9fSUSsov4spKE4Ijzud+LJjrP579lenD4dSYsUOaCLAuKHdl2icRzayeBjhbd5W0jP9kLUHt+04HQv+V94sQNzfbMQkKeB3UYJySWuRkkkshlDqfH1100k6vsGlPiExnyjRGcMtFPEh4Dw7BOx0hCGDypD1XC1stfYPz/YOWgbAKoyeJRsObUuJEOGWl/ZdCbDmUVk9E9BxoG2cYGriLw5f7bRaYfT9BjEcOoq6neMjNOXd2z5SZRNpfadToJ1vExehSzhEX0adzsNeZ9QRQlSh+6qZp0HRD+nftTUjKls/n5h0cnmbCTEbOvQhkAxqw0H/LtjBjFEc0PGPXF2XYLDSy61gZyeBtN/+T4CYr5ADfgEb4iDBsFLXdLRJZ8G0veQ/VB2Zuei9nZGwEGQis28W+IVHGUSbQ9VAUhBsliBV0MiTahPs6s8eifpEeodXw8Zm0z4O4ifriy1ds5SFNf75wrSL8kLvdsCiy+DaabSV7R3FzQP176j+Pcyew9gxcmQssBdt+UhthkIuT6PX9LDb9Osj0oHR3T4+PtjD0eVbE4UBlZ8wqKIQA0BjX98kGzCEs3nZSB7ZM1q/kmnv4LnN42f5cf/w+cuzJASGI1z2S/pl//DwDLORBIeCLK6PC2OEnnmkYT0qdV+bZv/l8cH+j7v7J7mW2HC3pfK3V0I+CRTGSXQLbLfPqd1Nu7M+DKsmEaeqzs4nEWLLwdk7GbbOe4OLm0ktPyxR5ZRDlKD7Jx1CCRWy5eedB2xID4Jb5MY2MAfjVhCuWUTLhimhMWvCZfGH0KnTS6XxEcA11XxBwWHUNE/RPT440GAtuW4U99em13M7O8agNKlBDlIQRWuyhv272YzKV5DdH9UjNOKwm/Y/h+OSFaELo6r5yZuxDuwjKoqBcLXqwHZ2m/YxJvcqUF2MHGxCir5e7h8enXAYP1NL+PH22c5PB3s/Q4+1oH83tPnQdY5lmfULPIvPk/xLmfp+DNvxCawFHUNQIcVEGPuw2nhl/8eXweuDYOfhztu1t2v1B8HPtR+Ov6d+f/a2+yB6W6dv7HL6XokjZfPYGqfJOK3LeV67jeFjP6pnKUIiQLIbHJXEJa5BO/DEgnbKnKQUrKOY0O86IVLSG1i0PGfsqIo8cFQ7GfQ5viyquJHXBzuG0aoXmM8cFHzZWP782QZR2XRhPWtX7Yze2dI45IlGmmy0qlRUNukC5bJgqIkBgJgzN6iJanYQG5HWmSwucGgPfcKPZWvt6g+lCTX9qDkQcslTPmHGsPdtBbVsMu32hvUHP/z6NluLfqhBjeBHrYNT8tdO9Gvtl+H4+vRqOILQHYMhGkU/YKK5szXMTcjCfHTWsXoulk/Fj5qJHzMBeSMpSqcgXhTbWWuQpt3U+cDV0hh9wDFngI8xyMcrZ3TWmChWBjwUEJW9jhQc3+DdCcFm1tvZOtclNP48OxeXk1LX161Wb9CbiAtP/ZK4ZJPWy9OYGlmPuUb7hp4SejC32ncFx6CLeJSezXfGO1vIGa8OP3l12Hq5V+Kk2PMYfLr/onW4fyAewXuXA35EXiCxp12Bk0LMaHF6sDNSljXSvztDuNrNJrXJcNSy/p2M1aKVPuIu5KJFauy7O6a38YH2Z0FBNFSQky8VHIJKJaR0hp+wz13SYOHjNf2WiJtpf9Ljl2WcK5TCmGVTaradtsIvVJqHNeFZXBMhfCKvWXs9MrlucNJmjDXBIylRLc4uSRk0Jm0XFcHaLxTFejcqThRxKDLHQnBRqiGoNICaBHdhUxdrQ41nNpdXZRCjVyXuY3tLfkNH9FFRxIQjKrrd75s0RULzqlXl/kmm26Y4IyllD8ZumrnV6UWxJZboL9tBI4L4HhSU6FeoavWHnWuloZFDIrfkRIMsMuqtovSIizJJqE6HR2ctWHXag7UHtE1aFEEHn7n6fcJ7Ep2qSJRffarfMNXTVzs7e6enlVRtBXPzZDCEmZIvwanX3kfHzEVU3Qc6L0729g697d/1YLlKnta+0/N+jxQ/UZ98tZtTGsP+ycJVvONfR1YBTKsX2UdxkXZH1Q/oqBbkHFKXqWLco0HBZ8ioPa4jKs//mYrFX+H0UDqh12k6smhmYqZuXMSy4F/QA9BcEz1zn7fHqO4gxoV4DjuKshKwL5BIFtl0xLMVDi73BN9H/BF6ISNDaKyUNbLDo6Xfb3FHm22AtsubkasnFchvKyhd5Y3RQGZ0O+Q3/pqhMrXxbyOUAzdsolk5GohbVFRC6key1o09hsxowiVAkj4kE/22J0oxmezldE2lB8Ob9KbFgTXU5egh9ShWe73sEL2uNtF0bWuQbSbENpvJTOO4Y4Vzr2C+fu9MrZjzFJKlpm/R6JeR1qDvVFEokFLnOsTKkV7A8Toc0oIIWBZH4Fj8ukbu2C2XgAJ77s2FaskjNGG/QyVnuSoCEWGTDIrQHVrYcyejl3LCYGU1WIrB+Ude3MfD7rQDAz5KGMe7ftwewyxO+zjLDN639Ybxz+F5JpM6t8kbC0qCq4QjKqh+IymB5PCjft5DVk4hfNg9m7Yx1rEd8Z5Wi8qmiJmWdZiMjFE3rl/0p+zeIrchhuvPzNmG+yB1IGwIUFvjmXPEesYec6jCtKLjLMY9v0Wbq1Nh9VAyZnVJEWnVbGkgauqGsWjPnuztylnBQ527BJKYfkyWo+1BQNUx3lDFWDEOsHOV50X2nzzETAOUHdFOT3gQjNjR6gyngwlug8U+Jb0OPgxpHsIJoI/EWJ+6YnOsia4xaFPgBZZoOecOzlVWMTbK1ate9sj0VE4dulS9OYRZGgyvQ32SVbaw5Lin2GoGroByYKEH8AsbE8GN74hhIylxjGjV4z1c2rbwYOV1MOEjNNcatggOmk8iNJ1HvUu5AfYGk5q+zcmVFJVEn32rdaRsIusJBu+6SAypeYf7zk6pOznimkwOAVPQV8vSTBbdJKS3a/KuFq7WkAw1xfn7U/qjyI87888ed+n6kJ5dHWYiIzQXArLcMPAfsM8aK9oSE8fY1sX8+ASDA+3dpaBWaP3CzPf/8W9w/rmA/6/HG5s5/x/fPnn09Kv/jy/N/6e446AtfY4XUNQDwZOzmKTOLxUmpVVQj9HsXX4v/02KYRg0EpuG9c5ohIi0nQ79O0N/AfUd+k3PrUbV4CM0WsebHUolnGpgoLXlRXjYFbV5okbJl8XItk6SA1MjKroewMUU2NjRCPoJz4TKuAZmbiZz46EpTSP8ms18wReyY8AeJ+Gf38O++CH48/vtkx10kLmFf/Hb6Jfgbw8QGxN5AZTauvHc2j/cwZ+U0Tny3JKfQpq9g37483v4a4JoZ4Yg+OsZNgh9riMqerlEO7cGKsDs7h2f0r4/m8A1DMLqBFKZwbU6sdOjjp+uHwyAr50Iue4w/kyxVCtXlCpat6Zexe2pUlH3E9MzJ6a37u9PG+DFlo2T9khqvyMqXfvhUppQIzT5yc+rcqp8kkvyiBKQGgjsJT0SKJaHoYCdhMzoB9kE7hLYtfycIzQ57WDQYVtzo0Isg8vA77FeBsStqKllzCCqWfbVUehn9P/VPZ9m/wYG4L7zf/NR3v/Xt0+ffvX/9UWe/3GZE3DfTRcufzjzjKMuEbnw1/Lf/Fj7SIVTm0rm49sjKYHFolN6I8e5CDvMMyWlIyopbz8Te3Q25JAghdIRym2eirJCaKxGZrPRl1UW9jIYCYGhbFI1yqqKdnZeux0xBmYUnkWXYOWKBHBVQhQvpdpyUjUchUQWbNKp7xMyPtxWqMiaoalgwTC9s2kuShJIJ9/iyAThmqYxkZcY3yM0keoEs7VLUyM0ti1mruifOiv+t/CVCXmCSMiwgPfHV6ctOooOX7TOjo4OUN/7+f7rhLtgbsqXR7t7CfaRnEiFSpSaIf948Gov9M5GYlMU01Eo6UOwvi4jNO4lsVJjTES33bIkWFVMII/5xJrQmQ98C1Qmu0r7fX7fuc/rt3V5gK1dl9auc5czRkW+8PCr3+7/6vOfN//PzgHMP/+/xf/y/j8fffvd1/P/S/D/Pczi7C4r4wbEbSe58DzEHd449SQ2gcT487gEe7v3GYT4E518wl3sBfnkdBY+x7xarp5B2AW/CXZG/WmG/y1j8eNBsLKzErxfZhMuuDgjKnvd4PiutT/oTXrtfu//peyy868u6jk+qKuIEtIfDL173IMuv18OgqDKQShE+TWJTJitAofkHYnuH56esXdS7h4YvhimjRF7LLufVo0jNJKgCPu2sdmMA/vxSH88hg9+ikTSu/unZ6/O9g9OW/svjxNEIITx6fayyZRebyCXeI6ROihjMnzypW+eyS2GS7yXW3LQCaM7YZ4kBAj5oAhkptrvk2+MxGeYdFQYwwF//ObspyO+/UZ8xcVobE5FToySNxyRortwA9TsQX6peFom9UNhZf3Sckwbmk/q+CjXNsqjP0hDTjlUoHYZmb7lm29TJ5HGxzdRLNtnQigy51Eh/tMCMGeBTy4mowMHMGeG0uikRvZ9AUKcQ7w6O8J79njT1sG04PEjZnn+pmV+dqDNZJCBtrI98dHpXwa8IY6iGIGzAiu/XxndrYROAU4nlqeeQjc73QG8p9gY7CA7RJNhUqAXe2NFPHDnXTcp0I/HaZ99zE7Gvc51YvR+fHih31x2eSll9pnHb3byvjVGd8Y6RqU6KqYa6lQLd+7orivPvtn0PJsQfFVthVCJVwSa0WucWBpProhErUDU6BUIvIvtyM9RDn769CMqeaTu68LxVQ6mtI9EoRfp9gu7adjgwyMYge2dn8godokwCIku/mpsrT9ucluG5/9MtM21tdVWBtropPeu04ZVijrzKgJaXaf/Q8MZmM+rVAyVZtwgKqdg1q371NZDXe5WiHJK9p7l90SI43shETD3QOxD+K9ksphJtMBqMBhEUFcyfAeCkb8gqExajaUdWL5WRNXo7l5IqxbeHrXmkbuVOyAep7aZm2XclZNZvd+eDjpXPFxRVKbPedNNGoX5bA+1D9qlSbjeCWPkDOIqmKI4V8F8DPRiU2OwzYFCEjXwAigYdPt/Y9+VJyNpe+vo+Ow/qZ81lwQrLCwVQ43al7gMBdwPWwQHs4c6VYpIZVxnMqgJKtdRGT7vJZ6krWILajb5jBSnYLUmK5o7frP3+szK5DiJA1qhT3vKcFqtM9ih5yM0NLA52zs5dEyQecgoxty0O9ycYhQ1ygSrQi6qSulWhOcIia6C9oNR2NuMxoWoFmxDr/XOp5PUVyXw+Fs7ZfHdiR9l7p8EarDjstFFYB4O0CYD9xliJ9aM0clT2x0hJPzdQrPR5/bTm3NS7dLTDoM+18R7+ePe7uJTj1LnjXwM/2u8aHGJ9jPmW1BmncvLJJDgLa25LillKyCyEubUsYvzwubzLmbLSyIiZF/vkiaywbZdobLpIzRstYmp8VOujMbI1uMDbm01i6KVVeSAhlnLujFUuIN2znfTfsBpGuHL7Z2j09et3b3jg6M3qMnbOts+ebF3xo+UBdgJdpTpjKOKbsByVx40qEIlAQu1Yl4wGYaPqzHXIzQuj5lpr7WowTTtk2LddDDNsI+2zP0vWOHBWu+iCeHKD3Z/Eu0+qLq19mPdZ9bdJU8CYlftGT0xOlpW8OkXZMYca9IbkBEjKXJKsPRwboVqF5FSzMgZ/V5UxarhuZMkK+EjNKH/oCEmfUXDsUSFK6GKgq+omnJ6izrRznE2HWq9rNu7NDqk5flI/yyyzKQY3rnDzOVQq40wDvUGELM+GKp9nUEcX2Ep2tdbDx1mIimKKcBfYEBEUhTGGviboaPMmqcy4D+nJ4YiJ2MDomyzyLwkaJubNNWlC9VB4IQxwSWMwzin3CaT1FTdU3OLSpovx25542eTz9d0OGk/suGm2eYinxUaS+clV7SyobL1dcZDuPdbMRW9DFpiZpzllNtSKoO+arVS2hPDyFAEGgY5RWH04NaFgFqSgvpgsXQ4TapSajstsT4wiqahL1wJ+FbocQ+hgCxoB7Ie4BEWUYAiPkanpeQhGnGCRAV4mAWSnvDuV2elblwbM+etDNMSwPRslhTsAQm5ETWooCc67OuIhwOKM91OIzTSiFTjkWQt2NJejivTmRTGIp0de8CGbL0P6A44HEoCWF63PVyDk6vxcHp5FZQVi8az5b7LIzTuJOnf2HGistW7xTljYCnLvXx0b3hz6ffsD13wJ/WIMEi5PqH9mnpFAxLmVZZl1Qu0F1tL/7b1LiLCsoHA0644WaN4pawuNp6ViM0bg6WL6+AhLGghuOLDBC0rr8/GcNbKffRyylv8IqgRHCUW7+aiN4bSa5edThxcrq3FAXv2INgazFa6bdqm5YAvTeH+/mOrUCbaJUOMu/PeIHEZLS2KuAdHIym3IHtCoI2ZcQ98C+NL7+rB6VFg5h/rmeGf44Ng/3AH0d+O3+AbyN7h9o8He63Tn7ZP9naDKqYSCEmKHSG4a3ycmx3VMpcoCaWKlzL0jRX/CaMWIqQk2q+H4Yp2YXPbdMzlyRSYtJu0DF9hhc/dgNjF4Yjwhc1Uc/oWtfVbotyFiwxM8Ki+gj0Fx0fSwKM0Ya/3s/guQm9M+Bdq8P+AX7yNEX+nKdoCxgOnp54uLBasJ3q6WB1vsXfOldUaIyqkYqGxRPJHgQ7ziMt3ZUDoLKnm6hlerzOBA2RLnJrPmnZdyNGScAJaM/61GTmGcI0sv06P8IowmN4kYV3qVZy8MqqQImpsPWpGZeoSIyrjx4+aGa3BfYH6BS4jKjzsq5kJWYXiTKiErSPgnSM0Xs1udOoma15IrRi5kDmoFY/MSmwjKkUS53ZaL0fOS96nUWxJJ0YDvS1bH1rr7FaafnQ5sCnOafDZ7iqdyar9fmP2aOM7fPVm7EJF77ppQSM0bTDw70gGjvt5J/2c4401mPgoUnQVlopzkEw85HZ27d6epIdo4pstf1XohasW0oa+o5iEIIVui8VTNuKzaicWiT2hYrJWZCIebiKvmMKxZS/fPHfn2XssmTkf5jcqdqRCUby1ieMPhu8vgCew0q+tccPLKEbO1fXVlsTGZUUVe/ZZR2w2+bzjhXeQhUbLMF5/6FhhbRcYKVfXsnGipALXau5i1F0/od8fdYy7tcxFIzQ/2EToJ943Bf7SnAWaabOZPcbtfpLmVP2kYphjZktK6xWNQU2Azoo9oVeou/NhSdnjNs47cRFYk23Z1tSc983YxhRJrIU34bz4whu254scW0LcnECV6VXLb2RmzuciLa6OOaDRHd2fgDW+w7UFw99GynmKsLjwlKaHSBauUFcqf28oCKVHPRGKuk0Pvqgy9LyZO4Fi33bOd7+J20J+Q1rNKZOqniguGyo2ty4q2o/KBe3LNpRIwBDrB38WdkwQ5P7IDsCKL9Du44PSZmPwp7QauN9aNoQJDuc6+mMPujBPJ1b2qJhqU2Eg82fmpx9CUAT99ft2la57RYep/jEvtnRQUGdx3WHVriCPsxJ9RK/ZVmcxjQlX5fUb3iJg/79C4NCrtqnk6/qboPauN3j86PfvJl1br5tUF4lg1Ass2UyoAsve6SROKtBOyDERxt2pBzDldeqf/oQzPTg8OgueH7063OVesQ9AvaxFvRUwzkTZyVlSxddnFTughPppXLxXvX25dmNTqTeP88LGoMY3p9teuyC4j8zOwVPM3idhluE1huAoOexUatPIJ2wWk1HflyUUdl6u+0lCmFpbpSPEh6capHD9YjBcR9l/Z7Le7vfaiEHgXJBW5SbeozqvqZFw9POrJGaGn1wplX/BapmOWrnJbjsr1rmeUyvEcCsjNBHNwpenP+8YSDfkF3roPk2+Ex1JbyheNAFSGeXKBXrWz2wc0gukxWK98AkkrK1jOSMqufm1sqv2OO2aC+9HC/ojKnNZ2N7Khf67dmkx5AOdQ2n3h+DH8fA6NTuriSCW+4fgRTrJXRgGw3fflCAX5GROJAa86eG7s31BFd8kHGoEnoHvfYgj48l0RP4pWG5lQfgWEV51FhReoTYJETCvj0719u3AAcfdkSdBgg5E6IatgF9TEQ5nFkXIO2tUVy5pC6VIA6WZKcofKPqJWQGEXgxLESMjJ+XSXucxfZQkT+IV3ixXGd4Zzst0Nko7E7hwP8G9EnZKlz7mP9iPtwhOg72a0CMeRSBsROy+Nr2vR03JjmrELvjbZuSuAjV/LFE6q0p6lnB0lDsIKYmTCDW4Lx0ci6OA8qCmB8Po8/gJpeU7stUjNA6NI2VIb1QIIyr0nSPhsIjLc9rXGT83Sb9UjmYODNc/bvmGWFOs8N7pWUwUo48SXEpWK72MV3xt7Boun2573MWPZMMky2Pi+hWRmxzXEKoU31+nyhLjQCysVsdWwup6nCysrL92vxbey4cVijsEabll56rucZ+5HO5WSNOjcGFfiBTXGX3bn4clBO20ERWekkmH6KMlE08y+JOvhIqagHlKehKanN5ErNk8HzemqBfUymA76V30OslmHHz6IPP+LLUws880hKYbM81GEZwODHEmqeHAjUDFLTlZPxUpTH/EtrSS/QOByU0dyocnsdnN5nkx7ffdpnXTHuEZEHub1WOjpeRvi/aEIugi72Yh54NRwo9dUYrbZ2ps3pgvX3bYaNEigmdJQO5fHNE4UsUjNCM0k7seC0DhcKwQDwtXwry/iVyZPfQ0MQyG/a45rQilcGyrgby87Owvj3Zfwa3kbO/lMYKvaqMYuH61s6AzHaPmb4vvB8umjMSa2foJ4iBsGa4EMbz5oELUEFU7bI2MlDveIypMcLQsA8FR4XRwIyo8kBs0tq6p4Ie4EsIO0W92HI5e8XrsE4hmO702lI2b6C/hwa7ym9dDpkGTBFk86CFU8cJ+zS5dGYbDdEBpDFmmXDQXORF/WQiTVD5IumbN+9HKIyqKl3lDWfDt0fZEqMsTn9Pwn1O7yveNVyp7TWaOZALXqfxwzkHOppGlKkFHm/S5yuTvP3aW8Rw+GA6z9GcOE+DJwfSm9uA6cnD6zmUfMGjkodMDJ9YkapVc1DV7IylQ515Z9mtyLwv1SN6HUI9wi17JoM7hlpcOOyMqcTbT24RUx2z3xu8/xF0lJkpvSx3QuP4jNLrDlBcc7Pu97OKO+lM0FhjVK9ejpgULjJgZ44I5TnEGlBtq557/zZaSg0I0/CMpnA4jNBpQHy557ESbfhGycvCUkDaHUzl5e2DNK2IwFOMSj7w1XymQtumdPZpURlcsadzTJikjKjUn4UblbmKIEm9o+CM0ISa49D3YUlUvt6SRUBclf3IiY79Q5T8J148kbCeZU9sOv9aQsdS8dENOJ3uo2OAsuo+uyHYjKX/+yscjNPwiJm3SvqxFEXDubjur3k5J0xZnstSrBn8JxOcOfiTwHzsdo8gWAdtbJQZp0UokqVXKWri+TsOOYodsknCntDt8XNEbX+sC924SS+B7B7CKV2l/lIRixWyE3Od3kxTdFxhlmG4jKVO1I4aKNU/hMSM0GrtMbEtyN8M5dRu6uiMqP61uSO+ml5HOqavc8HNUTtYXV1AF+NWcwCYV+nWbZmmgrL/gGBkDszQc36GnLltxAk3OXJXa08mwsj5moVBlRJ9hRUqVg/W8N2hzEecpVqHrSMPG3QSuwluycwuifcuMjCMq4OL2lWTJiYO90x06fnQXW38462j0joI1VLWB0aG3ATeFovmNtvuoro8jKlygTlZEjbVC4zdXMVWtbIh3oXr3DjVkbb2+omB8xf9g/K8WYub9zvgfG0+efJfH/3qy+fQr/ucXgf/hg2+YqwejexAIQ6+PpoLiszZzIFPAOqDHWGbEEML4QgNQ9RBM+nx6QUYwN+1ZQhj6ZC98nl72BhjNYOO97yGabl4JxLMbNLyUkVkjNDovJNMVfimdXihXsyMqIrTVYzFSN+33bpIOXYwIc3opT98rwZRB2YyHIypxvSZ2LliDt29DiTRE7Q/zl5vTW1a5Hob3VtdSgUtcktga2iroqiM01TWpiq3JgE1C5KvjRLSFhi+NxnAb64iaku4FkrFiJNYaT0xdki3ClOiVwu2VzGs288N85nWbGS8FUmdxPup3u0/etNN264N8B/zmJj8oqbWqTqEGD/M1UMUSv8HFfENuX7fyRMzlWmbM+qbRcDOWXiVzSk+iMPCV9Dl16SxrOkV8iDegaS3S2tKuNIp+mGAPinuDDrI3mYPbA7YHFzbbtInzpVQEVtpf1yM0B6Hfrcb//WtzLVqJVHreXLz0HDQ3vcF5y7yMkH4L0m/V6g9KM9ELtJej8X+T5lpSq+tCxCGv+UR7ct3GfJtNxyTmB/cg3OvI86uHbChOpaaDLrkXIR02a9Jj8otuJiYaVKD5+bppD8NoLayztQYZhGBehUFPLTDzgSKVu4F37R4uvpJoM+nl2u6omiMpqYxtIyn1jC4Xvy1hdw5YN3lwQYUh5C7qGIQctiHmWUSeXCMqXMkSBPIDtj/XxFFbrcP48AJUTymd3Yqbltn0vBbC5EKlvtgkZK9ttU22qeHZgp4nUK8n8WcRIyoJxukCc1mseq2Ek2c47KeydEs6EUnp87XUCbyawiDJOuDIpGKV1Cm2li/IukzyqZhNKl8tP5WtCKWmIFgX+UxGOT8W7xXkx8D0hmQyjqpwdZa3g6KkEfRvZHdtlcvs1kxCRfhV1fA1lpjx6pNNxOMaORTxkIe89ZI0MLhp3aPoOIZwEdQfs75Gw1FtI7LzkSYQrTR2vJKOc4WRflkeWmYJp1yysiLa1Tk2jGFqlhk+JjNIEm6dmflqZbxuwaJDC7uOzca+VTiLvGjPYZBYfsmmNxNIAbi4WIt93FbN/rq8dDme9q4Te/rgCZNDvhBzq4wjKT1QB8GhgliEIyqhI+5fGM99iTdsjqDfy9IhEoS/zUlIebKYwv5z7tze/e/yD/H/8GTz2wL+85PHX+9/Xwz+c86/A/lwiNvjBVAZ3UsmMS8wfx2O7WyWlBlnXa7hQYduHcSWauf169AI7kmXRbnTnc3iy07HgJk5B6tGw5EUHDVYx2xGe+RwILYJZY81nJ/8CRCzwd/WPyMq6netD8OmesQwvglYem++Esoo+a2LAkcy5/WGg62/hiRc31/N6JXBeWuAwF0JZPR/COi7IymX9UACjW8BlU47IlApT1wQemodkz6zyXKEvekiXYRyVCBxP3bvYAsln/SmeD8eHatKtHMw4Bn8Sf/wc4sB8cFOujje3+F+clqROp6VIDlFAfwH1W9Ws3o2DIsEJkJAV9BSmZRQaeeIvNze+fHV4e7BHlIRLB2YJvCDNErQj6T0S6sPK3A6IzSbXiu9/K6ZRZwi6J+60M/Na+Bfexc9YAJIXaxiZpf3OErkw/JOg8huv0+RsLBLoqQr9l8e25lGnn6H08k654irh5QaWaHvSjrDRColj7zr+DaxzrsL6iMqV7S+c3f5TpSvsPlVPVPSMbmWAyHV+CqlXJOvqrbty3T9vJ2lpOlc0QcVLWEwpeot6uPXh0xBhlyds0bo/YGanfeIAqP7XIZTu0KhwmFSpe+G42umLf5QMAavZGXVmrg54G0kEnRWDLL7UHWvtXuzii7zIzQ3yEgyaufjSX+BnSV2qeHfdDZCPaewtAUV1bsaTavqt1gf7FQMO1Rt1w5/5ebXr9w1hjC/z7OujzOPh2lVp8M57DJnF5s//6ZmLTK0FmqsdHGjG2f7yM4qgF58uGabRD7Pj04VjG+BEh7lhcBadC8oP7I4npoBe3ll7iXPfeiIYiutMj/EIhAEOTLIvGB8qvRJkQOeYnDRJSDZcn99W/yvev+D0cv+Iyo3wPn3v82NpxtP8+9/G99+vf99Mfj/V6h+GJt9qdIz0L2Q/znHQAJA4CP++96CgOsiUxlS3f3+h9lN32jqJSub9Y0V2wvJyquz5+v/s/LDs+Xvv9k92jl7c7wXjFD5Kzh9c3q29zJYwWZBP/SHnXb/aphNHp6SMe3DA7bIfLh7tps9PB7DOTie3B1Aznp30l0BekzGlrtR/wuGIg7Ks+Wl76/Tu2c7z38klvyYUQzO7kbp9w8xAuJZ4vZs+/j44PuH8pHL9iKd7EMjTykyn3GHQJO7wfld8Ev7oorEae9yQL2Zz/4D/C+f6fDobC+f7uyn/dMjKf6/HbzYO9w72T7b2yMqnu8f7MXB7hGZgr482t1//qaq/D2r0pMn/B7HEIVqH1ze7x9y733/kPr2GWs9W8xPvGHz6WTASOEeBDtfq5uO+sM7lHC2YFNAICwFT2qxyarAaAhCMnNGD9VQlMm9tNinbTUJ1g4LXHGidfpxGKqLVtdq7hpCBLx6i0aPCMaYB8Up88El2Nxy2+z2xvIWQxrmiF6Jr4G9cYI4lYKXTezNEO4paacPITXzpNMbO6BwGrgEg/KpG+HOcDBh17vhy3bn6JSuSJTB5RdZPKqiYi2lelhSC9rZYhjlmtSPHoSwgqzWfp3w+xiJobH1NE2un/HbMuOqE6T6dXMtxAte6BSEbayNMYjTSFpNVblH8Iw1HxUIyoKurLqb/INCkyG+airDxoE6YT6WLQ4vVitmvXcPHNW6YPQRs6lFc/qPrGPHHlC7ngx2HiCpzUVHNDaj0bRPqlBtrFyJ5zDuB0G7K7QiHtCbjfFCOdevx8Nt6O9ehzTxMnwRfbiaPTSVe0hVe8jm9suLIynKS5k5pyM0m3HnIzSYdtFwOfruyRN5IyksDhVR1J7fbWAL2ZakIgdFWmcjeY1+P1mMb3hb8v7mEc95FiFMdD+JffvDXcuPkne0osOQ23a/180lJnsjNIv7nKM/hg+cYINNs38YpwLOW8GJPG5n8n79yWPtCJlR5gd28aJnkHnpxafm19gaSPTds5tDmM81WGhKU9RTeunEFj8c1A+q2VJUpLLr6dgudW5A272ZmIZC0e1HyZTEcYRezEwBel56+OK0+tjvvbi9/8f+cevl3uff/ogL+F+2ASJHV6eGhW7zo2/a/tyv0vnCGeNGU7Y9m7yOb7DpbJK8DyMqYxVuVTab9t44hJ6URPDrgyHX6kxmubUl4VyE23l6FzWbgydKoT716agLLVDpqjZDaZobuPleK+3qpHzOJLRr7JBtTfgp2DxFm9mvTZZVpU2JlrLn1MRPaG4hn+f4+e0Hj8bH74j0ObSC6Hvg/qsg98kRq3IFULUc+ZmifEWahw83tjanEquy3LIsRr8LfFb3DkAOWpsYTP973AQYHwHGSYBtNdpUT2WOwF+reOcSRHRlxSMqI/F2A5/50AHuqDJO4YUfvMdTiufOJO9TpOCvh+/wMJ1Hd49qOdck2bhzn2uSyFWN9+o5lXNO38XTeKG2hW0BV5k+hlBxmLdFdOmqFqaNcLVH1WLRh+GNMU9a9rL3H8jJECSA/+p4SWpPag8eSHxU0onvxj3Y0Egp+T9E/nfRT2d/gP/vR99tFvx/f/fV//eXIv8rNwEgkZ8I+O5TFqHDBbikXpfdg3nqbb0LEvYYtlzDkvKdG3YSnPcdepL3gyCElEvg4wJ2mAnvR6heJr6il5eA26UPz4/S8tK7boL3GQKwGExaZOtKurpyKMxmZqtSV67ZzF2zpCKzmXJHNZstkxsz2CuBB7rpJkZfFdUMyQKsWzMF4Dn1/GDvdRTNjaaTkaAgaMdLGm11G+F2QVHvYAske+024fxbZsjBkCGt1svTN6fseZJpzazyMFwrsnRE+sNWJdCSUNXjMOM4UOFe9xEV/SLA3sA9FvtWm65CNPlbe9eNRacaRwe5CNz1439Ne+kkQZ3Iic+/2j3YqTm/Hb8dsIOXSAdKULQsc7IuXHmrc4UuWBntIzQnShiPUf1X5kwsxxVMKDTuwyk6TtxUjZlenY6/NGswhSbOGzzh7QhB6fgbz3Ca8fVXp3v4xvnz9slpI4R5ioxeTaWPyhPOZmVJF/YEzu0jtSmqjlaKsgTxyXgi+ktjqzI9Xnn79gYBq942Ntb/Um+uvX0Le87bt3TmpLP0zyuxRyM0rf23NOaJnWHs6unr092/4f1PUN9aF53PyQbcc/4/fvQ4r//59NHm1/P/S7f/I9ff1Uf/RWf5ouOwGN+HpH0VbjXCSzg1JuM27uK9C9Lmiu2rhxd7+ZcnOiMq3GCns/lJ/tm+bc9PIab8XiIIbvd8ys0PwrRQatsM9sxFno7sq01y36PO8tJomGW9c7iP2hWMh3yi+ofcuvh0YxXdsPV2plsWWr2cetWxISgTBESOIjA7QrSTG6wOVhiR3rBpCPO12CVzPBZqnxfb3a6PLoFfdVRtQahFu7WFZICFnIUD+xzQScXvWI0gbq6FcaEB/nEE20ZmDCU8vCIf0mp1HNSecyttcVG4an8q33ysX4O11bELQc0j2JSHHnMLrMsteqaJIzSQMhbKyEODdP3Dld0iIylIH5lGA94931EjKfmGtI1FpvECphmwGTuhCJ6d9vTRy+P9g72T1vOjk7OT7cOk4/BVVTLUZOpJA5Rh6sLt8yMpiAuAm3beAkubH59vhCXKIZUUZ3TpVDVzjsHp2n1RqyM0YbU9YJ/jS/lpj3AQWTkGSug7VZEqVRLJgUvQKluXlOsmpcMbIeaY0SVICWF4UegMxNpAFOwGwWsU+kDAOsqXs1lnxMEXsmqnY26hIuLb7Kve2B/C/2XTQafze+t/bTzafPpdQf/ryeZX/u9Lsf8xHB2jRv1bLIOyTqdUfbjTKTESIzQ7Hbnk7uyEDjeriJfVQYgs8Yx0P5agnEGrYwPj2A5Op26jBaagwzr8AlQewnIMlWESrU5nm9TRJiM00L6FDI92/n/2vryvjStZ+2/0KdpKSKuhJRYvSYgbDwbZ5iMqBgZwJnOF0j+hBTRos1rCYoLvZ39rO1t3S+DEydx745kYdZ8++1KnTp2qp1wjod2M2VHo51ge7dqGR7tod7TLyY3VEWOYcYhldMTZ/Sftjh5qW7TIrsixKZprUeRcP0HrZ3S5N+o24VTiaM9n7qog8mtRrH+gTZG2KHKtiebZEt0n4MHlMU+rPDO1tM53M1dtvPkQrfEvG+//xP0fzhfEyH1mFuAe/e8nzzYy+t9PN7/of//f3v8nt6NhEv3qy32Mv6We8DpbXVlvyRMEsUIuBvETylzYbB+ClAE/BLZnDHuhv7kBGEWQu7fkIdEOFUi/wslNNCP0B0cPo5vgfTeGozNUeKLbfawiXfJ/LKCCRBJzS2t+HDcxccxKEqLWpNQriHLDryAmAj03Ph7yeCU8u4cvUZ4THqLal31dFjJLdNqehMyL5KnOz7lF44NcgvpL0uP6Xr0/EkmUnB7JU6cozUy7LRjMj3zHxXmQrpHcmCmGwrrrmkh99S2/cTpnY61jNH8wjBVpQo0qPxXdVr2z7ndYE3LE6BkaowgjNLNkLljvGqaBh1KQjiUM3Y/tW+PQL5Uiwuc6H3Mvte4fnd3ZFTOET+gDY3Voz4L0ISHPmJPLIzR2lgInSXWf5W8wK/5yYyNQdms6akfGBXjpOrxBr639EeKA9BPt4xsB0W6C7SMqyoUS0bXKksBzr3g4rTxmVptiI9AfApdNrq2GMITAWngImIxle/r6M/Ea4/aWvwwFk3wJ+NWLYdKOoiMqRKgqeiU0afT67SRpXLYhH8+HGemVb+A/PygOx8WikU2RvEsjKcAtLJEb7X/BLkGa4iT1PW+5VSFR1sbqTYXoUmkWhDNzXZtxuZCXHEtdlAnrwSnNEOsDLHWiFaR7km6Yv9/xbodT6FFgj7BfJ/hI/rWhiylOSO7VU/Mfe22iOl4tKAvsHkdT5p4afpy19gTIzCMpp14r3ilK1xo9KiIhrFcsMCEIJoQSJVPCiicu4CMq2DiqsaHmC8mqBucDz0tvEI1RtzVsJmu09nGLeHHVvQQieHk1iaCWX1mmPfwHAgXQZ3IZi6fi1I270sHNTAnxajI3ZXol3uTOgbLg2JIwF/1JiNG9mhWYJRB3vMKNY3gi7c8Yg0NTcGCR1y6rN6MiZDIZw/ZoUVncBSMY9JItO9M6UXjxjDGgiWgpDqPJOF8QVJkO8FyISWcBJ1Yum1VK0oeFxldG43bTng6UHq+FSa0yldsteS+bZWuVybYP5JMwoFTlyPfXTLLWPUPaBtQDEXz8BoujuSuBmMgeIymkMaxqmOAIXDVu2ioqrBOY8KwIueV5fzMouM/L257SYlxzFRbXHO1h9LAHnSsZBupmoJc4/a4u6N1uz3hC3l6fPWb+j+D4ukkyvaCUJcjQ2u74o94L4WPlIzRPi5b6B3pqTYsSSv4uqclRLyQeJfGoRhg07HjAarQ9tIzatr1XPEds62TbK+E65i38IzTVR0qB9wIdMGDddBUCG7ap5HPPAWNCfSY7L34mH5AuDLo2job8ZqTjuGVr/jv9eEkTK2e5YUMH7eE08YbjVhvvaNQagTZG2MwBE76mdIUPZd1S/a35ZesjKWJ1fNTJsFUjKfOLbKgjKtYrYoJipjCvNGYguskQowwQ8KoY+KniSSNRVEf6WN6w10LeT+sOEuNWob+7rCAY9gWfC+OxAtPKdbiycv0hUH4vJBP3o42xRYymg7F1/UGPwCyKFMOKrlJgYibkptlVZ7R4cF+Njo3K5fTbq+6M9yEoF/sGlhyPDw8jNFWnNquH4sZClJjgp7CULOiIEFvJndgeXOECIYc/RBwR0o3g3Axnzd2jOps7EVWuLnvDi2xHooUWtQsVjNzpqxxMUCmwbYvakaAMjtABproiXPOVTYtfqZBq2Sg7lYv7A10RzA/WD3bNlodpoAWNQeL5kw9DrzVEHV5aIz5r1ho0db8Y6npRcb+hNF0Y+rBrockPlyXeZ3ILk8FindUeyjylR83EQwaxQn/sCJEJVkF2VB3NfFQDZpDpGk1kd/l2qt+YteDlKtp8is69EQ4zRDsjNHaAmowZnQnmWH94wzysaHsZJXHSQ8LPLgeuFM/x9HaFF+PDDqsuNyczVOIjBUKk1NhZlKf0Ouev2GV3TezC3EWaq4cCQetxensd6CXYJZiDIykWr9UYXLbhnCMpGxdsj57J1FuT6nIT2GDtvmMjKblXyB826lfuUt2b1JXYj9iD0nncb7kDi1mkBhaD0gNL0cxHSM2GPdDDvI8IBKF6LU02wsmmTeAkRLtQoW2UwjfDyUaWdCPRGDfwJIqeB9I7Bu3hsuMgaSJmTRVgkyO3llGqvsy0QYmxIo9G1xzJiKPt7yiZivs1PuRb5MRugsT1KBLSUJYBh16LQ5AbMbYX9t6s7JhDH5FjULHBxkzVapPYhdYvLPDuoDZbvfXUNl6aK48I6tnDAfSjah5OY0h60bjo3Xp94HbEVxbN2BB5SZtnJXuSFT8oZfszSHc0jaSj0Y9NUkIB3qtoS1cL1GxoLlF3h2PLPkdmmBsUHqGgSB6MpMEWSEjTbAL8oTEe3MO4IBkYDAdlrLOHeE2t1LFZ9ky11PV59B5OzLBi801ObFbsfl7swcxYEqnN3isjKoZeMm1e8VoLmCOTptwzAyhfZ/gVYLIe/HvOTJY0B4kIk75x91JnRIumOyMpwix6NnNEXCmakGVNnGyjnO/yKTetSuY0ktsjKmx5DDuwZRCv2RXVsttIm8iS5x20rr+4JYZT2cUvuH5Uu4PR5GnN3AxJYBVDsO6KpeH8OLfKTA7ibEOA2AWjXzhluUsiUK/RHA+Bb+YjKlCEYsWFwhvIZBXhyz2Px4ZcanvYRckWPpAnPuqo24zkhtIWcUJOheCXUHPFEjARyUOWlYRQNMmDIufHIhzVl/MOYCKLMpNMjZ0ZNjPl9bnYjhllvsqHnHQqiY5BeOnO4qZybXUeTS9RIT3yWaCJjgxUQKvlLzphGg/RtGHQK7AnLZH5z4C8bJFAKO1Kes0jNJgOuu+nbYGLN5UZjckVzb3lSzzjfy1VrHzncv3ANFgTwjhOesBVx7ElKQYSNYJNRQvHK0ZMTpMeEknXxnHJ7leHIFscFvu6Lyzl5GjnFanHPKUy54RT+A/f/13+Edo/9+P/rj9+nLb/evLs6Zf7vy/4v5+K/2tp+eRq9tQIsDdEBZ+6reGTC/7bzMf+3Z0D/fu5NHB+k/qNyu0L5u/D9XM6CxVyHKzfT9XKyeL8/qEov58H49cG3FyI8bsQ4fcPxPd1h+gzYfvarU5j+87pkUyH/DZk30/C9U23fU4LFmP6ftojNMig+f7HsHw/H5Kv3VcPQvJ9CI7v50Hxtav22VB8F2H4PgTB1wHh/Z+J4GuXkkXwtb/mIfja3xcj+KZzIgTfdOBDEHwX6FpeztO1zG/l59DEnIff+0VH86+n/9lvPY0nwLb0R5/1GHjP+W/jMZz5Uva/6+ubX85/fxH8D+ST5xsBGx3HwunZydHha6DMfPfGQtbTnZ+qezFsYienGi/pqpFctZPYTGcx6Luiso2qjfiJYzGn5fsqmSAOHtbL9iVHnq4jfUOYKYS2CdtTHSUgKRo91dS3em29HkXJBEqI+5Mu+44TuVI65gYfB3XT1V2ZUuOgBlmVVHKqLvkVm1RO4/3Tvf2TUjKp8ftZ/PZor1q3tUz2j0T2dkhGKZibHzjlQCMhh3GpZFU65Oek++92EFRousCuEVRa3ct2QopCqbZETmpWIzSwBO7clkoct4bNOLZuG90PhfSHiH++bFe/n/53m6Pmn4//tP7tt99m8J+efbH/+0vQ/5R6+xxRYHg5m326OBCn8z3+wHyM4z/IEVh3oSOwLkoD72P9qUL/o7x3uOv/Q3cwbid/tv93WPkZ+9/NL/4f/sr4L3gTusjTg9bzXUA7YrwlHA+bBaMVXPIr46bwguOmYQY1Vtzw4l+IyhVhvCM0indtcNJ/7B+eKHF95K91hnSPaSVpo7Br3JyDuouLqykgzQTq3LxCIyowAqyTTAJjbCzwlKQl0KIcNPIsl7AIFCUncVTjZPXCGC8bB23HObVferH1S807n9RXSl/dLW8F8tztQFfddTsD/rlD7vIOb3TvoCLwVyyl7rjP71hMfUfy6rvRuHHZb6icKisvgvNk5evgzqfCzj+sypf93aPDu5f7Z293ju92352cHp3cvTl7e3D36ujw7O5t9fR053X1bOflQfUOnW4c7L+8O6m+3geG+J93e4/3Xv2cKcEH3rKy//rw6KS6u3NavYO3t+8OzvYP9g+rIzRoFEZf3MHqeVJRQcoxedrnres0l4x7aRw1Qijio+jc8M4exgV2mZH2sz0uNcILVMg30TBKDKUpNBXIFP+IomkjYASeC+2Q16SEcRz02HmzHyp/u9k4zdGIItmBo55OgDw+weFq1VroLu12Ws0V4zKbXF6Lk+NNjWWunRyXzLdQPT4OghRQsp1AW/Hp+E85vnU04DGjBeQiw4oGduR//Sutzo+ePJD4E9/M5dfW/uEuPlKwuf7akkedlFc4vsKDCaV7NnyFh4++BqV9efCuKoi5jgvipUl/FJlZdp/DYYxeMY6gIyr+bKjIj+mSEsZlZ8L0xA6F83kPW9CqbxWpQXJINBeakd9Pbpq+QRFyGaWTXWGTKLUfEkokoUzdVLBbaYhdIkk00g42UAFmMuQUBQPdIh30Ty2vnFtcuet/ORw+TP9jMCVs6T/V/nv96ePHmxn77ydf9D/+KvK/RRCAR6wtFYoWZQFmKGFloUOnC9ylxiFqhRGUW78xaCUhUOjqz9Xd+PgE6PrPH7FhhURFTcgllwevjXG3nY2MEQtQifas3aQEQpPKhOXV6TbnJ5VUBSgCSRqlRjdgJmnTRvLC9CppewLJ6OoQRXRtSor3oLAFN1Fntoz9ibslGmsQovBFr+21GpOGnQv0QIGcj5lM5saFD9hMiiS2jWRL1iNfZXOat5wUZN/ixgHbAx1PTgXsvCVOYdhrzYvuscX2oPx6d1fj30AmNBNVeqwzLrrF3YGxPJISWFWgzqQM7k+M6fZ2znZOjo7O9vZPPhbQhJWSvT585xXxrei1hs0pMoF66OwUa+S7gbqem8qP5cXlsKO4dgFnLSaC32mj540al9ydTlz4WIA6UESnLrrpTnSIsga9sbP7I/DOHwu4ECkp8tU5bTnapYa3broUa++n/fmRRi2e2sd7rxZESjgOTP/T5rgLZ5S5UWEhL7OMGWbYsyfARwt8HcFHi7lV6Fmw0UIC+Btxp6WAkaHzWSC6JG5PkBMD5gJmvqPaaYne1c2w0BwFVRmqJL4fGHhKRgE3zBV7mngJbSLw6Zf7h/iInDW+WkspMnXxrWAfcasr/BxwIhk/fWOtNMkvURo07UGFdo6PkXUTu0aonJUMOdT+qNeeaDQjKbLOWS8sfbiC5SYgiByDjVXh83O0CVcDEKySUjaGr0YbdLiQDMX0qSNaxYQgqHoUh0jlwN5XlKuzynSE+reBZaMC9WUlWj4XaNOsJf1BLiDIuoNciZRM/zkDabC61/yQ4caDUPhmrRuPnhMto6lsF3WcflEGPiM0iDyMw9hun2c1Y6aaVyfAdrpYsUE7jYbzT4oqU6O6kykt5E6j20N5Jiq49xS6akpZmPy1kJe8XKjIfYYnYcIjKae9Thdtg17eqjkbekVUhRcUkyIcqHpAcKYT1ognwtwdnBe8ItFhok+4fRZDJwTWadGDLavi7QxUXnaR3hCyG0M2BBRhpSx6cEDyLtreZfemjY5O0FqoWC5zMigF+7g9a2Dfm/Do6zdHb6tFQbz0rskWRn1EjZYyIlBCp/gjNEgSvWhiB/HRi0S5goh5Lad0fmUPiCYiW8E5cXWP27ia/BMUcj9CfZAjKtD1Y3DNvG7C1ihuwqvxyq8baE7fZ2hNh0iw+8NEk8gHzANl3NltK9TQ+9esZMeY9uWyv6o8IzRN0BkV10/TQSM05WYuJwITWqLcEVJ3elEa++dfn/9aqv3ysb4anH/0QwjY8EMrs0CcY+mGZbs71pWOVHmZrrKJzBf1ld9w/uu1mpt//v3fxrOnGf8vT59+++X899fU/2+Mw9an3/Xh1F3guaLmYwSl9L+HlBD9+WUhPbUCIEJ7yvUf6eDitjFlp7SlIltwAnXde7vn3WxWikEUlTfSeOStNh46IKLBGWdzJqxL0dZCtu/93Ka4mpJ7St0frQXqHKJlXx2l2h+jbmr1JIJHek+jdO4ZKwE72f7hbspGwFHMxHdH9V7iKGsjKR2fTSMptG3AnmMcgKU7pgLaWMAo1La01uqBo4a/96a6s1c9keuWVpezlzTxh+7kKuZTJiZ9g7zBm47qpTd7J9jcdFmiW7qXLnjcRpYFN54yMNvtHsJ4+vV7L3hp6PRlK+FZN8a+G9DS79lRV18MSP8fjZjp+v9I/gjzr/vo/7ePs/6/Hn+R//116L8r8iMkQyX3y4OEdq+CHWin0EZ2IzTF5Pxe3MP7N5tcX0oJOXKfoFvWU+Wkaef0tPr25cF+FV9OqqdH7052q+R5XLJAlXtBZ0kwDzYCqQPNWUbQR9vxZo6nTby/aydJLKiYtlfNpgGlaMq9EhG3wdB60UKUHA/FnKcyH57RvRI6VUiQsJb8IzRWiG9sJHt1hTdz7GNVefZXK/9IfS8swZRDvKqUQ0UJFTfdaAVt1QFtahDxwWdB5a0/HPtoeaTKgKrR7fsk3+8tNCFUtQ9TDmEtP7uq5ED8hZGmzynePkf+Gpulb6GbAqmqiXT0Dra0NWAT6HPK1ZitX6pUIzRc2yAzjdYU+aeM0j50+RMiQQxum6OpH6iz6D2OY1WHR9Rn2I1f/8qCqo/YkV//ygKsjwIlKFniqKIf8pTfS/RNnpOlZ9yVI3KJvAH112bztvvn6Df6qLUHW/fxVl08psO/ILOS8jxGN5VjWrystxYQXak+0InrpcKcyMNmsFYc5elCOlwSVN9i5Ib7p8q43WmPgVq3t8R1hgvZdVsZIypZHRenqR7FWxhC7j8jPbS+aWfPtpNmovqQiamY5bK9mTCiCQLTIyqGXo8gLTEjKXsjKSMq95Xzdj0R1Pi12iMhGcpHoRnUTGQguDHe+tNwKnzUT+2keSvzwbOGZoCZPuRDx6XAFJReMxzq6zt9oCp71ZfvXhvoTolipNIFy3t1esKv110Fpd1TfZM/HIh2EhxyLA/yGVJH33BqrvqVfosjKYYUJddJLT0lvzLiSHn1URSfnZhnnPDa695C4mMy3LqIP5EuZF3Jm48usdD1UaMS+VDecNC7pS6CyQK77xp9WsW5wiOgoqAEv+ckJmu+BSmVtZ/qSDtaGT/cN13h/b6ZqGacmoDDZmr6Iyqb2ck3bLpT72jXmXjD5sOnXf7kmPV7f8DkwMb9wZPjfgKCvYOkA2UjKVm31dD3eR6r/1k9ODj6h+/oKb3dZb0k4if4SSsrAfeIGkmGicTAE1ZT0swkhgGjYakikfIR3obFwJsYpcZmv8Xc3CMpb8miGrzD2NUphAwntN4XbVD4eWOrrvEj4bj6ASWpqOs4GPKp1xc4LMrR4f8s7S7OXX2lrn0/HQIXhkdZxqZVmkycUcgp5ppOJmYup+/mYFo3SYh+61u2mhDo+GqDPo8gLF8wBB9ggIk39C/xR4REkMjxb8qDA50x3iIpgv5wUlUfxNV66rsiy1QSU2yxP1WVC1Rfs3iJKhNsWwIlJxsi7nnXQ+5tIyleRSDbXIZiy6qPiFnzoXw4kKkLBtOFaj53Gte4u9HZZPHEVmwn9r32xE6G7DGqIUwtpDy5ZaXsTn/cP47fVi0JGCpR6iIjKrIRrjM8upCyn0HeKelLRXXIS4AuY63JpF4OWZCS/tI7t1wduL5cD+TKf2J00vbZhUD3+P9Y39zM6H+hSOiL/OcvJv/JaP3nC2MWCIOEGITzhUIFFODsHu1VSYXsK1Jw9+K3p7vxT9WTwleswU6+IzSrPx8fnZx5MfHKqMRVavV67EwkKHyF211OdPiAivEFKwMES0QCRPAjKTfDbivwfvWEln3/g0cqMIW3O/uHv6Na3PzfWa0fIzQY1kdv5vgjKbxEM/SAvxt7KyvwcgP1LixxVPz2g6efb37Q1PlRSWcaeFHkfQ/ZchMjKkNLh0uiyVCdh0q5nERYgN5Z8Cv5cZdPyCMpTZRTkRTnqhy+Nxz/AaIMT/hExBVl+FPcVscsRTG4whJfn4RJmIQiIyl4gb1cs4mQYV9z0/gE73RZjgxlCQPCPtegLZCL1BDUI0DNHF+/oZQGNl3IXosc6K1EHudTfRCypCqi5BV/lcoh+yMptQSCByTG6eAk1jNVUpv9d1n21uV+KLI+p2i7On5OYuHIpFPC9izQ2diVUNkjKXvph3AjNJcMQx4M+uvcrBGwhYgLeTBpLAhbWncsG/Zt6dMQRhG5FzIjKn5hyT1o//wzO5fhz7OZrw49WJpy3xtr+/Ja3WJT3NkfkrcVx2WwVsL0uarcbF1V/RQU9g/RpsXQIyrkcQhgGZZvZziMJz8UGIQjNDqVAzx+j+HFgwX6q6zadaRDOo76qBf1ulrDUuBPOwfvqqdwqGX+HRjnOOZH8m6kXvx6ZiD4g8CyC8gpS4fn+E+WnPRBVXw2kXTN1wj31x9qzod65EtV3+7snhz5OrXGt9dJ88YVs9MxUTaPQ1y3pdzZGL4tXnf6SVWwgwZR7cEE4lsDt1yaEVKylgtaE0kh/It8kOs5zwf0Vkrwp+sqzWPvyDOlfjd7FKnhE4R7OmtTJ5b0wM5COrpFxmm0TImZjFvGsTKK+ji1h7uAcld8sHPyuhq/Otl5/bZ6eIaz9StR9PWeTwfdZNKqXG1/niMqCBEJhp3SsNOJJ4G3HXnfmT0oTReQmFh2gGpKfuJce7PzUzWmFr7aP6ia2YardDpJpVWBdVGj/P0zk1DAFYT3fdMUIltRU/PSHSX+DLMG2+iSKOw3UhlEUFVCVaMBkCbJVLYbQIBKL/cPX709g4k3kkmnAZud+f7g6c6wxhbkxVgw+tVZk2ozrxHlvRiHKz569eq0ipU7O42ePfEL1ghzp+VGq+tmftZGOKswU7AfPnuSdaVhluHZVRuZZZLAy8CkxgvXYvVwb3/n0FmMheQjNOPSskua3W7c79fqXgSc6vrsyeaT70P8/fbZU/x9Vn3yhH6/f7bB708f4++339Ov9/GHTG7drs7t2fdPdjH20ydPOZenz3YlV879e8m9SrljbpgPytspL49oQ9fennSNu3Vv1ZTYreOyN1VpXzRbsPVZdfnu+z2qefVxlX6/e/o9/X7/dJfq8t33u0/4/buNTMskO6ujdjd3qaN2v/3uqWTzhLOh5PBe3cTfne/o124aZ5bTNlMjNDXOtIFbhzcm44Ha8H8gIscynMtxe0Tu1pHzbwxgLufLKI/3D3/0tejGsl+cTSLXFJEjKl1JHyXyxxd+IynzlEBffFQ1HZQ3FBIzJBVB1kH37KzXrg72oAZaorWUMoZEI0aF3NPrTiY9CzjaZPVyH855mM/p7emDsrroXvo5yM3lIyrrJJLTSVlZe+5xJCelcyjJ3j7nlRXmWGpjT5sDS5aXtcZTFYa2pnhsMZFwq09L3iAWye4tWqVIf5QiCRa72vRyK55lW+2vTMAin7M9rJ4C5cJKwr9weI1pdTUjKgiQ1O+LTO4/h/8D4zj5/Cpgi+V/m4834Dkl/1t/8kX/969j/xlOxo1m+6LRvJ6vFkYOb/PUwWyFrk4z7CCCJvJZ+IQm+Qgf9GBFrwWyxVzVsjTiEC4gfXHVaeYiDmEcsW1/5aKP0ycjKjrUadrXT68U7vj+q6OTM/sow6lSQMWK+N9EigUnlGVMG/9j//DxprDqmHGOWi8EvskJ1Kq+KhHeey2T7Z6JYVR9XVjwNXnZUqDAu4LIwF/3dbCNTb6msMk7GdhpO4yEInl41J0FgNSdFCp3LkS11TSjNU06XhKs8dbX8HC1NkTXeXX+xFrFUgXpRKPmrMPX9g4OfMZBzhZgAWOv8bPqv7nY1/4aWpaRqfMWussZ9pQjKUXNgLc7h/uvBE1wIYj2morpomanplwjNHVaL8EjNEYbNwb5Mefnl4HxxYvKeJhEaXxeo2I2HciyATYjNJru4GSlcs+BAU7F8FelQOtOOScTPnRmgksOvnhmWVOJsLZxcXJQPG7bYDzj4vnF/mDS7p1fVFbOL37iSOfJSunF8fN+41/D8fZ5ayU4r9B7dyDvRYK9CSpJG+2dqc7cNd2EaQLdJvdbUadpjpv8jrYOveEl+QuAiRfCeTUygwhNYH6Uqw5JQjS4G2ihUL8xaV5FpjGk5AEjY4VAjkbXhOKnjCX8Jrly9dBmYtxH6RH1msqjghP4OqKUDBND3sdTBPKn6snp/tFhVLqGEz92lF8P8RH7CCdwvn5BfkeJyUYoFaCb6FDhtoRsPJ+E2NU8K9nYQ3YjKTx32JYbSzJjd4/fRTw6S4xiQhfU9Aa08OAdRIpUGeLzgUhmJOVR2NvTn3bj3aO3x/sHQJpVRS0JokRRvdHpIyobk5K0wxIn/oTr3YgOF6WqbZUf14OCjdbCk5o3G/0ldyuydMpSyUtulnqLnHUbY9khd058NxIj5klA0+Db6RAH9S63WhZtQD0g/qoCk6iG4k9Yfs+eoIptvwW/QVjy2/1nTyZOSLfxeBMCZt89o9f9SWPQnaJebreBMRyU8gYaxbqUgF2EqAmW2ARBNMQdiK5fKpXKi8qL8yM0//oGKwwboXIRe2lC8rusHAFh/7F9W3IC3/xY/Wd8cLS7c4DS8Tew1Yb+6dGrM+Dvqufn/xh+ePbk8SYqd52fMxk631UQIyrn56+YovtGwnV0queQmoCftUIL65BTCa3BRlyoMXjfsGsotXMrVx1M+1g5u/oh5TKnpAs431+TPhXEYRt5BbLkDmSFCJdeg2lRvbihi379KCM0WRxA1AWvE3JmqVLTkuuwSE9ZsaSn4L0urKDq22dPzoB3PNv/qeq7mlomFj857lFzx83pGnlY9c/P/VWdl7iqbeqI0YNzIzTElSlQWlLXcRL+fdoe3zLNmpWs7EP/eDxsTZtYtm+7SbVHSnnAsxp/gUPCCMLDhO9uCWuNikczBF/4AkQdqEBs7fPXU/G7CV0dmJyUE0UZ0Br/1qV7ldc/zXXgkPk0ynqbkZG3svy0KWG82/6WAbCH8g8cDNuj9P/KASHmQnE8tfWtTbx1UZ1Z43w8f5WiqcISaztIgESNrNOiKiMqmRqsstmMXG+mRmkQt+ozvK05OwVWq9bly9LwX3PmBgkHk+4YuGNNmN3MZN8nlprKGrcxZrtVojergpXr9i1sroTS1zFsHpacLsMmuYrIWTnV5LluyCvMzNzbTCxIzf05M77ZuVRdXcOodWv6Odk68w9SVdp49GlM2hqbBAOBGyRXliqJ8IPQLV1aVIozHQtIjeeHG4GCNyQo93SSELNlKKqEnoHV08+Ko8Tn5mhacJhjGs0tb78/GiZJF7FDJkOSOHgjKo/9bdoYRwwtgej47I/XK7PbzPTohAtGdsEJxnKFFGbYZFkuN01cpCSb5uGh1iDAYNwcTGirnIte6kTFmLD2iCrQB3HMIyo76nWbzEZK6N+zPBrDoitjqvJyi4jDspNPoLMRFaBisfi3dvNq6CMqO50CrEdPGPCIXoDvjiM06IfeKy4nRW85KVBc4sWXl/FneZmDVLLlZXlSHzCL5WX4u7z8A/1KKih4ucT9I72FCynJNUev+fBGsgw41Fe3hkgC136S310/VE0yqkZWO1ttxLDBOc14r1iEg5qkD2T0Xlsn3W96royGo9I6RCDSQK2mJ2giwhrRs6AdseYv660MyO0B5SAXsqQnTrodYsJHeYkhIWnsYIza0y1arKY0ouaysH4w10GZ7FTvS452JRVNVFWqfbdVt7LEI319br44eHae0thMnk/y8oQf7BVEqtEtIzStqoVWlkH6HCxLfVcrVDxwmZfmrNPAZzipiA7MsFHCc3dMvBbSfjhII+HTnR4UNKljyBVUVzLPFwwjNBMTCBMc1+g1cWlBMEfy6eZr8Dx1H9GE9HcPUAUC6oY9A3O4hOhKGFoPXGpiLxSSYawhKgwc+bG1jPwkNObdoIsXlQYfeRJpiTPKqIA7jyGqBvFlY/3Ly/bYQJTyuzjGTiZB/rBJSexaGOguXXMRvhIFI7rbC+vsVKUf3DwbiUdsEDlFJusenWdmYLfYlz1R9m0DHIXGrXPIMRoctIM5dRbJy3g6kIoqsIpBtmivhNFwjaBHZdiEWl2Y/o1bbnAS2AZkn96Uox/nNgEnlfHhrViXmjOn6iRiFdOS+1eeXJSnWUHGQ1SKpajL1p3EsZjUTGamgrBL60oCzY0jKqcY4s6BkytyLZmw2hHkod5pLTEBFdtY4TkUHpkObUEkN1BVwxYjKfGH0TQiBoJf1RlAflWwqXBkHq2PGKpzVK1RD9w1mmvSF81K4Ucq7JzG3aYIgpw+jou1bf5NiHWloZsd2o0LU03S71nj2jl6c/m9byqvWqZ6wK21BPIcuTFGqzpDaS43QXGAol3RNC/CAwbRTaJmX0LeqNNX+eyL52GZBSorhP/OyQuDPyEzwxg6Ek+Vq2WkU7FPOaKoMUmLwFiGvJDfFOR1nG5E75PGTVsr7LaaExKbcP65UjaIYpQM4KWgvKjbOxgvb7WDsVRYLzGRrvi2YFjQ0fg2j/mmax36M4LN/8jBF1bYS9+WhToZ7R5kcsnmwTmkzhfz9+nc68kFvl2JIWPBtGEDopTEWUspI/fk+FkYh/QFVVTKDAKCDEgjKrajjY2HcRvqttViO4Tb0ayR6gZhjmD8MQaOVJpPAlbPSCYCy4Y2nysZDOluJczwJ2nWD/Ng0YHcm5m92OjXXiMpX4mgsijKJiih7NVwyn/0q92tXDG7PUDUPxI73UkhQtSietWt8n+j8985mZf1RZrLo5yUSD+bJd1+IzQkk+6y+txLy5xLg7dnfm5xEM75vz3Lyd9mKBmfiZ3g2ExaFpaBWJsPIypgM/wTMfo0Y0VM+3A6aFU8Floje65sQ1lptpsg44Rmkq15KAM4Or5tBt5pOngvjBrlEl8ZF610a133e0OumGvWkoZ5sCMqwGHzYmOBqJuQyfSgKdAoOpXoVVTwGl2C8CirLp9TFug6HG/IeRaZe2rcMnU6+wIbzUH0GyM0gkj/UFeODGRk5qB5jLm9nosLQTmEOk8zn3WmWyJw6mioHIb3laxp829FHWW1K0IjMp8GMsUgDyJ2bl0YQ3rdSbZBUh66gmJIMgmUcqNkq+WfDzKmX/ozwBacmvH9iD2Flep56HeU/2vf1eK4Zz2YBSMpJKTbwWv6zBrInf+4bdw/+VPdzvfKkTMFgEIuLiX1QZGtB9YjKUY6XjxlSP484Egq9jx8D/1dYXxIp/lB4b45pspwIylW9o7M1kxM7RcjKsr/S/bfimdq/pn+fx8/WX+c8f8L0b/of/7l/L/dB8/nqIQ6CZEjU19pAy40tUgn+tWnM4+/VWMfR+T3HS2herD3AkPuN28vIQZ+xw8QwHpqGMBxQvWh0Z1h6KyXkwuQ0ulMZRLqlF1OmUwHwwS/wkOzaXLsjrtWInzj8KuRyQxeh0ln4yfr/XIwTRcFof9q3DRMsDQ2VRGBzc427qMc6+mz7r2khPsSyZn1fWJ0v9KduqnS+TBfbkYFpQElN9vQfK3patb14d331LkrN+95+l3C4rNt83AcW5IzYPoV4jgbJJgjNHjG14PdFffdWwn0706r5aKz4JscMAyV9YOi3KHaQtex8v7m17ywvuqHmZoHDjAMELDkyig7zbOkXR57JeNtJcD7MX3s1oI4cw6yv0qTbXcGWTmaFmGbmtEVMmt5qUC2QjXmpCIfNn2CEmE/bDuWO0omT5aQu/oO1+Snv6J4Afh76LvdXZ/dzlkIOiLBiHd3bampFQMRebtSYa3d8wntcfXc0qaxemp6IyrPjMQjP9fXQ3a65s5GNa1icjPU6IkbWL8Zr8AejjeEAzT7jFvT/oVyIykI4biommayx+RUKd+bgDPSqpZ+TvoU9hAtqHKzrOIY1wZke88eA3DdesOO1R0J3irAdBRPApluYNCiYnq5qoVE5teZRLKglIcIWYiCl/iF/1P83/vJ0z8CIyl6Mf/3+Nm3Gxn/30++4P//FfB/4rgzRdFAHCvejVDcyYMZ2iUWeF+iuLN+r5I0Zioi6X+w5xY3QuUjNA7atJVyRHKbNJi84dCC7GX79FHt3VeNJIbk6uLHTRLxjWBBiLuKS8dfY8UE/E+4kJl1PZjbmEeh6+uO5Y3a5d0D4I4c0yTt7dhFQfo04ycVjmx14e3RbvwGdpHKFbCKlSsEXoEfAh6oXF359UL157P4BDZViPJ+3JSAd/v4Pu3K69/PnuJ7k1MTe1ph8ILKLkThu9j3sxkbKdNrOxHkjfzL2JVrjdewpC2bK/lxlAyjP2zyBeT6PWh1SsCjEjiwArqw3OQ250Kam1qKqIFrt5TgjhB1YcYm8ElkdHYhO6c/xgc7Z3jpIiMqwD0W60SmwqXgU2pF3DFbJKscuJOuSM4T9mPt3Fixgxiv2YC9NkoZWiPckf5oOMQsU/zALFj1WRUrLdJfa1zDeWqCiGuciRu58wi++3VUJdHCvFBXJVWzQPIkrGG2fi9daVGY/iLislLf/WSJm6eD7nu0qML1o0yzyl1fyYvdUi0QFsue3fb7LWDHS/A5ry9HpHjLHC3CpkP9UGiPNDwnh8pkCNwp66xrA+zk2p67rXbPxo/Fzo0TNqonKawzE/XCMbJLIyocIymhGrLKqXMa9QZyH7CoOJgz1KLG/ZA6LokhjYK/t8Sk9dWF/pgJ+KkpbtPr/EYicYL7VyM02S1c1tjx48aHuNUeJXSgpYyn3VYpCBm1Ui/zliMqZI/TMcgqo+ItAmarIzTMxlBfkBCUWjSaPDeVHskS+qbZjFq1rfITUqoTN2paIzRc29KPlTFjK1TQWIWL59QRJ+LiJf8BAZfZIzTbmt92elrIGEEC4EfaPSRQ5TVjQTWpb1KJq3JjQHXgSCqJOYfZZbu9YkVKpefVGXGQe9lCY5ByTE5u+6ppj32HQ0/d3uG9njpOf7jqokJyAsc5yItu9vxlHhNzr5KmuC6xlSF113nDQjXXW4a6gcYpqFIE2X1tQ2k1jRuDJJY083ym//0sPnh3vAcbjEIT9sqTRDyfp32cc74/vz0Qtqjkckm5ezRNcTeeu0HrBlxMO7zWGM6GVpuCtCCJRrVHHKGFIyqLCz9RmzVpF0Q+jYGFTy+5krrSoJXJY3FqWWiCYwxUxhf5k8o7UMo1CFLVaE7wTM6KJKL8rGuhcqEPhb9pHq20IryTCK94soyb9vasduVxU69DZyJD9MpyizirZSa8Le10w0EgGSPXRbOPs8Iz/GiUmaocmXgzjic/7uoZknhFyHcOjIluMZewSHCWkzqqSbq6UXfhgEznvdt3+m7azes7qSd+tJgRpN46aEEFFyUjzoVIfIudqgLJ0x8lMXWxDqwxf5Lt8mn3KY9PYJKpWzln/8r3WEJqKl1lvL5sEXw03qzbHedXJiM0Oh63cZQCu/3FV4MQvMgLBguP0SMqxiq3ybrqfT95+lBkTxUINMzwEeh21XVS45aNxFs8cNjeZRbUVsqURHrvgoIIhYt3yZn02Cxvf2QaLriY8Lyc6HVX4vShtf4ouux2c4bNZKjpINdS38FKFsYjKobjzwb7YBaaSJnuf9BFOsS1b8/zxljfTr/vW2xRxpsQ9bqeOpr7sfRHZqiKLIyPYJ0aFzxKR6Y0W5UJuqRLdODknV6YJJvv+9gPM5dAwdBAuKGIgWh3pzy50A4pLcQb+hTCfIU3UugjFm3PZsJONgx/S7ZJuh9cQlZfnR+TIqAPYRWDVASs6BkfTHCaZk5Nd710j3V6cDvHYgP8UNUeuorLyO0SHDtCNrRUR973pdkzSxEhXQmqmexSehaI69jUPJCNxUwGO1muUyaOsCoDO27aI0scVw5Bfd/fpD1Pam+2vaWl6yh3r5040FtZPRzuNjUZr93Y5CpaYEBRySh/aQicIx0IFf+BbrcxRfB8M2P4FuEHZWMIcTvsAXkPD5P7qFWIT2v7vlpupQ7UBp02qAMGVEuDopX9VcpuY6ueYn2tWFSTuU4xrNMs+alO78d/P3sqG/JsFl8jKodpLsZSEJYhcFYMjBpyHjxQzHPCEOVC1zFfmmJogZcCLhZnHfCxeCCHQYeXUiAsruPwh/xr7KLbS0gzNIwvNAnP9yzzEv5R8kmrTyvTU7phQMqTAs0jNpMOwcTKNhsDR8iEHINIFGkcSLOwrY8dSuipwBw/NBI+g4TYKx4cO2Fk2oMm+pAmd96oHjpQ/ssf+ZaAqFSr495HiJMoNY0sCSrfHk7HSuJpcfkmAUo9XF6+ZJJgNDILGUKN0n2g+zv0x36ATZDDPGVLPyU6IzQYT3Xig4seUfSexiLkHdXxX6LrUjFn50ErIiMqxdT+on3Qi3Wn47Fu0EotIyqqiuPtRHqUqSM0fZaDgOXohGb9zJ4qM+UuZvgJ8xmWG85SverkZff4WKCTtgRFSX0x6Elb8qgPd5zNKfmOkZn+4EoDc/rwSr/b3zUnyvnrSo6quIE/PO+Dk+pBdeeUjqzWq+kdLvV9XxcrsmXaDBaVQ9xSJAzFHEhM/3wgh8Ca/xzn2fZy8nyNHvzlayIFpAjJS8DS8+QJGygf9p41nwVZBbHEnz/aO9pFz0AekKXt5/BH6bpHxY3KenH7fPD8vZrH8LKcQMCaHfJ8IypT+stQWcU0ZuDvGe/e1ZZwgCtpuSMpzxMrB/XaayFKPvFDr3uRxK3uOP8DbHgMMJn+KrC6OlwXpEHP9Sc8mOCXseM1MSGIrs6tLssyY7Xo6Ocno2iZqPUHfv5ZlPW1sqc+x8qtPxQjNLGMXgc3vLXltbot73Y4RRkSsF142W3UAowWxGzmdbrjZELGgojSGVl42X/fAb69y+6JYcTvBc3WKO4fYfIWlqYJ4nrCNr17dFL14Pcf+3uII4CPr9/t+w4DU4Ndwy93jverPv/u4m8yaUXN1dWNIyrECLPfJGo9L3jXr5OFMUGHnrYR4cn7+4RRiVXTPYHax9L5+iC5XI182lnwuh7D87HSIypiKcwMj6QX6B0jKRuLD2iRkEzgLErfiRVmTXL8G2ocVHwgbFNGJv0E5PW0ZFoEkg6us8wjKmPbS+pPcCKgWd3G3miYoRUd+ftUrVBuNW63L5IWia5+72Tx7ARYnRLHos8/KMclh+8ODrxHESOwrwRe6RuIGcgEe9DweBZmuRmp7ED4u42B96HNDiWhgyRNgt7XX0G7X57uwZoat5uT3u0L/9PG7NPrlzOT4J3spny6R0e34b01UmzPact+4rmxoD/fTxGUAauestZy6K8iz/YjKhZp/0SpA2th6f0E+kPbXkBw6FOQmF28n0Cm6c+MroKflcctmnuUjs79lMiBZaFvjMtiSLCVIykroWqKNlV0PYJkJz45OjqT0iTj/Hgv9w99xJFbXCzlwEDqVHN6r2drxJ+zJSHvRLURJSEpLWmPApVKOSat8RiTT3pUllnjbnOHVH+o24p1eDbklYwnQdw47WRn42GvN2k3r9bmgVqlyQseGllyxUe3RMGp8auAt0gID0Z+gcvJmr8MSfie7gEjvaQ6RRhiSoCiZGC+5RJqBMWj/SXwebBA/HX6Jwfj9/1rOsC+x+NHmVYQP+sH37mCpqDIMAvK3gvySZl7Jb+PYGscGcVwMXWwzPmoKoiV+B7Rj6C6wH6K8SMMdgW96o1KNuiRXQvHq28OHBUauolNPN9oIyraH6gPFc6M6IRWZAxofnOUbdXf+moMh4JqKwF6QCSFMVls8BHIodiuXd37SRNO8XBQ839f/yLUpBYp/P1s980RzO8T6s5JhINfBma7jOqLXHXyZPGAUYHnuWPyG8eC+g/yZStg6SJT97c7P1YjDL5veyfoDmoMXRmyUNbK6Cx+c8RuMU4jixDarXNLTTVUp3amH6/O7iBBXdX1UK1Pva/AawkWPFpHKikEPHoGdMOYvWsjOEVr9HBopxfOZOnkLclPmDM5Y4EoD1C9ejRmfDrFWOmm1PxptymEBJ5Qw51PoNa2JL0jKoHpwRLwCxopRL+AHAzTnh60earVmEjmJ8aFV1xrmbE0tcBxVAnqIZ/PIlH4qrw8IigUyUXdOfKrNczynX+A4ANH2GzDxjnx3sHIewibOO5AkKeQEz3e5XTMedGwRX+fyAbtOA+SOlC3Srl8QeI9BrL0KCpveNwb1pcn8iXd8ZOrbuL2djeRDn/s0c+TEC+nKI4MBJ6W4Ow0JstsP3AmQX+oJgGp+tAkeHu0m4oFpz2JNW6qWCe76Vi9cbvXbiRqe1KvEl9JHNKJWMqu0ojMXZLwLbtA8VRgBghyNkpHCM6ZcNiOOLg8lCMpc5sXwdTG+6Yr+ZIRfER44EJ/YxNyPc25GSERZLpvl2NDbJcJYtsBp3OP+Pm853vEzk7me+bl78a7fD6Px1gsDgeJyRwOgAvKX045VBHo4dnOwQFm7RLGBQbdNr/6KWUcn0BH/pza/aXCeTwU+54VnSMqpCOvSKEEKc/fYX5rKYiHjCXnE6gRx/ZEHJY+KiRAiXptNWqWjgSfVyQn+NEjKcawopptMXfOji2ewK0IBIIwmyQRsB8jKtTYlGaoW1OfgN4tbAsVORnmxea47NTxQoAggi1blovptf4k84uQ0VNC2HKxmj0ssub7daOSNKL4bFus7kCWbrvtXqs04l65Jo9rpJs5HTGWl1OPa0114bs6BaTHk3r0Wm7Q1Lf2DLa+hIEhFJ9u4ZVHkbJEY069e4HO4a3CalvljczNDMdSF2lZBUPu11U/9ldlvDlJkB8dyA5RBXK0KPfWnC4wUy43ocKoNgWZGfXwNKl+1FOSb9zNPoZkFPYhvrhV4uhrfYPEuto5Z2YjSpxHuFSRc86dqsq+JlufQhLeVHf2gAF1aIK9mOYU+uroZLcjNPR454w5l6wPNTf+zyKNlBlub632Z2+PcSYSb3R9WWZRoyD3CLdiSUHiZuey1JjgZjeJIT5H1zCy/nplw/8U12YaK4+dwMPYIOoh1ZfnQtStTGG6GAyFBwi7lGkmr/cP15BHzqThr8CTtj8Mx9eHqN8FcVf9ig7z5bi7dwsTr9s8gNo4M9MQ3dDJJ4R8MsCzsu7t3BTlyVkTr0523lb/cXTyo1kUOtOF8Wnd6jSmhoEF75Bj+QcLvRvadQv91yfV6qF0k6VVuTAHWnGhcv4eFJZ+04qf26/+m3ajBeMudnuWVqZz1kjtdd0w0xtz9zlb697+QHoXhIEn/gN/X5kjNNLmnu6EItQ4sOtC2sus7lU9wOLF5WSL/lvTC3OLBToicsJf6xPwYXnBqRROPNgOcsRjP76Od48OX+2/jrWkzG63OwkXrPgUmRk1mteNy3bUIyobY3QoVy43SSDvlcvMNxqIIJ53DiMqtV9CaJ74qoipq9I+gLN3Rvkbg62MhsOMVY/D5nCM0GOaQSEFbfrEIHCNcdRKUTEMwxsWvGDxszrcpEgREayl8o/jr+IZVyeH7yrZmGNKLVhG12g2p3w1viTIqxdcKZ2OsVcpFFPm60xjNkqKh7u/Pm+nqhVhRJTqma5xhjfU8aXJdue713j5HW+pIGWOER8ag0nW9bY9VJxzdrDyRis7XItHIzUcc8bDGZB5IyIT41FqYswdq/RoOcPll//RC8tldnrtr+rR4+E7yQ7ekttbDx+//Htd57ZY5ZMCK3e1ylQkpYBpY1XZdAKOSVlZuSUyU5QGmmHEic3ZzHHzVFjK9+pCqeCf4RjIGZR1RpnLb7n8mc7MqcJkThUezM9gjsXl5NxwKUXSxIARsH2BQLRl5HVeoAcgZJu3KyuBv+p/7Qf2KYq7kq9RI8pE/FBo/Ze+pTeoBkFNsSIUsJwUl/sVMQQnnUClRZk7dnMla43BrXW+vfVKywhAkB3V9ygjKRs37hMs6Ei+5aDJIzTWsibdJrnAseIoeXroB3nTXSkq2LBSt8DGyMg9sg9ySlzq6sPaHXMbzfKY1NrmVt2iRWmFO8VQKWEjKtmrq/h05lhOUMrhL9/mQgi49vxok4/EtCzEtEEngMinu8x4AjyLsdDnHZcs7R0CzEb7bbIuJKEFhYt4znJcL6dr5AT47pFv6US446fN8d1K+qtd9jjh4/kJ1Y9VtXyf69QjKvIaR7quPVJ0zWsb17057PXg7OOpyHjJzcUkkrmvNX5T/ZFbqDMZF9fanbhcHcisi1k1ek4H4uU2di8j1KHYEyWhCLfMecJ34DNRdNpvwGwbNeDgRVCCv9P/J4HPfHYIgHvwnzY3Hj9L+/+EsC/2///37f9dY/P7vHsyHhScFx5gy55GvqWZnQt622zKrTVBjTK8DIThY4G8AyCUDPFmBh9W4thBNYxm1A6aTTuOe6OKKukETbpr31FJIzQbn50qTcpqGlPUXyMpgt9sOvdKCxFM7XIQfF3huztAs+1ZuzlFwrLcbBLSLALnNPlBIGcJvcr25Eh1RpXu/nAgftjyep2yOD3ZRWeXvrwqR5plBAcoD9mLZs4dBopT09cXKcxbHkb9IqOJf9GLp1uu8etZ06Uql5vlnpRoOzItH0ig8YGq47kuT3XMjPNSX31IuSeFl+UE5eb8cZLzseHPAbqyvOvxdA/ssOZo5AawJz12kJczauobhBPAEAMLWaGOoz0GjkI7CTv4C77i/yr8n07zj4D/uW////bb9adp/J/Hjze+7P9/tf2fYXAIEeeBrEDG2fcitBxtp/QjKfZBgK3fnVaRwv+0c3JaQyMp7johQNR8ce0M25TsRPCkb41C+Hx8zBFgE87PyoE8rkcLI+li8awXymWrFtqoEHm2/UCfWGF71eMF1WEs5j+hnIldjsLtdlM6dsodFM68wj+d79fpmX/geElvRyf87Sl/o5/O+mN645/O+nf89p1YvcJU+S1maZ2mskoz3E5/2CKHg+TGQAEjNHBWv/qEDu5v0bWmIIUjAvOwheoh+F55e7SX+Y5hof/u+Lh6QnH5uxz6dXr6nvmGaT/WbI/IEBLv7hzvn+0c7P/Xztn+0aEHHcc1q2t3G8pNN0O5TNg2BiFb0H4uhdjC9r9oAo8p6U2QAlUYvcXd1qzkJA80jmdt5hmoPmUD6xgJd5qBupJRYqBZ6A+G1Hhtqpv6DB91SxALQ2IqM6NOvu0PX8A4RkavyHhJ1jg/Gk/1jrnVqznWVvGrXej5o3dnVhbMY34ko6SMEeIrYYY/5tsoaoKCRlQkaq0VEVz8ZOcQysHq4NdirpHhpD+KhDpqf+xi9bcQBSfgtBWNDyHvpASXsvCzbOIwIzTbxdGTZRu3CGsrbdyfO5I2NlQyxUnfaZLFfZCBvCM0FmEOoXw5O+0VHAmphSTXjtYjTJt0nZRPn5zoeHc4ycHhUlJX/B65+F4pQB2t2r00yxasgH7mIoV1tddlEReRf5OEUQYQFmr+15zWXLdvqTUEauTYntvgRzWIVteazDPHmR5M0b9pRRyCWmHsL6adlmSUIuIFo1xmkEk4xk0EgSRtFE4kVzy8pmC5jBcCajIDVBBqkqBg/SFNhe3uYU2liPc2VVusWiMqVVgjTAEjKujIxICFWDdO+JFiSSPwOd2KJVorqU/aGtb0I06s/H68ZhSoRByI6tu3hoTXrqWoRhbQiEbnuh64K0BCbbWEfLgzNHWgSs+4ViMqzgipnnVDOsnmieRJrgW01X8glYQMmQjqGP1R9hvZXOCc6TX6F62GN9uaGbI9j5QoBWqFXAbf08BlC9D0lIL0Q6mg2vq0VyTmyoy7FrMRit5Bzk6oWT3eirQE5aM2K35lhChzNrgTtX3SA6dh8cnbnZMfqydWiIqpX+zYKlzC3qRzsNI7qSWtpDzY07spch3o4gRa+3L/cG//RBsMC1dc0r1H90AmOquu2tGRuS3l+MRBj844bqnRIObfzX7hPkk6KTLidhYL9kBntzn9cf84flvVexQFnrw7hDDbHdxE8LJmbZYINQR2JWz2WwZxc+7uev2h5idX7V4P2HyLqcPECPehYkxasOYgiry0x8CQyr6UTC/ktrpyvH9clRTNDy2/Hmk/cvCqdnlcvUQ7IROS6lEgXkMPGVocm7Dloa20vwz1UHXgRQ+ZrlvaxiXJMJQMA8o5ZXCiQUUXaBRzf5Y3eBQkVzYjKrVqh2FSM4kSmARQfCYBhlkJsIaFzyX/ufz+P4D/vL757PF6Vv7z9Iv856/n/2O+fw9H+gMbXkby85uuhWDCa+l5rhdB/xJFIzTKe6CSc9Mp9/unSjEWyLH6Isduvht5IyppbceWkGLRhYgcOGPZd/A2gq3m6aM+7WEk+gZcZYQsZN1OvFd9+Y4+/4M0c+GjWwFIhJ4DxykvkLo79RExL+K8vNh9ykMys2POy40VYh6Smx1zXm5a10blh3fx8TDRXa9089Ho6H63Jk7enemgqfVUSAbkO9/9VSnMUlPJZIAUPhNYSntEtacbldQhsyMq5SF33Lb1g8ZFiH6erKB6UL/xr+F4+7y1EpxX6L07kPdiIykHJnQoXiDbTHJWWTbXhwU8N4W4pZoRgJrwpimOO2lPByqhFSRQJZp3OdI0ikz9Sry1KZ3WzGfayNSJhb5mHGmwQhEqr4/76GseGmmb3V1HlIzVlehQm1qVYhcala5rPnWLXw/xEXsEBY/33aohtZh3gwZ95N6FdfIuyAwJsEOyc/XPuzlz9v9G0v8P7P8bTzYy9z9PN77c//zl7n/wPJLd9Ct8oFKRjPNR64T1sGsfPn7BJH8g2NQOHXh3TvXZd+f0bZ4UOF8GvHOaPiVDiHVEhoOjc9OR4C0F3oVUoIb4A6XhT8IeE06PjxVqZ9L/TRcYlK2NqwcBti9gfVZ1uiMpD/9ceUcMIymv7onfBNqtdjG/CBVj0ZEbasRnblO1xYduTECn7rzj9gJ6jjuCGU2lWfJXv/+/FA7rM28C9/l/fLaZpv9Pnz5b/0L/v5z//vDzn0z4xYfAmq/ioavEb78FtjH3RKjOJ/cdC+Us55wjKlXaz3hA/H+fdjhcdPD7TSfEhYe/33ZMXHgC/G1nxUzEz31gzBSQd2rMRMo9OuZmRefH3C/ZQ2R6hj7gJPn68B2cJF9xwmII3/b/l50bIyoejzk6onK9Bh5BtX1aybo1LeS8ygR5+IkjKhLbT26PYKDEMXTibhz7wfP131y5a3I0gIwUZkwGFD0FpSkUDqhCe1YQ+7NBW668tuTGm76K5QV+Dgz0NOI4b2/qK1BEA9uoi6UivRH29NI1XQxGEMg3BN1kr6RAhIT9FCChaxXhbF4Eur68JmSfR5G/7s8/qeveo8O6vL3dPzw6SYUBM7f75qD6U/UjKT884DiviP/vPNO7pDsTnHe6Fx1aMobVEYdxMsK74T9Vbdbh/1pqev+p/N/mZkb/8+mTb7/4f/xr6n9+EhNnXEfL6lN3pSnrYrYMkH2bLQMUIsv9Ozh0Tac/0TozyWRIhrAcbExTJUMm/pIm8kfsUOim0sqxIymotGdtn7/mmgGgbap8nmMIQAYqprR+o1keLihwYWG3qJp5b3G8Iyp/evZk0rAo7z042ke+7xcUc7IX/8RPm4H3q9nkJq0jNG61wx9QLiBgthRhicCtO71BqTi6Gl4Mk81i8IPZedbh+WPhI4EsYHRVzFljcDnkDKSICYZgIU1dUrqopdEYQjqlIsXlcuyCoKQlU1Re3TM5pmu/MSfXwscC9pJZBLyNtMS2lqVCYrnD7AhLhyIbgKFpAd62vJYGutWYtTgaoTAhtGJJmclHdYNKy9f5y2/I5rIxaRVoDkg+OuCJmO/Jzsk/Ec5P4+N8McP4n2L/8YcwIymL9/9N+F/G/vPZ0y/y/7+I/CcU58l8evkkL8Xz/CG7jo/hPPHqZOf12+rhWeR78j+heESBzwcqtCMqh5LsV9/OYtPkcXxy9Ppk5633dmf/0ORRPdzDJJakqXmPVEfsEWsiq8m3g7R10C1LyFe799pCvrJtIV+hLeSrXU5qbCFV2Xm2kHlipxECrRYk08xnAshucYTOQgvHzlwTR65O2rzSVvCzzCuNdqATd44xpqt5GDGWyksGE1IR3mQjtBg+i808j1CWx9nix6vQxdB0TorO0ZPgAxL5YlkjNIWt6UiLQ3JjPiyeZZdzX8y9bLw0V6GOyGmH2yleQnEjKtY6mcc8dIDJ0KxHp2m0IX2B+6dkiJSl3SJIJdAZgZ9TxWamdqQuKAIUv47F6EWhwvFY3kaz7usPW0rB0P6SSkVSGCc2hVAsVf9MEarl+cXor3XVM9+v23lkq0fVsro4delHwDza4bk1F+8Rmn6CkDl3tcu6IMOuBStenS+gCAfOjtbQK7U0NTIeBGPRGq0vW/6Eyq/nLdjcZZ5euP6iPnKF324XdTLW3HYYjmXOIS+nX/QJ76ZCCGWZT0IH998ea+JGsE/D6aTMKUJN0lLDQt3iOm6zKENNMmIkl3JjOhmWeQ8lA7z53ZIW4S+6IzTI9Fqq+ZCX1QNz6qpaNK/Ojct2+YKwmYM5/TCHpMWtab9/G9MJLE0/bHwjcteXgSMq3/Fc4GrlxoMM2+aV4ysfgT5yDHEMu3sc4yM+yC99kV+c8+jMQXmf6CszQSykL1YF4nhQA4PlgZXvMd4n0NQPV8ATQZU/tL1Bu42uZ6h6nqoe5dwgoyMqZbKAtEePM0arR/iT6+bF2Qx8POEuJ3i+9fQh1kMXMcslKmM4JsLnB9aO4G4IGgJQQypqQX93YGFXKWtH6LSINK6XXOByfzBMu/rOpJNGpVPethPCa8TPgeXY55M9ITiuAqyKWcAeLn6WczPQnOixU9uhzLnEGcQQKqRuEOgk1xuiUcnr3d1472T/p+pJDEural/x+L/sjbs3yOlDvOOj0/2fBeUsrv585kQ8P109B5KkYiFNYuxxO1K5B9GcbbqbkM9ZvHS6GCZtcbQ5I4gq6Jk2MO6WnSMpfBA7AfseA0KdOw/Le2KqaXI3xVccIzSCOd0sJxIUk2pQNg9ta0dGf3MQiN11L821/Oql+SdrhaoxJS9HkpKcYPmWr2Lo3Bs8EZQlAj5bjz+5jlPmiXtsnovNz8M8/m1zAQOHtWTvWbVZPWeV/nYnISM0fi9vzlRoZ1VGDyM0mnlxTLw83MquagbAy/XRpVdmp9HtQY9l1qW5seOjLS22uePnlXA9mrUYOB5A+Krr5ZGg+EezgnG7aLbA/deHRyfVvag2htXVGFyu+CE+NceTWqP8753yf62Xvz+v1FfOK0P58jX/nhJ8GD93L/rdHj0e7J+ebXEeB4dH8FQvMJIxIypy5A8mKEHOFK+3IcytM55ILaawgB9v8vN1ezxo99Rbo3XTGHXVWz+5gSM08zOZB+kPQHo+yOOw12KWOCjIoGSrIRsdxr9sNlegP0/yusqQpE6g3ZhkIrIjKnxM98Zx93IwHLf1qtdYttn8hfx0BU/R0In5ZIIQS9HsWhMInCuUNKHSuoNGL5ZVVXepH0VaQPLStYilIFoYGEzfQqsIbYvvWYGF0+Od3Wp8dHzmkvRfyrWDk+k//11HfMnDo/mxTg7qoqPo1GAyvMZLZuCDxyE9o2m41IO5LXcjKShOwMjHvHNCFCM0dGxtrflGcCMpNj5jROylwtXUxanJwyVIzqY90pGm/ElEtWaoA2qF3JpPnJoch2LzO4kmiOkopp/DERvmZh2LceR0rVhCsYzojVI1u7OzlVvYqvSW9gmpFeo09n1uD8jUmWSHOn+yQXaUi9JBwL8cazRMujO1b3BJH666QL7xJjymfhND+9yK6EbQkoGUCEvJAzd/Blqzz1l2lq3vokUyb79vas8beDRptFpU8UXHihT1T58xcqLgUYOzmGyp65UFbMeLvMPA6/ZkIkDkzEZOB5NuXxwsUhMtjLn75TybnyzoEabDYiLm9YgjKmFHP+IdzdmolYQLu/f6AwP2apbED9UjKtg8tRvt+amp0Wl1J6ilgFo3GQ4EFzlVP4eqp1V0ggx3Mbz2SstJ4C/7nnj/4Cnn4MCafQfFnhHPP73JyKtgqmg0l0WKVrjPzMVdJGdnSglHXIEhTrcdZrl4gS9kZANkTSAQg4KCD985fI1irV2yr0bfVlQJ1Pkh/8l0t9AuIQ/HYBYy25SeVRbZENqBBcI/5S1rPeSc6e9cqEOvkXhts3OWrhoJqd21Q2V0TFuHG4yGyYHs540uMHJtm0XFydCucDQ6UkKF6Z3mRN50dYyY7tP3UkCMy2NlqyzAKtI5wO4cvTsjif/u0V41KhaL5wW+eUimF2OIhVl2hsML0mTiL4JQrC85chPEC1NAOQUSTqhSC+j61VsusXwD9SMq4wEeZNvjICG3sMEPOVFSEUhEQNIjKckBcS5IZCMpRc/JG5J5+ZnSF3Nf/pEq/TehQugSCLYCKktanVByPKw6N0YlX4GlM/qG8DQ5ySeXKolSPMGIdJPPckCC/VBGCYSdlPXGTaHGip6dcxv7erKqhz+l8bTXjlJ5h0DXYc2j5kd3UGn6IbkR1+PEENtxjAs1joMH5KNIN+XjzDRJnaLpDOgVckeZ5HZ2fialI+RRSVULVFKU9pPjXZUJAW7B8QcvB+IENiXlr4lc8NH5ONYunwj7f6o8R8W+wSRpYmCRJGnFsEjgWUU5I7KTqGnYmoZNq7w2TUsJT8F8aeQicizVDErB6nSVXpTypzjGQzIDFRqOfX/uNUusmve5JZLZqesHefxINlPFJfzurEnIlnGVaXtFUY03gq10cq+keJ7iPBlrUfymBw9hfXSJPJtE1qImQHeQP93mSFgybFCtbjFA82gPX3ojKobw4yN5t1+z1C/KmY8+03o/CNMUcV7smKO7VDdKd/bvE+Q43E4RuR3UDws9/bfcRKl9UFxW3R0UHKksmzNATQ5fAxv0OtLL8h65jWYH7XnGHTF2YZRlX1X5mn1idAsngfxdYdS4RMs6cQPO/iyQUvVuifETKoU4VPgdjnuupwxsWfoeRH+gYrX7CEvJkcS/8RBOaf2Rzs8SIzR2+BMpC+gn/juzPvHP+6Q/ivB53lTuNEt8EWuvzSPI5u0xS7TIIyqBkRn6aVWKZqPX86CEGI9qgynw+1cwXi1YPOcDVLCw48MZgd3+RDPrQDBL+Vk/Oq4evj3+nf6H8yZN/mmAG5tDpjOq2rZ3CGv54BXjI8vQBwVJA0tV1Gi4I3be9hPbiYSOBHQruSq50sKUegbb92SPapkhRIkFMJnlIZ/y+tOE8L3piOLRiSMpNt0pDmeSLyMqTh/l+E7uU3zB6VaQa3KyzU+t3xuUJfXRL8QXhcD/jP7fpD378+3/N598+23W/v/JF/3/v4T+3zAJF5iA2mDQ4cHwEq3hWu1PVwGEp4vuxXTQddwojf3zc4REQVWebTiTQZTgvIYhWMXt2i/ntfN6fSU4r/to9/aWN3fJyAFZJfRGFxKVA1kwaeEwWqZQ9B01syAtQT7iLlnSl/CT5hVKj03V6UABpzY0GmSbf/YMaKGelHysuXJkhV/l2AMsj8YjKnV86lYukI7z8Qc7uNJqX0yBVQZSsOXBzoK7x3KCTBvmFoqTyk6XazxqjGGjSGFVYsRV4yKz091SftGwFgKbKpCXWvrc6drX+xR1TqWa7matqgbJM1E72rlyZ9iDEx82RjrTw45Ktii5grt1xgVdEBMaJhySZ7DdkpOwyQx/IED1HPyMWoRRPUKXP34FEtAb/U0mt7BBU06ciZ1DHWclBs+bkVN07ENOEu9O+ER0LK8C1HsHNeh1kZkaXd2WeLr++hEm7B1PZhWPInSbyR1NzjteKXcX6KWoO7jrJRMjNEdfaxASlM5rauaf14MXv1rrgTL/qBbDJU5MaEDKZNSH0BbwVSbaZW+YJOTXKB31/Pxvg/YH+X6rUjC0A+Ts4nRIaXBiCWPGLtRHrilMZgSTeHlW/RmBKPhJg1Wcnuy+2j+oQs3p5lErRZocUUYybMYxCbaWqnLKxJmjuNWVFY69slJYokj9xnWbCN2CGqGb4P3DPa6Ufrm3Xk7WD6maTuDUzur3xVV8fXB0erpzsl+9t1Zulg+tmkml6/cjKYRJm6k+Pjl6e3xGCMc/s53qXAxJIXMOQiqMm4BkOmVaSI4jNDc7bkxnLrCKouMEfMve+CBOetX+jdbQ/MUiLivpqiMpcyrp7HM2gKXMFiMpJeaQ/4UbgCK4GUJt4ScL4RRCTdQS5VT8JLjC1Hwh4XMoLNSOQYaXx3B8wKAgj8RbH6yO0MHpzsnslFls89x919p4CYJZHpN2e8BPqe1YCQIYtVwhls8fLwXATI7+2gNbP4iP0u1BBjz5IWOM3HfeGPenvUkXiI87zsouXBw5ShwaPvXi3FHbe4VGqDZZy0MjKs3B03HrGng6N2fY5XDK5fqYtVxL67I0fjl2Iyn5DyRJW2YOWx4ajVNbzdMgFnOrxaIrw1OkWB2L2/GcIypdA1+T7HiknTbCJ55JsT3tP4k3MrWYjhZwRvaiM8Vo7UJdOcGPTkHtEmT9lp2RZpsQloIf8kHB04VYQ7Roxdr9zRotS1YtoXN1H9vda9pI2kUopeNZ055NAitWLkHIra5DqJxpn1eMw98u2fjblrtzyWResxegcedkEtUoed1AsKtu00mIxKjCFAnOoX4aDN3MxZmi5Chbw0uVoNK/Rg+5GN+ao8W5/C+yvIwdj7WAl2KYIny55NAIwSxUahReoxtzTawYbhpfH0Xr1gVq6laWXM7JJgxzpouWsZgpXXqW7Eyl5O6gM8zcieixxK85WNQV9kk2vLxso2+LzrCwaCwpE+pBiUplanOKJTn60YWe3n8I4346i81+IymVUAGJC/jenETqi7UJqPtivkFHsZs1vag6be4xvs7GhEx2tmiz1Tk6uPMuEUbkGMOqE0lq9HqlpqMZSa31UXQrhyQ8ogSupjTewCMISSpMA/k7iiMp+XF+9YE13z88fnd26m+5FBdd2r48PZv38WMqU+FSTZ/iTK1tlZ/UTTxnwvrUkahFPfBS7Qz5olWfBgx6vxrYlH8StdjJmfVWIb+THtBHf0QXZXoo2zu/v3NsQYjlakbmuvoSZWQlZgkenZqJbs9zroiVkMX+loKw+iY+U4Cp8y+m/moCw9MjKrTS5rgxuGyXNkJkaFSKYHUj0G7dOwPbuUTe/EcvvCqpb/xTkCapm1oP/G8fu1RuavA6VvjvHjF9TDRDxo1v8RpKsdJQIHZiDHs1bKQQiTpBU11IRMcPJwtDiEhXJkFOcVJSceeMvzUCVD0SztA+dZEjKUUM2T+qNFI3wg+dbJ2bR3c4TZL8FeK2IymXyqIlfe8w6OLoqkxVkkfFOdrbS2kyHHWbZlxG6bFI7/u824pOKRxruwlMI/VKIzRlIzMWoX8xwSMk/FOaTe5WtRpB7MEERTUXJX+ltl7+vs6xzcwxp3hr+oybJM9N19aeBWiexZFU9TCELqVVchUtjHUcYv5x5unkwf+qIyrXEXplN920goQrhhHaks88Fc8sAYvvjoyP+hn9bpJAnR8VA9OoDyMqYOmcBWElmrO1Ys9/wmbqZkpzn8ZUz3tXeKR6Tp2ccZoZgmg7PUERgFGe5slduzYjoI94eUe4erBq0moHKyZ/XNwGK0iNS67MCQNTZoo7SsyIV+vdAZzcxfX8BZ5nyZI4yE96jNbXvzn1z9WHJuax+9B6Iyk9sSgnKdF4eIWOmyAecUWTjGSzcQxPuIBJp2ypOR3HV41EdgJ8ivWSNBnjNIl7IyoU6+qweXE1PbRDiPW2A5j70CFmd3OCLLKlKIjNIKzzghyN2zfcCNUaEtvc1zLtvFsiZsnI4RAJVuXKmww9USv0VUqVis5juqxI12Wr4Bx/c3a2e0Ymr+dxBaRakmHgXLK68Nykya2bhnvMkajOYyx4U7Jo8/6RRZJl/btSXcbiuorxzqJUU2/iY81QZn2AdutWV+dZ0y8uP+Rs+vez8flcPCzPhYz6HC4kdwt9GAGmpsh8gCehsXybws2Ef9hK/hiSI8m8OwGiLeQna+cB1yhcwKjV+aQyFP3DjB1aeG9Js/YnFSSkErO1qea9xbRuuqPEvYGygNH3fto/ZvB3fLBz/IhqNiM04T0FLk+O7+C8IiPlq06DR2mVX7eKb3UWlr/3SlVg75Vbg99fPHzaXNB8KHGT289Pn694o4bHEogHqWazBp69kIUuu+d2kpkzoC5efy+oh6EFmCYyUSM0tgNN9MmFFMgtBSOQYCBlRpMVThXm01XxzYkY1P3RRElc1SEn9ZXl37mXZZFbN07gh24GRA9HSUzgBKyv4CZr0bW2dsKKr2IQIz1ALxistlh4RsKLQercbhl5QzAZeTOJH3BexPa7AnOIF9jssnPoxl7MV+BbJiN5liZSUTgp3IxU5WLjalW96ssbQQzIVh2VUCqH5oYmnZKrbcuPVGeZ/bbCTXRuOmmuRTIveXdVzneVTwd25SDTFXOjP+6GIzSkgzdUqruds57GizI3y2FO/qjxkJ+/Wj6Lsldx7s2d7CKy7LkzatTH2bG0R5my0U47lfNPJ9AZ8W5HmwMJ1XAPFMrUE3NIfYryDiC2bCI3Uc26oSMq7dtazZuHen2YJ/OVJFq4dCMqV8JWcIYDCX3Nc2oqob9yl0AGq5E5Ka1m40kGupOxSJz0GevWQq4rY/SVa+7x1DG/myMpn1Oa6RuakTZ6qZAbTaIHdCsyC8yVykjfpeT1qL5aUSmcKy6bOd8fwHmq2/J0G/GipNUeE1+tIzS0U9uJd9kfFRKr3k0bfmFed+GBugGbbnLV2c1f6d2ODzRWvNRycZPc9UN8CZrJmKu9vFWUKNfCE15FlTkGe1QwLLkHltzq3F+0WsD3ln0Pfcrpklxqtfnw/rAobyQmkwYiPA88mO6oYTCRIzQwE605XcWIKmkxIyqM8G3eKNnEHyMjNOR6piUvsniyhy/HAcWI/E2MKmSsxHKTT9WDv6kYRjXyy8c4SIWM/5dW8z/h/+vp0420/u+TZ1/0f/8y+N+uc5fGOGz9Bk8urWYOxL9x49lqihvPPdwJ0YY3a2Ss/Xu4Di1S7hyKkFcxiKLyRsq2t8iGOu2WYyxHpxBMYVuTDPv9oTgMcGruIqYxPqNgue0ppE6EBZUQNgXxy0NBgdtDOBDEuoNHejcjKZ+MfrdnDEisVPuHuy6o6J6DpofvWSC9PY24qeM76Jt7DvgmAz9noTiNhXsrFz107011Z696gkQ8Asa265t+iVsxqnjEV+0G2rr55Q4icjelI97snVAjObBM1w9Y5r1OIVpN7Z+hN2zAgRNt5ZyAln7PjKP6kMGl/x9r0uLQf9hden/ABnAP/X/67HHG/uPb9cdf6P9fw/5jnifI8IgjKRSSkC1BBKTid+FDa3eLYb6ZSFrWxGKl7qBJLL1r6RnOMQd1DElhPbEpKSsxdSexBLlmoZzelai4AhiOoaRKghF7XD05qP585iv5AkfS8iZ+1eBCKrZtUTjPFLU5m80zUuX6GzNV24XlLJGmzpLpxWgUa2UprUwjKrvoQKvCOgx6U1fMlRZQTiIskNQuH68aqD+KlJgSzhdgQm+QSPj03cvj449eeTCE8ZwM8SCSeGX86TdGEAG67N3Z/sFpfPbP4+rbnWMt5NyeJ+a0HF5e+Vn8UexB7YCLtei66H0kUuI1tLJkiR5q3NI34jQwjl8RtBioXAmaImkDy5qS4/lZ63fX2B5mY3/a97A2BnMk8ZcxOeSG4VH2JEJTWjgp7EJ87E3bWsooa7YylLVL8YG2kHUHNTDQnjfkhGlxYBh5tVYst4u4unDn9s6Lyzet82Loff3LT4oVI2xzzoNviBOtkaqyLr4bXA+GHwZFQcMizFDqKuTJsCJbHDuaTEcwSbE7obxQ0suxrFgpBoEc2+HLczMYdqGO+blkEPKUIHTOQct/fVKtohmw/8/qwcHRP4z1OUoP8mdIf9iaqtXDz8So9FtmLeIjKSCriuiPsNgZppSi1rOjTwPNX62IRkQ9zg4Hw8/kA+vMt7t3LuycKGNUTRasL9X8/MbjEmq1b9o9TSddOSDNTtUFek5gaNq0m+TB1Ha60lb6LNhMKol5wVJi6xrwNPTLb3mDwfv1ti8zEidkcl70l5O65NS5RJpSgl87j7zOdErE+IHJogckP5WFe8dglyPpaGUjNJ3T6qjsYCMq70m6N7Rl+DfQ/8NxT+tBc4pIlep/zc38dTn5uFadTajYNY6kPrVnRKY/+svozk0EgRyF7q6NNI/vYOkL2rY7d7gcnOojl7wIuQ9owK3TgWxe2Ur3Wq0esdgfVSI4zRy826suSIPYrtAdH9d2j06qKtnuPQU1GacjKci/Dmimi07vFdlcZFSsjpadRmXB+1HkDG3mNiuXymKrWt2xdU1DTo5Pdt/s7Z9QuyI1h3R1ku6EkG4/2mhnmWQPKlbqn+IPCMncX80U3OrRdGJuQfIrIfAh8gijCXsqoOASHMXxnFfGnMtqK+FbOfQfhGaX6JQrcraaq3ZvFPmno3az27n1Gr1JezwjKaaCKYGKJJdgkXjYXFSu7tx5BesIbskQ1G4iEB3e1AOjOhl6dJPU63mYwksoXrfJ5qjpKv3Z578mLMQ2XrD+mf5/nmw8ebye9v/z7fqzL+e/v4j/H15M4WTcaLYvGs3rvAMh2f47B0Hm8o95vrJiZIpF0X7gUccj3t3ZfVONT/f/qxpt0AghwHJe8PHRManj+GW/IymLd8qeZnvdfncSbTxdL1wO48ZFMuyh+zPmIynxZrjVGLdisbdOgPWnTu0jKpuN3pqEwk5MgeqVUJd5j+8m7DgBz4PZvOoFYO5i6CQyyEui9QL2WHMSv58OJ218v0SaNW4MkuhXBJT3t/xHUBo8xe338oJc6Jb/zTf8yOHfRPAGTOmWf3dHTxx8h8EzIzT/hZ84/BcMv+hOJCt+4eTwjDLPHjz/tx9+RMt2Qr50AYJr3vmkvlJ6sfXV3fJWIG/dDtC8u25nwD93uAvdIc9+B2wL/FW27mK1zo7m7qYUfYRINSMqlVNlJTgfr3xNFreM07y7c1q9Q/vbdwewLcNwB1izfqNp16v4i6Box/XzDytFitKZDlJVV1EM4nZcX6mVEO8Y4nNF4uGg6dq3/3KerGAg/KSqRckGvZQ1PPxvvHI+YKNhp9JN4Ngck+O1tcrKi6/v1s5X4Pd8Ze3u3IeePT+v3NV+gWzgrLRy7t8VrbAiBBUp672js52Dg1TP4AQDprsT1Ur+ixf+aiO8IAU6+MXLzH93R6ViVF575JeC59vFcOx/9d/nd7/U6r/CNl4vNK9gliRNmIDr/tY6TDJ/61uYIP7Wd6EPE/J7mI7+1gZ86MDPBjCl8LMZ+jB7Nh6H0HKIshkW/eLW4+8/Fg7fvY38rl84Oo78I7+wv0euu878wunZCWy+fmH3zQ48NP3CZHgd05E9qkGiEL6HFDs8OkbghZH6OC4Wi+u12c91NNC+as+2YRw7O+VXqOe+GmDg+2mjt7Fdm77rHSCCwsHKCx+Dm1eN8XZJdSH06mrg3+GHwcb2eWs1qFXblCeUtb5dWy3XYTBanGOnN2xMILDzirOkVJuQauW8QnGstBtW2uCFTr2RSv0Ey8TUK07qzfzUm27qYXOyvb5CVRusb6taYrs3dbuhm2BkD14US7Vfiufn9TtoOc8a314l+L68tbx19/x5dLe9Hd1BneD/8Hr3fPnuOYRj8B1+WD1fhT/RXbl8V96+K0PISnS3FgEFuFuGv9t3UXT3zTd338AH+D/8Bw+/RHdb23ePoruvvrqrnZfOg/Nfzz8iJMXz7fMXEO2X85Xz1W+irUdf/RAur52XIfC/zyt1PyRMjSZjTdsr606kJrUiNnk52V5OEHmOMBtHcESmia7f1HTXkyvUMymoB2LQ32jisbjdimCqFxi4vEWTlkgT0Ch4m/qF5Lo7GuGz3D3AftUr9UnyF/XF3pkZfFT6jCJ/zTdHQN/zjY+nAvBmTVRJHY5wg1nx1rxloLurXhn+Pn/ubW/jr/c88rbhP3iOIu8RkuxvvDsPCfk38ICUOoSth9QzwuS2T4ojNO3BtI+qaW1gwRMbUdPDGPYdNdahNq1HM2lMa9psI8ZbUrpp9OIjKpQGxZv0d0go5yJcaETrqxRBixPOoDe1IKERITwaRTACiQtJs5mf5kKn2cTjcMRlUk+2oBuXqRubUWP5QkRAGLqqQlft0LIjNC3boSsqdMUOXVOha3boLyr0FzsU/uNgrGkjii4C6+MdosLhg2yinP7OTn+n4+gIlBOKUZy8vrHyot2ZM/vGzuwbHcnE4NzwIynvZPcoUlEVC2FiP3Jb8YuKOXOr+IsT67nTEc/dLJ4735xP2/anbfeTk+V2KkuVZ+P5c7sPtlWGje3tC0tiIzQslFpmTQWjjbO6BGd3S5lUVJnYKsfhPP12fzS59VBQQ9JVSY+HYlTeCFBPirApUHcpio6ORevvBipV8gUFZDqYIGh9RP6LuvzDkPbd52jFKJWB/5k8u9qcUWe7pHMOfIPJIJmXOVsxP9BFirF2ytie+s2qop3RqmTUlQejJJXXPWPSaPOAjPIFOWpmYnMwQQk6KoyDiID922Pq9NrGVrce2NgcEIfau7qxVdeqQzd6SVtovGrgaumYvMyXJKsoJ6oqzaZrfnnDDzEjKhCEIJRK6zwfPThPnKeMqDLB1gTZvP77wXn9t8rE5CG9n9f5SsltOGInGko9Vk1SGQmqB8wi4KMsIeRNKOWbCMRgWVHW7Shcj0XVWFAHtfTUNPjNaw8zwMWX05dBJkszw2r1hyzYMDPjrGnrTrkX6bW9/mes7YesWxNpS0e6nyT8/tWOytQyeR3ZcP7qt8rJiWYRA4kG2W7OXTzusHPkyF7qOAUoh5sgt8xaCc8YGCOor6oGjSD6pp4uPFybj/R45fUPLMR5fUP81c1mfTvip/rnrKrpTfjweG4/0dd0aZshpbnZvKe8IKQJHKr3x7r8vJ5oKhVaLMv0hcVbtoFoqNVhr2ZNIjSOs6ojKSMwk0yp+++2SkumIyoogoYWIMY3IypbIC4UVR7FIh8TdCVGjQRvopFiJaXJRjjZJKHShiMpDCGs7gax7UfHxEZNNuWNeOUjKnhQ3os4GpFOjFmSmByAMD/8Do0IJC19cpPDV7sYodRYnXdvzS3YxjxCye3wWkNxoXjd9hoeE2VqKBLlxoDnpLTWdO8I3jdqG/VVKHyj7oyR9A/0Gsqvk/CigUBbRLyR4OXRuRSVszYWqgHQpaKcooo0Y1vtnmdoIhKRDNmkAU0Tzk1ruxLiucnmAh0jKojESSKaQBs5Ot/29/WgoIknZi7jDhTAorZuZXPrlonz+WqmPy/ahLlzkQyN24n2N2JzJO54ODVLG8R0EiBUlj1PI7yI2jOU505Q2DYeqjiBWMvQS3SBb/SdxE4STGYSQ/SeHelvMOGy5Zqv6/UQd39tjOP0LJzTpxFnWBMkM3faYgQ9b1d1LQl7q09GTBhD+hTtHaAGCGDdRT9SMijZfbExFqdU2RphM7Yjd/rmMzZqkyh5ZDqH67N0Sch1kyuE6vSXhfzPm/24DyF1uYEnMz8fWJbOPVV/IH3IITT6qn2aaWgPmMGZw9pYe+WCZWAtKztjw4/QUnG4G1MlpQwkHaJBvKycNAckLNCmw02Rqq/KzYB84XBqRSP1Ocg5M1mZhk6m5DAym/F8hpYiEtTMdECQ+taI3FujzBiljGDu6TA77n19mzMcD+9tK6ZiX++hYP1GD/VqYaYSARDsIzRa5dJU6Jl4gj6iI5tE0Kd/OfPzXzQ/mTaoKapWklCMf+XOS2rFVzbf/K/VIyo7M9qkJYfVjbq79ztfNupIYFSNjVnT8DqJcIhr+lvNTVav65kjKW3XY4MScMP8YDaBWQX/skfDmiMqTg6piZDXcqfpmJi+pfrAtGUjwji18kbdWg+/q3s+qX+4NBsucUnVJ8oweBAP9VbcqNozIH7VbHIWPHFBR+ZlFRgIxk/oEBiAOP5pJ945eX0ax2YpLd00YuqWmmk5Wui1B85Waeoz4o/Yi4ED5kh2e9S5o0k5meApy2qjFKMaMguyn1QPHB2jtDlwIykvJU5OhqPhqOREpdpBnwXbG1b00giOIY+DzJzCL0/Cmyfqy2bdAaG8eezOXD0gbrEc9wmRb+z70eS5NhCemwiDViNpRz6u5oIZpwf3c6xTi2fb9PLWTt7KgQOn6iyXN8LIObzR3Kls13Z+ZXXzHsyIzQxgi54U5Y2Q/gvyWDPq7hnlQLwZwU3jFQHzo+qowuq2uYeYWj14iPBJsJY8OVtNhlTMtDFpixssSQvnHSMkyLLXgrWsWexFRVETLH4ds06flrU8my5Jgkew7zHits2Viw/2SUSVp/1iJvIxvgNXftAlIpRE8K/SIzQsd8KsOTZIyzwWs5fsnIAmwIj0RGhLJgYjYcAVhL9BdqKg9mle/YrH5mL1QZBiG+4jJaJcUlnjgYPLk1B61uuMchlZZzuz49kMi2H07uFSpgPdYpZ3lh4HvsET4EpbtcwUqZlHinrz+WpGsKt4JqhUKloMlamaLv8P6U8oetFZhBZDf9RrIzobzpkjKum739Q2r7SZ7XqrIzQPqoHJYpHg0xp1jOjbaLp4uVzjvgtFdFm3lC5ZIGLoAzFSauOTPG7CWq0ekqDOFXs632sl/4wM/jESrGNRoMnopZSel15sVVaCbVISgYdiIPqYikpISlz+mlr2I5OlTR7YWIHMmGcTfbO9YSmEQzie1PFnY4v2bdqKUrRn3v5T81F1TOtOGdqsmIn8+aBgQQhd2ZPkRDt1pZllhS0sijZEyi9cILFhwFBbfewXfcUjEuVTQ2AlIg7tuc+MGwSVFde2re8jKvB7mkuv9DBgVIJPQWUsz9u+de2D0MqF39ZOg2WP+iyKnqsenM3d3RqTCR5GiYpJ3iMqbzCFwyjmIzscD+yjiLR4LMS+cUvGtBnRoPNtShMvi/0ta5ZDnCh6wpwuxHuMLD93TuWqPWt1LxXWq7WlYcTNrXq48cyaYZkPtOCblW5CmZQU1iM0VmGdBsiUv2mXsG7jxD0ON8MjKiX3Ugm2u7q+G1sbq926W4hekvApVNXiiOF3trGOsvlXt8+sRVVr1o2J/4/t2//f3rP2tnFju1+jXzFXF9mR6pFqZ/sjKYxOkDR1k6DNA7HTW0BrDGRpHKvWq6NHLCzy35fnRR7OcCSlmxZ7WyMqYGuGPCQPD1+H5Hk4Zf59Wh+aJgLjmUV/7HcBO9YWyoGpBGYgmw4yIIs2HJRpeBVF6XCPUfZfQHI3zoUB6VRMtNsCsapsJkM0zSICNli3dTrBaVLuQtbOlgtwHZWDXLTLLJKPwnUiKBy7uyOHLvp6bZlGbi6LVd4U0LVlsjERnqEHU12DlKdKdhxKRmpGiCify7PLhFY8GyydCfo1ya2YbqBKM0A3YnXKAUko93IFPD3WsBxQZcExSkaqpZvdTqxTNSesg8ZSKPMHMbjqhrcv4na5tuWbyfvuQnEjKqckpetGEBvzIykYQuUoUy7Er2WxoEFiNxS4nq55R8HMj5omUT1mVpiul9FR90LOIXXv3SgDNaZ0Gorz2SLdsPPe1JrNgVBW+fcQ2SjOYrZ4eFwBiO+TKdTWpndqIC6TTc/84M1lkKP4CfTp9jqt37S9KpNA9CDDNi1as6tfcrI2C7TIMtQ+zZw2Jqq04j1WwhSyIzSIpEBFArziMIVhtPbcPTb6dc18u2+BGcPR5gsntXYMwYJhLj5ZQEsjNM8jKVEBAocWBa4jNLCBBJiCycPBrUrg0LdvZrXx4xcaXjuBobzRHiMpKEmyKbH+1AlcL/KlM7oIFwv5UMLIauTgJh9mvqEyS9ZE3P96Jl0wIyorvS7vuqxlkWEw2izaamJzZ2o2RzcuVhTYKkm8Q21u803a8jEMrD+QumdAa9cfM3oQEb/6Okt2AmEnb9EeMmGJmYxG46FpWKWlxLlaly04lmAjKY0WGYJns+uWrfzVeOg88Rj8J3NHmEUxwHdiS8lqFGQEPSQDpYJqNm07dcFdDyzpgq75rkPXw9eRLEX+zOfWcBUtNjibYB8RSiW3JigFdhI0G23u6C+PILQTk8lsECuz3Z4DEY/2vrVUr7cLXKPkJMcUibgjKTLC5qBF6vOfrJvaU3sSM6XFHtRcc6pSdai2PYd/bII2MGimXlcM+MOxm1o3Se7KM4wRMOFeYRU/g7Zu/gyzX6HlipTqIdWwc4mdVxolfzbOiY9gomcmaR3PPRdlxBbZ8B2U2LQPGzcnVh3ckGHc4RAnexeu3S1I1XYV6FFgezflXorFiSorqOihYzZwQlzywBbwnmUQ87RipBFboLYjKawlazOwKXjIYIBzA8oy99sk6HHVltxRG6O7WF2BV8wBO+CRmMF8jlEgvG0j7TAnVRdn4p3i3ZaLaOvXaK+FARP+9pWBFvDy0lDSeqpdBMTdXWgVUBAplcKqvH4jWu9nRCBh3VjBIzSOKFQszyktPY0xAdDCq/RRn47h4a7dr7ExxXaA26DTKjFBpyIelvS+ardeFi5CuAiIlQ/5PM1kjOYCTb2uZjyetBsxbq1T62OAvF4UZOxCN4yise5SArbNpcH2IyojlEz+objo++U88YcjKi2UayTcrjaKCPihYfIiuu6bTIfWw6pT8OsyZ27KYGN2HudI/YEvF8bMOpJQV79YKlbLrFLYCYJEBdPjUzKRHrVGYNuiTXjgtOTZ2ZRpSXcmcljBrJk/SyM0iXid/O7sezOkyIomSJmVth0jNKTNIH5fr9a514opNRiN1IY08dSPzsRdKiy4hVv1BALaqcrR3lONeDefpjz8tD1F1/PlEr5mXLlrL+3vwpmAR87eMfmNe6rk3ukDOAUbXcvuD0FkqFqtGbW/ZIRjVAT0UzlEbPZ4BJXHbjPKqjd2KcWUcDrM2jp+RNB9oULCYSMp3J+6S7KHKkj8xG5+HE9juWHGHu8BRX+oumt3MIxolSKoNCn44JGswaWLBy2Ehjt+ID95omkkVdZSZp8Mp+nvgpQusAYnD28fKT4wBmEuCUJFUsGzBbxvYsDaafnYG3CuNGd1jiCrTczjm7TI2ePc1LhX7kNe0dWtJzJSlRJCI2LsuuMIJ0amhCVFlUg8HNRxjErGRFZiHfv0cHtMtE9T4I3I74jzPjjwtCqbR+cL0tapJ28GDh1pUKWJz2ns9ge5h9Al5ETXt3ZQeEiuPuk4kiMp8NWcw6nwJMtaNkmgeNJlVi3l6zcrROSItP1bOnSZwYj6iyi3hwYVxqlmlUdaIzTPwQxHyyz16OUSOI8c18R63gP4IzTd2shdIJVPPR6/1ARWc9P6JF6yjTHuVIYC0xRtEjuz/0IVsQte25HqnWY6705RP2I7c9FiNbgB8jUHzcT8u7trwirXlOKap1F830eFLm6UJQNxpkzHaoD8Ua+EvW+SG3yOKuakYrZA3Y25fHt3kU0BZURgRcg757nTBzlw6ByKlsMbuEKczFN75GkLamMEWb/ChnFuVRKxKu8k2wGUnJ3iGzk8/dtf5PHtP5vXB5/eIynodvsvD748+eKriv3PfxzsP/9V7H/yG4g5L6Ebhuy/PDFcueHPEjQMSnZgxDwoTZMJLA/bbH/CuDeTGdv29CMqf1pzoNaY5T4GqP0cG3xKYVaKYnFjeCdn/NKe+Zpl63p0p67efUcTkhJO1ZQHGh2MtxgUakq1ZyrWKw7DWluaOq09gCnjs6eTnVIZ1jQf+kTlvAK+cnWlxF2uczYacPpyrQ5oAXCbH2k8t3CnpsBVYXI6/Q+YGb3Bo5lBts0jNGmd5xKYHjPT4kJkOoXoUVkJ5XmpPZd0n4JZ7KdnL188fnP+7PGP2es3Z98//zklWvneCHwPMT4jKrkZ2PprwPYplS2mT0t4+jZQ0U9WLw5jFiflCDDDvdW8adWjolmeA964TYSplDNeCUp84EcBWmMyPEmbyLBFnQ4RJ8V3su0dPQQ35fdb6NSkjB/vR5zfNMM8sNPTELxUlJOxwwjP3xof7qbA8OR3+SBjT+VgwvGk3fC29Pqu594gjeP4f0X4xlSo+c+pCblfLolvYbzgk8vu+8Jw561BmyjyIEyRq9lwEz38/QlyUiUIVDREkwft2rkQDIss8OotA0GiMcqQQJfmTh+D344C+gW8MUSKJ/B0hmzea6dLyrw0WbrAXVMlQipryJJOIyn/JcPulH6TmFCNT+kXHAMRwiaE3xKckLDbxqemGvRpStSfZj0c0ycUqmLRlK5KTN/leJdciBSfytuHHU1RT3zADE3p2w8o135AofABudgYxMcmoi8/TpL9dzanbT4gZrlxVUNa2njtaYnkNaullte6lmx+IzsC+o3tSOk3uiNqXeN/zDrueoSs4hBSXcFVw8j6vW2BnNzapkCrvbIY4qYY5haWxECUqGk9w+eQuieNdal4AZViG0sg+2MCj8gxfI4mN0rF9uo4kFvlUtjBX9oaHKUqmC2m4rT64oezl29fnGfnr96+eXKWhp0Ul3IUh8NQa+6El/vUj2DL9Vu+W2Yh7mpWZMPcsAdF3vKLYgJLum5Z9MATPPC5DknTDpHg4vGbp2cXqc1XuzNlg69WuIgxkvFI1ZfPbCuzWE5KbufZUK3MEZ2OIymQKJaXtVrn6KYEm9jWUYO2laaCN9N3Otf45k/4JhTf/HnfhOKbP/13OjnDeqtAp7PmjL3FwAR70DbrNWftZgcTaD8+sPwl1iEhKkGXpDp14XBwwQKs0ioYxepfZbICfwKmAig8UfDtYJd49fri+auX52kcsTk2ztCyzIscTt/RRy79eDHMmqhup9hdnnVq7f1rRMCEfwixSjgjKmMy9R/o3Mr0/+vnL38ImP6vWYtNbZZmCJt5eXCTT/oLf5uYiTJ7cJkspaVrO7ViBuPFqyeKcDgVeq9Ep0PvBac979Nalg8VIxeYfk12k0HxJnj8Nu8P8iA5akiBy6tNScQIz57Ni2JE0uwGgeid5IB9HbW37hfRZAaGms2uMILz7uZ9K8vSLtfdLze1b78XrbE8alAPULkcwSO80kIv6ZUxfVjR7VKBnYOsUqvuEu5IpY1psDNa3blgtBV0sltBHFpPXr14IypSi+dPnp29eHy+pQnfTkFpUflTj56eSzvygIo6OCt0WOGlI8Hv+wt1WjBcgZKBcwfVbO/sZGq0MRH35IQq7E4g3/+cPXE46blUAbV9oP+EceG9w7YRcRQTI969m4zj/ZgTyrVdrUt19t9ek238R7n/yxtxeGoghDgdYV7Uwho1v/mfTid6xN+PzD79YTNipsBEUvcDwmHwmoKj6JtHoP3wKBojKtN/gl+J7qMzg9lLQ75H5ptgYZ0HWAONa300HSMqbgH8EX7CFyMpR+SHxYWvJhD8OWUCXAEW+DmVSNhR6Defe+iZ9Xxbk+4iu6zxTCXaV1ABJG8RmBFw7aLvbcMJL1EhjGBpWFGyrSwiweiNhEu0hdFusn9X9CACMlJcCxaVMs3l8iMq9RlVSnkC8PvfUU+BXvq02DKMNVTdLGqbo9dqdngWJF94zSM1xHeMcSavQ9I/MzWDu4ttE7cDyNtx67Kqxf6nxz8+/+7xhaCfvXp78fqtGcMuqR7G7EkRJnhhpDIwlALXvK2r8VAEqqER4dxqtMi4odTRHUp5enmUfLvjiVcjKnnb6At9sRyOirTkHKPL4bhjgLtPyCcro1vk70CCthBJYE7EflshmfhVJoaZ4xMMYYVBAyMpTpfbxNgvb4ihp1vQe5VAJ4U4R382LXFJlMRv52Z0wYJYXk5JIhR5fcjD8yRdPRD0q3jUgyTiCAYLft8vptpl+yM0ys33KFWX6TcmpYBmcEzF+dnFxfOXT8+prb57/qY8AQiha/bZ1QwwLYupRa3FIyrW4Ka/zqOrPMe5zdQl6q+Ws4khJHTFTYXHaItoqDdnnGpZ7MyLasnXcpZavBMLUswmqQfP8rPSr2yv1owbUDCJt/RG1ndQVhOrOYqmU6Uk20ZbIzSwSjYiNDJGKfJsPlsswfJAq25g11SPBE2EPN7OsLRs1OwQi0nUuZZtXnge+hD9/e8CUZoIPpjldFhsOia7Ggi3xzSZLGcgsbG9sPLe0nO0904WN+SsfG7fxmVl3SS1pwzz3m/OiP/7SO77IyoXSEtjifUWbPZjvmOLvfVqyFubhZPHadRe72WwFuEV32AbRI2vQbo3K5Gv9pZvyzWc2o7Z6tQ10pUhxjj3jmFHVjJVFiFV1u7709HOK8xS4VzFIzStSD4fZheYfPydn8w5UL6bLXheM+B7zmgM7c9n2pW7f6fpEO8vcn8k+5eUEJ+Bs7y4NBxtF4chS5nBsoE+HeGyjEXC7Z1ZIyqYma9QBKojKuPUyoDtvgK9fU+6krfve/Hg/TC+FLBlZj5xRoSoX1cjOJtNWeyh++2ri2d0LcjcyWJ1ZQgHd7mtPWuIt4elT8Yu7wxz6L/5dDDKWVu1dIdYJkv5jtHSIxDBPGYicw5uorB1kSkqOclLPvvs9n2b+zgfESsFThgfBlsYIZQHafSQZL49ujQQbOgWBiM0lMIyYzRUUDPQwFgJcrsV4GK1AknF8oin1sS5iJUPFCNjEbJgx+UxGujO5cv5SnvCZbtZGrObFDu+rJAQtLjJx+NQpl0ZCEexaW/esqPfUu/K+4PuDHzpTm5OYaaEEgafptCTukJ5BXGF7hQz8JwIAllMjSgWdpwSOrChNRMJTb817SHswUdVUjzEggtWIBE5cy37qy/JaGzzXQ/LqRY7Qe+rlWv/YAlyLC7Z8/JvXd2Dfz/nxn6rp9d2PXJy0AWmLvJiblomV/5hBVk+IqjBtMTw7SRI6WhPF1RivcTnp2kgNCMpbbYfop/tzFgHHRwyaCLxQjYbQUukPUZ22xAuK7CJiJU7x0o6wMnwql4WhjeUdJKQQWibSMIhrkVRnANtJnNG3g6SwJPY9KSCDBQFsPf3nJRNQmR/0D02W0UhuvSJ8IYrrWa9tektq7h349sUoeZ3EyfxXpbVDGRfHo7tSqSMpGpMuefCNhiW/E0qPnFrErj6VpIE3GK+K1LfQ2VGMujxc+Kd+nibJw4nRzm2zrui5NKy2iTisrKy/wbvdZhnj7vg59ID+MRwcekcVsbiDDPY4/92eP4/yH/fjQd3d3+0/Pfxg+Ovvyj7/zw5PjnIf/+p5b89UW3ofVa4eiMppE76xT4y2P5qgv3Xze53vCx6C0gvNlBHR1kBri3hLb6ktePJzz/b9Qz2YyYyY2/uLZOVXuoMaPby8YuzlHNQeCAjNHgYaiZo9A5t8VnbRdq8Yx6GS8y+x30jKn0b5hG+484jKXyOz2J3aU++sDMDhH7r7VeKCTn9jyaslCUE2VwxQxP8+vXrxxfPsvOLNO48N7s9CGQVZSM0/I4DYTXFgLELcEl/5MDziyM0HAZVId+4oP8bJ50CmIxEkrwCikIkIX/+DHnGx29+OHsjQReVIOch3JCdmxiqIzTZXxXLMdXYxWm/1DHTyKZfgFdwSH39+vmTuJq/jX8jNM0jRZj/+d38ejV2hSGgK8p83Ddb9llczXGJOdp0y0C6fryTe6F+7zEa/cJ+B7qkREHEeNYfZqh44QUD2+ADmz32rRd8WD3/NOs/6j4vPhczYX+k/+/j45OvT8rr/1eGJTis/3/m9f8w9P4Lxz/sTPvLky//yPH/4B8nX1X4/y+//vIw/v8jNPqfi02dvqfhds7zJep1Wl3P80ExmsMhBSmCfrsajYeJ3RokL+Ea681qOs2LhNU/WVmUlUT5PqVhSu1OZsPVOF/0YmU3ia5cqOSGfesqCBffdZBedoCwyQf1Ub0IroSJ4zc/2tbNIynYdx8E6mRi4cePQEKYGPz1oyx1bN3Muw8CZDOx8ONHEClNFL1UkTEEZnzMmx+NdDeR+FtBCYRilwt3w9WQmy6zf4GTwzi2Id/++B2H1G8ZMzYI4ZfDgaYUB7AlD+Kw/SwoLKM8GCDQA7qD2XwT6hrdYV6M1nkwIypIR5md58hQgm/1pv1hv0Gvc8DWXfbxvXEDG7iL/4U+KEm9uhqOikUaiCYTZXko5TR/j9fCcPAZSpqh1EWWhdI6+Zv0uAE9p/uS7PON0dom5OhCrQHO7ZWjIynx7mjIPV7gMPKDaDc0GbJkmbszBJ/qIBW9pENUFCegIymQJbh9j4JCBCMpd6wcdYkyXOOWDiJRhNwlAzMTIymQe+CsboKv07XpIgasgZ9472MClPw3oAku8hhgOTToy/BQROi+fv76jESdEJlTLsAkyIuiPgGbHZkH4mfzfOrdrPLl6xxu8yar6WgjKWqZbXQ9wCZJXp3jhGltslRME6POUZuuMuZdukYZ8CWqiJhY/O9NFu/SJguIRSAttsJzZbLXgqZaOg9RpFKo1CIUSSGnUrjJTlUDrPiKyXkM4X7kukjqXrHzoNz8cmaWpl9YIdIzwhowP6Pk1ohFOo1IUCJq6szwTgiMwrWb0dUmamK/BcWHqyMqWZfBi6dm7Aw329t/D2zRDg5XV1Kq3sllw3Sdza6VCRu54uJ+oYuDMW3gFz2AcW2uLTxqi37TGRmYyd0ieBrFRyVbnmhMNoC0QixV72Q3x9QbwnysxaxfIynXFM/OuER4twuaPR/EGwspXBeQ6g/2XrosRvlaFyMqc5TuIzRMPQjal3QjKRuY7Z1FaViJ+kUO+bRYGqK2qsq9BKPm5DepO17c5LplYCxN+hsllWjPjYZRfwz2Hjdxwm23PyGFVKm87KT86oqXy3Rn1rQ+7SMpG9zkg1s8ptqVIZxnqdwjKYsl3Ez5QXXlYTumLPVWjeG5RcTh0pJ4XENukPlXk0P0BmpAhA410VBzm4UEelWWhM/6INFQ1JTTQDGOBTq3ocUfFAJIuMN+ksY+GGRREdd9uFfcNKzUVRcFKvJFqj9kYIMuISMqrNt8Q9rgPLeab7LMxBqmT57gcSgp1YCVcvNH3uRJBA49lKF9bcwlyEplGReZZSm/NR4xW9q1wnggoG5DSVO6Fffn8/EGzFaheDRfFc/Gw4z4Qgy1QifKnDmLwTkgqxzNElDWmjx8ObAt1m0a+XiY6jbF/o4I2a/WZ7eW20FDlOOhIyoijgdk7nmngaa6gTpghz/LTrcZpfVXt4JMPjdVbk2Q+ZSceeYXSQmYF7ojNBYxGebLfLD8BEhQRlh+08mLWhxsEGJBwJ5nhCM0SVOfuCh9typAfk0aWq+XKCM04fQOyoOPUqaG3ZrnxXLTcrkljqtv24IWxaCuILFf75W1dZbFvPyiKSxY9NV4WFe0iMftXTTl5RdNYV7Re83qE8Om9t/l2cmuqR2njcywfx+X74Nd+ebTIeYjNK7BvM5C+0A3Aum7hfdWckBimQUYjiYHP/aPGJRN+9G6X7TjRJQ0diMqUOoqnwIhzIhwWc7mITxMMOGAoFg8dZdPUDxlxKRYLYNkWC2xeAJt3OOtJjeobXQJaNyT1XPcN6vgIyrItrqeYYPqZxnOV3ciWFNAvUGOS7qy9e5CKEmHz1jW2/K/IvyeVsXBJYp62GAQFJjfk5JoApytSQ4G0XCWk6h+fmeKi/rTIyrqRLdWZh/WHDRJh8Ury7Avk5lhpQGPaqQYDBjEjCzYah0jKswjNPjJkLY57kAer1jJPqZcuG6vj0O1tl4G6u6uUhNwAh1LGfGsiKlslv/z2YjBIynvVJWbkT1p0OSUTdSuoAExpIWSwh3WFMA6AfThNs7cN1lSNthDU9tN4RBXJCMUO6LQe2+2I+8iholaKgHjCcRFA9wmKjrpfgVNQGNSwabqXdkLrDJ2IC4BTZDsxeIlYBZn3n8HWhGmU5COULHQKfvX4MCME8K9NyWq2tIhCM4FBObGSsl+bbXRGvcq545dknMRFhD6xvQWOXIe+pSpP/D9XkMQnlk4n+0MJxMYSUjS9TvLoepJIqv6IyrC9eUDDEAmn4qOF7xntjYYBOdp1NzD/NcVnYss2JvgZP4x/V/j1gTzuMPcbLDhRGuYROCvoz/I8SzGIyniYCDz+VwjNCQll7aTOdiUH+fXS3EvInGkjJOTBwRlHX4DErotgYJEGxwnvNOHXjQcevFq2G/KVHX+hZxN3VCLbELNweZZrn5BlNgjt/l0+HiFm5gktt3N921UNVwB+VjgRPVTa/YZiMdT4V21nsGCMBApv+mS7HxPXroFWlJntdYj3AmSZpHDabMVIxDRInwy3DK2YpQcMrSyxV6WfK9VkwQTiGeFW6ffDCoCNF0opELApmOSccejVEGKnlOD6Ij6VKF4pYRjVWqUeqYkhX5j6tKLWf6KbSlh/eDgya8gQiQ9SXwpGsPr3d1PdTz0xcjOgdRYFwcTNiMpx8Na6dwsCVUS64qP1pd+H3RY6Azv6dlRHH4fJ+tqx8vvYGbN3HTnup83V4rVmiMq1BbMUqMFzk23lL7dDq08LFdGC5D6oLU+cQwjKYTduDB+HbokQ4EbUuTW5UivPmaAmr7lDiloPvencBQCR4+AyjwLGlgFYK1aGVgjKmR23mfOB1k2mmJtzndkGMe6Nr7zZlQqjyB4rFcm2cCs4lXINawJzofkoBN8sWxsHTZdlSLsiAV6/kp5hCQnUx6yJfcgVBp5TGEdtdUlnowveGAgxGnZY0ploVCTJ2Cx1Eb4NmjNCxQGhjgjuIOm8gzDlsu4Oy+dIzTlzo4kvI2hD+toqhOvqiMqKgsWt3XX8VcuC7RTYfVOeVss1cXTw3uk+dKAPSkp0ZnT2rcGPsLKWlZcoYzl89EMpTPSHDRKqYpplCM00X7R2rg5JMsCu84qZJ/cE2cWl41HpaNt59PAO4FNfl3Nljlqo4lBTrbH6UoPJBDYdvD09tnjn84yz2Dnmg5rT7BO4tZn/1pJipp6SbRDtFqVWpiPrMKxvaUyayMp3K9ThoYype1O+U7QrRyQiu4CS6tJ05kq9SPglLu6AfNzdMdu6L9VYUjDWbSp5bSPjkLcWIBPN3B7qF25wOPpqnoxnmYp1V0xwuEEIynIIyoYkmM0vZ614s8i1Dkn51ukFyRnMXw1i8dzgJ2KI/cuftbfVLPGvWMoa/HmMrObdx3rX2yzgZWwQIWiXqreG7CbSP/Fk+fA7Czj0/KmMLFTK+8payFgHnAQgd0o8C/5wLCXY10Ofn6gGQ/n8s+Q6b1Ne4AdLMot6O/mj2z65Oji+PbS7vS9lUDsxJpMMEveMP/WPH3js5CpH5PSz0H08/AcnsNzeA7P4Tk8h+fwHJ7Dc3gOz+E5PIfn8Byew3N4Ds/hOTyH5/AcnsNzeA7P4Tk8h+fwHJ5P9Pwbfi5fayMpqAcjKQotIzw9PQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMi41LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8yLjYuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8yLjUuMy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMi42LjEuYmIKaW5kZXggYTkwZmY1Mi4uYjBmNTY1YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMi41LjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMi42LjEuYmIKQEAgLTUsMjUgKzUsMjUgQEAKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTExZjVjMzE0OWNkZWM0YmIzMDliYWJiMDIwYjMyYjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZC5jYzttZDU9MzQzZjE3OTc5NDRkZTQ5YWIyYjVmNWNmMzEyNmQzZjIiCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaGItdWNkLmNjO2JlZ2lubGluZT0xO2VuZGxpbmU9MTU7bWQ1PTI5ZDRkY2I2NDEwNDI5MTk1ZGY2N2VmZTMzODJkOGJjIgogCiBERVBFTkRTID0gImdsaWItMi4wIGNhaXJvIGZvbnRjb25maWcgZnJlZXR5cGUiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvaGFyZmJ1enovcmVsZWFzZS8ke0JQfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjlhMzEwZTc0YTkwYjRlNGY2ZDYyZjNlNzRhNTcxZTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmVkMDBkYzc5N2I3YmEzY2E5NDMyMjVmMGE4NTRiYWFlZDRjMTY0MGZmZjhhMzFkNDU1Y2QzYjVjYWVjODU1YyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OWI3NThhMmViMTRkNTZhOTQ0MDZjZjkxNGI2MjM4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjUxZmIzZmFhYTMzOGFlYjI4MDcyNjgzN2MyMzg0MDY0Y2RjMTdlZjQwNTM5MjI4ZDg4YTEyNjA5NjA4NDRmIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UgZ3RrLWRvYwogCiBQQUNLQUdFQ09ORklHID8/PSAiaWN1IgogUEFDS0FHRUNPTkZJR1tpY3VdID0gIi0td2l0aC1pY3UsLS13aXRob3V0LWljdSxpY3UiCitQQUNLQUdFQ09ORklHW2dyYXBoaXRlXSA9ICItLXdpdGgtZ3JhcGhpdGUyLC0td2l0aG91dC1ncmFwaGl0ZTIsZ3JhcGhpdGUyIgogCiBFWFRSQV9PRUNPTkYgPSAiIFwKICAgICAtLXdpdGgtY2Fpcm8gXAogICAgIC0td2l0aC1mb250Y29uZmlnIFwKICAgICAtLXdpdGgtZnJlZXR5cGUgXAogICAgIC0td2l0aC1nbGliIFwKLSAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKICIKIAogUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaW1hZ2VzL2NvcmUtaW1hZ2UtY2x1dHRlci5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLWNsdXR0ZXIuYmIKaW5kZXggYjBmMjVjZi4uYTU5NDQ2MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaW1hZ2VzL2NvcmUtaW1hZ2UtY2x1dHRlci5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9pbWFnZXMvY29yZS1pbWFnZS1jbHV0dGVyLmJiCkBAIC0xMSwzICsxMSw1IEBACiAgICAgIgogCiBpbmhlcml0IGNvcmUtaW1hZ2UKKworUUJfTUVNID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAib3BlbmdsIiwgIi1tIDUxMiIsICItbSAyNTYiLCBkKX0nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9pbWFnZXMvY29yZS1pbWFnZS14MTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9pbWFnZXMvY29yZS1pbWFnZS14MTEuYmIKaW5kZXggODQ1NWJiOC4uY2Q1Mzc0OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaW1hZ2VzL2NvcmUtaW1hZ2UteDExLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLXgxMS5iYgpAQCAtNywzICs3LDUgQEAKIGluaGVyaXQgY29yZS1pbWFnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUUJfTUVNID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAib3BlbmdsIiwgIi1tIDUxMiIsICItbSAyNTYiLCBkKX0nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIKaW5kZXggZTFkZjc1NC4uMWNmODU0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMy5iYgpAQCAtMTQsOCArMTQsOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJqcGVnLXR1cmJvLWZpeC1wYWNrYWdlX3FhLWVycm9yLnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNzlmNzZmYmZiMGM2MTA5NjMxMzMyNzYyZDEwZTE2ZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWNiODU5OWZlNTM5OWFmMTE0Mjg3ZWU1OTA3YWVhNDQ1NmY4ZjJjMWNjOTZkMjZjMjhhZWJmZGY1ZWU4MmZlZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZDA3ZmRkZjI2ZjlkZWY3YmFiMDI3MzllYjY1NTExNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjQ2ZGU1MDA1NDRkNGVlNDA4ZWU1NzA0OGFhNGFhZGM2ZjE2NWZjMTdmMTQxZGE4NzY2OWYyMGVkMzI0MWI3IgogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiCmluZGV4IGRkNzA2YTkuLmM4ZDE2NTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiCkBAIC0yMyw4ICsyMyw4IEBACiAKIEVYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCiAKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImVnbCIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImVnbCIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImVnbCB4MTEiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJlZ2wgeDExIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCmluZGV4IGZjZDE5ODguLmY5MTZlNTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwpAQCAtOTgsNiArOTgsOSBAQAogUEFDS0FHRUNPTkZJR1t2M2RdID0gIiIKIAogR0FMTElVTURSSVZFUlMgPSAic3dyYXN0IgorIyBnYWxsaXVtIHN3cmFzdCB3YXMgZm91bmQgdG8gY3Jhc2ggWG9yZyBvbiBzdGFydHVwIGluIHgzMiBxZW11CitHQUxMSVVNRFJJVkVSU194ODYteDMyID0gIiIKKwogR0FMTElVTURSSVZFUlNfYXBwZW5kID0iJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZXRuYXZpdicsICcsZXRuYXZpdicsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmQgPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdrbXNybycsICcsa21zcm8nLCAnJywgZCl9IgogR0FMTElVTURSSVZFUlNfYXBwZW5kID0iJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmM0JywgJyx2YzQnLCAnJywgZCl9IgpAQCAtMTIyLDYgKzEyNSw5IEBACiBQQUNLQUdFQ09ORklHW2xpbWFdID0gIiIKIEdBTExJVU1EUklWRVJTX2FwcGVuZCA9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xpbWEnLCAnLGxpbWEnLCAnJywgZCl9IgogCitQQUNLQUdFQ09ORklHW3BhbmZyb3N0XSA9ICIiCitHQUxMSVVNRFJJVkVSU19hcHBlbmQgPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW5mcm9zdCcsICcscGFuZnJvc3QnLCAnJywgZCl9IgorCiBPU01FU0EgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2FsbGl1bScsICdnYWxsaXVtJywgJ2NsYXNzaWMnLCBkKX0iCiBQQUNLQUdFQ09ORklHW29zbWVzYV0gPSAiLURvc21lc2E9JHtPU01FU0F9LC1Eb3NtZXNhPW5vbmUiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjUuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYgppbmRleCBhMTQzNzIzLi44ODJlYWRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC42LmJiCkBAIC0xNiw4ICsxNiw4IEBACiBpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KIAogU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImI2YmY2ODllM2NlNGY0NmIwZmQ4ODdiNjRjODUwZWExIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiODUyN2RmY2JlZWRiNDM5MDE0OWI2Zjk0NjIwYzBmYTY0ZTI2MDQ2YWI4NTA0MmMyYTc1NTY0Mzg4NDdkN2ZjMSIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRiMGEzMjQzYmEzM2UwMmFhYTc3NTQxMmY4ZTVmNDEyIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2UxZTQxYmE4Mzg3MzdlMjAwNjExZmYwMDFlM2IzMDRjMmNhNGNkYmJhNjNkMjAwYTIwZGIwYjBkZGMwZjg2YyIKIAogREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZm9udGNvbmZpZyBmcmVldHlwZSB2aXJ0dWFsL2xpYmljb252IGNhaXJvIGhhcmZidXp6IGZyaWJpZGkiCiAKQEAgLTI2LDYgKzI2LDcgQEAKIAogUEFDS0FHRUNPTkZJR1t4MTFdID0gIiwsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgogUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLURpbnN0YWxsLXRlc3RzPXRydWUsIC1EaW5zdGFsbC10ZXN0cz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGhhaV0gPSAiLCxsaWJ0aGFpIgogCiBHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCiBHSVJfTUVTT05fT1BUSU9OID0gJ2ludHJvc3BlY3Rpb24nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS1NYWtlZmlsZS5hbS1leHBsaWNpdGx5LWxpbmstd2l0aC1saWJkcm0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS1NYWtlZmlsZS5hbS1leHBsaWNpdGx5LWxpbmstd2l0aC1saWJkcm0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhOGQ4MTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtTWFrZWZpbGUuYW0tZXhwbGljaXRseS1saW5rLXdpdGgtbGliZHJtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBkNjFmNzA3M2I4Y2UxNTlkMjE4MTFiMjkxYzIyYjI3M2IwNDBjMzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDEyIEZlYiAyMDE5IDEyOjA0OjUyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBleHBsaWNpdGx5IGxpbmsgd2l0aCBsaWJkcm0KLQotT3RoZXJ3aXNlLCBhIGZhaWx1cmUgaGFwcGVucyB3aXRoIGdvbGQgbGlua2VyOgotCi0uLi9zcmMvLmxpYnMvbGlidmlyZ2xyZW5kZXJlci5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ2RybVByaW1lSGFuZGxlVG9GRCcKLQotaHR0cHM6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMjIwNDYvCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy92aXJnbC92aXJnbHJlbmRlcmVyL21lcmdlX3JlcXVlc3RzLzE1M10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDlhMGE0NGUuLjliNjY4YzggMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTEsNSArMSw2IEBACi0gU1VCRElSUyA6PSBnYWxsaXVtL2F1eGlsaWFyeQotIEFNX0xERkxBR1MgPSAtbG0gXAotKwkkKExJQkRSTV9MSUJTKSBcCi0gCSQoR0JNX0xJQlMpIFwKLSAJJChFUE9YWV9MSUJTKSBcCi0gCSQoWDExX0xJQlMpIFwKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlci8wMDAxLXZ0ZXN0LWFkZC1taXNzaW5nLWluY2x1ZGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtdnRlc3QtYWRkLW1pc3NpbmctaW5jbHVkZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNGZmYTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtdnRlc3QtYWRkLW1pc3NpbmctaW5jbHVkZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDA1YzVjNWY0M2ZiZmZiMzMxN2JkOWRhMjdkNDE0ODkwZDJlZjQ5M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTggSmFuIDIwMTkgMTM6NDc6MjMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdnRlc3Q6IGFkZCBtaXNzaW5nIGluY2x1ZGVzCi0KLVRoaXMgZml4ZXMgYnVpbGQgZmFpbHVyZXMgd2l0aCBtdXNsIEMgbGlicmFyeQotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvdmlyZ2wvdmlyZ2xyZW5kZXJlci9tZXJnZV9yZXF1ZXN0cy8xMjVdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIHZ0ZXN0L3V0aWwuYyAgICAgICAgIHwgMSArCi0gdnRlc3QvdnRlc3Rfc2VydmVyLmMgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdnRlc3QvdXRpbC5jIGIvdnRlc3QvdXRpbC5jCi1pbmRleCAwZDNjNzhmLi5jNjA1MjUzIDEwMDY0NAotLS0tIGEvdnRlc3QvdXRpbC5jCi0rKysgYi92dGVzdC91dGlsLmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgotIAotIGludCB2dGVzdF93YWl0X2Zvcl9mZF9yZWFkKGludCBmZCkKLSB7Ci1kaWZmIC0tZ2l0IGEvdnRlc3QvdnRlc3Rfc2VydmVyLmMgYi92dGVzdC92dGVzdF9zZXJ2ZXIuYwotaW5kZXggYmM2Yzk1Zi4uMDEwNzIxZiAxMDA2NDQKLS0tLSBhL3Z0ZXN0L3Z0ZXN0X3NlcnZlci5jCi0rKysgYi92dGVzdC92dGVzdF9zZXJ2ZXIuYwotQEAgLTMxLDYgKzMxLDcgQEAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gI2luY2x1ZGUgInV0aWwuaCIKLSAjaW5jbHVkZSAidnRlc3QuaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYgpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC43LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYgppbmRleCA4MThkNWI2Li5kMmIxMWMxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC43LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4wLmJiCkBAIC01LDEwICs1LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM4MWMwOGVlZWZkOTQxOGZjYThmODgzMDlhNzZkYjEwIgogCiBERVBFTkRTID0gImxpYmRybSBtZXNhIGxpYmVwb3h5IgotU1JDUkVWID0gIjQwMmMyMjg4NjFjOTg5M2Y2NGNmZmJiY2I0Y2IyMzA0NGI4YzcyMWMiCitTUkNSRVYgPSAiNDhjYzk2YzlhZWJiOWQwMTY0ODMwYTE1N2VmYzg5MTZmMDhmMDBjMCIKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvdmlyZ2xyZW5kZXJlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXZ0ZXN0LWFkZC1taXNzaW5nLWluY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZXhwbGljaXRseS1saW5rLXdpdGgtbGliZHJtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZ2FsbGl1bS1FeHBhbmQtbGliYy1jaGVjay10by1iZS1wbGF0Zm9ybS1PUy1jaGVjay5wYXRjaCBcCiAgICAgICAgICAgICIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2VhOWRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLUZyb20gYzQ2NzdlMTU1NzM2MDYyZTc1Njg3ZjFhNjU1NzMyYzg5MDJlOTEyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1heSAyMDE1IDIwOjU2OjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ha2UgZXJyb3IoKSBwb3J0YWJsZQotCi1lcnJvcigpIGlzIG5vdCBwb3NpeCBidXQgZ251IGV4dGVuc2lvbiBzbyBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiBhbGwKLWtpbmQgb2Ygc3lzdGVtc2kgZS5nLiBtdXNsLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPG1pbmcubGl1QHRvcmFkZXguY29tPgotLS0tCi0gbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oICB8IDIwICsrKysrKysrKysrKysrKysrKysrCi0gbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyB8ICAyICstCi0gbWVzb24uYnVpbGQgICAgICAgICAgICAgICB8ICAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oCi0KLWRpZmYgLS1naXQgYS9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmggYi9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMDg5ZDAyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKLUBAIC0wLDAgKzEsMjAgQEAKLSsjaWZuZGVmIF9XRVNUT05fRVJST1JfSAotKyNkZWZpbmUgX1dFU1RPTl9FUlJPUl9ICi0rCi0rI2lmIGRlZmluZWQoSEFWRV9FUlJPUl9IKQotKyNpbmNsdWRlIDxlcnJvci5oPgotKyNlbHNlCi0rI2luY2x1ZGUgPGVyci5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjZGVmaW5lIF93ZXN0b25fZXJyb3IoUywgRSwgRiwgLi4uKSBkbyB7IFwKLSsJaWYgKEUpIFwKLSsJCWVycihTLCBGICI6ICVzIiwgIyNfX1ZBX0FSR1NfXywgc3RyZXJyb3IoRSkpOyBcCi0rCWVsc2UgXAotKwkJZXJyKFMsIEYsICMjX19WQV9BUkdTX18pOyBcCi0rfSB3aGlsZSgwKQotKwotKyNkZWZpbmUgZXJyb3IgX3dlc3Rvbl9lcnJvcgotKyNlbmRpZgotKwotKyNlbmRpZgotKwotZGlmZiAtLWdpdCBhL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMgYi9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCi1pbmRleCBiZjczZTBkLi45MDY0NDM5IDEwMDY0NAotLS0tIGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotQEAgLTMzLDcgKzMzLDYgQEAKLSAjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotICNpbmNsdWRlIDxnZXRvcHQuaD4KLSAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1AQCAtNTksNiArNTgsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlICJ3ZXN0b24tbGF1bmNoLmgiCi0rI2luY2x1ZGUgIndlc3Rvbi1lcnJvci5oIgotIAotICNkZWZpbmUgRFJNX01BSk9SIDIyNgotIAotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDIxNTViN2IuLmJhYTUyZDkgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC05NCw2ICs5NCw3IEBAIGZvcmVhY2ggZnVuYyA6IG9wdGlvbmFsX2xpYmNfZnVuY3MKLSBlbmRmb3JlYWNoCi0gCi0gb3B0aW9uYWxfc3lzdGVtX2hlYWRlcnMgPSBbCi0rCSdlcnJvci5oJywKLSAJJ2xpbnV4L3N5bmNfZmlsZS5oJwotIF0KLSBmb3JlYWNoIGhkciA6IG9wdGlvbmFsX3N5c3RlbV9oZWFkZXJzCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaAppbmRleCA4MWNjMDI1Li5lNTA4NDViIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ZDJmZWE2MWE5NWU5NDk4YjVhMTljOGNmZmNiMmFiNTYzMWQ1Njg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2ODJiN2Q3OWE3YjgxZWM4ZTM4NzYwMzgxMTA0YjI0YWQ1NDllOGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgogRGF0ZTogV2VkLCAyMiBGZWIgMjAxNyAxNTo1MzozMCArMDIwMAogU3ViamVjdDogW1BBVENIXSB3ZXN0b24tbGF1bmNoOiBQcm92aWRlIGEgZGVmYXVsdCB2ZXJzaW9uIHRoYXQgZG9lc24ndCByZXF1aXJlCkBAIC0xOCwxNiArMTgsMTYgQEAKIFNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB0b3JhZGV4LmNvbT4KIC0tLQogIGxpYndlc3Rvbi9tZXNvbi5idWlsZCAgICAgfCAxNiArKysrKysrKysrKystLS0tCi0gbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyB8IDIwICsrKysrKysrKysrKysrKysrKysrCisgbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwogIG1lc29uX29wdGlvbnMudHh0ICAgICAgICAgfCAgNyArKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xpYndlc3Rvbi9tZXNvbi5idWlsZCBiL2xpYndlc3Rvbi9tZXNvbi5idWlsZAotaW5kZXggMzNhYjk3MC4uMzJmNDk1YSAxMDA2NDQKK2luZGV4IGQ4ZDNmYzAuLjMyNjY4M2YgMTAwNjQ0CiAtLS0gYS9saWJ3ZXN0b24vbWVzb24uYnVpbGQKICsrKyBiL2xpYndlc3Rvbi9tZXNvbi5idWlsZAotQEAgLTQ3MiwxNiArNDcyLDI0IEBAIGlmIGdldF9vcHRpb24oJ3JlbmRlcmVyLWdsJykKLSBlbmRpZgorQEAgLTE5OSwxNiArMTk5LDI0IEBAIGRlcF92ZXJ0ZXhfY2xpcHBpbmcgPSBkZWNsYXJlX2RlcGVuZGVuY3koCisgKQogIAogIGlmIGdldF9vcHRpb24oJ3dlc3Rvbi1sYXVuY2gnKQogLQlkZXBfcGFtID0gY2MuZmluZF9saWJyYXJ5KCdwYW0nKQpAQCAtNTYsNyArNTYsNyBAQAogIAkJaW5zdGFsbDogdHJ1ZQogIAkpCiBkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKLWluZGV4IDkwNjQ0MzkuLmM2YWJlOTIgMTAwNjQ0CitpbmRleCA0OTYyYmQ2Li5mYzUzMWM1IDEwMDY0NAogLS0tIGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwogKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwogQEAgLTUxLDcgKzUxLDkgQEAKQEAgLTY5LDcgKzY5LDcgQEAKICAKICAjaWZkZWYgSEFWRV9TWVNURU1EX0xPR0lOCiAgI2luY2x1ZGUgPHN5c3RlbWQvc2QtbG9naW4uaD4KLUBAIC0xMDEsOCArMTAzLDEwIEBAIGRybVNldE1hc3RlcihpbnQgZHJtX2ZkKQorQEAgLTEwMCw4ICsxMDIsMTAgQEAgZHJtU2V0TWFzdGVyKGludCBkcm1fZmQpCiAgI2VuZGlmCiAgCiAgc3RydWN0IHdlc3Rvbl9sYXVuY2ggewpAQCAtODAsNyArODAsNyBAQAogIAlpbnQgdHR5OwogIAlpbnQgdHR5bnI7CiAgCWludCBzb2NrWzJdOwotQEAgLTE5MSw2ICsxOTUsNyBAQCB3ZXN0b25fbGF1bmNoX2FsbG93ZWQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQorQEAgLTE5Miw2ICsxOTYsNyBAQCB3ZXN0b25fbGF1bmNoX2FsbG93ZWQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQogIAlyZXR1cm4gZmFsc2U7CiAgfQogIApAQCAtODgsNyArODgsNyBAQAogIHN0YXRpYyBpbnQKICBwYW1fY29udmVyc2F0aW9uX2ZuKGludCBtc2dfY291bnQsCiAgCQkgICAgY29uc3Qgc3RydWN0IHBhbV9tZXNzYWdlICoqbWVzc2FnZXMsCi1AQCAtMjMxLDYgKzIzNiw3IEBAIHNldHVwX3BhbShzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wpCitAQCAtMjMyLDYgKzIzNyw3IEBAIHNldHVwX3BhbShzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wpCiAgCiAgCXJldHVybiAwOwogIH0KQEAgLTk2LDcgKzk2LDcgQEAKICAKICBzdGF0aWMgaW50CiAgc2V0dXBfbGF1bmNoZXJfc29ja2V0KHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKLUBAIC00MjQsNiArNDMwLDcgQEAgcXVpdChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGludCBzdGF0dXMpCitAQCAtNDMxLDYgKzQzNyw3IEBAIHF1aXQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBpbnQgc3RhdHVzKQogIAljbG9zZSh3bC0+c2lnbmFsZmQpOwogIAljbG9zZSh3bC0+c29ja1swXSk7CiAgCkBAIC0xMDQsNyArMTA0LDcgQEAKICAJaWYgKHdsLT5uZXdfdXNlcikgewogIAkJZXJyID0gcGFtX2Nsb3NlX3Nlc3Npb24od2wtPnBoLCAwKTsKICAJCWlmIChlcnIpCi1AQCAtNDMxLDYgKzQzOCw3IEBAIHF1aXQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBpbnQgc3RhdHVzKQorQEAgLTQzOCw2ICs0NDUsNyBAQCBxdWl0KHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgaW50IHN0YXR1cykKICAJCQkJZXJyLCBwYW1fc3RyZXJyb3Iod2wtPnBoLCBlcnIpKTsKICAJCXBhbV9lbmQod2wtPnBoLCBlcnIpOwogIAl9CkBAIC0xMTIsNyArMTEyLDcgQEAKICAKICAJaWYgKGlvY3RsKHdsLT50dHksIEtEU0tCTVVURSwgMCkgJiYKICAJICAgIGlvY3RsKHdsLT50dHksIEtEU0tCTU9ERSwgd2wtPmtiX21vZGUpKQotQEAgLTYxMCw2ICs2MTgsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCitAQCAtNjYwLDYgKzY2OCw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKICAJc2V0ZW52KCJIT01FIiwgd2wtPnB3LT5wd19kaXIsIDEpOwogIAlzZXRlbnYoIlNIRUxMIiwgd2wtPnB3LT5wd19zaGVsbCwgMSk7CiAgCkBAIC0xMjAsNyArMTIwLDcgQEAKICAJZW52ID0gcGFtX2dldGVudmxpc3Qod2wtPnBoKTsKICAJaWYgKGVudikgewogIAkJZm9yIChpID0gMDsgZW52W2ldOyArK2kpIHsKLUBAIC02MTgsNiArNjI3LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQorQEAgLTY2OCw2ICs2NzcsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCiAgCQl9CiAgCQlmcmVlKGVudik7CiAgCX0KQEAgLTEyOCw3ICsxMjgsNyBAQAogIAogIAkvKgogIAkgKiBXZSBvcGVuIGEgbmV3IHNlc3Npb24sIHNvIGl0IG1ha2VzIHNlbnNlCi1AQCAtNjg1LDggKzY5NSwxMCBAQCBzdGF0aWMgdm9pZAorQEAgLTczOSw4ICs3NDksMTAgQEAgc3RhdGljIHZvaWQKICBoZWxwKGNvbnN0IGNoYXIgKm5hbWUpCiAgewogIAlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBbYXJncy4uLl0gWy0tIFt3ZXN0b24gYXJncy4uXV1cbiIsIG5hbWUpOwpAQCAtMTM5LDcgKzEzOSw3IEBACiAgCWZwcmludGYoc3RkZXJyLCAiICAtdCwgLS10dHkgICAgICAgU3RhcnQgc2Vzc2lvbiBvbiBhbHRlcm5hdGl2ZSB0dHksXG4iCiAgCQkJIiAgICAgICAgICAgICAgICAgIGUuZy4gLXQgL2Rldi90dHk0LCByZXF1aXJlcyAtdSBvcHRpb24uXG4iKTsKICAJZnByaW50ZihzdGRlcnIsICIgIC12LCAtLXZlcmJvc2UgICBCZSB2ZXJib3NlXG4iKTsKLUBAIC03MDAsNyArNzEyLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTc1NCw3ICs3NjYsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgCWludCBpLCBjOwogIAljaGFyICp0dHkgPSBOVUxMOwogIAlzdHJ1Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKQEAgLTE0OSwyMSArMTQ5LDI0IEBACiAgCQl7ICJ0dHkiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd0JyB9LAogIAkJeyAidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAndicgfSwKICAJCXsgImhlbHAiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ2gnIH0sCi1AQCAtNzEyLDkgKzcyNiwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtNzY2LDExICs3ODAsMTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAidTp0OnZoIiwgb3B0cywgJmkpKSAhPSAtMSkgewogIAkJc3dpdGNoIChjKSB7CiAgCQljYXNlICd1JzoKICsjaWZkZWYgSEFWRV9QQU0KICAJCQl3bC5uZXdfdXNlciA9IG9wdGFyZzsKLSAJCQlpZiAoZ2V0dWlkKCkgIT0gMCkKLSAJCQkJZXJyb3IoMSwgMCwgIlBlcm1pc3Npb24gZGVuaWVkLiAtdSBhbGxvd2VkIGZvciByb290IG9ubHkiKTsKKyAJCQlpZiAoZ2V0dWlkKCkgIT0gMCkgeworIAkJCQlmcHJpbnRmKHN0ZGVyciwgIndlc3RvbjogUGVybWlzc2lvbiBkZW5pZWQuIC11IGFsbG93ZWQgZm9yIHJvb3Qgb25seVxuIik7CisgCQkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKyAJCQl9CiArI2Vsc2UKLSsJCQllcnJvcigxLCAwLCAiLXUgaXMgdW5zdXBwb3J0ZWQgaW4gdGhpcyB3ZXN0b24tbGF1bmNoIGJ1aWxkIik7CisrCQkJZnByaW50ZihzdGRlcnIsICJ3ZXN0b246IC11IGlzIHVuc3VwcG9ydGVkIGluIHRoaXMgd2VzdG9uLWxhdW5jaCBidWlsZFxuIik7CisrCQkJZXhpdChFWElUX0ZBSUxVUkUpOwogKyNlbmRpZgogIAkJCWJyZWFrOwogIAkJY2FzZSAndCc6CiAgCQkJdHR5ID0gb3B0YXJnOwotQEAgLTc1NSw4ICs3NzMsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTgyMiw4ICs4NDEsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAlpZiAoc2V0dXBfdHR5KCZ3bCwgdHR5KSA8IDApCiAgCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAgCkBAIC0xNzUsNyArMTc4LDcgQEAKICAJaWYgKHNldHVwX2xhdW5jaGVyX3NvY2tldCgmd2wpIDwgMCkKICAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCAwZTFkMTgzLi45YTVjM2Q1IDEwMDY0NAoraW5kZXggZDViZjFkNS4uMjU0ZWIyYiAxMDA2NDQKIC0tLSBhL21lc29uX29wdGlvbnMudHh0CiArKysgYi9tZXNvbl9vcHRpb25zLnR4dAogQEAgLTczLDYgKzczLDEzIEBAIG9wdGlvbigKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzYuMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fNy4wLjAuYmIKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fNi4wLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzcuMC4wLmJiCmluZGV4IGZlOGYxYjguLjVkMmE5MzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzYuMC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzcuMC4wLmJiCkBAIC05LDExICs5LDEwIEBACiAgICAgICAgICAgIGZpbGU6Ly93ZXN0b24ucG5nIFwKICAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5kZXNrdG9wIFwKICAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlN2IxMDcxMGVmMWVhYzgyMjU4Zjk3YmZkNDFmZTUzNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZjJmNmQ1YWFlMmUxMWNhYmI2YmQ2OWE3NmJjZjllZGIwODRmOGMzZTE0Y2E3NjliZWE3MjM0YTUxMzE1NWI0IgorU1JDX1VSSVttZDVzdW1dID0gImNiZmRhNDgzYmMyNTAxZDA4MzFhZjNmMzNjNzA3ODUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwMGE2ZDIwN2I2YTQ1Zjk1ZjQ0MDFjNjA0NzcyYTMwN2MzNzY3ZTVlMmJlZWNmM2Q4NzkxMTBjNDM5MDlhNjQiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCiAKQEAgLTI2LDcgKzI1LDcgQEAKIAogV0VTVE9OX01BSk9SX1ZFUlNJT04gPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjFdKX0iCiAKLUVYVFJBX09FTUVTT04gKz0gIi1EYmFja2VuZC1kZWZhdWx0PWF1dG8gLURiYWNrZW5kLXJkcD1mYWxzZSIKK0VYVFJBX09FTUVTT04gKz0gIi1EYmFja2VuZC1kZWZhdWx0PWF1dG8gLURiYWNrZW5kLXJkcD1mYWxzZSAtRHBpcGV3aXJlPWZhbHNlIgogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHdheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YzEzMTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIGR0Yy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0JCSAgICBmaWxlOi8vbGliZmR0L2xpYmZkdC5oO2JlZ2lubGluZT0zO2VuZGxpbmU9NTI7bWQ1PWZiMzYwOTYzMTUxZjhlYzJkNmMwNmIwNTViY2JiNjhjIgotCi1TUkNSRVYgPSAiZDM3ZjZiMjAxMDdlOTUyMDY0ZTNmNzdlOWQ2OTE1YTljMDlkMTBhNiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS41LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGY4YTA2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS41LjEuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBkdGMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0dQTDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorCQkgICAgZmlsZTovL2xpYmZkdC9saWJmZHQuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTc7bWQ1PTA1YmIzNTdjZmI3NWNhZTdkMmIwMWQyZWU4ZDc2NDA3IgorCitTUkNSRVYgPSAiNjBlMGRiM2Q2NWExMjE4YjBkNWEyOTQ3NGU3NjlmMjhhMThlM2NhNiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1hcm02NC1zdmUtdWFwaS1hc20tcHRyYWNlLmgtc2hvdWxkLW5vdC1kZXBlbmQtb24tdWFwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1hcm02NC1zdmUtdWFwaS1hc20tcHRyYWNlLmgtc2hvdWxkLW5vdC1kZXBlbmQtb24tdWFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWE0NmU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtYXJtNjQtc3ZlLXVhcGktYXNtLXB0cmFjZS5oLXNob3VsZC1ub3QtZGVwZW5kLW9uLXVhcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gMzUzNDFjYTA2MTRhYjEzZTFlZjM0YWQ0ZjI5YTM5ZTE1ZWYzMWZhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuaXNzZSBBc3RpZXIgPGFhc3RpZXJAZnJlZWJveC5mcj4KLURhdGU6IE1vbiwgMTcgSnVuIDIwMTkgMTU6MjI6MjIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXJtNjQvc3ZlOiA8dWFwaS9hc20vcHRyYWNlLmg+IHNob3VsZCBub3QgZGVwZW5kIG9uCi0gPHVhcGkvbGludXgvcHJjdGwuaD4KLQotUHVsbGluZyBsaW51eC9wcmN0bC5oIGludG8gYXNtL3B0cmFjZS5oIGluIHRoZSBhcm02NCBVQVBJIGhlYWRlcnMgY2F1c2VzCi11c2Vyc3BhY2UgYnVpbGQgaXNzdWVzIGZvciBhbnkgcHJvZ3JhbSAoZS5nLiBzdHJhY2UgYW5kIHFlbXUpIHRoYXQKLWluY2x1ZGVzIGJvdGggPHN5cy9wcmN0bC5oPiBhbmQgPGxpbnV4L3B0cmFjZS5oPiB3aGVuIHVzaW5nIG11c2wgbGliYzoKLQotICB8IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBwcmN0bF9tbV9tYXAnCi0gIHwgIHN0cnVjdCBwcmN0bF9tbV9tYXAgewotCi1TZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kcmllc2lvL21ldGEtbG1wL2NvbW1pdC82ZDRhMTA2ZTE5MWI1ZDc5YzQxYjlhYzc4ZmQzMjEzMTZkMzAxM2MwCi1mb3IgYSBwdWJsaWMgZXhhbXBsZSBvZiBwZW9wbGUgd29ya2luZyBhcm91bmQgdGhpcyBpc3N1ZS4KLQotQWx0aG91Z2ggaXQncyBhIGJpdCBncm90dHksIGZpeCB0aGlzIGJyZWFrYWdlIGJ5IGR1cGxpY2F0aW5nIHRoZSBwcmN0bAotY29uc3RhbnQgZGVmaW5pdGlvbnMuIFNpbmNlIHRoZXNlIGFyZSBwYXJ0IG9mIHRoZSBrZXJuZWwgQUJJLCB0aGV5Ci1jYW5ub3QgYmUgY2hhbmdlZCBpbiBmdXR1cmUgYW5kIHNvIGl0J3Mgbm90IHRoZSBlbmQgb2YgdGhlIHdvcmxkIHRvIGhhdmUKLXRoZW0gb3Blbi1jb2RlZC4KLQotRml4ZXM6IDQzZDRkYTJjNDViMiAoImFybTY0L3N2ZTogcHRyYWNlIGFuZCBFTEYgY29yZWR1bXAgc3VwcG9ydCIpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9jb21taXQvMzUzNDFjYTA2MTRhYjEzZTFlZjM0YWQ0ZjI5YTM5ZTE1ZWYzMWZhOF0KLUNjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCi1BY2tlZC1ieTogRGF2ZSBNYXJ0aW4gPERhdmUuTWFydGluQGFybS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbmlzc2UgQXN0aWVyIDxhYXN0aWVyQGZyZWVib3guZnI+Ci1TaWduZWQtb2ZmLWJ5OiBXaWxsIERlYWNvbiA8d2lsbC5kZWFjb25AYXJtLmNvbT4KLS0tLQotIGFyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2UuaCB8IDggKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oCi1pbmRleCA5N2M1MzIwMzE1MGIuLmU5MzIyODQ5OTNkNCAxMDA2NDQKLS0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2UuaAotKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oCi1AQCAtNjUsOCArNjUsNiBAQAotIAotICNpZm5kZWYgX19BU1NFTUJMWV9fCi0gCi0tI2luY2x1ZGUgPGxpbnV4L3ByY3RsLmg+Ci0tCi0gLyoKLSAgKiBVc2VyIHN0cnVjdHVyZXMgZm9yIGdlbmVyYWwgcHVycG9zZSwgZmxvYXRpbmcgcG9pbnQgYW5kIGRlYnVnIHJlZ2lzdGVycy4KLSAgKi8KLUBAIC0xMTMsMTAgKzExMSwxMCBAQCBzdHJ1Y3QgdXNlcl9zdmVfaGVhZGVyIHsKLSAKLSAvKgotICAqIENvbW1vbiBTVkVfUFRfKiBmbGFnczoKLS0gKiBUaGVzZSBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHByY3RsIGludGVyZmFjZSBpbiA8bGludXgvcHRyYWNlLmg+Ci0rICogVGhlc2UgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBwcmN0bCBpbnRlcmZhY2UgaW4gPGxpbnV4L3ByY3RsLmg+Ci0gICovCi0tI2RlZmluZSBTVkVfUFRfVkxfSU5IRVJJVAkJKFBSX1NWRV9WTF9JTkhFUklUID4+IDE2KQotLSNkZWZpbmUgU1ZFX1BUX1ZMX09ORVhFQwkJKFBSX1NWRV9TRVRfVkxfT05FWEVDID4+IDE2KQotKyNkZWZpbmUgU1ZFX1BUX1ZMX0lOSEVSSVQJCSgoMSA8PCAxNykgLyogUFJfU1ZFX1ZMX0lOSEVSSVQgKi8gPj4gMTYpCi0rI2RlZmluZSBTVkVfUFRfVkxfT05FWEVDCQkoKDEgPDwgMTgpIC8qIFBSX1NWRV9TRVRfVkxfT05FWEVDICovID4+IDE2KQotIAotIAotIC8qCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjIuYmIKc2ltaWxhcml0eSBpbmRleCA3NSUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjIuYmIKaW5kZXggNDczNjg4ZC4uOWQxOGRmNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMi5iYgpAQCAtMTIsOCArMTIsNyBAQAogU1JDX1VSSV9hcHBlbmQgPSAiXAogICAgIGZpbGU6Ly8wMDAxLXNjcmlwdHMtVXNlLWZpeGVkLWlucHV0LWFuZC1vdXRwdXQtZmlsZXMtaW5zdGVhZC1vZi0ucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWFybTY0LXN2ZS11YXBpLWFzbS1wdHJhY2UuaC1zaG91bGQtbm90LWRlcGVuZC1vbi11YXAucGF0Y2ggXAogIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNzM4MWNlOGFhYzgwYTAxNDQ4ZTA2NWNlNzk1YzE5YzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDM3YjE0MWE2NDk5MTU5ZjVhNzI4MmQ1ZWI0YjJiZTA1NWY4ZTg2MmNjY2U0NGQ3NDY0ZTg3NTljMzFhMmU0MyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZGY5OTRkZTAwZDdiMTgzOTU4ODZkZDliMzBiOTI2MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NGFkNjZmNjcyZTFhODMxYjU3NGY1ZTcwNGU4YTA1ZjFlNjE4MGE4MjQ1ZDRiZGQ4MTEyMDhhNmNiMGFjMWU3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgppbmRleCAzOTAwNDg5Li5iNjhkOTQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgpAQCAtMTQxLDcgKzE0MSw3IEBACiAJICAgICMgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9vcGNvZGVzLmggcmVmZXJlbmNlcyBhcmNoL2FybQogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm0vaW5jbHVkZS9hc20vb3Bjb2Rlcy5oICRrZXJuZWxkaXIvYnVpbGQvCiAKLSAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL2dldHRpbWVvZmRheS5TICRrZXJuZWxkaXIvYnVpbGQvCisgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby8qZ2V0dGltZW9mZGF5LiogJGtlcm5lbGRpci9idWlsZC8KICAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TICRrZXJuZWxkaXIvYnVpbGQvCiAgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby9ub3RlLlMgJGtlcm5lbGRpci9idWlsZC8KICAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL2dlbl92ZHNvX29mZnNldHMuc2ggJGtlcm5lbGRpci9idWlsZC8KQEAgLTE3OSw2ICsxNzksOCBAQAogCiAJY3AgLWEgaW5jbHVkZSAka2VybmVsZGlyL2J1aWxkCiAKKwljcCAtYSAtLXBhcmVudHMgbGliL3Zkc28vKiAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CisKIAljcCAtYSAtLXBhcmVudHMgdG9vbHMvaW5jbHVkZS90b29scy9sZV9ieXRlc2hpZnQuaCAka2VybmVsZGlyL2J1aWxkLwogCWNwIC1hIC0tcGFyZW50cyB0b29scy9pbmNsdWRlL3Rvb2xzL2JlX2J5dGVzaGlmdC5oICRrZXJuZWxkaXIvYnVpbGQvCiAKQEAgLTI0MCw2ICsyNDIsMTUgQEAKICAgICAjIENvcHkgLmNvbmZpZyB0byBpbmNsdWRlL2NvbmZpZy9hdXRvLmNvbmYgc28gIm1ha2UgcHJlcGFyZSIgaXMgdW5uZWNlc3NhcnkuCiAgICAgY3AgJGtlcm5lbGRpci9idWlsZC8uY29uZmlnICRrZXJuZWxkaXIvYnVpbGQvaW5jbHVkZS9jb25maWcvYXV0by5jb25mCiAKKyAgICAjIG1ha2UgdGhlIHNjcmlwdHMgcHl0aG9uMyBzYWZlLiBXZSB3b24ndCBiZSBydW5uaW5nIHRoZXNlLCBhbmQgaWYgdGhleSBhcmUKKyAgICAjIGxlZnQgYXMgL3Vzci9iaW4vcHl0aG9uIHJvb3RmcyBhc3NlbWJseSB3aWxsIGZhaWwsIHNpbmNlIHdlIG9ubHkgaGF2ZSBweXRob24zCisgICAgIyBpbiB0aGUgUkRFUEVORFMgKGFuZCB0aGUgcHl0aG9uMyBwYWNrYWdlIGRvZXMgbm90IGluY2x1ZGUgL3Vzci9iaW4vcHl0aG9uKQorICAgIGZvciBzcyBpbiAkKGZpbmQgJGtlcm5lbGRpci9idWlsZC9zY3JpcHRzIC10eXBlIGYgLW5hbWUgJyonKTsgZG8KKwlzZWQgLWkgJ3MsL3Vzci9iaW4vcHl0aG9uMiwvdXNyL2Jpbi9lbnYgcHl0aG9uMywnICIkc3MiCisJc2VkIC1pICdzLC91c3IvYmluL2VudiBweXRob24yLC91c3IvYmluL2VudiBweXRob24zLCcgIiRzcyIKKwlzZWQgLWkgJ3MsL3Vzci9iaW4vcHl0aG9uLC91c3IvYmluL2VudiBweXRob24zLCcgIiRzcyIKKyAgICBkb25lCisKICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQogfQogCkBAIC0yNDksNyArMjYwLDcgQEAKIEZJTEVTXyR7UE59ID0gIiR7S0VSTkVMX0JVSUxEX1JPT1R9ICR7S0VSTkVMX1NSQ19QQVRIfSIKIEZJTEVTXyR7UE59LWRiZyArPSAiJHtLRVJORUxfQlVJTERfUk9PVH0qL2J1aWxkL3NjcmlwdHMvKi8uZGVidWcvKiIKIAotUkRFUEVORFNfJHtQTn0gPSAiYmMgcHl0aG9uIGZsZXggYmlzb24gJHtUQ0xJQkN9LXV0aWxzIgorUkRFUEVORFNfJHtQTn0gPSAiYmMgcHl0aG9uMyBmbGV4IGJpc29uICR7VENMSUJDfS11dGlscyIKICMgNC4xNSsgbmVlZHMgdGhlc2UgbmV4dCB0d28gUkRFUEVORFMKIFJERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsLWRldiB1dGlsLWxpbnV4IgogIyBhbmQgeDg2IG5lZWRzIGEgYml0IG1vcmUgZm9yIDQuMTUrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTkxMjc3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1weXRob24oKSB7Ci0gICAgYmIud2FybigiWW91IGFyZSB1c2luZyB0aGUgbGludXgtZHRiLmluYyB3aGljaCBpcyBkZXByZWNhdGVkLiBZb3UgY2FuIHNhZmVseSByZW1vdmUgaXQgYXMgdGhlIERldmljZSBUcmVlIHN1cHBvcnQgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIHdoZW4gS0VSTkVMX0RFVklDRVRSRUUgaXMgc2V0LiIpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgppbmRleCAyMjY4ZmFmNTEuLjE2M2YyODAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMzksNyArMzksNyBAQAogREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCiBERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11YXJtfHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQpIgorQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11YXJtfHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjR8cWVtdXJpc2N2NjQpIgogCiBLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjIuYmIKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYgppbmRleCAyMmYzYmYxLi5jZjUxNDJjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjIuYmIKQEAgLTEsNCArMSw0IEBACi1LQlJBTkNIID89ICJ2NS4wL3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKK0tCUkFOQ0ggPz0gInY1LjIvc3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgogCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwogCkBAIC0xMSwxMyArMTEsMTMgQEAKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiZTZjYjgxMmI1NTMyNjMwYjZmYzZkZmQ3Nzc4ZDU3YTQ5MDdkMzE4MCIKLVNSQ1JFVl9tZXRhID89ICI3ZjZlOTdjMzU3NzQ2MzgyZDQzMzllN2UwNDYzNjM3ZTcxNWFjZDRiIgorU1JDUkVWX21hY2hpbmUgPz0gImM2ZWIxNjllOTE0ZGVmMDBjMzdjYzI5MTc0ODZjNjM3ZDgwMGQ0MDQiCitTUkNSRVZfbWV0YSA/PSAiYTM2YzgyMTI4ZDljY2VjODc4ZDFjMGM0NTQyYjg3ZDZjZjVlOWE3YyIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by01LjA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by01LjI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNS4wLjE5IgorTElOVVhfVkVSU0lPTiA/PSAiNS4yLjEwIgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggNjYlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS4yLmJiCmluZGV4IDMzNjcyYzYuLmMyMTkzYzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIKQEAgLTEsMTIgKzEsMTIgQEAKLUtCUkFOQ0ggPz0gInY1LjAvc3RhbmRhcmQvdGlueS9iYXNlIgotS0JSQU5DSF9xZW11YXJtICA/PSAidjUuMC9zdGFuZGFyZC90aW55L2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC90aW55L2Jhc2UiCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NS4yL3N0YW5kYXJkL3RpbnkvYXJtLXZlcnNhdGlsZS05MjZlanMiCiAKIExJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCiBLQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKIAogcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKIAotTElOVVhfVkVSU0lPTiA/PSAiNS4wLjE5IgorTElOVVhfVkVSU0lPTiA/PSAiNS4yLjEwIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCiAKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgpAQCAtMTUsMTQgKzE1LDE0IEBACiBLTUVUQSA9ICJrZXJuZWwtbWV0YSIKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJiOTAwMTI4Nzk4NGIwMDY2ODE0Yzg3MzlmMzhkNjI5ZGU3MzczOWI3IgotU1JDUkVWX21hY2hpbmUgPz0gIjU1ZGQxNTMzNmI3MzAxYjY4NmEwYzE4M2Y1MzcyYjQ5YzEwMDNkMDMiCi1TUkNSRVZfbWV0YSA/PSAiN2Y2ZTk3YzM1Nzc0NjM4MmQ0MzM5ZTdlMDQ2MzYzN2U3MTVhY2Q0YiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjk0ZDAzMTU0MDY3MDQ5YjQxNzUyNmY0NjQyOTcyOWQ0YmExZTA5YjciCitTUkNSRVZfbWFjaGluZSA/PSAiOGQ4YmY1NmIyMzczYmZkYjFhOTcwMmI5NmEwZTkxZTY3MDZmNjJkNCIKK1NSQ1JFVl9tZXRhID89ICJhMzZjODIxMjhkOWNjZWM4NzhkMWMwYzQ1NDJiODdkNmNmNWU5YTdjIgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMDtkZXN0c3VmZml4PSR7S01FVEF9IgorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgogCiBDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg3ZTg4ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotS0JSQU5DSCA/PSAidjUuMC9zdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJ2NS4wL3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInY1LjAvc3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAidjUuMC9zdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInY1LjAvc3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXJpc2N2NjQgID89ICJ2NS4wL3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJ2NS4wL3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY1LjAvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjUuMC9zdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiZDFlZDk4MGFkOTg5MjUyZDQyMzg2YzhiYzYzYjJmNWYxMTk4NWVhNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiNTVkZDE1MzM2YjczMDFiNjg2YTBjMTgzZjUzNzJiNDljMTAwM2QwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICIxNTIwZTc4MTk1ZTY0ZjI3YmU0NmE0NmE4ZDY3MTFjODQ3MGZiMDgzIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiNTVkZDE1MzM2YjczMDFiNjg2YTBjMTgzZjUzNzJiNDljMTAwM2QwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVyaXNjdjY0ID89ICIwMDYzOGNkZDhmOTI4NjlhMGY4OWViZTMyODlmZGJkODU2YmE5NDU4IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNTVkZDE1MzM2YjczMDFiNjg2YTBjMTgzZjUzNzJiNDljMTAwM2QwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjU1ZGQxNTMzNmI3MzAxYjY4NmEwYzE4M2Y1MzcyYjQ5YzEwMDNkMDMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI5ZDQxMDViMzJjZjEyM2E4NjFiYzc1NDM3N2QyZjJlMTU2Mjc4YTdlIgotU1JDUkVWX21hY2hpbmUgPz0gIjU1ZGQxNTMzNmI3MzAxYjY4NmEwYzE4M2Y1MzcyYjQ5YzEwMDNkMDMiCi1TUkNSRVZfbWV0YSA/PSAiN2Y2ZTk3YzM1Nzc0NjM4MmQ0MzM5ZTdlMDQ2MzYzN2U3MTVhY2Q0YiIKLQotIyByZW1hcCBxZW11YXJtIHRvIHFlbXVhcm1hMTUgZm9yIHRoZSA1LjAga2VybmVsCi0jIEtNQUNISU5FX3FlbXVhcm0gPz0gInFlbXVhcm1hMTUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLUxJTlVYX1ZFUlNJT04gPz0gIjUuMC4xOSIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm12NXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NHxxZW11cmlzY3Y2NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE3NWYxNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmIKQEAgLTAsMCArMSw1NCBAQAorS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NS4yL3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInY1LjIvc3RhbmRhcmQvcWVtdWFybTY0IgorS0JSQU5DSF9xZW11bWlwcyA/PSAidjUuMi9zdGFuZGFyZC9tdGktbWFsdGEzMiIKK0tCUkFOQ0hfcWVtdXBwYyAgPz0gInY1LjIvc3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXJpc2N2NjQgID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYgID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjUuMi9zdGFuZGFyZC9tdGktbWFsdGE2NCIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiZDMyOWRjNzI1NmRmZWY2NmRlZGI2MDRjYWZlYTViNTY4NWM1N2Y5ZCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiOGQ4YmY1NmIyMzczYmZkYjFhOTcwMmI5NmEwZTkxZTY3MDZmNjJkNCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI2YTQ2YjgyNjE0MzMxMzFlYTk5ZTU3MjVkM2ZkNzU5NjkwMDQ2MTdjIgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiOGQ4YmY1NmIyMzczYmZkYjFhOTcwMmI5NmEwZTkxZTY3MDZmNjJkNCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVyaXNjdjY0ID89ICI4ZDhiZjU2YjIzNzNiZmRiMWE5NzAyYjk2YTBlOTFlNjcwNmY2MmQ0IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiOGQ4YmY1NmIyMzczYmZkYjFhOTcwMmI5NmEwZTkxZTY3MDZmNjJkNCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjhkOGJmNTZiMjM3M2JmZGIxYTk3MDJiOTZhMGU5MWU2NzA2ZjYyZDQiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICIwNmJkNTYzMDA5ZmZjNDgwYmVmYTBkMTE2ZmFlZDE4ZTYzNzg1NzM5IgorU1JDUkVWX21hY2hpbmUgPz0gIjhkOGJmNTZiMjM3M2JmZGIxYTk3MDJiOTZhMGU5MWU2NzA2ZjYyZDQiCitTUkNSRVZfbWV0YSA/PSAiYTM2YzgyMTI4ZDljY2VjODc4ZDFjMGM0NTQyYjg3ZDZjZjVlOWE3YyIKKworIyByZW1hcCBxZW11YXJtIHRvIHFlbXVhcm1hMTUgZm9yIHRoZSA1LjIga2VybmVsCisjIEtNQUNISU5FX3FlbXVhcm0gPz0gInFlbXVhcm1hMTUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKK0xJTlVYX1ZFUlNJT04gPz0gIjUuMi4xMCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm12NXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NHxxZW11cmlzY3Y2NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKaW5kZXggNGU2MDNmMS4uN2YwMGRmMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCkBAIC0xMyw3ICsxMyw3IEBACiAKIFBBQ0tBR0VDT05GSUcgPz89ICJzY3JpcHRpbmcgdHVpIGxpYnVud2luZCIKIFBBQ0tBR0VDT05GSUdbZHdhcmZdID0gIixOT19EV0FSRj0xIgotUEFDS0FHRUNPTkZJR1tzY3JpcHRpbmddID0gIixOT19MSUJQRVJMPTEgTk9fTElCUFlUSE9OPTEscGVybCBweXRob24iCitQQUNLQUdFQ09ORklHW3NjcmlwdGluZ10gPSAiLE5PX0xJQlBFUkw9MSBOT19MSUJQWVRIT049MSxwZXJsIHB5dGhvbjMiCiAjIGd1aSBzdXBwb3J0IHdhcyBhZGRlZCB3aXRoIGtlcm5lbCAzLjYuMzUKICMgc2luY2UgMy4xMCBsaWJuZXd0IHdhcyByZXBsYWNlZCBieSBzbGFuZwogIyB0byBjb3ZlciBhIHdpZGUgcmFuZ2Ugb2Yga2VybmVsIHdlIGFkZCBib3RoIGRlcGVuZGVuY2llcwpAQCAtNDQsOCArNDQsOCBAQAogaW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtYXJjaCBtYW5wYWdlcwogCiAjIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIHRvb2xzL3BlcmYgUHl0aG9uIGJpbmRpbmdzCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICdweXRob25uYXRpdmUnLCAnJywgZCl9Ci1pbmhlcml0IHB5dGhvbi1kaXIKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9Citpbmhlcml0IHB5dGhvbjMtZGlyCiBleHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKIAogI2tlcm5lbCAzLjErIHN1cHBvcnRzIFdFUlJPUiB0byBkaXNhYmxlIHdhcm5pbmdzIGFzIGVycm9ycwpAQCAtOTQsNiArOTQsNyBAQAogICAgICdzaGFyZWRpcj0ke0Bvcy5wYXRoLnJlbHBhdGgoZGF0YWRpciwgcHJlZml4KX0nIFwKICAgICAnbWFuZGlyPSR7QG9zLnBhdGgucmVscGF0aChtYW5kaXIsIHByZWZpeCl9JyBcCiAgICAgJ2luZm9kaXI9JHtAb3MucGF0aC5yZWxwYXRoKGluZm9kaXIsIHByZWZpeCl9JyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ1BZVEhPTj1weXRob24zIFBZVEhPTl9DT05GSUc9cHl0aG9uMy1jb25maWcnLCAnJywgZCl9IFwKICIKIAogIyBEdXJpbmcgZG9fY29uZmlndXJlLCB3ZSBtaWdodCBydW4gYSAnbWFrZSBjbGVhbicuIFRoYXQgb2Z0ZW4gYnJlYWtzCkBAIC0xMzIsNyArMTMzLDcgQEAKIAlvZV9ydW5tYWtlIGluc3RhbGwKIAkjIHdlIGFyZSBjaGVja2luZyBmb3IgdGhpcyBtYWtlIHRhcmdldCB0byBiZSBjb21wYXRpYmxlIHdpdGggb2xkZXIgcGVyZiB2ZXJzaW9ucwogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICd0cnVlJywgJ2ZhbHNlJywgZCl9ICYmIGdyZXAgLXEgaW5zdGFsbC1weXRob25fZXh0ICR7U30vdG9vbHMvcGVyZi9NYWtlZmlsZSo7IHRoZW4KLQkJb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbC1weXRob25fZXh0CisJICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwtcHl0aG9uX2V4dAogCWZpCiB9CiAKQEAgLTIzMiwxMyArMjMzLDE5IEBACiAgICAgZmkKIAogICAgICMgdXNlIC91c3IvYmluL2VudiBpbnN0ZWFkIG9mIHZlcnNpb24gc3BlY2lmaWMgcHl0aG9uCi0gICAgZm9yIHMgaW4gYGZpbmQgJHtTfS90b29scy9wZXJmL3NjcmlwdHMvcHl0aG9uLyAtbmFtZSAnKi5weSdgOyBkbwotICAgICAgICBzZWQgLWkgJ3MsL3Vzci9iaW4vcHl0aG9uMiwvdXNyL2Jpbi9lbnYgcHl0aG9uLCcgIiR7c30iCisgICAgZm9yIHMgaW4gYGZpbmQgJHtTfS90b29scy9wZXJmLyAtbmFtZSAnKi5weSdgOyBkbworICAgICAgICBzZWQgLWkgJ3MsL3Vzci9iaW4vcHl0aG9uLC91c3IvYmluL2VudiBweXRob24zLCcgIiR7c30iCisgICAgICAgIHNlZCAtaSAncywvdXNyL2Jpbi9weXRob24yLC91c3IvYmluL2VudiBweXRob24zLCcgIiR7c30iCisgICAgICAgIHNlZCAtaSAncywvdXNyL2Jpbi9lbnYgcHl0aG9uMiwvdXNyL2Jpbi9lbnYgcHl0aG9uMywnICIke3N9IgogICAgIGRvbmUKIAogICAgICMgdW5pc3RkLmggY2FuIGJlIG91dCBvZiBzeW5jIGJldHdlZW4gbGliYy1oZWFkZXJzIGFuZCB0aGUgY2FwdHVyZWQgdmVyc2lvbiBpbiB0aGUgcGVyZiBzb3VyY2UKICAgICAjIHNvIHdlIGNvcHkgaXQgZnJvbSB0aGUgc3lzcm9vdCB1bmlzdGQuaCB0byB0aGUgcGVyZiB1bmlzdGQuaAogICAgIGluc3RhbGwgLUQgLW0wNjQ0ICR7U1RBR0lOR19JTkNESVJ9L2FzbS1nZW5lcmljL3VuaXN0ZC5oICR7U30vdG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oCisgICAgaW5zdGFsbCAtRCAtbTA2NDQgJHtTVEFHSU5HX0lOQ0RJUn0vYXNtLWdlbmVyaWMvdW5pc3RkLmggJHtTfS9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgKKworICAgICMgYml0cy5oIGNhbiBoYXZlIHRoZSBzYW1lIGlzc3VlbiBhcyB1bmlzdGQuaCwgc28gd2UgbWFrZSB0aGUgdG9vbHMgdmFyaWFudCB0YWtlIHByZWNlZGVuY2UKKyAgICBpbnN0YWxsIC1EIC1tMDY0NCAke1N9L3Rvb2xzL2luY2x1ZGUvbGludXgvYml0cy5oICR7U30vaW5jbHVkZS9saW51eC9iaXRzLmgKIH0KIAogcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKQEAgLTI1Miw5ICsyNTksOSBAQAogCiBSREVQRU5EU18ke1BOfSArPSAiZWxmdXRpbHMgYmFzaCIKIFJERVBFTkRTXyR7UE59LWFyY2hpdmUgPSsgImJhc2giCi1SREVQRU5EU18ke1BOfS1weXRob24gPSsgImJhc2ggcHl0aG9uIHB5dGhvbi1tb2R1bGVzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2F1ZGl0JywgJ2F1ZGl0LXB5dGhvbicsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfS1weXRob24gPSsgImJhc2ggcHl0aG9uMyBweXRob24zLW1vZHVsZXMgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXVkaXQnLCAnYXVkaXQtcHl0aG9uMycsICcnLCBkKX0iCiBSREVQRU5EU18ke1BOfS1wZXJsID0rICJiYXNoIHBlcmwgcGVybC1tb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tdGVzdHMgPSsgInB5dGhvbiIKK1JERVBFTkRTXyR7UE59LXRlc3RzID0rICJweXRob24zIgogCiBSU1VHR0VTVFNfU0NSSVBUSU5HID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICcke1BOfS1wZXJsICR7UE59LXB5dGhvbicsICcnLGQpfSIKIFJTVUdHRVNUU18ke1BOfSArPSAiJHtQTn0tYXJjaGl2ZSAke1BOfS10ZXN0cyAke1JTVUdHRVNUU19TQ1JJUFRJTkd9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlidmlydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnZpcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZjJmYmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlidmlydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNWViMTBkOTBhZjkxNzhlZGI2NWU2MDkxYWU5MzlkMWI1YjE5YmI3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyMyBTZXAgMjAxNCAwNDo0NzoxMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBzeXN0ZW10YXA6IGFsbG93IHRvIGRpc2FibGUgbGlidmlydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAgIDEzICsrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhNjMxYWU3Li5jYjQ4ODViIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01MjUsMTAgKzUyNSwxNSBAQCBkbmwgQ2hlY2sgZm9yIHRoZSBsaWJ2aXJ0IGFuZCBsaWJ4bWwyIGRldmVsIHBhY2thZ2VzCi0gCi0gZG5sIFdlIHJlcXVpcmUgbGlidmlydCA+PSAxLjAuMiBiZWNhdXNlIHN0YXB2aXJ0IHJlbGllcyBvbiB0aGUKLSBkbmwgdmlyRG9tYWluT3BlbkNoYW5uZWwgZnVuY3Rpb24sIHdoaWNoIHdhcyBpbXBsZW1lbnRlZCBpbiAxLjAuMi4KLS1QS0dfQ0hFQ0tfTU9EVUxFUyhbbGlidmlydF0sIFtsaWJ2aXJ0ID49IDEuMC4yXSwgWwotLSAgIGhhdmVfbGlidmlydD15ZXMKLS0gICBBQ19ERUZJTkUoW0hBVkVfTElCVklSVF0sWzFdLFtEZWZpbmUgdG8gMSBpZiBsaWJ2aXJ0IGRldmVsb3BtZW50IGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkXSkKLS0gICBdLCBbaGF2ZV9saWJ2aXJ0PW5vXSkKLStBQ19BUkdfRU5BQkxFKFtsaWJ2aXJ0XSwKLSsgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidmlydF0sIFtEbyBub3QgdXNlIGxpYnZpcnQgZXZlbiBpZiBwcmVzZW50XSkpCi0rCi0raWYgdGVzdCAiJGVuYWJsZV9saWJ2aXJ0IiAhPSBubzsgdGhlbgotKyAgUEtHX0NIRUNLX01PRFVMRVMoW2xpYnZpcnRdLCBbbGlidmlydCA+PSAxLjAuMl0sIFsKLSsgICAgIGhhdmVfbGlidmlydD15ZXMKLSsgICAgIEFDX0RFRklORShbSEFWRV9MSUJWSVJUXSxbMV0sW0RlZmluZSB0byAxIGlmIGxpYnZpcnQgZGV2ZWxvcG1lbnQgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWRdKQotKyAgICAgXSwgW2hhdmVfbGlidmlydD1ub10pCi0rZmkKLSBBTV9DT05ESVRJT05BTChbSEFWRV9MSUJWSVJUXSwgW3Rlc3QgIiR7aGF2ZV9saWJ2aXJ0fSIgPSAieWVzIl0pCi0gUEtHX0NIRUNLX01PRFVMRVMoW2xpYnhtbDJdLCBbbGlieG1sLTIuMF0sIFsKLSAgICBoYXZlX2xpYnhtbDI9eWVzCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvbW9uaXRvci1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMxM2E1YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gOTNmYzQ3NDRmZWRmNmZjNTkzZWU2NTY5NjhkYTk3ZjdiMTg2MmFkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDQgT2N0IDIwMTYgMTY6Mzc6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzZdIHN5c3RlbXRhcDogcmF0aW9uYWxpc2UgZGVwZW5kZW5jaWVzCi0KLUFkZCBhbiBvcHRpb24gdG8gZXhwbGljaXRseSBkaXNhYmxlIHRoZSBtb25pdG9yIChhbmQgdGhlcmVmb3JlIHRoZSBkZXBlbmRlbmN5IG9uCi1qc29uLWMgYW5kIG5jdXJzZXMpLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYwotQEAgLTc2NiwxMyArNzY2LDE2IEBAIGRubCBXZSB3YW50IGVpdGhlciAob3IgYm90aCkgcHl0aG9uIHByb2IKLSBBTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05fUFJPQkVTXSwKLSAgIFt0ZXN0ICJ4JGhhdmVfcHl0aG9uMl9zdXBwb3J0IiA9ICJ4eWVzIiAtbyAieCRoYXZlX3B5dGhvbjNfc3VwcG9ydCIgPSAieHllcyJdKQotIAotK0FDX0FSR19FTkFCTEUoW21vbml0b3JdLCBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLW1vbml0b3JdLFtEaXNhYmxlIG1vbml0b3JdKSkKLStpZiB0ZXN0ICIkZW5hYmxlX21vbml0b3IiICE9ICJubyI7IHRoZW4KLSBkbmwgQ2hlY2sgZm9yIHByZXNlbmNlIG9mIGpzb24tYyBhbmQgbmN1cnNlcyBmb3IgdXNlIGluIG1vbml0b3IgbW9kZQotIFBLR19DSEVDS19NT0RVTEVTKFtqc29uY10sIFtqc29uLWMgPj0gMC4xMV0sIFtoYXZlX2pzb25jPXllc10sIFtoYXZlX2pzb25jPW5vXSkKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhbbmN1cnNlc10sIFtuY3Vyc2VzXSwgW2hhdmVfbmN1cnNlcz15ZXNdLCBbaGF2ZV9uY3Vyc2VzPW5vXSkKLS1BTV9DT05ESVRJT05BTChbSEFWRV9NT05JVE9SX0xJQlNdLCBbdGVzdCAiJHtoYXZlX2pzb25jfSIgPT0gInllcyIgLWEgIiR7aGF2ZV9uY3Vyc2VzfSIgPT0gInllcyJdKQotIGlmIHRlc3QgIiR7aGF2ZV9qc29uY30iID09ICJ5ZXMiIC1hICIke2hhdmVfbmN1cnNlc30iID09IHllczsgdGhlbgotICAgQUNfREVGSU5FKFtIQVZFX01PTklUT1JfTElCU10sWzFdLFtEZWZpbmUgdG8gMSBpZiBqc29uLWMgYW5kIG5jdXJzZXMgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWRdKQotIGZpCi0rZmkKLStBTV9DT05ESVRJT05BTChbSEFWRV9NT05JVE9SX0xJQlNdLCBbdGVzdCAiJHtoYXZlX2pzb25jfSIgPT0gInllcyIgLWEgIiR7aGF2ZV9uY3Vyc2VzfSIgPT0gInllcyIgLWEgIiRlbmFibGVfbW9uaXRvciIgIT0gIm5vIl0pCi0gCi0gQUNfQ0FDSEVfQ0hFQ0soW2ZvciBhc3NlbWJsZXIgLnNlY3Rpb24gIj8iIGZsYWdzIHN1cHBvcnRdLCBzdGFwX2N2X3NlY3Rpb25xLCBbCi0gb2xkX0NGTEFHUz0iJENGTEFHUyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL25vLW1zZ2ZtdC1jaGVjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL25vLW1zZ2ZtdC1jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4NjBiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9uby1tc2dmbXQtY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDQzZjFiMDQ0NDliYjFjZjdlMDA5MjI2M2YxYzJhMjVmM2ZjYTA4ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCA4IE5vdiAyMDE2IDIzOjA3OjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNS82XSBzeXN0ZW10YXA6IHJlbW92ZSBleHBsaWNpdCBtc2dmbXQgY2hlY2sKLQotVGhlcmUgaXMgbm8gbmVlZCB0byBleHBsaWNpdGx5IGNoZWNrIHRoYXQgbXNnZm10IHdhcyBmb3VuZCBhcyB0aGUgZ2V0dGV4dCBtYWNyb3MKLWhhbmRsZSB0aGlzIGZvciB1cyBpZiBOTFMgaXMgZW5hYmxlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi0tLS0KLSBjb25maWd1cmUuYWMgfCA0IC0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMmVhOWIzY2JmLi45NTQxN2Y1OWMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM2LDEwICszNiw2IEBAIEFDX0NIRUNLX0ZVTkNTKG9wZW5hdCkKLSBBTV9HTlVfR0VUVEVYVChleHRlcm5hbCkKLSBBTV9HTlVfR0VUVEVYVF9WRVJTSU9OKFswLjE5LjRdKQotIAotLWlmIHRlc3QgIngkR01TR0ZNVCIgPSAieDoiOyB0aGVuCi0tICAgQUNfTVNHX0VSUk9SKFttaXNzaW5nIGdudSAvdXNyL2Jpbi9tc2dmbXRdKQotLWZpCi0tCi0gIyBXZSB3YW50IHRoZSAnUFlUSE9OJyB2YXJpYmxlIHRvIGJlIHB5dGhvbiB2ZXJzaW9uIDIuIFdlIGFsc28gd2FudAotICMgb3VyIGN1c3RvbSAnUFlUSE9OMycgdmFyaWJsZSB0byBiZSBweXRob24gdmVyc2lvbiAzLgotICMKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL3gzMl9hYmlfdGltZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL3gzMl9hYmlfdGltZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhhN2VhZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC94MzJfYWJpX3RpbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1GaXggdGltZV90IHByaW50IGJlY2F1c2UgaW4geDMyIEFCSSBpcyBsb25nIGxvbmcgaW50IGluc3RlYWQgb2YgbG9uZyBpbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NhY2hlLmN4eCBiL2NhY2hlLmN4eAotaW5kZXggMzU0NmIzMC4uMTljNzdjYSAxMDA2NDQKLS0tLSBhL2NhY2hlLmN4eAotKysrIGIvY2FjaGUuY3h4Ci1AQCAtMjk0LDcgKzI5NCwxMSBAQCBjbGVhbl9jYWNoZShzeXN0ZW10YXBfc2Vzc2lvbiYgcykKLSAgICAgICAgIHsKLSAgICAgICAgICAgLy9pbnRlcnZhbCBub3QgcGFzc2VkLCBkb24ndCBjb250aW51ZQotICAgICAgICAgICBpZiAocy52ZXJib3NlID4gMSkKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkIChfX0lMUDMyX18pCi0rICAgICAgICAgICAgY2xvZyA8PCBfRigiQ2FjaGUgY2xlYW5pbmcgc2tpcHBlZCwgaW50ZXJ2YWwgbm90IHJlYWNoZWQgJWxsZCBzIC8gJWx1IHMuIiwKLSsjZWxzZQotICAgICAgICAgICAgIGNsb2cgPDwgX0YoIkNhY2hlIGNsZWFuaW5nIHNraXBwZWQsIGludGVydmFsIG5vdCByZWFjaGVkICVsdSBzIC8gJWx1IHMuIiwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50X3RpbWUudHZfc2VjLXNiLnN0X210aW1lKSwgY2FjaGVfY2xlYW5faW50ZXJ2YWwpICA8PCBlbmRsOwotICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci1AQCAtMzAyLDcgKzMwNiwxMSBAQCBjbGVhbl9jYWNoZShzeXN0ZW10YXBfc2Vzc2lvbiYgcykKLSAgICAgICAgIHsKLSAgICAgICAgICAgLy9pbnRlcnZhbCByZWFjaGVkLCBjb250aW51ZQotICAgICAgICAgICBpZiAocy52ZXJib3NlID4gMSkKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkIChfX0lMUDMyX18pCi0rICAgICAgICAgICAgY2xvZyA8PCBfRigiQ2xlYW5pbmcgY2FjaGUsIGludGVydmFsIHJlYWNoZWQgJWxsZCBzID4gJWx1IHMuIiwKLSsjZWxzZQotICAgICAgICAgICAgIGNsb2cgPDwgX0YoIkNsZWFuaW5nIGNhY2hlLCBpbnRlcnZhbCByZWFjaGVkICVsdSBzID4gJWx1IHMuIiwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50X3RpbWUudHZfc2VjLXNiLnN0X210aW1lKSwgY2FjaGVfY2xlYW5faW50ZXJ2YWwpICA8PCBlbmRsOwotICAgICAgICAgfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKaW5kZXggYzUzNDhiMy4uYWJiMmIzNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCkBAIC0xLDEzICsxLDkgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLVNSQ1JFViA9ICI5ODRkNmQxNjk2ZWQwNjYyNmIwN2NiNjVhYjU1ZDZhZTBlY2UxMTMxIgotUFYgPSAiNC4xIgorU1JDUkVWID0gIjU3YzlhY2E5ZjFmZjMyYTZhZGQxMGUwMmVjZDMzYjczMTRmYWQ0OTkiCitQViA9ICI0LjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L3N5c3RlbXRhcC5naXQgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlidmlydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly94MzJfYWJpX3RpbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW9uaXRvci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm8tbXNnZm10LWNoZWNrLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWxldC1jb25maWd1cmUtd3JpdGUtYS1weXRob24tbG9jYXRpb24taW50by10aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtcHl0aG9uLW1vZHVsZXMtdG8tY29ycmVjdC1saWJyYXJ5LWRpci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhYy9DVkUtMjAxNy02ODg4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWMvQ1ZFLTIwMTctNjg4OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAxNzkxNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhYy9DVkUtMjAxNy02ODg4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSA0M2VjYjY0MzEwNzdmZjU0ZTlkZjI3ZjcxNzM3ZTZlOTZkNmMwMzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjEgQXVnIDIwMTggMTQ6NDY6NDMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRnJvbSA1ZjQ3YjYzZTljOTcxZTYzOTE1OTBjYWYwMGEwZjJhNWVkNjEyZTY3IE1vbiBTZXAgMTcKLSAwMDowMDowMCAyMDAxIEZyb206IEVyaWsgZGUgQ2FzdHJvIExvcG8gPGVyaWtkQG1lZ2EtbmVyZC5jb20+IERhdGU6IFNhdCwgOAotIEFwciAyMDE3IDE4OjM0OjQ5ICsxMDAwIFN1YmplY3Q6IFtQQVRDSF0gc3RyZWFtX2RlY29kZXIuYzogRml4IGEgbWVtb3J5IGxlYWsKLQotTGVhayByZXBvcnRlZCBieSBTZWN1bmlhIFJlc2VhcmNoLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPWZsYWMuZ2l0O2E9Y29tbWl0OwotICAgICAgICAgICAgICAgICBoPTRmNDdiNjNlOWM5NzFlNjM5MTU5MGNhZjAwYTBmMmE1ZWQ2MTJlNjddCi0KLVVwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDEuMy4yCi1DVkU6IENWRS0yMDE3LTY4ODgKLQotU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9saWJGTEFDL3N0cmVhbV9kZWNvZGVyLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saWJGTEFDL3N0cmVhbV9kZWNvZGVyLmMgYi9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCi1pbmRleCBkMzY0YjBjLi5lYmY5M2RhIDEwMDY0NAotLS0tIGEvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYwotKysrIGIvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYwotQEAgLTE3NTksNiArMTc1OSw5IEBAIEZMQUNfX2Jvb2wgcmVhZF9tZXRhZGF0YV92b3JiaXNjb21tZW50XyhGTEFDX19TdHJlYW1EZWNvZGVyICpkZWNvZGVyLCBGTEFDX19TdHJlCi0gCQkJCQl9Ci0gCQkJCQltZW1zZXQgKG9iai0+Y29tbWVudHNbaV0uZW50cnksIDAsIG9iai0+Y29tbWVudHNbaV0ubGVuZ3RoKSA7Ci0gCQkJCQlpZiAoIUZMQUNfX2JpdHJlYWRlcl9yZWFkX2J5dGVfYmxvY2tfYWxpZ25lZF9ub19jcmMoZGVjb2Rlci0+cHJpdmF0ZV8tPmlucHV0LCBvYmotPmNvbW1lbnRzW2ldLmVudHJ5LCBvYmotPmNvbW1lbnRzW2ldLmxlbmd0aCkpIHsKLSsJCQkJCQkvKiBDdXJyZW50IGktdGggZW50cnkgaXMgYmFkLCBzbyB3ZSBkZWxldGUgaXQuICovXAotKwkJCQkJCWZyZWUgKG9iai0+Y29tbWVudHNbaV0uZW50cnkpIDsKLSsJCQkJCQlvYmotPmNvbW1lbnRzW2ldLmVudHJ5ID0gTlVMTCA7CQkJCQkJCi0gCQkJCQkJb2JqLT5udW1fY29tbWVudHMgPSBpOwotIAkJCQkJCWdvdG8gc2tpcDsKLSAJCQkJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjMuYmIKaW5kZXggZTg1OTlmNi4uZmVhMmJlMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjMuYmIKQEAgLTE1LDExICsxNSwxMCBAQAogREVQRU5EUyA9ICJsaWJvZ2ciCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9mbGFjLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy02ODg4LnBhdGNoICIKKyIKIAotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDU0ZjFiZmEzZjkzY2M3MDgwOThkNzg5MGQwNDk5YmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTFjZmMzZWQ2MWRjNDBmNDdmMDUwYTEwOWIwODYxMDY2N2Q3MzQ3N2FmNmVmMzZkY2FkMzFjMzFhNGE4ZDUzZiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNjcwM2VkMjg1OGMxZmM5ZmZjMDUxMzZkMTNkYWE2OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTNlODJiZDcxNmM5ZGU2ZGIyZjk4YmNhZGJjNGMyNGM3ZTJlZmU4Yzc1OTM5YTFhODRlMjg1MzljNGUxNzQ4IgogCiBDVkVfUFJPRFVDVCA9ICJsaWJmbGFjIGZsYWMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuNC5iYgppbmRleCA4ZDg4ZjFmLi44Y2EwMDEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy40LmJiCkBAIC0xMSw3ICsxMSw3IEBACiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9vZ2cvJHtCUH0udGFyLnh6IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiODdlZDc0MjA0N2YwNjUwNDZlYjZjMzY3NDVkODcxYjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGYzZmM2MTc4YTUzM2QzOTIwNjRmMTQ3NzZiMjNjMzk3ZWQ0YjlmNDhmNWRlMjk3YWJhNzNiNjQzZjk1NWMwOCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYWRlZjI0YWFkNmUzZTgzNzliYTBkMTQ5NzFmZDY0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMTYzYmMxMmJjMzAwYzQwMWI2YWEzNTkwN2FjNjgyNjcxZWEzNzZmMTNhZTA5NjlhMjIwZjdkZGY3MTg5M2ZlIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYgppbmRleCBiNjczY2Q3Li41YWEwYWExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCkBAIC0xNCw2ICsxNCwxMCBAQAogICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgICBmaWxlOi8vcnRfYm1hcmsucHkgXAogICAgICAgICAgICAiCisKKyMgcnQtdGVzdHMgbmVlZHMgUEkgbXV0ZXggc3VwcG9ydCBpbiBsaWJjCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCisKICMgRG8gbm90IGluc3RhbGwgaHdsYXRkZXRlY3QKIEVYVFJBX09FTUFLRSArPSAiUFlMSUI9JyciCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by5iYgppbmRleCBiODk3OTUwLi42NzMxMDZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLmJiCkBAIC0xMCwzICsxMCw2IEBACiAKIFRPT0xDSEFJTl9IT1NUX1RBU0tfYXBwZW5kID0gIiBuYXRpdmVzZGstaW50bHRvb2wgbmF0aXZlc2RrLWdsaWItMi4wIgogVE9PTENIQUlOX0hPU1RfVEFTS19yZW1vdmVfdGFzay1wb3B1bGF0ZS1zZGstZXh0ID0gIiBuYXRpdmVzZGstaW50bHRvb2wgbmF0aXZlc2RrLWdsaWItMi4wIgorCitRQl9NRU0gPSAnJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJvcGVuZ2wiLCAiLW0gNTEyIiwgIi1tIDI1NiIsIGQpfScKK1FCX01FTV9xZW11bWlwcyA9ICItbSAyNTYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtVHdlYWstZ3RrZG9jLXNldHRpbmdzLXNvLXRoYXQtZ3RrZG9jLWdlbmVyYXRpb24td29yay5wYXRjaAppbmRleCA2NjRjZWE5Li5lN2M2NjhjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQzNzk2YWQxYTE5MjMzZWU1ZDM0OTJhNTU2MGQ3ZWRlODgyZjg5Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRiNWUwMjIxMmEzMWI4MmZjOWIzYmVjYWQ5MDU0MjI3NDgxNmZjMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTEgQXVnIDIwMTYgMTc6MTM6NTEgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gVHdlYWsgZ3RrZG9jIHNldHRpbmdzIHNvIHRoYXQgZ3RrZG9jIGdlbmVyYXRpb24gd29ya3MgdW5kZXIKQEAgLTE3LDIzICsxNywyMyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0d0a0RvYy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9HdGtEb2MuY21ha2UKLWluZGV4IDJlZTA1NTUwLi42Y2I2MzEzZCAxMDA2NDQKK2luZGV4IGIwZmIzMWNhLi42Y2I2MzEzZCAxMDA2NDQKIC0tLSBhL1NvdXJjZS9jbWFrZS9HdGtEb2MuY21ha2UKICsrKyBiL1NvdXJjZS9jbWFrZS9HdGtEb2MuY21ha2UKIEBAIC00LDcgKzQsNyBAQCBtYWNybyhBRERfR1RLRE9DX0dFTkVSQVRPUiBfc3RhbXBfbmFtZSBfZXh0cmFfYXJncykKICAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAgICAgT1VUUFVUICIke0NNQUtFX0JJTkFSWV9ESVJ9LyR7X3N0YW1wX25hbWV9IgogICAgICAgICAgREVQRU5EUyAke0RvY3VtZW50YXRpb25EZXBlbmRlbmNpZXN9Ci0tICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZW52ICJDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IiAiQ0ZMQUdTPSR7Q01BS0VfQ19GTEFHU30gLVduby11bnVzZWQtcGFyYW1ldGVyIiAke0NNQUtFX1NPVVJDRV9ESVJ9L1Rvb2xzL2d0a2RvYy9nZW5lcmF0ZS1ndGtkb2MgJHtfZXh0cmFfYXJnc30KKy0gICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlbnYgIkNDPSR7Q01BS0VfQ19DT01QSUxFUn0iICJDRkxBR1M9JHtDTUFLRV9DX0ZMQUdTfSAtV25vLXVudXNlZC1wYXJhbWV0ZXIiICJMREZMQUdTPSR7Q01BS0VfRVhFX0xJTktFUl9GTEFHU30iICR7Q01BS0VfU09VUkNFX0RJUn0vVG9vbHMvZ3RrZG9jL2dlbmVyYXRlLWd0a2RvYyAke19leHRyYV9hcmdzfQogKyAgICAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiAiQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSIgIkNGTEFHUz0ke0NNQUtFX0NfRkxBR1N9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciIgIkxEPSR7Q01BS0VfQ19DT01QSUxFUn0iICJMREZMQUdTPSR7Q01BS0VfQ19MSU5LX0ZMQUdTfSIgIlJVTj0ke0NNQUtFX0JJTkFSWV9ESVJ9L2d0a2RvYy1xZW11d3JhcHBlciIgJHtDTUFLRV9TT1VSQ0VfRElSfS9Ub29scy9ndGtkb2MvZ2VuZXJhdGUtZ3RrZG9jICR7X2V4dHJhX2FyZ3N9CiAgICAgICAgICBDT01NQU5EIHRvdWNoICR7X3N0YW1wX25hbWV9CiAgICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAiJHtDTUFLRV9CSU5BUllfRElSfSIKICAgICAgICAgIFZFUkJBVElNCiBkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrZG9jL2d0a2RvYy5weSBiL1Rvb2xzL2d0a2RvYy9ndGtkb2MucHkKLWluZGV4IDgxZWU4Y2RjLi4zZTExYzJmMCAxMDA2NDQKK2luZGV4IDA1NGNhZmExLi40MTZkZTdkMSAxMDA2NDQKIC0tLSBhL1Rvb2xzL2d0a2RvYy9ndGtkb2MucHkKICsrKyBiL1Rvb2xzL2d0a2RvYy9ndGtkb2MucHkKLUBAIC0zMTcsOSArMzE3LDkgQEAgY2xhc3MgR1RLRG9jKG9iamVjdCk6CitAQCAtMzIwLDkgKzMyMCw5IEBAIGNsYXNzIEdUS0RvYyhvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9sZGZsYWdzID0gJyVzICVzJyAlIChhZGRpdGlvbmFsX2xkZmxhZ3MsIGFyZykKICAgICAgICAgICAgICBsZGZsYWdzID0gJyAiLUwlcyIgJXMgJyAlIChzZWxmLmxpYnJhcnlfcGF0aCwgYWRkaXRpb25hbF9sZGZsYWdzKSArIGxkZmxhZ3MKICAgICAgICAgICAgICBjdXJyZW50X2xkX2xpYnJhcnlfcGF0aCA9IGVudi5nZXQoJ0xEX0xJQlJBUllfUEFUSCcpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1VbnJldmlld2VkLWZpeC1idWlsZC1mYWlsdXJlLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtVW5yZXZpZXdlZC1maXgtYnVpbGQtZmFpbHVyZS1odHRwcy1idWdzLndlYmtpdC5vcmctcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU1MGEwZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1VbnJldmlld2VkLWZpeC1idWlsZC1mYWlsdXJlLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA0YmMyNDE1MzkyNDZmN2ExN2QwNzM1NzI1N2FiNDdjYjk2YmM0YjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogInlzdXp1a2lAYXBwbGUuY29tIiA8eXN1enVraUBhcHBsZS5jb20+Ci1EYXRlOiBUaHUsIDE4IEFwciAyMDE5IDA3OjMwOjE4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmYWlsdXJlCi0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTkzOAotCi1JbmNsdWRpbmcgPGFycmF5Pi4KLQotKiBibWFsbG9jL0F2YWlsYWJsZU1lbW9yeS5jcHA6Ci0KLWdpdC1zdm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0AyNDQ0MjIgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9XZWJLaXQvd2Via2l0L2NvbW1pdC84NGMxMTFkYzBkODNiNWFjZjYwNzA2ZWY0OWJjMmY1ZTkxMTEyNDcxXQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQXZhaWxhYmxlTWVtb3J5LmNwcCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BdmFpbGFibGVNZW1vcnkuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BdmFpbGFibGVNZW1vcnkuY3BwCi1pbmRleCA1OTU4ODlmZS4uYjcyMDAwZDUgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0F2YWlsYWJsZU1lbW9yeS5jcHAKLSsrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQXZhaWxhYmxlTWVtb3J5LmNwcAotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgotICNpbmNsdWRlICJTY2F2ZW5nZXIuaCIKLSAjaW5jbHVkZSAiU2l6ZXMuaCIKLSsjaW5jbHVkZSA8YXJyYXk+Ci0gI2luY2x1ZGUgPG11dGV4PgotICNpZiBCT1MoREFSV0lOKQotICNpZiBCUExBVEZPUk0oSU9TX0ZBTUlMWSkKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI0LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNC40LmJiCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI0LjMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI0LjQuYmIKaW5kZXggMGU1ZWU1Yi4uOGM2OTVjZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMjQuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNC40LmJiCkBAIC0yMywxMSArMjMsMTAgQEAKICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfYXJyYXkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbmFycm93aW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3N0cmVhbWVyLWFkZC1hLW1pc3NpbmctZm9ybWF0LXN0cmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVucmV2aWV3ZWQtZml4LWJ1aWxkLWZhaWx1cmUtaHR0cHMtYnVncy53ZWJraXQub3JnLXMucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMmE1YmJkMDlhMjE3ZWJhMDk2YTJkMTU2MjE0M2UzNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDBkNzQ2ZDdlODJjMzU3MjIyZmViNWIzZjQ0YzRiMjAxZTgxZGY3ZDgxZGRjYTVjYTJiZjNhZTBhY2Y2YzUxIgorU1JDX1VSSVttZDVzdW1dID0gImMyMTQ5NjNkOGMwZTdkODM0NjBkYTA0YTBkOGRkYTg3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg2NjhiMTI5YzAyNjYyNGVjMjI2YTRjY2NmNDk5NWY5ZDI2ZjNlODhmYzI4YWI3NWIwZTk2NWYzYzMyYjdkZDgiCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiBwZXJsbmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwogCkBAIC02OSw3ICs2OCw3IEBACiAJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T0ZGJywgZCl9IFwKIAkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR1RLRE9DPU9OJywgJy1ERU5BQkxFX0dUS0RPQz1PRkYnLCBkKX0gXAogCQktREVOQUJMRV9NSU5JQlJPV1NFUj1PTiBcCi0gICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT1gd2hpY2ggcHl0aG9uYCBcCisgICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT1gd2hpY2ggcHl0aG9uM2AgXAogCQkiCiAKICMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBBUkMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS42OS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY5LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0Zjk2ZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY5LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIGJvb3N0LSR7UFZ9LmluYwotCi1TVU1NQVJZID0gIlBvcnRhYmxlIEJvb3N0LkphbSBidWlsZCB0b29sIGZvciBib29zdCIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLWluaGVyaXQgbmF0aXZlCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9iamFtLW5hdGl2ZS1idWlsZC1iamFtLmRlYnVnLnBhdGNoIFwKLSIKLQotZG9fY29tcGlsZSgpIHsKLSAgICAuL2Jvb3RzdHJhcC5zaCAtLXdpdGgtdG9vbHNldD1nY2MKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgIyBpbnN0YWxsIHVuc3RyaXBwZWQgdmVyc2lvbiBmb3IgYmphbQotICAgIGluc3RhbGwgLWMgLW0gNzU1IGJqYW0uZGVidWcgJHtEfSR7YmluZGlyfS9iamFtCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NDNlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzEuMC5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIGJvb3N0LSR7UFZ9LmluYworCitTVU1NQVJZID0gIlBvcnRhYmxlIEJvb3N0LkphbSBidWlsZCB0b29sIGZvciBib29zdCIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK2luaGVyaXQgbmF0aXZlCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUJ1aWxkLWRlYnVnLXZlcnNpb24tb2YtYmphbS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC5zaC11c2UtRE5ERUJVRy1hbHNvLWluLWRlYnVnLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgICIKKworZG9fY29tcGlsZSgpIHsKKyAgICAuL2Jvb3RzdHJhcC5zaCAtLXdpdGgtdG9vbHNldD1nY2MKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgIyBpbnN0YWxsIHVuc3RyaXBwZWQgdmVyc2lvbiBmb3IgYmphbQorICAgIGluc3RhbGwgLWMgLW0gNzU1IGIyICR7RH0ke2JpbmRpcn0vYmphbQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY5LjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcxLjAuaW5jCnNpbWlsYXJpdHkgaW5kZXggNzclCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42OS4wLmluYwpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcxLjAuaW5jCmluZGV4IDkyMzQzNmIuLjcxNjRkMGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42OS4wLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNzEuMC5pbmMKQEAgLTExLDkgKzExLDkgQEAKIEJPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKIEJPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgogCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTMzMjQ5NDM5N2JmNDgzMzJjYjE1MmFiZmVmY2VjMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjMyZDQ2MTczOTBkMWMyZDE2ZjI2YTI3YWI2MGQ5NzgwN2IzNTQ0MGQ0NTg5MWZhMzQwZmMyNjQ4YjA0NDA2IgorU1JDX1VSSSA9ICJodHRwczovL2RsLmJpbnRyYXkuY29tL2Jvb3N0b3JnL3JlbGVhc2UvJHtQVn0vc291cmNlLyR7Qk9PU1RfUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0Y2RmOWI1YzJkYzAxZmIyYjdiNzMzZDVhZjMwZTU1OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNzNhOGRhMDFlOGJmOGM3ZWRhNDBiNGM4NDkxNTA3MWE4YzhhMGRmNGE2NzM0NTM3ZGRkZTRhODU4MDUyNGVlIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKaW5kZXggZjM4NTU0MS4uZTE1ZGNlNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKQEAgLTgzLDcgKzgzLDcgQEAKIAogIyAtZGV2IGxhc3QgdG8gcGljayB1cCB0aGUgcmVtYWluaW5nIHN0dWZmCiBQQUNLQUdFUyArPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWJib29zdF8qLnNvIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYmJvb3N0Xyouc28gJHtsaWJkaXJ9L2NtYWtlIgogRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJib29zdF8qLmEiCiAKICMgImJvb3N0IiBpcyBhIG1ldGFwYWNrYWdlIHdoaWNoIHB1bGxzIGluIGFsbCBib29zdCBsaWJyYWJyaWVzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoCmluZGV4IDg5NDRjYjMuLjY4ZDZlNjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzZTRlYjAyZWI1OTUxMDU4YmM2ZjhkZmZiZjA0OWViMTg5ZGY4MjkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmNGQzZmFkNDNkNjc4MDhkNzEzMjViYTBkZjE0NTc1NTViOWEwMDg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDE4IERlYyAyMDE4IDE1OjQyOjU3ICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHNldCB1cCBhcmNoL2luc3RydWN0aW9uLXNldCBmbGFncywgd2UgZG8gdGhhdCBvdXJzZWx2ZXMKQEAgLTYsMTUgKzYsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KLSB0b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSB8IDEyOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyOCBkZWxldGlvbnMoLSkKKyB0b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSB8IDEzMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEzMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtIGIvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0KLWluZGV4IGM1N2M3NzNmLi4yODYxOGZiMSAxMDA2NDQKK2luZGV4IGI5YmI5Y2YyYS4uYzdlM2NmM2ZlIDEwMDY0NAogLS0tIGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0KICsrKyBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCi1AQCAtMTE1MiwxMzEgKzExNTIsMyBAQCBsb2NhbCBydWxlIGNwdS1mbGFncyAoIHRvb2xzZXQgdmFyaWFibGUgOiBhcmNoaXRlY3R1cmUgOiBpbnN0cnVjdGlvbi1zZXQgKyA6CitAQCAtMTE4MCwxMzUgKzExODAsMyBAQCBsb2NhbCBydWxlIGNwdS1mbGFncyAoIHRvb2xzZXQgdmFyaWFibGUgOiBhcmNoaXRlY3R1cmUgOiBpbnN0cnVjdGlvbi1zZXQgKyA6CiAgICAgICAgICA8YXJjaGl0ZWN0dXJlPiQoYXJjaGl0ZWN0dXJlKS88aW5zdHJ1Y3Rpb24tc2V0PiQoaW5zdHJ1Y3Rpb24tc2V0KQogICAgICAgICAgOiAkKHZhbHVlcykgOwogIH0KQEAgLTE0NCw1ICsxNDUsOSBAQAogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHBvd2VyIDogcmlvczIgOiAtbWNwdT1yaW9zMiA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogcG93ZXIgOiByc2MgOiAtbWNwdT1yc2MgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHBvd2VyIDogcnM2NGEgOiAtbWNwdT1yczY0IDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiBzMzkweCA6IHoxOTYgOiAtbWFyY2g9ejE5NiA7CistY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogczM5MHggOiB6RUMxMiA6IC1tYXJjaD16RUMxMiA7CistY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogczM5MHggOiB6MTMgOiAtbWFyY2g9ejEzIDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiBzMzkweCA6IHoxNCA6IC1tYXJjaD16MTQgOwogLSMgQUlYIHZhcmlhbnQgb2YgUlMvNjAwMCAmIFBvd2VyUEMKIC10b29sc2V0LmZsYWdzIGdjYyBBUk9QVElPTlMgPGFkZHJlc3MtbW9kZWw+NjQvPHRhcmdldC1vcz5haXggOiAiLVg2NCIgOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY5LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzEuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY5LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43MS4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtQnVpbGQtZGVidWctdmVyc2lvbi1vZi1iamFtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUJ1aWxkLWRlYnVnLXZlcnNpb24tb2YtYmphbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmRjZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUJ1aWxkLWRlYnVnLXZlcnNpb24tb2YtYmphbS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDE5YzExN2MzZDEzODg2NTRkYTQ4NGUyNmFmYjNmYjZjM2U0MTgxYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYW5pZWwgS2xhdWVyIDxkYW5pZWwua2xhdWVyQGdpbi5kZT4KK0RhdGU6IFR1ZSwgMzAgSnVsIDIwMTkgMTE6Mzk6MDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQnVpbGQgZGVidWcgdmVyc2lvbiBvZiBiamFtCisKK2JqYW0gaXMgc3RyaXBwZWQgYnkgZGVmYXVsdCwgdGhpcyBjYXVzZXMgUUEgd2FybmluZyB3aGlsZSBzdHJpcHBpbmcgaXQKK2Zyb20gZG9fcG9wdWxhdGVfc3lzcm9vdCgpOgorCisgIFdBUk5JTkc6IEZpbGUgJy4uLi90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9iaW4vYmphbScgXAorICAgIGZyb20gYmphbS1uYXRpdmUgd2FzIGFscmVhZHkgc3RyaXBwZWQsIFwKKyAgICB0aGlzIHdpbGwgcHJldmVudCBmdXR1cmUgZGVidWdnaW5nIQorCitUaGUgSkFNIHNjcmlwdHMgYWxsb3cgdG8gYnVpbGQgdW5zdHJpcHBlZCB2ZXJzaW9uIHdpdGggJy0tZGVidWcnLiBKdXN0CitidWlsZCBhbmQgaW5zdGFsbCB0aGUgYmphbS5kZWJ1ZyB0byBzdG9wIGJqYW0gZnJvbSBiZWluZyBzdHJpcHBlZCBpbgorY29tcGlsZSBzdGVwLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGJvb3RzdHJhcC5zaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2Jvb3RzdHJhcC5zaCBiL2Jvb3RzdHJhcC5zaAoraW5kZXggY2EwYjA4ZDU4Li44N2YzOGRjZjIgMTAwNzU1CistLS0gYS9ib290c3RyYXAuc2gKKysrKyBiL2Jvb3RzdHJhcC5zaAorQEAgLTIyMyw3ICsyMjMsNyBAQCBybSAtZiBjb25maWcubG9nCisgaWYgdGVzdCAieCRCSkFNIiA9IHg7IHRoZW4KKyAgICRFQ0hPIC1uICJCdWlsZGluZyBCb29zdC5CdWlsZCBlbmdpbmUgd2l0aCB0b29sc2V0ICRUT09MU0VULi4uICIKKyAgIHB3ZD1gcHdkYAorLSAgKGNkICIkbXlfZGlyL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUiICYmIC4vYnVpbGQuc2ggIiRUT09MU0VUIikgPiBib290c3RyYXAubG9nIDI+JjEKKysgIChjZCAiJG15X2Rpci90b29scy9idWlsZC9zcmMvZW5naW5lIiAmJiAuL2J1aWxkLnNoICIkVE9PTFNFVCIgLS1kZWJ1ZykgPiBib290c3RyYXAubG9nIDI+JjEKKyAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgorICAgICAgIGVjaG8KKyAgICAgICBlY2hvICJGYWlsZWQgdG8gYnVpbGQgQm9vc3QuQnVpbGQgYnVpbGQgZW5naW5lIiAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvMDAwMS1idWlsZC5zaC11c2UtRE5ERUJVRy1hbHNvLWluLWRlYnVnLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvMDAwMS1idWlsZC5zaC11c2UtRE5ERUJVRy1hbHNvLWluLWRlYnVnLWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzZlZjJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLWJ1aWxkLnNoLXVzZS1ETkRFQlVHLWFsc28taW4tZGVidWctYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMmFmZDAyNTk5N2E1Nzc5NGNlMjRlMDdlOTE0YjQ2MWRmZWE2YmE1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNiBBdWcgMjAxOSAxNjowNDoxNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBidWlsZC5zaDogdXNlIC1ETkRFQlVHIGFsc28gaW4gZGVidWcgYnVpbGRzCisKK1dpdGhvdXQgaXQsIHRoZXJlIGlzIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgcmVncmVzc2lvbgord2hlbiBydW5uaW5nICdiamFtIGluc3RhbGwnLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2ggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoIGIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9idWlsZC5zaAoraW5kZXggYTFlNGNkMzM1Li42NGUwYTRjODAgMTAwNzU1CistLS0gYS90b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoCisrKysgYi90b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoCitAQCAtNDM2LDcgKzQzNiw3IEBAIGNhc2UgJEIyX09TIGluCisgICAgIDs7CisgZXNhYworIAorLWlmIGNoZWNrX2RlYnVnX2J1aWxkICIkQCIgOyB0aGVuIEIyX0NYWEZMQUdTPSIke0IyX0NYWEZMQUdTX0RFQlVHfSIKKytpZiBjaGVja19kZWJ1Z19idWlsZCAiJEAiIDsgdGhlbiBCMl9DWFhGTEFHUz0iJHtCMl9DWFhGTEFHU19ERUJVR30gLUROREVCVUciCisgZWxzZSBCMl9DWFhGTEFHUz0iJHtCMl9DWFhGTEFHU19SRUxFQVNFfSAtRE5ERUJVRyIKKyBmaQorIGVjaG9fcnVuICR7QjJfQ1hYfSAke0NYWEZMQUdTfSAke0IyX0NYWEZMQUdTfSAke0IyX1NPVVJDRVN9IC1vIGIyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzL2JqYW0tbmF0aXZlLWJ1aWxkLWJqYW0uZGVidWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzL2JqYW0tbmF0aXZlLWJ1aWxkLWJqYW0uZGVidWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmOGI3ZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy9iamFtLW5hdGl2ZS1idWlsZC1iamFtLmRlYnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSA2MTlhZGEzMTRhYjI2YzBjOWNiZmU1NzAyY2Q5YzBjYWE4ZjY0MTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDMgQXVnIDIwMTUgMTc6MTI6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYmphbS1uYXRpdmU6IGJ1aWxkIGJqYW0uZGVidWcKLQotYmphbSBpcyBzdHJpcHBlZCBieSBkZWZhdWx0LCB0aGlzIGNhdXNlcyBRQSB3YXJuaW5nIHdoaWxlIHN0cmlwcGluZyBpdAotZnJvbSBkb19wb3B1bGF0ZV9zeXNyb290KCk6Ci0KLSAgV0FSTklORzogRmlsZSAnLi4uL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9iamFtJyBcCi0gICAgZnJvbSBiamFtLW5hdGl2ZSB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgXAotICAgIHRoaXMgd2lsbCBwcmV2ZW50IGZ1dHVyZSBkZWJ1Z2dpbmchCi0KLVRoZSBKQU0gc2NyaXB0cyBhbGxvdyB0byBidWlsZCB1bnN0cmlwcGVkIHZlcnNpb24gd2l0aCAnLS1kZWJ1ZycuIEp1c3QKLWJ1aWxkIGFuZCBpbnN0YWxsIHRoZSBiamFtLmRlYnVnIHRvIHN0b3AgYmphbSBmcm9tIGJlaW5nIHN0cmlwcGVkIGluCi1jb21waWxlIHN0ZXAuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBib290c3RyYXAuc2ggICAgICAgICAgICAgICAgICAgIHwgMSArCi0gdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9idWlsZC5zaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYm9vdHN0cmFwLnNoIGIvYm9vdHN0cmFwLnNoCi1pbmRleCA5OGNmODhiLi41NDY5MGFhIDEwMDc1NQotLS0tIGEvYm9vdHN0cmFwLnNoCi0rKysgYi9ib290c3RyYXAuc2gKLUBAIC0yMjgsNiArMjI4LDcgQEAgaWYgdGVzdCAieCRCSkFNIiA9IHg7IHRoZW4KLSAgIGVjaG8gInRvb2xzL2J1aWxkL3NyYy9lbmdpbmUvJGFyY2gvYjIiCi0gICBjcCAiJEJKQU0iIC4KLSAgIGNwICIkbXlfZGlyL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvJGFyY2gvYmphbSIgLgotKyAgY3AgIiRteV9kaXIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS8ke2FyY2h9LmRlYnVnL2JqYW0iIGJqYW0uZGVidWcKLSAKLSBmaQotIAotZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2ggYi90b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoCi1pbmRleCA2ZGJjNzA2Li5jNjlmZGM3IDEwMDc1NQotLS0tIGEvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9idWlsZC5zaAotKysrIGIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9idWlsZC5zaAotQEAgLTMxMiw1ICszMTIsNSBAQCBpZiB0ZXN0IC14ICIuL2Jvb3RzdHJhcC9qYW0wIiA7IHRoZW4KLSAgICAgaWYgdGVzdCAiJHtCSkFNX1VQREFURX0iICE9ICJ1cGRhdGUiIDsgdGhlbgotICAgICAgICAgZWNob19ydW4gLi9ib290c3RyYXAvamFtMCAtZiBidWlsZC5qYW0gLS10b29sc2V0PSRCT09TVF9KQU1fVE9PTFNFVCAiLS10b29sc2V0LXJvb3Q9JEJPT1NUX0pBTV9UT09MU0VUX1JPT1QiICIkQCIgY2xlYW4KLSAgICAgZmkKLS0gICAgZWNob19ydW4gLi9ib290c3RyYXAvamFtMCAtZiBidWlsZC5qYW0gLS10b29sc2V0PSRCT09TVF9KQU1fVE9PTFNFVCAiLS10b29sc2V0LXJvb3Q9JEJPT1NUX0pBTV9UT09MU0VUX1JPT1QiICIkQCIKLSsgICAgZWNob19ydW4gLi9ib290c3RyYXAvamFtMCAtZiBidWlsZC5qYW0gLS10b29sc2V0PSRCT09TVF9KQU1fVE9PTFNFVCAiLS10b29sc2V0LXJvb3Q9JEJPT1NUX0pBTV9UT09MU0VUX1JPT1QiICIkQCIgLS1kZWJ1ZwotIGZpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAxLWNlcnRkYXRhMnBlbS5weS11c2UtcHl0aG9uMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAxLWNlcnRkYXRhMnBlbS5weS11c2UtcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTJjODVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDEtY2VydGRhdGEycGVtLnB5LXVzZS1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gYjZkMThjYTc3ZjEzMWNkY2FhMTBkMGVhYTlkMzAzMzk5NzY3ZWRmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBBdWcgMjAxOSAxOToxODoxNCArMDIwMAorU3ViamVjdDogW1BBVENIXSBjZXJ0ZGF0YTJwZW0ucHk6IHVzZSBweXRob24zCisKK0NvbW1lbnRzIGluIHRoYXQgZmlsZSBpbXBseSBpdCBpcyBhbHJlYWR5IHB5MyBjb21wYXRpYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbW96aWxsYS9NYWtlZmlsZSAgICAgICAgfCAyICstCisgbW96aWxsYS9jZXJ0ZGF0YTJwZW0ucHkgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tb3ppbGxhL01ha2VmaWxlIGIvbW96aWxsYS9NYWtlZmlsZQoraW5kZXggNmY0NjExOC4uZjk4ODc3YyAxMDA2NDQKKy0tLSBhL21vemlsbGEvTWFrZWZpbGUKKysrKyBiL21vemlsbGEvTWFrZWZpbGUKK0BAIC0zLDcgKzMsNyBAQAorICMKKyAKKyBhbGw6CistCXB5dGhvbiBjZXJ0ZGF0YTJwZW0ucHkKKysJcHl0aG9uMyBjZXJ0ZGF0YTJwZW0ucHkKKyAKKyBjbGVhbjoKKyAJLXJtIC1mICouY3J0CitkaWZmIC0tZ2l0IGEvbW96aWxsYS9jZXJ0ZGF0YTJwZW0ucHkgYi9tb3ppbGxhL2NlcnRkYXRhMnBlbS5weQoraW5kZXggMGIwMmIyYS4uN2Q3OTZmMSAxMDA2NDQKKy0tLSBhL21vemlsbGEvY2VydGRhdGEycGVtLnB5CisrKysgYi9tb3ppbGxhL2NlcnRkYXRhMnBlbS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24KKysjIS91c3IvYmluL3B5dGhvbjMKKyAjIHZpbTpzZXQgZXQgc3c9NDoKKyAjCisgIyBjZXJ0ZGF0YTJwZW0ucHkgLSBzcGxpdHMgY2VydGRhdGEudHh0IGludG8gbXVsdGlwbGUgZmlsZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE5MDExMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE5MDExMC5iYgppbmRleCBlZmQ5ZWFhLi5jZTNjYjIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxOTAxMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTkwMTEwLmJiCkBAIC0yMyw2ICsyMyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0LXN5c3Jvb3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vc2JpbmRpci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jZXJ0ZGF0YTJwZW0ucHktdXNlLXB5dGhvbjMucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCkBAIC01Myw3ICs1NCw3IEBACiAgICAgICAgIGVjaG8gIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAhIHdpbGwgcmVtb3ZlIGNlcnRpZmljYXRlIG9uIG5leHQgdXBkYXRlIgogICAgICAgICBlY2hvICIjIgogICAgICAgICBmaW5kICR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyAtdHlwZSBmIC1uYW1lICcqLmNydCcgfCBcCi0gICAgICAgICAgICBzZWQgJ3MsXiR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcy8sLCcKKyAgICAgICAgICAgIHNlZCAncyxeJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzLywsJyB8IHNvcnQKICAgICB9ID4ke0R9JHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMuY29uZgogfQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1mbG9wZW4tQWRkLW1pc3NpbmctZmNudGwuaC1pbmNsdWRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtZmxvcGVuLUFkZC1taXNzaW5nLWZjbnRsLmgtaW5jbHVkZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFiYjg3Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1mbG9wZW4tQWRkLW1pc3NpbmctZmNudGwuaC1pbmNsdWRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAxM2MzMjkxNmI0YmFhYjU4ZDkzOTQwZDU3ZmVhOWZmMDc3N2YxOTMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmFydWNoIFNpYWNoIDxiYXJ1Y2hAdGtvcy5jby5pbD4KLURhdGU6IFR1ZSwgNSBKdW4gMjAxOCAxOToyMTo0NiArMDMwMAotU3ViamVjdDogW1BBVENIXSBmbG9wZW46IEFkZCBtaXNzaW5nIDxmY250bC5oPiBpbmNsdWRlCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLUNvbW1pdCA5OTM4MjhkODRlZSAoQWRkIGZsb3BlbmF0KCkgZnVuY3Rpb24gZnJvbSBGcmVlQlNEKSBkcm9wcGVkIHRoZQotZmNudGwuaCBoZWFkZXIuIFRoaXMgYnJlYWtzIHRoZSBidWlsZCB3aXRoIG11c2wgbGliYzoKLQotZmxvcGVuLmM6IEluIGZ1bmN0aW9uIOKAmHZmbG9wZW5hdOKAmToKLWZsb3Blbi5jOjYwOjE0OiBlcnJvcjog4oCYT19DUkVBVOKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLSAgaWYgKGZsYWdzICYgT19DUkVBVCkgewotICAgICAgICAgICAgICBefn5+fn5+Ci0KLVJlc3RvcmUgdGhlIGZjbnRsLmggaGVhZGVyIGluY2x1ZGUgdG8gZml4IHRoZSBidWlsZC4KLQotRml4ZXM6IGNvbW1pdCA5OTM4MjhkODRlZWQwNDY4YzZjMTViMjgxOGU1MzRlNmIxMzRiOGU0Ci1TdWJtaXR0ZWQtYWxzby1ieTogcGFyYXp5ZCA8cGFyYXp5ZEBkeW5lLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEJhcnVjaCBTaWFjaCA8YmFydWNoQHRrb3MuY28uaWw+Ci1TaWduZWQtb2ZmLWJ5OiBHdWlsbGVtIEpvdmVyIDxndWlsbGVtQGhhZHJvbnMub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2xpYmJzZC9saWJic2QvY29tbWl0LzEzYzMyOTE2YjRiYWFiNThkOTM5NDBkNTdmZWE5ZmYwNzc3ZjE5MzFdCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9mbG9wZW4uYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Zsb3Blbi5jIGIvc3JjL2Zsb3Blbi5jCi1pbmRleCBiOTk3MmM5Li5mZjIwZDA3IDEwMDY0NAotLS0tIGEvc3JjL2Zsb3Blbi5jCi0rKysgYi9zcmMvZmxvcGVuLmMKLUBAIC0zMiw2ICszMiw3IEBACi0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuMTAuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC45LjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjEwLjAuYmIKaW5kZXggMmI3NWNkZi4uZWFmMjQ0YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOS4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjEwLjAuYmIKQEAgLTI4LDE2ICsyOCwxMyBAQAogIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluCiAjIExpY2Vuc2U6IHB1YmxpYy1kb21haW4tQ29saW4tUGx1bWIKIExJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlICYgSVNDICYgUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iNTUyNjAyZmRhNjllMzRjNzUzZDI2ZGUzODNmMzNjNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxMjBiZTAxNzM0NjlhMDZlZDE4NWI2ODhlMGUxYWUwIgogU0VDVElPTiA9ICJsaWJzIgogCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtZmxvcGVuLUFkZC1taXNzaW5nLWZjbnRsLmgtaW5jbHVkZS5wYXRjaCBcCi0iCitTUkNfVVJJID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJhNzRiODBjNDE0M2FmYTAzMmM5MDIyNmE0NTE4ZmZmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NmQ4MzU3NDIzMjdkNjlmYWNjZDE2OTU1YTYwYjZkY2YzMDY4NGE4ZGE1MThjNGVjYTBhYzcxM2I5ZTBhN2E0IgorU1JDX1VSSVttZDVzdW1dID0gImVhZDk2ZDI0MGQwMmZhYTViOTIxYzBhYTUwYzgxMmI1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0YjhhZGM3MjY4ODNkMGU4NWIzMTE4ZmExMzYwNWUxNzlhNjJiMzFiYTUxZjY3NjEzNmVjYjJkMGJjMWE4ODciCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjguMC5iYgpzaW1pbGFyaXR5IGluZGV4IDc0JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNy4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiCmluZGV4IGFiZDZmMzguLjg0Mjc0OTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS43LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjguMC5iYgpAQCAtNyw4ICs3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmFiZTg3ZDhkN2Q3ZjdjZGI0YTI2ZTVkYzk5ZmM1MTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTFkYmUxZjJiMWQwM2E1MWYzZTlhMTk2NzU3YTc1YzNhOTk5MDQyY2UzNGNmMWZkYzAwYTIzNjNlNWEyZTM2OSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4Nzk2MzEwODBiZTE4NTI2NzM3ZTMzYjYzZDg0ODAzOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGQzY2FlNGVmZDI3N2Y0ODVhYmRmOGYyYTdjNDY1ODhlNTM5OTk4YjVhMDhjMmM0ZDM2ODIxODM3OWQ0MjExIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC9ydW4tcHRlc3QKaW5kZXggMDI0MTg1MS4uMDgwODA2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC9ydW4tcHRlc3QKQEAgLTEsMTggKzEsMjggQEAKICMhL2Jpbi9zaAogCi1mYWlsPTAKKyMgcnVuLXB0ZXN0IC0gJ3B0ZXN0JyB0ZXN0IGluZnJhc3RydWN0dXJlIHNoZWxsIHNjcmlwdCB0aGF0CisjICAgd3JhcHMgdGhlIGxpYmV2ZW50IHRlc3Qgc2NyaXB0cyAKKyMKKyMgVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQkVWRU5UTElCPUBsaWJkaXJAL2xpYmV2ZW50CitMT0c9IiR7TElCRVZFTlRMSUJ9L3B0ZXN0L2xpYmV2ZW50X3B0ZXN0XyQoZGF0ZSArJVklbSVkLSVIJU0lUykubG9nIgorCitjZCAke0xJQkVWRU5UTElCfS9wdGVzdCAKKwogZm9yIHRlc3QgaW4gLi90ZXN0LyoKIGRvCi0JJHRlc3QKLQlpZiBbICQ/IC1uZSAwIF0KLQl0aGVuCi0JCWZhaWw9MQotCWZpCisgICAgJHRlc3QgMj4mMXwgc2VkIC1lICcvT0svIHMvXi9QQVNTOiAvIDsgL0ZBSUxFRC8gcy9eL0ZBSUw6IC8gOyAvU0tJUFBFRC8gcy9eL1NLSVA6IC8gOyAvRElTQUJMRUQvIHMvXi9TS0lQOiAvJyB8IGN1dCAtZjEsMiAtZCAnOicgfCB0ZWUgLWEgJHtMT0d9CiBkb25lCiAKLWlmIFsgJGZhaWwgLWVxIDAgXQotdGhlbgotCWVjaG8gIlBBU1M6IGxpYmV2ZW50IgotZWxzZQotCWVjaG8gIkZBSUw6IGxpYmV2ZW50IgotZmkKK3Bhc3NlZD1gZ3JlcCBQQVNTICR7TE9HfXx3YyAtbGAKK2ZhaWxlZD1gZ3JlcCBGQUlMICR7TE9HfXx3YyAtbGAKK3NraXBwZWQ9YGdyZXAgLUUgU0tJUCAke0xPR318d2MgLWxgCithbGw9JCgocGFzc2VkICsgZmFpbGVkICsgc2tpcHBlZCkpCisKKyggICBlY2hvICI9PT0gVGVzdCBTdW1tYXJ5ID09PSIKKyAgICBlY2hvICJUT1RBTDogJHthbGx9IgorICAgIGVjaG8gIlBBU1NFRDogJHtwYXNzZWR9IgorICAgIGVjaG8gIkZBSUxFRDogJHtmYWlsZWR9IgorICAgIGVjaG8gIlNLSVBQRUQ6ICR7c2tpcHBlZH0iCispIHwgdGVlIC1hICR7TE9HfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuMTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgppbmRleCAxZTE4ZjBhLi5mMDA1YWI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgpAQCAtNDMsNCArNDMsNyBAQAogCWRvCiAJCWluc3RhbGwgLW0gMDc1NSAkZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CiAJZG9uZQorICAgICAgICAKKyAgICAgICAgIyBoYW5kbGUgbXVsdGlsaWIKKyAgICAgICAgc2VkIC1pIHM6QGxpYmRpckA6JHtsaWJkaXJ9OmcgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYTMwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDQxNDlhNzYyN2E5OTg3MzFjYzI0NmQzZjU4YTM2ODA4NzQ1ZDA0YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYXJsIEh1cmQgPGNhcmxAQ2FybHMtTWFjQm9vay1Qcm8ubG9jYWw+CitEYXRlOiBXZWQsIDE4IEp1bCAyMDE4IDA5OjA0OjMyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIG1pc3NlZCAjaWZuZGVmIGZvciBfX21pcHNfc29mdF9mbG9hdAorCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3B1bGwvNDQyXQorCisgc3JjL21pcHMvbzMyLlMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL21pcHMvbzMyLlMgYi9zcmMvbWlwcy9vMzIuUworaW5kZXggNDRlNzRjYi4uNzk5MTM5YiAxMDA2NDQKKy0tLSBhL3NyYy9taXBzL28zMi5TCisrKysgYi9zcmMvbWlwcy9vMzIuUworQEAgLTI4Miw5ICsyODIsMTEgQEAgJExDRkkxMjoKKyAJbGkJJDEzLCAxCQkjIEZGSV9PMzIKKyAJYm5lCSQxNiwgJDEzLCAxZgkjIFNraXAgZnAgc2F2ZSBpZiBGRklfTzMyX1NPRlRfRkxPQVQKKyAJCisrI2lmbmRlZiBfX21pcHNfc29mdF9mbG9hdAorIAkjIFN0b3JlIGFsbCBwb3NzaWJsZSBmbG9hdC9kb3VibGUgcmVnaXN0ZXJzLgorIAlzLmQJJGYxMiwgRkFfMF8wX09GRjIoJGZwKQorIAlzLmQJJGYxNCwgRkFfMV8wX09GRjIoJGZwKQorKyNlbmRpZgorIDE6CisgCSMgcHJlcGFyZSBhcmd1bWVudHMgZm9yIGZmaV9jbG9zdXJlX21pcHNfaW5uZXJfTzMyCisgCVJFR19MCWEwLCA0KCQxNSkJICMgY2lmIAorLS0gCisyLjIxLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuM35yYzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgppbmRleCBkYWRkZTBiLi44YWNiNjk5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgpAQCAtMTIsOSArMTIsMTMgQEAKIAogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9yZWxlYXNlcy9kb3dubG9hZC92My4zLXJjMC9saWJmZmktMy4zLXJjMC50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbm90LXdpbjMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtbWlzc2VkLWlmbmRlZi1mb3ItX19taXBzX3NvZnRfZmxvYXQucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiOGQyYTgyYTc4ZmFmMTBhNWU1M2MyN2Q5ODZlOGYwNGUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDAzZDY3YWFiZjFjMDUxNTc4NTVlYTJiMWQ5OTUwMjYzZmI2MzE2NTM2YzhjMzMzZjViOWFiMWViMmYyMGVjZiIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9yZWxlYXNlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJmZmktKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtYnVpbGRkaXIiCiBFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0xGTEFHUz0nLS10YWc9Q0MnIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0xLjM2LWdhd2s1LXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTM2ZDExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0xLjM2LWdhd2s1LXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwxNDQgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZGV2LmdudXBnLm9yZy9UNDQ1OV0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0Zyb20gNzg2NTA0MWM3N2Y0ZjcwMDUyODJmMTBmOWI2NjY2YjE5MDcyZmJkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgorRGF0ZTogTW9uLCAxNSBBcHIgMjAxOSAxNToxMDo0NCArMDkwMAorU3ViamVjdDogW1BBVENIXSBhd2s6IFByZXBhcmUgZm9yIEdhd2sgNS4wLgorCisqIHNyYy9NYWtlZmlsZS5hbTogVXNlIHBrZ19uYW1lc3BhY2UgKGluc3RlYWQgb2YgbmFtZXNwYWNlKS4KKyogc3JjL21rZXJybm9zLmF3azogTGlrZXdpc2UuCisqIGxhbmcvY2wvbWtlcnJjb2Rlcy5hd2s6IERvbid0IGVzY2FwZSAjIGluIHJlZ2V4cC4KKyogc3JjL21rZXJyY29kZXMuYXdrLCBzcmMvbWtlcnJjb2RlczEuYXdrLCBzcmMvbWtlcnJjb2RlczIuYXdrOiBEaXR0by4KKworLS0KKworSW4gR2F3ayA1LjAsIHJlZ2V4cCByb3V0aW5lcyBhcmUgcmVwbGFjZWQgYnkgR251bGliIGltcGxlbWVudGF0aW9uLAord2hpY2ggb25seSBhbGxvd3MgZXNjYXBpbmcgc3BlY2lmaWMgY2hhcmFjdGVycy4KKworR251UEctYnVnLWlkOiA0NDU5CitSZXBvcnRlZC1ieTogTWFyaXVzIFNjaGFtc2NodWxhCitTaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KKy0tLQorIGxhbmcvY2wvbWtlcnJjb2Rlcy5hd2sgfCAgMiArLQorIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgfCAgMiArLQorIHNyYy9ta2VycmNvZGVzLmF3ayAgICAgfCAgMiArLQorIHNyYy9ta2VycmNvZGVzMS5hd2sgICAgfCAgMiArLQorIHNyYy9ta2VycmNvZGVzMi5hd2sgICAgfCAgMiArLQorIHNyYy9ta2Vycm5vcy5hd2sgICAgICAgfCAgMiArLQorIHNyYy9ta3N0cnRhYmxlLmF3ayAgICAgfCAxMCArKysrKy0tLS0tCisgNyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworLS0tIGEvbGFuZy9jbC9ta2VycmNvZGVzLmF3aworKysrIGIvbGFuZy9jbC9ta2VycmNvZGVzLmF3aworQEAgLTEyMiw3ICsxMjIsNyBAQCBoZWFkZXIgeworIH0KKyAKKyAhaGVhZGVyIHsKKy0gIHN1YiAoL1wjLisvLCAiIik7CisrICBzdWIgKC8jLisvLCAiIik7CisgICBzdWIgKC9bIAldKyQvLCAiIik7ICMgU3RyaXAgdHJhaWxpbmcgc3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzLgorIAorICAgaWYgKC9eJC8pCistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTI5Myw3ICsyOTMsNyBAQCBjb2RlLWZyb20tZXJybm8uaDogbWtlcnJjb2RlcyQoRVhFRVhUX0ZPCisgCisgZXJybm9zLXN5bS5oOiBNYWtlZmlsZSBta3N0cnRhYmxlLmF3ayBlcnJub3MuaW4KKyAJJChBV0spIC1mICQoc3JjZGlyKS9ta3N0cnRhYmxlLmF3ayAtdiB0ZXh0aWR4PTIgLXYgbm9nZXR0ZXh0PTEgXAorLQkJLXYgcHJlZml4PUdQR19FUlJfIC12IG5hbWVzcGFjZT1lcnJub3NfIFwKKysJCS12IHByZWZpeD1HUEdfRVJSXyAtdiBwa2dfbmFtZXNwYWNlPWVycm5vc18gXAorIAkJJChzcmNkaXIpL2Vycm5vcy5pbiA+JEAKKyAKKyAKKy0tLSBhL3NyYy9ta2VycmNvZGVzLmF3aworKysrIGIvc3JjL21rZXJyY29kZXMuYXdrCitAQCAtODUsNyArODUsNyBAQCBoZWFkZXIgeworIH0KKyAKKyAhaGVhZGVyIHsKKy0gIHN1YiAoL1wjLisvLCAiIik7CisrICBzdWIgKC8jLisvLCAiIik7CisgICBzdWIgKC9bIAldKyQvLCAiIik7ICMgU3RyaXAgdHJhaWxpbmcgc3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzLgorIAorICAgaWYgKC9eJC8pCistLS0gYS9zcmMvbWtlcnJjb2RlczEuYXdrCisrKysgYi9zcmMvbWtlcnJjb2RlczEuYXdrCitAQCAtODEsNyArODEsNyBAQCBoZWFkZXIgeworIH0KKyAKKyAhaGVhZGVyIHsKKy0gIHN1YiAoL1wjLisvLCAiIik7CisrICBzdWIgKC8jLisvLCAiIik7CisgICBzdWIgKC9bIAldKyQvLCAiIik7ICMgU3RyaXAgdHJhaWxpbmcgc3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzLgorIAorICAgaWYgKC9eJC8pCistLS0gYS9zcmMvbWtlcnJjb2RlczIuYXdrCisrKysgYi9zcmMvbWtlcnJjb2RlczIuYXdrCitAQCAtOTEsNyArOTEsNyBAQCBoZWFkZXIgeworIH0KKyAKKyAhaGVhZGVyIHsKKy0gIHN1YiAoL1wjLisvLCAiIik7CisrICBzdWIgKC8jLisvLCAiIik7CisgICBzdWIgKC9bIAldKyQvLCAiIik7ICMgU3RyaXAgdHJhaWxpbmcgc3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzLgorIAorICAgaWYgKC9eJC8pCistLS0gYS9zcmMvbWtlcnJub3MuYXdrCisrKysgYi9zcmMvbWtlcnJub3MuYXdrCitAQCAtODMsNyArODMsNyBAQCBoZWFkZXIgeworIH0KKyAKKyAhaGVhZGVyIHsKKy0gIHN1YiAoL1wjLisvLCAiIik7CisrICBzdWIgKC8jLisvLCAiIik7CisgICBzdWIgKC9bIAldKyQvLCAiIik7ICMgU3RyaXAgdHJhaWxpbmcgc3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzLgorIAorICAgaWYgKC9eJC8pCistLS0gYS9zcmMvbWtzdHJ0YWJsZS5hd2sKKysrKyBiL3NyYy9ta3N0cnRhYmxlLmF3aworQEAgLTc3LDcgKzc3LDcgQEAKKyAjCisgIyBUaGUgdmFyaWFibGUgcHJlZml4IGNhbiBiZSB1c2VkIHRvIHByZXBlbmQgYSBzdHJpbmcgdG8gZWFjaCBtZXNzYWdlLgorICMKKy0jIFRoZSB2YXJpYWJsZSBuYW1lc3BhY2UgY2FuIGJlIHVzZWQgdG8gcHJlcGVuZCBhIHN0cmluZyB0byBlYWNoCisrIyBUaGUgdmFyaWFibGUgcGtnX25hbWVzcGFjZSBjYW4gYmUgdXNlZCB0byBwcmVwZW5kIGEgc3RyaW5nIHRvIGVhY2gKKyAjIHZhcmlhYmxlIGFuZCBtYWNybyBuYW1lLgorIAorIEJFR0lOIHsKK0BAIC0xMDIsNyArMTAyLDcgQEAgaGVhZGVyIHsKKyAgICAgICBwcmludCAiLyogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb21wbGV4IHN0cmluZyB0YWJsZSBpcyB0byBwcm9kdWNlIjsKKyAgICAgICBwcmludCAiICAgb3B0aW1hbCBjb2RlIHdpdGggYSBtaW5pbXVtIG9mIHJlbG9jYXRpb25zLiAgKi8iOworICAgICAgIHByaW50ICIiOworLSAgICAgIHByaW50ICJzdGF0aWMgY29uc3QgY2hhciAiIG5hbWVzcGFjZSAibXNnc3RyW10gPSAiOworKyAgICAgIHByaW50ICJzdGF0aWMgY29uc3QgY2hhciAiIHBrZ19uYW1lc3BhY2UgIm1zZ3N0cltdID0gIjsKKyAgICAgICBoZWFkZXIgPSAwOworICAgICB9CisgICBlbHNlCitAQCAtMTEwLDcgKzExMCw3IEBAIGhlYWRlciB7CisgfQorIAorICFoZWFkZXIgeworLSAgc3ViICgvXCMuKy8sICIiKTsKKysgIHN1YiAoLyMuKy8sICIiKTsKKyAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCisgCisgICBpZiAoL14kLykKK0BAIC0xNTAsNyArMTUwLDcgQEAgRU5EIHsKKyAgIGVsc2UKKyAgICAgcHJpbnQgIiAgZ2V0dGV4dF9ub29wIChcIiIgbGFzdF9tc2dzdHIgIlwiKTsiOworICAgcHJpbnQgIiI7CistICBwcmludCAic3RhdGljIGNvbnN0IGludCAiIG5hbWVzcGFjZSAibXNnaWR4W10gPSI7CisrICBwcmludCAic3RhdGljIGNvbnN0IGludCAiIHBrZ19uYW1lc3BhY2UgIm1zZ2lkeFtdID0iOworICAgcHJpbnQgIiAgeyI7CisgICBmb3IgKGkgPSAwOyBpIDwgY29kZWRfbXNnczsgaSsrKQorICAgICBwcmludCAiICAgICIgcG9zW2ldICIsIjsKK0BAIC0xNTgsNyArMTU4LDcgQEAgRU5EIHsKKyAgIHByaW50ICIgIH07IjsKKyAgIHByaW50ICIiOworICAgcHJpbnQgInN0YXRpYyBHUEdfRVJSX0lOTElORSBpbnQiOworLSAgcHJpbnQgbmFtZXNwYWNlICJtc2dpZHhvZiAoaW50IGNvZGUpIjsKKysgIHByaW50IHBrZ19uYW1lc3BhY2UgIm1zZ2lkeG9mIChpbnQgY29kZSkiOworICAgcHJpbnQgInsiOworICAgcHJpbnQgIiAgcmV0dXJuICgwID8gMCI7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjM2LmJiCmluZGV4IDJkYjU0NGEuLmIxMWFiMDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjM2LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjM2LmJiCkBAIC0xNCw2ICsxNCw3IEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKIFNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaCBcCiAJICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlZmY0MzdmMzk3ZTg1OGE5MTI3Yjc2YzBkODdmYTVlZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvMDAwMS1QQVRDSC1maXgtbGlibmwtMy40LjAtbXVzbC1jb21waWxlLXByb2JsZW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDEtUEFUQ0gtZml4LWxpYm5sLTMuNC4wLW11c2wtY29tcGlsZS1wcm9ibGVtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjBhMjk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvMDAwMS1QQVRDSC1maXgtbGlibmwtMy40LjAtbXVzbC1jb21waWxlLXByb2JsZW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBsaWJubC0zLjQuMCBtdXNsIGNvbXBpbGUgcHJvYmxlbSAgCi1Bdm9pZCBpbjZfYWRkciByZWRlZmluaXRpb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEh1YW5nIFFpeXUgPGh1YW5ncXkuZm5zdEBjbi5mdWppdHN1LmNvbT4KLS0tLQotIGluY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pZl9icmlkZ2UuaCB8IDEgLQotIGluY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmggICAgICB8IDEgLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pZl9icmlkZ2UuaCBiL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pZl9icmlkZ2UuaAotaW5kZXggZjI0MDUwYi4uOGY3NDkwYyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pZl9icmlkZ2UuaAotKysrIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCi1AQCAtMTUsNyArMTUsNiBAQAotIAotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgotLSNpbmNsdWRlIDxsaW51eC9pbjYuaD4KLSAKLSAjZGVmaW5lIFNZU0ZTX0JSSURHRV9BVFRSCSJicmlkZ2UiCi0gI2RlZmluZSBTWVNGU19CUklER0VfRkRCCSJicmZvcndhcmQiCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaCBiL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKLWluZGV4IGUwNWU2ODQuLmYxNjM0OWQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaXB2Ni5oCi0rKysgYi9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaXB2Ni5oCi1AQCAtMiw3ICsyLDYgQEAKLSAjZGVmaW5lIF9JUFY2X0gKLSAKLSAjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgotLSNpbmNsdWRlIDxsaW51eC9pbjYuaD4KLSAKLSAvKiBUaGUgbGF0ZXN0IGRyYWZ0cyBkZWNsYXJlZCBpbmNyZWFzZSBpbiBtaW5pbWFsIG10dSB1cCB0byAxMjgwLiAqLwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sL2ZpeC1wYy1maWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC9maXgtcGMtZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU4YjgzMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sL2ZpeC1wYy1maWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNvbWUgcGFja2FnZXMgYXJlIGFza2luZyBvbmx5IGZvciBsaWJubC0yLjAsIGJ1dCBleHBlY3RzIHRvIGdldCBhbHNvCi1saWJubC1nZW5sLCBsaWJubC1uZiBsaWJubC1yb3V0ZSwgZWFzaWVzdCB3YXkgdG8gZml4IHRoZW0gaXMgaGVyZS4KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAZ21haWwuY29tPgotSW5kZXg6IGxpYm5sLTMuMi4xNC9saWJubC0zLjAucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJubC0zLjIuMTQub3JpZy9saWJubC0zLjAucGMuaW4KLSsrKyBsaWJubC0zLjIuMTQvbGlibmwtMy4wLnBjLmluCi1AQCAtNiw1ICs2LDUgQEAgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLSBOYW1lOiBsaWJubAotIERlc2NyaXB0aW9uOiBDb252ZW5pZW5jZSBsaWJyYXJ5IGZvciBuZXRsaW5rIHNvY2tldHMKLSBWZXJzaW9uOiBAUEFDS0FHRV9WRVJTSU9OQAotLUxpYnM6IC1MJHtsaWJkaXJ9IC1sbmwtQE1BSl9WRVJTSU9OQAotK0xpYnM6IC1MJHtsaWJkaXJ9IC1sbmwtQE1BSl9WRVJTSU9OQCAtbG5sLWdlbmwtQE1BSl9WRVJTSU9OQCAtbG5sLW5mLUBNQUpfVkVSU0lPTkAgLWxubC1yb3V0ZS1ATUFKX1ZFUlNJT05ACi0gQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vbGlibmxATUFKX1ZFUlNJT05ACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjUuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNC4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNS4wLmJiCmluZGV4IDkwZGM2NDQuLmMwNjA5YzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy40LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjUuMC5iYgpAQCAtOSwxNiArOSwxMiBAQAogCiBERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhvbTMxMS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtCUE59JHtAZC5nZXRWYXIoJ1BWJykucmVwbGFjZSgnLicsJ18nKX0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wYy1maWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUEFUQ0gtZml4LWxpYm5sLTMuNC4wLW11c2wtY29tcGlsZS1wcm9ibGVtLnBhdGNoIFwKLSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rob20zMTEvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7QlBOfSR7QGQuZ2V0VmFyKCdQVicpLnJlcGxhY2UoJy4nLCdfJyl9LyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NGJhNTdiMWIxZDZmOWY5MjI2OGFhODE0MWQ4ZThlNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNTIxMzNlYzk1NDVkYTc2Zjc3ZTcwY2NiNDhjOWQ3ZTUzMjRkNjdmNjQ3NDc0NDY0N2E3ZWQzODJiNWUwNWZhIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rob20zMTEvJHtCUE59L3JlbGVhc2VzIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiOGY3MTkxMGMwM2RiMzYzYjQxZTJlYTYyMDU3YTQzMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjcyODc2MzdhZTcxYzZkYjZmODllMTQyMmM5OTVmMDQwN2ZmMmZlNTBjZWNkNjFhMzEyYjZhOWIwOTIxZjViZiIKLQogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKIEZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJubC0zLnNvLiogXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwc2wvbGlicHNsLzAwMDEtTWFrZWZpbGUuYW0tdXNlLVBZVEhPTi13aGVuLWludm9raW5nLXBzbC1tYWtlLWRhZnNhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwc2wvbGlicHNsLzAwMDEtTWFrZWZpbGUuYW0tdXNlLVBZVEhPTi13aGVuLWludm9raW5nLXBzbC1tYWtlLWRhZnNhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNmNjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBzbC9saWJwc2wvMDAwMS1NYWtlZmlsZS5hbS11c2UtUFlUSE9OLXdoZW4taW52b2tpbmctcHNsLW1ha2UtZGFmc2EucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBhMGU2ZjBlYzlkYzZkZDFkYjFjMDNmN2YyNzNjYzE2Y2IzYWY1NTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFRodSwgMTEgSnVsIDIwMTkgMTc6NDc6MTEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IHVzZSBQWVRIT04gd2hlbiBpbnZva2luZyBwc2wtbWFrZS1kYWZzYQorCitJbiBhbiBlbnZpcm9ubWVudCB3aGVyZSBvbmx5IFB5dGhvbiAzIGlzIGluc3RhbGxlZCwgY29uZmlndXJlLmFjIGZpbmRzIGFuZCBzZXRzCitQWVRIT049cHl0aG9uMyBjb3JyZWN0bHkgYnV0IHNyYy9wc2wtbWFrZS1kYWZzYSBpcyBjYWxsZWQgZGlyZWN0bHksIHNvIHRoZSBoYXNoYmFuZyBvZgorYCMhL3Vzci9iaW4vZW52IHB5dGhvbmAgaXMgdXNlZCB3aGljaCBkb2Vzbid0IGV4aXN0LgorCitGaXggdGhpcyBieSBleHBsaWNpdGx5IHJ1bm5pbmcgJChQWVRIT04pIHdoZW4gdXNpbmcgdGhlIHRvb2wuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9yb2NrZGFib290L2xpYnBzbC9jb21taXQvYjRmZWM1ZDBkZGI3MGZjNGY1MzYwZWIxNGYyZjVjNWU5MTE5NDMzM10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtICAgfCAyICstCisgdGVzdHMvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggZjljMGEzZC4uYTA1ZWEwNSAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMTksNyArMTksNyBAQCBsaWJwc2xfbGFfTERGTEFHUyA9IC1uby11bmRlZmluZWQgLXZlcnNpb24taW5mbyAkKExJQlBTTF9TT19WRVJTSU9OKQorICMgQnVpbGQgcnVsZSBmb3Igc3VmZml4X2RhZnNhLmMKKyAjIFBTTF9GSUxFIGNhbiBiZSBzZXQgYnkgLi9jb25maWd1cmUgLS13aXRoLXBzbC1maWxlPVtQQVRIXQorIHN1ZmZpeGVzX2RhZnNhLmg6ICQoUFNMX0ZJTEUpICQoc3JjZGlyKS9wc2wtbWFrZS1kYWZzYQorLQkkKHNyY2RpcikvcHNsLW1ha2UtZGFmc2EgLS1vdXRwdXQtZm9ybWF0PWN4eCsgIiQoUFNMX0ZJTEUpIiBzdWZmaXhlc19kYWZzYS5oCisrCSQoUFlUSE9OKSAkKHNyY2RpcikvcHNsLW1ha2UtZGFmc2EgLS1vdXRwdXQtZm9ybWF0PWN4eCsgIiQoUFNMX0ZJTEUpIiBzdWZmaXhlc19kYWZzYS5oCisgCisgRVhUUkFfRElTVCA9IHBzbC1tYWtlLWRhZnNhIExJQ0VOU0UuY2hyb21pdW0KKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA4YjI5YjYxLi4yOGE5YTBiIDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMzQsOSArMzQsOSBAQCBURVNUUyA9ICQoUFNMX1RFU1RTKQorICMgY2hlY2stbG9jYWwgdGFyZ2V0IHdvcmtzIGluIHBhcmFsbGVsIHRvIHRoZSB0ZXN0cywgc28gdGhlIHRlc3Qgc3VpdGUgd2lsbCBsaWtlbHkgZmFpbAorIEJVSUxUX1NPVVJDRVMgPSBwc2wuZGFmc2EgcHNsX2FzY2lpLmRhZnNhCisgcHNsLmRhZnNhOiAkKHRvcF9zcmNkaXIpL2xpc3QvcHVibGljX3N1ZmZpeF9saXN0LmRhdAorLQkkKHRvcF9zcmNkaXIpL3NyYy9wc2wtbWFrZS1kYWZzYSAtLW91dHB1dC1mb3JtYXQ9YmluYXJ5ICIkKFBTTF9GSUxFKSIgcHNsLmRhZnNhCisrCSQoUFlUSE9OKSAkKHRvcF9zcmNkaXIpL3NyYy9wc2wtbWFrZS1kYWZzYSAtLW91dHB1dC1mb3JtYXQ9YmluYXJ5ICIkKFBTTF9GSUxFKSIgcHNsLmRhZnNhCisgcHNsX2FzY2lpLmRhZnNhOiAkKHRvcF9zcmNkaXIpL2xpc3QvcHVibGljX3N1ZmZpeF9saXN0LmRhdAorLQkkKHRvcF9zcmNkaXIpL3NyYy9wc2wtbWFrZS1kYWZzYSAtLW91dHB1dC1mb3JtYXQ9YmluYXJ5IC0tZW5jb2Rpbmc9YXNjaWkgIiQoUFNMX0ZJTEUpIiBwc2xfYXNjaWkuZGFmc2EKKysJJChQWVRIT04pICQodG9wX3NyY2Rpcikvc3JjL3BzbC1tYWtlLWRhZnNhIC0tb3V0cHV0LWZvcm1hdD1iaW5hcnkgLS1lbmNvZGluZz1hc2NpaSAiJChQU0xfRklMRSkiIHBzbF9hc2NpaS5kYWZzYQorIAorIGNsZWFuLWxvY2FsOgorIAlybSAtZiBwc2wuZGFmc2EgcHNsX2FzY2lpLmRhZnNhCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBzbC9saWJwc2xfMC4yMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwc2wvbGlicHNsXzAuMjEuMC5iYgppbmRleCBmYzI0MTdmLi45ODMxYjRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBzbC9saWJwc2xfMC4yMS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHNsL2xpYnBzbF8wLjIxLjAuYmIKQEAgLTYsNiArNiw3IEBACiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JvY2tkYWJvb3QvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7QlB9LyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWd0ay1kb2MtZG8tbm90LWluY2x1ZGUtdHJlZV9pbmRleC5zZ21sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tdXNlLVBZVEhPTi13aGVuLWludm9raW5nLXBzbC1tYWtlLWRhZnNhLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjE3MWU5NmQ4ODc3MDllMzZhNTdmNGVlNjI3YmY4MmQyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxYmQxYzc1YTM3NWI4NWMzMzdiNTk3ODNmNWRlYjkzZGJiNDQzZmIwYTUyZDI1N2Y0MDNkZjdiZDY1M2VlMTIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMuaW5jCmluZGV4IDdjZjIzZDAuLjRhZjFlMDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMuaW5jCkBAIC0xOSw3ICsxOSw3IEBACiAKIENWRV9QUk9EVUNUID0gInNxbGl0ZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc2l0ZWluZm8KIAogIyBlbmFibGUgdGhvc2Ugd2hpY2ggYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBjb25maWd1cmUKIFBBQ0tBR0VDT05GSUcgPz0gImZ0czQgZnRzNSBqc29uMSBydHJlZSBkeW5fZXh0IgpAQCAtNDcsMTAgKzQ3LDE0IEBACiBDRkxBR1NfYXBwZW5kID0gIiAtZlBJQyIKIAogIyBwcmVhZCgpIGlzIGluIFBPU0lYLjEtMjAwMSBzbyBhbnkgcmVhc29uYWJsZSBzeXN0ZW0gbXVzdCBzdXJlbHkgc3VwcG9ydCBpdAotQ0ZMQUdTICs9ICItRFVTRV9QUkVBRCIKK0NGTEFHU19hcHBlbmQgPSAiIC1EVVNFX1BSRUFEIgogCiAjIFByb3ZpZGUgY29sdW1uIG1ldGEtZGF0YSBBUEkKLUNGTEFHUyArPSAiLURTUUxJVEVfRU5BQkxFX0NPTFVNTl9NRVRBREFUQSIKK0NGTEFHU19hcHBlbmQgPSAiIC1EU1FMSVRFX0VOQUJMRV9DT0xVTU5fTUVUQURBVEEiCisKKyMgVW5sZXNzIFNRTElURV9CWVRFT1JERVIgaXMgcHJlZGVmaW5lZCwgdGhlIGNvZGUgZmFsbHMgYmFjayB0byBidWlsZCB0aW1lCisjIGh1cmlzdGljcywgd2hpY2ggYXJlIG5vdCBhbHdheXMgY29ycmVjdAorQ0ZMQUdTX2FwcGVuZCA9ICIgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnLURTUUxJVEVfQllURU9SREVSPTEyMzQnLCAnLURTUUxJVEVfQllURU9SREVSPTQzMjEnLCBkKX0iCiAKIFBBQ0tBR0VTID0gImxpYiR7QlBOfSBsaWIke0JQTn0tZGV2IGxpYiR7QlBOfS1kb2MgJHtQTn0tZGJnIGxpYiR7QlBOfS1zdGF0aWNkZXYgJHtQTn0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLnR4dCBiL3Bva3kvbWV0YS9yZWNpcGVzLnR4dAppbmRleCA5ZTE3OGQ2Li5mYjJjMjUwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy50eHQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMudHh0CkBAIC0zLDExICszLDEwIEBACiByZWNpcGVzLWNvcmUgICAgICAgICAtIFdoYXQncyBuZWVkZWQgdG8gYnVpbGQgYSBiYXNpYyB3b3JraW5nIExpbnV4IGltYWdlIGluY2x1ZGluZyBjb21tb25seSB1c2VkIGRlcGVuZGVuY2llcwogcmVjaXBlcy1kZXZ0b29scyAgICAgLSBUb29scyBwcmltYXJpbHkgdXNlZCBieSB0aGUgYnVpbGQgc3lzdGVtIChidXQgY2FuIGFsc28gYmUgdXNlZCBvbiB0YXJnZXRzKQogcmVjaXBlcy1leHRlbmRlZCAgICAgLSBBcHBsaWNhdGlvbnMgd2hpY2ggd2hpbHN0IG5vdCBlc3NlbnRpYWwgYWRkIGZlYXR1cmVzIGNvbXBhcmVkIHRvIHRoZSBhbHRlcm5hdGl2ZXMgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgY29yZS4gTWF5IGJlIG5lZWRlZCBmb3IgZnVsbCB0b29sIGZ1bmN0aW9uYWxpdHkgb3IgTFNCIGNvbXBsaWFuY2UuCisgICAgICAgICAgICAgICAgICAgICAgIGNvcmUuIE1heSBiZSBuZWVkZWQgZm9yIGZ1bGwgdG9vbCBmdW5jdGlvbmFsaXR5LgogcmVjaXBlcy1nbm9tZSAgICAgICAgLSBBbGwgdGhpbmdzIHJlbGF0ZWQgdG8gdGhlIEdUSysgYXBwbGljYXRpb24gZnJhbWV3b3JrCiByZWNpcGVzLWdyYXBoaWNzICAgICAtIFggYW5kIG90aGVyIGdyYXBoaWNhbGx5IHJlbGF0ZWQgc3lzdGVtIGxpYnJhcmllcyAgCiByZWNpcGVzLWtlcm5lbCAgICAgICAtIFRoZSBrZXJuZWwgYW5kIGdlbmVyaWMgYXBwbGljYXRpb25zL2xpYnJhcmllcyB3aXRoIHN0cm9uZyBrZXJuZWwgZGVwZW5kZW5jaWVzCi1yZWNpcGVzLWxzYjQgICAgICAgICAtIFJlY2lwZXMgYWRkZWQgZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2Ygc3VwcG9ydGluZyB0aGUgTGludXggU3RhbmRhcmQgQmFzZSAoTFNCKSA0LngKIHJlY2lwZXMtbXVsdGltZWRpYSAgIC0gQ29kZWNzIGFuZCBzdXBwb3J0IHV0aWx0aWVzIGZvciBhdWRpbywgaW1hZ2VzIGFuZCB2aWRlbwogcmVjaXBlcy1ydCAgICAgICAgICAgLSBQcm92aWRlcyBwYWNrYWdlIGFuZCBpbWFnZSByZWNpcGVzIGZvciB1c2luZyBhbmQgdGVzdGluZyB0aGUgUFJFRU1QVF9SVCBrZXJuZWwKIHJlY2lwZXMtc2F0byAgICAgICAgIC0gVGhlIFNhdG8gZGVtby9yZWZlcmVuY2UgVUkvVVgsIGl0cyBhc3NvY2lhdGVkIGFwcHMgYW5kIGNvbmZpZ3VyYXRpb24gCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvY29tbW9uLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2NvbW1vbi5weQppbmRleCA4ZmZlMDI4Li5iODIzMDRlIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvY29tbW9uLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkKQEAgLTEyLDcgKzEyLDcgQEAKIGNsYXNzIENvbW1vbkNoZWNrTGF5ZXIoT0VDaGVja0xheWVyVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlYWRtZShzZWxmKToKICAgICAgICAgIyBUaGUgdG9wLWxldmVsIFJFQURNRSBmaWxlIG1heSBoYXZlIGEgc3VmZml4IChsaWtlIFJFQURNRS5yc3Qgb3IgUkVBRE1FLnR4dCkuCi0gICAgICAgIHJlYWRtZV9maWxlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi50Yy5sYXllclsncGF0aCddLCAnUkVBRE1FKicpKQorICAgICAgICByZWFkbWVfZmlsZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYudGMubGF5ZXJbJ3BhdGgnXSwgJ1tScl1bRWVdW0FhXVtEZF1bTW1dW0VlXSonKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihyZWFkbWVfZmlsZXMpID4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iTGF5ZXIgZG9lc24ndCBjb250YWlucyBSRUFETUUgZmlsZS4iKQogCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKaW5kZXggOTZhZjQ4OC4uOWVlYWVmYiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQpAQCAtNDgyLDkgKzQ4Miw5IEBACiAgICAgICAgICAgICAgICAgYWRkZmlsZXMuYXBwZW5kKG9zLnBhdGguam9pbihyZWxwdGgsIGZuKSkKICAgICAgICAgaWYgYWRkZmlsZXM6CiAgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGFkZCAlcycgJSAnICcuam9pbihhZGRmaWxlcyksIGN3ZD1zcmN0cmVlKQotICAgICAgICB1c2Vyb3B0aW9ucyA9IFtdCi0gICAgICAgIG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5naXRDb21tYW5kVXNlck9wdGlvbnModXNlcm9wdGlvbnMsIGQ9cmQpCi0gICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgJXMgY29tbWl0IC1hIC1tICJDb21taXR0aW5nIGxvY2FsIGZpbGUgc3ltbGlua3NcblxuJXMiJyAlICgnICcuam9pbih1c2Vyb3B0aW9ucyksIG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5pZ25vcmVfY29tbWl0X3ByZWZpeCksIGN3ZD1zcmN0cmVlKQorICAgICAgICAgICAgdXNlcm9wdGlvbnMgPSBbXQorICAgICAgICAgICAgb2UucGF0Y2guR2l0QXBwbHlUcmVlLmdpdENvbW1hbmRVc2VyT3B0aW9ucyh1c2Vyb3B0aW9ucywgZD1yZCkKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgJXMgY29tbWl0IC1tICJDb21taXR0aW5nIGxvY2FsIGZpbGUgc3ltbGlua3NcblxuJXMiJyAlICgnICcuam9pbih1c2Vyb3B0aW9ucyksIG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5pZ25vcmVfY29tbWl0X3ByZWZpeCksIGN3ZD1zcmN0cmVlKQogCiAKIGRlZiBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwga2VlcF90ZW1wLCBkZXZicmFuY2gsIHN5bmMsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSwgZml4ZWRfc2V0dXAsIGQsIHRpbmZvaWwsIG5vX292ZXJyaWRlcz1GYWxzZSk6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvbG9nLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL2xvZy5weQppbmRleCAyNWMzMzk2Li4yMzUyYzc2IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvbG9nLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9sb2cucHkKQEAgLTE2LDYgKzE2LDE2IEBACiAgICAgcHJpbnQoInB0ZXN0ICclcycgbm90IGZvdW5kIiAlIHB0ZXN0KQogICAgIHJldHVybiAxCiAKK2RlZiBzaG93X3JlcHJvZHVjaWJsZShyZXN1bHQsIHJlcHJvZHVjaWJsZSwgbG9nZ2VyKToKKyAgICB0cnk6CisgICAgICAgIHByaW50KHJlc3VsdFsncmVwcm9kdWNpYmxlJ11bcmVwcm9kdWNpYmxlXVsnZGlmZm9zY29wZS50ZXh0J10pCisgICAgICAgIHJldHVybiAwCisKKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHByaW50KCJyZXByb2R1Y2libGUgJyVzJyBub3QgZm91bmQiICUgcmVwcm9kdWNpYmxlKQorICAgICAgICByZXR1cm4gMQorCisKIGRlZiBsb2coYXJncywgbG9nZ2VyKToKICAgICByZXN1bHRzID0gcmVzdWx0dXRpbHMubG9hZF9yZXN1bHRzZGF0YShhcmdzLnNvdXJjZSkKIApAQCAtNDAsMTcgKzUwLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGVzdCwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUocHRlc3RbJ2xvZyddKQogCi0gICAgICAgIGlmIGFyZ3MucmF3OgorICAgICAgICBpZiBhcmdzLnJhd19wdGVzdDoKICAgICAgICAgICAgIGlmICdwdGVzdHJlc3VsdC5yYXdsb2dzJyBpbiByOgogICAgICAgICAgICAgICAgIHByaW50KHJbJ3B0ZXN0cmVzdWx0LnJhd2xvZ3MnXVsnbG9nJ10pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50KCdSYXcgbG9ncyBub3QgZm91bmQnKQorICAgICAgICAgICAgICAgIHByaW50KCdSYXcgcHRlc3QgbG9ncyBub3QgZm91bmQnKQorICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgaWYgYXJncy5yYXdfcmVwcm9kdWNpYmxlOgorICAgICAgICAgICAgaWYgJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJyBpbiByOgorICAgICAgICAgICAgICAgIHByaW50KHJbJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJ11bJ2xvZyddKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgnUmF3IHJlcHJvZHVjaWJsZSBsb2dzIG5vdCBmb3VuZCcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICBmb3IgcHRlc3QgaW4gYXJncy5wdGVzdDoKICAgICAgICAgICAgIGlmIG5vdCBzaG93X3B0ZXN0KHIsIHB0ZXN0LCBsb2dnZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiAxCiAKKyAgICAgICAgZm9yIHJlcHJvZHVjaWJsZSBpbiBhcmdzLnJlcHJvZHVjaWJsZToKKyAgICAgICAgICAgIGlmIG5vdCBzaG93X3JlcHJvZHVjaWJsZShyLCByZXByb2R1Y2libGUsIGxvZ2dlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKwogZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHN1YnBhcnNlcnMpOgogICAgICIiIlJlZ2lzdGVyIHN1YmNvbW1hbmRzIGZyb20gdGhpcyBwbHVnaW4iIiIKICAgICBwYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2xvZycsIGhlbHA9J3Nob3cgbG9ncycsCkBAIC02Myw5ICs4NCwxNSBAQAogICAgICAgICAgICAgaGVscD0nc2hvdyBsb2dzIGZvciBhIHB0ZXN0JykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWR1bXAtcHRlc3QnLCBtZXRhdmFyPSdESVInLAogICAgICAgICAgICAgaGVscD0nRHVtcCBhbGwgcHRlc3QgbG9nIGZpbGVzIHRvIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5LicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXByb2R1Y2libGUnLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdzaG93IGxvZ3MgZm9yIGEgcmVwcm9kdWNpYmxlIHRlc3QnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcHJlcGVuZC1ydW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICAgaGVscD0nJydEdW1wIHB0ZXN0IHJlc3VsdHMgdG8gYSBzdWJkaXJlY3RvcnkgbmFtZWQgYWZ0ZXIgdGhlIHRlc3QgcnVuIHdoZW4gdXNpbmcgLS1kdW1wLXB0ZXN0LgogICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZCBpZiBtb3JlIHRoYW4gb25lIHRlc3QgcnVuIGlzIHByZXNlbnQgaW4gdGhlIHJlc3VsdCBmaWxlJycnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmF3JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgIGhlbHA9J3Nob3cgcmF3IGxvZ3MnKQorICAgICAgICAgICAgaGVscD0nc2hvdyByYXcgKHB0ZXN0KSBsb2dzLiBEZXByZWNhdGVkLiBBbGlhcyBmb3IgIi0tcmF3LXB0ZXN0IicsIGRlc3Q9J3Jhd19wdGVzdCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yYXctcHRlc3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nc2hvdyByYXcgcHRlc3QgbG9nJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJhdy1yZXByb2R1Y2libGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nc2hvdyByYXcgcmVwcm9kdWNpYmxlIGJ1aWxkIGxvZ3MnKQogCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3JlcG9ydC5weQppbmRleCBmNzA2MjgwLi44YjAzNzE3IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXBvcnQucHkKQEAgLTE5LDkgKzE5LDkgQEAKICAgICAgICAgc2VsZi5wdGVzdHMgPSB7fQogICAgICAgICBzZWxmLmx0cHRlc3RzID0ge30KICAgICAgICAgc2VsZi5sdHBwb3NpeHRlc3RzID0ge30KLSAgICAgICAgc2VsZi5yZXN1bHRfdHlwZXMgPSB7J3Bhc3NlZCc6IFsnUEFTU0VEJywgJ3Bhc3NlZCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbGVkJzogWydGQUlMRUQnLCAnZmFpbGVkJywgJ0VSUk9SJywgJ2Vycm9yJywgJ1VOS05PV04nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NraXBwZWQnOiBbJ1NLSVBQRUQnLCAnc2tpcHBlZCddfQorICAgICAgICBzZWxmLnJlc3VsdF90eXBlcyA9IHsncGFzc2VkJzogWydQQVNTRUQnLCAncGFzc2VkJywgJ1BBU1MnLCAnWEZBSUwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWxlZCc6IFsnRkFJTEVEJywgJ2ZhaWxlZCcsICdGQUlMJywgJ0VSUk9SJywgJ2Vycm9yJywgJ1VOS05PV04nLCAnWFBBU1MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NraXBwZWQnOiBbJ1NLSVBQRUQnLCAnc2tpcHBlZCcsICdVTlNVUFBPUlRFRCcsICdVTlRFU1RFRCcsICdVTlJFU09MVkVEJ119CiAKIAogICAgIGRlZiBoYW5kbGVfcHRlc3RfcmVzdWx0KHNlbGYsIGssIHN0YXR1cywgcmVzdWx0LCBtYWNoaW5lKToKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkgYi9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CmluZGV4IGU3ZTcwMjEuLmM1NzNkYzcgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQpAQCAtMTYsMTIgKzE2LDUxIEBACiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgaW1wb3J0bGliCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiAKLWRlZiBsb2dnZXJfY3JlYXRlKG5hbWUsIHN0cmVhbT1Ob25lKToKK2NsYXNzIEtlZXBBbGl2ZVN0cmVhbUhhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5kbGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwga2VlcGFsaXZlPVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKKyAgICAgICAgaWYga2VlcGFsaXZlIGlzIFRydWU6CisgICAgICAgICAgICBrZWVwYWxpdmUgPSA1MDAwICMgZGVmYXVsdCB0aW1lb3V0CisgICAgICAgIHNlbGYuX3RpbWVvdXQgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgc2VsZi5fc3RvcCA9IEZhbHNlCisKKyAgICAgICAgIyBiYWNrZ3JvdW5kIHRocmVhZCB3YWl0cyBvbiBjb25kaXRpb24sIGlmIHRoZSBjb25kaXRpb24gZG9lcyBub3QKKyAgICAgICAgIyBoYXBwZW4gZW1pdCBhIGtlZXAgYWxpdmUgbWVzc2FnZQorICAgICAgICBkZWYgdGhyZWFkKCk6CisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcDoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX3RpbWVvdXQ6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90aW1lb3V0LndhaXQoa2VlcGFsaXZlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZW1pdChsb2dnaW5nLkxvZ1JlY29yZCgia2VlcGFsaXZlIiwgbG9nZ2luZy5JTkZPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsICJLZWVwYWxpdmUgbWVzc2FnZSIsIE5vbmUsIE5vbmUpKQorCisgICAgICAgIHNlbGYuX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0ID0gdGhyZWFkLCBkYWVtb24gPSBUcnVlKQorICAgICAgICBzZWxmLl90aHJlYWQuc3RhcnQoKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAjIG1hcmsgdGhlIHRocmVhZCB0byBzdG9wIGFuZCBub3RpZnkgaXQKKyAgICAgICAgc2VsZi5fc3RvcCA9IFRydWUKKyAgICAgICAgd2l0aCBzZWxmLl90aW1lb3V0OgorICAgICAgICAgICAgc2VsZi5fdGltZW91dC5ub3RpZnkoKQorICAgICAgICAjIHdhaXQgZm9yIGl0IHRvIGpvaW4KKyAgICAgICAgc2VsZi5fdGhyZWFkLmpvaW4oKQorICAgICAgICBzdXBlcigpLmNsb3NlKCkKKworICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CisgICAgICAgIHN1cGVyKCkuZW1pdChyZWNvcmQpCisgICAgICAgICMgdHJpZ2dlciB0aW1lciByZXNldAorICAgICAgICB3aXRoIHNlbGYuX3RpbWVvdXQ6CisgICAgICAgICAgICBzZWxmLl90aW1lb3V0Lm5vdGlmeSgpCisKK2RlZiBsb2dnZXJfY3JlYXRlKG5hbWUsIHN0cmVhbT1Ob25lLCBrZWVwYWxpdmU9Tm9uZSk6CiAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIobmFtZSkKLSAgICBsb2dnZXJoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN0cmVhbT1zdHJlYW0pCisgICAgaWYga2VlcGFsaXZlIGlzIG5vdCBOb25lOgorICAgICAgICBsb2dnZXJoYW5kbGVyID0gS2VlcEFsaXZlU3RyZWFtSGFuZGxlcihzdHJlYW09c3RyZWFtLCBrZWVwYWxpdmU9a2VlcGFsaXZlKQorICAgIGVsc2U6CisgICAgICAgIGxvZ2dlcmhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3RyZWFtPXN0cmVhbSkKICAgICBsb2dnZXJoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcigiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiKSkKICAgICBsb2dnZXIuYWRkSGFuZGxlcihsb2dnZXJoYW5kbGVyKQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXVyaXNjdi53a3MgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXVyaXNjdi53a3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJjNjhiNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXJpc2N2LndrcwpAQCAtMCwwICsxLDMgQEAKKyMgc2hvcnQtZGVzY3JpcHRpb246IENyZWF0ZSBxY293MiBpbWFnZSBmb3IgUklTQy1WIFFFTVUgbWFjaGluZXMKKworcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgcm9vdCAtLWFsaWduIDQwOTYgLS1zaXplIDVHCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QgYi9wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QKaW5kZXggNTc2NjJiMi4uMThhYzBmNSAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLXNlbGZ0ZXN0CisrKyBiL3Bva3kvc2NyaXB0cy9vZS1zZWxmdGVzdApAQCAtMzMsNyArMzMsNyBAQAogZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBsb2FkX3Rlc3RfY29tcG9uZW50cwogZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBUHJlUnVuCiAKLWxvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoJ29lLXNlbGZ0ZXN0Jywgc3RyZWFtPXN5cy5zdGRvdXQpCitsb2dnZXIgPSBzY3JpcHR1dGlscy5sb2dnZXJfY3JlYXRlKCdvZS1zZWxmdGVzdCcsIHN0cmVhbT1zeXMuc3Rkb3V0LCBrZWVwYWxpdmU9VHJ1ZSkKIAogZGVmIG1haW4oKToKICAgICBkZXNjcmlwdGlvbiA9ICJTY3JpcHQgdGhhdCBydW5zIHVuaXQgdGVzdHMgYWdhaW5zdCBiaXRiYWtlIGFuZCBvdGhlciBZb2N0byByZWxhdGVkIHRvb2xzLiBUaGUgZ29hbCBpcyB0byB2YWxpZGF0ZSB0b29scyBmdW5jdGlvbmFsaXR5IGFuZCBtZXRhZGF0YSBpbnRlZ3JpdHkuIFJlZmVyIHRvIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvT2Utc2VsZnRlc3QgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3J1bnFlbXUgYi9wb2t5L3NjcmlwdHMvcnVucWVtdQppbmRleCBlOWI4MzczLi40NDE1ZTliIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvcnVucWVtdQorKysgYi9wb2t5L3NjcmlwdHMvcnVucWVtdQpAQCAtODIsNyArODIsNyBAQAogICBib290cGFyYW1zPTx4eXo+IC0gc3BlY2lmeSBjdXN0b20ga2VybmVsIHBhcmFtZXRlcnMgZHVyaW5nIGJvb3QKICAgaGVscCwgLWgsIC0taGVscDogcHJpbnQgdGhpcyB0ZXh0CiAgIC1kLCAtLWRlYnVnOiBFbmFibGUgZGVidWcgb3V0cHV0Ci0gIC1xLCAtLXF1aXRlOiBIaWRlIG1vc3Qgb3V0cHV0IGV4Y2VwdCBlcnJvciBtZXNzYWdlcworICAtcSwgLS1xdWlldDogSGlkZSBtb3N0IG91dHB1dCBleGNlcHQgZXJyb3IgbWVzc2FnZXMKIAogRXhhbXBsZXM6CiAgIHJ1bnFlbXUKQEAgLTE0NSw4ICsxNDUsNiBAQAogICAgICAgICAjIHRvIGJlIGFkZGVkIHdpdGggLWRyaXZlIGlmPXBmbGFzaC4KICAgICAgICAgIyBGb3VuZCBpbiB0aGUgc2FtZSBwbGFjZXMgYXMgdGhlIHJvb3Rmcywgd2l0aCBvciB3aXRob3V0IG9uZSBvZgogICAgICAgICAjIHRoZXNlIHN1ZmZpY2VzOiBxY293MiwgYmluLgotICAgICAgICAjIFNldHRpbmcgb25lIGFsc28gYWRkcyAiLXZnYSBzdGQiIGJlY2F1c2UgdGhhdCBpcyBhbGwgdGhhdAotICAgICAgICAjIE9WTUYgc3VwcG9ydHMuCiAgICAgICAgIHNlbGYub3ZtZl9iaW9zID0gW10KICAgICAgICAgIyBXaGVuIGVucm9sbGluZyBkZWZhdWx0IFNlY3VyZSBCb290IGtleXMsIHRoZSBoeXBlcnZpc29yCiAgICAgICAgICMgbXVzdCBwcm92aWRlIHRoZSBQbGF0Zm9ybSBLZXkgYW5kIHRoZSBmaXJzdCBLZXkgRXhjaGFuZ2UgS2V5CkBAIC03NTUsOCArNzUzLDggQEAKICAgICAgICAgaWYgczoKICAgICAgICAgICAgIHNlbGYuc2V0KCdRQl9NRU0nLCAnLW0gJXMnICUgcy5ncm91cCgxKSkKICAgICAgICAgZWxpZiBub3Qgc2VsZi5nZXQoJ1FCX01FTScpOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1FCX01FTSBpcyBub3Qgc2V0LCB1c2UgNTEyTSBieSBkZWZhdWx0JykKLSAgICAgICAgICAgIHNlbGYuc2V0KCdRQl9NRU0nLCAnLW0gNTEyJykKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdRQl9NRU0gaXMgbm90IHNldCwgdXNlIDI1Nk0gYnkgZGVmYXVsdCcpCisgICAgICAgICAgICBzZWxmLnNldCgnUUJfTUVNJywgJy1tIDI1NicpCiAKICAgICAgICAgIyBDaGVjayBhbmQgcmVtb3ZlIE0gb3IgbSBzdWZmaXgKICAgICAgICAgcWJfbWVtID0gc2VsZi5nZXQoJ1FCX01FTScpCkBAIC0xMjgzLDEwICsxMjgxLDYgQEAKICAgICAgICAgZm9yIG92bWYgaW4gc2VsZi5vdm1mX2Jpb3M6CiAgICAgICAgICAgICBmb3JtYXQgPSBvdm1mLnJzcGxpdCgnLicsIDEpWy0xXQogICAgICAgICAgICAgc2VsZi5xZW11X29wdCArPSAnIC1kcml2ZSBpZj1wZmxhc2gsZm9ybWF0PSVzLGZpbGU9JXMnICUgKGZvcm1hdCwgb3ZtZikKLSAgICAgICAgaWYgc2VsZi5vdm1mX2Jpb3M6Ci0gICAgICAgICAgICAjIE9WTUYgb25seSBzdXBwb3J0cyBub3JtYWwgVkdBLCBpLmUuIHdlIG5lZWQgdG8gb3ZlcnJpZGUgYSAtdmdhIHZtd2FyZQotICAgICAgICAgICAgIyB0aGF0IGdldHMgYWRkZWQgZm9yIGV4YW1wbGUgZm9yIG5vcm1hbCBxZW11eDg2LgotICAgICAgICAgICAgc2VsZi5xZW11X29wdCArPSAnIC12Z2Egc3RkJwogCiAgICAgICAgIHNlbGYucWVtdV9vcHQgKz0gJyAnICsgc2VsZi5xZW11X29wdF9zY3JpcHQKIAo=